franklin/ace500_c300_cfff.s

2159 lines
40 KiB
ArmAsm
Raw Normal View History

2021-11-07 02:16:53 +00:00
; da65 V2.19 - Git 59c58acbe
; Created: 2021-11-04 15:14:09
; Input file: c300_cfff
; Page: 1
.setcpu "65C02"
2021-11-07 02:41:09 +00:00
.include "opcodes.inc"
;;; Zero Page
WNDLFT := $20
WNDWDTH := $21
WNDTOP := $22
WNDBTM := $23
CH := $24
CV := $25
BASL := $28
BASH := $29
BAS2L := $2A
BAS2H := $2B
INVFLG := $32
A1L := $3C
A1H := $3D
A2L := $3E
A2H := $3F
A4L := $42
A4H := $43
RNDL := $4E
RNDH := $4F
;;; Page 3 Vectors
XFERVEC := $3ED
2021-11-07 02:51:44 +00:00
L03F0 := $3F0 ; ???
L03FE := $3FE ; ???
2021-11-07 02:41:09 +00:00
;;; Screen Holes
SAVEA := $4F8
SAVEX := $578
SAVEY := $478
OLDCH := $47B
MODE := $4FB
;; Bit 7 = Escape Mode
;; Bit 6 = MouseText active
;; Bit 5 = ??? set when "normal"
;; Bit 4 = ??? set when "normal"
;; Bit 3 = ??? unused ???
;; Bit 2 = ??? unused ???
;; Bit 1 = ??? used for ???
;; Bit 0 = ??? used for ???
M_ESC = %10000000
M_MOUSE = %01000000
M_NORMAL= %00110000
OURCH := $57B
OURCV := $5FB
2021-11-07 03:56:03 +00:00
CHAR := $67B
2021-11-07 02:41:09 +00:00
XCOORD := $6FB
TEMP1 := $77B ; Unused
OLDBASL := $77B
TEMP2 := $7FB
OLDBASH := $7FB
;;; I/O Soft Switches
KBD := $C000
CLR80COL:= $C000
SET80COL:= $C001
RDMAINRAM := $C002
RDCARDRAM := $C003
WRMAINRAM := $C004
WRCARDRAM := $C005
ALTZPOFF:= $C008
ALTZPON := $C009
CLR80VID:= $C00C
SET80VID:= $C00D
CLRALTCHAR := $C00E
SETALTCHAR := $C00F
KBDSTRB := $C010
RDLCBNK2:= $C011
RDLCRAM := $C012
RDRAMRD := $C013
RDRAMWRT:= $C014
RD80COL := $C018
RDTEXT := $C01A
ALTCHARSET := $C01E
RD80VID := $C01F
TXTPAGE1:= $C054
TXTPAGE2:= $C055
ROMIN := $C081
ROMIN2 := $C082
LCBANK2 := $C083
LCBANK1 := $C08B
;;; Documented Firmware Entry Points
C3KeyIn := $C305
C3COut1 := $C307
AUXMOVE := $C311
XFER := $C314
CLRROM := $CFFF
;;; Monitor ROM
BELLB := $FBE2
SETWND := $FB4B
SETKBD := $FE89
SETVID := $FE93
MON_VTAB:= $FC22
CLREOP := $FC42
HOME := $FC58
CLREOL := $FC9C
;;; ============================================================
.org $C300
2021-11-07 02:16:53 +00:00
LC300: bit LC3D4
bra LC341
sec
bcc LC320
clv
bra LC341
ora ($88,x)
inc a
.byte $23
.byte $2B
.byte $33
jmp LC33B
2021-11-07 02:41:09 +00:00
jsr extra_LC5FA
2021-11-07 02:16:53 +00:00
jmp LCC03
jsr LC3C4
jsr LCB5D
2021-11-07 02:41:09 +00:00
LC320: jmp extra_LC5FA
2021-11-07 02:16:53 +00:00
jsr LC3C4
jsr LCB6E
bra LC320
jsr LC3C4
jsr LCB79
bra LC320
jsr LC3C4
jsr LCB9D
bra LC320
2021-11-07 02:41:09 +00:00
LC33B: jsr extra_LC5FA
2021-11-07 02:16:53 +00:00
jmp LCC06
LC341: jsr LC3C4
2021-11-07 02:51:44 +00:00
sta SAVEA
stx SAVEX
sty SAVEY
2021-11-07 02:16:53 +00:00
pha
bvc LC354
jsr LC806
clc
LC354: php
jsr LC9B4
plp
pla
bcc LC397
2021-11-07 02:51:44 +00:00
ldx SAVEX
2021-11-07 02:16:53 +00:00
beq LC371
dex
lda $0678
cmp #$88
beq LC371
cmp $0200,x
bne LC38F
sta $0200,x
LC371: jsr LC96F
cmp #$9B
2021-11-07 04:07:03 +00:00
beq EscapeMode
2021-11-07 02:16:53 +00:00
cmp #$8D
bne LC381
pha
2021-11-07 03:26:27 +00:00
jsr DoClearEOL
2021-11-07 02:16:53 +00:00
pla
LC381: cmp #$95
bne LC38A
2021-11-07 02:41:09 +00:00
ldy CH
2021-11-07 02:16:53 +00:00
jsr LC9A8
LC38A: sta $0678
bra LC395
LC38F: jsr LC822
stz $0678
LC395: bra LC39D
LC397: jsr LC849
2021-11-07 02:51:44 +00:00
lda SAVEA
LC39D: ldx SAVEX
2021-11-07 02:41:09 +00:00
ldy CH
2021-11-07 02:51:44 +00:00
sty OURCH
sty XCOORD
ldy SAVEY
2021-11-07 02:41:09 +00:00
jmp extra_LC5FA
2021-11-07 02:16:53 +00:00
2021-11-07 04:07:03 +00:00
;;; ============================================================
;;; Escape Mode
EscapeMode:
lda #M_ESC
2021-11-07 02:51:44 +00:00
tsb MODE
2021-11-07 02:16:53 +00:00
jsr LC822
jsr LC8CB
cmp #$98
beq LC38A
2021-11-07 02:51:44 +00:00
lda MODE
2021-11-07 04:07:03 +00:00
bmi EscapeMode
2021-11-07 02:16:53 +00:00
bra LC371
2021-11-07 04:07:03 +00:00
;;; ============================================================
2021-11-07 02:16:53 +00:00
LC3C4: php
sei
pha
2021-11-07 02:41:09 +00:00
sta $C0BA ; ???
2021-11-07 02:16:53 +00:00
sta LCFFF
lda #$C3
sta $07F8
pla
plp
LC3D4: rts
brk
brk
brk
brk
brk
brk
brk
2021-11-07 02:41:09 +00:00
jsr extra_LC5FA
2021-11-07 02:16:53 +00:00
jmp LCC00
LC3E2: plx
bit LCFFF
rti
brk
jsr LC3C4
jmp LCE0D
jsr LC3C4
jmp LCDEC
LC3F4: jsr LC3C4
jmp LCCB2
LC3FA: jsr LC3C4
jmp LCCF5
2021-11-07 02:41:09 +00:00
;;; ============================================================
.scope extra
LFC24 := $FC24
LFC58 := $FC58
LFC9E := $FC9E
LFDED := $FDED
LFDF0 := $FDF0
LFF4A := $FF4A
2021-11-07 02:16:53 +00:00
bit LC42E
bra LC41C
sec
bcc LC420
clv
bra LC41C
ora ($20,x)
bit $2C2C
bit $2F00
and $3B,x
eor ($47,x)
eor $5953
.byte $2C
.byte $5F
LC41C: jsr LC5FA
.byte $50
LC420: .byte $03
jsr LC806
bcc LC429
jmp LC838
LC429: jmp LC825
ldx #$03
LC42E: rts
jsr LC5FA
2021-11-07 03:06:39 +00:00
jmp $C8D4
2021-11-07 02:16:53 +00:00
jsr LC5FA
2021-11-07 03:06:39 +00:00
jmp $C916
2021-11-07 02:16:53 +00:00
jsr LC5FA
2021-11-07 03:06:39 +00:00
jmp $C922
2021-11-07 02:16:53 +00:00
jsr LC5FA
2021-11-07 03:06:39 +00:00
jmp $C958
2021-11-07 02:16:53 +00:00
jsr LC5FA
2021-11-07 03:06:39 +00:00
jmp $C967
2021-11-07 02:16:53 +00:00
jsr LC5FA
2021-11-07 03:06:39 +00:00
jmp $C969
2021-11-07 02:16:53 +00:00
jsr LC5FA
2021-11-07 03:06:39 +00:00
jmp $C93E
2021-11-07 02:16:53 +00:00
LC459: jsr LC5FA
2021-11-07 03:06:39 +00:00
jmp $C8AC
2021-11-07 02:16:53 +00:00
ldx $C066
ldy $C067
2021-11-07 02:41:09 +00:00
jmp $C220
2021-11-07 02:16:53 +00:00
LC468: jsr LC5FA
2021-11-07 03:06:39 +00:00
jmp $C9A0
2021-11-07 02:16:53 +00:00
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
LC4A0: cld
phx
phy
pha
ldx $C066
ldy $C067
lda $C0BC
pha
sta $C0B9
jmp LC700
pla
bpl LC4BE
2021-11-07 02:41:09 +00:00
sta ALTZPON
2021-11-07 02:16:53 +00:00
ldx $0101
txs
LC4BE: ldx $07FF
pla
2021-11-07 02:41:09 +00:00
jsr $C1FA
2021-11-07 02:16:53 +00:00
pla
bmi LC4CB
sta $C0B8
LC4CB: sta $C0BA
stx $07F8
pla
ply
cpx #$C1
beq LC4E4
cpx #$C3
beq LC4E7
cpx #$C5
beq LC4EA
plx
sta $C0BB
rti
2021-11-07 02:41:09 +00:00
LC4E4: jmp $C1F2
2021-11-07 02:16:53 +00:00
LC4E7: jmp LC3E2
LC4EA: jmp LC5F5
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
LC4F8: jmp LC468
dec $00,x
jmp LC459
jsr LC594
sta $067A
phx
phy
pha
bvc LC50E
2021-11-07 03:06:39 +00:00
jsr $C806
2021-11-07 02:16:53 +00:00
LC50E: bcc LC516
2021-11-07 03:06:39 +00:00
jsr $C908
2021-11-07 02:16:53 +00:00
plx
bra LC51A
2021-11-07 03:06:39 +00:00
LC516: jsr $C83B
2021-11-07 02:16:53 +00:00
pla
LC51A: ply
plx
jmp LC5A8
jsr LC594
2021-11-07 03:06:39 +00:00
jsr $C8C7
2021-11-07 02:16:53 +00:00
jmp LC5A8
jsr LC594
2021-11-07 03:06:39 +00:00
jsr $C8CD ; ???
2021-11-07 02:16:53 +00:00
bra LC5A8
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC594
2021-11-07 03:06:39 +00:00
jsr $C8D2
2021-11-07 02:16:53 +00:00
bra LC5A8
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC594
2021-11-07 03:06:39 +00:00
jsr $C8DA
2021-11-07 02:16:53 +00:00
bra LC5A8
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC5A8
ora #$80
jsr LFDF0
bra LC594
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC5A8
ora #$80
jsr LFDED
bra LC594
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC5A8
jsr LC3F4
bra LC594
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC5A8
jsr LC3FA
and #$7F
bra LC594
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC5A8
jsr LFC9E
bra LC594
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC5A8
jsr LFC58
bra LC594
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC5A8
jsr LC300
bra LC594
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC5A8
jsr LC4F8
bra LC594
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC5A8
jsr LC7FD
bra LC594
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
jsr LC5A8
jsr LFC24
LC594: php
sei
pha
lda #$C5
sta $07F8
sta $C0BA
sta $C0B8
sta LCFFF
pla
plp
rts
LC5A8: php
sei
pha
lda #$C8
sta $07F8
sta $C0BB
sta $C0B9
pla
plp
rts
jsr LC5A8
LC5BC: bit $C1C1
bmi LC5BC
sta $C090
bra LC594
LC5C6: jsr LC594
jsr LC9A5
bra LC5A8
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
LC5F5: plx
bit LCFFF
rti
LC5FA: jmp LC5A8
jmp LC5C6
bit $20
cpy $00
ldx #$03
2021-11-07 02:41:09 +00:00
asl A1L
2021-11-07 02:16:53 +00:00
jsr LC5FA
ldy #$69
LC60D: lda LCF26,y
sta $036C,y
dey
bpl LC60D
ldx #$60
2021-11-07 02:41:09 +00:00
LC618: inc BAS2H
cpx BAS2H
2021-11-07 02:16:53 +00:00
bne LC618
jsr LCEA6
LC621: dec $41
bne LC621
2021-11-07 02:41:09 +00:00
LC625: dec A1H
2021-11-07 02:16:53 +00:00
bne LC625
LC629: dec $26
bne LC629
LC62D: dec $27
lda $27
cmp #$08
bne LC62D
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
pha
nop
nop
nop
nop
nop
nop
bra LC683
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
LC683: pla
LC684: jsr LC5FA
jsr LCE00
bra LC6EA
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
2021-11-07 02:51:44 +00:00
ldy #$56 ; ???
2021-11-07 02:41:09 +00:00
sty A1L
2021-11-07 02:16:53 +00:00
sec
clv
2021-11-07 02:51:44 +00:00
jmp $CE51
2021-11-07 02:16:53 +00:00
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
LC6EA: nop
2021-11-07 02:41:09 +00:00
lda A1H
2021-11-07 02:16:53 +00:00
inc a
2021-11-07 02:41:09 +00:00
sta A1H
2021-11-07 02:16:53 +00:00
inc $27
cmp $0800
bcc LC684
ldy #$00
2021-11-07 02:41:09 +00:00
ldx BAS2H
jmp $0801
2021-11-07 02:16:53 +00:00
.byte $DE
brk
2021-11-07 02:41:09 +00:00
LC700: jsr $C1F7
2021-11-07 02:16:53 +00:00
pha
2021-11-07 02:41:09 +00:00
jsr $C1FD
2021-11-07 02:16:53 +00:00
lda $07F8
sta $07FF
phx
tsx
txa
clc
adc #$07
tax
lda $0100,x
plx
and #$10
bne LC747
2021-11-07 02:41:09 +00:00
jsr $C220
2021-11-07 02:16:53 +00:00
bcc LC744
jsr LC784
bcc LC744
pla
pha
bpl LC739
txa
tsx
stx $0101
ldx $0100
txs
tax
2021-11-07 02:41:09 +00:00
sta ALTZPOFF
2021-11-07 02:16:53 +00:00
lda #$80
LC739: pha
lda #$C4
pha
lda #$B4
pha
php
jmp (L03FE)
LC744: jmp LC4BE
LC747: pla
sta $44
pla
bpl LC751
lda #$01
tsb $44
LC751: pla
ply
plx
plp
jsr LFF4A
pla
sta $3A
ply
sty $3B
bit $C016
bpl LC781
tsx
stx $0101
ldx $0100
txs
2021-11-07 02:41:09 +00:00
sta ALTZPOFF
2021-11-07 02:16:53 +00:00
sta $3A
sty $3B
ldx #$05
2021-11-07 02:41:09 +00:00
LC774: sta ALTZPON
2021-11-07 02:16:53 +00:00
lda $44,x
2021-11-07 02:41:09 +00:00
sta ALTZPOFF
2021-11-07 02:16:53 +00:00
sta $44,x
dex
bpl LC774
LC781: jmp (L03F0)
LC784: sec
lda $C0AA
tax
and #$0C
eor #$04
beq LC7E4
lda $C0A9
LC792: sta $04FA
ora #$00
bpl LC7E4
and #$08
beq LC7BD
txa
and #$03
eor #$01
bne LC7BD
lda $04FF
eor #$C2
bne LC7E4
lda $C0A8
ldx $057F
jsr LC7E5
bpl LC7B8
ldx #$00
LC7B8: stx $057F
bra LC7E3
LC7BD: .byte $2C
plx
LC7BF: tsb $50
and ($2C,x)
plx
ora $70
ora $1A10,x
2021-11-07 02:41:09 +00:00
lda KBD
2021-11-07 02:16:53 +00:00
bit $C0B4
bmi LC7D3
and #$7F
2021-11-07 02:41:09 +00:00
LC7D3: bit KBDSTRB
2021-11-07 02:16:53 +00:00
ldx $05FF
jsr LC7E5
bne LC7E0
ldx #$80
LC7E0: stx $05FF
LC7E3: clc
LC7E4: rts
2021-11-07 02:41:09 +00:00
LC7E5: sta WRCARDRAM
2021-11-07 02:16:53 +00:00
sta $0800,x
2021-11-07 02:41:09 +00:00
sta WRMAINRAM
2021-11-07 02:16:53 +00:00
inx
rts
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
brk
LC7FD: jmp LC792
2021-11-07 02:41:09 +00:00
.endscope
extra_LC5FA := extra::LC5FA
;;; ============================================================
.res $C800 - *, 0
;;; ============================================================
2021-11-07 02:16:53 +00:00
2021-11-07 02:41:09 +00:00
LC800: .byte $C3
2021-11-07 02:16:53 +00:00
eor $AA,x
2021-11-07 02:41:09 +00:00
jmp $C4A0 ; bad disasm?
2021-11-07 02:16:53 +00:00
LC806: lda #$05
sta $38
ldx #$C3
stx $39
lda #$07
sta $36
stx $37
2021-11-07 04:07:03 +00:00
LC814: lda #$30 ; ???
2021-11-07 02:51:44 +00:00
sta MODE
2021-11-07 02:16:53 +00:00
jsr LCBD7
jsr LCE33
2021-11-07 03:26:27 +00:00
jmp DoHomeAndClear
2021-11-07 02:16:53 +00:00
LC822: jsr LCBE1
2021-11-07 02:41:09 +00:00
LC825: inc RNDL
2021-11-07 02:16:53 +00:00
bne LC82B
2021-11-07 02:41:09 +00:00
inc RNDH
2021-11-07 02:16:53 +00:00
LC82B: jsr LCCB8
bcc LC825
jsr LCCFB
cmp #$06
bcc LC840
.byte $29
2021-11-07 03:26:27 +00:00
LC838: bbr7 $8D,$C8B6
2021-11-07 02:16:53 +00:00
LC83B: asl $09
2021-11-07 02:41:09 +00:00
bra $C7BF ; bad disasm?
2021-11-07 02:16:53 +00:00
.byte $03
2021-11-07 03:56:03 +00:00
LC840: sta CHAR
2021-11-07 02:16:53 +00:00
pha
jsr LCBF8
LC847: pla
rts
2021-11-07 03:56:03 +00:00
LC849: sta CHAR
2021-11-07 02:16:53 +00:00
LC84C: jsr LC92A
2021-11-07 02:51:44 +00:00
lda MODE
2021-11-07 02:16:53 +00:00
and #$03
beq LC859
jmp LCA2F
2021-11-07 03:56:03 +00:00
LC859: lda CHAR
2021-11-07 02:16:53 +00:00
and #$7F
cmp #$20
2021-11-07 03:06:39 +00:00
bcc DoCtrlCharOut
2021-11-07 02:41:09 +00:00
ldy CH
cpy WNDWDTH
2021-11-07 02:16:53 +00:00
bcc LC86B
2021-11-07 03:26:27 +00:00
jsr DoReturn
2021-11-07 03:56:03 +00:00
LC86B: lda CHAR
2021-11-07 02:41:09 +00:00
bit INVFLG
2021-11-07 02:16:53 +00:00
bmi LC888
and #$7F
2021-11-07 02:51:44 +00:00
bit MODE
2021-11-07 02:16:53 +00:00
bvs LC888
2021-11-07 02:41:09 +00:00
bit ALTCHARSET
2021-11-07 02:16:53 +00:00
bpl LC888
cmp #$40
bcc LC888
cmp #$60
bcs LC888
and #$1F
LC888: jsr LCC13
2021-11-07 03:26:27 +00:00
jmp DoForwardSpace
2021-11-07 02:16:53 +00:00
2021-11-07 03:06:39 +00:00
;;; ============================================================
DoNothing:
rts
2021-11-07 02:16:53 +00:00
2021-11-07 03:06:39 +00:00
;;; ============================================================
;;; Output control character handling
;; Input is char, < $20
DoCtrlCharOut:
sec
2021-11-07 02:16:53 +00:00
sbc #$07
2021-11-07 03:06:39 +00:00
bcc DoNothing
2021-11-07 02:16:53 +00:00
asl a
tax
2021-11-07 03:26:27 +00:00
jmp (jt1,x)
2021-11-07 03:06:39 +00:00
;; Jump Table
2021-11-07 03:26:27 +00:00
jt1:
.addr DoBell ; $07 Ctrl-G Bell
.addr DoBackspace ; $08 Ctrl-H Backspace
.addr DoNothing ; $09 Ctrl-I
.addr DoLineFeed ; $0A Ctrl-J Line feed
.addr DoClearEOS ; $0B Ctrl-K Clear EOS
.addr DoHomeAndClear ; $0C Ctrl-L Home and clear
.addr DoReturn ; $0D Ctrl-M Return
.addr DoNormal ; $0E Ctrl-N Normal
.addr DoInverse ; $0F Ctrl-O Inverse
.addr DoNothing ; $10 Ctrl-P
.addr Do40Col ; $11 Ctrl-Q 40-column
.addr Do80Col ; $12 Ctrl-R 80-column
.addr DoNothing ; $13 Ctrl-S
.addr DoNothing ; $14 Ctrl-T
.addr DoQuit ; $15 Ctrl-U Quit
.addr DoScroll ; $16 Ctrl-V Scroll
.addr DoScrollUp ; $17 Ctrl-W Scroll-up
.addr DoDisableMouseText ; $18 Ctrl-X Disable MouseText
.addr DoHome ; $19 Ctrl-Y Home
.addr DoClearLine ; $1A Ctrl-Z Clear line
.addr DoEnableMouseText ; $1B Ctrl-[ Enable MouseText
.addr DoForwardSpace ; $1C Ctrl-\ Forward space
.addr DoClearEOL ; $1D Ctrl-] Clear EOL
2021-11-07 03:27:30 +00:00
.addr DoCtrlCaret ; $1E Ctrl-^ ???
2021-11-07 03:26:27 +00:00
.addr DoUp ; $1F Ctrl-_ Up
2021-11-07 03:06:39 +00:00
;;; ============================================================
;;; GetLn handling
;;; For Escape key sequences
2021-11-07 02:16:53 +00:00
LC8CB: pha
2021-11-07 03:06:39 +00:00
lda #M_ESC
trb MODE
pla
and #$7F
cmp #$61
2021-11-07 02:16:53 +00:00
bcc LC8DE
cmp #$7B
2021-11-07 03:06:39 +00:00
bcs LC8DE
2021-11-07 02:16:53 +00:00
and #$DF
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
LC8DE: ldx #$00
2021-11-07 03:06:39 +00:00
LC8E0: ldy code_table,x
beq DoNothing
cmp code_table,x
beq LC8ED
2021-11-07 02:16:53 +00:00
inx
2021-11-07 03:06:39 +00:00
bra LC8E0
2021-11-07 02:16:53 +00:00
LC8ED: txa
asl a
tax
2021-11-07 03:56:03 +00:00
jmp (jt2,x)
2021-11-07 02:16:53 +00:00
2021-11-07 03:06:39 +00:00
code_table:
.byte '@' ; Escape @ - clear, home & exit mode
.byte 'A' ; Escape A - right & exit mode
.byte 'B' ; Escape B - left & exit mode
.byte 'C' ; Escape C - down & exit mode
.byte 'D' ; Escape D - up & exit mode
.byte 'E' ; Escape E - clear EOL & exit mode
.byte 'F' ; Escape F - clear EOS & exit mode
.byte 'I' ; Escape I - up
.byte 'J' ; Escape J - left
.byte 'K' ; Escape K - right
.byte 'M' ; Escape M - down
.byte $0b ; Escape up - up
.byte $0a ; Escape down - down
.byte $08 ; Escape left - left
.byte $15 ; Escape right - right
.byte '4' ; Escape 4 - 40 col mode
.byte '8' ; Escape 8 - 80 col mode
.byte $11 ; Escape Ctrl+Q - deactivate
.byte $00 ; sentinel
2021-11-07 03:56:03 +00:00
;; Jump table
jt2:
.addr DoHomeAndClear ; Escape @ - clear, home & exit mode
.addr DoForwardSpace ; Escape A - right & exit mode
.addr DoBackspace ; Escape B - left & exit mode
.addr DoLineFeed ; Escape C - down & exit mode
.addr DoUp ; Escape D - up & exit mode
.addr DoClearEOL ; Escape E - clear EOL & exit mode
.addr DoClearEOS ; Escape F - clear EOS & exit mode
.addr DoUpRemain ; Escape I - up
.addr DoLeftRemain ; Escape J - left
.addr DoRightRemain ; Escape K - right
.addr DoDownRemain ; Escape M - down
.addr DoUpRemain ; Escape up - up
.addr DoDownRemain ; Escape down - down
.addr DoLeftRemain ; Escape left - left
.addr DoRightRemain ; Escape right - right
.addr Do40Col ; Escape 4 - 40 col mode
.addr Do80Col ; Escape 8 - 80 col mode
.addr DoQuit ; Escape Ctrl+Q - deactivate
2021-11-07 03:06:39 +00:00
;;; ============================================================
LC92A:
lda KBD
2021-11-07 04:07:03 +00:00
cmp #$93 ; Ctrl-S
bne @l3
2021-11-07 02:41:09 +00:00
bit KBDSTRB
2021-11-07 04:07:03 +00:00
@l1: lda KBD
bpl @l1
cmp #$83 ; Ctrl-C
beq @l3
2021-11-07 02:16:53 +00:00
.byte $2C
2021-11-07 04:07:03 +00:00
@l2: bpl $C900
@l3: rts
;;; ============================================================
2021-11-07 02:16:53 +00:00
LC941: ldy #$00
ldx #$00
2021-11-07 02:41:09 +00:00
LC945: cpy WNDWDTH
2021-11-07 02:16:53 +00:00
bcs LC953
jsr LC9A8
sta $0200,x
inx
iny
bra LC945
LC953: dey
2021-11-07 02:41:09 +00:00
sty CH
2021-11-07 04:07:03 +00:00
.byte $8E ; bad disasm
2021-11-07 02:16:53 +00:00
sei
2021-11-07 04:07:03 +00:00
ora $A9
2021-11-07 02:16:53 +00:00
.byte $8D
LC95B: rts
2021-11-07 03:26:27 +00:00
;;; ============================================================
Do40Col:
bit RD80VID
2021-11-07 02:16:53 +00:00
php
jsr LCBD0
jsr LCAFA
2021-11-07 04:07:03 +00:00
jsr LCE33
plp
2021-11-07 02:16:53 +00:00
bpl LC95B
jmp LCC68
2021-11-07 04:07:03 +00:00
;;; ============================================================
2021-11-07 02:16:53 +00:00
LC96F: jsr LC822
cmp #$00
beq LC997
cmp #$02
beq LC941
cmp #$05
bne LC95B
2021-11-07 02:41:09 +00:00
ldy CH
2021-11-07 02:16:53 +00:00
LC980: iny
2021-11-07 02:41:09 +00:00
cpy WNDWDTH
2021-11-07 02:16:53 +00:00
beq LC98F
jsr LC9A8
dey
jsr LCEC8
iny
bra LC980
2021-11-07 04:07:03 +00:00
2021-11-07 02:16:53 +00:00
LC98F: dey
LC990: lda #$A0
jsr LCEC8
bra LC96F
2021-11-07 04:07:03 +00:00
2021-11-07 02:41:09 +00:00
LC997: ldy WNDWDTH
2021-11-07 02:16:53 +00:00
dey
2021-11-07 02:41:09 +00:00
cpy CH
2021-11-07 02:16:53 +00:00
beq LC990
dey
.byte $20
LC9A0: tay
cmp #$C8
.byte $20
iny
LC9A5: dec $F180
LC9A8: jsr LCEBD
ora #$80
cmp #$A0
bcs LC9B3
ora #$40
LC9B3: rts
2021-11-07 02:41:09 +00:00
LC9B4: bit RD80VID
2021-11-07 02:16:53 +00:00
bpl LC9CC
2021-11-07 02:41:09 +00:00
lsr WNDWDTH
asl WNDWDTH
sta SET80COL
LC9C0: lda CH
2021-11-07 02:51:44 +00:00
cmp XCOORD
2021-11-07 02:16:53 +00:00
bne LC9CA
2021-11-07 02:51:44 +00:00
lda OURCH
2021-11-07 02:41:09 +00:00
LC9CA: sta CH
2021-11-07 02:16:53 +00:00
LC9CC: rts
2021-11-07 03:56:03 +00:00
;;; ============================================================
DoUpRemain:
jsr DoUp
bra Remain
DoDownRemain:
2021-11-07 03:26:27 +00:00
jsr DoLineFeed
2021-11-07 03:56:03 +00:00
bra Remain
2021-11-07 03:26:27 +00:00
2021-11-07 03:56:03 +00:00
DoRightRemain:
jsr DoForwardSpace
bra Remain
2021-11-07 03:26:27 +00:00
2021-11-07 03:56:03 +00:00
DoLeftRemain:
2021-11-07 03:26:27 +00:00
jsr DoBackspace
2021-11-07 03:56:03 +00:00
;; fall through
Remain: lda #$80
bra SetModeBits
2021-11-07 03:26:27 +00:00
;;; ============================================================
DoInverse:
2021-11-07 02:16:53 +00:00
ldy #$3F
2021-11-07 03:26:27 +00:00
.byte OPC_BIT_abs ; skip next instruction
DoNormal:
ldy #$FF
2021-11-07 02:41:09 +00:00
sty INVFLG
2021-11-07 02:16:53 +00:00
LC9EA: rts
2021-11-07 03:26:27 +00:00
;;; ============================================================
Do80Col:
2021-11-07 02:41:09 +00:00
bit RD80VID
2021-11-07 02:16:53 +00:00
php
jsr LCBD7
jsr LCAFA
jsr LCE33
plp
bmi LC9EA
jmp LCC18
2021-11-07 03:26:27 +00:00
;;; ============================================================
DoQuit:
jsr Do40Col
2021-11-07 02:51:44 +00:00
jsr DoSETVID
jsr DoSETKBD
2021-11-07 02:16:53 +00:00
lda #$17
ldx #$00
jsr LCAA1
lda #$FF
2021-11-07 02:51:44 +00:00
sta MODE
2021-11-07 02:16:53 +00:00
lda #$98
rts
2021-11-07 03:26:27 +00:00
;;; ============================================================
2021-11-07 03:56:03 +00:00
;;; Adusting MODE Bits
2021-11-07 03:26:27 +00:00
2021-11-07 03:27:30 +00:00
DoCtrlCaret:
2021-11-07 02:16:53 +00:00
lda #$FC
2021-11-07 03:56:03 +00:00
jsr PreserveModeBits
2021-11-07 02:16:53 +00:00
lda #$32
2021-11-07 03:56:03 +00:00
bra SetModeBits
2021-11-07 03:26:27 +00:00
DoDisableMouseText:
2021-11-07 03:56:03 +00:00
lda #M_MOUSE ; BUG! Should be ~M_MOUSE
PreserveModeBits:
and MODE
bra StoreMode
2021-11-07 03:26:27 +00:00
DoEnableMouseText:
2021-11-07 03:56:03 +00:00
lda #M_MOUSE
SetModeBits:
ora MODE
StoreMode:
sta MODE
2021-11-07 02:16:53 +00:00
rts
2021-11-07 03:56:03 +00:00
;;; ============================================================
LCA2F: lda CHAR
2021-11-07 02:16:53 +00:00
sec
sbc #$20
and #$7F
pha
2021-11-07 02:51:44 +00:00
dec MODE
lda MODE
2021-11-07 02:16:53 +00:00
and #$03
2021-11-07 04:07:03 +00:00
bne @l2
2021-11-07 02:16:53 +00:00
pla
cmp #$18
2021-11-07 04:07:03 +00:00
bcs @l1
2021-11-07 02:16:53 +00:00
jsr LCAA3
2021-11-07 04:07:03 +00:00
@l1: lda $05F8
2021-11-07 02:41:09 +00:00
cmp WNDWDTH
2021-11-07 03:56:03 +00:00
bcs :+
2021-11-07 02:41:09 +00:00
sta CH
2021-11-07 03:56:03 +00:00
: rts
2021-11-07 02:16:53 +00:00
2021-11-07 04:07:03 +00:00
@l2: pla
2021-11-07 02:16:53 +00:00
sta $05F8
rts
2021-11-07 03:26:27 +00:00
;;; ============================================================
DoBackspace:
lda CH
2021-11-07 02:16:53 +00:00
beq LCA60
2021-11-07 02:41:09 +00:00
dec CH
2021-11-07 02:16:53 +00:00
LCA5F: rts
2021-11-07 03:26:27 +00:00
;;; ============================================================
2021-11-07 02:41:09 +00:00
LCA60: lda CV
2021-11-07 02:16:53 +00:00
beq LCA5F
2021-11-07 02:41:09 +00:00
lda WNDWDTH
2021-11-07 02:16:53 +00:00
dec a
2021-11-07 02:41:09 +00:00
sta CH
2021-11-07 03:26:27 +00:00
DoUp: lda CV
2021-11-07 02:16:53 +00:00
beq LCA5F
2021-11-07 02:41:09 +00:00
dec CV
2021-11-07 02:16:53 +00:00
bra LCAA5
2021-11-07 03:26:27 +00:00
;;; ============================================================
DoForwardSpace:
inc CH
2021-11-07 02:41:09 +00:00
lda CH
cmp WNDWDTH
2021-11-07 02:16:53 +00:00
bcc LCA5F
2021-11-07 03:26:27 +00:00
;; fall through
;;; ============================================================
DoReturn:
stz CH
;; fall through
;;; ============================================================
DoLineFeed:
lda CV
2021-11-07 02:16:53 +00:00
cmp #$FF
2021-11-07 04:07:03 +00:00
beq @l1
2021-11-07 02:16:53 +00:00
cmp #$17
2021-11-07 03:26:27 +00:00
bcs DoScrollUp
2021-11-07 04:07:03 +00:00
@l1: inc CV
2021-11-07 02:16:53 +00:00
bra LCAA5
2021-11-07 03:26:27 +00:00
;;; ============================================================
DoHome:
lda WNDTOP
2021-11-07 02:16:53 +00:00
ldx #$00
bra LCAA1
2021-11-07 03:26:27 +00:00
;;; ============================================================
DoClearLine:
lda CH
2021-11-07 02:16:53 +00:00
pha
2021-11-07 02:41:09 +00:00
stz CH
2021-11-07 03:26:27 +00:00
jsr DoClearEOL
2021-11-07 02:16:53 +00:00
pla
2021-11-07 02:41:09 +00:00
sta CH
2021-11-07 02:16:53 +00:00
rts
2021-11-07 03:26:27 +00:00
;;; ============================================================
2021-11-07 02:16:53 +00:00
LCA9B: lda $06F8
ldx $0778
2021-11-07 02:41:09 +00:00
LCAA1: stx CH
LCAA3: sta CV
2021-11-07 02:51:44 +00:00
LCAA5: jmp DoMON_VTAB
2021-11-07 02:16:53 +00:00
2021-11-07 03:26:27 +00:00
;;; ============================================================
DoScrollUp:
lda CH
2021-11-07 02:16:53 +00:00
pha
2021-11-07 03:26:27 +00:00
jsr DoHome
2021-11-07 04:07:03 +00:00
@l1: ldy BASH
2021-11-07 02:41:09 +00:00
sty BAS2H
ldy BASL
sty BAS2L
lda WNDBTM
2021-11-07 04:07:03 +00:00
beq @l5
2021-11-07 02:16:53 +00:00
dec a
2021-11-07 02:41:09 +00:00
cmp CV
2021-11-07 04:07:03 +00:00
beq @l5
bcc @l5
2021-11-07 02:41:09 +00:00
inc CV
2021-11-07 02:16:53 +00:00
jsr LCAA5
2021-11-07 02:41:09 +00:00
ldy WNDWDTH
2021-11-07 02:16:53 +00:00
dey
2021-11-07 02:41:09 +00:00
bit RD80VID
2021-11-07 04:07:03 +00:00
bmi @l3
@l2: lda (BASL),y
2021-11-07 02:41:09 +00:00
sta (BAS2L),y
2021-11-07 02:16:53 +00:00
dey
2021-11-07 04:07:03 +00:00
bpl @l2
bra @l1
@l3: tya
2021-11-07 02:16:53 +00:00
lsr a
tay
2021-11-07 04:07:03 +00:00
@l4: bit TXTPAGE1
2021-11-07 02:41:09 +00:00
lda (BASL),y
sta (BAS2L),y
bit TXTPAGE2
lda (BASL),y
sta (BAS2L),y
2021-11-07 02:16:53 +00:00
dey
2021-11-07 04:07:03 +00:00
bpl @l4
2021-11-07 02:41:09 +00:00
bit TXTPAGE1
2021-11-07 04:07:03 +00:00
bra @l1
@l5: stz CH
2021-11-07 03:26:27 +00:00
jsr DoClearEOL
2021-11-07 02:16:53 +00:00
plx
2021-11-07 02:41:09 +00:00
lda CV
2021-11-07 02:16:53 +00:00
bra LCAA1
2021-11-07 04:07:03 +00:00
2021-11-07 02:41:09 +00:00
LCAFA: lda CV
2021-11-07 02:16:53 +00:00
sta $06F8
2021-11-07 02:41:09 +00:00
lda CH
2021-11-07 02:16:53 +00:00
sta $0778
rts
2021-11-07 03:26:27 +00:00
;;; ============================================================
DoScroll:
2021-11-07 02:16:53 +00:00
jsr LCAFA
2021-11-07 02:41:09 +00:00
lda WNDBTM
2021-11-07 02:16:53 +00:00
dec a
dec a
sta $05F8
LCB0F: lda $05F8
jsr LCAA3
2021-11-07 02:41:09 +00:00
lda BASL
sta BAS2L
lda BASH
sta BAS2H
2021-11-07 02:16:53 +00:00
lda $05F8
inc a
jsr LCAA3
2021-11-07 02:41:09 +00:00
ldy WNDWDTH
2021-11-07 02:16:53 +00:00
dey
LCB27: phy
2021-11-07 02:41:09 +00:00
bit TXTPAGE1
bit RD80VID
2021-11-07 02:16:53 +00:00
bpl LCB38
tya
lsr a
tay
bcs LCB38
2021-11-07 02:41:09 +00:00
bit TXTPAGE2
LCB38: lda (BAS2L),y
sta (BASL),y
2021-11-07 02:16:53 +00:00
ply
dey
bpl LCB27
2021-11-07 02:41:09 +00:00
bit TXTPAGE1
2021-11-07 02:16:53 +00:00
lda $05F8
2021-11-07 02:41:09 +00:00
cmp WNDTOP
2021-11-07 02:16:53 +00:00
beq LCB4F
dec $05F8
bra LCB0F
LCB4F: lda #$00
jsr LCAA3
2021-11-07 03:26:27 +00:00
jsr DoClearLine
2021-11-07 02:41:09 +00:00
bit TXTPAGE1
2021-11-07 02:16:53 +00:00
jmp LCA9B
LCB5D: jsr LC814
LCB60: jsr LCBE1
2021-11-07 02:41:09 +00:00
LCB63: ldx CH
2021-11-07 02:51:44 +00:00
stx OURCH
stx XCOORD
2021-11-07 02:16:53 +00:00
ldx #$00
rts
LCB6E: jsr LCBB1
jsr LC822
2021-11-07 03:56:03 +00:00
lda CHAR
2021-11-07 02:16:53 +00:00
bra LCB63
2021-11-07 03:56:03 +00:00
LCB79: sta CHAR
2021-11-07 02:16:53 +00:00
jsr LCBB1
jsr LCBF8
2021-11-07 03:56:03 +00:00
lda CHAR
2021-11-07 02:16:53 +00:00
ora #$80
2021-11-07 03:56:03 +00:00
sta CHAR
2021-11-07 02:16:53 +00:00
and #$7F
cmp #$15
beq LCB63
cmp #$0D
beq LCB99
jsr LC84C
bra LCB60
2021-11-07 02:41:09 +00:00
LCB99: stz CH
2021-11-07 02:16:53 +00:00
bra LCB60
LCB9D: cmp #$00
beq LCBAA
cmp #$01
bne LCBAD
jsr LCCB8
bra LCB63
LCBAA: sec
bra LCB63
LCBAD: ldx #$03
clc
rts
LCBB1: pha
2021-11-07 02:51:44 +00:00
lda OLDBASL
2021-11-07 02:41:09 +00:00
sta BASL
2021-11-07 02:51:44 +00:00
lda OLDBASH
2021-11-07 02:41:09 +00:00
sta BASH
stz WNDTOP
stz WNDLFT
2021-11-07 02:16:53 +00:00
lda #$50
2021-11-07 02:41:09 +00:00
sta WNDWDTH
2021-11-07 02:16:53 +00:00
lda #$18
2021-11-07 02:41:09 +00:00
sta WNDBTM
2021-11-07 02:16:53 +00:00
jsr LC9C0
pla
rts
2021-11-07 02:41:09 +00:00
sta CLRALTCHAR
LCBD0: sta CLR80COL
sta CLR80VID
2021-11-07 02:16:53 +00:00
rts
2021-11-07 02:41:09 +00:00
LCBD7: sta SET80COL
sta SET80VID
sta SETALTCHAR
2021-11-07 02:16:53 +00:00
rts
2021-11-07 02:51:44 +00:00
LCBE1: lda MODE
2021-11-07 02:16:53 +00:00
cmp #$FF
beq LCC04
and #$80
beq LCC04
jsr LCEBB
2021-11-07 02:51:44 +00:00
sta OLDCH
2021-11-07 02:16:53 +00:00
and #$80
eor #$AB
bra LCC13
2021-11-07 02:51:44 +00:00
LCBF8: lda MODE
2021-11-07 02:16:53 +00:00
and #$80
beq LCC04
.byte $AD
LCC00: .byte $7B
tsb $80
LCC03: .byte $0F
LCC04: .byte $20
.byte $BB
LCC06: dec $8049
cmp #$40
bcc LCC13
cmp #$60
bcs LCC13
and #$1F
2021-11-07 02:41:09 +00:00
LCC13: ldy CH
2021-11-07 02:16:53 +00:00
jmp LCEC8
LCC18: php
sei
2021-11-07 02:41:09 +00:00
lda WNDTOP
2021-11-07 02:16:53 +00:00
sta $05F8
LCC1F: lda $05F8
jsr LCAA3
2021-11-07 02:41:09 +00:00
lda BASL
sta BAS2L
lda BASH
sta BAS2H
2021-11-07 02:16:53 +00:00
ldy #$00
2021-11-07 02:41:09 +00:00
LCC2F: bit TXTPAGE1
lda (BAS2L)
bit TXTPAGE2
sta (BASL),y
bit TXTPAGE1
inc BAS2L
lda (BAS2L)
sta (BASL),y
2021-11-07 02:16:53 +00:00
iny
2021-11-07 02:41:09 +00:00
inc BAS2L
2021-11-07 02:16:53 +00:00
cpy #$14
bcc LCC2F
lda #$A0
2021-11-07 02:41:09 +00:00
LCC4B: bit TXTPAGE2
sta (BASL),y
bit TXTPAGE1
sta (BASL),y
2021-11-07 02:16:53 +00:00
iny
cpy #$28
bcc LCC4B
inc $05F8
lda $05F8
cmp #$18
bcc LCC1F
LCC64: plp
jmp LCA9B
LCC68: php
sei
2021-11-07 02:41:09 +00:00
sta SET80COL
lda WNDTOP
2021-11-07 02:16:53 +00:00
sta $05F8
LCC72: lda $05F8
jsr LCAA3
ldy #$13
2021-11-07 02:41:09 +00:00
bit TXTPAGE1
LCC7D: lda (BASL),y
2021-11-07 02:16:53 +00:00
pha
dey
bpl LCC7D
ldy #$00
2021-11-07 02:41:09 +00:00
lda BASL
sta BAS2L
lda BASH
sta BAS2H
LCC8D: bit TXTPAGE2
lda (BASL),y
bit TXTPAGE1
sta (BAS2L)
inc BAS2L
2021-11-07 02:16:53 +00:00
pla
2021-11-07 02:41:09 +00:00
sta (BAS2L)
inc BAS2L
2021-11-07 02:16:53 +00:00
iny
cpy #$14
bcc LCC8D
inc $05F8
lda $05F8
cmp #$18
bcc LCC72
2021-11-07 02:41:09 +00:00
sta CLR80COL
2021-11-07 02:16:53 +00:00
bra LCC64
LCCB2: jsr LCCB8
2021-11-07 02:41:09 +00:00
jmp extra::LC5FA ; bad disasm or ...?
2021-11-07 02:16:53 +00:00
LCCB8: bit $0579
bmi LCCD7
LCCBD: bit $05FA
bvs LCCCE
bpl LCCCE
lda $05FF
cmp $06FF
beq LCCD3
bra LCCD5
2021-11-07 02:41:09 +00:00
LCCCE: bit KBD
2021-11-07 02:16:53 +00:00
bmi LCCD5
LCCD3: clc
rts
LCCD5: sec
rts
LCCD7: jsr LCDA8
beq LCCE1
LCCDC: stz $0579
bra LCCBD
LCCE1: phx
ldx $0479
jsr LCE16
lda $0200,x
jsr LCE25
plx
cmp #$00
beq LCCDC
bra LCCD5
LCCF5: jsr LCCFB
2021-11-07 02:41:09 +00:00
jmp extra::LC5FA
2021-11-07 02:16:53 +00:00
LCCFB: bit $0579
bpl LCD03
jmp LCD85
LCD03: bit $05FA
bvs LCD2F
bpl LCD2F
phx
ldx $06FF
2021-11-07 02:41:09 +00:00
bit RDRAMRD
2021-11-07 02:16:53 +00:00
php
2021-11-07 02:41:09 +00:00
sta RDCARDRAM
2021-11-07 02:16:53 +00:00
lda $0800,x
plp
bmi LCD1E
2021-11-07 02:41:09 +00:00
sta RDMAINRAM
2021-11-07 02:16:53 +00:00
LCD1E: inx
bne LCD23
ldx #$80
LCD23: stx $06FF
plx
pha
pla
php
ora #$80
plp
bra LCD38
2021-11-07 02:41:09 +00:00
LCD2F: lda KBD
bit KBDSTRB
2021-11-07 02:16:53 +00:00
bit $C0B4
LCD38: bpl LCD41
LCD3A: cmp #$06
bcc LCD40
ora #$80
LCD40: rts
LCD41: and #$7F
cmp #$01
bne LCD4B
lda #$1A
bra LCD3A
LCD4B: cmp #$03
bne LCD53
lda #$0C
bra LCD3A
LCD53: cmp #$04
bne LCD5B
lda #$19
bra LCD3A
LCD5B: cmp #$06
bne LCD63
lda #$2C
bra LCD73
LCD63: cmp #$1F
bne LCD6B
lda #$2D
bra LCD73
LCD6B: cmp #$20
bcc LCD3A
cmp #$2C
bcs LCD3A
LCD73: pha
jsr LCDA8
beq LCD7C
pla
bra LCD3A
LCD7C: lda #$FF
sta $0579
pla
jsr LCDBE
LCD85: jsr LCDA8
beq LCD91
LCD8A: stz $0579
lda #$A0
bra LCD3A
LCD91: phx
ldx $0479
jsr LCE16
lda $0200,x
jsr LCE25
plx
inc $0479
cmp #$00
beq LCD8A
bra LCD3A
LCDA8: jsr LCE16
lda #$00
phx
tax
clc
LCDB0: adc $0200,x
inx
bne LCDB0
plx
jsr LCE25
cmp $04F9
rts
LCDBE: phx
phy
jsr LCE16
sec
sbc #$20
ldy #$00
tax
beq LCDD7
LCDCB: lda $0200,y
beq LCDD3
iny
bra LCDCB
LCDD3: iny
LCDD4: dex
bne LCDCB
LCDD7: jsr LCE25
sty $0479
ply
plx
rts
eor ($55)
lsr a:$0D
2021-11-07 02:41:09 +00:00
jmp $5349
2021-11-07 02:16:53 +00:00
.byte $54
ora $FF00
2021-11-07 02:41:09 +00:00
LCDEC: sta WRCARDRAM
2021-11-07 02:16:53 +00:00
lda #$00
tax
LCDF2: sta $0200,x
inx
cpx #$0C
bcc LCDF2
LCDFA: lda LCDD4,x
cmp #$FF
.byte $F0
LCE00: asl $9D
brk
.byte $02
inx
bra LCDFA
2021-11-07 02:41:09 +00:00
sta WRMAINRAM
2021-11-07 02:16:53 +00:00
stz $0579
LCE0D: jsr LCDA8
sta $04F9
2021-11-07 02:41:09 +00:00
jmp extra::LC5FA
2021-11-07 02:16:53 +00:00
LCE16: pha
2021-11-07 02:41:09 +00:00
lda RDRAMRD
sta RDMAINRAM
2021-11-07 02:51:44 +00:00
sta OURCV
2021-11-07 02:41:09 +00:00
sta RDCARDRAM
2021-11-07 02:16:53 +00:00
pla
rts
LCE25: pha
2021-11-07 02:41:09 +00:00
sta RDMAINRAM
2021-11-07 02:51:44 +00:00
lda OURCV
2021-11-07 02:16:53 +00:00
bpl LCE31
2021-11-07 02:41:09 +00:00
sta RDCARDRAM
2021-11-07 02:16:53 +00:00
LCE31: pla
rts
LCE33: lda #$00
2021-11-07 02:41:09 +00:00
bit RDTEXT
2021-11-07 02:51:44 +00:00
bmi DoSETWND
2021-11-07 02:16:53 +00:00
lda #$14
2021-11-07 02:51:44 +00:00
;;; ============================================================
;;; Load X,Y with address of a routine -1 (for `ROMCall`)
.macro LDXY addr
ldx #.hibyte(addr-1)
ldy #.lobyte(addr-1)
.endmacro
;;; ============================================================
DoSETWND:
LDXY SETWND
bra ROMCall
2021-11-07 03:06:39 +00:00
;;; ============================================================
2021-11-07 02:51:44 +00:00
DoBell:
LDXY BELLB
bra ROMCall
2021-11-07 03:06:39 +00:00
;;; ============================================================
2021-11-07 02:51:44 +00:00
DoSETKBD:
LDXY SETKBD
bra ROMCall
2021-11-07 03:06:39 +00:00
;;; ============================================================
2021-11-07 02:51:44 +00:00
DoSETVID:
LDXY SETVID
bra ROMCall
2021-11-07 03:06:39 +00:00
;;; ============================================================
2021-11-07 02:51:44 +00:00
DoMON_VTAB:
LDXY MON_VTAB
bra ROMCall
2021-11-07 03:06:39 +00:00
;;; ============================================================
2021-11-07 03:26:27 +00:00
DoClearEOS:
2021-11-07 02:51:44 +00:00
LDXY CLREOP
bra ROMCall
2021-11-07 03:06:39 +00:00
;;; ============================================================
2021-11-07 03:26:27 +00:00
DoHomeAndClear:
2021-11-07 02:51:44 +00:00
LDXY HOME
bra ROMCall
2021-11-07 03:06:39 +00:00
;;; ============================================================
2021-11-07 03:26:27 +00:00
DoClearEOL:
2021-11-07 02:51:44 +00:00
LDXY CLREOL
;; fall through
;;; ============================================================
2021-11-07 03:06:39 +00:00
;;; A = character, X,Y = ROM address-1 (return value to push to stack)
2021-11-07 02:51:44 +00:00
ROMCall:
sta TEMP2
2021-11-07 02:41:09 +00:00
bit RDLCRAM
2021-11-07 02:16:53 +00:00
php
2021-11-07 02:41:09 +00:00
bit RDLCBNK2
2021-11-07 02:16:53 +00:00
php
2021-11-07 03:06:39 +00:00
lda #.hibyte(LCE84-1)
2021-11-07 02:16:53 +00:00
pha
2021-11-07 03:06:39 +00:00
lda #.lobyte(LCE84-1)
2021-11-07 02:16:53 +00:00
pha
phx
phy
2021-11-07 02:41:09 +00:00
bit ROMIN2
2021-11-07 02:51:44 +00:00
lda TEMP2
2021-11-07 02:16:53 +00:00
rts
2021-11-07 03:06:39 +00:00
;;; ============================================================
;;; Return from ROMCall
LCE84: plp
2021-11-07 02:16:53 +00:00
bpl LCE9A
plp
bpl LCE92
2021-11-07 02:41:09 +00:00
bit LCBANK2
bit LCBANK2
2021-11-07 02:16:53 +00:00
bra LCEAB
2021-11-07 03:06:39 +00:00
2021-11-07 02:41:09 +00:00
LCE92: bit ROMIN
bit ROMIN
2021-11-07 02:16:53 +00:00
bra LCEAB
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
LCE9A: plp
bpl LCEA5
2021-11-07 02:41:09 +00:00
bit LCBANK1
bit LCBANK1
2021-11-07 02:16:53 +00:00
bra LCEAB
2021-11-07 03:06:39 +00:00
2021-11-07 02:16:53 +00:00
LCEA5: .byte $2C
LCEA6: bit #$C0
bit $C089
2021-11-07 02:41:09 +00:00
LCEAB: lda BASL
2021-11-07 02:51:44 +00:00
sta OLDBASL
2021-11-07 02:41:09 +00:00
lda BASH
2021-11-07 02:51:44 +00:00
sta OLDBASH
2021-11-07 02:41:09 +00:00
lda CH
2021-11-07 02:51:44 +00:00
sta OURCH
2021-11-07 02:16:53 +00:00
rts
2021-11-07 02:41:09 +00:00
LCEBB: ldy CH
2021-11-07 02:16:53 +00:00
LCEBD: phy
jsr LCED2
2021-11-07 02:41:09 +00:00
lda (BASL),y
2021-11-07 02:16:53 +00:00
LCEC3: ply
2021-11-07 02:41:09 +00:00
bit TXTPAGE1
2021-11-07 02:16:53 +00:00
rts
LCEC8: phy
pha
jsr LCED2
pla
2021-11-07 02:41:09 +00:00
sta (BASL),y
2021-11-07 02:16:53 +00:00
bra LCEC3
2021-11-07 02:41:09 +00:00
LCED2: bit RD80VID
2021-11-07 02:16:53 +00:00
bpl LCEDC
tya
lsr a
tay
bcc LCEE0
2021-11-07 02:41:09 +00:00
LCEDC: bit TXTPAGE1
2021-11-07 02:16:53 +00:00
rts
2021-11-07 02:41:09 +00:00
LCEE0: bit TXTPAGE2
2021-11-07 02:16:53 +00:00
rts
2021-11-07 03:06:39 +00:00
;;; ============================================================
;; ???
2021-11-07 02:16:53 +00:00
eor $4E
ora $4109
.byte $53
2021-11-07 02:41:09 +00:00
jmp $5709
2021-11-07 02:16:53 +00:00
eor #$44
.byte $54
pha
ora $5309
.byte $54
eor ($09,x)
2021-11-07 03:06:39 +00:00
bbr4 $4E,$CF32
bmi $CF4F
2021-11-07 02:16:53 +00:00
.byte $54
ora #$4D
eor ($4B,x)
eor $20
.byte $53
eor $52,x
eor $20
sec
bmi LCF2B
.byte $53
.byte $54
bbr4 $52,LCF55
2021-11-07 02:41:09 +00:00
jsr $5349
jsr $4E45
2021-11-07 02:16:53 +00:00
eor ($42,x)
2021-11-07 02:41:09 +00:00
jmp $4445
2021-11-07 02:16:53 +00:00
ora $3B0D
.byte $43
pha
eor ($4E,x)
rmb4 $45
.byte $44
.byte $20
LCF26: .byte $54
pha
eor #$53
.byte $20
LCF2B: and $312F,y
and $2F,x
sec
.byte $36
2021-11-07 03:06:39 +00:00
jsr $4F46
2021-11-07 02:16:53 +00:00
eor ($20)
pha
eor ($42,x)
eor ($20,x)
eor $5245
rmb4 $45
2021-11-07 02:41:09 +00:00
jsr $4E41
2021-11-07 02:16:53 +00:00
.byte $44
2021-11-07 02:41:09 +00:00
jsr $4F4D
2021-11-07 02:16:53 +00:00
eor $53,x
eor $20
rmb5 $52
.byte $49
LCF4F: .byte $54
eor $3A
ora $460D
LCF55: eor #$58
.byte $43
bbr4 $4C,LCF64
2021-11-07 02:41:09 +00:00
jmp $4144
2021-11-07 02:16:53 +00:00
ora #$43
bbr4 $4C,LCF6C
pha
LCF64: eor ($56,x)
eor $20
.byte $54
pha
eor $59
2021-11-07 02:41:09 +00:00
LCF6C: jsr $4843
2021-11-07 02:16:53 +00:00
eor ($4E,x)
rmb4 $45
.byte $44
2021-11-07 02:41:09 +00:00
jsr $4F43
jmp $3F20
2021-11-07 02:16:53 +00:00
ora $4309
eor $0950
bbr4 $4C,LCFC7
.byte $43
bbr4 $4C,LCF94
ora #$42
lsr $0945
rol $0932
eor $5345,y
.byte $20
.byte $2D
2021-11-07 02:41:09 +00:00
LCF94: jsr $5355
2021-11-07 02:16:53 +00:00
eor $20
.byte $54
pha
eor $49
eor ($53)
ora $4C09
.byte $44
eor ($09,x)
eor ($50,x)
bvc LCFF5
eor $43
bbr4 $4C,LCFB7
eor $4C
.byte $53
eor $20
eor $53,x
eor $20
2021-11-07 02:41:09 +00:00
LCFB7: bbr4 $55,$D00C
2021-11-07 02:16:53 +00:00
.byte $53
2021-11-07 02:41:09 +00:00
jsr $5428
2021-11-07 02:16:53 +00:00
pha
eor $59
2021-11-07 02:41:09 +00:00
jsr $494D
2021-11-07 02:16:53 +00:00
rmb4 $48
.byte $54
2021-11-07 02:41:09 +00:00
LCFC7: jsr $4148
2021-11-07 02:16:53 +00:00
lsr $45,x
ora $093B
ora #$09
2021-11-07 02:41:09 +00:00
jsr $2020
2021-11-07 02:16:53 +00:00
.byte $43
pha
eor ($4E,x)
rmb4 $45
.byte $44
2021-11-07 02:41:09 +00:00
jsr $4854
2021-11-07 02:16:53 +00:00
eor #$53
2021-11-07 02:41:09 +00:00
jsr $4F54
2021-11-07 02:16:53 +00:00
bbr4 $29,LCFF3
rol $0932
.byte $53
.byte $54
eor ($09,x)
.byte $43
bbr4 $4C,LCFFE
.byte $0D
.byte $2E
LCFF3: eor $4E
LCFF5: .byte $44
ora #$52
.byte $54
.byte $53
ora $1F0D
.byte $0D
LCFFE: .byte $3B
LCFFF: .byte $45