mirror of
https://github.com/mi57730/a2d.git
synced 2024-12-01 05:50:24 +00:00
3057 lines
72 KiB
ArmAsm
3057 lines
72 KiB
ArmAsm
;;; ============================================================
|
|
;;; Overlay for Common Routines (Selector, File Copy/Delete)
|
|
;;; ============================================================
|
|
|
|
.proc common_overlay
|
|
.org $5000
|
|
|
|
;;; ============================================================
|
|
|
|
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
|
|
device_num: .byte $00 ; next device number to try
|
|
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 device_num
|
|
sta L50A8
|
|
sta prompt_ip_flag
|
|
sta LD8EC
|
|
sta LD8F0
|
|
sta LD8F1
|
|
sta LD8F2
|
|
sta cursor_ip_flag
|
|
sta L5104
|
|
sta L5103
|
|
sta L5105
|
|
lda #prompt_insertion_point_blink_count
|
|
sta prompt_ip_counter
|
|
lda #$FF
|
|
sta LD920
|
|
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
|
|
|
|
;;; ============================================================
|
|
;;; Flags set by invoker to alter behavior
|
|
|
|
L5103: .byte 0 ; ??? something before jt_handle_click invoked
|
|
L5104: .byte 0 ; ??? something about inputs
|
|
L5105: .byte 0 ; ??? something about the picker
|
|
|
|
;;; ============================================================
|
|
|
|
L5106: bit LD8EC
|
|
bpl :+
|
|
|
|
dec prompt_ip_counter
|
|
bne :+
|
|
jsr jt_blink_ip
|
|
copy #prompt_insertion_point_blink_count, prompt_ip_counter
|
|
|
|
: MGTK_RELAY_CALL MGTK::GetEvent, event_params
|
|
lda event_kind
|
|
cmp #MGTK::EventKind::button_down
|
|
bne :+
|
|
jsr L51AF
|
|
jmp L5106
|
|
|
|
: cmp #MGTK::EventKind::key_down
|
|
bne :+
|
|
jsr L59B9
|
|
: MGTK_RELAY_CALL MGTK::FindWindow, findwindow_params
|
|
lda findwindow_which_area
|
|
bne :+
|
|
jmp L5106
|
|
: lda findwindow_window_id
|
|
cmp winfo_entrydlg
|
|
beq L5151
|
|
jmp L5106
|
|
|
|
L5151: lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
lda winfo_entrydlg
|
|
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, common_input1_rect
|
|
cmp #MGTK::inrect_inside
|
|
bne L5196
|
|
beq L5190
|
|
L5183: MGTK_RELAY_CALL MGTK::InRect, common_input2_rect
|
|
cmp #MGTK::inrect_inside
|
|
bne L5196
|
|
L5190: jsr set_cursor_insertion
|
|
jmp L5199
|
|
|
|
L5196: jsr set_cursor_pointer
|
|
L5199: MGTK_RELAY_CALL MGTK::InitPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport3
|
|
jmp L5106
|
|
|
|
L51AE: .byte 0
|
|
|
|
;;; ============================================================
|
|
|
|
L51AF: MGTK_RELAY_CALL MGTK::FindWindow, findwindow_params
|
|
lda findwindow_which_area
|
|
bne :+
|
|
rts
|
|
: cmp #MGTK::Area::content
|
|
bne :+
|
|
jmp L51C7
|
|
rts ; ???
|
|
: rts
|
|
|
|
L51C7: lda findwindow_window_id
|
|
cmp winfo_entrydlg
|
|
beq L51D2
|
|
jmp L531F
|
|
|
|
L51D2: lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
lda winfo_entrydlg
|
|
sta screentowindow_window_id
|
|
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
|
|
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
|
|
|
|
;; In open button?
|
|
.proc check_open_button
|
|
MGTK_RELAY_CALL MGTK::InRect, common_open_button_rect
|
|
cmp #MGTK::inrect_inside
|
|
beq clicked
|
|
jmp check_change_drive_button
|
|
|
|
clicked:
|
|
bit L5105
|
|
bmi L520A
|
|
lda LD920
|
|
bpl L520D
|
|
L520A: jmp set_up_ports
|
|
|
|
L520D: tax
|
|
lda $1780,x
|
|
bmi L5216
|
|
L5213: jmp set_up_ports
|
|
|
|
L5216: lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_open_button_rect
|
|
jsr track_open_button_click
|
|
bmi L5213
|
|
jsr L5607
|
|
jmp set_up_ports
|
|
.endproc
|
|
|
|
.proc check_change_drive_button
|
|
MGTK_RELAY_CALL MGTK::InRect, common_change_drive_button_rect
|
|
cmp #MGTK::inrect_inside
|
|
beq :+
|
|
jmp check_close_button
|
|
: bit L5105
|
|
bmi L5268
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_change_drive_button_rect
|
|
jsr track_change_drive_button_click
|
|
bmi L5268
|
|
jsr L565C
|
|
L5268: jmp set_up_ports
|
|
.endproc
|
|
|
|
.proc check_close_button
|
|
MGTK_RELAY_CALL MGTK::InRect, common_close_button_rect
|
|
cmp #MGTK::inrect_inside
|
|
beq :+
|
|
jmp check_ok_button
|
|
: bit L5105
|
|
bmi L529A
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_close_button_rect
|
|
jsr track_close_button_click
|
|
bmi L529A
|
|
jsr L567F
|
|
L529A: jmp set_up_ports
|
|
.endproc
|
|
|
|
.proc check_ok_button
|
|
MGTK_RELAY_CALL MGTK::InRect, common_ok_button_rect
|
|
cmp #MGTK::inrect_inside
|
|
beq :+
|
|
jmp check_cancel_button
|
|
: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_ok_button_rect
|
|
jsr track_ok_button_click
|
|
bmi L52CA
|
|
jsr jt_handle_meta_right_key
|
|
jsr jt_handle_ok
|
|
L52CA: jmp set_up_ports
|
|
.endproc
|
|
|
|
.proc check_cancel_button
|
|
MGTK_RELAY_CALL MGTK::InRect, common_cancel_button_rect
|
|
cmp #MGTK::inrect_inside
|
|
beq :+
|
|
jmp check_other_click
|
|
: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_cancel_button_rect
|
|
jsr track_cancel_button_click
|
|
bmi L52F7
|
|
jsr jt_handle_cancel
|
|
L52F7: jmp set_up_ports
|
|
.endproc
|
|
|
|
.proc check_other_click
|
|
bit L5103
|
|
bpl :+
|
|
jsr L531B
|
|
bmi set_up_ports
|
|
: jsr jt_handle_click
|
|
rts
|
|
.endproc
|
|
|
|
set_up_ports:
|
|
MGTK_RELAY_CALL MGTK::InitPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport2
|
|
rts
|
|
|
|
L531B: jsr noop
|
|
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 winfo_entrydlg_file_picker::vscroll
|
|
and #$01
|
|
beq L5340
|
|
jmp L5469
|
|
|
|
L5340: rts
|
|
|
|
L5341: lda winfo_entrydlg_file_picker
|
|
sta screentowindow_window_id
|
|
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
|
|
add16 screentowindow_windowy, winfo_entrydlg_file_picker::cliprect+2, screentowindow_windowy
|
|
lsr16 screentowindow_windowy
|
|
lsr16 screentowindow_windowy
|
|
lsr16 screentowindow_windowy
|
|
lda LD920
|
|
cmp screentowindow_windowy
|
|
beq L5380
|
|
jmp L542F
|
|
|
|
L5380: jsr desktop_main::detect_double_click
|
|
beq L5386
|
|
rts
|
|
|
|
L5386: ldx LD920
|
|
lda $1780,x
|
|
bmi L53B5
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_ok_button_rect
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_ok_button_rect
|
|
jsr jt_handle_ok
|
|
jmp L5340
|
|
|
|
L53B5: and #$7F
|
|
pha
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_open_button_rect
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_open_button_rect
|
|
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, grafport3
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport2
|
|
rts
|
|
|
|
L542E: .byte 0
|
|
|
|
L542F: lda screentowindow_windowy
|
|
cmp $177F
|
|
bcc L5438
|
|
rts
|
|
|
|
L5438: lda LD920
|
|
bmi L5446
|
|
jsr jt_strip_path_segment
|
|
lda LD920
|
|
jsr L6274
|
|
L5446: lda screentowindow_windowy
|
|
sta LD920
|
|
bit LD8F0
|
|
bpl L5457
|
|
jsr jt_prep_path
|
|
jsr jt_redraw_input
|
|
L5457: lda LD920
|
|
jsr L6274
|
|
jsr jt_05
|
|
jsr desktop_main::detect_double_click
|
|
bmi L5468
|
|
jmp L5386
|
|
|
|
L5468: rts
|
|
|
|
L5469: lda findcontrol_which_part
|
|
cmp #MGTK::Part::up_arrow
|
|
bne L5473
|
|
jmp L550A
|
|
|
|
L5473: cmp #MGTK::Part::down_arrow
|
|
bne L547A
|
|
jmp L5533
|
|
|
|
L547A: cmp #MGTK::Part::page_up
|
|
bne L5481
|
|
jmp L54BA
|
|
|
|
L5481: cmp #MGTK::Part::page_down
|
|
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 updatethumb_stash
|
|
jsr L6227
|
|
jsr L606D
|
|
rts
|
|
|
|
L54BA: lda winfo_entrydlg_file_picker::vthumbpos
|
|
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 winfo_entrydlg_file_picker::vthumbpos
|
|
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 winfo_entrydlg_file_picker::vthumbpos
|
|
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 winfo_entrydlg_file_picker::vthumbpos
|
|
cmp winfo_entrydlg_file_picker::vthumbmax
|
|
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::EventKind::button_down
|
|
beq L5576
|
|
cmp #MGTK::EventKind::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 winfo_entrydlg_file_picker
|
|
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
|
|
|
|
;;; ============================================================
|
|
|
|
.proc set_cursor_pointer
|
|
bit cursor_ip_flag
|
|
bpl done
|
|
MGTK_RELAY_CALL MGTK::HideCursor
|
|
MGTK_RELAY_CALL MGTK::SetCursor, pointer_cursor
|
|
MGTK_RELAY_CALL MGTK::ShowCursor
|
|
lda #$00
|
|
sta cursor_ip_flag
|
|
done: rts
|
|
.endproc
|
|
|
|
.proc set_cursor_insertion
|
|
bit cursor_ip_flag
|
|
bmi done
|
|
MGTK_RELAY_CALL MGTK::HideCursor
|
|
MGTK_RELAY_CALL MGTK::SetCursor, insertion_point_cursor
|
|
MGTK_RELAY_CALL MGTK::ShowCursor
|
|
lda #$80
|
|
sta cursor_ip_flag
|
|
done: rts
|
|
.endproc
|
|
|
|
cursor_ip_flag: ; high bit set when cursor is IP
|
|
.byte 0
|
|
|
|
;;; ============================================================
|
|
|
|
L5607: ldx LD920
|
|
lda $1780,x
|
|
and #$7F
|
|
pha
|
|
bit LD8F0
|
|
bpl L5618
|
|
jsr jt_prep_path
|
|
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 LD920
|
|
jsr inc_device_num
|
|
jsr device_on_line
|
|
jsr L5F5B
|
|
jsr L6161
|
|
lda #$00
|
|
jsr L6227
|
|
jsr L61B1
|
|
jsr L606D
|
|
jsr jt_prep_path
|
|
jsr jt_redraw_input
|
|
rts
|
|
|
|
L567F: lda #$00
|
|
sta L56E2
|
|
ldx path_buf
|
|
bne L568C
|
|
jmp L56E1
|
|
|
|
L568C: lda path_buf,x
|
|
and #CHAR_MASK
|
|
cmp #'/'
|
|
beq L569B
|
|
dex
|
|
bpl L568C
|
|
jmp L56E1
|
|
|
|
L569B: cpx #$01
|
|
bne L56A2
|
|
jmp L56E1
|
|
|
|
L56A2: jsr L5F49
|
|
lda LD920
|
|
pha
|
|
lda #$FF
|
|
sta LD920
|
|
jsr L5F5B
|
|
jsr L6161
|
|
lda #$00
|
|
jsr L6227
|
|
jsr L61B1
|
|
jsr L606D
|
|
pla
|
|
sta LD920
|
|
bit L56E2
|
|
bmi L56D6
|
|
jsr jt_strip_path_segment
|
|
lda LD920
|
|
bmi L56DC
|
|
jsr jt_strip_path_segment
|
|
jmp L56DC
|
|
|
|
L56D6: jsr jt_prep_path
|
|
jsr jt_redraw_input
|
|
L56DC: lda #$FF
|
|
sta LD920
|
|
L56E1: rts
|
|
|
|
L56E2: .byte 0
|
|
|
|
L56E3: MGTK_RELAY_CALL MGTK::InitPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport3
|
|
rts
|
|
|
|
;;; ============================================================
|
|
|
|
.proc track_ok_button_click
|
|
lda #$00
|
|
sta L577B
|
|
L56FB: MGTK_RELAY_CALL MGTK::GetEvent, event_params
|
|
lda event_kind
|
|
cmp #MGTK::EventKind::button_up
|
|
beq L575E
|
|
lda winfo_entrydlg
|
|
sta screentowindow_window_id
|
|
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
|
|
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
|
|
MGTK_RELAY_CALL MGTK::InRect, common_ok_button_rect
|
|
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, common_ok_button_rect
|
|
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, common_ok_button_rect
|
|
return #$00
|
|
|
|
L577B: .byte 0
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc track_close_button_click
|
|
lda #$00
|
|
sta L5801
|
|
L5781: MGTK_RELAY_CALL MGTK::GetEvent, event_params
|
|
lda event_kind
|
|
cmp #MGTK::EventKind::button_up
|
|
beq L57E4
|
|
lda winfo_entrydlg
|
|
sta screentowindow_window_id
|
|
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
|
|
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
|
|
MGTK_RELAY_CALL MGTK::InRect, common_close_button_rect
|
|
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, common_close_button_rect
|
|
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, common_close_button_rect
|
|
return #$00
|
|
|
|
L5801: .byte 0
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc track_cancel_button_click
|
|
lda #$00
|
|
sta L5887
|
|
L5807: MGTK_RELAY_CALL MGTK::GetEvent, event_params
|
|
lda event_kind
|
|
cmp #MGTK::EventKind::button_up
|
|
beq L586A
|
|
lda winfo_entrydlg
|
|
sta screentowindow_window_id
|
|
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
|
|
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
|
|
MGTK_RELAY_CALL MGTK::InRect, common_cancel_button_rect
|
|
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, common_cancel_button_rect
|
|
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, common_cancel_button_rect
|
|
return #$01
|
|
|
|
L5887: .byte 0
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc track_open_button_click
|
|
lda #$00
|
|
sta L590D
|
|
L588D: MGTK_RELAY_CALL MGTK::GetEvent, event_params
|
|
lda event_kind
|
|
cmp #MGTK::EventKind::button_up
|
|
beq L58F0
|
|
lda winfo_entrydlg
|
|
sta screentowindow_window_id
|
|
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
|
|
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
|
|
MGTK_RELAY_CALL MGTK::InRect, common_open_button_rect
|
|
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, common_open_button_rect
|
|
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, common_open_button_rect
|
|
return #$00
|
|
|
|
L590D: .byte 0
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc track_change_drive_button_click
|
|
lda #$00
|
|
sta L5993
|
|
L5913: MGTK_RELAY_CALL MGTK::GetEvent, event_params
|
|
lda event_kind
|
|
cmp #MGTK::EventKind::button_up
|
|
beq L5976
|
|
lda winfo_entrydlg
|
|
sta screentowindow_window_id
|
|
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
|
|
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
|
|
MGTK_RELAY_CALL MGTK::InRect, common_change_drive_button_rect
|
|
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, common_change_drive_button_rect
|
|
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, common_change_drive_button_rect
|
|
return #$01
|
|
|
|
L5993: .byte 0
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.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
|
|
|
|
;;; ============================================================
|
|
|
|
.proc noop
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
;;; Key handler
|
|
|
|
.proc L59B9
|
|
lda event_modifiers
|
|
beq L59F7
|
|
|
|
;; With modifiers
|
|
lda event_key
|
|
and #CHAR_MASK
|
|
|
|
cmp #CHAR_LEFT
|
|
bne :+
|
|
jmp jt_handle_meta_left_key ; start of line
|
|
|
|
: cmp #CHAR_RIGHT
|
|
bne :+
|
|
jmp jt_handle_meta_right_key ; end of line
|
|
|
|
: bit L5105
|
|
bmi L59E4
|
|
cmp #CHAR_DOWN
|
|
bne :+
|
|
jmp scroll_list_bottom ; end of list
|
|
|
|
: cmp #CHAR_UP
|
|
bne L59E4
|
|
jmp scroll_list_top ; start of list
|
|
|
|
L59E4: cmp #'0'
|
|
bcc :+
|
|
cmp #'9'+1
|
|
bcs :+
|
|
jmp key_meta_digit
|
|
|
|
: bit L5105
|
|
bmi L5A4F
|
|
jmp L5B70
|
|
|
|
;;; ============================================================
|
|
;;; Key - without modifiers
|
|
|
|
L59F7: lda event_key
|
|
and #CHAR_MASK
|
|
|
|
cmp #CHAR_LEFT
|
|
bne :+
|
|
jmp jt_handle_left_key
|
|
|
|
: cmp #CHAR_RIGHT
|
|
bne :+
|
|
jmp jt_handle_right_key
|
|
|
|
: cmp #CHAR_RETURN
|
|
bne :+
|
|
jmp key_return
|
|
|
|
: cmp #CHAR_ESCAPE
|
|
bne :+
|
|
jmp key_escape
|
|
|
|
: cmp #CHAR_DELETE
|
|
bne :+
|
|
jmp key_delete
|
|
|
|
: bit L5105
|
|
bpl L5A27
|
|
jmp L5AC4
|
|
|
|
L5A27: cmp #CHAR_TAB
|
|
bne L5A52
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_change_drive_button_rect
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_change_drive_button_rect
|
|
jsr L565C
|
|
L5A4F: jmp L5AC8
|
|
|
|
L5A52: cmp #CHAR_CTRL_O ; Open
|
|
bne L5A8B
|
|
lda LD920
|
|
bmi L5AC8
|
|
tax
|
|
lda $1780,x
|
|
bmi :+
|
|
jmp L5AC8
|
|
: lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_open_button_rect
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_open_button_rect
|
|
jsr L5607
|
|
jmp L5AC8
|
|
|
|
L5A8B: cmp #CHAR_CTRL_C ; Close
|
|
bne :+
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_close_button_rect
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_close_button_rect
|
|
jsr L567F
|
|
jmp L5AC8
|
|
|
|
: cmp #CHAR_DOWN
|
|
bne :+
|
|
jmp key_down
|
|
|
|
: cmp #CHAR_UP
|
|
bne L5AC4
|
|
jmp key_up
|
|
|
|
L5AC4: jsr jt_handle_other_key
|
|
rts
|
|
|
|
L5AC8: jsr L56E3
|
|
rts
|
|
|
|
key_return:
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR ; flash the button
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_ok_button_rect
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_ok_button_rect
|
|
jsr jt_handle_meta_right_key
|
|
jsr jt_handle_ok
|
|
jsr L56E3
|
|
rts
|
|
|
|
key_escape:
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR ; flash the button
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_cancel_button_rect
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_cancel_button_rect
|
|
jsr jt_handle_cancel
|
|
jsr L56E3
|
|
rts
|
|
|
|
key_delete:
|
|
jsr jt_handle_delete_key
|
|
rts
|
|
|
|
key_meta_digit:
|
|
jmp noop
|
|
|
|
.proc key_down
|
|
lda $177F
|
|
beq L5B37
|
|
lda LD920
|
|
bmi L5B47
|
|
tax
|
|
inx
|
|
cpx $177F
|
|
bcc L5B38
|
|
L5B37: rts
|
|
|
|
L5B38: jsr L6274
|
|
jsr jt_strip_path_segment
|
|
inc LD920
|
|
lda LD920
|
|
jmp update_list_selection
|
|
|
|
L5B47: lda #0
|
|
jmp update_list_selection
|
|
.endproc
|
|
|
|
.proc key_up
|
|
lda $177F
|
|
beq L5B58
|
|
lda LD920
|
|
bmi L5B68
|
|
bne L5B59
|
|
L5B58: rts
|
|
|
|
L5B59: jsr L6274
|
|
jsr jt_strip_path_segment
|
|
dec LD920
|
|
lda LD920
|
|
jmp update_list_selection
|
|
|
|
L5B68: ldx $177F
|
|
dex
|
|
txa
|
|
jmp update_list_selection
|
|
.endproc
|
|
|
|
L5B70: cmp #'A' ; upper alpha?
|
|
bcs :+
|
|
done: rts
|
|
: cmp #'Z'+1
|
|
bcc L5B83
|
|
cmp #'a' ; Lower alpha?
|
|
bcc done
|
|
cmp #'z'+1
|
|
bcs done
|
|
and #$5F ; convert lowercase to uppercase
|
|
|
|
L5B83: jsr L5B9D
|
|
bmi done
|
|
cmp LD920
|
|
beq done
|
|
pha
|
|
lda LD920
|
|
bmi L5B99
|
|
jsr L6274
|
|
jsr jt_strip_path_segment
|
|
L5B99: pla
|
|
jmp update_list_selection
|
|
|
|
L5B9D: sta L5BF5
|
|
lda #0
|
|
sta L5BF3
|
|
L5BA5: lda L5BF3
|
|
cmp $177F
|
|
beq L5BC4
|
|
jsr L5BCB
|
|
ldy #1
|
|
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
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc scroll_list_top
|
|
lda $177F
|
|
beq L5C02
|
|
lda LD920
|
|
bmi L5C09
|
|
bne L5C03
|
|
L5C02: rts
|
|
|
|
L5C03: jsr L6274
|
|
jsr jt_strip_path_segment
|
|
L5C09: lda #$00
|
|
jmp update_list_selection
|
|
.endproc
|
|
|
|
.proc scroll_list_bottom
|
|
lda $177F
|
|
beq L5C1E
|
|
ldx LD920
|
|
bmi L5C27
|
|
inx
|
|
cpx $177F
|
|
bne L5C1F
|
|
L5C1E: rts
|
|
|
|
L5C1F: dex
|
|
txa
|
|
jsr L6274
|
|
jsr jt_strip_path_segment
|
|
L5C27: ldx $177F
|
|
dex
|
|
txa
|
|
jmp update_list_selection
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc update_list_selection
|
|
sta LD920
|
|
jsr jt_05
|
|
lda LD920
|
|
jsr L6586
|
|
jsr L6163
|
|
jsr L606D
|
|
|
|
copy #1, path_buf2
|
|
copy #' ', path_buf2+1
|
|
|
|
jsr jt_redraw_input
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
PAD_TO $5CF7 ; Maintain previous addresses
|
|
|
|
;;; ============================================================
|
|
|
|
.proc create_common_dialog
|
|
MGTK_RELAY_CALL MGTK::OpenWindow, winfo_entrydlg
|
|
MGTK_RELAY_CALL MGTK::OpenWindow, winfo_entrydlg_file_picker
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::FrameRect, common_dialog_frame_rect
|
|
MGTK_RELAY_CALL MGTK::FrameRect, common_ok_button_rect
|
|
MGTK_RELAY_CALL MGTK::FrameRect, common_open_button_rect
|
|
MGTK_RELAY_CALL MGTK::FrameRect, common_close_button_rect
|
|
MGTK_RELAY_CALL MGTK::FrameRect, common_cancel_button_rect
|
|
MGTK_RELAY_CALL MGTK::FrameRect, common_change_drive_button_rect
|
|
jsr draw_ok_button_label
|
|
jsr draw_open_button_label
|
|
jsr draw_close_button_label
|
|
jsr draw_cancel_button_label
|
|
jsr draw_change_drive_button_label
|
|
MGTK_RELAY_CALL MGTK::MoveTo, common_dialog_sep_start
|
|
MGTK_RELAY_CALL MGTK::LineTo, common_dialog_sep_end
|
|
MGTK_RELAY_CALL MGTK::InitPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport3
|
|
rts
|
|
.endproc
|
|
|
|
draw_ok_button_label:
|
|
MGTK_RELAY_CALL MGTK::MoveTo, ok_button_pos
|
|
addr_call draw_string, ok_button_label
|
|
rts
|
|
|
|
draw_open_button_label:
|
|
MGTK_RELAY_CALL MGTK::MoveTo, open_button_pos
|
|
addr_call draw_string, open_button_label
|
|
rts
|
|
|
|
draw_close_button_label:
|
|
MGTK_RELAY_CALL MGTK::MoveTo, close_button_pos
|
|
addr_call draw_string, close_button_label
|
|
rts
|
|
|
|
draw_cancel_button_label:
|
|
MGTK_RELAY_CALL MGTK::MoveTo, cancel_button_pos
|
|
addr_call draw_string, cancel_button_label
|
|
rts
|
|
|
|
draw_change_drive_button_label:
|
|
MGTK_RELAY_CALL MGTK::MoveTo, change_drive_button_pos
|
|
addr_call draw_string, change_drive_button_label
|
|
rts
|
|
|
|
;;; ============================================================
|
|
|
|
.proc copy_string_to_lcbuf
|
|
ptr := $06
|
|
|
|
stax ptr
|
|
ldy #0
|
|
lda (ptr),y
|
|
tay
|
|
: lda (ptr),y
|
|
sta temp_string_buf,y
|
|
dey
|
|
bpl :-
|
|
ldax #temp_string_buf
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc draw_string
|
|
jsr copy_string_to_lcbuf
|
|
stax $06
|
|
ldy #$00
|
|
lda ($06),y
|
|
sta $08
|
|
inc16 $06
|
|
MGTK_RELAY_CALL MGTK::DrawText, $06
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc L5E0A
|
|
jsr copy_string_to_lcbuf
|
|
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 pos_D90B
|
|
lda L5E56
|
|
sbc $0A
|
|
sta pos_D90B+1
|
|
MGTK_RELAY_CALL MGTK::MoveTo, pos_D90B
|
|
MGTK_RELAY_CALL MGTK::DrawText, $06
|
|
rts
|
|
|
|
L5E56: .byte 0
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
L5E57: jsr copy_string_to_lcbuf
|
|
stax $06
|
|
MGTK_RELAY_CALL MGTK::MoveTo, common_input1_label_pos
|
|
ldax $06
|
|
jsr draw_string
|
|
rts
|
|
|
|
;;; ============================================================
|
|
|
|
L5E6F: jsr copy_string_to_lcbuf
|
|
stax $06
|
|
MGTK_RELAY_CALL MGTK::MoveTo, common_input2_label_pos
|
|
ldax $06
|
|
jsr draw_string
|
|
rts
|
|
|
|
;;; ============================================================
|
|
|
|
.proc device_on_line
|
|
: ldx device_num
|
|
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 found
|
|
jsr inc_device_num
|
|
jmp :-
|
|
|
|
found: lda #0
|
|
sta path_buf
|
|
addr_call L5F0D, on_line_buffer
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc inc_device_num
|
|
inc device_num
|
|
lda device_num
|
|
cmp DEVCNT
|
|
beq :+
|
|
bcc :+
|
|
lda #0
|
|
sta device_num
|
|
: rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
|
|
L5ECB: lda #$00
|
|
sta L5F0C
|
|
L5ED0: yax_call MLI_RELAY, OPEN, open_params
|
|
beq L5EE9
|
|
jsr device_on_line
|
|
lda #$FF
|
|
sta LD920
|
|
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 device_on_line
|
|
lda #$FF
|
|
sta LD920
|
|
sta L5F0C
|
|
jmp L5ED0
|
|
|
|
L5F0B: rts
|
|
|
|
L5F0C: .byte 0
|
|
L5F0D: jsr copy_string_to_lcbuf
|
|
stax $06
|
|
ldx path_buf
|
|
lda #'/'
|
|
sta path_buf+1,x
|
|
inc path_buf
|
|
ldy #0
|
|
lda ($06),y
|
|
tay
|
|
clc
|
|
adc path_buf
|
|
cmp #'A'
|
|
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 LD920
|
|
return #$00
|
|
|
|
;;; ============================================================
|
|
|
|
L5F49: ldx path_buf
|
|
cpx #$00
|
|
beq L5F5A
|
|
dec path_buf
|
|
lda path_buf,x
|
|
cmp #'/'
|
|
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 winfo_entrydlg_file_picker
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::PaintRect, winfo_entrydlg_file_picker::cliprect
|
|
lda #$10
|
|
sta picker_entry_pos
|
|
lda #$08
|
|
sta picker_entry_pos+2
|
|
lda #$00
|
|
sta picker_entry_pos+3
|
|
sta L6128
|
|
L608E: lda L6128
|
|
cmp $177F
|
|
bne L60A9
|
|
MGTK_RELAY_CALL MGTK::InitPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport3
|
|
rts
|
|
|
|
L60A9: MGTK_RELAY_CALL MGTK::MoveTo, picker_entry_pos
|
|
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 draw_string
|
|
ldx L6128
|
|
lda $1780,x
|
|
bpl L60FF
|
|
lda #$01
|
|
sta picker_entry_pos
|
|
MGTK_RELAY_CALL MGTK::MoveTo, picker_entry_pos
|
|
addr_call draw_string, str_folder
|
|
lda #$10
|
|
sta picker_entry_pos
|
|
L60FF: lda L6128
|
|
cmp LD920
|
|
bne L6110
|
|
jsr L6274
|
|
lda winfo_entrydlg_file_picker
|
|
jsr set_port_for_window
|
|
L6110: inc L6128
|
|
add16 picker_entry_pos+2, #8, picker_entry_pos+2
|
|
jmp L608E
|
|
|
|
L6127: .byte 0
|
|
L6128: .byte 0
|
|
|
|
PAD_TO $6161 ; Maintain previous addresses
|
|
|
|
;;; ============================================================
|
|
|
|
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 winfo_entrydlg_file_picker::vthumbmax
|
|
.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 winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::PaintRect, rect_D9C8
|
|
copy16 #path_buf, $06
|
|
ldy #$00
|
|
lda ($06),y
|
|
sta L6226
|
|
iny
|
|
L61D0: iny
|
|
lda ($06),y
|
|
cmp #'/'
|
|
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 desktop_main::adjust_case, $0220
|
|
MGTK_RELAY_CALL MGTK::MoveTo, disk_label_pos
|
|
addr_call draw_string, disk_label
|
|
addr_call draw_string, $0220
|
|
MGTK_RELAY_CALL MGTK::InitPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport3
|
|
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 winfo_entrydlg_file_picker::cliprect+2
|
|
ldx L6273
|
|
stx winfo_entrydlg_file_picker::cliprect+3
|
|
clc
|
|
adc #70
|
|
sta winfo_entrydlg_file_picker::cliprect+6
|
|
lda L6273
|
|
adc #0
|
|
sta winfo_entrydlg_file_picker::cliprect+7
|
|
rts
|
|
|
|
L6273: .byte 0
|
|
|
|
|
|
L6274: ldx #0
|
|
stx L62C7
|
|
asl a
|
|
rol L62C7
|
|
asl a
|
|
rol L62C7
|
|
asl a
|
|
rol L62C7
|
|
sta rect_D90F+2
|
|
ldx L62C7
|
|
stx rect_D90F+3
|
|
clc
|
|
adc #7
|
|
sta rect_D90F+6
|
|
lda L62C7
|
|
adc #0
|
|
sta rect_D90F+7
|
|
lda winfo_entrydlg_file_picker
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, rect_D90F
|
|
MGTK_RELAY_CALL MGTK::InitPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport3
|
|
rts
|
|
|
|
L62C7: .byte 0
|
|
|
|
;;; ============================================================
|
|
|
|
.proc set_port_for_window
|
|
sta getwinport_params2::window_id
|
|
MGTK_RELAY_CALL MGTK::GetWinPort, getwinport_params2
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport2
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
L62DE: lda #'Z'
|
|
ldx #15
|
|
: sta L63C2,x
|
|
dex
|
|
bpl :-
|
|
|
|
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 #' '
|
|
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
|
|
|
|
lda #'Z'
|
|
ldx #15
|
|
: sta L63C2,x
|
|
dex
|
|
bpl :-
|
|
|
|
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 #'/'
|
|
bne L64DE
|
|
dey
|
|
lda ($06),y
|
|
cmp #$02
|
|
bcc L64DE
|
|
tay
|
|
lda ($06),y
|
|
cmp #'/'
|
|
beq L64DE
|
|
ldx #$00
|
|
stx L64E1
|
|
L649B: lda ($06),y
|
|
cmp #'/'
|
|
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 #CHAR_MASK
|
|
cmp #'.'
|
|
beq L64D8
|
|
cmp #'/'
|
|
bcc L64DE
|
|
cmp #'9'+1
|
|
bcc L64D8
|
|
cmp #'A'
|
|
bcc L64DE
|
|
cmp #'Z'+1
|
|
bcc L64D8
|
|
cmp #'a'
|
|
bcc L64DE
|
|
cmp #'z'+1
|
|
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
|
|
addr_call_indirect desktop_main::adjust_case, $06
|
|
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
|
|
|
|
;;; ============================================================
|
|
|
|
.proc blink_f1_ip
|
|
ptr := $06
|
|
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
jsr calc_path_buf0_input1_endpos
|
|
stax $06
|
|
copy16 common_input1_textpos+2, $08
|
|
MGTK_RELAY_CALL MGTK::MoveTo, ptr
|
|
bit prompt_ip_flag
|
|
bpl bg2
|
|
|
|
MGTK_RELAY_CALL MGTK::SetTextBG, textbg1
|
|
copy #$00, prompt_ip_flag
|
|
beq :+
|
|
|
|
bg2: MGTK_RELAY_CALL MGTK::SetTextBG, textbg2
|
|
copy #$FF, prompt_ip_flag
|
|
|
|
: copy16 #str_insertion_point+1, ptr
|
|
lda str_insertion_point
|
|
sta $08
|
|
MGTK_RELAY_CALL MGTK::DrawText, ptr
|
|
jsr L56E3
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc blink_f2_ip
|
|
ptr := $06
|
|
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
jsr calc_path_buf1_input2_endpos
|
|
stax $06
|
|
copy16 common_input2_textpos+2, $08
|
|
MGTK_RELAY_CALL MGTK::MoveTo, ptr
|
|
bit prompt_ip_flag
|
|
bpl bg2
|
|
|
|
MGTK_RELAY_CALL MGTK::SetTextBG, textbg1
|
|
copy #$00, prompt_ip_flag
|
|
jmp :+
|
|
|
|
bg2: MGTK_RELAY_CALL MGTK::SetTextBG, textbg2
|
|
copy #$FF, prompt_ip_flag
|
|
|
|
: copy16 #str_insertion_point+1, ptr
|
|
lda str_insertion_point
|
|
sta $08
|
|
MGTK_RELAY_CALL MGTK::DrawText, ptr
|
|
jsr L56E3
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc redraw_f1
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_input1_rect
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::FrameRect, common_input1_rect
|
|
MGTK_RELAY_CALL MGTK::MoveTo, common_input1_textpos
|
|
lda path_buf0
|
|
beq :+
|
|
addr_call draw_string, path_buf0
|
|
: addr_call draw_string, path_buf2
|
|
addr_call draw_string, str_2_spaces
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc redraw_f2
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::PaintRect, common_input2_rect
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::FrameRect, common_input2_rect
|
|
MGTK_RELAY_CALL MGTK::MoveTo, common_input2_textpos
|
|
lda path_buf1
|
|
beq :+
|
|
addr_call draw_string, path_buf1
|
|
: addr_call draw_string, path_buf2
|
|
addr_call draw_string, str_2_spaces
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f1_click
|
|
lda winfo_entrydlg
|
|
sta screentowindow_window_id
|
|
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
|
|
MGTK_RELAY_CALL MGTK::InRect, common_input1_rect
|
|
cmp #MGTK::inrect_inside
|
|
beq L6719
|
|
bit L5104
|
|
bpl L6718
|
|
MGTK_RELAY_CALL MGTK::InRect, common_input2_rect
|
|
cmp #MGTK::inrect_inside
|
|
bne L6718
|
|
jmp jt_handle_ok
|
|
|
|
L6718: rts
|
|
|
|
L6719: jsr calc_path_buf0_input1_endpos
|
|
stax $06
|
|
cmp16 screentowindow_windowx, $06
|
|
bcs L672F
|
|
jmp L67C4
|
|
|
|
L672F: jsr calc_path_buf0_input1_endpos
|
|
stax L684D
|
|
ldx path_buf2
|
|
inx
|
|
lda #' '
|
|
sta path_buf2,x
|
|
inc path_buf2
|
|
copy16 #path_buf2, $06
|
|
lda path_buf2
|
|
sta $08
|
|
L6751: MGTK_RELAY_CALL MGTK::TextWidth, $06
|
|
add16 $09, L684D, $09
|
|
cmp16 $09, screentowindow_windowx
|
|
bcc L6783
|
|
dec $08
|
|
lda $08
|
|
cmp #$01
|
|
bne L6751
|
|
dec path_buf2
|
|
jmp L6846
|
|
|
|
L6783: lda $08
|
|
cmp path_buf2
|
|
bcc L6790
|
|
dec path_buf2
|
|
jmp handle_f1_meta_right_key
|
|
|
|
L6790: ldx #$02
|
|
ldy path_buf0
|
|
iny
|
|
L6796: lda path_buf2,x
|
|
sta path_buf0,y
|
|
cpx $08
|
|
beq L67A5
|
|
iny
|
|
inx
|
|
jmp L6796
|
|
|
|
L67A5: sty path_buf0
|
|
ldy #$02
|
|
ldx $08
|
|
inx
|
|
L67AD: lda path_buf2,x
|
|
sta path_buf2,y
|
|
cpx path_buf2
|
|
beq L67BD
|
|
iny
|
|
inx
|
|
jmp L67AD
|
|
|
|
L67BD: dey
|
|
sty path_buf2
|
|
jmp L6846
|
|
|
|
L67C4: copy16 #path_buf0, $06
|
|
lda path_buf0
|
|
sta $08
|
|
L67D1: MGTK_RELAY_CALL MGTK::TextWidth, $06
|
|
add16 $09, common_input1_textpos, $09
|
|
cmp16 $09, screentowindow_windowx
|
|
bcc L6800
|
|
dec $08
|
|
lda $08
|
|
cmp #$01
|
|
bcs L67D1
|
|
jmp handle_f1_meta_left_key
|
|
|
|
L6800: inc $08
|
|
ldy #$00
|
|
ldx $08
|
|
L6806: cpx path_buf0
|
|
beq L6816
|
|
inx
|
|
iny
|
|
lda path_buf0,x
|
|
sta LD3C1+1,y
|
|
jmp L6806
|
|
|
|
L6816: iny
|
|
sty LD3C1
|
|
ldx #$01
|
|
ldy LD3C1
|
|
L681F: cpx path_buf2
|
|
beq L682F
|
|
inx
|
|
iny
|
|
lda path_buf2,x
|
|
sta LD3C1,y
|
|
jmp L681F
|
|
|
|
L682F: sty LD3C1
|
|
lda str_insertion_point+1
|
|
sta LD3C1+1
|
|
L6838: lda LD3C1,y
|
|
sta path_buf2,y
|
|
dey
|
|
bpl L6838
|
|
lda $08
|
|
sta path_buf0
|
|
L6846: jsr jt_redraw_input
|
|
jsr L6EA3
|
|
rts
|
|
|
|
L684D: .word 0
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f2_click
|
|
lda winfo_entrydlg
|
|
sta screentowindow_window_id
|
|
MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx
|
|
MGTK_RELAY_CALL MGTK::InRect, common_input2_rect
|
|
cmp #MGTK::inrect_inside
|
|
beq L6890
|
|
bit L5104
|
|
bpl L688F
|
|
MGTK_RELAY_CALL MGTK::InRect, common_input1_rect
|
|
cmp #MGTK::inrect_inside
|
|
bne L688F
|
|
jmp jt_handle_cancel
|
|
|
|
L688F: rts
|
|
|
|
L6890: jsr calc_path_buf1_input2_endpos
|
|
stax $06
|
|
cmp16 screentowindow_windowx, $06
|
|
bcs L68A6
|
|
jmp L693B
|
|
|
|
L68A6: jsr calc_path_buf1_input2_endpos
|
|
stax L69C4
|
|
ldx path_buf2
|
|
inx
|
|
lda #' '
|
|
sta path_buf2,x
|
|
inc path_buf2
|
|
copy16 #path_buf2, $06
|
|
lda path_buf2
|
|
sta $08
|
|
L68C8: MGTK_RELAY_CALL MGTK::TextWidth, $06
|
|
add16 $09, L69C4, $09
|
|
cmp16 $09, screentowindow_windowx
|
|
bcc L68FA
|
|
dec $08
|
|
lda $08
|
|
cmp #$01
|
|
bne L68C8
|
|
dec path_buf2
|
|
jmp L69BD
|
|
|
|
L68FA: lda $08
|
|
cmp path_buf2
|
|
bcc L6907
|
|
dec path_buf2
|
|
jmp handle_f2_meta_right_key
|
|
|
|
L6907: ldx #$02
|
|
ldy path_buf1
|
|
iny
|
|
L690D: lda path_buf2,x
|
|
sta path_buf1,y
|
|
cpx $08
|
|
beq L691C
|
|
iny
|
|
inx
|
|
jmp L690D
|
|
|
|
L691C: sty path_buf1
|
|
ldy #$02
|
|
ldx $08
|
|
inx
|
|
L6924: lda path_buf2,x
|
|
sta path_buf2,y
|
|
cpx path_buf2
|
|
beq L6934
|
|
iny
|
|
inx
|
|
jmp L6924
|
|
|
|
L6934: dey
|
|
sty path_buf2
|
|
jmp L69BD
|
|
|
|
L693B: copy16 #path_buf1, $06
|
|
lda path_buf1
|
|
sta $08
|
|
L6948: MGTK_RELAY_CALL MGTK::TextWidth, $06
|
|
add16 $09, common_input2_textpos, $09
|
|
cmp16 $09, screentowindow_windowx
|
|
bcc L6977
|
|
dec $08
|
|
lda $08
|
|
cmp #$01
|
|
bcs L6948
|
|
jmp handle_f2_meta_left_key
|
|
|
|
L6977: inc $08
|
|
ldy #$00
|
|
ldx $08
|
|
L697D: cpx path_buf1
|
|
beq L698D
|
|
inx
|
|
iny
|
|
lda path_buf1,x
|
|
sta LD3C1+1,y
|
|
jmp L697D
|
|
|
|
L698D: iny
|
|
sty LD3C1
|
|
ldx #$01
|
|
ldy LD3C1
|
|
L6996: cpx path_buf2
|
|
beq L69A6
|
|
inx
|
|
iny
|
|
lda path_buf2,x
|
|
sta LD3C1,y
|
|
jmp L6996
|
|
|
|
L69A6: sty LD3C1
|
|
lda str_insertion_point+1
|
|
sta LD3C1+1
|
|
L69AF: lda LD3C1,y
|
|
sta path_buf2,y
|
|
dey
|
|
bpl L69AF
|
|
lda $08
|
|
sta path_buf1
|
|
L69BD: jsr jt_redraw_input
|
|
jsr L6E9F
|
|
rts
|
|
|
|
L69C4: .word 0
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f1_other_key
|
|
sta L6A17
|
|
lda path_buf0
|
|
clc
|
|
adc path_buf2
|
|
cmp #$3F
|
|
bcc L69D5
|
|
rts
|
|
|
|
L69D5: lda L6A17
|
|
ldx path_buf0
|
|
inx
|
|
sta path_buf0,x
|
|
sta str_1_char+1
|
|
jsr calc_path_buf0_input1_endpos
|
|
inc path_buf0
|
|
stax $06
|
|
copy16 common_input1_textpos+2, $08
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::MoveTo, $06
|
|
addr_call draw_string, str_1_char
|
|
addr_call draw_string, path_buf2
|
|
jsr L6EA3
|
|
rts
|
|
|
|
L6A17: .byte 0
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f1_delete_key
|
|
lda path_buf0
|
|
bne L6A1E
|
|
rts
|
|
|
|
L6A1E: dec path_buf0
|
|
jsr calc_path_buf0_input1_endpos
|
|
stax $06
|
|
copy16 common_input1_textpos+2, $08
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::MoveTo, $06
|
|
addr_call draw_string, path_buf2
|
|
addr_call draw_string, str_2_spaces
|
|
jsr L6EA3
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f1_left_key
|
|
lda path_buf0
|
|
bne L6A59
|
|
rts
|
|
|
|
L6A59: ldx path_buf2
|
|
cpx #$01
|
|
beq L6A6B
|
|
L6A60: lda path_buf2,x
|
|
sta path_buf2+1,x
|
|
dex
|
|
cpx #$01
|
|
bne L6A60
|
|
L6A6B: ldx path_buf0
|
|
lda path_buf0,x
|
|
sta path_buf2+2
|
|
dec path_buf0
|
|
inc path_buf2
|
|
jsr calc_path_buf0_input1_endpos
|
|
stax $06
|
|
copy16 common_input1_textpos+2, $08
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::MoveTo, $06
|
|
addr_call draw_string, path_buf2
|
|
addr_call draw_string, str_2_spaces
|
|
jsr L6EA3
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f1_right_key
|
|
lda path_buf2
|
|
cmp #$02
|
|
bcs L6AB4
|
|
rts
|
|
|
|
L6AB4: ldx path_buf0
|
|
inx
|
|
lda path_buf2+2
|
|
sta path_buf0,x
|
|
inc path_buf0
|
|
ldx path_buf2
|
|
cpx #$03
|
|
bcc L6AD6
|
|
ldx #$02
|
|
L6ACA: lda path_buf2+1,x
|
|
sta path_buf2,x
|
|
inx
|
|
cpx path_buf2
|
|
bne L6ACA
|
|
L6AD6: dec path_buf2
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::MoveTo, common_input1_textpos
|
|
addr_call draw_string, path_buf0
|
|
addr_call draw_string, path_buf2
|
|
addr_call draw_string, str_2_spaces
|
|
jsr L6EA3
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f1_meta_left_key
|
|
lda path_buf0
|
|
bne L6B07
|
|
rts
|
|
|
|
L6B07: ldy path_buf0
|
|
lda path_buf2
|
|
cmp #$02
|
|
bcc L6B20
|
|
ldx #$01
|
|
L6B13: iny
|
|
inx
|
|
lda path_buf2,x
|
|
sta path_buf0,y
|
|
cpx path_buf2
|
|
bne L6B13
|
|
L6B20: sty path_buf0
|
|
L6B23: lda path_buf0,y
|
|
sta path_buf2+1,y
|
|
dey
|
|
bne L6B23
|
|
ldx path_buf0
|
|
inx
|
|
stx path_buf2
|
|
lda #GLYPH_INSPT
|
|
sta path_buf2+1
|
|
lda #$00
|
|
sta path_buf0
|
|
jsr jt_redraw_input
|
|
jsr L6EA3
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f1_meta_right_key
|
|
lda path_buf2
|
|
cmp #$02
|
|
bcs L6B4C
|
|
rts
|
|
|
|
L6B4C: ldx #$01
|
|
ldy path_buf0
|
|
L6B51: inx
|
|
iny
|
|
lda path_buf2,x
|
|
sta path_buf0,y
|
|
cpx path_buf2
|
|
bne L6B51
|
|
sty path_buf0
|
|
copy #1, path_buf2
|
|
copy #GLYPH_INSPT, path_buf2+1
|
|
jsr jt_redraw_input
|
|
jsr L6EA3
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f2_other_key
|
|
sta L6BC3
|
|
lda path_buf1
|
|
clc
|
|
adc path_buf2
|
|
cmp #$3F
|
|
bcc L6B81
|
|
rts
|
|
|
|
L6B81: lda L6BC3
|
|
ldx path_buf1
|
|
inx
|
|
sta path_buf1,x
|
|
sta str_1_char+1
|
|
jsr calc_path_buf1_input2_endpos
|
|
inc path_buf1
|
|
stax $06
|
|
copy16 common_input2_textpos+2, $08
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::MoveTo, $06
|
|
addr_call draw_string, str_1_char
|
|
addr_call draw_string, path_buf2
|
|
jsr L6E9F
|
|
rts
|
|
|
|
L6BC3: .byte 0
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f2_delete_key
|
|
lda path_buf1
|
|
bne L6BCA
|
|
rts
|
|
|
|
L6BCA: dec path_buf1
|
|
jsr calc_path_buf1_input2_endpos
|
|
stax $06
|
|
copy16 common_input2_textpos+2, $08
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::MoveTo, $06
|
|
addr_call draw_string, path_buf2
|
|
addr_call draw_string, str_2_spaces
|
|
jsr L6E9F
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f2_left_key
|
|
lda path_buf1
|
|
bne L6C05
|
|
rts
|
|
|
|
L6C05: ldx path_buf2
|
|
cpx #$01
|
|
beq L6C17
|
|
L6C0C: lda path_buf2,x
|
|
sta path_buf2+1,x
|
|
dex
|
|
cpx #$01
|
|
bne L6C0C
|
|
L6C17: ldx path_buf1
|
|
lda path_buf1,x
|
|
sta path_buf2+2
|
|
dec path_buf1
|
|
inc path_buf2
|
|
jsr calc_path_buf1_input2_endpos
|
|
stax $06
|
|
copy16 common_input2_textpos+2, $08
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::MoveTo, $06
|
|
addr_call draw_string, path_buf2
|
|
addr_call draw_string, str_2_spaces
|
|
jsr L6E9F
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f2_right_key
|
|
lda path_buf2
|
|
cmp #$02
|
|
bcs L6C60
|
|
rts
|
|
|
|
L6C60: ldx path_buf1
|
|
inx
|
|
lda path_buf2+2
|
|
sta path_buf1,x
|
|
inc path_buf1
|
|
ldx path_buf2
|
|
cpx #$03
|
|
bcc L6C82
|
|
ldx #$02
|
|
L6C76: lda path_buf2+1,x
|
|
sta path_buf2,x
|
|
inx
|
|
cpx path_buf2
|
|
bne L6C76
|
|
L6C82: dec path_buf2
|
|
lda winfo_entrydlg
|
|
jsr set_port_for_window
|
|
MGTK_RELAY_CALL MGTK::MoveTo, common_input2_textpos
|
|
addr_call draw_string, path_buf1
|
|
addr_call draw_string, path_buf2
|
|
addr_call draw_string, str_2_spaces
|
|
jsr L6E9F
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f2_meta_left_key
|
|
lda path_buf1
|
|
bne L6CB3
|
|
rts
|
|
|
|
L6CB3: ldy path_buf1
|
|
lda path_buf2
|
|
cmp #$02
|
|
bcc L6CCC
|
|
ldx #$01
|
|
L6CBF: iny
|
|
inx
|
|
lda path_buf2,x
|
|
sta path_buf1,y
|
|
cpx path_buf2
|
|
bne L6CBF
|
|
L6CCC: sty path_buf1
|
|
L6CCF: lda path_buf1,y
|
|
sta path_buf2+1,y
|
|
dey
|
|
bne L6CCF
|
|
ldx path_buf1
|
|
inx
|
|
stx path_buf2
|
|
lda #GLYPH_INSPT
|
|
sta path_buf2+1
|
|
lda #$00
|
|
sta path_buf1
|
|
jsr jt_redraw_input
|
|
jsr L6E9F
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc handle_f2_meta_right_key
|
|
lda path_buf2
|
|
cmp #$02
|
|
bcs L6CF8
|
|
rts
|
|
|
|
L6CF8: ldx #$01
|
|
ldy path_buf1
|
|
L6CFD: inx
|
|
iny
|
|
lda path_buf2,x
|
|
sta path_buf1,y
|
|
cpx path_buf2
|
|
bne L6CFD
|
|
sty path_buf1
|
|
copy #1, path_buf2
|
|
copy #GLYPH_INSPT, path_buf2+1
|
|
jsr jt_redraw_input
|
|
jsr L6E9F
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
;;; Dynamically altered table of handlers for focused
|
|
;;; input field (e.g. source/destination filename, etc)
|
|
jump_table:
|
|
jt_handle_ok: jmp 0
|
|
jt_handle_cancel: jmp 0
|
|
jt_blink_ip: jmp 0
|
|
jt_redraw_input: jmp 0
|
|
jt_strip_path_segment: jmp 0
|
|
jt_05: jmp 0
|
|
jt_prep_path: jmp 0
|
|
jt_handle_other_key: jmp 0
|
|
jt_handle_delete_key: jmp 0
|
|
jt_handle_left_key: jmp 0
|
|
jt_handle_right_key: jmp 0
|
|
jt_handle_meta_left_key: jmp 0
|
|
jt_handle_meta_right_key: jmp 0
|
|
jt_handle_click: jmp 0
|
|
|
|
;;; ============================================================
|
|
|
|
.proc append_to_path_buf0
|
|
ptr := $06
|
|
|
|
stax ptr
|
|
|
|
ldx path_buf0
|
|
lda #'/'
|
|
sta path_buf0+1,x
|
|
inc path_buf0
|
|
|
|
ldy #0
|
|
lda (ptr),y
|
|
tay
|
|
clc
|
|
adc path_buf0
|
|
pha
|
|
tax
|
|
|
|
: lda (ptr),y
|
|
sta path_buf0,x
|
|
dey
|
|
dex
|
|
cpx path_buf0
|
|
bne :-
|
|
|
|
pla
|
|
sta path_buf0
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc append_to_path_buf1
|
|
ptr := $06
|
|
|
|
stax ptr
|
|
|
|
ldx path_buf1
|
|
lda #'/'
|
|
sta path_buf1+1,x
|
|
inc path_buf1
|
|
|
|
ldy #$00
|
|
lda (ptr),y
|
|
tay
|
|
clc
|
|
adc path_buf1
|
|
pha
|
|
tax
|
|
|
|
: lda (ptr),y
|
|
sta path_buf1,x
|
|
dey
|
|
dex
|
|
cpx path_buf1
|
|
bne :-
|
|
|
|
pla
|
|
sta path_buf1
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc strip_path_buf0_segment
|
|
: ldx path_buf0
|
|
cpx #0
|
|
beq :+
|
|
dec path_buf0
|
|
lda path_buf0,x
|
|
cmp #'/'
|
|
bne :-
|
|
: rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc strip_path_buf1_segment
|
|
: ldx path_buf1
|
|
cpx #0
|
|
beq :+
|
|
dec path_buf1
|
|
lda path_buf1,x
|
|
cmp #'/'
|
|
bne :-
|
|
: rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc strip_f1_path_segment
|
|
jsr strip_path_buf0_segment
|
|
jsr jt_redraw_input
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc strip_f2_path_segment
|
|
jsr strip_path_buf1_segment
|
|
jsr jt_redraw_input
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
jt_handle_f1_tbd05:
|
|
lda #$00
|
|
beq L6DD6
|
|
|
|
jt_handle_f2_tbd05:
|
|
lda #$80
|
|
|
|
.proc L6DD6
|
|
ptr := $06
|
|
|
|
sta flag
|
|
copy16 #$1800, ptr
|
|
ldx LD920
|
|
lda $1780,x
|
|
and #$7F
|
|
|
|
ldx #0
|
|
stx hi
|
|
asl a ; * 16
|
|
rol hi
|
|
asl a
|
|
rol hi
|
|
asl a
|
|
rol hi
|
|
asl a
|
|
rol hi
|
|
clc
|
|
adc ptr
|
|
tay
|
|
lda hi
|
|
adc ptr+1
|
|
tax
|
|
tya
|
|
|
|
bit flag
|
|
bpl f1
|
|
jsr append_to_path_buf1
|
|
jmp :+
|
|
|
|
f1: jsr append_to_path_buf0
|
|
|
|
: jsr jt_redraw_input
|
|
rts
|
|
|
|
hi: .byte 0 ; high byte
|
|
flag: .byte 0
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc prep_path_buf0
|
|
COPY_STRING path_buf, path_buf0
|
|
addr_call desktop_main::adjust_case, path_buf0
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc prep_path_buf1
|
|
COPY_STRING path_buf, path_buf1
|
|
addr_call desktop_main::adjust_case, path_buf1
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc calc_path_buf0_input1_endpos
|
|
str := $6
|
|
str_data := $6
|
|
str_len := $8
|
|
str_width := $9
|
|
|
|
lda #0
|
|
sta str_width
|
|
sta str_width+1
|
|
lda path_buf0
|
|
beq :+
|
|
|
|
sta str_len
|
|
copy16 #path_buf0+1, str_data
|
|
MGTK_RELAY_CALL MGTK::TextWidth, str
|
|
|
|
: lda str_width
|
|
clc
|
|
adc common_input1_textpos
|
|
tay
|
|
lda str_width+1
|
|
adc common_input1_textpos+1
|
|
tax
|
|
tya
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
.proc calc_path_buf1_input2_endpos
|
|
str := $6
|
|
str_data := $6
|
|
str_len := $8
|
|
str_width := $9
|
|
|
|
lda #0
|
|
sta str_width
|
|
sta str_width+1
|
|
lda path_buf1
|
|
beq :+
|
|
|
|
sta str_len
|
|
copy16 #path_buf1+1, str_data
|
|
MGTK_RELAY_CALL MGTK::TextWidth, str
|
|
|
|
: lda str_width
|
|
clc
|
|
adc common_input2_textpos
|
|
tay
|
|
lda str_width+1
|
|
adc common_input2_textpos+1
|
|
tax
|
|
tya
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
L6E9F: lda #$FF
|
|
bmi L6EA5
|
|
L6EA3: lda #$00
|
|
L6EA5: bmi L6EB6
|
|
ldx path_buf0
|
|
L6EAA: lda path_buf0,x
|
|
sta LD3C1,x
|
|
dex
|
|
bpl L6EAA
|
|
jmp L6EC2
|
|
|
|
L6EB6: ldx path_buf1
|
|
L6EB9: lda path_buf1,x
|
|
sta LD3C1,x
|
|
dex
|
|
bpl L6EB9
|
|
L6EC2: lda LD920
|
|
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 desktop_main::adjust_case, LD3C1
|
|
addr_call desktop_main::adjust_case, path_buf
|
|
lda LD3C1
|
|
cmp path_buf
|
|
bne L6F26
|
|
tax
|
|
L6F12: lda LD3C1,x
|
|
cmp path_buf,x
|
|
bne L6F26
|
|
dex
|
|
bne L6F12
|
|
lda #$00
|
|
sta LD8F0
|
|
jsr L6F2F
|
|
rts
|
|
|
|
L6F26: lda #$FF
|
|
sta LD8F0
|
|
jsr L6F2F
|
|
rts
|
|
|
|
L6F2F: lda L6F3D
|
|
sta LD920
|
|
bpl L6F38
|
|
rts
|
|
|
|
L6F38: jsr L5F49
|
|
rts
|
|
|
|
L6F3C: .byte 0
|
|
L6F3D: .byte 0
|
|
|
|
;;; ============================================================
|
|
|
|
PAD_TO $7000
|
|
|
|
.endproc ; common_overlay
|