home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-05-08 | 1.6 KB | 67 lines | [TEXT/MSET] |
- \ drvr - parameter block for driver interface
- \ July 90 mrh Mops version.
- \ 8/16/90 rfl close: must call kill: first
- Decimal
-
- \ basic parameter block for drivers
-
- :class PBDrvr super{ object }
- record
- { 12 Bytes Name \ driver name
- 12 Bytes Header \ fields for internal use
-
- var IOComp \ i/o completion ptr
- int IOResult \ return code
- var IONamePtr \ name of drvr
- int vRef \ 22
- int IORefNum \ 24
- int csCode \ 26
- int csP1 \ 28
- int csP2 \ 30
- var IOBuffer
- var IOReq
- var IOAct
- int IOPosMode
- var IOOffset
- }
-
- :m FCB: \ ( -- fcb-addr )
- addr: header ;M
-
- :m NAME: \ ( addr len -- ) Names the driver.
- ^base 50 erase addr: name >str255 put: ioNamePtr ;m
-
- :m KILL:
- addr: header fdos$ a406 ( Killio ) 0 put: IOResult ;m
-
- :m OPEN: \ ( -- fCode )
- addr: header 0 (open) ;m
-
- :m CLOSE: \ ( -- fCode )
- kill: self drop addr: header (close) ;m
-
- :m READ: \ ( addr len -- fCode ) Reads n bytes via the driver.
- addr: header swap rot (read) ;m
-
- :m WRITE: \ ( addr len -- fCode ) Writes n bytes via the driver.
- addr: header swap rot (write) ;m
-
- :m READNW: \ ( cfa:proc addr len -- fCode ) No-wait read.
- \ Requires a completion PROC.
- \ put: IOReq put: IOBuffer put: IOcomp
- \ addr: header fcall PBRead,ASYNC ;m
- rot -> CPaddr read: self ;m
-
- :m WRITENW: \ ( cfa:proc addr len -- fCode ) No-wait write.
- \ put: IOReq +base put: IOBuffer >body +base put: IOComp
- \ addr: header fcall PBWrite,ASYNC ;m
- rot -> CPaddr write: self ;m
-
- :m BYTESREAD: \ ( -- #bytes ) Returns actual count of bytes read.
- get: IOAct ;m
-
- :m RESULT: \ ( -- IOResult ) Returns the current IOResult value.
- get: IOResult ;m
-
- ;class
-