[Coco] Portal-9 disassembler

Roger Taylor rtaylor at bayou.com
Mon Dec 27 17:15:14 EST 2004


I am starting on the disassembler tool for Portal-9 tonight.  What I'll be 
aiming for is the ability to start a project, load in any binary CoCo 
binary as a component, click Unbuild, and an .asm file will pop up in it's 
own window.  If you then tag the .asm file as assemblable, a Build of the 
same project will produce the binary again.  The new binary won't overwrite 
the original one since project files are kept in one directory while the 
output files are kept in another one.

A grid will be used for tweaking subsequent unbuilds.  The grid will look 
similar to a spreadsheet layout and let you define where opcodes and data 
are, the starting address for execution, etc.  The disassembler will follow 
the code's branches and jumps to help automatically separate code and 
data.  You'll be able to give predefined label names to certain addresses, 
so the next unbuild won't automatically assume something like L000100 for 
an address if it's already defined.  So, a disassemble session will 
eventually turn into two files; the original binary and the tweaker file 
(grid).  Everything is saved as the project automatically so you can work 
on it again another day, or whatever.

The goal is to let novice and experts both take all of the old CoCo games 
and programs out there, convert them back to source code, and use Portal-9 
to rebuild the programs.  Ofcourse, you'll be able to do what you want once 
the program is in source code form.

I think a typical session for taking an old popular game, and rewriting it, 
etc. would be:

1) create project (like Pitfall 2005)
2) open binary component (like PITFALL.ROM)
3) click Unbuild
4) observe grid and reports therein, make changes where needed
5) observe the produced .asm file (pops up in it's own window)
6) repeat #3 until no mysteries are reported about the original binary or 
the produced source code looks promising

-- 
Roger Taylor




More information about the Coco mailing list