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
 |