disasm: alerts/errors, traversal params and stack

This commit is contained in:
Joshua Bell 2018-12-23 12:51:03 -08:00
parent 1e1adb77f9
commit 0cd97501dc
9 changed files with 273 additions and 217 deletions

View File

@ -102,11 +102,11 @@ No-Op command (RTS)
#### `JUMP_TABLE_ALERT_0` ($4030) #### `JUMP_TABLE_ALERT_0` ($4030)
Show alert 0 Show alert in A, default options
#### `JUMP_TABLE_ALERT_X` ($4033) #### `JUMP_TABLE_ALERT_X` ($4033)
Show alert X Show alert in A, options in X
#### `JUMP_TABLE_LAUNCH_FILE` ($4036) #### `JUMP_TABLE_LAUNCH_FILE` ($4036)

View File

@ -50,13 +50,23 @@ JUMP_TABLE_COPY_TO_BUF := $4024 ; Copy to buffer
JUMP_TABLE_COPY_FROM_BUF:= $4027 ; Copy from buffer JUMP_TABLE_COPY_FROM_BUF:= $4027 ; Copy from buffer
JUMP_TABLE_NOOP := $402A ; No-Op command (RTS) JUMP_TABLE_NOOP := $402A ; No-Op command (RTS)
JUMP_TABLE_2D := $402D ; ??? (Draw type/size/date in non-icon views?) JUMP_TABLE_2D := $402D ; ??? (Draw type/size/date in non-icon views?)
JUMP_TABLE_ALERT_0 := $4030 ; Show alert 0 JUMP_TABLE_ALERT_0 := $4030 ; Show alert (A=err code, default options)
JUMP_TABLE_ALERT_X := $4033 ; Show alert X JUMP_TABLE_ALERT_X := $4033 ; Show alert X (A=err code, X=options)
JUMP_TABLE_LAUNCH_FILE := $4036 ; Launch file JUMP_TABLE_LAUNCH_FILE := $4036 ; Launch file
JUMP_TABLE_CUR_POINTER := $4039 ; Changes mouse cursor to pointer * JUMP_TABLE_CUR_POINTER := $4039 ; Changes mouse cursor to pointer *
JUMP_TABLE_CUR_WATCH := $403C ; Changes mouse cursor to watch JUMP_TABLE_CUR_WATCH := $403C ; Changes mouse cursor to watch
JUMP_TABLE_RESTORE_OVL := $403F ; Restore from overlay routine JUMP_TABLE_RESTORE_OVL := $403F ; Restore from overlay routine
;;; ============================================================
;;; Error codes used for alerts which are not ProDOS errors
ERR_DUPLICATE_VOL_NAME = $F9
ERR_FILE_NOT_RUNNABLE = $FA
ERR_NAME_TOO_LONG = $FB
ERR_INSERT_SRC_DISK = $FC
ERR_INSERT_DST_DISK = $FD
ERR_BASIC_SYS_NOT_FOUND = $FE
;;; ============================================================ ;;; ============================================================
;;; API Calls (from aux memory) ;;; API Calls (from aux memory)

View File

@ -3105,7 +3105,7 @@ maprect: DEFINE_RECT 0, 0, 420, 55, maprect
;;; ============================================================ ;;; ============================================================
;;; Show Alert Dialog ;;; Show Alert Dialog
;;; Call show_alert_dialog with prompt number in X (???), A = ??? ;;; Call show_alert_dialog with prompt number A, options in X
.proc show_alert_dialog_impl .proc show_alert_dialog_impl
@ -3182,9 +3182,9 @@ alert_action_table:
.byte $00,$80,$80,$00 .byte $00,$80,$80,$00
;; Actual entry point ;; Actual entry point
start: pha start: pha ; error code
txa txa
pha pha ; options???
MGTK_RELAY2_CALL MGTK::HideCursor MGTK_RELAY2_CALL MGTK::HideCursor
MGTK_RELAY2_CALL MGTK::SetCursor, pointer_cursor MGTK_RELAY2_CALL MGTK::SetCursor, pointer_cursor
MGTK_RELAY2_CALL MGTK::ShowCursor MGTK_RELAY2_CALL MGTK::ShowCursor
@ -3197,12 +3197,13 @@ start: pha
lda LCBANK1 lda LCBANK1
lda LCBANK1 lda LCBANK1
ldx #$03 ldx #.sizeof(MGTK::Point)-1
lda #$00 lda #$00
LBA0B: sta grafport3_viewloc_xcoord,x LBA0B: sta grafport3_viewloc_xcoord,x
sta grafport3_cliprect_x1,x sta grafport3_cliprect_x1,x
dex dex
bpl LBA0B bpl LBA0B
copy16 #550, grafport3_cliprect_x2 copy16 #550, grafport3_cliprect_x2
copy16 #185, grafport3_cliprect_y2 copy16 #185, grafport3_cliprect_y2
MGTK_RELAY2_CALL MGTK::SetPort, grafport3 MGTK_RELAY2_CALL MGTK::SetPort, grafport3
@ -3216,7 +3217,7 @@ LBA0B: sta grafport3_viewloc_xcoord,x
lda portmap::viewloc::xcoord+1 lda portmap::viewloc::xcoord+1
adc portmap::maprect::x2+1 adc portmap::maprect::x2+1
tax tax
pla pla ; options???
jsr LBF8B jsr LBF8B
sty LBFCC sty LBFCC
sta LBFCE sta LBFCE
@ -3239,6 +3240,7 @@ LBA0B: sta grafport3_viewloc_xcoord,x
MGTK_RELAY2_CALL MGTK::HideCursor MGTK_RELAY2_CALL MGTK::HideCursor
MGTK_RELAY2_CALL MGTK::PaintBits, alert_bitmap_params MGTK_RELAY2_CALL MGTK::PaintBits, alert_bitmap_params
MGTK_RELAY2_CALL MGTK::ShowCursor MGTK_RELAY2_CALL MGTK::ShowCursor
pla pla
tax tax
pla pla
@ -3644,28 +3646,28 @@ LBF51: .byte 0
.proc LBF52 .proc LBF52
lda LBFB0 lda LBFB0
cmp #$07 cmp #7
beq LBF5F beq LBF5F
inc LBFB0 inc LBFB0
jmp LBF2C jmp LBF2C
LBF5F: lda #$00 LBF5F: lda #0
sta LBFB0 sta LBFB0
lda LBFAF lda LBFAF
cmp #$38 cmp #56
beq LBF74 beq LBF74
clc clc
adc #$08 adc #8
sta LBFAF sta LBFAF
jmp LBF2C jmp LBF2C
LBF74: lda #$00 LBF74: lda #0
sta LBFAF sta LBFAF
lda LBFAE lda LBFAE
clc clc
adc #$40 adc #64
sta LBFAE sta LBFAE
cmp #$C0 cmp #192
beq LBF89 beq LBF89
jmp LBF2C jmp LBF2C
@ -3674,26 +3676,28 @@ LBF89: sec
.endproc .endproc
.proc LBF8B .proc LBF8B
ldy #$00 ldy #0
cpx #$02 cpx #2
bne LBF96 bne :+
ldy #$49 ldy #73
clc clc
adc #$01 adc #1
LBF96: cpx #$01
bne LBFA4 : cpx #1
ldy #$24 bne :+
ldy #36
clc clc
adc #$04 adc #4
bcc LBFA4 bcc :+
iny iny
sbc #$07 sbc #7
LBFA4: cmp #$07 : cmp #7
bcc LBFAD bcc :+
sbc #$07 sbc #7
iny iny
bne LBFA4 bne :-
LBFAD: rts
: rts
.endproc .endproc
LBFAE: .byte $00 LBFAE: .byte $00

View File

@ -986,7 +986,7 @@ begin:
cmp #FT_S16 cmp #FT_S16
beq launch beq launch
lda #$FA lda #ERR_FILE_NOT_RUNNABLE
jsr show_alert_and_fail jsr show_alert_and_fail
launch: DESKTOP_RELAY_CALL DT_UNHIGHLIGHT_ALL launch: DESKTOP_RELAY_CALL DT_UNHIGHLIGHT_ALL
@ -1045,7 +1045,7 @@ not_found:
dex dex
bne :- bne :-
no_bs: lda #$FE ; "BASIC.SYSTEM not found" no_bs: lda #ERR_BASIC_SYS_NOT_FOUND
show_alert_and_fail: show_alert_and_fail:
jsr DESKTOP_SHOW_ALERT0 jsr DESKTOP_SHOW_ALERT0
@ -3267,7 +3267,7 @@ L594A: ldy L599E
jsr create_volume_icon jsr create_volume_icon
cmp #ERR_DUPLICATE_VOLUME cmp #ERR_DUPLICATE_VOLUME
bne :+ bne :+
lda #$F9 ; "... 2 volumes with the same name..." lda #ERR_DUPLICATE_VOL_NAME
sta pending_alert sta pending_alert
: inc L599E : inc L599E
lda L599E lda L599E
@ -6167,7 +6167,7 @@ L74D3: tay
adc ($08),y adc ($08),y
cmp #$43 cmp #$43
bcc L750D bcc L750D
lda #$40 lda #ERR_INVALID_PATHNAME
jsr DESKTOP_SHOW_ALERT0 jsr DESKTOP_SHOW_ALERT0
jsr L8B1F jsr L8B1F
dec LEC2E dec LEC2E
@ -10398,26 +10398,24 @@ L9709: .byte $00
;;; ============================================================ ;;; ============================================================
DEFINE_OPEN_PARAMS open_params3, $220, $800 DEFINE_OPEN_PARAMS open_src_dir_params, $220, $800
DEFINE_READ_PARAMS read_params3, L9718, 4 DEFINE_READ_PARAMS read_src_dir_header_params, pointers_buf, 4 ; dir header: skip block pointers
pointers_buf: .res 4, 0
L9718: .res 4, 0 DEFINE_CLOSE_PARAMS close_src_dir_params
DEFINE_READ_PARAMS read_src_dir_entry_params, L97AD, .sizeof(FileEntry)
DEFINE_READ_PARAMS read_src_dir_skip5_params, skip5_buf, 5 ; ???
skip5_buf: .res 5, 0
DEFINE_CLOSE_PARAMS close_params6 .res 4, 0 ; unused???
DEFINE_READ_PARAMS read_params4, L97AD, $27
DEFINE_READ_PARAMS read_params5, L972E, 5
L972E: .res 5, 0 DEFINE_CLOSE_PARAMS close_src_params
DEFINE_CLOSE_PARAMS close_dst_params
.res 4, 0
DEFINE_CLOSE_PARAMS close_params5
DEFINE_CLOSE_PARAMS close_params3
DEFINE_DESTROY_PARAMS destroy_params, $220 DEFINE_DESTROY_PARAMS destroy_params, $220
DEFINE_OPEN_PARAMS open_params4, $220, $0D00 DEFINE_OPEN_PARAMS open_src_params, $220, $0D00
DEFINE_OPEN_PARAMS open_params5, path_buf_main, $1100 DEFINE_OPEN_PARAMS open_dst_params, path_buf_main, $1100
DEFINE_READ_PARAMS read_params6, $1500, $AC0 DEFINE_READ_PARAMS read_src_params, $1500, $AC0
DEFINE_WRITE_PARAMS write_params, $1500, $AC0 DEFINE_WRITE_PARAMS write_dst_params, $1500, $AC0
DEFINE_CREATE_PARAMS create_params3, path_buf_main, ACCESS_DEFAULT DEFINE_CREATE_PARAMS create_params3, path_buf_main, ACCESS_DEFAULT
DEFINE_CREATE_PARAMS create_params2, path_buf_main DEFINE_CREATE_PARAMS create_params2, path_buf_main
@ -10432,16 +10430,15 @@ L972E: .res 5, 0
.byte 0 .byte 0
DEFINE_SET_EOF_PARAMS set_eof_params, 0 DEFINE_SET_EOF_PARAMS set_eof_params, 0
DEFINE_SET_MARK_PARAMS mark_params, 0 DEFINE_SET_MARK_PARAMS mark_src_params, 0
DEFINE_SET_MARK_PARAMS mark_params2, 0 DEFINE_SET_MARK_PARAMS mark_dst_params, 0
DEFINE_ON_LINE_PARAMS on_line_params2,, $800 DEFINE_ON_LINE_PARAMS on_line_params2,, $800
;;; ============================================================ ;;; ============================================================
;; buffer of 39
L97AD: .res 16, 0 L97AD: .res 48, 0
L97BD: .res 32, 0
;; overlayed indirect jump table ;; overlayed indirect jump table
op_jt_addrs_size := 6 op_jt_addrs_size := 6
@ -10455,106 +10452,108 @@ rts2: rts
L97E4: .byte $00 L97E4: .byte $00
L97E5: ldx LE10C .proc push_entry_count
lda LE061 ldx entry_count_stack_index
sta LE062,x lda entries_to_skip
sta entry_count_stack,x
inx inx
stx LE10C stx entry_count_stack_index
rts rts
.endproc
L97F3: ldx LE10C .proc pop_entry_count
ldx entry_count_stack_index
dex dex
lda LE062,x lda entry_count_stack,x
sta LE061 sta entries_to_skip
stx LE10C stx entry_count_stack_index
rts rts
.endproc
.proc L9801 .proc L9801
lda #$00 lda #0
sta LE05F sta entries_read
sta LE10D sta LE10D
L9809: yax_call JT_MLI_RELAY, OPEN, open_params3 L9809: yax_call JT_MLI_RELAY, OPEN, open_src_dir_params
beq L981E beq L981E
ldx #$80 ldx #$80
jsr JT_SHOW_ALERT jsr JT_SHOW_ALERT
beq L9809 beq L9809
jmp close_files_cancel_dialog jmp close_files_cancel_dialog
L981E: lda open_params3::ref_num L981E: lda open_src_dir_params::ref_num
sta op_ref_num sta op_ref_num
sta read_params3::ref_num sta read_src_dir_header_params::ref_num
L9827: yax_call JT_MLI_RELAY, READ, read_params3 L9827: yax_call JT_MLI_RELAY, READ, read_src_dir_header_params
beq L983C beq L983C
ldx #$80 ldx #$80
jsr JT_SHOW_ALERT jsr JT_SHOW_ALERT
beq L9827 beq L9827
jmp close_files_cancel_dialog jmp close_files_cancel_dialog
L983C: jmp L985B L983C: jmp read_file_entry
.endproc .endproc
.proc L983F .proc close_src_dir
lda op_ref_num lda op_ref_num
sta close_params6::ref_num sta close_src_dir_params::ref_num
L9845: yax_call JT_MLI_RELAY, CLOSE, close_params6 : yax_call JT_MLI_RELAY, CLOSE, close_src_dir_params
beq L985A beq :+
ldx #$80 ldx #$80
jsr JT_SHOW_ALERT jsr JT_SHOW_ALERT
beq L9845 beq :-
jmp close_files_cancel_dialog jmp close_files_cancel_dialog
L985A: rts : rts
.endproc .endproc
.proc L985B .proc read_file_entry
inc LE05F inc entries_read
lda op_ref_num lda op_ref_num
sta read_params4::ref_num sta read_src_dir_entry_params::ref_num
L9864: yax_call JT_MLI_RELAY, READ, read_params4 : yax_call JT_MLI_RELAY, READ, read_src_dir_entry_params
beq L987D beq :+
cmp #$4C cmp #ERR_END_OF_FILE
beq L989F beq eof
ldx #$80 ldx #$80
jsr JT_SHOW_ALERT jsr JT_SHOW_ALERT
beq L9864 beq :-
jmp close_files_cancel_dialog jmp close_files_cancel_dialog
L987D: inc LE10D : inc LE10D
lda LE10D lda LE10D
cmp LE05E cmp LE05E
bcc L989C bcc :+
lda #$00 copy #0, LE10D
sta LE10D copy op_ref_num, read_src_dir_skip5_params::ref_num
lda op_ref_num yax_call JT_MLI_RELAY, READ, read_src_dir_skip5_params
sta read_params5::ref_num : return #0
yax_call JT_MLI_RELAY, READ, read_params5
L989C: return #0
L989F: return #$FF eof: return #$FF
.endproc .endproc
;;; ============================================================ ;;; ============================================================
L98A2: lda LE05F L98A2: lda entries_read
sta LE061 sta entries_to_skip
jsr L983F jsr close_src_dir
jsr L97E5 jsr push_entry_count
jsr append_to_path_220 jsr append_to_path_220
jmp L9801 jmp L9801
.proc L98B4 .proc L98B4
jsr L983F jsr close_src_dir
jsr op_jt3 jsr op_jt3
jsr remove_path_segment_220 jsr remove_path_segment_220
jsr L97F3 jsr pop_entry_count
jsr L9801 jsr L9801
jsr sub jsr sub
jmp op_jt2 jmp op_jt2
sub: lda LE05F sub: lda entries_read
cmp LE061 cmp entries_to_skip
beq done beq done
jsr L985B jsr read_file_entry
jmp sub jmp sub
done: rts done: rts
.endproc .endproc
@ -10562,7 +10561,7 @@ done: rts
.proc L98D8 .proc L98D8
copy #0, LE05D copy #0, LE05D
jsr L9801 jsr L9801
loop: jsr L985B loop: jsr read_file_entry
bne L9912 bne L9912
lda L97AD lda L97AD
@ -10575,7 +10574,7 @@ loop: jsr L985B
jsr op_jt1 jsr op_jt1
lda L9923 lda L9923
bne loop bne loop
lda L97BD lda L97AD+16
cmp #$0F cmp #$0F
bne loop bne loop
jsr L98A2 jsr L98A2
@ -10588,7 +10587,7 @@ L9912: lda LE05D
dec LE05D dec LE05D
jmp loop jmp loop
L9920: jmp L983F L9920: jmp close_src_dir
.endproc .endproc
L9923: .byte 0 L9923: .byte 0
@ -10599,6 +10598,10 @@ op_jt3: jmp (op_jt_addr3)
L992D: .byte $00,$00,$00,$00 L992D: .byte $00,$00,$00,$00
;;; ============================================================
;;; "Copy" (including Drag/Drop) files state and logic
;;; ============================================================
;;; Overlays for copy operation ;;; Overlays for copy operation
op_jt_overlay1: op_jt_overlay1:
.addr L9B36 ; Overlay for op_jt_addrs .addr L9B36 ; Overlay for op_jt_addrs
@ -10757,26 +10760,28 @@ L9A95: sta L9B30
bne L9AA8 bne L9AA8
jmp close_files_cancel_dialog jmp close_files_cancel_dialog
L9AA8: ldy #$07 L9AA8: ldy #7
L9AAA: lda file_info_params2,y : lda file_info_params2,y
sta create_params2,y sta create_params2,y
dey dey
cpy #$02 cpy #2
bne L9AAA bne :-
lda #ACCESS_DEFAULT
sta create_params2::access copy #ACCESS_DEFAULT, create_params2::access
lda LE05B lda LE05B
beq L9B23 beq L9B23
jsr L9C01 jsr L9C01
bcs L9B2C bcs L9B2C
ldy #$11
ldx #$0B ldy #17
L9AC8: lda file_info_params2,y ldx #11
: lda file_info_params2,y
sta create_params2,x sta create_params2,x
dex dex
dey dey
cpy #$0D cpy #13
bne L9AC8 bne :-
lda create_params2::storage_type lda create_params2::storage_type
cmp #ST_VOLUME_DIRECTORY cmp #ST_VOLUME_DIRECTORY
bne L9AE0 bne L9AE0
@ -10784,7 +10789,7 @@ L9AC8: lda file_info_params2,y
sta create_params2::storage_type sta create_params2::storage_type
L9AE0: yax_call JT_MLI_RELAY, CREATE, create_params2 L9AE0: yax_call JT_MLI_RELAY, CREATE, create_params2
beq L9B23 beq L9B23
cmp #$47 cmp #ERR_DUPLICATE_FILENAME
bne L9B1D bne L9B1D
bit L918D bit L918D
bmi L9B14 bmi L9B14
@ -10836,7 +10841,7 @@ L9B33: jmp LA360
jsr check_escape_key_down jsr check_escape_key_down
beq :+ beq :+
jmp close_files_cancel_dialog jmp close_files_cancel_dialog
: lda L97BD : lda L97AD+16
cmp #$0F cmp #$0F
bne L9B88 bne L9B88
jsr append_to_path_220 jsr append_to_path_220
@ -11012,113 +11017,129 @@ existing_size:
.proc L9CDA .proc L9CDA
jsr decrement_op_file_count jsr decrement_op_file_count
lda #$00 lda #$00
sta L9E17 sta dst_ok_flag
sta L9E18 sta src_eof_flag
sta mark_params::position sta mark_src_params::position
sta mark_params::position+1 sta mark_src_params::position+1
sta mark_params::position+2 sta mark_src_params::position+2
sta mark_params2::position sta mark_dst_params::position
sta mark_params2::position+1 sta mark_dst_params::position+1
sta mark_params2::position+2 sta mark_dst_params::position+2
jsr L9D62 jsr open_src
jsr L9D74 jsr copy_src_ref_num
jsr L9D81 jsr open_dst
beq L9D09 beq L9D09
lda #$FF lda #$FF
sta L9E17 sta dst_ok_flag
bne L9D0C bne L9D0C
L9D09: jsr L9D9C L9D09: jsr copy_dst_ref_num
L9D0C: jsr L9DA9 L9D0C: jsr L9DA9
bit L9E17 bit dst_ok_flag
bpl L9D28 bpl L9D28
jsr L9E0D jsr close_src
L9D17: jsr L9D81 L9D17: jsr open_dst
bne L9D17 bne L9D17
jsr L9D9C jsr copy_dst_ref_num
yax_call JT_MLI_RELAY, SET_MARK, mark_params2 yax_call JT_MLI_RELAY, SET_MARK, mark_dst_params
L9D28: bit L9E18 L9D28: bit src_eof_flag
bmi L9D51 bmi L9D51
jsr L9DE8 jsr write_dst
bit L9E17 bit dst_ok_flag
bpl L9D0C bpl L9D0C
jsr L9E03 jsr close_dst
jsr L9D62 jsr open_src
jsr L9D74 jsr copy_src_ref_num
yax_call JT_MLI_RELAY, SET_MARK, mark_params yax_call JT_MLI_RELAY, SET_MARK, mark_src_params
beq L9D0C beq L9D0C
lda #$FF lda #$FF
sta L9E18 sta src_eof_flag
jmp L9D0C jmp L9D0C
L9D51: jsr L9E03 L9D51: jsr close_dst
bit L9E17 bit dst_ok_flag
bmi L9D5C bmi L9D5C
jsr L9E0D jsr close_src
L9D5C: jsr LA46D L9D5C: jsr LA46D
jmp LA479 jmp LA479
L9D62: yax_call JT_MLI_RELAY, OPEN, open_params4 open_src:
beq L9D73 : yax_call JT_MLI_RELAY, OPEN, open_src_params
beq :+
jsr show_error_alert jsr show_error_alert
jmp L9D62 jmp :-
: rts
L9D73: rts copy_src_ref_num:
lda open_src_params::ref_num
L9D74: lda open_params4::ref_num sta read_src_params::ref_num
sta read_params6::ref_num sta close_src_params::ref_num
sta close_params5::ref_num sta mark_src_params::ref_num
sta mark_params::ref_num
rts rts
L9D81: yax_call JT_MLI_RELAY, OPEN, open_params5 .proc open_dst
beq L9D9B : yax_call JT_MLI_RELAY, OPEN, open_dst_params
beq done
cmp #ERR_VOL_NOT_FOUND cmp #ERR_VOL_NOT_FOUND
beq L9D96 beq not_found
jsr show_error_alert_dst jsr show_error_alert_dst
jmp L9D81 jmp :-
L9D96: jsr show_error_alert_dst not_found:
jsr show_error_alert_dst
lda #ERR_VOL_NOT_FOUND lda #ERR_VOL_NOT_FOUND
L9D9B: rts
L9D9C: lda open_params5::ref_num done: rts
sta write_params::ref_num .endproc
sta close_params3::ref_num
sta mark_params2::ref_num copy_dst_ref_num:
lda open_dst_params::ref_num
sta write_dst_params::ref_num
sta close_dst_params::ref_num
sta mark_dst_params::ref_num
rts rts
L9DA9: copy16 #$0AC0, read_params6::request_count .proc L9DA9
L9DB3: yax_call JT_MLI_RELAY, READ, read_params6 copy16 #$0AC0, read_src_params::request_count
beq L9DC8 : yax_call JT_MLI_RELAY, READ, read_src_params
beq :+
cmp #ERR_END_OF_FILE cmp #ERR_END_OF_FILE
beq L9DD9 beq eof
jsr show_error_alert jsr show_error_alert
jmp L9DB3 jmp :-
L9DC8: copy16 read_params6::trans_count, write_params::request_count : copy16 read_src_params::trans_count, write_dst_params::request_count
ora read_params6::trans_count ora read_src_params::trans_count
bne L9DDE bne :+
L9DD9: lda #$FF eof: lda #$FF
sta L9E18 sta src_eof_flag
L9DDE: yax_call JT_MLI_RELAY, GET_MARK, mark_params : yax_call JT_MLI_RELAY, GET_MARK, mark_src_params
rts rts
.endproc
L9DE8: yax_call JT_MLI_RELAY, WRITE, write_params .proc write_dst
beq L9DF9 : yax_call JT_MLI_RELAY, WRITE, write_dst_params
beq :+
jsr show_error_alert_dst jsr show_error_alert_dst
jmp L9DE8 jmp :-
: yax_call JT_MLI_RELAY, GET_MARK, mark_dst_params
L9DF9: yax_call JT_MLI_RELAY, GET_MARK, mark_params2
rts rts
.endproc
L9E03: yax_call JT_MLI_RELAY, CLOSE, close_params3 .proc close_dst
yax_call JT_MLI_RELAY, CLOSE, close_dst_params
rts rts
.endproc
L9E0D: yax_call JT_MLI_RELAY, CLOSE, close_params5 .proc close_src
yax_call JT_MLI_RELAY, CLOSE, close_src_params
rts rts
.endproc
L9E17: .byte 0 dst_ok_flag:
L9E18: .byte 0 .byte 0
src_eof_flag:
.byte 0
.endproc .endproc
@ -11164,6 +11185,10 @@ L9E71: sec
rts rts
.endproc .endproc
;;; ============================================================
;;; Delete/Trash files dialog state and logic
;;; ============================================================
;;; Overlays for delete operation ;;; Overlays for delete operation
op_jt_overlay2: op_jt_overlay2:
.addr L9F94 ; Overlay for op_jt_addrs .addr L9F94 ; Overlay for op_jt_addrs
@ -11333,19 +11358,19 @@ L9FC2: yax_call JT_MLI_RELAY, DESTROY, destroy_params
pha pha
copy #DeleteDialogLifecycle::show, delete_file_dialog_params::phase copy #DeleteDialogLifecycle::show, delete_file_dialog_params::phase
pla pla
cmp #$03 cmp #3
beq LA022 beq LA022
cmp #$02 cmp #2
beq LA001 beq LA001
cmp #$04 cmp #4
bne L9FFE bne L9FFE
lda #$80 lda #$80
sta L918D sta L918D
bne LA001 bne LA001 ; always
L9FFE: jmp close_files_cancel_dialog L9FFE: jmp close_files_cancel_dialog
LA001: lda #ACCESS_DEFAULT LA001: copy #ACCESS_DEFAULT, file_info_params2::access
sta file_info_params2::access
copy #7, file_info_params2 ; param count for SET_FILE_INFO copy #7, file_info_params2 ; param count for SET_FILE_INFO
yax_call JT_MLI_RELAY, SET_FILE_INFO, file_info_params2 yax_call JT_MLI_RELAY, SET_FILE_INFO, file_info_params2
copy #$A,file_info_params2 ; param count for GET_FILE_INFO copy #$A,file_info_params2 ; param count for GET_FILE_INFO
@ -11361,8 +11386,6 @@ LA022: jmp remove_path_segment_220
rts rts
.endproc .endproc
;;; ============================================================
.proc destroy_with_retry .proc destroy_with_retry
retry: yax_call JT_MLI_RELAY, DESTROY, destroy_params retry: yax_call JT_MLI_RELAY, DESTROY, destroy_params
beq done beq done
@ -11378,6 +11401,10 @@ done: rts
rts rts
.endproc .endproc
;;; ============================================================
;;; "Lock"/"Unlock" dialog state and logic
;;; ============================================================
;;; Overlays for lock/unlock operation ;;; Overlays for lock/unlock operation
op_jt_overlay3: op_jt_overlay3:
.addr LA170 ; overlay for op_jt_addrs .addr LA170 ; overlay for op_jt_addrs
@ -11471,8 +11498,6 @@ unlock_dialog_lifecycle:
yax_call launch_dialog, index_unlock_dialog, lock_unlock_dialog_params yax_call launch_dialog, index_unlock_dialog, lock_unlock_dialog_params
rts rts
;;; ============================================================
.proc LA114 .proc LA114
copy #LockDialogLifecycle::operation, lock_unlock_dialog_params::phase copy #LockDialogLifecycle::operation, lock_unlock_dialog_params::phase
jsr LA379 jsr LA379
@ -11514,8 +11539,6 @@ LA16A: jsr LA173
jmp append_to_path_220 jmp append_to_path_220
.endproc .endproc
;;; ============================================================
LA170: jsr append_to_path_220 LA170: jsr append_to_path_220
;; fall through ;; fall through
@ -11556,6 +11579,10 @@ LA1C3: sub16 op_file_count, #1, lock_unlock_dialog_params::files_remaining_co
LA1DC: jmp lock_dialog_lifecycle LA1DC: jmp lock_dialog_lifecycle
.endproc .endproc
;;; ============================================================
;;; "Get Size" dialog state and logic
;;; ============================================================
.proc get_size_dialog_params .proc get_size_dialog_params
phase: .byte 0 phase: .byte 0
.addr op_file_count, op_block_count .addr op_file_count, op_block_count
@ -11802,6 +11829,7 @@ loop: iny
.endproc .endproc
;;; ============================================================ ;;; ============================================================
;;; Closes dialog, closes all open files, and restores stack.
.proc close_files_cancel_dialog .proc close_files_cancel_dialog
jsr done_dialog_phase1 jsr done_dialog_phase1
@ -11836,6 +11864,8 @@ nope: lda #$00
done: rts done: rts
.endproc .endproc
;;; ============================================================
.proc dec_file_count_and_launch_delete_dialog .proc dec_file_count_and_launch_delete_dialog
sub16 op_file_count, #1, delete_file_dialog_params::count sub16 op_file_count, #1, delete_file_dialog_params::count
yax_call launch_dialog, index_delete_file_dialog, delete_file_dialog_params yax_call launch_dialog, index_delete_file_dialog, delete_file_dialog_params
@ -11859,20 +11889,20 @@ LA425: .byte 0
lda file_info_params2::file_type lda file_info_params2::file_type
cmp #$0F cmp #$0F
beq LA46C beq LA46C
yax_call JT_MLI_RELAY, OPEN, open_params5 yax_call JT_MLI_RELAY, OPEN, open_dst_params
beq LA449 beq LA449
jsr show_error_alert_dst jsr show_error_alert_dst
jmp LA426 jmp LA426
LA449: lda open_params5::ref_num LA449: lda open_dst_params::ref_num
sta set_eof_params::ref_num sta set_eof_params::ref_num
sta close_params3::ref_num sta close_dst_params::ref_num
LA452: yax_call JT_MLI_RELAY, SET_EOF, set_eof_params LA452: yax_call JT_MLI_RELAY, SET_EOF, set_eof_params
beq LA463 beq LA463
jsr show_error_alert_dst jsr show_error_alert_dst
jmp LA452 jmp LA452
LA463: yax_call JT_MLI_RELAY, CLOSE, close_params3 LA463: yax_call JT_MLI_RELAY, CLOSE, close_dst_params
LA46C: rts LA46C: rts
.endproc .endproc
@ -11921,10 +11951,10 @@ flag_clear:
not_found: not_found:
bit flag bit flag
bpl :+ bpl :+
lda #$FD ; "Please insert destination disk" lda #ERR_INSERT_DST_DISK
jmp show jmp show
: lda #$FC ; "Please insert source disk" : lda #ERR_INSERT_SRC_DISK
show: jsr JT_SHOW_ALERT0 show: jsr JT_SHOW_ALERT0
bne LA4C2 bne LA4C2
jmp do_on_line jmp do_on_line
@ -12865,7 +12895,7 @@ LAEC6: jsr prompt_input_loop
beq LAEC6 beq LAEC6
cmp #$10 cmp #$10
bcc LAEE1 bcc LAEE1
LAED6: lda #$FB LAED6: lda #ERR_NAME_TOO_LONG
jsr JT_SHOW_ALERT0 jsr JT_SHOW_ALERT0
jsr draw_filename_prompt jsr draw_filename_prompt
jmp LAEC6 jmp LAEC6
@ -15285,7 +15315,7 @@ process_volume:
jmp next jmp next
L0D64: cmp #ERR_DUPLICATE_VOLUME L0D64: cmp #ERR_DUPLICATE_VOLUME
bne select_template bne select_template
lda #$F9 ; "... 2 volumes with the same name..." lda #ERR_DUPLICATE_VOL_NAME
sta desktop_main::pending_alert sta desktop_main::pending_alert
;; This section populates device_name_table - ;; This section populates device_name_table -

View File

@ -942,13 +942,24 @@ LE05B: .byte $00
LE05C: .byte $00 LE05C: .byte $00
LE05D: .byte $00 LE05D: .byte $00
LE05E: .byte $0D LE05E: .byte $0D
LE05F: .byte $00
op_ref_num: .byte $00 entries_read:
LE061: .byte $00 .byte $00
op_ref_num:
.byte $00
entries_to_skip:
.byte $00
;;; During directory traversal, the number of file entries processed
;;; at the current level is pushed here, so that following a descent
;;; the previous entries can be skipped.
entry_count_stack:
.res 170, 0
entry_count_stack_index:
.byte 0
LE062: .res 170, 0
LE10C: .byte 0
LE10D: .res 137, 0 LE10D: .res 137, 0
;; Backup copy of DEVLST made before detaching ramdisk ;; Backup copy of DEVLST made before detaching ramdisk

View File

@ -157,7 +157,7 @@ L7178: jsr common_overlay::jt_redraw_input
L7189: addr_call common_overlay::L647C, path_buf0 L7189: addr_call common_overlay::L647C, path_buf0
beq L7198 beq L7198
L7192: lda #$40 L7192: lda #ERR_INVALID_PATHNAME
jsr JUMP_TABLE_ALERT_0 jsr JUMP_TABLE_ALERT_0
rts rts

View File

@ -67,7 +67,7 @@ jt_filename:
L70B1: addr_call common_overlay::L647C, path_buf0 L70B1: addr_call common_overlay::L647C, path_buf0
beq L70C0 beq L70C0
lda #$40 lda #ERR_INVALID_PATHNAME
jsr JUMP_TABLE_ALERT_0 jsr JUMP_TABLE_ALERT_0
rts rts

View File

@ -224,11 +224,11 @@ L72CD: addr_call common_overlay::L647C, path_buf0
bcs L72E8 bcs L72E8
jmp L72EE jmp L72EE
L72E2: lda #$40 L72E2: lda #ERR_INVALID_PATHNAME
jsr JUMP_TABLE_ALERT_0 jsr JUMP_TABLE_ALERT_0
L72E7: rts L72E7: rts
L72E8: lda #$FB L72E8: lda #ERR_NAME_TOO_LONG
jsr JUMP_TABLE_ALERT_0 jsr JUMP_TABLE_ALERT_0
rts rts

View File

@ -120,6 +120,7 @@ ST_VOLUME_DIRECTORY := $0F
ERR_DEVICE_NOT_CONNECTED := $28 ERR_DEVICE_NOT_CONNECTED := $28
ERR_WRITE_PROTECTED := $2B ERR_WRITE_PROTECTED := $2B
ERR_INVALID_PATHNAME := $40
ERR_INVALID_REFERENCE := $43 ERR_INVALID_REFERENCE := $43
ERR_PATH_NOT_FOUND := $44 ERR_PATH_NOT_FOUND := $44
ERR_VOL_NOT_FOUND := $45 ERR_VOL_NOT_FOUND := $45