mirror of
https://github.com/mi57730/a2d.git
synced 2024-11-29 07:49:20 +00:00
procs
This commit is contained in:
parent
f4a5cf3da5
commit
9213bd1903
511
desktop/sys.s
511
desktop/sys.s
@ -8,7 +8,7 @@
|
|||||||
.include "../macros.inc"
|
.include "../macros.inc"
|
||||||
|
|
||||||
;;; ============================================================
|
;;; ============================================================
|
||||||
.proc bootstrap
|
.proc copy_desktop_to_ramcard
|
||||||
|
|
||||||
jmp start
|
jmp start
|
||||||
|
|
||||||
@ -367,7 +367,7 @@ L268F: jsr write_desktop1
|
|||||||
: sta BITMAP,y
|
: sta BITMAP,y
|
||||||
dey
|
dey
|
||||||
bpl :-
|
bpl :-
|
||||||
jmp part2
|
jmp copy_selector_entries_to_ramcard
|
||||||
|
|
||||||
L26A5: lda LCBANK2
|
L26A5: lda LCBANK2
|
||||||
lda LCBANK2
|
lda LCBANK2
|
||||||
@ -914,7 +914,7 @@ prodos_loader_blocks:
|
|||||||
.assert * = $2C00, error, "Segment length mismatch"
|
.assert * = $2C00, error, "Segment length mismatch"
|
||||||
.incbin "inc/pdload.dat"
|
.incbin "inc/pdload.dat"
|
||||||
|
|
||||||
.endproc ; bootstrap
|
.endproc ; copy_desktop_to_ramcard
|
||||||
|
|
||||||
;;; ============================================================
|
;;; ============================================================
|
||||||
|
|
||||||
@ -923,11 +923,23 @@ prodos_loader_blocks:
|
|||||||
;;; SPECULATION: This copies Selector entries marked
|
;;; SPECULATION: This copies Selector entries marked
|
||||||
;;; "Down load" / "At boot" to the RAMCard as well
|
;;; "Down load" / "At boot" to the RAMCard as well
|
||||||
|
|
||||||
.proc part2
|
.proc copy_selector_entries_to_ramcard
|
||||||
|
|
||||||
|
;; File format:
|
||||||
|
;; $ 0 - number of entries (max 24?)
|
||||||
|
;; $ 1 - ???
|
||||||
|
;; $ 2 - 24 * 16-byte data entries
|
||||||
|
;; $0 - label (length-prefixed, 15 bytes)
|
||||||
|
;; $F - active_flag
|
||||||
|
;; $182 - 24 * 64-byte pathname
|
||||||
|
;; $782 - EOF
|
||||||
|
|
||||||
selector_buffer := $4400
|
selector_buffer := $4400
|
||||||
selector_buflen := $800
|
selector_buflen := $800
|
||||||
|
|
||||||
|
.proc process_selector_list
|
||||||
|
ptr := $6
|
||||||
|
|
||||||
jsr SLOT3ENTRY
|
jsr SLOT3ENTRY
|
||||||
jsr HOME
|
jsr HOME
|
||||||
lda LCBANK2
|
lda LCBANK2
|
||||||
@ -947,88 +959,107 @@ prodos_loader_blocks:
|
|||||||
dex
|
dex
|
||||||
bpl :-
|
bpl :-
|
||||||
lda ROMIN2
|
lda ROMIN2
|
||||||
|
|
||||||
|
;; Load and iterate over the selector file
|
||||||
jsr read_selector_list
|
jsr read_selector_list
|
||||||
beq :+
|
beq :+
|
||||||
jmp bail
|
jmp bail
|
||||||
|
|
||||||
: lda #0
|
: lda #0
|
||||||
sta L30BB
|
sta entry_num
|
||||||
L3039: lda L30BB
|
entry_loop:
|
||||||
cmp selector_buffer
|
lda entry_num
|
||||||
beq L3071
|
cmp selector_buffer ; done?
|
||||||
jsr L37C5
|
beq done_entries
|
||||||
stax $06
|
jsr compute_label_addr
|
||||||
ldy #$0F
|
stax ptr
|
||||||
lda ($06),y
|
|
||||||
bne L306B
|
ldy #$0F ; check active flag
|
||||||
lda L30BB
|
lda (ptr),y
|
||||||
jsr L37D2
|
bne next_entry
|
||||||
|
lda entry_num
|
||||||
|
jsr compute_path_addr
|
||||||
|
|
||||||
jsr L38B2
|
jsr L38B2
|
||||||
jsr L3489
|
jsr L3489
|
||||||
|
|
||||||
lda LCBANK2
|
lda LCBANK2
|
||||||
lda LCBANK2
|
lda LCBANK2
|
||||||
ldx L30BB
|
ldx entry_num
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta $D395,x
|
sta $D395,x
|
||||||
lda ROMIN2
|
lda ROMIN2
|
||||||
L306B: inc L30BB
|
|
||||||
jmp L3039
|
|
||||||
|
|
||||||
L3071: lda #$00
|
next_entry:
|
||||||
sta L30BB
|
inc entry_num
|
||||||
L3076: lda L30BB
|
jmp entry_loop
|
||||||
cmp selector_buffer + 1
|
done_entries:
|
||||||
|
|
||||||
|
;; Process entries again ???
|
||||||
|
lda #0
|
||||||
|
sta entry_num
|
||||||
|
|
||||||
|
entry_loop2:
|
||||||
|
lda entry_num
|
||||||
|
cmp selector_buffer + 1 ; ???
|
||||||
beq bail
|
beq bail
|
||||||
clc
|
clc
|
||||||
adc #$08
|
adc #8 ; offset by 8 ???
|
||||||
jsr L37C5
|
jsr compute_label_addr
|
||||||
stax $06
|
stax ptr
|
||||||
|
|
||||||
ldy #$0F
|
ldy #$0F
|
||||||
lda ($06),y
|
lda (ptr),y ; check active flag
|
||||||
bne L30B2
|
bne next_entry2
|
||||||
lda L30BB
|
lda entry_num
|
||||||
clc
|
clc
|
||||||
adc #$08
|
adc #8
|
||||||
jsr L37D2
|
jsr compute_path_addr
|
||||||
|
|
||||||
jsr L38B2
|
jsr L38B2
|
||||||
jsr L3489
|
jsr L3489
|
||||||
|
|
||||||
lda LCBANK2
|
lda LCBANK2
|
||||||
lda LCBANK2
|
lda LCBANK2
|
||||||
lda L30BB
|
lda entry_num
|
||||||
clc
|
clc
|
||||||
adc #$08
|
adc #8
|
||||||
tax
|
tax
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta $D395,x
|
sta $D395,x
|
||||||
lda ROMIN2
|
lda ROMIN2
|
||||||
L30B2: inc L30BB
|
next_entry2:
|
||||||
jmp L3076
|
inc entry_num
|
||||||
|
jmp entry_loop2
|
||||||
|
|
||||||
bail: jmp invoke_selector_or_desktop
|
bail: jmp invoke_selector_or_desktop
|
||||||
|
|
||||||
L30BB: .byte 0
|
entry_num:
|
||||||
|
.byte 0
|
||||||
|
.endproc
|
||||||
|
|
||||||
;;; ============================================================
|
;;; ============================================================
|
||||||
|
|
||||||
DEFINE_OPEN_PARAMS open_params6, path2, $0800
|
DEFINE_OPEN_PARAMS open_path2_params, path2, $0800
|
||||||
DEFINE_READ_PARAMS read_params4, L30CA, 4
|
DEFINE_READ_PARAMS read_4bytes_params, buf_4_bytes, 4
|
||||||
L30CA: .res 4, 0
|
buf_4_bytes: .res 4, 0
|
||||||
DEFINE_CLOSE_PARAMS close_params5
|
DEFINE_CLOSE_PARAMS close_params5
|
||||||
DEFINE_READ_PARAMS read_params5, L3150, $27
|
DEFINE_READ_PARAMS read_39bytes_params, L3150, 39
|
||||||
DEFINE_READ_PARAMS read_params6, L30E0, 5
|
DEFINE_READ_PARAMS read_5bytes_params, buf_5_bytes, 5
|
||||||
L30E0: .res 5, 0
|
buf_5_bytes: .res 5, 0
|
||||||
.byte $00,$00,$00,$00
|
.res 4, 0
|
||||||
DEFINE_CLOSE_PARAMS close_params7
|
DEFINE_CLOSE_PARAMS close_srcdir_params
|
||||||
DEFINE_CLOSE_PARAMS close_params6
|
DEFINE_CLOSE_PARAMS close_dstdir_params
|
||||||
.byte $01
|
|
||||||
|
.byte 1
|
||||||
.addr path2
|
.addr path2
|
||||||
DEFINE_OPEN_PARAMS open_params7, path2, $0D00
|
|
||||||
DEFINE_OPEN_PARAMS open_params8, path1, $1C00
|
|
||||||
DEFINE_READ_PARAMS read_params7, $1100, $0B00
|
|
||||||
DEFINE_WRITE_PARAMS write_params3, $1100, $0B00
|
|
||||||
|
|
||||||
DEFINE_CREATE_PARAMS create_params3, path1, ACCESS_DEFAULT
|
dircopy_buffer := $0B00
|
||||||
|
|
||||||
|
DEFINE_OPEN_PARAMS open_srcdir_params, path2, $0D00
|
||||||
|
DEFINE_OPEN_PARAMS open_dstdir_params, path1, $1C00
|
||||||
|
DEFINE_READ_PARAMS read_srcdir_params, $1100, dircopy_buffer
|
||||||
|
DEFINE_WRITE_PARAMS write_dstdir_params, $1100, dircopy_buffer
|
||||||
|
DEFINE_CREATE_PARAMS create_dir_params, path1, ACCESS_DEFAULT
|
||||||
DEFINE_CREATE_PARAMS create_params2, path1, 0
|
DEFINE_CREATE_PARAMS create_params2, path1, 0
|
||||||
|
|
||||||
L3124: .byte $00,$00
|
L3124: .byte $00,$00
|
||||||
@ -1037,11 +1068,11 @@ L3124: .byte $00,$00
|
|||||||
.byte $00
|
.byte $00
|
||||||
|
|
||||||
DEFINE_GET_FILE_INFO_PARAMS get_file_info_params3, path1
|
DEFINE_GET_FILE_INFO_PARAMS get_file_info_params3, path1
|
||||||
|
|
||||||
.byte $00,$02,$00,$00,$00
|
.byte $00,$02,$00,$00,$00
|
||||||
|
|
||||||
L3150: .byte $00
|
L3150: .byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
L3151: .byte $00,$00,$00,$00,$00,$00,$00,$00
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00
|
|
||||||
L3160: .byte $00,$00,$00,$00,$00,$00,$00,$00
|
L3160: .byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
@ -1053,16 +1084,18 @@ path2: .res 65, 0
|
|||||||
|
|
||||||
L320A: .res 64, 0
|
L320A: .res 64, 0
|
||||||
L324A: .res 64, 0
|
L324A: .res 64, 0
|
||||||
L328A: .byte $00,$00,$00,$00,$00,$00,$00,$00
|
L328A: .res 16, 0
|
||||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
|
||||||
L329A: .byte $00
|
L329A: .byte $00
|
||||||
L329B: .byte $0D
|
L329B: .byte $0D
|
||||||
L329C: .byte $00
|
L329C: .byte $00
|
||||||
L329D: .byte $00
|
ref_num:.byte $00
|
||||||
L329E: .byte $00
|
L329E: .byte $00
|
||||||
L329F: .res 170, 0
|
L329F: .res 170, 0
|
||||||
L3349: .byte $00
|
L3349: .byte $00
|
||||||
L334A: .byte $00
|
L334A: .byte $00
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
L334B: ldx L3349
|
L334B: ldx L3349
|
||||||
lda L329E
|
lda L329E
|
||||||
sta L329F,x
|
sta L329F,x
|
||||||
@ -1070,6 +1103,8 @@ L334B: ldx L3349
|
|||||||
stx L3349
|
stx L3349
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
L3359: ldx L3349
|
L3359: ldx L3349
|
||||||
dex
|
dex
|
||||||
lda L329F,x
|
lda L329F,x
|
||||||
@ -1077,55 +1112,64 @@ L3359: ldx L3349
|
|||||||
stx L3349
|
stx L3349
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L3367: lda #$00
|
;;; ============================================================
|
||||||
|
|
||||||
|
.proc L3367
|
||||||
|
lda #$00
|
||||||
sta L329C
|
sta L329C
|
||||||
sta L334A
|
sta L334A
|
||||||
MLI_CALL OPEN, open_params6
|
MLI_CALL OPEN, open_path2_params
|
||||||
beq L337A
|
|
||||||
jmp handle_error_code
|
|
||||||
|
|
||||||
L337A: lda open_params6::ref_num
|
|
||||||
sta L329D
|
|
||||||
sta read_params4::ref_num
|
|
||||||
MLI_CALL READ, read_params4
|
|
||||||
beq :+
|
beq :+
|
||||||
jmp handle_error_code
|
jmp handle_error_code
|
||||||
|
|
||||||
|
: lda open_path2_params::ref_num
|
||||||
|
sta ref_num
|
||||||
|
sta read_4bytes_params::ref_num
|
||||||
|
MLI_CALL READ, read_4bytes_params
|
||||||
|
beq :+
|
||||||
|
jmp handle_error_code
|
||||||
: jsr L33A4
|
: jsr L33A4
|
||||||
rts
|
rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
L3392: lda L329D
|
;;; ============================================================
|
||||||
|
|
||||||
|
L3392: lda ref_num
|
||||||
sta close_params5::ref_num
|
sta close_params5::ref_num
|
||||||
MLI_CALL CLOSE, close_params5
|
MLI_CALL CLOSE, close_params5
|
||||||
beq L33A3
|
|
||||||
jmp handle_error_code
|
|
||||||
|
|
||||||
L33A3: rts
|
|
||||||
|
|
||||||
L33A4: inc L329C
|
|
||||||
lda L329D
|
|
||||||
sta read_params5::ref_num
|
|
||||||
MLI_CALL READ, read_params5
|
|
||||||
beq L33B8
|
|
||||||
jmp handle_error_code
|
|
||||||
|
|
||||||
L33B8: inc L334A
|
|
||||||
lda L334A
|
|
||||||
cmp L329B
|
|
||||||
bcc L33E0
|
|
||||||
lda #$00
|
|
||||||
sta L334A
|
|
||||||
lda L329D
|
|
||||||
sta read_params6::ref_num
|
|
||||||
MLI_CALL READ, read_params6
|
|
||||||
beq :+
|
beq :+
|
||||||
jmp handle_error_code
|
jmp handle_error_code
|
||||||
|
: rts
|
||||||
|
|
||||||
: lda read_params6::trans_count
|
;;; ============================================================
|
||||||
cmp read_params6::request_count
|
|
||||||
|
.proc L33A4
|
||||||
|
inc L329C
|
||||||
|
lda ref_num
|
||||||
|
sta read_39bytes_params::ref_num
|
||||||
|
MLI_CALL READ, read_39bytes_params
|
||||||
|
beq :+
|
||||||
|
jmp handle_error_code
|
||||||
|
: inc L334A
|
||||||
|
lda L334A
|
||||||
|
cmp L329B
|
||||||
|
bcc done
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta L334A
|
||||||
|
lda ref_num
|
||||||
|
sta read_5bytes_params::ref_num
|
||||||
|
MLI_CALL READ, read_5bytes_params
|
||||||
|
beq :+
|
||||||
|
jmp handle_error_code
|
||||||
|
: lda read_5bytes_params::trans_count
|
||||||
|
cmp read_5bytes_params::request_count
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L33E0: return #$00
|
done: return #0
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
L33E3: lda L329C
|
L33E3: lda L329C
|
||||||
sta L329E
|
sta L329E
|
||||||
@ -1146,19 +1190,21 @@ L33F6: jsr L3392
|
|||||||
|
|
||||||
L340C: lda L329C
|
L340C: lda L329C
|
||||||
cmp L329E
|
cmp L329E
|
||||||
beq L341A
|
beq :+
|
||||||
jsr L33A4
|
jsr L33A4
|
||||||
jmp L340C
|
jmp L340C
|
||||||
|
: rts
|
||||||
|
|
||||||
L341A: rts
|
;;; ============================================================
|
||||||
|
|
||||||
L341B: lda #$00
|
.proc L341B
|
||||||
|
lda #$00
|
||||||
sta L329A
|
sta L329A
|
||||||
jsr L3367
|
jsr L3367
|
||||||
L3423: jsr L33A4
|
loop: jsr L33A4
|
||||||
bne L3455
|
bne next
|
||||||
lda L3150
|
lda L3150
|
||||||
beq L3423
|
beq loop
|
||||||
lda L3150
|
lda L3150
|
||||||
sta L346F
|
sta L346F
|
||||||
and #$0F
|
and #$0F
|
||||||
@ -1167,24 +1213,28 @@ L3423: jsr L33A4
|
|||||||
sta L3467
|
sta L3467
|
||||||
jsr L3468
|
jsr L3468
|
||||||
lda L3467
|
lda L3467
|
||||||
bne L3423
|
bne loop
|
||||||
lda L3160
|
lda L3160
|
||||||
cmp #$0F
|
cmp #$0F
|
||||||
bne L3423
|
bne loop
|
||||||
jsr L33E3
|
jsr L33E3
|
||||||
inc L329A
|
inc L329A
|
||||||
jmp L3423
|
jmp loop
|
||||||
|
|
||||||
L3455: lda L329A
|
next: lda L329A
|
||||||
beq L3463
|
beq done
|
||||||
jsr L33F6
|
jsr L33F6
|
||||||
dec L329A
|
dec L329A
|
||||||
jmp L3423
|
jmp loop
|
||||||
|
|
||||||
L3463: jsr L3392
|
done: jsr L3392
|
||||||
rts
|
rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
L3467: .byte 0
|
L3467: .byte 0
|
||||||
|
|
||||||
L3468: jmp L3540
|
L3468: jmp L3540
|
||||||
|
|
||||||
L346B: jmp L353D
|
L346B: jmp L353D
|
||||||
@ -1192,21 +1242,22 @@ L346B: jmp L353D
|
|||||||
L346E: rts
|
L346E: rts
|
||||||
|
|
||||||
L346F: .byte 0
|
L346F: .byte 0
|
||||||
|
|
||||||
ldy #$00
|
ldy #$00
|
||||||
L3472: lda $0200,y
|
L3472: lda $0200,y
|
||||||
cmp #$8D
|
cmp #$8D
|
||||||
beq L3482
|
beq :+
|
||||||
and #$7F
|
and #$7F
|
||||||
sta path2+1,y
|
sta path2+1,y
|
||||||
iny
|
iny
|
||||||
jmp L3472
|
jmp L3472
|
||||||
|
: sty path2
|
||||||
L3482: sty path2
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.byte 0
|
.byte 0
|
||||||
.byte 0
|
.byte 0
|
||||||
.byte 0
|
.byte 0
|
||||||
|
|
||||||
L3489: lda #$FF
|
L3489: lda #$FF
|
||||||
sta L353B
|
sta L353B
|
||||||
jsr L3777
|
jsr L3777
|
||||||
@ -1216,12 +1267,12 @@ L3489: lda #$FF
|
|||||||
inc path1
|
inc path1
|
||||||
ldy #$00
|
ldy #$00
|
||||||
ldx path1
|
ldx path1
|
||||||
L34A1: iny
|
: iny
|
||||||
inx
|
inx
|
||||||
lda L328A,y
|
lda L328A,y
|
||||||
sta path1,x
|
sta path1,x
|
||||||
cpy L328A
|
cpy L328A
|
||||||
bne L34A1
|
bne :-
|
||||||
stx path1
|
stx path1
|
||||||
MLI_CALL GET_FILE_INFO, get_file_info_params3
|
MLI_CALL GET_FILE_INFO, get_file_info_params3
|
||||||
cmp #ERR_FILE_NOT_FOUND
|
cmp #ERR_FILE_NOT_FOUND
|
||||||
@ -1243,15 +1294,18 @@ L34D4: jsr show_insert_prompt
|
|||||||
|
|
||||||
L34DA: jmp handle_error_code
|
L34DA: jmp handle_error_code
|
||||||
|
|
||||||
L34DD: lda get_file_info_params2::storage_type
|
;;; ============================================================
|
||||||
|
|
||||||
|
.proc L34DD
|
||||||
|
lda get_file_info_params2::storage_type
|
||||||
cmp #ST_VOLUME_DIRECTORY
|
cmp #ST_VOLUME_DIRECTORY
|
||||||
beq L34EC
|
beq is_dir
|
||||||
cmp #ST_LINKED_DIRECTORY
|
cmp #ST_LINKED_DIRECTORY
|
||||||
beq L34EC
|
beq is_dir
|
||||||
lda #$00
|
lda #$00
|
||||||
beq L34EE
|
beq :+
|
||||||
L34EC: lda #$FF
|
is_dir: lda #$FF
|
||||||
L34EE: sta L353A
|
: sta is_dir_flag
|
||||||
|
|
||||||
;; copy file_type, aux_type, storage_type
|
;; copy file_type, aux_type, storage_type
|
||||||
ldy #7
|
ldy #7
|
||||||
@ -1266,33 +1320,42 @@ L34EE: sta L353A
|
|||||||
bcc L350B
|
bcc L350B
|
||||||
jmp show_no_space_prompt
|
jmp show_no_space_prompt
|
||||||
|
|
||||||
L350B: ldx #$03
|
;; copy dates
|
||||||
L350D: lda get_file_info_params2::create_date,x
|
L350B: ldx #3
|
||||||
|
: lda get_file_info_params2::create_date,x
|
||||||
sta create_params2::create_date,x
|
sta create_params2::create_date,x
|
||||||
dex
|
dex
|
||||||
bpl L350D
|
bpl :-
|
||||||
|
|
||||||
|
;; create the file
|
||||||
lda create_params2::storage_type
|
lda create_params2::storage_type
|
||||||
cmp #ST_VOLUME_DIRECTORY
|
cmp #ST_VOLUME_DIRECTORY
|
||||||
bne L3522
|
bne :+
|
||||||
lda #ST_LINKED_DIRECTORY
|
lda #ST_LINKED_DIRECTORY
|
||||||
sta create_params2::storage_type
|
sta create_params2::storage_type
|
||||||
L3522: MLI_CALL CREATE, create_params2
|
: MLI_CALL CREATE, create_params2
|
||||||
beq :+
|
beq :+
|
||||||
jmp handle_error_code
|
jmp handle_error_code
|
||||||
|
|
||||||
: lda L353A
|
: lda is_dir_flag
|
||||||
beq L3537
|
beq do_dir
|
||||||
jmp L341B
|
jmp L341B
|
||||||
|
|
||||||
.byte 0
|
.byte 0
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L3537: jmp L3643
|
do_dir: jmp copy_dir
|
||||||
|
|
||||||
|
is_dir_flag:
|
||||||
|
.byte 0
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
L353A: .byte 0
|
|
||||||
L353B: .byte 0
|
L353B: .byte 0
|
||||||
L353C: .byte 0
|
L353C: .byte 0
|
||||||
L353D: jmp L375E
|
L353D: jmp remove_filename_from_path1
|
||||||
|
|
||||||
L3540: lda L3160
|
L3540: lda L3160
|
||||||
cmp #$0F
|
cmp #$0F
|
||||||
@ -1302,19 +1365,19 @@ L3540: lda L3160
|
|||||||
MLI_CALL GET_FILE_INFO, get_file_info_params2
|
MLI_CALL GET_FILE_INFO, get_file_info_params2
|
||||||
beq L3566
|
beq L3566
|
||||||
jmp handle_error_code
|
jmp handle_error_code
|
||||||
L3558: jsr L375E
|
L3558: jsr remove_filename_from_path1
|
||||||
jsr L3720
|
jsr L3720
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta L3467
|
sta L3467
|
||||||
jmp L35A4
|
jmp L35A4
|
||||||
|
|
||||||
L3566: jsr L3739
|
L3566: jsr append_filename_to_path1
|
||||||
jsr L36C1
|
jsr create_dir
|
||||||
bcs L3558
|
bcs L3558
|
||||||
jsr L3720
|
jsr L3720
|
||||||
jmp L35A4
|
jmp L35A4
|
||||||
|
|
||||||
L3574: jsr L3739
|
L3574: jsr append_filename_to_path1
|
||||||
jsr L36FB
|
jsr L36FB
|
||||||
jsr show_copying_screen
|
jsr show_copying_screen
|
||||||
MLI_CALL GET_FILE_INFO, get_file_info_params2
|
MLI_CALL GET_FILE_INFO, get_file_info_params2
|
||||||
@ -1326,15 +1389,15 @@ L3574: jsr L3739
|
|||||||
jmp show_no_space_prompt
|
jmp show_no_space_prompt
|
||||||
|
|
||||||
L3590: jsr L3720
|
L3590: jsr L3720
|
||||||
jsr L36C1
|
jsr create_dir
|
||||||
bcs L35A5
|
bcs L35A5
|
||||||
jsr L36FB
|
jsr L36FB
|
||||||
jsr L3643
|
jsr copy_dir
|
||||||
jsr L3720
|
jsr L3720
|
||||||
jsr L375E
|
jsr remove_filename_from_path1
|
||||||
L35A4: rts
|
L35A4: rts
|
||||||
|
|
||||||
L35A5: jsr L375E
|
L35A5: jsr remove_filename_from_path1
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L35A9: MLI_CALL GET_FILE_INFO, get_file_info_params2
|
L35A9: MLI_CALL GET_FILE_INFO, get_file_info_params2
|
||||||
@ -1383,71 +1446,86 @@ L363F: .byte 0
|
|||||||
L3640: .byte 0
|
L3640: .byte 0
|
||||||
L3641: .byte 0
|
L3641: .byte 0
|
||||||
L3642: .byte 0
|
L3642: .byte 0
|
||||||
L3643: MLI_CALL OPEN, open_params7
|
|
||||||
beq L364E
|
;;; ============================================================
|
||||||
|
|
||||||
|
.proc copy_dir
|
||||||
|
MLI_CALL OPEN, open_srcdir_params
|
||||||
|
beq :+
|
||||||
jsr handle_error_code
|
jsr handle_error_code
|
||||||
L364E: MLI_CALL OPEN, open_params8
|
: MLI_CALL OPEN, open_dstdir_params
|
||||||
beq L3659
|
beq :+
|
||||||
jmp handle_error_code
|
jmp handle_error_code
|
||||||
|
: lda open_srcdir_params::ref_num
|
||||||
|
sta read_srcdir_params::ref_num
|
||||||
|
sta close_srcdir_params::ref_num
|
||||||
|
lda open_dstdir_params::ref_num
|
||||||
|
sta write_dstdir_params::ref_num
|
||||||
|
sta close_dstdir_params::ref_num
|
||||||
|
|
||||||
L3659: lda open_params7::ref_num
|
loop: copy16 #dircopy_buffer, read_srcdir_params::request_count
|
||||||
sta read_params7::ref_num
|
MLI_CALL READ, read_srcdir_params
|
||||||
sta close_params7::ref_num
|
|
||||||
lda open_params8::ref_num
|
|
||||||
sta write_params3::ref_num
|
|
||||||
sta close_params6::ref_num
|
|
||||||
|
|
||||||
L366B: copy16 #$0B00, read_params7::request_count
|
|
||||||
MLI_CALL READ, read_params7
|
|
||||||
beq :+
|
beq :+
|
||||||
cmp #ERR_END_OF_FILE
|
cmp #ERR_END_OF_FILE
|
||||||
beq L36AE
|
beq finish
|
||||||
jmp handle_error_code
|
jmp handle_error_code
|
||||||
|
|
||||||
: copy16 read_params7::trans_count, write_params3::request_count
|
: copy16 read_srcdir_params::trans_count, write_dstdir_params::request_count
|
||||||
ora read_params7::trans_count
|
ora read_srcdir_params::trans_count
|
||||||
beq L36AE
|
beq finish
|
||||||
MLI_CALL WRITE, write_params3
|
MLI_CALL WRITE, write_dstdir_params
|
||||||
beq :+
|
beq :+
|
||||||
jmp handle_error_code
|
jmp handle_error_code
|
||||||
|
|
||||||
: lda write_params3::trans_count
|
: lda write_dstdir_params::trans_count
|
||||||
cmp #<$0B00
|
cmp #<dircopy_buffer
|
||||||
bne L36AE
|
bne finish
|
||||||
lda write_params3::trans_count+1
|
lda write_dstdir_params::trans_count+1
|
||||||
cmp #>$0B00
|
cmp #>dircopy_buffer
|
||||||
beq L366B
|
beq loop
|
||||||
L36AE: MLI_CALL CLOSE, close_params6
|
|
||||||
MLI_CALL CLOSE, close_params7
|
finish: MLI_CALL CLOSE, close_dstdir_params
|
||||||
|
MLI_CALL CLOSE, close_srcdir_params
|
||||||
jsr get_file_info_and_copy
|
jsr get_file_info_and_copy
|
||||||
jsr do_set_file_info
|
jsr do_set_file_info
|
||||||
rts
|
rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
;; copy file_type, aux_type, storage_type
|
;;; ============================================================
|
||||||
L36C1: ldx #7
|
|
||||||
|
;; Copy file_type, aux_type, storage_type
|
||||||
|
.proc create_dir
|
||||||
|
ldx #7
|
||||||
: lda get_file_info_params2,x
|
: lda get_file_info_params2,x
|
||||||
sta create_params3,x
|
sta create_dir_params,x
|
||||||
dex
|
dex
|
||||||
cpx #3
|
cpx #3
|
||||||
bne :-
|
bne :-
|
||||||
lda #ACCESS_DEFAULT
|
lda #ACCESS_DEFAULT
|
||||||
sta create_params3::access
|
sta create_dir_params::access
|
||||||
ldx #$03
|
|
||||||
L36D5: lda get_file_info_params2::create_date,x
|
|
||||||
sta create_params3::create_date,x
|
|
||||||
dex
|
|
||||||
bpl L36D5
|
|
||||||
lda create_params3::storage_type
|
|
||||||
cmp #ST_VOLUME_DIRECTORY
|
|
||||||
bne L36EA
|
|
||||||
lda #ST_LINKED_DIRECTORY
|
|
||||||
sta create_params3::storage_type
|
|
||||||
L36EA: MLI_CALL CREATE, create_params3
|
|
||||||
clc
|
|
||||||
beq L36F6
|
|
||||||
jmp handle_error_code
|
|
||||||
|
|
||||||
L36F6: rts
|
;; Copy dates
|
||||||
|
ldx #3
|
||||||
|
: lda get_file_info_params2::create_date,x
|
||||||
|
sta create_dir_params::create_date,x
|
||||||
|
dex
|
||||||
|
bpl :-
|
||||||
|
|
||||||
|
;; Create it
|
||||||
|
lda create_dir_params::storage_type
|
||||||
|
cmp #ST_VOLUME_DIRECTORY
|
||||||
|
bne :+
|
||||||
|
lda #ST_LINKED_DIRECTORY
|
||||||
|
sta create_dir_params::storage_type
|
||||||
|
: MLI_CALL CREATE, create_dir_params
|
||||||
|
clc
|
||||||
|
beq :+
|
||||||
|
jmp handle_error_code
|
||||||
|
: rts
|
||||||
|
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
.byte 0
|
.byte 0
|
||||||
.byte 0
|
.byte 0
|
||||||
@ -1465,7 +1543,7 @@ L3701: ldx #$00
|
|||||||
iny
|
iny
|
||||||
L370C: cpx L3150
|
L370C: cpx L3150
|
||||||
bcs L371C
|
bcs L371C
|
||||||
lda L3151,x
|
lda L3150+1,x
|
||||||
sta path2+1,y
|
sta path2+1,y
|
||||||
inx
|
inx
|
||||||
iny
|
iny
|
||||||
@ -1490,59 +1568,75 @@ L3734: dex
|
|||||||
stx path2
|
stx path2
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L3739: lda L3150
|
;;; ============================================================
|
||||||
bne L373F
|
|
||||||
|
.proc append_filename_to_path1
|
||||||
|
lda L3150
|
||||||
|
bne :+
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L373F: ldx #$00
|
: ldx #0
|
||||||
ldy path1
|
ldy path1
|
||||||
lda #'/'
|
lda #'/'
|
||||||
sta path1+1,y
|
sta path1+1,y
|
||||||
iny
|
iny
|
||||||
L374A: cpx L3150
|
loop: cpx L3150
|
||||||
bcs L375A
|
bcs done
|
||||||
lda L3151,x
|
lda L3150+1,x
|
||||||
sta path1+1,y
|
sta path1+1,y
|
||||||
inx
|
inx
|
||||||
iny
|
iny
|
||||||
jmp L374A
|
jmp loop
|
||||||
|
|
||||||
L375A: sty path1
|
done: sty path1
|
||||||
|
rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
|
.proc remove_filename_from_path1
|
||||||
|
ldx path1
|
||||||
|
bne loop
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L375E: ldx path1
|
loop: lda path1,x
|
||||||
bne L3764
|
|
||||||
rts
|
|
||||||
|
|
||||||
L3764: lda path1,x
|
|
||||||
cmp #'/'
|
cmp #'/'
|
||||||
beq L3772
|
beq done
|
||||||
dex
|
dex
|
||||||
bne L3764
|
bne loop
|
||||||
stx path1
|
stx path1
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L3772: dex
|
done: dex
|
||||||
stx path1
|
stx path1
|
||||||
rts
|
rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
L3777: ldy #0
|
;;; ============================================================
|
||||||
|
|
||||||
|
.proc L3777
|
||||||
|
ldy #0
|
||||||
sta L353C
|
sta L353C
|
||||||
dey
|
dey
|
||||||
L377D: iny
|
|
||||||
|
loop: iny
|
||||||
lda L324A,y
|
lda L324A,y
|
||||||
cmp #'/'
|
cmp #'/'
|
||||||
bne L3788
|
bne :+
|
||||||
sty L353C
|
sty L353C
|
||||||
L3788: sta path2,y
|
: sta path2,y
|
||||||
cpy L324A
|
cpy L324A
|
||||||
bne L377D
|
bne loop
|
||||||
|
|
||||||
ldy L320A
|
ldy L320A
|
||||||
L3793: lda L320A,y
|
loop2: lda L320A,y
|
||||||
sta path1,y
|
sta path1,y
|
||||||
dey
|
dey
|
||||||
bpl L3793
|
bpl loop2
|
||||||
rts
|
rts
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
.proc do_set_file_info
|
.proc do_set_file_info
|
||||||
lda #7 ; SET_FILE_INFO param_count
|
lda #7 ; SET_FILE_INFO param_count
|
||||||
@ -1569,8 +1663,9 @@ fail: pla
|
|||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
;;; ============================================================
|
;;; ============================================================
|
||||||
|
;;; Compute first offset into selector file - A*16 + 2
|
||||||
|
|
||||||
.proc L37C5
|
.proc compute_label_addr
|
||||||
addr := selector_buffer + $2
|
addr := selector_buffer + $2
|
||||||
|
|
||||||
jsr ax_times_16
|
jsr ax_times_16
|
||||||
@ -1585,8 +1680,9 @@ fail: pla
|
|||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
;;; ============================================================
|
;;; ============================================================
|
||||||
|
;;; Compute second offset into selector file - A*64 + $182
|
||||||
|
|
||||||
.proc L37D2
|
.proc compute_path_addr
|
||||||
addr := selector_buffer + $182
|
addr := selector_buffer + $182
|
||||||
|
|
||||||
jsr ax_times_64
|
jsr ax_times_64
|
||||||
@ -1900,6 +1996,8 @@ done: rts
|
|||||||
|
|
||||||
;;; ============================================================
|
;;; ============================================================
|
||||||
|
|
||||||
|
;; unused?
|
||||||
|
|
||||||
L3AD8: .byte 0 ; ???
|
L3AD8: .byte 0 ; ???
|
||||||
.byte $02
|
.byte $02
|
||||||
|
|
||||||
@ -1910,10 +2008,13 @@ L3ADA: iny
|
|||||||
lda #$A2
|
lda #$A2
|
||||||
sta $0200
|
sta $0200
|
||||||
rts
|
rts
|
||||||
.endproc ; part2
|
|
||||||
|
.endproc ; copy_selector_entries_to_ramcard
|
||||||
|
|
||||||
;;; ============================================================
|
;;; ============================================================
|
||||||
;;; ??? Is this relocated? Part of ProDOS? RAMCard driver?
|
;;; ??? Is this relocated? Part of ProDOS? RAMCard driver?
|
||||||
|
;;; ============================================================
|
||||||
|
|
||||||
.proc WTF
|
.proc WTF
|
||||||
|
|
||||||
;; Branch targets before/after this block
|
;; Branch targets before/after this block
|
||||||
|
Loading…
Reference in New Issue
Block a user