ASMB,L,C NAM RWN.C,7 92064-18240 770523 REV. 1726 $CLIB * * 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 WRITEBUFFER THEN * [ IF FCB.UNITRECORD THEN * [ FCB.UNITRECORD := FALSE; * FCB.FLU := FCB.SLU] * 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.HLU FCB HEAD LOGICAL UNIT EXT C.SLU FCB SECONDARY FILE LU EXT C.FAD FCB FILE DIRECTORY ADDRESS EXT C.HTR FCB HEAD TRACK 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.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 D.RP1 D.RTR RETURN PARAMETER 1 EXT D.RP4 D.RTR RETURN PARAMETER 4 EXT D.RP5 D.RTR RETURN PARAMETER 5 EXT EXEC GUESS WHO B EQU 1 SPC 2 * PROC REWIND(FCB); * RECORD FCB; * BEGIN * BOOLEAN READWRITEFLAG := FALSE; RWFLG OCT 0 SPC 2 RWN.C BSS 1 ENTRY POINT * ADDRESSETUP; JSB ADS.C DEC 0 * IF WRITEBUFFER THEN LDA C.BFF,I SSA,RSS JMP L0 * [ IF FCB.UNITRECORD THEN LDA C.FID,I SSA,RSS JMP LA * [ FCB,UNITRECORD := FALSE ELA,CLE,ERA STA C.FID,I * FCB.FLU := FCB.SLU; LDA C.SLU,I STA C.FLU,I * [ GETNEXTSECTOR(FALSE); LA EQU * 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 D.RP4 STA C.STR,I * FCB.STARTSECTOR := RETURNP5 AND @377; ] LDA D.RP5 AND =B377 STA C.SSC,I * FCB.OFFSETBLOCK := 0; L2 EQU * 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