*DECK CSTRCT USETEXT TEXTCS USETEXT TXTCTCS USETEXT TXTSMCS USETEXT TXTAPSS USETEXT TXTSUSS PROC CSTRCT; # TITLE CSTRCT - RESET CHARACTERISTIC OF TERMINAL. # BEGIN # CSTRCT # # ** CSTRCT - RESET CHARACTERISTICS OF TERMINAL. * * LIEM THANH NGUYEN 84/12/06. * * CSTRCT RESET CHARACTERISTICS OF TERMINAL FROM THE LINE RECORDS * CONTAINED IN THE NCF DATA QUEUE. * * PROC CSTRCT * * ENTRY THE FIRST DATA ENTRY IN THE NCF DATA QUEUE. * * EXIT THE FIRST DATA QUEUE ENTRY IN THE NCF DATA QUEUE * HAS BEEN DELETED. * A RESET TERMINAL RESPONSE SM'S (NORMAL OR ABNORMAL), * CORRESPONDING TO THE NCF DATA QUEUE ENTRY THAT WAS * PROCESSED, HAS BEEN PLACED IN THE OUTGOING TRAFFIC * QUEUE. * # # **** PROC CSTRCT - XREF LIST. # XREF BEGIN PROC CSTSCD; #SELECT AND CONFIGURE CORRECT DEVICES # PROC CSTITR ; #ISSUE TERMINAL REPONSE # PROC MOVE; #MOVE STORAGE DIRECT ADDRESSING (MACREL) # PROC SSTAQE; #ACCEPT QUEUE ENTRY # PROC SSTRTS; #REMOVE STORAGE ANYWHERE IN TABLE # FUNC SSDCAD U ; # CONVERT ASCII TO DISPLAY CODE CHARACTER # END # **** # ARRAY CNF$NAME S(1) ; BEGIN ITEM CNFNAMU U(0,00,42) ; ITEM CNFNAME C(0,00,07) ; ITEM CNFROOT C(0,00,05) ; ITEM CNFSUF U(0,30,12) ; END ITEM CURDEV; # CURRENT OFFSET FOR DEVICE ENTRY # ITEM CURTERM; # CURRENT OFFSET FOR TERMINAL ENTRY # ITEM I, J, K, NB ; #LOOP INDUCTION VARIABLES # ITEM FOUND B ; ITEM LTES U ; FOUND = FALSE ; # RESET FOUND # # WE BEGIN THE PROCESSING OF A SINGLE NCF DATA QUEUE ENTRY BY # # INITIALIZING A WHOLE BUNCH OF STUFF. # # THE MEMORY MANAGEMENT ROUTINES GUARANTEE ONE ADDITIONAL WORD AT # # THE END OF EACH MANAGED TABLE (ABOVE AND BEYOND THE LENGTH OF THE# # TABLE). SETTING THIS WORD NON-ZERO FOR THE NCF DATA QUEUE # # INSURES THAT THE INNER LOOPS OF THIS ROUTINE AND PROC CSTSCD DO # # NOT ACT UPON STORAGE BEYOND THE END OF THE NCF DATA QUEUE. # NRDEV = 0; # INITIALIZE NUMBER OF DEVICES CONFIGURED # LTES = NDQ$LRSIZE[0] - LRHDRL$; # WORD COUNT OF TRM NTRYS # P = P + NDQ$TCSIZE[0]; # BEGINNING OF LINE REC # ABHWORD[0] = NDQ$WORD[1]; # BREAK OUT CNF/RC/R SM ABH # MOVE (NDQ$TCSIZE[0]-2, NDQ[2], CSSM[0]); # AND SM BODY # # SET UP FIXED FIELDS OF CONFIGURE TERMINAL RESPONSE SM. # ABHWORD[1] = NDQ$WORD[1]; ABHSN[1] = ABHDN[0]; # REVERSE DN AND SN FOR RESPONSE SM # ABHDN[1] = ABHSN[0]; SPMSG0[1] = 0; # START CNF/RC RESPONSE SM BODY # PFCSFC[1] = CNFRCTN; # DEFINED IN TXTSUSS # CNFP[1] = CNFP[0]; # PORT NUMBER. THAT'S IT FOR NOW # # CONVERT 8 BIT ASCII CHARACTER NAME TO DISPLAY CODE NAME # FOR I = 0 STEP 1 UNTIL 6 DO BEGIN B<(I*6),6>CNFNAMU[0] = SSDCAD(BCNFRCNM[0]) ; END P = P + LRHDRL$; # 1ST TERM NTRY IN LINREC# CURTERM = 0; # INITIAL OFFSET FOR TERMINAL ENTRY # FOR J=TE$WC[0] STEP TE$WC[0] WHILE J LQ LTES AND NOT FOUND DO # LOOP TIL END OF LINREC OR TERMINAL MATCH# BEGIN P = P + TEHDRL$ ; # DEVICE ENTRY # CURDEV = 0; # INITIAL OFFSET FOR DEVICE ENTRY # FOR I = DE$WC[0] STEP DE$WC[0] WHILE I LQ TE$WC[0] - TEHDRL$ AND NOT FOUND DO BEGIN # LOOP UNTIL END OF TRM AND DEV NTRY# IF LR$GC[0] EQ 0 THEN BEGIN # NO GROUP # IF CNFNAME[0] EQ DE$NAME[0] THEN FOUND = TRUE ; # FOUND THE RIGHT ENTRY # END # NO GROUP # ELSE BEGIN # THERE IS GROUP # # USE ONLY THE ROOT NAME TO COMPARE TO NAME IN NCF # NB = 0 ; # RESET NON-BLANKS COUNT # FOR K = 0 STEP 6 UNTIL 36 DO BEGIN # COUNTING NON-BLANKS # IF BCNFNAMU[0] NQ O"55" THEN NB = NB + 1 ; # REMEMBER NUMBER OF NONBLANKS# END IF C<0,NB-2>CNFNAMU[0] EQ DE$NAME[0] THEN BEGIN # ROOT IS MATCHING # FOUND = TRUE ; # THIS ENTRY HAS SAME ROOT AND SUFIX # END # ROOT IS MATCHING # END # THERE IS GROUP # IF FOUND THEN BEGIN # READY TO RESPONSE # CSTITR(TRUE) ; # RESET BASED ARRAY POINTERS IN CASE NDQ ENTRY HAS BEEN MOVED # P = P + NDQ$TCSIZE[0]; # LINE REC ARRAY # P = P + LRHDRL$ + CURTERM; P = P + TEHDRL$ + CURDEV; END CURDEV = CURDEV + DE$WC[0]; # OFFSET FOR NEXT DEV ENTRY # P = P + TEHDRL$ + CURDEV; END # LOOP UNTIL THE END OF DEVICES # CURTERM = CURTERM + TE$WC[0]; # OFFSET FOR NEXT TERM ENTRY # P = P + LRHDRL$ + CURTERM; END # GO THROUGH LINE RECORD FOR DEVICE # IF NOT FOUND THEN # NOTHING GOT CONFIGURED # BEGIN # ISSUE CNF/RC/A # ABHTLC[1] = NCNFA; # DEFINED IN TXTSMCS. ABH COMPLETE # PFCSFC[1] = CNFRCTA; # DEFINED IN TXTSUSS. SM COMPLETE # SSTAQE (P, CTEAQL$, ABH[1], CSSM[1]); # QUEUE CNF/TE/A# END SSTRTS (P, 0, NDQ$ESIZE[0]); # DEL 1ST NTRY IN NCF DATA Q# END # CSTRCT # TERM