First post, by DanDare
I work on Kurzweil K2000 emulator, now it is on very alpha stage:
[!] TMP68301 Emulated not perfectly - timers, interrupt arbitration, serial ports
implemented with some black magic, but bulit-in K2000 sequencer runs without
time gliches during recording or playback modes.
[+] CALVIN: Address pointers, samples looping, RAM mapping, noise channel, interpolation - almost done,
however, I can't see anymore undiscovered IO accesing to it's registers (except
in initialization phase), so it works, maybe not so neat
[!] HOBBES: The hidden place, For now only envelope and panning control are completly implemented
Envelope and pan values for each voice has calculated by 68301 in real time.
Some (many of them) DSP Fuctions, works but quite roughly - I have not reference sounding
hardware, only follow by 'Kurzweil Muzician guide' handbook. Initialy I suggest, that each
HOBBES (Machine has 2 HOBBES) individualy controls 2 of 4 channels, but actualy,
they share the work, and connected between each other by pipeline bus:
CALVIN===>HOBBES1===>HOBBES2===>DAC. For example, writing to 0xA register
of first HOBBES changes an envelope, but writing to the same address of second changes
filter parameters. Another question, how to find flawless method for DSP datapath
selection. K2000 have 31 different algothithms (ways how signal will be pass beetween
DSP 'blocks'). but HOBBES haven't (exactly ?) dedicaded registers for swiching thees modes,
by other side some combinations of registers values is determinated whith concrete mode
Hobbes1 VOICEn+4h, Hobbes1 VOICEn+20h, Hobbes2 VOICEn+4h, Hobbes2 VOICEn+20h, used for mode selection
For Example Hobbes1 VOICEn+4h Register (values for ALG1),
╔════════════════════╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ MODE NAME │ 15│ 14│ 13│ 12│ 11│ 10│ 9 │ 8 │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 ║
║ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ║
╟────────────────────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───║
║ NONE │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 0 │ 1 │ D │ C │ 1 │ B │ A │ 0 │ 0 ║
║ HI FRQ STIMULATOR │ 0 │ 1 │ 1 │ 1 │ 1 │ 1 │ 0 │ 0 │ 1 │ D │ C │ 1 │ B │ A │ 0 │ 0 ║
║ PARAMETRIC EQ │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 0 │ 1 │ D │ C │ 1 │ B │ A │ 0 │ 0 ║
║ STEEP RESONANT BASS│ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ 0 │ 0 │ 1 │ D │ C │ 1 │ B │ A │ 0 │ 0 ║
║ 4P LOPASS W SEP │ 0 │ 1 │ 0 │ 0 │ 0 │ 1 │ 0 │ 0 │ 1 │ D │ C │ 1 │ B │ A │ 0 │ 0 ║
║ 4P HIPASS W SEP │ 0 │ 1 │ 0 │ 0 │ 0 │ 1 │ 0 │ 0 │ 1 │ D │ C │ 1 │ B │ A │ 0 │ 0 ║
║ TWIN PEAKS BANDPASS│ 0 │ 0 │ 0 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ D │ C │ 1 │ B │ A │ 0 │ 0 ║
║ DOUBLE NOTCH W SEP │ 0 │ 0 │ 0 │ 0 │ 1 │ 1 │ 0 │ 0 │ 1 │ D │ C │ 1 │ B │ A │ 0 │ 0 ║
╚════════════════════════════════════════════════════════════════════╧═══╧═══╧═══╧═══╝
I have'nt any idea what bits AB and CD does, they rolls from 00 to 10, after each writing
in some modes they stuck at 11, so I use it values for ALG detection in the emulator.
Also no idea for bits 0..14 of Hobbes2 VOICEn+18h Register (bit15 set: panning off)
[+] UDP72064: waits for the disk
[-] 53╤80: not now
[*] M37450: Sends to 60831 by MIDI (routed to serial channel 1) messages about keypad buttons and keys
states. I not use it in the emulator, device controlled by serial chanell 0 (External MIDI)
because software responds to SysEx messages
[-] DSP256 far beyond
[-] Mixing Amplifier