Atari-Debug/MiniASM v1.11 Nathan Hartwell 12/19/2000 This code is taken directly from the Apple II System Monitor and Apple II Mini-Assembler sources written by S. Wozniak and A. Baum. Most of the code has been left as is found in Apple II ROMs, with the exception of appropriate keyboard and screen I/O code being added, as well as a few minor modifications that I made years ago. Those familiar with Atari-MON v1.x and v2.x will notice that this code is smaller, yet I have added more functionality to it. This is due to the fact that the Atari-MON project was hand ported machine code from a hex dump of the Apple II ROM with translation and extra code added as I went. I recently located documented source for this code and proceeded to clean up the Atari-MON project. Finding myself with cleaner code, I was down from 3284 bytes of code to just under 2k. So, I added the mini-assembler and brought it back up to a mere 2281 bytes of code. I have a version, without the mini-assembler, that resides in place of the self-test. But, I'm not quite done with it, so it will be a later release. I have assembled this code to reside at $B38F-$BC1F (no cartridge, just before the display list and screen RAM). A future version may support auto-relocation of itself. Commands: --------- Ctrl-B - Run Catridge Ctrl-C - Exit to DOS Ctrl-E - Dump CPU registers Ctrl-K - Null command (future expansion) Ctrl-P - Null command (future expansion) Ctrl-Y - Execute user defined function (jump vector @ $1C-$1D) ENTER - Execute command If an address is specified, the contents of that memory location is displayed in a hex dump fashion. If the input buffer is empty, pressing ENTER will perform a hex dump of up to 8 bytes (will only stop at $xxx7 and $xxxf) : - Enter hex data at address Example: $2000:A9 00 60 . - Hex dump memory block Example: $E000.E00F E000- 00 00 00 00 00 00 00 00 (ATASCII representation here) E008- 00 18 18 18 18 00 18 00 (ATASCII representation here) $ ! - Enter mini-assembler (see section below) ? - Find/Search Example: $9B: [data]" and " [data]" (note the space at the beginning). The first, obviously, allows you to set the address where the machine code is to be stored after asembly. The second stores the machine code in the next location. As I understand the code, comments (anything starting with ;) are allowed, but since you can only hand enter the data at this time, I don't see anyone sitting down and typing comments that won't be stored. A future version may allow taking input from a file, so I left the code that supports comments in place.