*DECK DB$DMGI 
          IDENT  DB$DMGI
          LIST   F           LIST IF-SKIPPED LINES
 DB$DMGI  TITLE  DB$DMGI - DISPLAY MANAGER INTERFACE ROUTINES 
          SST 
          SYSCOM B1 
          IPARAMS 
          SPACE  5
*#
* *   DB$DMGI                                    PAGE  1
* *   DB$DMGI - DISPLAY MANAGER INTERFACE ROUTINES AND BUFFERS
* *   J G SERPA                                  DATE  12/10/78 
* *   BOB MCALLESTER                             DATE  01/20/84 
* 
* DC  PURPOSE 
* 
*     TO CONTAIN THE NECESSARY COMPASS LEVEL ROUTINES TO INTERFACE TO 
*     THE OPERATING SYSTEM IN THE USE OF THE *L* DISPLAY. 
*     THIS ROUTINE WILL ALSO CONTAIN THE MAIN DISPLAY BUFFER (PRE-
*     ALLOCATED TO MAXIMUM SIZE) INTO WHICH IS PRESET THE STATIC
*     PORTIONS OF THE CDCS HEADER LINES, AND THE OTHER STATIC AREAS 
*     OF THE DISPLAY BUFFER.
* 
* DC  GLOBAL VARIABLES
  
          ENTRY  DB$DMAA           NUMBER OF ACTIVE AREAS 
          ENTRY  DB$DMAS           NUMBER OF ACTIVE SCHEMAS 
          ENTRY  DB$DMAU           NUMBER OF ACTIVE USERS 
          ENTRY  DB$DMCL           NUMBER OF CURRENT COMMAND LIST 
          ENTRY  DB$DMCN           IDENTIFY L DISPLAY BUFFER
          ENTRY  DB$DMCP           BEG. CHAR POSITION OF DATA LINE
          ENTRY  DB$DMDG           CDCS DIAGNOSTIC LINE 
          ENTRY  DB$DMDL           DYNAMIC LINES
          ENTRY  DB$DMDS           GET DISPLAY PAGE SIZE
          ENTRY  DB$DMEB           ERROR DISPLAY CONTROL WORD 
          ENTRY  DB$DMH2           SECOND LINE OF HEADER
          ENTRY  DB$DMLC           LAST COMMAND 
          ENTRY  DB$DMMD           MAIN DISPLAY CONTROL WORD
          ENTRY  DB$DMRP           CDCS RESPONSE LINE 
          ENTRY  DB$DMSF           SUSPEND FLAG. 1 IF IN SUSPEND MODE 
          ENTRY  DB$DMTU           NUMBER OF TOTAL USERS
*#
          SPACE  5,12 
*#
* 
* DC  BRIEF DESCRIPTION OF HOW TO USE THE K/L DISPLAY 
* 
*                       NOS/BE
* 
*     DSD LOOKS AT RA.CCD TO FIND OUT IF ANY *L* DISPLAY DATA IS
*     AVAILABLE (NOTE - CFO MESSAGES COME IN AT RA.CCD, SO THEY 
*     SHOULD/CAN NOT BE USED CONCURRENTLY WITH THE *L* DISPLAY).
* 
*     RA.CCD FORMAT IS    VFD 12/BUFF,48/8RLDISPLAY 
* 
*     NOTE - THE BUFFER MUST BEGIN WITHIN THE FIRST 10K (OCTAL) WORDS 
*     OF THE FL. *BUFF* POINTS TO A SINGLE BUFFER WHICH CONTAINS
*     THE KEYBOARD INPUT BUFFER, A DISPLAY COUNT WORD, AND FORMATTED
*     DISPLAY LINES. THE DISPLAY LINES ARE TERMINATED BY A WORD OF
*     ZEROS.
* 
*     INPUT BUFFER -
*           7 WORDS, A MAXIMUM OF 47 CHARACTERS CAN BE ENTERED. 
*           INPUT STARTS AT FW OF BUFFER. 
*           CENTRAL PROGRAM ZEROES FW AND CHECKS FOR NON-ZERO.
* 
*     COUNT WORD -
*           1 WORD, INCREMENTED BY DSD EACH TIME THROUGH ITS MAIN 
*           LOOP. IF SET TO ZERO, CAN BE CHECKED TO SEE IF AN 
*           OPERATOR HAS RECEIVED A MESSAGE (I.E., ASSIGNED THE *L* 
*           DISPLAY TO THE CONTROL POINT. 
* 
*     DISPLAY LINES - 
*           EACH LINE BEGINS WITH A FORMAT WORD WHICH SPECIFIES 
*           LOCATION, SIZE AND BRIGHTNESS OF EACH LINE. 
* 
*     FORMAT WORD IS
*              VFD 6/WC,3/S,3/R,12/6000B+X*8,12/7000B+Y*10,24/4LMMMM
* 
*         WC     - WORD COUNT FOR DISPLAY LINE INCLUDING FORMAT 
*                  WORD. ACCEPTABLE VALUES ARE 1-16. IF 0 OR > 16 THE 
*                  DISPLAY BUFFER WILL BE CONSIDERED TERMINATED.
* 
*          S     - SIZE OF CHARACTERS 
*                  0 - SMALL, 8 POINTS WIDE BY 10 POINTS HIGH.
*                  1 - MEDIUM, TWICE SMALL SIZE.
*                  2 - LARGE, THREE TIMES SMALL SIZE. 
* 
*          R     - REPEAT COUNT, IF 0, 1 IS ASSUMED. SPECIFIES THE
*                  NUMBER OF TIMES THIS MESSAGE IS TO BE DISPLAYED
*                  PER CYCLE. THIS IS A BRIGHTNESS CONTROL. 
* 
*         X      - X COORDINATE.
* 
*         Y      - Y COORDINATE.
* 
*         MMMM   - FIRST FOUR CHARACTER OF MESSAGE
*                  REMAINING WORDS OF MESSAGE FOLLOW. 
* 
*     NOTE - X = Y = 0 DENOTES THE LOWER LEFT CORNER OF THE SCREEN. 
*            THE SCREEN IS 512 BY 512 POINTS. THUS WE CAN HAVE
*            51 LINES OF 64 SMALL CHARACTERS
*            32 LINES OF 25 MEDIUM CHARACTERS 
*            21 LINES OF 17 LARGE CHARACTERS
* 
*     OTHER REQUIREMENTS
*          JOB MUST BE LOCKED IN TO ENSURE STABLE (NON DISAPPEARING)
*          DISPLAY. IF THE JOB IS NOT LOCKED IN, THE DISPLAY WILL 
*          DISAPPEAR WHEN THE JOB GETS ROLLED OUT.
* 
* 
*     ******************************************************************
* 
*                                NOS
* 
*     DISPLAYS CAN BE GENERATED FOR LEFT OR RIGHT SCREENS.
*     *L* IS THE SAME AS *K*. 
*     WHEN THE *CONSOLE* MACRO IS USED, THE MESSAGE 
*     *REQUEST *K* DISPLAY* APPEARS ON LINE 2 OF THE CONTROL POINT. 
*     A SUBSEQUENT LINE 2 MESSAGE WILL OVERWRITE THIS. LINE 1 AND 
*     LINE 2 MESSGES ARE BOTH VISIBLE ONLY ON THE *J* DISPLAY. ONLY 
*     LINE 2 IS DISPLAYED ON THE *B* DISPLAY. 
* 
*     THE *CONSOLE* MACRO IDENTIFIES A POINTER WORD FOR THE DISPLAY 
*     BUFFERS. IT IDENTIFIES THE INPUT BUFFER, LEFT SCREEN BUFFER 
*     AND RIGHT SCREEN BUFFER.
*     THE POINTER WORD IS 
*                   VFD 6/0,18/INBUFF,18/RBUFF,18/LBUFF 
* 
*         INBUFF     INPUT BUFFER - SAME AS FOR NOS/BE. 
*         RBUFF      BUFFER FOR RIGHT SCREEN DATA.
*         LBUFF      BUFFER FOR LEFT SCREEN DATA. 
* 
*     THE INPUT BUFFER WILL RECEIVE A MAXIMUM OF 48 CHARACTERS FROM 
*     THE KEYBOARD INPUT AND IS TERMINATED BY A WORD OF ZEROES. 
* 
*     NEW INPUT ALWAYS BEGINS AT INBUFF. THE LEFT/RIGHT BUFFERS 
*     HAVE A SPECIALLY FORMATTED HEADER WORD, AND THE BUFFER
*     CONTENTS ARE INTERPRETED DIFFERENTLY BASED ON THE HEADER
*     WORD. 
*     THE HEADER WORD IS
*                 VFD  10/0,1/S,1/F,47/0,1/I
* 
*          S     - CONTROLS THE SIZE OF THE CHARACTERS. 
*                0 = SMALL
*                1 = MEDIUM, TWICE SMALL SIZE 
* 
*          F     - CONTROLS FORMAT OF THE REST OF THE BUFFER. 
*                IF F = 1, BUFFER IS IN *C* FORMAT WITH ZERO BYTE 
*                INDICATING END OF LINE. LINES ARE DISPLAYED FROM 
*                THE TOP OF THE BUFFER. LINES TOO LONG WILL WRAP AROUND 
*                TO NEXT LOWER LINE. TOTAL DISPLAY IS TERMINATED BY A 
*                ZERO BYTE IN BYTE ZERO OF THE WORD, OR BY A 1000B WORD 
*                COUNT LIMIT. 
*                IF F = 0, THE BUFFER MUST BE SPECIALLY FORMATTED,
*                CONTAINING ALL COORDINATES FOR DISPLAY. THIS FORMAT IS 
*                ALSO TERMINATED BY A ZERO BYTE IN BYTE ZERO OF THE 
*                WORD, OR BY A 1000B WORD LIMIT. EACH LINE BEGINS WITH A
*                SPECIAL FORMAT WORD WHICH GIVES THE COORDINATES. 
* 
*                FORMAT 
*                   VFD 12/6000B+X*8,12/7000B+Y*10,36/6HMMMMMM
* 
*         X    - X COORDINATE.
* 
*         Y    - Y COORDINATE.
* 
*         MMMMMM - FIRST SIX CHARACTERS OF LINE 
*                FOLLOWED BY THE REST OF THE CHARACTERS. EVIDENTLY
*                DSD RECOGNIZES THE FORMAT WORD THE THE UPPER *6*.
*                X = Y = 0 DENOTES LOWER LEFT HAND CORNER OF THE SCREEN.
* 
*         I    - IS SET TO 1 IF THE BUFFER HAS BEEN DISPLAYED TO THE
*                OPERATOR, BY HIS/HER ASSIGNING THE APPROPRIATE SCREEN
*                TO THE K/L DISPLAY.
* 
*     ******************************************************************
* 
* 
*     FOR COMPATIBILITY PURPOSES, CDCS USES S = F = 0.
*     THIS WORD BECOMES THE EIGHTH WORD OF THE INPUT BUFFER (WATCHER
*     WORD) SO THAT IT CAN BE ZEROED AND CHECKED FOR NON-ZERO ON BOTH 
*     SYSTEMS. USE OF LARGER SIZE CHARACTERS WOULD BE NICE, BUT NOS 
*     ONLY ALLOWS SIZE SELECTION FOR AN ENTIRE BUFFER, SO THE ENSUING 
*     LOSS OF AVAILABLE LINES IS CONSIDERED PROHIBITIVE.
* 
*#
          SPACE  5,12 
*CALL DSLMACRO
 NOSBE    IFC    EQ,$"OS.NAME"$SCOPE $
 SS$NAME  MICRO  1,, CDCS2
 SS$CODE  MICRO  1,, 1
 NOSBE    ELSE
 SS$NAME  MICRO  1,, CDCS 
OPL       XTEXT  COMSSSD
SS$CODE   OCTMIC CDSI        SUBSYSTEM IDENTIFICATION CODE
 NOSBE    ENDIF 
  
          IFC    NE,*"PCOMMENT"*                              * 
 SS$NAME  MICRO  1,, "PCOMMENT" 
 LEN      MICCNT SS$NAME
 SS$CODE  MICRO  LEN+1,,*"PCOMMENT"*
 SS$CODE  MICRO  1,,"SS$CODE" 
          ENDIF 
  
 VER      MICRO  1,3,$2.3$
 DB$DMIB  SPACE  5,12 
          IFC    EQ,$"OS.NAME"$SCOPE $,2
 HEAD     EQU    7000B
          SKIP   1
 HEAD     EQU    7000B-10D         ADJUST NOS HEADING DOWN ONE LINE 
  
 DB$DMIB  BSSZ   7                 KEYBOARD INPUT BUFFER
 DB$DMBF  BSSZ   1           DISPLAY COUNT WORD (WATCHER WORD)
          BSS    0           *L* DISPLAY BUFFER 
 DB$DMBF  SPACE  5,12 
          IFC    EQ,$"OS.NAME"$SCOPE $,2
          VFD    6/LG-*            LENGTH OF LINE 
          VFD    3/0,3/0           S = R = 0
          VFD    12/6000B          X COORDINATE - ALWAYS ZERO 
          VFD    12/HEAD+45*10     Y COORDINATE 
 DMCP     SET    10-*P/6
          VFD    60/10HCDCS "VER" 
          VFD    30/5H"JDATE" 
          VFD    6/1H-
          VFD    54/9H"MODLEVEL"
          VFD    12/2H
          VFD    30/5HSSPN= 
          VFD    42/7H"SS$NAME" 
          VFD    36/6H
          VFD    30/5HSSID= 
          VFD    *P/0C"SS$CODE" 
 LG       EQU    *
 DB$DMH2  SPACE  5
 DB$DMH2  BSS    0                 SECOND LINE OF HEADER
          IFC    EQ,$"OS.NAME"$SCOPE $,2
          VFD    6/LG1-*           LENGTH OF LINE - FOR NOS/BE ONLY 
          VFD    3/0,3/0           S = R = 0
          VFD    12/6000B          X COORDINATE 
          VFD    12/HEAD+44*10     Y COORDINATE 
          VFD    *P/1H
 DB$DMAU  VFD    60/10H            NUMBER OF ACTIVE USERS 
          VFD    60/10H ACTIVE US 
 DB$DMTU  VFD    60/10HERS         NUMBER OF TOTAL USERS
          VFD    60/10H TOTAL USE 
          VFD    *P/2CRS
 LG1      EQU    *
  
          IFC    EQ,$"OS.NAME"$SCOPE $,2
          VFD    6/LG2-*           LENGTH OF LINE - FOR NOS/BE ONLY 
          VFD    3/0,3/0           S = R = 0
          VFD    12/6000B          X COORDINATE 
          VFD    12/HEAD+43*10     Y COORDINATE 
          VFD    *P/1H
 DB$DMAS  VFD    60/10H            NUMBER OF ACTIVE SCHEMAS 
          VFD    60/10H ACTIVE SC 
 DB$DMAA  VFD    60/10HHEMAS       NUMBER OF ACTIVE AREAS 
          VFD    60/10H ACTIVE AR 
          VFD    60/3CEAS 
 LG2      EQU    *
 DB$DMLC  BSS    0                 LAST COMMAND LINE
          IFC    EQ,$"OS.NAME"$SCOPE $,2
          VFD    6/LG4-*           LENGTH OF LINE - FOR NOS/BE ONLY 
          VFD    3/0,3/0           S = R = 0
          VFD    12/6000B          X COORDINATE 
          VFD    12/7000B+8*10     Y COORDINATE 
          VFD    60/10HLAST COMMA 
          VFD    60/10HND - 
          DUP    4,1
          VFD    60/10H 
          VFD    *P/0 
 LG4      EQU    *
 DB$DMDG  SPACE  5,12 
 DB$DMDG  BSS    0                 DIAGNOSTIC LINE
          IFC    EQ,$"OS.NAME"$SCOPE $,2
          VFD    6/LG5-*           LENGTH OF LINE - FOR NOS/BE ONLY 
          VFD    3/0,3/0           S = R = 0
          VFD    12/6000B          X COORDINATE 
          VFD    12/7000B+7*10     Y COORDINATE 
          VFD    60/10HCDCS RESPO 
          VFD    60/10HNSE -
          DUP    4,1
          VFD    60/10H 
          VFD    *P/0 
 LG5      EQU    *
 DB$DMRP  SPACE  5,12 
 I        SET    1
 DB$DMRP  BSS    0                 CDCS RESPONSE LINES
 REP      DUP    3
 II       MICRO  1,, I
 II       DECMIC "II" 
          IFC    EQ,$"OS.NAME"$SCOPE $,2
          VFD    6/LEN_"II"-*      LENGTH OF LINE - FOR NOS/BE ONLY 
          VFD    3/0,3/0           S = R = 0
          VFD    12/6000B          X COORDINATE 
          VFD    12/7000B+7*10-"II"*10   Y COORDINATE 
          DUP    6,1
          VFD    60/10H 
          VFD    *P/0 
 LEN_"II" EQU    *
 I        SET    I+1
 REP      ENDD
 DB$DMDL  SPACE  5,12 
 I        SET    1
 DB$DMDL  BSS    0                 DYNAMIC LINES
 REP      DUP    33 
 II       MICRO  1,, I
 II       DECMIC "II" 
          IFC    EQ,$"OS.NAME"$SCOPE $,2
          VFD    6/LL_"II"-*       LENGTH OF LINE - FOR NOS/BE ONLY 
          VFD    3/0,3/0           S = R = 0
          VFD    12/6000B          X COORDINATE 
          VFD    12/7000B+42*10-"II"*10   Y COORDINATE
          DUP    6,1
          VFD    60/10H 
          VFD    *P/0 
 LL_"II"  EQU    *
 I        SET    I+1
 REP      ENDD
          SPACE  5,12 
 DB$DMEB  VFD    6/0,18/EBIN,18/EBWW,18/EBWW
 EBIN     BSSZ   7                 ERROR BUFFER INPUT PORTION 
 EBWW     BSSZ   1                 ERROR BUFFER WATCHER WORD
 EBOUT    BSS    0                 ERROR BUFFER OUTPUT PORTION
          DSL    10,13,(DUE TO CURRENT MEMORY USAGE)
          DSL    12,9,(THE OPERATOR COMMAND IS NOT POSSIBLE)
          BSSZ   1                 TERMINATION OF THE ERROR BUFFER
          BSSZ   1                 END OF *L* DISPLAY 
 GLOBALS  SPACE  5,12 
  
 DB$DMCL  DATA   0                 NUMBER OF CURRENT COMMAND LIST 
 DB$DMCP  VFD    60/DMCP           BCP OF DATA LINES FOR *L* DISPLAY
 DB$DMMD  VFD    6/0,18/DB$DMIB,18/DB$DMBF,18/DB$DMBF   MAIN DISP BUFF
 DB$DMSF  DATA   0                 SUSPEND FLAG 
 CONSOLE  SPACE  5,12 
 NOSBE    IFC    EQ,$"OS.NAME"$SCOPE $
  
**        CONSOLE - IDENTIFY BUFFER FOR *L* DISPLAY 
* 
*         CONSOLE   ADDR
* 
*         PARAMETERS
*             ADDR   = NOS FORMAT CONTROL WORD FOR L DISPLAY. 
*             (ADDR) = 12/XXXX,12/INBUF,18/RBUF,18/LBUF 
*                      XXXX  - UNUSED 
*                      INBUF - INPUT BUFFER - MUST BE LESS THAN 10K 
*                      RBUF  - RIGHT DISPLAY BUFFER NOT USED BY NOS/BE
*                      LBUF  - LEFT DISPLAY BUFFER - NOT USED BY NOS/BE 
* 
  
          PURGMAC CONSOLE 
  
 CONSOLE  MACRO  ADDR 
  
          R=     A1,ADDR     (X1) = (ADDR)
          LX1    12 
          MX6    12 
          BX6    X1*X6       (X6) = 12/INBUF,48/0 
          SA1    =8RLDISPLAY
          BX6    X6+X1       (X6) = 12/INBUF,48/8RLDISPLAY
          R=     A6,RA.CCD
  
 CONSOLE  ENDM
  
 NOSBE    ELSE
  
 OPL      XTEXT  COMCDCM     FOR CONSOLE AND CSTATUS MACRO
  
.CST.     IF     -MAC,CSTATUS 
  
*         IF THE CSTATUS MACRO IS NOT DEFINED, DEFINE ONE.
*         THE DEFAULT CONSOLE TYPE IS CC545.
  
CSTATUS   MACRO  P
          SX6    1
          SA6    P
          ENDM
.CST.     ENDIF 
  
 NOSBE    ENDIF 
 DB$DMCN  SPACE  6,14 
*#
* *   DB$DMGI                                    PAGE  1
* *   DB$DMCN - IDENTIFY *L* DISPLAY COMMUNICATION BUFFER 
* *   J G SERPA                                  DATE  12/10/78 
* 
* DC  PURPOSE 
* 
*     TO SET A *L* DISPLAY COMMUNICATION BUFFER THROUGH A CALL
*     TO THE CONSOLE MACRO
* 
* DC  ENTRY CONDITIONS
* 
*     (X1) = ADDRESS OF *L* DISPLAY CONTROL WORD. 
* 
* DC  EXIT CONDITIONS 
* 
*     NEW *L* DISPLAY COMMUNICATION BUFFER HAS BEEN IDENTIFIED
* 
* DC  CALLING ROUTINES
* 
*     DB$DMSD 
* 
* DC  CALLED ROUTINES 
* 
*     CONSOLE MACRO 
* 
* DC  DESCRIPTION 
* 
*     THE CONSOLE MACRO IS EXPANDED HERE
* 
*#
  
  
 DB$DMCN  EQ     *+1S17            ENTRY/EXIT 
  
          CONSOLE  X1 
          EQ     DB$DMCN
 DB$DMDS  SPACE  6,14 
*#
* *   DB$DMGI                                    PAGE  1
* *   DB$DMDS - GET DISPLAY PAGE SIZE 
* *   BOB MCALLESTER                             DATE  01/10/84 
* 
* DC  PURPOSE 
* 
*     SET THE DISPLAY PAGE SIZE ACCORDING TO THE TYPE OF THE
*     SYSTEM CONSOLE. 
* 
* DC  ENTRY CONDITIONS
* 
*     (X1) = ADDRESS OF CONSOLE DYNAMIC AREA PAGE SIZE VARIABLE.
* 
* DC  EXIT CONDITIONS 
* 
*     THE PAGE SIZE IS IN THE PARAMETER WORD. 
* 
* DC  CALLING ROUTINES
* 
*     DB$DIDM                INITIALIZE DISPLAY MANAGER (IN DB$DMGR)
* 
* DC  CALLED ROUTINES 
* 
*     CSTATUS MACRO 
* 
* DC  DESCRIPTION 
* 
*     NOS/BE -
*     THE PAGE SIZE VARIABLE IS SET FOR NOS/BE
* 
*     NOS - 
*     THE CSTATUS MACRO IS USED TO OBTAIN THE CONSOLE TYPE. 
*     FOR A CONSOLE TYPE 545, THE LARGE PAGE SIZE IS RETURNED.
*     FOR A CONSOLE TYPE 721, THE SMALL PAGE SIZE IS RETURNED AND 
*     THE COORDINATES OF LINES BELOW THE DYNAMIC AREA ARE ADJUSTED
*     TO REFLECT THE SMALLER K DISPLAY. 
*#
  
*         LOCAL VARIABLES 
  
 PARMADR  CON    0           POINTER TO THE PAGE SIZE VARIABLE
 CSTAT    CON    0           STATUS WORD FOR CSTATUS MACRO
  
*         CONSTANTS 
  
 NBESIZE  EQU    31          NOS/BE PAGE SIZE 
 BIGSIZE  EQU    31          NOS PAGE SIZE FOR TYPE 545 CONSOLE 
 LILSIZE  EQU    13          NOS PAGE SIZE FOR TYPE 721 CONSOLE 
 ENDLILP  EQU    LL14        ADDRESS OF 1ST LINE OMITTED FROM SMALL PAGE
 DB$DMDS  SPACE  5,12 
*     B E G I N   D B $ D M D S   E X E C U T A B L E   C O D E .      *
 DB$DMDS  SPACE  2
 DB$DMDS  EQ     *+1S17            ENTRY/EXIT 
  
.NBE.     IFC    EQ,$"OS.NAME"$SCOPE $
          SX6    NBESIZE
          SA6    X1          RETURN THE PAGE SIZE FOR NOS/BE
.NBE.     ELSE
  
*         PROCESS THE REQUEST FOR NOS 
  
          BX6    X1          SAVE THE PARAMETER ADDRESS 
          MX7    0
          SA6    PARMADR
          SA7    CSTAT       CLEAR THE CSTATUS STATUS WORD
  
          CSTATUS  CSTAT
  
          SA2    CSTAT
          SA1    PARMADR
          SX6    BIGSIZE
          AX2    48 
          SA6    X1          SET TO RETURN A LARGE DISPLAY SIZE 
          ZR   X2,DB$DMDS    CONSOLE IS TYPE 545, RETURN
  
*         THE CONSOLE TYPE IS 721, SHORTEN THE DISPLAY PAGE SIZE
  
          SX6    LILSIZE
          SA4    ENDLILP     GET THE WORD THAT ENDS THE SHORTER PAGE
          SA6    X1 
          MX0    24 
          IX6    X6-X6
          SA6    A4          WRITE TWO ZERO WORDS TO TERMINATE DISPLAY
          SA6    A4+1 
          SA1    DB$DMLC     LAST COMMAND LINE
          BX2    X0*X4       SAVE THE COORDINATES THAT END DYNAMIC AREA 
          BX1    -X0*X1 
          IX6    X2+X1       INSERT NEW COORDINATES IN LAST COMMAND LINE
          SA6    A1 
          SA1    DB$DMDG     DIAGNOSTIC LINE
          SX3    10          NUMBER OF DOT COORDINATES PER LINE 
          LX3    36 
          IX2    X2-X3       ADJUST Y COORDINATE
          BX1    -X0*X1 
          IX6    X2+X1       INSERT NEW COORDINATES IN DIAGNOSTIC LINE
          SA6    A1 
          SA1    DB$DMRP     1ST RESPONSE LINE
          IX2    X2-X3       ADJUST Y COORDINATE
          BX1    -X0*X1 
          IX6    X2+X1       INSERT NEW COORDINATES IN 1ST RESPONSE LINE
          SA6    A1 
          SA1    LEN1        2ND RESPONSE LINE
          IX2    X2-X3       ADJUST Y COORDINATE
          BX1    -X0*X1 
          IX6    X2+X1       INSERT NEW COORDINATES IN 2ND RESPONSE LINE
          SA6    A1 
          SA1    LEN2        3RD RESPONSE LINE
          IX2    X2-X3       ADJUST Y COORDINATE
          BX1    -X0*X1 
          IX6    X2+X1       INSERT NEW COORDINATES IN 3RD RESPONSE LINE
          SA6    A1 
.NBE.     ENDIF 
          EQ     DB$DMDS
          END 
