COMBKDA 
COMMON
  
#     COMBKDA - *K* DISPLAY BUFFERS AND ITEMS.                        # 
                                               CONTROL NOLIST;
                                               CONTROL IFEQ LISTCON,1;
                                               CONTROL LIST;
                                               CONTROL FI;
      BEGIN  # COMBKDA #
  
# 
***   COMBKDA - *K* DISPLAY BUFFER AND ITEMS. 
* 
*     COMBKDA CONTAINS THE LEFT SCREEN BUFFER AND ITEMS FOR 
*     PROCESSING THE *K* DISPLAY.  (THIS COMMON BLOCK MUST BE 
*     PRESET.)
# 
  
  
      DEF KORD       #2#;            # MAXIMUM ORDINALS ON SCREEN # 
  
      DEF KRESET     #30#;           # RESET TIMER #
      DEF SMPARMLEN  #5#;            # *SM* PARAMETER BLOCK LENGTH #
  
# 
*     DESCRIPTION OF LEFT SCREEN. 
# 
  
      DEF LF$NLIN    #22#;           # NO. LINES ON LEFT SCREEN 0-22 #
  
      DEF LF$TITLE   #0#;            # TITLE LINE LOCATION #
      DEF LF$TITLEDIS #1#;           # START OF *DISPSIT* # 
      DEF LF$ERRLIN  #2#;            # *ERRORS* MESSAGE LINE #
      DEF LF$BODY    #4#;            # START OF BODY *KDBODY* # 
  
      DEF LF$SMINFO  #4#;            # START OF *SM* INFO # 
      DEF LF$SMDRD0  #9#;            # DRD0 ACTIVITY LINE # 
      DEF LF$SMDRD1  #10#;           # DRD1 ACTIVITY LINE # 
      DEF LF$VALCMD  #13#;           # START OF VALID COMMANDS DESC # 
  
      DEF LF$KBREJ   #21#;           # KEYBOARD REJECT LINE # 
      DEF LF$KBECHO  #22#;           # KEYBOARD ECHO LINE # 
  
  
      DEF TITLELINE  #"                         - MSE SUBSYSTEM -"#;
      DEF DISPSIT    #" - OPEN STAGE    RTRQ=   0      OPEN DESTAGE-"#; 
  
      DEF VALIDCMD #" VALID COMMANDS:                               "#; 
      DEF KXGOLINE
       #"   K.X.GO.                CLEAR ORDINAL *X*               "#;
      DEF STDSLINE
       #"   K.STAGE OR K.DESTAGE   TOGGLE OPEN/CLOSE               "#;
      DEF SMLINE
       #"   K.SMI                  SELECT SM *I* INFORMATION       "#;
      DEF STLINE
       #"   K.SMI,DRD=ST=N         SET MAX *N* STAGE DRDS     "#; 
      DEF DSLINE
       #"   K.SMI,DRD=DS=N         SET MAX *N* DESTAGE DRDS  "#;
      DEF ERRLINE 
       #"       ****ERRORS****                                     "#;
  
# 
*     *K* LEFT SCREEN CONTROLS. 
# 
  
      DEF KCSIZ      #0#;            # SMALL CHARACTERS # 
      DEF KCFORM     #1#;            # TEXT FORMAT #
      DEF KCSPACE    #1#;            # 721 ALTERNATE SPACING #
  
  
# 
*     *BKDACOM* COMMON BLOCK. 
# 
  
      COMMON BKDACOM; 
  
        BEGIN  # BKDACOM #
  
  
        ITEM KACTCOUNT  I;           # CURRENT ACTIVE COUNT # 
        ITEM KLINKQ     I;           # K-QUEUE HEAD # 
        ITEM KNEWREQ    B;           # FLAG INDICATES NEW REQUEST # 
        ITEM KREQCLEAR  B;           # K-REQUEST MESSAGE CLEARED #
        ITEM KTIMER     I;           # TIMER TO CONTROL K-REQUEST # 
        ITEM KSMDISP    B;           # FLAG INDICATES *SM* DISPLAY UP # 
        ITEM KUDTIND    I;           # INDEX TO UDT # 
        ITEM KSMID   C(1);           # *SM* IDENTIFIER FOR K-DISPLAY #
  
# 
*     *KCURRENT* CONTAINS THE CONTROL INFORMATION FOR THE CURRENT 
*     REQUESTS ON THE *K* DISPLAY.
# 
  
        ARRAY KCURRENT [1:KORD] S(1);  # CURRENT DISPLAY #
          BEGIN 
          ITEM KCUR$WD    U(00,00,60);  # CURRENT WORD #
          ITEM KCUR$CW    U(00,00,15);  # CONTROL FLAGS FROM *KWORD* #
          ITEM KCUR$ADDR  U(00,42,18);  # ADDRESS OF *KWORD* #
          END 
  
# 
*     *KSMPARMS* CONTAINS THE PARAMETER VALUES FOR THE CURRENT
*     LINE OF THE *SM* DISPLAY.  THE *KWORD* ARRAY IS A 
*     TEMPLATE FOR THIS ARRAY.
# 
  
      ARRAY KSMPARMS[0:0] S(SMPARMLEN); 
        BEGIN 
        ITEM KSM$WORD       U(00,00,60);
        END 
  
# 
*     *KLEFTSCRN* IS THE BUFFER FOR THE LEFT SCREEN FOR THE 
*     *K* DISPLAY.  IT CONTAINS THE DATA CURRENTLY BEING DISPLAYED. 
*     THE FIRST LINE (*KL$LINE[0]*) IS RESERVED FOR SCREEN CONTROL. 
# 
  
        ARRAY KLEFTSCRN [0:LF$NLIN] S(6); 
          BEGIN 
  
          ITEM KL$CTL     U(00,00,60) = [0];  # K-CONTROL # 
          ITEM KL$S       U(00,10,01) = [ KCSIZ ];  # CHARACTER SIZE #
          ITEM KL$F       U(00,11,01) = [ KCFORM ];  # FORMAT # 
          ITEM KL$A       U(00,12,01) = [KCSPACE]; # ALTERNATE SPACING #
          ITEM KL$COMP    B(00,59,01);  # *DSD* ACTIVE FLAG # 
          ITEM KL$LRSV    C(01,00,42) = [ " " ];  # RESERVED #
  
          ITEM KL$LINE    C(00,00,52) = [ , 
            LF$NLIN(" ")];           # LINES ON THE LEFT SCREEN # 
          ITEM KL$SUBL1   C(01,00,40);  # SUB-LINE #
  
          ITEM KL$ZERO    U(05,12,48) = [ 0,
            LF$NLIN(0) ];            # ZERO TERMINATOR #
          END 
  
# 
*     *KLBODY* IS A REDEFINITION OF THE LEFT SCREEN FOR THE 
*     AREA THAT HOLDS THE LINES FROM THE *KWORD* REQUESTS.
# 
  
        BASED 
        ARRAY KLBODY [1:5,1:KORD] S(6); 
          BEGIN 
          ITEM KLB$LINCLR C(00,00,50);  # TO CLEAR THE LINE # 
          ITEM KLB$ORD    C(00,00,10);  # SET THE ORDINAL # 
          ITEM KLB$TEXT   C(01,00,40);  # MESSAGE TEXT #
          ITEM KLB$END    U(05,00,60);  # END OF LINE # 
          END 
  
# 
*     BUFFERS TO UPDATE *DISPOSIT*. 
# 
  
  
      BASED 
      ARRAY DISPOS        [0:0]     S(3); 
        BEGIN 
        ITEM DISPOS$ST    C(00,12,05);  # CLOSE/OPEN #
        ITEM DISPOS$RTRQ  C(02,18,04);  # RTRQ NUMBER # 
        ITEM DISPOS$DT    C(03,06,05);  # CLOSE/OPEN #
        END 
  
  
        END  # BKDACOM #
  
      END  # COMBKDA #
  
                                               CONTROL LIST;
