mirror of
https://github.com/mi57730/a2d.git
synced 2025-03-20 01:31:25 +00:00
disasm: recursive operations
This commit is contained in:
parent
12d02b49f6
commit
5d6a878024
@ -9359,13 +9359,13 @@ jt_get_size: jmp do_get_size ; cmd_get_size
|
||||
.proc operations
|
||||
|
||||
do_copy_file:
|
||||
copy #0, operation_flags
|
||||
copy #0, operation_flags ; copy/delete
|
||||
tsx
|
||||
stx stack_stash
|
||||
jsr copy_bytes_and_clear_system_bitmap
|
||||
jsr prep_op_jt_overlay4_clear_system_bitmap
|
||||
jsr do_copy_dialog_phase
|
||||
jsr LA271
|
||||
jsr L9968
|
||||
jsr prep_op_jt_overlay1
|
||||
L8F3F: copy16 #$00FF, LE05B
|
||||
jsr copy_file_with_flag
|
||||
jsr done_dialog_phase1
|
||||
@ -9376,24 +9376,24 @@ L8F4F: jsr L91E8
|
||||
jmp L8F4F
|
||||
|
||||
do_delete_file:
|
||||
copy #0, operation_flags
|
||||
copy #0, operation_flags ; copy/delete
|
||||
tsx
|
||||
stx stack_stash
|
||||
jsr copy_bytes_and_clear_system_bitmap
|
||||
jsr prep_op_jt_overlay4_clear_system_bitmap
|
||||
lda #0
|
||||
jsr do_delete_dialog_phase
|
||||
jsr LA271
|
||||
jsr done_dialog_phase2
|
||||
jsr L9EBF
|
||||
jsr prep_op_jt_overlay2
|
||||
jsr delete_file
|
||||
jsr done_dialog_phase1
|
||||
jmp L8F4F
|
||||
|
||||
L8F7E: copy #$80, L918C
|
||||
copy #%11000000, operation_flags
|
||||
copy #%11000000, operation_flags ; get size
|
||||
tsx
|
||||
stx stack_stash
|
||||
jsr copy_bytes_and_clear_system_bitmap
|
||||
jsr prep_op_jt_overlay4_clear_system_bitmap
|
||||
jsr L9984
|
||||
jsr LA271
|
||||
jsr L99BC
|
||||
@ -9423,7 +9423,7 @@ do_unlock:
|
||||
|
||||
do_get_size:
|
||||
copy #0, L918C
|
||||
copy #%11000000, operation_flags
|
||||
copy #%11000000, operation_flags ; get size
|
||||
jmp L8FEB
|
||||
|
||||
.proc do_drop
|
||||
@ -9433,9 +9433,8 @@ do_get_size:
|
||||
lda #$80
|
||||
bne set ; always
|
||||
: lda #$00
|
||||
set: sta drop_on_trash_flag
|
||||
lda #0
|
||||
sta operation_flags
|
||||
set: sta delete_flag
|
||||
copy #0, operation_flags ; copy/delete
|
||||
jmp L8FEB
|
||||
.endproc
|
||||
|
||||
@ -9443,22 +9442,26 @@ L8FDD: lda #$00
|
||||
beq L8FE3
|
||||
L8FE1: lda #$80
|
||||
L8FE3: sta unlock_flag
|
||||
copy #%10000000, operation_flags
|
||||
copy #%10000000, operation_flags ; lock/unlock
|
||||
|
||||
L8FEB: tsx
|
||||
stx stack_stash
|
||||
copy #0, LE05C
|
||||
jsr L91D5
|
||||
lda operation_flags
|
||||
beq :+
|
||||
beq :+ ; copy/delete
|
||||
jmp begin_operation
|
||||
|
||||
: bit drop_on_trash_flag
|
||||
bpl compute_target_prefix
|
||||
;; Copy or delete
|
||||
: bit delete_flag
|
||||
bpl compute_target_prefix ; copy
|
||||
|
||||
;; Delete - is it a volume?
|
||||
lda selected_window_index
|
||||
beq :+
|
||||
jmp begin_operation
|
||||
|
||||
;; Yes - eject it!
|
||||
: pla
|
||||
pla
|
||||
jmp JT_EJECT
|
||||
@ -9543,44 +9546,47 @@ L9076: ldy #$FF
|
||||
.proc begin_operation
|
||||
copy #0, L97E4
|
||||
|
||||
jsr copy_bytes_and_clear_system_bitmap
|
||||
jsr prep_op_jt_overlay4_clear_system_bitmap
|
||||
bit operation_flags
|
||||
bvs L90B4
|
||||
bmi L90AE
|
||||
bit drop_on_trash_flag
|
||||
bmi trash
|
||||
bvs @size
|
||||
bmi @lock
|
||||
bit delete_flag
|
||||
bmi @trash
|
||||
|
||||
jsr do_copy_dialog_phase
|
||||
jmp L90DE
|
||||
jmp iterate_selection
|
||||
|
||||
trash: lda #6
|
||||
@trash: lda #6
|
||||
jsr do_delete_dialog_phase
|
||||
jmp L90DE
|
||||
jmp iterate_selection
|
||||
|
||||
L90AE: jsr do_lock_dialog_phase
|
||||
jmp L90DE
|
||||
@lock: jsr do_lock_dialog_phase
|
||||
jmp iterate_selection
|
||||
|
||||
L90B4: jsr do_get_info_dialog_phase
|
||||
jmp L90DE
|
||||
@size: jsr do_get_size_dialog_phase
|
||||
jmp iterate_selection
|
||||
|
||||
;;; Perform operation
|
||||
|
||||
L90BA: bit operation_flags
|
||||
bvs L90D8
|
||||
bmi L90D2
|
||||
bit drop_on_trash_flag
|
||||
bmi L90CC
|
||||
jsr L9968
|
||||
jmp L90DE
|
||||
bvs @size
|
||||
bmi @lock
|
||||
bit delete_flag
|
||||
bmi @trash
|
||||
jsr prep_op_jt_overlay1
|
||||
jmp iterate_selection
|
||||
|
||||
L90CC: jsr L9EBF
|
||||
jmp L90DE
|
||||
@trash: jsr prep_op_jt_overlay2
|
||||
jmp iterate_selection
|
||||
|
||||
L90D2: jsr LA0DF
|
||||
jmp L90DE
|
||||
@lock: jsr prep_op_jt_overlay3
|
||||
jmp iterate_selection
|
||||
|
||||
L90D8: jsr LA241
|
||||
jmp L90DE
|
||||
@size: jsr LA241
|
||||
jmp iterate_selection
|
||||
|
||||
L90DE: jsr get_window_path_ptr
|
||||
iterate_selection:
|
||||
jsr get_window_path_ptr
|
||||
lda selected_icon_count
|
||||
bne :+
|
||||
jmp finish
|
||||
@ -9608,8 +9614,8 @@ loop: jsr get_window_path_ptr
|
||||
L9114: lda L97E4
|
||||
beq L913D
|
||||
bit operation_flags
|
||||
bmi L912F
|
||||
bit drop_on_trash_flag
|
||||
bmi @lock_or_size
|
||||
bit delete_flag
|
||||
bmi :+
|
||||
jsr copy_file
|
||||
jmp next_icon
|
||||
@ -9617,11 +9623,12 @@ L9114: lda L97E4
|
||||
: jsr delete_file
|
||||
jmp next_icon
|
||||
|
||||
L912F: bvs L9137
|
||||
@lock_or_size:
|
||||
bvs @size ; size?
|
||||
jsr LA114
|
||||
jmp next_icon
|
||||
|
||||
L9137: jsr LA271
|
||||
@size: jsr LA271
|
||||
jmp next_icon
|
||||
|
||||
L913D: jsr LA271
|
||||
@ -9636,13 +9643,16 @@ next_icon:
|
||||
bne finish
|
||||
inc L97E4
|
||||
bit operation_flags
|
||||
bmi L915D
|
||||
bit drop_on_trash_flag
|
||||
bpl L9165
|
||||
L915D: jsr done_dialog_phase2
|
||||
bmi @lock_or_size
|
||||
bit delete_flag
|
||||
bpl not_trash
|
||||
|
||||
@lock_or_size:
|
||||
jsr done_dialog_phase2
|
||||
bit operation_flags
|
||||
bvs finish
|
||||
L9165: jmp L90BA
|
||||
not_trash:
|
||||
jmp L90BA
|
||||
|
||||
finish: jsr done_dialog_phase1
|
||||
|
||||
@ -9691,11 +9701,14 @@ done_dialog_phase3:
|
||||
stack_stash:
|
||||
.byte 0
|
||||
|
||||
;; $80 = lock/unlock
|
||||
;; $C0 = get size (easily probed with oVerflow flag)
|
||||
;; $00 = copy/delete
|
||||
operation_flags:
|
||||
.byte 0 ; flags (bit 7 = ???, bit 6 = ???)
|
||||
.byte 0
|
||||
|
||||
;; high bit set = drop on trash, clear = otherwise
|
||||
drop_on_trash_flag:
|
||||
;; high bit set = delete, clear = copy
|
||||
delete_flag:
|
||||
.byte 0
|
||||
|
||||
;; high bit set = unlock, clear = lock
|
||||
@ -10418,6 +10431,7 @@ L97AD: .res 16, 0
|
||||
L97BD: .res 32, 0
|
||||
|
||||
;; overlayed indirect jump table
|
||||
op_jt_addrs_size := 6
|
||||
op_jt_addrs:
|
||||
op_jt_addr1: .addr L9B36
|
||||
op_jt_addr2: .addr L9B33
|
||||
@ -10573,7 +10587,8 @@ op_jt3: jmp (op_jt_addr3)
|
||||
|
||||
L992D: .byte $00,$00,$00,$00
|
||||
|
||||
L9931: .addr L9B36 ; Overlay for op_jt_addrs
|
||||
op_jt_overlay1:
|
||||
.addr L9B36 ; Overlay for op_jt_addrs
|
||||
.addr L9B33
|
||||
.addr rts2
|
||||
|
||||
@ -10597,10 +10612,9 @@ L995A: stax copy_dialog_params::count
|
||||
jmp launch_copy_file_dialog
|
||||
.endproc
|
||||
|
||||
L9968:
|
||||
ldy #5 ; 3 addrs
|
||||
: lda L9931,y
|
||||
sta op_jt_addrs,y
|
||||
.proc prep_op_jt_overlay1
|
||||
ldy #op_jt_addrs_size-1
|
||||
: copy op_jt_overlay1,y, op_jt_addrs,y
|
||||
dey
|
||||
bpl :-
|
||||
|
||||
@ -10608,6 +10622,7 @@ L9968:
|
||||
sta LA425
|
||||
sta L918D
|
||||
rts
|
||||
.endproc
|
||||
|
||||
L997C: lda #5
|
||||
sta copy_dialog_params
|
||||
@ -10629,9 +10644,8 @@ L99A7: stax copy_dialog_params::count
|
||||
L99BC: lda #$80
|
||||
sta L918D
|
||||
|
||||
ldy #5
|
||||
: lda L9931,y
|
||||
sta op_jt_addrs,y
|
||||
ldy #op_jt_addrs_size-1
|
||||
: copy op_jt_overlay1,y, op_jt_addrs,y
|
||||
dey
|
||||
bpl :-
|
||||
|
||||
@ -10672,9 +10686,10 @@ L9A0F: sta flag
|
||||
sta copy_dialog_params
|
||||
jsr LA379
|
||||
bit operation_flags
|
||||
bvc L9A22
|
||||
bvc @not_size
|
||||
jsr L9BC9
|
||||
L9A22: bit LE05B
|
||||
@not_size:
|
||||
bit LE05B
|
||||
bpl L9A70
|
||||
bvs L9A50
|
||||
lda flag
|
||||
@ -11124,7 +11139,8 @@ L9E71: sec
|
||||
rts
|
||||
.endproc
|
||||
|
||||
L9E73: .addr L9F94 ; Overlay for op_jt_addrs
|
||||
op_jt_overlay2:
|
||||
.addr L9F94 ; Overlay for op_jt_addrs
|
||||
.addr rts2
|
||||
.addr destroy_with_retry
|
||||
|
||||
@ -11156,10 +11172,9 @@ L9EBE: rts
|
||||
|
||||
;;; ============================================================
|
||||
|
||||
.proc L9EBF
|
||||
ldy #5
|
||||
: lda L9E73,y
|
||||
sta op_jt_addrs,y
|
||||
.proc prep_op_jt_overlay2
|
||||
ldy #op_jt_addrs_size-1
|
||||
: copy op_jt_overlay2,y, op_jt_addrs,y
|
||||
dey
|
||||
bpl :-
|
||||
|
||||
@ -11325,7 +11340,8 @@ done: rts
|
||||
LA044: yax_call launch_dialog, index_delete_file_dialog, delete_file_dialog_params
|
||||
rts
|
||||
|
||||
LA04E: .addr LA170
|
||||
op_jt_overlay3:
|
||||
.addr LA170 ; overlay for op_jt_addrs
|
||||
.addr rts2
|
||||
.addr rts2
|
||||
|
||||
@ -11390,15 +11406,15 @@ LA0D1: copy #LockDialogLifecycle::loop, lock_unlock_dialog_params::phase
|
||||
|
||||
LA0DE: rts
|
||||
|
||||
.proc LA0DF
|
||||
.proc prep_op_jt_overlay3
|
||||
lda #$00
|
||||
sta LA425
|
||||
|
||||
ldy #5
|
||||
: lda LA04E,y
|
||||
sta op_jt_addrs,y
|
||||
ldy #op_jt_addrs_size-1
|
||||
: copy op_jt_overlay3,y, op_jt_addrs,y
|
||||
dey
|
||||
bpl :-
|
||||
|
||||
rts
|
||||
.endproc
|
||||
|
||||
@ -11506,7 +11522,7 @@ phase: .byte 0
|
||||
.addr LA2ED, LA2EF
|
||||
.endproc
|
||||
|
||||
do_get_info_dialog_phase:
|
||||
do_get_size_dialog_phase:
|
||||
copy #0, get_size_dialog_params::phase
|
||||
copy16 #LA220, dialog_phase2_callback
|
||||
copy16 #LA211, dialog_phase0_callback
|
||||
@ -11527,16 +11543,19 @@ LA233: copy #3, get_size_dialog_params::phase
|
||||
yax_call launch_dialog, index_get_size_dialog, get_size_dialog_params
|
||||
LA241: rts
|
||||
|
||||
LA242: .addr LA2AE,rts2,rts2
|
||||
op_jt_overlay4:
|
||||
.addr LA2AE ; overlay for op_jt_addrs
|
||||
.addr rts2
|
||||
.addr rts2
|
||||
|
||||
;;; ============================================================
|
||||
;;; ???
|
||||
|
||||
.proc copy_bytes_and_clear_system_bitmap
|
||||
.proc prep_op_jt_overlay4_clear_system_bitmap
|
||||
copy #0, LA425
|
||||
|
||||
ldy #5 ; 3 addrs
|
||||
: copy LA242,y, op_jt_addrs,y
|
||||
ldy #op_jt_addrs_size-1
|
||||
: copy op_jt_overlay4,y, op_jt_addrs,y
|
||||
dey
|
||||
bpl :-
|
||||
|
||||
@ -11589,14 +11608,14 @@ LA2AA: .byte 0
|
||||
LA2AB: jmp LA2AE
|
||||
|
||||
LA2AE: bit operation_flags
|
||||
bvc :+
|
||||
bvc :+ ; not size
|
||||
jsr append_to_path_220
|
||||
yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
|
||||
bne :+
|
||||
add16 LA2EF, file_info_params2::blocks_used, LA2EF
|
||||
: inc16 LA2ED
|
||||
bit operation_flags
|
||||
bvc :+
|
||||
bvc :+ ; not size
|
||||
jsr remove_path_segment_220
|
||||
: ldax LA2ED
|
||||
jmp done_dialog_phase0
|
||||
|
Loading…
x
Reference in New Issue
Block a user