*DECK INIP
USETEXT NIPDEF
USETEXT BPIPBUF
USETEXT FREETAB
USETEXT INPARUT
USETEXT MEM
USETEXT MSGIDX
USETEXT STATTAB
USETEXT STATTB2
USETEXT SYSCOMD
USETEXT SYSTIME
USETEXT OVERLAY
USETEXT DBGBUF
PRGM INIP; # NIP INITIALIZATION PROCEDURE #
*CALL NAMLEV
STARTIMS;
#
*1DC INIP
*
* 1. PROC NAME AUTHOR DATE
* INIP S. WATANABE 80/03/25
*
* 2. FUNCTIONAL DESCRIPTION.
* THIS ROUTINE IS RESPONSIBLE FOR SETTING UP NIP-S TABLES, POTS
* AND BUFFERS PLUS WHATEVER INITIALIZATION IS NEEDED.
*
* 3. METHOD USED.
* INITIALIZE TABLES AND FREETAB
* INITIALIZE NIP AS A SYSTEM-CONTROL-POINT
* INITIALIZE K DISPLAY
* DISPLAY INITIALIZED MESSAGE
*
* 4. ENTRY PARAMETERS. NONE
*
* 5. EXIT PARAMETERS. NONE
*
* 6. COMDECKS CALLED AND SYMPL TEXTS USED.
* NIPDEF BPIPBUF FREETAB
* OSIZE STATTB2 SYSCOMD
* SYSTIME
*
* 7. ROUTINES AND OVERLAYS CALLED.
* IKDIS INITIALIZE K DISPLAY
* ILOFS INITIALIZE LIST OF FILES
* ISCP INITIALIZE NIP AS SCP
* ITABS INITIALIZE TABLES AND FREETAB
* ITRACE INITIALIZE TRACE BUFFER
* OMSG ISSUE DAYFILE MESSAGE
* OTIME GET SYSTEM TIME
* XTRACE TRACES CALLS
*
* 8. DAYFILE MESSAGES.
* *NAM VER 1.2- NNN* AND
* *NAM REG LEVEL 0*
* THESE MESSAGES DISPLAYED WHEN INITIALIZATION PROCEDURES
* HAVE BEEN COMPLETED.
*
* THIS PROGRAM IS A PRIMARY OVERLAY LOADED BY SUBROUTINE OVLCALL.
* WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO LOCATION RJMAIN
* TO RETURN TO THE CALLING PROGRAM.
*
* W A R N I N G - THIS PROGRAM IS LOADED WITH IKDIS,
* ISCP, ITABS, AND ITRACE. THE SUM
* OF THEIR SIZES MUST NOT EXCEED THE
*CALL OSIZE
*
* THIS OVERLAY IS CALLED BY NIP.
*
#
STOPIMS;
#
PARAMETERS
INPUT NONE
OUTPUT NONE
#
#
EXTERNAL VARIABLES
#
XREF
BEGIN # RA COMMUNICATION AREA #
ARRAY ARG[1:22] S(1);
BEGIN
ITEM ARGSYM C(00,00,07); # ARGUMENT VALUE #
ITEM ARGSEP U(00,NL,AL); # ARGUMENT SEPERATOR #
ITEM ARGWORD U(00,00,60); # WHOLE WORD #
END
ARRAY ACT[0:0] S(1);
BEGIN
ITEM ACTCOUNT U(00,NL,AL); # ARGUMENT COUNT #
END
END
XREF BEGIN
PROC IKDIS; # INITIALIZE K DISPLAY #
PROC ISCP; # INITIALIZE NIP AS A SYSTEM CP #
PROC ITABS; # INITIALIZE NBT,POA,CET,AT,TNT,FREETAB #
PROC OMSG; # DAYFILE MESSAGE IN NIP"S DAYFILE #
PROC OTIME; # GET SYSTEM TIME #
PROC NXDCB; # CONVERT DISPLAY CODE TO BINARY #
PROC OVLCALL; # LOAD AND EXECUTE OVERLAY #
PROC XTRACE; # TRACE CALLS #
LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
END
#
LOCAL VARIABLES
#
ITEM I U=0; # COUNTER FOR CARD-PARAMETERS #
ITEM J U=0; # INDEX INTO THE TABLE OF VALID PARAMETERS #
ITEM PARRC U=0; # REASON CODE FOR CARD ERROR #
ITEM LEN U=0; # MAXIMUM LENGTH ALLOWED FOR PARAMETER VALUE #
ITEM NUM U; #DISPLAY CODE DIGIT#
ITEM DIGIT U; #EITHER 10 OR 8#
ITEM DONE B; #DONE FLAG#
ITEM N U; #INDEX#
ITEM PARV U=0; # PARAMETER VALUE #
ITEM PARCHAR C(1);
ITEM ERROR B; # ERROR FLAG RETURNED FROM CONV. RTN. #
#
MISC DEFS
#
DEF EQUAL #O"54"#;
DEF YES #O"31052300000000"#;
DEF YY #O"31000000000000"#;
DEF NO #O"16170000000000"#;
DEF NN #O"16000000000000"#;
DEF MAXPARAM #12#; #NUMBER OF VALID PARAMETERS#
DEF MAXERRS #08# ; # MAXIMUM ERROR MESSAGES ACTIVE #
# #
SWITCH PARLAB PARNIN,IFSTP,IFSTP,PRUU,PRUU,PRUU,
PARMC,PARACT,PARFL,PRUU,PRUU,PRUU,PARERR;
#
ARRAY AND MESSAGE ARRAYS
#
ARRAY PARS [0:MAXPARAM] S(1);
BEGIN
ITEM PARVAL U(0,00,42) = [
O"16111600000000", # NIN #
O"11232420000000", # ISTP #
O"06232420000000", # FSTP #
O"16342022250200", # N1PRUB #
O"16352022250200", # N2PRUB #
O"16362022250200", # N3PRUB #
O"15030000000000", # MC #
O"11160103240000", # INACT #
O"15013006140000", # MAXFL #
O"16340000000000", # N1 #
O"16350000000000", # N2 #
O"16360000000000", # N3 #
0];
ITEM PARLEN U(0,42,18) = [3,3,3,2,2,2,7,7,7,2,2,2,7];
END
# #
ARRAY PARMSGR [1:MAXERRS] S(3);
BEGIN
ITEM PARMSG C(0,0,30);
ITEM PARMSGE U(3,48,12) = [ 0, 0, 0, 0, 0, 0]; #TERMINATE MSG#
ITEM PARNUM U(0,6,6) ;
ITEM PARMSGT C(0,0,28) = [
"CONTROL-CARD FORMAT ERROR ",
"PARAMETER EXCEEDS MAX LENGTH",
"ILLEGAL PARAMETER VALUE",
"ONLY YES OR NO ALLOWED ",
"UNRECOGNIZED PARAMETER ",
"NIN MUST BE SPECIFIED ",
"LOWER PRU-STATE IS ZERO ",
"NXPRUB IS BELOW MINIMUM "] ;
END
ARRAY MERPRUA [1:MAXPRU] P(1); # MININUM VALUE FOR PRU BUFFERS #
BEGIN
ITEM MERPRU = [2,4,2];
END
ITEM TEMPLWA;
CONTROL IFEQ DEBUG,1 ;
# DEBUG NAM DAYFILE MESSAGE #
ARRAY DBGNAM [0:0] S(3);
BEGIN
ITEM DBGMSG C(0,0,20) = ["NAM BUILT WITH DEBUG"];
ITEM DBGZRO U(2,0,60) = [0];
END
CONTROL FI;
CONTROL IFEQ STAT,1 ;
# STAT NAM DAYFILE MESSAGE #
ARRAY STNAM [0:0] S(3);
BEGIN
ITEM STMSG C(0,0,20) = ["NAM BUILT WITH STAT"];
ITEM STZRO U(2,0,60) = [0];
END
CONTROL FI;
# NAM REGULATION LEVEL DAYFILE MESSAGE #
ARRAY NAMREG [0:0] S(2);
BEGIN
ITEM NAMREGM C(0,0,13) = ["NAM REG LEVEL"];
ITEM NAMREGN C(1,18,5) = [" 0"]; # LEVEL NUMBER IN DECIMAL #
ITEM NAMREGZ U(2,48,12) = [0];
END
#**********************************************************************#
BEGIN
CONTROL IFEQ DEBUG,1 ;
XTRACE("INIP ") ;
CONTROL FI;
#
INITIALIZE MAXFL TO MAXNIP (60000B)
#
MAXFL = MAXNIP;
#
STEP 0 - GET PARAMETERS FROM CONTROL CARD
#
BEGIN
FOR I=1 STEP 2 WHILE(I LS ACTCOUNT[0] AND PARRC EQ 0) DO
BEGIN
IF ARGSEP[I] NQ EQUAL
OR ARGSEP[I+1] NQ 0
THEN
BEGIN
PARRC=1;
END
ELSE
BEGIN
PARVAL[MAXPARAM] = ARGSYM[I];
FOR J=0 STEP 1 UNTIL MAXPARAM DO
BEGIN
IF ARGSYM[I] EQ PARVAL[J] THEN
BEGIN
LEN = PARLEN[J];
IF LEN EQ NC OR C<LEN,NC-LEN>ARGSYM[I+1] EQ 0
THEN
GOTO PARLAB[J];
ELSE
BEGIN
PARRC = 2;
END
END
END
END
GOTO PAREXIT;
PARNIN:
NXDCB(ARGSYM[I+1],PARV,ERROR);
IF ERROR
THEN
PARRC = 3; # ILLEGAL PARAMETER VALUE #
ELSE
INPNIN[1] = C<0,LEN>ARGSYM[I+1];
GOTO PAREXIT;
PARMC:
NXDCB(ARGSYM[I+1],MC,ERROR);
IF ERROR
THEN
PARRC = 3; # ILLEGAL PARAMETER VALUE #
GOTO PAREXIT;
PARFL:
DIGIT = 10;
DONE = FALSE;
#
CHECK IF THERE IS A B IN THE PARAMETER.
IF THERE IS B, THEN DIGIT IS 8.
#
FOR N=0 STEP 1 WHILE N LS WC AND NOT DONE
DO
BEGIN
NUM = C<N,1>ARGSYM[I+1];
IF (NUM EQ O"02")
THEN
BEGIN
DIGIT = 8;
DONE = TRUE;
END
END
#
CONVERT DISPLAY CODE TO BINARY, DEPENDING ON DECIMAL
OR OCTAL.
#
ERROR = FALSE;
DONE = FALSE;
MAXFL = 0;
FOR N=0 STEP 1 WHILE N LS WC AND NOT ERROR AND NOT DONE
DO
BEGIN
NUM = C<N,1>ARGSYM[I+1];
IF (NUM EQ O"02" OR NUM EQ O"04" OR NUM EQ O"00")
THEN
DONE = TRUE;
ELSE
IF (NUM GQ O"33" AND NUM LQ O"44")
THEN
MAXFL = (MAXFL * DIGIT) + (NUM - O"33");
ELSE
ERROR = TRUE;
END
IF ERROR
THEN
PARRC = 3; #ILLEGAL PARAMETER VALUE#
#
IF MAXFL IS GREATER THAN MAXXFL, THEN SET IT TO MAXXFL
#
IF MAXFL GR MAXXFL
THEN
MAXFL =MAXXFL;
# LOOP #
GOTO PAREXIT;
IFSTP:
BEGIN
IF ARGSYM[I+1] EQ YES OR ARGSYM[I+1] EQ YY
THEN
BEGIN
INPSTP[J] = TRUE;
END
ELSE
BEGIN
IF ARGSYM[I+1] EQ NO OR ARGSYM[I+1] EQ NN
THEN
BEGIN
INPSTP[J] = FALSE;
END
ELSE
BEGIN
PARRC = 4;
END
END
GOTO PAREXIT;
END
PRUU: # PRU BUFFER COUNT PARAMETER #
NXDCB(ARGSYM[I+1],PARV,ERROR); # CONVERT TO BINARY VALUE #
IF ERROR
THEN # ILLEGAL PARAMETER VALUE #
PARRC = 3;
ELSE
BEGIN
IF J GQ 9
THEN J = J-6; #MAKE J THE SAME AS NNPRU#
IF PARV LS MERPRU[J-2]
THEN
BEGIN
PARNUM[8] = J - 2 + O"33";
OMSG(PARMSG[8],0) ; # DAYFILE A MESSAGE #
PARV = MERPRU[J-2]; # LESS THAN MINIMUM, USE MINIMUM VALUE #
END
INPPRU[J-2] = PARV ; # SET PRU BUFFER COUNT #
END
GOTO PAREXIT;
PARACT:
NXDCB(ARGSYM[I+1],PARV,ERROR) ;
IF ERROR
THEN
PARRC = 3 ;
ELSE
IF PARV GR 0
THEN
INACTVAL = PARV * 60 ; # SET INACT TIME TO INPUT VALU#
GOTO PAREXIT ;
PARERR: BEGIN
PARRC = 5;
GOTO PAREXIT;
END
PAREXIT:
END # LOOP ON PARAMETERS #
IF INPNIN[1] EQ O"333333"
THEN
BEGIN # NIN VALUE MUST BE SPECIFIED #
PARRC = 6 ;
END
# #
IF PARRC NQ 0
THEN
OMSG(PARMSG[PARRC],0);
# #
END # PARAMETER PROCESSING #
# #
#
STEP 1 INITIALIZE NBT, POA, CET, AT, TNT AND FREETAB
#
CONTROL IFEQ STAT,1; # STATISTICS ON #
#
INITIALIZE STATISTICS VARIABLES FOR DETERMINING AVG FL, AVG NO
OF EMPTY BUFS, AND AVG NO OF EMPTY WORDS
#
OTIME(THETIME); # GET CURRENT SYSTEM TIME #
TIMESTR = RTSECS[0]; # TIME NIP BEGIN EXECUTION #
TIMECFL = TIMESTR; # TIME FOR MEASURING OCFL CALLS #
TIMEGBG = TIMESTR; # TIME FOR MEASURING MGBGCLT CALLS #
CONTROL FI;
ITABS; # SET UP TABLES #
#
STEP 2 INITIALIZE NIP AS A SCP
#
SSCVF[0] = TRUE;
SSCLP[0] = 66;
SSCLK[0] = FALSE;
ISCP; # INITIALIZE NIP AS A SYSTEM CP, READ CHAR#
#
INITIALIZE THE K DISKPLAY
#
IKDIS;
#
ISSUE DAYFILE MESSAGES
#
OMSG(NAMLEV,0); # NIP INITIALIZED, NAM VERSION MSG #
CONTROL IFEQ DEBUG,1 ;
OMSG(DBGNAM,0); # ISSUE DEBUG NAM MESSAGE #
CONTROL FI;
CONTROL IFEQ STAT,1 ;
OMSG(STNAM,0); # ISSUE STAT NAM MESSAGE #
CONTROL FI;
OMSG(NAMREG,0); # NAM REGULATION LEVEL = 0 #
GOTO RJMAIN; # RETURN TO CALLING PROGRAM #
END
TERM