X;SAVE #D9:FMSOPEN.M65 AOPENAX;+X; DFMOPN - FILE OPEN EXECUTION ENTRY PTX; DFMOPN$ SETUP;; DO FCB SET UP.! FNDCODE;;GO DECODE FILE NAME8)QICAUX19;; GET AUX1 (OPEN TYPE CODES)BPFCBOTC9;;PUT INTO FCBL$M>OPDIR;; IS THIS LIST DIRECTORYVFOPN1;;BR IF NOT` !LISTDIR;;GOTO DIR LIST CODEjX;t#OPN1 SFDIR;;GO SEARCH FILE DIR~6X; QFCBOTC9;;GET OPEN TYPE CODER>OPIN;;INPUT FDFOINR>OPOUT;;OUTPUT FDFOOUTR>OPINOPOUT;;UPDATE FDFOUPDR>OPOUTOPAPND;;APPEND FDFOAPNERDVDC@ERROR E.DVDCX;X; DFOIN - OPEN FOR INPUT X; DFOIN 8;;GET SEARCH FLAG(EOPNER1;;ERROR IF NOT FOUND2 DDFOUI<X;FX; DFOUPD - OPEN FOR UPDATAPX;Z DFOUPD d8;;GET SEARCH FLAGnEOPNER1;;BR NOT FOUNDx TSTLOCK;;TEST LOCKX; DFOUI  DFRDSU;;SET UP FOR READ!GREAT;;DONEX; OPNER1)ERFNF@ERROR E.FNF;; FILE NOT FOUNDX;X; DFOAPN - OPEN APPENDX; DFOAPN 8;;GET READ STATUSEOPNER1;;BR NOT FOUND%CDIRD;;IF OLDQFILDIRDFDFL18;;FILE TYPE"PFCBEFLAG9;; SAVE FILE TYPE,M>DFDNLD;;THEN6FAPOER;;ERROR@ TSTLOCK;;TEST LOCKEDJ OPVTOC;;READ VTOCT GETSECTOR;;GET A SECTOR^$PFCBSSN9;;MOVE START SECTOR #hQFCBLSN9;;TO START SECTOR #r PFCBSSN9|!DHFOX2;;CONTINUE AS OPEN APOERERAPO@ERROR E.APOX;X; DFOOUT - OPEN FOR OUTPUTX; DFOOUT 8;;GET SEARCH FLAG EDFOX1X;! XDEL0;; delete a single file %CDIRD !OPN1AX; DFOX1 QDHOLES;;WAS THERE A HOLEGOPNER2;;BR IF NO HOLE&/PCDIRS;;SAVE HOLE SECTOR AS CURRENT DIR SEC0& RDDIR;;GO READ CURRENT DIR SECTOR:QDHOLED;;MOVE HOLE DISPL TODPCDIRD;;CUR DIR DISPLNQDHFNUM;;MOVE HOLE FNXPSFNUM;;TO CURRENTb OPVTOCl %CDIRDv$> Q> ?OPN1BPFILDIRDFDPFN8;;BLANK FILL FILE ENTRY FOR FILE NAME30 IOPN1BX; OPN1A  $CURFCB-Q>DFDINUDFDNLD;; SET FILE TYPE INTO FCBPFCBEFLAG9X; GETSECTOR;;GET A SECTOR%CDIRD;;GET DIR DISPL0PFILDIRDFDSSN8;;PUT SECTOR INTO DIR REC  QFCBLSN9PFILDIRDFDSSN8 X;*2Q>DFDINUDFDOUTDFDNLD;;SET DIR ENTRY IN USE4PFILDIRDFDFL18>Q>;; SET NOT LOCKEDH&PFILDIRDFDCNT8;;SET COUNT = 0RPFILDIRDFDCNT8\X;f$>p OPN2QFNAME9;;MOVE FILE NAMEzR> ?;;IF WILD CARDFOPN2A;;CHANGE TO BLANK"PFILDIRDFDPFN8;;TO DIRECTORY OPN2A 32(>  DOPN2X; WRTDIR;;GO WRITE DIRECTORY DHFOX2  SETFCB WRTN6;;FIX UP AS IF WRITEQ>FCBFAS;;SET NEW FILE PFCBFLG9  TSTDOS;;IF NOT DOS HDHFOX3;;BR$ !WRTDOS;;ELSE DO IT. DHFOX3 8 !GREATB X;L OPNER2V -ERDFULL@ERROR E.DFULL;; DIRECTORY FULL` X;j X;t !X; SET UP FCB FOR FILE OPENING~ X; SETFCB Q>;;CLEAR PFCBFLG9;;FLAG &OPNF1QSFNUM;;MOVE FILE NUM TO FCB T? T? PFCBFNO9 Q> PFCBDLN9;;DATA LENGTH PFCBCNT9;;SET CNT = 0 PFCBCNT9 : X; X; X; SET UP FOR READ OPERATION "X; (INCLUDES "DELETE", "APPEND"( %X; AND "UPDATE" AS WELL AS "READ")2 X;< DFRDSU SETFCB;;SET UP FCBF %%CDIRD;;MOVE START SECTOR TO LINKP QDFDFL1FILDIR8Z PFCBEFLAG9;; SAVE TYPEd M>DFDNLD;;SET NEW SECTORn PFCBSLT9;;FLAGx QFILDIRDFDSSN8 PFCBLSN9 QFILDIRDFDSSN8 PFCBLSN9 !RDNSO;;READ 1ST SECTOR