*DECK NS$HHI USETEXT COM$NS USETEXT DEF$NS USETEXT HIS$NS USETEXT HOC$NS USETEXT LIN$NS PROC NS$HHI; # HISTORY DISPLAY COMMAND PROCESSOR # # TITLE NS$HHI - HISTORY DISPLAY COMMAND PROCESSOR. # BEGIN # NS$HHI # # ** NS$HHI - HISTORY DISPLAY COMMAND PROCESSROR. * * J.C. LEE 1981 * * THIS ROUTINE PROCESS THE HISTORY COMMAND. * * PROC NS$HHI * * ENTRY: * NONE. * * EXIT: * NONE. * * METHOD: * IF COMMAND IS "HISTORY", SEND ONLY THE LAST PAGE OF * HISTORY BUFFER TEXT LINES TO *KDB*. * IF COMMAND IS "HISTORY,ALL", SEND THE ENTIRE HISTORY * BUFFER TEXT LINES TO *KDB*. * # $BEGIN XREF BEGIN PROC NS$DBG; # TRACE CALL # END $END XREF BEGIN PROC MOVEOK; # ALLOW TSB TO MOVE # PROC NS$TKD; # TRANSFER DISPLAY DATA TO K DISPLAY BUFF # PROC TSBINFO; # LOCATE TSB # END DEF HISDSPSIZE # MAX$PW - 1 #; # SIZE OF HISTORY DISPLAY # ITEM DISLC U; # HISTORY DISPLAY LINE COUNT # ITEM I I; # LOOP VARIABLE # ITEM HISTFWA U; # FWA OF FIRST LINE OF HISTORY DISPLAY # ITEM HISTLC U; # HISTORY DISPLAY LINE COUNT # ITEM HISTWC U; # HISTORY DISPLAY WORD COUNT # ITEM TSBFWA U; # TSB FWA # ITEM TSBSIZE U; # TSB SIZE # CONTROL EJECT; $BEGIN NS$DBG("HHI"); # TRACE CALL # $END TSBINFO(TSBSIZE,TSBFWA,HISTSBN); # LOCATE HISTORY BUFFER # P = TSBFWA; # FWA OF HISTORY BUFFER # HISTLC = HIS$LC[0]; # HISTORY BUFFER LINE COUNT # HISTWC = HIS$WC[0] - HIS$HDRWDL; # HISTORY LINES WORD COUNT # HISTFWA = P + HIS$HDRWDL; # FWA OF FIRST LINE # IF HISTLC GR HISDSPSIZE # LINES EXCEED HISTORY PAGE SIZE # AND CMD$WORD[PAR$ALL] EQ 0 # NOT HISTORY,ALL COMMAND # THEN # DISPLAY ONLY THE MOST RECENT 30 LINES IN BUFFER # BEGIN IF CMD$WORD[PAR$CMD] EQ 0 THEN # DEFAULT HISTORY DISPLAY IN RESPONSE TO HOP/START # DISLC = HISDSPSIZE; # HISTORY DISPLAY LINE COUNT # ELSE # HISTORY COMMAND # DISLC = HISDSPSIZE - 1; HISTLC = 0; # RESET LINE COUNT # P = 0; FOR I=P+HISTWC STEP -1 WHILE HISTLC LS DISLC DO # SCAN HISTORY BUFFER BACKWARD 30 LINES # BEGIN IF LIN$ID[I] EQ LIN$IDENT THEN # A LINE HEADER FOUND # HISTLC = HISTLC + 1; # INCREMENT LINE COUNT # END HISTFWA = I + 1; # FWA OF FIRST HISTORY LINE TO DISPLAY # HISTWC = P + HISTWC - I; # DISPLAY WORD COUNT # END DCW$F$HIS[0] = TRUE; # SET DISPLAY ASSIGNED TO HISTORY DISPLAY # P = HISTFWA; # FWA OF FIRST LINE TO DISPLAY # NS$TKD(HIS$BUFFER,HISTWC,HISTLC); # SEND DISPLAY TO KDB # MOVEOK(HISTSBN); # ALLOW HISTORY BUFFER TO MOVE # RETURN; END # NS$HHI # TERM