5

Can anyone tell me what executable format the Hitachi HD630x series of MPUs used?

I'm looking to disassemble (out of curiosity) a binary for the Hitachi HD63A03XP microprocessor. In case anyone is interested, this is the ROM for OS in the Yamaha DX7.

If I understand correctly, the HD63A03XP will load the executable binary from the ROM chip attached to the 16bit address bus. I can see from the datasheet and User's manual that upon reset, the reset vector is loaded from the two bytes at $FFFE and $FFFF at the top of the 64K memory space. Given that the ROM is 16kb in size, I assume that there's a particular binary format for loading memory into that high offset, I can't seem to find what it is though. Maybe there's a fundamental misunderstanding on my part. If so, I will gladly appreciate any pointers. I've skimmed over the datasheet for the ROM chip (Intel 2764) and I can't see any indications of a particular binary format there.

I've looked at the binary in a hex editor and the last bytes in the binary don't look like they correspond to these offsets either.

Any help is appreciated.

3
  • I would assume that the processor just jumps to the code pointed at by the reset vector, and runs from there. What am I missing? – OmarL Feb 10 at 7:03
  • 2
    Wait, is the ROM mapped to high addresses? – OmarL Feb 10 at 7:05
  • Hi Omar, I considered this. If that is the case and the end of the binary is the end of the ROM memory then it explains how data is loaded from those offsets. – ajxs Feb 10 at 7:48
10

There is no format. The ROM contains code and data, and ROM is at the end of the MCU memory space, while RAM is at the start of the MCU memory space.

The CPU simply fetches from the reset vector, two bytes starting from address $FFFE, and the 16-bit value fetched from ROM is the address where it then goes to execute code. The ROM is 16 kilobytes so the ROM starts at address $C000 and ends at $FFFF.

If you open the binary in a hex editor, you must load it to address $C000 for it to make sense, like pad it with zeroes or something, to make the ROM contents start at $C000. Or simply use a proper disassembler tool for HD68 series MCUs. The HD6803 is binary compatible with the MC6800 but Hitachi added a few extra instructions and made it execute with improved timings.

Based on how many DX7 emulators work, you are not the first to disassemble the ROM.

5
  • Thanks for pointing this out! I considered this, I didn't find anything to indicate it was the answer though. Do you know any good disassembler tools for the HD680x/HD630x series MCUs? Mine seems limited but capable. – ajxs Feb 10 at 7:50
  • Re. disassembling the ROM: Maybe. I can't seem to see any documentation online of it, it's very likely though. This is more a matter of curiosity than anything. I'm more interested in understanding how synths were programmed in this era than understanding FM synthesis. The DX7 used separate standalone chips for waveform and envelope generation so disassembling the OS ROM only gives you part of the story. – ajxs Feb 10 at 7:53
  • 1
    The 2764 is an 8KB EPROM, isn't it? – the busybee Feb 10 at 12:44
  • 1
    @thebusybee Yes it is. Early DX7 models had two 8KB ROMs. At some point the PCB was changed to have a single 16KB ROM, and if you wanted to update your ROM and it only came on 16KB ROM, the early PCB had some resistor or wire links that could be changed in a way to make the old PCB accept a single larger ROM chip. – Justme Feb 10 at 13:16
  • 1
    @Justme: I don't know whether this would be a retrocomputing or music, but I have a DX-21 and was curious if there were ever any ROM upgrades for it as there were for the DX-7? A web search simply seemed to find DX-7 upgrades. – supercat Feb 10 at 16:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.