📄 cpu01mon.lst
字号:
00180 F8E3 CE 00 DB LDX #U$STK . POINT AT THE USER'S STACK
00181 F8E6 DF 80 STX USTACK . SET USER'S STACK
00182 F8E8 BD FA C1 JSR IOSET . INIT THE PORTS
00184 *
00185 * RESET THE VECTORS
00186 *
00187 F8EB CE FF 6E LDX #VECTBL . POINT AT THE TABLE
00188 F8EE DF B1 STX TMP$00 . SAVE THE SOURCE
00189 F8F0 CE 00 82 LDX #VECBUF . POINT AT THE BUFFER
00190 F8F3 DF B3 STX TMP$01 . SAVE THE DESTINATION
00191 F8F5 C6 0E LDAB #2*7 . 14 BYTES TO MOVE
00192 F8F7 DE B1 VCTLP0 LDX TMP$00 . GET THE POINTER
00193 F8F9 A6 00 LDAA 0,X . GET A BYTE
00194 F8FB 08 INX
00195 F8FC DF B1 STX TMP$00
00196 F8FE DE B3 LDX TMP$01 . GET THE DESTINATION
00197 F900 A7 00 STAA 0,X
00198 F902 08 INX
00199 F903 DF B3 STX TMP$01
00200 F905 5A DECB
00201 F906 26 EF BNE VCTLP0 . LOOP UNTIL FULL
00203 *
00204 * CLEAR THE BREAK POINT TABLE
00205 *
00206 F908 CE 00 99 LDX #BRKPTS . POINT AT THE TABLE
00207 F90B C6 10 LDAB #4*4
00208 F90D 6F 00 C$BRK CLR 0,X
00209 F90F 08 INX
00210 F910 5A DECB
00211 F911 26 FA BNE C$BRK
00212 F913 86 01 LDAA #1 . SET THE IRQ BIT
00213 F915 97 95 STAA IRQFLG . CLR THE IRQ FLAG
00214 F917 7F 00 A9 CLR OFFSET . RESET THE ADDRESS OFFSET
00215 F91A 7F 00 AA CLR OFFSET+1
00217 *
00218 * PREPARE TO TALK TO THE USER
00219 *
00220 F91D CE F8 1F LDX #HEADER . SEND SIGN-ON MESSAGE
00221 F920 BD F9 FB JSR PDATA
00223 *
00224 * CLEAR THE USER'S STACK
00225 *
00226 F923 DE 80 LDX USTACK
00227 F925 08 INX
00228 F926 86 07 LDAA #7
00229 F928 6F 00 CL$STK CLR 0,X . CLEAR THIS BYTE
00230 F92A 08 INX
00231 F92B 4A DECA
00232 F92C 26 FA BNE CL$STK
Macro Cross Assembler RMCA6800 (3.11) - Mon Dec 22 07:46:02 2003 Page 0005
Sunday, October 12, 2003 (mlh) DEBUG MONITOR FOR System6801
00233 F92E 9E 80 LDS USTACK . POINT AT USER'S STACK
00235 *
00236 * W A R M S T A R T E N T R Y P O I N T
00237 *
00238 F930 9F 80 WARM$ STS USTACK . SAVE THE USER'S STACK
00240 *
00241 * H O T S T A R T E N T R Y P O I N T
00242 *
00243 F932 8E 00 FF MON$ LDS #STACK . RESET MONITOR STACK
00244 F935 CE F8 31 LDX #PRMT . SEND PROMPT TO USER
00245 F938 BD F9 FB JSR PDATA
00246 F93B 7F 00 92 CLR AECHO . RESET THE ECHO FLAG
00247 F93E D6 95 LDAB IRQFLG . SEE IF WE SHOULD SET/RESET IRQ BIT
00248 F940 C4 01 ANDB #1 . ISOLATE THE BIT
00249 F942 58 ASLB
00250 F943 58 ASLB
00251 F944 58 ASLB
00252 F945 58 ASLB . PUT THE BIT IN IT'S PLACE
00253 F946 07 TPA . GET THE CC'S
00254 F947 84 EF ANDA #%11101111 . ISOLATE THE IRQ BIT
00255 F949 1B ABA . ADD THE BIT
00256 F94A 06 TAP . RESTORE THE CC'S
00257 F94B CE F9 92 LDX #CMDTBL . POINT AT TABLE OF COMMANDS
00258 F94E 8D 11 BSR GETCMD
00259 F950 25 06 BCS WHATER
00260 F952 EE 01 LDX 1,X . DO THE COMMAND
00261 F954 AD 00 JSR 0,X
00262 F956 20 DA BRA MON$
00264 *
00265 * SEND A 'WHAT' TO USER
00266 *
00267 F958 CE F8 63 WHATER LDX #WHAT
00268 F95B BD F9 FD JSR PDATA1
00269 F95E 7E F9 32 JMP MON$
00271 *
00272 * GET USER'S REQUEST
00273 *
00274 F961 DF B7 GETCMD STX TMP$03 . SAVE TABLE ADDRESS
00275 F963 CE 00 00 CMDLOP LDX #0 . ZERO OUT VALUE
00276 F966 DF 97 STX VALUE
00277 F968 7F 00 96 CLR VFLAG
00278 F96B BD F9 DE CMDLP0 JSR INCHNP . GET A CHAR. FROM THE USER
00279 F96E BD F9 9C JSR CHKHEX . IS IT A HEX CHAR
00280 F971 25 0A BCS CHKCM0 . CHECK FOR COMMAND
00281 F973 BD F9 B8 JSR ADDHEX . ADD TO 'VALUE' A HEX NUMBER
00282 F976 20 F3 BRA CMDLP0 . RETURN TO LOOP
00284 *
00285 * CHECK FOR COMMAND
00286 *
00287 F978 BD F9 DE CHKCMD JSR INCHNP . GET A CHAR.
00288 F97B DF B7 STX TMP$03 . SAVE THE POINTER
00289 F97D DE B7 CHKCM0 LDX TMP$03 . POINT AT TABLE OF LEGAL COMMANDS
00290 F97F 6D 00 TST 0,X . SEE IF DUMMY TABLE
Macro Cross Assembler RMCA6800 (3.11) - Mon Dec 22 07:46:02 2003 Page 0006
Sunday, October 12, 2003 (mlh) DEBUG MONITOR FOR System6801
00291 F981 27 0B BEQ CHKDUM . JUST EXIT
00292 F983 A1 00 CHKCL0 CMPA 0,X . THIS COMMAND?
00293 F985 27 09 BEQ CMD$DO . YES
00294 F987 08 INX . MOVE TO NEXT COMMAND
00295 F988 08 INX
00296 F989 08 INX
00297 F98A 6D 00 TST 0,X . END OF TABLE?
00298 F98C 26 F5 BNE CHKCL0 . NO KEEP GOING
00299 F98E 0D CHKDUM SEC . SET FOR ILLEGAL COMMAND
00300 F98F 39 RTS
00302 *
00303 * GOOD COMMAND
00304 *
00305 F990 0C CMD$DO CLC . SET FOR LEGAL COMMAND RECEIVED
00306 F991 39 RTS
00308 *
00309 * TABLE OF LEGAL COMMANDS
00310 *
00311 F992 2F CMDTBL FCB '/ . EXAMINE MEMORY
00312 F993 FA CB FDB EXAMIN
00313 F995 3B FCB '; . SUB-PROGRAM ROUTINE
00314 F996 FB 70 FDB SUBPRG
00315 F998 0D FCB CR . DUMMY COMMAND (IGNORE)
00316 F999 F9 8E FDB CHKDUM
00317 F99B 00 FCB 0 . END OF TABLE
00319 *
00320 * CHECK CHARACTER IN 'A' FOR HEX
00321 *
00322 F99C 81 30 CHKHEX CMPA #'0 . SEE IF NUMERIC
00323 F99E 2D 0C BLT CHKHNO
00324 F9A0 81 39 CMPA #'9
00325 F9A2 23 0A BLS CISHEX
00326 F9A4 81 41 CMPA #'A . ALFA?
00327 F9A6 2D 04 BLT CHKHNO
00328 F9A8 81 46 CMPA #'F
00329 F9AA 23 02 BLS CISHEX
00330 F9AC 0D CHKHNO SEC
00331 F9AD 39 RTS
00333 *
00334 F9AE 80 30 CISHEX SUBA #'0
00335 F9B0 81 09 CMPA #9 . DONE?
00336 F9B2 23 02 BLS CHKHDN
00337 F9B4 80 07 SUBA #7 . ALFA
00338 F9B6 0C CHKHDN CLC
00339 F9B7 39 RTS
00341 *
00342 * ADD A HEX NUMBER IN 'A' TO 'VALUE'
00343 *
00344 F9B8 78 00 98 ADDHEX ASL VALUE+1 . MULTIPLY VALUE BY 16
00345 F9BB 79 00 97 ROL VALUE
00346 F9BE 78 00 98 ASL VALUE+1
00347 F9C1 79 00 97 ROL VALUE
00348 F9C4 78 00 98 ASL VALUE+1
Macro Cross Assembler RMCA6800 (3.11) - Mon Dec 22 07:46:02 2003 Page 0007
Sunday, October 12, 2003 (mlh) DEBUG MONITOR FOR System6801
00349 F9C7 79 00 97 ROL VALUE
00350 F9CA 78 00 98 ASL VALUE+1
00351 F9CD 79 00 97 ROL VALUE
00352 F9D0 9B 98 ADDA VALUE+1
00353 F9D2 97 98 STAA VALUE+1
00354 F9D4 24 03 BCC ADDONE
00355 F9D6 7C 00 97 INC VALUE
00356 F9D9 86 01 ADDONE LDAA #1 . SET FLAG
00357 F9DB 97 96 STAA VFLAG
00358 F9DD 39 RTS
00360 *
00361 * INPUT 1 CHARACTER FROM ACIA WO/PARITY
00362 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -