Skip to content

Latest commit

 

History

History
102 lines (60 loc) · 3.97 KB

README.md

File metadata and controls

102 lines (60 loc) · 3.97 KB

CMS ROMs

This project contains data downloaded from the Read Only Memory (ROM) of a Creative Micro Systems (CMS) 6909 MPU module, 9619 Advanced Single Board Computer (SBC), 9639 Memory Management Processor, and 9642 Serial I/O Processor.

There are also some other ROMs or sources from various EXORbus compatible modules.

The initial data is in the DEBUG09 memory view format (.dbgdmp). However, they are easily changed to other more standard formats using make and the makefile.

Background

The CMS 9619 and 9609 are EXORBus compatible MC6809-based computers with a number of PIAs and ACIAs, making them fairly capable SBCs. The ROMS appear to be versions of the MICROWARE SYSTEMS CORPORATION DEBUG machine monitor. The source code of an earlier version of it is available online. The sections with similar functions have comments straight from that document. The debugger in Nitros-9 contains similar code.

My original workflow for ripping EPROMS and programming new EEPROMS used an Apple II and a SuperSerial card, so some of the original file formats revolved around the Apple II System Monitor. Now, I am using the CMS 9619 for ripping and programming EEPROMS, so the files have moved towards that format.

Prerequisites

The makefile uses:

  • cat, head, sed, xxd - to convert between the monitor formats, or to hex and binary formats.

  • f9dasm - to disassemble the binary, and incorporate the comments.

  • lwasm from LWTools - to assemble the source files back to binaries.

  • c2t - to create cassete input audio file for transferring data back to the Apple II.

  • diff - to compare the original binary hexdump to the compiled binary hexdump.

However, you only need cat, head, sed, and xxd to convert to simpler formats.

Makefile Commands

The included makefile includes a number of commands to do the various file conversions. Basically, the make target should be specified as the base filename you want to convert, with the new extension for the file type you want. Supported extensions are:

.mondmp: Apple II System Monitor memory dump format. ("-" separates address from values)

.mon: Apple II System Monitor memory change format. (":" separates address from values)

.dbgdmp: CMS 9619 DEBUG09 memory dump format. (" " separates address from values)

.dbge: CMS 9619 DEBUG09 memory edit format.

.dbgee: CMS 9619 DEBUG09 memory edit format with error recovery. This format allows you to program EEPROMS on the 9619, ignoring the premature write error, and continuing to the next value.

.aif: Apple II cassette input audio format.

.bin: binary format, generated from a mon file.

.hex: standard xxd/hexdump format of a bin.

.info: f9dasm info file format to add comments to asm files.

.asm: 6809 assembly format with comments from an info file.

.raw: binary format, generated by lwasm from asm file.

.diff: diff output comparing the mon file to the disassembled, then reassembled, then hex'ed (in dbgdmp format) file.

For example, the command:

make 9619_U7.asm

will convert 9619_U7.dbgdmp to a binary format, then disassemble it using f9dasm.

The command:

make 9619_U7.diff

does the same as above, then assembles the the .asm file using lwtools, then generates a hexdump of the re-assembled binary. Finally, it compares the original binary hexdump to the re-assembled binary hexdump.

The command:

make all

will convert all of the dbgdmp files, and then disassemble them.

Use:

make 9619_U7.aif

to generate a cassette input audio file to upload back to the Apple II for EEPROM programming.

TO DO

The disassembly comments are not complete. Also 9639 and 9642 don't re-compile yet. It is a work in progress, but still helpful to see what the monitors do.