*DECK NVFISUE
USETEXT TEXTNVF
USETEXT TXTAPSS
PROC NVFISUE;
# TITLE NVFISUE - SET USER ENVIRONMENT. #
BEGIN # NVFISUE #
#
*** NVFISUE - SET USER ENVIRONMENT.
*
* D. G. DEPEW. 82/01/11.
*
* NVFISUE ESTABLISHES THE OPERATING ENVIRONMENT USED BY NVF TO
* CONDUCT DIALOG WITH TERMINAL USERS CONNECTED TO NVF. THAT IS,
* THE HALF-DUPLEX AND TRUNCATE UPLINE DATA MODES ARE SET AND
* CERTAIN USER MESSAGES ARE PREFORMATTED FOR NETWORK OUTPUT.
*
* PROC NVFISUE
*
* ENTRY NONE.
*
* EXIT 1. A LST/HDX SM SPECIFYING THAT ALL CONNECTIONS WILL
* OPERATE IN HALF-DUPLEX MODE HAS BEEN PLACED IN THE
* OUTGOING TRAFFIC QUEUE.
* 2. A DC/TRU SM SPECIFYING THAT OVERSIZED BLOCKS WILL BE
* TRUNCATED ON ALL CONNECTIONS HAS BEEN PLACED IN THE
* OUTGOING TRAFFIC QUEUE.
* 3. A LOCAL COPY OF THE SYSTEM SYSTEM HEADER LINE FROM CMR
* HAS BEEN STORED (COMMON BLOCK/DECK *TMSGNVF*),
* APPROPRIATELY FORMATTED FOR OUTPUTTING TO AN IVT.
* 4. THE CORRECT DISPLAY CODE FOR A COLON, ACCORDING TO THE
* CHARACTER SET OF THE RUNNING SYSTEM, HAS BEEN STORED
* IN THE CORRECT CHARACTER POSITIONS OF ALL USER PROMPT
* MESSAGES (I.E., FAMILY, USER NAME, PASSWORD AND
* APPLICATION PROMPTS).
#
#
**** PROC NVFISUE - XREF LIST.
#
XREF
BEGIN
PROC SSBEBF; # EXTRACT BITFIELD #
PROC SSBSBF; # STORE BITFIELD #
PROC SSTAQE; # ACCEPT QUEUE ENTRY #
FUNC XSFW; # SPACE FILL WORD (MACREL) #
PROC VERSION; # GET SYSTEM TITLE AND VERSION (MACREL) #
END
#
****
#
*CALL TMSGNVF
DEF CSLOC$ #O"67"#; # ADDR OF CHAR SET FLAG IN JOB COMM AREA #
DEF REPLACE$ (PROMPT, WP, BP)
#STOREWD = WP;
STOREBP = BP;
SSBSBF (PROMPT, STOREWD, STOREBP, 6, COLON)#;
ITEM I; # LOOP INDUCTION VARIABLE #
ITEM COLON; # COLON CHAR AND TEMP STORAGE #
ITEM FETCHWD I = 1; # SYSTEM HEADER STARTING FETCH WORD #
ITEM FETCHBP I = 0; # SYSTEM HEADER STARTING FETCH BIT POS #
ITEM STOREWD I = 0; # SYSTEM HEADER STARTING STORE WORD #
ITEM STOREBP I = 6; # SYSTEM HEADER STARTING STORE BIT POS #
BASED ARRAY CHARSET [00:00] S(1);
ITEM CS$64 B(00,00,01); # CHARACTER SET FLAG #
#
* PARAMETER WORD FOR NOS VERSION MACRO.
#
ARRAY VERPAR [00:00] S(1);
BEGIN
ITEM VP$FORM2 B(00,00,01) = [TRUE];
ITEM VP$BC U(00,01,11) = [30]; # 30 BYTES = 6 WORDS #
ITEM VP$SBBP U(00,12,30) = [0]; # SOURCE/REC BYTE POS #
ITEM VP$WADDR U(00,42,18); # RECEIVING ARRAY ADR #
END
CONTROL FASTLOOP;
#
* WE BEGIN BY FETCHING (FROM CMR) AND REFORMATTING THE SYSTEM
* HEADER LINE. THE LINE IS SIX WORDS LONG AND (AS FORMATTED IN
* CMR) CONTAINS IMBEDDED BINARY ZERO CHARACTERS. THE LINE MUST BE
* PREFIXED WITH A NULL (BLANK) FORMAT EFFECTOR AND SUFFIXED WITH A
* UNIT SEPARATOR (ZERO BYTE). ALSO, THE IMBEDDED BINARY ZERO
* CHARACTERS MUST BE CONVERTED TO BLANKS.
#
VP$WADDR[0] = LOC (SYSHDR[1]); # SET ADDR TO RECEIVE HDR #
VERSION (VERPAR[0]); # GET SYSTEM HEADER LINE #
SYS$FE[0] = " ";
FOR I=1 STEP 1 UNTIL 6
DO # RT SHIFT ONE CHAR AND BLANK FILL ZEROES #
BEGIN
SSBEBF (SYSHDR[0], FETCHWD, FETCHBP, 60, COLON);
COLON = XSFW (COLON);
SSBSBF (SYSHDR[0], STOREWD, STOREBP, 60, COLON);
END
SYS$ZB[6] = 0;
#
* NOW REPLACE THE DOLLAR SIGNS WITH COLONS IN THE FIVE USER PROMPTS.
* THE CHARACTER SET FLAG IS IN THE SIGN BIT POSITION OF LOCATION
* 67B OF THE JOBS FIELD LENGTH. SINCE THERE ARE ONLY FIVE
* CHARACTER POSITIONS TO BE STORED, A RATHER SIMPLE TECHNIQUE HAS
* BEEN CHOSEN - THE CHARACTER POSITIONS HAVE BEEN HARD CODED, IN
* COMDECK *TMSGNVF*, AND ARE SIMPLY STORED VIA PROC *SSBSBF*. A
* PARAMETERIZED DEF HAS BEEN DEFINED TO SAVE CODING.
#
P<CHARSET> = CSLOC$;
IF CS$64[0]
THEN # 64 CHARACTER SET #
COLON = 0;
ELSE # 63 CHARACTER SET #
COLON = O"63";
REPLACE$ (APPBUF[0], APPWP$, APPBP$); # APPLICATION: #
REPLACE$ (FAMBUF[0], FAMWP$, FAMBP$); # FAMILY: #
REPLACE$ (PIDBUF[0], PIDWP$, PIDBP$); # PERSONAL ID: #
REPLACE$ (PWRDBLK[0], PASWP$, PASBP$); # PASSWORD: #
REPLACE$ (USRBUF[0], USRWP$, USRBP$); # USER NAME: #
#
* FINALLY, ISSUE THE LST/HDX AND DC/TRU SUPERVISORY MESSAGES. THE
* MESSAGES CAN HAVE IDENTICAL ABH'S. SET UP ABH FIRST, THEN SM
* BODIES, THEN ISSUE MESSAGES.
#
ABHWORD[1] = 0; # SET UP ABH WORD #
ABHABT[1] = APPCMD;
ABHACT[1] = CT60TRANS;
ABHTLC[1] = 1;
SPMSG0[1] = 0; # SET UP AND ISSUE DC/TRU SM #
PFCSFC[1] = DCTRU;
SSTAQE (P<OTQ>, 3, ABH[1], APSM[1]);
PFCSFC[1] = LSTHDX; # SET UP AND ISSUE LST/HDX SM #
LSTDIS[1] = TRUE; # INPUT INITIALLY DISABLED FOR ALL ACN'S #
SSTAQE (P<OTQ>, 3, ABH[1], APSM[1]);
END # NVFISUE #
TERM