Building custom ROM images with the CCASM assembler and Phoenix IDE

No much of any documentation has been produced for the Phoenix IDE.  One might find it hard to figure out how to set up the toolbox to use external commands and programs that use the command-line options, but it’s easy once you look at some examples.

One thing you might need to do is enclose pathnames with double quotes “” for certain commands, assemblers, compilers, etc.  This is a trial and error if the documentation for your tool doesn’t specify whether it’s required or not for filenames with spaces, etc.

Below is a readout from the Phoenix IDE for building the CoCoNet DOS ROM using a custom patch source plus an existing copy of the Disk BASIC 1.1 ROM.  The IDE merges the patchwork with the original ROM, saves out a 16K copy, and converts it into various other formats like Disto MPROM EPROM burner file, and Intel HEX which is copied directly into the FPGA CoCo project directory for inclusion in the CoCo 4 synthesis.

The tools called on for this project are CCASM (6809 assembler) and SREC_CAT.EXE (ROM to Intel HEX converter).

The commands that the IDE produced automatically based on checkboxes chosen in the Automatic Functions options in the properties box for the CoCoNet source code file can be seen in this IDE readout –>


C:\Users\Roger\AppData\Roaming\Phoenix IDE\Tools\CCASM\cm583.exe “C:\Users\Roger\AppData\Roaming\Phoenix IDE\Projects\CoCoNet 128\coconet2.asm” -6809 -loadm -oldrom=”C:\Users\Roger\AppData\Roaming\Phoenix IDE\Tools\CCASM\decb11.rom” -newrom=”C:\Users\Roger\AppData\Roaming\Phoenix IDE\Projects\CoCoNet 128\Objects\coconet” -romsize=16k -o=”C:\Users\Roger\AppData\Roaming\Phoenix IDE\Projects\CoCoNet 128\Objects\cnet.bin”

CCASM – 6809/6309 Cross Assembler (5.83)
[No Errors]
Mapping the ROM image (C:\Users\Roger\AppData\Roaming\Phoenix IDE\Tools\CCASM\decb11.rom) at 49152
Simulating a LOADM “C:\Users\Roger\AppData\Roaming\Phoenix IDE\Projects\CoCoNet 128\Objects\cnet.bin”
Simulating a SAVEM “C:\Users\Roger\AppData\Roaming\Phoenix IDE\Projects\CoCoNet 128\Objects\coconet.rom”,49152,16384,0
Writing Disto MPROM file: C:\Users\Roger\AppData\Roaming\Phoenix IDE\Projects\CoCoNet 128\Objects\

C:\Users\Roger\AppData\Roaming\Phoenix IDE\Tools\Srec\srec_cat.exe “C:\Users\Roger\AppData\Roaming\Phoenix IDE\Projects\CoCoNet 128\Objects\coconet.rom” -binary -o “C:\Dev\FPGA\DE0_Nano\Projects\DewberryCoCo\ROMs\coconet.hex” −intel −address-length=4


Yes, the CCASM assembler is very powerful and can do a lot of tricks especially if you’re determined to automate something to make your project build more efficient.  Automating the above process is absolutely required if I am to make changes to a custom DOS ROM that’s part of my FPGA CoCo 4 project.  One click goes from source code to an Intel HEX file that’s copied over to the Quartus II project folder where I need it right away.

For all you Phoenix IDE users, if there’s something you need the IDE to do but haven’t figured it out yet, please let me know and I’ll try to post a tutorial on this site.


Author: Roger Taylor