From fe70a36c675bd25f4ccde50da52b390c3bf23791 Mon Sep 17 00:00:00 2001 From: Kelvin Sherlock Date: Wed, 2 Sep 2015 11:41:27 -0400 Subject: [PATCH] get_dev_num (needed for Finder) --- Makefile | 2 +- get_dev_num.aii | 57 +++++++++++++++++++++++++++++++++++++++++++++++ get_file_info.aii | 16 ++++++------- records.equ | 11 +++++++++ stubs.aii | 1 - 5 files changed, 77 insertions(+), 10 deletions(-) create mode 100644 get_dev_num.aii diff --git a/Makefile b/Makefile index e095b7c..aec5eac 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ SOURCES = main.aii volume.aii get_file_info.aii \ open.aii get_dir_entry.aii get_mark.aii set_mark.aii get_eof.aii \ - close.aii read.aii flush.aii judge_name.aii \ + close.aii read.aii flush.aii judge_name.aii get_dev_num.aii \ id_disk.aii stubs.aii tables.aii device.aii params.aii globals.aii \ debug.aii diff --git a/get_dev_num.aii b/get_dev_num.aii new file mode 100644 index 0000000..08c2638 --- /dev/null +++ b/get_dev_num.aii @@ -0,0 +1,57 @@ + + string asis + + include 'gsos.equ' + include 'minix.equ' + include 'records.equ' + + include 'fst.equ' + + include 'fst.macros' + + include 'M16.Debug' + + import volume_by_name + + ; + ; gs/os expands the path provided. that means we'll have + ; an absolute path or a device number + relative path. + ; + +get_dev_num procname export + + with dp, fst_parms + + lda dev1_num + bne store + + lda span1 + cmp #30+1 + bcs bps + + jsr volume_by_name + bcs exit + + lda dev_parms.dev_num + +store + ; a = device number + ldx call_class + ldy table,x + sta [param_blk_ptr],y + lda tool_error + cmp #1 +exit + rtl + +bps + lda #bad_path_syntax + sec + rtl + +table + dc.w DevNumRec.devNum, DevNumRecGS.devNum + + endp + + end \ No newline at end of file diff --git a/get_file_info.aii b/get_file_info.aii index 0d43c23..ff43607 100644 --- a/get_file_info.aii +++ b/get_file_info.aii @@ -446,7 +446,7 @@ done endp -volume_by_name procname +volume_by_name procname export ; ; extract the volume name from path1_ptr and find (or create) a vcr. ; @@ -490,8 +490,8 @@ done bcs no_vcr ; store it for later... - stx ptr - sty ptr+2 + ;stx ptr + ; sty ptr+2 jsl deref stx my_vcr @@ -523,12 +523,12 @@ done ; I suppose reading a block could alloc memory and invalidate the vcr... ; - ldx ptr - ldy ptr+2 + ;ldx ptr + ;ldy ptr+2 - jsl deref - stx my_vcr - sty my_vcr+2 + ;jsl deref + ;stx my_vcr + ;sty my_vcr+2 ; check the volume name here... diff --git a/records.equ b/records.equ index 7c186a9..31d9aa2 100644 --- a/records.equ +++ b/records.equ @@ -228,3 +228,14 @@ displacement DS.L 1 end_struct +DevNumRecGS begin_struct +pCount DS.W 1 +devName DS.L 1 +devNum DS.W 1 + end_struct + + +DevNumRec begin_struct +devName DS.B 4 +devNum DS.B 2 + end_struct diff --git a/stubs.aii b/stubs.aii index fda8520..42c5b36 100644 --- a/stubs.aii +++ b/stubs.aii @@ -9,7 +9,6 @@ stubs proc export destroy export erase_disk export format - export get_dev_num export set_eof export set_file_info export write