wip
This commit is contained in:
parent
66427d4f01
commit
a1a74804a4
283
u2_disasm.s
283
u2_disasm.s
|
@ -5,13 +5,7 @@
|
|||
|
||||
|
||||
.setcpu "65C02"
|
||||
|
||||
LF813 := $F813 ; Not an Apple II entry point
|
||||
LF981 := $F981 ; Not an Apple II entry point
|
||||
LFA37 := $FA37 ; Not an Apple II entry point
|
||||
LFA52 := $FA52 ; Not an Apple II entry point
|
||||
LFC45 := $FC45 ; Not an Apple II entry point
|
||||
LFEEB := $FEEB ; Not an Apple II entry point
|
||||
.include "opcodes.inc"
|
||||
|
||||
WNDLFT := $20
|
||||
WNDWDTH := $21
|
||||
|
@ -19,11 +13,23 @@ 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
|
||||
|
||||
SAVEA := $4F8
|
||||
SAVEX := $578
|
||||
SAVEY := $478
|
||||
|
||||
OLDCH := $47B
|
||||
MODE := $4FB
|
||||
|
@ -81,11 +87,17 @@ XFER := $C314
|
|||
|
||||
.org $C300
|
||||
|
||||
;; Init
|
||||
LC300: bit SETV ; V = init
|
||||
bra LC33A
|
||||
|
||||
;; Input
|
||||
LC305: sec
|
||||
bcc $C320 ; never taken
|
||||
.byte OPC_BCC ; never taken; skip next byte
|
||||
|
||||
;; Output
|
||||
;; C3COut1
|
||||
LC307: clc
|
||||
clv
|
||||
bra LC33A
|
||||
|
||||
|
@ -109,6 +121,9 @@ LC305: sec
|
|||
plp
|
||||
jmp LCC98
|
||||
|
||||
;;; ============================================================
|
||||
;;; Pascal Entry Points
|
||||
|
||||
JPINIT: bit LCFFF
|
||||
jmp LCB44
|
||||
|
||||
|
@ -124,10 +139,13 @@ JPSTAT: bit LCFFF
|
|||
LC334: bit LCFFF
|
||||
jmp LCCC3
|
||||
|
||||
;;; ============================================================
|
||||
;;; Main Entry Points
|
||||
|
||||
LC33A: sta LCFFF
|
||||
sta $04F8
|
||||
stx $0578
|
||||
sty $0478
|
||||
sta SAVEA
|
||||
stx SAVEX
|
||||
sty SAVEY
|
||||
pha
|
||||
bvc LC35B
|
||||
|
||||
|
@ -154,7 +172,7 @@ LC36D: plp
|
|||
jsr LC8B1
|
||||
bra LC3B7
|
||||
|
||||
LC376: ldx $0578
|
||||
LC376: ldx SAVEX
|
||||
beq LC38B
|
||||
dex
|
||||
lda $0678
|
||||
|
@ -185,26 +203,27 @@ LC3AF: jsr LC850
|
|||
stz $0678
|
||||
LC3B5: bra LC3BA
|
||||
|
||||
LC3B7: lda $04F8
|
||||
LC3BA: ldx $0578
|
||||
LC3B7: lda SAVEA
|
||||
LC3BA: ldx SAVEX
|
||||
ldy CH
|
||||
sty OURCH
|
||||
ldy $0478
|
||||
ldy SAVEY
|
||||
SETV: rts ; has V flag set
|
||||
|
||||
LC3C6: lda #$80
|
||||
tsb MODE ; set mode high bit
|
||||
tsb MODE ; set high bit
|
||||
jsr LC850
|
||||
jsr LC933
|
||||
cmp #$98 ; ctrl-x (clear)
|
||||
beq LC3AA
|
||||
lda MODE ; mode
|
||||
lda MODE
|
||||
bmi LC3C6 ; test high bit
|
||||
bra LC38B
|
||||
|
||||
bit LCFFF
|
||||
jmp LCEE7
|
||||
|
||||
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
|
@ -224,6 +243,17 @@ LC3C6: lda #$80
|
|||
bit LCFFF
|
||||
jmp LCD35
|
||||
|
||||
;;; ==================================================
|
||||
|
||||
.assert * = $C400, error, "Mismatch"
|
||||
.scope
|
||||
LF813 := $F813 ; Not an Apple II entry point
|
||||
LF981 := $F981 ; Not an Apple II entry point
|
||||
LFA37 := $FA37 ; Not an Apple II entry point
|
||||
LFA52 := $FA52 ; Not an Apple II entry point
|
||||
LFC45 := $FC45 ; Not an Apple II entry point
|
||||
LFEEB := $FEEB ; Not an Apple II entry point
|
||||
|
||||
ldx #$00
|
||||
eor #$20
|
||||
beq LC419
|
||||
|
@ -285,13 +315,14 @@ LC469: lda ($00,x)
|
|||
tax
|
||||
lda LC47E,x
|
||||
pha
|
||||
lda LC47F,x
|
||||
lda LC47E+1,x
|
||||
tax
|
||||
pla
|
||||
jmp LF813
|
||||
|
||||
;; Jump Table (target address-1)
|
||||
LC47E: .byte $F0
|
||||
LC47F: sbc $C100,x
|
||||
sbc $C100,x
|
||||
brk
|
||||
.byte $C2
|
||||
brk
|
||||
|
@ -302,19 +333,20 @@ LC47F: sbc $C100,x
|
|||
dec $00
|
||||
smb4 $1B
|
||||
sbc a:$A9,x
|
||||
stz $3E
|
||||
stz $3F
|
||||
stz A2L
|
||||
stz A2H
|
||||
stz $2C
|
||||
LC498: ora $3E
|
||||
sta $3E
|
||||
|
||||
LC498: ora A2L
|
||||
sta A2L
|
||||
lda $0200,y
|
||||
iny
|
||||
jsr LFEEB
|
||||
bmi LC4B2
|
||||
dec $2C
|
||||
ldx #$04
|
||||
LC4A9: asl $3E
|
||||
LC4AB: rol $3F
|
||||
LC4A9: asl A2L
|
||||
LC4AB: rol A2H
|
||||
dex
|
||||
bne LC4A9
|
||||
bra LC498
|
||||
|
@ -337,15 +369,15 @@ LC4B2: jmp LF813
|
|||
plx
|
||||
LC4CB: jmp LF813
|
||||
|
||||
;; Data table
|
||||
LC4CE: bbr0 $F0,LC4AB
|
||||
and #$0F
|
||||
tax
|
||||
lda LC4DD,x
|
||||
lda $C4DD,x
|
||||
sta $30
|
||||
plx
|
||||
jmp LF813
|
||||
|
||||
LC4DD: brk
|
||||
brk
|
||||
ora ($22),y
|
||||
.byte $33
|
||||
.byte $44
|
||||
|
@ -355,15 +387,13 @@ LC4DD: brk
|
|||
cpy $EEDD
|
||||
.byte $FF
|
||||
tya
|
||||
LC4EE: ldy $C4FD,x
|
||||
ldy $C4FD,x
|
||||
beq * + (8)
|
||||
cmp $C000,y
|
||||
inx
|
||||
bra LC4EE
|
||||
|
||||
bra $C4EE
|
||||
tay
|
||||
jmp LF813
|
||||
|
||||
eor ($54)
|
||||
lsr $00,x
|
||||
lsr $50,x
|
||||
|
@ -411,6 +441,7 @@ LC4EE: ldy $C4FD,x
|
|||
smb7 $03
|
||||
bcc $C574
|
||||
sbc a:$00,x
|
||||
.endscope
|
||||
|
||||
;;; ============================================================
|
||||
|
||||
|
@ -419,7 +450,7 @@ LC4EE: ldy $C4FD,x
|
|||
;;; ============================================================
|
||||
|
||||
LC800: lda #$30 ; set to normal state (%00110000)
|
||||
sta MODE ; mode
|
||||
sta MODE
|
||||
jsr LCBBD
|
||||
jsr LCE3C
|
||||
jmp DoHomeAndClear
|
||||
|
@ -436,9 +467,9 @@ LC812: cpy WNDWDTH
|
|||
|
||||
LC820: dey
|
||||
sty CH
|
||||
stx $0578
|
||||
stx SAVEX
|
||||
lda #$8D
|
||||
LC828: rts
|
||||
rts1: rts
|
||||
|
||||
Do40Col:
|
||||
bit RD80VID
|
||||
|
@ -447,7 +478,7 @@ Do40Col:
|
|||
jsr LCADA
|
||||
jsr LCE3C
|
||||
plp
|
||||
bpl LC828
|
||||
bpl rts1
|
||||
jmp LCC4E
|
||||
|
||||
nop
|
||||
|
@ -467,12 +498,14 @@ Do40Col:
|
|||
nop
|
||||
nop
|
||||
nop
|
||||
|
||||
jsr LCB95
|
||||
LC850: jsr LCBC7
|
||||
LC853: inc $4E
|
||||
bne LC859
|
||||
inc $4F
|
||||
LC859: jsr LCD09
|
||||
LC853: inc RNDL
|
||||
bne :+
|
||||
inc RNDH
|
||||
:
|
||||
jsr LCD09
|
||||
bcc LC853
|
||||
jsr LCD35
|
||||
cmp #$06
|
||||
|
@ -486,7 +519,7 @@ LC86E: sta CHAR
|
|||
LC871: pha
|
||||
jsr LCBDE
|
||||
pla
|
||||
LC876: rts
|
||||
rts2: rts
|
||||
|
||||
LC877: jsr LC850
|
||||
cmp #$00
|
||||
|
@ -494,7 +527,7 @@ LC877: jsr LC850
|
|||
cmp #$02
|
||||
beq LC80E
|
||||
cmp #$05
|
||||
bne LC876
|
||||
bne rts2
|
||||
ldy CH
|
||||
LC888: iny
|
||||
cpy WNDWDTH
|
||||
|
@ -523,7 +556,7 @@ LC8A2: cpy CH
|
|||
|
||||
LC8B1: sta CHAR
|
||||
LC8B4: jsr LC992
|
||||
lda MODE ; mode
|
||||
lda MODE
|
||||
and #$03 ; test low 3 bits
|
||||
beq LC8C1
|
||||
jmp LCA11
|
||||
|
@ -537,10 +570,10 @@ LC8C1: lda CHAR
|
|||
bcc LC8D3
|
||||
jsr DoReturn
|
||||
LC8D3: lda CHAR ; char to be printed
|
||||
bit $32
|
||||
bit INVFLG
|
||||
bmi LC8F0
|
||||
and #$7F
|
||||
bit MODE ; mode
|
||||
bit MODE
|
||||
bvs LC8F0 ; test bit 6 (MouseText active)
|
||||
bit ALTCHARSET
|
||||
bpl LC8F0
|
||||
|
@ -563,24 +596,23 @@ LC8F7: sec
|
|||
bcc DoNothing
|
||||
asl a
|
||||
tax
|
||||
jmp (LC901,x)
|
||||
jmp (jt1,x)
|
||||
|
||||
;; Jump Table
|
||||
LC901:
|
||||
jt1:
|
||||
.addr DoBell ; $07 Ctrl-G Bell
|
||||
.addr DoBackspace ; $08; Ctrl-H Backspace
|
||||
.addr DoNothing ; $09 Ctrl-I ???
|
||||
.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 DoNothing ; $10 Ctrl-P
|
||||
.addr Do40Col ; $11 Ctrl-Q 40-column
|
||||
.addr Do80Col ; $12 Ctrl-R 80-column
|
||||
.addr DoNothing ; $13 Ctrl-S Stop list
|
||||
.addr DoNothing ; $14 Ctrl-T ???
|
||||
.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
|
||||
|
@ -597,7 +629,7 @@ LC901:
|
|||
|
||||
LC933: pha
|
||||
lda #$80
|
||||
trb MODE ; clear mode high bit
|
||||
trb MODE ; clear high bit
|
||||
pla
|
||||
and #$7F
|
||||
cmp #'a'
|
||||
|
@ -608,9 +640,9 @@ LC933: pha
|
|||
|
||||
;; Scan table for match
|
||||
LC946: ldx #$00
|
||||
LC948: ldy LC95B,x
|
||||
LC948: ldy code_table,x
|
||||
beq DoNothing
|
||||
cmp LC95B,x
|
||||
cmp code_table,x
|
||||
beq LC955
|
||||
inx
|
||||
bra LC948
|
||||
|
@ -618,11 +650,11 @@ LC948: ldy LC95B,x
|
|||
LC955: txa
|
||||
asl a
|
||||
tax
|
||||
jmp (LC96E,x)
|
||||
jmp (jt2,x)
|
||||
|
||||
|
||||
;; Character match table
|
||||
LC95B:
|
||||
code_table:
|
||||
.byte '@'
|
||||
.byte 'A'
|
||||
.byte 'B'
|
||||
|
@ -646,7 +678,8 @@ LC95B:
|
|||
|
||||
|
||||
;; Jump table
|
||||
LC96E: .addr DoHomeAndClear ; '@'
|
||||
jt2:
|
||||
.addr DoHomeAndClear ; '@'
|
||||
.addr DoForwardSpace ; 'A'
|
||||
.addr DoBackspace ; 'B'
|
||||
.addr DoLineFeed ; 'C'
|
||||
|
@ -669,14 +702,14 @@ LC96E: .addr DoHomeAndClear ; '@'
|
|||
|
||||
LC992: lda KBD
|
||||
cmp #$93 ; Ctrl-S
|
||||
bne LC9A8
|
||||
bne rts3
|
||||
bit KBDSTRB
|
||||
LC99C: lda KBD
|
||||
bpl LC99C
|
||||
: lda KBD
|
||||
bpl :-
|
||||
cmp #$83 ; Ctrl-C
|
||||
beq LC9A8
|
||||
beq rts3
|
||||
bit KBDSTRB
|
||||
LC9A8: rts
|
||||
rts3: rts
|
||||
|
||||
nop
|
||||
jmp LCB60
|
||||
|
@ -700,8 +733,8 @@ DoInverse:
|
|||
|
||||
DoNormal:
|
||||
ldy #$FF
|
||||
LC9CA: sty $32
|
||||
LC9CC: rts
|
||||
LC9CA: sty INVFLG
|
||||
rts4: rts
|
||||
|
||||
Do80Col:
|
||||
bit RD80VID
|
||||
|
@ -710,7 +743,7 @@ Do80Col:
|
|||
jsr LCADA
|
||||
jsr LCE3C
|
||||
plp
|
||||
bmi LC9CC
|
||||
bmi rts4
|
||||
jmp LCBFE
|
||||
|
||||
DoQuit:
|
||||
|
@ -746,9 +779,9 @@ LCA11: lda CHAR ; character to read/print
|
|||
sbc #$20
|
||||
and #$7F
|
||||
pha
|
||||
dec MODE ; mode ... clear low bit?
|
||||
dec MODE ; clear low bit???
|
||||
lda MODE
|
||||
and #$03 ; mode test low 2 bits
|
||||
and #$03 ; test low 2 bits
|
||||
bne LCA36
|
||||
pla
|
||||
cmp #$18 ; +$20 is $38 = '8' ???
|
||||
|
@ -1004,7 +1037,7 @@ LCBC7: lda MODE ; all mode bits set?
|
|||
eor #$AB
|
||||
bra LCBF9
|
||||
|
||||
LCBDE: lda MODE ; test mode high bit
|
||||
LCBDE: lda MODE ; test high bit
|
||||
and #$80
|
||||
beq LCBEA
|
||||
lda OLDCH
|
||||
|
@ -1124,18 +1157,18 @@ LCCC3: pha
|
|||
bcc LCCDA
|
||||
sta RDMAINRAM
|
||||
sta WRCARDRAM
|
||||
LCCDA: lda ($3C)
|
||||
sta ($42)
|
||||
inc $42
|
||||
LCCDA: lda (A1L)
|
||||
sta (A4L)
|
||||
inc A4L
|
||||
bne LCCE4
|
||||
inc $43
|
||||
LCCE4: lda $3C
|
||||
cmp $3E
|
||||
lda $3D
|
||||
sbc $3F
|
||||
inc $3C
|
||||
inc A4H
|
||||
LCCE4: lda A1L
|
||||
cmp A2L
|
||||
lda A1H
|
||||
sbc A2H
|
||||
inc A1L
|
||||
bne LCCF2
|
||||
inc $3D
|
||||
inc A1H
|
||||
LCCF2: bcc LCCDA
|
||||
sta WRCARDRAM
|
||||
plp
|
||||
|
@ -1437,51 +1470,51 @@ LCEE7: bit RD80COL
|
|||
LCEFD: bcc LCF35
|
||||
sta RDMAINRAM
|
||||
sta WRCARDRAM
|
||||
lda $42
|
||||
ldx $43
|
||||
lda A4L
|
||||
ldx A4H
|
||||
sta ALTZPON
|
||||
sta $42
|
||||
stx $43
|
||||
sta A4L
|
||||
stx A4H
|
||||
sta ALTZPOFF
|
||||
LCF13: lda ($3C)
|
||||
LCF13: lda (A1L)
|
||||
sta ALTZPON
|
||||
sta ($42)
|
||||
inc $42
|
||||
sta (A4L)
|
||||
inc A4L
|
||||
bne LCF20
|
||||
inc $43
|
||||
inc A4H
|
||||
LCF20: sta ALTZPOFF
|
||||
lda $3C
|
||||
cmp $3E
|
||||
lda $3D
|
||||
sbc $3F
|
||||
inc $3C
|
||||
lda A1L
|
||||
cmp A2L
|
||||
lda A1H
|
||||
sbc A2H
|
||||
inc A1L
|
||||
bne LCF31
|
||||
inc $3D
|
||||
inc A1H
|
||||
LCF31: bcc LCF13
|
||||
bra LCF67
|
||||
|
||||
LCF35: sta RDCARDRAM
|
||||
sta WRMAINRAM
|
||||
lda $3C
|
||||
ldx $3D
|
||||
lda A1L
|
||||
ldx A1H
|
||||
sta ALTZPON
|
||||
sta $3C
|
||||
stx $3D
|
||||
sta A1L
|
||||
stx A1H
|
||||
LCF46: sta ALTZPON
|
||||
lda ($3C)
|
||||
ldx $3C
|
||||
ldy $3D
|
||||
inc $3C
|
||||
lda (A1L)
|
||||
ldx A1L
|
||||
ldy A1H
|
||||
inc A1L
|
||||
bne LCF55
|
||||
inc $3D
|
||||
inc A1H
|
||||
LCF55: sta ALTZPOFF
|
||||
sta ($42)
|
||||
inc $42
|
||||
sta (A4L)
|
||||
inc A4L
|
||||
bne LCF60
|
||||
inc $43
|
||||
LCF60: cpx $3E
|
||||
inc A4H
|
||||
LCF60: cpx A2L
|
||||
tya
|
||||
sbc $3F
|
||||
sbc A2H
|
||||
bcc LCF46
|
||||
LCF67: sta ALTZPOFF
|
||||
sta WRCARDRAM
|
||||
|
@ -1500,23 +1533,23 @@ LCF82: rts
|
|||
LCF83: bcc LCFB7
|
||||
sta RDMAINRAM
|
||||
sta WRCARDRAM
|
||||
lda $42
|
||||
ldy $43
|
||||
lda A4L
|
||||
ldy A4H
|
||||
sta ALTZPON
|
||||
sta $42
|
||||
sty $43
|
||||
sta A4L
|
||||
sty A4H
|
||||
sta ALTZPOFF
|
||||
ldy #$00
|
||||
LCF9B: lda ($3C),y
|
||||
LCF9B: lda (A1L),y
|
||||
sta ALTZPON
|
||||
sta ($42),y
|
||||
sta (A4L),y
|
||||
sta ALTZPOFF
|
||||
iny
|
||||
bne LCF9B
|
||||
inc $3D
|
||||
inc A1H
|
||||
.byte $8D
|
||||
LCFAB: ora #$C0
|
||||
inc $43
|
||||
inc A4H
|
||||
sta ALTZPOFF
|
||||
dex
|
||||
bne LCF9B
|
||||
|
@ -1524,19 +1557,19 @@ LCFAB: ora #$C0
|
|||
|
||||
LCFB7: sta RDCARDRAM
|
||||
sta WRMAINRAM
|
||||
lda $3C
|
||||
ldy $3D
|
||||
lda A1L
|
||||
ldy A1H
|
||||
sta ALTZPON
|
||||
sta $3C
|
||||
sty $3D
|
||||
sta A1L
|
||||
sty A1H
|
||||
ldy #$00
|
||||
LCFCA: sta ALTZPON
|
||||
lda ($3C),y
|
||||
lda (A1L),y
|
||||
sta ALTZPOFF
|
||||
sta ($42),y
|
||||
sta (A4L),y
|
||||
iny
|
||||
bne LCFCA
|
||||
inc $43
|
||||
inc A4H
|
||||
sta ALTZPON
|
||||
LCFDC: .byte $E6
|
||||
LCFDD: and $088D,x
|
||||
|
@ -1548,7 +1581,7 @@ LCFE4: jmp LCF67
|
|||
brk
|
||||
brk
|
||||
brk
|
||||
LCFEB: brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
|
|
Loading…
Reference in New Issue