COMPWVE 
COMMON
          CTEXT  COMPWVE - WRITE AND VERIFY WITH EOI SECTORS. 
 WVE      SPACE  4,10 
          IF     -DEF,QUAL$,1 
          QUAL   COMPWVE
          BASE   MIXED
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 WVE      SPACE  4,10 
*****     COMPWVE - WRITE AND VERIFY WITH EOI SECTORS.
* 
*         R. J. THIELEN.     77/09/21.
* 
*         *COMPWVE* WRITES EOI SECTORS ON A MASS STORAGE TRACK AND
*         THEN READS THE TRACK, VERIFYING THAT THE EOI SECTORS WERE 
*         WRITTEN CORRECTLY.  ERROR STATUS IS RETURNED TO THE CALLER
*         IF A MASS STORAGE READ ERROR, WRITE ERROR OR DATA 
*         VERIFICATION ERROR OCCURS.
 WVE      SPACE  4,30 
***       WVE - WRITE AND VERIFY WITH EOI SECTORS.
* 
*         GIVEN A CURRENT TRACK AND SECTOR, *WVE* WRITES EOI SECTORS
*         TO THE END OF TRACK AND THEN READS BACK THE EOI SECTORS TO
*         VERIFY THAT THEY WERE WRITTEN CORRECTLY.  STANDARD EOI SECTOR 
*         INFORMATION IS WRITTEN.  THE PPU PROGRAM NAME (FROM INPUT 
*         REGISTER) IS USED AS THE FILE NAME.  THE PORTION OF THE 
*         SECTOR NOT CONTAINING EOI INFORMATION IS CLEARED.  IN ORDER 
*         TO MAINTAIN FULL MASS STORAGE SPEED DURING VERIFICATION,
*         ONLY THE ACTUAL EOI SECTOR INFORMATION IS VERIFIED. 
* 
*         ENTRY  (T2) = FIRST TRACK.
*                (T5) = EST ORDINAL.
*                (T6) = CURRENT TRACK.
*                (T7) = CURRENT SECTOR. 
*                (A) = BUFFER ADDRESS.
* 
*         EXIT   (A) = 0 IF NO ERRORS.
*                    = .LT. 0 IF MASS STORAGE ERROR.
*                    = .GT. 0 IF VERIFY ERROR.
*                (T3) = BUFFER ADDRESS. 
*                (T7) = BAD SECTOR NUMBER IF (A) .NE. 0.
*                     = SECTOR LIMIT IF (A) = 0.
* 
*         USES   CM - CM+4, TO - T3, T7.
* 
*         CALLS  RDS, WDS.
* 
*         MACROS ENDMS, SETMS.
  
  
 WVE      SUBR               ENTRY/EXIT 
  
*         INITIALIZE EOI DATA.
  
          STD    T3          SAVE BUFFER ADDRESS
          STM    WVEA 
          STM    WVEC 
          ADN    EOIDL
          STM    WVEB 
          LDD    IA          SET FILE NAME TO PROGRAM NAME
          CRD    CM 
          LDD    CM 
          STM    EOID+FNEI
          LDD    CM+1 
          SCN    77 
          STM    EOID+FNEI+1
          LDD    T2          SET FIRST TRACK
          STM    EOID+FTEI
          LDD    T6          SET EOI TRACK
          STM    EOID+ETEI
          LDD    T7          SET EOI SECTOR 
          STM    EOID+ESEI
          LDN    PDTL        SET DATE AND TIME
          CRM    EOID+DTEI,ON 
  
*         INITIALIZE SECTOR BUFFER. 
  
 WVE1     LDN    EOIDL/5+1   MOVE EOI DATA
          ERRPL  EOIDL/5+1-7 MESSAGE BUFFER OVERFLOW
          STD    T1 
          LDD    MA 
          CWM    EOID,T1
          LDD    MA 
          CRM    *,T1 
 WVEA     EQU    *-1
          LDC    502-EOIDL-1 CLEAR EOI
          STD    T1 
 WVE2     LDN    0
          STM    **,T1
 WVEB     EQU    *-1
          SOD    T1 
          PJN    WVE2        IF NOT END OF EOI SECTOR 
  
          LDD    T7          SET CURRENT SECTOR NUMBER
          STM    ESEI,T3
          SETMS  IO 
 WVE3     LDD    T3          WRITE CONSECUTIVE SECTOR 
          LMC    WCSF 
          RJM    WDS
          PJN    WVE4        IF NO MASS STORAGE ERROR 
          SHN    21-11
          MJN    WVE1        IF RECOVERED ERROR ON PREVIOUS SECTOR
          SHN    12 
          LJM    WVEX        EXIT 
  
 WVE4     AOM    ESEI,T3     ADVANCE SECTOR NUMBER
          STD    T7 
          LMM    SLM
          NJN    WVE3        IF MORE SECTORS TO WRITE 
  
*         READ AND VERIFY SECTORS.
  
          LDM    EOID+ESEI   SET FIRST SECTOR NUMBER
          STD    T7 
 WVE5     LDD    T3          READ SECTOR
          RJM    RDS
          MJN    WVE8        IF MASS STORAGE ERROR
          LDN    EOIDL-1     SET LENGTH-1 OF EOI SECTOR DATA
          STD    T1 
 WVE6     LDM    EOID,T1     COMPARE DATA 
          LMM    **,T1
 WVEC     EQU    *-1
          NJN    WVE7        IF DATA MISMATCH - EXIT
          SOD    T1 
          PJN    WVE6        IF NOT END OF DATA 
          AOD    T7          ADVANCE SECTOR NUMBER
          STM    EOID+ESEI
          LMM    SLM
          NJN    WVE5        IF MORE SECTORS TO VERIFY
 WVE7     STD    T1          SAVE EXIT CONDITION
          ENDMS 
          LDD    T1 
 WVE8     LJM    WVEX        EXIT 
  
 EOIDL    EQU    2+5*WCEI    LENGTH OF EOI SECTOR DATA
 EOID     BSSZ   EOIDL       EOI SECTOR DATA BUFFER 
 WVE      SPACE  4,10 
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 WVE      EQU    /COMPWVE/WVE 
 QUAL$    ENDIF 
          ENDX
