OpenCores
URL https://opencores.org/ocsvn/System09/System09/trunk

Subversion Repositories System09

[/] [System09/] [tags/] [V10/] [sw/] [sbug_src.lst] - Diff between revs 3 and 66

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 3 Rev 66
0001                         * NAM SBUG18 MP-09 MONITOR
0001                         * NAM SBUG18 MP-09 MONITOR
0002                          OPT l
0002                          OPT l
sbug_src.txt                                   page   2
sbug_src.txt                                   page   2
0004                         *
0004                         *
0005                         * MONITOR PROGRAM FOR THE SOUTHWEST TECHNICAL
0005                         * MONITOR PROGRAM FOR THE SOUTHWEST TECHNICAL
0006                         * PRODUCTS MP-09 CPU BOARD AS COMMENTED BY....
0006                         * PRODUCTS MP-09 CPU BOARD AS COMMENTED BY....
0007                         *
0007                         *
0008                         * ALLEN CLARK            WALLACE WATSON
0008                         * ALLEN CLARK            WALLACE WATSON
0009                         * 2502 REGAL OAKS LANE   4815 EAST 97th AVE.
0009                         * 2502 REGAL OAKS LANE   4815 EAST 97th AVE.
0010                         * LUTZ, FLA. 33549       TEMPLE TERRACE, FLA. 33617
0010                         * LUTZ, FLA. 33549       TEMPLE TERRACE, FLA. 33617
0011                         * PH. 813-977-0347       PH. 813-985-1359
0011                         * PH. 813-977-0347       PH. 813-985-1359
0012                         *
0012                         *
0013                         * MODIFIED TO SBUG09 VER 1.8 BY:  RANDY JARRETT
0013                         * MODIFIED TO SBUG09 VER 1.8 BY:  RANDY JARRETT
0014                         *                                 2561 NANTUCKET DR APT. E
0014                         *                                 2561 NANTUCKET DR APT. E
0015                         *                                 ATLANTA, GA  30345
0015                         *                                 ATLANTA, GA  30345
0016                         *                                 PH. 404-320-1043
0016                         *                                 PH. 404-320-1043
0017                         *
0017                         *
0018                         *
0018                         *
0019                         *       *** COMMANDS ***
0019                         *       *** COMMANDS ***
0020                         *
0020                         *
0021                         * CONTROL A   = ALTER THE "A" ACCUMULATOR
0021                         * CONTROL A   = ALTER THE "A" ACCUMULATOR
0022                         * CONTROL B   = ALTER THE "B" ACCUMULATOR
0022                         * CONTROL B   = ALTER THE "B" ACCUMULATOR
0023                         * CONTROL C   = ALTER THE CONDITION CODE REGISTER
0023                         * CONTROL C   = ALTER THE CONDITION CODE REGISTER
0024                         * CONTROL D   = ALTER THE DIRECT PAGE REGISTER
0024                         * CONTROL D   = ALTER THE DIRECT PAGE REGISTER
0025                         * CONTROL P   = ALTER THE PROGRAM COUNTER
0025                         * CONTROL P   = ALTER THE PROGRAM COUNTER
0026                         * CONTROL U   = ALTER USER STACK POINTER
0026                         * CONTROL U   = ALTER USER STACK POINTER
0027                         * CONTROL X   = ALTER "X" INDEX REGISTER
0027                         * CONTROL X   = ALTER "X" INDEX REGISTER
0028                         * CONTROL Y   = ALTER "Y" INDEX REGISTER
0028                         * CONTROL Y   = ALTER "Y" INDEX REGISTER
0029                         * B hhhh      = SET BREAKPOINT AT LOCATION $hhhh
0029                         * B hhhh      = SET BREAKPOINT AT LOCATION $hhhh
0030                         * D           = BOOT A SWTPC 8 INCH FLOPPY SYSTEM
0030                         * D           = BOOT A SWTPC 8 INCH FLOPPY SYSTEM
0031                         * U           = BOOT A SWTPC 5 INCH FLOPPY SYSTEM
0031                         * U           = BOOT A SWTPC 5 INCH FLOPPY SYSTEM
0032                         * E ssss-eeee = EXAMINE MEMORY FROM STARTING ADDRESS ssss
0032                         * E ssss-eeee = EXAMINE MEMORY FROM STARTING ADDRESS ssss
0033                         *              -TO ENDING ADDRESS eeee.
0033                         *              -TO ENDING ADDRESS eeee.
0034                         * G           = CONTINUE EXECUTION FROM BREAKPOINT OR SWI
0034                         * G           = CONTINUE EXECUTION FROM BREAKPOINT OR SWI
0035                         * L           = LOAD TAPE
0035                         * L           = LOAD TAPE
0036                         * M hhhh      = EXAMINE AND CHANGE MEMORY LOCATION hhhh
0036                         * M hhhh      = EXAMINE AND CHANGE MEMORY LOCATION hhhh
0037                         * P ssss-eeee = PUNCH TAPE, START ssss TO END eeee ADDR.
0037                         * P ssss-eeee = PUNCH TAPE, START ssss TO END eeee ADDR.
0038                         * Q ssss-eeee = TEST MEMORY FROM ssss TO eeee
0038                         * Q ssss-eeee = TEST MEMORY FROM ssss TO eeee
0039                         * R           = DISPLAY REGISTER CONTENTS
0039                         * R           = DISPLAY REGISTER CONTENTS
0040                         * S           = DISPLAY STACK FROM ssss TO $DFC0
0040                         * S           = DISPLAY STACK FROM ssss TO $DFC0
0041                         * X           = REMOVE ALL BREAKPOINTS
0041                         * X           = REMOVE ALL BREAKPOINTS
0042                         *
0042                         *
0043                         *
0043                         *
0044 55aa                    TSTPAT EQU $55AA  TEST PATTERN
0044 55aa                    TSTPAT EQU $55AA  TEST PATTERN
0045                         *
0045                         *
0046                         *
0046                         *
0047                         *
0047                         *
0048 dfc0                           ORG $DFC0
0048 dfc0                           ORG $DFC0
0049 dfc0                    STACK  RMB 2  TOP OF INTERNAL STACK / USER VECTOR
0049 dfc0                    STACK  RMB 2  TOP OF INTERNAL STACK / USER VECTOR
0050 dfc2                    SWI3   RMB 2  SOFTWARE INTERRUPT VECTOR #3
0050 dfc2                    SWI3   RMB 2  SOFTWARE INTERRUPT VECTOR #3
0051 dfc4                    SWI2   RMB 2  SOFTWARE INTERRUPT VECTOR #2
0051 dfc4                    SWI2   RMB 2  SOFTWARE INTERRUPT VECTOR #2
0052 dfc6                    FIRQ   RMB 2  FAST INTERRUPT VECTOR
0052 dfc6                    FIRQ   RMB 2  FAST INTERRUPT VECTOR
0053 dfc8                    IRQ    RMB 2  INTERRUPT VECTOR
0053 dfc8                    IRQ    RMB 2  INTERRUPT VECTOR
0054 dfca                    SWI    RMB 2  SOFTWARE INTERRUPT VECTOR
0054 dfca                    SWI    RMB 2  SOFTWARE INTERRUPT VECTOR
0055 dfcc                    SVCVO  RMB 2  SUPERVISOR CALL VECTOR ORGIN
0055 dfcc                    SVCVO  RMB 2  SUPERVISOR CALL VECTOR ORGIN
0056 dfce                    SVCVL  RMB 2  SUPERVISOR CALL VECTOR LIMIT
0056 dfce                    SVCVL  RMB 2  SUPERVISOR CALL VECTOR LIMIT
0057 dfd0                    LRARAM RMB 16 LRA ADDRESSES
0057 dfd0                    LRARAM RMB 16 LRA ADDRESSES
0058 dfe0                    CPORT  RMB 2  RE-VECTORABLE CONTROL PORT
0058 dfe0                    CPORT  RMB 2  RE-VECTORABLE CONTROL PORT
0059 dfe2                    ECHO   RMB 1  ECHO FLAG
0059 dfe2                    ECHO   RMB 1  ECHO FLAG
0060 dfe3                    BPTBL  RMB 24 BREAKPOINT TABLE BASE ADDR
0060 dfe3                    BPTBL  RMB 24 BREAKPOINT TABLE BASE ADDR
0061 e004                    ACIAS  EQU $E004  CONTROL PORT
0061 e004                    ACIAS  EQU $E004  CONTROL PORT
0062 e018                    Comreg EQU $E018  COMMAND REGISTER
0062 e018                    Comreg EQU $E018  COMMAND REGISTER
0063 e014                    Drvreg EQU $E014  DRIVE REGISTER
0063 e014                    Drvreg EQU $E014  DRIVE REGISTER
0064 e01a                    Secreg EQU $E01A  SECTOR REGISTER
0064 e01a                    Secreg EQU $E01A  SECTOR REGISTER
0065 e01b                    Datreg EQU $E01B  DATA REGISTER
0065 e01b                    Datreg EQU $E01B  DATA REGISTER
0066                         *
0066                         *
0067 f000                    ADDREG EQU $F000  ADDRESS REGISTER
0067 f000                    ADDREG EQU $F000  ADDRESS REGISTER
0068 f002                    CNTREG EQU $F002  COUNT REGISTER
0068 f002                    CNTREG EQU $F002  COUNT REGISTER
0069 f010                    CCREG  EQU $F010  CHANNEL CONTROL REGISTER
0069 f010                    CCREG  EQU $F010  CHANNEL CONTROL REGISTER
0070 f014                    PRIREG EQU $F014  DMA PRIORITY REGISTER
0070 f014                    PRIREG EQU $F014  DMA PRIORITY REGISTER
0071 f015                    AAAREG EQU $F015  ???
0071 f015                    AAAREG EQU $F015  ???
0072 f016                    BBBREG EQU $F016  ???
0072 f016                    BBBREG EQU $F016  ???
0073 f020                    COMREG EQU $F020  1791 COMMAND REGISTER
0073 f020                    COMREG EQU $F020  1791 COMMAND REGISTER
0074 f022                    SECREG EQU $F022  SECTOR REGISTER
0074 f022                    SECREG EQU $F022  SECTOR REGISTER
0075 f024                    DRVREG EQU $F024  DRIVE SELECT LATCH
0075 f024                    DRVREG EQU $F024  DRIVE SELECT LATCH
0076 f040                    CCCREG EQU $F040  ???
0076 f040                    CCCREG EQU $F040  ???
0077                         *
0077                         *
0078 fff0                    IC11   EQU $FFF0  DAT RAM CHIP
0078 fff0                    IC11   EQU $FFF0  DAT RAM CHIP
0079                         *
0079                         *
0080 f800                     ORG $F800
0080 f800                     ORG $F800
0081 f800 f8 14               FDB MONITOR
0081 f800 f8 14               FDB MONITOR
0082 f802 f8 61               FDB NEXTCMD
0082 f802 f8 61               FDB NEXTCMD
0083 f804 fd cf               FDB INCH
0083 f804 fd cf               FDB INCH
0084 f806 fd c9               FDB INCHE
0084 f806 fd c9               FDB INCHE
0085 f808 fd df               FDB INCHEK
0085 f808 fd df               FDB INCHEK
0086 f80a fd ee               FDB OUTCH
0086 f80a fd ee               FDB OUTCH
0087 f80c fd bd               FDB PDATA
0087 f80c fd bd               FDB PDATA
0088 f80e fd b1               FDB PCRLF
0088 f80e fd b1               FDB PCRLF
0089 f810 fd ad               FDB PSTRNG
0089 f810 fd ad               FDB PSTRNG
0090 f812 fb 81               FDB LRA
0090 f812 fb 81               FDB LRA
0091                         *
0091                         *
0092                         * MONITOR
0092                         * MONITOR
0093                         *
0093                         *
0094                         * VECTOR ADDRESS STRING IS.....
0094                         * VECTOR ADDRESS STRING IS.....
0095                         * $F8A1-$F8A1-$F8A1-$F8A1-$F8A1-$FAB0-$FFFF-$FFFF
0095                         * $F8A1-$F8A1-$F8A1-$F8A1-$F8A1-$FAB0-$FFFF-$FFFF
0096                         *
0096                         *
0097 f814 8e fe 4f           MONITOR LDX #RAMVEC POINT TO VECTOR ADDR. STRING
0097 f814 8e fe 4f           MONITOR LDX #RAMVEC POINT TO VECTOR ADDR. STRING
0098 f817 10 8e df c0         LDY  #STACK POINT TO RAM VECTOR LOCATION
0098 f817 10 8e df c0         LDY  #STACK POINT TO RAM VECTOR LOCATION
0099 f81b c6 10               LDB  #$10 BYTES TO MOVE = 16
0099 f81b c6 10               LDB  #$10 BYTES TO MOVE = 16
0100 f81d a6 80              LOOPA LDA  ,X+ GET VECTOR BYTE
0100 f81d a6 80              LOOPA LDA  ,X+ GET VECTOR BYTE
0101 f81f a7 a0               STA  ,Y+   PUT VECTORS IN RAM / $DFC0-$DFCF
0101 f81f a7 a0               STA  ,Y+   PUT VECTORS IN RAM / $DFC0-$DFCF
0102 f821 5a                  DECB SUBTRACT 1 FROM NUMBER OF BYTES TO MOVE
0102 f821 5a                  DECB SUBTRACT 1 FROM NUMBER OF BYTES TO MOVE
0103 f822 26 f9               BNE LOOPA CONTINUE UNTIL ALL VECTORS MOVED
0103 f822 26 f9               BNE LOOPA CONTINUE UNTIL ALL VECTORS MOVED
0104                         *
0104                         *
0105                         * CONTENTS     FROM         TO      FUNCTION
0105                         * CONTENTS     FROM         TO      FUNCTION
0106                         *  $F8A1       $FE40      $DFC0     USER-V
0106                         *  $F8A1       $FE40      $DFC0     USER-V
0107                         *  $F8A1       $FE42      $DFC2     SWI3-V
0107                         *  $F8A1       $FE42      $DFC2     SWI3-V
0108                         *  $F8A1       $FE44      $DFC4     SWI2-V
0108                         *  $F8A1       $FE44      $DFC4     SWI2-V
0109                         *  $F8A1       $FE46      $DFC6     FIRQ-V
0109                         *  $F8A1       $FE46      $DFC6     FIRQ-V
0110                         *  $F8A1       $FE48      $DFC8     IRQ-V
0110                         *  $F8A1       $FE48      $DFC8     IRQ-V
0111                         *  $FAB0       $FE4A      $DFCA     SWI-V
0111                         *  $FAB0       $FE4A      $DFCA     SWI-V
0112                         *  $FFFF       $FE4C      $DFCC     SVC-VO
0112                         *  $FFFF       $FE4C      $DFCC     SVC-VO
0113                         *  $FFFF       $FE4E      $DFCE     SVC-VL
0113                         *  $FFFF       $FE4E      $DFCE     SVC-VL
0114                         *
0114                         *
0115 f824 8e e0 04            LDX  #ACIAS  GET CONTROL PORT ADDR.
0115 f824 8e e0 04            LDX  #ACIAS  GET CONTROL PORT ADDR.
0116 f827 bf df e0            STX  CPORT   STORE ADDR. IN RAM
0116 f827 bf df e0            STX  CPORT   STORE ADDR. IN RAM
0117 f82a 17 02 7a            LBSR XBKPNT  CLEAR OUTSTANDING BREAKPOINTS
0117 f82a 17 02 7a            LBSR XBKPNT  CLEAR OUTSTANDING BREAKPOINTS
0118 f82d c6 0c               LDB  #12     CLEAR 12 BYTES ON STACK
0118 f82d c6 0c               LDB  #12     CLEAR 12 BYTES ON STACK
0119 f82f 6f e2              CLRSTK CLR  ,-S
0119 f82f 6f e2              CLRSTK CLR  ,-S
0120 f831 5a                  DECB
0120 f831 5a                  DECB
0121 f832 26 fb               BNE  CLRSTK
0121 f832 26 fb               BNE  CLRSTK
0122 f834 30 8c dd            LEAX MONITOR,PCR  SET PC TO SBUG-E ENTRY
0122 f834 30 8c dd            LEAX MONITOR,PCR  SET PC TO SBUG-E ENTRY
0123 f837 af 6a               STX  10,S ON STACK
0123 f837 af 6a               STX  10,S ON STACK
0124 f839 86 d0               LDA  #$D0  PRESET CONDITION CODES ON STACK
0124 f839 86 d0               LDA  #$D0  PRESET CONDITION CODES ON STACK
0125 f83b a7 e4               STA  ,S
0125 f83b a7 e4               STA  ,S
0126 f83d 1f 43               TFR  S,U
0126 f83d 1f 43               TFR  S,U
0127 f83f 17 05 be            LBSR ACINIZ  INITIALIZE CONTROL PORT
0127 f83f 17 05 be            LBSR ACINIZ  INITIALIZE CONTROL PORT
0128 f842 8e fe 5f            LDX  #MSG1  POINT TO 'SBUG 1.8' MESSAGE
0128 f842 8e fe 5f            LDX  #MSG1  POINT TO 'SBUG 1.8' MESSAGE
0129 f845 17 05 75            LBSR PDATA  PRINT MSG
0129 f845 17 05 75            LBSR PDATA  PRINT MSG
0130 f848 8e df d0            LDX  #LRARAM  POINT TO LRA RAM STORAGE AREA
0130 f848 8e df d0            LDX  #LRARAM  POINT TO LRA RAM STORAGE AREA
0131 f84b 4f                  CLRA START TOTAL AT ZERO
0131 f84b 4f                  CLRA START TOTAL AT ZERO
0132 f84c c6 0d               LDB  #13  TOTAL UP ALL ACTIVE RAM MEMORY
0132 f84c c6 0d               LDB  #13  TOTAL UP ALL ACTIVE RAM MEMORY
0133 f84e 6d 85              FNDREL TST  B,X TEST FOR RAM AT NEXT LOC.
0133 f84e 6d 85              FNDREL TST  B,X TEST FOR RAM AT NEXT LOC.
0134 f850 27 03               BEQ  RELPAS IF NO RAM GO TO NEXT LOC.
0134 f850 27 03               BEQ  RELPAS IF NO RAM GO TO NEXT LOC.
0135 f852 8b 04               ADDA #4 ELSE ADD 4K TO TOTAL
0135 f852 8b 04               ADDA #4 ELSE ADD 4K TO TOTAL
0136 f854 19                  DAA  ADJ. TOTAL FOR DECIMAL
0136 f854 19                  DAA  ADJ. TOTAL FOR DECIMAL
0137 f855 5a                 RELPAS DECB SUB. 1 FROM LOCS. TO TEST
0137 f855 5a                 RELPAS DECB SUB. 1 FROM LOCS. TO TEST
0138 f856 2a f6               BPL  FNDREL  PRINT TOTAL OF RAM
0138 f856 2a f6               BPL  FNDREL  PRINT TOTAL OF RAM
0139 f858 17 05 26            LBSR OUT2H OUTPUT HEX BYTE AS ASCII
0139 f858 17 05 26            LBSR OUT2H OUTPUT HEX BYTE AS ASCII
0140 f85b 8e fe 74            LDX  #MSG2  POINT TO MSG 'K' CR/LF + 3 NULS
0140 f85b 8e fe 74            LDX  #MSG2  POINT TO MSG 'K' CR/LF + 3 NULS
0141 f85e 17 05 5c            LBSR PDATA  PRINT MSG
0141 f85e 17 05 5c            LBSR PDATA  PRINT MSG
0142                         *
0142                         *
0143                         ***** NEXTCMD *****
0143                         ***** NEXTCMD *****
0144                         *
0144                         *
0145 f861 8e fe 7b           NEXTCMD LDX  #MSG3   POINT TO MSG ">"
0145 f861 8e fe 7b           NEXTCMD LDX  #MSG3   POINT TO MSG ">"
0146 f864 17 05 46            LBSR PSTRNG PRINT MSG
0146 f864 17 05 46            LBSR PSTRNG PRINT MSG
0147 f867 17 05 65            LBSR INCH  GET ONE CHAR. FROM TERMINAL
0147 f867 17 05 65            LBSR INCH  GET ONE CHAR. FROM TERMINAL
0148 f86a 84 7f               ANDA #$7F STRIP PARITY FROM CHAR.
0148 f86a 84 7f               ANDA #$7F STRIP PARITY FROM CHAR.
0149 f86c 81 0d               CMPA #$0D IS IT CARRIAGE RETURN ?
0149 f86c 81 0d               CMPA #$0D IS IT CARRIAGE RETURN ?
0150 f86e 27 f1               BEQ  NEXTCMD IF CR THEN GET ANOTHER CHAR.
0150 f86e 27 f1               BEQ  NEXTCMD IF CR THEN GET ANOTHER CHAR.
0151 f870 1f 89               TFR  A,B PUT CHAR. IN "B" ACCUM.
0151 f870 1f 89               TFR  A,B PUT CHAR. IN "B" ACCUM.
0152 f872 81 20               CMPA #$20 IS IT CONTROL OR DATA CHAR ?
0152 f872 81 20               CMPA #$20 IS IT CONTROL OR DATA CHAR ?
0153 f874 2c 09               BGE  PRTCMD IF CMD CHAR IS DATA, PRNT IT
0153 f874 2c 09               BGE  PRTCMD IF CMD CHAR IS DATA, PRNT IT
0154 f876 86 5e               LDA  #'^ ELSE CNTRL CHAR CMD SO...
0154 f876 86 5e               LDA  #'^ ELSE CNTRL CHAR CMD SO...
0155 f878 17 05 73            LBSR OUTCH PRINT "^"
0155 f878 17 05 73            LBSR OUTCH PRINT "^"
0156 f87b 1f 98               TFR  B,A RECALL CNTRL CMD CHAR
0156 f87b 1f 98               TFR  B,A RECALL CNTRL CMD CHAR
0157 f87d 8b 40               ADDA #$40 CONVERT IT TO ASCII LETTER
0157 f87d 8b 40               ADDA #$40 CONVERT IT TO ASCII LETTER
0158 f87f 17 05 6c           PRTCMD LBSR OUTCH PRNT CMD CHAR
0158 f87f 17 05 6c           PRTCMD LBSR OUTCH PRNT CMD CHAR
0159 f882 17 05 67            LBSR OUT1S PRNT SPACE
0159 f882 17 05 67            LBSR OUT1S PRNT SPACE
0160 f885 c1 60               CMPB #$60
0160 f885 c1 60               CMPB #$60
0161 f887 2f 02               BLE NXTCH0
0161 f887 2f 02               BLE NXTCH0
0162 f889 c0 20               SUBB #$20
0162 f889 c0 20               SUBB #$20
0163                         *
0163                         *
0164                         *
0164                         *
0165                         ***** DO TABLE LOOKUP *****
0165                         ***** DO TABLE LOOKUP *****
0166                         *   FOR COMMAND FUNCTIONS
0166                         *   FOR COMMAND FUNCTIONS
0167                         *
0167                         *
0168                         *
0168                         *
0169 f88b 8e fe 13           NXTCH0 LDX #JMPTAB POINT TO JUMP TABLE
0169 f88b 8e fe 13           NXTCH0 LDX #JMPTAB POINT TO JUMP TABLE
0170 f88e e1 80              NXTCHR CMPB ,X+ DOES COMMAND MATCH TABLE ENTRY ?
0170 f88e e1 80              NXTCHR CMPB ,X+ DOES COMMAND MATCH TABLE ENTRY ?
0171 f890 27 0f               BEQ  JMPCMD BRANCH IF MATCH FOUND
0171 f890 27 0f               BEQ  JMPCMD BRANCH IF MATCH FOUND
0172 f892 30 02               LEAX 2,X POINT TO NEXT ENTRY IN TABLE
0172 f892 30 02               LEAX 2,X POINT TO NEXT ENTRY IN TABLE
0173 f894 8c fe 4f            CMPX #TABEND REACHED END OF TABLE YET ?
0173 f894 8c fe 4f            CMPX #TABEND REACHED END OF TABLE YET ?
0174 f897 26 f5               BNE  NXTCHR IF NOT END, CHECK NEXT ENTRY
0174 f897 26 f5               BNE  NXTCHR IF NOT END, CHECK NEXT ENTRY
0175 f899 8e fe 7d            LDX  #MSG4  POINT TO MSG "WHAT?"
0175 f899 8e fe 7d            LDX  #MSG4  POINT TO MSG "WHAT?"
0176 f89c 17 05 1e            LBSR PDATA  PRINT MSG
0176 f89c 17 05 1e            LBSR PDATA  PRINT MSG
0177 f89f 20 c0               BRA  NEXTCMD IF NO MATCH, PRMPT FOR NEW CMD
0177 f89f 20 c0               BRA  NEXTCMD IF NO MATCH, PRMPT FOR NEW CMD
0178 f8a1 ad 94              JMPCMD JSR  [,X] JUMP TO COMMAND ROUTINE
0178 f8a1 ad 94              JMPCMD JSR  [,X] JUMP TO COMMAND ROUTINE
0179 f8a3 20 bc               BRA  NEXTCMD PROMPT FOR NEW COMMAND
0179 f8a3 20 bc               BRA  NEXTCMD PROMPT FOR NEW COMMAND
0180                         *
0180                         *
0181                         * "G" GO OR CONTINUE
0181                         * "G" GO OR CONTINUE
0182                         *
0182                         *
0183 f8a5 1f 34              GO TFR  U,S
0183 f8a5 1f 34              GO TFR  U,S
0184 f8a7 3b                 RTI RTI
0184 f8a7 3b                 RTI RTI
0185                         *
0185                         *
0186                         * "R" DISPLAY REGISTERS
0186                         * "R" DISPLAY REGISTERS
0187                         *
0187                         *
0188 f8a8 8e fe 83           REGSTR LDX  #MSG5 POINT TO MSG " - "
0188 f8a8 8e fe 83           REGSTR LDX  #MSG5 POINT TO MSG " - "
0189 f8ab 17 04 ff            LBSR PSTRNG PRINT MSG
0189 f8ab 17 04 ff            LBSR PSTRNG PRINT MSG
0190 f8ae 17 04 11            LBSR PRTSP $FCBF
0190 f8ae 17 04 11            LBSR PRTSP $FCBF
0191 f8b1 17 04 19            LBSR PRTUS $FCCA
0191 f8b1 17 04 19            LBSR PRTUS $FCCA
0192 f8b4 17 04 21            LBSR PRTDP $FCD5
0192 f8b4 17 04 21            LBSR PRTDP $FCD5
0193 f8b7 17 04 29            LBSR PRTIX $FCE0
0193 f8b7 17 04 29            LBSR PRTIX $FCE0
0194 f8ba 17 04 31            LBSR PRTIY $FCEB
0194 f8ba 17 04 31            LBSR PRTIY $FCEB
0195 f8bd 8e fe 83            LDX  #MSG5 POINT TO MSG " - "
0195 f8bd 8e fe 83            LDX  #MSG5 POINT TO MSG " - "
0196 f8c0 17 04 ea            LBSR PSTRNG PRINT MSG
0196 f8c0 17 04 ea            LBSR PSTRNG PRINT MSG
0197 f8c3 17 04 33            LBSR PRTPC $FCF5
0197 f8c3 17 04 33            LBSR PRTPC $FCF5
0198 f8c6 17 04 3a            LBSR PRTA $FCFF
0198 f8c6 17 04 3a            LBSR PRTA $FCFF
0199 f8c9 17 04 41            LBSR PRTB $FD09
0199 f8c9 17 04 41            LBSR PRTB $FD09
0200 f8cc 16 04 48            LBRA PRTCC $FD13
0200 f8cc 16 04 48            LBRA PRTCC $FD13
0201                         *
0201                         *
0202                         *
0202                         *
0203                         * ALTER "PC" PROGRAM COUNTER
0203                         * ALTER "PC" PROGRAM COUNTER
0204                         *
0204                         *
0205                         *
0205                         *
0206 f8cf 17 04 27           ALTRPC LBSR PRTPC $FCF5 PRINT MSG " PC = "
0206 f8cf 17 04 27           ALTRPC LBSR PRTPC $FCF5 PRINT MSG " PC = "
0207 f8d2 17 05 17            LBSR OUT1S OUTPUT SPACE
0207 f8d2 17 05 17            LBSR OUT1S OUTPUT SPACE
0208 f8d5 17 04 57            LBSR IN1ADR GET NEW CONTENTS FOR "PC"
0208 f8d5 17 04 57            LBSR IN1ADR GET NEW CONTENTS FOR "PC"
0209 f8d8 29 02               BVS  ALTPCD EXIT IF INVALID HEX
0209 f8d8 29 02               BVS  ALTPCD EXIT IF INVALID HEX
0210 f8da af 4a               STX  10,U POKE IN NEW CONTENTS
0210 f8da af 4a               STX  10,U POKE IN NEW CONTENTS
0211 f8dc 39                 ALTPCD RTS ;
0211 f8dc 39                 ALTPCD RTS ;
0212                         *
0212                         *
0213                         *
0213                         *
0214                         * ALTER "U" USER STACK POINTER
0214                         * ALTER "U" USER STACK POINTER
0215                         *
0215                         *
0216                         *
0216                         *
0217 f8dd 17 03 ed           ALTRU LBSR PRTUS $FCCA PRINT MSG " US = "
0217 f8dd 17 03 ed           ALTRU LBSR PRTUS $FCCA PRINT MSG " US = "
0218 f8e0 17 05 09            LBSR OUT1S OUTPUT SPACE
0218 f8e0 17 05 09            LBSR OUT1S OUTPUT SPACE
0219 f8e3 17 04 49            LBSR IN1ADR
0219 f8e3 17 04 49            LBSR IN1ADR
0220 f8e6 29 02               BVS  ALTUD
0220 f8e6 29 02               BVS  ALTUD
0221 f8e8 af 48               STX  8,U
0221 f8e8 af 48               STX  8,U
0222 f8ea 39                 ALTUD RTS ;
0222 f8ea 39                 ALTUD RTS ;
0223                         *
0223                         *
0224                         *
0224                         *
0225                         * ALTER "Y" INDEX REGISTER
0225                         * ALTER "Y" INDEX REGISTER
0226                         *
0226                         *
0227                         *
0227                         *
0228 f8eb 17 04 00           ALTRY LBSR PRTIY PRINT MSG " IY = "
0228 f8eb 17 04 00           ALTRY LBSR PRTIY PRINT MSG " IY = "
0229 f8ee 17 04 fb            LBSR OUT1S OUTPUT SPACE
0229 f8ee 17 04 fb            LBSR OUT1S OUTPUT SPACE
0230 f8f1 17 04 3b            LBSR IN1ADR
0230 f8f1 17 04 3b            LBSR IN1ADR
0231 f8f4 29 02               BVS  ALTYD
0231 f8f4 29 02               BVS  ALTYD
0232 f8f6 af 46               STX  6,U   $F8F0
0232 f8f6 af 46               STX  6,U   $F8F0
0233 f8f8 39                 ALTYD RTS ;
0233 f8f8 39                 ALTYD RTS ;
0234                         *
0234                         *
0235                         *
0235                         *
0236                         * ALTER "X" INDEX REGISTER
0236                         * ALTER "X" INDEX REGISTER
0237                         *
0237                         *
0238                         *
0238                         *
0239 f8f9 17 03 e7           ALTRX LBSR PRTIX $FCE0 PRINT MSG " IX = "
0239 f8f9 17 03 e7           ALTRX LBSR PRTIX $FCE0 PRINT MSG " IX = "
0240 f8fc 17 04 ed            LBSR OUT1S OUTPUT SPACE
0240 f8fc 17 04 ed            LBSR OUT1S OUTPUT SPACE
0241 f8ff 17 04 2d            LBSR IN1ADR
0241 f8ff 17 04 2d            LBSR IN1ADR
0242 f902 29 02               BVS  ALTXD
0242 f902 29 02               BVS  ALTXD
0243 f904 af 44               STX  4,U
0243 f904 af 44               STX  4,U
0244 f906 39                 ALTXD RTS ;
0244 f906 39                 ALTXD RTS ;
0245                         *
0245                         *
0246                         *
0246                         *
0247                         * ALTER "DP" DIRECT PAGE REGISTER
0247                         * ALTER "DP" DIRECT PAGE REGISTER
0248                         *
0248                         *
0249                         *
0249                         *
0250 f907 17 03 ce           ALTRDP LBSR PRTDP $FCD5 PRINT MSG " DP = "
0250 f907 17 03 ce           ALTRDP LBSR PRTDP $FCD5 PRINT MSG " DP = "
0251 f90a 17 04 df            LBSR OUT1S OUTPUT SPACE
0251 f90a 17 04 df            LBSR OUT1S OUTPUT SPACE
0252 f90d 17 04 30            LBSR BYTE INPUT BYTE (2 HEX CHAR)
0252 f90d 17 04 30            LBSR BYTE INPUT BYTE (2 HEX CHAR)
0253 f910 29 02               BVS  ALTDPD
0253 f910 29 02               BVS  ALTDPD
0254 f912 a7 43               STA  3,U
0254 f912 a7 43               STA  3,U
0255 f914 39                 ALTDPD RTS ;
0255 f914 39                 ALTDPD RTS ;
0256                         *
0256                         *
0257                         *
0257                         *
0258                         * ALTER "B" ACCUMULATOR
0258                         * ALTER "B" ACCUMULATOR
0259                         *
0259                         *
0260                         *
0260                         *
0261 f915 17 03 f5           ALTRB LBSR PRTB $FD09 PRINT MSG " B = "
0261 f915 17 03 f5           ALTRB LBSR PRTB $FD09 PRINT MSG " B = "
0262 f918 17 04 d1            LBSR OUT1S OUTPUT SPACE
0262 f918 17 04 d1            LBSR OUT1S OUTPUT SPACE
0263 f91b 17 04 22            LBSR BYTE INPUT BYTE (2 HEX CHAR)
0263 f91b 17 04 22            LBSR BYTE INPUT BYTE (2 HEX CHAR)
0264 f91e 29 02               BVS  ALTBD
0264 f91e 29 02               BVS  ALTBD
0265 f920 a7 42               STA  2,U
0265 f920 a7 42               STA  2,U
0266 f922 39                 ALTBD RTS       $F91C
0266 f922 39                 ALTBD RTS       $F91C
0267                         *
0267                         *
0268                         *
0268                         *
0269                         * ALTER "A" ACCUMULATOR
0269                         * ALTER "A" ACCUMULATOR
0270                         *
0270                         *
0271                         *
0271                         *
0272 f923 17 03 dd           ALTRA LBSR PRTA $FCFF RINT MSG " A = "
0272 f923 17 03 dd           ALTRA LBSR PRTA $FCFF RINT MSG " A = "
0273 f926 17 04 c3            LBSR OUT1S OUTPUT SPACE
0273 f926 17 04 c3            LBSR OUT1S OUTPUT SPACE
0274 f929 17 04 14            LBSR BYTE INPUT BYTE (2 HEX CHAR)
0274 f929 17 04 14            LBSR BYTE INPUT BYTE (2 HEX CHAR)
0275 f92c 29 02               BVS  ALTAD
0275 f92c 29 02               BVS  ALTAD
0276 f92e a7 41               STA  1,U
0276 f92e a7 41               STA  1,U
0277 f930 39                 ALTAD RTS ;
0277 f930 39                 ALTAD RTS ;
0278                         *
0278                         *
0279                         *
0279                         *
0280                         * ALTER "CC" REGISTER
0280                         * ALTER "CC" REGISTER
0281                         *
0281                         *
0282                         *
0282                         *
0283 f931 17 03 e3           ALTRCC LBSR PRTCC $FD13 PRINT MSG " CC: "
0283 f931 17 03 e3           ALTRCC LBSR PRTCC $FD13 PRINT MSG " CC: "
0284 f934 17 04 b5            LBSR OUT1S OUTPUT SPACE
0284 f934 17 04 b5            LBSR OUT1S OUTPUT SPACE
0285 f937 17 04 06            LBSR BYTE INPUT BYTE (2 HEX CHAR)
0285 f937 17 04 06            LBSR BYTE INPUT BYTE (2 HEX CHAR)
0286 f93a 29 04               BVS  ALTCCD
0286 f93a 29 04               BVS  ALTCCD
0287 f93c 8a 80               ORA  #$80 SETS "E" FLAG IN PRINT LIST
0287 f93c 8a 80               ORA  #$80 SETS "E" FLAG IN PRINT LIST
0288 f93e a7 c4               STA  ,U
0288 f93e a7 c4               STA  ,U
0289 f940 39                 ALTCCD RTS ;
0289 f940 39                 ALTCCD RTS ;
0290                         *
0290                         *
0291                         ***** "M" MEMORY EXAMINE AND CHANGE *****
0291                         ***** "M" MEMORY EXAMINE AND CHANGE *****
0292                         *
0292                         *
0293 f941 17 03 eb           MEMCHG LBSR IN1ADR  INPUT ADDRESS
0293 f941 17 03 eb           MEMCHG LBSR IN1ADR  INPUT ADDRESS
0294 f944 29 2d               BVS  CHRTN  IF NOT HEX, RETURN
0294 f944 29 2d               BVS  CHRTN  IF NOT HEX, RETURN
0295 f946 1f 12               TFR  X,Y SAVE ADDR IN "Y"
0295 f946 1f 12               TFR  X,Y SAVE ADDR IN "Y"
0296 f948 8e fe 83           MEMC2 LDX  #MSG5 POINT TO MSG " - "
0296 f948 8e fe 83           MEMC2 LDX  #MSG5 POINT TO MSG " - "
0297 f94b 17 04 5f            LBSR PSTRNG PRINT MSG
0297 f94b 17 04 5f            LBSR PSTRNG PRINT MSG
0298 f94e 1f 21               TFR  Y,X FETCH ADDRESS
0298 f94e 1f 21               TFR  Y,X FETCH ADDRESS
0299 f950 17 04 26            LBSR OUT4H PRINT ADDR IN HEX
0299 f950 17 04 26            LBSR OUT4H PRINT ADDR IN HEX
0300 f953 17 04 96            LBSR OUT1S OUTPUT SPACE
0300 f953 17 04 96            LBSR OUT1S OUTPUT SPACE
0301 f956 a6 a4               LDA  ,Y GET CONTENTS OF CURRENT ADDR.
0301 f956 a6 a4               LDA  ,Y GET CONTENTS OF CURRENT ADDR.
0302 f958 17 04 26            LBSR OUT2H OUTPUT CONTENTS IN ASCII
0302 f958 17 04 26            LBSR OUT2H OUTPUT CONTENTS IN ASCII
0303 f95b 17 04 8e            LBSR OUT1S OUTPUT SPACE
0303 f95b 17 04 8e            LBSR OUT1S OUTPUT SPACE
0304 f95e 17 03 df            LBSR BYTE LOOP WAITING FOR OPERATOR INPUT
0304 f95e 17 03 df            LBSR BYTE LOOP WAITING FOR OPERATOR INPUT
0305 f961 28 11               BVC  CHANGE IF VALID HEX GO CHANGE MEM. LOC.
0305 f961 28 11               BVC  CHANGE IF VALID HEX GO CHANGE MEM. LOC.
0306 f963 81 08               CMPA #8  IS IT A BACKSPACE (CNTRL H)?
0306 f963 81 08               CMPA #8  IS IT A BACKSPACE (CNTRL H)?
0307 f965 27 e1               BEQ  MEMC2 PROMPT OPERATOR AGAIN
0307 f965 27 e1               BEQ  MEMC2 PROMPT OPERATOR AGAIN
0308 f967 81 18               CMPA #$18  IS IT A CANCEL (CNTRL X)?
0308 f967 81 18               CMPA #$18  IS IT A CANCEL (CNTRL X)?
0309 f969 27 dd               BEQ  MEMC2 PROMPT OPERATOR AGAIN
0309 f969 27 dd               BEQ  MEMC2 PROMPT OPERATOR AGAIN
0310 f96b 81 5e               CMPA #'^  IS IT AN UP ARROW?
0310 f96b 81 5e               CMPA #'^  IS IT AN UP ARROW?
0311 f96d 27 17               BEQ  BACK  DISPLAY PREVIOUS BYTE
0311 f96d 27 17               BEQ  BACK  DISPLAY PREVIOUS BYTE
0312 f96f 81 0d               CMPA #$D  IS IT A CR?
0312 f96f 81 0d               CMPA #$D  IS IT A CR?
0313 f971 26 0f               BNE  FORWRD  DISPLAY NEXT BYTE
0313 f971 26 0f               BNE  FORWRD  DISPLAY NEXT BYTE
0314 f973 39                 CHRTN RTS  EXIT ROUTINE
0314 f973 39                 CHRTN RTS  EXIT ROUTINE
0315                         *
0315                         *
0316                         *
0316                         *
0317 f974 a7 a4              CHANGE STA ,Y  CHANGE BYTE IN MEMORY
0317 f974 a7 a4              CHANGE STA ,Y  CHANGE BYTE IN MEMORY
0318 f976 a1 a4               CMPA ,Y  DID MEMORY BYTE CHANGE?
0318 f976 a1 a4               CMPA ,Y  DID MEMORY BYTE CHANGE?
0319 f978 27 08               BEQ  FORWRD    $F972
0319 f978 27 08               BEQ  FORWRD    $F972
0320 f97a 17 04 6f            LBSR OUT1S OUTPUT SPACE
0320 f97a 17 04 6f            LBSR OUT1S OUTPUT SPACE
0321 f97d 86 3f               LDA  #'?  LOAD QUESTION MARK
0321 f97d 86 3f               LDA  #'?  LOAD QUESTION MARK
0322 f97f 17 04 6c            LBSR OUTCH  PRINT IT
0322 f97f 17 04 6c            LBSR OUTCH  PRINT IT
0323 f982 31 21              FORWRD LEAY 1,Y POINT TO NEXT HIGHER MEM LOCATION
0323 f982 31 21              FORWRD LEAY 1,Y POINT TO NEXT HIGHER MEM LOCATION
0324 f984 20 c2               BRA  MEMC2 PRINT LOCATION & CONTENTS
0324 f984 20 c2               BRA  MEMC2 PRINT LOCATION & CONTENTS
0325 f986 31 3f              BACK LEAY -1,Y POINT TO LAST MEM LOCATION
0325 f986 31 3f              BACK LEAY -1,Y POINT TO LAST MEM LOCATION
0326 f988 20 be               BRA  MEMC2 PRINT LOCATION & CONTENTS
0326 f988 20 be               BRA  MEMC2 PRINT LOCATION & CONTENTS
0327                         *
0327                         *
0328                         * "S" DISPLAY STACK
0328                         * "S" DISPLAY STACK
0329                         * HEX-ASCII DISPLAY OF CURRENT STACK CONTENTS FROM
0329                         * HEX-ASCII DISPLAY OF CURRENT STACK CONTENTS FROM
0330                         ** CURRENT STACK POINTER TO INTERNAL STACK LIMIT.
0330                         ** CURRENT STACK POINTER TO INTERNAL STACK LIMIT.
0331                         *
0331                         *
0332 f98a 17 03 35           DISSTK LBSR PRTSP PRINT CURRENT STACK POINTER
0332 f98a 17 03 35           DISSTK LBSR PRTSP PRINT CURRENT STACK POINTER
0333 f98d 1f 32               TFR  U,Y
0333 f98d 1f 32               TFR  U,Y
0334 f98f 8e df c0            LDX  #STACK LOAD INTERNAL STACK AS UPPER LIMIT
0334 f98f 8e df c0            LDX  #STACK LOAD INTERNAL STACK AS UPPER LIMIT
0335 f992 30 1f               LEAX -1,X POINT TO CURRENT STACK
0335 f992 30 1f               LEAX -1,X POINT TO CURRENT STACK
0336 f994 20 05               BRA  MDUMP1 ENTER MEMORY DUMP OF STACK CONTENTS
0336 f994 20 05               BRA  MDUMP1 ENTER MEMORY DUMP OF STACK CONTENTS
0337                         *
0337                         *
0338                         * "E" DUMP MEMORY FOR EXAMINE IN HEX AND ASCII
0338                         * "E" DUMP MEMORY FOR EXAMINE IN HEX AND ASCII
0339                         * AFTER CALLING 'IN2ADR' LOWER ADDRESS IN Y-REG.
0339                         * AFTER CALLING 'IN2ADR' LOWER ADDRESS IN Y-REG.
0340                         *                        UPPER ADDRESS IN X-REG.
0340                         *                        UPPER ADDRESS IN X-REG.
0341                         * IF HEX ADDRESSES ARE INVALID (V)=1.
0341                         * IF HEX ADDRESSES ARE INVALID (V)=1.
0342                         *
0342                         *
0343 f996 17 03 8b           MEMDUMP LBSR IN2ADR INPUT ADDRESS BOUNDRIES
0343 f996 17 03 8b           MEMDUMP LBSR IN2ADR INPUT ADDRESS BOUNDRIES
0344 f999 29 06               BVS  EDPRTN NEW COMMAND IF ILLEGAL HEX
0344 f999 29 06               BVS  EDPRTN NEW COMMAND IF ILLEGAL HEX
0345 f99b 34 20              MDUMP1 PSHS Y COMPARE LOWER TO UPPER BOUNDS
0345 f99b 34 20              MDUMP1 PSHS Y COMPARE LOWER TO UPPER BOUNDS
0346 f99d ac e1               CMPX ,S++ LOWER BOUNDS > UPPER BOUNDS?
0346 f99d ac e1               CMPX ,S++ LOWER BOUNDS > UPPER BOUNDS?
0347 f99f 24 01               BCC  AJDUMP IF NOT, DUMP HEX AND ASCII
0347 f99f 24 01               BCC  AJDUMP IF NOT, DUMP HEX AND ASCII
0348 f9a1 39                 EDPRTN RTS ;
0348 f9a1 39                 EDPRTN RTS ;
0349                         *
0349                         *
0350                         * ADJUST LOWER AND UPPER ADDRESS LIMITS
0350                         * ADJUST LOWER AND UPPER ADDRESS LIMITS
0351                         * TO EVEN 16 BYTE BOUNDRIES.
0351                         * TO EVEN 16 BYTE BOUNDRIES.
0352                         *
0352                         *
0353                         * IF LOWER ADDR = $4532
0353                         * IF LOWER ADDR = $4532
0354                         * LOWER BOUNDS WILL BE ADJUSTED TO = $4530.
0354                         * LOWER BOUNDS WILL BE ADJUSTED TO = $4530.
0355                         *
0355                         *
0356                         * IF UPPER ADDR = $4567
0356                         * IF UPPER ADDR = $4567
0357                         * UPPER BOUNDS WILL BE ADJUSTED TO = $4570.
0357                         * UPPER BOUNDS WILL BE ADJUSTED TO = $4570.
0358                         *
0358                         *
0359                         * ENTER WITH LOWER ADDRESS IN X-REG.
0359                         * ENTER WITH LOWER ADDRESS IN X-REG.
0360                         *           -UPPER ADDRESS ON TOP OF STACK.
0360                         *           -UPPER ADDRESS ON TOP OF STACK.
0361                         *
0361                         *
0362 f9a2 1f 10              AJDUMP TFR  X,D GET UPPER ADDR IN D-REG
0362 f9a2 1f 10              AJDUMP TFR  X,D GET UPPER ADDR IN D-REG
0363 f9a4 c3 00 10            ADDD #$10 ADD 16 TO UPPER ADDRESS
0363 f9a4 c3 00 10            ADDD #$10 ADD 16 TO UPPER ADDRESS
0364 f9a7 c4 f0               ANDB #$F0 MASK TO EVEN 16 BYTE BOUNDRY
0364 f9a7 c4 f0               ANDB #$F0 MASK TO EVEN 16 BYTE BOUNDRY
0365 f9a9 34 06               PSHS A,B SAVE ON STACK AS UPPER DUMP LIMIT
0365 f9a9 34 06               PSHS A,B SAVE ON STACK AS UPPER DUMP LIMIT
0366 f9ab 1f 20               TFR  Y,D   $F9A5 GET LOWER ADDRESS IN D-REG
0366 f9ab 1f 20               TFR  Y,D   $F9A5 GET LOWER ADDRESS IN D-REG
0367 f9ad c4 f0               ANDB #$F0 MASK TO EVEN 16 BYTE BOUNDRY
0367 f9ad c4 f0               ANDB #$F0 MASK TO EVEN 16 BYTE BOUNDRY
0368 f9af 1f 01               TFR  D,X PUT IN X-REG AS LOWER DUMP LIMIT
0368 f9af 1f 01               TFR  D,X PUT IN X-REG AS LOWER DUMP LIMIT
0369 f9b1 ac e4              NXTLIN CMPX ,S COMPARE LOWER TO UPPER LIMIT
0369 f9b1 ac e4              NXTLIN CMPX ,S COMPARE LOWER TO UPPER LIMIT
0370 f9b3 27 05               BEQ  SKPDMP IF EQUAL SKIP HEX-ASCII DUMP
0370 f9b3 27 05               BEQ  SKPDMP IF EQUAL SKIP HEX-ASCII DUMP
0371 f9b5 17 04 27            LBSR INCHEK CHECK FOR INPUT FROM KEYBOARD
0371 f9b5 17 04 27            LBSR INCHEK CHECK FOR INPUT FROM KEYBOARD
0372 f9b8 27 03               BEQ  EDUMP IF NONE, CONTINUE WITH DUMP
0372 f9b8 27 03               BEQ  EDUMP IF NONE, CONTINUE WITH DUMP
0373 f9ba 32 62              SKPDMP LEAS 2,S READJUST STACK IF NOT DUMPING
0373 f9ba 32 62              SKPDMP LEAS 2,S READJUST STACK IF NOT DUMPING
0374 f9bc 39                  RTS ;
0374 f9bc 39                  RTS ;
0375                         *
0375                         *
0376                         * PRINT 16 HEX BYTES FOLLOWED BY 16 ASCII CHARACTERS
0376                         * PRINT 16 HEX BYTES FOLLOWED BY 16 ASCII CHARACTERS
0377                         * FOR EACH LINE THROUGHOUT ADDRESS LIMITS.
0377                         * FOR EACH LINE THROUGHOUT ADDRESS LIMITS.
0378                         *
0378                         *
0379 f9bd 34 10              EDUMP PSHS X PUSH LOWER ADDR LIMIT ON STACK
0379 f9bd 34 10              EDUMP PSHS X PUSH LOWER ADDR LIMIT ON STACK
0380 f9bf 8e fe 83            LDX  #MSG5 POINT TO MSG " - "
0380 f9bf 8e fe 83            LDX  #MSG5 POINT TO MSG " - "
0381 f9c2 17 03 e8            LBSR PSTRNG PRINT MSG
0381 f9c2 17 03 e8            LBSR PSTRNG PRINT MSG
0382 f9c5 ae e4               LDX  ,S LOAD LOWER ADDR FROM TOP OF STACK
0382 f9c5 ae e4               LDX  ,S LOAD LOWER ADDR FROM TOP OF STACK
0383 f9c7 17 03 af            LBSR OUT4H PRINT THE ADDRESS LBSR OUT2S PRINT 2 SPACES
0383 f9c7 17 03 af            LBSR OUT4H PRINT THE ADDRESS LBSR OUT2S PRINT 2 SPACES
0384 f9ca c6 10               LDB  #$10 LOAD COUNT OF 16 BYTES TO DUMP
0384 f9ca c6 10               LDB  #$10 LOAD COUNT OF 16 BYTES TO DUMP
0385 f9cc a6 80              ELOOP LDA  ,X+ GET FROM MEMORY HEX BYTE TO PRINT
0385 f9cc a6 80              ELOOP LDA  ,X+ GET FROM MEMORY HEX BYTE TO PRINT
0386 f9ce 17 03 b0            LBSR OUT2H OUTPUT HEX BYTE AS ASCII
0386 f9ce 17 03 b0            LBSR OUT2H OUTPUT HEX BYTE AS ASCII
0387 f9d1 17 04 18            LBSR OUT1S OUTPUT SPACE
0387 f9d1 17 04 18            LBSR OUT1S OUTPUT SPACE
0388 f9d4 5a                  DECB      $F9D1 DECREMENT BYTE COUNT
0388 f9d4 5a                  DECB      $F9D1 DECREMENT BYTE COUNT
0389 f9d5 26 f5               BNE  ELOOP CONTINUE TIL 16 HEX BYTES PRINTED
0389 f9d5 26 f5               BNE  ELOOP CONTINUE TIL 16 HEX BYTES PRINTED
0390                         *
0390                         *
0391                         * PRINT 16 ASCII CHARACTERS
0391                         * PRINT 16 ASCII CHARACTERS
0392                         * IF NOT PRINTABLE OR NOT VALID
0392                         * IF NOT PRINTABLE OR NOT VALID
0393                         * ASCII PRINT A PERIOD (.)
0393                         * ASCII PRINT A PERIOD (.)
0394 f9d7 17 04 10            LBSR OUT2S 2 SPACES
0394 f9d7 17 04 10            LBSR OUT2S 2 SPACES
0395 f9da ae e1               LDX  ,S++ GET LOW LIMIT FRM STACK - ADJ STACK
0395 f9da ae e1               LDX  ,S++ GET LOW LIMIT FRM STACK - ADJ STACK
0396 f9dc c6 10               LDB  #$10 SET ASCII CHAR TO PRINT = 16
0396 f9dc c6 10               LDB  #$10 SET ASCII CHAR TO PRINT = 16
0397 f9de a6 80              EDPASC LDA  ,X+ GET CHARACTER FROM MEMORY
0397 f9de a6 80              EDPASC LDA  ,X+ GET CHARACTER FROM MEMORY
0398 f9e0 81 20               CMPA #$20 IF LESS THAN $20, NON-PRINTABLE?
0398 f9e0 81 20               CMPA #$20 IF LESS THAN $20, NON-PRINTABLE?
0399 f9e2 25 04               BCS  PERIOD IF SO, PRINT PERIOD INSTEAD
0399 f9e2 25 04               BCS  PERIOD IF SO, PRINT PERIOD INSTEAD
0400 f9e4 81 7e               CMPA #$7E IS IT VALID ASCII?
0400 f9e4 81 7e               CMPA #$7E IS IT VALID ASCII?
0401 f9e6 23 02               BLS  PRASC IF SO PRINT IT
0401 f9e6 23 02               BLS  PRASC IF SO PRINT IT
0402 f9e8 86 2e              PERIOD LDA  #'. LOAD A PERIOD (.)
0402 f9e8 86 2e              PERIOD LDA  #'. LOAD A PERIOD (.)
0403 f9ea 17 04 01           PRASC LBSR OUTCH PRINT ASCII CHARACTER
0403 f9ea 17 04 01           PRASC LBSR OUTCH PRINT ASCII CHARACTER
0404 f9ed 5a                  DECB DECREMENT COUNT
0404 f9ed 5a                  DECB DECREMENT COUNT
0405 f9ee 26 ee               BNE  EDPASC
0405 f9ee 26 ee               BNE  EDPASC
0406 f9f0 20 bf               BRA  NXTLIN
0406 f9f0 20 bf               BRA  NXTLIN
0407                         *
0407                         *
0408                         ***** "Q" MEMORY TEST *****
0408                         ***** "Q" MEMORY TEST *****
0409                         *
0409                         *
0410 f9f2 6f e2              MEMTST CLR  ,-S CLEAR BYTE ON STACK
0410 f9f2 6f e2              MEMTST CLR  ,-S CLEAR BYTE ON STACK
0411 f9f4 6f e2               CLR  ,-S CLEAR ANOTHER BYTE
0411 f9f4 6f e2               CLR  ,-S CLEAR ANOTHER BYTE
0412 f9f6 17 03 2b            LBSR IN2ADR GET BEGIN(Y) & END(X) ADDR. LIMITS
0412 f9f6 17 03 2b            LBSR IN2ADR GET BEGIN(Y) & END(X) ADDR. LIMITS
0413 f9f9 34 30               PSHS X,Y SAVE ADDRESSES ON STACK
0413 f9f9 34 30               PSHS X,Y SAVE ADDRESSES ON STACK
0414 f9fb 29 7b               BVS  ADJSK6 EXIT IF NOT VALID HEX
0414 f9fb 29 7b               BVS  ADJSK6 EXIT IF NOT VALID HEX
0415 f9fd ac 62               CMPX 2,S COMPARE BEGIN TO END ADDR.
0415 f9fd ac 62               CMPX 2,S COMPARE BEGIN TO END ADDR.
0416 f9ff 25 77               BCS  ADJSK6 EXIT IF BEGIN > END ADDR.
0416 f9ff 25 77               BCS  ADJSK6 EXIT IF BEGIN > END ADDR.
0417 fa01 17 03 e8            LBSR OUT1S OUTPUT SPACE
0417 fa01 17 03 e8            LBSR OUT1S OUTPUT SPACE
0418 fa04 1f 20              MEMSET TFR  Y,D PUT BEGIN ADDR. IN 'D'-ACCUM.
0418 fa04 1f 20              MEMSET TFR  Y,D PUT BEGIN ADDR. IN 'D'-ACCUM.
0419 fa06 e3 64               ADDD 4,S ADD PASS COUNT TO BEGIN ADDR
0419 fa06 e3 64               ADDD 4,S ADD PASS COUNT TO BEGIN ADDR
0420 fa08 34 04               PSHS B ADD LS BYTE TO MS BYTE OF BEGIN ADDR
0420 fa08 34 04               PSHS B ADD LS BYTE TO MS BYTE OF BEGIN ADDR
0421 fa0a ab e0               ADDA ,S+
0421 fa0a ab e0               ADDA ,S+
0422 fa0c a7 a0               STA  ,Y+ SAVE THIS DATA BYTE AT BEGIN ADDR
0422 fa0c a7 a0               STA  ,Y+ SAVE THIS DATA BYTE AT BEGIN ADDR
0423 fa0e 10 ac e4            CMPY ,S COMPARE END TO BEGIN ADDR
0423 fa0e 10 ac e4            CMPY ,S COMPARE END TO BEGIN ADDR
0424 fa11 25 f1               BCS  MEMSET IF BEGIN LOWER, CONTINUE TO SET MEMORY
0424 fa11 25 f1               BCS  MEMSET IF BEGIN LOWER, CONTINUE TO SET MEMORY
0425 fa13 10 ae 62            LDY  2,S RELOAD BEGIN ADDRESS
0425 fa13 10 ae 62            LDY  2,S RELOAD BEGIN ADDRESS
0426 fa16 1f 20              TEST1 TFR  Y,D PUT BEGIN ADDR IN 'D'-ACC.
0426 fa16 1f 20              TEST1 TFR  Y,D PUT BEGIN ADDR IN 'D'-ACC.
0427 fa18 e3 64               ADDD 4,S ADD PASS COUNT TO ADDRESS
0427 fa18 e3 64               ADDD 4,S ADD PASS COUNT TO ADDRESS
0428 fa1a 34 02               PSHS A ADD MS BYTE TO LS BYTE OF ADDRESS
0428 fa1a 34 02               PSHS A ADD MS BYTE TO LS BYTE OF ADDRESS
0429 fa1c eb e0               ADDB ,S+
0429 fa1c eb e0               ADDB ,S+
0430 fa1e e8 a0               EORB ,Y+ EX-OR THIS DATA WITH DATA IN MEMORY LOC.
0430 fa1e e8 a0               EORB ,Y+ EX-OR THIS DATA WITH DATA IN MEMORY LOC.
0431 fa20 27 3c               BEQ  GUDPAS IF (Z) SET, MEMORY BYTE OK
0431 fa20 27 3c               BEQ  GUDPAS IF (Z) SET, MEMORY BYTE OK
0432 fa22 8e fe 83            LDX  #MSG5 POINT TO MSG " - "
0432 fa22 8e fe 83            LDX  #MSG5 POINT TO MSG " - "
0433 fa25 17 03 85            LBSR PSTRNG PRINT MSG
0433 fa25 17 03 85            LBSR PSTRNG PRINT MSG
0434 fa28 30 3f               LEAX -1,Y GET ERROR ADDRESS IN X-REG
0434 fa28 30 3f               LEAX -1,Y GET ERROR ADDRESS IN X-REG
0435 fa2a 17 03 4c            LBSR OUT4H OUTPUT IT
0435 fa2a 17 03 4c            LBSR OUT4H OUTPUT IT
0436 fa2d 34 10               PSHS X PUSH ERROR ADDR ON STACK
0436 fa2d 34 10               PSHS X PUSH ERROR ADDR ON STACK
0437 fa2f 8e fe a1            LDX  #MSG8  POINT TO MSG " =>"
0437 fa2f 8e fe a1            LDX  #MSG8  POINT TO MSG " =>"
0438 fa32 17 03 88            LBSR PDATA  PRINT MSG
0438 fa32 17 03 88            LBSR PDATA  PRINT MSG
0439 fa35 35 10               PULS X POP ERROR ADDR FROM STACK
0439 fa35 35 10               PULS X POP ERROR ADDR FROM STACK
0440 fa37 17 01 47            LBSR LRA GET PHYSICAL ADDR FROM LRA
0440 fa37 17 01 47            LBSR LRA GET PHYSICAL ADDR FROM LRA
0441 fa3a 17 03 50            LBSR XASCII OUTPUT EXTENDED 4 BITS OF PHYSICAL ADDR
0441 fa3a 17 03 50            LBSR XASCII OUTPUT EXTENDED 4 BITS OF PHYSICAL ADDR
0442 fa3d 17 03 39            LBSR OUT4H OUTPUT LS 16 BITS OF PHYSICAL ADDR
0442 fa3d 17 03 39            LBSR OUT4H OUTPUT LS 16 BITS OF PHYSICAL ADDR
0443 fa40 8e fe 87            LDX  #MSG6  POINT TO MSG ", PASS "
0443 fa40 8e fe 87            LDX  #MSG6  POINT TO MSG ", PASS "
0444 fa43 17 03 77            LBSR PDATA  PRINT MSG
0444 fa43 17 03 77            LBSR PDATA  PRINT MSG
0445 fa46 ae 64               LDX  4,S LOAD PASS COUNT
0445 fa46 ae 64               LDX  4,S LOAD PASS COUNT
0446 fa48 17 03 2e            LBSR OUT4H OUTPUT IT
0446 fa48 17 03 2e            LBSR OUT4H OUTPUT IT
0447 fa4b 8e fe 8f            LDX  #MSG7 POINT TO MSG ", BITS IN ERROR
0447 fa4b 8e fe 8f            LDX  #MSG7 POINT TO MSG ", BITS IN ERROR
0448 fa4e 17 03 6c            LBSR PDATA  PRINT MSG
0448 fa4e 17 03 6c            LBSR PDATA  PRINT MSG
0449 fa51 1f 98               TFR  B,A GET ERROR BYTE INTO A-ACC
0449 fa51 1f 98               TFR  B,A GET ERROR BYTE INTO A-ACC
0450 fa53 8e fe a6            LDX  #MSG9 POINT TO MSG "76543210"
0450 fa53 8e fe a6            LDX  #MSG9 POINT TO MSG "76543210"
0451 fa56 17 03 3e            LBSR BIASCI OUTPUT IN BINARY/ASCII FORMAT
0451 fa56 17 03 3e            LBSR BIASCI OUTPUT IN BINARY/ASCII FORMAT
0452 fa59 17 03 83            LBSR INCHEK CHECK FOR INPUT FROM KEYBOARD $FA56
0452 fa59 17 03 83            LBSR INCHEK CHECK FOR INPUT FROM KEYBOARD $FA56
0453 fa5c 26 1a               BNE  ADJSK6 IF SO, EXIT MEMORY TEST
0453 fa5c 26 1a               BNE  ADJSK6 IF SO, EXIT MEMORY TEST
0454 fa5e 10 ac e4           GUDPAS CMPY ,S COMPARE END ADDR TO BEGIN ADDR
0454 fa5e 10 ac e4           GUDPAS CMPY ,S COMPARE END ADDR TO BEGIN ADDR
0455 fa61 25 b3               BCS  TEST1
0455 fa61 25 b3               BCS  TEST1
0456 fa63 86 2b               LDA  #'+ GET "PASS" SYMBOL IF MEMORY PASS OK
0456 fa63 86 2b               LDA  #'+ GET "PASS" SYMBOL IF MEMORY PASS OK
0457 fa65 17 03 86            LBSR OUTCH OUTPUT SYMBOL TO TERMINAL
0457 fa65 17 03 86            LBSR OUTCH OUTPUT SYMBOL TO TERMINAL
0458 fa68 17 03 74            LBSR INCHEK INPUT FROM KEYBOARD?
0458 fa68 17 03 74            LBSR INCHEK INPUT FROM KEYBOARD?
0459 fa6b 26 0b               BNE  ADJSK6 IF SO, EXIT MEMORY TEST
0459 fa6b 26 0b               BNE  ADJSK6 IF SO, EXIT MEMORY TEST
0460 fa6d 10 ae 62            LDY  2,S LOAD BEGIN ADDRESS
0460 fa6d 10 ae 62            LDY  2,S LOAD BEGIN ADDRESS
0461 fa70 6c 65               INC  5,S INCREMENT LS BYTE OF PASS COUNT
0461 fa70 6c 65               INC  5,S INCREMENT LS BYTE OF PASS COUNT
0462 fa72 26 90               BNE  MEMSET IF NOT ZERO, SET NEXT MEMORY BYTE
0462 fa72 26 90               BNE  MEMSET IF NOT ZERO, SET NEXT MEMORY BYTE
0463 fa74 6c 64               INC  4,S INCREMENT MS BYTE OF PASS COUNT
0463 fa74 6c 64               INC  4,S INCREMENT MS BYTE OF PASS COUNT
0464 fa76 26 8c               BNE  MEMSET DONE WITH 65,535 PASSES OF MEMORY?
0464 fa76 26 8c               BNE  MEMSET DONE WITH 65,535 PASSES OF MEMORY?
0465 fa78 32 66              ADJSK6 LEAS 6,S ADJ STACK POINTER BY 6
0465 fa78 32 66              ADJSK6 LEAS 6,S ADJ STACK POINTER BY 6
0466 fa7a 39                  RTS
0466 fa7a 39                  RTS
0467                         *
0467                         *
0468                         ***** "B" SET BREAKPOINT *****
0468                         ***** "B" SET BREAKPOINT *****
0469                         *
0469                         *
0470 fa7b 17 02 b1           BRKPNT LBSR IN1ADR GET BREAKPOINT ADDRESS
0470 fa7b 17 02 b1           BRKPNT LBSR IN1ADR GET BREAKPOINT ADDRESS
0471 fa7e 29 1e               BVS  EXITBP EXIT IF INVALID HEX ADDR.
0471 fa7e 29 1e               BVS  EXITBP EXIT IF INVALID HEX ADDR.
0472 fa80 8c df c0            CMPX #STACK ADDRESS ILLEGAL IF >=$DFC0
0472 fa80 8c df c0            CMPX #STACK ADDRESS ILLEGAL IF >=$DFC0
0473 fa83 24 1a               BCC  BPERR IF ERROR PRINT (?), EXIT
0473 fa83 24 1a               BCC  BPERR IF ERROR PRINT (?), EXIT
0474 fa85 34 10               PSHS X $FA82 PUSH BP ADDRESS ON STACK
0474 fa85 34 10               PSHS X $FA82 PUSH BP ADDRESS ON STACK
0475 fa87 8e ff ff            LDX  #$FFFF LOAD DUMMY ADDR TO TEST BP TABLE
0475 fa87 8e ff ff            LDX  #$FFFF LOAD DUMMY ADDR TO TEST BP TABLE
0476 fa8a 8d 55               BSR BPTEST TEST BP TABLE FOR FREE SPACE
0476 fa8a 8d 55               BSR BPTEST TEST BP TABLE FOR FREE SPACE
0477 fa8c 35 10               PULS X POP BP ADDRESS FROM STACK
0477 fa8c 35 10               PULS X POP BP ADDRESS FROM STACK
0478 fa8e 27 0f               BEQ  BPERR (Z) SET, OUT OF BP TABLE SPACE
0478 fa8e 27 0f               BEQ  BPERR (Z) SET, OUT OF BP TABLE SPACE
0479 fa90 a6 84               LDA  ,X GET DATA AT BREAKPOINT ADDRESS
0479 fa90 a6 84               LDA  ,X GET DATA AT BREAKPOINT ADDRESS
0480 fa92 81 3f               CMPA #$3F IS IT A SWI?
0480 fa92 81 3f               CMPA #$3F IS IT A SWI?
0481 fa94 27 09               BEQ  BPERR IF SWI ALREADY, INDICATE ERROR
0481 fa94 27 09               BEQ  BPERR IF SWI ALREADY, INDICATE ERROR
0482 fa96 a7 a0               STA  ,Y+ SAVE DATA BYTE IN BP TABLE
0482 fa96 a7 a0               STA  ,Y+ SAVE DATA BYTE IN BP TABLE
0483 fa98 af a4               STX  ,Y SAVE BP ADDRESS IN BP TABLE
0483 fa98 af a4               STX  ,Y SAVE BP ADDRESS IN BP TABLE
0484 fa9a 86 3f               LDA  #$3F LOAD A SWI ($3F)
0484 fa9a 86 3f               LDA  #$3F LOAD A SWI ($3F)
0485 fa9c a7 84               STA  ,X SAVE SWI AT BREAKPOINT ADDRESS
0485 fa9c a7 84               STA  ,X SAVE SWI AT BREAKPOINT ADDRESS
0486 fa9e 39                 EXITBP RTS ;
0486 fa9e 39                 EXITBP RTS ;
0487                         *
0487                         *
0488                         *  INDICATE ERROR SETTING BREAKPOINT
0488                         *  INDICATE ERROR SETTING BREAKPOINT
0489                         *
0489                         *
0490 fa9f 17 03 4a           BPERR LBSR OUT1S OUTPUT SPACE
0490 fa9f 17 03 4a           BPERR LBSR OUT1S OUTPUT SPACE
0491 faa2 86 3f               LDA  #'? LOAD (?), INDICATE BREAKPOINT ERROR
0491 faa2 86 3f               LDA  #'? LOAD (?), INDICATE BREAKPOINT ERROR
0492 faa4 16 03 47            LBRA OUTCH PRINT "?"
0492 faa4 16 03 47            LBRA OUTCH PRINT "?"
0493                         *
0493                         *
0494                         *** "X" CLEAR OUTSTANDING BREAKPOINTS ***
0494                         *** "X" CLEAR OUTSTANDING BREAKPOINTS ***
0495                         *
0495                         *
0496 faa7 10 8e df e3        XBKPNT LDY  #BPTBL POINT TO BREAKPOINT TABLE
0496 faa7 10 8e df e3        XBKPNT LDY  #BPTBL POINT TO BREAKPOINT TABLE
0497 faab c6 08               LDB  #8 LOAD BREAKPOINT COUNTER
0497 faab c6 08               LDB  #8 LOAD BREAKPOINT COUNTER
0498 faad 8d 18              XBPLP BSR RPLSWI REMOVE USED ENTRY IN BP TABLE
0498 faad 8d 18              XBPLP BSR RPLSWI REMOVE USED ENTRY IN BP TABLE
0499 faaf 5a                  DECB  $FAAC DECREMENT BP COUNTER
0499 faaf 5a                  DECB  $FAAC DECREMENT BP COUNTER
0500 fab0 26 fb               BNE XBPLP END OF BREAKPOINT TABLE?
0500 fab0 26 fb               BNE XBPLP END OF BREAKPOINT TABLE?
0501 fab2 39                  RTS
0501 fab2 39                  RTS
0502                         *
0502                         *
0503                         ***** SWI ENTRY POINT *****
0503                         ***** SWI ENTRY POINT *****
0504                         *
0504                         *
0505 fab3 1f 43              SWIE TFR  S,U TRANSFER STACK TO USER POINTER
0505 fab3 1f 43              SWIE TFR  S,U TRANSFER STACK TO USER POINTER
0506 fab5 ae 4a               LDX  10,U LOAD PC FROM STACK INTO X-REG
0506 fab5 ae 4a               LDX  10,U LOAD PC FROM STACK INTO X-REG
0507 fab7 30 1f               LEAX -1,X ADJUST ADDR DOWN 1 BYTE.
0507 fab7 30 1f               LEAX -1,X ADJUST ADDR DOWN 1 BYTE.
0508 fab9 8d 26               BSR BPTEST FIND BREAKPOINT IN BP TABLE
0508 fab9 8d 26               BSR BPTEST FIND BREAKPOINT IN BP TABLE
0509 fabb 27 04               BEQ  REGPR IF FOUND, REPLACE DATA AT BP ADDR
0509 fabb 27 04               BEQ  REGPR IF FOUND, REPLACE DATA AT BP ADDR
0510 fabd af 4a               STX  10,U SAVE BREAKPOINT ADDR IN STACK
0510 fabd af 4a               STX  10,U SAVE BREAKPOINT ADDR IN STACK
0511 fabf 8d 06               BSR RPLSWI GO REPLACE SWI WITH ORIGINAL DATA
0511 fabf 8d 06               BSR RPLSWI GO REPLACE SWI WITH ORIGINAL DATA
0512 fac1 17 fd e4           REGPR LBSR REGSTR GO PRINT REGISTERS
0512 fac1 17 fd e4           REGPR LBSR REGSTR GO PRINT REGISTERS
0513 fac4 16 fd 9a            LBRA NEXTCMD GET NEXT COMMAND
0513 fac4 16 fd 9a            LBRA NEXTCMD GET NEXT COMMAND
0514 fac7 ae 21              RPLSWI LDX  1,Y LOAD BP ADDRESS FROM BP TABLE
0514 fac7 ae 21              RPLSWI LDX  1,Y LOAD BP ADDRESS FROM BP TABLE
0515 fac9 8c df c0            CMPX #STACK COMPARE TO TOP AVAILABLE USER MEMORY
0515 fac9 8c df c0            CMPX #STACK COMPARE TO TOP AVAILABLE USER MEMORY
0516 facc 24 0a               BCC  FFSTBL GO RESET TABLE ENTRY TO $FF'S
0516 facc 24 0a               BCC  FFSTBL GO RESET TABLE ENTRY TO $FF'S
0517 face a6 84               LDA  ,X GET DATA FROM BP ADDRESS
0517 face a6 84               LDA  ,X GET DATA FROM BP ADDRESS
0518 fad0 81 3f               CMPA #$3F IS IT SWI?
0518 fad0 81 3f               CMPA #$3F IS IT SWI?
0519 fad2 26 04               BNE  FFSTBL IF NOT, RESET TABLE ENTRY TO $FF'S
0519 fad2 26 04               BNE  FFSTBL IF NOT, RESET TABLE ENTRY TO $FF'S
0520 fad4 a6 a4               LDA  ,Y GET ORIGINAL DATA FROM BP TABLE
0520 fad4 a6 a4               LDA  ,Y GET ORIGINAL DATA FROM BP TABLE
0521 fad6 a7 84               STA  ,X      $FAD3 RESTORE DATA AT BP ADDRESS
0521 fad6 a7 84               STA  ,X      $FAD3 RESTORE DATA AT BP ADDRESS
0522 fad8 86 ff              FFSTBL LDA  #$FF LOAD $FF IN A-ACC
0522 fad8 86 ff              FFSTBL LDA  #$FF LOAD $FF IN A-ACC
0523 fada a7 a0               STA  ,Y+ RESET BREAKPOINT TABLE DATA TO $FF'S
0523 fada a7 a0               STA  ,Y+ RESET BREAKPOINT TABLE DATA TO $FF'S
0524 fadc a7 a0               STA  ,Y+ RESET BREAKPOINT TABLE ADDR TO $FF'S
0524 fadc a7 a0               STA  ,Y+ RESET BREAKPOINT TABLE ADDR TO $FF'S
0525 fade a7 a0               STA  ,Y+
0525 fade a7 a0               STA  ,Y+
0526 fae0 39                  RTS
0526 fae0 39                  RTS
0527                         *
0527                         *
0528                         ** SEARCH BREAKPOINT TABLE FOR MATCH **
0528                         ** SEARCH BREAKPOINT TABLE FOR MATCH **
0529                         *
0529                         *
0530 fae1 10 8e df e3        BPTEST LDY  #BPTBL POINT TO BREAKPOINT TABLE
0530 fae1 10 8e df e3        BPTEST LDY  #BPTBL POINT TO BREAKPOINT TABLE
0531 fae5 c6 08               LDB  #8 LOAD BREAKPOINT COUNTER
0531 fae5 c6 08               LDB  #8 LOAD BREAKPOINT COUNTER
0532 fae7 a6 a0              FNDBP LDA  ,Y+ LOAD DATA BYTE
0532 fae7 a6 a0              FNDBP LDA  ,Y+ LOAD DATA BYTE
0533 fae9 ac a1               CMPX ,Y++ COMPARE ADDRESS, IS IT SAME?
0533 fae9 ac a1               CMPX ,Y++ COMPARE ADDRESS, IS IT SAME?
0534 faeb 27 04               BEQ  BPADJ IF SO, ADJUST POINTER FOR TABLE ENTRY
0534 faeb 27 04               BEQ  BPADJ IF SO, ADJUST POINTER FOR TABLE ENTRY
0535 faed 5a                  DECB IF NOT, DECREMENT BREAKPOINT COUNTER
0535 faed 5a                  DECB IF NOT, DECREMENT BREAKPOINT COUNTER
0536 faee 26 f7               BNE  FNDBP AND LOOK FOR NEXT POSSIBLE MATCH
0536 faee 26 f7               BNE  FNDBP AND LOOK FOR NEXT POSSIBLE MATCH
0537 faf0 39                  RTS ;
0537 faf0 39                  RTS ;
0538                         *
0538                         *
0539                         *
0539                         *
0540 faf1 31 3d              BPADJ LEAY -3,Y MOVE POINTER TO BEGIN OF BP ENTRY
0540 faf1 31 3d              BPADJ LEAY -3,Y MOVE POINTER TO BEGIN OF BP ENTRY
0541 faf3 39                  RTS
0541 faf3 39                  RTS
0542                         *
0542                         *
0543                         *** "D" DISK BOOT FOR DMAF2 ***
0543                         *** "D" DISK BOOT FOR DMAF2 ***
0544                         *
0544                         *
0545 faf4 86 de              DBOOT LDA  #$DE
0545 faf4 86 de              DBOOT LDA  #$DE
0546 faf6 b7 f0 24            STA  DRVREG
0546 faf6 b7 f0 24            STA  DRVREG
0547 faf9 86 ff               LDA  #$FF
0547 faf9 86 ff               LDA  #$FF
0548 fafb b7 f0 14            STA  PRIREG     $FAF8
0548 fafb b7 f0 14            STA  PRIREG     $FAF8
0549 fafe b7 f0 10            STA  CCREG
0549 fafe b7 f0 10            STA  CCREG
0550 fb01 b7 f0 15            STA  AAAREG
0550 fb01 b7 f0 15            STA  AAAREG
0551 fb04 b7 f0 16            STA  BBBREG
0551 fb04 b7 f0 16            STA  BBBREG
0552 fb07 7d f0 10            TST  CCREG
0552 fb07 7d f0 10            TST  CCREG
0553 fb0a 86 d8               LDA  #$D8
0553 fb0a 86 d8               LDA  #$D8
0554 fb0c b7 f0 20            STA  COMREG
0554 fb0c b7 f0 20            STA  COMREG
0555 fb0f 17 00 97            LBSR DLY
0555 fb0f 17 00 97            LBSR DLY
0556 fb12 b6 f0 20           DBOOT0 LDA  COMREG
0556 fb12 b6 f0 20           DBOOT0 LDA  COMREG
0557 fb15 2b fb               BMI  DBOOT0
0557 fb15 2b fb               BMI  DBOOT0
0558 fb17 86 09               LDA  #$09
0558 fb17 86 09               LDA  #$09
0559 fb19 b7 f0 20            STA  COMREG
0559 fb19 b7 f0 20            STA  COMREG
0560 fb1c 17 00 8a            LBSR DLY
0560 fb1c 17 00 8a            LBSR DLY
0561                         *
0561                         *
0562 fb1f b6 f0 20           DISKWT LDA  COMREG FETCH DRIVE STATUS
0562 fb1f b6 f0 20           DISKWT LDA  COMREG FETCH DRIVE STATUS
0563 fb22 85 01               BITA #1 TEST BUSY BIT
0563 fb22 85 01               BITA #1 TEST BUSY BIT
0564 fb24 26 f9               BNE  DISKWT LOOP UNTIL NOT BUSY
0564 fb24 26 f9               BNE  DISKWT LOOP UNTIL NOT BUSY
0565                         *
0565                         *
0566 fb26 85 10               BITA #$10
0566 fb26 85 10               BITA #$10
0567 fb28 26 ca               BNE  DBOOT
0567 fb28 26 ca               BNE  DBOOT
0568                         *
0568                         *
0569 fb2a 8e c0 00            LDX  #$C000 LOGICAL ADDR. = $C000
0569 fb2a 8e c0 00            LDX  #$C000 LOGICAL ADDR. = $C000
0570 fb2d 8d 52               BSR LRA  GET 20 BIT PHYSICAL ADDR. OF LOG. ADDR.
0570 fb2d 8d 52               BSR LRA  GET 20 BIT PHYSICAL ADDR. OF LOG. ADDR.
0571 fb2f 8a 10               ORA  #$10
0571 fb2f 8a 10               ORA  #$10
0572 fb31 b7 f0 40            STA  CCCREG
0572 fb31 b7 f0 40            STA  CCCREG
0573 fb34 1f 10               TFR  X,D
0573 fb34 1f 10               TFR  X,D
0574 fb36 43                  COMA  ;
0574 fb36 43                  COMA  ;
0575 fb37 53                  COMB  ;
0575 fb37 53                  COMB  ;
0576 fb38 fd f0 00            STD  ADDREG
0576 fb38 fd f0 00            STD  ADDREG
0577 fb3b 8e fe ff            LDX  #$FEFF LOAD DMA BYTE COUNT = $100
0577 fb3b 8e fe ff            LDX  #$FEFF LOAD DMA BYTE COUNT = $100
0578 fb3e bf f0 02            STX  CNTREG STORE IN COUNT REGISTER
0578 fb3e bf f0 02            STX  CNTREG STORE IN COUNT REGISTER
0579 fb41 86 ff               LDA  #$FF LOAD THE CHANNEL REGISTER
0579 fb41 86 ff               LDA  #$FF LOAD THE CHANNEL REGISTER
0580 fb43 b7 f0 10            STA  CCREG
0580 fb43 b7 f0 10            STA  CCREG
0581 fb46 86 fe               LDA  #$FE SET CHANNEL 0
0581 fb46 86 fe               LDA  #$FE SET CHANNEL 0
0582 fb48 b7 f0 14            STA  PRIREG
0582 fb48 b7 f0 14            STA  PRIREG
0583 fb4b 86 01               LDA  #1 SET SECTOR TO "1"
0583 fb4b 86 01               LDA  #1 SET SECTOR TO "1"
0584 fb4d b7 f0 22            STA  SECREG ISSUE COMMAND
0584 fb4d b7 f0 22            STA  SECREG ISSUE COMMAND
0585 fb50 86 8c               LDA  #$8C SET SINGLE SECTOR READ
0585 fb50 86 8c               LDA  #$8C SET SINGLE SECTOR READ
0586 fb52 b7 f0 20            STA  COMREG ISSUE COMMAND
0586 fb52 b7 f0 20            STA  COMREG ISSUE COMMAND
0587 fb55 8d 52               BSR DLY
0587 fb55 8d 52               BSR DLY
0588                         *
0588                         *
0589                         * THE FOLLOWING CODE TESTS THE STATUS OF THE
0589                         * THE FOLLOWING CODE TESTS THE STATUS OF THE
0590                         * CHANNEL CONTROL REGISTER. IF "D7" IS NOT
0590                         * CHANNEL CONTROL REGISTER. IF "D7" IS NOT
0591                         * ZERO THEN IT WILL LOOP WAITING FOR "D7"
0591                         * ZERO THEN IT WILL LOOP WAITING FOR "D7"
0592                         * TO GO TO ZERO. IF AFTER 65,536 TRIES IT
0592                         * TO GO TO ZERO. IF AFTER 65,536 TRIES IT
0593                         * IS STILL A ONE THE BOOT OPERATION WILL
0593                         * IS STILL A ONE THE BOOT OPERATION WILL
0594                         * BE STARTED OVER FROM THE BEGINING.
0594                         * BE STARTED OVER FROM THE BEGINING.
0595                         *
0595                         *
0596 fb57 5f                  CLRB  ;
0596 fb57 5f                  CLRB  ;
0597 fb58 34 04              DBOOT1 PSHS B     $FB55
0597 fb58 34 04              DBOOT1 PSHS B     $FB55
0598 fb5a 5f                  CLRB  ;
0598 fb5a 5f                  CLRB  ;
0599 fb5b 7d f0 10           DBOOT2 TST  CCREG
0599 fb5b 7d f0 10           DBOOT2 TST  CCREG
0600 fb5e 2a 0a               BPL  DBOOT3
0600 fb5e 2a 0a               BPL  DBOOT3
0601 fb60 5a                  DECB  ;
0601 fb60 5a                  DECB  ;
0602 fb61 26 f8               BNE  DBOOT2
0602 fb61 26 f8               BNE  DBOOT2
0603 fb63 35 04               PULS B
0603 fb63 35 04               PULS B
0604 fb65 5a                  DECB
0604 fb65 5a                  DECB
0605 fb66 26 f0               BNE  DBOOT1
0605 fb66 26 f0               BNE  DBOOT1
0606 fb68 20 8a               BRA  DBOOT
0606 fb68 20 8a               BRA  DBOOT
0607 fb6a 35 04              DBOOT3 PULS B
0607 fb6a 35 04              DBOOT3 PULS B
0608 fb6c b6 f0 20            LDA  COMREG
0608 fb6c b6 f0 20            LDA  COMREG
0609 fb6f 85 1c               BITA #$1C
0609 fb6f 85 1c               BITA #$1C
0610 fb71 27 01               BEQ  DBOOT4
0610 fb71 27 01               BEQ  DBOOT4
0611 fb73 39                  RTS  ;
0611 fb73 39                  RTS  ;
0612                         *
0612                         *
0613                         *
0613                         *
0614 fb74 c6 de              DBOOT4 LDB  #$DE
0614 fb74 c6 de              DBOOT4 LDB  #$DE
0615 fb76 f7 f0 24            STB  DRVREG
0615 fb76 f7 f0 24            STB  DRVREG
0616 fb79 8e c0 00            LDX  #$C000
0616 fb79 8e c0 00            LDX  #$C000
0617 fb7c af 4a               STX  10,U
0617 fb7c af 4a               STX  10,U
0618 fb7e 1f 34               TFR  U,S    $FB7B
0618 fb7e 1f 34               TFR  U,S    $FB7B
0619 fb80 3b                  RTI  ;
0619 fb80 3b                  RTI  ;
0620                         *
0620                         *
0621                         ***** LRA LOAD REAL ADDRESS *****
0621                         ***** LRA LOAD REAL ADDRESS *****
0622                         *
0622                         *
0623                         * THE FOLLOWING CODE LOADS THE 20-BIT
0623                         * THE FOLLOWING CODE LOADS THE 20-BIT
0624                         * PHYSICAL ADDRESS OF A MEMORY BYTE
0624                         * PHYSICAL ADDRESS OF A MEMORY BYTE
0625                         * INTO THE "A" AND "X" REGISTERS. THIS
0625                         * INTO THE "A" AND "X" REGISTERS. THIS
0626                         * ROUTINE IS ENTERED WITH THE LOGICAL
0626                         * ROUTINE IS ENTERED WITH THE LOGICAL
0627                         * ADDRESS OF A MEMORY BYTE IN THE "IX"
0627                         * ADDRESS OF A MEMORY BYTE IN THE "IX"
0628                         * REGISTER. EXIT IS MADE WITH THE HIGH-
0628                         * REGISTER. EXIT IS MADE WITH THE HIGH-
0629                         * ORDER FOUR BITS OF THE 20-BIT PHYSICAL
0629                         * ORDER FOUR BITS OF THE 20-BIT PHYSICAL
0630                         * ADDRESS IN THE "A" REGISTER, AND THE
0630                         * ADDRESS IN THE "A" REGISTER, AND THE
0631                         * LOW-ORDER 16-BITS OF THE 20-BIT
0631                         * LOW-ORDER 16-BITS OF THE 20-BIT
0632                         * PHYSICAL ADDRESS IN THE "IX" REGISTER.
0632                         * PHYSICAL ADDRESS IN THE "IX" REGISTER.
0633                         * ALL OTHER REGISTERS ARE PRESERVED.
0633                         * ALL OTHER REGISTERS ARE PRESERVED.
0634                         * THIS ROUTINE IS REQUIRED SINCE THE
0634                         * THIS ROUTINE IS REQUIRED SINCE THE
0635                         * DMAF1 AND DMAF2 DISK CONTROLLERS MUST
0635                         * DMAF1 AND DMAF2 DISK CONTROLLERS MUST
0636                         * PRESENT PHYSICAL ADDRESSES ON THE
0636                         * PRESENT PHYSICAL ADDRESSES ON THE
0637                         * SYSTEM BUS.
0637                         * SYSTEM BUS.
0638                         *
0638                         *
0639 fb81 34 36              LRA PSHS A,B,X,Y PUSH REGISTERS ON STACK
0639 fb81 34 36              LRA PSHS A,B,X,Y PUSH REGISTERS ON STACK
0640 fb83 a6 62               LDA  2,S GET MSB LOGICAL ADDR FRM X REG ON STACK
0640 fb83 a6 62               LDA  2,S GET MSB LOGICAL ADDR FRM X REG ON STACK
0641 fb85 44                  LSRA  ;
0641 fb85 44                  LSRA  ;
0642 fb86 44                  LSRA  ADJ FOR INDEXED INTO
0642 fb86 44                  LSRA  ADJ FOR INDEXED INTO
0643 fb87 44                  LSRA  CORRESPONDING LOCATION
0643 fb87 44                  LSRA  CORRESPONDING LOCATION
0644 fb88 44                  LSRA  IN LRA TABLE
0644 fb88 44                  LSRA  IN LRA TABLE
0645 fb89 10 8e df d0         LDY  #LRARAM LOAD LRA TABLE BASE ADDRESS
0645 fb89 10 8e df d0         LDY  #LRARAM LOAD LRA TABLE BASE ADDRESS
0646 fb8d e6 a6               LDB  A,Y GET PHYSICAL ADDR. DATA FROM LRA TABLE
0646 fb8d e6 a6               LDB  A,Y GET PHYSICAL ADDR. DATA FROM LRA TABLE
0647 fb8f 54                  LSRB  ADJ. REAL ADDR. TO REFLECT EXTENDED
0647 fb8f 54                  LSRB  ADJ. REAL ADDR. TO REFLECT EXTENDED
0648 fb90 54                  LSRB  PHYSICAL ADDRESS.
0648 fb90 54                  LSRB  PHYSICAL ADDRESS.
0649 fb91 54                  LSRB  EXTENDED MS 4-BITS ARE RETURNED
0649 fb91 54                  LSRB  EXTENDED MS 4-BITS ARE RETURNED
0650 fb92 54                  LSRB  IN THE "A" ACCUMULATOR
0650 fb92 54                  LSRB  IN THE "A" ACCUMULATOR
0651 fb93 e7 e4               STB  ,S MS 4 BITS IN A ACCUM. STORED ON STACK
0651 fb93 e7 e4               STB  ,S MS 4 BITS IN A ACCUM. STORED ON STACK
0652 fb95 e6 a6               LDB  A,Y LOAD REAL ADDRESS DATA FROM LRA TABLE
0652 fb95 e6 a6               LDB  A,Y LOAD REAL ADDRESS DATA FROM LRA TABLE
0653 fb97 53                  COMB  COMP TO ADJ FOR PHYSICAL ADDR. IN X REG
0653 fb97 53                  COMB  COMP TO ADJ FOR PHYSICAL ADDR. IN X REG
0654 fb98 58                  ASLB ADJ DATA FOR RELOCATION IN X REG
0654 fb98 58                  ASLB ADJ DATA FOR RELOCATION IN X REG
0655 fb99 58                  ASLB  ;
0655 fb99 58                  ASLB  ;
0656 fb9a 58                  ASLB       $FB97
0656 fb9a 58                  ASLB       $FB97
0657 fb9b 58                  ASLB  ;
0657 fb9b 58                  ASLB  ;
0658 fb9c a6 62               LDA  2,S GET MS BYTE OF LOGICAL ADDR.
0658 fb9c a6 62               LDA  2,S GET MS BYTE OF LOGICAL ADDR.
0659 fb9e 84 0f               ANDA #$0F MASK MS NIBBLE OF LOGICAL ADDRESS
0659 fb9e 84 0f               ANDA #$0F MASK MS NIBBLE OF LOGICAL ADDRESS
0660 fba0 a7 62               STA  2,S SAVE IT IN X REG ON STACK
0660 fba0 a7 62               STA  2,S SAVE IT IN X REG ON STACK
0661 fba2 ea 62               ORB  2,S SET MS BYTE IN X REG TO ADJ PHY ADDR.
0661 fba2 ea 62               ORB  2,S SET MS BYTE IN X REG TO ADJ PHY ADDR.
0662                         *
0662                         *
0663                         * PLUS LS NIBBLE OF LOGICAL ADDRESS
0663                         * PLUS LS NIBBLE OF LOGICAL ADDRESS
0664 fba4 e7 62               STB  2,S SAVE AS LS 16 BITS OF PHY ADDR IN X REG
0664 fba4 e7 62               STB  2,S SAVE AS LS 16 BITS OF PHY ADDR IN X REG
0665                         * ON STACK
0665                         * ON STACK
0666 fba6 35 36               PULS A,B,X,Y POP REGS. FROM STACK
0666 fba6 35 36               PULS A,B,X,Y POP REGS. FROM STACK
0667 fba8 39                  RTS  ;
0667 fba8 39                  RTS  ;
0668                         *
0668                         *
0669                         * DELAY LOOP
0669                         * DELAY LOOP
0670                         *
0670                         *
0671 fba9 34 04              DLY PSHS B SAVE CONTENTS OF "B"
0671 fba9 34 04              DLY PSHS B SAVE CONTENTS OF "B"
0672 fbab c6 20               LDB  #$20 GET LOOP DELAY VALUE
0672 fbab c6 20               LDB  #$20 GET LOOP DELAY VALUE
0673 fbad 5a                 SUB1 DECB  SUBTRACT ONE FROM VALUE
0673 fbad 5a                 SUB1 DECB  SUBTRACT ONE FROM VALUE
0674 fbae 26 fd               BNE  SUB1 LOOP UNTIL ZERO
0674 fbae 26 fd               BNE  SUB1 LOOP UNTIL ZERO
0675 fbb0 35 04               PULS B RESTORE CONTENTS OF "B"
0675 fbb0 35 04               PULS B RESTORE CONTENTS OF "B"
0676 fbb2 39                  RTS  ;
0676 fbb2 39                  RTS  ;
0677                         *
0677                         *
0678                         ***** "U" MINIDISK BOOT *****
0678                         ***** "U" MINIDISK BOOT *****
0679                         *
0679                         *
0680 fbb3 7d e0 18           MINBOOT TST  Comreg
0680 fbb3 7d e0 18           MINBOOT TST  Comreg
0681 fbb6 7f e0 14            CLR  Drvreg  SELECT DRIVE 0
0681 fbb6 7f e0 14            CLR  Drvreg  SELECT DRIVE 0
0682                         *
0682                         *
0683                         * DELAY BEFORE ISSUING RESTORE COMMAND
0683                         * DELAY BEFORE ISSUING RESTORE COMMAND
0684 fbb9 c6 03               LDB  #3
0684 fbb9 c6 03               LDB  #3
0685 fbbb 8e 00 00            LDX  #0
0685 fbbb 8e 00 00            LDX  #0
0686 fbbe 30 01              LOOP LEAX 1,X      $FBBB
0686 fbbe 30 01              LOOP LEAX 1,X      $FBBB
0687 fbc0 8c 00 00            CMPX #0
0687 fbc0 8c 00 00            CMPX #0
0688 fbc3 26 f9               BNE  LOOP
0688 fbc3 26 f9               BNE  LOOP
0689 fbc5 5a                  DECB                $FBC2
0689 fbc5 5a                  DECB                $FBC2
0690 fbc6 26 f6               BNE  LOOP
0690 fbc6 26 f6               BNE  LOOP
0691                         *
0691                         *
0692 fbc8 86 0f               LDA  #$0F *LOAD HEAD, VERIFY, 20msec/step
0692 fbc8 86 0f               LDA  #$0F *LOAD HEAD, VERIFY, 20msec/step
0693 fbca b7 e0 18            STA  Comreg  ISSUE RESTORE COMMAND
0693 fbca b7 e0 18            STA  Comreg  ISSUE RESTORE COMMAND
0694 fbcd 8d 37               BSR DELAY
0694 fbcd 8d 37               BSR DELAY
0695 fbcf f6 e0 18           LOOP1 LDB  Comreg      $FBCC
0695 fbcf f6 e0 18           LOOP1 LDB  Comreg      $FBCC
0696 fbd2 c5 01               BITB #1
0696 fbd2 c5 01               BITB #1
0697 fbd4 26 f9               BNE  LOOP1  LOOP UNTIL THRU
0697 fbd4 26 f9               BNE  LOOP1  LOOP UNTIL THRU
0698 fbd6 86 01               LDA  #1
0698 fbd6 86 01               LDA  #1
0699 fbd8 b7 e0 1a            STA  Secreg SET SECTOR REGISTER TO ONE
0699 fbd8 b7 e0 1a            STA  Secreg SET SECTOR REGISTER TO ONE
0700 fbdb 8d 29               BSR DELAY
0700 fbdb 8d 29               BSR DELAY
0701 fbdd 86 8c               LDA  #$8C  LOAD HEAD, DELAY 10msec,
0701 fbdd 86 8c               LDA  #$8C  LOAD HEAD, DELAY 10msec,
0702 fbdf b7 e0 18            STA  Comreg  AND READ SINGLE RECORD
0702 fbdf b7 e0 18            STA  Comreg  AND READ SINGLE RECORD
0703 fbe2 8d 22               BSR DELAY
0703 fbe2 8d 22               BSR DELAY
0704 fbe4 8e c0 00            LDX  #$C000
0704 fbe4 8e c0 00            LDX  #$C000
0705 fbe7 20 09               BRA  LOOP3
0705 fbe7 20 09               BRA  LOOP3
0706                         *
0706                         *
0707 fbe9 c5 02              LOOP2 BITB #2      $FBE6 DRQ?
0707 fbe9 c5 02              LOOP2 BITB #2      $FBE6 DRQ?
0708 fbeb 27 05               BEQ  LOOP3
0708 fbeb 27 05               BEQ  LOOP3
0709 fbed b6 e0 1b            LDA  Datreg
0709 fbed b6 e0 1b            LDA  Datreg
0710 fbf0 a7 80               STA  ,X+
0710 fbf0 a7 80               STA  ,X+
0711                         *
0711                         *
0712 fbf2 f6 e0 18           LOOP3 LDB  Comreg FETCH STATUS
0712 fbf2 f6 e0 18           LOOP3 LDB  Comreg FETCH STATUS
0713 fbf5 c5 01               BITB #1  BUSY?
0713 fbf5 c5 01               BITB #1  BUSY?
0714 fbf7 26 f0               BNE  LOOP2
0714 fbf7 26 f0               BNE  LOOP2
0715 fbf9 c5 2c               BITB #$2C CRC ERROR OR LOST DATA?
0715 fbf9 c5 2c               BITB #$2C CRC ERROR OR LOST DATA?
0716 fbfb 27 01               BEQ  LOOP4
0716 fbfb 27 01               BEQ  LOOP4
0717 fbfd 39                  RTS  ;
0717 fbfd 39                  RTS  ;
0718 fbfe 8e c0 00           LOOP4 LDX  #$C000        $FBFB
0718 fbfe 8e c0 00           LOOP4 LDX  #$C000        $FBFB
0719 fc01 af 4a               STX  10,U
0719 fc01 af 4a               STX  10,U
0720 fc03 1f 34               TFR  U,S
0720 fc03 1f 34               TFR  U,S
0721 fc05 3b                  RTI  ;
0721 fc05 3b                  RTI  ;
0722                         *
0722                         *
0723                         * DELAY
0723                         * DELAY
0724                         *
0724                         *
0725 fc06 c6 20              DELAY LDB  #$20
0725 fc06 c6 20              DELAY LDB  #$20
0726 fc08 5a                 LOOP5 DECB  ;
0726 fc08 5a                 LOOP5 DECB  ;
0727 fc09 26 fd               BNE  LOOP5
0727 fc09 26 fd               BNE  LOOP5
0728 fc0b 39                  RTS  ;
0728 fc0b 39                  RTS  ;
0729                         *
0729                         *
0730                         ***** "L" LOAD MIKBUG TAPE *****
0730                         ***** "L" LOAD MIKBUG TAPE *****
0731                         *
0731                         *
0732 fc0c 86 11              LOAD LDA  #$11  LOAD 'DC1' CASS. READ ON CODE
0732 fc0c 86 11              LOAD LDA  #$11  LOAD 'DC1' CASS. READ ON CODE
0733 fc0e 17 01 dd            LBSR OUTCH  OUTPUT IT TO TERMINAL PORT
0733 fc0e 17 01 dd            LBSR OUTCH  OUTPUT IT TO TERMINAL PORT
0734 fc11 7f df e2            CLR  ECHO  TURN OFF ECHO FLAG
0734 fc11 7f df e2            CLR  ECHO  TURN OFF ECHO FLAG
0735 fc14 17 01 ad           LOAD1 LBSR ECHON INPUT 8 BIT BYTE WITH NO ECHO
0735 fc14 17 01 ad           LOAD1 LBSR ECHON INPUT 8 BIT BYTE WITH NO ECHO
0736 fc17 81 53              LOAD2 CMPA #'S IS IT AN "S", START CHARACTER ?
0736 fc17 81 53              LOAD2 CMPA #'S IS IT AN "S", START CHARACTER ?
0737 fc19 26 f9               BNE  LOAD1 IF NOT, DISCARD AND GET NEXT CHAR.
0737 fc19 26 f9               BNE  LOAD1 IF NOT, DISCARD AND GET NEXT CHAR.
0738 fc1b 17 01 a6            LBSR ECHON
0738 fc1b 17 01 a6            LBSR ECHON
0739 fc1e 81 39               CMPA #'9 IS IT A "9" , END OF FILE CHAR ?
0739 fc1e 81 39               CMPA #'9 IS IT A "9" , END OF FILE CHAR ?
0740 fc20 27 3d               BEQ  LOAD21 IF SO, EXIT LOAD
0740 fc20 27 3d               BEQ  LOAD21 IF SO, EXIT LOAD
0741 fc22 81 31               CMPA #'1 IS IT A "1" , FILE LOAD CHAR ?
0741 fc22 81 31               CMPA #'1 IS IT A "1" , FILE LOAD CHAR ?
0742 fc24 26 f1               BNE  LOAD2 IF NOT, LOOK FOR START CHAR.
0742 fc24 26 f1               BNE  LOAD2 IF NOT, LOOK FOR START CHAR.
0743 fc26 17 01 17            LBSR BYTE INPUT BYTE COUNT
0743 fc26 17 01 17            LBSR BYTE INPUT BYTE COUNT
0744 fc29 34 02               PSHS A PUSH COUNT ON STACK
0744 fc29 34 02               PSHS A PUSH COUNT ON STACK
0745 fc2b 29 26               BVS  LODERR (V) C-CODE SET, ILLEGAL HEX
0745 fc2b 29 26               BVS  LODERR (V) C-CODE SET, ILLEGAL HEX
0746 fc2d 17 00 ff            LBSR IN1ADR INPUT LOAD ADDRESS
0746 fc2d 17 00 ff            LBSR IN1ADR INPUT LOAD ADDRESS
0747 fc30 29 21               BVS  LODERR (V) C-CODE SET, ADDR NOT HEX
0747 fc30 29 21               BVS  LODERR (V) C-CODE SET, ADDR NOT HEX
0748 fc32 34 10               PSHS X PUSH ADDR ON STACK
0748 fc32 34 10               PSHS X PUSH ADDR ON STACK
0749 fc34 e6 e0               LDB  ,S+ LOAD MSB OF ADDR AS CHECKSUM BYTE
0749 fc34 e6 e0               LDB  ,S+ LOAD MSB OF ADDR AS CHECKSUM BYTE
0750 fc36 eb e0               ADDB ,S+ ADD LSB OF ADDR TO CHECKSUM
0750 fc36 eb e0               ADDB ,S+ ADD LSB OF ADDR TO CHECKSUM
0751 fc38 eb e4               ADDB ,S ADD BYTE COUNT BYTE TO CHECKSUM
0751 fc38 eb e4               ADDB ,S ADD BYTE COUNT BYTE TO CHECKSUM
0752 fc3a 6a e4               DEC  ,S $FC37 DECREMENT BYTE COUNT 2 TO BYPASS
0752 fc3a 6a e4               DEC  ,S $FC37 DECREMENT BYTE COUNT 2 TO BYPASS
0753 fc3c 6a e4               DEC  ,S ADDRESS BYTES.
0753 fc3c 6a e4               DEC  ,S ADDRESS BYTES.
0754 fc3e 34 04              LOAD10 PSHS B PUSH CHECKSUM ON STACK
0754 fc3e 34 04              LOAD10 PSHS B PUSH CHECKSUM ON STACK
0755 fc40 17 00 fd            LBSR BYTE INPUT DATA BYTE (2 HEX CHAR)
0755 fc40 17 00 fd            LBSR BYTE INPUT DATA BYTE (2 HEX CHAR)
0756 fc43 35 04               PULS B POP CHECKSUM FROM STACK
0756 fc43 35 04               PULS B POP CHECKSUM FROM STACK
0757 fc45 29 0c               BVS  LODERR (V) SET, DATA BYTE NOT HEX
0757 fc45 29 0c               BVS  LODERR (V) SET, DATA BYTE NOT HEX
0758 fc47 34 02               PSHS A PUSH DATA BYTE ON STACK
0758 fc47 34 02               PSHS A PUSH DATA BYTE ON STACK
0759 fc49 eb e0               ADDB ,S+ ADD DATA TO CHECKSUM, AUTO INC STACK
0759 fc49 eb e0               ADDB ,S+ ADD DATA TO CHECKSUM, AUTO INC STACK
0760 fc4b 6a e4               DEC  ,S DECREMENT BYTE COUNT 1
0760 fc4b 6a e4               DEC  ,S DECREMENT BYTE COUNT 1
0761 fc4d 27 05               BEQ  LOAD16 IF BYTE COUNT ZERO, TEST CHECKSUM
0761 fc4d 27 05               BEQ  LOAD16 IF BYTE COUNT ZERO, TEST CHECKSUM
0762 fc4f a7 80               STA  ,X+ SAVE DATA BYTE IN MEMORY
0762 fc4f a7 80               STA  ,X+ SAVE DATA BYTE IN MEMORY
0763 fc51 20 eb               BRA  LOAD10 GET NEXT DATA BYTE
0763 fc51 20 eb               BRA  LOAD10 GET NEXT DATA BYTE
0764 fc53 5f                 LODERR CLRB  ;ERROR CONDITION, ZERO CHECKSUM  ;
0764 fc53 5f                 LODERR CLRB  ;ERROR CONDITION, ZERO CHECKSUM  ;
0765 fc54 35 02              LOAD16 PULS A ADJUST STACK (REMOVE BYTE COUNT)
0765 fc54 35 02              LOAD16 PULS A ADJUST STACK (REMOVE BYTE COUNT)
0766 fc56 c1 ff               CMPB #$FF CHECKSUM OK?
0766 fc56 c1 ff               CMPB #$FF CHECKSUM OK?
0767 fc58 27 b2               BEQ  LOAD IF SO, LOAD NEXT LINE
0767 fc58 27 b2               BEQ  LOAD IF SO, LOAD NEXT LINE
0768 fc5a 86 3f               LDA  #'? LOAD (?) ERROR INDICATOR
0768 fc5a 86 3f               LDA  #'? LOAD (?) ERROR INDICATOR
0769 fc5c 17 01 8f            LBSR OUTCH OUTPUT IT TO TERMINAL
0769 fc5c 17 01 8f            LBSR OUTCH OUTPUT IT TO TERMINAL
0770 fc5f 73 df e2           LOAD21 COM  ECHO TURN ECHO ON
0770 fc5f 73 df e2           LOAD21 COM  ECHO TURN ECHO ON
0771 fc62 86 13               LDA  #$13   $FC5F LOAD 'DC3' CASS. READ OFF CODE
0771 fc62 86 13               LDA  #$13   $FC5F LOAD 'DC3' CASS. READ OFF CODE
0772 fc64 16 01 87            LBRA OUTCH OUTPUT IT
0772 fc64 16 01 87            LBRA OUTCH OUTPUT IT
0773                         *
0773                         *
0774                         ***** "P" PUNCH MIKBUG TAPE *****
0774                         ***** "P" PUNCH MIKBUG TAPE *****
0775                         *
0775                         *
0776 fc67 6f e2              PUNCH CLR  ,-S CLEAR RESERVED BYTE ON STACK
0776 fc67 6f e2              PUNCH CLR  ,-S CLEAR RESERVED BYTE ON STACK
0777 fc69 17 00 b8            LBSR IN2ADR GET BEGIN AND END ADDRESS
0777 fc69 17 00 b8            LBSR IN2ADR GET BEGIN AND END ADDRESS
0778 fc6c 34 30               PSHS X,Y SAVE ADDRESSES ON STACK
0778 fc6c 34 30               PSHS X,Y SAVE ADDRESSES ON STACK
0779 fc6e 29 4a               BVS  PUNEXT (V) C-CODE SET, EXIT PUNCH
0779 fc6e 29 4a               BVS  PUNEXT (V) C-CODE SET, EXIT PUNCH
0780 fc70 ac 62               CMPX 2,S COMPARE BEGIN TO END ADDR
0780 fc70 ac 62               CMPX 2,S COMPARE BEGIN TO END ADDR
0781 fc72 25 46               BCS  PUNEXT IF BEGIN GREATER THAN END, EXIT PUNCH
0781 fc72 25 46               BCS  PUNEXT IF BEGIN GREATER THAN END, EXIT PUNCH
0782 fc74 30 01               LEAX 1,X INCREMENT END ADDRESS
0782 fc74 30 01               LEAX 1,X INCREMENT END ADDRESS
0783 fc76 af e4               STX  ,S STORE END ADDR ON STACK
0783 fc76 af e4               STX  ,S STORE END ADDR ON STACK
0784 fc78 86 12               LDA  #$12 LOAD 'DC2' PUNCH ON CODE
0784 fc78 86 12               LDA  #$12 LOAD 'DC2' PUNCH ON CODE
0785 fc7a 17 01 71            LBSR OUTCH OUTPUT IT TO TERMINAL
0785 fc7a 17 01 71            LBSR OUTCH OUTPUT IT TO TERMINAL
0786 fc7d ec e4              PUNCH2 LDD  ,S LOAD END ADDR IN D-ACC
0786 fc7d ec e4              PUNCH2 LDD  ,S LOAD END ADDR IN D-ACC
0787 fc7f a3 62               SUBD 2,S SUBTRACT BEGIN FROM END
0787 fc7f a3 62               SUBD 2,S SUBTRACT BEGIN FROM END
0788 fc81 27 06               BEQ  PUNCH3 SAME, PUNCH 32 BYTES DEFAULT
0788 fc81 27 06               BEQ  PUNCH3 SAME, PUNCH 32 BYTES DEFAULT
0789 fc83 10 83 00 20         CMPD #$20 LESS THAN 32 BYTES?
0789 fc83 10 83 00 20         CMPD #$20 LESS THAN 32 BYTES?
0790 fc87 23 02               BLS  PUNCH4 PUNCH THAT MANY BYTES
0790 fc87 23 02               BLS  PUNCH4 PUNCH THAT MANY BYTES
0791 fc89 c6 20              PUNCH3 LDB  #$20 LOAD BYTE COUNT OF 32.
0791 fc89 c6 20              PUNCH3 LDB  #$20 LOAD BYTE COUNT OF 32.
0792 fc8b e7 64              PUNCH4 STB  4,S STORE ON STACK AS BYTE COUNT
0792 fc8b e7 64              PUNCH4 STB  4,S STORE ON STACK AS BYTE COUNT
0793 fc8d 8e fe eb            LDX  #MSG20 POINT TO MSG "S1"
0793 fc8d 8e fe eb            LDX  #MSG20 POINT TO MSG "S1"
0794 fc90 17 01 1a            LBSR PSTRNG PRINT MSG
0794 fc90 17 01 1a            LBSR PSTRNG PRINT MSG
0795 fc93 cb 03               ADDB #3 ADD 3 BYTES TO BYTE COUNT
0795 fc93 cb 03               ADDB #3 ADD 3 BYTES TO BYTE COUNT
0796 fc95 1f 98               TFR  B,A GET BYTE COUNT IN A-ACC TO PUNCH
0796 fc95 1f 98               TFR  B,A GET BYTE COUNT IN A-ACC TO PUNCH
0797 fc97 17 00 e7            LBSR OUT2H OUTPUT BYTE COUNT
0797 fc97 17 00 e7            LBSR OUT2H OUTPUT BYTE COUNT
0798 fc9a ae 62               LDX  2,S LOAD BEGIN ADDRESS
0798 fc9a ae 62               LDX  2,S LOAD BEGIN ADDRESS
0799 fc9c 17 00 da            LBSR OUT4H PUNCH ADDRESS
0799 fc9c 17 00 da            LBSR OUT4H PUNCH ADDRESS
0800 fc9f eb 62               ADDB 2,S ADD ADDR MSB TO CHECKSUM
0800 fc9f eb 62               ADDB 2,S ADD ADDR MSB TO CHECKSUM
0801 fca1 eb 63               ADDB 3,S ADD ADDR LSB TO CHECKSUM
0801 fca1 eb 63               ADDB 3,S ADD ADDR LSB TO CHECKSUM
0802 fca3 eb 84              PUNCHL ADDB ,X ADD DATA BYTE TO CHECKSUM
0802 fca3 eb 84              PUNCHL ADDB ,X ADD DATA BYTE TO CHECKSUM
0803 fca5 a6 80               LDA  ,X+ LOAD DATA BYTE TO PUNCH
0803 fca5 a6 80               LDA  ,X+ LOAD DATA BYTE TO PUNCH
0804 fca7 17 00 d7            LBSR OUT2H OUTPUT DATA BYTE
0804 fca7 17 00 d7            LBSR OUT2H OUTPUT DATA BYTE
0805 fcaa 6a 64               DEC  4,S DECREMENT BYTE COUNT
0805 fcaa 6a 64               DEC  4,S DECREMENT BYTE COUNT
0806 fcac 26 f5               BNE  PUNCHL NOT DONE, PUNCH NEXT BYTE
0806 fcac 26 f5               BNE  PUNCHL NOT DONE, PUNCH NEXT BYTE
0807 fcae 53                  COMB  1's COMPLIMENT CHECKSUM BYTE
0807 fcae 53                  COMB  1's COMPLIMENT CHECKSUM BYTE
0808 fcaf 1f 98               TFR  B,A GET IT IN A-ACC TO PUNCH
0808 fcaf 1f 98               TFR  B,A GET IT IN A-ACC TO PUNCH
0809 fcb1 17 00 cd            LBSR OUT2H OUTPUT CHECKSUM BYTE
0809 fcb1 17 00 cd            LBSR OUT2H OUTPUT CHECKSUM BYTE
0810 fcb4 af 62               STX  2,S SAVE X-REG IN STACK AS NEW PUNCH ADDR
0810 fcb4 af 62               STX  2,S SAVE X-REG IN STACK AS NEW PUNCH ADDR
0811 fcb6 ac e4               CMPX ,S COMPARE IT TO END ADDR
0811 fcb6 ac e4               CMPX ,S COMPARE IT TO END ADDR
0812 fcb8 26 c3               BNE  PUNCH2      $FCB5 PUNCH NOT DONE, CONT.
0812 fcb8 26 c3               BNE  PUNCH2      $FCB5 PUNCH NOT DONE, CONT.
0813 fcba 86 14              PUNEXT LDA  #$14 LOAD 'DC4' PUNCH OFF CODE
0813 fcba 86 14              PUNEXT LDA  #$14 LOAD 'DC4' PUNCH OFF CODE
0814 fcbc 17 01 2f            LBSR OUTCH OUTPUT IT
0814 fcbc 17 01 2f            LBSR OUTCH OUTPUT IT
0815 fcbf 32 65               LEAS 5,S READJUST STACK POINTER
0815 fcbf 32 65               LEAS 5,S READJUST STACK POINTER
0816 fcc1 39                  RTS  ;
0816 fcc1 39                  RTS  ;
0817                         *
0817                         *
0818                         *
0818                         *
0819 fcc2 8e fe ae           PRTSP LDX  #MSG10 POINT TO MSG "SP="
0819 fcc2 8e fe ae           PRTSP LDX  #MSG10 POINT TO MSG "SP="
0820 fcc5 17 00 f5            LBSR PDATA  PRINT MSG
0820 fcc5 17 00 f5            LBSR PDATA  PRINT MSG
0821 fcc8 1f 31               TFR  U,X
0821 fcc8 1f 31               TFR  U,X
0822 fcca 16 00 ac            LBRA OUT4H
0822 fcca 16 00 ac            LBRA OUT4H
0823 fccd 8e fe ba           PRTUS LDX  #MSG12 POINT TO MSG "US="
0823 fccd 8e fe ba           PRTUS LDX  #MSG12 POINT TO MSG "US="
0824 fcd0 17 00 ea            LBSR PDATA  PRINT MSG
0824 fcd0 17 00 ea            LBSR PDATA  PRINT MSG
0825 fcd3 ae 48               LDX  8,U
0825 fcd3 ae 48               LDX  8,U
0826 fcd5 16 00 a1            LBRA OUT4H
0826 fcd5 16 00 a1            LBRA OUT4H
0827 fcd8 8e fe cc           PRTDP LDX  #MSG15 POINT TO MSG "DP="
0827 fcd8 8e fe cc           PRTDP LDX  #MSG15 POINT TO MSG "DP="
0828 fcdb 17 00 df            LBSR PDATA  PRINT MSG
0828 fcdb 17 00 df            LBSR PDATA  PRINT MSG
0829 fcde a6 43               LDA  3,U
0829 fcde a6 43               LDA  3,U
0830 fce0 16 00 9e            LBRA OUT2H OUTPUT HEX BYTE AS ASCII
0830 fce0 16 00 9e            LBRA OUT2H OUTPUT HEX BYTE AS ASCII
0831 fce3 8e fe c6           PRTIX LDX  #MSG14 POINT TO MSG "IX="
0831 fce3 8e fe c6           PRTIX LDX  #MSG14 POINT TO MSG "IX="
0832 fce6 17 00 d4            LBSR PDATA  PRINT MSG
0832 fce6 17 00 d4            LBSR PDATA  PRINT MSG
0833 fce9 ae 44               LDX  4,U      $FCE6
0833 fce9 ae 44               LDX  4,U      $FCE6
0834 fceb 16 00 8b            LBRA OUT4H
0834 fceb 16 00 8b            LBRA OUT4H
0835 fcee 8e fe c0           PRTIY LDX  #MSG13 POINT TO MSG "IY="
0835 fcee 8e fe c0           PRTIY LDX  #MSG13 POINT TO MSG "IY="
0836 fcf1 17 00 c9            LBSR PDATA  PRINT MSG
0836 fcf1 17 00 c9            LBSR PDATA  PRINT MSG
0837 fcf4 ae 46               LDX  6,U
0837 fcf4 ae 46               LDX  6,U
0838 fcf6 16 00 80            LBRA  OUT4H
0838 fcf6 16 00 80            LBRA  OUT4H
0839 fcf9 8e fe b4           PRTPC LDX  #MSG11 POINT TO MSG "PC="
0839 fcf9 8e fe b4           PRTPC LDX  #MSG11 POINT TO MSG "PC="
0840 fcfc 17 00 be            LBSR PDATA  PRINT MSG
0840 fcfc 17 00 be            LBSR PDATA  PRINT MSG
0841 fcff ae 4a               LDX  10,U
0841 fcff ae 4a               LDX  10,U
0842 fd01 20 76               BRA  OUT4H
0842 fd01 20 76               BRA  OUT4H
0843 fd03 8e fe d2           PRTA LDX  #MSG16 POINT TO MSG "A="
0843 fd03 8e fe d2           PRTA LDX  #MSG16 POINT TO MSG "A="
0844 fd06 17 00 b4            LBSR PDATA  PRINT MSG
0844 fd06 17 00 b4            LBSR PDATA  PRINT MSG
0845 fd09 a6 41               LDA  1,U
0845 fd09 a6 41               LDA  1,U
0846 fd0b 20 74               BRA OUT2H OUTPUT HEX BYTE AS ASCII
0846 fd0b 20 74               BRA OUT2H OUTPUT HEX BYTE AS ASCII
0847 fd0d 8e fe d7           PRTB LDX  #MSG17 POINT TO MSG "B="
0847 fd0d 8e fe d7           PRTB LDX  #MSG17 POINT TO MSG "B="
0848 fd10 17 00 aa            LBSR PDATA  PRINT MSG
0848 fd10 17 00 aa            LBSR PDATA  PRINT MSG
0849 fd13 a6 42               LDA  2,U
0849 fd13 a6 42               LDA  2,U
0850 fd15 20 6a               BRA OUT2H OUTPUT HEX BYTE AS ASCII
0850 fd15 20 6a               BRA OUT2H OUTPUT HEX BYTE AS ASCII
0851 fd17 8e fe dc           PRTCC LDX  #MSG18 POINT TO MSG "CC:"
0851 fd17 8e fe dc           PRTCC LDX  #MSG18 POINT TO MSG "CC:"
0852 fd1a 17 00 a0            LBSR PDATA  PRINT MSG
0852 fd1a 17 00 a0            LBSR PDATA  PRINT MSG
0853 fd1d a6 c4               LDA  ,U
0853 fd1d a6 c4               LDA  ,U
0854 fd1f 8e fe e3            LDX  #MSG19 POINT TO MSG "EFHINZVC"
0854 fd1f 8e fe e3            LDX  #MSG19 POINT TO MSG "EFHINZVC"
0855 fd22 20 73               BRA BIASCI OUTPUT IN BINARY/ASCII FORMAT
0855 fd22 20 73               BRA BIASCI OUTPUT IN BINARY/ASCII FORMAT
0856                         *
0856                         *
0857                         * THE FOLLOWING ROUTINE LOOPS WAITING FOR THE
0857                         * THE FOLLOWING ROUTINE LOOPS WAITING FOR THE
0858                         * OPERATOR TO INPUT TWO VALID HEX ADDRESSES.
0858                         * OPERATOR TO INPUT TWO VALID HEX ADDRESSES.
0859                         * THE FIRST ADDRESS INPUT IS RETURNED IN "IY".
0859                         * THE FIRST ADDRESS INPUT IS RETURNED IN "IY".
0860                         * THE SECOND IS RETURNED IN "IX". THE "V" BIT
0860                         * THE SECOND IS RETURNED IN "IX". THE "V" BIT
0861                         * IN THE C-CODE REG. IS SET IF AN INVALID HEX
0861                         * IN THE C-CODE REG. IS SET IF AN INVALID HEX
0862                         * ADDRESS IS INPUT.
0862                         * ADDRESS IS INPUT.
0863                         *
0863                         *
0864 fd24 8d 09              IN2ADR BSR IN1ADR GET FIRST ADDRESS
0864 fd24 8d 09              IN2ADR BSR IN1ADR GET FIRST ADDRESS
0865 fd26 29 4e               BVS NOTHEX EXIT IF NOT VALID HEX
0865 fd26 29 4e               BVS NOTHEX EXIT IF NOT VALID HEX
0866 fd28 1f 12               TFR  X,Y SAVE FIRST ADDR. IN "IY"
0866 fd28 1f 12               TFR  X,Y SAVE FIRST ADDR. IN "IY"
0867 fd2a 86 2d               LDA #'-
0867 fd2a 86 2d               LDA #'-
0868 fd2c 17 00 bf            LBSR OUTCH PRINT " - "
0868 fd2c 17 00 bf            LBSR OUTCH PRINT " - "
0869                         *
0869                         *
0870                         * THE FOLLOWING ROUTINE LOOPS WAITING FOR THE
0870                         * THE FOLLOWING ROUTINE LOOPS WAITING FOR THE
0871                         * OPERATOR TO INPUT ONE VALID HEX ADDRESS. THE
0871                         * OPERATOR TO INPUT ONE VALID HEX ADDRESS. THE
0872                         * ADDRESS IS RETURNED IN THE "X" REGISTER.
0872                         * ADDRESS IS RETURNED IN THE "X" REGISTER.
0873                         *
0873                         *
0874 fd2f 8d 0f              IN1ADR BSR BYTE INPUT BYTE (2 HEX CHAR)
0874 fd2f 8d 0f              IN1ADR BSR BYTE INPUT BYTE (2 HEX CHAR)
0875 fd31 29 43               BVS NOTHEX EXIT IF NOT VALID HEX
0875 fd31 29 43               BVS NOTHEX EXIT IF NOT VALID HEX
0876 fd33 1f 01               TFR  D,X
0876 fd33 1f 01               TFR  D,X
0877 fd35 8d 09               BSR BYTE INPUT BYTE (2 HEX CHAR)
0877 fd35 8d 09               BSR BYTE INPUT BYTE (2 HEX CHAR)
0878 fd37 29 3d               BVS NOTHEX
0878 fd37 29 3d               BVS NOTHEX
0879 fd39 34 10               PSHS X
0879 fd39 34 10               PSHS X
0880 fd3b a7 61               STA  1,S
0880 fd3b a7 61               STA  1,S
0881 fd3d 35 10               PULS X
0881 fd3d 35 10               PULS X
0882 fd3f 39                  RTS   ;
0882 fd3f 39                  RTS   ;
0883                         *
0883                         *
0884                         ***** INPUT BYTE (2 HEX CHAR.) *****
0884                         ***** INPUT BYTE (2 HEX CHAR.) *****
0885                         *
0885                         *
0886 fd40 8d 11              BYTE BSR INHEX GET HEX LEFT
0886 fd40 8d 11              BYTE BSR INHEX GET HEX LEFT
0887 fd42 29 32               BVS NOTHEX EXIT IF NOT VALID HEX
0887 fd42 29 32               BVS NOTHEX EXIT IF NOT VALID HEX
0888 fd44 48                  ASLA   ;
0888 fd44 48                  ASLA   ;
0889 fd45 48                  ASLA   ;
0889 fd45 48                  ASLA   ;
0890 fd46 48                  ASLA   ; SHIFT INTO LEFT NIBBLE
0890 fd46 48                  ASLA   ; SHIFT INTO LEFT NIBBLE
0891 fd47 48                  ASLA   ;
0891 fd47 48                  ASLA   ;
0892 fd48 1f 89               TFR  A,B PUT HEXL IN "B"
0892 fd48 1f 89               TFR  A,B PUT HEXL IN "B"
0893 fd4a 8d 07               BSR INHEX GET HEX RIGHT
0893 fd4a 8d 07               BSR INHEX GET HEX RIGHT
0894 fd4c 29 28               BVS NOTHEX EXIT IF NOT VALID HEX
0894 fd4c 29 28               BVS NOTHEX EXIT IF NOT VALID HEX
0895 fd4e 34 04               PSHS B PUSH HEXL ON STACK
0895 fd4e 34 04               PSHS B PUSH HEXL ON STACK
0896 fd50 ab e0               ADDA ,S+ ADD HEXL TO HEXR AND ADJ. STK
0896 fd50 ab e0               ADDA ,S+ ADD HEXL TO HEXR AND ADJ. STK
0897 fd52 39                  RTS  RETURN WITH HEX L&R IN "A"
0897 fd52 39                  RTS  RETURN WITH HEX L&R IN "A"
0898                         *
0898                         *
0899                         *
0899                         *
0900 fd53 8d 6f              INHEX BSR ECHON INPUT ASCII CHAR.
0900 fd53 8d 6f              INHEX BSR ECHON INPUT ASCII CHAR.
0901 fd55 81 30               CMPA #'0 IS IT > OR = "0" ?
0901 fd55 81 30               CMPA #'0 IS IT > OR = "0" ?
0902 fd57 25 1d               BCS NOTHEX IF LESS IT AIN'T HEX
0902 fd57 25 1d               BCS NOTHEX IF LESS IT AIN'T HEX
0903 fd59 81 39               CMPA #'9 IS IT < OR = "9" ?
0903 fd59 81 39               CMPA #'9 IS IT < OR = "9" ?
0904 fd5b 22 03               BHI INHEXA IF > MAYBE IT'S ALPHA
0904 fd5b 22 03               BHI INHEXA IF > MAYBE IT'S ALPHA
0905 fd5d 80 30               SUBA #$30 ASCII ADJ. NUMERIC
0905 fd5d 80 30               SUBA #$30 ASCII ADJ. NUMERIC
0906 fd5f 39                  RTS  ;
0906 fd5f 39                  RTS  ;
0907                         *
0907                         *
0908                         *
0908                         *
0909 fd60 81 41              INHEXA CMPA #'A IS IT > OR = "A"
0909 fd60 81 41              INHEXA CMPA #'A IS IT > OR = "A"
0910 fd62 25 12               BCS NOTHEX IF LESS IT AIN'T HEX
0910 fd62 25 12               BCS NOTHEX IF LESS IT AIN'T HEX
0911 fd64 81 46               CMPA #'F IS IT < OR = "F" ?
0911 fd64 81 46               CMPA #'F IS IT < OR = "F" ?
0912 fd66 22 03               BHI INHEXL IF > IT AIN'T HEX
0912 fd66 22 03               BHI INHEXL IF > IT AIN'T HEX
0913 fd68 80 37               SUBA #$37 ASCII ADJ. ALPHA
0913 fd68 80 37               SUBA #$37 ASCII ADJ. ALPHA
0914 fd6a 39                  RTS  ;
0914 fd6a 39                  RTS  ;
0915                         *
0915                         *
0916 fd6b 81 61              INHEXL CMPA #'a IS IT > OR = "a"
0916 fd6b 81 61              INHEXL CMPA #'a IS IT > OR = "a"
0917 fd6d 25 07               BCS NOTHEX IF LESS IT AIN'T HEX
0917 fd6d 25 07               BCS NOTHEX IF LESS IT AIN'T HEX
0918 fd6f 81 66               CMPA #'f IS IT < "f"
0918 fd6f 81 66               CMPA #'f IS IT < "f"
0919 fd71 22 03               BHI NOTHEX IF > IT AIN'T HEX
0919 fd71 22 03               BHI NOTHEX IF > IT AIN'T HEX
0920 fd73 80 57               SUBA #$57 ADJUST TO LOWER CASE
0920 fd73 80 57               SUBA #$57 ADJUST TO LOWER CASE
0921 fd75 39                  RTS  ;
0921 fd75 39                  RTS  ;
0922                         *
0922                         *
0923                         *
0923                         *
0924 fd76 1a 02              NOTHEX ORCC #2 SET (V) FLAG IN C-CODES REGISTER
0924 fd76 1a 02              NOTHEX ORCC #2 SET (V) FLAG IN C-CODES REGISTER
0925 fd78 39                  RTS  ;
0925 fd78 39                  RTS  ;
0926                         *
0926                         *
0927                         *
0927                         *
0928 fd79 34 10              OUT4H PSHS X PUSH X-REG. ON THE STACK
0928 fd79 34 10              OUT4H PSHS X PUSH X-REG. ON THE STACK
0929 fd7b 35 02               PULS A POP MS BYTE OF X-REG INTO A-ACC.
0929 fd7b 35 02               PULS A POP MS BYTE OF X-REG INTO A-ACC.
0930 fd7d 8d 02               BSR OUTHL OUTPUT HEX LEFT
0930 fd7d 8d 02               BSR OUTHL OUTPUT HEX LEFT
0931 fd7f 35 02               PULS A POP LS BYTE OF X-REG INTO A-ACC.
0931 fd7f 35 02               PULS A POP LS BYTE OF X-REG INTO A-ACC.
0932 fd81                    OUTHL EQU *
0932 fd81                    OUTHL EQU *
0933 fd81 34 02              OUT2H PSHS A SAVE IT BACK ON STACK
0933 fd81 34 02              OUT2H PSHS A SAVE IT BACK ON STACK
0934 fd83 44                  LSRA CONVERT UPPER HEX NIBBLE TO ASCII
0934 fd83 44                  LSRA CONVERT UPPER HEX NIBBLE TO ASCII
0935 fd84 44                  LSRA  ;
0935 fd84 44                  LSRA  ;
0936 fd85 44                  LSRA  ;
0936 fd85 44                  LSRA  ;
0937 fd86 44                  LSRA  ;
0937 fd86 44                  LSRA  ;
0938 fd87 8d 04               BSR XASCII PRINT HEX NIBBLE AS ASCII
0938 fd87 8d 04               BSR XASCII PRINT HEX NIBBLE AS ASCII
0939 fd89 35 02              OUTHR PULS A CONVERT LOWER HEX NIBBLE TO ASCII
0939 fd89 35 02              OUTHR PULS A CONVERT LOWER HEX NIBBLE TO ASCII
0940 fd8b 84 0f               ANDA #$0F STRIP LEFT NIBBLE
0940 fd8b 84 0f               ANDA #$0F STRIP LEFT NIBBLE
0941 fd8d 8b 30              XASCII ADDA #$30 ASCII ADJ
0941 fd8d 8b 30              XASCII ADDA #$30 ASCII ADJ
0942 fd8f 81 39               CMPA #$39 IS IT < OR = "9" ?
0942 fd8f 81 39               CMPA #$39 IS IT < OR = "9" ?
0943 fd91 2f 02               BLE  OUTC IF LESS, OUTPUT IT
0943 fd91 2f 02               BLE  OUTC IF LESS, OUTPUT IT
0944 fd93 8b 07               ADDA #7 IF > MAKE ASCII LETTER
0944 fd93 8b 07               ADDA #7 IF > MAKE ASCII LETTER
0945 fd95 20 57              OUTC BRA  OUTCH OUTPUT CHAR
0945 fd95 20 57              OUTC BRA  OUTCH OUTPUT CHAR
0946                         *
0946                         *
0947                         * BINARY / ASCII --- THIS ROUTINE
0947                         * BINARY / ASCII --- THIS ROUTINE
0948                         * OUTPUTS A BYTE IN ENHANCED
0948                         * OUTPUTS A BYTE IN ENHANCED
0949                         * BINARY FORMAT. THE ENHANCEMENT
0949                         * BINARY FORMAT. THE ENHANCEMENT
0950                         * IS DONE BY SUBSTITUTING ASCII
0950                         * IS DONE BY SUBSTITUTING ASCII
0951                         * LETTERS FOR THE ONES IN THE BYTE.
0951                         * LETTERS FOR THE ONES IN THE BYTE.
0952                         * THE ASCII ENHANCEMENT LETTERS
0952                         * THE ASCII ENHANCEMENT LETTERS
0953                         * ARE OBTAINED FROM THE STRING
0953                         * ARE OBTAINED FROM THE STRING
0954                         * POINTED TO BY THE INDEX REG. "X".
0954                         * POINTED TO BY THE INDEX REG. "X".
0955                         *
0955                         *
0956 fd97 34 02              BIASCI PSHS A SAVE "A" ON STACK
0956 fd97 34 02              BIASCI PSHS A SAVE "A" ON STACK
0957 fd99 c6 08               LDB  #8 PRESET LOOP# TO BITS PER BYTE
0957 fd99 c6 08               LDB  #8 PRESET LOOP# TO BITS PER BYTE
0958 fd9b a6 80              OUTBA LDA ,X+ GET LETTER FROM STRING
0958 fd9b a6 80              OUTBA LDA ,X+ GET LETTER FROM STRING
0959 fd9d 68 e4               ASL  ,S TEST BYTE FOR "1" IN B7
0959 fd9d 68 e4               ASL  ,S TEST BYTE FOR "1" IN B7
0960 fd9f 25 02               BCS PRTBA IF ONE PRINT LETTER
0960 fd9f 25 02               BCS PRTBA IF ONE PRINT LETTER
0961 fda1 86 2d               LDA #'- IF ZERO PRINT "-"
0961 fda1 86 2d               LDA #'- IF ZERO PRINT "-"
0962 fda3 8d 49              PRTBA BSR OUTCH PRINT IT
0962 fda3 8d 49              PRTBA BSR OUTCH PRINT IT
0963 fda5 8d 45               BSR OUT1S PRINT SPACE
0963 fda5 8d 45               BSR OUT1S PRINT SPACE
0964 fda7 5a                  DECB SUB 1 FROM #BITS YET TO PRINT
0964 fda7 5a                  DECB SUB 1 FROM #BITS YET TO PRINT
0965 fda8 26 f1               BNE OUTBA
0965 fda8 26 f1               BNE OUTBA
0966 fdaa 35 02               PULS A
0966 fdaa 35 02               PULS A
0967 fdac 39                  RTS
0967 fdac 39                  RTS
0968                         *
0968                         *
0969                         * PRINT STRING PRECEEDED BY A CR & LF.
0969                         * PRINT STRING PRECEEDED BY A CR & LF.
0970                         *
0970                         *
0971 fdad 8d 02              PSTRNG BSR PCRLF PRINT CR/LF
0971 fdad 8d 02              PSTRNG BSR PCRLF PRINT CR/LF
0972 fdaf 20 0c               BRA  PDATA  PRINT STRING POINTED TO BY IX
0972 fdaf 20 0c               BRA  PDATA  PRINT STRING POINTED TO BY IX
0973                         *
0973                         *
0974                         * PCRLF
0974                         * PCRLF
0975                         *
0975                         *
0976 fdb1 34 10              PCRLF PSHS X SAVE IX
0976 fdb1 34 10              PCRLF PSHS X SAVE IX
0977 fdb3 8e fe 75            LDX  #MSG2+1  POINT TO MSG CR/LF + 3 NULS
0977 fdb3 8e fe 75            LDX  #MSG2+1  POINT TO MSG CR/LF + 3 NULS
0978 fdb6 8d 05               BSR PDATA  PRINT MSG
0978 fdb6 8d 05               BSR PDATA  PRINT MSG
0979 fdb8 35 10               PULS X RESTORE IX
0979 fdb8 35 10               PULS X RESTORE IX
0980 fdba 39                  RTS  ;
0980 fdba 39                  RTS  ;
0981 fdbb 8d 31              PRINT BSR OUTCH
0981 fdbb 8d 31              PRINT BSR OUTCH
0982                         *
0982                         *
0983                         * PDATA
0983                         * PDATA
0984                         *
0984                         *
0985 fdbd a6 80              PDATA LDA  ,X+ GET 1st CHAR. TO PRINT
0985 fdbd a6 80              PDATA LDA  ,X+ GET 1st CHAR. TO PRINT
0986 fdbf 81 04               CMPA #4 IS IT EOT?
0986 fdbf 81 04               CMPA #4 IS IT EOT?
0987 fdc1 26 f8               BNE  PRINT IF NOT EOT PRINT IT
0987 fdc1 26 f8               BNE  PRINT IF NOT EOT PRINT IT
0988 fdc3 39                  RTS  ;
0988 fdc3 39                  RTS  ;
0989                         *
0989                         *
0990                         *
0990                         *
0991 fdc4 7d df e2           ECHON TST  ECHO IS ECHO REQUIRED ?
0991 fdc4 7d df e2           ECHON TST  ECHO IS ECHO REQUIRED ?
0992 fdc7 27 06               BEQ  INCH ECHO NOT REQ. IF CLEAR
0992 fdc7 27 06               BEQ  INCH ECHO NOT REQ. IF CLEAR
0993                         *
0993                         *
0994                         * INCHE
0994                         * INCHE
0995                         *
0995                         *
0996                         * ---GETS CHARACTER FROM TERMINAL AND
0996                         * ---GETS CHARACTER FROM TERMINAL AND
0997                         * ECHOS SAME. THE CHARACTER IS RETURNED
0997                         * ECHOS SAME. THE CHARACTER IS RETURNED
0998                         * IN THE "A" ACCUMULATOR WITH THE PARITY
0998                         * IN THE "A" ACCUMULATOR WITH THE PARITY
0999                         * BIT MASKED OFF. ALL OTHER REGISTERS
0999                         * BIT MASKED OFF. ALL OTHER REGISTERS
1000                         * ARE PRESERVED.
1000                         * ARE PRESERVED.
1001                         *
1001                         *
1002 fdc9 8d 04              INCHE BSR INCH GET CHAR FROM TERMINAL
1002 fdc9 8d 04              INCHE BSR INCH GET CHAR FROM TERMINAL
1003 fdcb 84 7f               ANDA #$7F      STRIP PARITY FROM CHAR.
1003 fdcb 84 7f               ANDA #$7F      STRIP PARITY FROM CHAR.
1004 fdcd 20 1f               BRA  OUTCH     ECHO CHAR TO TERMINAL
1004 fdcd 20 1f               BRA  OUTCH     ECHO CHAR TO TERMINAL
1005                         *
1005                         *
1006                         * INCH
1006                         * INCH
1007                         *
1007                         *
1008                         * GET CHARACTER FROM TERMINAL. RETURN
1008                         * GET CHARACTER FROM TERMINAL. RETURN
1009                         * CHARACTER IN "A" ACCUMULATOR AND PRESERVE
1009                         * CHARACTER IN "A" ACCUMULATOR AND PRESERVE
1010                         * ALL OTHER REGISTERS. THE INPUT CHARACTER
1010                         * ALL OTHER REGISTERS. THE INPUT CHARACTER
1011                         * IS 8 BITS AND IS NOT ECHOED.
1011                         * IS 8 BITS AND IS NOT ECHOED.
1012                         *
1012                         *
1013                         *
1013                         *
1014 fdcf 34 10              INCH PSHS X SAVE IX
1014 fdcf 34 10              INCH PSHS X SAVE IX
1015 fdd1 be df e0            LDX  CPORT POINT TO TERMINAL PORT
1015 fdd1 be df e0            LDX  CPORT POINT TO TERMINAL PORT
1016 fdd4 a6 84              GETSTA LDA  ,X  FETCH PORT STATUS
1016 fdd4 a6 84              GETSTA LDA  ,X  FETCH PORT STATUS
1017 fdd6 85 01               BITA #1 TEST READY BIT, RDRF ?
1017 fdd6 85 01               BITA #1 TEST READY BIT, RDRF ?
1018 fdd8 27 fa               BEQ  GETSTA IF NOT RDY, THEN TRY AGAIN
1018 fdd8 27 fa               BEQ  GETSTA IF NOT RDY, THEN TRY AGAIN
1019 fdda a6 01               LDA  1,X FETCH CHAR
1019 fdda a6 01               LDA  1,X FETCH CHAR
1020 fddc 35 10               PULS X RESTORE IX
1020 fddc 35 10               PULS X RESTORE IX
1021 fdde 39                  RTS  ;
1021 fdde 39                  RTS  ;
1022                         *
1022                         *
1023                         * INCHEK
1023                         * INCHEK
1024                         *
1024                         *
1025                         * CHECK FOR A CHARACTER AVAILABLE FROM
1025                         * CHECK FOR A CHARACTER AVAILABLE FROM
1026                         * THE TERMINAL. THE SERIAL PORT IS CHECKED
1026                         * THE TERMINAL. THE SERIAL PORT IS CHECKED
1027                         * FOR READ READY. ALL REGISTERS ARE
1027                         * FOR READ READY. ALL REGISTERS ARE
1028                         * PRESERVED, AND THE "Z" BIT WILL BE
1028                         * PRESERVED, AND THE "Z" BIT WILL BE
1029                         * CLEAR IF A CHARACTER CAN BE READ.
1029                         * CLEAR IF A CHARACTER CAN BE READ.
1030                         *
1030                         *
1031                         *
1031                         *
1032 fddf 34 02              INCHEK PSHS A SAVE A ACCUM.
1032 fddf 34 02              INCHEK PSHS A SAVE A ACCUM.
1033 fde1 a6 9f df e0         LDA  [CPORT] FETCH PORT STATUS
1033 fde1 a6 9f df e0         LDA  [CPORT] FETCH PORT STATUS
1034 fde5 85 01               BITA #1 TEST READY BIT, RDRF ?
1034 fde5 85 01               BITA #1 TEST READY BIT, RDRF ?
1035 fde7 35 02               PULS A RESTORE A ACCUM.
1035 fde7 35 02               PULS A RESTORE A ACCUM.
1036 fde9 39                  RTS  ;
1036 fde9 39                  RTS  ;
1037                         *
1037                         *
1038 fdea 8d 00              OUT2S BSR OUT1S OUTPUT 2 SPACES
1038 fdea 8d 00              OUT2S BSR OUT1S OUTPUT 2 SPACES
1039 fdec 86 20              OUT1S LDA  #$20  OUTPUT 1 SPACE
1039 fdec 86 20              OUT1S LDA  #$20  OUTPUT 1 SPACE
1040                         *
1040                         *
1041                         *
1041                         *
1042                         * OUTCH
1042                         * OUTCH
1043                         *
1043                         *
1044                         * OUTPUT CHARACTER TO TERMINAL.
1044                         * OUTPUT CHARACTER TO TERMINAL.
1045                         * THE CHAR. TO BE OUTPUT IS
1045                         * THE CHAR. TO BE OUTPUT IS
1046                         * PASSED IN THE A REGISTER.
1046                         * PASSED IN THE A REGISTER.
1047                         * ALL REGISTERS ARE PRESERVED.
1047                         * ALL REGISTERS ARE PRESERVED.
1048                         *
1048                         *
1049 fdee 34 12              OUTCH PSHS A,X SAVE A ACCUM AND IX
1049 fdee 34 12              OUTCH PSHS A,X SAVE A ACCUM AND IX
1050 fdf0 be df e0            LDX  CPORT GET ADDR. OF TERMINAL
1050 fdf0 be df e0            LDX  CPORT GET ADDR. OF TERMINAL
1051 fdf3 a6 84              FETSTA LDA  ,X FETCH PORT STATUS
1051 fdf3 a6 84              FETSTA LDA  ,X FETCH PORT STATUS
1052 fdf5 85 02               BITA #2 TEST TDRE, OK TO XMIT ?
1052 fdf5 85 02               BITA #2 TEST TDRE, OK TO XMIT ?
1053 fdf7 27 fa               BEQ  FETSTA IF NOT LOOP UNTIL RDY
1053 fdf7 27 fa               BEQ  FETSTA IF NOT LOOP UNTIL RDY
1054 fdf9 35 02               PULS A GET CHAR. FOR XMIT
1054 fdf9 35 02               PULS A GET CHAR. FOR XMIT
1055 fdfb a7 01               STA  1,X XMIT CHAR.
1055 fdfb a7 01               STA  1,X XMIT CHAR.
1056 fdfd 35 10               PULS X RESTORE IX
1056 fdfd 35 10               PULS X RESTORE IX
1057 fdff 39                  RTS  ;
1057 fdff 39                  RTS  ;
1058                         *
1058                         *
1059                         *
1059                         *
1060 fe00 be df e0           ACINIZ LDX  CPORT  POINT TO CONTROL PORT ADDRESS
1060 fe00 be df e0           ACINIZ LDX  CPORT  POINT TO CONTROL PORT ADDRESS
1061 fe03 86 03               LDA  #3  RESET ACIA PORT CODE
1061 fe03 86 03               LDA  #3  RESET ACIA PORT CODE
1062 fe05 a7 84               STA  ,X  STORE IN CONTROL REGISTER
1062 fe05 a7 84               STA  ,X  STORE IN CONTROL REGISTER
1063 fe07 86 11               LDA  #$11  SET 8 DATA, 2 STOP AN 0 PARITY
1063 fe07 86 11               LDA  #$11  SET 8 DATA, 2 STOP AN 0 PARITY
1064 fe09 a7 84               STA  ,X  STORE IN CONTROL REGISTER
1064 fe09 a7 84               STA  ,X  STORE IN CONTROL REGISTER
1065 fe0b 6d 01               TST  1,X  ANYTHING IN DATA REGISTER?
1065 fe0b 6d 01               TST  1,X  ANYTHING IN DATA REGISTER?
1066 fe0d 86 ff               LDA  #$FF  TURN ON ECHO FLAG
1066 fe0d 86 ff               LDA  #$FF  TURN ON ECHO FLAG
1067 fe0f b7 df e2            STA  ECHO
1067 fe0f b7 df e2            STA  ECHO
1068 fe12 39                  RTS
1068 fe12 39                  RTS
1069                         *
1069                         *
1070                         *
1070                         *
1071                         * MONITOR KEYBOARD COMMAND JUMP TABLE
1071                         * MONITOR KEYBOARD COMMAND JUMP TABLE
1072                         *
1072                         *
1073                         *
1073                         *
1074 fe13                    JMPTAB EQU *
1074 fe13                    JMPTAB EQU *
1075 fe13 01                  FCB 1 " ^A "  $F91D
1075 fe13 01                  FCB 1 " ^A "  $F91D
1076 fe14 f9 23               FDB ALTRA
1076 fe14 f9 23               FDB ALTRA
1077 fe16 02                  FCB 2 " ^B "  $F90F
1077 fe16 02                  FCB 2 " ^B "  $F90F
1078 fe17 f9 15               FDB ALTRB
1078 fe17 f9 15               FDB ALTRB
1079 fe19 03                  FCB 3 " ^C "  $F92B
1079 fe19 03                  FCB 3 " ^C "  $F92B
1080 fe1a f9 31               FDB ALTRCC
1080 fe1a f9 31               FDB ALTRCC
1081 fe1c 04                  FCB 4 " ^D "  $F901
1081 fe1c 04                  FCB 4 " ^D "  $F901
1082 fe1d f9 07               FDB ALTRDP
1082 fe1d f9 07               FDB ALTRDP
1083 fe1f 10                  FCB $10 " ^P "  $F8C9
1083 fe1f 10                  FCB $10 " ^P "  $F8C9
1084 fe20 f8 cf               FDB ALTRPC
1084 fe20 f8 cf               FDB ALTRPC
1085 fe22 15                  FCB $15 " ^U "  $F8D7
1085 fe22 15                  FCB $15 " ^U "  $F8D7
1086 fe23 f8 dd               FDB ALTRU
1086 fe23 f8 dd               FDB ALTRU
1087 fe25 18                  FCB $18 " ^X "  $F8F3
1087 fe25 18                  FCB $18 " ^X "  $F8F3
1088 fe26 f8 f9               FDB ALTRX
1088 fe26 f8 f9               FDB ALTRX
1089 fe28 19                  FCB $19 " ^Y "  $F8E5
1089 fe28 19                  FCB $19 " ^Y "  $F8E5
1090 fe29 f8 eb               FDB ALTRY
1090 fe29 f8 eb               FDB ALTRY
1091                         *
1091                         *
1092 fe2b 42                  FCC 'B'
1092 fe2b 42                  FCC 'B'
1093 fe2c fa 7b               FDB BRKPNT *$FA78
1093 fe2c fa 7b               FDB BRKPNT *$FA78
1094 fe2e 44                  FCC 'D'
1094 fe2e 44                  FCC 'D'
1095 fe2f fa f4               FDB DBOOT *$FAF1
1095 fe2f fa f4               FDB DBOOT *$FAF1
1096 fe31 45                  FCC 'E'
1096 fe31 45                  FCC 'E'
1097 fe32 f9 96               FDB MEMDUMP *$F990
1097 fe32 f9 96               FDB MEMDUMP *$F990
1098 fe34 47                  FCC 'G'
1098 fe34 47                  FCC 'G'
1099 fe35 f8 a5               FDB GO *$F89F
1099 fe35 f8 a5               FDB GO *$F89F
1100 fe37 4c                  FCC 'L'
1100 fe37 4c                  FCC 'L'
1101 fe38 fc 0c               FDB LOAD *$FC09
1101 fe38 fc 0c               FDB LOAD *$FC09
1102 fe3a 4d                  FCC 'M'
1102 fe3a 4d                  FCC 'M'
1103 fe3b f9 41               FDB MEMCHG *$F93B
1103 fe3b f9 41               FDB MEMCHG *$F93B
1104 fe3d 50                  FCC 'P'
1104 fe3d 50                  FCC 'P'
1105 fe3e fc 67               FDB PUNCH *$FC64
1105 fe3e fc 67               FDB PUNCH *$FC64
1106 fe40 51                  FCC 'Q'
1106 fe40 51                  FCC 'Q'
1107 fe41 f9 f2               FDB MEMTST *$F9EF
1107 fe41 f9 f2               FDB MEMTST *$F9EF
1108 fe43 52                  FCC 'R'
1108 fe43 52                  FCC 'R'
1109 fe44 f8 a8               FDB REGSTR *$F8A2
1109 fe44 f8 a8               FDB REGSTR *$F8A2
1110 fe46 53                  FCC 'S'
1110 fe46 53                  FCC 'S'
1111 fe47 f9 8a               FDB DISSTK *$F984
1111 fe47 f9 8a               FDB DISSTK *$F984
1112 fe49 55                  FCC 'U'
1112 fe49 55                  FCC 'U'
1113 fe4a fb b3               FDB MINBOOT *$FBB0
1113 fe4a fb b3               FDB MINBOOT *$FBB0
1114 fe4c 58                  FCC 'X'
1114 fe4c 58                  FCC 'X'
1115 fe4d fa a7               FDB XBKPNT *$FAA4
1115 fe4d fa a7               FDB XBKPNT *$FAA4
1116                         *
1116                         *
1117 fe4f                    TABEND EQU *
1117 fe4f                    TABEND EQU *
1118                         *
1118                         *
1119                         * ** 6809 VECTOR ADDRESSES **
1119                         * ** 6809 VECTOR ADDRESSES **
1120                         *
1120                         *
1121                         * FOLLOWING ARE THE ADDRESSES OF THE VECTOR ROUTINES
1121                         * FOLLOWING ARE THE ADDRESSES OF THE VECTOR ROUTINES
1122                         * FOR THE 6809 PROCESSOR. DURING INITIALIZATION THEY
1122                         * FOR THE 6809 PROCESSOR. DURING INITIALIZATION THEY
1123                         * ARE RELOCATED TO RAM FROM $DFC0 TO $DFCF. THEY ARE
1123                         * ARE RELOCATED TO RAM FROM $DFC0 TO $DFCF. THEY ARE
1124                         * RELOCATED TO RAM SO THAT THE USER MAY REVECTOR TO
1124                         * RELOCATED TO RAM SO THAT THE USER MAY REVECTOR TO
1125                         * HIS OWN ROUTINES IF HE SO DESIRES.
1125                         * HIS OWN ROUTINES IF HE SO DESIRES.
1126                         *
1126                         *
1127                         *
1127                         *
1128 fe4f fa b3              RAMVEC FDB SWIE  USER-V
1128 fe4f fa b3              RAMVEC FDB SWIE  USER-V
1129 fe51 f8 a7               FDB RTI    SWI3-V
1129 fe51 f8 a7               FDB RTI    SWI3-V
1130 fe53 f8 a7               FDB RTI    SWI2-V
1130 fe53 f8 a7               FDB RTI    SWI2-V
1131 fe55 f8 a7               FDB RTI    FIRQ-V
1131 fe55 f8 a7               FDB RTI    FIRQ-V
1132 fe57 f8 a7               FDB RTI    IRQ-V
1132 fe57 f8 a7               FDB RTI    IRQ-V
1133 fe59 fa b3               FDB SWIE   SWI-V
1133 fe59 fa b3               FDB SWIE   SWI-V
1134 fe5b ff ff               FDB $FFFF  SVC-VO
1134 fe5b ff ff               FDB $FFFF  SVC-VO
1135 fe5d ff ff               FDB $FFFF  SVC-VL
1135 fe5d ff ff               FDB $FFFF  SVC-VL
1136                         *
1136                         *
1137                         * PRINTABLE MESSAGE STRINGS
1137                         * PRINTABLE MESSAGE STRINGS
1138                         *
1138                         *
1139 fe5f 00 00 00 0d 0a 00  MSG1 FCB $0,$0,$0,$D,$A,$0,$0,$0 * 0, CR/LF, 0
1139 fe5f 00 00 00 0d 0a 00  MSG1 FCB $0,$0,$0,$D,$A,$0,$0,$0 * 0, CR/LF, 0
     00 00
     00 00
1140 fe67 53 2d 42 55 47 20   FCC 'S-BUG 1.8 - '
1140 fe67 53 2d 42 55 47 20   FCC 'S-BUG 1.8 - '
     31 2e 38 20 2d 20
     31 2e 38 20 2d 20
1141 fe73 04                  FCB 4
1141 fe73 04                  FCB 4
1142 fe74 4b 0d 0a 00 00 00  MSG2 FCB 'K,$D,$A,$0,$0,$0,4 K, * CR/LF + 3 NULS
1142 fe74 4b 0d 0a 00 00 00  MSG2 FCB 'K,$D,$A,$0,$0,$0,4 K, * CR/LF + 3 NULS
     04
     04
1143 fe7b 3e                 MSG3 FCC '>'
1143 fe7b 3e                 MSG3 FCC '>'
1144 fe7c 04                  FCB 4
1144 fe7c 04                  FCB 4
1145 fe7d 57 48 41 54 3f     MSG4 FCC 'WHAT?'
1145 fe7d 57 48 41 54 3f     MSG4 FCC 'WHAT?'
1146 fe82 04                  FCB 4
1146 fe82 04                  FCB 4
1147 fe83 20 2d 20           MSG5 FCC ' - '
1147 fe83 20 2d 20           MSG5 FCC ' - '
1148 fe86 04                  FCB 4'
1148 fe86 04                  FCB 4'
1149 fe87 2c 20 50 41 53 53  MSG6 FCC ', PASS '
1149 fe87 2c 20 50 41 53 53  MSG6 FCC ', PASS '
     20
     20
1150 fe8e 04                  FCB 4
1150 fe8e 04                  FCB 4
1151 fe8f 2c 20 42 49 54 53  MSG7 FCC ', BITS IN ERROR: '
1151 fe8f 2c 20 42 49 54 53  MSG7 FCC ', BITS IN ERROR: '
     20 49 4e 20 45 52
     20 49 4e 20 45 52
     52 4f 52 3a 20
     52 4f 52 3a 20
1152 fea0 04                  FCB 4
1152 fea0 04                  FCB 4
1153 fea1 20 3d 3e 20        MSG8 FCC ' => '
1153 fea1 20 3d 3e 20        MSG8 FCC ' => '
1154 fea5 04                  FCB 4
1154 fea5 04                  FCB 4
1155 fea6 37 36 35 34 33 32  MSG9 FCC '76543210'
1155 fea6 37 36 35 34 33 32  MSG9 FCC '76543210'
     31 30
     31 30
1156 feae 20 20 53 50 3d     MSG10 FCC '  SP='
1156 feae 20 20 53 50 3d     MSG10 FCC '  SP='
1157 feb3 04                  FCB 4
1157 feb3 04                  FCB 4
1158 feb4 20 20 50 43 3d     MSG11 FCC '  PC='
1158 feb4 20 20 50 43 3d     MSG11 FCC '  PC='
1159 feb9 04                  FCB 4
1159 feb9 04                  FCB 4
1160 feba 20 20 55 53 3d     MSG12 FCC '  US='
1160 feba 20 20 55 53 3d     MSG12 FCC '  US='
1161 febf 04                  FCB 4
1161 febf 04                  FCB 4
1162 fec0 20 20 49 59 3d     MSG13 FCC '  IY='
1162 fec0 20 20 49 59 3d     MSG13 FCC '  IY='
1163 fec5 04                  FCB 4
1163 fec5 04                  FCB 4
1164 fec6 20 20 49 58 3d     MSG14 FCC '  IX='
1164 fec6 20 20 49 58 3d     MSG14 FCC '  IX='
1165 fecb 04                  FCB 4
1165 fecb 04                  FCB 4
1166 fecc 20 20 44 50 3d     MSG15 FCC '  DP='
1166 fecc 20 20 44 50 3d     MSG15 FCC '  DP='
1167 fed1 04                  FCB 4
1167 fed1 04                  FCB 4
1168 fed2 20 20 41 3d        MSG16 FCC '  A='
1168 fed2 20 20 41 3d        MSG16 FCC '  A='
1169 fed6 04                  FCB 4
1169 fed6 04                  FCB 4
1170 fed7 20 20 42 3d        MSG17 FCC '  B='
1170 fed7 20 20 42 3d        MSG17 FCC '  B='
1171 fedb 04                  FCB 4
1171 fedb 04                  FCB 4
1172 fedc 20 20 43 43 3a 20  MSG18 FCC '  CC: '
1172 fedc 20 20 43 43 3a 20  MSG18 FCC '  CC: '
1173 fee2 04                  FCB 4
1173 fee2 04                  FCB 4
1174 fee3 45 46 48 49 4e 5a  MSG19 FCC 'EFHINZVC'
1174 fee3 45 46 48 49 4e 5a  MSG19 FCC 'EFHINZVC'
     56 43
     56 43
1175 feeb 53 31              MSG20 FCC 'S1'
1175 feeb 53 31              MSG20 FCC 'S1'
1176 feed 04                  FCB 4
1176 feed 04                  FCB 4
1177                         *
1177                         *
1178                         * MESSAGE EXPANSION AREA
1178                         * MESSAGE EXPANSION AREA
1179                         *
1179                         *
1180 feee ff ff ff ff ff ff   FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
1180 feee ff ff ff ff ff ff   FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
     ff ff
     ff ff
1181 fef6 ff ff ff ff ff ff   FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF
1181 fef6 ff ff ff ff ff ff   FCB $FF,$FF,$FF,$FF,$FF,$FF,$FF
     ff
     ff
1182                         *
1182                         *
1183                         * POWER UP/ RESET/ NMI ENTRY POINT
1183                         * POWER UP/ RESET/ NMI ENTRY POINT
1184                         *
1184                         *
1185 ff00                     ORG $FF00
1185 ff00                     ORG $FF00
1186                         *
1186                         *
1187                         *
1187                         *
1188 ff00 8e ff f0           START LDX  #IC11  POINT TO DAT RAM IC11
1188 ff00 8e ff f0           START LDX  #IC11  POINT TO DAT RAM IC11
1189 ff03 86 0f               LDA  #$F GET COMPLIMENT OF ZERO
1189 ff03 86 0f               LDA  #$F GET COMPLIMENT OF ZERO
1190                         *
1190                         *
1191                         *
1191                         *
1192                         * INITIALIZE DAT RAM --- LOADS $F-$0 IN LOCATIONS $0-$F
1192                         * INITIALIZE DAT RAM --- LOADS $F-$0 IN LOCATIONS $0-$F
1193                         * OF DAT RAM, THUS STORING COMPLEMENT OF MSB OF ADDRESS
1193                         * OF DAT RAM, THUS STORING COMPLEMENT OF MSB OF ADDRESS
1194                         * IN THE DAT RAM. THE COMPLEMENT IS REQUIRED BECAUSE THE
1194                         * IN THE DAT RAM. THE COMPLEMENT IS REQUIRED BECAUSE THE
1195                         * OUTPUT OF IC11, A 74S189, IS THE INVERSE OF THE DATA
1195                         * OUTPUT OF IC11, A 74S189, IS THE INVERSE OF THE DATA
1196                         * STORED IN IT.
1196                         * STORED IN IT.
1197                         *
1197                         *
1198                         *
1198                         *
1199 ff05 a7 80              DATLP STA  ,X+ STORE & POINT TO NEXT RAM LOCATION
1199 ff05 a7 80              DATLP STA  ,X+ STORE & POINT TO NEXT RAM LOCATION
1200 ff07 4a                  DECA  GET COMP. VALUE FOR NEXT LOCATION
1200 ff07 4a                  DECA  GET COMP. VALUE FOR NEXT LOCATION
1201 ff08 26 fb               BNE  DATLP ALL 16 LOCATIONS INITIALIZED ?
1201 ff08 26 fb               BNE  DATLP ALL 16 LOCATIONS INITIALIZED ?
1202                         *
1202                         *
1203                         * NOTE: IX NOW CONTAINS $0000, DAT RAM IS NO LONGER
1203                         * NOTE: IX NOW CONTAINS $0000, DAT RAM IS NO LONGER
1204                         *       ADDRESSED, AND LOGICAL ADDRESSES NOW EQUAL
1204                         *       ADDRESSED, AND LOGICAL ADDRESSES NOW EQUAL
1205                         *       PHYSICAL ADDRESSES.
1205                         *       PHYSICAL ADDRESSES.
1206                         *
1206                         *
1207 ff0a 86 f0               LDA  #$F0
1207 ff0a 86 f0               LDA  #$F0
1208 ff0c a7 84               STA  ,X STORE $F0 AT $FFFF
1208 ff0c a7 84               STA  ,X STORE $F0 AT $FFFF
1209 ff0e 8e d0 a0            LDX  #$D0A0 ASSUME RAM TO BE AT $D000-$DFFF
1209 ff0e 8e d0 a0            LDX  #$D0A0 ASSUME RAM TO BE AT $D000-$DFFF
1210 ff11 10 8e 55 aa         LDY  #TSTPAT LOAD TEST DATA PATTERN INTO "Y"
1210 ff11 10 8e 55 aa         LDY  #TSTPAT LOAD TEST DATA PATTERN INTO "Y"
1211 ff15 ee 84              TSTRAM LDU  ,X SAVE DATA FROM TEST LOCATION
1211 ff15 ee 84              TSTRAM LDU  ,X SAVE DATA FROM TEST LOCATION
1212 ff17 10 af 84            STY  ,X STORE TEST PATTERN AT $D0A0
1212 ff17 10 af 84            STY  ,X STORE TEST PATTERN AT $D0A0
1213 ff1a 10 ac 84            CMPY ,X IS THERE RAM AT THIS LOCATION ?
1213 ff1a 10 ac 84            CMPY ,X IS THERE RAM AT THIS LOCATION ?
1214 ff1d 27 0b               BEQ  CNVADR IF MATCH THERE'S RAM, SO SKIP
1214 ff1d 27 0b               BEQ  CNVADR IF MATCH THERE'S RAM, SO SKIP
1215 ff1f 30 89 f0 00         LEAX -$1000,X ELSE POINT 4K LOWER
1215 ff1f 30 89 f0 00         LEAX -$1000,X ELSE POINT 4K LOWER
1216 ff23 8c f0 a0            CMPX #$F0A0 DECREMENTED PAST ZER0 YET ?
1216 ff23 8c f0 a0            CMPX #$F0A0 DECREMENTED PAST ZER0 YET ?
1217 ff26 26 ed               BNE  TSTRAM IF NOT CONTINUE TESTING FOR RAM
1217 ff26 26 ed               BNE  TSTRAM IF NOT CONTINUE TESTING FOR RAM
1218 ff28 20 d6               BRA  START ELSE START ALL OVER AGAIN
1218 ff28 20 d6               BRA  START ELSE START ALL OVER AGAIN
1219                         *
1219                         *
1220                         *
1220                         *
1221                         * THE FOLLOWING CODE STORES THE COMPLEMENT OF
1221                         * THE FOLLOWING CODE STORES THE COMPLEMENT OF
1222                         * THE MS CHARACTER OF THE FOUR CHARACTER HEX
1222                         * THE MS CHARACTER OF THE FOUR CHARACTER HEX
1223                         * ADDRESS OF THE FIRST 4K BLOCK OF RAM LOCATED
1223                         * ADDRESS OF THE FIRST 4K BLOCK OF RAM LOCATED
1224                         * BY THE ROUTINE "TSTRAM" INTO THE DAT RAM. IT
1224                         * BY THE ROUTINE "TSTRAM" INTO THE DAT RAM. IT
1225                         * IS STORED IN RAM IN THE LOCATION THAT IS
1225                         * IS STORED IN RAM IN THE LOCATION THAT IS
1226                         * ADDRESSED WHEN THE PROCESSOR ADDRESS IS $D---,
1226                         * ADDRESSED WHEN THE PROCESSOR ADDRESS IS $D---,
1227                         * THUS IF THE FIRST 4K BLOCK OF RAM IS FOUND
1227                         * THUS IF THE FIRST 4K BLOCK OF RAM IS FOUND
1228                         * WHEN TESTING LOCATION $70A0, MEANING THERE
1228                         * WHEN TESTING LOCATION $70A0, MEANING THERE
1229                         * IS NO RAM PHYSICALLY ADDRESSED IN THE RANGE
1229                         * IS NO RAM PHYSICALLY ADDRESSED IN THE RANGE
1230                         * $8000-$DFFF, THEN THE COMPLEMENT OF THE
1230                         * $8000-$DFFF, THEN THE COMPLEMENT OF THE
1231                         * "7" IN THE $70A0 WILL BE STORED IN
1231                         * "7" IN THE $70A0 WILL BE STORED IN
1232                         * THE DAT RAM. THUS WHEN THE PROCESSOR OUTPUTS
1232                         * THE DAT RAM. THUS WHEN THE PROCESSOR OUTPUTS
1233                         * AN ADDRESS OF $D---, THE DAT RAM WILL RESPOND
1233                         * AN ADDRESS OF $D---, THE DAT RAM WILL RESPOND
1234                         * BY RECOMPLEMENTING THE "7" AND OUTPUTTING THE
1234                         * BY RECOMPLEMENTING THE "7" AND OUTPUTTING THE
1235                         * 7 ONTO THE A12-A15 ADDRESS LINES. THUS THE
1235                         * 7 ONTO THE A12-A15 ADDRESS LINES. THUS THE
1236                         * RAM THAT IS PHYSICALLY ADDRESSED AT $7---
1236                         * RAM THAT IS PHYSICALLY ADDRESSED AT $7---
1237                         * WILL RESPOND AND APPEAR TO THE 6809 THAT IT
1237                         * WILL RESPOND AND APPEAR TO THE 6809 THAT IT
1238                         * IS AT $D--- SINCE THAT IS THE ADDRESS THE
1238                         * IS AT $D--- SINCE THAT IS THE ADDRESS THE
1239                         * 6809 WILL BE OUTPUTING WHEN THAT 4K BLOCK
1239                         * 6809 WILL BE OUTPUTING WHEN THAT 4K BLOCK
1240                         * OF RAM RESPONDS.
1240                         * OF RAM RESPONDS.
1241                         *
1241                         *
1242                         *
1242                         *
1243 ff2a ef 84              CNVADR STU  ,X RESTORE DATA AT TEST LOCATION
1243 ff2a ef 84              CNVADR STU  ,X RESTORE DATA AT TEST LOCATION
1244 ff2c 1f 10               TFR  X,D PUT ADDR. OF PRESENT 4K BLOCK IN D
1244 ff2c 1f 10               TFR  X,D PUT ADDR. OF PRESENT 4K BLOCK IN D
1245 ff2e 43                  COMA  COMPLEMENT MSB OF THAT ADDRESS
1245 ff2e 43                  COMA  COMPLEMENT MSB OF THAT ADDRESS
1246 ff2f 44                  LSRA  PUT MS 4 BITS OF ADDRESS IN
1246 ff2f 44                  LSRA  PUT MS 4 BITS OF ADDRESS IN
1247 ff30 44                  LSRA  LOCATION D0-D3 TO ALLOW STORING
1247 ff30 44                  LSRA  LOCATION D0-D3 TO ALLOW STORING
1248 ff31 44                  LSRA  IT IN THE DYNAMIC ADDRESS
1248 ff31 44                  LSRA  IT IN THE DYNAMIC ADDRESS
1249 ff32 44                  LSRA  TRANSLATION RAM.
1249 ff32 44                  LSRA  TRANSLATION RAM.
1250 ff33 b7 ff fd            STA  $FFFD STORE XLATION FACTOR IN DAT "D"
1250 ff33 b7 ff fd            STA  $FFFD STORE XLATION FACTOR IN DAT "D"
1251                         *
1251                         *
1252 ff36 10 ce df c0         LDS  #STACK INITIALIZE STACK POINTER
1252 ff36 10 ce df c0         LDS  #STACK INITIALIZE STACK POINTER
1253                         *
1253                         *
1254                         *
1254                         *
1255                         * THE FOLLOWING CHECKS TO FIND THE REAL PHYSICAL ADDRESSES
1255                         * THE FOLLOWING CHECKS TO FIND THE REAL PHYSICAL ADDRESSES
1256                         * OF ALL 4K BLKS OF RAM IN THE SYSTEM. WHEN EACH 4K BLK
1256                         * OF ALL 4K BLKS OF RAM IN THE SYSTEM. WHEN EACH 4K BLK
1257                         * OF RAM IS LOCATED, THE COMPLEMENT OF IT'S REAL ADDRESS
1257                         * OF RAM IS LOCATED, THE COMPLEMENT OF IT'S REAL ADDRESS
1258                         * IS THEN STORED IN A "LOGICAL" TO "REAL" ADDRESS XLATION
1258                         * IS THEN STORED IN A "LOGICAL" TO "REAL" ADDRESS XLATION
1259                         * TABLE THAT IS BUILT FROM $DFD0 TO $DFDF. FOR EXAMPLE IF
1259                         * TABLE THAT IS BUILT FROM $DFD0 TO $DFDF. FOR EXAMPLE IF
1260                         * THE SYSTEM HAS RAM THAT IS PHYSICALLY LOCATED (WIRED TO
1260                         * THE SYSTEM HAS RAM THAT IS PHYSICALLY LOCATED (WIRED TO
1261                         * RESPOND) AT THE HEX LOCATIONS $0--- THRU $F---....
1261                         * RESPOND) AT THE HEX LOCATIONS $0--- THRU $F---....
1262                         *
1262                         *
1263                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
1263                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
1264                         * 4K 4K 4K 4K 4K 4K 4K 4K -- 4K 4K 4K 4K -- -- --
1264                         * 4K 4K 4K 4K 4K 4K 4K 4K -- 4K 4K 4K 4K -- -- --
1265                         *
1265                         *
1266                         * ....FOR A TOTAL OF 48K OF RAM, THEN THE TRANSLATION TABLE
1266                         * ....FOR A TOTAL OF 48K OF RAM, THEN THE TRANSLATION TABLE
1267                         * CREATED FROM $DFD0 TO $DFDF WILL CONSIST OF THE FOLLOWING....
1267                         * CREATED FROM $DFD0 TO $DFDF WILL CONSIST OF THE FOLLOWING....
1268                         *
1268                         *
1269                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
1269                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
1270                         * 0F 0E 0D 0C 0B 0A 09 08 06 05 00 00 04 03 F1 F0
1270                         * 0F 0E 0D 0C 0B 0A 09 08 06 05 00 00 04 03 F1 F0
1271                         *
1271                         *
1272                         *
1272                         *
1273                         * HERE WE SEE THE LOGICAL ADDRESSES OF MEMORY FROM $0000-$7FFF
1273                         * HERE WE SEE THE LOGICAL ADDRESSES OF MEMORY FROM $0000-$7FFF
1274                         * HAVE NOT BEEN SELECTED FOR RELOCATION SO THAT THEIR PHYSICAL
1274                         * HAVE NOT BEEN SELECTED FOR RELOCATION SO THAT THEIR PHYSICAL
1275                         * ADDRESS WILL = THEIR LOGICAL ADDRESS; HOWEVER, THE 4K BLOCK
1275                         * ADDRESS WILL = THEIR LOGICAL ADDRESS; HOWEVER, THE 4K BLOCK
1276                         * PHYSICALLY AT $9000 WILL HAVE ITS ADDRESS TRANSLATED SO THAT
1276                         * PHYSICALLY AT $9000 WILL HAVE ITS ADDRESS TRANSLATED SO THAT
1277                         * IT WILL LOGICALLY RESPOND AT $8000. LIKEWISE $A,$B, AND $C000
1277                         * IT WILL LOGICALLY RESPOND AT $8000. LIKEWISE $A,$B, AND $C000
1278                         * WILL BE TRANSLATED TO RESPOND TO $9000,$C000, AND $D000
1278                         * WILL BE TRANSLATED TO RESPOND TO $9000,$C000, AND $D000
1279                         * RESPECTIVELY. THE USER SYSTEM WILL LOGICALLY APPEAR TO HAVE
1279                         * RESPECTIVELY. THE USER SYSTEM WILL LOGICALLY APPEAR TO HAVE
1280                         * MEMORY ADDRESSED AS FOLLOWS....
1280                         * MEMORY ADDRESSED AS FOLLOWS....
1281                         *
1281                         *
1282                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
1282                         *  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
1283                         * 4K 4K 4K 4K 4K 4K 4K 4K 4K 4K -- -- 4K 4K -- --
1283                         * 4K 4K 4K 4K 4K 4K 4K 4K 4K 4K -- -- 4K 4K -- --
1284                         *
1284                         *
1285                         *
1285                         *
1286 ff3a 10 8e df d0         LDY  #LRARAM POINT TO LOGICAL/REAL ADDR. TABLE
1286 ff3a 10 8e df d0         LDY  #LRARAM POINT TO LOGICAL/REAL ADDR. TABLE
1287 ff3e a7 2d               STA  13,Y STORE $D--- XLATION FACTOR AT $DFDD
1287 ff3e a7 2d               STA  13,Y STORE $D--- XLATION FACTOR AT $DFDD
1288 ff40 6f 2e               CLR  14,Y CLEAR $DFDE
1288 ff40 6f 2e               CLR  14,Y CLEAR $DFDE
1289 ff42 86 f0               LDA  #$F0 DESTINED FOR IC8 AN MEM EXPANSION ?
1289 ff42 86 f0               LDA  #$F0 DESTINED FOR IC8 AN MEM EXPANSION ?
1290 ff44 a7 2f               STA  15,Y STORE AT $DFDF
1290 ff44 a7 2f               STA  15,Y STORE AT $DFDF
1291 ff46 86 0c               LDA  #$0C PRESET NUMBER OF BYTES TO CLEAR
1291 ff46 86 0c               LDA  #$0C PRESET NUMBER OF BYTES TO CLEAR
1292 ff48 6f a6              CLRLRT CLR  A,Y CLEAR $DFDC THRU $DFD0
1292 ff48 6f a6              CLRLRT CLR  A,Y CLEAR $DFDC THRU $DFD0
1293 ff4a 4a                  DECA SUB. 1 FROM BYTES LEFT TO CLEAR
1293 ff4a 4a                  DECA SUB. 1 FROM BYTES LEFT TO CLEAR
1294 ff4b 2a fb               BPL  CLRLRT CONTINUE IF NOT DONE CLEARING
1294 ff4b 2a fb               BPL  CLRLRT CONTINUE IF NOT DONE CLEARING
1295 ff4d 30 89 f0 00        FNDRAM LEAX -$1000,X POINT TO NEXT LOWER 4K OF RAM
1295 ff4d 30 89 f0 00        FNDRAM LEAX -$1000,X POINT TO NEXT LOWER 4K OF RAM
1296 ff51 8c f0 a0            CMPX #$F0A0 TEST FOR DECREMENT PAST ZERO
1296 ff51 8c f0 a0            CMPX #$F0A0 TEST FOR DECREMENT PAST ZERO
1297 ff54 27 22               BEQ  FINTAB SKIP IF FINISHED
1297 ff54 27 22               BEQ  FINTAB SKIP IF FINISHED
1298 ff56 ee 84               LDU  ,X SAVE DATA AT CURRENT TEST LOCATION
1298 ff56 ee 84               LDU  ,X SAVE DATA AT CURRENT TEST LOCATION
1299 ff58 10 8e 55 aa         LDY  #TSTPAT LOAD TEST DATA PATTERN INTO Y REG.
1299 ff58 10 8e 55 aa         LDY  #TSTPAT LOAD TEST DATA PATTERN INTO Y REG.
1300 ff5c 10 af 84            STY  ,X STORE TEST PATT. INTO RAM TEST LOC.
1300 ff5c 10 af 84            STY  ,X STORE TEST PATT. INTO RAM TEST LOC.
1301 ff5f 10 ac 84            CMPY ,X VERIFY RAM AT TEST LOCATION
1301 ff5f 10 ac 84            CMPY ,X VERIFY RAM AT TEST LOCATION
1302 ff62 26 e9               BNE  FNDRAM IF NO RAM GO LOOK 4K LOWER
1302 ff62 26 e9               BNE  FNDRAM IF NO RAM GO LOOK 4K LOWER
1303 ff64 ef 84               STU  ,X ELSE RESTORE DATA TO TEST LOCATION
1303 ff64 ef 84               STU  ,X ELSE RESTORE DATA TO TEST LOCATION
1304 ff66 10 8e df d0         LDY  #LRARAM POINT TO LOGICAL/REAL ADDR. TABLE
1304 ff66 10 8e df d0         LDY  #LRARAM POINT TO LOGICAL/REAL ADDR. TABLE
1305 ff6a 1f 10               TFR  X,D PUT ADDR. OF PRESENT 4K BLOCK IN D
1305 ff6a 1f 10               TFR  X,D PUT ADDR. OF PRESENT 4K BLOCK IN D
1306 ff6c 44                  LSRA  PUT MS 4 BITS OF ADDR. IN LOC. D0-D3
1306 ff6c 44                  LSRA  PUT MS 4 BITS OF ADDR. IN LOC. D0-D3
1307 ff6d 44                  LSRA  TO ALLOW STORING IT IN THE DAT RAM.
1307 ff6d 44                  LSRA  TO ALLOW STORING IT IN THE DAT RAM.
1308 ff6e 44                  LSRA
1308 ff6e 44                  LSRA
1309 ff6f 44                  LSRA
1309 ff6f 44                  LSRA
1310 ff70 1f 89               TFR  A,B SAVE OFFSET INTO LRARAM TABLE
1310 ff70 1f 89               TFR  A,B SAVE OFFSET INTO LRARAM TABLE
1311 ff72 88 0f               EORA #$0F INVERT MSB OF ADDR. OF CURRENT 4K BLK
1311 ff72 88 0f               EORA #$0F INVERT MSB OF ADDR. OF CURRENT 4K BLK
1312 ff74 a7 a5               STA  B,Y SAVE TRANSLATION FACTOR IN LRARAM TABLE
1312 ff74 a7 a5               STA  B,Y SAVE TRANSLATION FACTOR IN LRARAM TABLE
1313 ff76 20 d5               BRA  FNDRAM GO TRANSLATE ADDR. OF NEXT 4K BLK
1313 ff76 20 d5               BRA  FNDRAM GO TRANSLATE ADDR. OF NEXT 4K BLK
1314 ff78 86 f1              FINTAB LDA  #$F1 DESTINED FOR IC8 AND MEM EXPANSION ?
1314 ff78 86 f1              FINTAB LDA  #$F1 DESTINED FOR IC8 AND MEM EXPANSION ?
1315 ff7a 10 8e df d0         LDY  #LRARAM POINT TO LRARAM TABLE
1315 ff7a 10 8e df d0         LDY  #LRARAM POINT TO LRARAM TABLE
1316 ff7e a7 2e               STA  14,Y STORE $F1 AT $DFCE
1316 ff7e a7 2e               STA  14,Y STORE $F1 AT $DFCE
1317                         *
1317                         *
1318                         * THE FOLLOWING CHECKS TO SEE IF THERE IS A 4K BLK OF
1318                         * THE FOLLOWING CHECKS TO SEE IF THERE IS A 4K BLK OF
1319                         * RAM LOCATED AT $C000-$CFFF. IF NONE THERE IT LOCATES
1319                         * RAM LOCATED AT $C000-$CFFF. IF NONE THERE IT LOCATES
1320                         * THE NEXT LOWER 4K BLK AN XLATES ITS ADDR SO IT
1320                         * THE NEXT LOWER 4K BLK AN XLATES ITS ADDR SO IT
1321                         * LOGICALLY RESPONDS TO THE ADDRESS $C---.
1321                         * LOGICALLY RESPONDS TO THE ADDRESS $C---.
1322                         *
1322                         *
1323                         *
1323                         *
1324 ff80 86 0c               LDA  #$0C PRESET NUMBER HEX "C"
1324 ff80 86 0c               LDA  #$0C PRESET NUMBER HEX "C"
1325 ff82 e6 a6              FINDC LDB  A,Y GET ENTRY FROM LRARAM TABLE
1325 ff82 e6 a6              FINDC LDB  A,Y GET ENTRY FROM LRARAM TABLE
1326 ff84 26 05               BNE  FOUNDC BRANCH IF RAM THIS PHYSICAL ADDR.
1326 ff84 26 05               BNE  FOUNDC BRANCH IF RAM THIS PHYSICAL ADDR.
1327 ff86 4a                  DECA  ELSE POINT 4K LOWER
1327 ff86 4a                  DECA  ELSE POINT 4K LOWER
1328 ff87 2a f9               BPL  FINDC GO TRY AGAIN
1328 ff87 2a f9               BPL  FINDC GO TRY AGAIN
1329 ff89 20 14               BRA  XFERTF
1329 ff89 20 14               BRA  XFERTF
1330 ff8b 6f a6              FOUNDC CLR  A,Y CLR XLATION FACTOR OF 4K BLOCK FOUND
1330 ff8b 6f a6              FOUNDC CLR  A,Y CLR XLATION FACTOR OF 4K BLOCK FOUND
1331 ff8d e7 2c               STB  $C,Y GIVE IT XLATION FACTOR MOVING IT TO $C---
1331 ff8d e7 2c               STB  $C,Y GIVE IT XLATION FACTOR MOVING IT TO $C---
1332                         *
1332                         *
1333                         * THE FOLLOWING CODE ADJUSTS THE TRANSLATION
1333                         * THE FOLLOWING CODE ADJUSTS THE TRANSLATION
1334                         * FACTORS SUCH THAT ALL REMAINING RAM WILL
1334                         * FACTORS SUCH THAT ALL REMAINING RAM WILL
1335                         * RESPOND TO A CONTIGUOUS BLOCK OF LOGICAL
1335                         * RESPOND TO A CONTIGUOUS BLOCK OF LOGICAL
1336                         * ADDRESSES FROM $0000 AND UP....
1336                         * ADDRESSES FROM $0000 AND UP....
1337                         *
1337                         *
1338 ff8f 4f                  CLRA  START AT ZERO
1338 ff8f 4f                  CLRA  START AT ZERO
1339 ff90 1f 21               TFR  Y,X START POINTER "X" START OF "LRARAM" TABLE.
1339 ff90 1f 21               TFR  Y,X START POINTER "X" START OF "LRARAM" TABLE.
1340 ff92 e6 a6              COMPRS LDB  A,Y GET ENTRY FROM "LRARAM" TABLE
1340 ff92 e6 a6              COMPRS LDB  A,Y GET ENTRY FROM "LRARAM" TABLE
1341 ff94 27 04               BEQ  PNTNXT IF IT'S ZER0 SKIP
1341 ff94 27 04               BEQ  PNTNXT IF IT'S ZER0 SKIP
1342 ff96 6f a6               CLR  A,Y ELSE ERASE FROM TABLE
1342 ff96 6f a6               CLR  A,Y ELSE ERASE FROM TABLE
1343 ff98 e7 80               STB  ,X+ AND ENTER ABOVE LAST ENTRY- BUMP
1343 ff98 e7 80               STB  ,X+ AND ENTER ABOVE LAST ENTRY- BUMP
1344 ff9a 4c                 PNTNXT INCA GET OFFSET TO NEXT ENTRY
1344 ff9a 4c                 PNTNXT INCA GET OFFSET TO NEXT ENTRY
1345 ff9b 81 0c               CMPA #$0C LAST ENTRY YET ?
1345 ff9b 81 0c               CMPA #$0C LAST ENTRY YET ?
1346 ff9d 2d f3               BLT  COMPRS
1346 ff9d 2d f3               BLT  COMPRS
1347                         *
1347                         *
1348                         * THE FOLLOWING CODE TRANSFER THE TRANSLATION
1348                         * THE FOLLOWING CODE TRANSFER THE TRANSLATION
1349                         * FACTORS FROM THE LRARAM TABLE TO IC11 ON
1349                         * FACTORS FROM THE LRARAM TABLE TO IC11 ON
1350                         * THE MP-09 CPU CARD.
1350                         * THE MP-09 CPU CARD.
1351                         *
1351                         *
1352 ff9f 8e ff f0           XFERTF LDX  #IC11  POINT TO DAT RAM IC11
1352 ff9f 8e ff f0           XFERTF LDX  #IC11  POINT TO DAT RAM IC11
1353 ffa2 c6 10               LDB  #$10 GET NO. OF BYTES TO MOVE
1353 ffa2 c6 10               LDB  #$10 GET NO. OF BYTES TO MOVE
1354 ffa4 a6 a0              FETCH LDA  ,Y+ GET BYTE AND POINT TO NEXT
1354 ffa4 a6 a0              FETCH LDA  ,Y+ GET BYTE AND POINT TO NEXT
1355 ffa6 a7 80               STA  ,X+ POKE XLATION FACTOR IN IC11
1355 ffa6 a7 80               STA  ,X+ POKE XLATION FACTOR IN IC11
1356 ffa8 5a                  DECB  SUB 1 FROM BYTES TO MOVE
1356 ffa8 5a                  DECB  SUB 1 FROM BYTES TO MOVE
1357 ffa9 26 f9               BNE  FETCH CONTINUE UNTIL 16 MOVED
1357 ffa9 26 f9               BNE  FETCH CONTINUE UNTIL 16 MOVED
1358 ffab 53                  COMB  SET "B" NON-ZERO
1358 ffab 53                  COMB  SET "B" NON-ZERO
1359 ffac f7 df e2            STB  ECHO TURN ON ECHO FLAG
1359 ffac f7 df e2            STB  ECHO TURN ON ECHO FLAG
1360 ffaf 16 f8 62            LBRA MONITOR INITIALIZATION IS COMPLETE
1360 ffaf 16 f8 62            LBRA MONITOR INITIALIZATION IS COMPLETE
1361                         *
1361                         *
1362                         *
1362                         *
1363 ffb2 6e 9f df c0        V1 JMP  [STACK]
1363 ffb2 6e 9f df c0        V1 JMP  [STACK]
1364 ffb6 6e 9f df c4        V2 JMP  [SWI2]
1364 ffb6 6e 9f df c4        V2 JMP  [SWI2]
1365 ffba 6e 9f df c6        V3 JMP  [FIRQ]
1365 ffba 6e 9f df c6        V3 JMP  [FIRQ]
1366 ffbe 6e 9f df c8        V4 JMP  [IRQ]
1366 ffbe 6e 9f df c8        V4 JMP  [IRQ]
1367 ffc2 6e 9f df ca        V5 JMP  [SWI]
1367 ffc2 6e 9f df ca        V5 JMP  [SWI]
1368                         *
1368                         *
1369                         * SWI3 ENTRY POINT
1369                         * SWI3 ENTRY POINT
1370                         *
1370                         *
1371 ffc6 1f 43              SWI3E TFR  S,U
1371 ffc6 1f 43              SWI3E TFR  S,U
1372 ffc8 ae 4a               LDX  10,U      *$FFC8
1372 ffc8 ae 4a               LDX  10,U      *$FFC8
1373 ffca e6 80               LDB  ,X+
1373 ffca e6 80               LDB  ,X+
1374 ffcc af 4a               STX  10,U
1374 ffcc af 4a               STX  10,U
1375 ffce 4f                  CLRA
1375 ffce 4f                  CLRA
1376 ffcf 58                  ASLB
1376 ffcf 58                  ASLB
1377 ffd0 49                  ROLA
1377 ffd0 49                  ROLA
1378 ffd1 be df cc            LDX  SVCVO
1378 ffd1 be df cc            LDX  SVCVO
1379 ffd4 8c ff ff            CMPX #$FFFF
1379 ffd4 8c ff ff            CMPX #$FFFF
1380 ffd7 27 0f               BEQ  SWI3Z
1380 ffd7 27 0f               BEQ  SWI3Z
1381 ffd9 30 8b               LEAX D,X
1381 ffd9 30 8b               LEAX D,X
1382 ffdb bc df ce            CMPX SVCVL
1382 ffdb bc df ce            CMPX SVCVL
1383 ffde 22 08               BHI  SWI3Z
1383 ffde 22 08               BHI  SWI3Z
1384 ffe0 34 10               PSHS X
1384 ffe0 34 10               PSHS X
1385 ffe2 ec c4               LDD  ,U
1385 ffe2 ec c4               LDD  ,U
1386 ffe4 ae 44               LDX  4,U
1386 ffe4 ae 44               LDX  4,U
1387 ffe6 6e f1               JMP  [,S++]
1387 ffe6 6e f1               JMP  [,S++]
1388 ffe8 37 1f              SWI3Z PULU A,B,X,CC,DP
1388 ffe8 37 1f              SWI3Z PULU A,B,X,CC,DP
1389 ffea ee 42               LDU  2,U
1389 ffea ee 42               LDU  2,U
1390 ffec 6e 9f df c2         JMP  [SWI3]
1390 ffec 6e 9f df c2         JMP  [SWI3]
1391                         *
1391                         *
1392                         * 6809 VECTORS
1392                         * 6809 VECTORS
1393                         *
1393                         *
1394 fff0 ff b2               FDB V1    USER-V
1394 fff0 ff b2               FDB V1    USER-V
1395 fff2 ff c6               FDB SWI3E SWI3-V
1395 fff2 ff c6               FDB SWI3E SWI3-V
1396 fff4 ff b6               FDB V2    SWI2-V
1396 fff4 ff b6               FDB V2    SWI2-V
1397 fff6 ff ba               FDB V3    FIRQ-V
1397 fff6 ff ba               FDB V3    FIRQ-V
1398 fff8 ff be               FDB V4    IRQ-V
1398 fff8 ff be               FDB V4    IRQ-V
1399 fffa ff c2               FDB V5    SWI-V
1399 fffa ff c2               FDB V5    SWI-V
1400 fffc ff b2               FDB V1    NMI-V
1400 fffc ff b2               FDB V1    NMI-V
1401 fffe ff 00               FDB START RESTART-V
1401 fffe ff 00               FDB START RESTART-V
1402                          END START
1402                          END START
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.