mirror of
https://github.com/mi57730/a2d.git
synced 2024-11-01 10:05:56 +00:00
55544b8835
* Move filename case adjustment to directory enumeration * Don't adjust filename case if GS/OS upper/lowercase bitflags set * Details at GS/OS Tech Note #8 This is primarily for ProDOS 2.5 support. Note that volume names are not handled correctly yet - they are always case-adjusted.
455 lines
13 KiB
ArmAsm
455 lines
13 KiB
ArmAsm
;;; ============================================================
|
|
;;; Overlay for Selector (part of it, anyway)
|
|
;;; ============================================================
|
|
|
|
.proc selector_overlay
|
|
.org $7000
|
|
|
|
L7000: stx L73A9
|
|
sty L73AA
|
|
jsr common_overlay::create_common_dialog
|
|
jsr L7101
|
|
jsr L70AD
|
|
jsr common_overlay::device_on_line
|
|
lda path_buf0
|
|
beq L7056
|
|
ldy path_buf0
|
|
L7021: lda path_buf0,y
|
|
sta common_overlay::path_buf,y
|
|
dey
|
|
bpl L7021
|
|
jsr common_overlay::L5F49
|
|
ldy path_buf0
|
|
L7030: lda path_buf0,y
|
|
cmp #'/'
|
|
beq L7044
|
|
dey
|
|
cpy #$01
|
|
bne L7030
|
|
lda #$00
|
|
sta path_buf0
|
|
jmp L7056
|
|
|
|
L7044: ldx #$00
|
|
L7046: iny
|
|
inx
|
|
lda path_buf0,y
|
|
sta L709D,x
|
|
cpy path_buf0
|
|
bne L7046
|
|
stx L709D
|
|
L7056: jsr common_overlay::L5F5B
|
|
lda #$00
|
|
bcs L706A
|
|
addr_call common_overlay::L6516, L709D
|
|
sta LD920
|
|
jsr common_overlay::L6586
|
|
L706A: jsr common_overlay::L6163
|
|
jsr common_overlay::L61B1
|
|
jsr common_overlay::L606D
|
|
lda path_buf0
|
|
bne L707B
|
|
jsr common_overlay::jt_prep_path
|
|
L707B: copy #1, path_buf2
|
|
copy #' ', path_buf2+1
|
|
jsr common_overlay::jt_redraw_input
|
|
jsr common_overlay::redraw_f2
|
|
copy #1, path_buf2
|
|
copy #' ', path_buf2+1
|
|
lda #$FF
|
|
sta LD8EC
|
|
jmp common_overlay::L5106
|
|
|
|
;;; ============================================================
|
|
|
|
L709D: .res 16, 0
|
|
|
|
;;; ============================================================
|
|
|
|
|
|
L70AD: ldx jt_pathname
|
|
L70B0: lda jt_pathname+1,x
|
|
sta common_overlay::jump_table,x
|
|
dex
|
|
lda jt_pathname+1,x
|
|
sta common_overlay::jump_table,x
|
|
dex
|
|
dex
|
|
bpl L70B0
|
|
lda #$00
|
|
sta common_overlay::L51AE
|
|
lda #$80
|
|
sta common_overlay::L5104
|
|
copy #1, path_buf2
|
|
copy #GLYPH_INSPT, path_buf2+1
|
|
lda winfo_entrydlg
|
|
jsr common_overlay::set_port_for_window
|
|
lda L73A9
|
|
jsr L7467
|
|
lda L73AA
|
|
jsr L747B
|
|
lda #$80
|
|
sta common_overlay::L5103
|
|
copy16 #L73AB, common_overlay::L531B+1
|
|
copy16 #L74F4, common_overlay::L59B9::key_meta_digit+1
|
|
rts
|
|
|
|
L7101: lda winfo_entrydlg
|
|
jsr common_overlay::set_port_for_window
|
|
lda path_buf0
|
|
beq L7116
|
|
addr_call common_overlay::L5E0A, edit_an_entry_label
|
|
jmp L711D
|
|
|
|
L7116: addr_call common_overlay::L5E0A, add_an_entry_label
|
|
L711D: addr_call common_overlay::L5E6F, enter_the_full_pathname_label2
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR ; penXOR
|
|
MGTK_RELAY_CALL MGTK::FrameRect, common_input1_rect
|
|
MGTK_RELAY_CALL MGTK::FrameRect, common_input2_rect
|
|
addr_call common_overlay::L5E57, enter_the_full_pathname_label1
|
|
addr_call common_overlay::L5E6F, enter_the_name_to_appear_label
|
|
MGTK_RELAY_CALL MGTK::MoveTo, pos_D922
|
|
addr_call common_overlay::draw_string, add_a_new_entry_to_label
|
|
MGTK_RELAY_CALL MGTK::MoveTo, pos_D926
|
|
addr_call common_overlay::draw_string, run_list_label
|
|
MGTK_RELAY_CALL MGTK::MoveTo, pos_D92A
|
|
addr_call common_overlay::draw_string, other_run_list_label
|
|
MGTK_RELAY_CALL MGTK::MoveTo, pos_D92E
|
|
addr_call common_overlay::draw_string, down_load_label
|
|
MGTK_RELAY_CALL MGTK::MoveTo, pos_D932
|
|
addr_call common_overlay::draw_string, at_first_boot_label
|
|
MGTK_RELAY_CALL MGTK::MoveTo, pos_D936
|
|
addr_call common_overlay::draw_string, at_first_use_label
|
|
MGTK_RELAY_CALL MGTK::MoveTo, pos_D93A
|
|
addr_call common_overlay::draw_string, never_label
|
|
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::FrameRect, rect_D93E
|
|
MGTK_RELAY_CALL MGTK::FrameRect, rect_D946
|
|
MGTK_RELAY_CALL MGTK::FrameRect, rect_D94E
|
|
MGTK_RELAY_CALL MGTK::FrameRect, rect_D956
|
|
MGTK_RELAY_CALL MGTK::FrameRect, rect_D95E
|
|
MGTK_RELAY_CALL MGTK::InitPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport3
|
|
rts
|
|
|
|
;;; ============================================================
|
|
|
|
.byte $00
|
|
|
|
jt_pathname: .byte $29
|
|
jump_table_entry L725D
|
|
jump_table_entry L732F
|
|
jump_table_entry common_overlay::blink_f1_ip
|
|
jump_table_entry common_overlay::redraw_f1
|
|
jump_table_entry common_overlay::strip_f1_path_segment
|
|
jump_table_entry common_overlay::jt_handle_f1_tbd05
|
|
jump_table_entry common_overlay::prep_path_buf0
|
|
jump_table_entry common_overlay::handle_f1_other_key
|
|
jump_table_entry common_overlay::handle_f1_delete_key
|
|
jump_table_entry common_overlay::handle_f1_left_key
|
|
jump_table_entry common_overlay::handle_f1_right_key
|
|
jump_table_entry common_overlay::handle_f1_meta_left_key
|
|
jump_table_entry common_overlay::handle_f1_meta_right_key
|
|
jump_table_entry common_overlay::handle_f1_click
|
|
|
|
jt_entry_name: .byte $29
|
|
jump_table_entry L72CD
|
|
jump_table_entry L736C
|
|
jump_table_entry common_overlay::blink_f2_ip
|
|
jump_table_entry common_overlay::redraw_f2
|
|
jump_table_entry common_overlay::strip_f2_path_segment
|
|
jump_table_entry common_overlay::jt_handle_f2_tbd05
|
|
jump_table_entry common_overlay::prep_path_buf1
|
|
jump_table_entry common_overlay::handle_f2_other_key
|
|
jump_table_entry common_overlay::handle_f2_delete_key
|
|
jump_table_entry common_overlay::handle_f2_left_key
|
|
jump_table_entry common_overlay::handle_f2_right_key
|
|
jump_table_entry common_overlay::handle_f2_meta_left_key
|
|
jump_table_entry common_overlay::handle_f2_meta_right_key
|
|
jump_table_entry common_overlay::handle_f2_click
|
|
|
|
;;; ============================================================
|
|
|
|
L725D: copy #1, path_buf2
|
|
copy #' ', path_buf2+1
|
|
jsr common_overlay::jt_redraw_input
|
|
ldx jt_entry_name
|
|
L726D: lda jt_entry_name+1,x
|
|
sta common_overlay::jump_table,x
|
|
dex
|
|
lda jt_entry_name+1,x
|
|
sta common_overlay::jump_table,x
|
|
dex
|
|
dex
|
|
bpl L726D
|
|
lda #$80
|
|
sta common_overlay::L51AE
|
|
sta common_overlay::L5105
|
|
lda LD8F0
|
|
sta LD8F1
|
|
lda #$00
|
|
sta LD8F0
|
|
lda path_buf1
|
|
bne L72BF
|
|
lda #$00
|
|
sta path_buf1
|
|
ldx path_buf0
|
|
beq L72BF
|
|
L72A0: lda path_buf0,x
|
|
cmp #$2F
|
|
beq L72AD
|
|
dex
|
|
bne L72A0
|
|
jmp L72BF
|
|
|
|
L72AD: ldy #$00
|
|
L72AF: iny
|
|
inx
|
|
lda path_buf0,x
|
|
sta path_buf1,y
|
|
cpx path_buf0
|
|
bne L72AF
|
|
sty path_buf1
|
|
L72BF: copy #1, path_buf2
|
|
copy #GLYPH_INSPT, path_buf2+1
|
|
jsr common_overlay::jt_redraw_input
|
|
rts
|
|
|
|
L72CD: addr_call common_overlay::L647C, path_buf0
|
|
bne L72E2
|
|
lda path_buf1
|
|
beq L72E7
|
|
cmp #$0F
|
|
bcs L72E8
|
|
jmp L72EE
|
|
|
|
L72E2: lda #ERR_INVALID_PATHNAME
|
|
jsr JUMP_TABLE_ALERT_0
|
|
L72E7: rts
|
|
|
|
L72E8: lda #ERR_NAME_TOO_LONG
|
|
jsr JUMP_TABLE_ALERT_0
|
|
rts
|
|
|
|
L72EE: MGTK_RELAY_CALL MGTK::InitPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_entrydlg_file_picker
|
|
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_entrydlg
|
|
sta LD8EC
|
|
jsr common_overlay::set_cursor_pointer
|
|
copy16 #common_overlay::noop, common_overlay::L59B9::key_meta_digit+1
|
|
ldx common_overlay::stash_stack
|
|
txs
|
|
ldx L73A9
|
|
ldy L73AA
|
|
return #$00
|
|
|
|
L732F: MGTK_RELAY_CALL MGTK::InitPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::SetPort, grafport3
|
|
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_entrydlg_file_picker
|
|
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_entrydlg
|
|
lda #$00
|
|
sta LD8EC
|
|
jsr common_overlay::set_cursor_pointer
|
|
copy16 #common_overlay::noop, common_overlay::L59B9::key_meta_digit+1
|
|
ldx common_overlay::stash_stack
|
|
txs
|
|
return #$FF
|
|
|
|
L736C: copy #1, path_buf2
|
|
copy #' ', path_buf2+1
|
|
jsr common_overlay::jt_redraw_input
|
|
ldx jt_pathname
|
|
L737C: lda jt_pathname+1,x
|
|
sta common_overlay::jump_table,x
|
|
dex
|
|
lda jt_pathname+1,x
|
|
sta common_overlay::jump_table,x
|
|
dex
|
|
dex
|
|
bpl L737C
|
|
copy #1, path_buf2
|
|
copy #GLYPH_INSPT, path_buf2+1
|
|
jsr common_overlay::jt_redraw_input
|
|
lda #$00
|
|
sta common_overlay::L5105
|
|
sta common_overlay::L51AE
|
|
lda LD8F1
|
|
sta LD8F0
|
|
rts
|
|
|
|
L73A9: .byte 0
|
|
L73AA: .byte 0
|
|
|
|
L73AB: MGTK_RELAY_CALL MGTK::InRect, rect_D966
|
|
cmp #MGTK::inrect_inside
|
|
bne :+
|
|
jmp L73FE
|
|
: MGTK_RELAY_CALL MGTK::InRect, rect_D96E
|
|
cmp #MGTK::inrect_inside
|
|
bne :+
|
|
jmp L7413
|
|
: MGTK_RELAY_CALL MGTK::InRect, rect_D976
|
|
cmp #MGTK::inrect_inside
|
|
bne :+
|
|
jmp L7428
|
|
: MGTK_RELAY_CALL MGTK::InRect, rect_D97E
|
|
cmp #MGTK::inrect_inside
|
|
bne :+
|
|
jmp L743D
|
|
: MGTK_RELAY_CALL MGTK::InRect, rect_D986
|
|
cmp #MGTK::inrect_inside
|
|
bne :+
|
|
jmp L7452
|
|
: return #0
|
|
|
|
L73FE: lda L73A9
|
|
cmp #1
|
|
beq L7410
|
|
jsr L7467
|
|
lda #1
|
|
sta L73A9
|
|
jsr L7467
|
|
L7410: return #$FF
|
|
|
|
L7413: lda L73A9
|
|
cmp #2
|
|
beq L7425
|
|
jsr L7467
|
|
lda #2
|
|
sta L73A9
|
|
jsr L7467
|
|
L7425: return #$FF
|
|
|
|
L7428: lda L73AA
|
|
cmp #1
|
|
beq L743A
|
|
jsr L747B
|
|
lda #1
|
|
sta L73AA
|
|
jsr L747B
|
|
L743A: return #$FF
|
|
|
|
L743D: lda L73AA
|
|
cmp #2
|
|
beq L744F
|
|
jsr L747B
|
|
lda #2
|
|
sta L73AA
|
|
jsr L747B
|
|
L744F: return #$FF
|
|
|
|
L7452: lda L73AA
|
|
cmp #3
|
|
beq L7464
|
|
jsr L747B
|
|
lda #3
|
|
sta L73AA
|
|
jsr L747B
|
|
L7464: return #$FF
|
|
|
|
L7467: cmp #1
|
|
bne L7473
|
|
addr_call draw_inset_rect, rect_D93E
|
|
rts
|
|
|
|
L7473: addr_call draw_inset_rect, rect_D946
|
|
rts
|
|
|
|
L747B: cmp #1
|
|
bne L7487
|
|
addr_call draw_inset_rect, rect_D94E
|
|
rts
|
|
|
|
L7487: cmp #2
|
|
bne L7493
|
|
addr_call draw_inset_rect, rect_D956
|
|
rts
|
|
|
|
L7493: addr_call draw_inset_rect, rect_D95E
|
|
rts
|
|
|
|
;;; ============================================================
|
|
;;; Draw rect inset by 2px. Pointer to Rect in A,X.
|
|
|
|
.proc draw_inset_rect
|
|
ptr := $06
|
|
|
|
;; Copy to scratch rect
|
|
stax ptr
|
|
ldy #.sizeof(MGTK::Rect)-1
|
|
: lda (ptr),y
|
|
sta rect_scratch,y
|
|
dey
|
|
bpl :-
|
|
|
|
lda rect_scratch::x1
|
|
clc
|
|
adc #2
|
|
sta rect_scratch::x1
|
|
bcc :+
|
|
inc rect_scratch::x1+1
|
|
|
|
: lda rect_scratch::y1
|
|
clc
|
|
adc #2
|
|
sta rect_scratch::y1
|
|
bcc :+
|
|
inc rect_scratch::y1+1
|
|
|
|
: lda rect_scratch::x2
|
|
sec
|
|
sbc #2
|
|
sta rect_scratch::x2
|
|
bcs :+
|
|
dec rect_scratch::x2+1
|
|
|
|
: lda rect_scratch::y2
|
|
sec
|
|
sbc #2
|
|
sta rect_scratch::y2
|
|
bcs :+
|
|
dec rect_scratch::y2+1
|
|
|
|
: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
|
|
MGTK_RELAY_CALL MGTK::PaintRect, rect_scratch
|
|
rts
|
|
.endproc
|
|
|
|
;;; ============================================================
|
|
|
|
L74F4: lda winfo_entrydlg
|
|
jsr common_overlay::set_port_for_window
|
|
lda event_modifiers
|
|
bne L7500
|
|
rts
|
|
|
|
L7500: lda event_key
|
|
and #CHAR_MASK
|
|
cmp #'1'
|
|
bne L750C
|
|
jmp L73FE
|
|
|
|
L750C: cmp #'2'
|
|
bne L7513
|
|
jmp L7413
|
|
|
|
L7513: cmp #'3'
|
|
bne L751A
|
|
jmp L7428
|
|
|
|
L751A: cmp #'4'
|
|
bne L7521
|
|
jmp L743D
|
|
|
|
L7521: cmp #'5'
|
|
bne L7528
|
|
jmp L7452
|
|
|
|
L7528: rts
|
|
|
|
;;; ============================================================
|
|
|
|
PAD_TO $7800
|
|
.endproc ; selector_overlay
|