a2d/desktop/ovl7.s
2018-02-21 19:20:13 -08:00

520 lines
11 KiB
ArmAsm

.setcpu "6502"
.include "apple2.inc"
.include "../inc/apple2.inc"
.include "../inc/auxmem.inc"
.include "../inc/prodos.inc"
.include "../mgtk.inc"
.include "../desktop.inc"
.include "../macros.inc"
;;; ==================================================
;;; Overlay for Selector (part of it, anyway)
;;; ==================================================
.proc selector_overlay
.org $7000
L4030 := $4030
L5106 := $5106
L55BA := $55BA
L5CF7 := $5CF7
L5DED := $5DED
L5E0A := $5E0A
L5E57 := $5E57
L5E6F := $5E6F
L5E87 := $5E87
L5F49 := $5F49
L5F5B := $5F5B
L606D := $606D
L6129 := $6129
L6163 := $6163
L61B1 := $61B1
L62C8 := $62C8
L647C := $647C
L6516 := $6516
L6586 := $6586
L6693 := $6693
L6D27 := $6D27
L6D30 := $6D30
;;; ==================================================
L7000: stx L73A9
sty L73AA
jsr L5CF7
jsr L7101
jsr L70AD
jsr L5E87
lda $D402
beq L7056
lda #$02
ldx #$D4
jsr L6129
ldy $D402
L7021: lda $D402,y
sta $5028,y
dey
bpl L7021
jsr L5F49
ldy $D402
L7030: lda $D402,y
cmp #$2F
beq L7044
dey
cpy #$01
bne L7030
lda #$00
sta $D402
jmp L7056
L7044: ldx #$00
L7046: iny
inx
lda $D402,y
sta L709D,x
cpy $D402
bne L7046
stx L709D
L7056: jsr L5F5B
lda #$00
bcs L706A
addr_call L6516, $709D
sta $D920
jsr L6586
L706A: jsr L6163
jsr L61B1
jsr L606D
lda $D402
bne L707B
jsr L6D30
L707B: lda #$01
sta $D484
lda #$20
sta $D485
jsr L6D27
jsr L6693
lda #$01
sta $D484
lda #$20
sta $D485
lda #$FF
sta $D8EC
jmp L5106
;;; ==================================================
L709D: .res 16, 0
;;; ==================================================
L70AD: ldx L7207
L70B0: lda L7207+1,x
sta $6D1E,x
dex
lda L7207+1,x
sta $6D1E,x
dex
dex
bpl L70B0
lda #$00
sta $51AE
lda #$80
sta $5104
lda #$01
sta $D484
lda #$06
sta $D485
lda $D5B7
jsr L62C8
lda L73A9
jsr L7467
lda L73AA
jsr L747B
lda #$80
sta $5103
lda #$AB
sta $531C
lda #$73
sta $531D
lda #$F4
sta $5B24
lda #$74
sta $5B25
rts
L7101: lda $D5B7
jsr L62C8
lda $D402
beq L7116
addr_call L5E0A, $D729
jmp L711D
L7116: addr_call L5E0A, $D718
L711D: addr_call L5E6F, $D849
MGTK_RELAY_CALL MGTK::SetPenMode, $D202 ; penXOR
MGTK_RELAY_CALL MGTK::FrameRect, $DA9E
MGTK_RELAY_CALL MGTK::FrameRect, $DAAA
addr_call L5E57, $D769
addr_call L5E6F, $D797
MGTK_RELAY_CALL MGTK::MoveTo, $D922
addr_call L5DED, $D7DE
MGTK_RELAY_CALL MGTK::MoveTo, $D926
addr_call L5DED, $D7F6
MGTK_RELAY_CALL MGTK::MoveTo, $D92A
addr_call L5DED, $D802
MGTK_RELAY_CALL MGTK::MoveTo, $D92E
addr_call L5DED, $D814
MGTK_RELAY_CALL MGTK::MoveTo, $D932
addr_call L5DED, $D81F
MGTK_RELAY_CALL MGTK::MoveTo, $D936
addr_call L5DED, $D830
MGTK_RELAY_CALL MGTK::MoveTo, $D93A
addr_call L5DED, $D840
MGTK_RELAY_CALL MGTK::SetPenMode, $D202
MGTK_RELAY_CALL MGTK::FrameRect, $D93E
MGTK_RELAY_CALL MGTK::FrameRect, $D946
MGTK_RELAY_CALL MGTK::FrameRect, $D94E
MGTK_RELAY_CALL MGTK::FrameRect, $D956
MGTK_RELAY_CALL MGTK::FrameRect, $D95E
MGTK_RELAY_CALL MGTK::InitPort, $D239
MGTK_RELAY_CALL MGTK::SetPort, $D239
rts
;;; ==================================================
.byte $00
.macro entry arg1, arg2
.byte arg1
.addr arg2
.endmacro
L7207: .byte $29
entry 0, $725D
entry 0, $732F
entry 0, $6593
entry 0, $664E
entry 0, $6DC2
entry 0, $6DD0
entry 0, $6E1D
entry 0, $69C6
entry 0, $6A18
entry 0, $6A53
entry 0, $6AAC
entry 0, $6B01
entry 0, $6B44
entry 0, $66D8
L7232: .byte $29
L7233: entry 0, $72CD
entry 0, $736C
entry 0, $65F0
entry 0, $6693
entry 0, $6DC9
entry 0, $6DD4
entry 0, $6E31
entry 0, $6B72
entry 0, $6BC4
entry 0, $6BFF
entry 0, $6C58
entry 0, $6CAD
entry 0, $6CF0
entry 0, $684F
;;; ==================================================
lda #$01
sta $D484
lda #$20
sta $D485
jsr L6D27
ldx L7232
L726D: lda L7232+1,x
sta $6D1E,x
dex
lda L7232+1,x
sta $6D1E,x
dex
dex
bpl L726D
lda #$80
sta $51AE
sta $5105
lda $D8F0
sta $D8F1
lda #$00
sta $D8F0
lda $D443
bne L72BF
lda #$00
sta $D443
ldx $D402
beq L72BF
L72A0: lda $D402,x
cmp #$2F
beq L72AD
dex
bne L72A0
jmp L72BF
L72AD: ldy #$00
L72AF: iny
inx
lda $D402,x
sta $D443,y
cpx $D402
bne L72AF
sty $D443
L72BF: lda #$01
sta $D484
lda #$06
sta $D485
jsr L6D27
rts
addr_call L647C, $D402
bne L72E2
lda $D443
beq L72E7
cmp #$0F
bcs L72E8
jmp L72EE
L72E2: lda #$40
jsr L4030
L72E7: rts
L72E8: lda #$FB
jsr L4030
rts
L72EE: MGTK_RELAY_CALL MGTK::InitPort, $D239
MGTK_RELAY_CALL MGTK::SetPort, $D239
MGTK_RELAY_CALL MGTK::CloseWindow, $D5F1
MGTK_RELAY_CALL MGTK::CloseWindow, $D5B7
sta $D8EC
jsr L55BA
lda #$B8
sta $5B24
lda #$59
sta $5B25
ldx $50AA
txs
ldx L73A9
ldy L73AA
lda #$00
rts
MGTK_RELAY_CALL MGTK::InitPort, $D239
MGTK_RELAY_CALL MGTK::SetPort, $D239
MGTK_RELAY_CALL MGTK::CloseWindow, $D5F1
MGTK_RELAY_CALL MGTK::CloseWindow, $D5B7
lda #$00
sta $D8EC
jsr L55BA
lda #$B8
sta $5B24
lda #$59
sta $5B25
ldx $50AA
txs
lda #$FF
rts
lda #$01
sta $D484
lda #$20
sta $D485
jsr L6D27
ldx L7207
L737C: lda L7207+1,x
sta $6D1E,x
dex
lda L7207+1,x
sta $6D1E,x
dex
dex
bpl L737C
lda #$01
sta $D484
lda #$06
sta $D485
jsr L6D27
lda #$00
sta $5105
sta $51AE
lda $D8F1
sta $D8F0
rts
L73A9: .byte 0
L73AA: .byte 0
MGTK_RELAY_CALL MGTK::InRect, $D966
cmp #$80
bne L73BB
jmp L73FE
L73BB: MGTK_RELAY_CALL MGTK::InRect, $D96E
cmp #$80
bne L73CB
jmp L7413
L73CB: MGTK_RELAY_CALL MGTK::InRect, $D976
cmp #$80
bne L73DB
jmp L7428
L73DB: MGTK_RELAY_CALL MGTK::InRect, $D97E
cmp #$80
bne L73EB
jmp L743D
L73EB: MGTK_RELAY_CALL MGTK::InRect, $D986
cmp #$80
bne L73FB
jmp L7452
L73FB: lda #$00
rts
L73FE: lda L73A9
cmp #1
beq L7410
jsr L7467
lda #1
sta L73A9
jsr L7467
L7410: lda #$FF
rts
L7413: lda L73A9
cmp #2
beq L7425
jsr L7467
lda #2
sta L73A9
jsr L7467
L7425: lda #$FF
rts
L7428: lda L73AA
cmp #1
beq L743A
jsr L747B
lda #1
sta L73AA
jsr L747B
L743A: lda #$FF
rts
L743D: lda L73AA
cmp #2
beq L744F
jsr L747B
lda #2
sta L73AA
jsr L747B
L744F: lda #$FF
rts
L7452: lda L73AA
cmp #3
beq L7464
jsr L747B
lda #3
sta L73AA
jsr L747B
L7464: lda #$FF
rts
L7467: cmp #1
bne L7473
addr_call L749B, $D93E
rts
L7473: addr_call L749B, $D946
rts
L747B: cmp #1
bne L7487
addr_call L749B, $D94E
rts
L7487: cmp #2
bne L7493
addr_call L749B, $D956
rts
L7493: addr_call L749B, $D95E
rts
L749B: stax $06
ldy #7
L74A1: lda ($06),y
sta $D98E,y
dey
bpl L74A1
lda $D98E
clc
adc #2
sta $D98E
bcc L74B7
inc $D98F
L74B7: lda $D990
clc
adc #2
sta $D990
bcc L74C5
inc $D991
L74C5: lda $D992
sec
sbc #2
sta $D992
bcs L74D3
dec $D993
L74D3: lda $D994
sec
sbc #2
sta $D994
bcs L74E1
dec $D995
L74E1: MGTK_RELAY_CALL MGTK::SetPenMode, $D202
MGTK_RELAY_CALL MGTK::PaintRect, $D98E
rts
lda $D5B7
jsr L62C8
lda $D20A
bne L7500
rts
L7500: lda $D209
and #$7F
cmp #'1'
bne L750C
jmp L73FE
L750C: cmp #'2'
bne L7513
jmp L7413
L7513: cmp #'3'
bne L751A
jmp L7428
L751A: cmp #'4'
bne L7521
jmp L743D
L7521: cmp #'5'
bne L7528
jmp L7452
L7528: rts
PAD_TO $7800
.endproc