Main CPU


Background


The Juno-106 has two CPU:s both are NEC 87AD cpus, model numbers uPD7810 or uPD7811. The 7810 models all have external Eprom:s for the CPU code. Some of the 7811 versions have external Eprom. The 7811s in my chopped-down Juno have CPU-internal masked ROM which cannot be read out, which is why I bought an older CPU card on e-bay.
Both ROM images are 4096 bytes.
The MAIN CPU seems to take care of:
  1. Scanning of front panel Sliders and buttons
  2. Scanning the keyboard
  3. Storing / recalling patch setting from battery-backed RAM
  4. Receiving MIDI data
  5. Signalling the SLAVE CPU upon keyboard action or MIDI events

From the schematics it seems plausible that the MAIN CPU talks to the SLAVE cpu with MIDI-like messages. This model is used in the JX-10 (which is another project that may appear on this web server some day) and makes it easy to receive MIDI data, since the MAIN CPU then just have to forward the incoming MIDI message onto the SLAVE CPU which then produces the correct voltages for the note to start playing.
The SLAVE CPU seems to take care of:
  1. Generating control (pitch, envelope, lfo) voltages for DCOs, VCFs and VCAs
  2. Generating control signals for Chorus and HPF (fed to JACK board where those circuits are placed)

The SLAVE CPU generates control voltages by putting a 12-bit value onto the PB and PC ports, which is D/A converted in an external R/2R resistor network. This voltage is time-divided into 23 time slots?!?, where for example time slot 0 is noise level, and time slot 6 is DCO CV for voice 3 (found in Juno-106 service manual). The frequency of this pattern is 238 Hz (i.e. each control voltage appears on the CV pin 238 times per second). Had this frequency been higher, the Juno could probably have had much snappier envelopes than it currectly has.

Progress


I have received the CPU board with external Eprom from a guy in the US
The 4kb eprom image has been disassembled and I am now trying to identify the various subroutines in the NEC 7811 code.
Status 2006-05-19
Started looking at the CPU Initialization parts.
Status 2007-10-06
Got a son, time just isn't there for this...
Status 2010-07-11
Got another son. An endless wait for assembler time...
Status 2010-10-21
Managed to control unison detune (spread) from the portamento knob by modifying 43 bytes of voice-CPU code!! More hopefully to come in the near future.
Back: To chapter one