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
|
|
|