COMCGTO 
COMMON
          CTEXT  COMCGTO - GET CORRESPONDING TERMINAL ORDINAL.
 GTO      SPACE  4,10 
          IF     -DEF,QUAL$,1 
          QUAL   COMCGTO
          BASE   D
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  GTO - GET TERMINAL ORDINAL.
 GTO      SPACE  4,10 
***       GTO - GET CORRESPONDING TERMINAL ORDINAL. 
*         K. H. BOSSARD.     82/11/24.
*         M. L. SWANSON.     84/05/09.
 GTO      SPACE  4,15 
***       *GTO* RETURNS THE TERMINAL ORDINAL AND THE ADDRESS OF THE 
*         CORRESPONDING RESIDENT TERMINAL CAPSULE, GIVEN THE TERMINAL 
*         MNEMONIC. 
* 
*         ENTRY  (X2) = TERMINAL MNEMONIC, LEFT JUSTIFIED, ZERO FILL. 
* 
*         EXIT   (X1) = CORRESPONDING TERMINAL ORDINAL. 
*                     = -1, IF MNEMONIC IS UNRECOGNIZED.
*                (X3) = ADDRESS OF TERMINAL CAPSULE, LOW 18 BITS. 
* 
*         USES   X - 1, 2, 3, 4, 5. 
*                A - 1, 4.
*                B - 1, 2.
  
  
 GTO      SUBR               ENTRY/EXIT 
          SB1    1
          SX1    B0+         INITIALIZE ORDINAL 
          SB2    B1+B1       SET INCREMENT TO TABLE ENTRY LENGTH
          MX3    42          BIT MASK OF HIGH 42 BITS 
          ZR     X2,GTOX     IF MNEMONIC IS UNRECOGNIZED
          SA4    TCTO        GET FIRST WORD OF FIRST ENTRY
          ZR     X4,GTOX     IF EMPTY TABLE 
 GTO1     BX5    X3*X4       GET MNEMONIC PART OF WORD
          BX5    X2-X5       COMPARE INPUT MNEMONIC WITH TABLE
          ZR     X5,GTO2     IF MNEMONICS MATCH 
          SA4    A4+B2       GET FIRST WORD OF NEXT ENTRY 
          NZ     X4,GTO1     IF TABLE END 
          EQ     GTOX        RETURN 
  
 GTO2     BX3    -X3*X4      GET TERMCAP ADDRESS
          SA1    A4+B1       SAVE TERMINAL ORDINAL
          EQ     GTOX        RETURN 
 GTN      SPACE  4,15 
***       *GTN* RETURNS THE TERMINAL MNEMONIC CORRESPONDING 
*         TO THE SUPPLIED TERMINAL ORDINAL.  IF THE ORDINAL 
*         IS UNRECOGNIZED, GTN RETURNS A ZERO.
* 
*         ENTRY  (X2) = TERMINAL ORDINAL. 
* 
*         EXIT   (X1) = CORRESPONDING TERMINAL MNEMONIC.
*                     = 0, IF ORDINAL IS UNRECOGNIZED.
* 
*         USES   X - 1, 3, 4, 5.
*                A - 3, 4.
*                B - 1, 2.
  
  
 GTN      SUBR               ENTRY/EXIT 
          SB1    1
          SX1    B0          INITIALIZE MNEMONIC
          SB2    B1+B1       SET INCREMENT TO TABLE ENTRY LENGTH
          NG     X2,GTNX     IF ORDINAL UNDEFINED 
          SA4    TCTO+1      GET ORDINAL WORD OF FIRST TABLE ENTRY
 GTN1     BX5    X2-X4
          ZR     X5,GTN2     IF MATCHED 
          SA4    A4+B2       GET NEXT ORDINAL WORD
          NZ     X4,GTN1     IF AT TABLE-END
          EQ     GTNX        RETURN 
  
 GTN2     SA3    A4-B1       GET MNEMONIC WORD OF MATCHED ENTRY 
          SX1    X3 
          EQ     GTNX        RETURN MNEMONIC
 TCTO     SPACE  4,10 
**        TCTO - TABLE OF CORRESPONDING TERMINAL ORDINALS.
* 
*T        42/  MN, 18/  TCA 
*T        48/   0, 12/  ORD 
* 
*         MN  = MODEL NAME. 
*         TCA = TERMINAL CAPSULE ADDRESS. 
*         ORD = MODEL ORDINAL IN *CATLIST* TABLE *IPPB*.
* 
*         NOTE -  IF MORE RESIDENT TERMINAL TYPES ARE ADDED TO THIS 
*         TABLE, CORRESPONDING ENTRIES MAY BE NEEDED IN TABLE *IPPB*
*         IN *CATLIST*. 
  
  
 TCTO     BSS    0
  
*         SAMPLE ENTRY FOR THE CDC 721. 
  
*         VFD    42/0L721,18/=XZ721 
*         VFD    48/0,12/2
  
          BSSZ   2           TABLE TERMINATOR 
          SPACE  4,10 
          BASE   *
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 GTO      EQU    /COMCGTO/GTO 
 GTN      EQU    /COMCGTO/GTN 
 QUAL$    ENDIF 
          ENDX
