a2d/desktop/ovl4.s
2018-03-01 18:25:42 -08:00

2882 lines
60 KiB
ArmAsm

.setcpu "6502"
;;; NB: Compiled as part of ovl34567.s
;;; ==================================================
;;; Overlay for Common Routines (Selector, File Copy/Delete)
;;; ==================================================
.org $5000
.proc common_overlay
;;; ============================================================
L5000: jmp L50B1
DEFINE_ON_LINE_PARAMS on_line_params,, on_line_buffer
DEFINE_OPEN_PARAMS open_params, path_buf, $1000
DEFINE_READ_PARAMS read_params, $1400, $200
DEFINE_CLOSE_PARAMS close_params
on_line_buffer: .res 16, 0
L5027: .byte $00
path_buf: .res 128, 0
L50A8: .byte $00
L50A9: .byte $00
;;; ==================================================
stash_stack: .byte 0
routine_table: .addr $7000, $7000, $7000
.proc L50B1
sty stash_y
stx stash_x
tsx
stx stash_stack
pha
lda #0
sta L5027
sta L50A8
sta $D8EB
sta $D8EC
sta $D8F0
sta $D8F1
sta $D8F2
sta L5606
sta L5104
sta L5103
sta L5105
lda #$14
sta $D8E9
lda #$FF
sta $D920
pla
asl a
tax
copy16 routine_table,x, jump
ldy stash_y
ldx stash_x
jump := * + 1
jmp dummy1234
stash_x: .byte 0
stash_y: .byte 0
.endproc
;;; ==================================================
L5103: .byte 0
L5104: .byte 0
L5105: .byte 0
;;; ==================================================
L5106: bit $D8EC
bpl :+
dec $D8E9
bne :+
jsr L6D24
lda #$14
sta $D8E9
: MGTK_RELAY_CALL MGTK::GetEvent, event_params
lda event_kind
cmp #MGTK::event_kind_button_down
bne :+
jsr L51AF
jmp L5106
: cmp #MGTK::event_kind_key_down
bne :+
jsr L59B9
: MGTK_RELAY_CALL MGTK::FindWindow, findwindow_params
lda findwindow_which_area
bne :+
jmp L5106
: lda findwindow_window_id
cmp $D5B7
beq L5151
jmp L5106
L5151: lda $D5B7
jsr L62C8
lda $D5B7
sta screentowindow_window_id
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
bit L51AE
bmi L5183
MGTK_RELAY_CALL MGTK::InRect, $DA9E
cmp #MGTK::inrect_inside
bne L5196
beq L5190
L5183: MGTK_RELAY_CALL MGTK::InRect, $DAAA
cmp #MGTK::inrect_inside
bne L5196
L5190: jsr L55E0
jmp L5199
L5196: jsr L55BA
L5199: MGTK_RELAY_CALL MGTK::InitPort, $D239
MGTK_RELAY_CALL MGTK::SetPort, $D239
jmp L5106
L51AE: .byte 0
L51AF: MGTK_RELAY_CALL MGTK::FindWindow, findwindow_params
lda findwindow_which_area
bne L51BE
rts
L51BE: cmp #$02
bne L51C6
jmp L51C7
rts
L51C6: rts
L51C7: lda $D20E
cmp $D5B7
beq L51D2
jmp L531F
L51D2: lda $D5B7
jsr L62C8
lda $D5B7
sta screentowindow_window_id
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
MGTK_RELAY_CALL MGTK::InRect, $D9E0
cmp #MGTK::inrect_inside
beq L5200
jmp L5239
L5200: bit L5105
bmi L520A
lda $D920
bpl L520D
L520A: jmp L5308
L520D: tax
lda $1780,x
bmi L5216
L5213: jmp L5308
L5216: lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9E0
jsr L5888
bmi L5213
jsr L5607
jmp L5308
L5239: MGTK_RELAY_CALL MGTK::InRect, $D9F0
cmp #MGTK::inrect_inside
beq L5249
jmp L526B
L5249: bit L5105
bmi L5268
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9F0
jsr L590E
bmi L5268
jsr L565C
L5268: jmp L5308
L526B: MGTK_RELAY_CALL MGTK::InRect, $D9D0
cmp #MGTK::inrect_inside
beq L527B
jmp L529D
L527B: bit L5105
bmi L529A
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9D0
jsr L577C
bmi L529A
jsr L567F
L529A: jmp L5308
L529D: MGTK_RELAY_CALL MGTK::InRect, $D9D8
cmp #MGTK::inrect_inside
beq L52AD
jmp L52CD
L52AD: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9D8
jsr L56F6
bmi L52CA
jsr L6D42
jsr L6D1E
L52CA: jmp L5308
L52CD: MGTK_RELAY_CALL MGTK::InRect, $D9E8
cmp #MGTK::inrect_inside
beq L52DD
jmp L52FA
L52DD: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9E8
jsr L5802
bmi L52F7
jsr L6D21
L52F7: jmp L5308
L52FA: bit L5103
bpl L5304
jsr L531B
bmi L5308
L5304: jsr L6D45
rts
L5308: MGTK_RELAY_CALL MGTK::InitPort, $D239
MGTK_RELAY_CALL MGTK::SetPort, $D215
rts
L531B: jsr L59B8
rts
L531F: bit L5105
bmi L5340
MGTK_RELAY_CALL MGTK::FindControl, findcontrol_params
lda findcontrol_which_ctl
beq L5341
cmp #MGTK::ctl_vertical_scroll_bar
bne L5340
lda $D5F6
and #$01
beq L5340
jmp L5469
L5340: rts
L5341: lda $D5F1
sta screentowindow_window_id
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
add16 screentowindow_windowy, $D60F, screentowindow_windowy
lsr16 screentowindow_windowy
lsr16 screentowindow_windowy
lsr16 screentowindow_windowy
lda $D920
cmp screentowindow_windowy
beq L5380
jmp L542F
L5380: jsr L5C4F
beq L5386
rts
L5386: ldx $D920
lda $1780,x
bmi L53B5
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9D8
MGTK_RELAY_CALL MGTK::PaintRect, $D9D8
jsr L6D1E
jmp L5340
L53B5: and #$7F
pha
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9E0
MGTK_RELAY_CALL MGTK::PaintRect, $D9E0
lda #$00
sta L542E
copy16 #$1800, $08
pla
asl a
rol L542E
asl a
rol L542E
asl a
rol L542E
asl a
rol L542E
clc
adc $08
sta $08
lda L542E
adc $09
sta $09
ldx $09
lda $08
jsr L5F0D
jsr L5F5B
jsr L6161
lda #$00
jsr L6227
jsr L61B1
jsr L606D
MGTK_RELAY_CALL MGTK::InitPort, $D239
MGTK_RELAY_CALL MGTK::SetPort, $D215
rts
L542E: .byte 0
L542F: lda $D20F
cmp $177F
bcc L5438
rts
L5438: lda $D920
bmi L5446
jsr L6D2A
lda $D920
jsr L6274
L5446: lda $D20F
sta $D920
bit $D8F0
bpl L5457
jsr L6D30
jsr L6D27
L5457: lda $D920
jsr L6274
jsr L6D2D
jsr L5C4F
bmi L5468
jmp L5386
L5468: rts
L5469: lda $D20E
cmp #$01
bne L5473
jmp L550A
L5473: cmp #$02
bne L547A
jmp L5533
L547A: cmp #$03
bne L5481
jmp L54BA
L5481: cmp #$04
bne L5488
jmp L54DF
L5488: lda #MGTK::ctl_vertical_scroll_bar
sta trackthumb_params
MGTK_RELAY_CALL MGTK::TrackThumb, trackthumb_params
lda trackthumb_thumbmoved
bne :+
rts
: lda trackthumb_thumbpos
sta updatethumb_thumbpos
lda #MGTK::ctl_vertical_scroll_bar
sta updatethumb_which_ctl
MGTK_RELAY_CALL MGTK::UpdateThumb, updatethumb_params
lda $D20D
jsr L6227
jsr L606D
rts
L54BA: lda $D5FA
sec
sbc #$09
bpl L54C4
lda #$00
L54C4: sta updatethumb_thumbpos
lda #MGTK::ctl_vertical_scroll_bar
sta updatethumb_which_ctl
MGTK_RELAY_CALL MGTK::UpdateThumb, updatethumb_params
lda updatethumb_thumbpos
jsr L6227
jsr L606D
rts
L54DF: lda $D5FA
clc
adc #$09
cmp $177F
beq L54EF
bcc L54EF
lda $177F
L54EF: sta updatethumb_thumbpos
lda #MGTK::ctl_vertical_scroll_bar
sta updatethumb_which_ctl
MGTK_RELAY_CALL MGTK::UpdateThumb, updatethumb_params
lda updatethumb_thumbpos
jsr L6227
jsr L606D
rts
L550A: lda $D5FA
bne L5510
rts
L5510: sec
sbc #$01
sta updatethumb_thumbpos
lda #MGTK::ctl_vertical_scroll_bar
sta updatethumb_which_ctl
MGTK_RELAY_CALL MGTK::UpdateThumb, updatethumb_params
lda updatethumb_thumbpos
jsr L6227
jsr L606D
jsr L555F
jmp L550A
L5533: lda $D5FA
cmp $D5F9
bne L553C
rts
L553C: clc
adc #$01
sta updatethumb_thumbpos
lda #MGTK::ctl_vertical_scroll_bar
sta updatethumb_which_ctl
MGTK_RELAY_CALL MGTK::UpdateThumb, updatethumb_params
lda updatethumb_thumbpos
jsr L6227
jsr L606D
jsr L555F
jmp L5533
L555F: MGTK_RELAY_CALL MGTK::PeekEvent, event_params
lda event_kind
cmp #MGTK::event_kind_button_down
beq L5576
cmp #MGTK::event_kind_drag
beq L5576
pla
pla
rts
L5576: MGTK_RELAY_CALL MGTK::GetEvent, event_params
MGTK_RELAY_CALL MGTK::FindWindow, findwindow_params
lda findwindow_window_id
cmp $D5F1
beq :+
pla
pla
rts
: lda findwindow_which_area
cmp #MGTK::area_content
beq :+
pla
pla
rts
: MGTK_RELAY_CALL MGTK::FindControl, findcontrol_params
lda findcontrol_which_ctl
cmp #MGTK::ctl_vertical_scroll_bar
beq :+
pla
pla
rts
: lda findcontrol_which_part
cmp #MGTK::part_page_up
bcc L55B9
pla
pla
L55B9: rts
;;; ==================================================
L55BA: bit L5606
bpl L55DF
MGTK_RELAY_CALL MGTK::HideCursor
MGTK_RELAY_CALL MGTK::SetCursor, $D2AD
MGTK_RELAY_CALL MGTK::ShowCursor
lda #$00
sta L5606
L55DF: rts
L55E0: bit L5606
bmi L5605
MGTK_RELAY_CALL MGTK::HideCursor
MGTK_RELAY_CALL MGTK::SetCursor, $D2DF
MGTK_RELAY_CALL MGTK::ShowCursor
lda #$80
sta L5606
L5605: rts
L5606: .byte 0
L5607: ldx $D920
lda $1780,x
and #$7F
pha
bit $D8F0
bpl L5618
jsr L6D30
L5618: lda #$00
sta L565B
copy16 #$1800, $08
pla
asl a
rol L565B
asl a
rol L565B
asl a
rol L565B
asl a
rol L565B
clc
adc $08
sta $08
lda L565B
adc $09
sta $09
ldx $09
lda $08
jsr L5F0D
jsr L5F5B
jsr L6161
lda #$00
jsr L6227
jsr L61B1
jsr L606D
rts
L565B: .byte 0
L565C: lda #$FF
sta $D920
jsr L5EB8
jsr L5E87
jsr L5F5B
jsr L6161
lda #$00
jsr L6227
jsr L61B1
jsr L606D
jsr L6D30
jsr L6D27
rts
L567F: lda #$00
sta L56E2
ldx path_buf
bne L568C
jmp L56E1
L568C: lda path_buf,x
and #$7F
cmp #$2F
beq L569B
dex
bpl L568C
jmp L56E1
L569B: cpx #$01
bne L56A2
jmp L56E1
L56A2: jsr L5F49
lda $D920
pha
lda #$FF
sta $D920
jsr L5F5B
jsr L6161
lda #$00
jsr L6227
jsr L61B1
jsr L606D
pla
sta $D920
bit L56E2
bmi L56D6
jsr L6D2A
lda $D920
bmi L56DC
jsr L6D2A
jmp L56DC
L56D6: jsr L6D30
jsr L6D27
L56DC: lda #$FF
sta $D920
L56E1: rts
L56E2: .byte 0
L56E3: MGTK_RELAY_CALL MGTK::InitPort, $D239
MGTK_RELAY_CALL MGTK::SetPort, $D239
rts
L56F6: lda #$00
sta L577B
L56FB: MGTK_RELAY_CALL MGTK::GetEvent, event_params
lda event_kind
cmp #MGTK::event_kind_button_up
beq L575E
lda $D5B7
sta screentowindow_window_id
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
MGTK_RELAY_CALL MGTK::InRect, $D9D8
cmp #MGTK::inrect_inside
beq L5738
lda L577B
beq L5740
jmp L56FB
L5738: lda L577B
bne L5740
jmp L56FB
L5740: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9D8
lda L577B
clc
adc #$80
sta L577B
jmp L56FB
L575E: lda L577B
beq L5766
return #$FF
L5766: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9D8
return #$00
L577B: .byte 0
L577C: lda #$00
sta L5801
L5781: MGTK_RELAY_CALL MGTK::GetEvent, event_params
lda event_kind
cmp #MGTK::event_kind_button_up
beq L57E4
lda $D5B7
sta screentowindow_window_id
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
MGTK_RELAY_CALL MGTK::InRect, $D9D0
cmp #MGTK::inrect_inside
beq L57BE
lda L5801
beq L57C6
jmp L5781
L57BE: lda L5801
bne L57C6
jmp L5781
L57C6: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9D0
lda L5801
clc
adc #$80
sta L5801
jmp L5781
L57E4: lda L5801
beq L57EC
return #$FF
L57EC: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9D0
return #$00
L5801: .byte 0
L5802: lda #$00
sta L5887
L5807: MGTK_RELAY_CALL MGTK::GetEvent, event_params
lda event_kind
cmp #MGTK::event_kind_button_up
beq L586A
lda $D5B7
sta screentowindow_window_id
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
MGTK_RELAY_CALL MGTK::InRect, $D9E8
cmp #MGTK::inrect_inside
beq L5844
lda L5887
beq L584C
jmp L5807
L5844: lda L5887
bne L584C
jmp L5807
L584C: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9E8
lda L5887
clc
adc #$80
sta L5887
jmp L5807
L586A: lda L5887
beq L5872
return #$FF
L5872: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9E8
return #$01
L5887: .byte 0
L5888: lda #$00
sta L590D
L588D: MGTK_RELAY_CALL MGTK::GetEvent, event_params
lda event_kind
cmp #MGTK::event_kind_button_up
beq L58F0
lda $D5B7
sta screentowindow_window_id
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
MGTK_RELAY_CALL MGTK::InRect, $D9E0
cmp #MGTK::inrect_inside
beq L58CA
lda L590D
beq L58D2
jmp L588D
L58CA: lda L590D
bne L58D2
jmp L588D
L58D2: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9E0
lda L590D
clc
adc #$80
sta L590D
jmp L588D
L58F0: lda L590D
beq L58F8
return #$FF
L58F8: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9E0
return #$00
L590D: .byte 0
L590E: lda #$00
sta L5993
L5913: MGTK_RELAY_CALL MGTK::GetEvent, event_params
lda event_kind
cmp #MGTK::event_kind_button_up
beq L5976
lda $D5B7
sta screentowindow_window_id
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
MGTK_RELAY_CALL MGTK::InRect, $D9F0
cmp #MGTK::inrect_inside
beq L5950
lda L5993
beq L5958
jmp L5913
L5950: lda L5993
bne L5958
jmp L5913
L5958: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9F0
lda L5993
clc
adc #$80
sta L5993
jmp L5913
L5976: lda L5993
beq L597E
return #$FF
L597E: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9F0
return #$01
L5993: .byte 0
.proc MLI_RELAY
sty call
stax params
php
sei
sta ALTZPOFF
lda ROMIN2
jsr MLI
call: .byte 0
params: .addr 0
sta ALTZPON
tax
lda LCBANK1
lda LCBANK1
plp
txa
rts
.endproc
L59B8: rts
L59B9: lda $D20A
beq L59F7
lda $D209
and #$7F
cmp #$08
bne L59CA
jmp L6D3F
L59CA: cmp #$15
bne L59D1
jmp L6D42
L59D1: bit L5105
bmi L59E4
cmp #$0A
bne L59DD
jmp L5C0E
L59DD: cmp #$0B
bne L59E4
jmp L5BF6
L59E4: cmp #$30
bcc L59EF
cmp #$3A
bcs L59EF
jmp L5B23
L59EF: bit L5105
bmi L5A4F
jmp L5B70
L59F7: lda $D209
and #$7F
cmp #$08
bne L5A03
jmp L6D39
L5A03: cmp #$15
bne L5A0A
jmp L6D3C
L5A0A: cmp #$0D
bne L5A11
jmp L5ACC
L5A11: cmp #$1B
bne L5A18
jmp L5AF7
L5A18: cmp #$7F
bne L5A1F
jmp L5B1F
L5A1F: bit L5105
bpl L5A27
jmp L5AC4
L5A27: cmp #$09
bne L5A52
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9F0
MGTK_RELAY_CALL MGTK::PaintRect, $D9F0
jsr L565C
L5A4F: jmp L5AC8
L5A52: cmp #$0F
bne L5A8B
lda $D920
bmi L5AC8
tax
lda $1780,x
bmi L5A64
jmp L5AC8
L5A64: lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9E0
MGTK_RELAY_CALL MGTK::PaintRect, $D9E0
jsr L5607
jmp L5AC8
L5A8B: cmp #$03
bne L5AB6
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9D0
MGTK_RELAY_CALL MGTK::PaintRect, $D9D0
jsr L567F
jmp L5AC8
L5AB6: cmp #$0A
bne L5ABD
jmp L5B26
L5ABD: cmp #$0B
bne L5AC4
jmp L5B4C
L5AC4: jsr L6D33
rts
L5AC8: jsr L56E3
rts
L5ACC: lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9D8
MGTK_RELAY_CALL MGTK::PaintRect, $D9D8
jsr L6D42
jsr L6D1E
jsr L56E3
rts
L5AF7: lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D9E8
MGTK_RELAY_CALL MGTK::PaintRect, $D9E8
jsr L6D21
jsr L56E3
rts
L5B1F: jsr L6D36
rts
L5B23: jmp L59B8
L5B26: lda $177F
beq L5B37
lda $D920
bmi L5B47
tax
inx
cpx $177F
bcc L5B38
L5B37: rts
L5B38: jsr L6274
jsr L6D2A
inc $D920
lda $D920
jmp L5C2F
L5B47: lda #$00
jmp L5C2F
L5B4C: lda $177F
beq L5B58
lda $D920
bmi L5B68
bne L5B59
L5B58: rts
L5B59: jsr L6274
jsr L6D2A
dec $D920
lda $D920
jmp L5C2F
L5B68: ldx $177F
dex
txa
jmp L5C2F
L5B70: cmp #$41
bcs L5B75
L5B74: rts
L5B75: cmp #$5B
bcc L5B83
cmp #$61
bcc L5B74
cmp #$7B
bcs L5B74
and #$5F
L5B83: jsr L5B9D
bmi L5B74
cmp $D920
beq L5B74
pha
lda $D920
bmi L5B99
jsr L6274
jsr L6D2A
L5B99: pla
jmp L5C2F
L5B9D: sta L5BF5
lda #$00
sta L5BF3
L5BA5: lda L5BF3
cmp $177F
beq L5BC4
jsr L5BCB
ldy #$01
lda ($06),y
cmp L5BF5
bcc L5BBE
beq L5BC7
jmp L5BC4
L5BBE: inc L5BF3
jmp L5BA5
L5BC4: return #$FF
L5BC7: return L5BF3
L5BCB: tax
lda $1780,x
and #$7F
ldx #$00
stx L5BF4
asl a
rol L5BF4
asl a
rol L5BF4
asl a
rol L5BF4
asl a
rol L5BF4
clc
adc #$00
sta $06
lda L5BF4
adc #$18
sta $07
rts
L5BF3: .byte 0
L5BF4: .byte 0
L5BF5: .byte 0
L5BF6: lda $177F
beq L5C02
lda $D920
bmi L5C09
bne L5C03
L5C02: rts
L5C03: jsr L6274
jsr L6D2A
L5C09: lda #$00
jmp L5C2F
L5C0E: lda $177F
beq L5C1E
ldx $D920
bmi L5C27
inx
cpx $177F
bne L5C1F
L5C1E: rts
L5C1F: dex
txa
jsr L6274
jsr L6D2A
L5C27: ldx $177F
dex
txa
jmp L5C2F
L5C2F: sta $D920
jsr L6D2D
lda $D920
jsr L6586
jsr L6163
jsr L606D
copy16 #$2001, $D484
jsr L6D27
rts
L5C4F: ldx #$03
L5C51: lda $D209,x
sta L5CF0,x
dex
bpl L5C51
lda $D2AB
sta L5CEF
L5C60: dec L5CEF
beq L5CA6
MGTK_RELAY_CALL MGTK::PeekEvent, event_params
jsr L5CA9
bmi L5CA6
lda #$FF
sta L5CF6
lda $D208
sta L5CF5
cmp #$00
beq L5C60
cmp #$04
beq L5C60
cmp #$02
bne L5C96
MGTK_RELAY_CALL MGTK::GetEvent, event_params
jmp L5C60
L5C96: cmp #$01
bne L5CA6
MGTK_RELAY_CALL MGTK::GetEvent, event_params
return #$00
L5CA6: return #$FF
L5CA9: lda $D209
sec
sbc L5CF0
sta L5CF4
lda $D20A
sbc L5CF1
bpl L5CC5
lda L5CF4
cmp #$FB
bcs L5CCC
L5CC2: return #$FF
L5CC5: lda L5CF4
cmp #$05
bcs L5CC2
L5CCC: lda $D20B
sec
sbc L5CF2
sta L5CF4
lda $D20C
sbc L5CF3
bpl L5CE5
lda L5CF4
cmp #$FC
bcs L5CEC
L5CE5: lda L5CF4
cmp #$04
bcs L5CC2
L5CEC: return #$00
L5CEF: .byte 0
L5CF0: .byte 0
L5CF1: .byte 0
L5CF2: .byte 0
L5CF3: .byte 0
L5CF4: .byte 0
L5CF5: .byte 0
L5CF6: .byte 0
;;; ==================================================
L5CF7: MGTK_RELAY_CALL MGTK::OpenWindow, $D5B7
MGTK_RELAY_CALL MGTK::OpenWindow, $D5F1
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::FrameRect, $D9C0
MGTK_RELAY_CALL MGTK::FrameRect, $D9D8
MGTK_RELAY_CALL MGTK::FrameRect, $D9E0
MGTK_RELAY_CALL MGTK::FrameRect, $D9D0
MGTK_RELAY_CALL MGTK::FrameRect, $D9E8
MGTK_RELAY_CALL MGTK::FrameRect, $D9F0
jsr L5D82
jsr L5D93
jsr L5DA4
jsr L5DB5
jsr L5DC6
MGTK_RELAY_CALL MGTK::MoveTo, $D9F8
MGTK_RELAY_CALL MGTK::LineTo, $D9FC
MGTK_RELAY_CALL MGTK::InitPort, $D239
MGTK_RELAY_CALL MGTK::SetPort, $D239
rts
L5D82: MGTK_RELAY_CALL MGTK::MoveTo, $DA03
addr_call L5DED, $DA07
rts
L5D93: MGTK_RELAY_CALL MGTK::MoveTo, $DA21
addr_call L5DED, $DA25
rts
L5DA4: MGTK_RELAY_CALL MGTK::MoveTo, $DA17
addr_call L5DED, $DA1B
rts
L5DB5: MGTK_RELAY_CALL MGTK::MoveTo, $DA2A
addr_call L5DED, $DA2E
rts
L5DC6: MGTK_RELAY_CALL MGTK::MoveTo, $DA40
addr_call L5DED, $DA44
rts
L5DD7: stax $06
ldy #$00
lda ($06),y
tay
L5DE0: lda ($06),y
sta $D380,y
dey
bpl L5DE0
ldax #$D380
rts
;;; ==================================================
L5DED: jsr L5DD7
stax $06
ldy #$00
lda ($06),y
sta $08
inc16 $06
MGTK_RELAY_CALL MGTK::DrawText, $06
rts
;;; ==================================================
L5E0A: jsr L5DD7
stax $06
ldy #$00
lda ($06),y
sta $08
inc16 $06
MGTK_RELAY_CALL MGTK::TextWidth, $06
lsr16 $09
lda #$01
sta L5E56
lda #$F4
lsr L5E56
ror a
sec
sbc $09
sta $D90B
lda L5E56
sbc $0A
sta $D90C
MGTK_RELAY_CALL MGTK::MoveTo, $D90B
MGTK_RELAY_CALL MGTK::DrawText, $06
rts
L5E56: .byte 0
;;; ==================================================
L5E57: jsr L5DD7
stax $06
MGTK_RELAY_CALL MGTK::MoveTo, $DA55
lda $06
ldx $07
jsr L5DED
rts
;;; ==================================================
L5E6F: jsr L5DD7
stax $06
MGTK_RELAY_CALL MGTK::MoveTo, $DA59
lda $06
ldx $07
jsr L5DED
rts
;;; ==================================================
L5E87: ldx L5027
lda DEVLST,x
and #$F0
sta on_line_params::unit_num
yax_call MLI_RELAY, ON_LINE, on_line_params
lda on_line_buffer
and #$0F
sta on_line_buffer
bne L5EAB
jsr L5EB8
jmp L5E87
L5EAB: lda #$00
sta path_buf
addr_call L5F0D, on_line_buffer
rts
L5EB8: inc L5027
lda L5027
cmp DEVCNT
beq L5ECA
bcc L5ECA
lda #$00
sta L5027
L5ECA: rts
L5ECB: lda #$00
sta L5F0C
L5ED0: yax_call MLI_RELAY, OPEN, open_params
beq L5EE9
jsr L5E87
lda #$FF
sta $D920
sta L5F0C
jmp L5ED0
L5EE9: lda open_params::ref_num
sta read_params::ref_num
sta close_params::ref_num
yax_call MLI_RELAY, READ, read_params
beq L5F0B
jsr L5E87
lda #$FF
sta $D920
sta L5F0C
jmp L5ED0
L5F0B: rts
L5F0C: .byte 0
L5F0D: jsr L5DD7
stax $06
ldx path_buf
lda #$2F
sta path_buf+1,x
inc path_buf
ldy #$00
lda ($06),y
tay
clc
adc path_buf
cmp #$41
bcc L5F2F
return #$FF
L5F2F: pha
tax
L5F31: lda ($06),y
sta path_buf,x
dey
dex
cpx path_buf
bne L5F31
pla
sta path_buf
lda #$FF
sta $D920
return #$00
;;; ==================================================
L5F49: ldx path_buf
cpx #$00
beq L5F5A
dec path_buf
lda path_buf,x
cmp #$2F
bne L5F49
L5F5A: rts
;;; ==================================================
L5F5B: jsr L5ECB
lda #$00
sta L6067
sta L6068
sta L50A9
lda #$01
sta L6069
copy16 $1423, L606A
lda $1425
and #$7F
sta $177F
bne L5F87
jmp L6012
L5F87: copy16 #$142B, $06
L5F8F: ldy #$00
lda ($06),y
and #$0F
bne L5F9A
jmp L6007
L5F9A: ldx L6067
txa
sta $1780,x
ldy #$00
lda ($06),y
and #$F0
cmp #$D0
beq L5FB6
bit L50A8
bpl L5FC1
inc L6068
jmp L6007
L5FB6: lda $1780,x
ora #$80
sta $1780,x
inc L50A9
L5FC1: ldy #$00
lda ($06),y
and #$0F
sta ($06),y
copy16 #$1800, $08
lda #$00
sta L606C
lda L6067
asl a
rol L606C
asl a
rol L606C
asl a
rol L606C
asl a
rol L606C
clc
adc $08
sta $08
lda L606C
adc $09
sta $09
ldy #$00
lda ($06),y
tay
L5FFA: lda ($06),y
sta ($08),y
dey
bpl L5FFA
inc L6067
inc L6068
L6007: inc L6069
lda L6068
cmp $177F
bne L6035
L6012: yax_call MLI_RELAY, CLOSE, close_params
bit L50A8
bpl L6026
lda L50A9
sta $177F
L6026: jsr L62DE
jsr L64E2
lda L5F0C
bpl L6033
sec
rts
L6033: clc
rts
L6035: lda L6069
cmp L606B
beq L604E
lda $06
clc
adc L606A
sta $06
lda $07
adc #$00
sta $07
jmp L5F8F
L604E: yax_call MLI_RELAY, READ, read_params
copy16 #$1404, $06
lda #$00
sta L6069
jmp L5F8F
L6067: .byte 0
L6068: .byte 0
L6069: .byte 0
L606A: .byte 0
L606B: .byte 0
L606C: .byte 0
;;; ==================================================
L606D: lda $D5F1
jsr L62C8
MGTK_RELAY_CALL MGTK::PaintRect, $D60D
lda #$10
sta $D917
lda #$08
sta $D919
lda #$00
sta $D91A
sta L6128
L608E: lda L6128
cmp $177F
bne L60A9
MGTK_RELAY_CALL MGTK::InitPort, $D239
MGTK_RELAY_CALL MGTK::SetPort, $D239
rts
L60A9: MGTK_RELAY_CALL MGTK::MoveTo, $D917
ldx L6128
lda $1780,x
and #$7F
ldx #$00
stx L6127
asl a
rol L6127
asl a
rol L6127
asl a
rol L6127
asl a
rol L6127
clc
adc #$00
tay
lda L6127
adc #$18
tax
tya
jsr L5DED
ldx L6128
lda $1780,x
bpl L60FF
lda #$01
sta $D917
MGTK_RELAY_CALL MGTK::MoveTo, $D917
addr_call L5DED, $D91D
lda #$10
sta $D917
L60FF: lda L6128
cmp $D920
bne L6110
jsr L6274
lda $D5F1
jsr L62C8
L6110: inc L6128
add16 $D919, #8, $D919
jmp L608E
L6127: .byte 0
L6128: .byte 0
;;; ==================================================
L6129: stx $0B
sta $0A
ldy #$00
lda ($0A),y
tay
bne L6135
rts
L6135: dey
beq L613A
bpl L613B
L613A: rts
L613B: lda ($0A),y
and #$7F
cmp #$2F
beq L6147
cmp #$2E
bne L614B
L6147: dey
jmp L6135
L614B: iny
lda ($0A),y
and #$7F
cmp #$41
bcc L615D
cmp #$5B
bcs L615D
clc
adc #$20
sta ($0A),y
L615D: dey
jmp L6135
;;; ==================================================
L6161: lda #$00
L6163: sta L61B0
lda $177F
cmp #$0A
bcs L6181
lda #MGTK::ctl_vertical_scroll_bar
sta activatectl_which_ctl
lda #MGTK::activatectl_deactivate
sta activatectl_activate
MGTK_RELAY_CALL MGTK::ActivateCtl, activatectl_params
rts
L6181: lda $177F
sta $D5F9
.assert MGTK::ctl_vertical_scroll_bar = MGTK::activatectl_activate, error, "need to match"
lda #MGTK::ctl_vertical_scroll_bar
sta activatectl_which_ctl
sta activatectl_activate
MGTK_RELAY_CALL MGTK::ActivateCtl, activatectl_params
lda L61B0
sta updatethumb_thumbpos
jsr L6227
lda #MGTK::ctl_vertical_scroll_bar
sta updatethumb_which_ctl
MGTK_RELAY_CALL MGTK::UpdateThumb, updatethumb_params
rts
L61B0: .byte 0
;;; ==================================================
L61B1: lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::PaintRect, $D9C8
copy16 #path_buf, $06
ldy #$00
lda ($06),y
sta L6226
iny
L61D0: iny
lda ($06),y
cmp #$2F
beq L61DE
cpy L6226
bne L61D0
beq L61E2
L61DE: dey
sty L6226
L61E2: ldy #$00
ldx #$00
L61E6: inx
iny
lda ($06),y
sta $0220,x
cpy L6226
bne L61E6
stx $0220
addr_call L6129, $0220
MGTK_RELAY_CALL MGTK::MoveTo, $DA51
addr_call L5DED, $DA5F
addr_call L5DED, $0220
MGTK_RELAY_CALL MGTK::InitPort, $D239
MGTK_RELAY_CALL MGTK::SetPort, $D239
rts
L6226: .byte 0
;;; ==================================================
L6227: sta L6273
clc
adc #$09
cmp $177F
beq L6234
bcs L623A
L6234: lda L6273
jmp L624A
L623A: lda $177F
cmp #$0A
bcs L6247
lda L6273
jmp L624A
L6247: sec
sbc #$09
L624A: ldx #$00
stx L6273
asl a
rol L6273
asl a
rol L6273
asl a
rol L6273
sta $D60F
ldx L6273
stx $D610
clc
adc #$46
sta $D613
lda L6273
adc #$00
sta $D614
rts
L6273: .byte 0
L6274: ldx #$00
stx L62C7
asl a
rol L62C7
asl a
rol L62C7
asl a
rol L62C7
sta $D911
ldx L62C7
stx $D912
clc
adc #$07
sta $D915
lda L62C7
adc #$00
sta $D916
lda $D5F1
jsr L62C8
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::PaintRect, $D90F
MGTK_RELAY_CALL MGTK::InitPort, $D239
MGTK_RELAY_CALL MGTK::SetPort, $D239
rts
L62C7: .byte 0
;;; ==================================================
L62C8: sta $D212
MGTK_RELAY_CALL MGTK::GetWinPort, $D212
MGTK_RELAY_CALL MGTK::SetPort, $D215
rts
L62DE: ldax #$0F5A
L62E2: sta L63C2,x
dex
bpl L62E2
lda #$00
sta L63BF
sta L63BE
L62F0: lda L63BF
cmp $177F
bne L62FB
jmp L6377
L62FB: lda L63BE
jsr L6451
ldy #$00
lda ($06),y
bmi L633D
and #$0F
sta L63C1
ldy #$01
L630E: lda ($06),y
cmp L63C1,y
beq L631A
bcs L633D
jmp L6322
L631A: iny
cpy #$10
bne L630E
jmp L633D
L6322: lda L63BE
sta L63C0
ldx #$0F
lda #$20
L632C: sta L63C2,x
dex
bpl L632C
ldy L63C1
L6335: lda ($06),y
sta L63C1,y
dey
bne L6335
L633D: inc L63BE
lda L63BE
cmp $177F
beq L634B
jmp L62FB
L634B: lda L63C0
jsr L6451
ldy #$00
lda ($06),y
ora #$80
sta ($06),y
ldax #$0F5A
L635D: sta L63C2,x
dex
bpl L635D
ldx L63BF
lda L63C0
sta L63D2,x
lda #$00
sta L63BE
inc L63BF
jmp L62F0
L6377: ldx $177F
dex
stx L63BF
L637E: lda L63BF
bpl L63AD
ldx $177F
beq L63AC
dex
L6389: lda L63D2,x
tay
lda $1780,y
bpl L639A
lda L63D2,x
ora #$80
sta L63D2,x
L639A: dex
bpl L6389
ldx $177F
beq L63AC
dex
L63A3: lda L63D2,x
sta $1780,x
dex
bpl L63A3
L63AC: rts
L63AD: jsr L6451
ldy #$00
lda ($06),y
and #$7F
sta ($06),y
dec L63BF
jmp L637E
L63BE: .byte 0
L63BF: .byte 0
L63C0: .byte 0
L63C1: .byte 0
L63C2: .res 16, 0
L63D2: .res 127, 0
L6451: ldx #$00
stx $06
ldx #$18
stx $07
ldx #$00
stx L647B
asl a
rol L647B
asl a
rol L647B
asl a
rol L647B
asl a
rol L647B
clc
adc $06
sta $06
lda L647B
adc $07
sta $07
rts
L647B: .byte 0
;;; ==================================================
L647C: stax $06
ldy #$01
lda ($06),y
cmp #$2F
bne L64DE
dey
lda ($06),y
cmp #$02
bcc L64DE
tay
lda ($06),y
cmp #$2F
beq L64DE
ldx #$00
stx L64E1
L649B: lda ($06),y
cmp #$2F
beq L64AB
inx
cpx #$10
beq L64DE
dey
bne L649B
beq L64B3
L64AB: inc L64E1
ldx #$00
dey
bne L649B
L64B3: ldy #$00
lda ($06),y
tay
L64B8: lda ($06),y
and #$7F
cmp #$2E
beq L64D8
cmp #$2F
bcc L64DE
cmp #$3A
bcc L64D8
cmp #$41
bcc L64DE
cmp #$5B
bcc L64D8
cmp #$61
bcc L64DE
cmp #$7B
bcs L64DE
L64D8: dey
bne L64B8
return #$00
L64DE: return #$FF
L64E1: .byte 0
L64E2: lda $177F
bne L64E8
L64E7: rts
L64E8: lda #$00
sta L6515
copy16 #$1800, $06
L64F5: lda L6515
cmp $177F
beq L64E7
lda $06
ldx $07
jsr L6129
inc L6515
lda $06
clc
adc #$10
sta $06
bcc L64F5
inc $07
jmp L64F5
L6515: .byte 0
;;; ==================================================
L6516: stax $06
ldy #$00
lda ($06),y
tay
L651F: lda ($06),y
sta L6576,y
dey
bpl L651F
lda #$00
sta L6575
copy16 #$1800, $06
L6534: lda L6575
cmp $177F
beq L6564
ldy #$00
lda ($06),y
cmp L6576
bne L6553
tay
L6546: lda ($06),y
cmp L6576,y
bne L6553
dey
bne L6546
jmp L6567
L6553: inc L6575
lda $06
clc
adc #$10
sta $06
bcc L6534
inc $07
jmp L6534
L6564: return #$FF
L6567: ldx $177F
lda L6575
L656D: dex
cmp $1780,x
bne L656D
txa
rts
L6575: .byte 0
L6576: .res 16, 0
;;; ==================================================
L6586: bpl L658B
L6588: return #$00
L658B: cmp #$09
bcc L6588
sec
sbc #$08
rts
lda $D5B7
jsr L62C8
jsr L6E45
stax $06
copy16 $DAA8, $08
MGTK_RELAY_CALL MGTK::MoveTo, $06
bit $D8EB
bpl L65C8
MGTK_RELAY_CALL MGTK::SetTextBG, $DA5D
lda #$00
sta $D8EB
beq L65D6
L65C8: MGTK_RELAY_CALL MGTK::SetTextBG, $DA5E
lda #$FF
sta $D8EB
L65D6: copy16 #$D8EF, $06
lda $D8EE
sta $08
MGTK_RELAY_CALL MGTK::DrawText, $06
jsr L56E3
rts
lda $D5B7
jsr L62C8
jsr L6E72
stax $06
copy16 $DAB4, $08
MGTK_RELAY_CALL MGTK::MoveTo, $06
bit $D8EB
bpl L6626
MGTK_RELAY_CALL MGTK::SetTextBG, $DA5D
lda #$00
sta $D8EB
jmp L6634
L6626: MGTK_RELAY_CALL MGTK::SetTextBG, $DA5E
lda #$FF
sta $D8EB
L6634: copy16 #$D8EF, $06
lda $D8EE
sta $08
MGTK_RELAY_CALL MGTK::DrawText, $06
jsr L56E3
rts
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::PaintRect, $DA9E
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::FrameRect, $DA9E
MGTK_RELAY_CALL MGTK::MoveTo, $DAA6
lda $D402
beq L6684
addr_call L5DED, $D402
L6684: addr_call L5DED, $D484
addr_call L5DED, $D8F8
rts
;;; ==================================================
L6693: lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::PaintRect, $DAAA
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::FrameRect, $DAAA
MGTK_RELAY_CALL MGTK::MoveTo, $DAB2
lda $D443
beq L66C9
addr_call L5DED, $D443
L66C9: addr_call L5DED, $D484
addr_call L5DED, $D8F8
rts
lda $D5B7
sta screentowindow_window_id
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
MGTK_RELAY_CALL MGTK::InRect, $DA9E
cmp #MGTK::inrect_inside
beq L6719
bit L5104
bpl L6718
MGTK_RELAY_CALL MGTK::InRect, $DAAA
cmp #MGTK::inrect_inside
bne L6718
jmp L6D1E
L6718: rts
L6719: jsr L6E45
stax $06
cmp16 $D20D, $06
bcs L672F
jmp L67C4
L672F: jsr L6E45
stax L684D
ldx $D484
inx
lda #$20
sta $D484,x
inc $D484
copy16 #$D484, $06
lda $D484
sta $08
L6751: MGTK_RELAY_CALL MGTK::TextWidth, $06
add16 $09, L684D, $09
cmp16 $09, $D20D
bcc L6783
dec $08
lda $08
cmp #$01
bne L6751
dec $D484
jmp L6846
L6783: lda $08
cmp $D484
bcc L6790
dec $D484
jmp L6B44
L6790: ldx #$02
ldy $D402
iny
L6796: lda $D484,x
sta $D402,y
cpx $08
beq L67A5
iny
inx
jmp L6796
L67A5: sty $D402
ldy #$02
ldx $08
inx
L67AD: lda $D484,x
sta $D484,y
cpx $D484
beq L67BD
iny
inx
jmp L67AD
L67BD: dey
sty $D484
jmp L6846
L67C4: copy16 #$D402, $06
lda $D402
sta $08
L67D1: MGTK_RELAY_CALL MGTK::TextWidth, $06
add16 $09, $DAA6, $09
cmp16 $09, $D20D
bcc L6800
dec $08
lda $08
cmp #$01
bcs L67D1
jmp L6B01
L6800: inc $08
ldy #$00
ldx $08
L6806: cpx $D402
beq L6816
inx
iny
lda $D402,x
sta $D3C2,y
jmp L6806
L6816: iny
sty $D3C1
ldx #$01
ldy $D3C1
L681F: cpx $D484
beq L682F
inx
iny
lda $D484,x
sta $D3C1,y
jmp L681F
L682F: sty $D3C1
lda $D8EF
sta $D3C2
L6838: lda $D3C1,y
sta $D484,y
dey
bpl L6838
lda $08
sta $D402
L6846: jsr L6D27
jsr L6EA3
rts
L684D: .word 0
lda $D5B7
sta screentowindow_window_id
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
MGTK_RELAY_CALL MGTK::InRect, $DAAA
cmp #MGTK::inrect_inside
beq L6890
bit L5104
bpl L688F
MGTK_RELAY_CALL MGTK::InRect, $DA9E
cmp #MGTK::inrect_inside
bne L688F
jmp L6D21
L688F: rts
L6890: jsr L6E72
stax $06
cmp16 $D20D, $06
bcs L68A6
jmp L693B
L68A6: jsr L6E72
stax L69C4
ldx $D484
inx
lda #$20
sta $D484,x
inc $D484
copy16 #$D484, $06
lda $D484
sta $08
L68C8: MGTK_RELAY_CALL MGTK::TextWidth, $06
add16 $09, L69C4, $09
cmp16 $09, $D20D
bcc L68FA
dec $08
lda $08
cmp #$01
bne L68C8
dec $D484
jmp L69BD
L68FA: lda $08
cmp $D484
bcc L6907
dec $D484
jmp L6CF0
L6907: ldx #$02
ldy $D443
iny
L690D: lda $D484,x
sta $D443,y
cpx $08
beq L691C
iny
inx
jmp L690D
L691C: sty $D443
ldy #$02
ldx $08
inx
L6924: lda $D484,x
sta $D484,y
cpx $D484
beq L6934
iny
inx
jmp L6924
L6934: dey
sty $D484
jmp L69BD
L693B: copy16 #$D443, $06
lda $D443
sta $08
L6948: MGTK_RELAY_CALL MGTK::TextWidth, $06
add16 $09, $DAB2, $09
cmp16 $09, $D20D
bcc L6977
dec $08
lda $08
cmp #$01
bcs L6948
jmp L6CAD
L6977: inc $08
ldy #$00
ldx $08
L697D: cpx $D443
beq L698D
inx
iny
lda $D443,x
sta $D3C2,y
jmp L697D
L698D: iny
sty $D3C1
ldx #$01
ldy $D3C1
L6996: cpx $D484
beq L69A6
inx
iny
lda $D484,x
sta $D3C1,y
jmp L6996
L69A6: sty $D3C1
lda $D8EF
sta $D3C2
L69AF: lda $D3C1,y
sta $D484,y
dey
bpl L69AF
lda $08
sta $D443
L69BD: jsr L6D27
jsr L6E9F
rts
L69C4: .word 0
sta L6A17
lda $D402
clc
adc $D484
cmp #$3F
bcc L69D5
rts
L69D5: lda L6A17
ldx $D402
inx
sta $D402,x
sta $D8F7
jsr L6E45
inc $D402
stax $06
copy16 $DAA8, $08
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::MoveTo, $06
addr_call L5DED, $D8F6
addr_call L5DED, $D484
jsr L6EA3
rts
L6A17: .byte 0
lda $D402
bne L6A1E
rts
L6A1E: dec $D402
jsr L6E45
stax $06
copy16 $DAA8, $08
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::MoveTo, $06
addr_call L5DED, $D484
addr_call L5DED, $D8F8
jsr L6EA3
rts
lda $D402
bne L6A59
rts
L6A59: ldx $D484
cpx #$01
beq L6A6B
L6A60: lda $D484,x
sta $D485,x
dex
cpx #$01
bne L6A60
L6A6B: ldx $D402
lda $D402,x
sta $D486
dec $D402
inc $D484
jsr L6E45
stax $06
copy16 $DAA8, $08
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::MoveTo, $06
addr_call L5DED, $D484
addr_call L5DED, $D8F8
jsr L6EA3
rts
lda $D484
cmp #$02
bcs L6AB4
rts
L6AB4: ldx $D402
inx
lda $D486
sta $D402,x
inc $D402
ldx $D484
cpx #$03
bcc L6AD6
ldx #$02
L6ACA: lda $D485,x
sta $D484,x
inx
cpx $D484
bne L6ACA
L6AD6: dec $D484
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::MoveTo, $DAA6
addr_call L5DED, $D402
addr_call L5DED, $D484
addr_call L5DED, $D8F8
jsr L6EA3
rts
L6B01: lda $D402
bne L6B07
rts
L6B07: ldy $D402
lda $D484
cmp #$02
bcc L6B20
ldx #$01
L6B13: iny
inx
lda $D484,x
sta $D402,y
cpx $D484
bne L6B13
L6B20: sty $D402
L6B23: lda $D402,y
sta $D485,y
dey
bne L6B23
ldx $D402
inx
stx $D484
lda #$06
sta $D485
lda #$00
sta $D402
jsr L6D27
jsr L6EA3
rts
L6B44: lda $D484
cmp #$02
bcs L6B4C
rts
L6B4C: ldx #$01
ldy $D402
L6B51: inx
iny
lda $D484,x
sta $D402,y
cpx $D484
bne L6B51
sty $D402
copy16 #$0601, $D484
jsr L6D27
jsr L6EA3
rts
sta L6BC3
lda $D443
clc
adc $D484
cmp #$3F
bcc L6B81
rts
L6B81: lda L6BC3
ldx $D443
inx
sta $D443,x
sta $D8F7
jsr L6E72
inc $D443
stax $06
copy16 $DAB4, $08
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::MoveTo, $06
addr_call L5DED, $D8F6
addr_call L5DED, $D484
jsr L6E9F
rts
L6BC3: .byte 0
lda $D443
bne L6BCA
rts
L6BCA: dec $D443
jsr L6E72
stax $06
copy16 $DAB4, $08
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::MoveTo, $06
addr_call L5DED, $D484
addr_call L5DED, $D8F8
jsr L6E9F
rts
lda $D443
bne L6C05
rts
L6C05: ldx $D484
cpx #$01
beq L6C17
L6C0C: lda $D484,x
sta $D485,x
dex
cpx #$01
bne L6C0C
L6C17: ldx $D443
lda $D443,x
sta $D486
dec $D443
inc $D484
jsr L6E72
stax $06
copy16 $DAB4, $08
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::MoveTo, $06
addr_call L5DED, $D484
addr_call L5DED, $D8F8
jsr L6E9F
rts
lda $D484
cmp #$02
bcs L6C60
rts
L6C60: ldx $D443
inx
lda $D486
sta $D443,x
inc $D443
ldx $D484
cpx #$03
bcc L6C82
ldx #$02
L6C76: lda $D485,x
sta $D484,x
inx
cpx $D484
bne L6C76
L6C82: dec $D484
lda $D5B7
jsr L62C8
MGTK_RELAY_CALL MGTK::MoveTo, $DAB2
addr_call L5DED, $D443
addr_call L5DED, $D484
addr_call L5DED, $D8F8
jsr L6E9F
rts
L6CAD: lda $D443
bne L6CB3
rts
L6CB3: ldy $D443
lda $D484
cmp #$02
bcc L6CCC
ldx #$01
L6CBF: iny
inx
lda $D484,x
sta $D443,y
cpx $D484
bne L6CBF
L6CCC: sty $D443
L6CCF: lda $D443,y
sta $D485,y
dey
bne L6CCF
ldx $D443
inx
stx $D484
lda #$06
sta $D485
lda #$00
sta $D443
jsr L6D27
jsr L6E9F
rts
L6CF0: lda $D484
cmp #$02
bcs L6CF8
rts
L6CF8: ldx #$01
ldy $D443
L6CFD: inx
iny
lda $D484,x
sta $D443,y
cpx $D484
bne L6CFD
sty $D443
copy16 #$0601, $D484
jsr L6D27
jsr L6E9F
rts
L6D1E: jmp 0
L6D21: jmp 0
L6D24: jmp 0
L6D27: jmp 0
L6D2A: jmp 0
L6D2D: jmp 0
L6D30: jmp 0
L6D33: jmp 0
L6D36: jmp 0
L6D39: jmp 0
L6D3C: jmp 0
L6D3F: jmp 0
L6D42: jmp 0
L6D45: jmp 0
L6D48: stax $06
ldx $D402
lda #$2F
sta $D403,x
inc $D402
ldy #$00
lda ($06),y
tay
clc
adc $D402
pha
tax
L6D62: lda ($06),y
sta $D402,x
dey
dex
cpx $D402
bne L6D62
pla
sta $D402
rts
L6D73: stax $06
ldx $D443
lda #$2F
sta $D444,x
inc $D443
ldy #$00
lda ($06),y
tay
clc
adc $D443
pha
tax
L6D8D: lda ($06),y
sta $D443,x
dey
dex
cpx $D443
bne L6D8D
pla
sta $D443
rts
L6D9E: ldx $D402
cpx #$00
beq L6DAF
dec $D402
lda $D402,x
cmp #$2F
bne L6D9E
L6DAF: rts
L6DB0: ldx $D443
cpx #$00
beq L6DC1
dec $D443
lda $D443,x
cmp #$2F
bne L6DB0
L6DC1: rts
jsr L6D9E
jsr L6D27
rts
jsr L6DB0
jsr L6D27
rts
lda #$00
beq L6DD6
lda #$80
L6DD6: sta L6E1C
copy16 #$1800, $06
ldx $D920
lda $1780,x
and #$7F
ldx #$00
stx L6E1B
asl a
rol L6E1B
asl a
rol L6E1B
asl a
rol L6E1B
asl a
rol L6E1B
clc
adc $06
tay
lda L6E1B
adc $07
tax
tya
bit L6E1C
bpl L6E14
jsr L6D73
jmp L6E17
L6E14: jsr L6D48
L6E17: jsr L6D27
rts
L6E1B: .byte 0
L6E1C: .byte 0
ldx path_buf
L6E20: lda path_buf,x
sta $D402,x
dex
bpl L6E20
addr_call L6129, $D402
rts
ldx path_buf
L6E34: lda path_buf,x
sta $D443,x
dex
bpl L6E34
addr_call L6129, $D443
rts
L6E45: lda #$00
sta $09
sta $0A
lda $D402
beq L6E63
sta $08
copy16 #$D403, $06
MGTK_RELAY_CALL MGTK::TextWidth, $06
L6E63: lda $09
clc
adc $DAA6
tay
lda $0A
adc $DAA7
tax
tya
rts
L6E72: lda #$00
sta $09
sta $0A
lda $D443
beq L6E90
sta $08
copy16 #$D444, $06
MGTK_RELAY_CALL MGTK::TextWidth, $06
L6E90: lda $09
clc
adc $DAB2
tay
lda $0A
adc $DAB3
tax
tya
rts
L6E9F: lda #$FF
bmi L6EA5
L6EA3: lda #$00
L6EA5: bmi L6EB6
ldx $D402
L6EAA: lda $D402,x
sta $D3C1,x
dex
bpl L6EAA
jmp L6EC2
L6EB6: ldx $D443
L6EB9: lda $D443,x
sta $D3C1,x
dex
bpl L6EB9
L6EC2: lda $D920
sta L6F3D
bmi L6EFB
ldx #$00
stx $06
ldx #$18
stx $07
ldx #$00
stx L6F3C
tax
lda $1780,x
and #$7F
asl a
rol L6F3C
asl a
rol L6F3C
asl a
rol L6F3C
asl a
rol L6F3C
clc
adc $06
tay
lda L6F3C
adc $07
tax
tya
jsr L5F0D
L6EFB: addr_call L6129, $D3C1
addr_call L6129, path_buf
lda $D3C1
cmp path_buf
bne L6F26
tax
L6F12: lda $D3C1,x
cmp path_buf,x
bne L6F26
dex
bne L6F12
lda #$00
sta $D8F0
jsr L6F2F
rts
L6F26: lda #$FF
sta $D8F0
jsr L6F2F
rts
L6F2F: lda L6F3D
sta $D920
bpl L6F38
rts
L6F38: jsr L5F49
rts
L6F3C: .byte 0
L6F3D: .byte 0
;;; ==================================================
PAD_TO $7000
.endproc ; common_overlay