COMDMAC 
COMMON
          CTEXT  COMDMAC - DISPLAY MACROS.
          SPACE  4,10 
*COMMENT  DISPLAY MACROS. 
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       COMDMAC - DISPLAY MACROS. 
* 
*         D. H. GAMBREL.     81/09/16.
*         P. D. HAAS.        83/10/09.
          SPACE  4,10 
***              *COMDMAC* CONTAINS SYMBOL DEFINITIONS AND
*         MACROS FOR USE BY SYSTEM CONSOLE DISPLAY DRIVERS. 
          SPACE  4,10 
***       DISPLAY CONSOLE TYPE CODES. 
  
  
 C545     EQU    0           *CC545* DISPLAY CONSOLE TYPE 
 C721     EQU    1           *CDC721* DISPLAY CONSOLE TYPE
          SPACE  4,10 
***       CC545 / CDC721 FUNCTION CODES.
  
  
 DDCF     EQU    0000        DESELECT DISPLAY CONTROLLER
 SLSF     EQU    7000        SELECT LEFT SCREEN - SMALL CHARACTERS
 SLMF     EQU    7001        SELECT LEFT SCREEN - MEDIUM CHARACTERS 
 SLLF     EQU    7002        SELECT LEFT SCREEN - LARGE CHARACTERS
 SKIF     EQU    7020        SELECT KEYBOARD INPUT
 SRSF     EQU    7100        SELECT RIGHT SCREEN - SMALL CHARACTERS 
 SRMF     EQU    7101        SELECT RIGHT SCREEN - MEDIUM CHARACTERS
 SRLF     EQU    7102        SELECT RIGHT SCREEN - LARGE CHARACTERS 
          SPACE  4,10 
***       CDC721 FUNCTION CODES.
  
  
 EELF     EQU    0400        ERASE TO END OF LINE 
 CHSF     EQU    0401        CLEAR HIDDEN SCREEN
 RTPF     EQU    0402        RESET TOP OF PAGE
 THVF     EQU    0403        TRANSFER HIDDEN SCREEN TO VISIBLE
  
 THCF     EQU    0404        COMBINATION OF *THVF* AND *CHSF* 
 DSCF     EQU    0405        DISPLAY SPECIAL CHARACTER
 BIPF     EQU    0406        *BIVF* AT CURRENT POSITION - 1 
 EITF     EQU    0407        *EIVF* AT CURRENT POSITION + 1 
  
 BUSF     EQU    0410        BEGIN UNDERSCORE 
 EUSF     EQU    0411        END UNDERSCORE 
 BBLF     EQU    0412        BEGIN BLINKING 
 EBLF     EQU    0413        END BLINKING 
 BRIF     EQU    0414        BEGIN REDUCED INTENSITY
 ERIF     EQU    0415        END REDUCED INTENSITY
 BIVF     EQU    0416        BEGIN INVERSE VIDEO
 EIVF     EQU    0417        END INVERSE VIDEO
 SLPF     EQU    7004        SELECT LEFT SCREEN - PRIORITY OUTPUT 
 SRPF     EQU    7104        SELECT RIGHT SCREEN - PRIORITY OUTPUT
 SSIF     EQU    7401        SELECT *SCD* INITIALIZATION
 SDCF     EQU    7402        SET DISPLAY CHANNEL FLAG 
          SPACE  4,10 
***       LINE NUMBER AND CHARACTER POSITION SYMBOLS. 
* 
*         EACH OF 51 LINES ON THE SCREEN MAY BE REFERENCED BY A 
*         SYMBOL OF THE FORM LNYY, WHERE *YY* IS THE LINE NUMBER. 
*         THE SYMBOL IS EQUATED TO THE Y-COORDINATE FOR THE LINE. 
* 
*         EACH OF 64 CHARACTER POSITIONS FOR A LINE IS REFERENCED 
*         BY A SYMBOL OF THE FORM CHXX, WHERE *XX* IS THE CHARACTER 
*         POSITION.  THE SYMBOL IS EQUATED TO THE X-COORDINATE OF 
*         THE CHARACTER.
  
  
 XINC     EQU    10          X-COORDINATE INCREMENT BETWEEN CHARACTERS
 YINC     EQU    12          Y-COORDINATE INCREMENT BETWEEN LINES 
  
  
          NOREF  .1,.2
 .1       SET    51D         DEFINE LINE NUMBER SYMBOLS 
          DUP    51,4 
 .1       DECMIC .1,2 
 .2       SET    51D-.1 
 LN".1"   EQU    7000+.2*YINC 
 .1       SET    .1-1 
  
 .1       SET    1           DEFINE CHARACTER POSITION SYMBOLS
          DUP    64,4 
 .1       DECMIC .1,2 
 .2       SET    .1-1 
 CH".1"   EQU    6000+.2*XINC 
 .1       SET    .1+1 
  
  
 HL01     EQU    LN01        FIRST SCREEN HEADER LINE 
 HL02     EQU    LN02        SECOND SCREEN HEADER LINE
 HL03     EQU    LN03        THIRD SCREEN HEADER LINE 
 HL04     EQU    LN04        FOURTH SCREEN HEADER LINE
 BL01     EQU    LN05        FIRST LINE OF SCREEN BODY
 T545     EQU    BL01-YINC*2 TOP OF SCREEN BODY FOR CC545 
 T721     EQU    BL01        TOP OF SCREEN BODY FOR CDC721
 Y545     EQU    LN45        LAST LINE OF SCREEN BODY - CC545 
 Y721     EQU    LN26        LAST LINE OF SCREEN BODY - CDC721
  
 XJSN     EQU    CH23        X-COORDINATE FOR JSN IN DISPLAY HEADERS
 XMOR     EQU    CH10        X-COORDINATE FOR *MORE* MESSAGE
 CATD     SPACE  4,20 
***       CATD - CHECK ACCESS TO DISPLAY CONSOLE. 
* 
*         CATD   CV 
* 
*         ENTRY  *CV* = *VU* TO VALIDATE USER ONLY. 
*                     = *VX* IF PROGRAM FOR CDC721 ONLY.
*                     = NULL IF PROGRAM FOR CC545 ONLY. 
*                "NAME" = MICRO DEFINING NAME FOR MESSAGES. 
* 
*         EXIT   (A) = 0. 
*                TO PPR IF PROGRAM NOT SUPPORTED ON CONSOLE.
*                       IF USER NOT VALIDATED.
*                *CAT1* = TAG TO *INVALID USER ACCESS* ABORT CODE.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CUA, DFM.
* 
*         MACROS MONITOR, SFA.
  
  
          PURGMAC  CATD 
  
 CATD     MACRO  CV 
          LOCAL  TAG1,TAG2,TAG3 
          MACREF CATD 
 .1       IFC    NE,*CV*VU* 
          LDN    DSEQ 
          SFA    EST
          ADK    EQAE 
          CRD    CM 
          LDD    CM+2 
 .2       IFC    NE,*CV*VX* 
 CT       MICRO  1,, CDC721 
          ZJN    TAG1 
 .2       ELSE   2
 CT       MICRO  1,, CC545
          NJN    TAG1 
          LDC    =C+ *"NAME"* UNSUPPORTED ON "CT" CONSOLE.+ 
          UJN    TAG2 
  
 .1       ENDIF 
 TAG1     RJM    CUA
          ZJN    TAG3 
 CAT1     LDC    =C* INCORRECT USER ACCESS.*
 TAG2     RJM    DFM
          MONITOR  ABTM 
          LJM    PPR
  
 TAG3     BSS    0
 CATD     ENDM
 CFNC     SPACE  4,45 
***       CFNC - ISSUE FUNCTION TO DISPLAY CONTROLLER.
* 
*         CFNC   FC 
* 
*         ENTRY  (A) = FUNCTION CODE IF *FC* NOT SPECIFIED. 
*                *FC* = FUNCTION CODE.
*                CHANNEL 10 MUST BE INACTIVE WHEN THIS MACRO IS 
*                USED WITH A CC545 FUNCTION AND A CC545 AS THE
*                SYSTEM CONSOLE.
* 
*         EXIT   CHANNEL 10 WILL BE LEFT ACTIVE EXCEPT IN THE 
*                CASE WHEN A CDC721 FUNCTION IS ISSUED WHEN A 
*                CC545 IS THE SYSTEM CONSOLE.  IN THIS CASE THE 
*                CHANNEL WILL BE IN THE SAME STATE AS ON ENTRY. 
* 
*         CALLS  FNC. 
* 
*         NOTE   THE FOLLOWING CHART SUMMARIZES THE ASSUMED STATUS
*                OF CHANNEL 10 UPON ENTRY TO THE MACRO AND THE
*                STATE THE CHANNEL IS LEFT IN.
* 
*                         FUNCTION TYPE 
*                            CC545      CDC721
*                C        +----------+---------+
*                O        /          /         /
*                N CC545  /  I/A     /  X/X    /
*                S        /          /         /
*                O        +----------+---------+
*                L        /          /         /
*                E CDC721 /  X/A     /  X/A    /
*                         /          /         /
*                         +----------+---------+
* 
*                WHERE THE CONDITIONS ARE EXPRESSED IN THE FORM 
*                ENTRY CONDITION/EXIT CONDITION.
*                I = INACTIVE.
*                A = ACTIVE.
*                X = EITHER.
*                NOTE THAT IN THE CASE OF A CDC721 FUNCTION ISSUED
*                WITH A CC545 AS THE SYSTEM CONSOLE, THE EXIT STATE 
*                WILL MATCH THE ENTRY STATE.
  
  
          PURGMAC  CFNC 
  
 CFNC     MACRO  FC 
          MACREF CFNC 
          IFC    NE,*FC**,1 
          LDC    FC 
          RJP    FNC
 CFNC     ENDM
 DISPHD   SPACE  4,10 
***       DISPHD - DISPLAY HEADER.
* 
*         DISPHD (TEXT),JSN 
* 
*         ENTRY  *TEXT* = DISPLAY NAME, USUALLY IN THE FORM OF A MICRO. 
*                *JSN* = OPTIONAL ADDRESS OF A LOCATION CONTAINING THE
*                        JSN. 
* 
*         IF *JSN* IS NOT PRESENT, CODE TO DISPLAY IT WILL NOT BE 
*         GENERATED.
  
  
          PURGMAC DISPHD
 DISPHD   MACRO  T,J
          MACREF DISPHD 
 .A       IFC    EQ,$J$$
          DISPLA CH01,HL01,(T)
 .A       ELSE
 .1       MICRO  1,,$T$ 
 .1       MICCNT .1 
 .2       SET    XJSN/XINC-CH01/XINC
          ERRPL  .1-.2-1     TITLE EXTENDS INTO THE JSN AREA
 .B       IFLT   .1,.2-6
          DISPLA CH01,HL01,(T)
          LDC    XJSN 
          OAN    CH+40
 .B       ELSE
 .1       MICRO  1,.2,$T      $ 
          DISPLA CH01,HL01,(".1") 
 .B       ENDIF 
          LDN    2
          OAM.   J,CH 
 .A       ENDIF 
 DISPHD   ENDM
 DISPLA   SPACE  4,10 
***       DISPLA - DISPLAY DATA.
* 
*         DISPLA X,Y,(TEXT),HF
* 
*         ENTRY  *X* = X-COORDINATE.
*                *Y* = Y-COORDINATE.
*                *TEXT* = TEXT TO BE DISPLAYED. 
*                *HF* = HIGHLIGHT FLAG. 
* 
*         CALLS  HIL. 
* 
*         IF *X* OR *Y* ARE NOT PRESENT, TEXT 
*         WILL BE DISPLAYED AT THE CURRENT POSITION.
  
  
          PURGMAC DISPLA
  
 DISPLA   MACRO  X,Y,T,HF 
          LOCAL  J,K
          MACREF DISPLA 
 .1       IFC    NE,*HF** 
 .2       IF     DEF,RLO$ 
          LDC.   K*10000+J
 .2       ELSE   1
          LDC    K*10000+J
          RJP    HIL
 .1       ELSE   2
          LDN    K
          OAM    J,CH 
 DIS      RMT 
          QUAL
 J        BSS    0
          IFNE   X,,1 
          CON    X
          IFNE   Y,,1 
          CON    Y
          DATA   H$T$ 
 K        EQU    *-J
          QUAL   *
 DIS      RMT 
 DISPLA   ENDM
 DSUB     SPACE  4,15 
***       DSUB - DEFINE DISPLAY SUBROUTINE. 
* 
*A        DSUB
* 
*         ENTRY  *A* = SUBROUTINE NAME. 
*                *A_M545* = MACRO CONTAINING CC545 CODE.
*                *A_M721* = MACRO CONTAINING CDC721 CODE. 
* 
*         EXIT   SUBROUTINE ASSEMBLED WITH CC545 CODE.
*                CDC721 CODE PLACED IN *SRMT* REMOTE BLOCK. 
* 
*         MACROS A_M545, A_M721, DFIM.
  
  
          PURGMAC  DSUB 
  
          MACRO  DSUB,A 
          LOCAL  OC,LC,L1,L2
          MACREF DSUB 
 A        SUBR
 OC       SET    *O 
 LC       SET    *L 
          LIST   G
          A_M721
          LIST   *
 L1       SET    *-LC 
          ORG    OC 
          LOC    LC 
          LIST   G
          A_M545
          LIST   *
 L2       MAX    L1,*-LC
          ORG    OC+L2
          LOC    LC+L2
          DFIM   A_M721,LC
 DSUB     ENDM
          SPACE  4,10 
***       THE FOLLOWING MACRO PAIRS ARE USED WITHIN THE *DSUB*
*         MACRO TO GENERATE CONSOLE TYPE DEPENDENT CODE.
 FNC      SPACE  4,10 
**        FNC - ISSUE FUNCTION TO DISPLAY CONTROLLER. 
* 
*         ENTRY  (A) = FUNCTION CODE. 
* 
*         EXIT   (A) .LT. 0 IF CDC721 FUNCTION AND CC545 CONTROLLER.
*                CHANNEL ACTIVE IF FUNCTION ISSUED. 
  
  
          PURGMAC  FNCM545,FNCM721
  
 FNCM545  MACRO              *** CC545 CODE *** 
          MACREF FNCM545
          SHN    21-10
          MJN    FNCX 
          SHN    11 
          SCN    44 
          FAN    CH 
          ZJN    FNCX 
          ACN    CH 
          UJN    FNCX 
 FNCM545  ENDM
  
  
 FNCM721  MACRO              *** CDC721 CODE ***
          MACREF FNCM721
          ACN    CH+40
          SHN    17-13
          OAN    CH 
          FJM    *,CH 
          UJN    FNCX 
 FNCM721  ENDM
 HIL      SPACE  4,10 
**        HIL - HIGHLIGHT DISPLAY DATA. 
* 
*         ENTRY  (A) = 6/ BC,12/ SA.
*                      *BC* = BYTE COUNT FOR STRING.
*                      *SA* = STRING ADDRESS. 
* 
*         USES   T1, T2.
* 
*         MACROS CFNC.
  
  
          PURGMAC  HILM545,HILM721
  
 HILM545  MACRO              *** CC545 CODE *** 
          MACREF HILM545
          STM    HILA 
          SHN    -14
          STD    T2 
          LDN    2
          STD    T1 
 HIL1     LDD    T2 
          OAM    *,CH 
 HILA     EQU    *-1
          SOD    T1 
          PJN    HIL1 
          UJN    HILX 
 HILM545  ENDM
  
  
 HILM721  MACRO              *** CDC721 CODE ***
          MACREF HILM721
          STM    HILB 
          SHN    -14
          STD    T2 
          CFNC   BIPF 
          LDD    T2 
          OAM    *,CH 
 HILB     EQU    *-1
          CFNC   EITF 
          UJN    HILX 
 HILM721  ENDM
          SPACE 4,10
          ENDX
