Prophet VS Service Manual (Text Section) and Other Info

Here are some bits that are occasionally found online but I don't think they are all in the same place:

Incremental adjustment (>= OS1.2): Hold [0] + [1]=down, [2]=up

Functions accessed by holding [Enter] + :
[0] = Basic Patch
[1] = Resets joystick mix level mod points
[2] = Random patch
[5] = Default global parameter settings
[6] = Does nothing but is in all versions of the code. (Just "returns")
[7] = Check cartridge NVRAM checksum
[8] = Write RAM cartridge header
[9] = Display and clear any saved error codes:
**** ERROR: ****
1 - UART OVERRUN
2 - BUFFER OVERFLOW
3 - BAD NV CHECKSUM
4 - BAD WRITE VERIFY
5 - BAD CART CHECK 


Here is a copy of the text section of the service manual. The schematic section is easy to find online but I don't think this is.


Prophet VS Service Data

Sequential Circuits Prophet VS Memory Map (Old)

This information has be massively updated and corrected. See the Firmware Manual PDF.

Here is the list of all the address locations I've figured out in the Prophet VS. This may change as I discover more. The ones in (bold parentheses) are code locations modified or changed in my own versions of the code, [bold italic brackets] are ones I don't know or aren't sure about yet. Ones with a * are the main called locations in the code.

This is based on v1.2 and up. Some locations, especially the working memory, are different in 1.0/1.1. Some locations are different in the diagnostics section as well. All are word length.

FF8000 - FFA007 = 4k NV RAM (Patch Parameters - bitpacked, every 82 bytes)

FFA008 - FFB807 = 4k NV RAM (User Wave Mem)
    B808 = Patch Checksum
    B809 = Patch Checksum
    B80A = Pitch Wheel Range
    B80B = Pitch Wheel Range
    B80C = Pitch Wheel Offset
    B80D = Pitch Wheel Offset
    B80E = Master Tune
  *B80F = Master Tune
    B810 = Clocks/Step
  *B811 = Clocks/Step
    B812 = Transmit Channel - Right
  *B813 = Transmit Channel - Right
    B814 = Transmit Channel - Left
  *B815 = Transmit Channel - Left
    B816 = MIDI Wheels
  *B817 = MIDI Wheels
    B818 = MIDI Programs
  *B819 = MIDI Programs
    B81A = MIDI Pressure
  *B81B = MIDI Pressure
    B81C = MIDI Joystick
  *B81D = MIDI Joystick
    B81E = MIDI Receive Mode
  *B81F = MIDI Receive Mode
    B820 = ARP Midi Channel
  *B821 = ARP Midi Channel
    B822 = Receive Channel - Right
  *B823 = Receive Channel - Right
    B824 = Receive Channel - Left
  *B825 = Receive Channel - Left
       [B826 = ?]
       [B827 = ?]
    B828-BA1F = [Something with ARP]
    BA26-BC1D = [Something with ARP]

    BC26-BC99 = [Something with Edit Waveform]
    BC9A-BD0A = [Something with Edit Waveform]
    BD0E-BD81 = Review
    BD82 = Reload Previous Patch

   *(FFBD84) = New (MIDI Parameter) location to save selection on reset
   *(FFBD86) = New LFO Sync Function
   *(FFBD88) = New ARP Sync Function


   *FFC000 = 4k Program Memory (Working Patch & Stack)
     See VS manual documentation for working memory locations up to FFC065

    Switch Bits:
     C066 = LFO1 Destination
     C068 = LFO2 Destination
     C06A = Pressure Destination
     C06C = Velocity Destination
     C06E = Keyboard Destination
     C070 = Filter Env Destination
     C072 = Mod Wheel Destination

 

    [*FFC9EC = Double mode delay trigger?]
    [*FFC9ED = Double mode delay trigger?]

   *FFC9EE = Double mode delay timer A
   *FFC9EF = Double mode delay timer B


   *FFC9F0 = Local Keyboard Enabled/Disabled
   *FFC9F2 = Transpose

     [C9F4 = Some sort of user wave mem location]
   *FFC9F8 = 7-Seg Buffer
   *FFC9FA = LED Buffer
     FFC9FB = 


     CCC0 = NRPN MSB/LSB
     CCC1 = DataEntry MSB/LSB
     CCC2 =
     CCC3 = (OLD MIDI Parameter Enable)
     CCC5 = MIDI Overflow
     CCC6 = [Progs use waveforms ??]

   *FFCE10 = Cart Write Enable/Disable

     FFD000 = Top of Stack

 *FFE001 = UART CS1 - control/status
 *FFE003 = UART CS1 - Trans/recv data
 *FFE101 = LCD Control
 *FFE103 = LCD DATA
 *FFE201 = KYBD - Key Data
 *FFE302 = SWIN Switch Matrix
 *FFE400 = "LED1"
 *FFE500 = Switch LEDs - bits
     [0]  = Split
     [1]  = Double
     [2]  = Store
     [3]  = Chorus RT
     [4]  = Chorus LF
     [5]  = Cart
     [6]  = ARP Latch/Transpose
     [7]  = ARP Rate/ON
     [8]  = Review
     [9]  = Edit Waveform
 *FFE600 = ADC WR
     - 600 = PitchWheel_WR0
     - 602 = ModWheel_WR0
     - 604 = Stick_X_WR0
     - 6F6 = Stick_Y_WR0
     - 6F8 = DataEntry_WR0
     - 6FA = Volume_WR0
     - 6FC = Balance_WR0
     - 6FE = Pressure_WR0
 *FFE700 = DAC Latch
     - 700 - 70E = LEV_A1 to LEV_A8
     - 710 - 71E = LEV_B1 to LEV_B8
     - 720 - 72E = LEV_C1 to LEV_C8
     - 730 - 73E = LEV_D1 to LEV_D8
     - 740 - 74E = VCA_1 to VCA_8
     - 750 - 75E = VCF_1 to VCF_8
     - 760 - 76E = PAN_1 to PAN_8
     - 770 = RES_L
     - 772 = RES_R
     - 774 = ChorusCV_L
     - 776 = ChorusCV_R
     - 778 = FinalCV_L
     - 77A = FinalCV_R
 *FFE801 = Waveram A
 *FFE901 = Waveram B
 *FFEA01 = Waveram C
 *FFEB01 = Waveram D
 *FFEC00 = RTI Flip-Flop - Interrupt CLR
 *FFED00 = Chip Reset
 *FFEE00 = EE CLR
 *FFEF01 = ADC Read

 *10000
   -14000  = Cartridge


 *16000 = Chip A
 *16004 = Chip B
 *16008 = Chip C
 *1600C = Chip D
 *16010 = Chip D [This is the address in the diagnostics. I'm sure this is a bug.]








Negative Tuning on the Prophet VS

One of the items on the VS wish-list from Jason Proctor (Vector Surgeon VS Editor/Librarian) is negative tuning values. In the stock OS, Coarse values range from 0 to +24, and Fine values range from 0 to +99. This ultimately makes all de-tuned patches slightly sharp. [Edit: Or, like SCI did, you can do a "negative" tuning by setting Coarse: 11, Fine: 90, for example]

I figured out a way to do this, but it's not a simple change.




You can see that the positive values are still stock, which gives 5 octaves of tuning range compared to the original 3 octaves. I did this expecting to keep factory patches compatible (eg if the original patch was set to +20, it would still be +20) but that was a dumb assumption. As the video shows, this works fine in the edit mode, but it is unsaveable as a patch.

The VS sets the bit-depth of each parameter as it saves & loads based on an array in the code. Here is the MIDI chart compared with the stock bit array:


In order for the VS to save a negative tuning value the # of bits has to be 8, for a signed parameter. The issue is that once any of these values change all internal patches and even sysex becomes corrupt since the bits are being unpacked incorrectly.

There are a few options to make this work though:

  1. Rebuild the factory set by hand to be compatible with the new scheme. This would make it harder for people with their own libraries & patches.
  2. Include a power-on diagnostic-style routine that loads whatever is currently in parameter memory with the correct bit-unpacking, then re-save with the new bit scheme. Users would load their sysex (it would look corrupt), restart into this mode, then resave. I am not even sure this would work, but I'm gonna give it a shot.

Prophet VS Service Manual (Text Section) and Other Info

Here are some bits that are occasionally found online but I don't think they are all in the same place: Incremental adjustment (>= OS...