*DECK KRIGHT
USETEXT NIPDEF
USETEXT DRHDR 
USETEXT KDIS
USETEXT KINITBF 
USETEXT KSTTAB
PRGM KRIGHT;
STARTIMS; 
# 
*1DC  KRIGHT
* 
*     1.PROC NAME       AUTHOR      DATE
*       KRIGHT          M.GIBIAN    84/01/26
* 
*     2.FUNCTIONAL DESCRIPTION
*       DISPLAY NEXT PAGE OF NIPS RIGHT KDISPLAY
* 
*     3.METHOD USED 
*       IF BUFFER IS NOT IN PLACE YET, GENERATE IT. 
*       IF HELP WAS ENTERED, COPY DETAILED HELP TO BUFFER 
*       ELSE COPY SUMMARY HELP TO BUFFER
*       INCREMENT NEXT RIGHT LINE TO DISPLAY BY RIGHT PAGE LENGTH 
* 
*     4.ENTRY PARAMETERS
* 
*     5.OUTPUT PARAMETERS 
* 
*     6.COMDECKS AND TEXTS USED.
*       NIPDEF    KDIS
* 
*     7.ROUTINES CALLED.
* 
*     8.DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
*       MUST FIT IN SECONDARY OVERLAY 
* 
# 
STOPIMS;
  
      ITEM  KADDR U;   # ADDRESS OF NEW BUFFER  # 
      ITEM  I     I;   # LOOP VARIABLE          # 
      ITEM  J     I;
      ITEM  K     I;
  
      BASED ARRAY MOVEIT S(1);
         BEGIN
         ITEM MOVEWRD C(0,0,10);
         END
  
      BASED ARRAY GETIT S(1); 
         BEGIN
         ITEM GETWRD C(0,0,10); 
         END
  
      DEF   KHELPSZ#31#;
  
      ARRAY KHELPARY [1:KHELPSZ] S(6);
         BEGIN
            ITEM KHELP C(0,0,58)= 
["                    USING THE NAM K-DISPLAY", 
 "THE NAM K-DISPLAY IS EITHER IN NAM MODE OR APPLICATION",
 "MODE. THE FOLLOWING COMMANDS ARE AVAILABLE IN NAM AND", 
 "SUPERVISORY (NS,CS,NVF) APPLICATION MODE:", 
 "                    *NAM*", 
 "AP   START APPL MODE        MO   REFRESH SPEED",
 "DB   DEBUG ON               SE   SEND MSG TO HOP",
 "DE   DEBUG OFF              ST   DISPLAY STATUS", 
 "DU   DUMP MEMORY            END  EXIT K DISPLAY", 
 "FL   CHANGE MAX FL          +    PAGE FORWARD", 
 "IG   IGNORE ALERT           -    PAGE BACKWARD",
 "LB   BEGIN LOGGING          HELP MORE NAM HELP",
 "LE   END LOGGING            (    RIGHT PAGE FORWARD", 
 "LR   RELEASE LOG FILE", 
 "                     *CS*", 
 "CO   CONTROL NPU            IN   DISPLAY NPU INFO", 
 "DI   DISABLE TR/LL//LI/TE   LO   RESTART NPU",
 "DU   SET NPU DUMP FLAG      SE   SEND MSG TO USERS",
 "EN   ENABLE TR/LL/LI/TE     ST   STATUS NP/CP/TR/LL/LI/TE", 
 "GO   START NPU              TS   RUN DIAGNOSTICS",
 "HI   DISPLAY HISTORY",
 "                     *NS*", 
 "FI   CHANGE LOAD FILE       NO   NEGATE FI COMMAND",
 "HI   DISPLAY HISTORY        ST   STATUS NPU LOAD",
 "                    *NVF*", 
 "DI   DISABLE HOST/APPL      HI   DISPLAY HISTORY",
 "EN   ENABLE APPLICATION     ST   STATUS APP/TE/UNS",
 "ID   IDLE HOST/APPL", 
 "                 *CS,NS,NVF*",
 "+   LEFT PAGING ON/TURN PAGE    -   PAGING OFF ", 
 "*   RETURN TO NAM MODE          (   RIGHT PAGE FORWARD"]; 
         END
  
# 
      EXTERNAL REFERENCES 
# 
   XREF 
      BEGIN 
      PROC MGETS; 
      PROC XTRACE;
      LABEL RJMAIN; 
      END 
  
   BEGIN
      CONTROL IFEQ DEBUG,1; 
         XTRACE("KRIGH"); 
      CONTROL FI; 
  
   IF KDRFP[0] EQ 0 THEN    # ALLOCATE RIGHT DISPLAY BUFFER # 
      BEGIN 
  
      MGETS((KRSIZE[0]*KSTBLK)+1+BLKHSIZE+KHDRSIZE,KADDR,TRUE); 
  
      KDRFP[0]=KADDR; 
      KDRBP[0]=KADDR; 
      P<DRHDRWD> = KADDR; 
      BLKID[0] = KDISIDVALUE; 
      BACKPTR[0] = LOC(KDRBP[0]); 
      NEXTPTR[0] = LOC(KDRFP[0]); 
  
      P<KINITBF> = 0; 
      KDTYPE[KADDR+BLKHSIZE] = KDISTYPE;
      KDSTAIL[KADDR+BLKBS[0]-1]=0;
      K7777[KADDR+BLKBS[0]-1]=0;
      P<KSTTAB> = KADDR+BLKHSIZE+KHDRSIZE;
      KDRSTOP[0] = P<KSTTAB>; 
      END 
   ELSE 
      P<KSTTAB> = KDRSTOP[0]; 
  
# 
      NOW DISPLAY NEXT PAGE OF RIGHT DISPLAY LINES
# 
   FOR I=0 STEP 1 WHILE (I LQ KRSIZE[0]-1) AND (KDRNXT+I LQ KHELPSZ)
   DO 
      BEGIN 
      P<GETIT>=LOC(KHELP[KDRNXT+I]);
      P<MOVEIT>=LOC(KSTDATA[I]);
      FOR J=0 STEP 1 UNTIL 5 DO 
         MOVEWRD[J]=GETWRD[J];
      KSTEND[I] = 0;
      END 
# 
    COMPUTE FIRST LINE OF NEXT PAGE 
# 
   KDRNXT[0]=KDRNXT[0]+KRSIZE[0]-1; 
   IF KDRNXT[0] GQ KHELPSZ THEN 
      KDRNXT[0]=1;
   ELSE 
      BEGIN 
      KDRNXT[0]=KDRNXT[0]-2;
      I=I-2;
      END 
# 
    BLANK REMAINING PART OF PAGE
# 
   FOR J=I STEP 1 UNTIL KRSIZE[0]-1 DO
      BEGIN 
      P<MOVEIT>=LOC(KSTDATA[J]);
      FOR K=0 STEP 1 UNTIL 5 DO 
         MOVEWRD[K]=" ";
      KSTEND[J]=0;
      END 
# 
    PUT -MORE- ON BOTTOM RIGHT IF NOT LAST PAGE 
# 
   IF KDRNXT[0] NQ 1 THEN 
      BEGIN 
      P<MOVEIT>=LOC(KSTDATA[KRSIZE[0]-1]);
      MOVEWRD[5]="MORE";
      KSTEND[KRSIZE[0]-1]=0;
      END 
  
   KSHOW[0]=FALSE;
   GOTO RJMAIN; 
   END
TERM
