[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