X;SAVE #D9:FMSSETUP.M65ASETUP ROUTINEAX;-X; SETUP - A ROUTINE USED FOR ALL COMMANDS"X; TO SET UP FMS CONTROLL CELLS"X; TO ACCESS A PARTICULAR FILE.$X;. SETUP8 &CURFCBB@L2V2` &ENTSTKjX;t$ICDNOZ;;MOVE DRIVE NO~&DCBDRV;;TO DCB0;;DEC FOR ACCESS TO TABLESQDBUFAL9;;MOVE WRITE BUFFER"PVTOCPTR;;ADD TO ZERO PAGE PTR QDBUFAH9PVTOCPTRX;QDRVTBL9;;GET DRIVE TYPEFERRDNO;;BR IF NOT EXISTS0PMAXVTOC;; otherwise, set maximum VTOC indexX;$CURFCB;; GET CHANNEL AGAIN%FCBBUF9;;GET SECTOR BUF #!H:SU3;;BR IF ONE IS ALLOCATED X;":SU1QSECTBL8;;TRY TO FIND ONEI:SU2;;BR ONE FOUND(3;;DEC TRY COUNT2)><D:SU1;;BR MORE TO TRYFX;P2ERRNSB@ERROR E.NSB;;NO SECTOR BUFFERS AVAILZX;d:SU2Q>;;ALLOCATE BUFFERn PSECTBL8x3C!PFCBBUF9;;PUT BUF NO INTO FCBX;&:SU31;; NOW COMPUTE BUFFER ADDRESS"C;; BY MULTIPLYING INDEX BY 128V?5Q>W?;; A NOW = 0 OR $80, C = 00OSBUFSTART;; AND ADDING BUFFER START ADDRESS PZSBA7OSBUFSTART PZSBAX;JMP SUVTOC:"X;,'ERRDNO@ERROR E.DNO;;BAD DRIVE NO6@X;JX; FREE SECTOR BUFFERSTX;^ FRESBUF h%FCBBUF9;;GET BUF NOrFFSBR;;BR IF NONE|1;;DEC FOR TBL ACCESS Q>;;FREEPFCBBUF9;;IN FCBPSECTBL8;;AND TABLE FSBR:X;ADATA SECTOR I/OAX;X; DSIO - DATA SECTOR I/OX;DSIO$ZSBA;;WRITE SECTOR BUF&DCBBUF;;ADR MOVED TO$ZSBA;;DCB&DCBBUF!BSIO;;DO THE I/OX;