COMPMSV 
COMMON
          CTEXT  COMPMSV - MASS STORAGE DEVICE VERIFICATION.
          IF     -DEF,QUAL$,1 
          QUAL   COMPMSV
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4
***       MSV - MASS STORAGE DEVICE WRITE/READ VERIFICATION.
* 
*         W. E. GOEBEL.      80/02/25.
          SPACE  4
***              *MSV* VALIDATES THAT A FIXED DATA PATTERN CAN
*         BE WRITTEN AND READ SUCCESSFULLY.  THE SECTOR IS WRITTEN
*         TO SECTOR 54 OF THE CURRENT UNIT OF THE LABEL TRACK.
*         IF NO SECTOR 54 EXISTS, *MSV* EXITS WITH NO ERROR STATUS. 
* 
*         DATA PATTERN WRITTEN. 
* 
*         3777   BYTE 0 
*         0077   BYTE 1 
*         0000   BYTES 2 - 101
*         0001   BYTES 102 - 201
*         0077   BYTES 202 - 301
*         7777   BYTES 302 - 401
*         7700   BYTES 402 - 501
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = LABEL TRACK.
*                (T7) = LOGICAL UNIT NUMBER * SINGLE UNIT SECTOR LIMIT. 
*                CHANNEL MAY BE RESERVED. 
* 
*         EXIT   (A) .LT. 0 IF MASS STORAGE ERROR.
*                (A) = 0 IF VERIFY GOOD.
*                (A) .GT. 0 IF VERIFY ERROR.
* 
*         USES   T1 - T7, CM - CM+4.
* 
*         CALLS  RDS, WDS.
* 
*         MACROS ENDMS, SETMS.
  
  
          SPACE  4
 MSV8     LCN    54          RESET SECTOR NUMBER
          RAD    T7 
          ENDMS              INSURE CHANNEL RETURNED
          SOD    T3          RETURN STATUS
  
 MSV      SUBR               ENTRY/EXIT 
          LDN    1           PRESET STATUS RETURNED 
          STD    T3 
          SETMS  IO,(AD,DF,NR)
          LDN    54          SET SECTOR 
          RAD    T7 
          SBM    SLM
          PJN    MSV8        IF SECTOR NON-EXISTENT 
  
*         PRESET DATA PATTERN.
  
          LDN    4           LOOP COUNTER 
          STD    T2 
          LDC    BFMS+501    BUFFER INDEX 
          STD    T1 
 MSV1     LDD    T1          SET LOOP TERMINATION 
          SBD    HN 
          STD    T0 
 MSV2     LDM    TMSV,T2     SET BYTE OF PATTERN
          STI    T1 
          SOD    T1 
          LMD    T0 
          NJN    MSV2        IF NOT END OF BLOCK
          SOD    T2 
          PJN    MSV1        IF NOT END OF BLOCKS 
          LDC    3777        SET LINKAGE BYTES
          STM    BFMS 
          LDN    77 
          STI    T1 
          SOD    T3          PRESET MASS STORAGE ERROR
  
*         WRITE DATA PATTERN. 
  
          LDC    BFMS+WLSF
          RJM    WDS
          MJN    MSV3        IF MASS STORAGE ERROR
  
*         READ DATA PATTERN.
  
          LDC    BFMS 
          RJM    RDS
 MSV3     MJN    MSV7        IF MASS STORAGE ERROR
  
*         VERIFY DATA PATTERN.
  
          LDN    4           PRESET VERIFY LOOP 
          STD    T2 
          AOD    T3 
          LDC    BFMS+501 
          STD    T1 
 MSV4     LDD    T1 
          SBD    HN 
          STD    T0 
 MSV5     LDM    TMSV,T2     GET DATA PATTERN FROM TABLE
          LMI    T1 
          NJN    MSV6        IF ERROR 
          SOD    T1 
          LMD    T0 
          NJN    MSV5        IF NOT END OF BLOCK
          SOD    T2 
          PJN    MSV4        IF NOT END OF BLOCKS 
          LDI    T1          CHECK HEADER BYTES 
          LMN    77 
          NJN    MSV6        IF ERROR 
          LDM    BFMS 
          LMC    3777 
          NJN    MSV6        IF ERROR 
          SOD    T3 
 MSV6     AOD    T3 
 MSV7     LJM    MSV8        RETURN 
  
 TMSV     BSS    0           TABLE OF DATA PATTERNS 
          CON    0000 
          CON    0001 
          CON    0077 
          CON    7777 
          CON    7700 
  
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 MSV      EQU    /COMPMSV/MSV 
 QUAL$    ENDIF 
          ENDX
