From 0b65a3b27dc269c18df413c96465484ef5d144fb Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Tue, 25 Dec 2018 22:07:22 -0800 Subject: [PATCH 1/4] disasm: copy logic --- desktop/desktop_main.s | 413 ++++++++++++++++++++++------------------- desktop/desktop_res.s | 2 + 2 files changed, 227 insertions(+), 188 deletions(-) diff --git a/desktop/desktop_main.s b/desktop/desktop_main.s index 0173389..fa9f657 100644 --- a/desktop/desktop_main.s +++ b/desktop/desktop_main.s @@ -9403,9 +9403,10 @@ do_copy_file: jsr LA271 jsr prep_op_jt_overlay1 -L8F3F: copy #$FF, LE05B +do_run2: + copy #$FF, LE05B copy #0, LE05C - jsr copy_file_with_flag + jsr copy_file_for_run jsr done_dialog_phase1 L8F4F: jsr redraw_desktop_and_windows @@ -9438,7 +9439,7 @@ do_run: jsr L9984 jsr LA271 jsr L99BC - jmp L8F3F + jmp do_run2 ;;; -------------------------------------------------- ;;; Lock @@ -9745,7 +9746,7 @@ stack_stash: .byte 0 ;; $80 = lock/unlock - ;; $C0 = get size (easily probed with oVerflow flag) + ;; $C0 = get size/run (easily probed with oVerflow flag) ;; $00 = copy/delete operation_flags: .byte 0 @@ -9759,10 +9760,12 @@ unlock_flag: .byte 0 ;; high bit set = from Selector > Run command (download???) + ;; high bit clear = Get Size run_flag: .byte 0 -all_flag: .byte 0 +all_flag: + .byte 0 ;;; ============================================================ ;;; For icon index in A, put pointer to name in $6 @@ -10444,23 +10447,25 @@ skip5_buf: .res 5, 0 .res 4, 0 ; unused??? + buf_size = $AC0 + DEFINE_CLOSE_PARAMS close_src_params DEFINE_CLOSE_PARAMS close_dst_params DEFINE_DESTROY_PARAMS destroy_params, src_path_buf DEFINE_OPEN_PARAMS open_src_params, src_path_buf, $0D00 DEFINE_OPEN_PARAMS open_dst_params, dst_path_buf, $1100 - DEFINE_READ_PARAMS read_src_params, $1500, $AC0 - DEFINE_WRITE_PARAMS write_dst_params, $1500, $AC0 + DEFINE_READ_PARAMS read_src_params, $1500, buf_size + DEFINE_WRITE_PARAMS write_dst_params, $1500, buf_size DEFINE_CREATE_PARAMS create_params3, dst_path_buf, ACCESS_DEFAULT DEFINE_CREATE_PARAMS create_params2, dst_path_buf .byte 0,0 - DEFINE_GET_FILE_INFO_PARAMS file_info_params2, src_path_buf + DEFINE_GET_FILE_INFO_PARAMS src_file_info_params, src_path_buf .byte 0 - DEFINE_GET_FILE_INFO_PARAMS file_info_params3, dst_path_buf + DEFINE_GET_FILE_INFO_PARAMS dst_file_info_params, dst_path_buf .byte 0 @@ -10776,78 +10781,82 @@ cancel: jmp close_files_cancel_dialog ;; copy logic (for drag/drop only) ??? .proc copy_file copy #$80, LE05B - lda #0 - sta LE05C - beq L9A0F ; always + copy #0, LE05C + beq :+ ; always -with_flag: +for_run: lda #$FF -L9A0F: sta flag +: sta is_run_flag copy #CopyDialogLifecycle::show, copy_dialog_params::phase jsr copy_paths_to_src_and_dst_paths bit operation_flags - bvc @not_size - jsr L9BC9 -@not_size: + bvc @not_run + jsr check_vol_blocks_free ; dst is a volume path (RAM Card) +@not_run: bit LE05B - bpl L9A70 + bpl get_src_info ; never taken ??? bvs L9A50 - lda flag - bne L9A36 - lda selected_window_index - bne L9A36 + lda is_run_flag + bne :+ + lda selected_window_index ; dragging from window? + bne :+ jmp L9B28 -L9A36: ldx dst_path_buf +: ldx dst_path_buf ldy src_path_slash_index dey -L9A3D: iny +: iny inx lda src_path_buf,y sta dst_path_buf,x cpy src_path_buf - bne L9A3D - stx dst_path_buf - jmp L9A70 + bne :- + stx dst_path_buf + jmp get_src_info + + ;; Append filename to dst_path_buf L9A50: ldx dst_path_buf lda #'/' sta dst_path_buf+1,x inc dst_path_buf - ldy #$00 + ldy #0 ldx dst_path_buf -L9A60: iny +: iny inx lda filename_buf,y sta dst_path_buf,x cpy filename_buf - bne L9A60 + bne :- stx dst_path_buf -L9A70: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2 - beq L9A81 - jsr show_error_alert - jmp L9A70 -L9A81: lda file_info_params2::storage_type +get_src_info: +: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params + beq :+ + jsr show_error_alert + jmp :- ; retry + +: lda src_file_info_params::storage_type cmp #ST_VOLUME_DIRECTORY - beq L9A90 + beq is_dir cmp #ST_LINKED_DIRECTORY - beq L9A90 + beq is_dir lda #$00 - beq L9A95 -L9A90: jsr decrement_op_file_count + beq store +is_dir: jsr decrement_op_file_count lda #$FF -L9A95: sta L9B30 +store: sta L9B30 jsr dec_file_count_and_run_copy_dialog_proc lda op_file_count+1 - bne L9AA8 + bne :+ lda op_file_count - bne L9AA8 + bne :+ jmp close_files_cancel_dialog -L9AA8: ldy #7 -: lda file_info_params2,y + ;; Copy access, file_type, aux_type, storage_type +: ldy #7 +: lda src_file_info_params,y sta create_params2,y dey cpy #2 @@ -10855,28 +10864,33 @@ L9AA8: ldy #7 copy #ACCESS_DEFAULT, create_params2::access lda LE05B - beq L9B23 - jsr L9C01 + beq create_ok ; never taken ??? + jsr check_space_and_show_prompt bcs done + ;; Copy create_time/create_date ldy #17 ldx #11 -: lda file_info_params2,y +: lda src_file_info_params,y sta create_params2,x dex dey cpy #13 bne :- + ;; If a volume, need to create a subdir instead lda create_params2::storage_type cmp #ST_VOLUME_DIRECTORY - bne L9AE0 + bne do_create lda #ST_LINKED_DIRECTORY sta create_params2::storage_type -L9AE0: yax_call JT_MLI_RELAY, CREATE, create_params2 - beq L9B23 + +do_create: + yax_call JT_MLI_RELAY, CREATE, create_params2 + beq create_ok + cmp #ERR_DUPLICATE_FILENAME - bne L9B1D + bne err bit all_flag bmi do_it copy #CopyDialogLifecycle::exists, copy_dialog_params::phase @@ -10892,28 +10906,31 @@ L9AE0: yax_call JT_MLI_RELAY, CREATE, create_params2 bne cancel lda #$80 sta all_flag -do_it: jsr LA426 - jmp L9B23 +do_it: jsr apply_file_info_and_size + jmp create_ok ;; PromptResult::cancel cancel: jmp close_files_cancel_dialog -L9B1D: jsr show_error_alert - jmp L9AE0 +err: jsr show_error_alert + jmp do_create ; retry -L9B23: lda L9B30 +create_ok: + lda L9B30 beq L9B2D L9B28: jmp process_dir .byte 0 ; ??? done: rts -L9B2D: jmp L9CDA +L9B2D: jmp do_file_copy L9B30: .byte 0 -flag: .byte 0 ; ??? + +is_run_flag: + .byte 0 .endproc - copy_file_with_flag := copy_file::with_flag + copy_file_for_run := copy_file::for_run src_path_slash_index: .byte 0 @@ -10937,7 +10954,7 @@ op_jt2_copy: ;; Directory jsr append_to_src_path -: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2 +: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params beq :+ jsr show_error_alert jmp :- @@ -10951,39 +10968,39 @@ op_jt2_copy: bne :+ jmp close_files_cancel_dialog -: jsr L9E19 +: jsr try_create_dst bcs :+ jsr remove_src_path_segment - jmp L9BBE + jmp done : jsr remove_dst_path_segment jsr remove_src_path_segment lda #$FF sta cancel_descent_flag - jmp L9BBE + jmp done ;; File regular_file: jsr append_to_dst_path jsr append_to_src_path jsr dec_file_count_and_run_copy_dialog_proc -L9B91: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2 - beq L9BA2 +: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params + beq :+ jsr show_error_alert - jmp L9B91 + jmp :- ; retry -L9BA2: jsr L9C01 - bcc L9BAA +: jsr check_space_and_show_prompt + bcc :+ jmp close_files_cancel_dialog -L9BAA: jsr remove_src_path_segment - jsr L9E19 - bcs L9BBB +: jsr remove_src_path_segment + jsr try_create_dst + bcs :+ jsr append_to_src_path - jsr L9CDA + jsr do_file_copy jsr remove_src_path_segment -L9BBB: jsr remove_dst_path_segment -L9BBE: rts +: jsr remove_dst_path_segment +done: rts .endproc ;;; ============================================================ @@ -10995,25 +11012,26 @@ L9BBE: rts ;;; ============================================================ -.proc L9BC9 - yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params3 - beq L9BDA +.proc check_vol_blocks_free +: yax_call JT_MLI_RELAY, GET_FILE_INFO, dst_file_info_params + beq :+ jsr show_error_alert_dst - jmp L9BC9 + jmp :- -L9BDA: sub16 file_info_params3::aux_type, file_info_params3::blocks_used, L9BFF - cmp16 L9BFF, op_block_count - bcs L9BFE +: sub16 dst_file_info_params::aux_type, dst_file_info_params::blocks_used, blocks_free + cmp16 blocks_free, op_block_count + bcs :+ jmp done_dialog_phase3 -L9BFE: rts +: rts -L9BFF: .word 0 +blocks_free: + .word 0 .endproc ;;; ============================================================ -.proc L9C01 +.proc check_space_and_show_prompt jsr check_space bcc done copy #CopyDialogLifecycle::too_large, copy_dialog_params::phase @@ -11026,7 +11044,7 @@ done: rts .proc check_space ;; Size of source -: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2 +: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params beq :+ jsr show_error_alert jmp :- @@ -11037,7 +11055,7 @@ done: rts sta existing_size+1 ;; Does destination exist? -: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params3 +: yax_call JT_MLI_RELAY, GET_FILE_INFO, dst_file_info_params beq got_exist_size cmp #ERR_FILE_NOT_FOUND beq :+ @@ -11045,7 +11063,7 @@ done: rts jmp :- got_exist_size: - copy16 file_info_params3::blocks_used, existing_size + copy16 dst_file_info_params::blocks_used, existing_size ;; Compute destination volume path : lda dst_path_buf @@ -11062,7 +11080,7 @@ got_exist_size: sta vol_path_length ;; Total blocks/used blocks on destination volume -: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params3 +: yax_call JT_MLI_RELAY, GET_FILE_INFO, dst_file_info_params beq got_info pha ; on failure, restore path lda saved_length ; in case copy is aborted @@ -11080,9 +11098,9 @@ got_exist_size: got_info: ;; aux = total blocks - sub16 file_info_params3::aux_type, file_info_params3::blocks_used, blocks_free + sub16 dst_file_info_params::aux_type, dst_file_info_params::blocks_used, blocks_free add16 blocks_free, existing_size, blocks_free - cmp16 blocks_free, file_info_params2::blocks_used + cmp16 blocks_free, src_file_info_params::blocks_used bcs has_room ;; not enough room @@ -11107,11 +11125,12 @@ existing_size: .endproc ;;; ============================================================ +;;; Actual byte-for-byte file copy routine -.proc L9CDA +.proc do_file_copy jsr decrement_op_file_count - lda #$00 - sta dst_ok_flag + lda #0 + sta src_dst_exclusive_flag sta src_eof_flag sta mark_src_params::position sta mark_src_params::position+1 @@ -11119,56 +11138,67 @@ existing_size: sta mark_dst_params::position sta mark_dst_params::position+1 sta mark_dst_params::position+2 + jsr open_src jsr copy_src_ref_num jsr open_dst - beq L9D09 + beq :+ + + ;; Destination not available; note it, can prompt later lda #$FF - sta dst_ok_flag - bne L9D0C -L9D09: jsr copy_dst_ref_num -L9D0C: jsr L9DA9 - bit dst_ok_flag - bpl L9D28 - jsr close_src -L9D17: jsr open_dst - bne L9D17 + sta src_dst_exclusive_flag + bne read +: jsr copy_dst_ref_num + + ;; Read +read: jsr read_src + bit src_dst_exclusive_flag + bpl write + jsr close_src ; swap if necessary +: jsr open_dst + bne :- jsr copy_dst_ref_num yax_call JT_MLI_RELAY, SET_MARK, mark_dst_params -L9D28: bit src_eof_flag - bmi L9D51 + + ;; Write +write: bit src_eof_flag + bmi eof jsr write_dst - bit dst_ok_flag - bpl L9D0C - jsr close_dst + bit src_dst_exclusive_flag + bpl read + jsr close_dst ; swap if necessary jsr open_src jsr copy_src_ref_num + yax_call JT_MLI_RELAY, SET_MARK, mark_src_params - beq L9D0C + beq read lda #$FF sta src_eof_flag - jmp L9D0C + jmp read -L9D51: jsr close_dst - bit dst_ok_flag - bmi L9D5C + ;; EOF +eof: jsr close_dst + bit src_dst_exclusive_flag + bmi :+ jsr close_src -L9D5C: jsr LA46D - jmp LA479 +: jsr copy_file_info + jmp set_dst_file_info -open_src: +.proc open_src : yax_call JT_MLI_RELAY, OPEN, open_src_params beq :+ jsr show_error_alert jmp :- : rts +.endproc -copy_src_ref_num: +.proc copy_src_ref_num lda open_src_params::ref_num sta read_src_params::ref_num sta close_src_params::ref_num sta mark_src_params::ref_num rts +.endproc .proc open_dst : yax_call JT_MLI_RELAY, OPEN, open_dst_params @@ -11185,15 +11215,16 @@ not_found: done: rts .endproc -copy_dst_ref_num: +.proc 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 +.endproc -.proc L9DA9 - copy16 #$0AC0, read_src_params::request_count +.proc read_src + copy16 #buf_size, read_src_params::request_count : yax_call JT_MLI_RELAY, READ, read_src_params beq :+ cmp #ERR_END_OF_FILE @@ -11229,7 +11260,8 @@ eof: lda #$FF rts .endproc -dst_ok_flag: + ;; Set if src/dst can't be open simultaneously. +src_dst_exclusive_flag: .byte 0 src_eof_flag: @@ -11237,45 +11269,48 @@ src_eof_flag: .endproc +;;; ============================================================ -.proc L9E19 +.proc try_create_dst ldx #7 -: lda file_info_params2,x +: lda src_file_info_params,x sta create_params3,x dex cpx #3 bne :- L9E26: yax_call JT_MLI_RELAY, CREATE, create_params3 - beq L9E6F + beq success cmp #ERR_DUPLICATE_FILENAME - bne L9E69 + bne err bit all_flag - bmi L9E60 + bmi yes copy #CopyDialogLifecycle::exists, copy_dialog_params::phase yax_call invoke_dialog_proc, index_copy_dialog, copy_dialog_params pha copy #CopyDialogLifecycle::show, copy_dialog_params::phase pla - cmp #2 - beq L9E60 - cmp #3 - beq L9E71 - cmp #4 - bne L9E66 + cmp #PromptResult::yes + beq yes + cmp #PromptResult::no + beq failure + cmp #PromptResult::all + bne cancel copy #$80, all_flag -L9E60: jsr LA426 - jmp L9E6F +yes: jsr apply_file_info_and_size + jmp success -L9E66: jmp close_files_cancel_dialog +cancel: jmp close_files_cancel_dialog -L9E69: jsr show_error_alert_dst +err: jsr show_error_alert_dst jmp L9E26 -L9E6F: clc +success: + clc rts -L9E71: sec +failure: + sec rts .endproc @@ -11343,12 +11378,12 @@ count: .word 0 .proc delete_file copy #DeleteDialogLifecycle::show, delete_dialog_params::phase jsr copy_paths_to_src_and_dst_paths -L9EE3: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2 +L9EE3: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params beq L9EF4 jsr show_error_alert jmp L9EE3 -L9EF4: lda file_info_params2::storage_type +L9EF4: lda src_file_info_params::storage_type sta L9F1D cmp #ST_LINKED_DIRECTORY beq L9F02 @@ -11395,17 +11430,17 @@ L9F29: yax_call JT_MLI_RELAY, DESTROY, destroy_params L9F5F: jmp close_files_cancel_dialog -do_it: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2 - lda file_info_params2::access +do_it: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params + lda src_file_info_params::access and #$80 bne done lda #ACCESS_DEFAULT - sta file_info_params2::access + sta src_file_info_params::access lda #7 ; param count for SET_FILE_INFO - sta file_info_params2 - yax_call JT_MLI_RELAY, SET_FILE_INFO, file_info_params2 + sta src_file_info_params + yax_call JT_MLI_RELAY, SET_FILE_INFO, src_file_info_params lda #$A ; param count for GET_FILE_INFO - sta file_info_params2 + sta src_file_info_params jmp L9F29 done: rts @@ -11425,12 +11460,12 @@ L9F8E: jsr show_error_alert bmi L9FA7 jsr dec_file_count_and_run_delete_dialog_proc L9FA7: jsr decrement_op_file_count -L9FAA: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2 +L9FAA: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params beq :+ jsr show_error_alert jmp L9FAA -: lda file_info_params2::storage_type +: lda src_file_info_params::storage_type cmp #ST_LINKED_DIRECTORY beq next_file loop: yax_call JT_MLI_RELAY, DESTROY, destroy_params @@ -11456,10 +11491,10 @@ loop: yax_call JT_MLI_RELAY, DESTROY, destroy_params ;; PromptResult::cancel : jmp close_files_cancel_dialog -unlock: copy #ACCESS_DEFAULT, file_info_params2::access - copy #7, file_info_params2 ; param count for SET_FILE_INFO - yax_call JT_MLI_RELAY, SET_FILE_INFO, file_info_params2 - copy #$A,file_info_params2 ; param count for GET_FILE_INFO +unlock: copy #ACCESS_DEFAULT, src_file_info_params::access + copy #7, src_file_info_params ; param count for SET_FILE_INFO + yax_call JT_MLI_RELAY, SET_FILE_INFO, src_file_info_params + copy #$A,src_file_info_params ; param count for GET_FILE_INFO jmp loop LA01C: jsr show_error_alert @@ -11605,12 +11640,12 @@ LA123: iny cpy src_path_buf bne LA123 stx dst_path_buf -LA133: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2 +LA133: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params beq LA144 jsr show_error_alert jmp LA133 -LA144: lda file_info_params2::storage_type +LA144: lda src_file_info_params::storage_type sta LA169 cmp #ST_VOLUME_DIRECTORY beq LA156 @@ -11642,11 +11677,11 @@ op_jt_1_lock: jsr update_dialog jsr decrement_op_file_count -: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2 +: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params beq :+ jsr show_error_alert jmp :- -: lda file_info_params2::storage_type +: lda src_file_info_params::storage_type cmp #ST_VOLUME_DIRECTORY beq ok cmp #ST_LINKED_DIRECTORY @@ -11656,12 +11691,12 @@ op_jt_1_lock: lda #ACCESS_DEFAULT bne set : lda #ACCESS_LOCKED -set: sta file_info_params2::access +set: sta src_file_info_params::access -: copy #7, file_info_params2 ; param count for SET_FILE_INFO - yax_call JT_MLI_RELAY, SET_FILE_INFO, file_info_params2 +: copy #7, src_file_info_params ; param count for SET_FILE_INFO + yax_call JT_MLI_RELAY, SET_FILE_INFO, src_file_info_params pha - copy #$A, file_info_params2 ; param count for GET_FILE_INFO + copy #$A, src_file_info_params ; param count for GET_FILE_INFO pla beq ok jsr show_error_alert @@ -11752,12 +11787,12 @@ op_jt_overlay4: .proc LA271 jsr copy_paths_to_src_and_dst_paths -: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2 +: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params beq :+ jsr show_error_alert jmp :- -: copy file_info_params2::storage_type, storage_type +: copy src_file_info_params::storage_type, storage_type cmp #ST_VOLUME_DIRECTORY beq is_dir cmp #ST_LINKED_DIRECTORY @@ -11796,9 +11831,9 @@ op_jt_1_size: ;; If operation is "get size", add the block count to the sum jsr append_to_src_path - yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2 + yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params bne :+ - add16 op_block_count, file_info_params2::blocks_used, op_block_count + add16 op_block_count, src_file_info_params::blocks_used, op_block_count : inc16 op_file_count @@ -12005,44 +12040,46 @@ LA425: .byte 0 ; ??? only written to (with 0) ;;; ============================================================ -.proc LA426 - jsr LA46D - copy #ACCESS_DEFAULT, file_info_params3::access - jsr LA479 - lda file_info_params2::file_type - cmp #$0F - beq LA46C - yax_call JT_MLI_RELAY, OPEN, open_dst_params - beq LA449 - jsr show_error_alert_dst - jmp LA426 +.proc apply_file_info_and_size +: jsr copy_file_info + copy #ACCESS_DEFAULT, dst_file_info_params::access + jsr set_dst_file_info + lda src_file_info_params::file_type + cmp #FT_DIRECTORY + beq done -LA449: lda open_dst_params::ref_num + ;; If a regular file, open/set eof/close + yax_call JT_MLI_RELAY, OPEN, open_dst_params + beq :+ + jsr show_error_alert_dst + jmp :- ; retry + +: lda open_dst_params::ref_num sta set_eof_params::ref_num sta close_dst_params::ref_num -LA452: yax_call JT_MLI_RELAY, SET_EOF, set_eof_params - beq LA463 +: yax_call JT_MLI_RELAY, SET_EOF, set_eof_params + beq close jsr show_error_alert_dst - jmp LA452 + jmp :- ; retry -LA463: yax_call JT_MLI_RELAY, CLOSE, close_dst_params -LA46C: rts +close: yax_call JT_MLI_RELAY, CLOSE, close_dst_params +done: rts .endproc -.proc LA46D - COPY_BYTES 11, file_info_params2::access, file_info_params3::access +.proc copy_file_info + COPY_BYTES 11, src_file_info_params::access, dst_file_info_params::access rts .endproc -.proc LA479 - copy #7, file_info_params3 ; SET_FILE_INFO param_count - yax_call JT_MLI_RELAY, SET_FILE_INFO, file_info_params3 +.proc set_dst_file_info +: copy #7, dst_file_info_params ; SET_FILE_INFO param_count + yax_call JT_MLI_RELAY, SET_FILE_INFO, dst_file_info_params pha - copy #$A, file_info_params3 ; GET_FILE_INFO param_count + copy #$A, dst_file_info_params ; GET_FILE_INFO param_count pla beq done jsr show_error_alert_dst - jmp LA479 + jmp :- done: rts .endproc diff --git a/desktop/desktop_res.s b/desktop/desktop_res.s index 18a82e5..e600a9c 100644 --- a/desktop/desktop_res.s +++ b/desktop/desktop_res.s @@ -942,7 +942,9 @@ path_buf3: filename_buf: .res 16, 0 + ;; Set to $80 for Copy, $FF for Run LE05B: .byte 0 + LE05C: .byte 0 ; flag - always set to 0 ??? process_depth: From 700c0e53e413ddd65356aaa350718c483c9573c3 Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Wed, 26 Dec 2018 09:47:26 -0800 Subject: [PATCH 2/4] disasm: operation callbacks --- desktop/desktop_aux.s | 14 ++-- desktop/desktop_main.s | 168 ++++++++++++++++++----------------------- 2 files changed, 80 insertions(+), 102 deletions(-) diff --git a/desktop/desktop_aux.s b/desktop/desktop_aux.s index 982e9d0..824b08f 100644 --- a/desktop/desktop_aux.s +++ b/desktop/desktop_aux.s @@ -1576,8 +1576,7 @@ L9F98: lda #0 sta L9F92 beq L9FA4 -L9F9F: lda #$80 - sta L9F92 +L9F9F: copy #$80, L9F92 .proc L9FA4 ldy #IconEntry::win_type @@ -2087,8 +2086,7 @@ window_id: .byte 0 beq volume ;; File (i.e. icon in window) - lda #$80 - sta LA3B7 + copy #$80, LA3B7 MGTK_CALL MGTK::SetPattern, white_pattern MGTK_CALL MGTK::FrontWindow, frontwindow_params lda frontwindow_params::window_id @@ -2197,9 +2195,8 @@ LA4C5: pla LA4CB: .byte 0 -LA4CC: lda #$80 - sta LA4CB - bmi LA4E2 +LA4CC: copy #$80, LA4CB + bmi LA4E2 ; always LA4D3: pha lda #$40 sta LA4CB @@ -2466,8 +2463,7 @@ LA77D: lda LA6B3,x bne LA7C3 sta LA6B2 beq LA7C8 -LA7C3: lda #$80 - sta LA6B2 +LA7C3: copy #$80, LA6B2 LA7C8: ldy #4 lda ($06),y and #$80 diff --git a/desktop/desktop_main.s b/desktop/desktop_main.s index fa9f657..bf9f7ad 100644 --- a/desktop/desktop_main.s +++ b/desktop/desktop_main.s @@ -1618,8 +1618,7 @@ nope: dex sta close_ref_num jsr read jsr close - lda #$80 - sta running_da_flag + copy #$80, running_da_flag ;; Invoke it jsr set_pointer_cursor @@ -2347,8 +2346,7 @@ L5246: lda L5263,x dex bpl L5246 - lda #$80 - sta L4152 + copy #$80, L4152 jsr reset_grafport3 jsr L6C19 jsr update_scrollbars @@ -4060,8 +4058,7 @@ L601F: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230 bit L60D3 bpl L6068 L6054: copy16 event_xcoord, rect_E230::x1 - lda #$80 - sta L60D3 + copy #$80, L60D3 jmp L6079 L6068: copy16 event_xcoord, rect_E230::x2 @@ -4074,8 +4071,7 @@ L6079: cmp16 event_ycoord, rect_E230::y2 bit L60D4 bpl L60AE L609A: copy16 event_ycoord, rect_E230::y1 - lda #$80 - sta L60D4 + copy #$80, L60D4 jmp L60BF L60AE: copy16 event_ycoord, rect_E230::y2 @@ -4727,8 +4723,7 @@ enable: jsr configure_menu_item lda #4 ; > Run jsr configure_menu_item - lda #$80 - sta LD344 + copy #$80, LD344 rts configure_menu_item: @@ -4929,8 +4924,7 @@ L6989: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230 bit L6A3D bpl L69D2 L69BE: copy16 event_xcoord, rect_E230::x1 - lda #$80 - sta L6A3D + copy #$80, L6A3D jmp L69E3 L69D2: copy16 event_xcoord, rect_E230::x2 @@ -4943,8 +4937,7 @@ L69E3: cmp16 event_ycoord, rect_E230::y2 bit L6A3E bpl L6A18 L6A04: copy16 event_ycoord, rect_E230::y1 - lda #$80 - sta L6A3E + copy #$80, L6A3E jmp L6A29 L6A18: copy16 event_ycoord, rect_E230::y2 @@ -5502,8 +5495,7 @@ flag: .byte 0 sta disableitem_params::menu_item MGTK_RELAY_CALL MGTK::DisableItem, disableitem_params - lda #$80 - sta menu_dispatch_flag + copy #$80, menu_dispatch_flag rts .endproc @@ -6847,8 +6839,7 @@ not_pad: clc adc #'0' ; why not ORA $30 ??? pha - lda #$80 - sta nonzero_flag + copy #$80, nonzero_flag pla ;; Place the character, move to next @@ -7811,8 +7802,7 @@ sloop: cmp16 value, powers,x not_pad: ora #'0' pha - lda #$80 - sta nonzero_flag + copy #$80, nonzero_flag pla ;; Place the character, move to next @@ -9029,8 +9019,7 @@ L8BC1: lda grafport2,x sub16 $085A, $0802, L8D52 bit L8D51 bpl L8C6A - lda #$80 - sta L8D4E + copy #$80, L8D4E lda L8D50 eor #$FF sta L8D50 @@ -9040,8 +9029,7 @@ L8BC1: lda grafport2,x inc16 L8D50 L8C6A: bit L8D53 bpl L8C8C - lda #$80 - sta L8D4F + copy #$80, L8D4F lda L8D52 eor #$FF sta L8D52 @@ -9304,8 +9292,7 @@ load: pha ; entry point with bit clear restore: pha - lda #$80 ; entry point with bit set - sta restore_flag + copy #$80, restore_flag ; entry point with bit set : pla asl a ; y = A * 2 (to index into word table) @@ -9363,8 +9350,8 @@ open: MLI_RELAY_CALL OPEN, open_params .endenum jt_drop: jmp do_drop - jmp rts2 ; rts - jmp rts2 ; rts + jmp do_nothing ; rts + jmp do_nothing ; rts jt_get_info: jmp do_get_info ; cmd_get_info jt_lock: jmp do_lock ; cmd_lock jt_unlock: jmp do_unlock ; cmd_unlock @@ -9372,8 +9359,8 @@ jt_rename_icon: jmp do_rename_icon ; cmd_rename_icon jt_eject: jmp do_eject ; cmd_eject ??? jt_copy_file: jmp do_copy_file ; cmd_copy_file jt_delete_file: jmp do_delete_file ; cmd_delete_file - jmp rts2 ; rts - jmp rts2 ; rts + jmp do_nothing ; rts + jmp do_nothing ; rts jt_run: jmp do_run ; cmd_selector_action / Run jt_get_size: jmp do_get_size ; cmd_get_size @@ -9398,10 +9385,10 @@ do_copy_file: copy #0, operation_flags ; copy/delete tsx stx stack_stash - jsr prep_op_jt_overlay4_clear_system_bitmap + jsr prep_callbacks_for_count_clear_system_bitmap jsr do_copy_dialog_phase jsr LA271 - jsr prep_op_jt_overlay1 + jsr prep_callbacks_for_copy do_run2: copy #$FF, LE05B @@ -9420,12 +9407,12 @@ do_delete_file: copy #0, operation_flags ; copy/delete tsx stx stack_stash - jsr prep_op_jt_overlay4_clear_system_bitmap + jsr prep_callbacks_for_count_clear_system_bitmap lda #DeleteDialogLifecycle::open jsr do_delete_dialog_phase jsr LA271 jsr done_dialog_phase2 - jsr prep_op_jt_overlay2 + jsr prep_callbacks_for_delete jsr delete_file jsr done_dialog_phase1 jmp L8F4F @@ -9435,7 +9422,7 @@ do_run: copy #%11000000, operation_flags ; get size tsx stx stack_stash - jsr prep_op_jt_overlay4_clear_system_bitmap + jsr prep_callbacks_for_count_clear_system_bitmap jsr L9984 jsr LA271 jsr L99BC @@ -9590,7 +9577,7 @@ L9076: ldy #$FF .proc begin_operation copy #0, L97E4 - jsr prep_op_jt_overlay4_clear_system_bitmap + jsr prep_callbacks_for_count_clear_system_bitmap bit operation_flags bvs @size bmi @lock @@ -9617,13 +9604,13 @@ L90BA: bit operation_flags bmi @lock bit delete_flag bmi @trash - jsr prep_op_jt_overlay1 + jsr prep_callbacks_for_copy jmp iterate_selection -@trash: jsr prep_op_jt_overlay2 +@trash: jsr prep_callbacks_for_delete jmp iterate_selection -@lock: jsr prep_op_jt_overlay3 +@lock: jsr prep_callbacks_for_lock jmp iterate_selection @size: jsr get_size_rts2 ; no-op ??? @@ -10054,8 +10041,7 @@ L9356: yax_call JT_MLI_RELAY, GET_FILE_INFO, get_file_info_params5 beq L9356 L9366: lda selected_window_index beq L9387 - lda #$80 - sta get_info_dialog_params::L92E3 + copy #$80, get_info_dialog_params::L92E3 lda get_info_dialog_params::L92E6 clc adc #$01 @@ -10094,8 +10080,7 @@ L93B8: lda DEVLST,y yax_call JT_MLI_RELAY, WRITE_BLOCK, block_params cmp #ERR_WRITE_PROTECTED bne L93DB - lda #$80 - sta L942E + copy #$80, L942E L93DB: ldx get_info_dialog_params::L92E6 lda selected_icon_list,x jsr icon_entry_name_lookup @@ -10485,9 +10470,9 @@ file_entry_buf: .res 48, 0 op_jt_addrs: op_jt_addr1: .addr op_jt1_copy ; defaults are for copy op_jt_addr2: .addr op_jt2_copy -op_jt_addr3: .addr rts2 +op_jt_addr3: .addr do_nothing -rts2: rts +do_nothing: rts L97E4: .byte $00 @@ -10679,10 +10664,10 @@ saved_type_and_length: ; written but not read ??? ;;; ============================================================ ;;; Overlays for copy operation -op_jt_overlay1: +callbacks_for_copy: .addr op_jt1_copy ; Overlay for op_jt_addrs .addr op_jt2_copy - .addr rts2 + .addr do_nothing .enum CopyDialogLifecycle open = 0 @@ -10713,9 +10698,9 @@ count: .addr 0 jmp run_copy_dialog_proc .endproc -.proc prep_op_jt_overlay1 +.proc prep_callbacks_for_copy ldy #op_jt_addrs_size-1 -: copy op_jt_overlay1,y, op_jt_addrs,y +: copy callbacks_for_copy,y, op_jt_addrs,y dey bpl :- @@ -10747,11 +10732,10 @@ L9984: copy #CopyDialogLifecycle::open, copy_dialog_params::phase .endproc .proc L99BC - lda #$80 - sta all_flag + copy #$80, all_flag ldy #op_jt_addrs_size-1 -: copy op_jt_overlay1,y, op_jt_addrs,y +: copy callbacks_for_copy,y, op_jt_addrs,y dey bpl :- @@ -10904,8 +10888,7 @@ do_create: beq done cmp #PromptResult::all bne cancel - lda #$80 - sta all_flag + copy #$80, all_flag do_it: jsr apply_file_info_and_size jmp create_ok @@ -11279,7 +11262,7 @@ src_eof_flag: cpx #3 bne :- -L9E26: yax_call JT_MLI_RELAY, CREATE, create_params3 +create: yax_call JT_MLI_RELAY, CREATE, create_params3 beq success cmp #ERR_DUPLICATE_FILENAME bne err @@ -11303,7 +11286,7 @@ yes: jsr apply_file_info_and_size cancel: jmp close_files_cancel_dialog err: jsr show_error_alert_dst - jmp L9E26 + jmp create success: clc @@ -11319,9 +11302,9 @@ failure: ;;; ============================================================ ;;; Overlays for delete operation -op_jt_overlay2: - .addr op_jt_1_delete ; Overlay for op_jt_addrs - .addr rts2 +callbacks_for_delete: + .addr op_jt1_delete ; Overlay for op_jt_addrs + .addr do_nothing .addr destroy_with_retry .proc delete_dialog_params @@ -11356,9 +11339,9 @@ count: .word 0 ;;; ============================================================ -.proc prep_op_jt_overlay2 +.proc prep_callbacks_for_delete ldy #op_jt_addrs_size-1 -: copy op_jt_overlay2,y, op_jt_addrs,y +: copy callbacks_for_delete,y, op_jt_addrs,y dey bpl :- @@ -11451,19 +11434,20 @@ L9F8E: jsr show_error_alert ;;; ============================================================ -.proc op_jt_1_delete +.proc op_jt1_delete jsr check_escape_key_down beq :+ jmp close_files_cancel_dialog + : jsr append_to_src_path bit LE05C - bmi L9FA7 + bmi :+ jsr dec_file_count_and_run_delete_dialog_proc -L9FA7: jsr decrement_op_file_count -L9FAA: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params +: jsr decrement_op_file_count +: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params beq :+ jsr show_error_alert - jmp L9FAA + jmp :- : lda src_file_info_params::storage_type cmp #ST_LINKED_DIRECTORY @@ -11471,7 +11455,7 @@ L9FAA: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params loop: yax_call JT_MLI_RELAY, DESTROY, destroy_params beq next_file cmp #ERR_ACCESS_ERROR - bne LA01C + bne err bit all_flag bmi unlock copy #DeleteDialogLifecycle::locked, delete_dialog_params::phase @@ -11485,8 +11469,7 @@ loop: yax_call JT_MLI_RELAY, DESTROY, destroy_params beq unlock cmp #PromptResult::all bne :+ - lda #$80 - sta all_flag + copy #$80, all_flag bne unlock ; always ;; PromptResult::cancel : jmp close_files_cancel_dialog @@ -11497,7 +11480,7 @@ unlock: copy #ACCESS_DEFAULT, src_file_info_params::access copy #$A,src_file_info_params ; param count for GET_FILE_INFO jmp loop -LA01C: jsr show_error_alert +err: jsr show_error_alert jmp loop next_file: @@ -11529,10 +11512,10 @@ done: rts ;;; ============================================================ ;;; Overlays for lock/unlock operation -op_jt_overlay3: - .addr op_jt_1_lock ; overlay for op_jt_addrs - .addr rts2 - .addr rts2 +callbacks_for_lock: + .addr op_jt1_lock ; overlay for op_jt_addrs + .addr do_nothing + .addr do_nothing .enum LockDialogLifecycle open = 0 ; opening window, initial label @@ -11598,11 +11581,11 @@ files_remaining_count: : rts .endproc -.proc prep_op_jt_overlay3 +.proc prep_callbacks_for_lock copy #0, LA425 ldy #op_jt_addrs_size-1 -: copy op_jt_overlay3,y, op_jt_addrs,y +: copy callbacks_for_lock,y, op_jt_addrs,y dey bpl :- @@ -11669,7 +11652,7 @@ LA16A: jsr LA173 jmp append_to_src_path .endproc -op_jt_1_lock: +op_jt1_lock: jsr append_to_src_path ;; fall through @@ -11752,19 +11735,20 @@ get_size_rts1: get_size_rts2: rts -op_jt_overlay4: - .addr op_jt_1_size ; overlay for op_jt_addrs - .addr rts2 - .addr rts2 - ;;; ============================================================ -;;; ??? +;;; Most operations start by doing a traversal to just count +;;; the files. -.proc prep_op_jt_overlay4_clear_system_bitmap +callbacks_for_count: + .addr op_jt1_size ; overlay for op_jt_addrs + .addr do_nothing + .addr do_nothing + +.proc prep_callbacks_for_count_clear_system_bitmap copy #0, LA425 ldy #op_jt_addrs_size-1 -: copy op_jt_overlay4,y, op_jt_addrs,y +: copy callbacks_for_count,y, op_jt_addrs,y dey bpl :- @@ -11816,16 +11800,16 @@ is_dir_flag: storage_type: .byte 0 + +do_sum_file_size: + jmp op_jt1_size .endproc ;;; ============================================================ -do_sum_file_size: - jmp op_jt_1_size - ;; First pass - visit/count all files ??? -op_jt_1_size: +op_jt1_size: bit operation_flags bvc :+ ; not size @@ -14718,8 +14702,7 @@ sloop: cmp16 value, powers,x not_pad: ora #'0' pha - lda #$80 - sta nonzero_flag + copy #$80, nonzero_flag pla ;; Place the character, move to next @@ -15835,8 +15818,7 @@ cloop: inx ;; Does it point at anything? If so, set flag. MLI_RELAY_CALL GET_FILE_INFO, get_file_info_params2 bne config_toolkit - lda #$80 - sta desktop_main::sys_start_flag + copy #$80, desktop_main::sys_start_flag ;; Final MGTK configuration config_toolkit: From cffb08efb7f99ccc836b1e3f07a75ef4b814e4b6 Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Wed, 26 Dec 2018 14:48:33 -0800 Subject: [PATCH 3/4] disasm: macros, labels --- desktop/desktop_main.s | 279 ++++++++++++++++------------------------- desktop/desktop_res.s | 6 +- 2 files changed, 110 insertions(+), 175 deletions(-) diff --git a/desktop/desktop_main.s b/desktop/desktop_main.s index bf9f7ad..21341ce 100644 --- a/desktop/desktop_main.s +++ b/desktop/desktop_main.s @@ -160,7 +160,7 @@ loop_counter: ;;; -------------------------------------------------- L40E0: tsx - stx LE256 + stx saved_stack sta menu_click_params::item_num jsr L59A0 copy #0, menu_click_params::item_num @@ -511,7 +511,7 @@ menu_dispatch2: call_proc: tsx - stx LE256 + stx saved_stack proc_addr := *+1 jmp dummy1234 ; self-modified .endproc @@ -525,7 +525,7 @@ call_proc: .proc handle_click tsx - stx LE256 + stx saved_stack MGTK_RELAY_CALL MGTK::FindWindow, event_coords lda findwindow_which_area bne not_desktop @@ -1971,8 +1971,7 @@ L4EB7: sta cached_window_icon_list,x L4EC3: sta cached_window_icon_count jsr DESKTOP_COPY_FROM_BUF - lda #$00 - sta cached_window_id + copy #0, cached_window_id jsr DESKTOP_COPY_TO_BUF MGTK_RELAY_CALL MGTK::CloseWindow, active_window_id ldx active_window_id @@ -1990,18 +1989,15 @@ L4EC3: sta cached_window_icon_count jsr zero_grafport5_coords DESKTOP_RELAY_CALL DT_HIGHLIGHT_ICON, icon_param jsr reset_grafport3 - lda #$01 - sta selected_icon_count - lda icon_param - sta selected_icon_list + copy #1, selected_icon_count + copy icon_param, selected_icon_list ldx active_window_id dex lda LEC26,x jsr L7345 ldx active_window_id dex - lda #$00 - sta LEC26,x + copy #0, LEC26,x MGTK_RELAY_CALL MGTK::FrontWindow, active_window_id lda active_window_id bne L4F3C @@ -2121,7 +2117,7 @@ L5056: lda selected_icon_count lda selected_icon_list cmp trash_icon_num beq L5055 -L5067: lda #$00 +L5067: lda #0 tax tay L506B: lda selected_icon_list,y @@ -2226,7 +2222,7 @@ entry: jmp :- : sta cached_window_icon_count - lda #$00 + lda #0 ldx active_window_id dex sta win_view_by_table,x @@ -2265,8 +2261,7 @@ L516D: lda L51EB,x sta getwinport_params2::window_id jsr get_set_port2 jsr cached_icons_window_to_screen - lda #$00 - sta L51EF + copy #0, L51EF L518D: lda L51EF cmp cached_window_icon_count beq L51A7 @@ -2297,8 +2292,7 @@ L51C0: ldx L51EF jsr icon_screen_to_window dec L51EF bne L51C0 -L51E3: lda #$00 - sta cached_window_id +L51E3: copy #0, cached_window_id jmp DESKTOP_COPY_TO_BUF L51EB: .word 0 @@ -2350,8 +2344,7 @@ L5246: lda L5263,x jsr reset_grafport3 jsr L6C19 jsr update_scrollbars - lda #$00 - sta L4152 + copy #0, L4152 rts L5263: .word 0 @@ -2477,14 +2470,12 @@ loop: cpx cached_window_icon_count beq done lda cached_window_icon_list,x jsr DESKTOP_FREE_ICON - lda #$00 - sta cached_window_icon_list,x + copy #0, cached_window_icon_list,x inx jmp loop done: jsr DESKTOP_COPY_FROM_BUF - lda #$00 - sta cached_window_id + copy #0, cached_window_id jmp DESKTOP_COPY_TO_BUF .endproc @@ -2578,8 +2569,7 @@ L53AC: inx cpx selected_icon_list bne L53A1 sty L5427 -L53B5: lda #$FF - sta L5426 +L53B5: copy #$FF, L5426 L53BA: inc L5426 lda L5426 cmp selected_icon_count @@ -2657,8 +2647,7 @@ L544A: .byte 0 .byte 0 L544D: - lda #$00 - sta $1800 + copy #0, $1800 lda active_window_id bne L545A jmp L54C5 @@ -2707,8 +2696,7 @@ L54B7: pla inx jmp L5485 -L54BD: lda #$00 - sta cached_window_id +L54BD: copy #0, cached_window_id jsr DESKTOP_COPY_TO_BUF L54C5: ldx $1800 ldy #$00 @@ -2722,8 +2710,7 @@ L54CA: lda cached_window_icon_list,y clc adc cached_window_icon_count sta $1800 - lda #$00 - sta L544A + copy #0, L544A ldax #$03FF L54EA: sta L5444,x dex @@ -2788,8 +2775,7 @@ L5565: sta L5444,x beq L5579 jmp L54F0 -L5579: lda #$00 - sta L544A +L5579: copy #0, L544A jsr clear_selection L5581: jsr L55F0 L5584: jsr get_event @@ -2932,8 +2918,7 @@ L56E3: dec L56F8 lda selected_window_index beq L56F0 jsr reset_grafport3 -L56F0: lda #$00 - sta cached_window_id +L56F0: copy #0, cached_window_id jmp DESKTOP_COPY_TO_BUF L56F8: .byte 0 @@ -2975,8 +2960,7 @@ L5721: cpx #$08 bne L572D rts -L572D: lda #$00 - sta L578C +L572D: copy #0, L578C L5732: jsr get_event lda event_kind cmp #MGTK::EventKind::key_down @@ -3057,8 +3041,7 @@ loop: jsr get_event cmp #CHAR_ESCAPE bne :+ -done: lda #$00 - sta cached_window_id +done: copy #0, cached_window_id jsr DESKTOP_COPY_TO_BUF rts @@ -3260,8 +3243,7 @@ L5916: lda cached_window_icon_list,x pha lda cached_window_icon_list,x sta icon_param - lda #$00 - sta cached_window_icon_list,x + copy #0, cached_window_icon_list,x DESKTOP_RELAY_CALL DT_REMOVE_ICON, icon_param lda icon_param jsr DESKTOP_FREE_ICON @@ -3331,8 +3313,7 @@ L59A8: lda #$C0 .proc L59AA sta L5AD0 - lda #$00 - sta cached_window_id + copy #0, cached_window_id jsr DESKTOP_COPY_TO_BUF bit L5AD0 bpl L59EA @@ -3398,8 +3379,7 @@ L5A43: jsr close_window L5A4C: jsr redraw_windows_and_desktop jsr clear_selection - lda #$00 - sta cached_window_id + copy #0, cached_window_id jsr DESKTOP_COPY_TO_BUF lda menu_click_params::item_num tay @@ -3619,8 +3599,7 @@ pgrt: jsr L64B0 done_client_click: jsr DESKTOP_COPY_FROM_BUF - lda #$00 - sta cached_window_id + copy #0, cached_window_id jmp DESKTOP_COPY_TO_BUF .endproc @@ -3635,8 +3614,7 @@ done_client_click: rts : jsr L5C54 jsr DESKTOP_COPY_FROM_BUF - lda #$00 - sta cached_window_id + copy #0, cached_window_id jmp DESKTOP_COPY_TO_BUF .endproc @@ -3717,9 +3695,9 @@ L5CE6: cmp selected_icon_list,x bmi L5CFB L5CF0: bit double_click_flag bmi L5CF8 - jmp L5DFC + jmp handle_double_click -L5CF8: jmp L5D55 +L5CF8: jmp start_icon_drag L5CFB: bit BUTN0 bpl L5D08 @@ -3748,11 +3726,11 @@ L5D0B: ldx selected_icon_count jsr icon_screen_to_window jsr reset_grafport3 bit double_click_flag - bmi L5D55 - jmp L5DFC + bmi start_icon_drag + jmp handle_double_click - ;; Near start of file drag -L5D55: lda icon_num +start_icon_drag: + lda icon_num sta drag_drop_param DESKTOP_RELAY_CALL DT_DRAG_HIGHLIGHTED, drag_drop_param tax @@ -3786,10 +3764,10 @@ L5D99: and #$7F jmp redraw_windows_and_desktop L5DA6: cpx #$02 - bne L5DAD + bne :+ jmp L5DEC -L5DAD: cpx #$FF +: cpx #$FF beq L5DF7 lda active_window_id sta getwinport_params2::window_id @@ -3814,15 +3792,15 @@ L5DC4: txa jsr cached_icons_screen_to_window jsr reset_grafport3 L5DEC: jsr DESKTOP_COPY_FROM_BUF - lda #$00 - sta cached_window_id + copy #0, cached_window_id jmp DESKTOP_COPY_TO_BUF -L5DF7: ldx LE256 +L5DF7: ldx saved_stack txs rts -L5DFC: lda icon_num ; after a double-click (on file or folder) +handle_double_click: + lda icon_num ; after a double-click (on file or folder) jsr icon_entry_lookup stax $06 ldy #IconEntry::win_type @@ -3835,14 +3813,13 @@ L5DFC: lda icon_num ; after a double-click (on file or folder) cmp #icon_entry_type_bas beq L5E28 cmp #icon_entry_type_dir - bne L5E27 + bne :+ lda icon_num ; handle directory jsr open_folder_or_volume_icon - bmi L5E27 + bmi :+ jmp L5DEC - -L5E27: rts +: rts L5E28: sta L5E77 lda active_window_id @@ -4062,8 +4039,7 @@ L6054: copy16 event_xcoord, rect_E230::x1 jmp L6079 L6068: copy16 event_xcoord, rect_E230::x2 - lda #$00 - sta L60D3 + copy #0, L60D3 L6079: cmp16 event_ycoord, rect_E230::y2 bpl L60AE cmp16 event_ycoord, rect_E230::y1 @@ -4075,8 +4051,7 @@ L609A: copy16 event_ycoord, rect_E230::y1 jmp L60BF L60AE: copy16 event_ycoord, rect_E230::y2 - lda #$00 - sta L60D4 + copy #0, L60D4 L60BF: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230 jmp L5F6B @@ -4133,8 +4108,7 @@ L6143: lda active_window_id L614E: cpx cached_window_icon_count bne L6161 jsr DESKTOP_COPY_FROM_BUF - lda #$00 - sta cached_window_id + copy #0, cached_window_id jsr DESKTOP_COPY_TO_BUF jmp L6196 @@ -4172,8 +4146,7 @@ L6199: .word 0 jsr cached_icons_window_to_screen jsr update_scrollbars jsr cached_icons_screen_to_window - lda #$00 - sta cached_window_id + copy #0, cached_window_id jsr DESKTOP_COPY_TO_BUF jmp reset_grafport3 .endproc @@ -4240,10 +4213,8 @@ L6227: sta cached_window_icon_count jsr zero_grafport5_coords DESKTOP_RELAY_CALL DT_HIGHLIGHT_ICON, icon_param jsr reset_grafport3 - lda #$01 - sta selected_icon_count - lda icon_param - sta selected_icon_list + copy #1, selected_icon_count + copy icon_param, selected_icon_list L6276: ldx active_window_id dex lda LEC26,x @@ -4259,8 +4230,7 @@ L6276: ldx active_window_id sta LEC26,x sta win_view_by_table,x MGTK_RELAY_CALL MGTK::FrontWindow, active_window_id - lda #$00 - sta cached_window_id + copy #0, cached_window_id jsr DESKTOP_COPY_TO_BUF lda #MGTK::checkitem_uncheck sta checkitem_params::check @@ -4928,8 +4898,7 @@ L69BE: copy16 event_xcoord, rect_E230::x1 jmp L69E3 L69D2: copy16 event_xcoord, rect_E230::x2 - lda #$00 - sta L6A3D + copy #0, L6A3D L69E3: cmp16 event_ycoord, rect_E230::y2 bpl L6A18 cmp16 event_ycoord, rect_E230::y1 @@ -4941,8 +4910,7 @@ L6A04: copy16 event_ycoord, rect_E230::y1 jmp L6A29 L6A18: copy16 event_ycoord, rect_E230::y2 - lda #$00 - sta L6A3E + copy #0, L6A3E L6A29: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230 jmp L68E4 @@ -5052,8 +5020,7 @@ L6B01: MGTK_RELAY_CALL MGTK::SelectWindow, cached_window_id sta active_window_id jsr L6C19 jsr redraw_windows - lda #$00 - sta cached_window_id + copy #0, cached_window_id jmp DESKTOP_COPY_TO_BUF L6B1E: lda LEC2E @@ -5061,7 +5028,7 @@ L6B1E: lda LEC2E bcc L6B2F lda #warning_msg_too_many_windows jsr warning_dialog_proc_num - ldx LE256 + ldx saved_stack txs rts @@ -5079,16 +5046,14 @@ L6B3A: lda icon_params2 inc LEC2E ldx cached_window_id dex - lda #$00 - sta win_view_by_table,x + copy #0, win_view_by_table,x lda LEC2E cmp #$02 bcs L6B60 jsr enable_various_file_menu_items jmp L6B68 -L6B60: lda #$00 - sta checkitem_params::check +L6B60: copy #0, checkitem_params::check jsr check_item L6B68: lda #$01 sta checkitem_params::menu_item @@ -5119,17 +5084,18 @@ L6BA1: DESKTOP_RELAY_CALL DT_REDRAW_ICON, icon_params2 jsr icon_screen_to_window jsr reset_grafport3 L6BB8: jsr L744B + lda cached_window_id jsr window_lookup - ldy #$38 + ldy #MGTK::OpenWindow jsr MGTK_RELAY + lda active_window_id sta getwinport_params2::window_id jsr get_set_port2 jsr draw_window_header jsr cached_icons_window_to_screen - lda #$00 - sta L6C0E + copy #0, L6C0E L6BDA: lda L6C0E cmp cached_window_icon_count beq L6BF4 @@ -5146,8 +5112,7 @@ L6BF4: lda cached_window_id jsr update_scrollbars jsr cached_icons_screen_to_window jsr DESKTOP_COPY_FROM_BUF - lda #$00 - sta cached_window_id + copy #0, cached_window_id jsr DESKTOP_COPY_TO_BUF jmp reset_grafport3 @@ -5291,16 +5256,13 @@ L6D25: pla bne L6D31 rts -L6D31: lda #$00 - sta L6DB0 - lda selected_window_index - sta rect_E230 +L6D31: copy #0, L6DB0 + copy selected_window_index, rect_E230 ; ??? beq L6D7D cmp active_window_id beq L6D4D jsr zero_grafport5_coords - lda #$00 - sta rect_E230 + copy #0, rect_E230 beq L6D56 L6D4D: sta getwinport_params2::window_id jsr get_set_port2 @@ -5782,7 +5744,7 @@ L7147: lda LEC2E bne L7161 L715F: lda #warning_msg_window_must_be_closed2 L7161: jsr warning_dialog_proc_num - ldx LE256 + ldx saved_stack txs rts @@ -5809,10 +5771,8 @@ L7169: copy16 L485F, record_ptr lda LCBANK1 lda LCBANK1 - lda #$FF - sta L70C4 - lda #$00 - sta L70C3 + copy #$FF, L70C4 + copy #$00, L70C3 entry_ptr := $08 @@ -5842,8 +5802,7 @@ L71CB: inc L70C3 add16_8 entry_ptr, entry_length, entry_ptr jmp L71F7 -L71E7: lda #$00 - sta L70C3 +L71E7: copy #$00, L70C3 copy16 #$0C04, entry_ptr jsr do_read @@ -5958,7 +5917,7 @@ L72A8: .word 0 lda icon_params2 sta L533F jsr L59A8 -: ldx LE256 +: ldx saved_stack txs done: rts .endproc @@ -6163,8 +6122,7 @@ L74C8: lda ($08),y jmp L7569 L74D3: tay - lda #$00 - sta L7620 + copy #$00, L7620 jsr push_pointers tya pha @@ -6184,11 +6142,11 @@ L74D3: tay jsr DESKTOP_SHOW_ALERT0 jsr L8B1F dec LEC2E - ldx LE256 + ldx saved_stack txs rts -L750D: ldy #$00 +L750D: ldy #0 lda ($06),y tay L7512: lda ($06),y @@ -6890,10 +6848,10 @@ L7B69: .word 0 bpl :- sta L7D5B - lda #$FF + lda #<$7FFF sta L7B5F sta L7B61 - lda #$7F + lda #>$7FFF sta L7B5F+1 sta L7B61+1 ldx cached_window_id @@ -7281,7 +7239,7 @@ check_date: lda LCBANK2 lda LCBANK2 - lda #$00 + lda #0 sta date sta date+1 sta index @@ -7340,7 +7298,7 @@ next: inc index ora #$80 sta (ptr),y - lda #$00 + lda #0 sta date sta date+1 @@ -7350,8 +7308,7 @@ next: inc index iny jsr L812B - lda #$00 - sta record_num + copy #0, record_num jmp loop .endscope @@ -7442,7 +7399,7 @@ next: inc index copy16 #84, pos_col_name::xcoord copy16 #203, pos_col_type::xcoord - lda #$00 + lda #0 sta pos_col_size::xcoord sta pos_col_size::xcoord+1 copy16 #231, pos_col_date::xcoord @@ -7483,8 +7440,7 @@ check_type: lda #0 sta index sta record_num - lda #$FF - sta $0806 + copy #$FF, $0806 loop: lda index cmp num_records @@ -7542,10 +7498,8 @@ L809E: inc index iny jsr L812B - lda #$00 - sta record_num - lda #$FF - sta $0806 + copy #0, record_num + copy #$FF, $0806 jmp loop .endscope @@ -7586,8 +7540,7 @@ L809E: inc index .proc finish_view_change ptr := $06 - lda #$00 - sta record_num + copy #0, record_num loop: lda record_num cmp num_records @@ -7673,8 +7626,7 @@ L8171: lda ($06),y L8183: sta text_buffer2::data-1,x dex bpl L8183 - lda #$00 - sta text_buffer2::length + copy #0, text_buffer2::length lda pos_col_type::ycoord clc adc L813E @@ -9286,9 +9238,8 @@ restore_flag: ;; Called with routine # in A load: pha ; entry point with bit clear - lda #$00 - sta restore_flag - beq :+ + copy #0, restore_flag + beq :+ ; always restore: pha @@ -9993,8 +9944,7 @@ L92E6: .byte 0 bne :+ rts -: lda #$00 - sta get_info_dialog_params::L92E6 +: copy #0, get_info_dialog_params::L92E6 jsr prep_grafport3 L92F5: ldx get_info_dialog_params::L92E6 cpx selected_icon_count @@ -10052,8 +10002,7 @@ L9366: lda selected_window_index L9381: jsr run_get_info_dialog_proc jmp L93DB -L9387: lda #$81 - sta get_info_dialog_params::L92E3 +L9387: copy #$81, get_info_dialog_params::L92E3 lda get_info_dialog_params::L92E6 clc adc #$01 @@ -10062,8 +10011,7 @@ L9387: lda #$81 inc get_info_dialog_params::L92E3 inc get_info_dialog_params::L92E3 L939D: jsr run_get_info_dialog_proc - lda #$00 - sta L942E + copy #0, L942E ldx get_info_dialog_params::L92E6 lda selected_icon_list,x ldy #$0F @@ -10084,8 +10032,7 @@ L93B8: lda DEVLST,y L93DB: ldx get_info_dialog_params::L92E6 lda selected_icon_list,x jsr icon_entry_name_lookup - lda #$01 - sta get_info_dialog_params::L92E3 + copy #1, get_info_dialog_params::L92E3 copy16 $06, get_info_dialog_params::L92E4 jsr run_get_info_dialog_proc copy #2, get_info_dialog_params::L92E3 @@ -10093,30 +10040,24 @@ L93DB: ldx get_info_dialog_params::L92E6 bne L9413 bit L942E bmi L940C - lda #$00 - sta get_info_dialog_params::L92E4 - beq L9428 -L940C: lda #$01 - sta get_info_dialog_params::L92E4 - bne L9428 + copy #0, get_info_dialog_params::L92E4 + beq L9428 ; always +L940C: copy #1, get_info_dialog_params::L92E4 + bne L9428 ; always L9413: lda get_file_info_params5::access and #$C3 cmp #$C3 beq L9423 - lda #$01 - sta get_info_dialog_params::L92E4 - bne L9428 -L9423: lda #$00 - sta get_info_dialog_params::L92E4 + copy #1, get_info_dialog_params::L92E4 + bne L9428 ; always +L9423: copy #0, get_info_dialog_params::L92E4 L9428: jsr run_get_info_dialog_proc jmp L942F L942E: .byte 0 -L942F: lda #$03 - sta get_info_dialog_params::L92E3 - lda #$00 - sta path_buf +L942F: copy #3, get_info_dialog_params::L92E3 + copy #0, path_buf lda selected_window_index bne L9472 ; ProDOS TRM 4.4.5: lda get_file_info_params5::aux_type ; "When file information about a volume @@ -10195,8 +10136,7 @@ L951F: copy16 #str_file_type, get_info_dialog_params::L92E4 L952E: inc get_info_dialog_params::L92E6 jmp L92F5 -L9534: lda #$00 - sta path_buf4 +L9534: copy #0, path_buf4 rts str_vol: @@ -10247,8 +10187,7 @@ rename_dialog_params: .addr $1F00 start: - lda #$00 - sta L9706 + copy #0, L9706 L9576: lda L9706 cmp selected_icon_count bne L9581 @@ -10958,8 +10897,7 @@ op_jt2_copy: : jsr remove_dst_path_segment jsr remove_src_path_segment - lda #$FF - sta cancel_descent_flag + copy #$FF, cancel_descent_flag jmp done ;; File @@ -11128,9 +11066,8 @@ existing_size: beq :+ ;; Destination not available; note it, can prompt later - lda #$FF - sta src_dst_exclusive_flag - bne read + copy #$FF, src_dst_exclusive_flag + bne read ; always : jsr copy_dst_ref_num ;; Read @@ -11155,8 +11092,7 @@ write: bit src_eof_flag yax_call JT_MLI_RELAY, SET_MARK, mark_src_params beq read - lda #$FF - sta src_eof_flag + copy #$FF, src_eof_flag jmp read ;; EOF @@ -11218,8 +11154,7 @@ done: rts : copy16 read_src_params::trans_count, write_dst_params::request_count ora read_src_params::trans_count bne :+ -eof: lda #$FF - sta src_eof_flag +eof: copy #$FF, src_eof_flag : yax_call JT_MLI_RELAY, GET_MARK, mark_src_params rts .endproc @@ -11419,11 +11354,9 @@ do_it: yax_call JT_MLI_RELAY, GET_FILE_INFO, src_file_info_params bne done lda #ACCESS_DEFAULT sta src_file_info_params::access - lda #7 ; param count for SET_FILE_INFO - sta src_file_info_params + copy #7, src_file_info_params ; param count for SET_FILE_INFO yax_call JT_MLI_RELAY, SET_FILE_INFO, src_file_info_params - lda #$A ; param count for GET_FILE_INFO - sta src_file_info_params + copy #$A, src_file_info_params ; param count for GET_FILE_INFO jmp L9F29 done: rts diff --git a/desktop/desktop_res.s b/desktop/desktop_res.s index e600a9c..467eba1 100644 --- a/desktop/desktop_res.s +++ b/desktop/desktop_res.s @@ -1020,8 +1020,10 @@ rect_E230: DEFINE_RECT 0,0,0,0, rect_E230 .byte $00,$00,$00,$00,$00,$00,$00,$00 .byte $00,$00,$00,$00 -LE256: - .byte $00,$00,$00,$00 +saved_stack: + .byte 0 + + .byte $00,$00,$00 .assert * = last_menu_click_params, error, "Entry point mismatch" From 9d9363110ba296b75f372143443c02647d724896 Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Wed, 26 Dec 2018 15:13:47 -0800 Subject: [PATCH 4/4] disasm: unscoped label burn-down --- desktop/desktop_main.s | 148 +++++++++++++++++++++-------------------- 1 file changed, 77 insertions(+), 71 deletions(-) diff --git a/desktop/desktop_main.s b/desktop/desktop_main.s index 21341ce..182f3c3 100644 --- a/desktop/desktop_main.s +++ b/desktop/desktop_main.s @@ -10,9 +10,6 @@ .proc desktop_main -L0020 := $0020 -L0800 := $0800 - .scope format_erase_overlay L0CB8 := $0CB8 L0CD7 := $0CD7 @@ -206,7 +203,7 @@ L4151: rts ;;; ============================================================ -L4152: .byte 0 +draw_window_header_flag: .byte 0 .proc update_window @@ -218,7 +215,7 @@ L4152: .byte 0 L415B: sta active_window_id sta cached_window_id jsr DESKTOP_COPY_TO_BUF - copy #$80, L4152 + copy #$80, draw_window_header_flag copy cached_window_id, getwinport_params2::window_id jsr get_port2 jsr draw_window_header @@ -253,7 +250,7 @@ L41CB: ldx cached_window_id lda win_view_by_table,x bpl L41E2 jsr L6C19 - copy #0, L4152 + copy #0, draw_window_header_flag lda active_window_id jmp assign_window_portbits @@ -275,7 +272,7 @@ L41FE: lda L4241 : inc L4241 jmp L41FE -L4227: copy #$00, L4152 +L4227: copy #$00, draw_window_header_flag copy cached_window_id, getwinport_params2::window_id jsr get_set_port2 jsr cached_icons_screen_to_window @@ -1340,7 +1337,7 @@ slash_index: lda ($06),y tay : lda ($06),y - sta L0800,y + sta $800,y dey bpl :- pla @@ -1368,7 +1365,7 @@ slash_index: bne :- : dey - sty L0800 + sty $800 ;; Strip segment off path at $840 ldy $840 @@ -1396,15 +1393,15 @@ slash_index: ;; Copy window path to $800 ldy buf_win_path : lda buf_win_path,y - sta L0800,y + sta $800,y dey bpl :- addr_call copy_ramcard_prefix, $840 ;; Find last '/' in path... - ldy L0800 -: lda L0800,y + ldy $800 +: lda $800,y cmp #'/' beq :+ dey @@ -1412,7 +1409,7 @@ slash_index: ;; And back up one more path segment... : dey -: lda L0800,y +: lda $800,y cmp #'/' beq :+ dey @@ -1422,9 +1419,9 @@ slash_index: ldx $840 : iny inx - lda L0800,y + lda $800,y sta $840,x - cpy L0800 + cpy $800 bne :- rts .endproc @@ -1891,7 +1888,7 @@ maybe_open_file: pla lda active_window_id - jsr window_address_lookup + jsr window_path_lookup stax $06 ldy #0 @@ -2052,7 +2049,7 @@ start: copy active_window_id, new_folder_dialog_params::phase L4FC6: lda active_window_id beq L4FD4 - jsr window_address_lookup + jsr window_path_lookup stax new_folder_dialog_params::L4F68 L4FD4: copy #$80, new_folder_dialog_params::phase yax_call invoke_dialog_proc, index_new_folder_dialog, new_folder_dialog_params @@ -2133,7 +2130,7 @@ L5077: iny jsr jt_eject L5084: ldx L5098 lda $1800,x - sta L533F + sta unit_number_to_refresh jsr L59A8 dec L5098 bpl L5084 @@ -2340,11 +2337,11 @@ L5246: lda L5263,x dex bpl L5246 - copy #$80, L4152 + copy #$80, draw_window_header_flag jsr reset_grafport3 jsr L6C19 jsr update_scrollbars - copy #0, L4152 + copy #0, draw_window_header_flag rts L5263: .word 0 @@ -2481,7 +2478,9 @@ done: jsr DESKTOP_COPY_FROM_BUF ;;; ============================================================ -L533F: .byte 0 + ;; Set after format, erase, failed open, etc. +unit_number_to_refresh: + .byte 0 ;;; ============================================================ @@ -2493,7 +2492,7 @@ L533F: .byte 0 lda #$04 jsr dynamic_routine_800 bne :+ - stx L533F + stx unit_number_to_refresh jsr redraw_windows_and_desktop jsr L59A4 : jmp redraw_windows_and_desktop @@ -2512,7 +2511,7 @@ fail: rts jsr dynamic_routine_800 bne done - stx L533F + stx unit_number_to_refresh jsr redraw_windows_and_desktop jsr L59A4 done: jmp redraw_windows_and_desktop @@ -2583,7 +2582,7 @@ L53D0: tax lda selected_icon_list,x jsr L5431 bmi L53BA - jsr window_address_lookup + jsr window_path_lookup stax $06 ldy #$00 lda ($06),y @@ -2606,7 +2605,7 @@ L5403: jsr close_window L540E: ldx L5427 L5411: lda L5428,x - sta L533F + sta unit_number_to_refresh jsr L59A8 ldx L5427 dec L5427 @@ -2940,7 +2939,7 @@ L56F8: .byte 0 bne L5708 rts -L5708: sta L0800 +L5708: sta $800 ldy #$01 ldx #$00 L570F: lda LEC26,x @@ -2950,7 +2949,7 @@ L570F: lda LEC26,x beq L5721 txa dex - sta L0800,y + sta $800,y iny L5720: inx L5721: cpx #$08 @@ -2985,7 +2984,7 @@ L5743: lda event_key bne L5763 ldx #$00 L5763: stx L578C - lda L0800,x + lda $800,x sta findwindow_window_id jsr handle_inactive_window_click jmp L5732 @@ -2996,7 +2995,7 @@ L5772: ldx L578C ldx L578D dex L577C: stx L578C - lda L0800,x + lda $800,x sta findwindow_window_id jsr handle_inactive_window_click jmp L5732 @@ -3086,7 +3085,7 @@ vertical: ldx active_window_id dex lda win_view_by_table,x - sta L5B1B + sta active_window_view_by jsr L58C3 stax L585F sty horiz_scroll_flag @@ -3318,18 +3317,20 @@ L59A8: lda #$C0 bit L5AD0 bpl L59EA bvc L59D2 - lda L533F - ldy #$0F -L59C1: cmp device_to_icon_map,y - beq L59C9 + + lda unit_number_to_refresh + ldy #15 +: cmp device_to_icon_map,y + beq :+ dey - bpl L59C1 -L59C9: sty L5AC6 + bpl :- + +: sty L5AC6 sty menu_click_params::item_num jmp L59F3 L59D2: ldy DEVCNT - lda L533F + lda unit_number_to_refresh L59D8: cmp DEVLST,y beq L59E1 dey @@ -3478,7 +3479,8 @@ L5AD0: .byte 0 ;;; ============================================================ -L5B1B: .byte 0 +active_window_view_by: + .byte 0 .proc handle_client_click lda active_window_id @@ -3487,7 +3489,7 @@ L5B1B: .byte 0 ldx active_window_id dex lda win_view_by_table,x - sta L5B1B + sta active_window_view_by ;; Restore event coords (following detect_double_click) COPY_STRUCT MGTK::Point, saved_event_coords, event_coords @@ -3626,7 +3628,7 @@ done_client_click: MGTK_RELAY_CALL MGTK::UpdateThumb, updatethumb_params jsr L6523 jsr L84D1 - bit L5B1B + bit active_window_view_by bmi :+ jsr cached_icons_screen_to_window : lda active_window_id @@ -3664,7 +3666,7 @@ ctl: .byte 0 ;;; ============================================================ .proc handle_content_click - bit L5B1B + bit active_window_view_by bpl :+ jmp clear_selection @@ -3823,7 +3825,7 @@ handle_double_click: L5E28: sta L5E77 lda active_window_id - jsr window_address_lookup + jsr window_path_lookup stax $06 ldy #$00 lda ($06),y @@ -3893,7 +3895,7 @@ L5E77: .byte 0 bmi :+ jsr close_active_window : lda active_window_id - jsr window_address_lookup + jsr window_path_lookup ptr := $06 @@ -4422,7 +4424,7 @@ L650D: .word 0 .endproc .proc L650F - bit L5B1B + bit active_window_view_by bmi :+ jsr cached_icons_window_to_screen : jsr L6523 @@ -4460,7 +4462,7 @@ L650D: .word 0 .endproc .proc L6556 - bit L5B1B + bit active_window_view_by bmi :+ jsr cached_icons_screen_to_window : MGTK_RELAY_CALL MGTK::PaintRect, grafport2::cliprect @@ -5139,16 +5141,16 @@ L6C25: jsr push_pointers lda cached_window_id sta getwinport_params2::window_id jsr get_set_port2 - bit L4152 - bmi L6C39 + bit draw_window_header_flag + bmi :+ jsr draw_window_header -L6C39: lda cached_window_id +: lda cached_window_id sta getwinport_params2::window_id jsr get_port2 - bit L4152 - bmi L6C4A + bit draw_window_header_flag + bmi :+ jsr offset_grafport2_and_set -L6C4A: ldx cached_window_id +: ldx cached_window_id dex lda LEC26,x ldx #$00 @@ -5215,10 +5217,10 @@ rows_done: L6CCD: lda cached_window_id sta getwinport_params2::window_id jsr get_set_port2 - bit L4152 - bmi L6CDE + bit draw_window_header_flag + bmi :+ jsr draw_window_header -L6CDE: jsr cached_icons_window_to_screen +: jsr cached_icons_window_to_screen jsr offset_grafport2_and_set COPY_BLOCK grafport2::cliprect, rect_E230 @@ -5466,7 +5468,7 @@ flag: .byte 0 .proc L6F0D ptr := $6 - jsr window_address_lookup + jsr window_path_lookup sta ptr sta pathptr stx ptr+1 @@ -5600,7 +5602,7 @@ start: sta flag loop: inc L7049 lda L7049 - cmp #$09 + cmp #9 ; windows are 1-8 bcc L6FF6 bit flag bpl L6FF5 @@ -5609,17 +5611,19 @@ L6FF5: rts L6FF6: jsr window_lookup stax ptr - ldy #10 + ldy #MGTK::Winfo::status lda (ptr),y beq loop + lda L7049 - jsr window_address_lookup + jsr window_path_lookup stax ptr ldy #0 lda (ptr),y tay cmp path_buffer - beq L7027 + beq :+ + bit flag bmi loop ldy path_buffer @@ -5628,11 +5632,13 @@ L6FF6: jsr window_lookup cmp #'/' bne loop dey -L7027: lda (ptr),y + +: lda (ptr),y cmp path_buffer,y bne loop dey - bne L7027 + bne :- + bit flag bmi done ldx L704B @@ -5915,7 +5921,7 @@ L72A8: .word 0 lda selected_window_index bne :+ lda icon_params2 - sta L533F + sta unit_number_to_refresh jsr L59A8 : ldx saved_stack txs @@ -6089,7 +6095,7 @@ L7471: lda ($06),y bne L74D3 jsr push_pointers lda cached_window_id - jsr window_address_lookup + jsr window_path_lookup stax $08 lda $06 clc @@ -6126,7 +6132,7 @@ L74D3: tay jsr push_pointers tya pha - jsr window_address_lookup + jsr window_path_lookup stax $06 pla asl a @@ -6177,7 +6183,7 @@ L7548: iny cpx LE1B0 bne L7548 lda cached_window_id - jsr window_address_lookup + jsr window_path_lookup stax $08 ldy LE1B0 L7561: lda LE1B0,y @@ -7985,7 +7991,7 @@ L84D0: .byte 0 .proc L84D1 jsr push_pointers - bit L5B1B + bit active_window_view_by bmi L84DC jsr cached_icons_window_to_screen L84DC: sub16 grafport2::cliprect::x2, grafport2::cliprect::x1, L85F8 @@ -8268,7 +8274,7 @@ tmp: .byte 0 ;;; ============================================================ ;;; Look up window address. Index in A, address in A,X. -.proc window_address_lookup +.proc window_path_lookup asl a tax lda window_path_addr_table,x @@ -8897,7 +8903,7 @@ skip: lda icon_params2 .proc animate_window ptr := $06 - rect_table := $0800 + rect_table := $800 close: ldy #$80 bne :+ @@ -9799,7 +9805,7 @@ nullptr: bne :+ rts : ldx selected_icon_count - stx L0800 + stx $800 dex : lda selected_icon_list,x sta $0801,x @@ -9816,7 +9822,7 @@ loop: ldx index jsr smartport_eject : inc index ldx index - cpx L0800 + cpx $800 bne loop rts @@ -9929,7 +9935,7 @@ unit_number: L92DB: .byte 0,0 ; unused? - DEFINE_READ_BLOCK_PARAMS block_params, $0800, $A + DEFINE_READ_BLOCK_PARAMS block_params, $800, $A .proc get_info_dialog_params L92E3: .byte 0