previous | index | next |
<< | topic list | >> |
I have started comparing code between the 6 and the 1000. Found some routines
that are exactly the same. Probably lots of the code was ported over, with changes
to the patch storage format, and for the oscillator frequency difference.
Looks like the code for these units was NOT written in assembly. I am guessing
a C compiler was used. (The Six Trak, Max, and Multi-trak, on the other hand, were coded
in Z80 assy) I wonder if the C code is still around. The names of the programmersare in the code. Maybe one of them still has a copy Having the source code wouldmake this a much simpler project.
If this code came from a C compiler I would really love to get my hands on this one. The core part of the code (signal generation) is very tight and highly optimized, not a single C compiler I've been playing with (eg. for AVR family) generates that good code. Besides, different parts of the code have quite different style and are obviously written by different people.
I tracked down one of the original programmers ten years ago. The story he told me was that core of the code (originally written by Ryle and Doidic, two geniuses) was ported from Xpander to Matrix-6, changing MIDI and adding the new User Interface, and then from M-6 to M-1000, adding the next User Interface and making more changes to MIDI. The code was done with a cross-assembler on a PDP. Then one day, before the M-1000 firmware was 100% finished the removable disk with the sources fell on the floor, and there were no backups. So they shipped it out as is. End of the story, and the source code.
This is what was told to me. Anyway, the later the part of the code the sloppier it looks. M-1000 code has quite a lot of dormant code from M-6, and even from Xpander, that is not used. Plus a lot of simple and pretty basic errors that would have been fixed if they had had more time (a few of them were fixed by someone in 1.1.3 hack). Plus unfinished MIDI implementation, etc etc.
Concerning simply running it on 6309 at clock speed higher than 2 MHz, that has been discussed here: the code uses a _lot_ of cycle counting and loop based timing.