APUT BYTEAX;X; DFMPUT - PUT A FILE BYTEX; DFMPUT PSVDBYT$ QICDNO9.PICDNOIOCBZICB8 SETUPB0%ENTSTK;;CHK TO SEE IF ENTRY WASN'T FROM CIOL,QSTAK8;;IF HI BYTE RTS IS NOT IN OS ADDRV'R>OSBTM;;SPACE THEN A NON-CIO ENTRY`EFRMCIO;;BR IF FROM CIOj*Q>;;ELSE PREVENT FROM DOING BURST I/Ot PICCOMZ~ FRMCIOQFCBOTC9;;IF NOT OPENM>OPOUT;;OUTPUTFPUTER;;ERROR%FCBDLN9;;GET DATA LENGTHC RFCBMLN9;;IF SECTOR NOT FULLDPUT1;;THEN BR# WRTNXS;;ELSE WRITE FULL SECTOREPEOF;;BR IF EOF WTBUR;;TEST BURST%>EPUT1;;BR IF NOT BURSTQ@ICBALZ7;;PUT NEXT BYTEPSVDBYT;;AFTER BURST AREA X;PUT1#FCBDLN9;;INC DATA LENQSVDBYT;;GET DATA BYTE(%P@ZSBA7;;AND PUT IN SECTOR BUFFER2X;<&Q>FCBFSM;;INDICATE SECTOR MODIFIEDF LFCBFLG9P PFCBFLG9ZX;d!GREAT;;DONEnX;xPUTER!ERDVDCPEOFERREOF@ERROR E.EOFX;ABURST I/OAX;'X; TEST BURST I/O AND DO IF POSSIBLEX;+WTBURQFCBFLG9;;IF NOT AQUIRING SECTORSGTBURST;;NO BURST;:X;RTBURQ>;;SET READ TYPEX;"TBURSTPBURTYP;;SET BURST TYPE Q>;; SHOW NO BURST OCCURREDPBURSTFLAGQICCOMZ;;IF CMDM>;;IS TEXT MODE"FBURSTEND;;THEN NO BURST,,HTBURLEN;; GO CHECK IF BURST IS POSSIBLE6X;@)NXTBUR ;; LOOP FOR EACH BURST SECTORJ$TBURSTFLAG;; SHOW BURST OCCURREDTQBURTYP;; CHECK R/W FLAG^ GWRBURhX;rX; READ BURST I/O|X;' RDNXTS;; GET NEXT SECTOR TO BUFFEREBURSTEND;; IF EOF, ABORTX;)%>;; COPY DATA FROM BUFFER TO MEMORY:TOMEMQ@ZSBA7 P@ZBUFP73C;; CHECK FOR END OF DATA RFCBMLN9 D:TOMEMX;- INCZBUFP;; BUMP POINTER TO MEMORY BUFFER&!DECLENGTH;; AND GO TO LENGTH TESTX;X; WRITE BURST I/OX;&5WRBUR MOVEDATA;; MOVE DATA FROM MEMORY TO BUFFER0" WRTNXS;; AND WRITE THE SECTOR:X;D1DECLENGTH;;; SUBTRACT FROM IOCB BUFFER LENGTHN QICBLLZX SFCBMLN9b PICBLLZl ETBURLENv "ICBLHZ+TBURLENQICBLLZ;; TEST LOWER BYTE AGAIN"GNXTBUR;; IF LENGTH >= 128, OKQICBLHZ;; CHECK UPPER BYTE HNXTBURX;+BURSTENDVBURSTFLAG;; CC=BURST OCCURRED:X;#X; MOVE DATA FROM MEMORY AREA TOX; SECTOR BUFFERX;MOVEDATA%>:MOVELOOPQ@ZBUFP7 P@ZSBA7 3C;; CHECK FOR END OF DATA  RFCBMLN9*D:MOVELOOP4X;>)PFCBDLN9;; SET DATA LENGTH TO MAXIMUMH,!INCZBUFP;; AND INCREMENT MEMORY POINTERRX;\AGET BYTEAfX;pX;zX; DFMGET - GET A FILE BYTEX; DFMGET  SETUP;;GO SET UPQFCBOTC9;;IF OPEN FORM>OPDIR;;DIR CNT FGET1!GDCHAR;;THEN GO TO DIR RTNX;GET1QFCBDLN9;;GET DATA LENRFCBMLN9;;TEST EMPTY SECTORDGET2;;BR IF NOT EMPTY RTBUR;;DO BURST IF POSSIBLE RDNXTS;;GET NEXT SECTOR DGET1;;BR IF NOT EOF !ERREOF;;ELSE EOF ERROR$ X;. GET2?8 Q@ZSBA7;;GET DATA BYTEB PSVDBYT;;SAVE THE BYTEL 3V C` PFCBDLN9;;AND SET NEW VALUEt %FCBLSN9;;DO EOF LOOK AHEAD~ HGET3;;IF LSN NOT ZERO %FCBLSN9;;THEN HGET3;;NOT EOF &RFCBMLN9;;IF LSN=0 THEN CHECK FOR DGET3;;LAST BYTE Q>;;IF LAST BYTE THEN RTS !RETURN X; GET3!GREAT