NAM DISAS9 OPT PAG * FLEX EQUATES WARMS EQU $CD03 PSTRNG EQU $CD1E INBUFF EQU $CD1B GETHEX EQU $CD42 PCRLF EQU $CD24 OUTCHR EQU $CD0F GETCHR EQU $CD15 NXTCH EQU $CD27 PUTCHR EQU $CD18 * CRT MON EQUATES FLAGS EQU $F370 OPRINT EQU $10 ORG $0000 OUTCH RMB 2 CURADR RMB 2 WRKADR RMB 2 LENGTH RMB 1 PAGE RMB 1 OPCD RMB 1 POSTB RMB 1 BYTE1 RMB 1 BYTE2 RMB 1 INDFLG RMB 1 INDBYT RMB 1 NXTBUF RMB 2 BUFFER RMB 12 HEXB RMB 6 MNEM RMB 6 OPRAND RMB 21 ENDBUF EQU * ORG $0000 INIT BRA START FCB 0 START LBSR CLRPRN LEAX DMSG1,PCR JSR PSTRNG JSR INBUFF JSR GETHEX BCC NBROK ERMSG LBSR CLRPRN LEAX DMSG2,PCR JSR PSTRNG BRA START NBROK CMPB #0 CAR-RET? BNE NBROKA NO JMP WARMS NBROKA STX STARTX,PCR LEAX DMSG3,PCR JSR PSTRNG JSR INBUFF JSR GETHEX BCC NBROK1 BRA ERMSG NBROK1 CMPB #0 CAR-RET? BEQ ERMSG YES STX ENDX,PCR RQPRN LEAX DMSG4,PCR JSR PSTRNG CLR PRINT,PCR PRINT ON FLAG JSR GETCHR CMPA #'N BEQ DODIS CMPA #'Y BNE RQPRN INC PRINT,PCR TURN ON FLAG LEAX DMSG5,PCR JSR PSTRNG JSR INBUFF LDA #OPRINT ORA FLAGS STA FLAGS JSR PCRLF GETNXC JSR NXTCH CMPA #13 BEQ DODIS JSR PUTCHR BRA GETNXC DODIS JSR PCRLF LDA #-1 STA LCNT,PCR LINE COUNTER STDIS LDY #OUTCHR LDX STARTX,PCR DOAGN TST PRINT,PCR PRINT ON? BNE DISON YES-NO LINE CNT LDA LCNT,PCR GET COUNTER INCA ADD ONE TO IT CMPA #23 SCREEN FULL? BNE SCNT NO-PRINT ANOTHER LINE CESC JSR GETCHR GET KEYBD INPUT CMPA #$1B ESCAPE CHR BEQ NXTLN YES CMPA #13 CAR RET BNE CESC NO JMP WARMS GO TO FLEX NXTLN JSR PCRLF LDA #0 SCNT STA LCNT,PCR CLEAR CNTR DISON JSR DISAS STX STARTX,PCR CMPX ENDX,PCR BLS DOAGN LBRA START CLRPRN LDA #($FF-OPRINT) ANDA FLAGS STA FLAGS RTS STARTX FCB 0,0 ENDX FCB 0,0 PRINT FCB 0 LCNT FCB 0 DMSG1 FCC 'DISASSEMBLER PROGRAM' FCB 13,10 FCC 'INPUT STARTING HEX ADDRESS TO DISASSEMBLE' FCB 13,10 FCC ' CARRIAGE RETURN ONLY CALLS FLEX' FCB 13,10 FCB 4 DMSG2 FCB 13,10 FCC 'BAD ADDRESS' FCB 13,10,4 DMSG3 FCB 13,10 FCC 'INPUT ENDING ADDRESS TO DISASSEMBLE' FCB 13,10,4 DMSG4 FCB 13,10 FCC 'IS PRINTER TO BE USED (Y/N) ? ' FCB 4 DMSG5 FCB 13,10 FCC 'INPUT HEADING OR CAR RET IF NONE' FCB 10,13,4 DISAS PSHS A,B,Y,U PRESERVE REGISTERS LEAU OUTCH-ENDBUF,S TFR U,S STX CURADR,U SAVE ADDR TO DISASSEMBLE STY OUTCH,U SAVE OUTPUT CHR ROUTINE ADDR LEAX LENGTH,U INIT TEMP VARIABLES LDB #BUFFER-LENGTH INIT1 CLR ,X+ DECB BNE INIT1 LDA #$20 INIT BUF WITH BLANKS LDB #ENDBUF-BUFFER INIT2 STA ,X+ DECB BNE INIT2 LDX CURADR,U INIT WORKING ADDR STX WRKADR,U INC LENGTH,U INSTR LENGTH AT LEAST 1 BYTE *** MAIN PROCEDURE LDB ,X+ CMPB #$10 PAGE 1? BEQ MAIN1 YES CMPB #$11 NO, PAGE 2? BNE MAIN2 NO, MUST BE OPCODE MAIN1 STB PAGE,U SAVE PAGE INC LENGTH,U LENGTH AT LEAST 2 BYTES LDB ,X+ GET OPCODE MAIN2 STX WRKADR,U SAVE WORKING ADDR STB OPCD,U SAVE OPCODE CMPB #$80 OPCODES $80-FF? BHS MAIN3 YES,CONVERT TO $40-4F CMPB #$40 OPCODES $40-7F? BLO MAIN4 NO ANDB #$0F YES, CONVERT TO $00-0F BRA MAIN4 MAIN3 ANDB #$0F CONVERT TO $40-4F ORB #$40 MAIN4 LDA #4 MULT BY 4 TO CALC ADDR MUL OF ENTRY IN MNEMONIC TBL LEAX MNTAB,PCR LEAX D,X X POINTS TO ENTRY IN TBL LEAY MNEM,U Y POINTS TO SPACE IN BUF LDB #4 MAIN5 LDA ,X+ XFER OPCODE MNEM FROM TBL STA ,Y+ INTO BUFFER DECB BNE MAIN5 LEAX OPRAND,U POINT TO OPERAND POSITION STX NXTBUF,U IN BUFFER LDA MNEM,U GET FIRST CHAR OR MNEMONIC CMPA #'* ILLEGAL OPCODE? LBEQ ILEGOP YES * SELECT APPLICABLE PROCESSING ROUTINES LDA OPCD,U CMPA #$C0 LBHS OPC0 CMPA #$80 LBHS OP80 CMPA #$40 BHS OP00 CMPA #$30 LBHS OP30 CMPA #$20 LBHS OP20 CMPA #$10 BHS OP10 BRA OP00 *** OPCODES 00-0F AND 40-7F * TRAP ILLEGAL OPCODES OP00 TST PAGE,U MUST BE PAGE 0 BNE OP01 CMPA #$4E $4E AND $5E NOT VALID BEQ OP01 CMPA #$5E BNE OP02 OP01 LBRA ILEGOP ILLEGAL OPCODE EXIT * REGISTER ADDRESSING OP02 ANDA #$F0 LDB #'A CMPA #$40 A REG? BEQ OP03 YES CMPA #$50 B REG? BNE OP04 NO LDB #'B YES OP03 STB MNEM+3,U PUT REG INTO MNEMONIC BRA OP07 * INDEXED ADDRESSING OP04 CMPA #$60 BNE OP05 LBSR INDEX PROCESS INDEXED MODE BRA OP07 * EXTENDED ADDRESSING OP05 CMPA #$70 BNE OP06 LBSR EXTEND PROCESS EXTEDNDED MODE BRA OP07 * DIRECT ADDRESSING OP06 LBSR DIRECT PROCESS DIRECT ADDR MODE OP07 LBRA FINISH FINISH UP *** OPCODES 10-1F * TRAP ILLEGAL OPCODES OP10 LDB PAGE,U MUST BE PAGE 0 BEQ OP12 OP11 LBRA ILEGOP * PROCESS LONG BRANCHES OP12 CMPA #$16 BEQ OP13 CMPA #$17 BNE OP14 OP13 LBRA OP23 PROCESS LIKE 20-2F * PROCESS CC INSTRUCTIONS OP14 CMPA #$1A BEQ OP15 CMPA #$1C BNE OP17 LDA #'C FIX 'ANDCC' STA MNEM+4,U OP15 LDA #'# LBSR PUTCH PRINT AS IMMED MODE LBSR DIRECT PROCESS LIKE DIRECT ADDR OP16 LBRA FINISH * PROCESS REGISTER TRANSFER INSTRUCTIONS OP17 CMPA #$1E BLO OP16 PROCESS REMAINING 1-BYTE INSTR'S INC LENGTH,U LDB [WRKADR,U] GET POST BYTE STB BYTE1,U ANDB #$88 CHK BOTH REGS SAME SIZE BEQ OP18 CMPB #$88 BNE OP11 ILLEGAL OPCODE IF NOT SAME OP18 LDB BYTE1,U LSRB LSRB LSRB LSRB BSR REG GET SOURCE REGISTER CMPA #'* CHK FOR INVALID REG BEQ OP11 LDA #', PUT COMMA IN BUFFER LBSR PUTCH LDB BYTE1,U BSR REG GET DEST REGISTER CMPA #'* CHK FOR INVALID REG BEQ OP11 BRA OP16 REG ANDB #$0F MASK OFF HI NIBBLE LEAX REGTAB,PCR LDA B,X GET REGISTER NAME FROM TBL LBSR PUTCH CMPB #$05 BNE REG1 LDA #'C FIX 'PC' BRA REG3 REG1 CMPB #$0A BNE REG2 LDA #'C FIX 'CC' BRA REG3 REG2 CMPB #$0B BNE REG4 LDA #'P FIX 'DP' REG3 LBSR PUTCH REG4 RTS *** OPCODES 20-2F * TRAP ILLEGAL OPCODES OP20 LDB PAGE,U CMPB #$11 MUST BE PAGE 0 OR 1 BEQ OP21 CMPA #$20 'BRA' MUST BE PAGE 0 BNE OP22 CMPB #$00 BEQ OP22 OP21 LBRA ILEGOP * PROCESS LONG BRANCHES OP22 CMPB #$10 LONG BRANCHES ON PAGE 1 BNE OP26 OP23 LDB #3 CHNGE MNEMONIC TO LONG BRANCH FORM LEAX MNEM+2,U OP24 LDA ,X+ STA X LEAX -2,X DECB BNE OP24 LDA #'L STA 1,X LBSR REL16 OP25 LBRA FINISH * PROCESS SHORT BRANCHES OP26 LBSR REL8 BRA OP25 *** OPCODES 30-3F * TRAP ILLEGAL OPCODES OP30 LDB PAGE,U CMPA #$3F MUST BE PAGE 0 EXCEPT 'SWI' BEQ OP301 CMPB #0 BEQ OP32 LBRA ILEGOP * PROCESS 'LEA' INSTRUCTIONS OP32 CMPA #$33 BHI OP34 LBSR INDEX CAN ONLY BE INDEXED MODE OP33 LBRA FINISH * PROCESS STACK INSTRUCTIONS OP34 CMPA #$3C CHECK FOR 'CWAI' BEQ OP302 CMPA #$37 BHI OP33 PROCESS REMAINING 1-BYTE INSTR INC LENGTH,U LDA [WRKADR,U] GET POSTBYTE STA BYTE1,U STA BYTE2,U TEMP STORAGE CLRB OP35 LSL BYTE2,U SHIFT BIT INTO CARRY BCC OP300 NO REGISTER IF BIT NOT SET LEAX STKTAB,PCR LDA B,X GET REGISTER FROM TABLE CMPA #'S DECIDE ON U OR S FOR STACK BNE OP36 CMPA MNEM+3,U COMPARE TO LAST CHAR BNE OP36 OF MNEMONIC LDA #'U REPLACE REGISTER CHAR OP36 LBSR PUTCH CMPA #'P FIX PC AND CC BEQ OP37 CMPA #'C BNE OP38 OP37 LDA #'C LBSR PUTCH BRA OP39 OP38 CMPA #'D FIX DP BNE OP39 LDA #'P LBSR PUTCH BRA OP39 OP39 LDA #', PUT COMMA IN BUF LBSR PUTCH OP300 INCB CMPB #8 BNE OP35 LDX NXTBUF,U REMOVE LAST COMMA FROM BUF LEAX -1,X STX NXTBUF,U BRA OP33 * PROCESS 'SWI' OP301 CMPB #0 BEQ OP33 DONE IF PAGE 0 ADDB #$21 ADD $21 TO CONVERT PAGE INTO STB MNEM+3,U ASCII CHARACTER BRA OP33 * PROCESS 'CWAI' OP302 LDA #'# PRINT AS IMMED MODE LBSR PUTCH LBSR DIRECT PROCESS LIKE DIRECT LBRA FINISH *** OPCODES 80-BF * PROCESS 'BSR' AS SPECIAL CASE OP80 LDB PAGE,U CMPA #$8D BNE OP81 CMPB #$00 LBNE ILEGOP LDA #'B CHANGE 'JSR' TO 'BSR' STA MNEM,U LBSR REL8 PROCESS LIKE SHORT BRANCH LBRA FINISH * GET MNEMONIC AS REQUIRED BY PAGE OP81 ANDA #$8F CMPA #$83 FIX SUBD/CMPD/CMPU BNE OP83 CMPB #$00 BEQ OP800 LDA #'C STA MNEM,U LDA #'M STA MNEM+1,U LDA #'P STA MNEM+2,U LDA #'D CMPB #$10 BEQ OP82 LDA #'U OP82 STA MNEM+3,U BRA OP800 OP83 CMPA #$8C FIX CMPX/CMPY/CMPS BNE OP85 CMPB #$00 BEQ OP800 LDA #'Y CMPB #$10 BEQ OP84 LDA #'S OP84 STA MNEM+3,U BRA OP800 OP85 CMPA #$8E FIX LDX/LDY AND STX/STY BLO OP86 CMPB #$11 CANNOT BE PAGE 2 LBEQ ILEGOP CMPB #$00 BEQ OP800 LDA #'Y STA MNEM+2,U BRA OP800 OP86 CMPB #$00 ALL REMAINING OPCODES MUST BE LBNE ILEGOP ON PAGE 0 *** JOINTLY PROCESS 80-BF AND C0-FF * TRAP ILLEGAL OPCODES OP800 LDA OPCD,U ANDA #$BF CMPA #$87 STORE OPCODES NOT ALLOWED BEQ OP801 IN IMMEDIATE MODE CMPA #$8D BEQ OP801 CMPA #$8F BNE OP802 OP801 LBRA ILEGOP * PROCESS EXTENDED ADDRESSING OP802 LDA OPCD,U ANDA #$30 CMPA #$30 BNE OP803 LBSR EXTEND LBRA FINISH * PROCESS INDEXED ADDRESSING OP803 CMPA #$20 BNE OP804 LBSR INDEX LBRA FINISH * PROCESS DIRECT ADDRESSING OP804 CMPA #$10 BNE OP805 LBSR DIRECT LBRA FINISH * PROCESS IMMEDIATE ADDRESSING OP805 LDA #'# LBSR PUTCH LDA OPCD,U ANDA #$8F CMPA #$83 OPCODES 83 AND 8C-8F HAVE 2-BYTE BEQ OP806 OPERANDS CMPA #$8C BHS OP806 LBSR DIRECT PROCESS 1-BYTE OPERAND LIKE LBRA FINISH DIRECT OP806 LBSR EXTEND PROCESS 2-BYTE OPERAND LBRA FINISH LIKE EXTENDED *** OPCODES C0-CF * CHANGE MNEMONICS AND TRAP ILLEGAL OPCODES OPC0 LDB PAGE,U ANDA #$CF CMPA #$CB CHANGE A TO B IN MNEMONICS BHI OPC3 CMPA #$C3 FIX 'ADDD' BNE OPC0A LDA #'A STA MNEM,U LDA #'D STA MNEM+1,U STA MNEM+2,U STA MNEM+3,U BRA OPC2 OPC0A LEAX MNEM+2,U LDA X CMPA #'A BEQ OPC1 LEAX 1,X OPC1 INC X CHANGE A TO B IN MNEMONIC OPC2 CMPB #$00 MUST BE PAGE 0 BEQ OPC8 BRA ILEGOP OPC3 CMPA #$CD BHI OPC6 BNE OPC5 LDA #'S STA MNEM,U LDA #'T OPC4 STA MNEM+1,U LDA #'D STA MNEM+2,U LDA #$20 STA MNEM+3,U BRA OPC2 CHECK FOR PAGE 0 OPC5 LDA #'L FIX 'LDD' STA MNEM,U LDA #'D BRA OPC4 OPC6 CMPB #$11 PAGE 2 NOT ALLOWED FOR CE-CF BEQ ILEGOP LDA #'U CMPB #$00 FIX LDU/LDS AND STU/STS BEQ OPC7 LDA #'S OPC7 STA MNEM+2,U OPC8 LBRA OP800 PROCESS LIKE 80-BF *** ILLEGAL OPCODE ROUTINE ILEGOP LEAX MNILEG,PCR POINT TO '***' LEAY MNEM,U LDB #4 ILOP1 LDA ,X+ STA ,Y+ DECB BNE ILOP1 LEAX 1,Y POINT TO NXT AVAILABLE POSITION IN STX NXTBUF,U BUF AFTER OPCODE MNEMONIC LDA #1 SET INSTRUCTION LENGTH TO 1 STA LENGTH,U LBRA FINISH CONTINUE *** PROCESS INDEXED ADDRESSING MODE INDEX INC LENGTH,U LDX WRKADR,U BUMP WORKING ADDR POINTER LDB ,X+ AND GET POSTBYTE STX WRKADR,U STB INDBYT,U STB BYTE1,U * CHECK FOR INDIRECT ADDRESSING ANDB #$90 CMPB #$90 BITS 4 AND 7 SET? BNE IND1 NO, NOT INDIRECT COM INDFLG,U YES, SET FLAG LDA #'[ LBSR PUTCH OUTPUT '[' * AUTO INCREMENT/DECREMENT ADDRESSING IND1 LDB INDBYT,U ANDB #$8F MASK OFF REG AND INDIRECT BITS CMPB #$80 AUTO INC/DEC BLO IND5 NO CMPB #$83 BHI IND5 NO LDA INDBYT,U GET POSTBYTE ANDA #$11 CHK FOR INC/DEC BY 1 AND CMPA #$10 INDIRECT ADDRESSING BEQ ILEGOP ILLEGAL OPERATION LDA #', PUT COMMA IN BUF LBSR PUTCH CMPB #$81 AUTO INC? BHI IND3 NO LBSR GETREG PUT REG INTO BUF LDA #'+ LBSR PUTCH CMPB #$81 INC BY 2? BNE IND2 NO LBSR PUTCH IND2 LBRA INDEND IND3 LDA #'- AUTO DEC LBSR PUTCH CMPB #$83 DEC BY 2? BNE IND4 LBSR PUTCH IND4 LBSR GETREG PUT REG INTO BUF LBRA INDEND * ACCUMULATOR OFFSET IND5 LDA #'A CMPB #$86 BEQ IND6 LDA #'B CMPB #$85 BEQ IND6 LDA #'D CMPB #$8B BNE IND7 IND6 LBSR PUTCH OUTPUT OFFSET REG LDA #', LBSR PUTCH LBSR GETREG OUTPUT INDEX REG LBRA INDEND * CONSTANT OFFSET FROM PC IND7 CMPB #$8D BEQ IND8 CMPB #$8C BNE IND10 IND8 LDA INDBYT,U GET POSTBYTE STA POSTB,U INC LENGTH,U ACCOUNT FOR IT CMPB #$8D BEQ IND9 LBSR REL8 PROCESS 8 BIT OFFSET IND8A LDA #', OUTPUT ',PC' LBSR PUTCH LDA #'P LBSR PUTCH LDA #'C LBSR PUTCH LBRA INDEND IND9 LBSR REL16 PROCESS 16 BIT OFFSET BRA IND8A * CONSTANT OFFSET (ZERO) IND10 CMPB #$84 BNE IND12 CLRA IND11 LBSR PUT2H LDA #', ',R' LBSR PUTCH BSR GETREG BRA INDEND * 5-BIT OFFSET IND12 BITB #$80 5 BIT OFFSET IF BIT 7=0 BNE IND13 TST INDFLG,U IND ADDR NOT ALLOWED BNE IND18 LDB INDBYT,U ANDB #$1F GET OFFSET BITS BITB #$10 TEST SIGN BIT BEQ IND12A POSITIVE LDA #'- LBSR PUTCH ORB #$E0 SET HI ORDER BITS NEGB CONV TO POS NBR IND12A TFR B,A BRA IND11 * 8-BIT OFFSET IND13 LDA INDBYT,U GET POSTBYTE STA POSTB,U CMPB #$88 BNE IND15 INC LENGTH,U LDB [WRKADR,U] GET OFFSET BYTE STB BYTE1,U BPL IND14 TEST SIGN OF OFFSET LDA #'- LBSR PUTCH NEGB CONVERT TO POS NBR IND14 TFR B,A BRA IND11 * 16-BIT OFFSET IND15 CMPB #$89 BNE IND16 INC LENGTH,U INC LENGTH,U LDD [WRKADR,U] STD BYTE1,U LBSR PUT2H TFR B,A BRA IND11 * EXTENDED INDIRECT IND16 LDA INDBYT,U CMPA #$9F BNE IND18 STA POSTB,U BSR EXTEND PROCESS LIKE EXTENDED BRA INDEND * TRAP ILLEGAL INDEX MODES IND18 LBRA ILEGOP * GET INDEX REGISTER GETREG PSHS B LDB INDBYT,U GET POSTBYTE LDA #'X ANDB #$60 BEQ GETR1 LDA #'Y CMPB #$20 BEQ GETR1 LDA #'U CMPB #$40 BEQ GETR1 LDA #'S GETR1 BSR PUTCH OUTPUT REG PULS B RTS * FINISH UP INDEXED PROCESSING INDEND TST INDFLG,U IND MODE? BEQ INDEN1 NO LDA #'] BSR PUTCH INDEN1 RTS *** PROCESS DIRECT ADDRESSING MODE DIRECT INC LENGTH,U LDA #$24 PUT '$' IN BUF BSR PUTCH LDA [WRKADR,U] OUTPUT 1-BYTE ADDR STA BYTE1,U BSR PUT2H RTS *** PROCESS EXTENDED ADDRESSING MODE EXTEND BSR DIRECT OUTPUT FIRST BYTE INC LENGTH,U INC WRKADR+1,U BNE EXT1 INC WRKADR,U EXT1 LDA [WRKADR,U] STA BYTE2,U BSR PUT2H OUTPUT 2ND BYTE RTS *** PROCESS RELATIVE ADDRESSING MODES REL8 INC LENGTH,U LDA #'( PUT '(' INTO BUF BSR PUTCH LDA [WRKADR,U] OUTPUT 1-BYTE OFFSET TFR A,B STA BYTE1,U SEX ADDD #1 REL8A ADDD WRKADR,U BSR PUT2H OUTPUT REL ADDR TFR B,A BSR PUT2H LDA #') BSR PUTCH RTS REL16 INC LENGTH,U INC LENGTH,U LDA #'( PUT '(' INTO BUF BSR PUTCH LDD [WRKADR,U] OUTPUT 2-BYTE OFFSET STA BYTE1,U STB BYTE2,U ADDD #2 BRA REL8A *** OUTPUT ROUTINES * PUT 2 HEX CHARACTERS FROM A REG IN BUFFER PUT2H PSHS A BSR PUT2HL PULS A BSR PUT2HR RTS PUT2HL LSRA SHIFT LEFT NIBBLE INTO RITE LSRA LSRA LSRA PUT2HR ANDA #$F CONV NIBBLE INTO ASCII ADDA #'0 CMPA #'9 BLS PUTCH OUTPUT NIBBLE ADDA #7 * PUT ASCII CHARACTER INTO BUF AND BUMP BUFFER POINTER PUTCH LDX NXTBUF,U STA ,X+ STX NXTBUF,U RTS *** END OF JOB ROUTINE * TERMINATE BUFFER WITH CR-LF FINISH LDA #$0D BSR PUTCH LDA #$0A LF BSR PUTCH LDA #$15 EOL BSR PUTCH * PUT CURRENT ADDRESS AND OPCODE BYTES INTO BUFFER LEAX BUFFER,U STX NXTBUF,U LDA CURADR,U GET MSB OF ADDRESS BSR PUT2H LDA CURADR+1,U LSB BSR PUT2H LDA #$20 BLANK BSR PUTCH LDA LENGTH,U PRESERVE INSTR LENGTH PSHS A LDA PAGE,U OUTPUT PAGE BYTE IF APPLICABLE BEQ EOJ1 BSR PUT2H DEC LENGTH,U EOJ1 LEAX BUFFER+7,U STX NXTBUF,U POINT TO OPCODE LDA OPCD,U OUTPUT OPCODE BSR PUT2H DEC LENGTH,U LDA POSTB,U OUTPUT OPCODE POSTBYTE IF APPL BEQ EOJ2 BSR PUT2H DEC LENGTH,U * OUTPUT OPERAND BYTES EOJ2 LEAX HEXB,U POINT TO OPERAND FIELD STX NXTBUF,U TST LENGTH,U BEQ EOJ4 LDA BYTE1,U OUTPUT MSB OF OPERAND BSR PUT2H DEC LENGTH,U BEQ EOJ4 LDA BYTE2,U OQTPUT BSR PUT2H * KUTPUT ENTIRA BUFFER TO CONSOLE EOJ4 LEAX BUFFER,U POINT TO START OF BUF EOJ5 LDA ,X+ PSHS A,X,U SAVE REGISTERS JSR [OUTCH,U] OUTPUT CHAR PULS A,X,U CMPA #$15 AOL? BNE EOJ5 * SAT UP BOR NEXT LINE KF DISASSEMBLY PULS B GAT INSTRUCTION LENGPH SEX ADDD CURADR,U CALC START OF NXT INSTR STD CURADR,U LDX CURADR,U LEAS ENDBUF-OUTCH,U RESTORE STAK PULS A,B,Y,U RESTORE REGS RTS DKNE, REPURJ PO CAHLING ROQTINE *** PRANSFER IJSTRUCTIKN REGISTER TABHE REGTAB FCC /DXYUSP**ABCD*****/ *** STACK RAGISTER TABHE STKTAB FCC /PSYXDBAC/ *** MNEIONIC TABLE MNTAB FCC /NEG / MNILEG FCC /*** / ILLEGAL OPCODA FCC /*** / FCC /COM / FCC /LSR / FCC /*** / FCC /ROR / FCC /ASR / FCC /ASL / FCC /ROL / FCC /DEC / FCC /*** / FCC /INC / FCC /TST / FCC /JMP / FCC /CLR / FCC /*** / FCC /*** / FCC /NOP / FCC /SYNC/ FCC /*** / FCC /*** / FCC /BRA / FCC /BSR / FCC /*** / FCC /DAA / FCC /ORCC/ FCC /*** / FCC /ANDC/ FCC /SEX / FCC /EXG / FCC /TFR / FCC /BRA / FCC /BRN / FCC /BHI / FCC /BLS / FCC /BHS / FCC /BLO / FCC /BNE / FCC /BEQ / FCC /BVC / FCC /BVS / FCC /BPL / FCC /BMI / FCC /BGE / FCC /BLT / FCC /BGT / FCC /BLE / FCC /LEAX/ FCC /LEAY/ FCC /LEAS/ FCC /LEAU/ FCC /PSHS/ FCC /PULS/ FCC /PSHU/ FCC /PULU/ FCC /*** / FCC /RTS / FCC /ABX / FCC /RTI / FCC /CWAI/ FCC /MUL / FCC /*** / FCC /SWI / FCC /SUBA/ FCC /CMPA/ FCC /SBCA/ FCC /SUBD/ FCC /ANDA/ FCC /BITA/ FCC /LDA / FCC /STA / FCC /EORA/ FCC /ADCA/ FCC /ORA / FCC /ADDA/ FCC /CMPX/ FCC /JSR / FCC /LDX / FCC /STX / END INIT