261 lines
10 KiB
Plaintext
261 lines
10 KiB
Plaintext
outp | addr | data (base 16)
|
|
|
|
0:0 | 0 | ; CURSORPOS:
|
|
2:0 | 2 | ; SHIFTDOWN:
|
|
3:0 | 3 | ; TESTCHAR:
|
|
fc00:0 | fc00 | fc 20 ; PRINTCHAR
|
|
fc02:0 | fc02 | fd 1b ; GETCHAR
|
|
fc04:0 | fc04 | fc 92 ; PRINTSTRING
|
|
fc06:0 | fc06 | fd 59 ; GETSTRING
|
|
fc08:0 | fc08 | fc 9f ; PRINTHEX
|
|
fc0a:0 | fc0a | fd 8e ; SLEEP
|
|
fc20:0 | fc20 | ; PRINTCHAR:
|
|
fc20:0 | fc20 | 48 ; PHA
|
|
fc21:0 | fc21 | 54 ; PHX
|
|
fc22:0 | fc22 | c9 0a ; CMP #$0A
|
|
fc24:0 | fc24 | f0 1a ; BEQ PRINTCHAR_NL
|
|
fc26:0 | fc26 | c9 0c ; CMP #$0C
|
|
fc28:0 | fc28 | f0 3d ; BEQ PRINT_CLS
|
|
fc2a:0 | fc2a | c9 08 ; CMP #$08
|
|
fc2c:0 | fc2c | f0 28 ; BEQ BACKSPACE
|
|
fc2e:0 | fc2e | a6 00 ; LDX CURSORPOS
|
|
fc30:0 | fc30 | c1 ; STA X+
|
|
fc31:0 | fc31 | 86 00 ; STX CURSORPOS
|
|
fc33:0 | fc33 | a5 01 ; LDA CURSORPOS+1
|
|
fc35:0 | fc35 | d0 06 ; BNE PRINTCHAR_RETURN
|
|
fc37:0 | fc37 | a5 00 ; LDA CURSORPOS
|
|
fc39:0 | fc39 | c9 c4 ; CMP #SCREEN_CHAR_OVFPG
|
|
fc3b:0 | fc3b | f0 2f ; BEQ SCROLLUP
|
|
fc3d:0 | fc3d | ; PRINTCHAR_RETURN:
|
|
fc3d:0 | fc3d | 74 ; PLX
|
|
fc3e:0 | fc3e | 68 ; PLA
|
|
fc3f:0 | fc3f | 60 ; RTS
|
|
fc40:0 | fc40 | ; PRINTCHAR_NL:
|
|
fc40:0 | fc40 | a5 01 ; LDA CURSORPOS+1
|
|
fc42:0 | fc42 | 29 c0 ; AND #$100-SCREEN_WIDTH
|
|
fc44:0 | fc44 | c9 c0 ; CMP #$100-SCREEN_WIDTH
|
|
fc46:0 | fc46 | d0 06 ; BNE NOSCROLLUP
|
|
fc48:0 | fc48 | a5 00 ; LDA CURSORPOS
|
|
fc4a:0 | fc4a | c9 c3 ; CMP #SCREEN_CHAR_MAXPG
|
|
fc4c:0 | fc4c | f0 1e ; BEQ SCROLLUP
|
|
fc4e:0 | fc4e | ; NOSCROLLUP:
|
|
fc4e:0 | fc4e | 6b 40 ; ADD #$40
|
|
fc50:0 | fc50 | 47 00 ; ICC CURSORPOS
|
|
fc52:0 | fc52 | 85 01 ; STA CURSORPOS+1
|
|
fc54:0 | fc54 | 98 e7 ; BRA PRINTCHAR_RETURN
|
|
fc56:0 | fc56 | ; BACKSPACE:
|
|
fc56:0 | fc56 | a5 01 ; LDA CURSORPOS+1
|
|
fc58:0 | fc58 | 29 3f ; AND #SCREEN_WIDTH-1
|
|
fc5a:0 | fc5a | f0 e1 ; BEQ PRINTCHAR_RETURN
|
|
fc5c:0 | fc5c | a6 00 ; LDX CURSORPOS
|
|
fc5e:0 | fc5e | e8 ff ; ADX #-1
|
|
fc60:0 | fc60 | 86 00 ; STX CURSORPOS
|
|
fc62:0 | fc62 | a9 00 ; LDA #$00
|
|
fc64:0 | fc64 | 81 ; STA X
|
|
fc65:0 | fc65 | 98 d6 ; BRA PRINTCHAR_RETURN
|
|
fc67:0 | fc67 | ; PRINT_CLS:
|
|
fc67:0 | fc67 | 20 fc a0 ; JSR CLEARSCREEN
|
|
fc6a:0 | fc6a | 98 d1 ; BRA PRINTCHAR_RETURN
|
|
fc6c:0 | fc6c | ; SCROLLUP:
|
|
fc6c:0 | fc6c | 14 ; PHY
|
|
fc6d:0 | fc6d | 48 ; PHA
|
|
fc6e:0 | fc6e | 5c ; PHB
|
|
fc6f:0 | fc6f | 1c ; PHC
|
|
fc70:0 | fc70 | aa c0 00 ; LDX #SCREEN_CHAR
|
|
fc73:0 | fc73 | a8 c0 40 ; LDY #SCREEN_CHAR+SCREEN_WIDTH
|
|
fc76:0 | fc76 | 2b 0f ; LDC #SCREEN_HEIGHT-1
|
|
fc78:0 | fc78 | ; SCROLLUP_LPOUT:
|
|
fc78:0 | fc78 | ab 40 ; LDB #SCREEN_WIDTH
|
|
fc7a:0 | fc7a | ; SCROLLUP_LPIN:
|
|
fc7a:0 | fc7a | f1 ; LDA Y+
|
|
fc7b:0 | fc7b | c1 ; STA X+
|
|
fc7c:0 | fc7c | de ; DEC B
|
|
fc7d:0 | fc7d | d0 fb ; BNE SCROLLUP_LPIN
|
|
fc7f:0 | fc7f | da ; DEC C
|
|
fc80:0 | fc80 | d0 f6 ; BNE SCROLLUP_LPOUT
|
|
fc82:0 | fc82 | 86 00 ; STX CURSORPOS
|
|
fc84:0 | fc84 | a9 00 ; LDA #$00
|
|
fc86:0 | fc86 | ab 40 ; LDB #SCREEN_WIDTH
|
|
fc88:0 | fc88 | ; SCROLLUP_LPC:
|
|
fc88:0 | fc88 | c1 ; STA X+
|
|
fc89:0 | fc89 | de ; DEC B
|
|
fc8a:0 | fc8a | d0 fc ; BNE SCROLLUP_LPC
|
|
fc8c:0 | fc8c | 3c ; PLC
|
|
fc8d:0 | fc8d | 7c ; PLB
|
|
fc8e:0 | fc8e | 68 ; PLA
|
|
fc8f:0 | fc8f | 34 ; PLY
|
|
fc90:0 | fc90 | 98 ab ; BRA PRINTCHAR_RETURN
|
|
fc92:0 | fc92 | ; PRINTSTRING:
|
|
fc92:0 | fc92 | 48 ; PHA
|
|
fc93:0 | fc93 | 54 ; PHX
|
|
fc94:0 | fc94 | ; PRINTSTRING_LOOP:
|
|
fc94:0 | fc94 | e1 ; LDA X+
|
|
fc95:0 | fc95 | f0 05 ; BEQ PRINTSTRING_DONE
|
|
fc97:0 | fc97 | 20 fc 20 ; JSR PRINTCHAR
|
|
fc9a:0 | fc9a | 98 f8 ; BRA PRINTSTRING_LOOP
|
|
fc9c:0 | fc9c | ; PRINTSTRING_DONE:
|
|
fc9c:0 | fc9c | 74 ; PLX
|
|
fc9d:0 | fc9d | 68 ; PLA
|
|
fc9e:0 | fc9e | 60 ; RTS
|
|
fc9f:0 | fc9f | ; PRINTHEX:
|
|
fc9f:0 | fc9f | 60 ; RTS
|
|
fca0:0 | fca0 | ; CLEARSCREEN:
|
|
fca0:0 | fca0 | 54 ; PHX
|
|
fca1:0 | fca1 | 14 ; PHY
|
|
fca2:0 | fca2 | 48 ; PHA
|
|
fca3:0 | fca3 | 5c ; PHB
|
|
fca4:0 | fca4 | 1c ; PHC
|
|
fca5:0 | fca5 | aa c0 00 ; LDX #SCREEN_CHAR
|
|
fca8:0 | fca8 | a8 c8 00 ; LDY #SCREEN_COLOR
|
|
fcab:0 | fcab | a9 10 ; LDA #SCREEN_HEIGHT
|
|
fcad:0 | fcad | 85 00 ; STA CURSORPOS
|
|
fcaf:0 | fcaf | a9 00 ; LDA #0
|
|
fcb1:0 | fcb1 | ab 26 ; LDB #SCREEN_BLACK
|
|
fcb3:0 | fcb3 | ; CLSLPOUT:
|
|
fcb3:0 | fcb3 | 2b 40 ; LDC #SCREEN_WIDTH
|
|
fcb5:0 | fcb5 | ; CLSLPIN:
|
|
fcb5:0 | fcb5 | c1 ; STA X+
|
|
fcb6:0 | fcb6 | d3 ; STB Y+
|
|
fcb7:0 | fcb7 | da ; DEC C
|
|
fcb8:0 | fcb8 | d0 fb ; BNE CLSLPIN
|
|
fcba:0 | fcba | c6 00 ; DEC CURSORPOS
|
|
fcbc:0 | fcbc | d0 f5 ; BNE CLSLPOUT
|
|
fcbe:0 | fcbe | aa c0 00 ; LDX #SCREEN_CHAR
|
|
fcc1:0 | fcc1 | 86 00 ; STX CURSORPOS
|
|
fcc3:0 | fcc3 | 3c ; PLC
|
|
fcc4:0 | fcc4 | 7c ; PLB
|
|
fcc5:0 | fcc5 | 68 ; PLA
|
|
fcc6:0 | fcc6 | 34 ; PLY
|
|
fcc7:0 | fcc7 | 74 ; PLX
|
|
fcc8:0 | fcc8 | 60 ; RTS
|
|
fcc9:0 | fcc9 | ; WAITKEY:
|
|
fcc9:0 | fcc9 | 20 fd 8e ; JSR SLEEP
|
|
fccc:0 | fccc | ; GETKEY:
|
|
fccc:0 | fccc | ed f1 00 ; LDA KEYBOARD
|
|
fccf:0 | fccf | f0 f8 ; BEQ WAITKEY
|
|
fcd1:0 | fcd1 | 60 ; RTS
|
|
fcd2:0 | fcd2 | ; KEY_SYMBOLS:
|
|
fcd2:0 | fcd2 | 30 30 29 31 31 21 32 32 40 33 33 23 34 34 24 35 35 25 36 36 5e 37 37 26 38 38 2a 39 39 28 ; "00)11!22@33#44$55%66^77&88*99("
|
|
fcf0:0 | fcf0 | 18 3b 3a 19 3d 2b 1a 2c 3c 1b 2e 3e 1c 2d 5f 1d 2f 3f 1e 60 7e ; "\x18;:\x19=+\x1A,<\x1B.>\x1C-_\x1D/?\x1E`~"
|
|
fd05:0 | fd05 | 3c 5b 7b 3d 5c 7c 3e 5d 7d 3f 27 22 ; "\x3C[{\x3D\\|\x3E]}\x3F'\x22"
|
|
fd11:0 | fd11 | 0d 0a 0a ; "\x0d\x0A\x0A"
|
|
fd14:0 | fd14 | 20 20 20 08 08 08 ; " \x08\x08\x08"
|
|
fd1a:0 | fd1a | 00 ; "\0"
|
|
fd1b:0 | fd1b | ; GETCHAR:
|
|
fd1b:0 | fd1b | 5c ; PHB
|
|
fd1c:0 | fd1c | ; GETCHAR_RESTART:
|
|
fd1c:0 | fd1c | 20 fc cc ; JSR GETKEY
|
|
fd1f:0 | fd1f | b7 ; TAB
|
|
fd20:0 | fd20 | 29 7b ; AND #$7B
|
|
fd22:0 | fd22 | c9 10 ; CMP #$10
|
|
fd24:0 | fd24 | f0 2c ; BEQ SHIFTKEY
|
|
fd26:0 | fd26 | 97 ; TBA
|
|
fd27:0 | fd27 | c9 80 ; CMP #$80
|
|
fd29:0 | fd29 | 90 f1 ; BLT GETCHAR_RESTART
|
|
fd2b:0 | fd2b | 29 7f ; AND #$7F
|
|
fd2d:0 | fd2d | c9 41 ; CMP #$41
|
|
fd2f:0 | fd2f | 90 04 ; BLT NOT_LETTER
|
|
fd31:0 | fd31 | c9 5a ; CMP #$5A
|
|
fd33:0 | fd33 | 10 1b ; BLE GETCHAR_RETURN
|
|
fd35:0 | fd35 | ; NOT_LETTER:
|
|
fd35:0 | fd35 | 54 ; PHX
|
|
fd36:0 | fd36 | aa fc d2 ; LDX #KEY_SYMBOLS
|
|
fd39:0 | fd39 | ; KEY_SYM_LP:
|
|
fd39:0 | fd39 | e3 ; LDB X+
|
|
fd3a:0 | fd3a | f0 11 ; BEQ KEY_SYM_DONE
|
|
fd3c:0 | fd3c | ; KEY_SYM_CONTINUE:
|
|
fd3c:0 | fd3c | dd ; CMP B
|
|
fd3d:0 | fd3d | f0 04 ; BEQ KEY_SYM_MATCH
|
|
fd3f:0 | fd3f | e8 02 ; ADX #2
|
|
fd41:0 | fd41 | 98 f6 ; BRA KEY_SYM_LP
|
|
fd43:0 | fd43 | ; KEY_SYM_MATCH:
|
|
fd43:0 | fd43 | a7 02 ; LDB SHIFTDOWN
|
|
fd45:0 | fd45 | f0 02 ; BEQ KEY_SYM_NOSHIFT
|
|
fd47:0 | fd47 | e8 01 ; ADX #1
|
|
fd49:0 | fd49 | ; KEY_SYM_NOSHIFT:
|
|
fd49:0 | fd49 | a1 ; LDA X
|
|
fd4a:0 | fd4a | 74 ; PLX
|
|
fd4b:0 | fd4b | 98 03 ; BRA GETCHAR_RETURN
|
|
fd4d:0 | fd4d | ; KEY_SYM_DONE:
|
|
fd4d:0 | fd4d | 74 ; PLX
|
|
fd4e:0 | fd4e | 98 cc ; BRA GETCHAR_RESTART
|
|
fd50:0 | fd50 | ; GETCHAR_RETURN:
|
|
fd50:0 | fd50 | 7c ; PLB
|
|
fd51:0 | fd51 | 60 ; RTS
|
|
fd52:0 | fd52 | ; SHIFTKEY:
|
|
fd52:0 | fd52 | 97 ; TBA
|
|
fd53:0 | fd53 | 29 80 ; AND #$80
|
|
fd55:0 | fd55 | 85 02 ; STA SHIFTDOWN
|
|
fd57:0 | fd57 | 98 c3 ; BRA GETCHAR_RESTART
|
|
fd59:0 | fd59 | ; GETSTRING:
|
|
fd59:0 | fd59 | 48 ; PHA
|
|
fd5a:0 | fd5a | 54 ; PHX
|
|
fd5b:0 | fd5b | ; GETSTRING_LOOP:
|
|
fd5b:0 | fd5b | 20 fd 1b ; JSR GETCHAR
|
|
fd5e:0 | fd5e | 20 fc 20 ; JSR PRINTCHAR
|
|
fd61:0 | fd61 | c1 ; STA X+
|
|
fd62:0 | fd62 | c9 08 ; CMP #$08
|
|
fd64:0 | fd64 | d0 02 ; BNE GETSTRING_NOBK
|
|
fd66:0 | fd66 | e8 fe ; ADX #-2
|
|
fd68:0 | fd68 | ; GETSTRING_NOBK:
|
|
fd68:0 | fd68 | c9 0a ; CMP #$0A
|
|
fd6a:0 | fd6a | d0 ef ; BNE GETSTRING_LOOP
|
|
fd6c:0 | fd6c | e8 ff ; ADX #-1
|
|
fd6e:0 | fd6e | a9 00 ; LDA #$00
|
|
fd70:0 | fd70 | 81 ; STA X
|
|
fd71:0 | fd71 | 74 ; PLX
|
|
fd72:0 | fd72 | 68 ; PLA
|
|
fd73:0 | fd73 | 60 ; RTS
|
|
fd74:0 | fd74 | ; STRCMP:
|
|
fd74:0 | fd74 | 54 ; PHX
|
|
fd75:0 | fd75 | 14 ; PHY
|
|
fd76:0 | fd76 | 48 ; PHA
|
|
fd77:0 | fd77 | 5c ; PHB
|
|
fd78:0 | fd78 | ; STRCMP_NEXTCHAR:
|
|
fd78:0 | fd78 | e1 ; LDA X+
|
|
fd79:0 | fd79 | f0 08 ; BEQ STRCMP_XOVER
|
|
fd7b:0 | fd7b | f3 ; LDB Y+
|
|
fd7c:0 | fd7c | f0 08 ; BEQ STRCMP_YOVER
|
|
fd7e:0 | fd7e | dd ; CMP B
|
|
fd7f:0 | fd7f | f0 f7 ; BEQ STRCMP_NEXTCHAR
|
|
fd81:0 | fd81 | 98 06 ; BRA STRCMP_RETURN
|
|
fd83:0 | fd83 | ; STRCMP_XOVER:
|
|
fd83:0 | fd83 | b1 ; LDA Y
|
|
fd84:0 | fd84 | 98 03 ; BRA STRCMP_RETURN
|
|
fd86:0 | fd86 | ; STRCMP_YOVER:
|
|
fd86:0 | fd86 | e8 ff ; ADX #-1
|
|
fd88:0 | fd88 | a1 ; LDA X
|
|
fd89:0 | fd89 | ; STRCMP_RETURN:
|
|
fd89:0 | fd89 | 7c ; PLB
|
|
fd8a:0 | fd8a | 68 ; PLA
|
|
fd8b:0 | fd8b | 34 ; PLY
|
|
fd8c:0 | fd8c | 74 ; PLX
|
|
fd8d:0 | fd8d | 60 ; RTS
|
|
fd8e:0 | fd8e | ; SLEEP:
|
|
fd8e:0 | fd8e | cd f0 05 ; STA TIMER
|
|
fd91:0 | fd91 | 18 ; HLT
|
|
fd92:0 | fd92 | 60 ; RTS
|
|
fd93:0 | fd93 | ; STR_HI:
|
|
fd93:0 | fd93 | 48 49 00 ; "HI\0"
|
|
fd96:0 | fd96 | ; STR_HIRES:
|
|
fd96:0 | fd96 | 48 45 4c 4c 4f 21 0a 00 ; "HELLO!\n\0"
|
|
fd9e:0 | fd9e | ; RESET:
|
|
fd9e:0 | fd9e | 20 fc a0 ; JSR CLEARSCREEN
|
|
fda1:0 | fda1 | 58 ; CLI
|
|
fda2:0 | fda2 | ; INPUTLP:
|
|
fda2:0 | fda2 | aa 02 00 ; LDX #$0200
|
|
fda5:0 | fda5 | 20 fd 59 ; JSR GETSTRING
|
|
fda8:0 | fda8 | a8 fd 93 ; LDY #STR_HI
|
|
fdab:0 | fdab | 20 fd 74 ; JSR STRCMP
|
|
fdae:0 | fdae | d0 f2 ; BNE INPUTLP
|
|
fdb0:0 | fdb0 | aa fd 96 ; LDX #STR_HIRES
|
|
fdb3:0 | fdb3 | 20 fc 92 ; JSR PRINTSTRING
|
|
fdb6:0 | fdb6 | 98 ea ; BRA INPUTLP
|
|
fdb8:0 | fdb8 | 18 ; HLT
|
|
fdb9:0 | fdb9 | 41 ; RST
|
|
fdba:0 | fdba | ; INTERRUPT:
|
|
fdba:0 | fdba | 38 ; RUN
|
|
fdbb:0 | fdbb | 40 ; RTI
|
|
fffc:0 | fffc | fd 9e ; RESET
|
|
fffe:0 | fffe | fd ba ; INTERRUPT
|