*DECK CSSANO USETEXT TEXTCS USETEXT TEXTSS USETEXT TXTAPSS USETEXT TXTSMCS PROC CSSANO; # TITLE - ACQUIRE NEW OPERATOR. # BEGIN # ** CSSANO - ACQUIRE NEW OPERATOR. * * D.K. ENDO 82/03/09 * * THIS PROCEDURE, GIVEN A HOP/STRT OR A CON/REQ, INITIALIZES THE * APPROPRIATE OCB AND MAKES QUEUE ENTRIES AS NEED FOR THE OPERATOR * CONNECTION. * * ENTRY 1. ENTRIES IN THE PROTOCOL EVENT QUEUE. * * EXIT 1. APPROPRIATE OCB INITIALIZED. * 2. ENTRIES IN THE CONNECTION TRAFFIC QUEUE. * # # **** PROC CSSANO - XREF LIST BEGINS. # XREF BEGIN PROC SSBCBW; # CLEAR BIT IN WORD # PROC SSBSBW; # STORE BIT IN WORD # PROC SSTAQE; # ADD QUEUE ENTRY # END # **** # DEF INTMSG1L # 40 #; # INITIAL NOP MESSAGE LENGTH # DEF INTMSG2L # 50 #; # INITIAL DOP MESSAGE LENGTH # DEF NOP$BIT # 39 #; # NOP BIT POSITION IN AAWC WORD # DEF NTO$BIT # 49 #; # NO TIME OUT BIT POSITION IN AAWC WORD # DEF SHDMSGL # 30 #; # SHUT DOWN MESSAGE LENGTH # ITEM HR$WC I = 4; # HISTORY REQUEST QUEUE ENTRY WORD COUNT # ITEM I; # LOOP INDUCTION VARIABLE # # THE FOLLOWING BASED ARRAY IS USED TO POINT TO THE REPORT BIT MAPS IN THE NPUCB-S # BASED ARRAY FLG$WORD [00:00] S(NPCBSZ$); BEGIN ITEM FW$WORD I(00,00,60); END # THE FOLLOWING TWO ARRAYS DEFINE THE ENTRY AND HEADER OF AN ENTRY MADE TO THE HISTORY REQUEST QUEUE WHEN A HOP/STRT REQUEST COMES IN. # ARRAY HR$ENT [00:01] S(1); BEGIN ITEM HRE$TXT C(00,00,10) = ["HI."]; ITEM HRE$VAL C(01,00,07) = ["HI0"]; ITEM HRE$STYP C(01,42,03) = ["VEB"]; END ARRAY HR$HDR [00:00] S(1); BEGIN ITEM HRH$SPC U(00,00,06) = [ 1 ]; ITEM HRH$APC U(00,06,06) = [ 0 ]; ITEM HRH$CWC U(00,12,06) = [ 1 ]; ITEM HRH$OID U(00,18,12) = [ HOPORD$ ]; ITEM HRH$CV C(00,30,03) = [ "HI0" ]; ITEM HRH$CCC U(00,48,12) = [ 3 ]; END # THE FOLLOWING ARRAYS ARE MESSAGES THAT ARE SENT TO THE NOP WHEN HE/SHE CONNECTS TO CS. # ARRAY INTMSG1 [00:00] S(4); BEGIN ITEM IM1$TXT C(00,00,35) = ["HELLO, YOU ARE NOW AN NPU OPERATOR."]; ITEM IM1$ZBYT U(03,30,30) = [0]; END ARRAY INTMSG2 [00:00] S(5); BEGIN ITEM IM2$TXT C(00,00,41) = ["HELLO, YOU ARE NOW A DIAGNOSTIC OPERATOR."]; ITEM IM2$ZBYT U(04,06,54) = [0]; END ARRAY SHDMSG [00:00] S(3); BEGIN ITEM SD$TXT C(00,00,28) = ["HOST IDLE DOWN IN PROGRESS."]; ITEM SD$ZBYT U(02,48,12) = [0]; END # THE FOLLOWING IS USED TO POINT TO THE APPROPRIATE MESSAGE TO BE SENT TO THE NOP # BASED ARRAY LINTXT [00:00] S(4); BEGIN ITEM LT$TXT C(00,00,40); END CONTROL EJECT; # # # CSSANO CODE BEGINS HERE # # # # * IF THIS SM IS A HOP/STRT, THEN SET THE PAGE LENGTH IN THE HOP-S * OCB THE DEFAULT K-DISPLAY VALUE, MAKE A HISTORY REQUEST QUEUE * ENTRY, SET STATE FOR HOP-S OCB, AND SET THE PROTOCOL CODE OF * THE PROTOCOL RESPONSE TO HOP/STRT/N. SEND THE PROTOCOL RESPONSE. * FOR EACH NPUCB SET THE REPORT FLAG FOR THE HOP. # IF WCB$SMID[0] EQ SMID"HOPSTRT" THEN BEGIN OC$TNAM[HOPORD$] = "HOSTCS"; OC$PL[HOPORD$] = HOPLPL[0] - 1; OC$RPL[HOPORD$] = HOPRPL[0]; OC$ACN[HOPORD$] = HOPORD$; OC$UNAM[HOPORD$] = " "; OC$TYPE[HOPORD$] = OPTYP"HOP"; SSTAQE(P,HR$WC,HR$HDR,HR$ENT); WCB$SMID[1] = SMID"HOPSRTN"; WCB$WC[1] = 2; ABHWORD[1] = 0; ABHADR[1] = HOPORD$; OC$STATE[HOPORD$] = TRUE; SSTAQE(P,WCBUF[1],ABH[1],CSSM[1]); P = LOC(NPU$RFLGS[0]); FOR I=0 STEP 1 UNTIL CSNPCNT-1 DO BEGIN SSBCBW(FLG$WORD[I],HOPORD$) ; END END ELSE # * IF THIS SM IS A CON/REQ, THEN SET TERMINAL NAME, USER NAME AND * PAGE LENGTH OF OCB TO CORRESPONDING FIELDS IN CON/REQ, SET THE * TIME OUT FLAG IN THE OCB ACCORDING THE CTIM BIT IN AAWC WORD. * IF CS SHUTDOWN IS IN PROGRESS, THEN SEND THE INITIAL MESSAGE WITH * THE INPUT ALLOWED FLAG CLEARED AND SEND IDLE DOWN MESSAGE WITH * THE FLAG SET, OTHERWISE JUST SEND THE INITIAL MESSAGE WITH THE * INPUT ALLOWED FLAG SET. SET THE PROTOCOL CODE OF PROTOCOL * RESPONSE TO CON/REQ/H. FOR EACH NPUB CLEAR THE REPORT FLAG FOR * THIS OPERATOR. # BEGIN OC$TNAM[CONACN[0]] = CONTNM[0]; OC$ACN[CONACN[0]] = CONACN[0]; OC$UNAM[CONACN[0]] = CONUSE[0]; OC$PL[CONACN[0]] = CONPL[0]; OC$STATE[CONACN[0]] = TRUE; IF BCONAAWC[0] EQ 1 THEN BEGIN OC$NTO[CONACN[0]] = TRUE; END ELSE BEGIN OC$NTO[CONACN[0]] = FALSE; END IF BCONAAWC[0] EQ 1 THEN BEGIN OC$TYPE[CONACN[0]] = OPTYP"NOP"; END ELSE BEGIN OC$TYPE[CONACN[0]] = OPTYP"DOP"; END WCB$WORD[1] = 0; WCB$SMID[1] = SMID"CONREQN"; WCB$WC[1] = 2; ABHWORD[1] = 0; ABHADR[1] = ABHADR[0]; SSTAQE(P,WCBUF[1],ABH[1],CSSM[1]); IF CSSTATE THEN # IF TRUE, THEN GRADUAL SHUT DOWN # BEGIN WCB$IAF[1] = FALSE; SSTAQE(P,WCBUF[1],ABH[1],LINTXT[0]); WCB$WC[1] = 2 + (SHDMSGL / 10); ABHTLC[1] = SHDMSGL; P = LOC(SHDMSG); END ELSE IF OC$TYPE[CONACN[0]] EQ OPTYP"NOP" THEN BEGIN WCB$SMID[1] = SMID"TTEXT"; WCB$WC[1] = 2 + (INTMSG1L / 10); ABHTLC[1] = INTMSG1L; P = LOC(INTMSG1); END ELSE BEGIN WCB$SMID[1] = SMID"TTEXT"; WCB$WC[1] = 2 + (INTMSG2L / 10); ABHTLC[1] = INTMSG2L; P = LOC(INTMSG2); END WCB$IAF[1] = TRUE; SSTAQE(P,WCBUF[1],ABH[1],LINTXT[0]); P = LOC(NPU$RFLGS[0]); FOR I=0 STEP 1 UNTIL CSNPCNT-1 DO BEGIN SSBCBW( FLG$WORD[I] , ABHADR[0] ); END END RETURN; # **** RETURN **** # END # CSSANO # TERM