SATURN Disassembler for the HP-48SX Version 1.0 by Kevin Pryor, with improvements by John Gilbert [plus two utilities by Dave Marsh] DISD is an HP-48 directory that contains a SATURN disassembler and its many subroutines. The programs are written in RPL with the exception of Dave Kaffine's PEEK which is written in machine code. The entire directory is 11K and has 56 files. The Information on the SATURN chip comes solely from Alonzo Gariepy's HP-28S Processor Notes and uses his mnemonics. I have not extensively tested these programs. These programs are in the public domain. Feel free to improve these programs in any way. Instructions: Change your I/O setup menu on your HP48 to binary, and wire. Send DISD to your HP48. In the DISD directory the useful programs are: DISR: Disassembles memory at #address and following addresses. Uses ADDR to store the next address, ODMP stores the unused hex string for the next instruction. #address -> address:ASM address:ASM -> address2:ASM Example: #0 DISR 0: "MOVE.1 3,P" DISR 2: "JUMP.3 1BC" DISJ Disassembles memory at the last jump or branch instruction used by DISR or itself, the variable ADRJ. Example: ( after above example ) DISJ 1BC: "JUMP.A 01FC6" DISJ 1FC6: "CLRB 6,ST" DISR 1FC9: "CLRB 2,ST" DIS Disassembles a string of hex digits. "hex digits" -> ASM "remaining hex digits" Example: "D9D2421" DIS "MOVE.A B,C" "D2421" DIS "MOVE.A B,C" "CLR.A C" "421" DIS "MOVE.A B,C" "CLR.A C" "BRCS PC+13" [To automate DIS, see CDIS below. -jkh-] PKS Peek at address and put in form needed by DIS #address -> "peek string" #0 PKS "2369B108DADF1008" --- End of DISD documentation by Kevin Pryor --- [Note: Dave Marsh wrote the following two little routines. Place them in the DISD directory if you wish; they're useful if you do a lot of "batch" disassembling rather than just one instruction at a time. -jkh-] CDIS -- Complete Disassembler. Simply loops DIS through a whole hex string. \<< DO DIS UNTIL DUP "" SAME END DROP \>> FLE -- Connects strings on the stack (as after CDIS) with linefeeds. This makes it easier to save a disassembly into a single variable, ship it to a PC, and examine it on a real screen. \<< 3 DEPTH START "\010" SWAP + + NEXT \>>