EXTENDED MONITOR COMMAND CODES The OSI 6502 disassembler uses uppercase letters to enable the functions. The way to enter a command is to just type the letter and then any additional information when applicable. (See Below). A = prints the value of the Accumulator on INTERUPT. X = Prints the value of the X register on Interrupt. Y = Print the value of the Y register on Interrupt. K = Prints the value of the STACK POINTER. P = Prints the value of the Processor Status register. When converted to binary (it is displayed in HEX) the bits meaning are as follows: (lowest)=Carry flag , 2nd = Zero flag , 3rd = IRQ disable (1=true) , 4th = Decimal mode set , 5th = BRK command encountered (a 00) , 6th = unused , 7th = Overflow set , (highest) = Negative flag set. I = Print all of the above registers and the address of the last interrupt encountered. These are updated every time the 6502 encounters a software "break" (opcode 00) or an external IRQ- (interrupt reqest) pulse on the IRQ pin of the 6502. The A,X,Y,P,&K registers can be modified (by typing the previous letters) and entering a 2-byte HEX value. If the "break" was a software one (00) or was set in the "BREAK TABLE"-see below- the program can be continued by typing the "C"- (continue) command. Qxxxx = Disassemble from address (xxxx) for 1 screen. This can be continued after it has printed be hitting the Line Feed button. Mxxxx(=)aaaa(,)bbbb = Move to memory location starting at (xxxx) the data from (aaaa) to (bbbb)-1. This does a plain MOVE DATA function. Rxxxx(=)aaaa(,)bbbb = Renumber to (xxxx) , the program from (aaaa) to (bbbb)-1. This command takes an executable program (and data) and relocates it to another memory location, renumbering it , so it is executable at the new locaton. N aa bb cc dd...>xxxx(,)yyyy = Search from (xxxx) to (yyyy)-1 for the string of HEX bytes (up to 8) and stop at the position of the first one if it is encountered. W string >xxxx(,)yyyy = Search from (xxxx) to (yyyy)-1 for the ASCII text (up to 8 chars) and stop at the position of the first one, if it is encountered. Zxxxx = Display 8 bytes of HEX data starting at (xxxx). This can be continued by pressing the L.F. button. Dxxxx(,)yyyy = Dump the memory from (xxxx) to (yyyy)-1 to the screen as HEX bytes. Fxxxx(,)yyyy(=)aa = Fill the memory from (xxxx) to (yyyy)-1 with the HEX byte (aa). Hxxxx(,)yyyyF = Hex Calculator- where (F) is the operation (+,-,*,/). This allows you to compute results in HEX. The "O" command displays the overflow of multiplications or the remainder of divisions. Bx(=)yyyy = Set Break point- where (x) is 1 to 8, and (yyyy) is the address. This sets a Soft Breakpoint in the program (in RAM) which when hit stops the execution of the program displays the value of the registers and allows you to "C"ontinue the program (after modifying any of the registers if desired). When you set one of these breakpoints it replaces the position in memory with a “00”- an interrupt. When hit it replaces the 00 with what was previously there and unsets the breakpoint from the table. Tx = Displays the table of Breakpoints Ex = End the breakpoint number (x). Ends it without ever encountering it. Sxxxx(,)yyyy = Save the memory in CHECKSUM format from (xxxx) to (yyyy) –1. L = Set the load mode for a CHECKSUM type data. V = Set the VIEW mode. Just displays what is coming in from the ACIA. Exit with spacebar. Gxxxx = GO execute the program at (xxxx). @xxxx = Display the contents of memory location (xxxx). You can modify it by typing in a HEX byte, or redisplay the contents by hitting “/”, or display the ASCII character by typing ‘”’. To display the PREVIOUS location, type shift-N (^). The next location can be displayed by hitting Line Feed. There are two unused commands J & U. These can be set up to jump to an address (to execute a program?) by inserting the address of the program (lo, hi) at the following locations in memory: J=$0974 lo, $0975 hi (assuming exmon loaded at $0800) U=$098A lo, $098B hi.