include 'gsos.equ' include 'minix.equ' include 'fst.equ' include 'fst.macros' include 'M16.Debug' ; ; VolumeGS / Volume call. ; ; check if the disk is ours. create a VCR or mark it active. ; ; P16 ; devName ; volName ; totalBlocks ; freeBlocks ; fileSysID ; ; GS/OS ; Word pCount; ; GSString32Ptr devName; ; ResultBuf255Ptr volName; ; LongWord totalBlocks; ; LongWord freeBlocks; ; Word fileSysID; ; Word blockSize; ; [handled by gs/os:] ; Word characteristics; ; Word deviceID; ; import id_disk VolumeRecGS RECORD 0 pCount DS.W 1 devName DS.L 1 ; GSString32Ptr volName DS.L 1 ; ResultBuf255Ptr totalBlocks DS.L 1 freeBlocks DS.L 1 fileSysID DS.W 1 blockSize DS.W 1 characteristics ds.w 1 deviceID ds.w 1 sizeof equ * ENDR VolumeRec RECORD 0 ; ProDOS deviceName DS.B 4 ; Ptr - volName DS.B 4 ; Ptr - totalBlocks DS.B 4 ; Long - freeBlocks DS.B 4 ; Long - fileSysID DS.B 2 ; Word - sizeof equ * ENDR entry do_block_size entry do_file_sys_id entry do_free_blocks entry do_ignore entry do_total_blocks entry do_vol_name_0 entry do_vol_name_1 volume procname export with dp with dev_parms with fst_parms stz tool_error lda dev_num jsr id_disk bcc got_it cmp #dup_volume beq dup sec rtl dup ; this is a duplicate volume. ; return the name (and only the name), but also return the error. lda