a2d/desktop/ovl1c.s
2018-03-28 21:05:12 -07:00

1424 lines
26 KiB
ArmAsm

.setcpu "6502"
.include "apple2.inc"
.include "../macros.inc"
.include "../mgtk.inc"
.include "../inc/apple2.inc"
.include "../inc/prodos.inc"
L0006 := $0006
LDAEE := $DAEE
LDB55 := $DB55
LDBE0 := $DBE0
LDE9F := $DE9F
LDF94 := $DF94
LE0FE := $E0FE
LE137 := $E137
LE6AB := $E6AB
LE6FD := $E6FD
LE766 := $E766
LE7A8 := $E7A8
.org $800
L0800: php
sei
jsr L083A
plp
cmp #$00
bne L080C
clc
rts
L080C: cmp #$02
bne L0815
lda #$2B
jmp L0821
L0815: cmp #$01
bne L081E
lda #$27
jmp L0821
L081E: clc
adc #$30
L0821: sec
rts
L0823: asl a
asl L0C24
sta L0C36
txa
lsr a
lsr a
lsr a
lsr a
tay
lda L0C36
jsr L09C6
lsr L0C24
rts
L083A: tax
and #$70
sta L0C23
txa
ldx L0C23
rol a
lda #$00
rol a
bne L0850
lda $C08A,x
jmp L0853
L0850: lda LCBANK1,x
L0853: lda $C089,x
lda #$D7
sta $DA
lda #$50
sta L0C24
lda #$00
jsr L0823
L0864: lda $DA
beq L086E
jsr L0B3A
jmp L0864
L086E: lda #$01
sta $D3
lda #$AA
sta $D0
lda L0C20
clc
adc #$02
sta $D4
lda #$00
sta $D1
L0882: lda $D1
ldx L0C23
jsr L0823
ldx L0C23
lda $C08D,x
lda $C08E,x
tay
lda $C08E,x
lda $C08C,x
tya
bpl L08A2
lda #$02
jmp L08F9
L08A2: jsr L0B63
bcc L08B5
lda #$01
ldy $D4
cpy L0C1F
bcs L08B2
lda #$04
L08B2: jmp L08F9
L08B5: ldy $D4
cpy L0C1F
bcs L08C1
lda #$04
jmp L08F9
L08C1: cpy L0C20
bcc L08CB
lda #$03
jmp L08F9
L08CB: lda L0C22
sta L0C25
L08D1: dec L0C25
bne L08DB
lda #$01
jmp L08F9
L08DB: ldx L0C23
jsr L096A
bcs L08D1
lda $D8
bne L08D1
ldx L0C23
jsr L0907
bcs L08D1
inc $D1
lda $D1
cmp #$23
bcc L0882
lda #$00
L08F9: pha
ldx L0C23
lda $C088,x
lda #$00
jsr L0823
pla
rts
L0907: ldy #$20
L0909: dey
beq L0968
L090C: lda $C08C,x
bpl L090C
L0911: eor #$D5
bne L0909
nop
L0916: lda $C08C,x
bpl L0916
cmp #$AA
bne L0911
ldy #$56
L0921: lda $C08C,x
bpl L0921
cmp #$AD
bne L0911
lda #$00
L092C: dey
sty $D5
L092F: lda $C08C,x
bpl L092F
cmp #$96
bne L0968
ldy $D5
bne L092C
L093C: sty $D5
L093E: lda $C08C,x
bpl L093E
cmp #$96
bne L0968
ldy $D5
iny
bne L093C
L094C: lda $C08C,x
bpl L094C
cmp #$96
bne L0968
L0955: lda $C08C,x
bpl L0955
cmp #$DE
bne L0968
nop
L095F: lda $C08C,x
bpl L095F
cmp #$AA
beq L09C4
L0968: sec
rts
L096A: ldy #$FC
sty $DC
L096E: iny
bne L0975
inc $DC
beq L0968
L0975: lda $C08C,x
bpl L0975
L097A: cmp #$D5
bne L096E
nop
L097F: lda $C08C,x
bpl L097F
cmp #$AA
bne L097A
ldy #$03
L098A: lda $C08C,x
bpl L098A
cmp #$96
bne L097A
lda #$00
L0995: sta $DB
L0997: lda $C08C,x
bpl L0997
rol a
sta $DD
L099F: lda $C08C,x
bpl L099F
and $DD
sta $D7,y
eor $DB
dey
bpl L0995
tay
bne L0968
L09B1: lda $C08C,x
bpl L09B1
cmp #$DE
bne L0968
nop
L09BB: lda $C08C,x
bpl L09BB
cmp #$AA
bne L0968
L09C4: clc
rts
L09C6: stx L0C37
sta L0C36
cmp L0C24
beq L0A2D
lda #$00
sta L0C38
L09D6: lda L0C24
sta L0C39
sec
sbc L0C36
beq L0A19
bcs L09EB
eor #$FF
inc L0C24
bcc L09F0
L09EB: adc #$FE
dec L0C24
L09F0: cmp L0C38
bcc L09F8
lda L0C38
L09F8: cmp #$0C
bcs L09FD
tay
L09FD: sec
jsr L0A1D
lda L0B4B,y
jsr L0B3A
lda L0C39
clc
.byte $20
L0A0C: jsr $B90A
.byte $57
.byte $0B
jsr L0B3A
inc L0C38
bne L09D6
L0A19: jsr L0B3A
clc
L0A1D: lda L0C24
L0A20: and #$03
rol a
ora L0C37
tax
lda $C080,x
ldx L0C37
L0A2D: rts
L0A2E: jsr L0C0E
lda $C08D,x
lda $C08E,x
lda #$FF
sta $C08F,x
cmp $C08C,x
pha
pla
nop
ldy #$04
L0A44: pha
pla
jsr L0AA5
dey
bne L0A44
lda #$D5
jsr L0AA4
lda #$AA
jsr L0AA4
lda #$AD
jsr L0AA4
ldy #$56
nop
nop
nop
bne L0A65
L0A62: jsr L0C0E
L0A65: nop
nop
lda #$96
sta $C08D,x
cmp $C08C,x
dey
bne L0A62
bit $00
nop
L0A75: jsr L0C0E
lda #$96
sta $C08D,x
cmp $C08C,x
lda #$96
nop
iny
bne L0A75
jsr L0AA4
lda #$DE
jsr L0AA4
lda #$AA
jsr L0AA4
lda #$EB
jsr L0AA4
lda #$FF
jsr L0AA4
lda $C08E,x
lda $C08C,x
rts
L0AA4: nop
L0AA5: pha
pla
sta $C08D,x
cmp $C08C,x
rts
L0AAE: sec
lda $C08D,x
lda $C08E,x
bmi L0B15
lda #$FF
sta $C08F,x
cmp $C08C,x
pha
pla
L0AC1: jsr L0B1B
jsr L0B1B
sta $C08D,x
cmp $C08C,x
nop
dey
bne L0AC1
lda #$D5
jsr L0B2D
lda #$AA
jsr L0B2D
lda #$96
jsr L0B2D
lda $D3
jsr L0B1C
lda $D1
jsr L0B1C
lda $D2
jsr L0B1C
lda $D3
eor $D1
eor $D2
pha
lsr a
ora $D0
sta $C08D,x
lda $C08C,x
pla
ora #$AA
jsr L0B2C
lda #$DE
jsr L0B2D
lda #$AA
jsr L0B2D
lda #$EB
jsr L0B2D
clc
L0B15: lda $C08E,x
lda $C08C,x
L0B1B: rts
L0B1C: pha
lsr a
ora $D0
sta $C08D,x
cmp $C08C,x
pla
nop
nop
nop
ora #$AA
L0B2C: nop
L0B2D: nop
pha
pla
sta $C08D,x
cmp $C08C,x
rts
.byte 0
.byte 0
.byte 0
L0B3A: ldx #$11
L0B3C: dex
bne L0B3C
inc16 $D9
L0B45: sec
sbc #$01
bne L0B3A
rts
L0B4B: ora ($30,x)
plp
bit $20
asl $1C1D,x
.byte $1C
.byte $1C
.byte $1C
.byte $1C
L0B57: bvs L0B85
rol $22
.byte $1F
asl $1C1D,x
.byte $1C
.byte $1C
.byte $1C
.byte $1C
L0B63: lda L0C21
sta $D6
L0B68: ldy #$80
lda #$00
sta $D2
jmp L0B73
L0B71: ldy $D4
L0B73: ldx L0C23
jsr L0AAE
bcc L0B7E
jmp L0C0E
L0B7E: ldx L0C23
jsr L0A2E
.byte $E6
L0B85: .byte $D2
lda $D2
cmp #$10
bcc L0B71
ldy #$0F
sty $D2
lda L0C22
sta L0C25
L0B96: sta L0C26,y
dey
bpl L0B96
lda $D4
sec
sbc #$05
tay
L0BA2: jsr L0C0E
jsr L0C0E
pha
pla
nop
nop
dey
bne L0BA2
ldx L0C23
jsr L096A
bcs L0BF3
lda $D8
beq L0BCE
dec $D4
lda $D4
cmp L0C1F
bcs L0BF3
sec
rts
L0BC6: ldx L0C23
jsr L096A
bcs L0BE8
L0BCE: ldx L0C23
jsr L0907
bcs L0BE8
ldy $D8
lda L0C26,y
bmi L0BE8
lda #$FF
sta L0C26,y
dec $D2
bpl L0BC6
clc
rts
L0BE8: dec L0C25
bne L0BC6
dec $D6
bne L0BF3
sec
rts
L0BF3: lda L0C22
asl a
sta L0C25
L0BFA: ldx L0C23
jsr L096A
bcs L0C08
lda $D8
cmp #$0F
beq L0C0F
L0C08: dec L0C25
bne L0BFA
sec
L0C0E: rts
L0C0F: ldx #$D6
L0C11: jsr L0C0E
jsr L0C0E
bit $00
dex
bne L0C11
jmp L0B68
L0C1F: .byte $0E
L0C20: .byte $1B
L0C21: .byte $03
L0C22: .byte $10
L0C23: .byte 0
L0C24: .byte 0
L0C25: .byte 0
L0C26: .byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
L0C36: .byte 0
L0C37: .byte 0
L0C38: .byte 0
L0C39: .byte 0
.byte $04
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte $02
.byte 0
.byte 0
.byte $13
.byte $02
.byte 0
eor #$0C
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte $03
L0C5A: .byte 0
L0C5B: .byte 0
L0C5C: .byte $1C
L0C5D: .byte 0
L0C5E: .byte 0
L0C5F: sty L0C73
stax L0C74
php
sei
sta ALTZPOFF
lda $C082
jsr MLI
L0C73: .byte 0
L0C74: .byte 0
L0C75: .byte 0
tax
sta ALTZPON
lda LCBANK1
lda LCBANK1
plp
txa
rts
rts
jsr LDF94
sta ALTZPOFF
lda $C082
sta $C05F
sta $C050
sta $C00C
sta $C00F
sta $C000
jsr SETVID
jsr SETKBD
jsr INIT
jsr HOME
jsr MLI
adc $3A
.byte $0C
rts
ldx $D418
lda $D3F7,x
sta L0CEC
and #$0F
beq L0CCC
lda $D3F7,x
jsr L0D26
ldy #$FF
lda (L0006),y
beq L0CCC
cmp #$FF
bne L0CD3
L0CCC: lda L0CEC
jsr L0800
rts
L0CD3: lda L0CEC
jsr L0D26
ldy #$FF
lda (L0006),y
sta L0006
lda #$03
sta $42
lda L0CEC
sta $43
jmp (L0006)
rts
L0CEC: .byte 0
sta L0D24
jsr L0D26
ldy #$07
lda (L0006),y
bne L0D19
ldy #$FB
lda (L0006),y
and #$7F
bne L0D19
ldy #$FF
lda (L0006),y
clc
adc #$03
sta L0006
lda L0D24
jsr L0D51
sta L0D1E
jsr L0D1A
.byte $04
.byte $1D
.byte $0D
L0D19: rts
L0D1A: jmp (L0006)
.byte $03
L0D1E: .byte 0
.byte $22
ora a:$04
.byte 0
L0D24: .byte 0
.byte 0
L0D26: sta L0D50
ldx #$11
lda L0D50
and #$80
beq L0D34
ldx #$21
L0D34: stx L0D47
lda L0D50
and #$70
lsr a
lsr a
lsr a
clc
adc L0D47
sta L0D47
.byte $AD
L0D47: .byte 0
.byte $BF
sta $07
lda #$00
sta L0006
rts
L0D50: .byte 0
L0D51: pha
rol a
pla
php
and #$20
lsr a
lsr a
lsr a
lsr a
plp
adc #$01
rts
ldx $D417
lda $D3F7,x
sta L0C5A
lda #$00
sta L0C5D
sta L0C5E
jsr L12AF
bne L0D8A
lda $1C01
cmp #$E0
beq L0D7F
jmp L0DA4
L0D7F: lda $1C02
cmp #$70
beq L0D90
cmp #$60
beq L0D90
L0D8A: lda #$81
sta $D44D
rts
L0D90: addr_call LDE9F, $1300
addr_call LE0FE, $1300
lda #$C0
sta $D44D
rts
L0DA4: cmp #$A5
bne L0D8A
lda $1C02
cmp #$27
bne L0D8A
lda #$80
sta $D44D
rts
lda #$14
jsr L1133
lda $D417
asl a
tax
lda $D407,x
sta L0EB0
lda $D408,x
sta L0EB1
lsr16 L0EB0
lsr16 L0EB0
lsr16 L0EB0
copy16 L0EB0, $D427
bit $D44D
bmi L0DF6
lda $D451
bne L0DF6
jmp L0E4D
L0DF6: lda #$FF
clc
adc $D427
sta L0006
lda #$13
adc $D428
sta $07
ldy #$00
L0E07: lda #$00
sta (L0006),y
dec L0006
lda L0006
cmp #$FF
bne L0E15
dec $07
L0E15: lda $07
cmp #$14
bne L0E07
lda L0006
cmp #$00
bne L0E07
lda #$00
sta (L0006),y
lda $D428
cmp #$02
bcs L0E2D
rts
L0E2D: lda #$14
sta L0006
lda $D428
pha
L0E35: inc L0006
inc L0006
pla
sec
sbc #$02
pha
bmi L0E46
jsr L0E47
jmp L0E35
L0E46: pla
L0E47: lda L0006
jsr L1133
rts
L0E4D: copy16 #$0006, L0C5D
ldx $D417
lda $D3F7,x
sta L0C5A
copy16 #$1400, L0C5B
jsr L12AF
beq L0E70
.byte 0
L0E70: lda L0EB0
sec
sbc #$00
sta L0EB0
lda L0EB1
sbc #$02
sta L0EB1
lda L0EB1
bpl L0E87
rts
L0E87: lda L0EB0
bne L0E8D
rts
L0E8D: add16 L0C5B, #$0200, L0C5B
inc L0C5D
lda L0C5C
jsr L1133
jsr L12AF
beq L0EAD
.byte 0
L0EAD: jmp L0E70
L0EB0: .byte 0
L0EB1: .byte 0
and #$F0
sta L0ED6
ldx $BF31
L0EBA: lda $BF32,x
and #$F0
cmp L0ED6
beq L0ECA
dex
bpl L0EBA
L0EC7: return #$00
L0ECA: lda $BF32,x
and #$0F
cmp #$0B
bne L0EC7
return #$80
L0ED6: .byte 0
bit $C010
sta L0FE6
and #$FF
bpl L0EFF
copy16 $D424, $D421
lda $D426
sta $D423
ldx $D418
lda $D3F7,x
sta L0C5A
jmp L0F1A
L0EFF: copy16 $D421, $D424
lda $D423
sta $D426
ldx $D417
lda $D3F7,x
sta L0C5A
L0F1A: lda #$07
sta $D420
lda #$00
sta $D41F
sta L0FE4
sta L0FE5
L0F2A: lda $C000
cmp #$9B
bne L0F37
jsr LE6AB
jmp L0F6F
L0F37: bit L0FE4
bmi L0F6C
bit L0FE5
bmi L0F69
jsr L107F
bcc L0F51
bne L0F4C
cpx #$00
beq L0F6C
L0F4C: ldy #$80
sty L0FE4
L0F51: stax L0FE7
jsr L0FE9
bcc L0F72
bne L0F62
cpx #$00
beq L0F69
L0F62: ldy #$80
sty L0FE5
bne L0F72
L0F69: return #$80
L0F6C: return #$00
L0F6F: return #$01
L0F72: stax L0C5D
ldx L0FE8
lda L0FE7
ldy $D41F
cpy #$10
bcs L0F9A
bit L0FE6
bmi L0F92
jsr L1160
bmi L0F6F
jmp L0F2A
L0F92: jsr L11F7
bmi L0F6F
jmp L0F2A
L0F9A: cpy #$1D
bcc L0FB7
cpy #$20
bcs L0FCC
bit L0FE6
bmi L0FAF
jsr L1175
bmi L0F6F
jmp L0F2A
L0FAF: jsr L120C
bmi L0F6F
jmp L0F2A
L0FB7: bit L0FE6
bmi L0FC4
jsr LE766
bmi L0F6F
jmp L0F2A
L0FC4: jsr LE7A8
bmi L0F6F
jmp L0F2A
L0FCC: bit L0FE6
bmi L0FD9
jsr L11AD
bmi L0F6F
jmp L0F2A
L0FD9: jsr L123F
bmi L0FE1
jmp L0F2A
L0FE1: jmp L0F6F
L0FE4: .byte 0
L0FE5: .byte 0
L0FE6: .byte 0
L0FE7: .byte 0
L0FE8: .byte 0
L0FE9: jsr L102A
cpy #$00
bne L0FF6
pha
jsr L0FFF
pla
rts
L0FF6: jsr L0FFF
bcc L0FE9
lda #$00
tax
rts
L0FFF: dec $D423
lda $D423
cmp #$FF
beq L100B
L1009: clc
rts
L100B: lda #$07
sta $D423
inc16 $D421
L1018: lda $D422
cmp $D428
bne L1009
lda $D421
cmp $D427
bne L1009
sec
rts
L102A: lda #$00
clc
adc $D421
sta L0006
lda #$14
adc $D422
sta $07
ldy #$00
lda (L0006),y
ldx $D423
cpx #$00
beq L1048
L1044: lsr a
dex
bne L1044
L1048: and #$01
bne L104F
tay
beq L1051
L104F: ldy #$FF
L1051: lda $D422
sta L1076
lda $D421
asl a
rol L1076
asl a
rol L1076
asl a
rol L1076
ldx $D423
clc
adc L1077,x
pha
lda L1076
adc #$00
tax
pla
rts
L1076: .byte 0
L1077: .byte $07
asl $05
.byte $04
.byte $03
.byte $02
ora ($00,x)
L107F: jsr L10B2
cpy #$00
beq L108C
pha
jsr L1095
pla
rts
L108C: jsr L1095
bcc L107F
lda #$00
tax
rts
L1095: dec $D420
lda $D420
cmp #$FF
beq L10A1
L109F: clc
rts
L10A1: lda #$07
sta $D420
inc $D41F
lda $D41F
cmp #$21
bcc L109F
sec
rts
L10B2: ldx $D41F
lda L12B9,x
ldx $D420
cpx #$00
beq L10C3
L10BF: lsr a
dex
bne L10BF
L10C3: and #$01
bne L10CB
ldy #$00
beq L10CD
L10CB: ldy #$FF
L10CD: lda $D41F
cmp #$10
bcs L10E3
L10D4: asl a
asl a
asl a
asl a
ldx $D420
clc
adc L10F3,x
tax
return #$00
L10E3: cmp #$20
bcs L10ED
sec
sbc #$10
jmp L10D4
L10ED: sec
sbc #$13
jmp L10D4
L10F3: asl L0A0C
php
asl $04
.byte $02
.byte 0
lda #$14
sta L0006
lda #$00
sta L111E
L1104: lda L0006
jsr L111F
inc L0006
inc L0006
inc L111E
inc L111E
lda L111E
cmp $D428
beq L1104
bcc L1104
rts
L111E: .byte 0
L111F: jsr L1149
tay
sec
cpx #$00
beq L112C
L1128: asl a
dex
bne L1128
L112C: ora L12B9,y
sta L12B9,y
rts
L1133: jsr L1149
tay
sec
cpx #$00
beq L1140
L113C: asl a
dex
bne L113C
L1140: eor #$FF
and L12B9,y
sta L12B9,y
rts
L1149: pha
and #$0F
lsr a
tax
lda L1158,x
tax
pla
lsr a
lsr a
lsr a
lsr a
rts
L1158: .byte $07
asl $05
.byte $04
.byte $03
.byte $02
ora ($00,x)
L1160: stax L0C5B
L1166: jsr L12AF
beq L1174
ldx #$00
jsr LE6FD
bmi L1174
bne L1166
L1174: rts
L1175: sta L0006
sta $08
stx $07
stx $09
inc $09
copy16 #$1C00, L0C5B
L1189: jsr L12AF
beq L119A
ldx #$00
jsr LE6FD
beq L119A
bpl L1189
return #$80
L119A: ldy #$FF
iny
L119D: lda $1C00,y
sta (L0006),y
lda $1D00,y
sta ($08),y
iny
bne L119D
return #$00
L11AD: sta L0006
sta $08
stx $07
stx $09
inc $09
copy16 #$1C00, L0C5B
L11C1: jsr L12AF
beq L11D8
ldx #$00
jsr LE6FD
beq L11D8
bpl L11C1
lda LCBANK1
lda LCBANK1
return #$80
L11D8: lda $C083
lda $C083
ldy #$FF
iny
L11E1: lda $1C00,y
sta (L0006),y
lda $1D00,y
sta ($08),y
iny
bne L11E1
lda LCBANK1
lda LCBANK1
return #$00
L11F7: stax L0C5B
L11FD: jsr L12A5
beq L120B
ldx #$80
jsr LE6FD
beq L120B
bpl L11FD
L120B: rts
L120C: sta L0006
sta $08
stx $07
stx $09
inc $09
copy16 #$1C00, L0C5B
ldy #$FF
iny
L1223: lda (L0006),y
sta $1C00,y
lda ($08),y
sta $1D00,y
iny
bne L1223
L1230: jsr L12A5
beq L123E
ldx #$80
jsr LE6FD
beq L123E
bpl L1230
L123E: rts
L123F: bit $C083
bit $C083
sta L0006
sta $08
stx $07
stx $09
inc $09
copy16 #$1C00, L0C5B
ldy #$FF
iny
L125C: lda (L0006),y
sta $1C00,y
lda ($08),y
sta $1D00,y
iny
bne L125C
lda LCBANK1
lda LCBANK1
L126F: jsr L12A5
beq L127D
ldx #$80
jsr LE6FD
beq L127D
bpl L126F
L127D: rts
sta ALTZPOFF
sta $C082
jsr BELL1
sta ALTZPON
lda LCBANK1
lda LCBANK1
rts
yax_call L0C5F, $C5, $0C41
rts
yax_call L0C5F, $C5, $0C45
rts
L12A5: yax_call L0C5F, $81, $0C59
rts
L12AF: yax_call L0C5F, $80, $0C59
rts
L12B9: .byte 0
.byte $3C
.byte 0
.byte 0
.byte $FF
.byte $FF
.byte $FF
.byte $FF
.byte $FF
.byte $FF
.byte $FF
inc a:$00,x
.byte 0
.byte 0
.byte $0F
.byte $FF
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte $FF
.byte $FF
.byte $FF
.byte 0
.byte 0
.byte 0
.byte $7F
.byte $FF
lda $D133
cmp $D18D
bne L12E5
jmp LDAEE
L12E5: cmp $D1C7
bne L12ED
jmp LDB55
L12ED: rts
lda $D18D
sta $D12D
jsr LE137
yax_call LDBE0, $46, $D12D