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 
                                                                        