DAs and warning dialogs

This commit is contained in:
Joshua Bell
2018-01-23 08:33:12 -08:00
parent 0157cced14
commit 53314284ea
2 changed files with 188 additions and 126 deletions

View File

@@ -2,6 +2,9 @@
;;; DeskTop Internals ;;; DeskTop Internals
;;; ================================================== ;;; ==================================================
DA_LOAD_ADDRESS := $800
DA_MAX_SIZE := $1C00 - DA_LOAD_ADDRESS
;;; ================================================== ;;; ==================================================
;;; Direct Calls (from main memory) ;;; Direct Calls (from main memory)

View File

@@ -4888,7 +4888,8 @@ id_byte_2: .byte $EA ; ROM FBC0 ($EA = IIe, $E0 = IIe enh/IIgs, $
machine_type: machine_type:
.byte $00 ; Set to: $96 = IIe, $FA = IIc, $FD = IIgs .byte $00 ; Set to: $96 = IIe, $FA = IIc, $FD = IIgs
LD2AC: .byte $00 warning_dialog_num:
.byte $00
;;; Cursors (bitmap - 2x12 bytes, mask - 2x12 bytes, hotspot - 2 bytes) ;;; Cursors (bitmap - 2x12 bytes, mask - 2x12 bytes, hotspot - 2 bytes)
@@ -6142,7 +6143,7 @@ L4069: lda #$00
beq L4088 beq L4088
tay tay
jsr DESKTOP_SHOW_ALERT0 jsr DESKTOP_SHOW_ALERT0
L4088: jsr L4510 L4088: jsr reset_state2
inc L40DF inc L40DF
inc L40DF inc L40DF
lda L40DF lda L40DF
@@ -6170,7 +6171,7 @@ L40BD: cmp #$03
L40C7: cmp #$06 L40C7: cmp #$06
bne L40DC bne L40DC
jsr L4510 jsr reset_state2
lda desktop_winid lda desktop_winid
sta L40F0 sta L40F0
lda #$80 lda #$80
@@ -6190,7 +6191,7 @@ L40E0: tsx
L40F0: .byte $00 L40F0: .byte $00
L40F1: .byte $00 L40F1: .byte $00
redraw_windows: redraw_windows:
jsr L4510 jsr reset_state2
lda desktop_winid lda desktop_winid
sta L40F0 sta L40F0
lda #$00 lda #$00
@@ -6215,7 +6216,7 @@ L412B: lda #$00
lda L40F0 lda L40F0
sta desktop_winid sta desktop_winid
beq L4143 beq L4143
bit L4CA1 bit running_da_flag
bmi L4143 bmi L4143
jsr L4244 jsr L4244
L4143: bit L40F1 L4143: bit L40F1
@@ -6317,7 +6318,7 @@ L4227: lda #$00
jsr L6E6E jsr L6E6E
lda desktop_winid lda desktop_winid
jsr L8874 jsr L8874
jmp L4510 jmp reset_state2
L4241: .byte 0 L4241: .byte 0
L4242: .byte 0 L4242: .byte 0
@@ -6356,7 +6357,7 @@ L4296: lda LE22F
inc L42C3 inc L42C3
jmp L4270 jmp L4270
L42A2: jmp L4510 L42A2: jmp reset_state2
L42A5: lda L42C3 L42A5: lda L42C3
cmp is_file_selected cmp is_file_selected
@@ -6619,7 +6620,7 @@ L445D: jsr clear_selection
sta L445C sta L445C
jsr L8997 jsr L8997
DESKTOP_RELAY_CALL $02, LE22F DESKTOP_RELAY_CALL $02, LE22F
jsr L4510 jsr reset_state2
lda L445C lda L445C
sta selected_window_index sta selected_window_index
lda #$01 lda #$01
@@ -6658,7 +6659,7 @@ L4505: A2D_RELAY_CALL A2D_QUERY_STATE, query_state_params2
rts rts
L4510: A2D_RELAY_CALL A2D_QUERY_SCREEN, state2 reset_state2: A2D_RELAY_CALL A2D_QUERY_SCREEN, state2
A2D_RELAY_CALL A2D_SET_STATE, state2 A2D_RELAY_CALL A2D_SET_STATE, state2
rts rts
@@ -7104,9 +7105,11 @@ L48C2: lda $E196,x
bpl L48C2 bpl L48C2
rts rts
L48CC: sta LD2AC .proc show_warning_dialog_num
yax_call launch_dialog, $0C, LD2AC sta warning_dialog_num
yax_call launch_dialog, index_warning_dialog, warning_dialog_num
rts rts
.endproc
lda #$88 lda #$88
sta L48E4 sta L48E4
@@ -7480,80 +7483,94 @@ L4BB1: .byte 0
;;; ================================================== ;;; ==================================================
.proc cmd_deskacc_impl .proc cmd_deskacc_impl
ptr := $6
L4BBE: .byte $80 L4BBE: .byte $80
start: jsr L4510 start: jsr reset_state2
jsr set_watch_cursor jsr set_watch_cursor
lda $E25B
;; Find DA name
lda $E25B ; menu item index (1-based)
sec sec
sbc #3 sbc #3 ; About and separator before first item
jsr a_times_4 jsr a_times_4
clc clc
adc #<buf adc #<buf
sta $06 sta ptr
txa txa
adc #>buf adc #>buf
sta $06+1 sta ptr+1
ldy #$00
lda ($06),y ;; Compute total length
ldy #0
lda (ptr),y
tay tay
clc clc
adc L4C87 adc prefix_length
pha pha
tax tax
L4BE3: lda ($06),y
;; Append name to path
: lda ($06),y
sta str_desk_acc,x sta str_desk_acc,x
dex dex
dey dey
bne L4BE3 bne :-
pla pla
sta str_desk_acc sta str_desk_acc ; update length
;; Convert spaces to periods
ldx str_desk_acc ldx str_desk_acc
L4BF3: lda str_desk_acc,x : lda str_desk_acc,x
cmp #$20 cmp #' '
bne L4BFF bne nope
lda #$2E lda #'.'
sta str_desk_acc,x sta str_desk_acc,x
L4BFF: dex nope: dex
bne L4BF3 bne :-
jsr L4C4E
bmi L4C4A ;; Load the DA
L4C07: lda open_params_ref_num jsr open
bmi done
lda open_params_ref_num
sta read_params_ref_num sta read_params_ref_num
sta close_params_ref_num sta close_params_ref_num
jsr L4C64 jsr read
jsr L4C6D jsr close
lda #$80 lda #$80
sta L4CA1 sta running_da_flag
;; Invoke it
jsr set_pointer_cursor jsr set_pointer_cursor
jsr L4510 jsr reset_state2
A2D_RELAY_CALL A2D_CONFIGURE_ZP_USE, $D2A7 A2D_RELAY_CALL A2D_CONFIGURE_ZP_USE, $D2A7
A2D_RELAY_CALL A2D_CONFIGURE_ZP_USE, L4BBE A2D_RELAY_CALL A2D_CONFIGURE_ZP_USE, L4BBE
jsr L0800 jsr DA_LOAD_ADDRESS
A2D_RELAY_CALL A2D_CONFIGURE_ZP_USE, $D2A7 A2D_RELAY_CALL A2D_CONFIGURE_ZP_USE, $D2A7
lda #$00 lda #0
sta L4CA1 sta running_da_flag
jsr L4510
;; Restore state
jsr reset_state2
jsr redraw_windows_and_desktop jsr redraw_windows_and_desktop
L4C4A: jsr set_pointer_cursor done: jsr set_pointer_cursor
rts rts
L4C4E: yxa_call MLI_RELAY, OPEN, open_params open: yxa_call MLI_RELAY, OPEN, open_params
bne L4C5A bne :+
rts
: lda #warning_msg_insert_system_disk
jsr show_warning_dialog_num
beq open ; ok, so try again
lda #$FF ; cancel, so fail
rts rts
L4C5A: lda #$00 read: yxa_jump MLI_RELAY, READ, read_params
jsr L48CC
beq L4C4E
lda #$FF
rts
L4C64: yxa_jump MLI_RELAY, READ, read_params close: yxa_jump MLI_RELAY, CLOSE, close_params
L4C6D: yxa_jump MLI_RELAY, CLOSE, close_params unused: .byte 0 ; ???
L4C76: .byte $00
.proc open_params .proc open_params
params: .byte 3 params: .byte 3
@@ -7566,8 +7583,8 @@ ref_num:.byte 0
.proc read_params .proc read_params
params: .byte 4 params: .byte 4
ref_num:.byte 0 ref_num:.byte 0
buffer: .addr $800 buffer: .addr DA_LOAD_ADDRESS
request:.word $1400 request:.word DA_MAX_SIZE
trans: .word 0 trans: .word 0
.endproc .endproc
read_params_ref_num := read_params::ref_num read_params_ref_num := read_params::ref_num
@@ -7578,17 +7595,22 @@ ref_num:.byte 0
.endproc .endproc
close_params_ref_num := close_params::ref_num close_params_ref_num := close_params::ref_num
L4C87: .byte $09 .define prefix "Desk.acc/"
prefix_length:
.byte .strlen(prefix)
str_desk_acc: str_desk_acc:
PASCAL_STRING "Desk.acc/", 24 ; reserve extra space for name PASCAL_STRING prefix, .strlen(prefix) + 15
.endproc .endproc
cmd_deskacc := cmd_deskacc_impl::start cmd_deskacc := cmd_deskacc_impl::start
;;; ================================================== ;;; ==================================================
L4CA1: .byte $00 ;; high bit set while a DA is running
running_da_flag:
.byte 0
;;; ================================================== ;;; ==================================================
@@ -7888,7 +7910,7 @@ L4EC3: sta buf3len
sta selected_window_index sta selected_window_index
jsr L8997 jsr L8997
DESKTOP_RELAY_CALL $02, LE22F DESKTOP_RELAY_CALL $02, LE22F
jsr L4510 jsr reset_state2
lda #$01 lda #$01
sta is_file_selected sta is_file_selected
lda LE22F lda LE22F
@@ -7909,7 +7931,7 @@ L4F3C: lda #$00
sta $E269 sta $E269
A2D_RELAY_CALL $36, LE267 ; ??? A2D_RELAY_CALL $36, LE267 ; ???
jsr L66A2 jsr L66A2
jmp L4510 jmp reset_state2
.endproc .endproc
;;; ================================================== ;;; ==================================================
@@ -8187,7 +8209,7 @@ L518D: lda L51EF
inc L51EF inc L51EF
jmp L518D jmp L518D
L51A7: jsr L4510 L51A7: jsr reset_state2
jsr L6E6E jsr L6E6E
jsr DESKTOP_COPY_FROM_BUF jsr DESKTOP_COPY_FROM_BUF
jsr L6DB1 jsr L6DB1
@@ -8257,7 +8279,7 @@ L5246: lda L5263,x
bpl L5246 bpl L5246
lda #$80 lda #$80
sta L4152 sta L4152
jsr L4510 jsr reset_state2
jsr L6C19 jsr L6C19
jsr L6DB1 jsr L6DB1
lda #$00 lda #$00
@@ -8766,7 +8788,7 @@ L5614: DESKTOP_RELAY_CALL $02, LE22F
beq L562B beq L562B
lda LE22F lda LE22F
jsr L8893 jsr L8893
jsr L4510 jsr reset_state2
L562B: rts L562B: rts
L562C: lda LE22F L562C: lda LE22F
@@ -8786,7 +8808,7 @@ L564A: DESKTOP_RELAY_CALL $0B, LE22F
beq L5661 beq L5661
lda LE22F lda LE22F
jsr L8893 jsr L8893
jsr L4510 jsr reset_state2
L5661: rts L5661: rts
;;; ================================================== ;;; ==================================================
@@ -8845,7 +8867,7 @@ L56E3: dec L56F8
bpl L56B4 bpl L56B4
lda selected_window_index lda selected_window_index
beq L56F0 beq L56F0
jsr L4510 jsr reset_state2
L56F0: lda #$00 L56F0: lda #$00
sta bufnum sta bufnum
jmp DESKTOP_COPY_TO_BUF jmp DESKTOP_COPY_TO_BUF
@@ -9274,7 +9296,7 @@ L5A4C: jsr redraw_windows_and_desktop
dec LDD9E dec LDD9E
lda LE22F lda LE22F
jsr DESKTOP_FREE_SPACE jsr DESKTOP_FREE_SPACE
jsr L4510 jsr reset_state2
DESKTOP_RELAY_CALL $04, LE22F DESKTOP_RELAY_CALL $04, LE22F
L5A7F: lda buf3len L5A7F: lda buf3len
sta L5AC6 sta L5AC6
@@ -9512,7 +9534,7 @@ L5C71: lda desktop_winid
sta query_state_params2::id sta query_state_params2::id
jsr L44F2 jsr L44F2
A2D_RELAY_CALL A2D_FILL_RECT, query_state_buffer::hoff A2D_RELAY_CALL A2D_FILL_RECT, query_state_buffer::hoff
jsr L4510 jsr reset_state2
jmp L6C19 jmp L6C19
L5C89: sta L5CB6 L5C89: sta L5CB6
@@ -9589,7 +9611,7 @@ L5D0B: ldx is_file_selected
jsr L44F2 jsr L44F2
lda L5CD9 lda L5CD9
jsr L8893 jsr L8893
jsr L4510 jsr reset_state2
bit $D2AA bit $D2AA
bmi L5D55 bmi L5D55
jmp L5DFC jmp L5DFC
@@ -9654,7 +9676,7 @@ L5DC4: txa
jsr L44F2 jsr L44F2
jsr L6DB1 jsr L6DB1
jsr L6E6E jsr L6E6E
jsr L4510 jsr reset_state2
L5DEC: jsr DESKTOP_COPY_FROM_BUF L5DEC: jsr DESKTOP_COPY_FROM_BUF
lda #$00 lda #$00
sta bufnum sta bufnum
@@ -9835,7 +9857,7 @@ L5F6B: jsr L48F0
ldx #$00 ldx #$00
L5F80: cpx buf3len L5F80: cpx buf3len
bne L5F88 bne L5F88
jmp L4510 jmp reset_state2
L5F88: txa L5F88: txa
pha pha
@@ -10069,7 +10091,7 @@ L619B: lda desktop_winid
lda #$00 lda #$00
sta bufnum sta bufnum
jsr DESKTOP_COPY_TO_BUF jsr DESKTOP_COPY_TO_BUF
jmp L4510 jmp reset_state2
L61CA: lda desktop_winid L61CA: lda desktop_winid
A2D_RELAY_CALL A2D_CLOSE_CLICK, $D2A8 A2D_RELAY_CALL A2D_CLOSE_CLICK, $D2A8
@@ -10129,7 +10151,7 @@ L6227: sta buf3len
sta selected_window_index sta selected_window_index
jsr L8997 jsr L8997
DESKTOP_RELAY_CALL $02, LE22F DESKTOP_RELAY_CALL $02, LE22F
jsr L4510 jsr reset_state2
lda #$01 lda #$01
sta is_file_selected sta is_file_selected
lda LE22F lda LE22F
@@ -10454,7 +10476,7 @@ L6556: bit L5B1B
bmi L655E bmi L655E
jsr L6E6E jsr L6E6E
L655E: A2D_RELAY_CALL A2D_FILL_RECT, query_state_buffer::hoff L655E: A2D_RELAY_CALL A2D_FILL_RECT, query_state_buffer::hoff
jsr L4510 jsr reset_state2
jmp L6C19 jmp L6C19
L656D: lda desktop_winid L656D: lda desktop_winid
@@ -10786,7 +10808,7 @@ L6893: txa
bpl L6893 bpl L6893
rts rts
L68AA: jsr L4510 L68AA: jsr reset_state2
bit BUTN0 bit BUTN0
bpl L68B3 bpl L68B3
rts rts
@@ -11019,7 +11041,7 @@ L6AD8: DESKTOP_RELAY_CALL $03, LE6BE
beq L6AEF beq L6AEF
lda LE6BE lda LE6BE
jsr L8893 jsr L8893
jsr L4510 jsr reset_state2
L6AEF: lda LE6BE L6AEF: lda LE6BE
ldx $E1F1 ldx $E1F1
dex dex
@@ -11040,8 +11062,8 @@ L6B01: A2D_RELAY_CALL A2D_RAISE_WINDOW, bufnum
L6B1E: lda $EC2E L6B1E: lda $EC2E
cmp #$08 cmp #$08
bcc L6B2F bcc L6B2F
lda #$05 lda #warning_msg_too_many_windows
jsr L48CC jsr show_warning_dialog_num
ldx $E256 ldx $E256
txs txs
rts rts
@@ -11099,7 +11121,7 @@ L6BA1: DESKTOP_RELAY_CALL $03, LE6BE
beq L6BB8 beq L6BB8
lda LE6BE lda LE6BE
jsr L8893 jsr L8893
jsr L4510 jsr reset_state2
L6BB8: jsr L744B L6BB8: jsr L744B
lda bufnum lda bufnum
jsr window_lookup jsr window_lookup
@@ -11131,7 +11153,7 @@ L6BF4: lda bufnum
lda #$00 lda #$00
sta bufnum sta bufnum
jsr DESKTOP_COPY_TO_BUF jsr DESKTOP_COPY_TO_BUF
jmp L4510 jmp reset_state2
L6C0E: .byte 0 L6C0E: .byte 0
L6C0F: A2D_RELAY_CALL $36, LE267 ; ??? L6C0F: A2D_RELAY_CALL $36, LE267 ; ???
@@ -11209,7 +11231,7 @@ L6CB0: lda L6CCC
inc L6CCC inc L6CCC
jmp L6CB0 jmp L6CB0
L6CC5: jsr L4510 L6CC5: jsr reset_state2
jsr pop_zp_addrs jsr pop_zp_addrs
rts rts
@@ -11233,7 +11255,7 @@ L6CE6: lda query_state_buffer::hoff,x
L6CF3: cpx buf3len L6CF3: cpx buf3len
bne L6D09 bne L6D09
pla pla
jsr L4510 jsr reset_state2
lda bufnum lda bufnum
sta query_state_params2::id sta query_state_params2::id
jsr L44F2 jsr L44F2
@@ -11302,7 +11324,7 @@ L6DA1: sta selected_file_index,x
bpl L6DA1 bpl L6DA1
sta is_file_selected sta is_file_selected
sta selected_window_index sta selected_window_index
jmp L4510 jmp reset_state2
L6DB0: .byte 0 L6DB0: .byte 0
L6DB1: ldx desktop_winid L6DB1: ldx desktop_winid
@@ -11716,8 +11738,8 @@ L7147: lda $EC2E
beq L715F beq L715F
lda #$03 lda #$03
bne L7161 bne L7161
L715F: lda #$04 L715F: lda #warning_msg_window_must_be_closed2
L7161: jsr L48CC L7161: jsr show_warning_dialog_num
ldx $E256 ldx $E256
txs txs
rts rts
@@ -15109,7 +15131,7 @@ L8D57: .byte 0
L8D58: lda #$00 L8D58: lda #$00
sta L8DB2 sta L8DB2
jsr L4510 jsr reset_state2
A2D_RELAY_CALL A2D_SET_PATTERN, checkerboard_pattern3 A2D_RELAY_CALL A2D_SET_PATTERN, checkerboard_pattern3
jsr L48FA jsr L48FA
L8D6C: lda L8DB2 L8D6C: lda L8DB2
@@ -15157,7 +15179,7 @@ L8DB2: .byte 0
L8DB3: lda #$0B L8DB3: lda #$0B
sta L8E0F sta L8E0F
jsr L4510 jsr reset_state2
A2D_RELAY_CALL A2D_SET_PATTERN, checkerboard_pattern3 A2D_RELAY_CALL A2D_SET_PATTERN, checkerboard_pattern3
jsr L48FA jsr L48FA
L8DC7: lda L8E0F L8DC7: lda L8E0F
@@ -15310,9 +15332,9 @@ restore:
open: MLI_RELAY_CALL OPEN, open_params open: MLI_RELAY_CALL OPEN, open_params
beq :+ beq :+
lda #$00 ; on error lda #warning_msg_insert_system_disk
ora restore_flag ; error during restore? ora restore_flag ; high bit set = no cancel
jsr L48CC ; ??? reset path ??? jsr show_warning_dialog_num
beq open beq open
lda #$FF ; failed lda #$FF ; failed
rts rts
@@ -17878,7 +17900,8 @@ LA4C6: yax_call JT_MLI_RELAY, ON_LINE, on_line_params2
index_lock_dialog := 7 index_lock_dialog := 7
index_unlock_dialog := 8 index_unlock_dialog := 8
index_rename_dialog := 9 index_rename_dialog := 9
index_get_size_dialog := 11 index_get_size_dialog := $B
index_warning_dialog := $C
launch_dialog: launch_dialog:
jmp LA520 jmp LA520
@@ -17895,7 +17918,7 @@ LA503: .addr show_about_dialog
.addr show_rename_dialog .addr show_rename_dialog
.addr LAAE1 .addr LAAE1
.addr show_get_size_dialog .addr show_get_size_dialog
.addr LB325 .addr show_warning_dialog
LA51D: .word 0 LA51D: .word 0
.byte 0 .byte 0
@@ -17930,7 +17953,11 @@ LA520: sta LA51D
LA565 := *+1 LA565 := *+1
jmp dummy0000 ; self-modified jmp dummy0000 ; self-modified
LA567: lda LD8E8
;;; ==================================================
;;; Message handler for OK/Cancel dialog
prompt_input_loop: lda LD8E8
beq LA579 beq LA579
dec LD8E9 dec LD8E9
bne LA579 bne LA579
@@ -17948,16 +17975,16 @@ LA58C: cmp #$03
jmp LA6FD jmp LA6FD
LA593: lda LD8E8 LA593: lda LD8E8
beq LA567 beq prompt_input_loop
A2D_RELAY_CALL A2D_QUERY_TARGET, input_params_coords A2D_RELAY_CALL A2D_QUERY_TARGET, input_params_coords
lda query_target_params_element lda query_target_params_element
bne LA5A9 bne LA5A9
jmp LA567 jmp prompt_input_loop
LA5A9: lda $D20E LA5A9: lda $D20E
cmp winF cmp winF
beq LA5B4 beq LA5B4
jmp LA567 jmp prompt_input_loop
LA5B4: lda winF LA5B4: lda winF
jsr LB7B9 jsr LB7B9
@@ -17973,7 +18000,7 @@ LA5D2: A2D_RELAY_CALL A2D_TEST_BOX, LD6AB
LA5E5: jsr set_cursor_pointer_with_flag LA5E5: jsr set_cursor_pointer_with_flag
LA5E8: jsr reset_state LA5E8: jsr reset_state
jmp LA567 jmp prompt_input_loop
LA5EE: A2D_RELAY_CALL A2D_QUERY_TARGET, input_params_coords LA5EE: A2D_RELAY_CALL A2D_QUERY_TARGET, input_params_coords
lda query_target_params_element lda query_target_params_element
@@ -18424,7 +18451,7 @@ LAA6A: jsr LAACE
jsr LB7B9 jsr LB7B9
axy_call draw_dialog_label, $06, desktop_aux::str_exists_prompt axy_call draw_dialog_label, $06, desktop_aux::str_exists_prompt
jsr draw_yes_no_all_cancel_buttons jsr draw_yes_no_all_cancel_buttons
LAA7F: jsr LA567 LAA7F: jsr prompt_input_loop
bmi LAA7F bmi LAA7F
pha pha
jsr erase_yes_no_all_cancel_buttons jsr erase_yes_no_all_cancel_buttons
@@ -18438,7 +18465,7 @@ LAA9C: jsr LAACE
jsr LB7B9 jsr LB7B9
axy_call draw_dialog_label, $06, desktop_aux::str_large_prompt axy_call draw_dialog_label, $06, desktop_aux::str_large_prompt
jsr draw_ok_cancel_buttons jsr draw_ok_cancel_buttons
LAAB1: jsr LA567 LAAB1: jsr prompt_input_loop
bmi LAAB1 bmi LAAB1
pha pha
jsr erase_ok_cancel_buttons jsr erase_ok_cancel_buttons
@@ -18538,7 +18565,7 @@ LABC8: jsr LAACE
jsr LB7B9 jsr LB7B9
axy_call draw_dialog_label, $06, desktop_aux::str_ramcard_full axy_call draw_dialog_label, $06, desktop_aux::str_ramcard_full
jsr draw_ok_button jsr draw_ok_button
LABDD: jsr LA567 LABDD: jsr prompt_input_loop
bmi LABDD bmi LABDD
pha pha
jsr erase_ok_button jsr erase_ok_button
@@ -18624,7 +18651,7 @@ LAC9E: jsr reset_state
LACAE: lda winF LACAE: lda winF
jsr LB7B9 jsr LB7B9
jsr draw_ok_button jsr draw_ok_button
LACB7: jsr LA567 LACB7: jsr prompt_input_loop
bmi LACB7 bmi LACB7
A2D_RELAY_CALL A2D_SET_FILL_MODE, const0 A2D_RELAY_CALL A2D_SET_FILL_MODE, const0
A2D_RELAY_CALL A2D_FILL_RECT, desktop_aux::press_ok_to_rect A2D_RELAY_CALL A2D_FILL_RECT, desktop_aux::press_ok_to_rect
@@ -18722,7 +18749,7 @@ LAD6C: ldy #$01
LADBB: lda winF LADBB: lda winF
jsr LB7B9 jsr LB7B9
jsr draw_ok_cancel_buttons jsr draw_ok_cancel_buttons
LADC4: jsr LA567 LADC4: jsr prompt_input_loop
bmi LADC4 bmi LADC4
bne LADF4 bne LADF4
A2D_RELAY_CALL A2D_SET_FILL_MODE, const0 A2D_RELAY_CALL A2D_SET_FILL_MODE, const0
@@ -18742,7 +18769,7 @@ LAE05: lda winF
jsr LB7B9 jsr LB7B9
axy_call draw_dialog_label, $06, desktop_aux::str_delete_locked_file axy_call draw_dialog_label, $06, desktop_aux::str_delete_locked_file
jsr draw_yes_no_all_cancel_buttons jsr draw_yes_no_all_cancel_buttons
LAE17: jsr LA567 LAE17: jsr prompt_input_loop
bmi LAE17 bmi LAE17
pha pha
jsr erase_yes_no_all_cancel_buttons jsr erase_yes_no_all_cancel_buttons
@@ -18807,7 +18834,7 @@ LAE90: lda ($08),y
sta dialog_label_pos sta dialog_label_pos
yax_call draw_dialog_label, $04, desktop_aux::str_enter_folder_name yax_call draw_dialog_label, $04, desktop_aux::str_enter_folder_name
jsr LB961 jsr LB961
LAEC6: jsr LA567 LAEC6: jsr prompt_input_loop
bmi LAEC6 bmi LAEC6
bne LAF16 bne LAF16
lda $D443 lda $D443
@@ -18933,7 +18960,7 @@ LAFF8: ldy LB01E
beq LB006 beq LB006
rts rts
LB006: jsr LA567 LB006: jsr prompt_input_loop
bmi LB006 bmi LB006
pha pha
jsr reset_state jsr reset_state
@@ -19032,7 +19059,7 @@ LB0A2: ldy #$01
LB0F1: lda winF LB0F1: lda winF
jsr LB7B9 jsr LB7B9
jsr draw_ok_cancel_buttons jsr draw_ok_cancel_buttons
LB0FA: jsr LA567 LB0FA: jsr prompt_input_loop
bmi LB0FA bmi LB0FA
bne LB139 bne LB139
A2D_RELAY_CALL A2D_SET_FILL_MODE, const0 A2D_RELAY_CALL A2D_SET_FILL_MODE, const0
@@ -19124,7 +19151,7 @@ LB1C0: ldy #$01
LB20F: lda winF LB20F: lda winF
jsr LB7B9 jsr LB7B9
jsr draw_ok_cancel_buttons jsr draw_ok_cancel_buttons
LB218: jsr LA567 LB218: jsr prompt_input_loop
bmi LB218 bmi LB218
bne LB257 bne LB257
A2D_RELAY_CALL A2D_SET_FILL_MODE, const0 A2D_RELAY_CALL A2D_SET_FILL_MODE, const0
@@ -19198,7 +19225,7 @@ LB2ED: lda #$00
sta LD8E8 sta LD8E8
lda winF lda winF
jsr LB7B9 jsr LB7B9
LB2FD: jsr LA567 LB2FD: jsr prompt_input_loop
bmi LB2FD bmi LB2FD
bne LB313 bne LB313
lda $D443 lda $D443
@@ -19216,50 +19243,68 @@ LB313: jsr reset_state
rts rts
;;; ================================================== ;;; ==================================================
;;; "Warning!" dialog
;;; $6/$7 ptr to message num
LB325: .proc show_warning_dialog
ptr := $6
;; Create window
A2D_RELAY_CALL A2D_HIDE_CURSOR A2D_RELAY_CALL A2D_HIDE_CURSOR
jsr LB55F jsr create_window_with_alert_bitmap
lda winF lda winF
jsr LB7B9 jsr LB7B9
addr_call draw_centered_string, desktop_aux::str_warning addr_call draw_centered_string, desktop_aux::str_warning
A2D_RELAY_CALL A2D_SHOW_CURSOR A2D_RELAY_CALL A2D_SHOW_CURSOR
jsr LB3BF jsr LB3BF
;; Dig up message
ldy #$00 ldy #$00
lda ($06),y lda (ptr),y
pha pha
bmi LB357 bmi only_ok ; high bit set means no cancel
tax tax
lda LB39C,x lda warning_cancel_table,x
bne LB361 bne ok_and_cancel
LB357: pla
only_ok: ; no cancel button
pla
and #$7F and #$7F
pha pha
jsr draw_ok_button jsr draw_ok_button
jmp LB364 jmp draw_string
LB361: jsr draw_ok_cancel_buttons ok_and_cancel: ; has cancel button
LB364: pla jsr draw_ok_cancel_buttons
draw_string:
;; First string
pla
pha pha
asl a asl a ; * 2
asl a asl a ; * 4, since there are two strings each
tay tay
lda LB3A3+1,y lda warning_message_table+1,y
tax tax
lda LB3A3,y lda warning_message_table,y
ldy #$03 ldy #$03
jsr draw_dialog_label jsr draw_dialog_label
;; Second string
pla pla
asl a asl a
asl a asl a
tay tay
lda LB3A3+2+1,y lda warning_message_table+2+1,y
tax tax
lda LB3A3+2,y lda warning_message_table+2,y
ldy #$04 ldy #$04
jsr draw_dialog_label jsr draw_dialog_label
LB385: jsr LA567
bmi LB385 ;; Input loop
: jsr prompt_input_loop
bmi :-
pha pha
jsr reset_state jsr reset_state
A2D_RELAY_CALL A2D_DESTROY_WINDOW, winF A2D_RELAY_CALL A2D_DESTROY_WINDOW, winF
@@ -19267,15 +19312,28 @@ LB385: jsr LA567
pla pla
rts rts
LB39C: .byte $80,$00,$00,$80,$00,$00,$80 ;; high bit set if "cancel" should be an option
warning_cancel_table:
.byte $80,$00,$00,$80,$00,$00,$80
LB3A3: .addr desktop_aux::str_insert_system_disk,desktop_aux::str_1_space warning_message_table:
.addr desktop_aux::str_insert_system_disk,desktop_aux::str_1_space
.addr desktop_aux::str_selector_list_full,desktop_aux::str_before_new_entries .addr desktop_aux::str_selector_list_full,desktop_aux::str_before_new_entries
.addr desktop_aux::str_selector_list_full,desktop_aux::str_before_new_entries .addr desktop_aux::str_selector_list_full,desktop_aux::str_before_new_entries
.addr desktop_aux::str_window_must_be_closed,desktop_aux::str_1_space .addr desktop_aux::str_window_must_be_closed,desktop_aux::str_1_space
.addr desktop_aux::str_window_must_be_closed,desktop_aux::str_1_space .addr desktop_aux::str_window_must_be_closed,desktop_aux::str_1_space
.addr desktop_aux::str_too_many_windows,desktop_aux::str_1_space .addr desktop_aux::str_too_many_windows,desktop_aux::str_1_space
.addr desktop_aux::str_save_selector_list,desktop_aux::str_on_system_disk .addr desktop_aux::str_save_selector_list,desktop_aux::str_on_system_disk
.endproc
warning_msg_insert_system_disk := 0
warning_msg_selector_list_full := 1
warning_msg_selector_list_full2 := 2
warning_msg_window_must_be_closed := 3
warning_msg_window_must_be_closed2 := 4
warning_msg_too_many_windows := 5
warning_msg_save_selector_list := 6
;;; ==================================================
LB3BF: lda LA51D LB3BF: lda LA51D
sta $06 sta $06
@@ -19435,7 +19493,8 @@ LB53A: A2D_RELAY_CALL A2D_CREATE_WINDOW, winF
A2D_RELAY_CALL A2D_DRAW_RECT, desktop_aux::confirm_dialog_inner_rect A2D_RELAY_CALL A2D_DRAW_RECT, desktop_aux::confirm_dialog_inner_rect
rts rts
LB55F: A2D_RELAY_CALL A2D_CREATE_WINDOW, winF create_window_with_alert_bitmap:
A2D_RELAY_CALL A2D_CREATE_WINDOW, winF
lda winF lda winF
jsr LB7B9 jsr LB7B9
jsr set_fill_white jsr set_fill_white