X;SAVE #D9:FMSRWSEC.M65AWRITE DATA SECTORAX; X; WRTNXS - WRITE NEXT SECTORX; WRTNXS$"QFCBFLG9;;IF ACQUIRING SECTORS.GWRTN1;;THEN NOT UPDATE8X;BT?;;IF SECTOR NOT MODIFIEDLIWRU1;;THEN DON'T ITVX;`T?j PFCBFLG9;;TURN OFF FLAG BITSt! WRCSIO;;WRITE CURRENT SECTOR~GWRNERR;;BR IF BAD I/O'WRU1!RDNXTS;;ELSE READ NEXT SECTORX;&WRTN1 GETSECTOR;;GET A NEW SECTORX;"WRTLSECQFCBDLN9;;GET DATA LEN%>DRVLBT;;INTO LAST BYTEP@ZSBA7;;OF SECTORX;'WRTN2QFCBLSN9;;MOVE LINK SECTORLFCBFNO9;;PLUS FILE NUM%>DRVMDL;;TO BYTES 126,127P@ZSBA7;;OF SECTOR BUFF3  QFCBLSN9 P@ZSBA7X;( WRCSIO;;WRITE SECTOR2IWRTN5;;BR NOT ERROR<X;F WRNERRPQ>;;CLOSE FILEZ PFCBOTC9dQDCBSTA;;RECOVER ERROR CODEn !RETURNxX; WRTN5#FCBCNT9;;INC SECTOR CNT HWRTN6#FCBCNT9 WRTN6 MVLSN;;LINK TO CURQ>PFCBLSN9;;LINK = 0PFCBLSN9PFCBDLN9;;DLN = 0 Q>DRVMDL PFCBMLN9,:X;WRCSIO;;;WRITE CUR SECTOR"RWCSIOQFCBCSN9, %FCBCSN96 !DSIO@X;JMVLSNQFCBLSN9;;MOVE LINKT PFCBCSN9^QFCBLSN9hPFCBCSN9r:|X;AREAD DATA SECTORAX;X; RDNXTS - READ NEXT SECTORX; RDNXTSQFCBFLG9;;IF NOT UPD MODEFRDNSO;;BR!WRTNXS;;ELSE WRITE FIRST RDNSO QFCBLSN9;;IF LSN NOTLFCBLSN9;;ZEROHRDNS1;;BR;;;ELSE EOF:&RDNS1 MVLSN;;MOVE LINK TO CURRENT ,;;READ& RWCSIO;;CURRENT SECTOR0GRDIOER;;BR IF OK READ:X;DX; ELSE GOTO I/O ERRORNX;X %>DRVMDLbQ@ZSBA7;;TEST FOR SAMElM>;;FILE NOv RFCBFNO9HRDFNMM;;IF NOT THEN ERRORX;Q@ZSBA7;;MOVE LINK SECTORM>PFCBLSN93 Q@ZSBA7 PFCBLSN9X;3;;INC TO LEN BYTEQ@ZSBA7;;GET LEN BYTE 5;;SAVE IT!QFCBSLT9;;GET SECTOR LEN TYPEHRDNS3;;BR IF NEW TYPE X; 7;;GET LEN "GRDNS2;;BR IF OLD SHORT SECTOR*Q>};;ELSE SET FULL SECTOR4RDNS2M>;;TURN OFF MSB>5;;BALANCE STACKHX;R RDNS37\PFCBMLN9;;SET MAX LENfX;pQ>;;SET CUR DATA LEN = 0z PFCBDLN9,:RDIOER ERRIO;;I/O ERROR"RDFNMM ;;FILE NUMBER MISMATCH QICCOM9R>!;;WAS THIS DELETEFRDDELE;;BR IF DELETEERFNMM@ERROR E.FNMM#RDDELE;;;INDICATE EOF TO DELETE:X;