I've been doing some hobby work reverse-engineering vintage synthesizer ROMs from the early 80s, and I'm curious about what kind of development tools the original engineers may have used. Normally this would be a bit too vague of a question, but I have a few interesting clues.
One of the ROMs I've disassembled is the Yamaha DX9 (Available here). This device features a Hitachi 6303 CPU. This ROM contains some interesting 'junk' left over from the development process, including fragments of what appears to be a symbol table, and some code for another system (Possibly the development system). These fragments appear in conspicuous places, such as at the end of a string table, and between the top of the code, and the vector table at the top of the address space.
Each entry in the symbol table consists of a "`" character (ASCII 0x60, backtick)) followed by a 6 character label, a 16-bit offset, and a terminating '0'. At first I didn't recognize the significance of the strings, but then noticed that the labels actually describe the code pointed to by the offset. So it's very clearly a symbol table. The attached screenshot shows a fragment of the symbol table (with my own added labels substituted for the offsets they correspond to).
Here's a view of the binary data for one of these entries.
The 2-byte offset following the
CERR$ label is
0xC7A3. At offset
0xC7A3 in the ROM address space (not the ROM binary itself. The ROM is loaded at offset
0xC000 into the memory space) is the null-terminated for a MIDI checksum error, as illustrated by the following screenshot.
I've looked through all the contemporary Motorola 680x development tool manuals I can find on bitsavers.org, including the material for the Motorola EXORciser. All of their assemblers have the same limitation of 6 character labels, but I can't find anything indicating they produce a symbol table output in this format. The Motorola 680x assembler even mentions an 8-byte symbol table entry, whereas this is clearly 10-bytes.
There's a big block of 680x code left over in the binary (Starting around 0xC84D in the address space) that appears to be for another device, as the RAM addresses used don't correspond to the address space in the DX9. It looks like they reference RAM in the 0x4000-0x6000 range, which doesn't really correspond with any of the development systems I can find documented like the EXORciser, or any in-memory monitor.
If anyone has any insight they could share which could help me identify what development tools might have been used, I'd really appreciate it.