COMPWSS 
COMMON
          CTEXT  COMPWSS - WRITE SYSTEM SECTOR. 
 COMPWSS  SPACE  4,10 
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   COMPWSS
 QUAL$    ENDIF 
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 WSS      SPACE  4
***       WSS - WRITE SYSTEM SECTOR.
*         G. R. MANSFIELD.  70/07/20. 
 WSS      SPACE  4
***              WSS IS USED TO WRITE THE SYSTEM SECTOR FOR A FILE. 
* 
*         IF *WCS$* IS DEFINED IT IS ASSUMED THAT MORE SECTORS WILL 
*         BE WRITTEN CONSECUTIVELY AFTER THE SYSTEM SECTOR BEFORE 
*         THE CHANNEL IS RELEASED.  IF WCS$ IS NOT DEFINED IT IS
*         ASSUMED NO SECTORS WILL BE WRITTEN CONSECUTIVELY AFTER THE
*         SYSTEM SECTOR.  IF BOTH OF THE PREVIOUS OPTIONS ARE TO BE 
*         USED IN THE SAME PROGRAM IT IS UP TO THE CALLER TO SELECT 
*         THE CORRECT DRIVER DIRECTIVE.  THIS IS DONE BY STORING IN 
*         WSSA EITHER LDCI+WLSF/10000 OR LDCI+WCSF/10000. 
* 
*         IF *WIS$* IS DEFINED, THE EXISTING VALUE OF *T7* IS USED
*         AS THE SECTOR NUMBER.  OTHERWISE, *T7* IS SET TO ZERO.
*         *WSS* SETS A POINTER TO THE NEXT SECTOR FOR THE FILE
*         IN *NSSS*.  IF *WIS$* IS DEFINED, THIS MAY BE A POINTER TO
*         THE NEXT TRACK, AND *WSS* WILL CALL *COMPSNT* IF NECESSARY
*         TO FIND THE NEXT TRACK.  IF A TRACK IS REQUIRED AND 
*         NO NEXT TRACK IS SET IN THE TRT, *WSS* WILL HANG THE PP 
*         WITH AN *MXFM*. 
* 
*         *NOTE* TO USE *COMPWSS* WITH A GLOBAL FILE,  *FNSS* AND 
*         *FASS* MUST BE PRESET BY THE CALLER AND (FA) SET TO ZERO
*         BEFORE CALLING *COMPWSS*. 
* 
*         AFTER THE SECTOR IS WRITTEN, THE DISK IS POSITIONED 
*         TO THE FIRST DATA SECTOR OF THE FILE. 
* 
*         CONTROL BYTES - 
*         CON    3777 
*         CON    77 
* 
*         INFORMATION WRITTEN - 
*T        60/ FNT ENTRY 
*T,       12/EQ,12/FT,12/NS,12/0,12/FA
*T,       60/ PACKED DATE AND TIME
* 
*         EQ = EST ORDINAL
*         FT = FIRST TRACK
*         NS = NEXT SECTOR/TRACK POINTER
*         FA = RELATIVE FNT ADDRESS IN NFL
* 
*         BSS    5
* 
*         DATA BEGINNING AT WORD 10 IS PARTICULAR TO A FILE TYPE, AND 
*         IS PRESTORED BY THE CALLING PROGRAM.
* 
*         ENTRY  (FA) = RELATIVE FNT ADDRESS IN NFL.
*                (FS - FS+4) = FST ENTRY. 
*                (T5) = EST ORDINAL.
*                (T6) = FIRST TRACK.
*                (T7) = FIRST SECTOR (IF *WIS$* DEFINED). 
*                (BFMS+2+10*5 - BFMS+2+77*5) = SECTOR DATA IF NEEDED. 
*                DRIVER PRESET. 
* 
*                IF (FA) = 0, FNT ENTRY AND (FA) ARE ASSUMED TO BE
*                PRESTORED BY CALLER. 
* 
*         EXIT   (A) .LT. 0 (RESPONSE FROM DRIVER) IF WRITE ERROR.
*                (T6) = TRACK FOR FIRST DATA SECTOR.
*                (T7) = FIRST DATA SECTOR.
* 
*         USES   T6, T7.
* 
*         CALLS  SNT (IF WIS$ DEFINED), WDS.
* 
*         MACROS MONITOR, NFA.
  
  
 WSS      SUBR               ENTRY/EXIT 
          LDC    3777        SET SECTOR CODE CONTROL BYTE 
          STM    BFMS 
          LDN    77          SET WORD COUNT 
          STM    BFMS+1 
 FA       IF     DEF,FA 
          LDD    FA          ENTER FNT ORDINAL
          ZJN    WSS1        IF NOT DEFINED 
          STM    FASS 
          NFA    FA,R        READ FNT ENTRY 
          CRM    FNSS,ON
 FA       ENDIF 
 WSS1     LDD    T5          ENTER EQUIPMENT
          STM    EQSS 
          LDD    T6          ENTER FIRST TRACK
          STM    FTSS 
          LDN    PDTL        ENTER PACKED DATE
          CRM    DTSS,ON
          AOM    DTSS        SET ENHANCED EOI FLAG
  
*         SET NEXT SECTOR POINTER.
  
 WIS$     IF     DEF,WIS$ 
          LDD    T7 
          ADN    FSMS 
          STM    NSSS 
          LMM    SLM
          NJN    WSS3        IF NOT END OF TRACK
          RJM    SNT         SET NEXT TRACK 
          STM    NSSS 
          SHN    21-13
          MJN    WSS3        IF NEXT TRACK AVAILABLE
 WSS2     MONITOR  HNGM      HANG IF NEXT TRACK NOT AVAILABLE 
          UJN    WSS2        HANG 
  
 WIS$     ELSE
          LDN    0           SET FIRST SECTOR 
          STD    T7 
          ADN    FSMS        SET NEXT SECTOR POINTER
          STM    NSSS 
 WIS$     ENDIF 
  
*         WRITE SECTOR. 
  
 WSS3     BSS    0
 WCS$     IF     DEF,WCS$ 
 WSSA     LDC    BFMS+WCSF   WRITE CONSECUTIVE SECTORS
 WCS$     ELSE   1
 WSSA     LDC    BFMS+WLSF   WRITE LAST SECTOR
          RJM    WDS
          MJN    WSS5        IF ERROR 
  
*         SET NEXT SECTOR.
  
 WSS4     LDM    NSSS        SET NEXT SECTOR
          STD    T7 
 WIS$     IF     DEF,WIS$ 
          SHN    21-13
          PJN    WSS5        IF NOT TRACK POINTER 
          SHN    13-21       SET NEXT TRACK/SECTOR
          STD    T6 
          LDN    0
          STD    T7 
 WIS$     ENDIF 
 WSS5     LJM    WSSX        RETURN 
          SPACE  4
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 WSS      EQU    /COMPWSS/WSS 
 WSSA     EQU    /COMPWSS/WSSA
 QUAL$    ENDIF 
          ENDX
