Files for hacking the Mirage operating system

A zip file (, 260KB) containing following:

rom.txt : Mirage ROM, hex/ascii monitor dump
rom.hex : Mirage ROM, Motorola hex format
rom.bin : Mirage ROM, binary data
rom.dat : Mirage ROM, disassembler data file
rom.lst : Mirage ROM, disassembler output
romlabel.txt : Mirage ROM entry-point labels only
mos32.txt : Mos 3.2, hex/ascii monitor dump
mos32.hex : Mos 3.2, Motorola hex format
mos32.bin : Mos 3.2, binary data
mos32.dat : Mos 3.2, disassembler data file
mos32.lst : Mos 3.2, disassembler output
masos.txt : Masos 2.0, hex/ascii monitor dump
masos.hex : Masos 2.0, Motorola hex format
masos.bin : Masos 2.0, binary data
masos.dat : Masos 2.0, disassembler data file
masos.lst : Masos 2.0, disassembler output
6809dasm.c : 6809 Disassember source
6809dasm.exe : MS-DOS executable
dasm.exe : Win95/98/NT console executable


(9/26/99) Updated Mos 3.2 diassembler data file, lots of new labels and comments; previous updates courtesy of Oscar Öberg.
(8/11/99) 6809 disassembler source, modified to support new pointer ("PTR") instruction, also courtesy of Oscar Öberg.
(8/11/99) Recompiled Win95/98/NT console executable of disassembler, courtesy me.
(12/17/99) Latest Mos 3.2 diassembler data file from Oscar, plenty more labels and comments.
(11/28/99) 6809 disassembler source, support added for direct-page label generation, again courtesy of Oscar Öberg.
(1/29/00) 6809 disassembler source, fixed bug w/ long labels--TimV (6809dasm.c, 43KB)
(1/29/00) Another new Win95/98/NT console disassembler executable. (dasm.exe, 49KB)
(1/29/00) Mos 3.2 diassembler data file from Shifty, including lots of MIDI stuff and new data from Tim Martin. (mos32.dat, 56KB)

Running the Disassembler

Type the following in an MS-DOS command line window:

dasm file.bin file.dat > file.lst

The arguments are a binary image file and a disassembler data file. Standard output is redirected to the listing file. To find out more about disassembler data files, look at 6809dasm.c and the .dat files.

Disassembler written by and copyright © 1995, Sean Riddle. (

Status (9/26/99)

The ROM listing has lots of info in it now. There are still a number of question marks, but I think I have a pretty good handle on it at this point.

I started working on mapping MOS 3.2 in July, especially the $9xxx pages contain most of the user-interface/ keypad-handler code. Oscar Öberg jumped in when I lost momentum and entered a whole bunch of labels and comments in late July and early August. Oscar did lots and lots of great work on program storage, parameter editing, MIDI handling, etc.

I've just added several hundred more lines to mos32.dat, including comments for a lot of direct-page ($8000-$80ff) variables and more notes and labels in the user-interface code. The biggest blanks now are in the $8xxx range, which seems to deal with keyboard events and operate the sound generation hardware. (I.e., the important stuff!)

I've barely touched Masos but it looks very similar to MOS 3.2 in most places, as you'd probably expect.

Status (12/19/99)

Lots of progress lately, almost all due to Shifty and Oscar. The code is pretty thoroughly commented and labeled now except for the sound-generating stuff which we're working on.

The next big challenge is to get this stuff into a format where it can be assembled and loaded into a synth.

Other Essential Stuff

The program image files were created using the Upward Concepts Mirage Monitor Disk. It isn't required for disassembling and documenting the binary images included here, but I'm already at a point where I need to create some short test programs to figure stuff out. The monitor is the only way that I know to that. And you'll almost certainly need it if you want to create (and debug!) your own modified versions of the operating system.

The Monitor Disk isn't listed in the catalog, but it was the same price as the other Mirage disks when I got it. Get it here:

The manual, including a memory map and some key hardware info, is at:

Rainer Buchty's Ensoniq Heaven is another terrific source for info on hardware inside the Mirage:

A very helpful collection of notes from another Mirage List contributor:


If you download these files and map out any new parts of the code, please share your findings with the rest of us! Either email me or post to the Miragehack mailing list.

Mirage mailing list info at:

Mailing list for technical discussions (like this stuff) at:

(jump to Simple Mirage Application)