0001 *************** 0002 * MC3 monitor 1.4.1 0003 * Daniel Tufvesson 2013-2015 0004 0005 *************** 0006 * DEFINITION OF INTERNAL CPU REGISTERS 0007 0000 PIA1DIR EQU $00 0008 0002 PIA1DAT EQU $02 0009 0001 PIA2DIR EQU $01 0010 0003 PIA2DAT EQU $03 0011 0008 TIMECON EQU $08 TIMER CONTROL AND STAUS REG 0012 0009 COUNTHI EQU $09 COUNTER HIGH 0013 000a COUNTLW EQU $0A COUNTER LOW 0014 000b OCPRGHI EQU $0B OUTPUT COMPARE REG. HIGH BYTE 0015 000c OCPRGLW EQU $0C OUTPUT COMPARE REG. LOW BYTE 0016 000d ICPRGHI EQU $0D INPUT COMPARE REG. HIGH BYTE 0017 000e ICPRGLW EQU $0E INPUT COMPARE REG. LOW BYTE 0018 0010 ACIAMOD EQU $10 RATE AND MODE CONTROL REGISTER 0019 0011 ACIASTA EQU $11 TXD/RXD CONTROL AND STATUS REG. 0020 0012 ACIARXD EQU $12 RECEIVE DATA REGISTER 0021 0013 ACIATXD EQU $13 TRANSMIT DATA REGISTER 0022 0014 RAMCONT EQU $14 RAM CONTROL REGISTER 0023 0024 *************** 0025 * DEFINITION OF VARIABELS 0026 7eff ORG $7EFF 0027 7eff STACK RMB 1 STACK POINTER 0028 7f00 RMB 1 CONDITIONS CODES 0029 7f01 RMB 1 B-ACC 0030 7f02 RMB 1 A-ACC 0031 7f03 RMB 1 X-HIGH 0032 7f04 RMB 1 X-LOW 0033 7f05 RMB 1 P-HIGH 0034 7f06 RMB 1 P-LOW 0035 7f07 SP RMB 2 STACK POINTER 0036 7f09 CKSM RMB 1 CHECKSUM 0037 7f0a TEMP RMB 1 TEMP 0038 7f0b XHI RMB 1 X-TEMP HIGH 0039 7f0c XLOW RMB 1 X-TEMP LOW 0040 7f0d XTEMP RMB 2 X-TEMP 0041 0042 *************** 0043 * DEFINITION OF VECTORS 0044 * 3 BYTES JMP+ADDR 0045 7fe5 ORG $7FE5 0046 7fe5 CONSVEC RMB 3 CONSOLE STATUS VECTOR 0047 7fe8 CONOVEC RMB 3 CONSOLE OUTPUT VECTOR 0048 7feb CONIVEC RMB 3 CONSOLE INPUT VECTOR 0049 7fee TMOFVEC RMB 3 TIMER OVER FLOW INTERRUPT VECTOR 0050 7ff1 TMOCVEC RMB 3 TIMER OUTPUT COMPARE INTERRUPT VECTOR 0051 7ff4 TMICVEC RMB 3 TIMER INPUT CAPTURE INTERRUPT VECTOR 0052 7ff7 IRQVEC RMB 3 IRQ INTERRUPT VECTOR 0053 7ffa SWIVEC RMB 3 SWI INTERRUPT VECTOR 0054 7ffd NMIVEC RMB 3 NMI INTERRUPT VECTOR 0055 0056 *************** 0057 * ROM BEGIN HERE 0058 c000 ORG $C000 0059 * JUMPTABLE 0060 c000 7e c3 ab JMP RETURN 0061 c003 7e 7f e8 JMP CONOVEC 'OUTCHAR' 0062 c006 7e c6 fa JMP INCHAR 0063 c009 7e c7 04 JMP PDATA 0064 c00c 7e c7 18 JMP OUTHR 0065 c00f 7e c7 14 JMP OUTHL 0066 c012 7e c7 32 JMP OUT2HS 0067 c015 7e c7 30 JMP OUT4HS 0068 c018 7e c7 39 JMP INHEX 0069 c01b 7e c7 54 JMP INBYTE 0070 c01e 7e c7 68 JMP BADDR 0071 c021 7e c7 0b JMP PCRLF 0072 c024 7e c7 34 JMP OUTS 0073 c027 7e c7 d1 JMP IORD 0074 c02a 7e c7 dc JMP IOWR 0075 0076 * STRINGS 0077 c02d 0d 0a 04 CRLFTX FCB $0D,$0A,$04 0078 c030 0d 0a PROMPTX FCB $0D,$0A 0079 c032 3e 20 FCC "> " 0080 c034 04 FCB $04 0081 c035 0d 0a 0a HELPTX FCB $0D,$0A,$0A 0082 c038 4d 43 33 20 6d 6f FCC "MC3 monitor 1.4.1" 6e 69 74 6f 72 20 31 2e 34 2e 31 0083 c049 0d 0a FCB $0D,$0A 0084 c04b 44 61 6e 69 65 6c FCC "Daniel Tufvesson 2013-2015" 20 54 75 66 76 65 73 73 6f 6e 20 32 30 31 33 2d 32 30 31 35 0085 c065 0d 0a 0d 0a FCB $0D,$0A,$0D,$0A 0086 c069 20 47 20 20 47 6f FCC " G Go (RTI)" 20 28 52 54 49 29 0087 c075 0d 0a FCB $0D,$0A 0088 c077 20 4a 20 20 4a 75 FCC " J Jump to address" 6d 70 20 74 6f 20 61 64 64 72 65 73 73 0089 c08a 0d 0a FCB $0D,$0A 0090 c08c 20 4c 20 20 4c 6f FCC " L Load S19 from console" 61 64 20 53 31 39 20 66 72 6f 6d 20 63 6f 6e 73 6f 6c 65 0091 c0a5 0d 0a FCB $0D,$0A 0092 c0a7 20 4d 43 20 4d 65 FCC " MC Memory change" 6d 6f 72 79 20 63 68 61 6e 67 65 0093 c0b8 0d 0a FCB $0D,$0A 0094 c0ba 20 4d 44 20 4d 65 FCC " MD Memory dump" 6d 6f 72 79 20 64 75 6d 70 0095 c0c9 0d 0a FCB $0D,$0A 0096 c0cb 20 4d 46 20 4d 65 FCC " MF Memory fill" 6d 6f 72 79 20 66 69 6c 6c 0097 c0da 0d 0a FCB $0D,$0A 0098 c0dc 20 4d 57 20 4d 65 FCC " MW Memory write" 6d 6f 72 79 20 77 72 69 74 65 0099 c0ec 0d 0a FCB $0D,$0A 0100 c0ee 20 52 52 20 50 72 FCC " RR Print contents of stack" 69 6e 74 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 73 74 61 63 6b 0101 c109 0d 0a FCB $0D,$0A 0102 c10b 20 52 43 20 43 68 FCC " RC Change stack CC" 61 6e 67 65 20 73 74 61 63 6b 20 43 43 0103 c11e 0d 0a FCB $0D,$0A 0104 c120 20 52 41 20 43 68 FCC " RA Change stack A" 61 6e 67 65 20 73 74 61 63 6b 20 41 0105 c132 0d 0a FCB $0D,$0A 0106 c134 20 52 42 20 43 68 FCC " RB Change stack B" 61 6e 67 65 20 73 74 61 63 6b 20 42 0107 c146 0d 0a FCB $0D,$0A 0108 c148 20 52 58 20 43 68 FCC " RX Change stack X" 61 6e 67 65 20 73 74 61 63 6b 20 58 0109 c15a 0d 0a FCB $0D,$0A 0110 c15c 20 52 50 20 43 68 FCC " RP Change stack PC" 61 6e 67 65 20 73 74 61 63 6b 20 50 43 0111 c16f 0d 0a FCB $0D,$0A 0112 c171 20 52 53 20 43 68 FCC " RS Change stack pointer" 61 6e 67 65 20 73 74 61 63 6b 20 70 6f 69 6e 74 65 72 0113 c189 0d 0a FCB $0D,$0A 0114 c18b 20 52 4d 20 52 65 FCC " RM Reset stack pointer" 73 65 74 20 73 74 61 63 6b 20 70 6f 69 6e 74 65 72 0115 c1a2 0d 0a FCB $0D,$0A 0116 c1a4 20 50 20 20 53 65 FCC " P Select I/O page" 6c 65 63 74 20 49 2f 4f 20 70 61 67 65 0117 c1b7 0d 0a FCB $0D,$0A 0118 c1b9 20 53 20 20 53 69 FCC " S Single step" 6e 67 6c 65 20 73 74 65 70 0119 c1c8 0d 0a FCB $0D,$0A 0120 c1ca 20 58 20 20 45 6e FCC " X Enter extended ROM" 74 65 72 20 65 78 74 65 6e 64 65 64 20 52 4f 4d 0121 c1e0 0d 0a 04 FCB $0D,$0A,$04 0122 c1e3 0d 0a REGTX FCB $0D,$0A 0123 c1e5 43 43 20 42 20 20 FCC "CC B A X PC SP H I N Z V C" 41 20 20 58 20 20 20 20 50 43 20 20 20 53 50 20 20 20 20 20 48 20 49 20 4e 20 5a 20 56 20 43 0124 c20a 0d 0a 04 FCB $0D,$0A,$04 0125 c20d 0d 0a DUMPTX FCB $0D,$0A 0126 c20f 41 44 44 52 20 20 FCC "ADDR 0 1 2 3 4 5 6 7 8 9 A B C D E F" 30 20 20 31 20 20 32 20 20 33 20 20 34 20 20 35 20 20 36 20 20 37 20 20 20 38 20 20 39 20 20 41 20 20 42 20 20 43 20 20 44 20 20 45 20 20 46 0127 c244 0d 0a 04 FCB $0D,$0A,$04 0128 c247 0d 0a LDTX FCB $0D,$0A 0129 c249 4c 6f 61 64 20 53 FCC "Load S19 record" 31 39 20 72 65 63 6f 72 64 0130 c258 0d 0a 04 FCB $0D,$0A,$04 0131 c25b 0d 0a 0a LFAILTX FCB $0D,$0A,$0A 0132 c25e 4c 6f 61 64 20 66 FCC "Load fail - Press Y to continue" 61 69 6c 20 2d 20 50 72 65 73 73 20 59 20 74 6f 20 63 6f 6e 74 69 6e 75 65 0133 c27d 0d 0a 04 FCB $0D,$0A,$04 0134 c280 0d 0a LDOKTX FCB $0D,$0A 0135 c282 4c 6f 61 64 20 4f FCC "Load OK" 4b 0136 c289 0d 0a 04 FCB $0D,$0A,$04 0137 c28c 0d 0a STOPTX FCB $0D,$0A 0138 c28e 53 54 4f 50 FCC "STOP" 0139 c292 04 FCB $04 0140 c293 0d 0a TRAPTX FCB $0D,$0A 0141 c295 54 52 41 50 FCC "TRAP" 0142 c299 04 FCB $04 0143 0144 *********** 0145 * START FROM RESET 0146 c29a 8e 7e ff RESET LDS #STACK INIT STACK POINTER 0147 c29d bf 7f 07 STS SP 0148 c2a0 bd c7 8c JSR INITVEC INIT VECTORS 0149 c2a3 bd c6 be JSR SCIINIT INIT INTERNAL ACIA 0150 c2a6 86 ff LDAA #$FF SETUP PAGE REGISTER 0151 c2a8 97 00 STAA PIA1DIR 0152 c2aa 86 87 LDAA #$87 MASK EXTERNAL INTERRUPTS AND SELECT PAGE 7 0153 c2ac 97 02 STAA PIA1DAT 0154 c2ae 86 40 LDAA #$40 0155 c2b0 97 14 STAA RAMCONT ENABLE CPU INTERNAL RAM 0156 c2b2 ce c0 30 PROMPT LDX #PROMPTX 0157 c2b5 bd c7 04 JSR PDATA 0158 c2b8 bd c6 fa JSR INCHAR 0159 c2bb 81 0d CMPA #$0D 0160 c2bd 27 f3 BEQ PROMPT 0161 c2bf 84 df ANDA #$DF CONVERT TO UPPER CASE 0162 c2c1 81 48 CMPA #'H 0163 c2c3 26 03 BNE *+5 0164 c2c5 7e c3 83 JMP HELP PRINT HELP 0165 c2c8 81 47 CMPA #'G 0166 c2ca 26 03 BNE *+5 0167 c2cc 7e c3 8c JMP GO GOTO USER PROGRAM 0168 c2cf 81 4a CMPA #'J 0169 c2d1 26 03 BNE *+5 0170 c2d3 7e c3 93 JMP JUMP JUMP TO USER PROGRAM 0171 c2d6 81 52 CMPA #'R 0172 c2d8 26 03 BNE *+5 0173 c2da 7e c3 37 JMP MENU_R REG/STACK CMDS 0174 c2dd 81 4d CMPA #'M 0175 c2df 26 03 BNE *+5 0176 c2e1 7e c3 07 JMP MENU_M MEMORY CMDS 0177 c2e4 81 4c CMPA #'L 0178 c2e6 26 03 BNE *+5 0179 c2e8 7e c5 be JMP LOAD LOAD S19 0180 c2eb 81 50 CMPA #'P 0181 c2ed 26 03 BNE *+5 0182 c2ef 7e c6 48 JMP PAGE SELECT I/O PAGE 0183 c2f2 81 53 CMPA #'S 0184 c2f4 26 03 BNE *+5 0185 c2f6 7e c6 69 JMP SSTEP SINGLE STEP 0186 c2f9 81 58 CMPA #'X 0187 c2fb 26 03 BNE *+5 0188 c2fd 7e d0 00 JMP EXROM JUMP TO EXTENDED ROM 0189 c300 86 3f LDAA #'? 0190 c302 bd 7f e8 JSR OUTCHAR 0191 c305 20 ab BRA PROMPT 0192 0193 c307 bd c6 fa MENU_M JSR INCHAR 0194 c30a 81 0d CMPA #$0D 0195 c30c 26 03 BNE *+5 0196 c30e 7e c2 b2 JMP PROMPT 0197 c311 84 df ANDA #$DF CONVERT TO UPPER CASE 0198 c313 81 43 CMPA #'C 0199 c315 26 03 BNE *+5 0200 c317 7e c4 7e JMP CHANGE MEMORY CHANGE 0201 c31a 81 57 CMPA #'W 0202 c31c 26 03 BNE *+5 0203 c31e 7e c4 ba JMP MEMWRT MEMORY WRITE 0204 c321 81 46 CMPA #'F 0205 c323 26 03 BNE *+5 0206 c325 7e c4 f9 JMP MFILL MEMORY FILL 0207 c328 81 44 CMPA #'D 0208 c32a 26 03 BNE *+5 0209 c32c 7e c5 41 JMP DUMP MEMORY DUMP 0210 c32f 86 3f LDAA #'? 0211 c331 bd 7f e8 JSR OUTCHAR 0212 c334 7e c2 b2 JMP PROMPT 0213 0214 c337 bd c6 fa MENU_R JSR INCHAR 0215 c33a 81 0d CMPA #$0D 0216 c33c 26 03 BNE *+5 0217 c33e 7e c2 b2 JMP PROMPT 0218 c341 84 df ANDA #$DF 0219 c343 81 52 CMPA #'R 0220 c345 26 03 BNE *+5 0221 c347 7e c3 b1 JMP PRTREG REGISTER PRINT 0222 c34a 81 41 CMPA #'A 0223 c34c 26 03 BNE *+5 0224 c34e 7e c3 f6 JMP REGACH REGISTER A CHANGE 0225 c351 81 42 CMPA #'B 0226 c353 26 03 BNE *+5 0227 c355 7e c4 08 JMP REGBCH REGISTER B CHANGE 0228 c358 81 58 CMPA #'X 0229 c35a 26 03 BNE *+5 0230 c35c 7e c4 1a JMP REGXCH REGISTER X CHANGE 0231 c35f 81 50 CMPA #'P 0232 c361 26 03 BNE *+5 0233 c363 7e c4 32 JMP REGPCH REGISTER PC CHANGE 0234 c366 81 43 CMPA #'C 0235 c368 26 03 BNE *+5 0236 c36a 7e c4 4a JMP REGCCH REGISTER CC CHANGE 0237 c36d 81 53 CMPA #'S 0238 c36f 26 03 BNE *+5 0239 c371 7e c4 5c JMP REGLDS CHANGE STACK POINTER 0240 c374 81 4d CMPA #'M 0241 c376 26 03 BNE *+5 0242 c378 7e c4 6d JMP REGRS RESET STACK POINTER 0243 c37b 86 3f LDAA #'? 0244 c37d bd 7f e8 JSR OUTCHAR 0245 c380 7e c2 b2 JMP PROMPT 0246 0247 *************** 0248 * HELP 0249 c383 ce c0 35 HELP LDX #HELPTX 0250 c386 bd c7 04 JSR PDATA 0251 c389 7e c2 b2 JMP PROMPT 0252 0253 *************** 0254 * GO 0255 c38c bd c7 0b GO JSR PCRLF 0256 c38f be 7f 07 LDS SP 0257 c392 3b RTI 0258 0259 *************** 0260 * JUMP TO ADDRESS 0261 c393 bd c7 34 JUMP JSR OUTS 0262 c396 bd c7 68 JSR BADDR 0263 c399 24 08 BCC JUMPE ADDRESS INPUT OK? 0264 c39b bd c7 0b JSR PCRLF 0265 c39e be 7f 07 LDS SP 0266 c3a1 6e 00 JMP 0,X JUMP TO ADDRESS IN X 0267 c3a3 86 3f JUMPE LDAA #'? 0268 c3a5 bd 7f e8 JSR OUTCHAR 0269 c3a8 7e c2 b2 JMP PROMPT 0270 0271 *************** 0272 * RETURN FROM USER PROGRAM 0273 c3ab bf 7f 07 RETURN STS SP 0274 c3ae 7e c2 b2 JMP PROMPT 0275 0276 *************** 0277 * PRINT CONTENTS OF STACK 0278 c3b1 ce c1 e3 PRTREG LDX #REGTX 0279 c3b4 bd c7 04 JSR PDATA 0280 c3b7 fe 7f 07 LDX SP 0281 c3ba 08 INX 0282 c3bb bd c7 32 JSR OUT2HS CONDITION CODES 0283 c3be bd c7 32 JSR OUT2HS ACC-B 0284 c3c1 bd c7 32 JSR OUT2HS ACC-A 0285 c3c4 bd c7 30 JSR OUT4HS X-REG 0286 c3c7 bd c7 30 JSR OUT4HS P-COUNTER 0287 c3ca ce 7f 07 LDX #SP 0288 c3cd bd c7 30 JSR OUT4HS STACK POINTER 0289 0290 c3d0 bd c7 34 JSR OUTS 0291 c3d3 fe 7f 07 LDX SP 0292 c3d6 e6 01 LDAB 1,X 0293 c3d8 ce 00 06 LDX #$06 0294 c3db 58 ASLB 0295 c3dc 58 ASLB 0296 c3dd bd c7 34 CCLOOP JSR OUTS 0297 c3e0 58 ASLB 0298 c3e1 25 08 BCS CCONE 0299 c3e3 86 30 CCZERO LDAA #'0 0300 c3e5 bd 7f e8 JSR OUTCHAR 0301 c3e8 7e c3 f0 JMP CCEND 0302 c3eb 86 31 CCONE LDAA #'1 0303 c3ed bd 7f e8 JSR OUTCHAR 0304 0305 c3f0 09 CCEND DEX 0306 c3f1 26 ea BNE CCLOOP 0307 c3f3 7e c2 b2 JMP PROMPT 0308 0309 *************** 0310 * REGISTER CHANGE ROUTINES (A B X PC CC SP) 0311 c3f6 86 3d REGACH LDAA #'= 0312 c3f8 bd 7f e8 JSR OUTCHAR 0313 c3fb fe 7f 07 LDX SP 0314 c3fe bd c7 54 JSR INBYTE 0315 c401 24 73 BCC REGERR 0316 c403 a7 03 STAA 3,X 0317 c405 7e c2 b2 ENDA JMP PROMPT 0318 c408 86 3d REGBCH LDAA #'= 0319 c40a bd 7f e8 JSR OUTCHAR 0320 c40d fe 7f 07 LDX SP 0321 c410 bd c7 54 JSR INBYTE 0322 c413 24 61 BCC REGERR 0323 c415 a7 02 STAA 2,X 0324 c417 7e c2 b2 ENDB JMP PROMPT 0325 c41a 86 3d REGXCH LDAA #'= 0326 c41c bd 7f e8 JSR OUTCHAR 0327 c41f bd c7 68 JSR BADDR 0328 c422 24 52 BCC REGERR 0329 c424 ff 7f 0b STX XHI 0330 c427 fe 7f 07 LDX SP 0331 c42a fc 7f 0b LDD XHI 0332 c42d ed 04 STD 4,X 0333 c42f 7e c2 b2 ENDX JMP PROMPT 0334 c432 86 3d REGPCH LDAA #'= 0335 c434 bd 7f e8 JSR OUTCHAR 0336 c437 bd c7 68 JSR BADDR 0337 c43a 24 3a BCC REGERR 0338 c43c ff 7f 0b STX XHI 0339 c43f fe 7f 07 LDX SP 0340 c442 fc 7f 0b LDD XHI 0341 c445 ed 06 STD 6,X 0342 c447 7e c2 b2 ENDP JMP PROMPT 0343 c44a 86 3d REGCCH LDAA #'= 0344 c44c bd 7f e8 JSR OUTCHAR 0345 c44f fe 7f 07 LDX SP 0346 c452 bd c7 54 JSR INBYTE 0347 c455 24 1f BCC REGERR 0348 c457 a7 01 STAA 1,X 0349 c459 7e c2 b2 ENDC JMP PROMPT 0350 c45c 86 3d REGLDS LDAA #'= 0351 c45e bd 7f e8 JSR OUTCHAR 0352 c461 bd c7 68 JSR BADDR 0353 c464 24 10 BCC REGERR 0354 c466 ff 7f 07 STX SP 0355 c469 35 TXS 0356 c46a 7e c2 b2 JMP PROMPT 0357 c46d 8e 7e ff REGRS LDS #STACK 0358 c470 bf 7f 07 STS SP 0359 c473 bd c2 b2 JSR PROMPT 0360 c476 86 3f REGERR LDAA #'? 0361 c478 bd 7f e8 JSR OUTCHAR 0362 c47b 7e c2 b2 JMP PROMPT 0363 0364 *************** 0365 * CHANGE MEMORY (MC AAAA DD NN) 0366 c47e bd c7 34 CHANGE JSR OUTS 0367 c481 bd c7 68 JSR BADDR BUILD ADDRESS 0368 c484 24 2c BCC CHANGER 0369 c486 bd c7 0b CHA51 JSR PCRLF C/R L/F 0370 c489 ce 7f 0b LDX #XHI 0371 c48c bd c7 30 JSR OUT4HS PRINT ADDRESS 0372 c48f fe 7f 0b LDX XHI 0373 c492 bd c7 32 JSR OUT2HS PRIND DATA (OLD) 0374 c495 ff 7f 0b STX XHI SAVE DATA ADDRESS 0375 c498 bd c7 54 JSR INBYTE INPUT NEW DATA 0376 c49b 24 0e BCC CHANG1 0377 c49d 09 DEX 0378 c49e a7 00 STAA ,X CHANGE MEMEORY 0379 c4a0 a1 00 CMPA ,X 0380 c4a2 27 e2 BEQ CHA51 DID CHANGE 0381 c4a4 86 3f LDAA #'? 0382 c4a6 bd 7f e8 JSR OUTCHAR 0383 c4a9 20 db BRA CHA51 0384 c4ab 81 dd CHANG1 CMPA #$DD 0385 c4ad 27 d7 BEQ CHA51 0386 c4af 7e c2 b2 CHANGEE JMP PROMPT 0387 c4b2 86 3f CHANGER LDAA #'? 0388 c4b4 bd 7f e8 JSR OUTCHAR 0389 c4b7 7e c2 b2 JMP PROMPT 0390 0391 *************** 0392 * MEMORY WRITE (MW SADR) 0393 c4ba bd c7 34 MEMWRT JSR OUTS PRINT SPACE 0394 c4bd bd c7 68 JSR BADDR ENTER STARTING ADDRESS 0395 c4c0 24 2f BCC MEMWRTE ADDRESS OK? 0396 c4c2 ff 7f 0b STX XHI 0397 c4c5 7f 7f 0a MEMWRTA CLR TEMP CLEAR DATA ENTRY FLAG 0398 c4c8 bd c7 0b JSR PCRLF 0399 c4cb ce 7f 0b LDX #XHI 0400 c4ce bd c7 30 JSR OUT4HS PRINT CURRENT ADDRESS 0401 c4d1 fe 7f 0b LDX XHI 0402 c4d4 bd c7 54 MEMWRTD JSR INBYTE GET BYTE FROM USER 0403 c4d7 25 08 BCS MEMWRTW BYTE OK 0404 c4d9 7d 7f 0a TST TEMP CHECK DATA ENTRY FLAG 0405 c4dc 26 e7 BNE MEMWRTA LOOP IF PREVIOUS DATA BYTES ENTERED 0406 c4de 7e c2 b2 JMP PROMPT IF NOT, EXIT ROUTINE 0407 c4e1 a7 00 MEMWRTW STAA ,X STORE ENTERED DATA BYTE 0408 c4e3 86 01 LDAA #1 0409 c4e5 b7 7f 0a STAA TEMP SET DATA ENTRY FLAG 0410 c4e8 08 INX 0411 c4e9 ff 7f 0b STX XHI STORE CURRENT ADDRESS 0412 c4ec bd c7 34 JSR OUTS PRINT SPACE 0413 c4ef 20 e3 BRA MEMWRTD WAIT FOR ANOTHER BYTE 0414 c4f1 86 3f MEMWRTE LDAA #'? 0415 c4f3 bd 7f e8 JSR OUTCHAR 0416 c4f6 7e c2 b2 JMP PROMPT 0417 0418 *************** 0419 * FILL MEMORY (MF SADR-EADR DA) 0420 c4f9 bd c7 34 MFILL JSR OUTS PRINT SPACE 0421 c4fc bd c7 68 JSR BADDR BUILD STARTING ADDRESS 0422 c4ff 24 30 BCC MFILLE CHECK IF CORRECT 0423 c501 ff 7f 0d STX XTEMP SAVE STARTING ADDRESS 0424 c504 86 2d LDAA #'- PRINT SEPARATOR 0425 c506 bd 7f e8 JSR OUTCHAR 0426 c509 bd c7 68 JSR BADDR BUILD ENDING ADRESS 0427 c50c 24 23 BCC MFILLE CHECK IF CORRECT 0428 c50e ff 7f 0b STX XHI 0429 c511 bc 7f 0d CPX XTEMP CHECK IF CORRECT ADDRESS RANGE 0430 c514 23 1b BLS MFILLE IF NOT, EXIT ROUTINE 0431 c516 08 INX 0432 c517 ff 7f 0b STX XHI 0433 c51a bd c7 34 JSR OUTS PRINT SPACE 0434 c51d bd c7 54 JSR INBYTE LOAD FILL DATA 0435 c520 24 0f BCC MFILLE CHECK IF CORRECT 0436 c522 16 TAB 0437 c523 fe 7f 0d LDX XTEMP 0438 c526 e7 00 MFILL2 STAB ,X STORE DATA 0439 c528 08 INX 0440 c529 bc 7f 0b CPX XHI 0441 c52c 26 f8 BNE MFILL2 0442 c52e 7e c2 b2 JMP PROMPT 0443 c531 86 3f MFILLE LDAA #'? 0444 c533 bd 7f e8 JSR OUTCHAR 0445 c536 7e c2 b2 JMP PROMPT 0446 0447 *************** 0448 * DUMP MEMORY (MD AAAA) 0449 c539 86 3f DUMPERR LDAA #'? 0450 c53b bd 7f e8 JSR OUTCHAR 0451 c53e 7e c2 b2 JMP PROMPT 0452 c541 bd c7 34 DUMP JSR OUTS 0453 c544 bd c7 68 JSR BADDR 0454 c547 24 f0 BCC DUMPERR END IF ADDRESS NOT OK 0455 c549 ff 7f 0b STX XHI 0456 c54c bd c7 0b JSR PCRLF 0457 c54f b6 7f 0c DUMP0 LDAA XLOW 0458 c552 84 f0 ANDA #$F0 BEGIN DUMP AT $xxx0 0459 c554 b7 7f 0c STAA XLOW 0460 c557 ce c2 0d LDX #DUMPTX 0461 c55a bd c7 04 JSR PDATA 0462 c55d 86 10 LDAA #16 0463 c55f b7 7f 0a STAA TEMP ROW COUNTER. 16 ROWS = 1 MEMORY PAGE 0464 ** PRINT ROW 0465 c562 ce 7f 0b DUMP1 LDX #XHI 0466 c565 bd c7 30 JSR OUT4HS PRINT ADDRESS 0467 c568 bd c7 34 JSR OUTS 0468 c56b fe 7f 0b LDX XHI 0469 c56e ff 7f 0d STX XTEMP SAVE X FOR ASCII PRINT 0470 ** PRINT ROW OF BYTES 0471 c571 bd c7 32 DUMP2 JSR OUT2HS 0472 c574 ff 7f 0b STX XHI SAVE NOW INCREMENTED X 0473 c577 b6 7f 0c LDAA XLOW 0474 c57a 84 0f ANDA #$0F FILTER OUT LAST NIB 0475 c57c 81 08 CMPA #$08 0476 c57e 26 03 BNE DUMP25 0477 c580 bd c7 34 JSR OUTS 0478 c583 81 00 DUMP25 CMPA #$00 LAST BYTE IN ROW? 0479 c585 26 ea BNE DUMP2 0480 c587 fe 7f 0d LDX XTEMP RESTORE POINTER 0481 c58a ff 7f 0b STX XHI FOR ASCII DUMP 0482 c58d bd c7 34 JSR OUTS 0483 ** PRINT ROW OF ASCII 0484 c590 a6 00 DUMP3 LDAA 0,X 0485 c592 81 7e CMPA #$7E 0486 c594 22 04 BHI DUMP4 BYTE IS NOT PRINTABLE 0487 c596 81 20 CMPA #$20 0488 c598 2c 02 BGE DUMP5 BYTE IS PRINTABLE 0489 c59a 86 2e DUMP4 LDAA #'. 0490 c59c bd 7f e8 DUMP5 JSR OUTCHAR PRINT ASCII CHAR 0491 c59f 08 INX 0492 c5a0 ff 7f 0b STX XHI POINT TO NEXT CHARACTER 0493 c5a3 b6 7f 0c LDAA XLOW 0494 c5a6 84 0f ANDA #$0F 0495 c5a8 26 e6 BNE DUMP3 LAST CHARACTER IN ROW? 0496 c5aa bd c7 0b JSR PCRLF 0497 c5ad 7a 7f 0a DEC TEMP 0498 c5b0 27 02 BEQ DUMPE LAST ROW? 0499 c5b2 20 ae BRA DUMP1 0500 c5b4 bd c6 fa DUMPE JSR INCHAR 0501 c5b7 81 0d CMPA #$0D 0502 c5b9 27 94 BEQ DUMP0 DUMP NEXT PAGE 0503 c5bb 7e c2 b2 JMP PROMPT 0504 0505 *************** 0506 * LOAD S19 RECORD 0507 c5be ce c2 47 LOAD LDX #LDTX 0508 c5c1 bd c7 04 JSR PDATA 0509 c5c4 86 0d LOAD1 LDAA #$0D 0510 c5c6 bd 7f e8 JSR OUTCHAR 0511 c5c9 86 39 LOAD2 LDAA #$39 (RTS) 0512 c5cb b7 7f e8 STAA CONOVEC DISABLE CONSOLE OUTPUT 0513 c5ce bd c6 fa JSR INCHAR 0514 c5d1 81 53 CMPA #'S 0515 c5d3 26 f4 BNE LOAD2 1ST CHAR NOT (S) 0516 c5d5 bd c6 fa JSR INCHAR READ CHAR 0517 c5d8 81 39 CMPA #'9 0518 c5da 27 57 BEQ LOAD21 2ND CHAR (9) 0519 c5dc 81 31 CMPA #'1 0520 c5de 26 e9 BNE LOAD2 2ND CHAR NOT (1) 0521 c5e0 7f 7f 09 CLR CKSM CLEAR CHECKSUM 0522 c5e3 bd c7 54 JSR INBYTE READ BYTE 0523 c5e6 16 TAB 0524 c5e7 fb 7f 09 ADDB CKSM 0525 c5ea f7 7f 09 STAB CKSM 0526 c5ed 80 02 SUBA #2 0527 c5ef b7 7f 0a STAA TEMP BYTE COUNT 0528 c5f2 bd c7 68 JSR BADDR 0529 c5f5 24 25 BCC LOAD19 ADDRESS OK? 0530 c5f7 f6 7f 09 LDAB CKSM 0531 c5fa fb 7f 0b ADDB XHI 0532 c5fd fb 7f 0c ADDB XLOW 0533 c600 f7 7f 09 STAB CKSM 0534 c603 bd c7 54 LOAD11 JSR INBYTE 0535 c606 16 TAB 0536 c607 fb 7f 09 ADDB CKSM 0537 c60a f7 7f 09 STAB CKSM 0538 c60d 7a 7f 0a DEC TEMP 0539 c610 27 05 BEQ LOAD15 ZERO BYTE COUNT 0540 c612 a7 00 STAA ,X STORE DATA 0541 c614 08 INX 0542 c615 20 ec BRA LOAD11 0543 c617 7c 7f 09 LOAD15 INC CKSM INCREMENT CHECKSUM 0544 c61a 27 a8 BEQ LOAD1 0545 c61c 86 7e LOAD19 LDAA #$7E (JMP EXTENDED) 0546 c61e b7 7f e8 STAA CONOVEC ENABLE CONSOLE OUTPUT 0547 c621 ce c2 5b LDX #LFAILTX PRINT ERROR MESSAGE 0548 c624 bd c7 04 JSR PDATA 0549 c627 bd 7f eb LOAD20 JSR CONIVEC 0550 c62a 84 df ANDA #$DF TO UPPER CASE 0551 c62c 81 59 CMPA #'Y 0552 c62e 26 f7 BNE LOAD20 0553 c630 7e c2 b2 JMP PROMPT 0554 c633 bd c6 fa LOAD21 JSR INCHAR 0555 c636 81 0d CMPA #$0D 0556 c638 26 f9 BNE LOAD21 0557 c63a 86 7e LDAA #$7E (JMP EXTENDED) 0558 c63c b7 7f e8 STAA CONOVEC ENABLE CONSOLE OUTPUT 0559 c63f ce c2 80 LDX #LDOKTX 0560 c642 bd c7 04 JSR PDATA 0561 c645 7e c2 b2 JMP PROMPT 0562 0563 *************** 0564 * PAGE SELECT ROUTINE 0565 c648 86 3d PAGE LDAA #'= 0566 c64a bd 7f e8 JSR OUTCHAR 0567 c64d 86 ff LDAA #$FF 0568 c64f 97 00 STAA PIA1DIR SET ALL OUTPUT 0569 c651 bd c7 39 JSR INHEX 0570 c654 24 04 BCC PAGERR 0571 c656 81 07 CMPA #$07 0572 c658 23 08 BLS PAGESET 0573 c65a 86 3f PAGERR LDAA #'? 0574 c65c bd 7f e8 JSR OUTCHAR 0575 c65f 7e c2 b2 JMP PROMPT 0576 c662 8a 80 PAGESET ORAA #$80 MASK EXTERNAL INTERRUPTS 0577 c664 97 02 STAA PIA1DAT 0578 c666 7e c2 b2 JMP PROMPT 0579 0580 *************** 0581 * DO SINGLE STEP 0582 c669 bd c7 0b SSTEP JSR PCRLF 0583 c66c be 7f 07 STEP LDS SP RESTORE PROGRAM STACK POINTER 0584 c66f 30 TSX 0585 c670 a6 00 LDAA ,X LOAD CC 0586 c672 84 ef ANDA #$EF CLEAR INTERUPT MASK BIT 0587 c674 a7 00 STAA ,X SAVE CC 0588 c676 c6 1f LDAB #$1F 0589 c678 5a STPWAI DECB WAIT FOR EVENTUAL SCI XFER 0590 c679 c1 00 CMPB #$00 BEFORE TIMER INIT 0591 c67b 26 fb BNE STPWAI 0592 c67d ce c6 8f LDX #STOP SET INTERRUPT VECTOR 0593 c680 ff 7f ef STX TMOFVEC+1 0594 c683 ce ff ed LDX #$FFED RESET COUNTER VALUE 0595 c686 df 09 STX COUNTHI 0596 c688 de 08 LDX TIMECON CLEAR INTERRUPT BIT IN TIMER CTRL REG 0597 c68a 86 04 LDAA #$04 ENABLE TIMER OVERFLOW INTERRUPT 0598 c68c 97 08 STAA TIMECON 0599 c68e 3b RTI 0600 0601 *************** 0602 * SINGLE STEP INTERRUPT ENTRY 0603 c68f bf 7f 07 STOP STS SP SAVE PROGRAM STACK POINTER 0604 c692 ce c7 7a LDX #INTSEQ RESTORE INTERRUPT VECTOR 0605 c695 ff 7f ef STX TMOFVEC+1 0606 c698 de 08 LDX TIMECON CLEARS INTERRUPT BIT IN TIMER CTRL REG 0607 c69a 86 00 LDAA #$00 DISABLE TIMER INTERRUPT 0608 c69c 97 08 STAA TIMECON 0609 c69e fe 7f 07 LDX SP EXTRACT PROGRAM STOP ADDRESS 0610 c6a1 c6 06 LDAB #6 0611 c6a3 3a ABX 0612 c6a4 ee 00 LDX ,X 0613 c6a6 8c c0 00 CPX #$C000 0614 c6a9 22 c1 BHI STEP NO STOP IN ROM 0615 c6ab ff 7f 0d STX XTEMP 0616 c6ae f6 7f 0d LDAB XTEMP 0617 c6b1 c1 7f CMPB #$7F 0618 c6b3 27 b7 BEQ STEP NO STOP IN PAGE $7F 0619 c6b5 ce c2 8c LDX #STOPTX 0620 c6b8 bd c7 04 JSR PDATA 0621 c6bb 7e c3 b1 JMP PRTREG PRINT REGS AND GO TO PROMPT 0622 0623 *************** 0624 * INIT BUILTIN ACIA 0625 c6be 86 05 SCIINIT LDAA #$05 ENABLE INTERNAL ACIA, INTERNAL CLOCK, 9600 BAUD 0626 c6c0 97 10 STAA ACIAMOD 0627 c6c2 86 0a LDAA #$0A ENABLE RECIEVE AND TRANSMITT DATA 0628 c6c4 97 11 STAA ACIASTA 0629 c6c6 96 12 LDAA ACIARXD FLUSH BUFFER AND CLEAR ERROR FLAGS 0630 c6c8 39 RTS 0631 0632 *************** 0633 * BUILTIN ACIA OUTPUT FROM A-ACC 0634 c6c9 37 SCIOUT PSHB SAVE B-REG 0635 c6ca d6 11 SCIOUT1 LDAB ACIASTA 0636 c6cc 58 ASLB 0637 c6cd 58 ASLB 0638 c6ce 58 ASLB 0639 c6cf 24 f9 BCC SCIOUT1 READY FOR NEXT CHARACTER 0640 c6d1 97 13 STAA ACIATXD 0641 c6d3 33 PULB RESTORE B-REG 0642 c6d4 39 RTS 0643 0644 *************** 0645 * BUILTIN ACIA INPUT TO A-ACC 0646 c6d5 96 12 SCIINER LDAA ACIARXD ON ERROR, FLUSH BUFFER AND CLEAR ERROR FLAG 0647 c6d7 96 11 SCIIN LDAA ACIASTA 0648 c6d9 84 c0 ANDA #$C0 FILTER OUT RDRF AND ORFE 0649 c6db 81 00 CMPA #$00 0650 c6dd 27 f8 BEQ SCIIN WAIT FOR CHARACTER 0651 c6df 81 40 CMPA #$40 0652 c6e1 27 f2 BEQ SCIINER CHECK FOR FRAMING ERROR 0653 c6e3 96 12 LDAA ACIARXD READ RECIEVED CHARACTER 0654 c6e5 39 RTS 0655 0656 *************** 0657 * BUILTIN ACIA STATUS TO A-ACC 0658 * RETURNS 1 ON CHAR WAITING. 0 ON NO CHAR 0659 c6e6 96 12 SCISTAE LDAA ACIARXD ON ERROR, FLUSH BUFFER AND CLEAR ERROR FLAG 0660 c6e8 96 11 SCISTAT LDAA ACIASTA 0661 c6ea 84 c0 ANDA #$C0 FILTER OUT RDRF AND ORFE 0662 c6ec 81 00 CMPA #$00 0663 c6ee 27 07 BEQ SCISTA0 NO ERROR AND NO CHARACTER 0664 c6f0 81 40 CMPA #$40 0665 c6f2 27 f2 BEQ SCISTAE CHECK FOR ERROR 0666 c6f4 86 01 LDAA #$01 CHARACTER WAITING 0667 c6f6 39 RTS 0668 c6f7 86 00 SCISTA0 LDAA #$00 0669 c6f9 39 RTS 0670 0671 *************** 0672 * OUTPUT/INPUT ONE CHAR TO/FROM A-REGISTER AND ECHO 0673 c6fa bd 7f eb INCHAR JSR CONIVEC 0674 c6fd 7e 7f e8 JMP CONOVEC 0675 7fe8 OUTCHAR EQU CONOVEC 0676 0677 *************** 0678 * PRINT DATA POINTED AT BY X-REG 0679 c700 bd 7f e8 PDATA2 JSR OUTCHAR 0680 c703 08 INX 0681 c704 a6 00 PDATA LDAA ,X 0682 c706 81 04 CMPA #4 0683 c708 26 f6 BNE PDATA2 GO ON IF NOT EOT 0684 c70a 39 RTS 0685 0686 *************** 0687 * OUTPUT CRLF 0688 c70b 3c PCRLF PSHX 0689 c70c ce c0 2d LDX #CRLFTX 0690 c70f bd c7 04 JSR PDATA 0691 c712 38 PULX 0692 c713 39 RTS 0693 0694 *************** 0695 * OUTPUT HEX CHARS 0696 c714 44 OUTHL LSRA OUT HEX LEFT BCD DIGIT 0697 c715 44 LSRA 0698 c716 44 LSRA 0699 c717 44 LSRA 0700 c718 84 0f OUTHR ANDA #$F OUT HEX RIGHT BCD DIGIT 0701 c71a 8b 30 ADDA #$30 0702 c71c 81 39 CMPA #$39 0703 c71e 23 02 BLS OUTHE 0704 c720 8b 07 ADDA #$7 0705 c722 7e 7f e8 OUTHE JMP OUTCHAR 0706 0707 c725 a6 00 OUT2H LDAA 0,X 0708 c727 bd c7 14 JSR OUTHL OUTPUT LEFT HEX CHAR 0709 c72a a6 00 LDAA 0,X 0710 c72c 08 INX 0711 c72d 7e c7 18 JMP OUTHR OUTPUT RIGHT HEX CHAR 0712 0713 c730 8d f3 OUT4HS BSR OUT2H OUTPUT 4 HEX CHAR + SPACE 0714 c732 8d f1 OUT2HS BSR OUT2H OUTPUT 2 HEX CHAR + SPACE 0715 c734 86 20 OUTS LDAA #$20 SPACE 0716 c736 7e 7f e8 JMP OUTCHAR (BSR & RTS) 0717 0718 *************** 0719 * INPUT HEX CHAR INTO A-ACC 0720 c739 bd c6 fa INHEX JSR INCHAR 0721 c73c 80 30 SUBA #$30 0722 c73e 2b 12 BMI NOTHEX 0723 c740 81 09 CMPA #$09 0724 c742 2f 0c BLE IN1HG 0725 c744 84 df ANDA #$DF CONVERT TO UPPER CASE 0726 c746 81 11 CMPA #$11 0727 c748 2b 08 BMI NOTHEX 0728 c74a 81 16 CMPA #$16 0729 c74c 2e 04 BGT NOTHEX 0730 c74e 80 07 SUBA #7 0731 c750 0d IN1HG SEC INPUT OK. SET CARRY 0732 c751 39 RTS 0733 c752 0c NOTHEX CLC INPUT BAD. CLEAR CARRY 0734 c753 39 RTS 0735 0736 *************** 0737 * INPUT BYTE (TWO FRAMES) INTO A-ACC 0738 c754 bd c7 39 INBYTE JSR INHEX GET HEX CHAR 0739 c757 24 0d BCC INBYTE1 0740 c759 48 ASLA 0741 c75a 48 ASLA 0742 c75b 48 ASLA 0743 c75c 48 ASLA 0744 c75d 16 TAB 0745 c75e bd c7 39 JSR INHEX 0746 c761 24 03 BCC INBYTE1 0747 c763 1b ABA 0748 c764 0d SEC GOOD INPUT 0749 c765 39 RTS 0750 c766 0c INBYTE1 CLC BAD INPUT 0751 c767 39 RTS 0752 0753 *************** 0754 * BUILD ADDRESS INTO X-REG 0755 c768 8d ea BADDR BSR INBYTE READ FIRST FRAME 0756 c76a 24 0d BCC BADDRE 0757 c76c b7 7f 0b STAA XHI 0758 c76f 8d e3 BSR INBYTE READ SECOND FRAME 0759 c771 24 06 BCC BADDRE 0760 c773 b7 7f 0c STAA XLOW 0761 c776 fe 7f 0b LDX XHI (X) ADDRESS WE BUILD 0762 c779 39 BADDRE RTS 0763 0764 *************** 0765 * INTERRUPT SEQUENCE 0766 c77a bf 7f 07 INTSEQ STS SP 0767 c77d 7e c3 b1 JMP PRTREG PRINT REGS AND GO TO PROMPT 0768 0769 *************** 0770 * TRAP INTERRUPT SEQUENCE 0771 c780 bf 7f 07 TRAP STS SP SAVE TARGET STACKPOINTER 0772 c783 ce c2 93 LDX #TRAPTX 0773 c786 bd c7 04 JSR PDATA 0774 c789 7e c3 b1 JMP PRTREG PRINT REGS AND GO TO PROMPT 0775 0776 *************** 0777 * INITIATE VECTOR JUMPTABLE 0778 c78c 86 7e INITVEC LDAA #$7E JMP EXT OP CODE 0779 c78e ce c7 7a LDX #INTSEQ 0780 c791 b7 7f fd STAA NMIVEC 0781 c794 ff 7f fe STX NMIVEC+1 0782 c797 b7 7f fa STAA SWIVEC 0783 c79a ff 7f fb STX SWIVEC+1 0784 c79d b7 7f f7 STAA IRQVEC 0785 c7a0 ff 7f f8 STX IRQVEC+1 0786 c7a3 b7 7f f4 STAA TMICVEC 0787 c7a6 ff 7f f5 STX TMICVEC+1 0788 c7a9 b7 7f f1 STAA TMOCVEC 0789 c7ac ff 7f f2 STX TMOCVEC+1 0790 c7af b7 7f ee STAA TMOFVEC 0791 c7b2 ff 7f ef STX TMOFVEC+1 0792 c7b5 ce c6 c9 LDX #SCIOUT 0793 c7b8 b7 7f e8 STAA CONOVEC 0794 c7bb ff 7f e9 STX CONOVEC+1 0795 c7be ce c6 d7 LDX #SCIIN 0796 c7c1 b7 7f eb STAA CONIVEC 0797 c7c4 ff 7f ec STX CONIVEC+1 0798 c7c7 ce c6 e8 LDX #SCISTAT 0799 c7ca b7 7f e5 STAA CONSVEC 0800 c7cd ff 7f e6 STX CONSVEC+1 0801 c7d0 39 RTS 0802 0803 *************** 0804 * I/O READ FUNCTION 0805 * IN: X = ADDRESS 0806 * B = I/O PAGE 0807 * OUT: A = DATA 0808 c7d1 96 02 IORD LDAA PIA1DAT 0809 c7d3 36 PSHA SAVE PAGE REG 0810 c7d4 d7 02 STAB PIA1DAT SET NEW I/O PAGE 0811 c7d6 a6 00 LDAA ,X ACCESS I/O PAGE 0812 c7d8 33 PULB 0813 c7d9 d7 02 STAB PIA1DAT RESTORE PAGE REG 0814 c7db 39 RTS 0815 0816 *************** 0817 * I/O WRITE FUNCTION 0818 * IN: X = ADDRESS 0819 * B = I/O PAGE 0820 * A = DATA 0821 c7dc 36 IOWR PSHA SAVE DATA 0822 c7dd 96 02 LDAA PIA1DAT 0823 c7df 36 PSHA SAVE PAGE REG 0824 c7e0 d7 02 STAB PIA1DAT SET NEW I/O PAGE 0825 c7e2 33 PULB RESTORE PAGE REG VALUE 0826 c7e3 32 PULA RESORE DATA VALUE 0827 c7e4 a7 00 STAA ,X ACCESS I/O PAGE 0828 c7e6 d7 02 STAB PIA1DAT RESTORE PAGE REG 0829 c7e8 39 RTS 0830 0831 *************** 0832 * VECTORS 0833 ffee ORG $FFEE 0834 ffee c7 80 FDB TRAP FFEE-EF TRAP 0835 0836 fff2 ORG $FFF2 0837 fff2 7f ee FDB TMOFVEC FFF2-3 TIMER OVER FLOW 0838 fff4 7f f1 FDB TMOCVEC FFF4-5 TIMER OUTPUT COMPARE 0839 fff6 7f f4 FDB TMICVEC FFF6-7 TIMER INPUT CAPTURE 0840 fff8 7f f7 FDB IRQVEC FFF8-9 IRQ 0841 fffa 7f fa FDB SWIVEC FFFA-B SOFTWARE INTERRUPT 0842 fffc 7f fd FDB NMIVEC FFFC-D NMI 0843 fffe c2 9a FDB RESET FFFE-F RESET 0844 0845 *************** 0846 * EXTENDED ROM 0847 d000 EXROM EQU $D000 Number of errors 0