commodorejohn wrote:Well, that depends on what the differences between the firmware versions were. Unless they were made to support, say, two board revisions that change the architecture in a meaningful way, you'd presumably just do the hack on the latest version and assume that anybody who's going to be applying it will be okay with upgrading.
Yep, it's all speculation and I have no idea what the differences in code are. Could be no worry at all, but I believe it pertains to the particular revision of CEM3372 chip being used, so there is a hardware element.
Here's what I do "know" though, for anyone wanting to follow along...
I respectfully disagree with the claim that there is no internal ROM stored on the CPU.
CPU pin 27 is MODE 1 ["high" via pull-up resistor to +5V]
CPU pin 29 is MODE 0 ["low" via pull-down resistor to ground]
Meaning that the CPU is operating in true 7811 mode, and that the memory mapping register determines the amount of external memory. There should be 4K of mask ROM in the CPU plus the 8K EPROM.
What we want to look for as far as data in and out of the CPU is activity over Port C on IC2 (Program CPU), hopefully manipulating what is sent to MIDI IN/OUT. That's key, obviously.
PC0 = MIDI OUTPUT
PC1 = MIDI INPUT
PC2 = TAPE INPUT
PC3 = DATA ACKNOWLEDGE (from key assigner strobe out via pin 20)
PC4 = NEXT INPUT (from jack PCB via pin 21)
PC5 = X
PC6 = SUSTAIN INPUT
PC7 = TAPE OUTPUT
I haven't disassembled the ROM (or even dumped it, yet) but we're likely to bump into code very similar to this:
; Initialize Port C
MVI PC,$FF
; Initialize Mode Register for Port C
MVI A,$03 ; Set PC0 and PC1 to 'ON'
MOV MCC,A ; which activates Tx/Rx of MIDI
; Initialize MIDI
MVI SMH,$4E ; Serial mode high byte register configuration
; which activates Rx, Tx, and sets to SCK Trigger, Sync mode, Internal Clock 24, and Search Mode=off
MVI A,$4E ; Configures SML as the below settings,
MOV SML,A ; Serial mode low byte register configuration:
; 1 stop, no parity, 8 data bits, Clock Rate = x16 (stop bits indicate it is asynchronous)
You'll want to look for activity on Port C in the form of...
ORI PC,$01 ; Turns on MIDI OUT
ANI PC,$FE ; Turns off MIDI OUT
and so forth.
Hope this helps some brave soul.