sys7.1-doc-wip/Libs/InterfaceSrcs/FILES.a
2019-07-27 22:37:48 +08:00

894 lines
25 KiB
Plaintext

include 'macintosh.a'
;-------------------------------------------------------------------------------
;
; Files.a
;
; Implements the C interface for file manager register based traps.
; Note: routines appear in same order as "Inside Macintosh"
;
; Copyright Apple Computer, Inc. 1984 - 1989
; All rights reserved.
; Written by Dan Smith 15-Nov-84 (converted version of the pascal interface)
;
; Modifications:
; June 19,1986: MikeS: changed pbhsetvinfo to pbsetvinfo
; Feb 20,1986 Dan Smith & Mike Shannon changed GetWDInfo to get around rom bug
; May 2, 1986 Mike Shannon changed PBGetCatInfo to get around rom bug
; May 12,1986 Mike Shannon: save & restore d2 in FInitQueue
; *** MPW 2.0 ***
; 11 Feb 88 KLH Changed C headers to work with new C compiler:
; Changed to using standard glue in Interface.o, so
; much glue removed from CInterface.o.
; *** MPW 3.0d4 ***
; 8 Mar 88 KLH rename changed to fsrename to avoid ANSI conflict
; *** MPW 3.0a2 ***
; 4 Dec 89 JAL moved fsrename, fsdelete, StringIn, and StringOut to runtime.o
* ******************************************************************************
;
; High-level Routines
;
; Interface for file system and IO functions which do not require
; a parameter block
;
* ******************************************************************************
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Accessing Volumes
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; short getvinfo(drvNum,volName,vRefNum,freeBytes)
; short drvNum;
; char *volName;
; short *vRefNum;
; int *freeBytes;
BLANKS ON
STRING ASIS
getvinfo func EXPORT
import StringOut
link a6,#-IOVQElSize ; get space for Control p-block
lea -IOVQElSize(a6),a0 ; Point a0 at the block
move.l 12(a6),IOVNPtr(a0) ; volume name pointer
move.w 10(a6),IOVDrvNum(a0) ; drive number
clr.w IOVolIndex(a0) ; no volume queue index
_GetVolInfo ; result in d0
move.l 16(a6),a1 ; pointer to vRefNum
move.w IOVRefNum(a0),(a1) ; return volume ref num
; now calculate the number of free bytes on the volume by multiplying
; allocation block size * free allocation blocks
; would ideally like to multiply long * integer but since mulu only
; multiplies two ints, to allow for a larger than 16 bit allocation
; block size we shift it right by 9 (since we know it to be a multiple
; of 512 and then shift the result back.
move.l IOVAlBlkSiz(a0),d1 ; num bytes in an allocation block
asr.l #8,d1 ; shift over by 8
asr.l #1,d1 ; and one more
mulu IOVFrBlk(a0),d1 ; multiply by number of free blocks
asl.l #1,d1 ; shift back to the left
asl.l #8,d1
move.l 20(a6),a1 ; pointer to free bytes
move.l d1,(a1) ; return the value
jmp StringOut ; convert name to c string
;-------------------------------------------------------------------------------
;
; short getvol(volName,vRefNum)
; char *volName;
; short *vRefNum;
;
getvol func EXPORT
import StringOut
link a6,#-IOVQElSize ; get space for Control p-block
lea -IOVQElSize(a6),a0 ; Point a0 at the block
move.l 8(a6),IOVNPtr(a0) ; pointer to volume name
_GetVol
move.l 12(a6),a1 ; pointer to drive number
move.w IOVRefNum(a0),(a1) ; return drive number
jmp StringOut ; convert name to c string
;-------------------------------------------------------------------------------
;
; short setvol(volName,vRefNum)
; char *volName;
; short *vRefNum;
setvol func EXPORT
import StringIn
import StringOut
jsr StringIn ; convert name to pascal string
link a6,#-IOVQElSize ; get space for Control p-block
lea -IOVQElSize(a6),a0 ; Point a0 at the block
move.l 8(a6),IOVNPtr(a0) ; Ptr to desired volume name
move.w 14(a6),IOVRefNum(a0) ; desired default drive number
_SetVol
jmp StringOut ; convert name to c string
;-------------------------------------------------------------------------------
;
; short flushvol(volName,vRefNum)
; char *volName;
; short *vRefNum;
;
flushvol func EXPORT
import StringIn
import StringOut
jsr StringIn ; convert name to pascal string
link a6,#-IOVQElSize ; get space for Control p-block
lea -IOVQElSize(a6),a0 ; Point a0 at the block
move.w 14(a6),IOVRefNum(a0) ; drive to be unmounted
move.l 8(a6),IOVNPtr(a0) ; volume name pointer
_FlushVol
jmp StringOut ; convert name to c string
;-------------------------------------------------------------------------------
;
; short unmountvol(volName,vRefNum)
; char *volName;
; short *vRefNum;
;
unmountvol func EXPORT
import StringIn
import StringOut
jsr StringIn ; convert name to pascal string
link a6,#-IOVQElSize ; get space for Control p-block
lea -IOVQElSize(a6),a0 ; Point a0 at the block
move.w 14(a6),IOVRefNum(a0) ; drive to be unmounted
move.l 8(a6),IOVNPtr(a0) ; volume name pointer
_UnmountVol
jmp StringOut ; convert name to c string
;-------------------------------------------------------------------------------
;
; short eject(volName,vRefNum)
; char *volName;
; short *vRefNum;
;
eject func EXPORT
import StringIn
import StringOut
jsr StringIn ; convert name to pascal string
link a6,#-IOVQElSize ; get space for Control p-block
lea -IOVQElSize(a6),a0 ; Point a0 at the block
move.w 14(a6),IOVRefNum(a0) ; drive to be unmounted
move.l 8(a6),IOVNPtr(a0) ; volume name pointer
_Eject
jmp StringOut ; convert name to c string
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Changing File Contents
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; short create(fileName,vRefNum,creator,fileType)
; char *fileName;
; short vRefNum;
; int creator,fileType;
;
create func EXPORT
import StringIn
import StringOut
jsr StringIn ; convert name to pascal string
link a6,#-IOFQELSIZE ; make room on stack for cmd block
lea -IOFQELSIZE(a6),a0 ; address of cmd block
move.l 8(a6),IOFileName(a0) ; set Ptr to filename
move.w 14(a6),IOVRefNum(a0) ; set volume ref num
clr.b IOFileType(a0) ; clear type, permissions (version field)
_Create
tst.w d0 ; error?
bne.s crDone ; yes, don't bother setting type
clr.w IOFDirIndex(a0) ; clear directory index
_GetFileInfo ; get the previous info
; transfer the user defined finder info words (16 bytes)
move.l a0,d0 ; save Ptr to param block
lea IOFlUsrWds(a0),a1 ; where to copy user words
move.l 20(a6),(a1)+ ; enter in the new file type
move.l 16(a6),(a1) ; enter in the new file creator
_SetFileInfo
crDone
jmp StringOut ; convert name to c string
;-------------------------------------------------------------------------------
;
; short fsopen(fileName,vRefNum,refNum)
; char *fileName;
; short vRefNum,*refNum;
;
fsopen func EXPORT
import StringIn
import StringOut
jsr StringIn ; convert name to pascal string
link a6,#-IOQELSIZE ; make room on stack for cmd block
lea -IOQELSIZE(a6),a0 ; address of cmd block
move.l 8(a6),IOFileName(a0) ; set Ptr to filename
move.w 14(a6),IODrvNum(a0) ; drive number
clr.b IOFileType(a0) ; file type
clr.b IOPermssn(a0) ; open for read/write
clr.l IOOwnBuf(a0) ; use system buffer
_Open
move.l 16(a6),a1 ; return the refnum
move.w IORefNum(a0),(a1)
jmp StringOut ; convert name to c string
;-------------------------------------------------------------------------------
;
; short openrf(fileName,vRefNum,refNum)
; char *fileName;
; short vRefNum,*refNum;
;
;
openrf func EXPORT
import StringIn
import StringOut
jsr StringIn ; convert name to pascal string
link a6,#-IOQELSIZE ; make room on stack for cmd block
lea -IOQELSIZE(a6),a0 ; address of cmd block
move.l 8(a6),IOFileName(a0) ; set Ptr to filename
move.w 14(a6),IOVRefNum(a0) ; set volume ref num
clr.b IOFileType(a0) ; clear type (version field)
clr.b IOPermssn(a0) ; open for read/write
clr.l IOOwnBuf(a0) ; use system buffer
_OpenRF
move.l 16(a6),a1 ; Ptr to refNum
move.w IORefNum(a0),(a1) ; return the refNum
jmp StringOut ; convert name to c string
;-------------------------------------------------------------------------------
;
; short FSRead(refNum,count,buffPtr)
; short refNum;
; int *count;
; Ptr buffPtr;
;
; short FSWrite(refNum,count,buffPtr)
; short refNum;
; int *count;
; Ptr buffPtr;
;
;;
;;FSRead func EXPORT
;; export FSWrite
;;
;; SF d1 ; set up read
;; bra.s DoBlk
;;
;;FSWrite
;; ST d1 ; set up write
;;
;;DoBlk
;; link a6,#-IOQELSIZE ; make room on stack for cmd block
;; lea -IOQELSIZE(a6),a0 ; address of cmd block
;;
;; move.l 16(a6),IOBuffer(a0) ; buffer address
;; move.w 10(a6),IORefNum(a0) ; refnum
;; move.l 12(a6),a1 ; address of the count
;; move.l (a1),IOByteCount(a0) ; read count
;; clr.w IOPosMode(a0) ; no special mode
;; clr.l IOPosOffset(a0) ; clear offset
;;
;; tst.b d1 ; look for read or write
;; bne.s @1
;; _READ
;; bra.s @2
;;@1 _WRITE
;;@2
;;
;; move.l 12(a6),a1 ; address of the count
;; move.l IONumDone(a0),(a1) ; return count read
;;
;; ext.l d0 ; sign extend error code
;; unlk a6
;; rts
;-------------------------------------------------------------------------------
;
; short GetFPos(refNum,filePos)
; short refNum;
; int *filePos;
;
;;GetFPos func EXPORT
;;
;; link a6,#-IOQELSIZE ; make room on stack for cmd block
;; lea -IOQELSIZE(a6),a0 ; address of cmd block
;; move.w 10(a6),IORefNum(a0) ; set refnum
;; _GetFPos
;; move.l 12(a6),a1 ; Ptr to logical length variable
;; move.l IOPosOffset(a0),(a1) ; return logical end of file
;; ext.l d0 ; sign extend error code
;; unlk a6
;; rts
;-------------------------------------------------------------------------------
;
; short SetFPos(refNum,posMode,posOff)
; short refNum,posMode;
; int posOff;
;
;;SetFPos func EXPORT
;;
;; link a6,#-IOQELSIZE ; make room on stack for cmd block
;; lea -IOQELSIZE(a6),a0 ; address of cmd block
;; move.w 10(a6),IORefNum(a0) ; set refnum
;; move.w 14(a6),IOPosMode(a0) ; positioning information
;; move.l 16(a6),IOPosOffset(a0) ; new file position
;; _SetFPos
;; ext.l d0 ; sign extend error code
;; unlk a6
;; rts
;-------------------------------------------------------------------------------
;
; short GetEOF(refNum,logEOF)
; short refNum;
; int *logEOF;
;
;;GetEOF func EXPORT
;;
;; link a6,#-IOQELSIZE ; make room on stack for cmd block
;; lea -IOQELSIZE(a6),a0 ; address of cmd block
;; move.w 10(a6),IORefNum(a0) ; set refnum
;; _GetEOF
;; move.l 12(a6),a1 ; Ptr to logical length variable
;; move.l IOLEOF(a0),(a1) ; return logical end of file
;; ext.l d0 ; sign extend error code
;; unlk a6
;; rts
;-------------------------------------------------------------------------------
;
; short SetEOF(refNum,logEOF)
; short refNum;
; int logEOF;
;
;;SetEOF func EXPORT
;;
;; link a6,#-IOQELSIZE ; make room on stack for cmd block
;; lea -IOQELSIZE(a6),a0 ; address of cmd block
;; move.w 10(a6),IORefNum(a0) ; set refnum
;; move.l 12(a6),IOLEOF(a0) ; the desired end of file
;; _SetEOF
;; ext.l d0 ; sign extend error code
;; unlk a6
;; rts
;-------------------------------------------------------------------------------
;
; short Allocate(refNum,count)
; short refNum;
; int *count;
;
;;Allocate func EXPORT
;;
;; link a6,#-IOQELSIZE ; make room on stack for cmd block
;; lea -IOQELSIZE(a6),a0 ; address of cmd block
;; move.l 12(a6),a1 ; Ptr to requested byte count
;; move.l (a1),IOReqCount(a0) ;
;; move.w 10(a6),IORefNum(a0) ; set refnum
;; _Allocate
;; move.l IOActCount(a0),(a1) ; return actual byte count
;; ext.l d0 ; sign extend error code
;; unlk a6
;; rts
;-------------------------------------------------------------------------------
;
;
; OSErr GetVRefNum(pathRefNum,vRefNum)
; short pathRefNum;
; short *vRefNum;
;;
;;GetVRefNum func EXPORT
;; move.l 4(sp),d0 ; get the fileRefNum
;; move.l d0,d1 ; duplicate
;; move.l FCBSPtr,a0 ; ptr to file-control-block buffer
;; cmp.w (a0),d1 ; is refNum too large?
;; bcc.s endError ; br if so
;; move.l FCBVPtr(a0,d1),a0 ; get ptr to volume control block
;; move.w VCBVRefNum(a0),d1 ; return vRefNum
;; moveq #0,d0 ; no err
;; bra.s endG
;;endError moveq #0,d1 ; default refum
;; move.w #rfNumErr,d0 ; ref num error
;;endG move.l 8(sp),a0 ; get vRefNum address
;; move.w d1,(a0) ; put it there
;; rts ; return
;-------------------------------------------------------------------------------
;
; short FSClose(refNum)
; short refNum;
;
;;FSClose func EXPORT
;;
;; link a6,#-IOQELSIZE ; make room on stack for cmd block
;; lea -IOQELSIZE(a6),a0 ; address of cmd block
;; move.w 10(a6),IORefNum(a0) ; get the refnum param
;; _CLOSE ; result returned in d0
;; ext.l d0 ; sign extend error code
;; unlk a6
;; rts
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Changing Information About Files
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; short getfinfo(fileName,vRefNum,fndrInfo)
; char *fileName;
; short vRefNum;
; FInfo *fndrInfo;
;
getfinfo func EXPORT
import StringIn
import StringOut
jsr StringIn ; convert name to pascal string
link a6,#-IOFQELSIZE ; make room on stack for cmd block
lea -IOFQELSIZE(a6),a0 ; address of cmd block
move.l 8(a6),IOFileName(a0) ; set Ptr to filename
move.w 14(a6),IOVRefNum(a0) ; set volume ref num
clr.b IOFileType(a0) ; (version field)
clr.w IOFDirIndex(a0) ; clear directory index
_GetFileInfo
move.w d0,-(sp) ; save result
; transfer the user defined finder info words (16 bytes) into result
lea IOFlUsrWds(a0),a0 ; where to copy from
move.l 16(a6),a1 ; where to copy to
moveq #16,d0 ; 16 bytes of information
_BlockMove
lea -IOFQELSIZE(a6),a0 ; address of cmd block
move.w (sp)+,d0 ; short result in d0
jmp StringOut ; convert name to c string
;-------------------------------------------------------------------------------
;
; short setfinfo(fileName,vRefNum,fndrInfo)
; char *fileName;
; short vRefNum;
; FInfo *fndrInfo;
;
setfinfo func EXPORT
import StringIn
import StringOut
jsr StringIn ; convert name to pascal string
link a6,#-IOFQELSIZE ; make room on stack for cmd block
lea -IOFQELSIZE(a6),a0 ; restore a0
move.l 8(a6),IOFileName(a0) ; set Ptr to filename
move.w 14(a6),IOVRefNum(a0) ; set volume ref num
clr.b IOFileType(a0) ; (version field)
clr.w IOFDirIndex(a0) ; clear directory index
_GetFileInfo
; transfer the user defined finder info words (16 bytes)
lea IOFlUsrWds(a0),a1 ; where to copy user words
move.l 16(a6),a0 ; where the user words are now
moveq #16,d0 ; 16 bytes of information
_BlockMove
lea -IOFQELSIZE(a6),a0 ; restore a0
_SetFileInfo
jmp StringOut ; convert name to c string
;-------------------------------------------------------------------------------
;
; short setflock(fileName,vRefNum)
; char *fileName;
; short vRefNum;
;
;
setflock func EXPORT
import StringIn
import StringOut
jsr StringIn ; convert name to pascal string
link a6,#-IOQELSIZE ; make room on stack for cmd block
lea -IOQELSIZE(a6),a0 ; address of cmd block
move.l 8(a6),IOFileName(a0) ; set Ptr to filename
move.w 14(a6),IOVRefNum(a0) ; set volume ref num
clr.b IOFileType(a0) ; clear type (version field)
_SetFilLock
jmp StringOut ; convert name to c string
;-------------------------------------------------------------------------------
;
; short rstflock(fileName,vRefNum)
; char *fileName;
; short vRefNum;
;
rstflock func EXPORT
import StringIn
import StringOut
jsr StringIn ; convert name to pascal string
link a6,#-IOQELSIZE ; make room on stack for cmd block
lea -IOQELSIZE(a6),a0 ; address of cmd block
move.l 8(a6),IOFileName(a0) ; set Ptr to filename
move.w 14(a6),IOVRefNum(a0) ; set volume ref num
clr.b IOFileType(a0) ; clear type (version field)
_RstFilLock
jmp StringOut ; convert name to c string
* ******************************************************************************
;
; Low-level Routines
;
* ******************************************************************************
; void FInitQueue()
;;
;;FInitQueue proc EXPORT
;; move.l d2,-(sp) ; Mike Shannon, May 12,1986
;; _FInitQueue
;; move.l (sp)+,d2
;; rts ; return
; void AddDrive(drvrRefNum,drvNum,QEl);
; short drvrRefNum,drvNum;
; drvQElPtr qEL;
;;
;;AddDrive proc EXPORT
;; move.l 12(sp),a0 ; Ptr to memory for queue element
;; move.w 10(sp),d0 ; drive number
;; swap d0 ; put it in high word
;; move.w 6(sp),d0 ; driver ref num
;; _AddDrive
;; rts
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Accessing Volumes
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; short PBMountVol (paramBlock)
; short PBGetVInfo (paramBlock,async)
; short PBGetVol (paramBlock,async)
; short PBSetVol (paramBlock,async)
; short PBFlushVol (paramBlock,async)
; short PBUnmountVol(paramBlock)
; short PBOffLine (paramBlock)
; short PBEject (paramBlock)
;
; PBMountVol calls can only be made synchronously
;
;;PBMountVol proc EXPORT
;; move.l 4(sp),a0 ; get param pointer.
;; _MountVol ; tell OS to do it synchronously
;; ext.l d0 ; sign extend error code
;; rts ; return to caller
;;PBGetVInfo proc EXPORT
;; OsCall _GetVolInfo
;;PBGetVol proc EXPORT
;; OsCall _GetVol
;;PBSetVol proc EXPORT
;; OsCall _SetVol
;;PBFlushVol proc EXPORT
;; OsCall _FlushVol
;
; PBUnmountVol calls can only be made synchronously
;
;;PBUnmountVol proc EXPORT
;; move.l 4(sp),a0 ; get param pointer.
;; _UnmountVol ; tell OS to do it synchronously
;; ext.l d0 ; sign extend error code
;; rts ; return to caller
;
; PBOffLine calls can only be made synchronously
;
;;PBOffLine proc EXPORT
;; move.l 4(sp),a0 ; get param pointer.
;; _OffLine ; tell OS to do it synchronously
;; ext.l d0 ; sign extend error code
;; rts ; return to caller
;
; PBEject calls can only be made synchronously
;
;;PBEject proc EXPORT
;; move.l 4(sp),a0 ; get param pointer.
;; _Eject ; tell OS to do it synchronously
;; ext.l d0 ; sign extend error code
;; rts ; return to caller
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Changing File Contents
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; short PBCreate (paramBlock,async)
; short PBOpen (paramBlock,async)
; short PBOpenRF (paramBlock,async)
; short PBRead (paramBlock,async)
; short PBWrite (paramBlock,async)
; short PBGetFPos (paramBlock,async)
; short PBSetFPos (paramBlock,async)
; short PBGetEOF (paramBlock,async)
; short PBSetEOF (paramBlock,async)
; short PBAllocate (paramBlock,async)
; short PBFlushFile (paramBlock,async)
; short PBClose (paramBlock,async)
;;PBCreate proc EXPORT
;; OsCall _Create
;;PBOpen proc EXPORT
;; OsCall _Open
;;PBOpenRF proc EXPORT
;; OsCall _OpenRF
;;PBRead proc EXPORT
;; OsCall _Read
;;PBWrite proc EXPORT
;; OsCall _Write
;;PBGetFPos proc EXPORT
;; OsCall _GetFPos
;;PBSetFPos proc EXPORT
;; OsCall _SetFPos
;;PBGetEOF proc EXPORT
;; OsCall _GetEOF
;;PBSetEOF proc EXPORT
;; OsCall _SetEOF
;;PBAllocate proc EXPORT
;; OsCall _Allocate
;;PBFlushFile proc EXPORT
;; OsCall _FlushFile
;;PBClose proc EXPORT
;; OsCall _Close
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Changing Information About Files
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; short PBGetFInfo (paramBlock,async)
; short PBSetFInfo (paramBlock,async)
; short PBSetFLock (paramBlock,async)
; short PBRstFLock (paramBlock,async)
; short PBSetFVers (paramBlock,async)
; short PBRename (paramBlock,async)
; short PBDelete (paramBlock,async)
;
;;PBGetFInfo proc EXPORT
;; OsCall _GetFileInfo
;;PBSetFInfo proc EXPORT
;; OsCall _SetFileInfo
;;PBSetFLock proc EXPORT
;; OsCall _SetFilLock
;;PBRstFLock proc EXPORT
;; OsCall _RstFilLock
;;PBSetFVers proc EXPORT
;; OsCall _SetFilType
;;PBRename proc EXPORT
;; OsCall _Rename
;;PBDelete proc EXPORT
;; OsCall _Delete
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Hierarchical File System Calls
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; OSErr PBOpenWD (paramBlock,aSync)
; OSErr PBCloseWD (paramBlock,aSync)
; OSErr PBHSetVol (paramBlock,aSync)
; OSErr PBHGetVol (paramBlock,aSync)
; OSErr PBCatMove (paramBlock,aSync)
; OSErr PBDirCreate (paramBlock,aSync)
; OSErr PBGetWDInfo (paramBlock,aSync)
; OSErr PBGetFCBInfo (paramBlock,aSync)
; OSErr PBGetCatInfo (paramBlock,aSync)
; OSErr PBSetCatInfo (paramBlock,aSync)
; OSErr PBAllocContig (paramBlock,aSync)
;;PBOpenWD proc EXPORT
;; OSCall _OpenWD
;;PBCloseWD proc EXPORT
;; OSCall _CloseWD
;;PBHSetVol proc EXPORT
;; OSCall _HSetVol
;;PBHGetVol proc EXPORT
;; OSCall _HGetVol
;;PBCatMove proc EXPORT
;; OSCall _CatMove
;;PBDirCreate proc EXPORT
;; OSCall _DirCreate
;;PBGetWDInfo proc EXPORT
;; clr.l d1 ; *** ROM bug fix ***
;; move.l 4(sp),a0 ; get param pointer.
;; move.l 8(sp),d0 ; Get ASync flag.
;; bne.s @1
;; _GetWDInfo ; tell OS to do it Synchronously
;; bra.s @2
;;@1 _GetWDInfo ,ASYNC ; Tell OS to do it Asynchronously
;;@2 ext.l d0 ; sign extend error code
;; rts ; return to caller
;;PBGetFCBInfo proc EXPORT
;; OSCall _GetFCBInfo
;;PBGetCatInfo proc EXPORT
;; MOVE.L 4(sp), A0
;; CLR.B ioFileType(A0)
;; Oscall _GetCatInfo
;;PBSetCatInfo proc EXPORT
;; OSCall _SetCatInfo
;;PBAllocContig proc EXPORT
;; OSCall _AllocContig
;;PBLockRange proc EXPORT
;; OSCall _LockRng
;;PBUnLockRange proc EXPORT
;; OSCall _UnLockRng
; OSErr PBSetVInfo (paramBlock,aSync)
; OSErr PBHGetVInfo (paramBlock,aSync)
; OSErr PBHOpen (paramBlock,aSync)
; OSErr PBHOpenRF (paramBlock,aSync)
; OSErr PBHCreate (paramBlock,aSync)
; OSErr PBHDelete (paramBlock,aSync)
; OSErr PBHRename (paramBlock,aSync)
; OSErr PBHRstFLock (paramBlock,aSync)
; OSErr PBHSetFLock (paramBlock,aSync)
; OSErr PBHGetFInfo (paramBlock,aSync)
; OSErr PBHSetFInfo (paramBlock,aSync)
;;PBSetVInfo proc EXPORT
;; OSCall _SetVolInfo
;;PBHGetVInfo proc EXPORT
;; OSCall _HGETVINFO
;;PBHOpen proc EXPORT
;; OSCall _HOpen
;;PBHOpenRF proc EXPORT
;; OSCall _HOpenRF
;;PBHCreate proc EXPORT
;; OSCall _HCreate
;;PBHDelete proc EXPORT
;; OSCall _HDelete
;;PBHRename proc EXPORT
;; OSCall _HRename
;;PBHRstFLock proc EXPORT
;; OSCall _HRstFLock
;;PBHSetFLock proc EXPORT
;; OSCall _HSetFLock
;;PBHGetFInfo proc EXPORT
;; OSCall _HGetFileInfo
;;PBHSetFInfo proc EXPORT
;; OSCall _HSetFileInfo
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Accessing Queues
;
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; QHdrPtr GetFSQHdr()
;
;;GetFSQHdr proc EXPORT
;;
;; move.l #FSQHdr,d0
;; rts
;-------------------------------------------------------------------------------
;
; QHdrPtr GetDrvQHdr()
;
;;GetDrvQHdr proc EXPORT
;;
;; move.l #DrvQHdr,d0
;; rts
;-------------------------------------------------------------------------------
;
; QHdrPtr GetVCBQHdr()
;
;;GetVCBQHdr proc EXPORT
;;
;; move.l #VCBQHdr,d0
;; rts
END