ASMB,L,C NAM RWN.C,7 92060-16102 780921 REV. 1901 $CLIB * * REVISED USE OF D.RPx TO .Rx FOR RTE-LC * * NAME: RWN.C * SOURCE: 92060-18059 * PGMR: EARL STUTES * *************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. ALL RIGHTS * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- * * REPRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH- * * OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * *************************************************************** SPC 2 * THIS PROCEDURE PROVIDES THE REWIND FUNCTION FOR THE COMPILER * LIBRARY/ SPC 3 * PROC REWIND(FCB); * RECORD FCB; * BEGIN * BOOLEAN READWRITEFLAG := FALSE; * ADDRESSETUP; * IF FCB.TYPE = REWIND AND FCB.UNITRECORD THEN * [ FCB.UNITRECORD := FALSE; * IF INTERACTIVE(FCB.FLU) THEN * FCB.PROMPT := 0; * ELSE * UNLOCK(FCB.FLU); * FCB.FLU := FCB.SLU;] * IF WRITEBUFFER THEN * GETNEXTSECTOR(FALSE); * IF ERROR THEN GO ERROR EXIT;] * FCB.EXTENT# := 0; * GEX.C(3,FALSE); * ^ * +---------READWRITEFLAG = WRITE * IF RETURNP1 < 0 THEN * GO ERROR EXIT; * FCB.STARTTRACK := RETURNP4; * FCB.STARTSECTOR := RETURNP5 AND @377; ] * FCB.OFFSETBLOCK :=0; * FCB.RECORD# := 0; * BUFFERVALID := FALSE; * FCB.BP ;= 1; * END OF REWIND SKP ENT RWN.C EXT ADS.C ADDRESS SETUP PROC EXT C.FLU FCB PRIMARY FILE LU EXT C.SLU FCB SECONDARY FILE LU EXT C.STR FCB START TRACK EXT C.SSC FCB START SECTOR EXT C.RSC FCB OFFSET BLOCK EXT C.FID FCB ID EXT C.EXT FCB EXTENT # EXT C.BFF FCB BUFFER POINTER EXT C.?? FCB PROMPT CHARACTER HOLDER EXT C.WRD FCB WORD OFFSET POINTER EXT C.RC# FCB RECORD NUMBER EXT GES.C THE DISC READ/WRITE ROUTINE EXT GEX.C THE HIDE THE FMGR/OPSYS ROUTINE EXT .R4 D.RTR RETURN PARAMETER 4 EXT .R5 D.RTR RETURN PARAMETER 5 EXT .TTY THE INTERACTIVE TTY TEST ROUTINE EXT LURQ THE LU LOCK ROUTINE SPC 2 * PROC REWIND(FCB); * RECORD FCB; * BEGIN UNLOK OCT 40000 .1 DEC 1 * BOOLEAN READWRITEFLAG := FALSE; RWFLG OCT 0 LU BSS 1 SPC 2 RWN.C BSS 1 ENTRY POINT * ADDRESSETUP; JSB ADS.C DEC 0 * IF FCB.TYPE = REWIND AND FCB.UNITRECORD THEN LDA C.FID,I AND =B100007 CPA =B100004 JMP *+2 JMP WTEST * [ FCB.UNITRECORD := FALSE; LDA C.FID,I ELA,CLE,ERA STA C.FID,I * IF INTERACTIVE(FCB.FLU) THEN LDA C.FLU,I AND =B77 STA LU JSB .TTY DEF *+1+1 DEF LU SSA,RSS JMP L0X * FCB.PROMPT := 0; CLA STA C.??,I * ELSE * UNLOCK(LU); L0X JSB LURQ DEF *+3+1 DEF UNLOK DEF LU DEF .1 NOP DON'T DO ANYTHING ABOUT IT * FCB.FLU := FCB.SLU; ] LDA C.SLU,I STA C.FLU,I * IF WRITEBUFFER THEN WTEST LDA C.BFF,I SSA,RSS JMP L0 * [ GETNEXTSECTOR(FALSE); CLA JSB GES.C * IF ERROR THEN GO ERROR EXIT;] JMP RWN.C,I * FCB.EXTENT# := 0; L0 EQU * CLA STA C.EXT,I * GEX.C(3,FALSE); LDA =D3 JSB GEX.C DEF RWFLG * IF RETURNP1 < 0 THEN * GO ERROR EXIT; JMP RWN.C,I * FCB.STARTTRACK := RETURNP4; LDA .R4 STA C.STR,I * FCB.STARTSECTOR := RETURNP5 AND @377; ] LDA .R5 AND =B377 STA C.SSC,I * FCB.OFFSETBLOCK := 0; CLA STA C.RSC,I * FCB.RECORD# := 0; STA C.RC#,I * BUFFERVALID := FALSE; STA C.BFF,I * FCB.BP ;= 1; INA STA C.WRD,I * END OF REWIND ISZ RWN.C JMP RWN.C,I END