host fst updates.
1. don't lookup the .host device during startup - startup happens before the boot.driver is loaded 2. lookup the .host device when a path-based or volumegs call is made. 3. when building a vcr, store the ptr so it can be dereferenced later, if needed.
This commit is contained in:
parent
e890e33f39
commit
524fa1a94b
1
fst.equ
1
fst.equ
|
@ -6,6 +6,7 @@ ptr ds.l 1 ; misc ptr
|
||||||
|
|
||||||
my_vcr ds.l 1
|
my_vcr ds.l 1
|
||||||
my_fcr ds.l 1
|
my_fcr ds.l 1
|
||||||
|
my_vcr_ptr ds.l 1
|
||||||
cookie ds.w 1
|
cookie ds.w 1
|
||||||
call_class ds.w 1
|
call_class ds.w 1
|
||||||
tmp ds.w 1
|
tmp ds.w 1
|
||||||
|
|
68
host.fst.aii
68
host.fst.aii
|
@ -161,64 +161,80 @@ rtl_invalid_pcount proc
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
sys_startup proc
|
find_host_device proc
|
||||||
with dev_parms
|
with dev_parms
|
||||||
|
|
||||||
; 1. find the .host device.
|
; find .host device. if no .host, returns to gs/os.
|
||||||
|
; entry via jsr
|
||||||
|
; exit via rts (success) / sys_exit (fail).
|
||||||
|
lda dev_id
|
||||||
|
beq @search
|
||||||
|
bmi @fail
|
||||||
|
rts
|
||||||
|
@fail plx
|
||||||
|
lda #unknown_vol
|
||||||
|
sec
|
||||||
|
jml sys_exit
|
||||||
|
@search
|
||||||
|
lda #-1
|
||||||
|
sta dev_id
|
||||||
lda #1
|
lda #1
|
||||||
sta dev_dev_id
|
sta dev_dev_id
|
||||||
stz dev_num
|
stz dev_num
|
||||||
loop
|
@loop
|
||||||
lda #drvr_get_dib
|
lda #drvr_get_dib
|
||||||
sta dev_callnum
|
sta dev_callnum
|
||||||
jsl dev_dispatcher
|
jsl dev_dispatcher
|
||||||
bcs no
|
bcs @fail
|
||||||
; appletalk puts up a dialog box....
|
|
||||||
|
|
||||||
ldy #$34 ; dib device id
|
ldy #$34 ; dib device id
|
||||||
lda [dev_dib_ptr],y
|
lda [dev_dib_ptr],y
|
||||||
cmp #$10 ; file server
|
cmp #$10 ; file server
|
||||||
bne next
|
bne @next
|
||||||
|
|
||||||
short m
|
short m
|
||||||
ldy #$0e ; name $04 H O S T
|
ldy #$0e ; name $04 H O S T
|
||||||
lda [dev_dib_ptr],y
|
lda [dev_dib_ptr],y
|
||||||
cmp #$04
|
cmp #$04
|
||||||
bne next
|
bne @next
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda [dev_dib_ptr],y
|
lda [dev_dib_ptr],y
|
||||||
cmp #'H'
|
cmp #'H'
|
||||||
bne next
|
bne @next
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda [dev_dib_ptr],y
|
lda [dev_dib_ptr],y
|
||||||
cmp #'O'
|
cmp #'O'
|
||||||
bne next
|
bne @next
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda [dev_dib_ptr],y
|
lda [dev_dib_ptr],y
|
||||||
cmp #'S'
|
cmp #'S'
|
||||||
bne next
|
bne @next
|
||||||
|
|
||||||
iny
|
iny
|
||||||
lda [dev_dib_ptr],y
|
lda [dev_dib_ptr],y
|
||||||
cmp #'T'
|
cmp #'T'
|
||||||
bne next
|
bne @next
|
||||||
|
|
||||||
long m
|
long m
|
||||||
lda dev_dev_id
|
lda dev_dev_id
|
||||||
sta dev_id
|
sta dev_id
|
||||||
bra got_device
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
next
|
@next
|
||||||
long m
|
long m
|
||||||
; try the next one.
|
; try the next one.
|
||||||
inc dev_dev_id
|
inc dev_dev_id
|
||||||
bra loop
|
bra @loop
|
||||||
|
endp
|
||||||
|
|
||||||
got_device
|
sys_startup proc
|
||||||
|
|
||||||
|
|
||||||
|
stz dev_id
|
||||||
|
|
||||||
; sanity check that the global buffer location
|
; sanity check that the global buffer location
|
||||||
; is where I expect it.
|
; is where I expect it.
|
||||||
|
@ -346,6 +362,7 @@ app_entry proc
|
||||||
@path
|
@path
|
||||||
; path checking...
|
; path checking...
|
||||||
|
|
||||||
|
jsr find_host_device
|
||||||
jsr check_path1
|
jsr check_path1
|
||||||
bcc @call
|
bcc @call
|
||||||
jml sys_exit
|
jml sys_exit
|
||||||
|
@ -399,6 +416,8 @@ app_entry proc
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app_table
|
app_table
|
||||||
dc.w rtl_bad_system_call ;
|
dc.w rtl_bad_system_call ;
|
||||||
dc.w create ; ($01) Create
|
dc.w create ; ($01) Create
|
||||||
|
@ -751,6 +770,13 @@ volume proc
|
||||||
|
|
||||||
with dp, fst_parms
|
with dp, fst_parms
|
||||||
|
|
||||||
|
;
|
||||||
|
; volume requires a device id. it doesn't fit
|
||||||
|
; into the standard table so we check for the
|
||||||
|
; .host device here.
|
||||||
|
;
|
||||||
|
|
||||||
|
jsr find_host_device
|
||||||
lda dev1_num
|
lda dev1_num
|
||||||
beq no
|
beq no
|
||||||
|
|
||||||
|
@ -789,6 +815,8 @@ build_vcr proc
|
||||||
lda #0
|
lda #0
|
||||||
jsl find_vcr
|
jsl find_vcr
|
||||||
bcs create_vcr
|
bcs create_vcr
|
||||||
|
stx my_vcr_ptr
|
||||||
|
sty my_vcr_ptr+2
|
||||||
jsl deref
|
jsl deref
|
||||||
|
|
||||||
stx my_vcr
|
stx my_vcr
|
||||||
|
@ -844,6 +872,9 @@ create_vcr
|
||||||
ldx #host_name
|
ldx #host_name
|
||||||
ldy #^host_name
|
ldy #^host_name
|
||||||
jsl alloc_vcr
|
jsl alloc_vcr
|
||||||
|
stx my_vcr_ptr
|
||||||
|
sty my_vcr_ptr+2
|
||||||
|
|
||||||
lda #out_of_mem
|
lda #out_of_mem
|
||||||
bcs exit
|
bcs exit
|
||||||
|
|
||||||
|
@ -1052,8 +1083,9 @@ open proc
|
||||||
sty my_fcr+2
|
sty my_fcr+2
|
||||||
|
|
||||||
; need to re-deref the vcr?
|
; need to re-deref the vcr?
|
||||||
ldx vcr_ptr
|
; vcr_ptr is actually a pathname.
|
||||||
ldy vcr_ptr+2
|
ldx my_vcr_ptr
|
||||||
|
ldy my_vcr_ptr+2
|
||||||
jsl deref
|
jsl deref
|
||||||
stx my_vcr
|
stx my_vcr
|
||||||
sty my_vcr+2
|
sty my_vcr+2
|
||||||
|
|
Loading…
Reference in New Issue