On Jul 23, 2014, at 6:25 AM, "Bob Grieb bobgrieb@... [oberheim]" < email@example.com > wrote:
I have been working for the last month to get a Verilog simulation up and
running of the M6/M6R. I finally got it to pass calibration a couple of
days ago. The benefit of having a simulation is that I can press keys, send
MIDI, etc, and watch the control voltages, RAM locations, which subroutinesto what, etc. I can see everything, dump memory, etc. I am using a 6809 modelfrom opencores. The 8254, 6522, and 3396 models are mine, and were the
toughest part of getting things going. I did this last year for the SCI MAX and
Multitrak, to learn about their firmware so that I could make some changes.
Anyway, not sure what I want to do now. I don't think changing the 6809 codewould offer a speed-up, although probably certain parts could be done differentlyto be faster. Things that the original two programmers did not try to make as fast as
possible. The spare EPROM socket could be used to add look-up tables, for instanceto replace multiplications, which take multiple cycles. But actually, the direction
I am leaning is to take something like the Teensy++2.0, which seems to have the
power pins in the same place as the 6809, and write new code for that. I thinktrying to exactly replicate the M6 waveforms and features would be a rather largeamount of effort, especially for just one person. But as a group project, it mightbe more manageable. With the code being open-source. The performance ofthe AVR (16 MIPS) should be much better than the 6809, and if attention is paidto making MIDI changes faster, maybe it could be OK.
Now that I have the simulation up and running, I am just trying different thingsto learn more about the code. I found how they detect if it's a 6R or a 6. There is
one pin on a chip this is tied differently between the two, which the CPU can read.Also, I can see in the code where on the 6R they are talking to the optional remotekeyboard.
A re-write of the Matrix code would be a big project. I may get started just forthe experience of learning about how to do it, knowing that I may never finish the
project. Or if something else comes along, I may never work on it at all...
BTW, since the Matrix 1000 hw is similar, I suspect one project could generatenew code for the Matrix 6, 6R, and 1000.
I have started comparing code between the 6 and the 1000. Found some routinesthat 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.
From: " jan@... [oberheim]" < firstname.lastname@example.org >
Sent: Wednesday, July 23, 2014 5:54 AM
Subject: Re: [oberheim] Re: Dream on, geek: The Überh eim Matrix-1000 Project
I'm pretty sure there are lots of errors (found one just now), after all, I've just started. Please do mention anything you've seen, or just leave a comment in the doc
Concerning the 4-pole filter: you are right, of course. Had a closer look at the MIOS project linked above and saw that he's basically replacing the output VCA and parts of the filter circuitry to be able to modify the filter characteristics.
Concerning the M6: There are obviously a couple of differences in the schematics , e.g. the 6522 VIA which is absent from the M1000, but I guess they kept the basic design. And the M6 schematics scans are slightly better to read.