[sdiy] Analysis of the TB-303 CPU timing

MTG grant at musictechnologiesgroup.com
Mon Mar 20 23:08:04 CET 2017


Well Keil started selling a C compiler for the 8051 in the mid-80's. 
Among one of the worst targets for one but they did a very, very good 
job. Probably inspired by the PL/M compiler.  Not sure when  exactly, 
but Avocet and 2500AD were around too. Mainly they sold assemblers and 
simulators before making a leap to C (or dying off). When the 16-bit 
micros started showing up then C became much more desirable.

I would guess though, at least for the 8-bitter's, that the code for 
synths and such was 100% assembler. Maybe even a little bit of hand 
assembled stuff thrown in during edits. It's quite possible that some of 
the very early synth were done by hand rather then with an assembler -- 
mainly because you needed a decent PC to run an assembler (though an 
Apple II had an assembler for 6502 and maybe some of the other early 
8-bit PCs did too). That would explain gaps and nonsense in the code as 
edits were done.

The unreachable code may very well be the fault of improper 
interpretation of the disassembled code. If you get out of step with 
opcode or operand, or try and interpret constant data as executable you 
will find you way into the weeds quite quickly.

Whenever I have done this, I have taken the disassembled result and 
reassembled it back to the binary image for comparison. Then as you 
start to fill in the "holes" with addresses or labels, you can 
reassemble and verify you haven't messed up. I can't say I've done it a 
lot, but I did spend some time on the JX3P (8051) and DX7 (6303 ~ 6800) 
and a few others I've since forgotten about.

Probably Terry can chime in here with an inside perspective. Myself, I 
did a sequencer for the Roland SH3A using a 6809 assembler on a 
mainframe (1982) at school. Here is a link to a Decwriter printout (you 
have to flip it to read it) from 1983 for the 6809:

http://musictechnologiesgroup.com/images/GregsWaveTable.jpg


On 3/20/2017 2:37 PM, Rainer Buchty wrote:
> On Mon, 20 Mar 2017, Neil Johnson wrote:
>
> Likewise, the older Ensoniq stuff has quite a number of unreachable code
> lines in there, or stuff like branches to RTS.


Branches to RTS's were often the result of limited branch range, or an 
early attempt at coding standards that would allow for only one return 
point per subroutine.

GB





More information about the Synth-diy mailing list