VS Firmware Versions


Sequential Circuits Releases

There were three official firmware releases by Sequential. r1.0 and r1.2 seem to be the most common, with users selecting one or the other based on if they care about the resetting LFOs or not. Click on the image(s) to the right to get the MS/LS *.bin files for a particular version.

While I haven't come across any evidence to support or deny it, there is a possibility that r1.3 was being developed by Sequential Circuits and never finished. Quoted here from Retrosynth Prophet VS Info:

"Apparently there was a ROM ver 1.3 in the works before SCI folded. The previous bay area owner of my VS had 1.3 replaced by 1.2 due to instability. Several new features were implemented in 1.3, but needed debugging."

If there did happen to be an official r1.3 it would be great to track down and work out the kinks.


Known Bugs

I'll update this as more are discovered.

  • r1.0:
    • In MIDI Mode 3, split programs with different channel numbers incorrectly steal voices across the split point.
      -- [Fixed in firmware ≥ 1.1]
  • r1.0, r1.1:
    • Single waves cannot be stored correctly to a cartridge.
      -- [Fixed in firmware ≥ 1.2]
  • r1.0, r1.1, r1.2:
    • Not technically a bug. Byte order of NRPN MSB and LSB are swapped from modern standards. This makes MIDI controllers like the BeatStep Pro, BCR2000, etc, not function correctly.
      -- [Fixed in modified firmware ≥ 1.4]
    • Loop count of "Get Basic Waveform (Enter + "Edit Waveform")" off by 1. Modwheel destination is ignored.
      -- [Fixed in modified firmware ≥ 1.4]
    • Loop count writing custom characters to the LCD (for the Voice Panning screen) too long by 24! Character table is 40 bytes long but loop iterates 64 times, writing values from a section of code describing Mod. Matrix pointers. Looks like it was just a hex vs dec typo (0x40 is 64).
      -- [Fixed in modified firmware ≥ 1.4]
    • NRPN control of ARP RATE nonfunctional. Code doesn't exist.
      -- [Fixed in modified firmware ≥ 1.45]
    • NRPN control of SPLIT POINT nonfunctional. Code doesn't exist.
  • OS r1.0 -- (r1.0) Initial Release, 1986.
    - 148 bytes free ROM space.
    - Has freerunning LFOs and arpeggiator.
    - Full original diagnostics.


  • OS r1.1 -- (r1.1) Minor changes, 1986?
    - 32 bytes free ROM space.
    - Has freerunning LFOs and arpeggiator.
    - Fixes MIDI Mode 3 voice stealing across split point. (Or at least begins the process... there is related additional code in 1.2). Will investigate...
    - Full original diagnostics.


  • OS r1.2 -- (r1.2) Major Release, 1987.
    - 2 bytes free ROM space.
    - LFO Resets after new key presses. Sequentials reasoning:
    "This prevents the case where you might play a key and hear nothing because a negative LFO phase is holding down the VCF or VCA."
    - Arpeggiator is also synced with key presses. Internal clock is reset when the first note is played.
    - Last used program is now remembered after power cycle (or program crash :)).
    - Data increment/decrement function has been added for fine adjustment.
    - Master Transpose +/- 12 semitones. Can cause octave wraparound at pitch extremes.
    - Local Keyboard On/Off: Under the MIDI options menu an option has been added to provide local keyboard enable and disable.
    - MIDI now has separate Transmit and Receive channels.
    - "Output" diagnostics missing (though some dead code remains!)


  • -- (r1.3) WIP, incomplete, 1987?.
    - Discovered in boxes at Wine Country Sequential.
    - Looks to be very early development. 68k vectors are set up for a ICE or trace monitor, connected through the NVRAM sockets (I think!).
    - All diagnostics are stripped out.
    - The address of where the diagnostics used to be is 256 bytes higher, meaning there IS additional code.
    - Investigation ongoing....
    - UPDATE: The only new thing in this code is more robust MIDI SDS (Sample-Dump-Standard) transfer. It seems that this version checks for ACK, NACK, and WAIT while dumping waves.
SCI Prophet VS Info
SCI Prophet VS Info
SCI Prophet VS Info


Modified & New Firmware

More to come...

Project History

  • Mid 2018:
    • Disassembled, compared, and analyzed code binaries for r1.0, r1.1, and r1.2 .
    • Created patched ROM file from r1.2 that disables LFO synchronization to first keypress.
    • Released OS v1.3 to users of VS Yahoo group, Muffwiggler (now Modwiggler), and Gearslutz (now Gearspace).
  • Early 2019:
    • Created an m68k assembly file of r1.2 in Easy68k that compiles identically to the factory ROM. No more hex patching!
    • LFO key reset is selectable by changing the 8th patch name digit.
    • MIDI NRPN MSB/LSB order is swapped to current standard. Previously, many MIDI controllers would not work correctly with the VS.
    • Discovered several factory NRPN control bugs (present in all original SCI versions). Input control of SPLIT POINT and ARP RATE do not work, as the code does not exist... the routine locations just return (m68k "rts").
    • Released OS v1.4.
  • Late 2019:
    • Discovered that some of my early byte patching caused Wave #126 (Silent) to, well, not be silent. Fixed the bug.
    • Found numerous word-sized branch instructions that could be changed to byte-sized.
    • Found several chunks of dead, unreachable, or internal debugging code.
    • Added a new page in the LFO Select menu to choose key sync for LFO 1, 1&2, or none. This option is currently global.
      New Page
    • Added a new page in the ARP Option menu to choose key sync. This option is global.
    • Fixed NRPN control of ARP Rate bug.
    • Added new [Enter + 5] function: Load default global parameters.
    • Reincorporated Output test in diagnostics.
    • Release OS v1.45.
  • 2020-ish/2021-ish:
    • Began building a complete memory map in earnest.
  • Currently (late 2022):
    • Finally started some source control of the assembly code on GitHub.
    • Fixed selectable LFO reset bug in unison mode. It's possible that LFO 1 might always reset regardless of menu setting.
    • Improved diagnostic menu selection & switch debouncing. Dirty switch contacts or OLED users might experience the menu going nuts.
    • Added "EXIT" option in diagnostics. No need to power-cycle to return to normal operation.
    • Current code has ~1kb of free space, including additions and full diagnostics. Lots of wiggle room!
    • v1.5 in progress:
      • Testing:
        • Digital filter range tuning in diagnostics. Looking into scale as well.
        • Velocity to envelope attack rates. Will make new patches incompatible with older versions.
        • Per-patch LFO sync option. Will make new patches incompatible with older versions.
        • Modwheel to filter modulation. Will make new patches incompatible with older versions.
      • Wishlist:
        • "Freerunning" joystick option.
        • Full envelope circle mode from 0>3>0, instead of the jump using 0->3 or the backtracking using 0<>3.
        • Internal NV Ram expansion with selectable banks. The display would then look like this for Int., Cart., and Link:
          Bank Switching

  • OS v1.3 -- (r1.3) Initial Release, 2018.
    - Patched version of SCI r1.2. Has all the same functionality without the LFO reset.
    **WARNING** -- THIS VERSION WAS NEVER SOLD, AND THE ONES AVAILABLE ONLINE SEEM TO HAVE BEEN RIPPED FROM A POSSIBLE IN-PROGRESS WORKING VERSION FROM THE VS YAHOO GROUPS. DO NOT BUY A "SHALEBRIDGE v1.3" FROM ANYWHERE!!

  • Tools

    Here are links to some of the tools that were invaluable in working on this project:

    • IDA Pro (Interactive Disassembler) - This was my starting point for disassembling the binaries, until...
    • Ghidra - When this was released, it totally blew IDA out of the water for me. It's now my main archiver for documenting the original OSes.
    • Virtual VS - A VS emulator that uses the original OS binary images. This came in very handy testing binary builds without burning new ROMs or swapping EEPROMS. It also allows me to work on code and test when I'm away from a hardware VS. It isn't 100% 68k emulation accurate though, so some things that worked fine emulated caused weird problems in hardware. Since the author never responded to my inquiry for the source code, I used part of the Virtual VS core...
    • Castaway 68k/Atari Simulator - The simulator used in Virtual VS. Used sparingly to quickly dump register values in sections of code.
    • Easy68k Editor/Assembler/Simulator - I used the main program to adapt the disassembled code, and to do all current development. I also use EasyBin to output the split assembled program into an MS/LS pair. Working on automating some steps using the source code on GitHub and building a full cycle-accurate VS simulator with register monitoring.
    • Eprom Emulator - Before designing my own split-EPROM emulator, I used two of these piggybacked, with modified firmware to automatically upload the MS/LS files to the correct device. I'll probably upload my design to the site some time in the future.