*DECK     TXTCTCS 
PROC TXTCTCS; 
# TITLE TXTCTCS - TERMINAL CONFIGURATION SYMPL TEXT FOR CS.  #
  
      BEGIN  # TXTCTCS #
# 
***   TXTCTCS - TERMINAL CONFIGURATION SYMPL TEXT FOR CS. 
* 
*     D. G. DEPEW.           81/08/18.
* 
*     THIS PROC GENERATES A SYMPL TEXT FOR COMPILING THE CS TERMINAL
*     CONFIGURATION ROUTINES.  IT CONTAINS DEFINITIONS OF SYMBOLS,
*     ITEMS, ARRAYS AND COMMON BLOCKS USED FOR TERMINAL CONFIGURATION 
*     PROCESSING AND NCF I/O. 
* 
*     PROC TXTCTCS
# 
  
      CONTROL STEXT;
  
      DEF LRHDRL$    #3#;    #LINE RECORD HEADER LENGTH                #
      DEF TEHDRL$    #2#;    #TERMINAL ENTRY HEADER LENGTH             #
      DEF DEHDRL$    #2#;    #DEVICE ENTRY HEADER LENGTH               #
      DEF CTENQL$    #5#;    #CNF/TE/N LENGTH IN OUTGOING TRAFFIC Q    #
      DEF CTEAQL$    #3#;    #CNF/TE/A LENGTH IN OUTGOING TRAFFIC Q    #
      DEF RLIMAX$    #9#;    #RLI UPPER BOUND-- ALLOWS 10 LINE RECORDS #
      DEF RLMAX$    #10#;    #READLIST UPPER BOUND-- 10 RECS + ZERO WD #
      DEF NFSIZ$     #7#;    #FET TOTAL SIZE-- L FIELD = NFSIZ$ - 5    #
      DEF NBLIM$   #256#;    #CIO BUFFER UPPER BOUND = 4 PRUS + 1 WORD #
  
  
      COMMON NCFIO; 
      BEGIN  # NCFIO #
  
# 
***   LINEREC - NCF LINE RECORD LINE PORTION FORMAT.
* 
*     LINEREC IS A TEMPLATE FOR THAT PART OF A LINE RECORD (THE FIRST 
*     THREE WORDS) THAT CONTAINS LINE RELATED INFORMATION.
* 
*     THE FOLLOWING IS THE FORMAT OF THE LINE INFORMATION PORTION OF
*     THE LINE RECORD.  AGAIN, THIS PORTION IS THREE WORDS LONG.
* 
*                 1         2         3         4         5 
*       012345678901234567890123456789012345678901234567890123456789
*TEXT 
*T,42/ID,18/
*T,40/ ,8/GC,12/WC
*T,42/NAME,1/A,1/ ,8/NID,8/PORT 
*ENDTEXT
# 
  
      BASED ARRAY LINEREC [00:00] S(1); 
        BEGIN 
# 
****
# 
        ITEM LR$ID      C(00,00,07);  #LINE RECORD ID = *LNREC  *      #
        ITEM LR$GC      U(01,40,08);  #GROUP COUNT                     #
        ITEM LR$WC      U(01,48,12);  #LINE REC LENGTH EXCLUDING ID WD #
        ITEM LR$NAME    C(02,00,07);  #LINE OR GROUP NAME              #
        ITEM LR$AUTO    U(02,42,01);  #AUTOREC FLAG - 1=AUTO, 0=FIXED  #
        ITEM LR$NID     U(02,44,08);  #OWNING NPU NODE ID              #
        ITEM LR$PORT    U(02,52,08);  #PORT NUMBER                     #
# 
****
# 
        END 
  
  
  
  
# 
***   TRMINFO - NCF LINE RECORD TERMINAL PORTION FORMAT.
* 
*     TRMINFO IS A TEMPLATE FOR THOSE PARTS OF A LINE RECORD THAT 
*     CONTAIN TERMINAL RELATED INFORMATION.  SEE NDL REFERENCE MANUAL.
* 
*     THE FOLLOWING IS THE FORMAT OF THE TERMINAL INFORMATION PORTION 
*     OF THE LINE RECORD.  EACH ENTRY IS TWO WORD LONG. 
* 
*                 1         2         3         4         5 
*       012345678901234567890123456789012345678901234567890123456789
*TEXT 
*T,18/ID,30/ ,12/WC 
*T,4/TIP,4/STP,4/TSD,4/CST,8/A1,6/TC,30/
*ENDTEXT
# 
  
      BASED ARRAY TRMINFO [00:00] S(1); 
        BEGIN 
# 
****
# 
        ITEM TE$ID      C(00,00,03);  #TERMINAL INFO ID = *TRM*        #
        ITEM TE$WC      U(00,48,12);  #TERM INFO LENGTH INCL DEVICES   #
        ITEM TE$TIP     U(01,00,04);  #TIP TYPE                        #
        ITEM TE$STIP    U(01,04,04);  #SUB-TIP TYPE                    #
        ITEM TE$TSPD    U(01,08,04);  #TERMINAL SPEED                  #
        ITEM TE$CSET    U(01,12,04);  #CODE SET                        #
        ITEM TE$A1      U(01,16,08);  #ADDRESS ONE                     #
        ITEM TE$TC      U(01,24,06);  #TERMINAL CLASS                  #
# 
****
# 
        END 
  
  
  
  
# 
*** 
*E
***   DEVNTRY - NCF LINE RECORD DEVICE PORTION FORMAT.
* 
*     DEVNTRY IS A TEMPLATE FOR THOSE PARTS OF A LINE RECORD THAT 
*     CONTAIN DEVICE RELATED INFORMATION.  SEE NDL REFERENCE MANUAL.
* 
*     THE FOLLOWING IS THE FORMAT OF THE DEVICE INFORMATION PORTION OF
*     THE LINE RECORD.  THIS IS A VARIABLE LENGTH ENTRY.  THE LENGTH
*     DEPENDS ON THE NUMBER OF FN/FV PAIRS IN THE ENTRY.
* 
*               1         2         3         4         5 
*       012345678901234567890123456789012345678901234567890123456789
*TEXT 
*T,WORD,18/ID,30/ ,12/WC
*T,42/NAME,10/ ,8/FNFV
*T,8/A2,8/DT,6/ ,1/C,1/I,36/FNFV-PAIRS--->
*T,60/FNFV-PAIRS--->
*ENDTEXT
# 
  
      BASED ARRAY DEVNTRY [00:00] S(1); 
        BEGIN 
# 
****
# 
        ITEM DE$WORD    U(00,00,60);  #WHOLE WORD FOR MOVING FNFV PAIRS#
        ITEM DE$ID      C(00,00,03);  #DEVICE ENTRY ID = *DEV*         #
        ITEM DE$WC      U(00,48,12);  #DEVICE ENTRY LENGTH INCL FN/FV-S#
        ITEM DE$NAME    C(01,00,07);  #DEVICE/TERMINAL NAME            #
        ITEM DE$SUFFIX  U(01,30,12);  #PORT SUFFIX FOR GROUPED LINES   #
        ITEM DE$FNFV    U(01,52,08);  #NUMBER OF FN/FV PAIRS           #
        ITEM DE$A2DT    U(02,00,16);  #A2/DT COMBINED                  #
        ITEM DE$A2      U(02,00,08);  #ADDRESS TWO                     #
        ITEM DE$DT      U(02,08,08);  #DEVICE TYPE                     #
        ITEM DE$CONFIG  B(02,22,01);  #DEVICE ALREADY CONFIGURED FLAG  #
        ITEM DE$ISTAT   U(02,23,01);  #INITIAL STATUS OF DEVICE        #
# 
****
# 
        END 
  
      ITEM NRDEV;            #NUM DEVS ACTUALLY CONFIGURED PER CNF/TE/R#
  
  
  
  
# 
*** 
*E
***   READLIST AND RLI - NCF READ LIST AND READ LIST INDEX. 
* 
*     RLI CONTAINS THE RELATIVE PRU ADDRESSES OF ALL LINE RECORDS 
*     CURRENTLY BEING READ AND POINTERS (THE LINE RECORD INDEX ENTRY
*     ORDINALS) BACK TO THE CORRESPONDING NCF READ REQUEST QUEUE
*     ENTRIES.  THE BACK POINTERS ARE REQUIRED BECAUSE RLI IS SORTED
*     INTO ASCENDING RELATIVE PRU ADDRESS ORDER (FOR MORE EFFICIENT I/O)
*     PRIOR TO ISSUEING THE READLS FUNCTION.
* 
*     READLIST IS THE ACTUAL READ LIST USED BY THE CIO READLS FUNCTION. 
*     IT CONTAINS ONLY THE RELATIVE PRU ADDRESSES IN SORTED ORDER.  IT
*     IS REQUIRED BECAUSE NOS WILL NOT NECESSARILY PRESERVE THE LINE
*     RECORD INDEX ENTRY ORDINALS.
# 
  
      ARRAY RLI [0:RLIMAX$] S(1); 
        BEGIN 
        ITEM RLI$RPA    U(00,00,30);  #RELATIVE PRU ADDRESS            #
        ITEM RLI$LRIORD U(00,30,30);  #LINE RECORD INDEX ENTRY ORDINAL #
        END 
  
      ARRAY READLIST [0:RLMAX$] S(1); 
        ITEM RL$RPA     U(00,00,60);  #RELATIVE PRU ADDRESS            #
  
      ITEM RLCOUNT;          #NUMBER OF LINE RECS TO BE READ THIS TIME #
      ITEM RLIORD;           #RLI NTRY CORRES TO LINREC BEING DEBLOCKED#
  
  
  
  
# 
***   NCFFET AND NCFBUF - FET AND CIRCULAR BUFFER FOR THE NCF.
* 
*     THE NCF FET AND CIRCULAR BUFFER ARE DEFINED IN A GLOBAL LABELLED
*     COMMON AREA BECAUSE THE NCF IS USED (READ) BY BOTH THE CONFIGURE
*     TERMINAL ROUTINES AND BY THE INITIALIZATION ROUTINES.  THESE
*     ARRAYS ARE COMPILED INTO A TEXT.  HENCE, ALL PRESETTING MUST BE 
*     DONE AT INITIALIZATION TIME.
# 
  
      ARRAY NCFFET [00:00] S(NFSIZ$); 
        BEGIN 
        ITEM NF$WORD    U(00,00,60);  #FIRST WORD OF FET               #
        ITEM NF$LFN     C(00,00,03);  #FILE NAME--WILL BE *NCF*        #
        ITEM NF$ZERO    U(00,18,24);  #                                #
        ITEM NF$LNAT    U(00,42,08);  #COMB LEVEL NR AND ABN TERM CODE #
        ITEM NF$CODE    U(00,50,10);  #CIO FUNCTION CODE               #
        ITEM NF$CBIT    B(00,59,01);  #I/O COMPLETE BIT                #
        ITEM NF$WORD1   U(01,00,60);  #WORD ONE OF FET                 #
        ITEM NF$R       B(01,12,01);  #RANDOM ACCESS FLAG              #
        ITEM NF$L       U(01,36,06);  #FET LENGTH IN EXCESS OF 5 WORDS #
        ITEM NF$FIRST   U(01,42,18);  #ADDRESS OF FIRST WORD OF BUFFER #
        ITEM NF$IN      U(02,00,60);  #NEXT DATA IN POINTER            #
        ITEM NF$OUT     U(03,00,60);  #NEXT DATA OUT POINTER           #
        ITEM NF$WORD4   U(04,00,60);  #WORD FOUR OF FET                #
        ITEM NF$LIMIT   U(04,42,18);  #LAST WORD ADDRESS +1 OF BUFFER  #
        ITEM NF$LA      U(05,00,60);  #LIST ADDRESS(STORED AS WHOLE WD)#
        ITEM NF$WORD6   U(06,00,60);  #WORD SIX OF FET                 #
        ITEM NF$RR      U(06,31,29);  #RANDOM REQUEST RELATIVE PRU ADDR#
        END 
  
      ARRAY NCFBUF [00:NBLIM$] S(1);
        ITEM NB$WORD    U(00,00,60);  #WHOLE WORD IS ALL THAT IS NEEDED#
  
      END  # NCFIO #
  
      END  # TXTCTCS #
  
      TERM
