COMDSYS 
COMMON
          CTEXT COMDSYS - DISPLAY SYSTEM STATUS AND ASSOCIATED ROUTINES.
 COMDSYS  SPACE  4
          QUAL   COMDSYS
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 COMDSYS  SPACE  4
***       COMDSYS - DISPLAY SYSTEM STATUS AND ASSOCIATED ROUTINES.
*         G. R. MANSFIELD.  70/12/14. 
 COMDSYS  SPACE  4
***              COMDSYS DISPLAYS THE TOP LINES OF THE LEFT AND 
*         RIGHT SCREENS.  IT MAY BE CALLED BY ANY DISPLAY PROGRAM.
* 
*         IF THE TAG *DSDSYS$* IS DEFINED, *SYS* WILL BE ASSEMBLED
*         WITH THE ASSUMPTION THAT *DSD* IS THE CALLING DECK. 
* 
*         IF TAG *N2S$* IS DEFINED, SUBROUTINE *D2S* WILL NOT 
*         BE ASSEMBLED. 
 COMDSYS  SPACE  4
***       ASSUMED.
* 
* 
*         PRESENCE OF COMMON DECKS -
*                *COMDMAC*
*                *COMPMAC*
*                *COMSPIM*
*                *COMSEJT*
*                *COMPGFN*
*         BASE   MIXED
*         SST 
 COMDSYS  SPACE  4
*         ASSEMBLY CONSTANTS. 
  
  
          IF     -DEF,DSCT,1
 DSCT     EQU    20D         DISPLAY CYCLE (MILLISECONDS) 
 D721     EQU    500D        DISPLAY DELAY
 SYS      SPACE  4,40 
***       SYS - DISPLAY SYSTEM STATUS.
* 
*         *SYS* DISPLAYS THE TIME, DATE AND SYSTEM HEADER LINE
*         ON THE LEFT SCREEN, AND CURRENT OPERATOR MESSAGES ON
*         THE RIGHT SCREEN. 
* 
*         ENTRY  (XC) = INITIAL X-COORDINATE. 
*                (NC) = NUMBER OF CONTROL POINTS, INCLUDING SYSTEM CP.
*                (SYSB) = 0 = *L* DISPLAY DRIVER ACTIVE.
* 
*         EXIT   DISPLAY CHANNEL ACTIVE.
*                RIGHT SCREEN, SMALL CHARACTERS SELECTED. 
*                (SYSB) = 9/DIST, 3/DRST. 
*                         DIST = *L* DISPLAY STATUS FROM ((*LDSP*)), IF 
*                                THE DRIVER IS NOT ACTIVE.
*                         DRST = *L* DISPLAY DRIVER STATUS. 
*                                1 = DRIVER IS ACTIVE.
*                                2 = DRIVER IS NOT ACTIVE.
* 
*         USES   YC, T1 - T7, CM - CM+4.
* 
*         CALLS  DOL, DSS, PSE, ULH.
* 
*         MACROS DISPLA, ENDIF, IF. 
* 
*         NOTE   *DISPLA* REQUIRES A *HERE* MACRO IN THE
*                CALLING PROGRAM FOR REMOTE CODE. 
* 
*         EXAMPLE (LEFT SCREEN) - 
* 
*              1         2         3         4         5         6
*     1234567890123456789012345678901234567890123456789012345678901234
* 
*      18.05.18. 80/12/24.  SYSTEM HEADER ... 
* 
* 
*         EXAMPLE (RIGHT SCREEN) -
* 
*              1         2         3         4         5         6
*     1234567890123456789012345678901234567890123456789012345678901234
* 
*      SEE *L* DISPLAY
*      SEE *A,OPERATOR* 
  
  
 SYS1     LDC    HL03        SET DATE LINE Y-COORDINATE 
          STD    YC 
  
*         DISPLAY DATE LINE.
  
          CFNC   SLSF        SELECT LEFT SCREEN - SMALL CHARACTERS
          LDN    2           OUTPUT COORDINATES 
          OAM    XC,CH
          LDN    TIML        DISPLAY DATE LINE
          RJM    DOL
          FJM    *,CH        IF CHANNEL FULL
          RJM    ULH         UNDERLINE HEADERS
          RJM    PSE         PAUSE IF NECESSARY 
.A        IF     DEF,DSS$ 
          RJM    DSS         DISPLAY SUBSYSTEM STATUS 
.A        ENDIF 
          LDC    1           CHECK *L* DISPLAY FLAG 
 SYSB     EQU    *-1
          ZJN    SYS3        IF *L* DISPLAY ACTIVE
          LPC    210
          ZJN    SYS2        IF NEITHER *L* DISPLAY NOR INPUT REQUESTED 
          DISPLA CH02,HL02,(SEE *L* DISPLAY),H
 SYS2     LDC    *           GET *L* DISPLAY CONTROL WORD ADDRESS 
 SYSC     EQU    *-2
          CRD    CM 
          LDD    CM+4        GET *L* DISPLAY REQUESTED STATUS 
          SHN    3
          LMN    1
 SYS3     ADN    1
          STM    SYSB 
          LDC    OPRL 
          CRD    CM 
          LDD    CM 
          ADD    CM+1 
          ADD    CM+2 
          ADD    CM+3 
          ADD    CM+4 
          ZJN    SYSX        IF NO OPERATOR MESSAGES
          RJM    SBO         INDICATE OPERATOR ACTION REQUIRED
          DISPLA CH02,HL03,(SEE *A,OPERATOR*),H 
  
 SYS      SUBR               ENTRY/EXIT 
          LJM    PRS         PRESET 
 SYSA     EQU    *-1         (PRESET ALREADY EXECUTED)
*         LJM    SYS1        EXECUTE ROUTINE AFTER PRESET 
  
.B        IF     DEF,DSS$ 
 SSM      SPACE  4,10 
***       SUBSYSTEM MESSAGE AREA. 
  
  
 SSMA     CON    HL01,CH29   COORDINATES FOR SUBSYSTEM MESSAGE
 SSMB     BSS    0           SUBSYSTEM JSN
 SSMC     EQU    SSMB+2      *MS2W* AREA
.B        ENDIF 
 PRS      SPACE  4,10 
***       PRS - PRESET FOR *SYS*. 
* 
*         THIS CODE IS OVERLAID BY *MS2W* DURING EXECUTION. 
  
  
 PRS      BSS    0           ENTRY
          LDK    LDSP        SET *L* DISPLAY AREA ADDRESS 
          CRD    CM 
          LDD    CM+2 
          RAM    SYSC 
          LDD    CM+3 
          STM    SYSC+1 
          LDC    SYS1        REMOVE CALL TO PRESET
          STM    SYSA 
.C        IF     -DEF,DSS$
          LJM    SYS1        ENTER DISPLAY ROUTINE
.C        ELSE
.D        IF     -DEF,DSDSYS$ 
          LDK    NCPL        SET NUMBER OF CONTROL POINTS 
          CRD    CM 
          AOD    CM+1        INCLUDE SYSTEM CONTROL POINT 
          RAM    DSSA 
.D        ENDIF 
*         LJM    SYS1        ENTER DISPLAY ROUTINE
  
*         RESERVE ONLY NECESSARY SPACE FOR SUBSYSTEM MESSAGE. 
  
.E        IFLT   *-SSMB,3*5+3 
          LJM    SYS1        ENTER DISPLAY ROUTINE
          IFLT   *-SSMB,3*5+3,1 
          BSS    3*5+3-*+SSMB  RESERVE SPACE FOR 30 CHARACTERS + EOL
 DSS      SUBR               ENTRY/EXIT 
.E        ELSE
 DSSX     LJM    SYS1        ENTER DISPLAY ROUTINE FROM PRESET
 DSS      EQU    *-1         ENTRY/EXIT 
.E        ENDIF 
 DSS      SPACE  4,15 
***       DSS - DISPLAY SUBSYSTEM STATUS. 
* 
*         USES   T1, T4, T6, T7, CM - CM+4. 
* 
*         CALLS  HIL, SBO.
* 
*         MACROS SFA. 
* 
*         EXAMPLE - 
* 
*              1         2         3         4         5         6
*     1234567890123456789012345678901234567890123456789012345678901234
*                                 SYS. NO MONITOR RESPONSE. 
*                                 MAG. CHECK *E,P* DISPLAY
*                                 IAF.REQUEST DISPLAY.  (DIS) 
  
  
*DSS      SUBR               ENTRY/EXIT 
          LDN    0           CLEAR EOL BYTE 
          STM    SSMC+5*3 
          STD    T4 
.F        IF     DEF,DSDSYS$
          LDD    NC 
.F        ELSE
          LDN    0           LOAD TOTAL NUMBER OF CONTROL POINTS
 DSSA     EQU    *-1
.F        ENDIF 
          ADN    1
          STD    T6 
          LDC    HL01        SET Y-COORDINATE 
          STM    SSMA 
 DSS1     LMC    BL01 
          ZJN    DSS3        IF DISPLAY FULL
 DSS2     SOD    T6 
 DSS3     ZJP    DSS6        IF ALL CP-S SEARCHED 
          SHN    7
          ADN    TFSW        GET EJTO 
          CRD    T7 
          SBN    TFSW-MS2W   GET MESSAGE
          CRM    SSMC,TR
          SBN    MS2W+3-JCIW CHECK SUBSYSTEM ID 
          CRD    CM 
          LDD    CM+2 
          SBK    LSSI+1 
          MJN    DSS2        IF NOT SUBSYSTEM 
          LDM    SSMC 
          ZJN    DSS2        IF NO MESSAGE
          SFA    EJT,T7      GET JSN
          ADK    JSNE 
          CRD    CM 
          LDD    CM          INSERT JSN 
          STM    SSMB 
          LDD    CM+1 
          SCN    77 
          ADN    1R.
          STM    SSMB+1 
          LDN    3           LOCATE END OF MESSAGE
          STD    T1 
 DSS4     AOD    T1 
          LDM    SSMA,T1
          ZJN    DSS5        IF END OF MESSAGE
          LPN    77 
          NJN    DSS4        IF SKIP CHARACTER
          LDN    1R          BLANK PAD MESSAGE
          RAM    SSMA,T1
          UJN    DSS4        CHECK NEXT BYTE
  
 DSS5     LDD    T1          SET MESSAGE PARAMETERS 
          SHN    14 
          LMC    SSMA 
          RJM    HIL         OUTPUT HIGHLIGHTED MESSAGE 
          AOD    T4          INDICATE SUBSYSTEM STATUS DISPLAYED
          LCN    YINC 
          RAM    SSMA 
          LJM    DSS1        SEARCH NEXT CP 
  
 DSS6     LDD    T4 
          ZJN    DSS7        IF NO SUBSYSTEM STATUS DISPLAYED 
          RJM    SBO         INDICATE OPERATOR ACTION REQUIRED
 DSS7     LJM    DSSX        RETURN 
.C        ENDIF 
 DOL      SPACE  4,10 
***       DOL - DISPLAY ONE LINE. 
* 
*         ENTRY  (A) = ADDRESS OF FIRST WORD OF LINE. 
*                (XC) = X-COORDINATE. 
* 
*         USES   T1, T2, T3, T4, CM - CM+4. 
  
  
 DOL      SUBR               ENTRY/EXIT 
          STD    T2          SET ADDRESS
          SHN    -14
          STD    T1 
          LDN    0           CLEAR WORD COUNT 
          STD    T3 
          STD    T4          CLEAR BYTE COUNT 
 DOL1     LDD    T1          READ WORD
          SHN    14 
          ADD    T2 
          CRD    CM 
 DOL2     LDM    CM,T4       CHECK NEXT BYTE
 DOL3     ZJN    DOLX        IF END OF DISPLAY LINE 
          SBD    XC 
          MJN    DOL4        IF DATA TO DISPLAY 
          LDM    CM,T4
          LPN    77 
          UJN    DOL5        DISPLAY LOWER 6 BITS ONLY
  
 DOL4     LDM    CM,T4
 DOL5     OAN    CH+40       DISPLAY BYTE 
          AOD    T4 
          SBN    5
          NJN    DOL2        IF NOT END OF WORD 
*         LDN    0
          STD    T4 
          AOD    T2          ADVANCE ADDRESS
          SHN    -14
          RAD    T1 
          AOD    T3          COUNT WORD 
 DOLA     LMN    6
          ZJN    DOL3        IF END OF DISPLAY
          UJN    DOL1        LOOP 
 D2S      SPACE  4
 .G       IF     -DEF,N2S$
***       D2S - DISPLAY 2 DIGITS WITH LEADING 0 SUPPRESSED. 
* 
*         ENTRY  (A) = DIGITS RIGHT ADJUSTED. 
*         (D2SA) = *2RN * WHERE N IS THE CHARACTER TO BE
*                DISPLAYED FOLLOWING THE DIGITS.
* 
*         EXIT   (D2SA) IS UNCHANGED. 
* 
*         USES   T0.
* 
*         CALLS  NONE.
  
  
 D2S      SUBR               ENTRY/EXIT 
          LPN    77          SAVE DIGITS
          STD    T0 
          ZJN    D2S2        IF BOTH = 0
          SHN    -3 
          ZJN    D2S1        IF UPPER = 0 
          ADN    1R0         CONVERT UPPER
          SHN    6
 D2S1     ADD    T0          CONVERT LOWER
          SCN    70 
          ADN    1R0
 D2S2     OAN    CH+40       DISPLAY DIGITS 
          LDC    2R.         DISPLAY *. * 
 D2SA     EQU    *-1
 D2SB     OAN    CH+40
*         PSN                (DISABLE *. *) 
          UJN    D2SX        RETURN 
 .G       ENDIF 
 D6S      SPACE 4 
***       D6S - DISPLAY 6 DIGITS WITH LEADING 0 SUPPRESSION.
* 
*         ENTRY  (A) = DIGITS RIGHT ADJUSTED. 
* 
*         EXIT   NONE.
* 
*         USES   T0, T1.
* 
*         CALLS  NONE.
  
  
 D6S      SUBR               ENTRY/EXIT 
          STD    T1          SAVE DIGITS
          SHN    -14
          STD    T0 
          ZJN    D6S2        DIGITS 4, 5
          SHN    -3 
          ZJN    D6S1 
          ADN    1R0
          SHN    6
 D6S1     ADD    T0 
          SCN    70 
          ADN    1R0
 D6S2     OAN    CH+40
          LDD    T0          DIGITS 2, 3
          SHN    14 
          LMD    T1 
          SHN    -6 
          ZJN    D6S4 
          SHN    -3 
          ZJN    D6S3 
          LPN    7
          ADN    1R0
          SHN    14 
 D6S3     ADD    T1 
          SHN    -6 
          SCN    70 
          ADN    1R0
 D6S4     OAN    CH+40
          LDD    T0          DIGITS 0, 1
          SHN    14 
          LMD    T1 
          SHN    -3 
          ZJN    D6S5 
          LPN    7
          ADN    1R0
          SHN    6
 D6S5     LMD    T1 
          SCN    7
          LMD    T1 
          ADN    1R0
 D6S6     OAN    CH+40
          LDC    2R.         DISPLAY *.*
 D6SA     EQU    *-1
          OAN    CH+40
          LJM    D6SX        RETURN 
 FDP      SPACE  4,10 
**        FDP - FETCH *EICB* POINTER. 
* 
*         EXIT   (A) = POINTER TO *D7ST* WORD OF THE *EICB*.
  
  
 FDP      SUBR               ENTRY/EXIT 
 FDPA     LDC    **          *EICB* POINTER ADDRESS 
          UJN    FDPX        RETURN 
 SBO      SPACE  4,10 
**        SBO - SET BIT IN *EICB* TO INDICATE OPERATOR ACTION 
*               IS REQUIRED.
* 
*         USES   T1 - T5. 
* 
*         CALLS  FDP. 
  
  
 SBO      SUBR               ENTRY/EXIT 
          RJM    FDP         GET *EICB* POINTER 
          ZJN    SBOX        IF *EICB* NOT DEFINED
          CRD    T1 
          LDD    T1 
          LPC    7377 
          LMC    400
          STD    T1 
          RJM    FDP         GET *EICB* POINTER 
          CWD    T1 
          UJN    SBOX        RETURN 
 PSE      SPACE  4
***       PSE - PAUSE TO MAKE DISPLAY TIME CONSTANT.
*         USES THE REAL TIME CLOCK IN CM TO INSURE THAT THE DISPLAY 
*         RATE IS CONSTANT. 
* 
*         ENTRY  NONE.
* 
*         EXIT   NONE.
* 
*         USES   T1, CM - CM+4. 
* 
*         CALLS  NONE.
  
  
 PSE3     LDD    CM+4        RESET TIME 
          STM    PSEA 
  
 PSE      SUBR               ENTRY/EXIT 
          LDN    0
          STD    T1 
 PSE1     LDC    RTCL        READ CLOCK 
          CRD    CM 
          LDD    CM+4        COMPUTE ELAPSED TIME 
          SBM    PSEA 
          PJN    PSE2        IF NO ROLLOVER 
          ADC    10000
 PSE2     SBN    DSCT 
          PJN    PSE3        IF NO DELAY NEEDED 
          LMC    -0          DELAY 1024 CYCLES*MILLISECONDS 
          LMD    T1 
          ZJN    PSE3        IF CLOCK NOT RUNNING 
          LMD    T1 
          STD    T1 
          SHN    11 
          SBN    1
          NJN    *-1         IF DELAY NOT DONE
          UJN    PSE1        RESET TIME 
  
 PSEA     DATA   0
 ULH      SPACE  4,10 
***       ULH - UNDERLINE HEADERS.
* 
*         ENTRY  LEFT SCREEN, SMALL CHARACTERS SELECTED,
*                CHANNEL ACTIVE.
* 
*         EXIT   RIGHT SCREEN, SMALL CHARACTERS SELECTED, 
*                CHANNEL ACTIVE.
* 
*         USES   T1.
* 
*         MACROS CFNC, DFIM.
  
  
 ULH      SUBR               ENTRY/EXIT 
          DFIM   (UJN ULH3) 
          LDN    1           SET LEFT SCREEN FLAG 
          STD    T1 
          LDC    HL04-YINC/2 SET Y-COORDINATE 
          OAN    CH+40
 ULH1     LDC    CH01        SET INITIAL POSITION 
          STM    ULHA 
 ULH2     LDN    2
          OAM    ULHA,CH
          LDN    XINC-3      RESET X-COORDINATE TO CONCATENATE DASHES 
          RAM    ULHA 
          SHN    21-11
          PJN    ULH2        IF LINE INCOMPLETE 
          SOD    T1 
          MJN    ULHX        IF RIGHT SCREEN COMPLETED
          DCN    CH+40
 ULH3     CFNC   SRSF        SELECT RIGHT SCREEN - SMALL CHARACTERS 
          DFIM   (UJN ULHX) 
          UJN    ULH1        ENTER UNDERLINE LOOP 
  
  
 ULHA     CON    CH01 
          DATA   2R-
          SPACE  4,10 
          QUAL
  
  
*         DISPLAY SUBROUTINES.
  
  
 FNC      DSUB
  
 HIL      DSUB
          QUAL   *
          SPACE  4
          QUAL   *
 SYS      EQU    /COMDSYS/SYS 
 DOL      EQU    /COMDSYS/DOL 
 DOLA     EQU    /COMDSYS/DOLA
 .H       IF     -DEF,N2S$
 D2S      EQU    /COMDSYS/D2S 
 D2SA     EQU    /COMDSYS/D2SA
 D2SB     EQU    /COMDSYS/D2SB
 .H       ENDIF 
 D6S      EQU    /COMDSYS/D6S 
 D6SA     EQU    /COMDSYS/D6SA
 FDP      EQU    /COMDSYS/FDP 
 FDPA     EQU    /COMDSYS/FDPA
 .I       IF     DEF,DSDSYS$
 SBO      EQU    /COMDSYS/SBO 
 .I       ENDIF 
          ENDX
