133 lines
2.5 KiB
Plaintext
133 lines
2.5 KiB
Plaintext
Subroutine MFS_SHELL2(CODE, BFS, HANDLE, NAME, FMC, RECORD, STATUS)
|
|
|
|
****************************************************************
|
|
* MFS shell for making Modified Filing Systems
|
|
*
|
|
* this program is similar to MFS.SHELL1, except it uses CASE logic to
|
|
* dispatch according to the value of the CODE argument.
|
|
*
|
|
* use this logic as the basis for your MFS. Insert the appropriate code
|
|
* under the correct case below. For example, if your MFS traps READs to
|
|
* a file, insert your trap code underneath the statement
|
|
*
|
|
* CASE CODE = READ.RECORD
|
|
*
|
|
* and with correct relationship (before or after) the statement:
|
|
*
|
|
* GOSUB NEXT.MFS
|
|
*
|
|
****************************************************************
|
|
|
|
EQU TRUE$ TO 1
|
|
EQU FALSE$ TO 0
|
|
|
|
$Insert FILE.SYSTEM.EQUATES
|
|
|
|
|
|
*-------------------
|
|
BEGIN CASE
|
|
CASE CODE = READ.RECORD
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = READO.RECORD
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = WRITE.RECORD
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = DELETE.RECORD
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = LOCK.RECORD
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = UNLOCK.RECORD
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = SELECT
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = READNEXT
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = CLEARSELECT
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = CLEARFILE
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = OPEN.FILE
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = CREATE.FILE
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = RENAME.FILE
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = MOVE.FILE
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = DELETE.FILE
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = OPEN.MEDIA
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = CREATE.MEDIA
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = READ.MEDIA
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = WRITE.MEDIA
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = UNLOCK.ALL
|
|
STATUS = TRUE$
|
|
*
|
|
CASE CODE = FLUSH
|
|
STATUS = TRUE$
|
|
*
|
|
CASE CODE = INSTALL
|
|
STATUS = TRUE$
|
|
*
|
|
CASE CODE = RECORD.COUNT
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = REMAKE.FILE
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = CLOSE.MEDIA
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = OMNI.SCRIPT
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = CREATE.INDEX
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = DELETE.INDEX
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = UPDATE.INDEX
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = SELECT.INDEX
|
|
GOSUB NEXT.MFS
|
|
*
|
|
CASE CODE = READNEXT.INDEX
|
|
GOSUB NEXT.MFS
|
|
*
|
|
END CASE
|
|
|
|
RETURN ''
|
|
|
|
* ------------------
|
|
NEXT.MFS:
|
|
FS = DELETE(BFS,1,1,1)
|
|
NEXTFS = FS<1,1,1>
|
|
CALL @NEXTFS(CODE, FS, HANDLE, NAME, FMC, RECORD, STATUS)
|
|
|
|
RETURN
|