volume -- suppport prodos 16 call (/ name)
This commit is contained in:
parent
2312e6f09c
commit
62726712c6
164
volume.aii
164
volume.aii
|
@ -17,7 +17,17 @@
|
||||||
|
|
||||||
import id_disk
|
import id_disk
|
||||||
|
|
||||||
|
my_dp record dp.__end
|
||||||
|
|
||||||
|
src ds.l 1
|
||||||
|
dest ds.l 1
|
||||||
|
length ds.w 1
|
||||||
|
|
||||||
|
IF *>=$d4 THEN
|
||||||
|
AERROR 'dp -- too large.'
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
endr
|
||||||
|
|
||||||
import do_file_sys_id
|
import do_file_sys_id
|
||||||
import do_ignore
|
import do_ignore
|
||||||
|
@ -38,7 +48,7 @@ volume procname export
|
||||||
|
|
||||||
lda fst_parms.dev1_num
|
lda fst_parms.dev1_num
|
||||||
; if no device, find a volume by name...
|
; if no device, find a volume by name...
|
||||||
beq by_name
|
beq no_dev
|
||||||
|
|
||||||
jsr id_disk
|
jsr id_disk
|
||||||
bcc got_it
|
bcc got_it
|
||||||
|
@ -71,6 +81,21 @@ dup_0
|
||||||
|
|
||||||
got_it
|
got_it
|
||||||
|
|
||||||
|
; init common volume name parameters here...
|
||||||
|
with my_dp
|
||||||
|
ldy #vcr.vname.length
|
||||||
|
lda [my_vcr],y
|
||||||
|
sta length
|
||||||
|
|
||||||
|
lda #vcr.vname.text
|
||||||
|
clc
|
||||||
|
adc my_vcr
|
||||||
|
sta src
|
||||||
|
lda #0
|
||||||
|
adc my_vcr+2
|
||||||
|
sta src+2
|
||||||
|
endwith
|
||||||
|
|
||||||
lda <call_class
|
lda <call_class
|
||||||
beq class0
|
beq class0
|
||||||
|
|
||||||
|
@ -96,28 +121,32 @@ exit
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
|
|
||||||
by_name
|
no_dev
|
||||||
lda #unknown_vol
|
lda #unknown_vol
|
||||||
sec
|
sec
|
||||||
rtl
|
rtl
|
||||||
|
|
||||||
volume_dcb_0
|
volume_dcb_0
|
||||||
dc.w VolumeRec.deviceName, do_ignore
|
with VolumeRec
|
||||||
dc.w VolumeRec.volName, do_vol_name_1
|
dc.w deviceName, do_ignore
|
||||||
dc.w VolumeRec.totalBlocks, do_total_blocks
|
dc.w volName, do_vol_name_0
|
||||||
dc.w VolumeRec.freeBlocks, do_free_blocks
|
dc.w totalBlocks, do_total_blocks
|
||||||
dc.w VolumeRec.fileSysID, do_file_sys_id
|
dc.w freeBlocks, do_free_blocks
|
||||||
|
dc.w fileSysID, do_file_sys_id
|
||||||
|
endwith
|
||||||
volume_dcb_0_size equ *-volume_dcb_0
|
volume_dcb_0_size equ *-volume_dcb_0
|
||||||
|
|
||||||
volume_dcb_1
|
volume_dcb_1
|
||||||
dc.w VolumeRecGS.devName, do_ignore
|
with VolumeRecGS
|
||||||
dc.w VolumeRecGS.volName, do_vol_name_1
|
dc.w devName, do_ignore
|
||||||
dc.w VolumeRecGS.totalBlocks, do_total_blocks
|
dc.w volName, do_vol_name_1
|
||||||
dc.w VolumeRecGS.freeBlocks, do_free_blocks
|
dc.w totalBlocks, do_total_blocks
|
||||||
dc.w VolumeRecGS.fileSysID, do_file_sys_id
|
dc.w freeBlocks, do_free_blocks
|
||||||
dc.w VolumeRecGS.blockSize, do_block_size
|
dc.w fileSysID, do_file_sys_id
|
||||||
dc.w VolumeRecGS.characteristics, do_ignore
|
dc.w blockSize, do_block_size
|
||||||
dc.w VolumeRecGS.deviceID, do_ignore
|
dc.w characteristics, do_ignore
|
||||||
|
dc.w deviceID, do_ignore
|
||||||
|
endwith
|
||||||
endp
|
endp
|
||||||
|
|
||||||
|
|
||||||
|
@ -172,110 +201,109 @@ do_vol_name_0 proc
|
||||||
; store the volume name (class 0)
|
; store the volume name (class 0)
|
||||||
|
|
||||||
with fst_parms
|
with fst_parms
|
||||||
with dp
|
with dp, my_dp
|
||||||
|
|
||||||
|
; length and src are valid.
|
||||||
|
|
||||||
;ldy #VolumeRec.volName
|
|
||||||
lda [param_blk_ptr],y
|
lda [param_blk_ptr],y
|
||||||
sta ptr
|
sta dest
|
||||||
iny
|
iny
|
||||||
iny
|
iny
|
||||||
lda [param_blk_ptr],y
|
lda [param_blk_ptr],y
|
||||||
sta ptr+2
|
sta dest+2
|
||||||
|
|
||||||
|
|
||||||
|
; length should be in the range of 1-30.
|
||||||
|
lda length
|
||||||
|
inc a
|
||||||
|
ora #'/'<<8 ; pstring
|
||||||
|
sta [dest]
|
||||||
|
|
||||||
|
lda #2
|
||||||
|
clc
|
||||||
|
adc dest
|
||||||
|
sta dest
|
||||||
lda #0
|
lda #0
|
||||||
|
adc dest+2
|
||||||
|
sta dest+2
|
||||||
|
|
||||||
|
ldy length
|
||||||
|
beq done
|
||||||
|
dey
|
||||||
short m
|
short m
|
||||||
lda defaultName ; count.
|
|
||||||
tax
|
|
||||||
tay
|
|
||||||
@loop
|
@loop
|
||||||
lda defaultName,x
|
lda [src],y
|
||||||
sta [ptr],y
|
sta [dest],y
|
||||||
dex
|
|
||||||
dey
|
dey
|
||||||
bpl @loop
|
bpl @loop
|
||||||
done
|
|
||||||
long m
|
long m
|
||||||
|
done
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
defaultName str.b ':minix'
|
|
||||||
endp
|
endp
|
||||||
|
|
||||||
do_vol_name_1 procname
|
do_vol_name_1 procname
|
||||||
|
|
||||||
with fst_parms
|
with fst_parms
|
||||||
with dp
|
with dp, my_dp
|
||||||
|
|
||||||
;ldy #VolumeRecGS.volName
|
|
||||||
|
|
||||||
|
|
||||||
lda [param_blk_ptr],y
|
lda [param_blk_ptr],y
|
||||||
sta ptr
|
sta dest
|
||||||
iny
|
iny
|
||||||
iny
|
iny
|
||||||
lda [param_blk_ptr],y
|
lda [param_blk_ptr],y
|
||||||
sta ptr+2
|
sta dest+2
|
||||||
|
|
||||||
|
|
||||||
; check the length.
|
; check the length.
|
||||||
lda [ptr]
|
lda [dest]
|
||||||
sec
|
sec
|
||||||
sbc #4
|
sbc #4
|
||||||
bmi error
|
bmi error
|
||||||
|
|
||||||
|
|
||||||
dec a ; - 1 for leading :
|
dec a ; - 1 for leading :
|
||||||
ldy #vcr.vname.length
|
cmp length
|
||||||
cmp [my_vcr],y
|
|
||||||
;bcc error_store_size
|
|
||||||
|
|
||||||
ldy #vcr.vname.length
|
lda length
|
||||||
lda [my_vcr],y
|
inc a
|
||||||
inc a ; :
|
|
||||||
ldy #2
|
ldy #2
|
||||||
sta [ptr],y
|
sta [dest],y
|
||||||
|
|
||||||
bcc error ; still set from cmp.
|
; carry still set from cmp
|
||||||
|
bcc error
|
||||||
|
|
||||||
phx ; save...
|
|
||||||
|
|
||||||
ldy #4
|
ldy #4
|
||||||
short m
|
short m
|
||||||
lda #':'
|
lda #':'
|
||||||
sta [ptr],y
|
sta [dest],y
|
||||||
long m
|
long m
|
||||||
|
|
||||||
|
lda #5
|
||||||
|
clc
|
||||||
|
adc dest
|
||||||
|
sta dest
|
||||||
|
lda #0
|
||||||
|
adc dest+2
|
||||||
|
sta dest+2
|
||||||
|
|
||||||
; adjust pointer so y offset
|
ldy length
|
||||||
; matches
|
|
||||||
lda ptr
|
|
||||||
sec
|
|
||||||
sbc #vcr.vname-3 ; -5 for gs/os name overhead and :
|
|
||||||
sta ptr
|
|
||||||
lda ptr+2
|
|
||||||
sbc #0
|
|
||||||
sta ptr+2
|
|
||||||
|
|
||||||
ldy #vcr.vname.length
|
|
||||||
lda [my_vcr],y ; length
|
|
||||||
iny
|
|
||||||
iny
|
|
||||||
tax
|
|
||||||
beq done
|
beq done
|
||||||
|
dey
|
||||||
short m
|
short m
|
||||||
@loop
|
@loop
|
||||||
lda [my_vcr],y
|
lda [src],y
|
||||||
sta [ptr],y
|
sta [dest],y
|
||||||
iny
|
dey
|
||||||
dex
|
bpl @loop
|
||||||
bne @loop
|
|
||||||
long m
|
long m
|
||||||
|
|
||||||
done
|
done
|
||||||
plx ; restore
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
error
|
error
|
||||||
lda #buff_too_small
|
lda #buff_too_small
|
||||||
sta tool_error
|
sta tool_error
|
||||||
|
|
Loading…
Reference in New Issue