Table of Contents

IAFEX

Table Of Contents

  • [00021] IAF EXECUTIVE INITIALIZATION.
  • [00176] INTERNAL DOCUMENTATION.
  • [00252] VDRL - DRIVER STATUS WORD TABLE.
  • [00415] ERROR MESSAGES.
  • [00641] DEFINITION COMMON DECKS.
  • [00663] ASSEMBLY CONSTANTS.
  • [00707] FETS AND DATA STORAGE.
  • [00734] MAIN ROUTINE.
  • [00736] INI - IAFEX INITIALIZATION.
  • [00912] SUBROUTINES.
  • [00914] ABM - ALLOCATE BUFFER MEMORY (POTS).
  • [01052] ABT - INITIALIZATION ABORT.
  • [01076] ADS - ALLOCATE DRIVER STACKS.
  • [01206] AMS - ALLOCATE NETWORK MESSAGE STATUS TABLE.
  • [01243] ANA - ALLOCATE NETWORK ACTIVITY TABLE.
  • [01279] ART - ALLOCATE REENTRY TABLE.
  • [01307] ATN - ALLOCATE TERMINAL NAME TABLE.
  • [01334] ATT - ALLOCATE TERMINAL TABLES.
  • [01378] CAM - CLEAR ALLOCATABLE MEMORY.
  • [01405] CDR - CALL DRIVER.
  • [01453] CIC - CRACK *IAFEX* COMMAND.
  • [01476] CPA - CLEAR POINTER AREAS.
  • [01522] PMP - PRESET MISCELLANEOUS POINTERS.
  • [01598] SAD - SET INSTRUCTION ADDRESSES.
  • [01657] SPC - SET PROCESSOR CALLS.
  • [01683] STD - START DRIVERS.
  • [01713] WDP - WAIT DRIVER PRESET COMPLETE.
  • [01763] COMMON DECKS.
  • [01781] INITIALIZATION TABLES AND BUFFERS.
  • [01783] TICP - TABLE OF *IAFEX* COMMAND PARAMETERS.
  • [01792] FBUF - ALL-PURPOSE CIO CIRCULAR BUFFER.
  • [01798] TINS - EXECUTIVE OVERLAY INSTRUCTION MODIFICATION TABLE.
  • [01805] TINS2 - IAFEX4 INSTRUCTION MODIFICATION TABLE.
  • [01853] COMMND - THIS MACRO GENERATES THE ENTRY ADDRESSES AND A TAG
  • [01954] INMOD - THIS MACRO IN CONJUNCTION WITH THE FOLLOWING OPDEF,S
  • [02255] USECMN - THIS MACRO GENERATES THE TABLE ENTRIES AND THE
  • [02364] GTM - GENERATE IAFEX MESSAGE.
  • [02424] IFMUX - MULTIPLEXER TERMINAL CONDITIONAL JUMP.
  • [02442] IFNET - NETWORK TERMINAL CONDITIONAL JUMP.
  • [02460] MSG - GENERATE IAFEX MESSAGE.
  • [02478] SMA - SET IAFEX MESSAGE ADDRESS.
  • [02492] TTADD - THIS MACRO IS USER FOR GENERATING TERMINAL
  • [02518] PARAM - CONSTRUCT PARAMETER BLOCK FOR EJT SYSTEM REQUEST.
  • [02725] TQST - TABLE OF QUEUES.
  • [02788] SUB-SYSTEM CONTROL TABLES.
  • [02790] JCCT - JOB COMPLETION MESSAGES AND INPUT DELAY TABLE.
  • [02810] PCOM - TABLE OF MINIMUM MASKS AND ERROR PROCESSORS FOR
  • [02823] RDYA - TABLE OF READY MESSAGES.
  • [02833] STAA - TABLE OF SUB-SYSTEM NAMES.
  • [02849] TTTT - TABLE OF TERMINAL TYPES FROM MODVAL.
  • [02860] TTIS - TABLE OF INITIAL SUBSYSTEMS
  • [02872] MAIN CONTROL LOOP.
  • [02897] RPV - REPRIEVE PROCESSING.
  • [02919] CONTROL SUBROUTINES.
  • [02921] CSS - CHECK SCP STATUS.
  • [03030] EPP - ENTER PPU REQUESTS.
  • [03065] URT - UPDATE RUNNING TIME.
  • [03089] STR - PROCESS SYSTEM IAFEX REQUESTS.
  • [03135] TSTR - IAFEX *TSEM* SYSTEM COMMAND PROCESSING TABLE.
  • [03156] ADI - ASSIGN DIRECT INPUT.
  • [03249] APS - APPLICATION SWITCH.
  • [03294] ASO - ASSIGN OUTPUT.
  • [03359] CDT - CLEAR TERMINAL TABLE BIT.
  • [03372] CRR - CONNECTION REQUEST REPLY
  • [03392] CSM - CONNECT TO SCREEN MANAGEMENT FACILITY.
  • [03408] DRT - DROP POTS.
  • [03422] DSD - *DSD* DIAL AND WARN MESSAGES.
  • [03489] ITP - INITIATE TWO PORT MUX DRIVER.
  • [03537] PTY - SET TERMINAL PARITY.
  • [03558] RDJ - RECOVER DETACHED JOB.
  • [03907] REP - RECOVERY ERROR PROCESSOR.
  • [03936] SBS - SET SUBSYSTEM.
  • [03960] SCS - SET CHARACTER SET MODE.
  • [04015] SDT - SET TERMINAL TABLE BIT.
  • [04043] SJS - SET JOB STATUS MESSAGE FOR *ENQUIRE* COMMAND.
  • [04070] CHECK SALVARE FILE.
  • [04071] DRI - PROCESS DRIVER REQUESTS.
  • [04073] DRI - FINDS ALL DRIVER CIRCULAR STACK REQUESTS AND BEGINS
  • [04163] TDRI - COMMAND PROCESSING TABLE FOR DRIVER(S) CIRCULAR.
  • [04188] CLI - COMMAND LINE OF INPUT RECEIVED.
  • [04272] DIN - PROCESS USER DIALED IN.
  • [04335] DTJ - DETACH JOB.
  • [04521] TDJP - TABLE OF DETACH PROCESSORS.
  • [04534] DLO - PROCESSES DATA LOST CONDITION.
  • [04570] DRP - DROPS A POT THAT IS NO LONGER NEEDED.
  • [04586] ETX - PROCESS TEXT MODE EXIT.
  • [04646] FLO - FORCED LOGOUT, *0004* CONTROL BYTE.
  • [04732] HUP - PROCESSES THE COMMAND THAT SAYS A USER HAS HUNG UP.
  • [04798] LPT - LINKS A NEW POT TO THE CURRENT CHAIN.
  • [04811] PUB - PROCESS USER BREAKS.
  • [04997] RES - REQUEST NEXT ASSIGNMENT.
  • [05186] RIN - RELEASE SOURCE INPUT POTS.
  • [05301] SAI - SET AUTO INPUT MODE.
  • [05314] TOT - TIME OUT TERMINAL.
  • [05635] TCOM - TELETYPE USER,S VALID COMMAND TABLE.
  • [06860] ACC - SET *ACCESS* SUBSYSTEM.
  • [06879] AUT - INITIALIZES FOR PROCESSING OF AUTO LINE NUMBERS.
  • [07223] BAT - REQUESTS A COMMAND FROM THE USER AND THEN ISSUES
  • [07264] BIN - SETS BINARY INPUT.
  • [07319] BRF - SET *BRIEF* MODE FLAG.
  • [07332] DIA - ENABLES PRIVILEGED USER TO SEND MESSAGE TO
  • [07419] EDI - INITIATE TEXT EDITOR.
  • [07488] FDP - SETS TERMINAL OPERATION TO FULL DUPLEX.
  • [07496] HDP - SETS TERMINAL OPERATION TO HALF DUPLEX.
  • [07504] IED - CALL *IEDIT* TO PROCESS IN-LINE EDITING COMMAND.
  • [07668] LAN - SETS TYPE OF SYSTEM IN TERMINAL TABLE.
  • [07707] LEN - DETERMINES THE LENGTH OF A USERS LOCAL FILE.
  • [07738] LIS - THIS COMMAND INITIATES THE SORTING IF NECESSARY AND
  • [07844] NOR - SET TERMINAL *NORMAL* MODE.
  • [07867] NOS - CLEARS SORT FLAG.
  • [07878] PAC - PACK FILE.
  • [07916] PARITY - SETS TERMINAL PARITY.
  • [07937] PFC - PROCESS PRIMARY FILE COMMAND.
  • [08054] RER - PROCESS RESEQUENCING OF PRIMARY FILE.
  • [08133] ROT - SETS RUBOUT COUNT.
  • [08164] RPF - RETRIEVE PERMANENT FILE.
  • [08178] RUN - INITIATES THE RUNNING OF A USERS JOB.
  • [08465] SAV - SAVE, REPLACE, OR PURGE FILE.
  • [08486] SOF - SETS SORT FLAG.
  • [08513] STA - DETERMINES THE CURRENT JOB STATUS.
  • [08604] STO - STOPS COMPUTATION ON A USER,S JOB.
  • [08622] SUB - PROCESS DEFAULT ON SUBMIT.
  • [08657] TAP - SETS TAPE MODE OPERATION FLAG.
  • [08668] TER - SETS TERMINAL TYPE.
  • [08696] TIM - PROCESS TIMEOUT LOGOFF COMMAND.
  • [08707] TXT - SETS TEXT MODE OPERATION FLAG.
  • [08731] UNU - USER NAME SEARCH.
  • [08801] XEQ - EXECUTE BATCH COMMAND.
  • [08814] PCM - REENTRANT COMMAND PROCESSING ROUTINES.
  • [08816] BJB - BEGIN JOB.
  • [08985] TNOI - TABLE OF NEXT OPERATION INDICES.
  • [08998] CDA - ISSUE *COMMAND ACTIVE* DIAGNOSTIC.
  • [09008] CJA - CLEAR JOB ACTIVITY.
  • [09068] FTP - FINISH TIMEOUT PROCESSING.
  • [09143] IEX - ISSUE EXECUTE ONLY MESSAGE.
  • [09151] IGN - IGNORE QUEUE ENTRY.
  • [09168] IPF - ISSUE NO PRIMARY FILE NAME.
  • [09176] IPL - ISSUES MESSAGE *INCORRECT PARAMETER.*
  • [09187] PBS - PROCESS COMMAND IN SYSTEM.
  • [09214] RDY - ISSUES READY MESSAGE AND RETURNS TO PCS
  • [09235] PCS - PROCESS QUEUE ENTRY.
  • [09250] PCS5 - EXIT TO ASSIGN MESSAGE.
  • [09268] PCS6 - EXIT TO ASSIGN MESSAGE.
  • [09281] PCS1 - EXIT TO MAKE QUEUE ENTRY.
  • [09320] PMQ - PROCESS MONITOR WAIT QUEUE.
  • [09321] PMQ - PROCESS MONITOR WAIT QUEUE.
  • [09409] PPU - PROCESSES ALL *IAFEX* REQUESTS THAT REQUIRE A PPU
  • [09575] RPC - REFILL POT CHAINS.
  • [09647] SPR - EVALUATE AND ADJUST FIELD LENGTH.
  • [09844] TDQ - PROCESS TIME DELAY QUEUE.
  • [09889] TSR - CHECK FOR COMPLETION AND INITIATE NEXT OPERATION.
  • [09891] TSR - PROCESS WAIT-COMPLETION QUEUE.
  • [10006] TRRT - TABLE OF REENTRY ROUTINES PARAMETERS.
  • [10063] TSR - SUBROUTINES.
  • [10073] DCR - DRIVER COMMAND REQUESTS
  • [10152] IAM - ISSUE TERMINAL ACCOUNTING MESSAGE.
  • [10277] ICH - MAKES AN INPUT TO PRIMARY FILE *1TO* REQUEST.
  • [10312] INP - PROCESS INPUT DATA FOR A RUNNING PROGRAM.
  • [10349] ITA - ENTER *1TA* REQUEST.
  • [10411] ITO - MAKES AN OUTPUT REQUEST *1TO* ENTRY.
  • [10497] LIN - PROCESS LOG IN.
  • [10854] RDC - READ TERMINAL TABLE WORD *VDCT*.
  • [10882] URL - PROCESS USER RESOURCE LIMITS EXCEEDED.
  • [11052] GENERAL SUBROUTINES.
  • [11063] ABT - THIS ROUTINE IS ENTERED WHEN IAFEX DETECTS
  • [11122] ASM - ASSIGN MESSAGE TO TERMINAL.
  • [11205] AUU - ABORT UNIDENTIFIED OR RECONNECTING UCP.
  • [11231] BRQ - BUILD REQUEST QUEUE.
  • [11344] CAM - CLEAR AUTO MODE.
  • [11377] CBL - CHECK BREAK IN PROGRESS AND LOGOUT FLAGS.
  • [11413] CCM - COMMAND CRACKER.
  • [11697] TSCT - TABLE OF SPECIAL CHARACTER TRANSLATIONS.
  • [11720] PBUF - PARAMETER BUFFER.
  • [11743] TBUF - NETWORK DATA TRANSLATION BUFFER.
  • [11760] GENERAL SUBROUTINES.
  • [11762] CDP - CLEAR DETACH IN PROGRESS.
  • [11778] CDS - CHECK DRIVER STACK STATUS.
  • [11820] CFC - COUNT NUMBER OF CHARACTERS.
  • [11846] CFL - CHECK IF MORE FIELD LENGTH NEEDED (POTS IN SHORT
  • [11878] CFX - COPY FILE EXTERNALLY.
  • [11946] CLE - CLEANS UP TERMINAL TABLE AFTER A USER LOGS OFF.
  • [12003] CNT - CANCEL TYPEAHEAD.
  • [12049] COP - COPIES THE CONTENTS OF POT(S) TO OTHER POT(S).
  • [12106] CTM - CALL TWO PORT MUX DRIVER.
  • [12139] CTP - COPY DATA INTO POTS.
  • [12216] DAP - DROP DRIVER REQUESTS AND POTS.
  • [12241] DIP - DROP INPUT POT CHAIN.
  • [12264] DJS - DETERMINE JOB STATUS.
  • [12281] DLP - DUMP LAST POT OF INPUT TO PRIMARY FILE.
  • [12364] DMP - DUMP SOURCE INPUT.
  • [12457] DPT - DROP POT.
  • [12539] DQO - DROP QUEUED OUTPUT.
  • [12579] DQP - DROP QUEUE ENTRY POTS.
  • [12609] DSH - SHUT DOWN DRIVER QUEUE STACK.
  • [12721] DVP - DROP *VROT* POT CHAIN.
  • [12746] EDR - ENTER DRIVER REQUEST.
  • [12776] ENP - ENTER POT ENTERS TWO WORDS IN A POT CHAIN AND UPDATES
  • [12824] EUC - END UCP CONNECTION.
  • [12845] FMF - FORMAT MODES FIELD.
  • [12885] FPQ - FILL POT QUEUE.
  • [13016] FSM - FORMAT STATUS MESSAGE.
  • [13119] GFN - GET FILE NAME.
  • [13141] GOP - GET ONE POT.
  • [13161] GPC - GET POT CHAIN.
  • [13232] GPL - GET POT LINK.
  • [13274] GQE - GET QUEUE ENTRY FROM QUEUE.
  • [13369] GRI - GATHER RECOVERY INFORMATION.
  • [13438] GRT - GET ENTRY FROM TABLE.
  • [13463] GTA - GET TERMINAL TABLE ADDRESS.
  • [13498] GZP - GET ZEROED POT.
  • [13534] IDM - ISSUE DAYFILE MESSAGE.
  • [13561] IIR - ISSUE INPUT REQUEST.
  • [13602] INO - ISSUE NULL OUTPUT.
  • [13678] LTT - LOCATE TERMINAL TYPE.
  • [13706] MDA - MOVE DATA.
  • [13740] MQE - MAKE QUEUE ENTRY.
  • [13849] MVA - MOVE MESSAGE INTO POTS.
  • [13927] O6S - CONVERT 6 DIGITS TO OCTAL DISPLAY CODE WITH TRAILING
  • [13969] PCB - PACKS A COMMAND BUFFER ONE PARAMETER AT A TIME.
  • [14031] PKW - PACK WORD.
  • [14060] RCM - RESET CHARACTER MODE.
  • [14079] PLO - PROCESS LIST OPTIONS.
  • [14202] PMR - PROCESS MONITOR REQUEST.
  • [14286] PPB - PRESET PARAMETER BLOCK.
  • [14325] RPL - RESET POT LINK.
  • [14365] RPT - RESERVE POT(S).
  • [14457] RQI - REQUEST INPUT.
  • [14483] RST - RESTART SUSPENDED JOB.
  • [14515] SFC - SEND SFCALL.
  • [14548] SLF - SET LOGOUT FLAG.
  • [14566] SRC - SET RUN COMPLETE MESSAGE FLAG.
  • [14582] SRR - SET READ DATA AND REENTRY.
  • [14701] SSP - RESET PARAMETERS FROM STACK ENTRY.
  • [14734] SSS - SET SSP PARAMETERS.
  • [14772] TPF - TEST PRIMARY FILE NAME.
  • [14793] UCP - UPDATE CONVERTED POINTER WORD.
  • [14835] UEC - UNEXPECTED ERROR CODE PROCESSOR.
  • [14859] UQS - UPDATE QUEUE STACK.
  • [14946] SMFIF - SCREEN MANAGEMENT FACILITY INTERFACE.
  • [15258] SMFIF - CSM - CONNECT TO SCREEN MANAGEMENT FACILITY.
  • [15260] CSM - CONNECT TO SCREEN MANAGEMENT.
  • [15271] SMFIF - DSM - DISCONNECT SCREEN MANAGEMENT FACILITY.
  • [15273] DSM - DISCONNECT FROM SCREEN MANAGEMENT.
  • [15284] SMFIF - PDR - PROCESS DRIVER REQUESTS.
  • [15286] PDR - PROCESS DRIVER REQUESTS.
  • [15334] SMFIF - STATE/EVENT HANDLERS.
  • [15348] ESE - EXECUTE STATE/EVENT HANDLER.
  • [15370] ADT - SMFEX ACKNOWLEDGED DETACH.
  • [15385] ADR - ABORT FOR BAD DRIVER REQUEST.
  • [15397] AHU - SMFEX ACKNOWLEDGED HUNG-UP-PHONE.
  • [15412] AIR - ACKNOWLEDGE INTERRUPT AND REASSIGN POT.
  • [15434] AMS - ASSIGN MESSAGE.
  • [15473] ASO - ASSIGN SMFEX OUTPUT TO TERMINAL.
  • [15491] ATL - ABORT FOR BAD TLX TSEM.
  • [15503] ATO - SMFEX ACKNOWLEDGED TIME-OUT LOGOFF.
  • [15521] DBI - ASK DRIVER TO BEGIN INPUT.
  • [15549] IES - INVALID EVENT SEQUENCE.
  • [15562] NSC - NOTIFY SMFEX OF CONNECTION REQUEST BY TLX.
  • [15587] NSH - NOTIFY SMFEX PHONE HUNG UP.
  • [15609] NSI - NOTIFY SMFEX OF INTERRUPT FROM TERMINAL.
  • [15630] PCL - PROCESS COMMAND LINE FROM TERMINAL.
  • [15656] RDR - RETURN DRIVER REQUEST TO *PCS* PROCESSING.
  • [15666] SMFIF - SUBROUTINES.
  • [15667] ADQ - ADD REQUEST TO DRIVER QUEUE.
  • [15719] ASE - ADVANCE STATE/EVENT TABLES.
  • [15757] GMQ - GET MESSAGE FROM SEND-TO-SMFEX QUEUE.
  • [15786] ISM - IDLE SCREEN MANAGEMENT FACILITY.
  • [15813] QMS - QUEUE MESSAGE TO SEND TO SMFEX.
  • [15854] RDB - RECORD DEBUG BUFFER MESSAGE.
  • [15895] RMS - RECEIVE MESSAGE FROM SMFEX.
  • [15945] SID - SMFEX DROPOUT DETECTED.
  • [16016] SMS - SEND MESSAGE TO SMFEX.
  • [16169] PRS - PRESET.
  • [16218] MAIN PROCESSOR.
  • [16221] EXI - NETWORK IAF EXIT PROCESSOR.
  • [16263] SUBROUTINES.
  • [16265] SYS= - PROCESS SYSTEM REQUEST.
  • [16329] TER - MAIN PROCESSOR.
  • [16415] SUBROUTINES.
  • [16417] CKP - CHECK POINTER WORD.
  • [16443] DCV - CONVERT DATA.
  • [16498] ERR - ABORT,S ANY RECOVERY ATTEMPT.
  • [16509] GRI - GATHER RECOVERY INFORMATION.
  • [16573] IER - ISSUE EJT SYSTEM REQUEST.
  • [16657] LOG - LOG OFF ALL ACTIVE USERS.
  • [16735] PPB - PRESET PARAMETER BLOCK.
  • [16783] STA - ISSUES *IAFEX* STATISTICS.
  • [16986] COMMON DECKS.
  • [17125] LOCAL DEFINITIONS.
  • [17146] EXT - DISABLE NETWORK CALL MACRO *EXT* PSEUDO-OP.
  • [17156] MSGHDR - GENERATE MESSAGE HEADER.
  • [17178] NETLINK - GENERATE NETWORK LINKAGE.
  • [17206] COMMON STORAGE.
  • [17526] NDR - NETWORK DRIVER MAIN CONTROL.
  • [17684] MGR - TERMINAL MANAGER.
  • [17841] NSQ - PROCESS NULL SUPERVISORY MESSAGE QUEUE.
  • [17910] RDM - RECEIVED DATA MANAGER.
  • [18075] SHD - NETWORK SHUTDOWN PROCESSOR.
  • [18317] SMP - SUPERVISORY MESSAGE PROCESSOR.
  • [18386] SMPE - SUPERVISORY MESSAGE ERROR EXIT.
  • [18392] TSMP - SMP PRIMARY FUNCTION PROCESSOR TABLE.
  • [18418] SMP - PRIMARY FUNCTION CODE PROCESSORS.
  • [18436] BIM - BREAK INDICATION MARKER, FUNCTION CODE #CA.
  • [18460] CON - CONNECT FUNCTION, FUNCTION CODE #63.
  • [18571] FCN - TERMINAL FUNCTION, FUNCTION CODE #83.
  • [18588] TFCN - TABLE OF *FCN* SUBFUNCTION PROCESSOR ADDRESSES.
  • [18599] LGL - LOGICAL ERROR, FUNCTION CODE #84.
  • [18690] NSH - NETWORK SHUTDOWN, FUNCTION CODE #42.
  • [18718] TCH - TERMINAL CHARACTERISTICS, FUNCTION CODE #64.
  • [18743] TCL - TERMINAL CONTROL, FUNCTION CODE #C1.
  • [18768] USI - USER INTERRUPT, FUNCTION CODE #80.
  • [18919] TFR - IAFEX FUNCTION REQUEST PROCESSOR.
  • [18967] TTFR - FUNCTION REQUEST PROCESSOR ADDRESS TABLE.
  • [18977] FUNCTION PROCESSOR ROUTINES.
  • [18991] ACK - BLOCK ACKNOWLEDGED.
  • [19013] AOM - ASSIGN OVERFLOW MESSAGE.
  • [19024] BGI - BEGIN INPUT.
  • [19045] BRK - PROCESS NETWORK BREAK CONDITION.
  • [19234] CLS - CHECK LOAN STATUS.
  • [19297] CNB - CONNECTION BROKEN.
  • [19372] CNM - CONNECTION MADE.
  • [19431] CRR - CONNECTION REQUEST REPLY.
  • [19463] CTM - CANCEL TYPEAHEAD MODE.
  • [19489] ECR - PROCESS *END CONNECTION* RESPONSE.
  • [19534] ENC - END CONNECTION.
  • [19634] HUP - HANG UP PHONE.
  • [19657] IIP - ISSUE INPUT PROMPT.
  • [19686] INA - USER INACTIVE.
  • [19806] ITM - INITIATE TYPEAHEAD MODE.
  • [19830] JCM - ISSUE JOB COMPLETION MESSAGE.
  • [19866] NAK - BLOCK NOT DELIVERED.
  • [19934] NWC - PROCESS NEW CONNECTION.
  • [20134] PCD - DRIVER *PCS* PROCESSING EXIT.
  • [20150] RDY - ISSUE *READY* MESSAGE.
  • [20179] ROI - RESUME OUTPUT INTERRUPT RESPONSE.
  • [20257] SCF - PROCESS SYSTEM CONTROL POINT FAILURE.
  • [20273] SDU - SUSPEND DRIVER FOR USER BREAK.
  • [20293] SCR - SET CONNECTION RESET BIT.
  • [20313] SIS - SET IMMEDIATE SHUTDOWN.
  • [20342] NETWORK INTERFACE ROUTINES.
  • [20350] CKP - CHECK NETWORK PARALLEL MODE STATUS.
  • [20460] GLM - GET DATA LIST MESSAGE.
  • [20506] GTM - GET MESSAGE.
  • [20555] NOF - DISCONNECT FROM NETWORK ACCESS SUBSYSTEM.
  • [20581] NON - CONNECT TO NETWORK ACCESS SUBSYSTEM.
  • [20704] RTF - RELEASE NETWORK TRACE FILE.
  • [20736] SCS - SEND CANNED SUPERVISORY MESSAGE.
  • [20816] SSM - SEND SUPERVISORY MESSAGE.
  • [20869] NETWORK AIP LINKAGES.
  • [20930] GENERAL SUBROUTINES.
  • [20942] ACD - ASSIGN CANNED DATA MESSAGE.
  • [20980] ADB - ASSEMBLE DISPLAY CODED BUFFER.
  • [21122] ADP - ADVANCE POT.
  • [21167] ANM - ASSIGN MESSAGE TO NETWORK TERMINAL.
  • [21275] ASV - ASSIGN SUPERVISORY MESSAGE.
  • [21372] CBL - CHECK BLOCK LIMIT.
  • [21398] CCT - CHECK CYCLE TIME.
  • [21429] CFX - CHECK FOR FORCED EXIT.
  • [21504] COA - CHECK OUTPUT AVAILABLE.
  • [21536] DBC - DECREMENT BLOCK COUNT.
  • [21560] DCI - DISCARD INPUT IF NECESSARY.
  • [21646] DLP - DELINK POT.
  • [21689] ECL - ENTER COMMAND INPUT LINE.
  • [21732] EIL - PROCESS END OF INPUT LINE.
  • [21789] ERQ - ENTER CIRCULAR STACK REQUEST.
  • [21865] ESL - ENTER SOURCE INPUT LINE.
  • [21953] ETX - EXIT FROM TEXT MODE.
  • [21986] GAT - GET ACTIVE TERMINAL NUMBER.
  • [22044] IAT - INITIALIZE AIP TRACE OUTPUT FILE.
  • [22077] IBC - INCREMENT BLOCK COUNT.
  • [22095] ILV - INSERT LOAN STATUS VALUE.
  • [22120] IPM - ISSUE PROMPT MESSAGE.
  • [22164] ISW - ISSUE SHUTDOWN WARNING MESSAGE.
  • [22220] PDR - PROCESS DRIVER REENTRY.
  • [22251] PIN - PROCESS INPUT DATA.
  • [22395] PQO - PROCESS QUEUED OUTPUT.
  • [22515] PRP - PROCESS RETURN TO PRIMARY.
  • [22540] QTI - QUEUE TYPEAHEAD INTERNALLY.
  • [22637] RIP - RESET INPUT POINTERS IN *VDPT*.
  • [22666] SAB - SET TERMINAL ACTIVITY BIT.
  • [22697] SFE - SUPERVISORY FUNCTION CODE ERROR PROCESSOR.
  • [22726] SHA - SET HIGHEST ACTIVE ACN NUMBER.
  • [22752] SOM - SEND OVERFLOW MESSAGE.
  • [22804] SRE - SET/CLEAR DRIVER REENTRY.
  • [22889] UAC - UPDATE CHARACTER ACCOUNTING.
  • [22966] UNQ - UNQUEUE INTERNAL TYPEAHEAD INPUT.
  • [23071] UOC - UPDATE OUTPUT CHAINS.
  • [23136] VAC - VALIDATE ACN.
  • [23162] XRJ - TRANSFER RETURN JUMP.
  • [23193] ZFN - ZERO OR BLANK FILL NAME.
  • [23227] TRANSLATION SUBROUTINES.
  • [23229] BHD - BUILD HEADER FOR DOWNLINE MESSAGE.
  • [23310] CBP - CONTROL BYTE PROCESSOR.
  • [23773] CFE - CHANGE FORMAT EFFECTOR.
  • [23868] COC - CHECK OUTPUT CHAINS.
  • [24001] TRAR - TABLE OF RETURN ADDRESSES TO RESET.
  • [24013] GNR - GET NEXT *READ* POT.
  • [24057] IVD - INITIALIZE VIRTUAL ASCII DISASSEMBLY.
  • [24119] PZD - PROCESS ZERO DISPLAY CHARACTER.
  • [24381] TDM - TRANSLATE DISPLAY CODED MESSAGE.
  • [24753] TNT - TRANSLATE NAM TRANSPARENT LINES.
  • [24945] TTL - TRANSFER TRMDEF LINE.
  • [25107] VBX - ASCII TO BINARY CODE CONVERSION.
  • [25200] VDX - VIRTUAL ASCII TO DISPLAY CODE TRANSLATION.
  • [25323] CPU COMMON DECKS.
  • [25333] DATA TRANSFER BUFFERS.
  • [25336] RCVB - NETWORK DATA RECEIVE BUFFER.
  • [25344] SNDB - NETWORK DATA SEND BUFFER.
  • [25351] AIPB - APPLICATION INTERFACE PROCEDURES UPLINE DATA BUFFER.
  • [25357] TINST - INSTRUCTION MODIFICATION TABLE.

Source Code

IAFEX.txt
  1. *IF DEF,IAF$
  2. IDENT IAFEX,/IAFINI/FWA
  3. *ELSE
  4. IDENT RDFEX,/IAFINI/FWA
  5. *ENDIF
  6. ABS
  7. SST JCTT
  8. *IF DEF,IAF$
  9. ENTRY IAFEX
  10. *ELSE
  11. ENTRY RDFEX
  12. *ENDIF
  13. ENTRY RFL=
  14. ENTRY SSJ=
  15. SYSCOM B1
  16. BASE DECIMAL
  17. IAFEX TITLE IAFEX - IAF EXECUTIVE INITIALIZATION.
  18. *COMMENT IAFEX - EXECUTIVE INITIALIZATION.
  19. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  20. IAFEX SPACE 4,10
  21. *** IAFEX - IAF EXECUTIVE INITIALIZATION.
  22. *
  23. * R.E. TATE 70/12/20.
  24. * M.H. DILATUSH. 73/01/20.
  25. * P.D. FARRELL. 77/03/17.
  26. SPACE 4,10
  27. *** THE IAFEX INITIALIZATION OVERLAY PERFORMS THE
  28. * FOLLOWING FUNCTIONS:
  29. *
  30. * (1) LOADS THE EXECUTIVE OVERLAY.
  31. * (2) LOADS THE NETWORK INTERFACE OVERLAY AND LOADS
  32. * AND LINKS THE NETWORK AIP IF NETWORK TERMINALS
  33. * ARE DEFINED IN THE NETWORK DESCRIPTION FILE.
  34. * (3) INITIALIZES TABLES AND POINTERS.
  35. * (4) STARTS THE EXECUTIVE PROCESSOR.
  36. SPACE 4,10
  37. *** THE COMMAND FORMAT.
  38. *
  39. * IAFEX,OP=XX.
  40. *
  41. * THE POSSIBLE MNEMONICS FOR *OP* ARE AS FOLLOWS.
  42. *
  43. * OP DESCRIPTION
  44. * -- -----------
  45. * T AIP TRACE PARAMETER.
  46. * THE *T* PARAMETER IS USED FOR SELECTION OF THE AIP
  47. * TRACE. THE VALUE OF THE MESSAGE COUNT
  48. * ASSIGNED TO THE *T* PARAMETER INDICATES IF THE
  49. * TRACE IS SELECTED OR NOT. IF THE TRACE IS
  50. * SELECTED, THEN THE MESSAGE COUNT INDICATES HOW
  51. * MANY MESSAGES WILL BE LOGGED BEFORE THE
  52. * TRACE FILE IS PROCESSED FOR OUTPUT.
  53. * T OMITTED TRACE IS NOT SELECTED
  54. * T USE DEFAULT MESSAGE COUNT OF 16200
  55. * T=0 TRACE IS NOT SELECTED
  56. * T=NNNNNNN USE NNNNNNN AS MESSAGE COUNT
  57. * VALID RANGE IS 5000 TO 9999999
  58. * T=* PROCESS TRACE FILE ONLY AT IAF TERMINATION
  59. IAFEX SPACE 4
  60. *** OPERATOR MESSAGES.
  61. *
  62. * NONE.
  63. SPACE 4,10
  64. *** ERROR MESSAGES.
  65. *
  66. * * IAFEX INITIALIZATION ABORT.*
  67. * AN ERROR CONDITION HAS BEEN ENCOUNTERED WHICH MAKES
  68. * INITIALIZATION IMPOSSIBLE. THE ERROR CONDITION IS
  69. * GIVEN BY ONE OF THE MESSAGES LISTED BELOW:
  70. *
  71. * * AIP LOAD ERROR.*
  72. * A LOADER ERROR WAS RETURNED WHILE ATTEMPTING
  73. * TO LOAD THE NETWORK AIP RELOCATABLE SUBROUTINES.
  74. *
  75. * * DRIVER STACK OVERFLOW.*
  76. * SEE * POT LINK TABLE OVERFLOW.*
  77. *
  78. * * ERROR IN IAFEX ARGUMENTS.*
  79. * AN ERROR WAS ENCOUNTERED WHEN PROCESSING THE *IAFEX*
  80. * COMMAND. CORRECT THE ERROR AND RETRY.
  81. *
  82. * * ERROR IN IAFEX PARAMETER - T.*
  83. * THE VALUE ASSIGNED TO THE *T* PARAMETER WAS NOT VALID.
  84. * CORRECT THE ERROR AND RETRY.
  85. *
  86. * * MESSAGE STATUS TABLE OVERFLOW.*
  87. * SEE * POT LINK TABLE OVERFLOW.*
  88. *
  89. * * MUX TABLE OVERFLOW.*
  90. * A TOTAL OF MORE THAN EIGHT MULTIPLEXORS AND
  91. * NETWORK INTERFACES WAS DEFINED.
  92. *
  93. * * NETWORK ACTIVITY TABLE OVERFLOW.*
  94. * SEE * POT LINK TABLE OVERFLOW.*
  95. *
  96. * * NO TERMINALS DEFINED.*
  97. * NO TERMINALS, EITHER MULTIPLEXOR OR NETWORK,
  98. * ARE PRESENT IN THE EST OR NETWORK FILE.
  99. *
  100. * * MISSING AIP ENTRY POINT.*
  101. * NO ENTRY POINT WAS RETURNED BY THE LOADER
  102. * FOR A REQUIRED AIP RELOCATABLE SUBROUTINE.
  103. *
  104. * * NO ACTIVE DRIVERS REMAINING. *
  105. * ALL AVAILABLE DRIVERS, NETWORK AND MULTIPLEXOR, HAVE
  106. * DROPPED. THIS CAN BE BECAUSE OF A HARDWARE FAILURE
  107. * OR BECAUSE A DRIVER NEVER BECOMES ACTIVE AFTER
  108. * INITIALIZATION AND THE OTHER DRIVERS DO NOT HAVE
  109. * TERMINALS DEFINED (NONEXISTENT OR OFF EST ENTRY).
  110. *
  111. * * POT LINK TABLE OVERFLOW.*
  112. * THE POT LINK TABLE OVERFLOWED AVAILABLE MEMORY.
  113. * THIS INDICATES THAT THE ORIGIN ADDRESS OF THE
  114. * INITIALIZER DOES NOT PROVIDE SUFFICIENT ROOM
  115. * FOR IAFEX TABLES AND THAT THE INITIALIZER MUST
  116. * BE ORIGINED HIGHER IN CORE. THIS WILL REQUIRE
  117. * A CORRESPONDING CHANGE TO *1TD* TO REQUEST
  118. * SUFFICIENT FIELD LENGTH FOR THE INITIALIZER.
  119. *
  120. * * REENTRY TABLE OVERFLOW.*
  121. * SEE * POT LINK TABLE OVERFLOW.*
  122. *
  123. * * TERMINAL TABLE OVERFLOW.*
  124. * SEE * POT LINK TABLE OVERFLOW.*
  125. *
  126. * * TOO MANY TERMINALS.*
  127. * THE TOTAL NUMBER OF TERMINALS DEFINED IN THE
  128. * EST AND ON THE NETWORK DESCRIPTION FILE EXCEEDS
  129. * THE MAXIMUM DEFINED BY THE ASSEMBLY VARIABLE *MAXTT*.
  130. *
  131. * * **** LOST OUTPUT MESSAGE.*
  132. * IAF RECEIVED MORE THAN 77B OUTPUT POTS FROM *1MI*,
  133. * SO THE LAST MESSAGE WAS THROWN AWAY. **** IS THE
  134. * JSN OF THE JOB THAT LOST THE OUTPUT MESSAGE.
  135. SPACE 4
  136. *** SENSE SWITCH OPTIONS.
  137. *
  138. * THE FOLLOWING OPTIONS ARE SELECTED IF THE CORRES-
  139. * PONDING SENSE SWITCH IS SET *ON*.
  140. *
  141. * SSW1 RETAIN USERS IN EJT (DETACHED) IF IAFEX IS DROP-
  142. * PED OR ABORTS. THIS WILL RETAIN USERS ACROSS
  143. * A RECOVERY DEADSTART.
  144. *
  145. * SSW2 DO NOT RELOAD AFTER AN ABORT. RELEASE OUTPUT FILE
  146. * TO OUTPUT QUEUE.
  147. *
  148. * SSW3 ABORT ON ABNORMAL CONDITIONS. THIS WILL
  149. * FORCE AN INTERNALLY GENERATED ABORT WHEN AN
  150. * INTERNAL ERROR SITUATION OCCURRS. A DAYFILE
  151. * MESSAGE WILL BE ISSUED GIVING THE NAME OF THE
  152. * SUBROUTINE BY WHICH THE ERROR WAS DETECTED.
  153. * THIS SWITCH IS SET AUTOMATICALLY DURING INI-
  154. * TIALIZATION AND SHOULD BE CLEARED IF ABORT
  155. * IS NOT DESIRED.
  156. *
  157. * SSW4 DUMP FIELD LENGTH TO THE OUTPUT FILE AFTER
  158. * OPERATOR DROP.
  159. *
  160. * SSW5 DUMP FIELD LENGTH TO THE OUTPUT FILE AFTER AN
  161. * INTERNAL ABORT ON ABNORMAL CONDITIONS. THE
  162. * OUTPUT FILE WILL NOT BE RELEASED TO THE OUT-
  163. * PUT QUEUE UNTIL AFTER IAFEX TERMINATION UN-
  164. * LESS SENSE SWITCH 6 IS SET.
  165. *
  166. * SSW6 RELEASE THE DUMP OUTPUT FILE TO THE OUT-
  167. * PUT QUEUE IMMEDIATELY AFTER A DROP OR AN ABORT.
  168. IAFEX SPACE 4
  169. ** PROGRAMS CALLED BY INITIALIZER:
  170. *
  171. * CIO - CIRCULAR INPUT/OUTPUT.
  172. * CPM - CONTROL POINT MANAGER.
  173. * LDR - LOAD OVERLAY.
  174. * 1MA - ISSUE DAYFILE MESSAGE.
  175. * 1TM AND 1TN - MUX TERMINAL DRIVERS.
  176. TITLE INTERNAL DOCUMENTATION.
  177. QUAL SPACE 4,10
  178. ** IAFEX INTERNAL DOCUMENTATION.
  179. *
  180. *
  181. QUAL SPACE 4,10
  182. ** DEFINE IAFEX QUALIFICATION SEQUENCE.
  183.  
  184.  
  185. QUAL
  186. QUAL IAFINI
  187. QUAL IAFEX2
  188. QUAL IAFEX3
  189. QUAL IAFEX4
  190. QUAL
  191. SPACE 4
  192. ** TABLES.
  193. *
  194. * IN GENERAL ALL TABLES IN *IAFEX* WILL BE DYNAMIC IN LENGTH
  195. * AT INITIALIZATION TIME. THE LENGTHS OF THE VARIOUS TABLES
  196. * WILL BE DETERMINED BY THE MAXIMUM NUMBER OF TERMINALS
  197. * TO BE SERVICED. THUS, IT WILL BE NECESARY FOR ALL ROUTINES
  198. * AT INITIALIZATION TIME TO DETERMINE THE VALUES OF TABLE
  199. * POINTERS ETC. ONCE *IAFEX* IS INITIALIZED, THE LENGTHS OF
  200. * TABLES WILL NOT CHANGE. THUS, POINTERS SUCH AS FIRST AND
  201. * LIMIT COULD BE READ AND SAVED BY PROGRAMS THAT ARE TIME
  202. * CRITICAL. THESE POINTERS COULD ALSO BE SAVED AS ABSOLUTE
  203. * ADDRESSES BECAUSE IAFEX WILL NEVER PAUSE FOR
  204. * STORAGE MOVE. IT WILL NOT BE POSSIBLE TO INCREASE THE
  205. * LENGTH OF *CMR* WHILE IAFEX IS IN OPERATION
  206. IAFEX SPACE 4
  207. ** TERMINAL TABLE.
  208. *
  209. * THE *TERMINAL TABLE* CONTAINS A GROUP OF WORDS FOR EACH
  210. * POSSIBLE ACTIVE USER. THESE WORDS CONTAIN ALL OF THE VITAL
  211. * INFORMATION ABOUT THE PARTICULAR USER THAT IS CURRENTLY
  212. * LOGGED IN ON A GIVEN CONNECTION. THE ENTRIES ARE FORMATTED
  213. * SUCH A WAY THAT THE AMOUNT OF INTERLOCKS NEEDED BETWEEN THE
  214. * VARIOUS ROUTINES IS KEPT AT A MINIMUM. THE ENTRIES ARE ALSO
  215. * FORMATTED IN SUCH A WAY THAT THE VARIOUS ROUTINES WHO HAVE
  216. * TO READ AND WRITE THIS TABLE ARE ABLE TO ACCESS A MINIMUM
  217. * NUMBER OF CM WORDS.
  218. *
  219. *
  220. * THE FORMAT OF AN ENTRY IN THE TERMINAL TABLE AND THE
  221. * RELATED INFORMATION CAN BE FOUND IN COMSREM.
  222. IAFEX SPACE 4
  223. ** CIRCULAR COMMAND STACKS.
  224. *
  225. * THE TTY DRIVER(S) WILL INTERFACE THROUGH
  226. * THE USE OF CIRCULAR COMMAND STACK(S). THE PARAMETERS FOR
  227. * THESE STACKS WILL BE SIMILAR TO THOSE IN A FET (I.E. THE
  228. * POINTER FOR A CIRCULAR STACK WILL POINT TO AN AREA AS
  229. * FOLLOWS)
  230. *
  231. * WORD 1 HEADER WORD (CONTAINS NAME OF CIRCULAR STACK AND
  232. * A POINTER TO THE NEXT STACK. THE LAST STACK IN THE CHAIN
  233. * HAS A ZERO POINTER.)
  234. * WORD 2 FIRST
  235. * WORD 3 IN
  236. * WORD 4 OUT
  237. * WORD 5 LIMIT
  238. *
  239. * THE FORMAT OF A STACK ENTRY IS
  240. *
  241. *T 12/ 20XX,24/ X7,12/ B3,12/ B2
  242. * XX = REQUEST CODE (QUAL TLX).
  243. * X7 = (X7).
  244. * B3 = POT POINTER, (B3).
  245. * B2 = TERMINAL NUMBER, (B2).
  246. *
  247. * THESE STACKS WILL BE PROCESSED FULL CIRCULAR BY *IAFEX*.
  248. * THE UTILIZATION OF COMMAND STACKS LESSENS THE AMOUNT OF
  249. * TIME THAT *IAFEX* HAS TO SPEND DETERMINING WHAT OPERATIONS
  250. * ARE TO BE PERFORMED.
  251. VDRL SPACE 4,10
  252. ** VDRL - DRIVER STATUS WORD TABLE.
  253. *
  254. * THE DRIVER STATUS WORDS BEGIN AT LOCATION *VDRL* (DE-
  255. * FINED IN COMMON DECK *COMSREM*). EACH DRIVER, INCLUD-
  256. * ING THE NETWORK INTERFACE, HAS AN ENTRY IN THIS TABLE.
  257. * THE TABLE IS TERMINATED BY A NEGATIVE WORD. THE WORDS
  258. * ARE USED DURING INITIALIZATION TO PASS INFORMATION BACK
  259. * AND FORTH BETWEEN THE EXECUTIVE AND THE PPU DRIVER(S)
  260. * AND TO SIGNAL DRIVER FAILURE AFTER INITIALIZATION.
  261. *
  262. * 1. INITIAL CONDITIONS. PPU DRIVER SETS INTERLOCK PRIOR TO
  263. * STARTUP OF CPU CONTROL CARD PROCESSING:
  264. *
  265. * 12/ IL, 48/ 0.
  266. * IL = POSITIVE NONZERO.
  267. *
  268. * 2. EXECUTIVE INDICATES STARTUP BY CLEARING INTERLOCK AND
  269. * SETTING THE DRIVER NAME IN EACH DRIVER STATUS WORD.
  270. *
  271. * 12/ 0, 24/ DN, 24/ 0.
  272. * DN = DRIVER NAME.
  273. *
  274. * 3. DRIVER(S) REPLY WITH TERMINAL COUNT, CM CONVERSION AND
  275. * ID TABLE LENGTH:
  276. *
  277. * 12/ IL, 24/ DN, 12/ TC, 12/ CL.
  278. * IL = POSITIVE NONZERO.
  279. * DN = DRIVER NAME.
  280. * TC = TERMINAL COUNT.
  281. * CL = CM CONVERSION AND ID TABLE LENGTH.
  282. *
  283. * NOTE - IF THERE ARE NO TERMINALS DEFINED FOR THIS MUX
  284. * DRIVER, BOTH *TC* AND *CL* ARE SET TO ZERO AND THE
  285. * DRIVER WILL DROP AT THIS POINT.
  286. *
  287. * 4. EXECUTIVE REPLIES WITH DRIVER POINTERS TO START DRIVER:
  288. *
  289. * 12/0, 24/ SA, 12/ TC, 12/ FT.
  290. * SA = DRIVER CIRCULAR STACK ADDRESS.
  291. * TC = TERMINAL COUNT.
  292. * FT = FIRST TERMINAL NUMBER.
  293. *
  294. * NOTE - IF THE DRIVER HAS NO TERMINALS DEFINED (AS IN
  295. * NOTE 3) THIS WORD IS SIMPLY CLEARED.
  296. *
  297. * 5. IF DRIVER SUBSEQUENTLY DROPS, DRIVER INDICATES
  298. * FAILURE BY SETTING THE INTERLOCK PRIOR TO DROPPING:
  299. *
  300. * 11/ 0, 1/ 1, 48/ (AS ABOVE).
  301. *
  302. * 6. ALL USERS ACTIVE ON THE FAILED DRIVER WILL BE LOGGED
  303. * OFF IN A RECOVERABLE STATE. WHEN ALL USERS ARE LOG-
  304. * GED OFF, BIT 49 WILL BE SET TO INDICATE THAT THE
  305. * DRIVER IS LOGICALLY *OFF*:
  306. *
  307. * 12/ 3, 48/ (AS ABOVE).
  308. *
  309. * 7. IF THE DRIVER SHOULD RECOVER, THE DRIVER INDICATES
  310. * ITS RESURRECTION BY CLEARING BYTE ZERO AFTER BIT 49
  311. * HAS BEEN SET:
  312. *
  313. * 12/ 0, 48/ (AS ABOVE).
  314. * SA = DRIVER CIRCULAR STACK ADDRESS.
  315. * TC = TERMINAL COUNT.
  316. * FT = FIRST TERMINAL NUMBER.
  317. SPACE 4,20
  318. * EXECUTIVE - DRIVER INTERLOCKS.
  319. *
  320. * IN ORDER FOR THE IAF EXECUTIVE AND THE MUX DRIVERS TO STAY IN
  321. * SYNC, THE FOLLOWING STEPS ARE FOLLOWED WHEN A COMMAND LINE IS
  322. * ENTERED.
  323. *
  324. *
  325. * 1) DRIVER ISSUES *CLI* REQUEST TO EXECUTIVE.
  326. *
  327. * 2) DRIVER WILL NOW IGNORE INPUT UNTIL A POT
  328. * IS GIVEN BACK BY IAFEX.
  329. *
  330. * 3) THUS, THE DRIVER CANNOT GIVE DATA TO THE EXECUTIVE
  331. * UNTIL IAFEX IS READY FOR IT.
  332. *
  333. * 4) THIS ALLOWS IAFEX TO MAKE ANY MODE CHANGES SUCH AS
  334. * DATA AND COMMAND MODE BEFORE GIVING THE DRIVER A POT SO THAT
  335. * ADDITIONAL COMMANDS SUCH AS *STOP* MAY BE ENTERED.
  336. *
  337. *
  338. * THIS INTERLOCK AS WELL AS THE ONE DESCRIBED IN THE
  339. * DESCRIPTION OF THE *VDCT* WORD ARE THE PRIME METHODS OF
  340. * INTERLOCKING.
  341. SPACE 4,10
  342. ** OUTPUT MESSAGES.
  343. *
  344. * PPUS MAY ASSIGN OUTPUT MESSAGE POTS BY MEANS OF
  345. * MONITOR *TSEM/VASO* FUNCTION REQUESTS. REFER TO
  346. * THE *TSEM* DOCUMENTATION IN *COMSREM* FOR A DESCRIPTION
  347. * OF THIS REQUEST.
  348. *
  349. *
  350. * *NOS* FORMAT MESSAGES.
  351. *
  352. * *NOS* FORMAT MESSAGES ARE MESSAGES EMPLOYING NOS
  353. * TIME SHARING 6-BIT, 6/12-BIT, OR 12-BIT TERMINAL
  354. * BINARY FORMATS. REFER TO THE NOS TIME SHARING US-
  355. * ERS REFERENCE MANUAL FOR A DESCRIPTION OF NOS FOR-
  356. * MAT MESSAGES.
  357. *
  358. *
  359. * *NAM* FORMAT MESSAGES.
  360. *
  361. * *NAM* FORMAT MESSAGES ARE MESSAGES CONSTRUCTED AS
  362. * NETWORK FORMAT MESSAGE BLOCKS. REFER TO THE NETWORK
  363. * R4 EXTERNAL REFERENCE SPECIFICATIONS FOR A DESCRIP-
  364. * TION OF NAM FORMAT MESSAGES.
  365. *
  366. * PROGRAMS USING NETWORK FORMAT MESSAGES SHOULD ALWAYS
  367. * SET THE *ADR* FIELD OF THE HEADER TO ZERO UNLESS IT
  368. * IS DESIRED TO TAKE ADVANTAGE OF THE IMBEDDED REQUEST
  369. * CAPABILITIES ALLOWED BY THE NETWORK INTERACTIVE EXEC-
  370. * UTIVE. THE PROPER ADR FIELD WILL BE SET BY THE EXEC-
  371. * UTIVE PRIOR TO TRANSMISSION TO THE NETWORK. AS LONG
  372. * AS THE ADR FIELD IS ZERO, THE ABN WILL BE TRANSMITTED
  373. * AS-IS, ALLOWING THE USER TO PRESET THE ABN FIELD.
  374. *
  375. * IF THE UPPER 6 BITS OF THE STANDARD ADR FIELD ARE NON-
  376. * ZERO, IT INDICATES THAT THE COMBINED ADR AND ABN
  377. * FIELDS OF THE HEADER CONTAIN AN IMBEDDED FUNCTION
  378. * REQUEST. USING THIS FORMAT, THE HEADER IS FORMATTED
  379. * AS FOLLOWS:
  380. *
  381. *T, 6/ABT, 6/FC, 12/P1, 12/P2, 4/ACT, 8/BITS, 12/TLC.
  382. *
  383. * FC = IMBEDDED FUNCTION REQUEST IF NONZERO-
  384. * = 4 - LOGOFF USER.
  385. * = 5 - REQUEST TRANSPARENT INPUT.
  386. * = 6 - REQUEST BINARY INPUT.
  387. * = 16 - SEND DOWNLINE TERMINAL DEFINITIONS.
  388. * P1 = BINARY INPUT CHARACTER COUNT.
  389. * P2 = BINARY INPUT TERMINATION CHARACTER.
  390. * ABT = APPLICATION BLOCK TYPE.
  391. * ACT = APPLICATION CHARACTER TYPE.
  392. * BITS = REFER TO NAM ERS.
  393. * TLC = TEXT LENGTH IN UNITS SPECIFIED BY *ACT*.
  394. IAFEX SPACE 4
  395. ** *IAFEX* REENTRY TABLE.
  396. * THE *IAFEX* REENTRY TABLE ALLOWS ROUTINES TO BE ABLE
  397. * TO GET CONTROL RETURNED TO THEM OR FUNCTIONS PERFORMED
  398. * FOR THEM WHEN A SET OF CONDITIONS HAVE BEEN MET.
  399. *
  400. * THE REENTRY TABLE CONSISTS OF ONE WORD FOR EACH TERMINAL
  401. * WHICH MAY CONTAIN ONE OF THE FOLLOWING
  402. *
  403. * 1.) 0000 0000 0000 0000 0000 - NO REENTRY CONDITIONS.
  404. *
  405. * 2.) 2YYY XXXX XXXX PPPP NNNN - WHERE
  406. * YYY = INDEX TO TRRT (TABLE OF REENTRY PROCESSORS).
  407. * XXXX XXXX = ANYTHING.
  408. * PPPP = POT POINTER.
  409. * NNNN = LINK TO NEXT ENTRY OF THIS TYPE IN THE QUEUE.
  410. * SEE TSR.
  411. *
  412. * 3.) 0000 0000 00PP PPNN NNNN - WHERE
  413. * NNNNNN = POT ADDRESS OF STACKED ENTRIES
  414. * PPPP = POT POINTER TO STACKED ENTRIES.
  415. TITLE ERROR MESSAGES.
  416. SPACE 4
  417. *** DAYFILE MESSAGES.
  418. *
  419. * *IAFEX ABNORMAL - XXX NNN.*
  420. * AN ERROR CONDITION HAS BEEN DETECTED BY ROUTINE
  421. * *XXX* DURING THE PROCESSING OF TERMINAL *NNN*.
  422. * *NNN* IS THE POT LINK TABLE ADDRESS FOR *SPR*.
  423. * REFER TO THE DESCRIPTIONS OF THE VARIOUS ERROR
  424. * CODES *XXX* FOR THE DESCRIPTIONS OF THESE
  425. * ERROR CONDITONS.
  426. *
  427. * * PLT INCREASE NOT POSSIBLE.*
  428. * THE POT LINK TABLE IS AT ITS MAXIMUM POSSIBLE LENGTH
  429. * WHEN MORE ENTRIES WERE REQUESTED DUE TO CURRENT
  430. * ACTIVITY. A TEMPORARY SLOWDOWN IN RESPONSE TIME
  431. * MAY BE NOTICED BY TERMINAL USERS. IF THIS MESSAGE
  432. * IS SEEN OFTEN, INFORM SITE ANALYST.
  433. *
  434. * *BLOCK LOST - NNNN*
  435. * *IAFEX* HAS RECEIVED A *NAK* SUPERVISORY MESSAGE
  436. * FOR ACN *NNNN* INDICATING THAT A DOWNSTREAM DATA
  437. * BLOCK HAS BEEN LOST.
  438. *
  439. * *LOGICAL ERROR XX.*
  440. * LOGICAL ERROR XX HAS OCCURRED. FOR INSTANCE,
  441. * A MESSAGE IS SENT TO A NON CONNECTED TERMINAL.
  442. * THIS CAN HAPPEN LEGALLY IF A MESSAGE IS OUTPUT
  443. * AND THE USER HANGS UP THE PHONE AT THE SAME
  444. * TIME.
  445. *
  446. * *INCORRECTLY FORMATTED DATA - NNN.*
  447. * *NAM* HAS SENT *IAFEX* A *BREAK* CONDITION MESSAGE
  448. * ON ACN *NNN* INDICATING THAT AN INCORRECTLY FORMATTED
  449. * MESSAGE HAS BEEN SENT BY *IAFEX* TO THAT ACN.
  450. *
  451. * *SMP INCORRECT SM = AABB, ACN = NNNN.*
  452. * AN INCORRECT OR UNRECOGNIZABLE SUPERVISORY MESSAGE,
  453. * PRIMARY FUNCTION CODE *AA* AND SECONDARY FUNCTION
  454. * *BB*, HAS BEEN RECEIVED FOR ACN *NNNN*. THE FUNCTION
  455. * CODE VALUES GIVEN ARE IN HEXADECIMAL.
  456. SPACE 4,7
  457. ** ACCOUNT FILE MESSAGES.
  458. *
  459. * *SBSB, IAF.* *IAFEX* INITIATED.
  460. * *SESB, IAF.* *IAFEX* TERMINATION IN PROGRESS.
  461. * *SESC, IAF.* *IAFEX* TERMINATION COMPLETE.
  462. * *SRSC, IAF.* *IAFEX* RECOVERY COMPLETE.
  463. * *SRSA, IAF.* *IAFEX* RECOVERY ABORTED.
  464. SPACE 4,20
  465. ** ABNORMAL CONDITION ERROR CODES.
  466. *
  467. * THE FOLLOWING IS A LIST OF THE ABNORMAL ERROR CODES
  468. * THAT MAY BE ISSUED BY *IAFEX* AND SOME INSIGHT INTO WHAT
  469. * MAY CAUSE THEM. THE THREE CHARACTER ERROR CODES CORRESPOND
  470. * TO THE NAME OF THE SUBROUTINE THAT DETECTED THE ERROR.
  471. *
  472. * CODE DESCRIPTION.
  473. *
  474. * ADQ THE SCREEN MANAGEMENT INTERFACE ENCOUNTERED
  475. * A FULL DRIVER STACK, OR WAS UNABLE TO LOCATE THE
  476. * CORRECT DRIVER REQUEST WORD STARTING AT VDRL.
  477. *
  478. * ADR THE SCREEN MANAGEMENT INTERFACE ENCOUNTERED
  479. * A DRIVER REQUEST EVENT WHICH WAS UNEXPECTED FOR THE
  480. * TERMINAL*S CURRENT SCREEN MANAGEMENT CONNECT STATE.
  481. *
  482. * ASO THIS DOCUMENTS AN ATTEMPT TO ASSIGN OUTPUT (WHICH
  483. * MEANS A SYSTEM STEP COMPLETION) TO A TERMINAL TABLE
  484. * WHICH IS ALREADY SET COMPLETE (VROT BIT ZERO = 1).
  485. * IT USUALLY MEANS A BUG IN THE COMMUNICATION BETWEEN
  486. * IAF AND THE SYSTEM.
  487. *
  488. * ASM IT IS ONLY POSSIBLE TO STACK TWO MESSAGES OR ONE
  489. * DRIVER REQUEST AND ONE MESSAGE FOR THE DRIVER AT ONE
  490. * TIME. IF THIS MESSAGE IS ISSUED, THEN ONE OF THESE
  491. * CONDITIONS WAS ENCOUNTERED WHEN *ASM* ATTEMPTED TO
  492. * ASSIGN A NEW MESSAGE TO THE TERMINAL. THIS CONDITION
  493. * SHOULD NOT NORMALLY OCCUR, BUT THE ONLY HARM DONE IS
  494. * THAT THE PARTICULAR USER LOSES SOME OUTPUT. IF THIS
  495. * DOES OCCUR, DURING NORMAL OPERATION, AND THERE HAVE
  496. * BEEN NO *DIAL* COMMANDS TO THE TERMINAL THERE IS
  497. * PROBABLY AN INTERLOCK PROBLEM.
  498. *
  499. * ASR THE SCREEN MANAGEMENT INTERFACE RECEIVED A
  500. * FUNCTION CODE FROM SMFEX WHICH WAS UNEXPECTED
  501. * FOR THE TERMINAL*S CURRENT CONNECT STATE.
  502. *
  503. * ATL A *TLX* PP ISSUED A *VCSM* TSEM CODE WHEN THE
  504. * TERMINALS *SMFEX* CONNECTION CODE DOES NOT ALLOW
  505. * THAT FUNCTION CODE.
  506. *
  507. * BJB AN ATTEMPT WAS MADE TO ENABLE A USER JOB WHILE
  508. * ITS TERMINAL TABLE INTERLOCK (*VROT* BIT 0=0)
  509. * WAS OUTSTANDING.
  510. *
  511. * DLP AN ATTEMPT WAS MADE TO DELINK POT ZERO. THIS SHOULD
  512. * NEVER HAPPEN.
  513. *
  514. * DPT THIS INDICATES A POT OR POTS WERE DROPPED THAT WERE
  515. * NOT RESERVED. THIS IS IN GENERAL INDICATIVE OF IAFEX
  516. * AND FRIENDS TRYING TO USE ONE POT FOR TWO THINGS AT THE
  517. * SAME TIME. NEEDLESS TO SAY THIS DOES NOT WORK TOO WELL
  518. * AND IN FACT CAN CAUSE A WIDE VARITY OF PROBLEMS. THIS
  519. * ERROR MOST OFTEN RESULTS FROM *1TD* OR IAFEX RELEASING
  520. * A POT OR POTS, BUT FAILING TO NOTE IT AND THEN
  521. * USING THE SAME POT AGAIN LATER IN THE CODE.
  522. *
  523. * DRI A DRIVER REQUEST TO IAFEX CONTAINED AN INCORRECT
  524. * REQUEST CODE. THIS SHOULD NEVER OCCUR.
  525. *
  526. * EDR A DRIVER REQUEST WAS ENTERED AND THE *VDCT* INTERLOCK
  527. * WAS NOT CLEARED.
  528. *
  529. * ESE THE SCREEN MANAGEMENT INTERFACE ENCOUNTERED
  530. * A COMBINATION OF TERMINAL CONNECT STATE AND
  531. * EVENT (FROM DRI OR SMFEX) WHICH IS UNDEFINED.
  532. *
  533. * GPL A POT LINK WAS ATTEMPTED FOR POT ZERO.
  534. *
  535. * GQE THIS INDICATES THAT IAFEX FOUND A BAD ENTRY IN THE
  536. * REENTRY TABLE. THIS IS A FATAL ERROR ON WHICH IAFEX
  537. * WILL ABORT BECAUSE THERE IS NO WAY TO REBUILD THE
  538. * REENTRY QUEUE AS IT IS A LINKED QUEUE. THE ENTRIES
  539. * VALIDITY IS CHECKED AS THEY ARE PUT IN THE TABLE BY
  540. * *MQE* SO THIS ERROR WOULD USUALLY INDICATE THE TABLE
  541. * WAS BASHED AFTER THE THE ENTRY WAS MADE OR PERHAPS A
  542. * POT CONTAINING MULTIPLE ENTRIES WAS BASHED.
  543. *
  544. * IAM INDICATES THAT EITHER AN INCORRECT ACCOUNTING MESSAGE
  545. * WAS REQUESTED BY THE DRIVER, WHICH SHOULD NEVER HAPPEN,
  546. * OR THAT SUBROUTINE *IAM* WAS UNABLE TO TO GET
  547. * TO GET A POT FOR STACKING MESSAGES.
  548. *
  549. * ITM THE DRIVER GAVE *IAFEX* AN INCORRECT MESSAGE CODE.
  550. * THIS SHOULD NEVER OCCUR.
  551. *
  552. * LEP AN ATTEMPT WAS MADE TO LINK TWO POT CHAINS AND THE
  553. * FIRST POT POINTER WAS ZERO.
  554. *
  555. * MQE THIS INDICATES EITHER A BAD QUEUE ENTRY WAS ATTEMPTED
  556. * OR ELSE AN ENTIRE POT FULL OF QUEUE ENTRIES WAS STACKED
  557. * UP. NEITHER OF THESE SHOULD EVER OCCUR. IF THEY DO
  558. * THEY CAN USUALLY EASILY BE DEBUGGED IF ONE LETS
  559. * *IAFEX* ABORT ON THIS ERROR AND THEN WORKS FROM THE
  560. * DUMP.
  561. *
  562. * RPL AN ATTEMPT WAS MADE TO DROP POTS AFTER POT ZERO.
  563. *
  564. * RPT THERE WERE NOT ENOUGH POTS AVAILABLE TO SATISIFY A
  565. * REQUEST. THIS WOULD PROBABLY INDICATE THAT THE VALUES
  566. * OF *VSPL* AND *VMPL* SHOULD BE INCREASED SO AS TO
  567. * MAINTAIN MORE SPARE POTS. PROBLEMS IN THIS AREA WILL
  568. * ALSO BE INDICATED BY THE STATISTIC IAFEX MAINTAINS ON
  569. * THE NUMBER OF TIMES ONLY A FEW POTS ARE LEFT. THIS
  570. * ALSO COULD OCCUR BECAUSE OF A SOME SYSTEM HANG
  571. * WHICH PREVENTED *IAFEX* FROM OBTAINING MORE STORAGE.
  572. *
  573. * RMS THE SCREEN MANAGEMENT INTERFACE RECEIVED
  574. * A FUNCTION CODE FROM SMFEX WHICH IS OUT OF RANGE.
  575. *
  576. * SBS A REQUEST WAS MADE TO SET AN INCORRECT SUBSYSTEM
  577. * BY MEANS OF A MONITOR *TSEM* REQUEST.
  578. *
  579. * SDT A PPU REQUESTED A BIT TO BE SET IN AN INCORRECT
  580. * TERMINAL TABLE WORD OR ELSE THE BIT VALUE WAS GREATER
  581. * THAN 59. THIS SHOULD NEVER OCCUR.
  582. *
  583. * SFC IAF HAS RECEIVED AN ERROR RETURN FROM CPUMTR ON
  584. * AN *SFCALL*. THIS MAY MEAN THAT THERE IS AN ERROR IN
  585. * THE SCP/UCP INTERFACE BETWEEN IAF AND SMF.
  586. *
  587. * STR A PPU REQUEST RECEIVED VIA A *TSEM* MONITOR
  588. * FUNCTION CONTAINED AN INCORRECT REQUEST CODE.
  589. * THIS SHOULD NEVER OCCUR.
  590. *
  591. * TSR THIS IS A FATAL ERROR WHICH INDICATES *IAFEX,S* REENTRY
  592. * QUEUE HAS BEEN SCREWED UP. THE PLACE TO START TO DEBUG
  593. * THIS IS TO LOOK AT THE CONTENTS OF *SSPA* WHICH
  594. * CONTAINS THE QUEUE ENTRY THAT WAS BEING PROCESSED AT
  595. * THE TIME OF THE ERROR.
  596. *
  597. * UEC UNEXPECTED ERROR CODE WAS RECEIVED FROM AN EJT MONITOR
  598. * REQUEST.
  599. *
  600. * UNQ LINKAGE IN TYPEAHEAD POT CHAIN IS INCORRECT. THE
  601. * POINTER TO THE LAST POT IN THE CHAIN IS ZERO.
  602. *
  603. *
  604. *
  605. * IAFEX NETWORK INTERFACE ABNORMAL CONDITIONS.
  606. *
  607. * THE FOLLOWING ERROR MESSAGES ARE ISSUED ONLY BY THE
  608. * NETWORK INTERFACE OVERLAY:
  609. *
  610. * CODE DESCRIPTION
  611. *
  612. * ACK A BLOCK ACKNOWLEDGED MESSAGE WAS RECEIVED
  613. * FROM THE NETWORK WHEN THE MESSAGE STATUS
  614. * TABLE SHOWED NO UNACKNOWLEDGED DOWNSTREAM
  615. * MESSAGES OUTSTANDING.
  616. *
  617. * ERQ SUBROUTINE *ERQ* WAS CALLED TO ENTER A
  618. * DRIVER CIRCULAR REQUEST STACK REQUEST TO THE
  619. * EXECUTIVE WHEN THE STACK WAS FULL.
  620. *
  621. * NAK A BLOCK-NOT-DELIVERED SUPERVISORY MESSAGE HAS
  622. * BEEN RECEIVED FROM NAM AND EITHER (1) THE TER-
  623. * MINAL OUTSTANDING BLOCK COUNT WAS ZERO, OR (2)
  624. * THE REASON CODE FOR THE BLOCK-NOT-DELIVERED
  625. * CONDITION WAS INCORRECT.
  626. *
  627. * NWC THIS INDICATES THAT THE NETWORK REQUESTED A CONNECTION
  628. * FOR WHICH IAF DOES NOT HAVE A TERMINAL TABLE, OR
  629. * ON WHICH IAF HAS NOT FINISHED LOGOFF FOR THE
  630. * PREVIOUS USER.
  631. *
  632. * RDM A MESSAGE WITH AN UNIDENTIFIABLE BLOCK TYPE
  633. * OR INCORRECT ACN HAS BEEN RECEIVED FROM NAM.
  634. *
  635. * SRE A DRIVER REENTRY HAS BEEN OVERWRITTEN.
  636. *
  637. * TFR THE MAIN IAFEX EXECUTIVE HAS PASSED AN UN-
  638. * IDENTIFIABLE DRIVER REQUEST TO THE NETWORK
  639. * DRIVER IN BYTE 4 OF TERMINAL TABLE WORD
  640. * *VDCT*.
  641. TITLE DEFINITION COMMON DECKS.
  642. SPACE 4,10
  643. *CALL COMCMAC
  644. *CALL COMCCMD
  645. *CALL COMSACC
  646. QUAL CPS
  647. *CALL COMSCPS
  648. QUAL *
  649. *CALL COMSNET
  650. *CALL COMSPRD
  651. *CALL COMSRPV
  652. *CALL COMSSCP
  653. *CALL COMSSFM
  654. *CALL COMSSSD
  655. *CALL COMSSSJ
  656. LIST F,X
  657. *CALL COMSEJT
  658. *CALL COMSTDR
  659. VXJT SET 1 ENABLE CEJ/MEJ ERROR CHECK
  660. *CALL COMSREM
  661. *CALL COMSTCM
  662. LIST * REVERSE *LIST X,F*
  663. TITLE ASSEMBLY CONSTANTS.
  664. **** ASSEMBLY CONSTANTS.
  665.  
  666.  
  667. QUAL$ EQU 0 SET TO INDICATE PROGRAM WILL HANDLE QUAL
  668. MAXTT EQU 1024D MAXIMUM NUMBER OF TERMINALS
  669. WCQT EQU 100 WAIT COMPLETION QUEUE DELAY TIME (MSEC.)
  670. MWQT EQU 100 MONITOR WAIT QUEUE DELAY TIME(MSEC)
  671. LIAA EQU 4 LOG IN ATTEMPTS ALLOWED
  672. MINDL EQU 60D MINIMUM FL CHANGE DELAY TIME
  673. MAXDL EQU 360D MAXIMUM FL CHANGE DELAY TIME
  674. INCTO EQU 1 FL CHANGE INCREMENT TIME
  675. RESTO EQU 60D*15D FL CHANGE RESET TIME INTERVAL SECONDS
  676. RTYDL EQU 30D *REER* DELAY COUNTER
  677.  
  678.  
  679.  
  680.  
  681. ** NETWORK INTERFACE ASSEMBLY CONSTANTS.
  682.  
  683. NFCL EQU 20D NETWORK FUNCTION LIMIT PER CYCLE
  684. NMCT EQU 300 NETWORK MANAGER CYCLE TIME (MSECS)
  685. NODT EQU 10D NETON DELAY TIME (SECONDS)
  686. NSCT EQU 128D NETWORK SCAN CYCLE TIME (MSECS)
  687. SDTO EQU 60D*3 SHUTDOWN TIME-OUT (SECONDS)
  688. AIPL EQU 511D AIP UPLINE DATA BUFFER LENGTH
  689. SNDL EQU VXPL*VCPC*4/3+1 SEND BUFFER LENGTH
  690. NTODL EQU 30D NETWORK TERMINAL TIMEOUT DELAY (SECONDS)
  691. SPACE 4,10
  692. ** AIP TRACE ASSEMBLY CONSTANTS.
  693.  
  694. DMCT EQU 16200 DEFAULT MESSAGE COUNT TO TRACE
  695. MNCT EQU 5000 MINIMUM MESSAGE COUNT TO TRACE
  696. MXML EQU 10 MAXIMUM MESSAGE LENGTH TO TRACE
  697.  
  698. ** AIP TRACE JOB FILE NAME DEFINITION.
  699. * THE TRACE OUTPUT FILE CAN BE PROCESSED THROUGH THE USE
  700. * OF AN INPUT JOB. THIS REQUIRES AN INDIRECT ACCESS FILE
  701. * UNDER THE SYSTEM USER INDEX 377777 WHICH CONTAINS THE
  702. * COMMANDS NECESSARY TO PROCESS THE TRACE OUTPUT FILE
  703. * VIA AN INPUT JOB.
  704. * THIS MICRO DEFINES THE NAME OF THAT FILE.
  705.  
  706. TJOB MICRO 1,,*TRACIAF*
  707. TITLE FETS AND DATA STORAGE.
  708. QUAL IAFINI
  709.  
  710. ORG 55000B SET ORIGIN
  711.  
  712. FWA BSS 0 DEFINE FWA OF OVERLAY.
  713. FETS SPACE 4,10
  714. ** FETS.
  715.  
  716.  
  717. CON NMSG ERROR MESSAGE BUFFER ADDRESS
  718.  
  719. NMSG BSS 4 ERROR MESSAGE BUFFER
  720.  
  721.  
  722. L BSS 0 LOADER PARAMETER FILE
  723. ZZZZZ17 FILEB FBUF,FBUFL
  724. SPACE 4,10
  725. ** DATA STORAGE.
  726.  
  727.  
  728. ATAS CON 0 AIP TRACE PARAMETER ASSUMED VALUE
  729. ATPV CON 1R+ COMMAND TRACE PARAMETER VALUE
  730. LWAA CON 0 LWA+1 ALLOCATED CORE
  731. NDRO CON 0 NETWORK DRIVER ORDINAL
  732. VHMP CON 0 HIGHEST MUX PORT NUMBER
  733.  
  734. TITLE MAIN ROUTINE.
  735. INI SPACE 4,10
  736. ** INI - IAFEX INITIALIZATION.
  737. *
  738. * ENTRY (R1) = 1 IF IAF RECOVERY.
  739. * WHERE R1 IS THE JOB CONTROL REGISTER 1.
  740.  
  741.  
  742. INI BSS 0 ENTRY
  743. SB1 1 SET CONSTANT B1=1
  744. GETSSID INID GET SUBSYSTEM IDENTIFICATION
  745. SA1 INID
  746. SX0 X1-IFSI
  747. ZR X0,INI1 IF IAF SUBSYSTEM
  748. SX0 X1-RDSI
  749. NZ X0,INI6 IF NOT RDF SUBSYSTEM
  750. INI1 GETJO INID GET JOB ORIGIN CODE
  751. SA1 INID
  752. MX2 -6
  753. BX1 -X2*X1
  754. NZ X1,INI6 IF NOT SYSTEM ORIGIN TYPE
  755. SETUI 377777B SET SYSTEM USER INDEX
  756. OVERLAY (=6LIAFEX1),100B,S LOAD EXECUTIVE
  757. GETSSM //LISF GET SYSTEM SECURITY MODE
  758. GETJCR INIC
  759. SA1 INIC
  760. LX1 59-0
  761. NG X1,INI1.1 IF RELOAD - KEEP PREVIOUS SWITCH SETTINGS
  762. ONSW 20B SELECT DUMP OPTION
  763. INI1.1 MOVE //TINSTL,//TINST,TINS
  764. RJ CIC CRACK *IAFEX* COMMAND
  765. RJ CPA CLEAR POINTER AREAS
  766.  
  767. * CHECK IF *IAF* RECOVERY (R1=1 IF RECOVERY)
  768.  
  769. SA1 INIC
  770. SX7 B1
  771. BX7 X7*X1
  772. ZR X7,INI2 IF NOT IAF RECOVERY
  773. BX7 X1-X7 CLEAR THE RECOVERY FLAG
  774. SA7 A1
  775. SETJCR INIC SET JOB CONTROL REGISTERS
  776. RTIME VRLL SET RECOVERY TIME IN SECONDS
  777. SA1 VRLL
  778. LX1 -36
  779. MX7 -24
  780. BX7 -X7*X1
  781. SA7 A1+
  782.  
  783. *IF DEF,IAF$
  784. * CALL DRIVERS.
  785.  
  786. INI2 SA1 INIH
  787. SB6 VDRL+VDRM
  788. RJ CDR CALL *1TM* DRIVER
  789. SA6 VITM SAVE *1TM* DRIVER REQUEST WORD
  790. SA1 INIB
  791. SB6 VDRL+VDRN
  792. RJ CDR CALL *1TN* DRIVER
  793. *ELSE
  794. * CALL TWO PORT MUX DRIVER.
  795.  
  796. INI2 SA1 INIH
  797. SB6 VDRL+VDRM
  798. RJ CDR CALL *1TM* DRIVER
  799. SA6 VITM SAVE *1TM* DRIVER REQUEST WORD
  800. *ENDIF
  801. RJ WDP WAIT DRIVER PRESET COMPLETE
  802.  
  803. * DETERMINE MAXIMUM NUMBER OF USERS.
  804.  
  805. SA1 B0 SET TIMEOUT ACCORDING TO SSW1
  806. SX6 B1
  807. LX6 6-0
  808. BX6 X6*X1
  809. SA2 INIE SET INTO REQUEST
  810. LX6 25-6
  811. BX6 X6+X2
  812. SA6 A2 REWRITE REQUEST
  813. SYSTEM EJT,R,INIE UPDATE TIME IN EJT
  814. SX7 TINST
  815. SA7 LWAA FWA OF ALLOCATABLE MEMORY
  816. SA1 VMNL NUMBER OF MUX PORTS
  817. SA3 VNTP NUMBER OF NETWORK TERMINALS
  818. SX2 =C* NO TERMINALS DEFINED.*
  819. IX6 X3+X1 TOTAL MUX AND NETWORK TERMINALS
  820. SA6 A1 STORE TOTAL TERMINAL COUNT
  821. ZR X6,ABT IF NO TERMINALS DEFINED
  822. SX6 X6-MAXTT-1 CHECK TOTAL TERMINAL COUNT
  823. SX2 =C* TOO MANY TERMINALS.*
  824. PL X6,ABT IF TOO MANY TERMINALS
  825. *IF DEF,IAF$
  826. ZR X3,INI3 IF NO NETWORK TERMINALS
  827. RJ LNI LOAD NETWORK INTERFACE
  828. *ENDIF
  829.  
  830. * SET UP REPRIEVE PROCESSING.
  831.  
  832. INI3 REPRIEVE RPVB,SETUP,77B SET REPRIEVE PROCESSING
  833.  
  834. * ALLOCATE MEMORY AND TABLES.
  835.  
  836. RJ CAM CLEAR ALLOCATABLE MEMORY
  837. RJ ADS ALLOCATE DRIVER STACKS
  838. RJ ATT ALLOCATE TERMINAL TABLES
  839. RJ ATN ALLOCATE TERMINAL NAME TABLE
  840. RJ ART ALLOCATE REENTRY TABLES
  841. RJ AMS ALLOCATE MESSAGE STATUS TABLE
  842. RJ ANA ALLOCATE NETWORK ACTIVITY TABLE
  843. RJ ABM ALLOCATE BUFFER MEMORY
  844. RJ PMP PRESET MISCELLANEOUS POINTERS
  845.  
  846. * SET TABLE REFERENCE ADDRESSES IN INSTRUCTIONS.
  847.  
  848. SB5 TINS EXECUTIVE INSTRUCTION TABLE ADDRESS
  849. SB7 //TINSTL
  850. RJ SAD SET INSTRUCTION ADDRESSES
  851. SA1 VNTP CHECK IF NETWORK DEFINED
  852. ZR X1,INI4 IF NETWORK INTERFACE NOT LOADED
  853. SB5 TINS2 IAFEX4 INSTRUCTION TABLE ADDRESS
  854. SB7 /IAFEX4/TINSTL
  855. RJ SAD SET INSTRUCTION ADDRESSES
  856.  
  857. * ENTER IAFEX EXECUTIVE.
  858.  
  859. INI4 RJ SPC SET SUBSYSTEM PROCESSOR CALLS
  860. RJ STD START DRIVER(S)
  861. SB5 FBUF SET POINTERS TO CLEAR VERSION AREA
  862. SB6 FBUF+8
  863. SX6 B0+
  864. + SA6 B5 CLEAR WORD
  865. SB5 B5+B1
  866. LT B5,B6,* IF NOT COMPLETE
  867. VERSION INIA GET SYSTEM NAME
  868. MESSAGE FBUF,,R ISSUE DAYFILE MESSAGE
  869. DATE //DATE
  870. CLOCK //TIME
  871. TIME //CPTIME
  872. RTIME //START
  873. SX6 -1
  874. SA6 HEDR+4
  875. SYSTEM RSB,R,INIG GET BANNER MESSAGE
  876. SB6 HEDR+4
  877. SB7 HEDR+7
  878. INI4.1 SA1 B6 CONVERT ZEROS TO BLANKS IN HEADER
  879. SB6 B6+B1
  880. RJ ZTB
  881. SA6 A1+
  882. LE B6,B7,INI4.1 IF MORE WORDS TO CONVERT
  883. SA2 //START
  884. SA3 //SPRD
  885. AX2 36 REAL TIME IN SECONDS
  886. IX7 X2+X3 INCREMENT REAL TIME
  887. SA7 //SPRC
  888. SA7 //SPRD
  889. SA1 VNTP CHECK NETWORK TERMINALS
  890. BX7 X2
  891. AX1 24
  892. SX2 X1-VPST COMPARE TO FIRST LIVE TERMINAL NUMBER
  893. ZR X1,INI5 IF NO NETWORK TERMINALS DEFINED
  894. SA7 /IAFEX4/NFRT SET INITIAL *NETON* DELAY
  895. INI5 MESSAGE (=C*SBSB, IAF.*),5 TIMESHARING EXECUTIVE INITIATED
  896. EQ //IAF ENTER EXECUTIVE
  897.  
  898. INI6 MESSAGE (=C* USER ACCESS NOT VALID.*)
  899. ABORT
  900.  
  901.  
  902. INIA VFD 12/11B,12/0,12/0,24/FBUF
  903. INIB VFD 18/3L1TN,42/0
  904. INIC CON 0 JOB CONTROL REGISTERS
  905. INID CON 0 QUEUE PRIORITY/JOB ORIGIN TYPE
  906. INIE VFD 24/0,12/1,23/RTEJ,1/0
  907. VFD 60/0
  908. VFD 6/0,6/TXOT,48/0
  909. BSSZ EJPB-*+INIE
  910. INIG VFD 12/0,12/6,18/SYTL,18/HEDR+4
  911. INIH VFD 18/3L1TM,30/0,12/0 *1TM* CALL
  912. TITLE SUBROUTINES.
  913. ABM SPACE 4,25
  914. ** ABM - ALLOCATE BUFFER MEMORY (POTS).
  915. *
  916. * ENTRY (LWAA) = LWA+1 OF MEMORY ALLOCATED.
  917. * (VMNL) = TERMINAL COUNT.
  918. *
  919. * EXIT (LWAA) = LWA+1 OF POT LINK TABLE.
  920. * (VCPL) = FL CHANGE IN PROGRESS.
  921. * (VPAL) = POTS ALLOCATED.
  922. * (VPLP) = 12/LENGTH, 24/ FWA, 24/ LWA+1 OF
  923. * POT LINK TABLE.
  924. * (VBMP) = 36/, 24/ FWA OF BUFFER MEMORY.
  925. * (VPUL) = 1.
  926. * POT 0 IS RESERVED.
  927. *
  928. * TO *ABT* IF POT LINK TABLE OVERFLOW.
  929. *
  930. * USES X - 0, 1, 2, 3, 4, 5, 6, 7.
  931. * A - 1, 2, 3, 4, 5, 6, 7.
  932. * B - 2, 6, 7.
  933. *
  934. * CALLS ABT.
  935. *
  936. * MACROS MEMORY.
  937.  
  938.  
  939. ABM SUBR ENTRY/EXIT
  940.  
  941. * FIND PLT SIZE BASED ON TERMINALS IN SYSTEM.
  942.  
  943. SA1 VMNL DETERMINE NUMBER OF USERS
  944. SX2 VPLM
  945. IX1 X1*X2 CALCULATE PERCENTAGE OF PLT TO ALLOCATE
  946. SX2 VMXU
  947. IX1 X1/X2
  948. SX3 VMIL*VSCL+VLCL*VMIL INCREASE PLT DUE TO QUEUES
  949. AX3 2 CALCULATE PLT WORDS
  950. IX1 X3+X1 ADD TO PLT SIZE
  951. ABM0 SX4 VFLI/VCPC/4 INCREASE TO NEXT PLT INCREMENT
  952. SX2 X4
  953. IX1 X4+X1
  954. IX1 X1/X4
  955. IX1 X1*X2
  956. SX2 X1-VPLI
  957. PL X2,ABM1 IF PLT ABOVE MINIMUM SIZE
  958. SX1 VPLI USE MINIMUM SIZE
  959. EQ ABM4 ALLOCATE PLT
  960.  
  961. ABM1 SX2 X1-VPLM
  962. NG X2,ABM4 IF PLT BELOW MAXIMUM
  963. SX1 VPLM
  964.  
  965. * ALLOCATE POT LINK TABLE.
  966.  
  967. ABM4 SA2 LWAA GET FWA FOR PLT
  968. SX6 X1 SET POTS AVAILABLE
  969. LX6 2
  970. SA6 VPAL
  971. SB6 X2 SET PLT FWA
  972. IX7 X2+X1 SET LWA+1
  973. LX1 5 CALCULATE MAXIMUM FL
  974. IX3 X1+X7
  975. SX5 3777B-MNFL
  976. LX5 6
  977. IX5 X3-X5
  978. NG X5,ABM4.1 IF END OF FL OKAY
  979. SX5 X5+VFLI+1 INCREASE THE DIFFERENCE
  980. IX1 X1-X5 DECREASE MAXIMUM PLT SIZE
  981. AX1 5 CALCULATE PLT WORDS
  982. EQ ABM0 DECREASE TO NEXT PLT INCREMENT
  983.  
  984. ABM4.1 AX1 5 RESTORE PLT SIZE
  985. SA7 A2 REWRITE LWAA
  986. SB7 X7
  987. LX2 24 FORMAT PLT POINTER WORD
  988. LX1 48
  989. BX6 X7+X2
  990. BX6 X1+X6
  991. SA6 VPLP STORE PLT POINTER WORD
  992. SX1 X6-FWA CHECK FOR OVERFLOW
  993. SX2 =C* POT LINK TABLE OVERFLOW.*
  994. PL X1,ABT IF OVERFLOW
  995. SX7 X7+1
  996. SA7 VBMP
  997.  
  998. * VERIFY THAT PLT LENGTH IS WITHIN IAF FL.
  999. * IF IT IS NOT REDUCE PLT UNTIL FL IS REACHED.
  1000.  
  1001. MEMORY CM,ABMA SEE AMOUNT OF FL CURRENTLY ALLOCATED
  1002. SA2 VPLP
  1003. SA3 ABMA COMPARE MEMORY ALLOCATION
  1004. SX4 X2 SAVE LWA+1 OF PLT
  1005. LX2 -24
  1006. MX0 -12
  1007. LX3 59-29
  1008. SX2 X2 SAVE FWA OF PLT
  1009. SX3 X3 SAVE CURRENT FL
  1010. BX7 X3
  1011. IX2 X4-X2 LENGTH OF PLT
  1012. LX2 5 PLT LENGTH*32
  1013. SA4 VBMP
  1014. IX5 X4+X2
  1015. IX0 X5-X3
  1016. NG X0,ABM5 IF ENOUGH FIELD LENGTH AVAILABLE
  1017. IX0 X3-X4 LENGTH OF POTS
  1018. BX6 X0
  1019. AX0 5 (FL-VBMP)/32 = LENGTH OF PLT
  1020. AX6 3
  1021. SB2 24 SHIFT COUNT
  1022. SA2 A2
  1023. SA6 VPAL SET POTS AVAILABLE
  1024. AX3 X2,B2
  1025. SX3 X3 FWA OF PLT
  1026. MX5 36
  1027. IX3 X3+X0 LWA+1 OF PLT
  1028. BX2 X5*X2 SAVE FWA OF PLT
  1029. BX6 X3+X2
  1030. SA6 A2 SAVE NEW POINTERS
  1031.  
  1032. * RESERVE POT ZERO AND SET CURRENT FL IN *FLCW*.
  1033.  
  1034. ABM5 SA1 =77770000000000000010B
  1035. SA4 ABMD CREATE *1TA* FIELD LENGTH REQUEST
  1036. SA3 VPAL
  1037. BX6 X4+X7
  1038. BX7 X3
  1039. SA6 PMSG
  1040. SA7 VCPL SET FL INCREASE IN PROGRESS
  1041. SX6 B1
  1042. BX7 X1
  1043. SA5 VPLP GET POT LINK TABLE ADDRESS
  1044. SA6 VPUL
  1045. AX5 24
  1046. SA7 X5
  1047. EQ ABMX RETURN
  1048.  
  1049. ABMA DATA 0
  1050. ABMD VFD 18/3R1TA,6/0,12/4001B,24/0
  1051. ABT SPACE 4,10
  1052. ** ABT - INITIALIZATION ABORT.
  1053. *
  1054. * ENTRY (X2) = ADDRESS OF ERROR MESSAGE.
  1055. *
  1056. * EXIT (VRLL) = BITS 59 AND 58 SET.
  1057. * DAYFILE MESSAGE(S) ISSUED.
  1058. *
  1059. * CALLS MSG=, SYS=.
  1060.  
  1061.  
  1062. ABT BSS 0 ENTRY
  1063.  
  1064. * SET INITIALIZATION ABORT AND NO-RELOAD STATUS.
  1065.  
  1066. SA1 VRLL SET STATUS BITS
  1067. MX6 2
  1068. BX6 X6+X1
  1069. SA6 A1
  1070. ZR X2,ABT1 IF NO MESSAGE
  1071. MESSAGE X2,,R ISSUE ERROR MESSAGE
  1072. ABT1 MESSAGE (=C* IAFEX INITIALIZATION ABORT.*),,R
  1073. OFFSW 20B DESELECT DUMP OPTION
  1074. ABORT
  1075. ADS SPACE 4,30
  1076. ** ADS - ALLOCATE DRIVER STACKS.
  1077. *
  1078. * UPDATE THE *MUXP* AND *VDRL* TABLE ENTRIES
  1079. * AND ALLOCATE DRIVER CIRCULAR REQUEST STACKS.
  1080. * IF A DRIVER HAS NO PORTS DEFINED, ITS DRIVER WORD
  1081. * IS CLEARED TO ALLOW THE DRIVER TO COMPLETE INITIAL-
  1082. * IZATION AND DROP.
  1083. *
  1084. * ENTRY (LWAA) = LWA+1 OF ALLOCATED CORE.
  1085. * (MUXP - MUXP+MXMX) = MUX TABLE ENTRIES.
  1086. * 6/CH, 6/EQ, 12/, 12/UAL, 12/NT, 12/0
  1087. * NT = NUMBER OF TERMINALS.
  1088. * (VDRL - VDRL+4) = DRIVER INITIALIZATION WORDS.
  1089. * 12/IL, 6/0, 18/DN, 12/TC, 12/CL.
  1090. * IL = DRIVER INTERLOCK.
  1091. * DN = DRIVER NAME.
  1092. * TC = TERMINAL COUNT.
  1093. * CL = CONVERSION TABLE LENGTH.
  1094. *
  1095. * EXIT (LWAA) = LWA+1 OF DRIVER STACKS.
  1096. * (MUXP - MUXP+MXMX) = MUX TABLE ENTRIES.
  1097. * 6/CH, 6/EQ, 12/, 12/UAL, 12/NT, 12/FT
  1098. * FT = FIRST TERMINAL.
  1099. * (VDRL - VDRL+4) = DRIVER INITIALIZATION WORDS.
  1100. * 12/IL, 24/SA, 12/TC, 12/FT.
  1101. * IL = DRIVER INTERLOCK.
  1102. * SA = DRIVER STACK ADDRESS.
  1103. * TC = TERMINAL COUNT.
  1104. * FT = FIRST TERMINAL NUMBER.
  1105. *
  1106. * TO *ABT* IF DRIVER STACK OVERFLOW.
  1107. *
  1108. * USES A - 1, 2, 6, 7.
  1109. * X - 1, 2, 3, 4, 5, 6, 7.
  1110. * B - 4, 5, 6, 7.
  1111.  
  1112.  
  1113. ADS SUBR ENTRY/EXIT
  1114. SB4 VPST (B4) = FIRST TERMINAL NUMBER
  1115. SB6 MUXP (B6) = MUX TABLE ADDRESS
  1116. SB7 B0 (B7) = MUX TABLE INDEX
  1117. MX5 -12
  1118.  
  1119. * UPDATE MUX TABLE ENTRIES.
  1120.  
  1121. ADS0 SA1 B6+B7 READ MUX TABLE ENTRY
  1122. SB7 B7+B1
  1123. ZR X1,ADS0.1 IF END OF TABLE
  1124. BX3 X1
  1125. LX3 -12
  1126. BX6 -X5*X3 TERMINAL COUNT
  1127. SX7 B4 SET FIRST TERMINAL NUMBER
  1128. BX7 X1+X7
  1129. SB4 B4+X6 UPDATE FIRST TERMINAL NUMBER
  1130. SA7 A1 REWRITE TABLE ENTRY
  1131. EQ ADS0 PROCESS NEXT ENTRY
  1132.  
  1133. ADS0.1 SA1 LWAA GET LWA+1 OF PHYSICAL ALLOCATED CORE
  1134. SB4 VPST (B4) = FIRST TERMINAL NUMBER
  1135. SB5 X1 (B5) = DRIVER STACK ADDRESS
  1136. SB6 VDRL (B6) = DRIVER STATUS TABLE ADDRESS
  1137. SB7 B0 (B7) = DRIVER STATUS TABLE INDEX
  1138.  
  1139. * READ DRIVER STATUS TABLE ENTRY PARAMETERS.
  1140.  
  1141. ADS1 SA1 B6+B7 READ TABLE ENTRY
  1142. MX5 -12
  1143. SB7 B7+1 ADVANCE POINTER
  1144. NG X1,ADS3 IF END OF TABLE
  1145. BX2 -X5*X1 (X2) = CONVERSION AND ID TABLE LENGTH
  1146. BX3 X1
  1147. LX3 18
  1148. MX4 18
  1149. BX3 X4*X3 (X3)=DRIVER NAME, RIGHT JUSTIFIED
  1150. AX1 12
  1151. BX6 -X5*X1 (X6) = TERMINAL COUNT
  1152. NZ X6,ADS2 IF TERMINALS DEFINED
  1153. SA6 A1 CLEAR TABLE ENTRY
  1154. EQ ADS1 CONTINUE
  1155.  
  1156. * SET STACK ADDRESS AND FIRST TERMINAL IN TABLE ENTRY.
  1157.  
  1158. ADS2 SX1 B5 SET STACK ADDRESS
  1159. LX1 12
  1160. BX1 X1+X6 INSERT TERMINAL COUNT
  1161. SX7 B4 INSERT FIRST TERMINAL
  1162. LX1 12
  1163. BX1 X1+X7
  1164. SX7 B1 SET INTERLOCK
  1165. LX7 48-0
  1166. BX7 X7+X1
  1167. SA7 A1+ REWRITE TABLE ENTRY
  1168. SB4 B4+X6 UPDATE FIRST TERMINAL NUMBER
  1169.  
  1170. * SET UP DRIVER CIRCULAR STACK.
  1171.  
  1172. SX6 B5+5 SET *FIRST*
  1173. SA6 B5+B1
  1174. SA6 A6+B1 SET *IN*
  1175. SA6 A6+B1 SET *OUT*
  1176. SX6 X6+VDSL SET *LIMIT*
  1177. SA6 A6+B1
  1178. IX6 X6+X2 CALCULATE FWA OF NEXT STACK
  1179. BX7 X3+X6 FORMAT STACK HEADER
  1180. SA7 B5 WRITE STACK HEADER
  1181. SB5 X6+ UPDATE STACK ADDRESS
  1182. SX1 X6-FWA CHECK FOR OVERFLOW
  1183. NG X1,ADS1 IF NO OVERFLOW, LOOP
  1184. SX2 =C* DRIVER STACK OVERFLOW.*
  1185. EQ ABT ABORT INITIALIZATION
  1186.  
  1187. * CLEAR POINTER TO NEXT STACK FROM LAST ENTRY.
  1188.  
  1189. ADS3 ZR B7,ADS5 IF BACK AT START OF TABLE
  1190. SB7 B7-B1 READ PREVIOUS ENTRY
  1191. SA1 B6+B7
  1192. ZR X1,ADS3 IF NULL ENTRY
  1193. NG X1,ADS3 IF END OF TABLE
  1194. AX1 24 SET HEADER ADDRESS
  1195. SA2 X1
  1196. MX6 42
  1197. BX6 X6*X2 CLEAR POINTER
  1198. SA6 X1+ REWRITE HEADER
  1199.  
  1200. * UPDATE LWA+1 OF ALLOCATED CORE.
  1201.  
  1202. ADS5 SX6 B5+ SET LWA+1 ALLOCATED
  1203. SA6 LWAA
  1204. EQ ADSX RETURN
  1205. AMS SPACE 4,10
  1206. ** AMS - ALLOCATE NETWORK MESSAGE STATUS TABLE.
  1207. *
  1208. * THE START OF THE MESSAGE STATUS TABLE IS BIASED BACK-
  1209. * WARDS IN ORDER THAT NON-NETWORK TERMINAL ENTRIES NEED
  1210. * NOT BE ALLOCATED.
  1211. *
  1212. * ENTRY (LWAA) = LWA+1 OF MEMORY ALLOCATED.
  1213. * (VNTP) = 36/FIRST, 24/LAST NETWORK TERMINAL NUMBERS.
  1214. *
  1215. * EXIT (VMST) = 36/FWA, 24/LWA+1 OF MESSAGE STATUS TABLE.
  1216. * (LWAA) = LWA+1 OF MESSAGE STATUS TABLE.
  1217. *
  1218. * TO *ABT* IF MESSAGE STATUS TABLE OVERFLOW.
  1219. *
  1220. * USES A - 1, 2, 6.
  1221. * X - 1, 2, 6.
  1222.  
  1223.  
  1224. AMS SUBR ENTRY/EXIT
  1225. SA1 VNTP GET NETWORK TERMINAL POINTER
  1226. SX6 X1+ LAST TERMINAL NUMBER
  1227. AX1 24 SHIFT FIRST TERMINAL NUMBER
  1228. ZR X6,AMS1 IF NO NETWORK TERMINALS
  1229. IX6 X6-X1 NETWORK TERMINAL COUNT -1
  1230. SA2 LWAA GET LWA+1 ALLOCATED CORE
  1231. SX6 X6+B1 TERMINAL COUNT
  1232. IX6 X2+X6 SET LWA+1
  1233. IX2 X2-X1 SUBTRACT NON-NETWORK TERMINALS
  1234. SA6 A2 STORE (LWAA) = LWA+1
  1235. LX2 24 MERGE FWA AND LWA+1
  1236. BX6 X6+X2
  1237. AMS1 SA6 VMST STORE (VMST)
  1238. SX1 X6-FWA CHECK FOR OVERFLOW
  1239. SX2 =C* MESSAGE STATUS TABLE OVERFLOW.*
  1240. PL X1,ABT IF OVERFLOW
  1241. EQ AMSX RETURN
  1242. ANA SPACE 4,10
  1243. ** ANA - ALLOCATE NETWORK ACTIVITY TABLE.
  1244. *
  1245. * ALLOCATES ONE TABLE WORD PER EACH 32 NETWORK TERMINALS
  1246. * DEFINED.
  1247. *
  1248. * ENTRY (VNTP) = 36/FIRST, 24/LAST NETWORK TERMINAL NO.
  1249. * (LWAA) = LWA+1 OF MEMORY ALLOCATED.
  1250. *
  1251. * EXIT (LWAA) = LWA+1 OF NETWORK ACTIVITY TABLE.
  1252. * (VNAT) = 36/FWA, 24/LWA+1 OF NETWORK ACTIVITY TABLE.
  1253. *
  1254. * TO *ABT* IF TABLE OVERFLOW.
  1255. *
  1256. * USES A - 1, 2, 6.
  1257. * X - 1, 2, 3, 6.
  1258.  
  1259.  
  1260. ANA SUBR ENTRY/EXIT
  1261. SA1 VNTP GET NETWORK TERMINAL POINTER
  1262. SX6 B0+
  1263. ZR X1,ANA1 IF NO NETWORK TERMINALS
  1264. SX3 X1+33 LAST TERMINAL NUMBER + 33
  1265. AX1 24 FIRST TERMINAL NUMBER
  1266. IX1 X3-X1 TERMINAL COUNT + 32
  1267. SA2 LWAA
  1268. AX1 5 LENGTH = (TERMINAL COUNT+32)/32
  1269. IX6 X2+X1 SET LWA+1
  1270. SA6 A2+ STORE (LWAA)
  1271. LX2 24 SET FWA
  1272. BX6 X2+X6
  1273. ANA1 SA6 VNAT STORE (VNAT)
  1274. SX1 X6-FWA CHECK FOR OVERFLOW
  1275. SX2 =C* NETWORK ACTIVITY TABLE OVERFLOW.*
  1276. PL X1,ABT IF OVERFLOW
  1277. EQ ANAX RETURN
  1278. ART SPACE 4,10
  1279. ** ART - ALLOCATE REENTRY TABLE.
  1280. *
  1281. * ENTRY (LWAA) = LWA+1 OF ALLOCATED CORE.
  1282. * (VMNL) = TERMINAL COUNT.
  1283. *
  1284. * EXIT (LWAA) = LWA+1 OF REENTRY TABLE.
  1285. * (VRAP) = 36/ FWA, 24/ LWA+1 OF REENTRY TABLE.
  1286. *
  1287. * TO *ABT* IF REENTRY TABLE OVERFLOW.
  1288. *
  1289. * USES A - 1, 2, 6.
  1290. * X - 1, 2, 6.
  1291.  
  1292.  
  1293. ART SUBR ENTRY/EXIT
  1294. SA1 VMNL GET TERMINAL COUNT
  1295. SA2 LWAA GET LWA+1 ALLOCATED CORE
  1296. SX6 X1+VPST ADD PSEUDO-TERMINALS
  1297. IX6 X6+X2 SET LWA+1
  1298. SA6 A2 UPDATE (LWAA)
  1299. LX2 24 MERGE FWA AND LWA+1
  1300. BX6 X6+X2
  1301. SA6 VRAP STORE (VRAP)
  1302. SX1 X6-FWA CHECK FOR OVERFLOW
  1303. SX2 =C* REENTRY TABLE OVERFLOW.*
  1304. PL X1,ABT IF OVERFLOW
  1305. EQ ARTX RETURN
  1306. ATN SPACE 4,5
  1307. ** ATN - ALLOCATE TERMINAL NAME TABLE.
  1308. *
  1309. * ENTRY (LWAA) = LWA+1 OF ALLOCATED CORE.
  1310. * (VMNL) = TERMINAL COUNT.
  1311. *
  1312. * EXIT (VTNP) = 36/ FWA, 24/ LWA+1 OF NAMES TABLE.
  1313. * (LWAA) = LWA+1 OF NAMES TABLE.
  1314. *
  1315. * TO *ABT* IF OVERFLOW.
  1316. *
  1317. * USES X - 1, 2, 6.
  1318. * A - 1, 2, 6.
  1319.  
  1320.  
  1321. ATN SUBR ENTRY/EXIT
  1322. SA1 VMNL GET TERMINAL COUNT
  1323. SA2 LWAA LWA+1 OF ALLOCATED CORE
  1324. IX6 X2+X1
  1325. SA6 A2 UPDATE LWA+1
  1326. LX2 24
  1327. BX6 X6+X2
  1328. SA6 VTNP STORE POINTER TO TABLE
  1329. SX6 X6-FWA
  1330. SX2 =C* TERMINAL NAME TABLE OVERFLOW.*
  1331. PL X6,ABT IF OVERFLOW
  1332. EQ ATNX RETURN
  1333. ATT SPACE 4,10
  1334. ** ATT - ALLOCATE TERMINAL TABLES.
  1335. *
  1336. * ENTRY (VMNL) = TERMINAL COUNT.
  1337. * (LWAA) = LWA+1 OF ALLOCATED CORE.
  1338. *
  1339. * EXIT (VTTP) = 36/ FWA, 24/ LWA+1 OF TERMINAL TABLES.
  1340. * (LWAA) = LWA+1 OF TERMINAL TABLES.
  1341. * TERMINAL TABLE STATUSES SET COMPLETE.
  1342. *
  1343. * TO *ABT* IF TERMINAL TABLE OVERFLOW.
  1344. *
  1345. * USES A - 1, 2, 6.
  1346. * X - 1, 2, 3, 6.
  1347. * B - 6, 7.
  1348. *
  1349. * CALLS ABT.
  1350.  
  1351.  
  1352. ATT SUBR ENTRY/EXIT
  1353. SA1 VMNL GET TERMINAL COUNT
  1354. SX3 VTTL SET TERMINAL TABLE LENGTH
  1355. SX1 X1+VPST TERMINAL COUNT + PSEUDO TERMINALS
  1356. SA2 LWAA GET LWA+1 OF ALLOCATED CORE
  1357. IX6 X3*X1 LENGTH OF TABLES
  1358. SB6 X2 SET FWA
  1359. IX6 X6+X2 SET LWA+1
  1360. SA6 A2 UPDATE (LWAA)
  1361. SB7 X6+
  1362. LX2 24 MERGE FWA AND LWA+1
  1363. BX6 X6+X2
  1364. SA6 VTTP STORE (VTTP)
  1365. SX6 X6-FWA CHECK FOR OVERFLOW
  1366. SX2 =C* TERMINAL TABLE OVERFLOW.*
  1367. PL X6,ABT IF OVERFLOW
  1368.  
  1369. * SET ALL TERMINAL TABLE STATUSES COMPLETE.
  1370.  
  1371. SX1 VROT
  1372. SX6 1
  1373. ATT1 SA6 B6+X1 STORE VROT
  1374. SB6 B6+X3
  1375. LT B6,B7,ATT1 IF NOT COMPLETE
  1376. EQ ATTX RETURN
  1377. CAM SPACE 4,10
  1378. ** CAM - CLEAR ALLOCATABLE MEMORY.
  1379. *
  1380. * CLEAR THE ALLOCATABLE IAFEX TABLE AREA FROM THE LWA+1
  1381. * OF LOADED EXECUTIVE OVERLAY(S) TO THE FWA OF THE
  1382. * INITIALIZATION OVERLAY.
  1383. *
  1384. * ENTRY (LWAA) = FWA OF ALLOCATABLE MEMORY.
  1385. *
  1386. * USES A - 1, 6.
  1387. * X - 1, 6.
  1388. * B - 6, 7.
  1389.  
  1390.  
  1391. CAM1 SA6 B6 STORE ZERO WORD
  1392. SB6 B6+B1
  1393. LT B6,B7,CAM1 IF NOT COMPLETE
  1394. * EQ CAMX RETURN
  1395.  
  1396. * CAM - ENTRY/EXIT.
  1397.  
  1398. CAM SUBR ENTRY/EXIT
  1399. SA1 LWAA GET FWA OF ALLOCATABLE MEMORY
  1400. SB7 FWA SET INTIALIZER FWA
  1401. BX6 X6-X6
  1402. SB6 X1 (B6) = LWA+1 OF LOADS
  1403. EQ CAM1
  1404. CDR SPACE 4,25
  1405. ** CDR - CALL DRIVER.
  1406. *
  1407. * THE DRIVER NAME IS SET INTO THE SPECIFIED *VDRL*
  1408. * ENTRY, AND THE *VDRL* ADDRESS FOR THIS DRIVER IS SET
  1409. * INTO THE DRIVER REQUEST WORD. THIS DRIVER REQUEST
  1410. * WORD IS THEN USED TO CALL THE APPROPRIATE DRIVER.
  1411. *
  1412. * ENTRY (X1) = DRIVER NAME, LEFT JUSTIFIED.
  1413. * (B6) = ADDRESS OF *VDRL* ENTRY FOR THIS DRIVER.
  1414. *
  1415. * EXIT APPROPRIATE PPU DRIVER HAS BEEN LOADED.
  1416. * (X6) = FORMATTED DRIVER REQUEST WORD.
  1417. * = 18/DN, 24/0, 18/VA.
  1418. * DN = DRIVER NAME.
  1419. * VA = *VDRL* ADDRESS.
  1420. * (VDRL) = 18/0, 18/DN, 24/0.
  1421. * DN = DRIVER NAME.
  1422. *
  1423. * USES A - 2, 6.
  1424. * X - 1, 2, 3, 6.
  1425. * B - 6.
  1426. *
  1427. * MACROS SYSTEM.
  1428.  
  1429.  
  1430. CDR SUBR ENTRY/EXIT
  1431. BX6 X1 GET DRIVER NAME
  1432. LX6 42
  1433. SA6 B6
  1434. MX3 42
  1435. BX1 X3*X1 CLEAR BYTE 4 OF DRIVER REQUEST WORD
  1436. SX2 B6
  1437. BX6 X1+X2 SET ADDRESS IN DRIVER REQUEST WORD
  1438. SA6 CDRA REWRITE DRIVER REQUEST WORD
  1439. SA6 CDRB SAVE FORMATTED REQUEST WORD
  1440. CDR2 SYSTEM SPC,,CDRA CALL APPROPRIATE DRIVER
  1441. + SA2 B1+
  1442. NZ X2,* IF RA+1 NOT CLEAR
  1443. SA2 CDRA
  1444. NZ X2,CDR2 IF PPU NOT AVAILABLE
  1445. SA2 CDRB
  1446. BX6 X2 RETURN DRIVER REQUEST WORD
  1447. EQ CDRX EXIT
  1448.  
  1449.  
  1450. CDRA CON 0 DRIVER SCRATCH WORD
  1451. CDRB CON 0 FORMATTED DRIVER REQUEST WORD
  1452. CIC SPACE 4,10
  1453. ** CIC - CRACK *IAFEX* COMMAND.
  1454. *
  1455. * EXIT TO *ABT* IF ERROR IN ARGUMENTS.
  1456. * (X2) = ERROR MESSAGE.
  1457. *
  1458. * USES X - 1, 2, 4.
  1459. * A - 1, 4.
  1460. * B - 4, 5.
  1461. *
  1462. * CALLS ARG.
  1463.  
  1464.  
  1465. CIC SUBR ENTRY/EXIT
  1466. SA1 ACTR GET ARGUMENT COUNT
  1467. SA4 ARGR GET FIRST ARGUMENT
  1468. SB4 X1+
  1469. ZR B4,CICX IF NO ARGUMENTS
  1470. SB5 TICP ARGUMENT TABLE
  1471. RJ ARG PROCESS ARGUMENTS
  1472. SX2 =C* ERROR IN IAFEX ARGUMENTS.*
  1473. NZ X1,ABT IF ERROR IN ARGUMENTS
  1474. EQ CICX RETURN
  1475. CPA SPACE 4,10
  1476. ** CPA - CLEAR POINTER AREAS.
  1477. *
  1478. * CLEAR LOW CORE POINTER WORDS AND DRIVER MULTIPLEXER
  1479. * TABLE.
  1480. *
  1481. * EXIT AREAS CLEARED.
  1482. *
  1483. * USES A - 6.
  1484. * X - 6.
  1485. * B - 6, 7.
  1486.  
  1487.  
  1488. CPA SUBR ENTRY/EXIT
  1489. SB6 PGNR-1 LWA OF POINTER AREA
  1490. SX6 B0+
  1491.  
  1492. * CLEAR LOW CORE POINTERS.
  1493.  
  1494. CPA1 SA6 B6 CLEAR CORE
  1495. SB6 B6-B1
  1496. GT B6,B1,CPA1 IF NOT COMPLETE
  1497.  
  1498. * CLEAR MULTIPLEXER TABLE.
  1499.  
  1500. SB6 MUXP FWA OF MUX TABLE
  1501. SB7 TXORG LWA+1 OF MUX POINTERS
  1502. CPA2 SA6 B6 CLEAR CORE
  1503. SB6 B6+B1
  1504. LT B6,B7,CPA2 IF NOT COMPLETE
  1505. MX6 12
  1506. SB6 VDRL FWA OF *VDRL* ENTRIES
  1507. SB7 B6+4 LWA+1 OF *VDRL* ENTRIES
  1508. CPA3 SA6 B6 INITIALIZE ENTRIES TO NEGATIVE NUMBER
  1509. SB6 B6+B1
  1510. LT B6,B7,CPA3 IF NOT COMPLETE
  1511.  
  1512. * CLEAR *TGPM* AND *TSEM* QUEUES
  1513.  
  1514. SX6 B0+
  1515. SB6 VTRP
  1516. SB5 VTEQ
  1517. CPA4 SA6 B6 CLEAR QUEUE ENTRY
  1518. SB6 B6+B1
  1519. LT B6,B5,CPA4 IF MORE ENTRIES TO CLEAR
  1520. EQ CPAX RETURN
  1521. PMP SPACE 4,10
  1522. ** PMP - PRESET MISCELLANEOUS POINTERS.
  1523. *
  1524. * SETS THE FOLLOWING:
  1525. * COMMAND TABLE POINTER.
  1526. * HEADER MESSAGE ADDRESS.
  1527. * WORDS 50 AND 51 FOR SCP/UCP INTERFACE.
  1528. * IAF ACTIVE AS AN SCP.
  1529. * NETWORK DRIVER STACK ADDRESS.
  1530. * *TGPM* QUEUE STATUS WORDS.
  1531. *
  1532. * USES A - 1, 6, 7.
  1533. * X - 1, 6, 7.
  1534. *
  1535. * MACROS CALLSS.
  1536.  
  1537.  
  1538. PMP SUBR ENTRY/EXIT
  1539. SX6 TCOM SET COMMAND TABLE POINTER
  1540. SX7 TCOM+TCOML
  1541. LX6 24
  1542. BX7 X6+X7
  1543. SA7 VCTP
  1544. SX6 HEDR+3 SET HEADER MESSAGE ADDRESS
  1545. SA6 VWMP
  1546.  
  1547. * SET UP SYSTEM CONTROL POINT WORDS AND REQUEST SCP STATUS.
  1548.  
  1549. BX6 X6-X6 CLEAR SCP SHUTDOWN FLAG
  1550. SA6 VSHD
  1551. SA1 PMPB GET PARAMETER WORDS
  1552. SA2 A1+1
  1553. BX6 X1 STORE IN SCP AREA
  1554. LX7 X2
  1555. SA6 SSIW
  1556. SA7 A6+B1
  1557. CALLSS 0,PMPC,R SET SCP ACTIVE
  1558.  
  1559. * INITIALIZE *TGPM* QUEUE STATUS WORDS.
  1560.  
  1561. SA1 PMPA INITIALIZE QUEUE STATUS WORDS
  1562. BX6 X1
  1563. SA6 VGPL
  1564. SA1 A1+B1
  1565. BX6 X1
  1566. SA6 A6+B1
  1567.  
  1568. * ZERO *TGPM* AND *TSEM* QUEUES.
  1569.  
  1570. SA1 VTRP SET BEGINNING OF QUEUES
  1571. PMP1 SX6 A1-VTEQ
  1572. ZR X6,PMP2 IF END OF QUEUES
  1573. BX6 X6-X6
  1574. SA6 A1 ZERO QUEUE ENTRY
  1575. SA1 A1+1
  1576. EQ PMP1 CLEAR NEXT ENTRY
  1577.  
  1578. * INITIALIZE NETWORK DRIVER STACK ADDRESS.
  1579.  
  1580. PMP2 SA1 VNTP CHECK NETWORK TERMINAL POINTER
  1581. ZR X1,PMPX IF NO NAM INTERFACE - RETURN
  1582. SA1 NDRO GET DRIVER ORDINAL
  1583. SA1 VDRL+X1 READ STACK POINTER
  1584. AX1 24 SHIFT STACK ADDRESS
  1585. SX6 X1+
  1586. SX7 A1 SET STACK POINTER ADDRESS
  1587. SA6 /IAFEX4/NDSA STORE STACK ADDRESS
  1588. SA7 /IAFEX4/NSPA STORE STACK POINTER ADDRESS
  1589. EQ PMPX RETURN
  1590.  
  1591.  
  1592. PMPA VFD 6/VSCL,6/VMIL,12/VTSP,12/VTSP,12/VTSP,12/VTLP
  1593. VFD 6/VLCL,6/VMIL,12/VTLP,12/VTLP,12/VTLP,12/VTEQ
  1594. PMPB VFD 42/5LIAFEX,18/IFSI
  1595. VFD 1/0,1/1,22/0,18/MAXB,18//SMFIF/BSMF
  1596. PMPC CON 0
  1597. SAD SPACE 4,10
  1598. ** SAD - SET INSTRUCTION ADDRESSES.
  1599. *
  1600. * SETS ADDRESS FIELDS IN TABLE REFERENCE INSTRUCTIONS.
  1601. *
  1602. * ENTRY (TINST) = TABLE PRESET.
  1603. * 12/POS, 1/LWAF, 11/0, 12/PTRA, 12/ADDR
  1604. * POS = POSITION COUNTER + 2000B.
  1605. * LWAF = USE TABLE LWA IF SET.
  1606. * PTRA = POINTER ADDRESS.
  1607. * ADDR = INSTRUCTION ADDRESS.
  1608. * (B5) = ADDRESS OF *TINST* TABLE.
  1609. * (B7) = TABLE LENGTH.
  1610. *
  1611. * EXIT INSTRUCTION ADDRESS FIELD SET.
  1612. *
  1613. * USES A - 1, 2, 6.
  1614. * X - 1, 2, 3, 4, 6.
  1615. * B - 2, 3, 4, 5, 6, 7.
  1616.  
  1617.  
  1618. SAD SUBR ENTRY/EXIT
  1619. SAD1 SB7 B7-B1 DECREMENT TABLE INDEX
  1620. NG B7,SADX IF END OF TABLE - RETURN
  1621. SA1 B5+B7 READ NEXT TABLE ENTRY
  1622. UX4,B6 X1 (B6) = POSITION COUNTER
  1623. SA2 X1
  1624. AX1 18 SET TABLE POINTER
  1625. SX1 X1
  1626. SX3 X1
  1627. PL X1,SAD3 IF POSITIVE VALUE WANTED
  1628. BX1 -X1
  1629.  
  1630. * GET POINTER TABLE ENTRY.
  1631.  
  1632. SAD3 SA1 X1 READ TABLE POINTER
  1633. PL X3,SAD4 IF POSITIVE VALUE WANTED
  1634. BX1 -X1 COMPLEMENT POINTER
  1635. SAD4 MX7 -18 SET MASK FOR ADDRESS FIELD
  1636. SB4 B6-60 SET ADDRESS FIELD SHIFT COUNT
  1637. LX4 59-47 CHECK LWAF BIT
  1638. NG X4,SAD5 IF LWA WANTED
  1639. SX6 A1-VBMP CHECK POINTER
  1640. ZR X6,SAD5 IF BUFFER MEMORY POINTER
  1641. AX1 24 SET TABLE FWA
  1642.  
  1643. * INSERT TABLE ADDRESS IN INSTRUCTION.
  1644.  
  1645. SAD5 BX1 -X7*X1 MASK TABLE ADDRESS
  1646. AX2 X2,B4 POSITION INSTRUCTION
  1647. BX3 -X7*X2 MASK ADDRESS FIELD
  1648. BX2 X7*X2 CLEAR ADDRESS FIELD
  1649. SX3 X3 EXTEND SIGN
  1650. IX3 X3+X1 ADD (SUBTRACT) TABLE ADDRESS
  1651. BX3 -X7*X3
  1652. BX2 X2+X3 MERGE ADDRESS FIELD AND INSTRUCTION
  1653. LX6 X2,B6 REPOSITION INSTRUCTION
  1654. SA6 A2 REWRITE INSTRUCTION
  1655. EQ SAD1 LOOP FOR NEXT ENTRY
  1656. SPC SPACE 4,10
  1657. ** SPC - SET PROCESSOR CALLS.
  1658. *
  1659. * SET IAFEX MAIN CONTROL LOOP TO CALL OR BYPASS NETWORK
  1660. * INTERFACE CODE.
  1661. *
  1662. * ENTRY (VNTP) = NETWORK TERMINAL POINTER.
  1663. *
  1664. * EXIT MAIN LOOP *RJ* INSTRUCTIONS PRESET.
  1665. *
  1666. * USES A - 1, 2, 6.
  1667. * X - 1, 2, 6.
  1668.  
  1669.  
  1670. SPC SUBR ENTRY/EXIT
  1671. SA1 SPCA ASSUME NO CALLS
  1672. SA2 VNTP
  1673. ZR X2,SPC1 IF NO NETWORK
  1674. SA1 SPCB
  1675. SPC1 BX6 X1
  1676. SA6 //IAFA
  1677. EQ SPCX EXIT
  1678.  
  1679. SPCA SB0 0 (NO-OP)
  1680. SB0 0 FILL WORD
  1681. SPCB RJ /IAFEX4/NDR (EXECUTE NETWORK DRIVER)
  1682. STD SPACE 4,10
  1683. ** STD - START DRIVERS.
  1684. *
  1685. * CLEAR DRIVER INTERLOCKS TO ALLOW DRIVERS TO PICK
  1686. * UP THEIR STACK ADDRESSES AND COMPLETE LOADING.
  1687. *
  1688. * ENTRY (VDRL - VDRL+4) = DRIVER INITIALIZATION WORDS.
  1689. * 12/IL, 24/SA, 12/TC, 12/FT.
  1690. * IL = DRIVER INTERLOCK.
  1691. * SA = STACK ADDRESS.
  1692. * TC = TERMINAL COUNT.
  1693. * FT = FIRST TERMINAL NUMBER.
  1694. *
  1695. * EXIT DRIVER INTERLOCK BITS CLEARED.
  1696. *
  1697. * USES A - 1, 7.
  1698. * X - 1, 6, 7.
  1699. * B - 5, 7.
  1700.  
  1701.  
  1702. STD SUBR ENTRY/EXIT
  1703. SB7 B0 SET DRIVER WORD INDEX
  1704. MX6 12 SET MASK
  1705. SB5 VDRL DRIVER WORD POINTER
  1706. STD1 SA1 B5+B7 READ DRIVER WORD
  1707. SB7 B7+B1 ADVANCE INDEX
  1708. NG X1,STDX IF END OF DRIVER WORD TABLE, RETURN
  1709. BX7 -X6*X1 CLEAR INTERLOCK
  1710. SA7 A1
  1711. EQ STD1 LOOP FOR NEXT DRIVER
  1712. WDP SPACE 4,10
  1713. ** WDP - WAIT DRIVER PRESET COMPLETE.
  1714. *
  1715. * WAIT FOR DRIVER(S) TO SIGNAL COMPLETION OF FIRST PHASE
  1716. * OF INITIALIZATION BY SETTING *VDRL* WORD(S).
  1717. *
  1718. * ENTRY (VDRL - VDRL+4) = DRIVER INITIALIZATION WORDS.
  1719. * 11/0, 1/IL, 24/DN, 12/TC, 12/CL.
  1720. * IL = INTERLOCK (DRIVER RESPONSE) BIT.
  1721. * DN = DRIVER NAME.
  1722. * TC = TERMINAL (PORT) COUNT.
  1723. * CL = ID AND CONVERSION TABLE LENGTH.
  1724. *
  1725. * EXIT (VMNL) = NUMBER OF DRIVER PORTS.
  1726. * (VHMP) = 36/HIGHEST MUX PORT, 24/0.
  1727. * (VNTP) = NUMBER OF NETWORK TERMINALS.
  1728. *
  1729. * USES A - 1, 6.
  1730. * X - 0, 1, 2, 4, 5, 6.
  1731. *
  1732. * CALLS RCL=.
  1733.  
  1734.  
  1735. WDP SUBR ENTRY/EXIT
  1736. SX0 B0+ INITIALIZE PORT COUNT
  1737. SX5 VDRL
  1738. WDP1 RECALL WAIT
  1739. SA1 X5 READ DRIVER RESPONSE
  1740. MX4 -12
  1741. MX2 12
  1742. BX2 X2*X1
  1743. ZR X2,WDP1 IF DRIVER PRESET NOT COMPLETE
  1744. NG X1,WDP2 IF ALL DRIVERS COMPLETE
  1745. AX1 12 MASK PORT COUNT
  1746. BX1 -X4*X1
  1747. SX5 X5+B1 ADVANCE DRIVER POINTER
  1748. IX0 X1+X0 UPDATE PORT COUNT
  1749. EQ WDP1 LOOP FOR NEXT DRIVER
  1750.  
  1751. * STORE DRIVER PORT COUNT AND RETURN.
  1752.  
  1753. WDP2 AX1 12
  1754. BX6 -X4*X1
  1755. SA6 VNTP SET TERMINAL COUNT
  1756. SX6 X0+ STORE PORT COUNT
  1757. SA6 VMNL
  1758. ZR X6,WDPX IF NO MUX PORTS
  1759. SX6 X6+VPST-1 SET HIGHEST MUX PORT NUMBER
  1760. LX6 24
  1761. SA6 VHMP
  1762. EQ WDPX RETURN
  1763. TITLE COMMON DECKS.
  1764. SPACE 4
  1765. *CALL COMCARG
  1766. *CALL COMCCIO
  1767. *CALL COMCCPM
  1768. *CALL COMCLFM
  1769. *CALL COMCOVL
  1770. *CALL COMCSYS
  1771. *CALL COMCPFM
  1772. *CALL COMCDXB
  1773. *CALL COMCMVE
  1774. *IF DEF,IAF$
  1775. *CALL COMCZTB
  1776. LIST X
  1777. *CALL COMCLNI
  1778. LIST *
  1779. *CALL COMCLOD
  1780. *ENDIF
  1781. TITLE INITIALIZATION TABLES AND BUFFERS.
  1782. SPACE 4,5
  1783. ** TICP - TABLE OF *IAFEX* COMMAND PARAMETERS.
  1784.  
  1785.  
  1786. TICP BSS 0
  1787. T ARG ATAS,ATPV,400B
  1788. ARG
  1789. FBUF SPACE 4,10
  1790. USE BUFFERS
  1791.  
  1792. ** FBUF - ALL-PURPOSE CIO CIRCULAR BUFFER.
  1793.  
  1794.  
  1795. FBUF BSSZ 1001B ALL-PURPOSE CIO BUFFER
  1796. FBUFL EQU *-FBUF
  1797. TINS SPACE 4,10
  1798. ** TINS - EXECUTIVE OVERLAY INSTRUCTION MODIFICATION TABLE.
  1799.  
  1800.  
  1801. TINS BSSZ 300B
  1802. TINSL EQU *-TINS
  1803. ERRMI TINSL-//TINSTL
  1804. TINS2 SPACE 4,10
  1805. ** TINS2 - IAFEX4 INSTRUCTION MODIFICATION TABLE.
  1806.  
  1807.  
  1808. TINS2 BSSZ 300B
  1809. TINS2L EQU *-TINS2
  1810. ERRMI TINS2L-/IAFEX4/TINSTL
  1811. QUAL
  1812. SPACE 4,10
  1813. ** GLOBAL SYMBOL DEFINITIONS.
  1814.  
  1815.  
  1816. *IF DEF,IAF$
  1817. IAFEX EQU /IAFINI/INI
  1818. *ELSE
  1819. RDFEX EQU /IAFINI/INI
  1820. *ENDIF
  1821. SSJ= EQU 0
  1822. RFL= EQU *
  1823. EJECT
  1824. TTL IAFEX1 - TTY EXECUTIVE PROCESSOR.
  1825. IDENT IAFEX1,TRQT,PRS,1,0
  1826. *COMMENT IAFEX - EXECUTIVE PROCESSOR.
  1827. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  1828. BASE DECIMAL
  1829. SPACE 4
  1830. *** IAF - INTERACTIVE FACILITY.
  1831. * R. E. TATE 70/03/17.
  1832. * P. D. FARRELL 75/02/07.
  1833. * P. D. FARRELL 77/03/17.
  1834. * L. K. TUTTLE, K. F. REHM 81/10/21.
  1835. SPACE 4
  1836. *** IAF PERFORMS INTERACTIVE PROCESSING FOR NOS. IT CRACKS
  1837. * COMMANDS FROM INTERACTIVE USERS AND CALLS THE APPROPRIATE
  1838. * ROUTINE TO PROCESS THE COMMAND. IT MAKES THE REQUESTS
  1839. * TO DUMP SOURCE INPUT TO DISK AND TO REFILL OUTPUT BUFFERS
  1840. * FROM DISK. IT ALSO HANDLES BUFFER MEMORY ALLOCATION.
  1841. * THE AMOUNT OF MEMORY REQUIRED BY *IAFEX* WILL BE INCREASED
  1842. * AS MORE TERMINALS BECOME ACTIVE.
  1843. SPACE 4
  1844. *** PROGRAMS CALLED.
  1845. *
  1846. * 1TA - IAFEX AUXILIARY.
  1847. * 1TO - TERMINAL INPUT/OUTPUT.
  1848. * 1MA - ISSUE DAYFILE MESSAGE.
  1849. EJECT
  1850. MACROS TITLE MACROS.
  1851. SPACE 4
  1852. COMMND SPACE 4
  1853. ** COMMND - THIS MACRO GENERATES THE ENTRY ADDRESSES AND A TAG
  1854. * WITH THE VALUE OF THE COMMAND BITS (59 - 47) FOR THE *IAFEX*
  1855. * REENTRY QUEUE.
  1856. *
  1857. * DEFINITIONS.
  1858. *
  1859. * PROC = ENTRY POINT OF ROUTINE TO PROCESS THIS COMMAND.
  1860. * SYSR = QUEUE REQUEST TO BE PLACED IN.
  1861. * NPRO = ADDRESS TO RETURN TO WHEN THIS ENTRY COMPETE.
  1862. * ERRA = ADDRESS TO RETURN TO IF ERROR ON COMPLETION.
  1863. * FUNC = FUNCTION CODE TO BE PASSED TO THE CALLED PROGRAM.
  1864. * (ALSO SEE TSR FOR ADDITIONAL DOCUMENTATION.)
  1865.  
  1866.  
  1867. COMMND MACRO PROC,SYSR,NPRO,ERRA,FUNC
  1868. PROC$ EQU *
  1869. VFD 1/0
  1870. IFC NE,*SYSR**
  1871. VFD 5/SYSR-TRQT
  1872. ELSE 1
  1873. VFD 5/0
  1874. IFC NE,*FUNC**
  1875. VFD 6/FUNC
  1876. ELSE 1
  1877. VFD 6/0
  1878. VFD 12/PROC-TSRPROC
  1879. IFC NE,*ERRA**
  1880. VFD 18/ERRA
  1881. ELSE 1
  1882. VFD 18/TSA SET ABORT
  1883. IFC NE,*NPRO**
  1884. VFD 18/NPRO
  1885. ELSE 1
  1886. VFD 18/TSA SET ABORT
  1887. ENDM
  1888. INDEX SPACE 4
  1889. *** INDEX - INDEXED TABLE ENTRY GENERATION.
  1890. *
  1891. *
  1892. * INDEX GENERATES TABLES WHICH ARE TO BE INDEXED BY VALUES
  1893. * WHICH MAY CHANGE DUE TO ASSEMBLY MODES OR OPTIONS.
  1894. *
  1895. *
  1896. * FIRST CALL - SET START OF TABLE AND GENERATE DEFAULT ENTRIES.
  1897. *
  1898. *NAME INDEX MACRO,LENGTH,ADDRESS
  1899. * ENTRY *NAME* = NAME OF TABLE.
  1900. * *LENGTH* = TABLE LENGTH.
  1901. *
  1902. * *MACRO* = NAME OF MACRO WHICH GENERATES TABLE ENTRY.
  1903. * CON ADDRESS
  1904. *
  1905. * *ADDRESS* = ADDRESS FIELD OF ENTRY GENERATION
  1906. * INSTRUCTION. ADDRESS MUST BE EXPRESSED
  1907. * AS A DELIMITED CHARACTER STRING. THIS
  1908. * TO ALLOW ALMOST ANYTHING IN AN ADDRESS
  1909. * FIELD.
  1910. *
  1911. * EXIT *.1* = MICRO OF *MACRO*
  1912. * *NAME* = *.1* = BASE ADDRESS OF TABLE.
  1913. * *NAMEL* = LENGTH OF TABLE.
  1914. * *TBLLGH* = LENGTH OF TABLE FOR LOCAL USE.
  1915. *
  1916. * USES MICRO *.2*.
  1917. *
  1918. *
  1919. * TABLE ENTRY GENERATION -
  1920. *
  1921. *NAME INDEX ,IND,ADDRESS
  1922. * ENTRY *NAME* = NAME OF TABLE ENTRY.
  1923. * *IND* = INDEX AT WHICH ENTRY IS TO BE PLACED.
  1924. * *ADDRESS* = ADDRESS FIELD OF ENTRY GENERATION
  1925. * INSTRUCTION.
  1926. *
  1927. * EXIT *NAME* = ADDRESS OF ENTRY.
  1928. *
  1929. * USES MICRO *.2*.
  1930.  
  1931.  
  1932. MACRO INDEX,NAME,MAC,IND,ADD
  1933. IFC NE,*MAC**
  1934. .1 MICRO 1,, MAC
  1935. .2 MICRO 1,,ADD
  1936. NAME ".1" ".2"
  1937. .1 SET NAME
  1938. TBLLGH SET IND
  1939. NAME_L EQU IND
  1940. DUP IND-1,1
  1941. ".1" ".2"
  1942. ORG .1+TBLLGH
  1943. ELSE
  1944. .2 MICRO 1,,ADD
  1945. ORG .1+IND
  1946. LOC IND
  1947. ".1" ".2"
  1948. ORG .1+IND
  1949. NAME BSS 0
  1950. ORG .1+TBLLGH
  1951. ENDIF
  1952. ENDM
  1953. INMOD SPACE 4
  1954. ** INMOD - THIS MACRO IN CONJUNCTION WITH THE FOLLOWING OPDEF,S
  1955. * MAKES IT POSSIBLE TO SPECIFY A MODIFIER ON ALL 30 BIT
  1956. * INCREMENT INSTRUCTIONS. THIS MODIFER MUST BE IN THE FORM
  1957. * OF A POINTER TO ONE OF THE TABLE POINTERS THAT IS SET
  1958. * DYNAMICALLY AT INITILIZATION TIME. THE INSTRUCTION WILL
  1959. * BE MODIFIED DURING INITILIZATION.
  1960. * THIS IS USEFUL FOR ACCESSING THE POINTERS THAT ARE
  1961. * DYNAMICALLY SET AT INITILIZATION TIME SUCH AS THE FIRST
  1962. * WORD ADDRESS OF THE TERMINAL TABLE.
  1963. *
  1964. * DEFINITIONS.
  1965. *
  1966. * PTRA = POINTER DESIRED.
  1967. * LWAF = IF DEFINED TAKE LWA INSTEAD OF FWA.
  1968. *
  1969. * EXAMPLE-
  1970. * TA1 B5,VTTP
  1971. * THIS WILL GENERATE A 30 BIT INSTRUCTION OF THE FOLLOWING FORM
  1972. * SA1 B5+K
  1973. * WHERE K = THE FIRST WORD ADDRESS OF THE TERMINAL TABLE.
  1974.  
  1975.  
  1976. INMOD MACRO PTRA,LWAF
  1977. LOCAL INM1,INM2
  1978. QUAL
  1979. * GENERATE REFERENCE TO SYMBOL.
  1980. INM1 SET PTRA
  1981. * GENERATE TABLE ENTRY.
  1982. INM1 SET *P
  1983. INM2 SET *
  1984. IFEQ INM1,60,2
  1985. INM1 SET 0
  1986. INM2 SET *-1
  1987. TINST RMT
  1988. VFD 12/2000B+INM1
  1989. IFC EQ,*LWAF**
  1990. VFD 12/0
  1991. ELSE 1
  1992. VFD 12/4000B
  1993. VFD 18/PTRA
  1994. VFD 18/INM2
  1995. TINST RMT
  1996. QUAL *
  1997. ENDM
  1998. OPDEFS SPACE 4
  1999. ** OPDEF,S USED WITH INMOD.
  2000.  
  2001.  
  2002. TAAQ,Q OPDEF P1,P2,P3,P4
  2003. SA.P1 A.P2+P3
  2004. INMOD P4
  2005. ENDM
  2006.  
  2007.  
  2008. TAA,Q OPDEF P1,P2,P4
  2009. SA.P1 A.P2+0
  2010. INMOD P4
  2011. ENDM
  2012.  
  2013.  
  2014. TAAQ,Q,Q OPDEF P1,P2,P3,P4,P5
  2015. SA.P1 A.P2+P3
  2016. INMOD P4,P5
  2017. ENDM
  2018.  
  2019.  
  2020. TAA,Q,Q OPDEF P1,P2,P4,P5
  2021. SA.P1 A.P2+0
  2022. INMOD P4,P5
  2023. ENDM
  2024.  
  2025.  
  2026. TABQ,Q OPDEF P1,P2,P3,P4
  2027. SA.P1 B.P2+P3
  2028. INMOD P4
  2029. ENDM
  2030.  
  2031.  
  2032. TAB,Q OPDEF P1,P2,P4
  2033. SA.P1 B.P2+0
  2034. INMOD P4
  2035. ENDM
  2036.  
  2037.  
  2038. TABQ,Q,Q OPDEF P1,P2,P3,P4,P5
  2039. SA.P1 B.P2+P3
  2040. INMOD P4,P5
  2041. ENDM
  2042.  
  2043.  
  2044. TAB,Q,Q OPDEF P1,P2,P4,P5
  2045. SA.P1 B.P2+0
  2046. INMOD P4,P5
  2047. ENDM
  2048.  
  2049.  
  2050. TAXQ,Q OPDEF P1,P2,P3,P4
  2051. SA.P1 X.P2+P3
  2052. INMOD P4
  2053. ENDM
  2054.  
  2055.  
  2056. TAX,Q OPDEF P1,P2,P4
  2057. SA.P1 X.P2+0
  2058. INMOD P4
  2059. ENDM
  2060.  
  2061.  
  2062. TAXQ,Q,Q OPDEF P1,P2,P3,P4,P5
  2063. SA.P1 X.P2+P3
  2064. INMOD P4,P5
  2065. ENDM
  2066.  
  2067.  
  2068. TAX,Q,Q OPDEF P1,P2,P4,P5
  2069. SA.P1 X.P2+0
  2070. INMOD P4,P5
  2071. ENDM
  2072.  
  2073.  
  2074. TAQ,Q OPDEF P1,P3,P4
  2075. SA.P1 B0+P3
  2076. INMOD P4
  2077. ENDM
  2078.  
  2079.  
  2080. TAQ,Q,Q OPDEF P1,P3,P4,P5
  2081. SA.P1 B0+P3
  2082. INMOD P4,P5
  2083. ENDM
  2084.  
  2085.  
  2086. TBAQ,Q OPDEF P1,P2,P3,P4
  2087. SB.P1 A.P2+P3
  2088. INMOD P4
  2089. ENDM
  2090.  
  2091.  
  2092. TBA,Q OPDEF P1,P2,P4
  2093. SB.P1 A.P2+0
  2094. INMOD P4
  2095. ENDM
  2096.  
  2097.  
  2098. TBAQ,Q,Q OPDEF P1,P2,P3,P4,P5
  2099. SB.P1 A.P2+P3
  2100. INMOD P4,P5
  2101. ENDM
  2102.  
  2103.  
  2104. TBA,Q,Q OPDEF P1,P2,P4,P5
  2105. SB.P1 A.P2+0
  2106. INMOD P4,P5
  2107. ENDM
  2108.  
  2109.  
  2110. TBBQ,Q OPDEF P1,P2,P3,P4
  2111. SB.P1 B.P2+P3
  2112. INMOD P4
  2113. ENDM
  2114.  
  2115.  
  2116. TBB,Q OPDEF P1,P2,P4
  2117. SB.P1 B.P2+0
  2118. INMOD P4
  2119. ENDM
  2120.  
  2121.  
  2122. TBBQ,Q,Q OPDEF P1,P2,P3,P4,P5
  2123. SB.P1 B.P2+P3
  2124. INMOD P4,P5
  2125. ENDM
  2126.  
  2127.  
  2128. TBB,Q,Q OPDEF P1,P2,P4,P5
  2129. SB.P1 B.P2+0
  2130. INMOD P4,P5
  2131. ENDM
  2132.  
  2133.  
  2134. TBXQ,Q OPDEF P1,P2,P3,P4
  2135. SB.P1 X.P2+P3
  2136. INMOD P4
  2137. ENDM
  2138.  
  2139.  
  2140. TBX,Q OPDEF P1,P2,P4
  2141. SB.P1 X.P2+0
  2142. INMOD P4
  2143. ENDM
  2144.  
  2145.  
  2146. TBXQ,Q,Q OPDEF P1,P2,P3,P4,P5
  2147. SB.P1 X.P2+P3
  2148. INMOD P4,P5
  2149. ENDM
  2150.  
  2151.  
  2152. TBX,Q,Q OPDEF P1,P2,P4,P5
  2153. SB.P1 X.P2+0
  2154. INMOD P4,P5
  2155. ENDM
  2156.  
  2157.  
  2158. TBQ,Q OPDEF P1,P3,P4
  2159. SB.P1 B0+P3
  2160. INMOD P4
  2161. ENDM
  2162.  
  2163.  
  2164. TBQ,Q,Q OPDEF P1,P3,P4,P5
  2165. SB.P1 B0+P3
  2166. INMOD P4,P5
  2167. ENDM
  2168.  
  2169.  
  2170. TXAQ,Q OPDEF P1,P2,P3,P4
  2171. SX.P1 A.P2+P3
  2172. INMOD P4
  2173. ENDM
  2174.  
  2175.  
  2176. TXA,Q OPDEF P1,P2,P4
  2177. SX.P1 A.P2+0
  2178. INMOD P4
  2179. ENDM
  2180.  
  2181.  
  2182. TXAQ,Q,Q OPDEF P1,P2,P3,P4,P5
  2183. SX.P1 A.P2+P3
  2184. INMOD P4,P5
  2185. ENDM
  2186.  
  2187.  
  2188. TXA,Q,Q OPDEF P1,P2,P4,P5
  2189. SX.P1 A.P2+0
  2190. INMOD P4,P5
  2191. ENDM
  2192.  
  2193.  
  2194. TXBQ,Q OPDEF P1,P2,P3,P4
  2195. SX.P1 B.P2+P3
  2196. INMOD P4
  2197. ENDM
  2198.  
  2199.  
  2200. TXB,Q OPDEF P1,P2,P4
  2201. SX.P1 B.P2+0
  2202. INMOD P4
  2203. ENDM
  2204.  
  2205.  
  2206. TXBQ,Q,Q OPDEF P1,P2,P3,P4,P5
  2207. SX.P1 B.P2+P3
  2208. INMOD P4,P5
  2209. ENDM
  2210.  
  2211.  
  2212. TXB,Q,Q OPDEF P1,P2,P4,P5
  2213. SX.P1 B.P2+0
  2214. INMOD P4,P5
  2215. ENDM
  2216.  
  2217.  
  2218. TXXQ,Q OPDEF P1,P2,P3,P4
  2219. SX.P1 X.P2+P3
  2220. INMOD P4
  2221. ENDM
  2222.  
  2223.  
  2224. TXX,Q OPDEF P1,P2,P4
  2225. SX.P1 X.P2+0
  2226. INMOD P4
  2227. ENDM
  2228.  
  2229.  
  2230. TXXQ,Q,Q OPDEF P1,P2,P3,P4,P5
  2231. SX.P1 X.P2+P3
  2232. INMOD P4,P5
  2233. ENDM
  2234.  
  2235.  
  2236. TXX,Q,Q OPDEF P1,P2,P4,P5
  2237. SX.P1 X.P2+0
  2238. INMOD P4,P5
  2239. ENDM
  2240.  
  2241.  
  2242. TXQ,Q OPDEF P1,P3,P4
  2243. SX.P1 B0+P3
  2244. INMOD P4
  2245. ENDM
  2246.  
  2247.  
  2248. TXQ,Q,Q OPDEF P1,P3,P4,P5
  2249. SX.P1 B0+P3
  2250. INMOD P4,P5
  2251. ENDM
  2252.  
  2253.  
  2254. USECMN SPACE 4
  2255. ** USECMN - THIS MACRO GENERATES THE TABLE ENTRIES AND THE
  2256. * INDEX WORDS FOR PROCESSING USER COMMANDS.
  2257. *
  2258. * EACH CALL GENERATES A WORD WHICH CONTAINS THE NAME
  2259. * OF THE COMMAND LEFT JUSTIFIED IN DISPLAY CODE AND
  2260. * THE ADDRESS OF THE COMMAND PROCESSOR. A SECOND WORD
  2261. * IS ALSO GENERATED WHICH INDICATES WHETHER THE COMMAND IS A
  2262. * VALID SECONDARY COMMAND, THE NUMBER OF LEGAL PARAMETERS,
  2263. * AND THE NUMBER OF TIMES THE COMMAND HAS BEEN PROCESSED.
  2264. * EACH CALL FOR A COMMAND STARTING WITH A DIFFERENT CHARACTER
  2265. * THAN THE PREVIOUS CALL SETS A VALUE WHICH IS USED
  2266. * TO BUILD INDEX WORDS TO THE COMMAND TABLE TO REDUCE
  2267. * SEARCH TIME. (SEE TCOM TABLE)
  2268. *
  2269. *
  2270. * TCOM TABLE FORMAT.
  2271. *
  2272. * WORD - 1.
  2273. * VFD 42/0LCOMMAND,18/PROCESSOR ADDRESS.
  2274. * WORD - 2.
  2275. * VFD 6/BITS USED FOR COMMAND FLAGS
  2276. * VFD 6/NUMBER OF PARAMETERS
  2277. * VFD 12/ FIELD LENGTH
  2278. * VFD 18/SUB-SYSTEMS VALID
  2279. * VFD 18/OCCURENCE COUNT
  2280. * USECMN NAME,ROUT,COUN,BITS,,P
  2281. *
  2282. * DEFINITIONS.
  2283. *
  2284. * NAME = NAME OF COMMAND.
  2285. * ROUT = ENTRY ADDRESS OF PROCESSING ROUTINE.
  2286. * COUN = MAXIMUM NUMBER OF PARAMETERS LEGAL IN A COMMAND.
  2287. * IF IT IS NOT DEFINED, ONE IS ASSUMED. IF IT IS DEFINED AS
  2288. * ZERO, IT WILL BE ASSUMED ANY NUMBER ARE LEGAL.
  2289. * BITS = NON NULL HAVE FOLLOWING BIT MEANINGS
  2290. * BIT MEANING
  2291. * 59 SECONDARY COMMAND.
  2292. * 58 LEGAL COMMAND WHEN CHARGE NUMBER REQUIRED.
  2293. * 57 INCORRECT FOR NETWORK TERMINAL.
  2294. * P1, P2, ETC. = SUB-SYSTEMS COMMAND IS VALID IN. IF THESE
  2295. * ARE NEGATIVE THEN THEY ARE THE SUBSYSTEMS
  2296. * NOT VALID IN. ALL ENTRIES IN P FIELDS MUST
  2297. * BE POSITIVE OR ALL NEGATIVE. IF THE P FIELD IS
  2298. * NULL, THEN THE DEFAULT IS TAKEN WHICH IS ALL SYSTEMS
  2299. * EXCEPT ACCESS.
  2300.  
  2301.  
  2302. SCOM EQU 40B
  2303. CHGR EQU 20B
  2304. INVN EQU 10B INCORRECT FOR NETWORK TERMINALS
  2305.  
  2306.  
  2307. USECMN MACRO NAME,ROUT,COUN,BITS,FL,P
  2308. U1 MICRO 1,7,*NAME* TRUNCATE NAME TO SEVEN CHARACTERS
  2309. U2 MICRO 1,1,*NAME* GET FIRST CHARACTER OF NAME
  2310. IFC NE,*"U2"*"U3"*,2 IF NEW BEGINNING CHARACTER
  2311. US"U2" SET *
  2312. U3 MICRO 1,1,*"U2"*
  2313. VFD 42/0L"U1",18/ROUT
  2314. IFC EQ,*BITS**
  2315. VFD 6/0
  2316. ELSE 1
  2317. VFD 6/BITS
  2318. IFC EQ,*COUN**,1
  2319. VFD 6/1
  2320. IFC EQ,*COUN*0*
  2321. VFD 6/77B
  2322. ELSE 2
  2323. IFC NE,*COUN**,1
  2324. VFD 6/_COUN
  2325. IFC EQ,*FL**
  2326. VFD 12/0
  2327. ELSE 1
  2328. ERR FL OPTION NO LONGER AVAIALABLE
  2329. U4 DECMIC ACCS
  2330. U5 SET 0
  2331. UA IFC EQ,*P*ALL*
  2332. U5 SET 777777B
  2333. UA ELSE
  2334. UB IFC EQ,*P** IF NULL ALL SYSTEMS VALID EXCEPT ACCESS
  2335. U5 SET 777777B-1S"U4"
  2336. UB ELSE
  2337. U7 MICRO 1,1,*P*
  2338. UC IFC EQ,*"U7"*-*
  2339. U5 SET 777777B
  2340. IRP P
  2341. IFC NE,*P**,5
  2342. U7 SET P
  2343. U7 SET -U7
  2344. ERRMI U7
  2345. U4 DECMIC _U7
  2346. U5 SET U5-1S"U4"
  2347. IRP
  2348. UC ELSE
  2349. U5 SET 0
  2350. IRP P
  2351. IFC NE,*P**,3
  2352. ERRMI P
  2353. U4 DECMIC _P
  2354. U5 SET U5+1S"U4"
  2355. IRP
  2356. UC ENDIF
  2357. UB ENDIF
  2358. UA ENDIF
  2359. VFD 18/U5
  2360. VFD 18/0 OCCURENCE COUNT
  2361. ENDM
  2362. NOREF U1,U2,U3,U4,U5,U6,U7
  2363. GTM SPACE 4,15
  2364. ** GTM - GENERATE IAFEX MESSAGE.
  2365. *
  2366. * GENERATES MESSAGE IN IAFEX FORMAT. AN *EM* (EXTENDED
  2367. * MODE) CONTROL BYTE IS INSERTED AT THE BEGINNING OF
  2368. * THE MESSAGE.
  2369. * THIS MACRO IS USED BY OTHER IAFEX MACROS TO DEFINE
  2370. * TERMINAL MESSAGES.
  2371. *
  2372. * LOC GTM STR,TB
  2373. *
  2374. * DEFINITIONS.
  2375. *
  2376. * LOC = LOCATION SYMBOL. IF NOT PRESENT, A LITERAL
  2377. * IS GENERATED. THE ADDRESS OF THE LITERAL
  2378. * MAY THEN BE REFERENCED BY THE SYMBOL *.2*.
  2379. *
  2380. * STR = CHARACTER STRING. MAY CONTAIN CARRIAGE CONTROL
  2381. * MICROS AND MAY NOT CONTAIN THE CHARACTER *+*
  2382. * (*PLUS* SIGN).
  2383. *
  2384. * TB = TERMINATOR BYTE MICRO. IF OMITTED, *CEB*
  2385. * (0002) IS ASSUMED.
  2386.  
  2387.  
  2388. PURGMAC GTM
  2389. MACRO GTM,N,STR,TB
  2390. NOREF .1,.2,.L
  2391.  
  2392. * DEFINE STRING MICRO.
  2393.  
  2394. .1 MICRO 1,,+STR+
  2395.  
  2396. * SET STRING LENGTH TO MULTIPLE OF TWO CHARACTERS.
  2397.  
  2398. .1 MICRO 1,,+"EM"".1"+
  2399. .L MICCNT .1
  2400. IFNE .L,.L/2*2,1
  2401. .1 MICRO 1,,+".1"_'+
  2402.  
  2403. * SET TERMINATOR.
  2404.  
  2405. IFC EQ,$TB$$
  2406. .2 MICRO 1,, "CB"
  2407. ELSE
  2408. .2 MICRO 1,, "TB"
  2409. ENDIF
  2410.  
  2411. * GENERATE STRING OR LITERAL AND SET LENGTH OF MESSAGE.
  2412.  
  2413. .2 MICRO 1,,+".1"".2"+
  2414. IFC NE,$N$$
  2415. N DATA C+".2"+
  2416. ELSE
  2417. .2 SET =C+".2"+
  2418. ENDIF
  2419. .L MICCNT .2
  2420. .L SET .L/10+1
  2421.  
  2422. ENDM
  2423. IFMUX SPACE 4,10
  2424. ** IFMUX - MULTIPLEXER TERMINAL CONDITIONAL JUMP.
  2425. *
  2426. * IFMUX ADR
  2427. *
  2428. * ENTRY (B2) = TERMINAL NUMBER.
  2429. * ADR = ADDRESS.
  2430. *
  2431. * EXIT TO ADR IF MULTIPLEXER TERMINAL.
  2432. *
  2433. * USES B - 6.
  2434.  
  2435.  
  2436. PURGMAC IFMUX
  2437. IFMUX MACRO ADR
  2438. TB6 B0,/IAFINI/VHMP
  2439. LE B2,B6,ADR
  2440. ENDM
  2441. IFNET SPACE 4,10
  2442. ** IFNET - NETWORK TERMINAL CONDITIONAL JUMP.
  2443. *
  2444. * IFNET ADR
  2445. *
  2446. * ENTRY (B2) = TERMINAL NUMBER.
  2447. * ADR = ADDRESS.
  2448. *
  2449. * EXIT TO ADR IF NETWORK TERMINAL.
  2450. *
  2451. * USES B - 6.
  2452.  
  2453.  
  2454. PURGMAC IFNET
  2455. IFNET MACRO ADR
  2456. TB6 B0,/IAFINI/VHMP
  2457. GT B2,B6,ADR
  2458. ENDM
  2459. MSG SPACE 4,10
  2460. ** MSG - GENERATE IAFEX MESSAGE.
  2461. *
  2462. * MSG (STR),TB
  2463. *
  2464. * STR = MESSAGE STRING.
  2465. * TB = TERMINATOR BYTE. *0002* ASSUMED.
  2466.  
  2467.  
  2468. PURGMAC MSG
  2469. MACRO MSG,L,STR,TB
  2470. LOCAL A
  2471. IFC NE,*L**
  2472. L GTM (STR),TB
  2473. ELSE
  2474. A GTM (STR),TB
  2475. ENDIF
  2476. ENDM
  2477. SMA SPACE 4,10
  2478. ** SMA - SET IAFEX MESSAGE ADDRESS.
  2479. *
  2480. * SMA R,(STR),TB
  2481. *
  2482. * R = REGISTER TO BE SET WITH ADDRESS OF
  2483. * GENERATED MESSAGE LITERAL.
  2484. * STR = MESSAGE STRING.
  2485. * TB = TERMINATOR BYTE. *0002* ASSUMED.
  2486.  
  2487. SMA MACRO R,STR,TB
  2488. GTM (STR),TB
  2489. S_R .2
  2490. ENDM
  2491. TTADD SPACE 4
  2492. ** TTADD - THIS MACRO IS USER FOR GENERATING TERMINAL
  2493. * TABLE ADDRESSES.
  2494. *
  2495. * DEFINITIONS.
  2496. *
  2497. * RTN = REGISTER CONTAINING TERMINAL NUMBER
  2498. * RER = RESULT REGISTER WHICH WILL BE SET TO TERMINAL TABLE
  2499. * ADDRESS.
  2500. * XA, XB = TWO X REGISTERS TO BE USED IN CALCULATION.
  2501. * TTW = TERMINAL TABLE WORD.
  2502.  
  2503.  
  2504. TTADD MACRO RTN,RER,XA,XB,TTW
  2505. R= XA,RTN
  2506. IFEQ VTTL,8,2
  2507. L_XA 3
  2508. TTA SKIP
  2509. IFEQ VTTL,16,2
  2510. L_XA 4
  2511. TTA SKIP
  2512. R= XB,VTTL
  2513. I_XA XA*XB
  2514. TTA ENDIF
  2515. T_RER XA+TTW,VTTP
  2516. ENDM
  2517. PARAM SPACE 4,55
  2518. ** PARAM - CONSTRUCT PARAMETER BLOCK FOR EJT SYSTEM REQUEST.
  2519. *
  2520. * CALL FORMATS ARE AS FOLLOWS.
  2521. *
  2522. * PARAM DTEJ,RC
  2523. *
  2524. * DTEJ - DETACH JOB.
  2525. * RC - REASON CODE.
  2526. *
  2527. * PARAM ENEJ,PPI,EPN
  2528. *
  2529. * ENEJ - ENABLE JOB.
  2530. * PPI - PREPROCESSOR INDEX.
  2531. * EPN - ADDRESS OF ENTRY POINT NAME,
  2532. * - LEFT JUSTIFIED AND ZERO FILLED.
  2533. *
  2534. * PARAM FJEJ
  2535. *
  2536. * FJEJ - FREEZE JOB.
  2537. *
  2538. * PARAM RCEJ,JSN,MSG
  2539. *
  2540. * RCEJ - RECOVER JOB.
  2541. * JSN - ADDRESS OF JSN TO RECOVER.
  2542. * MSG - ADDRESS OF BUFFER FOR MSW1.
  2543. *
  2544. * PARAM RSEJ
  2545. *
  2546. * RSEJ - RESTART JOB.
  2547. *
  2548. * PARAM RTEJ,OT,FG
  2549. *
  2550. * RTEJ - RESET SYSTEM TIMEOUT ON SUSPENDED JOBS.
  2551. * OT - ORIGIN TYPE OF JOBS TO RESET.
  2552. * FG - PRESET FLAGS FIELD.
  2553. *
  2554. * PARAM SAEJ,ERF
  2555. *
  2556. * SAEJ - SET ABORT FLAG ON JOB.
  2557. * ERF - ERROR FLAG TO SET.
  2558. *
  2559. * PARAM TJEJ
  2560. *
  2561. * TJEJ - TERMINATE INTERACTIVE JOB.
  2562. *
  2563. *
  2564. * THE FORMAT OF THE PARAMETER BLOCK IS AS FOLLOWS (NOTE THAT
  2565. * ANY CHANGE SHOULD ALSO BE DOCUMENTED IN *CPUMTR* AND *1MA*).
  2566. *
  2567. *(B4) 24/ JSN,12/ FLAGS,6/ PPI,8/ ERR,9/ FCN,1/C
  2568. * 42/ NAME,6/ ERF,12/ EJTO
  2569. * 3/RES,3/JAL,6/ OT,6/ RC,18/ MSG BUF,24/RES
  2570. * 60/ REC WD 1
  2571. * 60/ REC WD 2
  2572. * 12/ INST,12/ TN,36/ CDC RES
  2573. * 42/ TNAME, 18/ RESERVED
  2574. *
  2575. * JSN = JOB SEQUENCE NUMBER.
  2576. * FLAGS = RTEJ - BIT 0 = SELECT EJT ENTRIES BY ORIGIN TYPE.
  2577. * BIT 1 = DEFAULT TIMEOUT (CLEAR = 0 TIMEOUT).
  2578. * PPI = PREPROCESSOR INDEX.
  2579. * ERR = ERROR RETURN (0 ON CALL).
  2580. * FCN = FUNCTION CODE.
  2581. * C = COMPLETE BIT (0 ON CALL).
  2582. * NAME = ENEJ - ENTRY POINT NAME.
  2583. * DTEJ, RCEJ, RSEJ - USER NAME.
  2584. * ERF = ERROR FLAG TO SET.
  2585. * EJTO = EXECUTING JOB TABLE ORDINAL.
  2586. * RES = RESERVED FOR CDC.
  2587. * JAL = JOB ACCESS LEVEL LIMIT (RETURNED ON *DTEJ*; 0 ON CALL).
  2588. * OT = ORIGIN TYPE.
  2589. * RC = REASON CODE.
  2590. * MSG BUF = RELATIVE ADDRESS OF BUFFER TO RETURN *MS1W*.
  2591. * REC WD 1 = RECOVERY WORD 1 (NFL WORD RC1N - SEE *PPCOM*).
  2592. * REC WD 2 = RECOVERY WORD 2 (NFL WORD RC2W - SEE *PPCOM*).
  2593. * INST = RESERVED FOR INSTALLATIONS.
  2594. * TN = TERMINAL NUMBER.
  2595. * CDC RES = RESERVED FOR CDC.
  2596. * TNAME = TERMINAL NAME (RETURNED BY *DTEJ* AND *TJEJ*;
  2597. * SPECIFIED ON CALL FOR *RCEJ*).
  2598. *
  2599. *
  2600. * ENTRY (B4) = ADDRESS OF PARAMETER BLOCK AREA.
  2601. * (A0) = TERMINAL TABLE ADDRESS.
  2602. *
  2603. * USES X - 0, 1, 2, 3, 6, 7.
  2604. * A - 1, 3, 6, 7.
  2605. *
  2606. * CALLS GRI, PPB.
  2607.  
  2608.  
  2609. PARAM MACRO TYPE,P1,P2,P3
  2610. LOCAL PARAM1,PARAM2
  2611. MACREF PARAM
  2612. LIST M
  2613. SX7 TYPE
  2614. RJ PPB PRESET PARAMETER BLOCK
  2615. LIST *
  2616. TYPE1 IFC EQ,$TYPE$DTEJ$
  2617. LIST M
  2618. SA1 A0+VUIT GET USERNAME
  2619. MX6 42
  2620. BX6 X6*X1
  2621. BX6 X2+X6
  2622. SA6 A7+B1 SET WORD ONE - USERNAME AND EJT ORDINAL
  2623. R= X7,P1 SET REASON CODE
  2624. LX7 42
  2625. SA7 A6+B1
  2626. RJ GRI GATHER RECOVERY INFORMATION
  2627. SX6 B2 SET TERMINAL NUMBER IN WORD 5
  2628. LX6 36
  2629. SA6 B4+5
  2630. LIST *
  2631. TYPE1 ENDIF
  2632. TYPE2 IFC EQ,$TYPE$ENEJ$
  2633. LIST M
  2634. BX6 X2
  2635. IFC NE,$P2$$,2
  2636. SA1 P2 GET ENTRY POINT NAME
  2637. MX2 42
  2638. BX1 X2*X1
  2639. BX6 X6+X1 MERGE EJT ORDINAL
  2640. SA6 A7+B1 SET WORD 1
  2641. IFC NE,$P1$$,3
  2642. R= X3,P1
  2643. LX3 18
  2644. BX7 X3+X7 MERGE PPI
  2645. SA1 A0+VSTT COPY DISABLED TERMINAL FLAG INTO REQUEST
  2646. MX6 1
  2647. BX1 X1*X6
  2648. LX1 24-59
  2649. BX7 X1+X7
  2650. SA7 A7 SET WORD ZERO
  2651. LIST *
  2652. TYPE2 ENDIF
  2653. TYPE3 IFC EQ,$TYPE$FJEJ$
  2654. LIST M
  2655. SX6 B2 SUPPLY TERMINAL NUMBER FOR *TSEM*
  2656. LX6 36
  2657. SA6 A7+5
  2658. BX6 X2
  2659. SA6 A7+B1
  2660. LIST *
  2661. TYPE3 ENDIF
  2662. TYPE4 IFC EQ,$TYPE$RCEJ$
  2663. LIST M
  2664. R= A3,P1
  2665. BX7 X3+X7
  2666. SA1 A0+VUIT SET USERNAME
  2667. MX6 42
  2668. BX6 X1*X6
  2669. SA6 A7+B1 SET WORD ONE - USERNAME AND EJT ORDINAL
  2670. R= X0,P2
  2671. LX0 24
  2672. SA7 A7
  2673. BX6 X0
  2674. SA6 A6+B1 WORD TWO - BUFFER ADDRESS
  2675. SX6 B2
  2676. LX6 36
  2677. SA6 A6+3
  2678. LIST *
  2679. TYPE4 ENDIF
  2680. TYPE5 IFC EQ,$TYPE$RSEJ$
  2681. LIST M
  2682. SA1 A0+VUIT GET USER NAME
  2683. MX6 42
  2684. BX6 X6*X1
  2685. BX6 X2+X6
  2686. SA6 A7+B1 SET WORD ONE - USER NAME AND EJT ORDINAL
  2687. LIST *
  2688. TYPE5 ENDIF
  2689. TYPE6 IFC EQ,$TYPE$RTEJ$
  2690. LIST M
  2691. BX6 X2
  2692. SA6 A7+B1 SET WORD ONE - EJT ORDINAL
  2693. IFC NE,$P1$$,4
  2694. R= X3,P1
  2695. LX3 48
  2696. BX6 X3
  2697. SA6 A6+B1 SET WORD TWO - ORGIN TYPE
  2698. IFC NE,$P2$$,4
  2699. R= X0,P2
  2700. LX0 24
  2701. BX7 X0+X7
  2702. SA7 A7 SET FLAGS
  2703. LIST *
  2704. TYPE6 ENDIF
  2705. TYPE7 IFC EQ,$TYPE$SAEJ$
  2706. LIST M
  2707. R= X3,P1
  2708. LX3 12-0
  2709. BX6 X2+X3
  2710. SA6 A7+B1 SET WORD ONE - ERROR FLAG
  2711. LIST *
  2712. TYPE7 ENDIF
  2713. TYPE8 IFC EQ,$TYPE$TJEJ$
  2714. LIST M
  2715. BX7 X2
  2716. SA7 A7+B1 SET WORD ONE - EJT ORDINAL
  2717. RJ GRI GATHER RECOVERY INFORMATION
  2718. SX6 B2 SET TERMINAL NUMBER IN WORD 5
  2719. LX6 36
  2720. SA6 B4+5
  2721. LIST *
  2722. TYPE8 ENDIF
  2723. ENDM
  2724. TQST TITLE TABLE OF QUEUES.
  2725. ** TQST - TABLE OF QUEUES.
  2726. * THIS TABLE CONSISTS OF ALL THE QUEUES THAT MAY HAVE
  2727. * REQUESTS IN THE REENTRY TABLE.
  2728. *
  2729. * THE FORMAT OF THIS TABLE IS AS FOLLOWS
  2730. *
  2731. * CCCC NNNN 00NN NN00 YYYY
  2732. * 0000 0000 TTTT TTTT TTTT
  2733. * WHERE-
  2734. * CCCC = NUMBER OF ENTRIES (PACKED FORMAT).
  2735. * NNNN = FIRST TERMINAL ENTRY.
  2736. * YYYY = LAST TERMINAL ENTRY.
  2737. * TTTT TTTT TTTT = RESOURCE CONTROL COUNT (RESOURCE CONROL
  2738. * QUEUE).
  2739.  
  2740.  
  2741. * QUEUE TABLE.
  2742.  
  2743. ORG TXORG
  2744. TRQT BSS 0
  2745. SSPA CON 0 CURRENT ENTRY
  2746. WCMQ VFD 12/2000B,48/0 WAIT COMPLETION QUEUE
  2747. CON 0
  2748. TIMQ VFD 12/2000B,48/0 TIME DELAY QUEUE
  2749. CON 0
  2750. MNWQ VFD 12/2000B,48/0 MONITOR WAIT QUEUE
  2751. CON 0
  2752.  
  2753. * PPU REQUEST QUEUES.
  2754.  
  2755. ITAQ VFD 12/2000B,48/0
  2756. ITOQ VFD 12/2000B,48/0
  2757.  
  2758. * PPU REQUEST WORDS.
  2759.  
  2760. PPUR BSS 0 PPU REQUEST QUEUE
  2761. PMSG CON 0 *MSG* AND FL CHANGE REQUEST
  2762. CON 0
  2763. CON 0
  2764.  
  2765.  
  2766. PITA CON 1 *1TA* REQUEST
  2767. PITO CON 1 *1TO* REQUEST
  2768. CON -0
  2769.  
  2770. * INTERESTING STATISTICS.
  2771.  
  2772. CPBM CON 0 NUMBER OF TIMES BELOW MINIMUM POT SUPPLY
  2773.  
  2774. * CLOCKS.
  2775.  
  2776. RTIM CON 0 36 BIT MILLI SECOND CLOCK
  2777. STIM CON 0 24 BIT SECOND CLOCK
  2778. CPTIME CON 0 CPU TIME AT PROGRAM START
  2779. START CON 0 REAL TIME AT START UP
  2780.  
  2781. * HEADER MESSAGE AND DATE AND TIME.
  2782.  
  2783. HEDR CON 0
  2784. DATE CON 0
  2785. TIME CON 0
  2786. BSSZ 8 SYSTEM TITLE AND VERSION
  2787. HEDRL EQU *-HEDR
  2788. TITLE SUB-SYSTEM CONTROL TABLES.
  2789. JCTT SPACE 4
  2790. ** JCCT - JOB COMPLETION MESSAGES AND INPUT DELAY TABLE.
  2791.  
  2792. GTM ("NL"RUN COMPLETE. "NL")
  2793. JCTM EQU .2 SET LITERAL ADDRESS
  2794.  
  2795.  
  2796.  
  2797. JCCTM MACRO A
  2798. VFD 42/,18/A
  2799. ENDM
  2800.  
  2801. JCTT BSS 0
  2802. JCCT INDEX JCCTM,MSYS,( 0 )
  2803. INDEX ,BASS,( JCTM )
  2804. INDEX ,FORS,( JCTM )
  2805. INDEX ,FTNS,( JCTM )
  2806. INDEX ,EXES,( JCTM )
  2807. INDEX ,BATS,( 0 )
  2808. INDEX ,ACCS,( 0 )
  2809. PCOM SPACE 4
  2810. ** PCOM - TABLE OF MINIMUM MASKS AND ERROR PROCESSORS FOR
  2811. * EACH SYSTEM. BITS (48 - 59) IN PACKED FORMAT CONTAIN
  2812. * THE MINIMUM NUMBER OF CHARACTERS TO MASK ON. BITS (0 - 17)
  2813. * CONTAIN THE ADDRESS OF THE ERROR PROCESSING ROUTINE.
  2814.  
  2815.  
  2816. PCOMM MACRO A,B
  2817. VFD 12/2000B+A,30/,18/B
  2818. ENDM
  2819.  
  2820. PCOM INDEX PCOMM,MSYS,( 3,PCM21 )
  2821. INDEX ,BATS,( 7,BAT2 )
  2822. RDYA SPACE 4
  2823. ** RDYA - TABLE OF READY MESSAGES.
  2824.  
  2825.  
  2826. RDYAM MACRO A
  2827. VFD A
  2828. ENDM
  2829.  
  2830. RDYA INDEX RDYAM,MSYS,( 60/8LREADY. )
  2831. INDEX ,BATS,( 60/4L/''B )
  2832. STAA SPACE 4
  2833. ** STAA - TABLE OF SUB-SYSTEM NAMES.
  2834.  
  2835.  
  2836. STAAM MACRO A
  2837. CON 0L;A
  2838. ENDM
  2839.  
  2840. STAA INDEX STAAM,MSYS,( )
  2841. INDEX ,NULS,( "NULS" )
  2842. INDEX ,BASS,( "BASS" )
  2843. INDEX ,FORS,( "FORS" )
  2844. INDEX ,FTNS,( "FTNS" )
  2845. INDEX ,EXES,( "EXES" )
  2846. INDEX ,BATS,( "BATS" )
  2847. INDEX ,ACCS,( "ACCS" )
  2848. TTTT SPACE 4
  2849. ** TTTT - TABLE OF TERMINAL TYPES FROM MODVAL.
  2850.  
  2851.  
  2852. TTTT INDEX CON,ATTMX+1,( -* )
  2853. INDEX ,ATTY+1,( 0LTTY )
  2854. INDEX ,ATT7+1,( 0L713 )
  2855. INDEX ,ATTCO+1,( 0LCOR )
  2856. INDEX ,ATTCA+1,( 0LCORAPL )
  2857. INDEX ,ATTMA+1,( 0LMEMAPL )
  2858. INDEX ,ATTE+1,( 0LBLKEDT )
  2859. TTIS SPACE 4
  2860. ** TTIS - TABLE OF INITIAL SUBSYSTEMS
  2861.  
  2862.  
  2863. TTIS INDEX CON,MSYS,( NULS )
  2864. INDEX ,AISNUL,( NULS )
  2865. INDEX ,AISBAS,( BASS )
  2866. INDEX ,AISFOR,( FORS )
  2867. INDEX ,AISFTN,( FTNS )
  2868. INDEX ,AISEXE,( EXES )
  2869. INDEX ,AISBAT,( BATS )
  2870. INDEX ,AISACC,( ACCS )
  2871. IAF TITLE CONTROL LOOP.
  2872. ** IAFEX - MAIN CONTROL LOOP.
  2873.  
  2874.  
  2875. IAF RJ DRI PROCESS DRIVER QUEUE
  2876. RJ URT UPDATE RUNNING TIME
  2877. RJ STR PROCESS SYSTEM IAFEX REQUESTS
  2878. RJ RPC REFILL POT CHAIN QUEUE
  2879. RJ TDQ PROCESS TIME DELAY QUEUE
  2880. RJ PMQ PROCESS MONITOR WAIT QUEUE
  2881. RJ TSR CHECK FOR REQUEST COMPLETIONS
  2882. RJ PPU PROCESS PPU REQUESTS
  2883. RJ CSS CHECK SCP STATUS
  2884. IAFA RJ /IAFEX4/NDR EXECUTE NETWORK DRIVER
  2885. * SB0 0 (IF NETWORK DRIVER NOT LOADED)
  2886. RJ SPR CHECK FOR FIELD LENGTH CHANGE NEEDED
  2887. RJ EPP ENTER PP REQUESTS
  2888. RJ DRI PROCESS DRIVER QUEUE
  2889. RJ STR PROCESS SYSTEM IAFEX REQUESTS
  2890. RJ RPC REFILL POT POT CHAIN QUEUE
  2891. SA1 VANL
  2892. NZ X1,IAF1 IF AT LEAST ONE ACTIVE USER
  2893. WAIT 100
  2894. IAF1 RECALL
  2895. EQ IAF RE-ENTER MAIN LOOP
  2896. RPV SPACE 4,10
  2897. ** RPV - REPRIEVE PROCESSING.
  2898.  
  2899.  
  2900. RPV BSS 0 ENTRY
  2901. MESSAGE RPVA,0,R
  2902. RJ /SMFIF/ISM IDLE SCREEN MANAGMENT FACILITY
  2903. SA1 VNTP
  2904. ZR X1,RPV1 IF NO NETWORK TERMINALS DEFINED
  2905. RJ /IAFEX4/NOF NETOFF
  2906. RPV1 REPRIEVE RPVB,RESET,0
  2907. EQ * WAIT FOR RESET
  2908.  
  2909. * THE FOLLOWING CODE IS USED BY *IAFEX2* TO PREVENT THE
  2910. * IDLING OF *IAFEX2* OR *IAFEX3* BEFORE ALL USERS HAVE
  2911. * BEEN DETACHED AND IAF ACCESSABILITY HAS BEEN CLEARED.
  2912.  
  2913. RPV2 REPRIEVE RPVB,RESUME,37B
  2914. EQ * WAIT FOR RESUME OF EXECUTION
  2915.  
  2916.  
  2917. RPVA DATA C+ IAF REPRIEVED.+
  2918. RPVB RPVBLK RPV
  2919. TITLE CONTROL SUBROUTINES.
  2920. CSS SPACE 4,10
  2921. ** CSS - CHECK SCP STATUS.
  2922. *
  2923. * CALLS AUU, CDD, CFL, RMS, SID, SMS.
  2924.  
  2925.  
  2926. * AFTER RECEIVED MESSAGE PROCESSED.
  2927.  
  2928. CSS7 RJ /SMFIF/SMS SEND IAF TO SMF MESSAGES
  2929.  
  2930. CSS SUBR ENTRY/EXIT
  2931. SA1 SSCR
  2932. PL X1,CSS7 IF NO MESSAGE RECEIVED
  2933.  
  2934. * CHECK PARAMETER BLOCK HEADER.
  2935.  
  2936. SA2 X1
  2937. MX6 -6
  2938. AX2 18
  2939. BX2 -X6*X2 STATUS FROM CPUMTR
  2940. SX7 X2-4
  2941. NG X7,CSS1 IF NORMAL, OR UCP ABORT, END, OVERRIDE
  2942. NZ X7,CSS5 IF UNKNOWN STATUS
  2943.  
  2944. * SCP (NAM) ABORT NOTIFICATION.
  2945.  
  2946. SX6 -B1 INDICATE SCP FAILURE
  2947. SA6 VSHD
  2948. EQ CSS6 CLEAR INTERLOCK AND EXIT
  2949.  
  2950. * UCP MESSAGE PROCESSING.
  2951.  
  2952. CSS1 SA3 /SMFIF/ASMF CHECK ACTIVE SMF WORD
  2953. SA4 A2+B1 COMPARE TO SENDER
  2954. BX6 X3-X4
  2955. BX7 X4
  2956. NZ X6,CSS3 IF NOT SMF, SMF NOT ACTIVE OR RECONNECT
  2957. ZR X2,CSS2 IF NORMAL UCP MESSAGE
  2958.  
  2959. * UCP ABORT, END OR OVERRIDE.
  2960.  
  2961. RJ /SMFIF/SID DROP THE SMFEX CONNECTION
  2962. EQ CSSX RETURN
  2963.  
  2964. * NORMAL UCP MESSAGE.
  2965.  
  2966. CSS2 RJ CFL CHECK POT SUPPLY
  2967. NG X2,CSS7 IF POTS LOW DO NOT PROCESS CURRENT MESSAGE
  2968. RJ /SMFIF/RMS RECEIVE MESSAGE FROM SMF
  2969. EQ CSS6 COMPLETE PROCESSING
  2970.  
  2971. * CHECK FOR NEW CONNECTION TO SMF.
  2972.  
  2973. CSS3 MX6 24
  2974. BX6 X4*X6 CALLER-S JSN
  2975. SA1 CSSC
  2976. BX6 X6-X1
  2977. BX1 X6+X2
  2978. ZR X1,CSS4 IF NEW CONNECTION
  2979. RJ AUU ABORT UNRECOGNIZED OR RECONNECTING UCP
  2980. EQ CSS6 COMPLETE PROCESSING
  2981.  
  2982. * SET UP NEW CONNECTION WITH SMF.
  2983.  
  2984. CSS4 SA7 /SMFIF/ASMF SET ACTIVE SMF WORD
  2985. SA1 A2+3 GET BUFFER POINTER
  2986. MX6 -18
  2987. AX1 18
  2988. BX1 -X6*X1 ISOLATE SMF BUFFER ADDRESS
  2989. LX1 24
  2990. SA2 /SMFIF/SMSA
  2991. MX3 -18 CLEAR ADDRESS FIELD
  2992. LX3 24
  2993. BX2 X3*X2
  2994. BX6 X1+X2
  2995. SA6 A2
  2996. SA2 /SMFIF/SMSC
  2997. BX2 X3*X2 CLEAR ADDRESS FIELD
  2998. BX6 X1+X2
  2999. SA6 A2
  3000. SA2 /SMFIF/ISMA
  3001. BX2 X3*X2 CLEAR ADDRESS FIELD
  3002. SX6 B1 DECREMENT FOR IDLEDOWN ADDRESS
  3003. LX6 24
  3004. IX6 X1-X6
  3005. BX6 X6+X2
  3006. SA6 A2
  3007. EQ CSS2 INITIATE CONNECTION
  3008.  
  3009. * UNKNOWN STATUS CODE.
  3010.  
  3011. CSS5 SX1 X2
  3012. RJ CDD CHANGE TO DISPLAY CODE
  3013. SA6 CSSB
  3014. MESSAGE CSSA,0,R
  3015.  
  3016. * CLEAR INTERLOCK ON SCP BUFFER.
  3017.  
  3018. CSS6 SA1 SSCR
  3019. MX6 -59
  3020. BX6 -X6*X1
  3021. SA6 A1
  3022. EQ CSS7 SEND IAF TO SMF MESSAGES
  3023.  
  3024.  
  3025. CSSA DATA C+** INCORRECT SSC STATUS RECEIVED+
  3026. CSSB CON 0
  3027. DATA C+. **+
  3028. CSSC VFD 24/4LSMF ,36/0
  3029. EPP SPACE 4,10
  3030. ** EPP - ENTER PPU REQUESTS.
  3031. *
  3032. * ENTERS PPU REQUESTS QUEUED IN PP REQUEST WORDS.
  3033. *
  3034. * ENTRY (PPUR) = LIST OF FORMATTED PPU REQUESTS.
  3035.  
  3036.  
  3037. EPP SUBR ENTRY/EXIT
  3038. SX7 3RSPC
  3039. SA2 B1 CHECK RA+1 CLEAR
  3040. LX7 42
  3041. SA1 PPUR-1
  3042.  
  3043. * THE FOLLOWING SHOULD ONLY HAPPEN IF A GARBAGE STORE IS MADE
  3044. * IN *RA+1*. THE MODE ERROR IS COMPATIBLE WITH OTHER
  3045. * PROCESSORS FOR THIS ERROR, AND IT PRESERVES ALL THE
  3046. * REGISTERS.
  3047.  
  3048. NZ X2,*+400000B IF (RA+1) .NE. 0, ABORT
  3049. EPP1 SA1 A1+B1 CHECK NEXT REQUEST
  3050. SX6 A1+
  3051. AX1 36
  3052. NG X1,EPPX IF END OF QUEUE
  3053. ZR X1,EPP1 IF NO ENTRY
  3054. BX6 X6+X7
  3055. SA6 B1 STORE REQUEST
  3056. XJ
  3057. SA1 A1+
  3058. ZR X1,EPP1 IF PPU AVAILABLE
  3059. SA1 VPPL COUNT NO PPU
  3060. SX6 B1
  3061. IX6 X6+X1
  3062. SA6 A1
  3063. EQ EPPX EXIT
  3064. URT SPACE 4,10
  3065. ** URT - UPDATE RUNNING TIME.
  3066. *
  3067. * UPDATE IAFEX RUNNING TIME, TIME OF DAY, AND DATE.
  3068. *
  3069. * CALLS SYS=.
  3070.  
  3071.  
  3072. URT SUBR ENTRY/EXIT
  3073. SA5 RTIM UPDATE REAL TIME
  3074. RTIME RTIM
  3075. SA1 A5
  3076. MX6 -36
  3077. BX6 -X6*X1
  3078. SA6 A1
  3079. AX1 36 SET TIME IN SECONDS
  3080. BX7 X1
  3081. SA7 STIM
  3082. BX5 X5-X6
  3083. AX5 12
  3084. ZR X5,URTX IF FOUR SECONDS NOT ELAPSED
  3085. CLOCK TIME UPDATE TIME OF DAY
  3086. DATE DATE UPDATE DATE
  3087. EQ URTX EXIT
  3088. STR SPACE 4,10
  3089. ** STR - PROCESS SYSTEM IAFEX REQUESTS.
  3090. *
  3091. * PROCESS SYSTEM REQUESTS MADE TO IAFEX VIA MONITOR
  3092. * *TSEM* REQUESTS.
  3093. *
  3094. * CALLS REQUEST PROCESSOR VIA *PCS*.
  3095. * ABT IF INCORRECT REQUEST.
  3096.  
  3097.  
  3098. STR SUBR ENTRY/EXIT
  3099.  
  3100. * GET ENTRY FROM MONITOR BUFFER.
  3101.  
  3102. STR1 SA1 STRA CHECK FOR ENTRY
  3103. SA5 X1
  3104. BX6 X6-X6
  3105. ZR X5,STRX IF NO ENTRIES TO PROCESS
  3106. UX2,B7 X5
  3107. SX7 X1+B1 UPDATE POINTER
  3108. SB6 TSTRL SET COMMAND TABLE LIMIT
  3109. SX2 X7-VTRP-VTRL
  3110. NZ X2,STR2 IF NOT LIMIT
  3111. SX7 VTRP
  3112.  
  3113. * PROCESS ENTRY.
  3114.  
  3115. STR2 SA7 A1 UPDATE POINTER
  3116. SA6 A5 CLEAR ENTRY
  3117. NG B7,STR3 IF INCORRECT REQUEST
  3118. GE B7,B6,STR3 IF INCORRECT REQUEST
  3119. SA4 TSTR+B7 SET PROCESSOR ADDRESS
  3120. SB7 X4+
  3121. RJ PCS PROCESS ENTRY
  3122. EQ STR1 LOOP
  3123.  
  3124. * PROCESS INCORRECT ENTRY.
  3125.  
  3126. STR3 BX7 X5 SAVE INCORRECT REQUEST
  3127. SX6 3RSTR SET ERROR CODE
  3128. SA7 STRB
  3129. RJ ABT
  3130. EQ STRX
  3131.  
  3132. STRA CON VTRP
  3133. STRB CON 0 SAVE INCORRECT REQUEST CODE
  3134. TCCS SPACE 4
  3135. ** TSTR - IAFEX *TSEM* SYSTEM COMMAND PROCESSING TABLE.
  3136.  
  3137.  
  3138. TSTR INDEX CON,VMXR-2000B,( 0 )
  3139. INDEX ,VDPO-2000B,( DRT )
  3140. INDEX ,VASO-2000B,( ASO )
  3141. INDEX ,VMSG-2000B,( DSD )
  3142. INDEX ,VSDT-2000B,( SDT )
  3143. INDEX ,VCDT-2000B,( CDT )
  3144. INDEX ,VSCS-2000B,( SCS )
  3145. INDEX ,VPTY-2000B,( PTY )
  3146. INDEX ,VSBS-2000B,( SBS )
  3147. INDEX ,VSJS-2000B,( SJS )
  3148. INDEX ,VTLF-2000B,( FLO )
  3149. INDEX ,VREC-2000B,( RDJ )
  3150. INDEX ,VITP-2000B,( ITP )
  3151. INDEX ,VADI-2000B,( ADI )
  3152. INDEX ,VADO-2000B,( ASO1 )
  3153. INDEX ,VCSM-2000B,( CSM )
  3154. INDEX ,VDTJ-2000B,( DTJ )
  3155. ADI SPACE 4,10
  3156. ** ADI - ASSIGN DIRECT INPUT.
  3157. *
  3158. * GETS INPUT FROM INTERNAL TYPEAHEAD QUEUE FOR DIRECT I/O
  3159. * REQUEST.
  3160. *
  3161. * USES X - 0, 1, 2, 6, 7.
  3162. * A - 1, 2, 6, 7.
  3163. *
  3164. * NOTE THE *DIOF* FLAG MUST BE CLEARED ON EXIT TO AVOID
  3165. * ANOTHER TERMINAL FROM IMPROPERLY INTERPRETING IT.
  3166. *
  3167. * CALLS CFL, DCI, EDR, PIN, UAC, UNQ.
  3168.  
  3169.  
  3170. ADI BSS 0 ENTRY
  3171. IFMUX PCSX
  3172. ADI1 RJ CFL CHECK POT SUPPLY
  3173. SX6 B1 SET NO POT REJECT BIT
  3174. LX6 22-0
  3175. NG X2,ADI3 IF INSUFFICIENT POTS
  3176. TA1 B2,VMST CHECK INTERNAL QUEUE
  3177. MX7 -12
  3178. BX7 -X7*X1
  3179. SA7 DIOF SET/CLEAR DIRECT I/O FLAG
  3180. ZR X7,ADI3 IF NO INTERNAL QUEUE
  3181. LX6 23-22 SET INPUT BUSY RETRY BIT
  3182. SA2 /IAFEX4/IBSY
  3183. NZ X2,ADI3 IF NETWORK INPUT BUFFER IN USE
  3184. RJ /IAFEX4/UNQ UNQUEUE INPUT DATA
  3185. RJ /IAFEX4/PIN PROCESS INPUT DATA
  3186. ZR X6,ADI1 IF INSUFFICIENT POTS
  3187. PL X0,ADI2 IF OVERFLOW DETECTED
  3188. SA1 /IAFEX4/RCVH
  3189. BX0 X1
  3190. SX7 B1 SET INPUT ACCOUNTING
  3191. RJ /IAFEX4/UAC UPDATE ACCOUNTING
  3192. AX0 54
  3193. SX6 X0-/IAFEX4/BTMS
  3194. NZ X6,ADI1 IF NOT MESSAGE BLOCK
  3195. SA6 DIOF CLEAR DIRECT I/O FLAG
  3196. SA6 /IAFEX4/RCVH CLEAR HEADER
  3197. SA6 A6+B1 CLEAR FIRST DATA WORD
  3198.  
  3199. * SET POT POINTER INTO VROT FOR SYSTEM.
  3200.  
  3201. SA2 A0+VROT
  3202. SA1 A0+VDPT
  3203. MX0 12
  3204. BX7 X0*X1 FIRST POT OF LINE
  3205. LX0 48
  3206. BX2 -X0*X2
  3207. LX7 48
  3208. BX7 X7+X2 INSERT POT POINTER
  3209. SA7 A2 REWRITE VROT
  3210. SA6 A1 CLEAR VDPT
  3211. SA3 A0+VDCT SET INPUT INITIATED
  3212. MX2 1
  3213. LX2 56-59
  3214. BX7 X2+X3
  3215. SA7 A3
  3216. EQ PCSX EXIT
  3217.  
  3218. * DISCARD INPUT IF OVERFLOW.
  3219.  
  3220. ADI2 SA1 A0+VDPT
  3221. SX2 VXLL+3
  3222. BX6 X1+X2
  3223. SA6 A1 REWRITE VDPT WITH OVERFLOW CHARACTER COUNT
  3224. SX6 B0 SET ENTRY CONDITION
  3225. RJ /IAFEX4/DCI DISCARD INPUT
  3226. BX6 X6-X6
  3227. SA6 DIOF
  3228. SA6 /IAFEX4/RCVH
  3229. SA6 A6+B1
  3230. SX6 B1 SET OVERFLOW REJECT BIT
  3231. LX6 22-0
  3232.  
  3233. * SEND REJECT TO SYSTEM.
  3234.  
  3235. ADI3 SA1 A0+VROT SET RESPONSE IN VROT
  3236. BX6 X6+X1
  3237. SA6 A1 REWRITE VROT
  3238. SA1 ADIA INCREMENT REJECT COUNT
  3239. SX6 X1+B1
  3240. SA6 A1
  3241. SX6 B0+ CLEAR DIRECT INPUT FALG
  3242. SA6 DIOF
  3243. EQ PCSX EXIT
  3244.  
  3245.  
  3246. ADIA CON 0 *VADI* REJECT/RETRY COUNT
  3247. DIOF CON 0 DIRECT I/O REQUEST FLAG
  3248. APS SPACE 4,10
  3249. ** APS - APPLICATION SWITCH.
  3250. *
  3251. * THIS ROUTINE IS ENTERED FROM ROUTINE *FLO*.
  3252. *
  3253. * ENTRY (B3) = POINTER TO POT CONTAINING APPLICATION NAME.
  3254. * (B4) = ADDRESS OF POT.
  3255. * (A2) = ADDRESS OF *VDCT*.
  3256. * (X2) = CONTENTS OF *VDCT* SHIFTED.
  3257. *
  3258. * CALLS CJA, DPT, EDR, GOP, PMR, PPB.
  3259. *
  3260. * MACROS IFMUX, PARAM.
  3261.  
  3262.  
  3263. APS BSS 0 ENTRY
  3264. IFMUX PCSX IF MUX TERMINAL
  3265. SX3 B1 SET CONNECTION LOANED BIT
  3266. LX3 47-0
  3267. LX2 46-59
  3268. BX7 X2+X3
  3269. SA7 A2 REWRITE VDCT
  3270. MX3 -12
  3271. SA1 A0+VFST
  3272. BX1 X1*X3 CLEAR POT POINTER FIELD
  3273. SX6 B3 SAVE APPLICATION NAME POT POINTER
  3274. BX6 X6+X1
  3275. SA6 A1 REWRITE VFST
  3276. APS1 SA2 A0+VROT CHECK COMPLETE BIT
  3277. LX2 59-0
  3278. SB3 B0
  3279. PL X2,APS2 IF VROT NOT COMPLETE
  3280. SA1 A0+VSTT WAIT FOR OUTPUT TO COMPLETE
  3281. MX5 -12
  3282. BX3 -X5*X1
  3283. ZR X3,APS3 IF NO OUTPUT
  3284. APS2 SX5 APS1$
  3285. EQ PCS1 MAKE QUEUE ENTRY
  3286.  
  3287. APS3 SX7 APS4 SET REENTRY ADDRESS
  3288. EQ CJA CLEAR JOB ACTIVITY
  3289.  
  3290. APS4 SX2 /1TD/HUP
  3291. RJ EDR ENTER DRIVER REQUEST
  3292. EQ PCSX EXIT
  3293. ASO SPACE 4,20
  3294. ** ASO - ASSIGN OUTPUT.
  3295. *
  3296. * ASSIGNS OUTPUT POT CHAIN TO TERMINAL. UNUSED POTS
  3297. * AT END OF CHAIN ARE DROPPED.
  3298. *
  3299. * ENTRY (B3) = FIRST POT OF OUTPUT.
  3300. * = ZERO IF NO OUTPUT ASSIGNED.
  3301. * (X7) = 42/ 0,6/ POT COUNT,12/ LAST POT POINTER.
  3302. *
  3303. * CALLS ABT, ASM, GRT, RPL.
  3304.  
  3305.  
  3306. ASO BSS 0 ENTRY
  3307. SA1 A0+VROT SET COMPLETE
  3308. SX2 B1
  3309. BX6 X1+X2
  3310. LX1 59-0
  3311. NG X1,ASO4 IF *VROT* ALREADY COMPLETE
  3312. SA6 A1
  3313.  
  3314. * ENTRY FOR ASSIGNMENT OF OUTPUT FROM DIRECT I/O REQUEST.
  3315.  
  3316. ASO1 BSS 0
  3317. TA4 B2,VRAP CHECK FOR QUEUE ENTRY
  3318. SA2 A0+VSTT
  3319. SB5 B2 SET TERMINAL NUMBER FOR *GRT*
  3320. LX2 59-48 CHECK LOGOUT FLAG
  3321. NG X2,IGN IF LOGOUT IN PROGRESS
  3322. ZR X4,ASO2 IF NO QUEUE ENTRY
  3323. RJ GRT
  3324. AX4 48
  3325. SX3 X4-ETX4$
  3326. ZR X3,IGN IF PACK COMPLETE, IGNORE
  3327. SX3 X4-ITA2$
  3328. ZR X3,ASO3 IF LOGIN NOT YET COMPLETE
  3329.  
  3330. * ENTRY FROM *DSD* TO ASSIGN *DIAL* MESSAGE.
  3331.  
  3332. ASO2 ZR B3,RES IF NO OUTPUT TO ASSIGN, CONTINUE JOB
  3333. MX0 -12
  3334. BX6 X0*X7
  3335. NZ X6,ASO2.1 IF POT COUNT PROVIDED
  3336. SX6 VLCL*10000B SET TO MAXIMUM
  3337. ASO2.1 LX6 12 POSITION POT COUNT
  3338. SX1 B3
  3339. LX1 3
  3340. TA6 X1,VBMP STORE IN FIRST WORD OF MESSAGE
  3341. BX7 -X0*X7
  3342. SX0 B3 SAVE OUTPUT POT POINTER THROUGH *RPL*
  3343. SB7 B0+
  3344. RJ RPL DROP ANY UNUSED POTS
  3345. SX7 X0
  3346. MX6 1 CHECK USER FORMAT EFFECTOR MODE
  3347. RJ ASM PROCESS MESSAGE
  3348. EQ PCSX EXIT
  3349.  
  3350. ASO3 SX5 ASO2$ WAIT TIME OUT DELAY
  3351. EQ PCS1 MAKE QUEUE ENTRY
  3352.  
  3353. * DIAGNOSE INTERLOCK FAILURE OR FAULTY ASSIGNMENT.
  3354.  
  3355. ASO4 SX6 3RASO SET ERROR CODE
  3356. RJ ABT
  3357. EQ PCSX EXIT
  3358. CDT SPACE 4
  3359. ** CDT - CLEAR TERMINAL TABLE BIT.
  3360. *
  3361. * ENTRY (B3) = BIT NUMBER.
  3362. * (X7) = TERMINAL TABLE WORD ORDINAL.
  3363. *
  3364. * CALLS SDT.
  3365.  
  3366.  
  3367. CDT BSS 0
  3368. SX3 B0
  3369. SB4 X7 SET WORD IN TERMINAL TABLE
  3370. JP SDT1
  3371. CRR SPACE 4,10
  3372. ** CRR - CONNECTION REQUEST REPLY
  3373. *
  3374. * IF *1TA* HAS BEEN CALLED TO VALIDATE A SECONDARY CONNECTION
  3375. * REQUEST, THIS ROUTINE WILL ENTER A DRIVER REQUEST TO ACCEPT
  3376. * OR REJECT THE CONNECTION ACCORDING TO THE RESULTS RETURNED
  3377. * BY *1TA* PROCESSING.
  3378. *
  3379. * USES X - 2
  3380. *
  3381. * CALLS EDR
  3382.  
  3383.  
  3384. CRR BSS 0
  3385. SX2 /1TD/CRR IF ERROR CONDITION DETECTED
  3386. EQ CRR2 SKIP TO REQUEST ENTRY
  3387.  
  3388. CRR1 SX2 /1TD/CRR1 IF NO ERROR CONDITION DETECTED
  3389. CRR2 RJ EDR ENTER DRIVER REQUEST
  3390. EQ PCSX EXIT
  3391. CSM SPACE 4,10
  3392. ** CSM - CONNECT TO SCREEN MANAGEMENT FACILITY.
  3393. *
  3394. * ENTRY (B3) = 0 TO REQUEST CONNECTION.
  3395. * (B3) = 1 TO CONFIRM DISCONNECTION.
  3396. *
  3397. * CALLS /SMFIF/CSM.
  3398.  
  3399.  
  3400. CSM BSS 0
  3401. NZ B3,CSM1 IF DISCONNECTION CONFIRMATION
  3402. RJ /SMFIF/CSM CONNECT TO SCREEN MANAGER
  3403. EQ PCSX EXIT
  3404.  
  3405. CSM1 RJ /SMFIF/DSM DISCONNECT FROM SCREEN MANAGER
  3406. EQ PCSX EXIT
  3407. DRT SPACE 4
  3408. ** DRT - DROP POTS.
  3409. *
  3410. * ENTRY (B3) = FIRST POT OF CHAIN TO BE DROPPED.
  3411. * (X7) = LAST POT OF CHAIN TO BE DROPPED. DROP
  3412. * TO END OF CHAIN IF ZERO.
  3413. *
  3414. * CALLS DPT.
  3415.  
  3416.  
  3417. DRT BSS 0
  3418. SB4 X7+
  3419. RJ DPT DROP POT(S)
  3420. EQ PCSX EXIT
  3421. DSD SPACE 4
  3422. ** DSD - *DSD* DIAL AND WARN MESSAGES.
  3423. *
  3424. * ENTRY (B2) = NONZERO = TERMINAL NUMBER FOR DIAL MESSAGE.
  3425. * = ZERO = WARNING MESSAGE.
  3426. * (B3) = MESSAGE POT POINTER.
  3427. * (X7) = LAST POT POINTER OF MESSAGE.
  3428. *
  3429. * CALLS ASO, DPT.
  3430.  
  3431.  
  3432. DSD SB7 B2-VPST
  3433. NG B7,DSD1 IF WARNING MESSAGE
  3434.  
  3435. * PROCESS *DIAL* MESSAGE.
  3436.  
  3437. SX7 X7+10000B SET DEFAULT POT COUNT
  3438. SA2 A0+VSTT CHECK LOGOUT FLAG
  3439. LX2 59-48
  3440. SB5 B2
  3441. NG X2,DSD0 IF LOGOUT FLAG SET
  3442. LX2 59-58-59+48
  3443. NG X2,DSD0 IF USER BREAK IN PROGRESS
  3444. SX6 B0 ZERO OUT SECOND WORD OF POT CHAIN HEADER
  3445. SA1 A0+VDCT CHECK IF USER LOGGED IN
  3446. LX1 59-57
  3447. SA6 B4+B1
  3448. NG X1,ASO2 IF USER LOGGED IN
  3449. DSD0 SB4 B0
  3450. RJ DPT DROP POTS
  3451. EQ PCSX EXIT
  3452.  
  3453. * PROCESS *WARN* MESSAGE.
  3454.  
  3455. DSD1 SA1 VWMP PROCESS WARNING MESSAGE
  3456. MX2 -24
  3457. LX1 -24
  3458. BX3 -X2*X1 SAVE PREVIOUS CHAIN
  3459. BX6 X2*X1
  3460. SX0 B3
  3461. SX7 B0 ZERO OUT SECOND WORD OF POT CHAIN HEADER
  3462. ZR B3,DSD2 IF NO MESSAGE
  3463. SA7 B4+B1
  3464. SX7 B1 SET POT COUNT FOR MESSAGE
  3465. LX7 24
  3466. SA7 B4
  3467. SX4 B4
  3468. BX6 X6+X4
  3469. DSD2 LX6 24
  3470. SA6 A1
  3471. ZR X3,DSD3 IF NO PREVIOUS CHAIN
  3472. TX3 X3,-VBMP
  3473. AX3 3
  3474. SB4 B0 DROP POTS
  3475. SB3 X3
  3476. RJ DPT
  3477. DSD3 ZR X0,PCSX IF CLEAR OF PREVIOUS WARNING MESSAGE
  3478. SX5 B1 CLEAR ALL MESSAGE ISSUED FLAGS
  3479. LX5 50
  3480. TB3 VSTT+VPST*VTTL,VTTP SET FWA OF TERMINAL TABLE
  3481. TB4 VSTT,VTTP,LWA SET LWA+1 OF TERMINAL TABLE
  3482. DSD4 SA1 B3 CLEAR MESSAGE ISSUED FLAG
  3483. BX6 -X5*X1
  3484. SA6 A1+
  3485. SB3 B3+VTTL
  3486. LT B3,B4,DSD4 IF STILL MORE TERMINALS
  3487. EQ PCSX EXIT
  3488. ITP SPACE 4,30
  3489. ** ITP - INITIATE TWO PORT MUX DRIVER.
  3490. *
  3491. * *ITP* CALLS THE *1TM* DRIVER ONLY IF PRIOR DRIVER SHUTDOWN
  3492. * IS COMPLETE. IF IT IS NOT COMPLETE, A FLAG IS SET IN *VDRL*
  3493. * TO INDICATE TO *DSH* THAT *1TM* CANNOT BE CALLED UNTIL
  3494. * DRIVER SHUTDOWN IS COMPLETE. IF THE *1TM* DRIVER IS ALREADY
  3495. * RUNNING, NOTHING IS DONE.
  3496. *
  3497. * ENTRY (VITM) = *1TM* DRIVER REQUEST WORD.
  3498. * = 18/DN, 24/0, 18/VA.
  3499. * DN = *1TM* DRIVER NAME.
  3500. * VA = *1TM* *VDRL* ADDRESS.
  3501. * (VDRL) = 9/0,1/F1,1/F2,1/F3,24/SA,12/TC,12/FT.
  3502. * F1 = CALL *1TM* DRIVER FLAG.
  3503. * F2 = DRIVER SHUTDOWN COMPLETE FLAG.
  3504. * F3 = INITIATE DRIVER SHUTDOWN FLAG.
  3505. * SA = CIRCULAR DRIVER STACK ADDRESS.
  3506. * TC = TERMINAL COUNT.
  3507. * FT = FIRST TERMINAL.
  3508. *
  3509. * EXIT EITHER *1TM* IS CALLED IF PREVIOUS DRIVER SHUTDOWN IS
  3510. * COMPLETE, OR F1 IN *VDRL* IS SET TO FLAG *DRI* TO CALL
  3511. * *1TM* ONCE DRIVER SHUTDOWN HAS COMPLETED.
  3512. *
  3513. * USES A - 1, 2, 6.
  3514. * X - 1, 2, 3, 4, 6.
  3515. *
  3516. * CALLS CTM.
  3517.  
  3518.  
  3519. ITP BSS 0 ENTRY
  3520. SA2 VITM GET *1TM* *VDRL* ADDRESS
  3521. SA1 X2 GET *VDRL* ENTRY
  3522. MX4 12
  3523. BX3 X4*X1 MASK TERMINATION BITS
  3524. ZR X3,PCSX IF *1TM* ALREADY RUNNING
  3525. SX4 B1
  3526. LX4 49
  3527. BX3 X4*X1
  3528. NZ X3,ITP1 IF PREVIOUS DRIVER SHUTDOWN COMPLETE
  3529. LX4 1
  3530. BX6 X4+X1 SET CALL *1TM* DRIVER FLAG.
  3531. SA6 X2+ REWRITE *VDRL* WORD
  3532. EQ PCSX EXIT
  3533.  
  3534. ITP1 RJ CTM CALL *1TM* DRIVER
  3535. EQ PCSX EXIT
  3536. PTY SPACE 4,10
  3537. ** PTY - SET TERMINAL PARITY.
  3538. *
  3539. * ENTRY (B3) = 0 = SET EVEN PARITY.
  3540. * = 1 = SET ODD PARITY.
  3541. *
  3542. * CALLS DCR, RDC, RES, SEP, SOP.
  3543.  
  3544.  
  3545. PTY SB7 B3+ SAVE REQUEST CODE
  3546. SB3 /1TD/SOP
  3547. EQ B7,B1,PTY1 IF *ODD*
  3548. SB3 /1TD/SEP
  3549. EQ B7,B0,PTY1 IF *EVEN*
  3550. EQ PCSX EXIT - INCORRECT REQUEST
  3551.  
  3552. PTY1 RJ RDC WAIT VDCT CLEAR
  3553. SX2 B3 SET REQUEST CODE
  3554. SB3 B0 CLEAR (B3)
  3555. SX7 RES SET RESTART ADDRESS
  3556. EQ DCR ENTER DRIVER REQUEST
  3557. RDJ SPACE 4,10
  3558. ** RDJ - RECOVER DETACHED JOB.
  3559. *
  3560. * ENTRY (X7) = JSN OF JOB TO RECOVER, RIGHT JUSTIFIED.
  3561. *
  3562. * EXIT JOB RECOVERED AND CURRENT JOB TERMINATED,
  3563. * OR ERROR MESSAGE SENT AND CURRENT JOB CONTINUED.
  3564. *
  3565. * CALLS DCR, DPT, FMF, FSM, GOP, GPL, INO, MVA, PMR, PPB,
  3566. * RCM, RDC, REP, RES, RPT, SSP, TXT, UEC, ZTB.
  3567.  
  3568.  
  3569. RDJ BSS 0 ENTRY
  3570. SA1 A0+VSTT
  3571. SX2 401B
  3572. LX2 48
  3573. BX2 X1*X2
  3574. NZ X2,PCSX IF DETACH OR LOGOUT IN PROGRESS
  3575. SX2 B1 SET DETACH IN PROGRESS
  3576. LX2 56-0
  3577. BX6 X1+X2
  3578. SA6 A1
  3579. LX7 36 SAVE JSN FOR RECOVERY
  3580. SA7 RDJA
  3581. SX5 B0 GET PARAMETER POTS
  3582. SB5 B1+B1
  3583. PX5 X5,B5
  3584. RJ RPT
  3585. SA1 RDJA SAVE JSN IN PARAMETER POT
  3586. SB3 X7+ SET POT POINTER
  3587. LX7 3 SET POT ADDRESS
  3588. TB4 X7,VBMP
  3589. BX6 X1
  3590. SA6 B4+EJPB
  3591. ERRPL EJPB-VCPC PARAMETERS OVERFLOW POT
  3592. SX5 RDJ1$ WAIT FOR JOB TO RETURN
  3593. EQ PCS1 MAKE QUEUE ENTRY
  3594.  
  3595. RDJ1 RJ GPL GET POT LINK
  3596. SX0 B4+ SET MESSAGE ADDRESS
  3597. RJ SSP RESTORE PARAMETERS
  3598. SA3 B4+EJPB SET RECOVERY JSN
  3599. PARAM RCEJ,A3,X0
  3600. RJ PMR PROCESS MONITOR REQUST
  3601. NZ X2,REP IF ERROR RETURNED
  3602. SX7 B3 SAVE POT POINTER TO BEGINNING OF CHAIN
  3603. MX2 48
  3604. SA1 A0+VFST
  3605. BX1 X1*X2
  3606. BX7 X7+X1
  3607. SA7 A1
  3608. SB3 B0 GET TERMINATION PARAMETER POT
  3609. RJ GOP
  3610. PARAM TJEJ TERMINATE CURRENT JOB
  3611. RJ PMR PROCESS MONITOR REQUEST
  3612. ZR X2,RDJ1.1 IF NO ERROR ON TERMINATION
  3613. RJ UEC PROCESS TERMINATION ERROR
  3614. RDJ1.1 SA1 B4+6 SAVE TERMINAL NAME OF TERMINATED JOB
  3615. MX6 42
  3616. BX6 X6*X1
  3617. SA6 RDJE
  3618. SB4 B0+ DROP PARAMETER POT
  3619. RJ DPT
  3620. SA1 A0+VFST GET RECOVERY POT POINTER
  3621. MX2 -12
  3622. BX3 -X2*X1 GET POT POINTER
  3623. BX6 X2*X1
  3624. SA6 A1
  3625. SB3 X3
  3626. LX3 3
  3627. TB4 X3,VBMP
  3628. SA2 RECS COUNT RECOVERY
  3629. SX7 B1
  3630. IX6 X2+X7
  3631. SA6 A2
  3632.  
  3633. * RECONSTRUCT TERMINAL TABLE.
  3634.  
  3635. IFNET RDJ1.2 IF NETWORK TERMINAL
  3636. SX2 /1TD/SDU SUSPEND MUX TERMINAL DRIVER
  3637. SX7 RDJ1.2
  3638. EQ DCR ENTER DRIVER REQUEST
  3639.  
  3640. RDJ1.2 MX2 48 GET PRIMARY FILE NAME
  3641. SA1 B4
  3642. BX5 X2*X1
  3643. SA1 A1+B1
  3644. SX0 IDMS
  3645. BX6 X1*X2
  3646. AX6 12
  3647. SA6 RDJA SAVE SRU COUNT
  3648. SA3 B4+EJPB GET JSN
  3649. SA4 A0+VUIT SET EJT ORDINAL IN VUIT
  3650. BX6 -X2*X1
  3651. BX4 X2*X4
  3652. BX6 X6+X4
  3653. SA6 A4 REWRITE VUIT
  3654. SA1 A1+B1 GET NEXT PARAMETER BLOCK WORD
  3655. MX7 -6
  3656. LX7 6
  3657. BX7 -X7*X1
  3658. LX7 6
  3659. BX7 X5+X7 MERGE FILE NAME AND MODES
  3660. SA7 A0+VFNT
  3661. SA2 A0+VFST SET JSN IN VFST
  3662. MX4 -36
  3663. BX6 -X4*X2 CLEAR OLD JSN
  3664. BX6 X6+X3
  3665. SA6 A2 REWRITE VFST
  3666. SX6 VRIR (X6) = (VROT) JOB CONTINUATION FLAG
  3667. MX2 -3
  3668. BX7 -X2*X1 INTERACTIVE SUBSYSTEM
  3669. LX1 59-5
  3670. SX4 X7-MSYS
  3671. LX7 12
  3672. NG X4,RDJ2 IF VALID SUBSYSTEM
  3673. BX7 X7-X7
  3674. RDJ2 SX4 B1 SET JOB COMPLETE FLAG
  3675. LX4 54-0
  3676. BX7 X7+X4
  3677. SX2 B1 SET VROT COMPLETE
  3678. SA7 A0+VSTT WRITE VSTT
  3679. PL X1,RDJ3 IF JOB NOT ACTIVE
  3680. SX2 VJIR SET JOB IN SYSTEM
  3681. SX0 JEMS JOB ACTIVE MESSAGE
  3682. RDJ3 BX6 X2+X6 ADD STATUS TO VROT
  3683. LX1 3 GET RESOURCE LIMITS
  3684. MX2 -2
  3685. BX2 -X2*X1
  3686. LX2 19-1
  3687. BX6 X6+X2 PUT INTO VROT
  3688. SA1 A1+B1 GET FIRST WORD OF RECOVERY TABLE
  3689. MX2 12
  3690. BX7 X1*X2
  3691. LX7 12
  3692. SA6 A0+VROT WRITE VROT
  3693. SX4 X7-IFSI
  3694. ZR X4,RDJ4 IF RECOVERY TABLE FROM *IAF*
  3695. SX4 X7-RDSI
  3696. NZ X4,RDJ8 IF RECOVERY TABLE NOT FROM *RDF*
  3697.  
  3698. * PROCESS RECOVERY TABLE.
  3699.  
  3700. RDJ4 SX7 34B
  3701. BX7 X7*X1
  3702. BX6 X6+X7
  3703. SX4 40B
  3704. BX4 X4*X1 GET FILE TYPE FLAG
  3705. LX4 17-5
  3706. BX6 X6+X4 SET IN VROT
  3707. SA6 A0+VROT WRITE VROT
  3708. SA4 A0+VDCT
  3709. MX6 27
  3710. LX6 24
  3711. BX6 X4*X6
  3712. BX2 X1 SECOND COPY OF RECOVER INFORMATION
  3713. LX2 59-7
  3714. MX7 -3
  3715. LX7 12
  3716. BX7 -X7*X1
  3717. LX7 51-12
  3718. PL X2,RDJ5 IF NOT TEXT MODE
  3719. SX0 TXMS
  3720. RDJ5 SX2 B1
  3721. LX2 1-0 GET BRIEF MODE
  3722. BX4 X2*X1
  3723. LX4 55-1
  3724. BX7 X7+X4
  3725. BX6 X7+X6
  3726. SA6 A4 REWRITE VDCT
  3727. LX2 6-1 GET DISTC BIT
  3728. SA4 A0+VSTT
  3729. BX7 X2*X1
  3730. LX7 59-6
  3731. BX4 X4+X7
  3732. SX2 B1 GET PROMPT BIT
  3733. BX7 X2*X1
  3734. LX7 53-0
  3735. BX4 X4+X7
  3736. MX7 -3 GET INITIAL CHARACTER SET
  3737. LX7 15
  3738. BX7 -X7*X1
  3739. LX7 18-15
  3740. BX6 X4+X7
  3741. MX7 56 GET TERMINAL TABLE SUBSYSTEM
  3742. LX7 12
  3743. BX6 X7*X6 CLEAR CPA SUBSYSTEM
  3744. LX7 18-12
  3745. BX7 -X7*X1
  3746. AX7 18-12
  3747. BX6 X6+X7 INSERT TERMINAL TABLE SUBSYSTEM
  3748. MX7 -1
  3749. LX7 8
  3750. BX2 -X7*X1 GET EFFECT MODE
  3751. LX2 55-8
  3752. BX6 X6+X2
  3753. LX7 9-8 GET SCREEN MODE
  3754. BX2 -X7*X1
  3755. LX2 49-9
  3756. BX6 X6+X2
  3757. LX1 59-4
  3758. SA6 A4 REWRITE VSTT
  3759. LX2 X1,B1
  3760. LX3 X2,B1
  3761. PL X3,RDJ6 IF NO JOB CONTINUATION
  3762. SX0 JEMS
  3763. RDJ6 PL X2,RDJ7 IF NO INPUT REQUESTED
  3764. SX0 INMS
  3765. RDJ7 PL X1,RDJ7.1 IF NO OUTPUT AVAILABLE
  3766. SX0 OTMS
  3767.  
  3768. * RECOVER CHARACTER COUNTS.
  3769.  
  3770. RDJ7.1 SA2 A0+VCHT GET CHARACTER COUNTS
  3771. SA3 A0+VFST
  3772. SA1 A1+B1 READ RECOVERY WORD 2
  3773. MX7 -24
  3774. MX6 -12
  3775. LX6 24
  3776. BX2 X7*X2 CLEAR INPUT/OUTPUT COUNTS
  3777. BX3 X6*X3 CLEAR OVERFLOW COUNT
  3778. BX7 -X7*X1
  3779. BX6 -X6*X1
  3780. BX7 X7+X2 MERGE INPUT/OUTPUT COUNTS
  3781. BX6 X6+X3 MERGE OVERFLOW COUNT
  3782. SA7 A2 WWRIE INPUT/OUTPUT COUNTS
  3783. SA6 A3 WRITE OVERFLOW COUNT
  3784.  
  3785. * ISSUE RECOVERY MESSAGE.
  3786.  
  3787. RDJ8 SX6 B3 SAVE POT POINTER
  3788. SA6 RDJB
  3789. RJ GPL GET ADDRESS OF MSW1
  3790. SA1 RDJA GET SRU COUNT
  3791. RJ FSM FORMAT STATUS MESSAGE
  3792. SX6 FSMA SET MESSAGE ADDRESS
  3793. SB3 B0+
  3794. SB4 A6-FSMA+1 CALCULATE MESSAGE LENGTH
  3795. RJ MVA ISSUE STATUS MESSAGE
  3796. SB5 RDJC SET MESSAGE BUFFER POINTER
  3797. SX3 X0-IDMS
  3798. NZ X3,RDJ9 IF NOT IDLE
  3799. SA1 A0+VROT CLEAR JOB CONTINUATION
  3800. SX7 VRIR
  3801. BX7 -X7*X1
  3802. SA7 A1+ REWRITE VROT
  3803. RJ RCM RESET CHARACTER MODE
  3804. RDJ9 SA1 A0+VDCT
  3805. SA2 =10H CHARACTER
  3806. BX6 X2
  3807. LX1 59-51
  3808. SA6 B5
  3809. MX7 24
  3810. SA2 =6L SET:
  3811. SA3 =6LNORMAL
  3812. PL X1,RDJ10 IF NOT ASCII MODE
  3813. SA3 =5LASCII
  3814. RDJ10 BX1 X7*X3
  3815. LX1 24
  3816. BX6 X1+X2
  3817. SA6 A6+B1
  3818. BX3 -X7*X3 REST OF CHARACTER SET
  3819. LX3 24 LEFT JUSTIFIED
  3820. SA1 =5RMODES
  3821. BX1 X3+X1
  3822. RJ ZTB CONVERT ZERO CHARACTERS TO BLANKS
  3823. SA6 A6+B1
  3824. RJ FMF FORMAT MODES FIELD
  3825. SA1 X0
  3826. MX2 -12
  3827. RDJ11 BX6 X1 MOVE APPROPRIATE PROMPT MESSAGE
  3828. SX7 A6-RDJD
  3829. PL X7,RDJ11.2 IF END OF BUFFER
  3830. SA6 A6+B1
  3831. BX6 -X2*X6
  3832. SA1 A1+B1
  3833. NZ X6,RDJ11 IF NO EOL
  3834. RDJ11.2 SX6 A6-RDJC+1 SAVE MESSAGE LENGTH
  3835. SA1 RDJB GET POT CHAIN TO DROP
  3836. SB3 X1
  3837. SA6 A1
  3838. SB4 B0
  3839. RJ DPT DROP POT CHAIN
  3840. MX2 1 SET READ DATA BIT
  3841. LX2 54-59
  3842. SA1 A0+VDCT
  3843. BX6 X2+X1
  3844. SA6 A1 REWRITE VDCT
  3845. SA1 RDJB GET MESSAGE LENGTH
  3846. SB3 B0
  3847. SB4 X1
  3848. SX6 RDJC SET FWA OF FORMATTED MESSAGE
  3849. RJ MVA SEND MESSAGE TO TERMINAL
  3850. IFNET RDJ12 IF NETWORK TERMINAL
  3851. SB3 X0+ SAVE MESSAGE ADDRESS
  3852. SA1 A0+VDCT SET INTERRUPT COMPLETE FLAG
  3853. SX6 B1+
  3854. LX6 58-0
  3855. BX6 X1+X6
  3856. SA6 A1+
  3857. RJ RDC ENSURE INTERLOCK CLEAR
  3858. SX0 B3+ RESTORE MESSAGE ADDRESS
  3859. SB3 B0+
  3860. RDJ12 RJ GOP GET POT FOR PARAMETER BLOCK
  3861. PARAM RSEJ RESTART JOB
  3862. SA1 RDJE ADD TERMINATED TERMINAL NAME TO BLOCK
  3863. SA2 B4+6
  3864. MX3 -18
  3865. BX3 -X3*X2
  3866. BX6 X1+X3
  3867. SA6 B4+6
  3868. SX1 X0-TXMS
  3869. ZR X1,RDJ13 IF TEXT MODE
  3870. RJ PMR PROCESS MONITOR REQUEST
  3871. ZR X2,RDJ12.1 IF NO ERROR
  3872. SX3 X2-ERER
  3873. ZR X3,REP IF DEVICE INACCESSIBLE OR I/O ERROR
  3874. RDJ12.1 SB4 B0+
  3875. RJ DPT DROP REQUEST POT
  3876. EQ RES RESTART TERMINAL SESSION
  3877.  
  3878. * FINISH TEXT MODE RECOVERY.
  3879.  
  3880. RDJ13 RJ PMR PROCESS MONITOR REQUEST
  3881. ZR X2,RDJ13.1 IF NO ERROR
  3882. SX3 X2-ERER
  3883. ZR X3,REP IF DEVICE INACCESSIBLE OR I/O ERROR
  3884. RDJ13.1 RJ RDC ENSURE INTERLOCK CLEAR
  3885. SA1 A0+VDCT CLEAR READ DATA BIT
  3886. MX6 59
  3887. LX6 54-0
  3888. BX6 X6*X1
  3889. SA6 A1 REWRITE VDCT
  3890. EQ TXT ENTER TEXT MODE
  3891.  
  3892.  
  3893. RDJA CON 0 TEMPORARY STORAGE
  3894. RDJB CON 0
  3895. RDJC BSS 15 FORMATTED MESSAGE BUFFER
  3896. RDJD BSS 0 END OF MESSAGE BUFFER
  3897. RDJE CON 0 TERMINAL NAME OF TERMINATED JOB
  3898. RECS CON 0 COUNT OF RECOVERED USERS
  3899.  
  3900.  
  3901. IDMS DATA 22L IDLE. ENTER COMMAND.
  3902. TXMS DATA 11L TEXT MODE.
  3903. JEMS DATA 15L JOB IN SYSTEM.
  3904. INMS DATA 17L INPUT REQUESTED.
  3905. OTMS DATA 18L OUTPUT AVAILABLE.
  3906. REP SPACE 4,10
  3907. ** REP - RECOVERY ERROR PROCESSOR.
  3908.  
  3909.  
  3910. * PROCESS ERROR RETURN.
  3911.  
  3912. REP BSS 0 ENTRY
  3913. SX6 X2-NTER
  3914. SX3 X2-JFER
  3915. ZR X6,REP1 IF NOT DETACHED
  3916. ZR X3,REP2 IF NOT FOUND
  3917. SX3 X2-ERER
  3918. SMA X6,( DEVICE INACCESSIBLE - RECOVERY FAILED."NL")
  3919. ZR X3,REP3 IF DEVICE INACCESSIBLE OR I/O ERROR
  3920. SMA X6,( JOB NOT RECOVERABLE."NL")
  3921. EQ REP3 SEND MESSAGE
  3922.  
  3923. REP1 SMA X6,( JOB NOT DETACHED."NL")
  3924. EQ REP3 SEND MESSAGE
  3925.  
  3926. REP2 SMA X6,( JOB NOT FOUND."NL")
  3927. REP3 SB4 B0+
  3928. RJ MVA MOVE DATA AND ASSIGN MESSAGE
  3929.  
  3930. * EXIT TO RESTART JOB.
  3931.  
  3932. RJ CDP CLEAR DETACH IN PROGRESS
  3933. SB3 B0 SET NO POT
  3934. EQ RES RESTART TERMINAL SESSION
  3935. SBS SPACE 4,10
  3936. ** SBS - SET SUBSYSTEM.
  3937. *
  3938. * ENTRY (B3) = SUBSYSTEM REQUESTED.
  3939. *
  3940. * CALLS ABT IF INCORRECT SUBSYSTEM.
  3941.  
  3942.  
  3943. SBS BSS 0
  3944. SA1 A0+VSTT GET WORD VSTT
  3945. SB4 B3-MSYS CHECK REQUESTED SUBSYSTEM
  3946. MX6 57
  3947. PL B4,SBS1 IF INCORRECT SUBSYSTEM
  3948. SX7 B3
  3949. LX7 12
  3950. LX6 12
  3951. BX6 X6*X1 MASK SUBSYSTEM
  3952. IX7 X6+X7 INSERT NEW SUBSYSTEM
  3953. SA7 A1
  3954. EQ PCSX EXIT
  3955.  
  3956. SBS1 SX6 3RSBS
  3957. RJ ABT
  3958. EQ PCSX EXIT
  3959. SCS SPACE 4,10
  3960. ** SCS - SET CHARACTER SET MODE.
  3961. *
  3962. * ENTRY (X7) = 56/, 1/Y, 3/X.
  3963. * Y = RESET ENTRY MODE IF NONZERO.
  3964. * X = 0 = SET NORMAL MODE.
  3965. * = 1 = SET EXTENDED MODE.
  3966. * = 2 = RESET TO ENTRY MODE.
  3967. *
  3968. * EXIT (VDCT) = MODE RESET.
  3969. *
  3970. * CALLS RDC, RES.
  3971.  
  3972.  
  3973. SCS MX1 -2 ISOLATE ARGUMENT
  3974. BX1 -X1*X7
  3975. SB3 X1
  3976. SB4 B3-B1 TEST ARGUMENT
  3977. LE B3,B1,SCS1 IF *NORMAL* OR *ASCII*
  3978. NE B4,B1,PCSX IF NOT *RESTORE*
  3979.  
  3980. * PROCESS *RESTORE* FUNCTION.
  3981.  
  3982. SA1 A0+VSTT GET ENTRY MODE
  3983. SX7 B1
  3984. AX1 18
  3985. BX7 X7*X1 ENTRY MODE BIT
  3986. SB3 X7 SAVE IN B3
  3987. EQ SCS2
  3988.  
  3989. * PROCESS *NORMAL* OR *ASCII* FUNCTION.
  3990.  
  3991. SCS1 LX7 59-3 CHECK FOR ENTRY MODE RESET
  3992. PL X7,SCS2 IF NOT RESET
  3993. SX5 B3
  3994. SA1 A0+VSTT CLEAR ENTRY MODE
  3995. MX7 -1
  3996. LX1 -18
  3997. BX7 X7*X1
  3998. BX7 X7+X5 SET ENTRY MODE
  3999. LX7 18
  4000. SA7 A1 REWRITE VSTT
  4001. SCS2 RJ RDC READ *VDCT*
  4002. SX7 B1 CLEAR MODE
  4003. LX7 51-0
  4004. BX1 -X7*X1
  4005. SX7 B3 SET MODE
  4006. LX7 51-0
  4007. IX7 X7+X1
  4008. SA7 A1 REWRITE *VDCT*
  4009. SB3 B0
  4010. IFNET RES RESTART JOB
  4011. SX2 /1TD/SCE SET TRANSMISSION MODE FOR MUX TERMINALS
  4012. SX7 RES SET RESTART ADDRESS
  4013. JP DCR ENTER DRIVER REQUEST
  4014. SDT SPACE 4,10
  4015. ** SDT - SET TERMINAL TABLE BIT.
  4016. *
  4017. * ENTRY (B3) = BIT NUMBER.
  4018. * (X7) = TERMINAL TABLE WORD ORDINAL.
  4019. *
  4020. * CALLS ABT.
  4021.  
  4022.  
  4023. SDT BSS 0
  4024. SX3 1
  4025. SB4 X7+
  4026. SDT1 MX2 59
  4027. SX6 X7-VSTT
  4028. LX3 X3,B3 POSITION BIT
  4029. NZ X6,SDT2 IF WRONG WORD
  4030. SA1 A0+B4
  4031. LX2 X2,B3 POSITION MASK
  4032. SB7 B3-60
  4033. BX6 X2*X1 CLEAR BIT
  4034. PL B7,SDT2 IF BIT OUT OF RANGE
  4035. BX6 X6+X3
  4036. SA6 A1
  4037. EQ PCSX EXIT
  4038.  
  4039. SDT2 SX6 3RSDT
  4040. RJ ABT
  4041. EQ PCSX EXIT
  4042. SJS SPACE 4,10
  4043. ** SJS - SET JOB STATUS MESSAGE FOR *ENQUIRE* COMMAND.
  4044. *
  4045. * ENTRY (X7) = 0 IF BAD ROLLOUT FILE.
  4046.  
  4047.  
  4048. SJS BSS 0 ENTRY
  4049. SA2 A0+VSTT
  4050. SX0 2001B CHECK USER BREAK OR LOGOUT IN PROGRESS
  4051. SB5 B2
  4052. LX0 48
  4053. RJ GRT READ QUEUE ENTRY
  4054. BX5 X4
  4055. AX4 48
  4056. SX4 X4-ITA1$
  4057. NZ X4,SJS1 IF NOT STATUS REQUEST QUEUE ENTRY
  4058. SX6 B0
  4059. BX0 X0*X2
  4060. SA6 A4+ CLEAR QUEUE ENTRY
  4061. RJ UQS UPDATE QUEUE STACK
  4062. RJ SSP
  4063. NZ X0,IGN IF USER BREAK OR LOGOUT IN PROGRESS
  4064. ZR X7,STA1 IF REQUEST REJECTED, REISSUE
  4065. EQ STA7 REENTER STATUS PROCESSING
  4066.  
  4067. SJS1 SX6 3RSJS SET ERROR CODE
  4068. RJ ABT
  4069. EQ PCSX EXIT
  4070. TITLE CHECK SALVARE FILE.
  4071. TITLE DRI - PROCESS DRIVER REQUESTS.
  4072. DRI SPACE 4
  4073. ** DRI - FINDS ALL DRIVER CIRCULAR STACK REQUESTS AND BEGINS
  4074. * PROCESSING OF THEM.
  4075. *
  4076. * CALLS ABT, CTM, DSH, REQUEST PROCESSORS VIA *PDR*.
  4077.  
  4078.  
  4079. DRI SUBR ENTRY/EXIT
  4080. SX7 VDRL SET FIRST STACK POINTER ADDRESS
  4081. SA7 DRIA
  4082.  
  4083. * SET STACK ADDRESS.
  4084.  
  4085. DRI1 SA1 X7 READ STACK POINTER
  4086. NG X1,DRIX IF END OF STACK POINTERS, EXIT
  4087. AX1 24
  4088. SX7 X1+ SET STACK ADDRESS
  4089. ZR X7,DRI5 IF NULL STACK
  4090. SA7 DRIB SAVE STACK ADDRESS
  4091.  
  4092. * GET CIRCULAR STACK ENTRY.
  4093.  
  4094. DRI2 SA2 X1+2 READ IN
  4095. SA3 A2+B1 READ OUT
  4096. BX4 X2-X3
  4097. ZR X4,DRI4 IF IN .EQ. OUT
  4098. SA4 A3+B1 READ LIMIT
  4099. SA5 X3 READ ENTRY
  4100. SX6 X3+B1 ADVANCE OUT
  4101. BX4 X6-X4
  4102. NZ X4,DRI3 IF OUT .NE. LIMIT
  4103. SA1 A2-1 READ FIRST
  4104. SX6 X1+ SET OUT = FIRST
  4105.  
  4106. * PROCESS CIRCULAR STACK ENTRY.
  4107.  
  4108. DRI3 SA6 A3 REWRITE OUT
  4109. UX1,B7 X5 UNPACK ENTRY
  4110. SB6 TDRIL SET COMMAND TABLE LIMIT
  4111. NG B7,DRI6 IF BAD ENTRY
  4112. GE B7,B6,DRI6 IF BAD ENTRY
  4113. SA4 TDRI+B7 GET PROCESSOR ADDRESS
  4114. SB7 X4+
  4115. ZR B7,DRI6 IF UNDEFINED PROCESSOR
  4116. RJ /SMFIF/PDR PROCESS DRIVER REQUEST
  4117. SA1 DRIB RESET STACK ADDRESS
  4118. EQ DRI2 CONTINUE
  4119.  
  4120. * CHECK COMPLETED STACK FOR SHUTDOWN.
  4121.  
  4122. DRI4 SA1 DRIA GET STACK POINTER ADDRESS
  4123. SA2 X1 READ STACK POINTER
  4124. AX2 48 CHECK SHUTDOWN POINTER
  4125. ZR X2,DRI5 IF NO SHUTDOWN
  4126. LX2 59-49+48
  4127. NG X2,DRI7 IF SHUTDOWN COMPLETE
  4128. RJ DSH PROCESS SHUTDOWN
  4129.  
  4130. * ADVANCE STACK POINTER AND CONTINUE.
  4131.  
  4132. DRI5 SA1 DRIA GET STACK POINTER
  4133. SX7 X1+B1 ADVANCE POINTER
  4134. SA7 A1
  4135. EQ DRI1 CONTINUE
  4136.  
  4137. * PROCESS BAD STACK ENTRY.
  4138.  
  4139. DRI6 SX6 3RDRI SET ERROR CODE
  4140. BX7 X5 SAVE INCORRECT REQUEST
  4141. SA7 DRIC
  4142. RJ ABT PROCESS ERROR
  4143. EQ DRI5 CONTINUE
  4144.  
  4145. * CHECK CALL *1TM* FLAG.
  4146.  
  4147. DRI7 SA1 DRIA GET CURRENT *VDRL* ADDRESS
  4148. MX7 -18
  4149. SA2 VITM GET *1TM* *VDRL* ADDRESS
  4150. BX2 -X7*X2
  4151. BX7 X1-X2
  4152. NZ X7,DRI5 IF NOT *1TM* *VDRL* ADDRESS
  4153. SA1 X2
  4154. LX1 59-50
  4155. PL X1,DRI5 IF CALL *1TM* FLAG NOT SET
  4156. RJ CTM CALL *1TM* DRIVER
  4157. EQ DRI5 CONTINUE
  4158.  
  4159. DRIA CON 0 CURRENT STACK POINTER ADDRESS
  4160. DRIB CON 0 CURRENT STACK ADDRESS
  4161. DRIC CON 0 SAVE INCORRECT REQUEST CODE
  4162. TDRI SPACE 4
  4163. ** TDRI - COMMAND PROCESSING TABLE FOR DRIVER(S) CIRCULAR.
  4164. * STACK(S).
  4165.  
  4166.  
  4167. TDRI INDEX CON,/TLX/REQL,( 0 )
  4168. INDEX ,/TLX/CLI,( CLI )
  4169. INDEX ,/TLX/DIN,( DIN )
  4170. INDEX ,/TLX/DLO,( DLO )
  4171. INDEX ,/TLX/DRP,( DRP )
  4172. INDEX ,/TLX/DRT,( DRT )
  4173. INDEX ,/TLX/DTJ,( DTJ )
  4174. INDEX ,/TLX/ETX,( ETX )
  4175. INDEX ,/TLX/FLO,( FLO )
  4176. INDEX ,/TLX/HUP,( HUP )
  4177. INDEX ,/TLX/IAM,( IAM )
  4178. INDEX ,/TLX/LPT,( LPT )
  4179. INDEX ,/TLX/PUB,( PUB )
  4180. INDEX ,/TLX/RES,( RES )
  4181. INDEX ,/TLX/RIN,( RIN )
  4182. INDEX ,/TLX/SAI,( SAI )
  4183. INDEX ,/TLX/TOT,( TOT )
  4184.  
  4185. TDRIL EQU *-TDRI TABLE LENGTH
  4186. DRI TITLE DRI - SUBROUTINES.
  4187. CLI SPACE 4
  4188. ** CLI - COMMAND LINE OF INPUT RECEIVED.
  4189. *
  4190. * ENTRY (B3) = COMMAND POT POINTER.
  4191. * (B4) = COMMAND POT ADDRESS.
  4192. * (X7) = FWA IN COMMAND POT.
  4193. *
  4194. * EXIT TO APPROPRIATE COMMAND PROCESSOR.
  4195. * SEE SSP.
  4196.  
  4197.  
  4198. CLI BSS 0
  4199. SA1 A0+VDCT
  4200. SA2 A0+VROT
  4201. MX4 59
  4202. LX4 5-0 CLEAR *INPUT SATISFIED* BIT
  4203. BX6 X2*X4
  4204. LX4 56-5 CLEAR *INPUT REQUESTED*
  4205. SA6 A2
  4206. BX6 X1*X4
  4207. SA6 A1+
  4208. SB5 B2+
  4209. RJ GRT READ QUEUE ENTRY
  4210. BX3 X4
  4211. AX4 48
  4212. SX5 X4-INP$
  4213. LX1 59-49
  4214. ZR X5,CLI2 IF EXPLICIT INPUT REQUEST
  4215. SX5 X4-TOT$
  4216. ZR X5,IGN IF TIMEOUT IN PROGRESS
  4217. NG X1,AUT5 IF AUTO MODE
  4218. IFNET CLI1
  4219. SA2 A0+VDCT CLEAR AUTO MODE BIT FOR MUX TERMINAL
  4220. SX6 B1
  4221. LX6 45-0
  4222. BX6 -X6*X2
  4223. SA6 A2
  4224. CLI1 LX1 59-57-59+49
  4225. NG X1,PCM IF USER LOGGED IN, PROCESS COMMAND
  4226. RJ INO ISSUE NULL OUTPUT
  4227. EQ PCSX EXIT
  4228.  
  4229. * PROCESS INP$ QUEUE ENTRY.
  4230. *
  4231. * EXIT TO INP$ QUEUE ENTRY REENTRY ADDRESS.
  4232. * (B3) = INPUT POT POINTER.
  4233. * (B5) = QUEUE ENTRY POT POINTER.
  4234. * (B6) = QUEUE ENTRY POT ADDRESS.
  4235. * (PBUF) = CRACKED COMMAND.
  4236.  
  4237. CLI2 BX4 X3
  4238. LX3 -24
  4239. PL X1,CLI3 IF NOT AUTO MODE
  4240. IFNET AUT5
  4241. MX6 1 CLEAR AUTO MODE BIT FOR MUX TERMINAL
  4242. BX6 -X6*X1
  4243. LX6 49-59
  4244. SA6 A1
  4245. CLI3 SX5 X3-INP
  4246. ZR X5,CLI5 IF INPUT TO A RUNNING PROGRAM
  4247. RJ CCM CRACK COMMAND
  4248. CLI4 SB5 B2+ SET TERMINAL NUMBER
  4249. RJ GRT READ QUEUE ENTRY
  4250.  
  4251. * SET PARAMETERS AND EXIT TO PROCESSOR.
  4252.  
  4253. CLI5 BX6 X6-X6 CLEAR QUEUE ENTRY
  4254. SA6 A4
  4255. BX6 X4 SAVE QUEUE ENTRY
  4256. SA6 CLIA
  4257. RJ UQS UPDATE QUEUE STACK
  4258. RJ SSP RESTORE REGISTERS
  4259. SA4 CLIA GET QUEUE ENTRY
  4260. AX4 12 SET QUEUE ENTRY POT POINTER
  4261. MX1 -12
  4262. BX1 -X1*X4
  4263. SB5 X1
  4264. AX4 12 SET REENTRY ADDRESS
  4265. LX1 3 SET QUEUE ENTRY POT ADDRESS
  4266. SB7 X4+
  4267. TB6 X1,VBMP
  4268. JP B7 EXIT TO PROCESSOR
  4269.  
  4270. CLIA CON 0 QUEUE ENTRY
  4271. DIN SPACE 4,10
  4272. ** DIN - PROCESS USER DIALED IN.
  4273. *
  4274. * DIN IS ENTERED WHEN A COMMUNICATIONS LINE BECOMES
  4275. * ACTIVE. A POT IS GIVEN TO THE DRIVER FOR THE
  4276. * ANSWERBACK FROM THE TERMINAL. REENTRY IS SET TO
  4277. * *LIN* FOR NON-POLLED TERMINALS.
  4278.  
  4279.  
  4280. DIN BSS 0 ENTRY
  4281.  
  4282. * DETERMINE IF TERMINAL IS IDLE.
  4283.  
  4284. DIN1 SA2 A0+VROT
  4285. SA3 A0+VDCT
  4286. LX2 59-0
  4287. SA4 A0+VSTT
  4288. MX6 -12
  4289. LX4 59-48
  4290. BX2 -X2+X4
  4291. BX4 X3+X2
  4292. NG X4,DIN2 IF LOGOUT, DRIVER REQUEST, OR INCOMPLETE
  4293. BX6 -X6*X3
  4294. NZ X6,DIN2 IF VDCT INTERLOCKED
  4295.  
  4296. * REQUEST ANSWERBACK POT.
  4297.  
  4298. PX5 X6,B1
  4299. RJ CFL CHECK FIELD LENGTH
  4300. NG X2,DIN2 IF POTS IN SHORT SUPPLY
  4301. RJ RPT RESERVE POT
  4302. SA1 A0+VDCT
  4303. NZ X7,DIN3 IF POT RESERVED
  4304.  
  4305. * REENTER DIAL IN PROCESSING.
  4306.  
  4307. DIN2 SX5 DIN1$
  4308. BX7 X7-X7
  4309. SB3 B0
  4310. EQ PCS1 MAKE QUEUE ENTRY
  4311.  
  4312. * PRESET FOR LOGIN PROCESSING.
  4313.  
  4314. DIN3 BX3 X7 ASSIGN POT TO DRIVER
  4315. SX6 2R"EB" SET TERMINATOR IN POT
  4316. BX7 X1+X7
  4317. LX3 3
  4318. LX6 48-0
  4319. LX1 59-47
  4320. TA6 X3,VBMP
  4321. SX2 B1 SET *READ DATA*
  4322. LX2 54-0
  4323. BX7 X7+X2
  4324. SA7 A1 REWRITE VDCT
  4325. NG X1,PCSX IF POLLED LINE
  4326. SX5 INP$ SET UP QUEUE ENTRY
  4327. SX7 LIN SET REENTRY
  4328. LX5 48
  4329. LX7 24
  4330. IX5 X5+X7 MERGE QUEUE POINTER AND REENTRY
  4331. SB7 B0 INDICATE NULL QUEUE
  4332. RJ MQE MAKE QUEUE ENTRY
  4333. EQ PCSX EXIT
  4334. DTJ SPACE 4,15
  4335. ** DTJ - DETACH JOB.
  4336. *
  4337. * ENTRY (X7) = REASON CODE.
  4338. * (B3) = POT POINTER, IF PROVIDED.
  4339. * (B4) = FWA POT, IF PROVIDED.
  4340. *
  4341. * EXIT (B3) = POT POINTER TO PARAMETER BLOCK.
  4342. * (B4) = FWA PARAMETER BLOCK.
  4343. * (X2) = ERROR FIELD, IF ANY.
  4344. *
  4345. * CALLS CAM, CDP, CJA, CNT, DAP, DIP, DLP, DVP, GOP, MVA, PMR,
  4346. * SSP, UEC.
  4347. *
  4348. * MACROS PARAM.
  4349.  
  4350.  
  4351. DTJ BSS 0
  4352. SA1 A0+VSTT
  4353. BX2 X1
  4354. LX1 59-56
  4355. LX2 59-48
  4356. BX2 X1+X2
  4357. NG X2,PCSX IF LOGOUT OR DETACH IN PROGRESS
  4358. MX6 1 SET DETACH IN PROGRESS
  4359. BX6 X1+X6
  4360. LX6 56-59
  4361. SA6 A1
  4362. SA1 A0+VDCT
  4363. SA7 DTJD SAVE REASON CODE
  4364. LX1 59-49
  4365. PL X1,DTJ1 IF NOT IN AUTO MODE
  4366. RJ CAM CLEAR AUTO MODE
  4367. RJ DAP DEASSIGN ANY OUTPUT/DRIVER REQUESTS
  4368. RJ DLP DUMP ANY REMAINING SOURCE INPUT
  4369. RJ SSP RESTORE ENTRY PARAMETERS
  4370. DTJ1 IFMUX DTJ1.1
  4371. SA4 DTJD SAVE REASON CODE IN VMST
  4372. RJ CNT CANCEL TYPEAHEAD
  4373. ZR X1,DTJ1.1 IF NO REENTRY MADE
  4374. SA6 DTJD RESTORE REASON CODE
  4375. DTJ1.1 SA1 A0+VDCT CLEAR *INPUT REQUESTED*
  4376. SX4 B1
  4377. LX4 56-0
  4378. BX6 -X4*X1
  4379. SA6 A1
  4380. RJ GOP
  4381. SA1 DTJD
  4382. BX7 X1
  4383. SA7 B4+VCPC-1 SAVE REASON CODE
  4384. SX7 DTJ2 SET RETURN ADDRESS
  4385. EQ CJA CLEAR JOB ACTIVITY
  4386.  
  4387. DTJ2 SX7 B3 SET POT ADDRESS
  4388. LX7 3
  4389. TB4 X7,VBMP
  4390. PARAM FJEJ FREEZE JOB
  4391. RJ PMR PROCESS MONITOR REQUEST
  4392. SX5 DTJ3$
  4393. EQ PCS1 WAIT UNTIL THE JOB HAS ROLLED
  4394.  
  4395. DTJ3 SA3 B4+VCPC-1 RESTORE REASON CODE
  4396. PARAM DTEJ,X3
  4397. RJ PMR PROCESS MONITOR REQUEST
  4398. BX0 X2 SAVE RESULT
  4399. RJ DIP DROP INPUT POT CHAIN
  4400. RJ DVP DROP *VROT* POT CHAIN
  4401. RJ SSP RESTORE B4
  4402. BX2 X0 RESTORE RESULT CODE
  4403. SA1 B4+2 GET REASON CODE
  4404. MX3 -6
  4405. AX1 42
  4406. BX3 -X3*X1
  4407. SB6 X3-TDJPL
  4408. PL B6,DTJ6 IF INVALID REASON CODE
  4409. SA5 TDJP+X3 GET PROCESSOR ADDRESSES
  4410. SB7 X5
  4411. AX5 30
  4412. SB6 X5
  4413. ZR X2,DTJ4 IF NO ERRORS REPORTED
  4414. SX1 X2-JOER
  4415. ZR X1,DTJ3.1 IF JOB NOT ON-LINE
  4416.  
  4417. * IF A *JDER* ERROR CODE IS RETURNED, EITHER THE
  4418. * JOB IS NOT IN *IOJS* OR *DOJS* STATUS, OR THERE
  4419. * IS A BAD REASON CODE IN THE REQUEST. IN EITHER
  4420. * CASE THERE IS NO WAY TO RECOVER FROM THIS ERROR.
  4421.  
  4422. SX1 X2-JDER
  4423. ZR X1,DTJ6 IF UNRECOVERABLE ERROR
  4424.  
  4425. * IF AN *ERER* ERROR CODE IS RETURNED AN UNRECOVERABLE I/O
  4426. * ERROR OCCURRED.
  4427.  
  4428. SX1 X2-ERER
  4429. ZR X1,DTJ3.1 IF UNRECOVERABLE I/O ERROR
  4430. JP B7 RETURN TO ERROR PROCESSOR
  4431.  
  4432. DTJ3.1 SA1 A0+VFST BUILD MESSAGE
  4433. MX6 24
  4434. BX1 X6*X1 JSN
  4435. SA2 DTJE+2
  4436. BX2 -X6*X2 CLEAR OLD JSN
  4437. BX6 X1+X2 ADD NEW JSN
  4438. SA6 A2
  4439. SX6 DTJE
  4440. RJ IDM ISSUE DAYFILE MESSAGE
  4441. DTJ4 SA1 A0+VUIT CLEAR EJT ORDINAL
  4442. MX3 48
  4443. BX6 X1*X3
  4444. SA6 A1 REWRITE VUIT
  4445. JP B6 EXIT TO NORMAL PROCESSOR
  4446.  
  4447. * RETURN HERE UPON SUCCESSFUL USER DETACH.
  4448.  
  4449. DTJ5 SA1 A0+VFST PUT JSN IN MESSAGE
  4450. MX6 24
  4451. MX0 -3 SAVE ACCESS LEVEL LIMIT OF DETACHED JOB
  4452. SA2 B4+2
  4453. LX2 -54
  4454. BX0 -X0*X2
  4455. BX6 X1*X6
  4456. BX7 X7-X7
  4457. SA6 DTJB
  4458. MX6 42 SAVE TERMINAL NAME OF DETACHED JOB
  4459. SA2 B4+6
  4460. BX6 X6*X2
  4461. SA6 DTJC
  4462. SA7 A0+VFNT
  4463. SA7 A0+VCHT
  4464. SA1 A0+VSTT CLEAR USER EFFECT MODE
  4465. MX7 1
  4466. LX7 55-59
  4467. BX6 -X7*X1
  4468. SA6 A1 REWRITE VSTT
  4469. SX6 DTJA SET MESSAGE ADDRESS
  4470. SB4 3
  4471. RJ MVA MOVE MESSAGE TO POT AND ASSIGN
  4472. RJ GOP GET ONE POT
  4473. SA1 A0+VUIT
  4474. MX6 -6
  4475. MX7 42
  4476. BX7 X7*X1 GET USERNAME
  4477. LX1 48
  4478. BX6 -X6*X1 GET FAMILY ORDINAL
  4479. SA6 B4
  4480. ERRNZ VUFO CODE DEPENDS ON VALUE
  4481. SA7 B4+VUNA
  4482. SX6 X0+10B SET ACCESS LEVEL LIMIT FOR NEW JOB
  4483. SA6 B4+VLAL
  4484. BX7 X7-X7 ZERO VFST
  4485. SX6 B1 CLEAR VROT
  4486. SA7 A0+VFST
  4487. SA6 A0+VROT
  4488. SA1 DTJC
  4489. BX6 X1
  4490. SA6 B4+VTRY SET TERMINAL NAME
  4491. SX5 ITA2$ SET 1TA LOGIN REQUEST
  4492. EQ PCS1 RELOGIN USER
  4493.  
  4494. * RETURN HERE UPON ERROR IN USER DETACH.
  4495.  
  4496. DTJ6 RJ CDP CLEAR DETACH IN PROGRESS
  4497. SX1 X2-DLER
  4498. SMA X6,( DETACH LIMIT EXCEEDED."NL")
  4499. ZR X1,PCS5 IF LIMIT EXCEEDED
  4500. SX1 X2-SFER
  4501. SX3 X2-ISER
  4502. SMA X6,(USER NOT VALIDATED FOR DETACHED SERVICE CLASS."NL")
  4503. ZR X3,PCS5 IF SERVICE CLASS NOT VALID FOR USER
  4504. SMA X6,(SERVICE CLASS FULL."NL")
  4505. ZR X1,PCS5 IF SERVICE CLASS AT JOB LIMIT
  4506. SX3 X2-ERER
  4507. SMA X6,( DEVICE INACCESSIBLE - DETACH FAILED."NL")
  4508. ZR X3,PCS5 IF DEVICE INACCESSIBLE OR I/O ERROR
  4509. RJ UEC PROCESS ERROR CODE
  4510. SMA X6,( ERROR ON DETACH."NL")
  4511. EQ PCS5 EXIT TO SEND MESSAGE
  4512.  
  4513.  
  4514. DTJA DATA 10H JOB DETA
  4515. DATA 10HCHED, JSN=
  4516. DTJB CON 0 JSN DETACH
  4517. DTJC CON 0 TERMINAL NAME OF DETACHED JOB
  4518. DTJD CON 0 DETACH REASON CODE
  4519. DTJE DATA C* DETACH FAILED, JSN=XXXX.*
  4520. TDJP SPACE 4,10
  4521. ** TDJP - TABLE OF DETACH PROCESSORS.
  4522. *
  4523. * 30/NORMAL RETURN, 30/ERROR RETURN.
  4524.  
  4525.  
  4526. TDJP INDEX VFD,MXDT,( )
  4527. INDEX ,LDRC,( 30/HUP3,30/FTP5 ) LINE DISCONNECT
  4528. INDEX ,TORC,( 30/FTP4,30/FTP5 ) FINISH TIMEOUT PROCESSING
  4529. INDEX ,SARC,( 30/PCSX,30/PCSX ) SUBSYSTEM ABORT
  4530. INDEX ,UDRC,( 30/DTJ5,30/DTJ6 ) USER DETACH
  4531. INDEX ,PDRC,( 30/DTJ5,30/DTJ6 ) PROGRAM INITIATED DETACH
  4532. INDEX ,PIDL,( 30/HUP3,30/FTP5 ) PROGRAM INITIATED HUP
  4533. DLO SPACE 4
  4534. ** DLO - PROCESSES DATA LOST CONDITION.
  4535. *
  4536. * ENTRY-
  4537. * SEE SSP
  4538. *
  4539. * (X7) = REQUEST CODE.
  4540. * 0 = DRIVER REENTRY. THIS MEANS THAT INPUT COULD
  4541. * NOT BE ACCEPTED BECAUSE A DRIVER REENTRY WAS
  4542. * ALREADY WAITING TO BE PROCESSED. THIS
  4543. * IS DIAGNOSED AS *DATA LOST IAFEX*.
  4544. *
  4545. * 1 = LOST DATA. THIS MEANS THAT THE LOST DATA STATUS
  4546. * WAS DETECTED IN THE 667X STATUS. THIS IS DIAGNOSED
  4547. * AS *DATA LOST DRIVER*.
  4548.  
  4549.  
  4550. DLO SA1 PMSG CHECK PENDING MESSAGE
  4551. SA2 DLOB+X7 GET ERROR TYPE
  4552. NZ X1,PCSX IF REQUEST PENDING SKIP MESSAGE
  4553. SX1 B2 SET TERMINAL NUMBER
  4554. BX6 X2
  4555. SA6 DLOA+1
  4556. RJ O6S
  4557. SA2 DLOC SET SYSTEM CALL
  4558. SA6 A6+B1
  4559. BX7 X2
  4560. SA7 A1
  4561. EQ PCSX EXIT
  4562.  
  4563. DLOA DATA H*DATA LOST *
  4564. DATA 0
  4565. DATA 0
  4566. DLOB DATA 10HIAFEX
  4567. DATA 10HDRIVER
  4568. DLOC VFD 18/3R1MA,6/0,12/1,6/0,18/DLOA
  4569. DRP SPACE 4
  4570. ** DRP - DROPS A POT THAT IS NO LONGER NEEDED.
  4571. *
  4572. * ENTRY-
  4573. * SEE SSP
  4574.  
  4575.  
  4576. DRP BSS 0
  4577. ZR X7,DRP1 IF NO RESET OF END OF CHAIN
  4578. SB7 B0
  4579. RJ RPL RESET POT LINKAGE
  4580. EQ PCSX EXIT
  4581.  
  4582. DRP1 SB4 B3
  4583. RJ DPT DROP POT
  4584. EQ PCSX EXIT
  4585. ETX SPACE 4,10
  4586. ** ETX - PROCESS TEXT MODE EXIT.
  4587. *
  4588. * ENTRY (B2) = TERMINAL NUMBER.
  4589. * (B3) = POT TO BE DUMPED.
  4590. * (X7) = WORD COUNT IN POT.
  4591. * IF ZERO, NO DUMP IS FORCED.
  4592. *
  4593. * EXIT LAST POT IS DUMPED IF NOT EMPTY.
  4594. * THE SORT FLAG IS CLEARED.
  4595. * THE PRIMARY FILE IS PACKED.
  4596. * *EXIT TEXT MODE.* MESSAGE IS ISSUED.
  4597. *
  4598. * CALLS CFC, DMP, MQE, PCB, SFL.
  4599.  
  4600.  
  4601. ETX BSS 0 ENTRY
  4602. SA1 A0+VROT CHECK FOR ACTIVITY
  4603. LX1 59-0
  4604. SX5 ETX1$
  4605. PL X1,PCS1 IF TERMINAL ACTIVE
  4606.  
  4607. * REENTRY AFTER ACTIVITY CEASES.
  4608.  
  4609. ETX1 ZR B3,ETX2 IF USER ENTERED NO DATA
  4610. SB7 B0 FORCE DUMP
  4611. SB6 X7 WORD COUNT IN POT
  4612. RJ DMP FORCE LAST POT DUMP
  4613. SX5 ETX2$
  4614. EQ PCS1 EXIT TO MAKE QUEUE ENTRY
  4615.  
  4616. * REENTRY AFTER THE LAST POT IS DUMPED.
  4617.  
  4618. ETX2 SA1 A0+VSTT CLEAR SORT FLAG
  4619. SX2 B1
  4620. LX2 54-0
  4621. BX1 X1+X2 SET JOB COMPLETION FLAG
  4622. LX2 52-54+60
  4623. BX6 -X2*X1
  4624. SA6 A1 REWRITE VSTT
  4625. ZR B3,ETX2.1 IF USER ENTERED NO DATA
  4626. SB4 B0
  4627. RJ DPT DROP POT
  4628. ETX2.1 SA1 A0+VFST SET NEXT OPERATION INDEX
  4629. SX6 B1+B1 NEXT OPERATION INDEX, PREPROCESSOR INDEX
  4630. LX6 12
  4631. BX7 X6+X1
  4632. SA7 A1 REWRITE VFST
  4633. LX6 48
  4634. SX7 B0 SET *EPN*
  4635. EQ BJB1 ENABLE EXECUTION OF THE PACK INSTRUCTION
  4636.  
  4637. ETX3 SX5 ETX4$ WAIT FOR PACK TO COMPLETE
  4638. EQ PCS1 MAKE QUEUE ENTRY
  4639.  
  4640. * REENTRY AFTER THE PACK IS COMPLETE.
  4641.  
  4642. ETX4 SB3 B0 SET NO POT AVAILABLE
  4643. SMA X6,("NL" EXIT TEXT MODE."NL")
  4644. EQ PCS5 ISSUE THE MESSAGE
  4645. FLO SPACE 4,10
  4646. ** FLO - FORCED LOGOUT, *0004* CONTROL BYTE.
  4647. *
  4648. * ENTRY (B3) = APPLICATION NAME POT POINTER IF .NE. 0.
  4649. * (X7) = 0, IF LOGOUT.
  4650. * = 1, IF APPLICATION SWITCH.
  4651. * = 2, IF FORCED LOGOUT.
  4652. *
  4653. * EXIT TO *APS* IF APPLICATION SWITCH.
  4654. *
  4655. * CALLS CJA, CLE, DIN, DRC1, GOP, HNG, IGN, PMR, PPB, RDC,
  4656. * SLF, SSI.
  4657. *
  4658. * MACROS PARAM.
  4659.  
  4660.  
  4661. FLO BSS 0
  4662. SA1 A0+VSTT CHECK DETACH OR LOGOUT
  4663. BX2 X1
  4664. LX1 59-56
  4665. LX2 59-48
  4666. BX1 X1+X2
  4667. NG X1,IGN IF DETACH OR LOGOUT IN PROGRESS
  4668. SB5 X7+
  4669. NE B5,B1,FLO0 IF NOT APPLICATION SWITCH
  4670. SA2 A0+VDCT CHECK CONNECTION TYPE
  4671. LX2 59-47
  4672. NG X2,IGN IF THIS CONNECTION IS ALREADY LOANED
  4673. LX2 59-46-59+47
  4674. PL X2,APS IF IAF NOT SECONDARY APPLICATION
  4675. FLO0 RJ SLF SET LOGOUT FLAG
  4676. NZ B3,FLO0.1 IF POT PROVIDED
  4677. RJ GOP
  4678. SX1 B0+ PASS ZEROES FOR APPLICATION NAME
  4679. EQ FLO1 CONTINUE
  4680.  
  4681. FLO0.1 SA1 B4 GET NEXT APPLICATION NAME
  4682. ZR B5,FLO1 IF NO FORCE LOGOUT, KEEP APPLICATION NAME
  4683. SA1 =6LLOGOUT SET APPLICATION NAME FOR FORCE LOGOUT
  4684. FLO1 BX6 X1
  4685. SA6 B4+EJPB SAVE APPLICATION NAME
  4686. ERRPL EJPB-VCPC PARAMETERS OVERFLOW POT
  4687. SX7 FLO2 SET RETURN ADDRESS
  4688. EQ CJA CLEAR JOB ACTIVITY
  4689.  
  4690. FLO2 PARAM FJEJ FORCE JOB TO ROLLOUT
  4691. RJ PMR
  4692. FLO3 SX5 FLO4$ WAIT FOR ACTIVITY TO COMPLETE
  4693. EQ PCS1 MAKE QUEUE ENTRY
  4694.  
  4695. FLO4 SA1 B4+EJPB SAVE NEXT APPLICATION
  4696. SA2 A0+VFNT
  4697. MX0 -18
  4698. BX2 -X0*X2
  4699. BX6 X0*X1
  4700. BX6 X6+X2
  4701. SA6 A2 REWRITE VFNT
  4702. PARAM TJEJ TERMINATE JOB
  4703. RJ PMR
  4704. ZR X2,FLO5 IF NO ERROR
  4705. RJ UEC PROCESS TERMINATION ERROR
  4706. FLO5 SA1 A0+VUIT CLEAR EJT ORDINAL
  4707. MX0 42
  4708. BX6 X0*X1
  4709. SA6 A1
  4710. BX6 X6-X6
  4711. RJ SSI SEND SRU INFORMATION
  4712. IFNET HNG IF NETWORK TERMINAL
  4713. SA1 A0+VFNT
  4714. SA2 =5LHELLO
  4715. SA3 =5LLOGIN
  4716. SX4 3RIAF
  4717. LX4 42
  4718. MX0 42
  4719. BX1 X0*X1
  4720. BX2 X1-X2
  4721. BX3 X1-X3
  4722. BX4 X1-X4
  4723. ZR X2,FLO6 IF RELOGIN REQUIRED
  4724. ZR X3,FLO6 IF RELOGIN REQUIRED
  4725. NZ X4,HNG IF RELOGIN NOT REQUIRED
  4726. FLO6 RJ RDC WAIT FOR DRIVER TO ACCEPT MESSAGE
  4727. RJ CLE CLEAN UP TERMINAL TABLE
  4728. SX7 DIN SET REENTRY ADDRESS
  4729. SX2 /1TD/LGI SET RELOGIN REQUEST
  4730. EQ DCR1 MAKE DRIVER REQUEST
  4731. HUP SPACE 4
  4732. ** HUP - PROCESSES THE COMMAND THAT SAYS A USER HAS HUNG UP.
  4733. *
  4734. * IF A NETWORK TERMINAL IS IN THE PROCESS OF LOGGING
  4735. * OUT OR HAS COMPLETED LOGOUT, EXIT *HUP* IMMEDIATELY.
  4736. * IN THE CASE OF MUX TERMINALS, *HUP* MUST ALWAYS BE
  4737. * EXECUTED SO NO OUTPUT GOES TO TERMINALS AFTER THE
  4738. * PHONE IS HUNG UP, AND THE TERMINAL TABLE GETS CLEANED UP.
  4739. *
  4740. * CALLS CLE, DAP, DLP, DPT, DQP, SLF, SSP.
  4741.  
  4742.  
  4743. HUP BSS 0
  4744. IFMUX HUP0.1
  4745. SA1 A0+VDCT CHECK IF LOGOUT HAS ALREADY BEGUN
  4746. SA2 A0+VSTT
  4747. LX1 59-57
  4748. LX2 59-48
  4749. BX2 -X1+X2
  4750. NG X2,PCSX IF LOGOUT IN PROGRESS OR JUST COMPLETED
  4751. HUP0.1 RJ DAP DROP ASSIGNED POTS
  4752. RJ SSP
  4753. SA1 A0+VDCT CLEAR INTERRUPT COMPLETE FLAG
  4754. MX2 1
  4755. LX2 -1
  4756. BX6 -X2*X1
  4757. SA6 A1
  4758. SX7 HUP1 SET REENTRY ADDRESS
  4759. EQ CJA CLEAR JOB ACTIVITY
  4760.  
  4761. HUP1 SA1 A0+VUIT CHECK EJT ORDINAL
  4762. MX2 -12
  4763. BX2 -X2*X1
  4764. ZR X2,HUP3 IF NO EJT ORDINAL
  4765. RJ DLP DUMP LAST INPUT POT
  4766. ZR B6,HUP2 IF NO DUMP IN PROGRESS
  4767. SX5 HUP2$
  4768. EQ PCS1 WAIT DUMP COMPLETE
  4769.  
  4770. HUP2 SX7 LDRC SET LINE DISCONNECT REASON CODE
  4771. IFMUX HUP2.1
  4772. SA1 /IAFEX4/SHDF
  4773. PL X1,HUP2.1 IF NOT NETWORK SHUTDOWN
  4774. SX7 SARC SET SUBSYSTEM ABORT REASON CODE
  4775. HUP2.1 EQ DTJ DETACH JOB
  4776.  
  4777. * RETURN HERE AFTER JOB DETACH.
  4778.  
  4779. HUP3 RJ DQP DROP QUEUE ENTRY POTS
  4780. SA1 A0+VFST CHECK FOR SPARE POT POINTER
  4781. MX0 -12
  4782. BX6 X0*X1 CLEAR POT POINTER
  4783. BX1 -X0*X1
  4784. ZR X1,HUP4 IF NO POT TO DROP
  4785. SA6 A1
  4786. SB3 X1
  4787. SB4 B0 DROP TO END OF CHAIN
  4788. RJ DPT DROP SPARE POT
  4789. HUP4 RJ SLF SET LOGOUT FLAG
  4790. SX7 3RBYE SET NVF PARAMETER
  4791. LX7 42
  4792. SB3 B0
  4793. SA7 A0+VFNT
  4794. IFNET HNG HANG UP PHONE FOR NETWORK TERMINAL
  4795. RJ CLE CLEAR TERMINAL TABLE
  4796. EQ PCSX EXIT
  4797. LPT SPACE 4
  4798. ** LPT - LINKS A NEW POT TO THE CURRENT CHAIN.
  4799. *
  4800. * ENTRY (B3) = POT TO WHICH NEW POT IS TO BE LINKED.
  4801. *
  4802. * CALLS RPT.
  4803.  
  4804.  
  4805. LPT BSS 0
  4806. SX5 B3 SET PARAMETERS TO REQUEST A POT
  4807. PX5 X5,B1
  4808. RJ RPT REQUEST POT
  4809. EQ PCSX EXIT
  4810. PUB SPACE 4,10
  4811. ** PUB - PROCESS USER BREAKS.
  4812. *
  4813. * ENTRY (X7) = USER BREAK CODE.
  4814. * (B3) = POT POINTER PASSED BY DRIVER.
  4815. *
  4816. * EXIT JOB STEP TERMINATED IF USER BREAK TWO ON A
  4817. * NON-DISABLED TERMINAL.
  4818. * REENTRY SET FOR *RST* IF USER BREAK ONE ON A
  4819. * NON-DISABLED TERMINAL.
  4820. * USER BREAK ERROR FLAG SET IF A DISABLED TERMINAL.
  4821. *
  4822. * CALLS CAM, CJA, DAP, DIP, DLP, DPT, DQP, DVP, GOP, GRT, INO,
  4823. * MVA, PMR, SRR, SSP.
  4824. *
  4825. * MACROS PARAM, SMA.
  4826. *
  4827. * NOTES A TERMINAL IS DISABLED IF THE JOB STEP CURRENTLY
  4828. * EXECUTING ON THAT TERMINAL HAS REPRIEVE PROCESSING
  4829. * ENABLED FOR USER BREAKS.
  4830.  
  4831.  
  4832. PUB BSS 0 ENTRY
  4833. RJ DQP DROP ANY POTS PASSED BY THE DRIVER
  4834. IFMUX PUB0
  4835. TA1 B2,VMST
  4836. PL X1,PUB12 IF TERMINAL IS NOT ON-LINE
  4837. PUB0 SA2 A0+VSTT
  4838. SA1 A0+VDCT
  4839. MX3 -12
  4840. SX4 0401B CHECK FOR LOGOUT OR DETACH IN PROGRESS
  4841. BX3 -X3*X1
  4842. LX1 59-57
  4843. LX4 48
  4844. BX4 X2*X4
  4845. LX2 59-58
  4846. NG X2,PCSX IF USER BREAK ALREADY IN PROGRESS
  4847. NZ X4,PUB1 IF LOGOUT OR DETACH IN PROGRESS
  4848. NG X1,PUB2 IF LOGIN COMPLETE
  4849. PUB1 NZ X3,PUB12 IF OUTPUT/FUNCTION REQUEST ALREADY QUEUED
  4850. EQ PUB11 SET COMPLETE FLAG TO RESTART DRIVER
  4851.  
  4852. PUB2 MX6 1 SET BREAK IN PROGRESS
  4853. BX6 X2+X6
  4854. LX6 58-59 REALIGN VSTT
  4855. SA6 A2
  4856. RJ CAM CLEAR AUTO MODE
  4857. RJ DAP DEASSIGN ANY OUTPUT/DRIVER REQUESTS
  4858. RJ DLP DUMP ANY REMAINING SOURCE INPUT
  4859. RJ SSP RESTORE THE USER BREAK CODE
  4860. SB3 X7 SAVE USER BREAK CODE THROUGH *CJA*
  4861. SX7 PUB3
  4862. EQ CJA CLEAR JOB ACTIVITY
  4863.  
  4864. PUB3 SX0 B3 SAVE USER BREAK CODE THROUGH *GOP*
  4865. SB3 B0
  4866. RJ GOP GET A POT FOR THE PARAMETER BLOCK
  4867. SX7 X0+
  4868. SA7 B4+VCPC-1 SAVE USER BREAK CODE THROUGH *PMR*
  4869. PARAM FJEJ FREEZE JOB
  4870. RJ PMR PROCESS MONITOR REQUEST
  4871. SA3 B4+VCPC-1 RESTORE USER BREAK CODE
  4872. SA1 A0+VSTT CHECK DISABLED TERMINAL CONTROL
  4873. MX2 1
  4874. SX7 X3-TIET
  4875. BX2 X2*X1
  4876. BX2 X2+X7
  4877. SX5 PUB4$
  4878. ZR X2,PCS1 IF USER BREAK ONE WITHOUT DISTC
  4879. PARAM SAEJ,X3 SET USER BREAK ERROR FLAG
  4880. RJ PMR PROCESS MONITOR REQUEST
  4881. SX5 PUB4$
  4882. EQ PCS1 WAIT UNTIL THE JOB HAS ROLLED
  4883.  
  4884. * CONTROL IS NOT RETURNED UNTIL THE JOB HAS ROLLED OUT
  4885. * AND THE USER BREAK ERROR FLAG HAS BEEN PLACED IN
  4886. * THE EJT ENTRY.
  4887.  
  4888. PUB4 SA1 A0+VSTT
  4889. NG X1,PUB9 IF DISABLED TERMINAL
  4890. SA1 B4+B1 RESTORE USER BREAK CODE
  4891. MX7 -12
  4892. AX1 12
  4893. BX7 -X7*X1
  4894. SX7 X7-TAET
  4895. ZR X7,PUB5 IF USER BREAK 2 ON NON-DISABLED TERMINAL
  4896. SB5 B0 USER BREAK 1 ON NON-DISABLED TERMINAL
  4897. SX7 RST
  4898. RJ SRR MAKE INP$ ENTRY TO RETURN AT *RST*
  4899. SMA X6,("NL" *INTERRUPTED*"NL")
  4900. EQ PUB8.1 ASSIGN MESSAGE
  4901.  
  4902. PUB5 SB4 B0+ RETURN THE PARAMETER BLOCK POT
  4903. RJ DPT
  4904. RJ DVP DROP VROT POT CHAIN
  4905. SX6 3 SET NEXT OPERATION INDEX
  4906. SA1 A0+VFST
  4907. LX6 12
  4908. BX6 X1+X6
  4909. SA6 A1
  4910. SX7 B0 SET *EPN*
  4911. SX6 B0 SET *PPI* NOT TO SORT FILE
  4912. EQ BJB1 BEGIN JOB
  4913.  
  4914. PUB7 SX5 PUB8$
  4915. EQ PCS1 MAKE QUEUE ENTRY
  4916.  
  4917. PUB8 SA1 A0+VSTT CLEAR RUN COMPLETE AND JOB COMPLETE
  4918. SX2 0110B
  4919. LX2 48
  4920. BX6 -X2*X1
  4921. SA6 A1
  4922. MX3 59
  4923. SA2 A0+VROT CLEAR LIST COMPLETE
  4924. LX3 6-0
  4925. BX6 X3*X2
  4926. SA6 A2
  4927. SA2 A0+VDCT CLEAR READ DATA
  4928. LX3 54-6
  4929. BX2 X3*X2
  4930. LX1 51-18
  4931. LX3 51-54
  4932. BX2 X3*X2 CLEAR EXTENDED/ASCII CHARACTER SET
  4933. BX6 -X3*X1
  4934. IX6 X6+X2 RESTORE INITIAL CHARACTER SET
  4935. SA6 A2+ REWRITE VDCT
  4936. SMA X6,("NL" *TERMINATED*"NL")
  4937. PUB8.1 IFMUX PUB10 ASSIGN MESSAGE
  4938. TA1 B2,VMST CLEAR CONTINUATION FLAGS
  4939. MX7 55
  4940. LX7 23
  4941. BX7 X7*X1
  4942. SA7 A1 REWRITE VMST
  4943. EQ PUB10 ASSIGN MESSAGE
  4944.  
  4945. PUB9 SA1 A0+VROT CLEAR OUTPUT AVAILABLE/INPUT REQUESTED
  4946. MX6 58
  4947. LX6 3-0
  4948. BX6 X1*X6
  4949. SX1 B1 SET EOF
  4950. LX1 13-0
  4951. BX6 X1+X6
  4952. SA6 A1+
  4953. SX6 B0 SET NO MESSAGE
  4954.  
  4955. * ISSUE MESSAGE AND REENABLE THE DRIVER.
  4956. * THE MESSAGE ACTS AS AN INTERLOCK TO KEEP IAF FROM
  4957. * WRITING IN VDCT UNTIL THE DRIVER HAS CLEARED THE
  4958. * INTERRUPT COMPLETE FLAG.
  4959.  
  4960. PUB10 SA1 A0+VSTT CLEAR BREAK IN PROGRESS FLAG
  4961. SX7 B1
  4962. LX7 58-0
  4963. BX7 -X7*X1
  4964. SA7 A1
  4965. ZR X6,PUB11 IF NO MESSAGE TO ASSIGN
  4966. SB4 B0
  4967. RJ MVA ASSIGN INTERLOCKING OUTPUT MESSAGE
  4968. EQ PUB12 CLEAR INTERRUPT COMPLETE FLAG
  4969.  
  4970. PUB11 RJ INO PROVIDE THE DRIVER WITH A POT
  4971. PUB12 IFNET PUB13
  4972. SB5 B2+
  4973. RJ GRT CHECK NEXT REENTRY
  4974. ZR X4,PUB14 IF NONE
  4975. AX4 24
  4976. SX1 X4-HUP1
  4977. NZ X1,PUB14 IF (X7) NOT *HUP1*
  4978. AX4 24
  4979. SX4 X4-CJA$
  4980. ZR X4,PCSX IF *CJA* FOR HUP, EXIT
  4981. EQ PUB14 SET INTERRUPT COMPLETE
  4982.  
  4983. PUB13 RJ DIP DROP INPUT POT CHAIN
  4984. SA2 A0+VCHT SET DRIVER REENTRY
  4985. MX6 12
  4986. BX6 X6*X2
  4987. LX6 12
  4988. SX6 X6+/IAFEX4/NDR-/IAFEX4/BRK8
  4989. NZ X6,PCSX IF USER BREAK DRIVER REENTRY GONE
  4990. PUB14 SA1 A0+VDCT SET INTERRUPT COMPLETE FLAG
  4991. SX6 B1
  4992. LX6 58-0
  4993. BX6 X1+X6
  4994. SA6 A1
  4995. EQ PCSX EXIT
  4996. RES SPACE 4
  4997. ** RES - REQUEST NEXT ASSIGNMENT.
  4998. *
  4999. * CHECKS CURRENT TERMINAL STATUS AND MAKES NEW ASSIGNMENT IF
  5000. * NEEDED.
  5001. *
  5002. * ENTRY (SEE SSP).
  5003. * (B3) = 0.
  5004. *
  5005. * CALLS ASM, COI, COP, EDR, GRT, INP, PIP, RDY, URL.
  5006.  
  5007.  
  5008. RES BSS 0
  5009. SA1 A0+VROT
  5010. MX4 -12
  5011. LX1 59-0
  5012. PL X1,PCSX IF ACTIVE, EXIT
  5013. MX7 14
  5014. LX1 1
  5015. SA3 A0+VSTT CHECK FOR SECONDARY OUTPUT ASSIGNMENT
  5016. SA2 A0+VDCT CHECK FOR OUTPUT CURRENTLY AVAILABLE
  5017. LX7 12
  5018. BX6 X7*X2
  5019. NZ X6,PCSX IF OUTPUT, DRIVER REQUEST, OR INTERRUPT ACK
  5020. BX7 -X4*X3
  5021. BX5 X1
  5022. ZR X7,RES1 IF NO OUTPUT IN VSTT
  5023. IFNET PCSX IF OUTPUT ON NETWORK TERMINAL
  5024. BX6 X3*X4
  5025. SA6 A3 REWRITE VSTT
  5026. SX5 B1+B1 TELL DRIVER TO START AT WORD TWO
  5027. BX7 X2+X7
  5028. LX5 36-0
  5029. BX7 X5+X7
  5030. SA7 A2+ REWRITE VDCT
  5031. EQ PCSX EXIT
  5032.  
  5033. RES1 SB5 B2+ CHECK FOR QUEUE ENTRY
  5034. RJ GRT GET ENTRY FROM TABLE
  5035. NZ X4,RES8 IF QUEUED ENTRY
  5036. BX4 X3
  5037. LX3 59-56
  5038. LX4 59-48
  5039. BX4 X3+X4
  5040. NG X4,PCSX IF DETACH OR LOGOUT IN PROGRESS
  5041. LX1 59-4
  5042. MX4 -2
  5043. NG X1,RES2 IF OUTPUT ON MASS STORAGE
  5044. LX1 0-18-59+4+60
  5045. BX4 -X4*X1
  5046. NZ X4,URL IF TIME OR SRU LIMIT
  5047. LX1 0-36-0+18
  5048. MX4 -12
  5049. BX6 -X4*X1
  5050. NZ X6,RES4.1 IF WAITING TO BE ROLLED IN WITH INPUT
  5051. LX1 59-3-0+36-60
  5052. NG X1,RES3 IF WAITING FOR INPUT
  5053. LX1 3-2
  5054. NG X1,RES5 IF WAITING TO BE ROLLED IN
  5055. LX1 62-6
  5056. LX3 56-54
  5057. NG X1,RES6 IF LIST COMPLETE
  5058. NG X3,RES6 IF JOB COMPLETION NOT PROCESSED
  5059. SA1 VWMP
  5060. LX2 59-49
  5061. NG X2,PCSX IF AUTO MODE, EXIT
  5062. LX2 59-57-59+49+60
  5063. AX1 24
  5064. PL X2,PCSX IF USER NOT COMPLETELY LOGGED IN
  5065. LX3 54-50
  5066. ZR X1,RES9 IF NO WARNING MESSAGE
  5067. NG X3,RES9 IF MESSAGE ISSUED
  5068. EQ RES10 ISSUE WARNING MESSAGE
  5069.  
  5070. * PROCESS OUTPUT ON MASS STORAGE.
  5071.  
  5072. RES2 SX5 ITO1$
  5073. EQ PCS1 MAKE QUEUE ENTRY
  5074.  
  5075. * PROCESS INPUT REQUEST MESSAGE.
  5076.  
  5077. RES3 SA1 A0+VDCT REQUEST DRIVER TO ISSUE INPUT PROMPT
  5078. SX2 /1TD/IIP SET INPUT PROMPT REQUEST
  5079. LX1 59-49 CHECK FOR AUTO MODE
  5080. NG X1,RES4 IF AUTO MODE TO A RUNNING PROGRAM
  5081. RJ EDR ENTER DRIVER REQUEST
  5082. RES4 SX5 INP$ SET UP INPUT REQUEST
  5083. SX7 INP SET RETURN ADDRESS
  5084. SB3 B0
  5085. EQ PCS1 MAKE QUEUE ENTRY
  5086.  
  5087. * ROLLIN JOB.
  5088.  
  5089. RES4.1 SB3 X6 SAVE INPUT POT POINTER
  5090. BX6 X4*X1 CLEAR POT POINTER IN VROT
  5091. LX6 36
  5092. SA6 A0+VROT
  5093. RES5 SX7 B0 SET *EPN*
  5094. SX6 B0+ SET *PPI* NOT TO SORT FILE
  5095. EQ BJB1 BEGIN JOB
  5096.  
  5097. * PROCESS JOB COMPLETION.
  5098.  
  5099. RES6 SX6 B1 CLEAR READ DATA FLAG
  5100. LX6 54
  5101. BX6 -X6*X2
  5102. SA6 A2
  5103. SA4 =77777777777700004001B
  5104. BX6 X4*X5
  5105. SA6 A1
  5106. SA3 A0+VFST CLEAR SMFIF STATE CODE
  5107. MX6 -6
  5108. LX6 18-0
  5109. BX6 X6*X3
  5110. SA6 A3
  5111. ERRNZ /SMFIF/SIDL THIS CODE ASSUMES SIDL=0
  5112. SA3 A0+VSTT
  5113. SX6 4110B CLEAR CONTROL FLAGS
  5114. LX6 48
  5115. BX6 -X6*X3
  5116. SX5 B1
  5117. LX3 59-54
  5118. PL X3,RES7 IF NOT JOB COMPLETION
  5119.  
  5120. * RESET TERMINAL CHARACTER MODE.
  5121.  
  5122. SA1 A0+VDCT
  5123. LX5 18
  5124. BX4 X5*X6 GET VSTT ENTRY MODE
  5125. LX5 51-18
  5126. LX4 51-18
  5127. BX7 -X5*X1 CLEAR VDCT CHARACTER MODE
  5128. BX7 X4+X7 RESET TO ENTRY MODE
  5129. SA7 A1+ REWRITE VDCT
  5130. SX7 X6 RESET SYSTEM
  5131. AX7 12
  5132.  
  5133. * ISSUE COMPLETION MESSAGE.
  5134.  
  5135. RES7 SA6 A3 REWRITE VSTT
  5136. LX3 54-51
  5137. PL X3,RDY IF NOT RUN COMPLETE
  5138. IFNET /IAFEX4/JCM IF NETWORK TERMINAL
  5139. MX1 -3
  5140. LX6 -12
  5141. BX7 -X1*X6 EXTRACT CURRENT SUBSYSTEM
  5142. SA1 JCTT+X7 GET MESSAGE TO ISSUE
  5143. SX6 X1+
  5144. NZ X6,PCS5 IF MESSAGE SPECIFIED
  5145. JP RDY
  5146.  
  5147. * CHECK STATUS OF QUEUED ENTRY.
  5148.  
  5149. RES8 AX4 48 CHECK QUEUE ENTRY
  5150. SX6 X4-INP$
  5151. NZ X6,PCSX IF NOT EXPLICIT INPUT REQUEST
  5152.  
  5153. * ISSUE BEGIN INPUT REQUEST.
  5154.  
  5155. RES9 SA1 A0+VDCT CHECK DRIVER STATUS
  5156. SA2 RESA
  5157. BX3 X2*X1
  5158. NZ X3,PCSX IF INPUT REQUESTED OR DRIVER REQUEST
  5159. IFMUX RES9.1 IF MUX TERMINAL
  5160. SA1 A0+VSTT
  5161. MX3 -12
  5162. BX3 -X3*X1
  5163. NZ X3,PCSX IF OUTPUT ON NETWORK TERMINAL
  5164. RES9.1 SA2 A2+B1 REQUEST DRIVER TO BEGIN INPUT
  5165. RJ EDR ENTER DRIVER REQUEST
  5166. EQ PCSX EXIT
  5167.  
  5168. * ISSUE WARNING MESSAGE.
  5169.  
  5170. RES10 MX6 1 SET MESSAGE ISSUED
  5171. BX6 X3+X6
  5172. LX6 51
  5173. SA6 A3
  5174. TX2 X1,-VBMP GET POT POINTER
  5175. AX2 3
  5176. SB3 X2 COPY POT(S)
  5177. RJ COP
  5178. RJ ASM ASSIGN MESSAGE
  5179. EQ PCSX EXIT
  5180.  
  5181. ** TABLE OF TERMINAL DATA REQUESTS
  5182.  
  5183. RESA CON 6400BS48+7777B
  5184. CON 4400BS48+/1TD/BGI
  5185. RIN SPACE 4,10
  5186. ** RIN - RELEASE SOURCE INPUT POTS.
  5187. *
  5188. * ENTRY SEE SSP.
  5189. *
  5190. *T SSPA 12/ RIN ,6/ ,1/ F ,5/ WC ,12/ LP ,12/ FP ,12/ TN
  5191. *
  5192. * F = FORCED DUMP FLAG.
  5193. * WC = WORD COUNT OF LAST POT IF FORCED DUMP
  5194. * SPECIFIED.
  5195. * LP = LAST POT OF SOURCE INPUT STRING. IF
  5196. * FORCED DUMP SPECIFIED, LAST POT BELONGS
  5197. * TO *RIN*, ELSE RETAINED BY ORIGINATOR.
  5198. * FP = FIRST POT OF SOURCE INPUT STRING.
  5199. * TN = TERMINAL NUMBER.
  5200.  
  5201.  
  5202. RIN BSS 0 ENTRY
  5203. ZR B3,RIN9 IF FIRST POT POINTER ZERO
  5204. SA2 A0+VFNT
  5205. SX0 B3
  5206. MX1 42
  5207. BX1 X1*X2
  5208. ZR X1,RIN3 IF NO FILE TO DUMP TO
  5209. LX2 59-12
  5210. NG X2,RIN3 IF WRITE LOCKOUT BIT SET
  5211. SA2 A0+VDCT
  5212. LX2 59-57
  5213. PL X2,RIN3 IF USER NOT LOGGED IN
  5214. EQ RIN2 ENTER SOURCE DUMP LOOP
  5215.  
  5216. * DUMP SOURCE TO PRIMARY FILE.
  5217.  
  5218. RIN1 SB7 VIPL SET POT LIMIT
  5219. BX7 X7-X7
  5220. SB6 B1 SET POT TO BE DUMPED FLAG
  5221. RJ DMP DUMP POTS
  5222. SB3 X0 ADVANCE TO NEXT POT
  5223. RJ GPL GET POT LINK
  5224. ZR B3,RIN9 IF NEXT POT POINTER ZERO
  5225. SX0 B3 (X0) = NEXT POT TO DUMP
  5226. RJ SSP
  5227. RIN2 MX3 -12 CHECK IF CURRENT POT REACHED
  5228. BX2 -X3*X7
  5229. BX2 X0-X2
  5230. BX7 X3*X7
  5231. SB3 X0
  5232. NZ X2,RIN1 IF CURRENT POT NOT YET REACHED
  5233. LX7 59-17 CHECK IF FORCED DUMP REQUESTED
  5234. PL X7,PCSX IF NOT FORCED DUMP
  5235.  
  5236. * FORCE *1TO* CALL TO DUMP CURRENT POT STRING.
  5237.  
  5238. LX7 5-59
  5239. SB7 B0 SET DUMP REQUIRED
  5240. SX7 X7-40B SET POT LENGTH
  5241. SB6 X7+
  5242. RJ DMP FORCE SOURCE DUMP
  5243.  
  5244. * REENTER TO DROP LAST POT ON *1TO* COMPLETION.
  5245.  
  5246. SB3 X0 SET POT TO DROP
  5247. BX7 X7-X7 SET TO DROP ENTIRE CHAIN
  5248. SX5 RIN$
  5249. EQ PCS1 MAKE QUEUE ENTRY
  5250.  
  5251. * DROP POTS IF NO PRIMARY FILE.
  5252.  
  5253. RIN3 LX7 59-17 CHECK FOR FORCED DUMP REQUESTED
  5254. NG X7,RIN8 IF FORCED DUMP
  5255. MX6 -12
  5256. LX7 17-59
  5257. BX7 -X6*X7
  5258. RIN4 SX2 B3
  5259. RJ GPL GET POT LINK
  5260. SX1 B3
  5261. BX1 X1-X7
  5262. NZ X1,RIN4 IF NOT YET CURRENT POT
  5263. SB3 X0 SET FIRST POT TO DROP
  5264. SB4 X2 SET LAST POT TO DROP
  5265. RJ DPT DROP POTS
  5266.  
  5267. * ISSUE DIAGNOSTIC.
  5268.  
  5269. RIN5 SA1 A0+VDCT
  5270. SB3 B0 SET NO POT AVAILABLE
  5271. LX1 59-57
  5272. PL X1,PCSX IF USER NOT LOGGED IN
  5273. SMA X6,(NO PRIMARY FILE."NL")
  5274. SA1 A0+VFNT
  5275. LX1 59-12
  5276. PL X1,RIN6 IF NO WRITE LOCKOUT
  5277. SMA X6,(WRITE ON READ-ONLY FILE."NL")
  5278. RIN6 IFMUX RIN7
  5279. SA1 A0+VDPT CLEAR *INPUT INITIATED*
  5280. SX7 1S16
  5281. BX7 -X7*X1
  5282. SA7 A1 REWRITE VDPT
  5283. EQ PCS5 ISSUE MESSAGE
  5284.  
  5285. RIN7 SA1 A0+VSTT
  5286. MX2 -12
  5287. BX3 -X2*X1
  5288. ZR X3,PCS5 IF OUTPUT NOT BACKED UP, ISSUE MESSAGE
  5289. EQ PCSX NO MESSAGE - PREVENT *ASM* ERRORS
  5290.  
  5291. * ENTRY TO DROP ENTIRE CHAIN AND ISSUE DIAGNOSTIC.
  5292.  
  5293. RIN8 SB4 B0 DROP WHOLE CHAIN
  5294. RJ DPT DROP POTS
  5295. EQ RIN5 ISSUE MESSAGE
  5296.  
  5297. RIN9 SX6 3RRIN SET ERROR CODE
  5298. RJ ABT ABORT IF SENSE SWITCH THREE SET
  5299. EQ PCSX EXIT
  5300. SAI SPACE 4,10
  5301. ** SAI - SET AUTO INPUT MODE.
  5302. *
  5303. * ENTRY -
  5304. * SEE SSP.
  5305.  
  5306.  
  5307. SAI SA1 A0+VDCT SET AUTO MODE INPUT BIT
  5308. SX6 B1
  5309. LX6 49
  5310. BX6 X6+X1
  5311. SA6 A1
  5312. JP PCSX EXIT
  5313. TOT SPACE 4,10
  5314. ** TOT - TIME OUT TERMINAL.
  5315. *
  5316. * MAKES A TIME DELAY QUEUE ENTRY FOLLOWED BY A WAIT
  5317. * COMPLETION QUEUE ENTRY TO FTP (FINISH TIMEOUT PROCESSING).
  5318.  
  5319.  
  5320. TOT BSS 0 ENTRY
  5321. IFMUX FTP1
  5322. SB5 B2
  5323. RJ GRT GET QUEUE ENTRY
  5324. SX7 TOT
  5325. NZ X4,CJA IF REQUEST, CLEAR QUEUE
  5326. SB7 TIMQ
  5327. SA1 STIM
  5328. MX3 -24
  5329. BX3 -X3*X1
  5330. SX2 NTODL
  5331. SX5 TOT$
  5332. IX2 X2+X3 SET COMPLETION TIME
  5333. LX5 48
  5334. LX2 24
  5335. BX5 X2+X5
  5336. RJ MQE MAKE QUEUE ENTRY
  5337. SX5 FTP$
  5338. BX7 X7-X7
  5339. SB3 B0
  5340. EQ PCS1 EXIT
  5341. PCM TITLE PCM - PROCESSES ALL TERMINAL COMMANDS.
  5342. PCM SPACE 4
  5343. *** PCM - PROCESSES ALL TERMINAL COMMANDS.
  5344. *
  5345. * ALL COMMANDS ARE PROCESSED ON THE BASIS OF WHAT SYSTEM THE
  5346. * USER IS IN. IN SOME SYSTEMS ABBREVIATED FORMS OF THE
  5347. * COMMANDS MAY BE ENTERED. IN OTHERS ESPECIALLY *BATCH*,
  5348. * THE COMMANDS MUST BE ENTERED COMPLETELY. IT SHOULD
  5349. * BE NOTED ALSO THAT SOME COMMANDS ARE VALID ONLY IN CERTAIN
  5350. * SYSTEMS. IF NO SYSTEM NAMES ARE GIVEN ON THE COMMAND MACRO
  5351. * CALL, THEN THE DEFAULT GROUP WILL BE TAKEN. IT SHOULD
  5352. * BE NOTED THAT THE ABOVE ALLOWS A COMMAND TO HAVE DIFFERENT
  5353. * MEANINGS, SYNTAX, ETC. IN DIFFERENT SYSTEMS.
  5354. *
  5355. *
  5356. * 1) A MASK TO USE IN COMPARISON OF THE COMMAND WITH
  5357. * THE COMMAND TABLE IS GENERATED AND THEN THE FIRST
  5358. * CHARACTER IS CHECKED FOR BEING ALPHABETIC.
  5359. * THE MINIMUM NUMBER OF CHARACTERS IN THIS MASK IS
  5360. * DETERMINED BY THE SYSTEM THE USER IS UNDER.
  5361. *
  5362. * CURRENTLY THE REQUIREMENTS ARE AS FOLLOWS
  5363. * SYSTEM MINIMUM CHARACTER MASK
  5364. * NULL 3
  5365. * BASIC 3
  5366. * FORTRAN 3
  5367. * FTNTS 3
  5368. * BATCH 7
  5369. * ACCESS 3
  5370. *
  5371. * 2) THE FIRST CHARACTER IS USED TO GET AN ADDRESS TO
  5372. * START SEARCHING AT IN THE COMMAND TABLE.
  5373. *
  5374. * 3) THE COMMAND TABLE IS SEARCHED UNTIL A COMPARISON
  5375. * IS MADE OR UNTIL THE COMMAND IS OF A LESSER
  5376. * VALUE THAN THOSE BEING COMPARED AGAINST. THE
  5377. * COMMAND TABLE IS IN ALPHABETICAL ORDER.
  5378. *
  5379. * 4) IF A SUCCESSFUL COMPARISON IS MADE, A CHECK IS MADE
  5380. * TO SEE IF THE COMMAND IS VALID IN THE SUBSYSTEM.
  5381. * IF IT ISN,T GO BACK TO STEP (3).
  5382. *
  5383. * 5) A CHECK IS MADE AFTER A SUCCESSFUL COMPARISION
  5384. * TO SEE IF THERE IS ANY OTHER COMMAND BEGINNING
  5385. * WITH THE SAME GROUP OF CHARACTERS THAT IS LEGAL IN
  5386. * THE SYSTEM THE USER IS UNDER. IF THERE IS
  5387. * THE MESSAGE *COMMAND NOT UNIQUE.* IS ISSUED.
  5388. *
  5389. * 6) THE MAXIMUM NUMBER OF PARAMETERS IS THEN CHECKED.
  5390. * IF THE MAXIMUM NUMBER IS EXCEEDED GO TO STEP (8).
  5391. *
  5392. * 7) IF THE ABOVE STEPS WERE COMPLETED SUCCESSFULLY, THE
  5393. * COUNT IS INCREMENTED FOR THE GIVEN COMMAND AND THE
  5394. * APPROPRIATE PROCESSING ROUTINE IS ENTERED.
  5395. *
  5396. * 8) THE APPROPRIATE ERROR PROCESSING ROUTINE IS ENTERED
  5397. * BASED ON THE SYSTEM THE USER IS IN.
  5398. *
  5399. *
  5400. * ERROR RETURNS-
  5401. *
  5402. * *FILE NAME ERROR.* A FILE NAME DOES NOT CONFORM TO ONE OR
  5403. * MORE OF THE FOLLOWING
  5404. * 1) A FILE NAME MUST BE SEVEN CHARACTERS OR LESS
  5405. * 2) A FILE NAME MUST CONTAIN ONLY ALPHANUMERICS
  5406. *
  5407. * *TOO MANY PARAMETERS.* THE NUMBER OF PARAMETERS IN THE
  5408. * COMMAND EXCEED THE NUMBER REQUIRED.
  5409. *
  5410. * *INCORRECT PARAMETER.* CHECK PARAMETER DEFINITIONS.
  5411. *
  5412. *
  5413. * ENTRY (SEE SSP).
  5414. * (B3) = COMMAND POT POINTER.
  5415. * (B4) = COMMAND POT ADDRESS.
  5416. * (X7) = COMMAND WORD INDEX.
  5417. *
  5418. * CALLS CCM, DMP, IGN, SCT, SSP.
  5419.  
  5420.  
  5421. PCM BSS 0 ENTRY
  5422. SA1 A0+VDCT
  5423. LX1 59-54
  5424. NG X1,PCM2 IF DATA MODE INPUT
  5425. SA1 A0+VROT
  5426. LX1 59-0
  5427. NG X1,PCM1 IF NO ACTIVITY
  5428. SX5 PCM1$ MAKE QUEUE ENTRY
  5429. EQ PCS1 MAKE QUEUE ENTRY
  5430.  
  5431. * DUMP QUEUED DATA TO DISK.
  5432.  
  5433. PCM1 SA1 A0+VSTT CHECK FOR QUEUED DISK DATA
  5434. MX2 12
  5435. LX2 -12
  5436. BX3 X2*X1
  5437. BX3 X3+X7
  5438. ZR X3,PCM2 IF NO DATA TO DUMP TO DISK
  5439. SA1 A0+VFNT
  5440. MX2 42
  5441. BX2 X1*X2
  5442. ZR X2,RIN8 IF NO PRIMARY FILE
  5443. SB7 B0 RELEASE SOURCE LINB INPUT
  5444. SB6 X7
  5445. RJ DMP
  5446. SX5 PCM2$
  5447. EQ PCS1 MAKE QUEUE ENTRY
  5448.  
  5449. * CHECK JOB ACTIVITY.
  5450.  
  5451. PCM2 SA2 A0+VSTT
  5452. SX3 2001B CHECK FOR USER BREAK OR LOGOUT IN PROGRESS
  5453. SA1 B4+X7 READ COMMAND
  5454. LX3 48-0
  5455. BX2 X3*X2
  5456. NZ X2,IGN IF USER BREAK OR LOGOUT IN PROGRESS
  5457. SA2 A0+VUIT
  5458. ZR X2,IGN IF LOGGED OFF
  5459. NZ X1,PCM4 IF NOT NULL
  5460.  
  5461. * ISSUE SHORT STATUS RESPONSE IF NULL COMMAND.
  5462.  
  5463. PCM3 NG X1,PCM20 IF NEGATIVE
  5464. RJ DJS DETERMINE JOB STATUS
  5465. EQ PCS5 ISSUE MESSAGE
  5466.  
  5467. * CRACK COMMAND TO COMMAND BUFFER.
  5468.  
  5469. PCM4 RJ CCM CRACK COMMAND
  5470. SA1 PBUF GET CRACKED COMMAND
  5471. SA2 CCMA GET PARAMETER COUNT
  5472. AX2 1
  5473. IX3 X2+X1
  5474. ZR X3,PCM3 IF SINGLE COMMAND OF BLANKS
  5475.  
  5476. ** PROCESS COMMAND.
  5477. * REENTER HERE FROM LAN WHEN PROCESSING SECOND COMMAND.
  5478.  
  5479. PCM5 BSS 0
  5480. SA1 PBUF READ PARAMETER
  5481. SA2 A1+1 READ SEPARATOR
  5482. NZ X1,PCM6 IF NOT NULL PARAMETER
  5483. SX2 X2-1R-
  5484. NZ X2,PCM6 IF NOT *-* SEPARATOR
  5485. SA3 =0LBEGIN
  5486. BX6 X3
  5487. SA6 A1
  5488. SX6 1R(
  5489. SB4 5 CHARACTER COUNT
  5490. PX6 X6,B4
  5491. SA6 A2
  5492. PCM6 BSS 0
  5493. SA1 A0+VSTT DETERMINE MINIMUM CHARACTERS TO PROCESS
  5494. * BASED ON SYSTEM
  5495. SA2 PBUF+1 GET COUNT OF CHARACTERS IN COMMAND NAME
  5496. MX3 -3
  5497. LX1 -12
  5498. BX3 -X3*X1 EXTRACT CURRENT SUBSYSTEM
  5499. SX1 X3-MSYS
  5500. PL X1,PCM18 IF INCORRECT SUBSYSTEM
  5501. SA1 PCOM+X3
  5502. UX2,B4 X2 GET NUMBER OF CHARACTERS RECEIVED
  5503. UX1,B5 X1 GET MINIMUM TO COMPARE ON
  5504. SB7 X3+ SET SYSTEM NUMBER
  5505. SX3 B4
  5506. GE B4,B5,PCM7 IF AT OR ABOVE MINIMUM CHARACTER COUNT
  5507. SX3 B5
  5508. PCM7 LX4 X3,B1 CHARACTER COUNT * 6
  5509. LX3 2
  5510. IX6 X3+X4
  5511. MX5 1 GENERATE COMPARISON MASK
  5512. SB5 X6-1
  5513. AX5 X5,B5 GENERATE MASK
  5514. SA3 A2-B1 GET COMMAND NAME
  5515. BX1 X3
  5516. AX3 54 GET FIRST CHARACTER
  5517. SX4 X3-1R0
  5518. NG X1,PCM18 IF INCORRECT COMMAND
  5519. PL X4,PCM18 IF INCORRECT COMMAND
  5520. MX2 -2
  5521. BX2 -X2*X3 GET LOWER TWO BITS
  5522. AX3 2 USE UPPER THREE BITS TO INDEX TABLE
  5523. SA4 TCOMA+X3 GET INDEX WORD
  5524. SX2 X2+B1 SHIFT COUNT = (BYTE + 1) * 12
  5525. LX2 2 GET BYTE IN INDEX WORD
  5526. LX3 X2,B1
  5527. IX3 X2+X3
  5528. SB4 X3 SET SHIFT COUNT
  5529. MX2 -12
  5530. LX4 X4,B4
  5531. BX6 -X2*X4
  5532. SX0 B1+
  5533. PCM8 SA2 TCOM+X6 GET NEXT COMMAND
  5534. BX3 X5*X2
  5535. IX3 X1-X3
  5536. NG X3,PCM18 IF INCORRECT COMMAND
  5537. SX6 X6+2
  5538. NZ X3,PCM8 IF NO FIND
  5539. SA3 A2+B1 CHECK IF COMMAND VALID
  5540. LX4 X0,B7 SET SYSTEM MASK BIT
  5541. LX4 18
  5542. BX7 X4*X3
  5543. ZR X7,PCM8 IF NOT VALID FOR THIS SYSTEM
  5544. SB5 X2 SET COMMAND PROCESSOR ADDRESS
  5545. MX6 42 SAVE FULL COMMAND NAME
  5546. BX6 X6*X2
  5547. BX2 X1-X6
  5548. ZR X2,PCM9 IF COMPLETE COMMAND
  5549. SA2 A3+B1 CHECK UNIQUENESS
  5550. BX2 X5*X2
  5551. BX2 X1-X2
  5552. NZ X2,PCM9 IF COMMAND UNIQUE
  5553. SA2 A2+B1
  5554. BX4 X4*X2
  5555. NZ X4,PCM16 IF COMMAND NOT UNIQUE TO THIS SYSTEM
  5556. PCM9 SA6 PBUF
  5557. BX2 X3
  5558. RJ CFC COUNT COMMAND CHARACTERS
  5559. BX3 X2
  5560. SA1 PBUF+1 GET SEPARATOR
  5561. UX6,B7 X1
  5562. PX6 B6,X6
  5563. SA6 A1
  5564. SA1 A0+VROT
  5565. IX6 X3+X0 INCREMENT COMMAND COUNT
  5566. LX1 59-11
  5567. SX4 X6
  5568. PL X4,PCM10 IF NO COMMAND COUNT OVERFLOW
  5569. BX6 X3
  5570. PCM10 NG X1,PCM15 IF ERROR ON LAST OPERATION
  5571. AX1 48
  5572. MX2 -5
  5573. BX1 -X2*X1
  5574. SX1 X1-1
  5575. NG X3,PCM12 IF SECONDARY COMMAND
  5576. ZR X1,PCM11 IF STATUS IDLE
  5577. SMA X6,( JOB ACTIVE."NL")
  5578. RJ SSP
  5579. EQ PCS5 ISSUE MESSAGE
  5580.  
  5581. PCM11 TA4 B2,VRAP
  5582. NZ X4,PCM20 IF REENTRY TABLE ENTRY TO BE PROCESSED
  5583. PCM12 AX3 48 GET NUMBER OF LEGAL PARAMETERS
  5584. MX5 -6
  5585. SA2 CCMA
  5586. BX5 -X5*X3
  5587. IX5 X5-X2
  5588. NG X5,PCM17 IF TOO MANY PARAMETERS
  5589. IFMUX PCM14 IF MUX TERMINAL
  5590. BX5 X6
  5591. LX5 59-57
  5592. NG X5,PCM18 IF COMMAND INCORRECT FOR NETWORK
  5593. PCM14 SA6 A3 UPDATE COMMAND COUNT
  5594. RJ SSP
  5595. JP B5 PROCESS COMMAND
  5596.  
  5597. PCM15 MX6 -59 CLEAR ERROR FLAG
  5598. BX6 -X6*X1
  5599. LX6 12
  5600. SA6 A1
  5601. SMA X0,( SYSTEM ERROR."NL")
  5602. RJ SSP
  5603. EQ PCM21 SEND ERROR MESSAGE
  5604.  
  5605. PCM16 SMA X0,( COMMAND NOT UNIQUE."NL")
  5606. RJ SSP
  5607. EQ PCM21 SEND ERROR MESSAGE
  5608.  
  5609. PCM17 SMA X0,( TOO MANY PARAMETERS."NL")
  5610. EQ PCM19 PROCESS ERROR
  5611.  
  5612. PCM18 SMA X0,( INCORRECT COMMAND."NL")
  5613. PCM19 RJ SSP
  5614. SA1 A0+VROT CHECK FOR ACTIVITY
  5615. MX2 -5
  5616. BX3 -X2*X1
  5617. SX4 X3-1
  5618. NZ X4,PCM21 IF NOT IDLE
  5619. SA1 A0+VSTT READ VSTT
  5620. MX4 -3
  5621. LX1 -12
  5622. BX1 -X4*X1 EXTRACT CURRENT SUBSYSTEM
  5623. SA1 PCOM+X1 READ ERROR PROCESSOR ADDRESS
  5624. SB6 X1+
  5625. JP B6 GO TO SYSTEM ERROR PROCESSOR
  5626.  
  5627. PCM20 SMA X0,( INCORRECT COMMAND."NL")
  5628. RJ SSP
  5629. PCM21 SA1 TCOMI+1 COUNT INCORRECT COMMAND
  5630. SX7 X1+B1
  5631. SA7 A1
  5632. BX6 X0 GET MESSAGE ADDRESS
  5633. EQ PCS5 ISSUE MESSAGE
  5634. PCM TITLE PCM - TERMINAL USER,S COMMANDS.
  5635. ** TCOM - TELETYPE USER,S VALID COMMAND TABLE.
  5636. * ALL COMMANDS MUST BE ENTERED IN THIS TABLE IN ALPHABETICAL
  5637. * ORDER.
  5638. * SEE MACRO USECMN FOR A DESCRIPTION OF THE TABLE FORMAT.
  5639. TCOM SPACE 4
  5640. *** THE FOLLOWING IS A LIST OF ALL OF THE COMMANDS THAT MAY BE
  5641. * ISSUED BY THE TTY USER. MOST OF THE COMMANDS MAY BE ISSUED
  5642. * IN ALL SYSTEMS EXCEPT THE ACCESS SYSTEM. SOME COMMANDS
  5643. * ARE RESTRICTED TO CERTAIN SYSTEMS. IN THE BATCH SYSTEM
  5644. * ANY COMMAND WHICH CANNOT BE INTERPETED WILL BE ISSUED AS
  5645. * A COMMAND. ANY COMMAND WHICH IS ISSUED IN A SYSTEM
  5646. * WHICH IT IS NOT LEGAL FOR WITH THE EXCEPTION OF BATCH
  5647. * WILL RETURN * INCORRECT COMMAND.*
  5648.  
  5649.  
  5650. U3 MICRO 1,1,* * FIRST CHARACTER OF LAST COMMAND PROCESSED
  5651. PARC EQU 10 NUMBER OF PARAMETER POSITIONS TO BE
  5652. * CLEARED IN PBUF BY CCM. USED FOR
  5653. * INSURING DEFAULTS FOR *RESEQ* FOR EXAMPLE
  5654.  
  5655. TCOM BSS 0
  5656. ACCESS SPACE 4
  5657. *** ACCESS.
  5658. *
  5659. * SETS THE USER-S SYSTEM TO *ACCESS* IF VALIDATED (*CTPC* SET
  5660. * IN *AACW*). IF NOT VALIDATED, * INCORRECT COMMAND.* WILL BE
  5661. * RETURNED.
  5662.  
  5663.  
  5664. USECMN ACCESS,ACC,,,,(ALL)
  5665. SPACE 4,10
  5666. *** ADMIT.
  5667. *
  5668. * ALLOWS USER TO GRANT EXPLICIT PERMISSION TO ACCESS TAPE
  5669. * FILE(S) TO ANOTHER USER. (SEE TMS REFERENCE MANUAL FOR
  5670. * DETAILS.
  5671.  
  5672.  
  5673. USECMN ADMIT,PBS,0
  5674. ALTER SPACE 4,10
  5675. *** ALTER,LINES,/STR1/STR2/.
  5676. *
  5677. * REPLACES CHARACTER STRINGS IN SPECIFIED PRIMARY FILE LINES.
  5678. *
  5679. * LINES = ANY NUMBER OF LINE NUMBERS AND LINE RANGES,
  5680. * IN ASCENDING ORDER. THIS PARAMETER IS OPTIONAL.
  5681. * /STR1/STR2/ = TWO SEQUENCES OF CHARACTERS SEPARATED BY AND
  5682. * DELIMITED BY A STRING DELIMITER. EITHER SEQUENCE MAY
  5683. * BE NULL.
  5684.  
  5685.  
  5686. USECMN ALTER,IED,0
  5687. SPACE 4,10
  5688. *** AMEND.
  5689. *
  5690. * ALLOWS USER TO AMEND THE CATALOG ENTRY FOR A TAPE FILE.
  5691. * (SEE TMS REFERENCE MANUAL FOR DETAILS.)
  5692.  
  5693.  
  5694. USECMN AMEND,PBS,0
  5695. APL SPACE 4
  5696. *** APL,XXXXX
  5697. *
  5698. * CALL *APL*.
  5699. *
  5700. * PARAMETER -
  5701. * XXXXX = TERMINAL TYPE FOR APL PROCESSING.
  5702.  
  5703.  
  5704. USECMN APL,PBS,0
  5705. APP SPACE 4
  5706. *** APPEND,LFN=PFN.
  5707. *
  5708. * THIS ALLOWS THE USER TO APPEND THE CONTENTS OF FILE *LFN*
  5709. * TO FILE *PFN*. (SEE PFILES)
  5710.  
  5711.  
  5712. USECMN APPEND,PSS,0
  5713. SPACE 4,10
  5714. *** APPSW,AP=ANAME,OP.
  5715. *
  5716. * THIS COMMAND ALLOWS THE USER TO SWITCH TO THE APPLICATION
  5717. * *ANAME*, AND TO OPTIONALLY PASS INFORMATION TO THAT
  5718. * APPLICATIOIN WITH THE *Z* PARAMETER.
  5719.  
  5720. USECMN APPSW,PBS,0
  5721. ASCII SPACE 4
  5722. *** ASCII.
  5723. *
  5724. * SETS THE FLAG TO THE DRIVER FOR ASCII CONVERSION.
  5725.  
  5726.  
  5727. USECMN ASCII,PBS,,,,(ALL)
  5728. ATTACH SPACE 4
  5729. *** ATTACH.
  5730. *
  5731. * SEE *PFILES* DOCUMENTATION.
  5732.  
  5733.  
  5734. USECMN ATTACH,RPF,0
  5735. SPACE 4,10
  5736. *** AUDIT.
  5737. *
  5738. * ALLOWS USER TO OBTAIN INFORMATION ABOUT THE FILES THAT
  5739. * RESIDE IN THE USERS TAPE FILE CATALOG OR ARE PERMITTED TO
  5740. * ACCESS IN AN ALTERNATE USERS CATALOG. (SEE TMS REFERENCE
  5741. * MANUAL FOR DETAILS.)
  5742.  
  5743.  
  5744. USECMN AUDIT,PBS,0
  5745. AUTO SPACE 4
  5746. *** AUTO,NNN,YYY.
  5747. *
  5748. * THIS ALLOWS THE USER TO HAVE THE SYSTEM SUPPLY HIM
  5749. * WITH LINE NUMBERS AUTOMATICALLY. THIS MODE IS CLEARED
  5750. * ANYTIME A COMMAND LINE IS ENTERED. IT IS POSSIBLE
  5751. * TO GET OUT OF THIS MODE BY ENTERING A COMMAND LINE.
  5752. *
  5753. * PARAMETERS-
  5754. * NNN = STARTING LINE NUMBER. IF NULL, 100 IS ASSUMED.
  5755. * YYY = AMOUNT TO INCREMENT EACH LINE NUMBER BY. IF NULL,
  5756. * 10 IS ASSUMED.
  5757. *
  5758. * ERRORS-
  5759. * *INCORRECT PARAMETER.* = THE INCREMENT IS MORE THAN 4095
  5760. * OR THE STARTING LINE NUMBER IS MORE THAN FIVE
  5761. * DIGITS.
  5762.  
  5763.  
  5764. USECMN AUTO,AUT,3
  5765. BASIC SPACE 4
  5766. *** BASIC,NNNNN.
  5767. *
  5768. * THIS DEFINES THE SYSTEM TYPE TO BE *BASIC*. IF THERE
  5769. * HAS BEEN NO FILE PREVIOUSLY DEFINED, THE USER IS ASKED
  5770. * *OLD, NEW, OR LIB FILE *.
  5771. *
  5772. * PARAMETERS-
  5773. * NNNNN = OPTIONAL ADDITIONAL COMMAND STRING.
  5774.  
  5775.  
  5776. USECMN BASIC,LAN1,0,,,(ALL)
  5777. BATCH SPACE 4
  5778. *** BATCH,NNNNN.
  5779. *
  5780. * THIS COMMAND ALLOWS THE USER TO ENTER STANDARD *NOS*
  5781. * BATCH COMMANDS AS WELL AS THE *IAFEX* COMMANDS THAT
  5782. * ARE DESIGNATED VALID FOR THIS SYSTEM. IF A COMMAND CANNOT
  5783. * BE INTERPRETED BY *IAFEX* IN THIS MODE IT WILL THEN BE
  5784. * PASSED ONTO THE SYSTEM AS A COMMAND.
  5785. *
  5786. * PARAMETERS-
  5787. * NNNNN = AMOUNT OF FL THESE JOBS ARE TO RUN IN.
  5788. * IF *NNNNNN* IS NOT GIVEN, THEN THE DEFAULT *VBFL* IS USED.
  5789.  
  5790.  
  5791. USECMN BATCH,BAT,2,,,(ALL)
  5792. BEGIN SPACE 4,10
  5793. *** BEGIN.
  5794. *
  5795. * SEE CYBER CONTROL LANGUAGE DOCUMENTATION.
  5796.  
  5797.  
  5798. USECMN BEGIN,PSS,0
  5799. BINARY SPACE 4
  5800. *** BINARY,X,Y
  5801. *
  5802. * THIS ALLOWS THE USER TO INPUT BINARY DATA FROM THE TERMINAL
  5803. * TO HIS PRIMARY FILE.
  5804. * X = NUMBER OF CHARACTERS/LINE.
  5805. * Y = TERMINATION CHARACTER IN OCTAL.
  5806.  
  5807.  
  5808. USECMN BINARY,BIN,3,INVN
  5809. BRIEF SPACE 4,10
  5810. *** BRIEF.
  5811. *
  5812. * SETS BRIEF MODE, WHICH SUPPRESSES THE ISSUANCE OF
  5813. * FULL OR PARTIAL HEADER RESPONSES TO COMMANDS. BRIEF
  5814. * MODE IS CLEARED BY THE *NORMAL* COMMAND.
  5815.  
  5816.  
  5817. USECMN BRIEF,BRF
  5818. BYE SPACE 4
  5819. *** BYE,ANAME.
  5820. *
  5821. * LOGS THE USER OFF AFTER ISSUING ACCOUNTING INFORMATION.
  5822. *
  5823. * PARAMETERS:
  5824. *
  5825. * ANAME NEXT APPLICATION TO BE LOGGED INTO. ONLY
  5826. * *IAF* IS VALID FOR MULTIPLEXER TERMINALS.
  5827.  
  5828. USECMN BYE,PBS,0,CHGR,,(ALL)
  5829. CATLIST SPACE 4
  5830. *** CATLIST.
  5831. * SEE *CATLIST* DOCUMENTATION.
  5832.  
  5833.  
  5834. USECMN CATLIST,PBS,0
  5835. CHANGE SPACE 4
  5836. *** CHANGE.
  5837. * ALLOWS USER TO CHANGE THE CATALOG ENTRY
  5838. * FOR A FILE (SEE PFILES).
  5839.  
  5840.  
  5841. USECMN CHANGE,PBS,0
  5842. CHARGE SPACE 4
  5843. *** CHARGE,XXXXXXXXXX,YYYYYYYYYYYYYYYYYYYY.
  5844. *
  5845. * THIS COMMAND IS USED TO ENTER AN ACCOUNT FILE MESSAGE AND
  5846. * VALIDATE THE CHARGE NUMBER *XXXXXXXXXX* AND PROJECT NUMBER
  5847. * *YYYYYYYYYYYYYYYYYYYY* IF REQUIRED.
  5848. * UP TO 10D CHARACTERS MAY BE ENTERED FOR CHARGE NUMBER
  5849. * AND UP TO 20D FOR PROJECT NUMBER.
  5850. * WHEN CHARGE NUMBER IS REQUIRED, ONLY THE FOLLOWING COMMANDS
  5851. * MAY BE ENTERED
  5852. * CHARGE,XXXXXXXXXX,YYYYYYYYYYYYYYYYYYYY.
  5853. * HELLO.
  5854. * LOGIN.
  5855. * BYE.
  5856.  
  5857.  
  5858. USECMN CHARGE,PBS,0,CHGR,,(ALL)
  5859. CHVAL SPACE 4,10
  5860. *** CHVAL(DI=DATA,...,DI=DATA)
  5861. *
  5862. * CHANGE USER VALIDATION DATA.
  5863. *
  5864. * DI = DATA IDENTIFIER.
  5865. * DATA = VALUE TO BE ASSIGNED.
  5866. *
  5867. * ALLOWED DATA IDENTIFIERS ARE -
  5868. * UC=OTSC. SET USER DEFAULT SERVICE CLASS *SC* FOR ORIGIN
  5869. * TYPE *OT*.
  5870.  
  5871.  
  5872. USECMN CHVAL,PBS,0
  5873. CLASS SPACE 4,10
  5874. *** CLASS,SC=SC,OT=OT,L=LFN,A.
  5875. *
  5876. * DISPLAY AND/OR CHANGE CURRENT SERVICE CLASS OF JOB.
  5877. *
  5878. * SC = SERVICE CLASS.
  5879. * OT = ORIGIN TYPE.
  5880. * L = OUTPUT FILE NAME.
  5881. * A = ABORT MODE.
  5882.  
  5883.  
  5884. USECMN CLASS,PBS,0
  5885. CLEAR SPACE 4
  5886. *** CLEAR.
  5887. *
  5888. * RETURN ALL FILES EXCEPT FOR PRIMARY FILE.
  5889.  
  5890.  
  5891. USECMN CLEAR,PBS,0
  5892. CVT SPACE 4,10
  5893. *** CONVERT(P1,...,PN)
  5894. *
  5895. * CALLS *CONVERT* UTILITY TO CONVERT FILE FORMATS FROM
  5896. * 63 TO 64 CHARACTER SET OR FROM NEW TO OLD CHARACTER
  5897. * SET.
  5898.  
  5899.  
  5900. USECMN CONVERT,PBS,0
  5901. CSET SPACE 4,10
  5902. *** CSET,PARAM.
  5903. *
  5904. * SETS TERMINAL TO NORMAL OR ASCII CHARACTER SET MODE.
  5905. *
  5906. * PARAMETERS-
  5907. * PARAM = *ASCII*. SET EXTENDED CHARACTER SET MODE.
  5908. * = *NORMAL*. SET NORMAL MODE.
  5909. *
  5910. * ERRORS-
  5911. * *INCORRECT PARAMETER.* = AN UNRECOGNIZABLE PARAMETER
  5912. * OR NO SECOND PARAMETER WAS ENTERED.
  5913.  
  5914.  
  5915. USECMN CSET,PBS,2,,,(ALL)
  5916. DAYFILE SPACE 4
  5917. *** DAYFILE.
  5918. *
  5919. * PRINTS THE USER,S CONTROL POINT AREA DAYFILE TO HIS TERMINAL.
  5920.  
  5921.  
  5922. USECMN DAYFILE,PBS,0
  5923. DEFINE SPACE 4
  5924. *** DEBUG,PARAM.
  5925. *
  5926. * ALLOWS THE USER TO ACTIVATE, TERMINATE OR RESUME
  5927. * DEBUG MODE.
  5928. *
  5929. * PARAMETERS-
  5930. * PARAM = *ON* DEFAULT. ACTIVATES DEBUG MODE.
  5931. * WHENEVER A RELOCATABLE BINARY PROGRAM
  5932. * IS LOADED AND EXECUTED, CYBER
  5933. * INTERACTIVE DEBUG IS LOADED AND GIVEN
  5934. * CONTROL.
  5935. * = *OFF* TERMINATES DEBUG MODE.
  5936. * = *RESUME* RESUME THE DEBUG SESSION SUSPENDED
  5937. * BY THE LAST EXECUTION OF THE SUSPEND
  5938. * COMMAND.
  5939.  
  5940.  
  5941. USECMN DEBUG,PBS,0
  5942. SPACE 4
  5943. *** DEFINE.
  5944. *
  5945. * SEE *PFILES* DOCUMENTATION.
  5946.  
  5947.  
  5948. USECMN DEFINE,PBS,0
  5949. DELETE SPACE 4,15
  5950. *** DELETE,LINES,/STRING/.
  5951. *
  5952. * THIS PRIMARY FILE EDITING COMMAND DELETES LINES SPECIFIED
  5953. * BY LINE NUMBER OR CHARACTER CONTENT.
  5954. *
  5955. * LINES = ANY NUMBER OF LINE NUMBERS OR LINE RANGES, IN
  5956. * ASCENDING ORDER.
  5957. * /STRING/ = NON-NULL SEQUENCE OF CHARACTERS DELIMITED BY A
  5958. * STRING DELIMITER.
  5959. *
  5960. * EITHER PARAMETER MAY BE OMITTED.
  5961.  
  5962.  
  5963. USECMN DELETE,IED,0
  5964. DIAL SPACE 4
  5965. *** DIAL,NNNN,AAAAAAAAA.
  5966. *
  5967. * ALLOWS ONE USER TO SEND A MESSAGE TO ANOTHER USER.
  5968. *
  5969. * PARAMETERS-
  5970. * NNNN = TERMINAL *JSN*. MAY BE DETERMINED BY COMMAND
  5971. * *USER,USERNUM.*.
  5972. * AAAAA = THE MESSAGE TO BE SENT. (IT MAY BE UP TO ONE TTY
  5973. * LINE IN LENGTH INCLUDING THE COMMAND.
  5974.  
  5975.  
  5976. USECMN DIAL,DIA,0,,,(ACCS)
  5977. DROP SPACE 4,10
  5978. *** DROP,JSN,Q,UJN.
  5979. *
  5980. * DROPS A JOB OR QUEUE FILE FROM ANY QUEUE OR CONTROL POINT.
  5981. * ANY COMBINATION OF PARAMETERS MAY BE SPECIFIED.
  5982. *
  5983. * JSN = JOB SEQUENCE NUMBER.
  5984. * Q = QUEUE TYPE: PR, PU, PL, IN, EX, TT, ALL.
  5985. * UJN = USER JOB NAME.
  5986.  
  5987.  
  5988. USECMN DROP,PBS,0
  5989. DUP SPACE 4,15
  5990. *** DUP,LR,N,Z.
  5991. *
  5992. * DUPLICATES LINE(S) FROM ONE PLACE IN A PRIMARY FILE
  5993. * IN ANOTHER PLACE.
  5994. *
  5995. * LR = LINE NUMBER OR RANGE OF LINES TO BE DUPLICATED.
  5996. * N = LINE NUMBER AFTER WHICH TO INSERT DUPLICATED LINES.
  5997. * Z = LINE NUMBER INCREMENT USED TO GENERATE NEW LINE NUMBERS
  5998. * ON DUPLICATED LINES.
  5999. *
  6000. * N AND Z ARE OPTIONAL.
  6001.  
  6002.  
  6003. USECMN DUP,IED,0
  6004. EDIT SPACE 4
  6005. *** EDIT,LFN,AS.
  6006. *
  6007. * INITIATES THE TEXT EDITOR.
  6008. *
  6009. * PARAMETERS-
  6010. * LFN = NAME OF THE FILE TO BE EDITED. IF NULL, THE PRIMARY
  6011. * FILE NAME IS ASSUMED.
  6012. * AS = EDIT FILE IN ASCII MODE.
  6013. * (NOT REQUIRED IF TERMINAL IN ASCII MODE.)
  6014.  
  6015.  
  6016. USECMN EDIT,EDI,9
  6017. ENQ SPACE 4,10
  6018. *** ENQUIRE,N.
  6019. * ALLOWS USER TO FIND OUT HIS CURRENT STATUS.
  6020. *
  6021. * THIS COMMAND IS IDENTICAL IN ITS FUNCTION AND PARAMETERS
  6022. * TO THE *STATUS* COMMAND (Q.V.). IT IS RECOMMENDED
  6023. * THAT THIS FORM OF THE COMMAND BE USED WHEN IT IS
  6024. * UNDESIRABLE TO ENTER THE LETTER *S* WHICH INITIATES
  6025. * THE *STATUS* COMMAND.
  6026.  
  6027.  
  6028. USECMN ENQUIRE,STA,0,SCOM,,(ALL)
  6029. EFFECT SPACE 4
  6030. *** EFFECT,PARAM.
  6031. *
  6032. * SET USER OR SYSTEM SUPPLIED FORMAT EFFECTOR MODE. IF
  6033. * *SYSTEM* IS ENTERED, THEN IAFEX WILL GENERATE FORMAT
  6034. * EFFECTORS FOR OUTPUT. IF *USER* IS ENTERED, THE
  6035. * PROGRAM/USER MUST GENERATE ITS OWN FORMAT EFFECTORS FOR
  6036. * OUTPUT.
  6037. *
  6038. * PARAMETERS-
  6039. * PARAM = *SYSTEM*. SET SYSTEM SUPPLIED FORMAT EFFECTOR MODE.
  6040. * = *USER*. SET USER SUPPLIED FORMAT EFFECTOR MODE.
  6041. * = (OMITTED) = *SYSTEM*.
  6042. *
  6043. * ERRORS-
  6044. * *ILLEGAL PARAMETER.* = AN UNRECOGNIZABLE PARAMETER
  6045. * WAS ENTERED.
  6046.  
  6047.  
  6048. USECMN EFFECT,PBS,2,,,(ALL)
  6049. EXECUTE SPACE 4
  6050. *** EXECUTE,NNNNN.
  6051. *
  6052. * SETS THE SYSTEM TYPE TO EXECUTE.
  6053. * IF THERE HAS BEEN NO FILE SPECIFIED, THE USER IS ASKED
  6054. * *OLD OR LIB FILE *.
  6055. * NNNNN = OPTIONAL ADDITIONAL COMMAND STRING.
  6056.  
  6057.  
  6058. USECMN EXECUTE,LAN4,PARL,,,(ALL)
  6059. EXPLAIN SPACE 4
  6060. *** EXPLAIN.
  6061. *
  6062. * ALLOWS USER TO ACCESS ON-LINE DOCUMENTATION.
  6063.  
  6064.  
  6065. USECMN EXPLAIN,PBS,0,,,(ALL)
  6066. SPACE 4,10
  6067. *** FCOPY.
  6068. *
  6069. * CONVERT FILE FROM ONE CODE SET TO ANOTHER CODE SET.
  6070.  
  6071.  
  6072. USECMN FCOPY,PBS,0
  6073. FORTRAN SPACE 4
  6074. *** FORTRAN,NNNNN.
  6075. *
  6076. * SETS THE SYSTEM TYPE TO *FORTRAN*. OTHERWISE IT IS
  6077. * THE SAME AS THE *BASIC* COMMAND.
  6078.  
  6079.  
  6080. USECMN FORTRAN,LAN2,0,,,(ALL)
  6081. FSE SPACE 4,10
  6082. *** FSE,LFN,ASCII.
  6083. *
  6084. * THIS COMMAND EXECUTES THE FULL SCREEN EDITOR.
  6085. *
  6086. * LFN = LOCAL FILE TO BE EDITED. IF OMITTED, ATTEMPT
  6087. * TO RESUME PREVIOUS EDIT SESSION.
  6088. * ASCII = PROCESS FILE AS 6/12 ASCII CODE IF THIS
  6089. * PARAMETER IS PRESENT AND STARTS WITH *A*.
  6090.  
  6091.  
  6092. USECMN FSE,PSS,0,,,(ALL)
  6093. FTNTS SPACE 4
  6094. ** FTNTS,NNNN.
  6095. *
  6096. * SETS THE SYSTEM TYPE TO *FTNTS*. OTHERWISE IT IS THE
  6097. * SAME AS THE *BASIC* COMMAND.
  6098.  
  6099.  
  6100. USECMN FTNTS,LAN3,0,,,(ALL)
  6101. FULL SPACE 4
  6102. *** FULL.
  6103. *
  6104. * SETS FULL DUPLEX TERMINAL OPERATION.
  6105.  
  6106.  
  6107. USECMN FULL,FDP,,SCOM+INVN,,(ALL)
  6108. GET SPACE 4
  6109. *** GET,LFN=PFN.
  6110. *
  6111. * THIS ALLOWS THE USER TO GET A FILE FROM THE PERMANENT
  6112. * FILE SYSTEM. (SEE PFILES)
  6113.  
  6114.  
  6115. USECMN GET,RPF,0
  6116. GOODBYE SPACE 4
  6117. *** GOODBYE,ANAME.
  6118. *
  6119. * SEE *BYE.*
  6120.  
  6121.  
  6122. USECMN GOODBYE,PBS,0,CHGR,,(ALL)
  6123. HALF SPACE 4
  6124. *** HALF.
  6125. *
  6126. * SETS HALF DUPLEX TERMINAL OPERATION.
  6127.  
  6128.  
  6129. USECMN HALF,HDP,,SCOM+INVN,,(ALL)
  6130. HELLO SPACE 4
  6131. *** HELLO,ANAME.
  6132. *
  6133. * SAME AS *BYE,ANAME* IF ANAME IS PRESENT. IF *ANAME*
  6134. * IS OMITTED, *IAF* IS ASSUMED.
  6135.  
  6136.  
  6137. USECMN HELLO,PBS,0,CHGR,,(ALL)
  6138. HELP SPACE 4
  6139. *** HELP.
  6140. *
  6141. * USER DOCUMENTATION.
  6142.  
  6143.  
  6144. USECMN HELP,PBS,,,,(ALL)
  6145. HELPME SPACE 4
  6146. *** HELPME.
  6147. *
  6148. * WILL DESCRIBE AND EXECUTE NOS COMMANDS FOR ON-LINE
  6149. * USERS.
  6150.  
  6151.  
  6152. USECMN HELPME,PBS,,,,(ALL)
  6153. LENGTH SPACE 4
  6154. *** LENGTH,LFN.
  6155. *
  6156. * RETURNS THE FILE TYPE, LAST STATUS, AND LENGTH OF FILE
  6157. * *LFN*. IF *LFN* IS NULL, THE PRIMARY FILE NAME IS USED.
  6158. *
  6159. * PARAMETERS-
  6160. * LFN = LOGICAL FILE NAME. (THIS DOES NOT RETURN THE LENGTH
  6161. * OF A PERMANENT FILE.)
  6162.  
  6163.  
  6164. USECMN LENGTH,LEN,2
  6165. LIBRARY SPACE 4
  6166. *** LIB.
  6167. * LIB,LFN=PFN.
  6168. *
  6169. * SAME AS *OLD,PFN/UN=LIBRARY.*
  6170.  
  6171.  
  6172. USECMN LIB,PFC,0
  6173. LIMITS SPACE 4
  6174. *** LIMITS.
  6175. * THIS COMMAND DISPLAYS A USERS CURRENT
  6176. * VALIDATION FILE PARAMETERS.
  6177.  
  6178.  
  6179. USECMN LIMITS,PBS,0,,,(ALL)
  6180. LINE SPACE 4,10
  6181. *** LINE.
  6182. * LINE,TM=MNEMONIC.
  6183. * LINE,MNEMONIC.
  6184. *
  6185. * SETS THE TERMINAL IN LINE MODE AND OPTIONALLY SETS THE
  6186. * TERMINAL MODEL.
  6187. *
  6188. * PARAMETERS-
  6189. * MNEMONIC = TERMINAL MODEL.
  6190.  
  6191.  
  6192. USECMN LINE,PBS,0
  6193. LIST SPACE 4,20
  6194. *** LIST,LINES,/STRING/.
  6195. * LIST,LINE,F=LFN.
  6196. *
  6197. * ALLOWS THE USER TO LIST SELECTED LINES FROM PRIMARY AND
  6198. * SECONDARY FILES TO THE TERMINAL.
  6199. *
  6200. * FIRST SYNTAX - PRIMARY FILES ONLY.
  6201. *
  6202. * LINES = ANY NUMBER OF LINE NUMBERS OR LINE RANGES
  6203. * IN ASCENDING ORDER.
  6204. * /STRING/ = A DELIMITED SEQUENCE OF CHARACTERS.
  6205. *
  6206. * SECOND SYNTAX - ANY LOCAL FILE.
  6207. *
  6208. * LINE = ONE LINE NUMBER OR ONE LINE RANGE. ONLY ONE
  6209. * SUCH PARAMETER MAY APPEAR WHEN F=LFN IS SPECIFIED.
  6210. * LFN = FILE TO BE LISTED. IF OMITTED, PRIMARY FILE ASSUMED.
  6211. *
  6212. * ALL PARAMETERS ARE OPTIONAL.
  6213.  
  6214.  
  6215. USECMN LIST,LIS,0
  6216. LNH SPACE 4
  6217. *** LNH,LINES,/STRING/.
  6218. * LNH,LINE,F=LFN.
  6219. *
  6220. * THIS COMMAND WORKS THE SAME AS *LIST*.
  6221.  
  6222.  
  6223. USECMN LNH,LIS,0
  6224. LOGIN SPACE 4
  6225. *** LOGIN,ANAME.
  6226. *
  6227. * SAME AS *HELLO*
  6228.  
  6229.  
  6230. USECMN LOGIN,PBS,0,CHGR,,(ALL)
  6231. LOGOUT SPACE 4,10
  6232. *** LOGOUT,ANAME.
  6233. *
  6234. * SAME AS *BYE,ANAME*.
  6235.  
  6236.  
  6237. USECMN LOGOUT,PBS,0,CHGR,,(ALL)
  6238. LO72 SPACE 4
  6239. *** LO72.
  6240. * SEE LO72 DOCUMENTATION.
  6241.  
  6242.  
  6243. USECMN LO72,PBS
  6244. MOVE SPACE 4,15
  6245. *** MOVE,LR,N,Z.
  6246. *
  6247. * THIS PRIMARY FILE EDITING COMMAND MOVES LINES FROM ONE PLACE
  6248. * TO ANOTHER, DELETING THE ORIGINAL LINES.
  6249. *
  6250. * LR = LINE NUMBER OR RANGE OF LINES TO BE MOVED.
  6251. * N = LINE NUMBER AFTER WHICH TO INSERT THE MOVED LINES.
  6252. * Z = LINE NUMBER INCREMENT USED TO GENERATE NEW LINE NUMBERS
  6253. * ON MOVED LINES.
  6254. *
  6255. * N AND Z ARE OPTIONAL.
  6256.  
  6257.  
  6258. USECMN MOVE,IED,0
  6259. NEW SPACE 4
  6260. *** NEW,LFN.
  6261. *
  6262. * THIS CAUSES ALL OF THE USER,S CURRENT FILES (NON-PERMANENT)
  6263. * TO BE PURGED. A NEW PRIMARY FILE IS THEN ESTABLISHED FOR
  6264. * THE USER.
  6265. *
  6266. * PARAMETERS-
  6267. * LFN = OPTIONAL FILE NAME.
  6268. *
  6269. * RETURN-
  6270. * *FILE NAME * = USER SUPPLIES FILE NAME.
  6271.  
  6272.  
  6273. USECMN NEW,PFC,3
  6274. NORMAL SPACE 4
  6275. *** NORMAL.
  6276. *
  6277. * CLEARS THE SPECIAL OPTIONS ASCII, BRIEF, AND TAPE
  6278. * MODES AND ODD PARITY.
  6279.  
  6280.  
  6281. USECMN NORMAL,NOR,,,,(ALL)
  6282. NOSORT SPACE 4
  6283. *** NOSORT.
  6284. *
  6285. * ALLOWS THE USER TO PREVENT HIS PRIMARY FILE FROM BEING
  6286. * SORTED ON A LIST OR A RUN COMMAND. THIS COMMAND MUST
  6287. * BE ENTERED AFTER ALL CORRECTION LINES HAVE BEEN ENTERED
  6288. * TO BE EFFECTIVE.
  6289.  
  6290.  
  6291. USECMN NOSORT,NOS
  6292. NULL SPACE 4
  6293. *** NULL.
  6294. *
  6295. * CLEARS ALL SUB-SYSTEMS.
  6296.  
  6297.  
  6298. USECMN NULL,LAN,,,,(ALL)
  6299. OLD SPACE 4
  6300. *** OLD.
  6301. * OLD,LFN=PFN/UN=USERNUM,PW=PASSWOR.
  6302. *
  6303. * IF FIRST FORM IS USED THEN USER IS ASKED FOR FILE NAME.
  6304. * SAME AS *GET* EXCEPT THAT PRIMARY FILE NAME IS SET TO LFN.
  6305.  
  6306.  
  6307. USECMN OLD,PFC,0
  6308. PACK SPACE 4
  6309. *** PACK,LFN1,LFN2,NR.
  6310. *
  6311. * READS LFN1 TO EOI AND WRITES IT TO LFN2 AS ONE LOGICAL
  6312. * RECORD. IF LFN1 AND LFN2 ARE NULL, THEN THE PRIMARY FILE
  6313. * IS PACKED AND WRITTEN BACK. IF NR IS SPECIFIED AND LFN1
  6314. * IS NOT THE PRIMARY FILE, LFN1 IS NOT REWOUND BEFORE
  6315. * THE PACK.
  6316.  
  6317.  
  6318. USECMN PACK,PAC,4
  6319. PACKNAM SPACE 4,10
  6320. *** PACKNAM,PN=DNAM,R=TYPE.
  6321. *
  6322. * DIRECTS SUBSEQUENT PERMANENT FILE REQUESTS TO THE
  6323. * NAMED AUXILIARY DEVICE *DNAM* OF TYPE *TYPE*. THE *PN=*
  6324. * PORTION OF *PN=DNAM*, AND *R=TYPE*, ARE OPTIONAL.
  6325.  
  6326.  
  6327. USECMN PACKNAM,PBS,5,,,(ALL)
  6328. PARITY SPACE 4
  6329. *** PARITY,PARAM.
  6330. *
  6331. * SETS TERMINAL PARITY. IF NO PARAMETER IS ENTERED,
  6332. * ODD PARITY IS ASSUMED.
  6333. *
  6334. * PARAMETERS-
  6335. * PARAM = *ODD*. SET ODD PARITY.
  6336. * = *EVEN*. SET EVEN PARITY.
  6337. *
  6338. * ERRORS-
  6339. * *INCORRECT PARAMETER.* = AN UNRECOGNIZABLE PARAMETER
  6340. * WAS ENTERED.
  6341.  
  6342.  
  6343. USECMN PARITY,PAR,2,SCOM+INVN,,(ALL)
  6344. PASSWORD SPACE 4
  6345. *** PASSWOR,OLD,NEW.
  6346. *
  6347. * ALLOWS THE USER TO CHANGE HIS PASSWORD.
  6348. *
  6349. * PARMETERS-
  6350. * OLD = USER,S CURRENT PASSWORD.
  6351. * NEW = NEW PASSWORD.
  6352.  
  6353.  
  6354. USECMN PASSWOR,PBS,3,,,(ALL)
  6355. PERMIT SPACE 4
  6356. *** PERMIT.
  6357. *
  6358. * ALLOWS THE USER TO GRANT AN EXPLICIT PERMISSION TO ACCESS
  6359. * ONE OF HIS FILES TO ANOTHER USER. (SEE PFILES)
  6360.  
  6361.  
  6362. USECMN PERMIT,PBS,0
  6363. PRI SPACE 4,10
  6364. *** PRIMARY,LFN.
  6365. *
  6366. * MAKES LOCAL FILE *LFN* PRIMARY FILE.
  6367.  
  6368.  
  6369. USECMN PRIMARY,PFC,2
  6370. PURGE SPACE 4
  6371. *** PURGE,PFN/UN=USERNUM.
  6372. *
  6373. * ALLOWS A USER TO PURGE A FILE FROM THE PERMANENT FILE
  6374. * SYSTEM. (SEE PFILES)
  6375.  
  6376.  
  6377. USECMN PURGE,SAV,0
  6378. QGET SPACE 4,15
  6379. *** QGET,JSN,Q,UJN.
  6380. *
  6381. * ALLOWS USERS TO OBTAIN JOB OUTPUT FROM PRINT, PUNCH OR PLOT
  6382. * QUEUES.
  6383. *
  6384. * JSN = JOB SEQUENCE NUMBER OF QUEUE FILE.
  6385. * Q = QUEUE TYPE: PR, PU, PL OR TT. PR IS DEFAULT.
  6386. * UJN = USER JOB NAME OF QUEUE FILE.
  6387. *
  6388. * EITHER JSN OR UJN MUST BE SPECIFIED. THE LOCAL FILE NAME OF
  6389. * THE QUEUE FILE WILL BE JSN IF SPECIFIED, OR UJN IF
  6390. * JSN IS OMITTED.
  6391.  
  6392.  
  6393. USECMN QGET,PBS,0
  6394. READ SPACE 4,15
  6395. *** READ,LFN,N,Z.
  6396. *
  6397. * THIS COMMAND ADDS THE CONTENTS OF A FILE TO THE PRIMARY FILE.
  6398. *
  6399. * LFN = FILE TO ADD TO PRIMARY FILE. LINE NUMBERS ARE OPTIONAL
  6400. * ON THIS FILE.
  6401. * N = NUMBER OF LINE AFTER WHICH TO INSERT FILE.
  6402. * Z = LINE NUMBER INCREMENT.
  6403. *
  6404. * N AND Z ARE OPTIONAL.
  6405.  
  6406.  
  6407. USECMN READ,IED,0
  6408. RECOVER SPACE 4
  6409. *** RECOVER,NNNN.
  6410. *
  6411. * THIS COMMAND ALLOWS A USER TO ATTEMPT TO PICK UP FROM WHERE
  6412. * HE WAS AT AFTER A LOSS OF COMMUNICATIONS OR A SYSTEM
  6413. * FAILURE, OR A USER DETACH.
  6414. *
  6415. * PARAMETERS-
  6416. * NNNN = JSN OF JOB TO RECOVER.
  6417. *
  6418. * REPLYS-
  6419. * *JOB NOT FOUND.* JSN WAS NOT IN EJT.
  6420. * *JOB NOT DETACHED.* JSN POINTS TO NON-DTCS JOB.
  6421. * *JOB NOT RECOVERABLE.* SOME OTHER REASON PREVENTED RECOVERY,
  6422. * I.E. BAD ROLLOUT FILE.
  6423.  
  6424.  
  6425. USECMN RECOVER,PBS,0,,,(ALL)
  6426. SPACE 4,10
  6427. *** RELEASE.
  6428. *
  6429. * ALLOWS USER TO RELEASE ONE OR MORE TAPE FILES FROM THE
  6430. * USERS TAPE CATALOG. (SEE TMS REFERENCE MANUAL FOR DETAILS.)
  6431.  
  6432.  
  6433. USECMN RELEASE,PBS,0
  6434. RENAME SPACE 4
  6435. *** RENAME,LFN1=LFN2.
  6436. *
  6437. * CHANGES THE NAME OF FILE *LFN2* TO NAME *LFN1*. IF FILE
  6438. * *LFN1* WAS PREVIOUSLY DEFINED IT IS DROPPED.
  6439.  
  6440.  
  6441. USECMN RENAME,PBS,0
  6442. REPLACE SPACE 4
  6443. *** REPLACE,LFN=PFN.
  6444. *
  6445. * ALLOWS THE USER TO REPLACE A FILE THAT HE HAS SAVED IN
  6446. * THE PERMANENT FILE SYSTEM. (SEE PFILES)
  6447.  
  6448.  
  6449. USECMN REPLACE,SAV,0
  6450. RESEQ SPACE 4
  6451. *** RESEQ,NNNNN,YYYYY,T
  6452. *
  6453. * ALLOWS THE USER TO RESEQUENCE HIS PRIMARY FILE.
  6454. *
  6455. * PARAMETERS-
  6456. * NNNNN = THE NUMBER TO START THE NEW FILE WITH.
  6457. * IF NULL, 100 IS ASSUMED.
  6458. * YYYYY = THE INCREMENT TO BE ADDED TO NNNNN FOR EACH LINE.
  6459. * IF NULL, 10 IS ASSUMED.
  6460. * T = TYPE OF FILE.
  6461. * IF T = *B*, FILE TYPE IS ASSUMED BASIC AND INTERNAL SEQUENCE
  6462. * NUMBERS ARE RESEQUENCED.
  6463. * IF T = *T*, A FIVE DIGIT SEQUENCE NUMBER + BLANK ARE ADDED
  6464. * TO THE BEGINNING OF ALL LINES WITH NO INSPECTION FOR
  6465. * LEADING LINE NUMBERS.
  6466. * IF T IS OMITTED, IT DEFAULTS TO *B* IF UNDER BASIC SUBSYSTEM,
  6467. * OTHERWISE, THE FILE IS TREATED AS A FORTRAN TYPE FILE WHERE
  6468. * ALL LEADING LINE NUMBERS ARE RESEQUENCED WITH NUMBERS BEING
  6469. * SUPPLIED WHERE NONE ARE PRESENT.
  6470. *
  6471. * ERRORS-
  6472. * *INCORRECT PARAMETER.* = INCREMENT IS ZERO.
  6473.  
  6474.  
  6475. USECMN RESEQ,RER,4
  6476. SPACE 4,10
  6477. *** RESERVE.
  6478. *
  6479. * ALLOWS USER TO RESERVE A CENTER-OWNED SCRATCH TAPE. (SEE
  6480. * TMS REFERENCE MANUAL FOR DETAILS.)
  6481.  
  6482.  
  6483. USECMN RESERVE,PBS,0
  6484. RETURN SPACE 4
  6485. *** RETURN,LFN.
  6486. *
  6487. * SEE *FILES*.
  6488.  
  6489.  
  6490. USECMN RETURN,PBS,0
  6491. REWIND SPACE 4
  6492. *** REWIND,LFN.
  6493. *
  6494. * REWINDS FILE *LFN*.
  6495.  
  6496.  
  6497. USECMN REWIND,PBS,0
  6498. RFL SPACE 4,15
  6499. *** RFL,CM=NNNNNN,EC=MMMM.
  6500. *
  6501. * ALLOWS THE USER TO SPECIFY THE INITIAL RUNNING FIELD LENGTH
  6502. * FOR EACH SUBSEQUENT JOB STEP.
  6503. *
  6504. * PARAMETERS-
  6505. * NNNNNN = DESIRED CENTRAL MEMORY FIELD LENGTH. THIS VALUE
  6506. * WILL BE ROUNDED UP TO THE NEAREST 100B. ASSUMED TO BE OCTAL
  6507. * UNLESS AN 8, 9 OR D SUFFIX PRESENT.
  6508. * MMMM = DESIRED EXTENDED MEMORY FIELD LENGTH IN OCTAL. MMMM
  6509. * IS THE ACTUAL EXTENDED MEMORY DIVIDED BY 1000B.
  6510.  
  6511.  
  6512. USECMN RFL,PBS,5
  6513. RNH SPACE 4
  6514. *** RNH.
  6515. *
  6516. * SAME AS THE *RUN* COMMAND.
  6517.  
  6518.  
  6519. USECMN RNH,RUN,0,,,(BASS,FORS,FTNS,EXES)
  6520. ROUT SPACE 4
  6521. *** ROUT=XX.
  6522. *
  6523. * SETS NUMBER OF RUBOUTS AFTER CARRIAGE RETURN TO XX.
  6524. * XX MUST BE LESS THAN 31.
  6525. * IF XX IS NULL, SYSTEM DEFINED NUMBER WILL BE SET.
  6526.  
  6527.  
  6528. USECMN ROUT,ROT,2,SCOM+INVN,,(ALL)
  6529. RUN SPACE 4
  6530. *** RUN,B=LFN,C=LFN,I=LFN,T,Q1,Q2,QN.
  6531. *
  6532. * ALLOWS THE USER TO COMPILE IF NECESSARY AND BEGIN EXECUTION
  6533. * OF HIS PROGRAM.
  6534. *
  6535. * PARAMETERS-
  6536. * THE FOLLOWING ARE OPTIONAL
  6537. * B = SPECIFIES THAT A BINARY FILE CONTAINING THE OBJECT
  6538. * CODE IS TO BE GENERATED ON FILE *LFN*.
  6539. * C = SAME AS *B*.
  6540. * I = USE FILE LFN INSTEAD OF PRIMARY FILE. FILE IS ASSUMED
  6541. * SORTED.
  6542. * T = TRANSMIT THE FOLLOWING PARAMETER STRING AS A CONTROL
  6543. * COMMAND STRING FOLLOWING THE FILE NAME. APPLIES TO EXECUTE
  6544. * SYSTEM ONLY.
  6545.  
  6546.  
  6547. USECMN RUN,RUN,0,,,(BASS,FORS,FTNS,EXES)
  6548. SAVE SPACE 4
  6549. *** SAVE,LFN=PFN.
  6550. *
  6551. * SAME AS *REPLACE* EXCEPT THAT THE FILE *PFN* CANNOT
  6552. * PREVIOUSLY EXIST IN THE PERMANENT FILE SYSTEM. (SEE PFILES)
  6553.  
  6554.  
  6555. USECMN SAVE,SAV,0
  6556. SCOPY SPACE 4,10
  6557. *** SCOPY,LFN.
  6558. *
  6559. * THIS COMMAND COPIES LFN FROM PRESENT POSITION TO EOF TO THE
  6560. * OUTPUT FILE, REPORTING FILE STRUCTURE (EOR-S AND EOF-S) IN
  6561. * READABLE FORMAT. FOR OTHER PARAMETERS AVAILABLE ON THIS
  6562. * COMMAND, SEE THE NOS REFERENCE MANUAL, VOLUME ONE.
  6563. *
  6564. * LFN = LOCAL FILE NAME, DEFAULT INPUT.
  6565.  
  6566.  
  6567. USECMN SCOPY,PBS,0
  6568. SCREEN SPACE 4,10
  6569. *** SCREEN.
  6570. * SCREEN,TM=MNEMONIC.
  6571. * SCREEN,MNEMONIC.
  6572. *
  6573. * SETS THE TERMINAL IN SCREEN MODE AND OPTIONALLY SETS THE
  6574. * TERMINAL MODEL.
  6575. *
  6576. * PARAMETERS-
  6577. * MNEMONIC = TERMINAL MODEL.
  6578.  
  6579.  
  6580. USECMN SCREEN,PBS,0
  6581. SETASL SPACE 4,12
  6582. *** SETASL,SSSSS
  6583. *
  6584. * ALLOWS THE USER TO SPECIFY HIS TOTAL ALLOWABLE SRU
  6585. * ACCUMULATON.
  6586. *
  6587. * PARAMETERS -
  6588. * SSSSS = DESIRED SRU ACCOUNT BLOCK LIMIT. THIS VALUE WILL BE
  6589. * ROUNDED UP TO THE NEAREST 10. ASSUMED TO BE IN DEFAULT
  6590. * BASE UNLESS POST RADIX GIVEN. IF NULL, DEFAULT IS ASSUMED.
  6591.  
  6592.  
  6593. USECMN SETASL,PBS,2
  6594. SETFS SPACE 4,15
  6595. *** SETFS,LFN1,LFN2,...,LFNN/FS=FS.
  6596. * SETFS,*,LFN1,LFN2,...,LFNN/FS=FS.
  6597. *
  6598. * SET THE AUTO-DROP OR NO-AUTO-DROP STATUS ON FILES ASSIGNED
  6599. * TO YOUR JOB. IF NO-AUTO-DROP IS SET, THE FILE IS NOT
  6600. * RELEASED FROM YOUR JOB BY COMMANDS *NEW*, *OLD*, *CLEAR*,
  6601. * +RETURN,*+ OR +UNLOAD,*+. THE FIRST FORMAT ASSIGNS THE
  6602. * SPECIFIED STATUS TO THE FILES LISTED. THE SECOND FORMAT
  6603. * ASSIGNS THE SPECIFIED STATUS TO ALL FILES ASSIGNED TO THE
  6604. * JOB, EXCEPT THE FILES LISTED.
  6605. *
  6606. * LFNX = LOCAL FILE NAME.
  6607. * FS = SPECIFIES EITHER THE AUTO-DROP (FS=AD) OR NO-AUTO-
  6608. * DROP (FS=NAD) STATUS. THE DEFAULT FOR USER-CREATED
  6609. * FILES IS AUTO-DROP.
  6610.  
  6611.  
  6612. SETFS USECMN SETFS,PBS,0
  6613. SETJOB SPACE 4,10
  6614. *** SETJOB,UJN,DC,OP.
  6615. *
  6616. * SPECIFIES USER JOB NAME, DISPOSITION OF DETACHED JOB OUTPUT
  6617. * UPON JOB COMPLETION, OR END OF JOB PROCESSING FOR DETACHED
  6618. * JOB. ANY COMBINATION OF PARAMETERS MAY BE SPECIFIED.
  6619. *
  6620. * UJN = USER JOB NAME.
  6621. * DC = OUTPUT DESTINATION: TO, NO, BC, RB, DF.
  6622. * OP = END OF DETACHED JOB OPTION: SU, TJ.
  6623.  
  6624.  
  6625. USECMN SETJOB,PBS,0
  6626. SETJSL SPACE 4,12
  6627. *** SETJSL,SSSSS
  6628. *
  6629. * ALLOWS THE USER TO SPECIFY THE ALLOWABLE SRU ACCUMULATION
  6630. * DURING EACH JOB STEP.
  6631. *
  6632. * PARAMETERS -
  6633. * SSSSS = DESIRED SRU JOB STEP LIMIT. THIS VALUE WILL BE
  6634. * ROUNDED UP TO THE NEAREST 10. ASSUMED TO BE IN DEFAULT BASE
  6635. * UNLESS POST RADIX GIVEN. IF NULL, DEFAULT IS ASSUMED.
  6636.  
  6637.  
  6638. USECMN SETJSL,PBS,2
  6639. SETTL SPACE 4
  6640. *** SETTL,NNNNN.
  6641. *
  6642. * ALLOWS THE USER TO INCREASE HIS TOTAL ALLOWABLE CPU TIME.
  6643. *
  6644. * PARAMETERS-
  6645. * NNNNN = DESIRED TIME LIMIT. THIS VALUE WILL BE ROUNDED
  6646. * UP TO THE NEAREST 10. ASSUMED TO BE IN DEFAULT BASE UNLESS
  6647. * POST RADIX GIVEN.
  6648. * IF NULL, DEFAULT IS ASUMED.
  6649.  
  6650.  
  6651. USECMN SETTL,PBS,2
  6652. SORT SPACE 4
  6653. *** SORT,LFN,NC=N.
  6654. *
  6655. * ALLOWS THE USER TO FORCE SORTING OF HIS PRIMARY FILE.
  6656. * IF *LFN* (OPTIONAL IS GIVEN, A SORT IS PERFORMED IMMEDIATLEY
  6657. * ON THE FILE NAMED. A FILE OF ANY LENGTH MAY BE SORTED
  6658. * BY THIS METHOD.
  6659. * *NC=N* IS AN OPTIONAL PARMETER WHICH SPECIFIES THE NUMBER
  6660. * OF CHARACTERS TO SORT ON. THIS IS IN THE RANGE OF 1 TO 10.
  6661.  
  6662.  
  6663. USECMN SORT,SOF,0
  6664. STATUS SPACE 4
  6665. *** STATUS,N.
  6666. * ALLOWS THE USER TO FIND OUT HIS CURRENT STATUS.
  6667. *
  6668. * PARAMETERS-
  6669. * N = F, RETURN FILE DESCRIPTION INFORMATION FOR ALL FILES.
  6670. * N = T, RETURN CUMALATIVE CPU TIME USED.
  6671. * N = (J=JOBNAME), DETERMINE STATUS OF JOB *JOBNAME*.
  6672. *
  6673. * RETURNS-
  6674. * *TTY NNN*, WHERE NNN = TERMINAL NUMBER.
  6675. * *SYSTEM - XXXXXXX*, WHERE XXXXXXX = NAME OF SYSTEM.
  6676. * *FILE NAME FILENAM*, WHERE FILENAM = PRIMARY FILE NAME.
  6677. * *STATUS - ZZZZZZ*, WHERE ZZZZZZ = USER,S STATUS .
  6678.  
  6679.  
  6680. USECMN STATUS,STA,0,SCOM,,(ALL)
  6681. STOP SPACE 4
  6682. *** STOP.
  6683. *
  6684. * ALLOWS THE USER TO STOP EXECUTION OF HIS JOB.
  6685. * IF THE USER WANTS TO STOP HIS JOB WHILE IT IS WAITING
  6686. * FOR INPUT HE MAY TYPE *STOP* AFTER THE QUESTION MARK HAS
  6687. * BEEN OUTPUT.
  6688.  
  6689.  
  6690. USECMN STOP,STO,,SCOM+INVN,,(ALL)
  6691. SUBMIT SPACE 4
  6692. *** SUBMIT,LFN,Q.C
  6693. *
  6694. * LFN = PRIMARY FILE NAME IF NO PARAMETERS GIVEN.
  6695. * SEE SUBMIT DOCUMENTATION.
  6696.  
  6697.  
  6698. USECMN SUBMIT,SUB,0
  6699. SUM SPACE 4,10
  6700. *** SUMMARY.
  6701. *
  6702. * RETURNS SUMMARY OF SYSTEM RESOURCES USED.
  6703.  
  6704.  
  6705. USECMN SUMMARY,PBS,0
  6706. TAPE SPACE 4
  6707. *** TAPE.
  6708. *
  6709. * ALLOWS THE USER TO INPUT FROM PAPER TAPE. THE READER
  6710. * WILL BE STARTED AT THE COMPLETION OF THIS COMMAND IF IT
  6711. * IS READY.
  6712.  
  6713.  
  6714. USECMN TAPE,TAP,,INVN
  6715. TERM SPACE 4
  6716. *** TERM,T.
  6717. *
  6718. * SET TERMINAL TYPE TO T.
  6719. *
  6720. * T TERMINAL
  6721. *
  6722. * TTY MODEL 33, 35, 37 TELETYPES.
  6723. * 713 CONTROL DATA 713.
  6724. * COR CORRESPONDENCE CODE.
  6725. * CORAPL CORRESPONDENCE CODE WITH *APL* TYPESPHERE.
  6726. * MEMAPL MEMOREX 1240 WITH *APL* PRINT BELT.
  6727.  
  6728.  
  6729. USECMN TERM,TER,2,INVN
  6730. TEXT SPACE 4
  6731. *** TEXT.
  6732. *
  6733. * ALLOWS USER TO INPUT SOURCE WITH ALPHABETIC LEADING
  6734. * CHARACTERS. USER MUST ENTER *CONTROL C* (ETX) TO
  6735. * TERMINATE THIS MODE.
  6736.  
  6737.  
  6738. USECMN TEXT,TXT
  6739. TIMEOUT SPACE 4
  6740. *** TIMEOUT.
  6741. *
  6742. * CLEARS THE TIME OUT LOGOFF BIT IN
  6743. * THE *VDCT* WORD TO ALLOW THE TERMINAL
  6744. * TO BE TIMED OUT.
  6745. *
  6746.  
  6747.  
  6748. USECMN TIMEOUT,TIM,,,,(ALL)
  6749.  
  6750. TRMDEF SPACE 4,10
  6751. *** TRMDEF.
  6752. *
  6753. * REDEFINE THE NETWORK TERMINAL CONFIGURATION.
  6754. *
  6755.  
  6756. USECMN TRMDEF,PBS,0,,,
  6757.  
  6758. USER SPACE 4
  6759. *** WHATJSN,USERNUM.
  6760. *
  6761. * THIS IS A PRIVILEGED COMMAND THAT ALLOWS THE USER
  6762. * TO DETERMINE WHAT SPIGOT(S) A GIVEN *USERNUM* IS
  6763. * CURRENTLY CONNECTED TO.
  6764.  
  6765.  
  6766. USECMN WHATJSN,UNU,2,,,(ACCS)
  6767. WRITE SPACE 4,15
  6768. *** WRITE,LFN,LINES,/STRING/.
  6769. *
  6770. * THIS COMMAND WRITES LINES SELECTED BY LINE NUMBER OR
  6771. * CHARACTER CONTENT FROM THE USER-S PRIMARY FILE TO A
  6772. * SPECIFIED SECONDARY FILE.
  6773. *
  6774. * LFN = NAME OF FILE ON WHICH TO WRITE LINES.
  6775. * LINES = ANY NUMBER OF LINE NUMBERS AND LINE RANGES, IN
  6776. * ASCENDING ORDER.
  6777. * /STRING/ = DELIMITED SEQUENCE OF CHARACTERS.
  6778. *
  6779. * EITHER LINES OR /STRING/ MAY BE OMITTED.
  6780.  
  6781.  
  6782. USECMN WRITE,IED,0
  6783. WRITEN SPACE 4,10
  6784. *** WRITEN,LFN,LINES,/STRING/.
  6785. *
  6786. * THIS COMMAND IS THE SAME AS *WRITE* EXCEPT LINE NUMBERS ARE
  6787. * NOT WRITTEN TO FILE LFN.
  6788.  
  6789.  
  6790. USECMN WRITEN,IED,0
  6791. X, SPACE 4
  6792. *** X,NNNNNNNNNN.
  6793. *
  6794. * THIS COMMAND ALLOWS A USER TO FORCE A COMMAND
  6795. * TO BE PROCESSED AS A COMMAND CALL EVEN
  6796. * THOUGH IT WOULD NORMALLY BE INTERPRETED BY *IAFEX*.
  6797.  
  6798.  
  6799. USECMN X,XEQ,0,,,(ALL)
  6800. XEDIT SPACE 4,10
  6801. *** XEDIT.
  6802. *
  6803. * THIS COMMAND INITIATES THE TEXT EDITING PROGRAM,
  6804. * *XEDIT*.
  6805.  
  6806. USECMN XEDIT,PSS,0
  6807. ILLEGAL SPACE 4
  6808. ** ILLEGAL.
  6809.  
  6810.  
  6811. TCOMI VFD 54/0LINCORRECT,6/0
  6812. DATA 0 COUNT OF INCORRECT COMMANDS
  6813. TCOML EQU *-TCOM
  6814. TCOMT DATA 37777777777777777777B TABLE TERMINATOR
  6815. TCOM SPACE 4
  6816. ** GENERATE INDEX WORDS TO COMMAND TABLE.
  6817. * THE FOLLOWING ENABLES THE COMMAND SEARCH ROUTINE TO START
  6818. * THE SEARCH OF THE COMMAND TABLE AT THE FIRST COMMAND
  6819. * WHICH BEGINS WITH THE SAME FIRST CHARACTER.
  6820. * THE TABLE FORMAT IS 12 BITS PER CHARACTER WITH 4 BYTES
  6821. * USED PER WORD. THE CHARACTER VALUE DIVIDED BY 4 GIVES THE
  6822. * INDEX TO THE CORRECT WORD AND THE LOWER TWO BITS OF THE
  6823. * CHARACTER VALUE INDICATES THE BYTE. EACH BYTE CONTAINS AN
  6824. * ADDRESS RELATIVE TO *TCOM* WHICH IS THE FIRST WORD ADDRESS
  6825. * OF THE COMMAND TABLE FOR COMMANDS BEGINNING WITH THAT
  6826. * CHARACTER.
  6827.  
  6828.  
  6829. U1 SET 0 CHARACTER BEING PROCESSED
  6830. U2 SET 0 CURRENT WORD COUNT THROUGH THIS INDEX WORD
  6831. U3 SET 0 POSITION IN WORD
  6832.  
  6833. TCOMA BSS 0
  6834. DUP 28
  6835. U1 SET U1+1
  6836. U4 MICRO U1,1,* ABCDEFGHIJKLMNOPQRSTUVWXYZ *
  6837. IF DEF,US"U4"
  6838. VFD 12/US"U4"-TCOM
  6839. ELSE 1
  6840. VFD 12/TCOMT-TCOM
  6841. IFEQ U3,3
  6842. VFD 12/0
  6843. U3 SET 0
  6844. ELSE 1
  6845. U3 SET U3+1
  6846. ENDD
  6847. PCM TITLE PCM - USER COMMAND PROCESSING ROUTINES.
  6848. SPACE 4
  6849. ** ROUTINES FOR PROCESSING EACH TTY USER,S COMMAND.
  6850. *
  6851. * THE ENTRY CONDITIONS FOR ALL OF THEM ARE EXACTLY WHAT IS
  6852. * SET UP BY SSP.
  6853. *
  6854. * SEE CCM AND BUFFER DOCUMENTATION FOR COMMAND PARAMETERS.
  6855. *
  6856. * IT IS ASSUMED THAT *VROT* IS COMPLETE AND THAT THE NEXT
  6857. * MESSAGE POINTER IN *VDCT* IS CLEAR FOR THE GIVEN TERMINAL
  6858. * PRIOR TO ANY ENTRY TO THESE ROUTINES.
  6859. ACC SPACE 4
  6860. ** ACC - SET *ACCESS* SUBSYSTEM.
  6861.  
  6862.  
  6863. ACC BSS 0
  6864. SA1 A0+VDCT CHECK USER ACCESS LEVEL
  6865. LX1 59-13
  6866. PL X1,ACC1 IF USER NOT VALIDATED
  6867. SA1 A0+VSTT SET SYSTEM
  6868. MX6 57
  6869. LX6 12
  6870. BX1 X6*X1
  6871. SX6 ACCS*10000B
  6872. BX6 X1+X6
  6873. SA6 A1
  6874. EQ RDY ISSUE *READY*
  6875.  
  6876. ACC1 SMA X6,( INCORRECT COMMAND."NL")
  6877. EQ PCS5 ISSUE MESSAGE
  6878. AUT SPACE 4
  6879. ** AUT - INITIALIZES FOR PROCESSING OF AUTO LINE NUMBERS.
  6880.  
  6881.  
  6882. AUT BSS 0
  6883. SA1 A0+VFNT
  6884. MX5 42
  6885. SB7 B1 SET DECIMAL BASE
  6886. BX5 X1*X5
  6887. LX1 59-12
  6888. ZR X5,IPF IF NO PRIMARY FILE
  6889. SMA X6,( WRITE ON READ-ONLY FILE."NL")
  6890. NG X1,PCS5 IF WRITE LOCKOUT BIT SET
  6891. SA5 CCMA CHECK PARAMETER COUNT
  6892. SX7 3R100 SET DEFAULT LINE NUMBER
  6893. SB6 3*6-1 SET BIT COUNT
  6894. LX7 42
  6895. SX5 X5-1
  6896. ZR X5,AUT0 IF DEFAULT LINE NUMBER
  6897. SA5 PBUF+2 CHECK NUMBER FOR NUMERICS
  6898. ZR X5,AUT0 IF DEFAULT LINE NUMBER
  6899. BX7 X5
  6900. SB6 B0
  6901. AUT0 SA7 AUTB SAVE DISPLAY CODED LINE NUMBER
  6902. BX5 X7
  6903. RJ DXB
  6904. NZ X4,IPL IF ERROR IN CONVERSION
  6905. SX7 100000
  6906. IX7 X6-X7
  6907. PL X7,IPL IF LARGER THAN FIVE DIGITS
  6908. SA4 =8L00000 "EA" SET *EA* CONTROL BYTE
  6909. SA1 AUTB RECOVER DISPLAY CODED LINE NUMBER
  6910. NZ B6,AUT1 IF BIT COUNT DETERMINED
  6911. SA2 PBUF+3 GET CHARACTER COUNT
  6912. UX2 B6,X2
  6913. SX2 B6
  6914. SB6 B6-6
  6915. PL B6,IPL IF MORE THAN 5 DIGITS
  6916. SX3 6 BITS PER CHARACTER
  6917. IX2 X3*X2 CALCULATE BITS
  6918. SB6 X2-1
  6919. AUT1 MX7 1 GENERATE MASK
  6920. AX7 X7,B6
  6921. SB6 B6+31
  6922. LX7 X7,B6
  6923. LX1 X1,B6 POSITION LINE NUMBER
  6924. BX4 -X7*X4 MASK CONTROL BYTE
  6925. BX7 X4+X1 ADD IN LINE NUMBER
  6926. BX4 X7
  6927. SA7 AUTB SAVE CONTROL BYTE
  6928. RJ SSP
  6929. SA6 B4+B1 SAVE LINE NUMBER VALUE
  6930. MX6 36 MASK OUT LINE NUMBER
  6931. BX6 X4*X6
  6932. SA6 A6+B1 SAVE DISPLAY CODED LINE
  6933. SA5 PBUF+4
  6934. SB7 B1 SET DECIMAL BASE
  6935. SA1 CCMA CHECK PARAMETER COUNT
  6936. SX1 X1-3
  6937. NG X1,AUT2 IF DEFAULT
  6938. RJ DXB
  6939. NZ X4,IPL IF INCORRECT PARAMETER
  6940. SX7 10000
  6941. IX7 X6-X7
  6942. PL X7,IPL IF INCORRECT PARAMETER
  6943. RJ SSP
  6944. NZ X6,AUT3 IF NOT DEFAULT
  6945. AUT2 SX6 10
  6946. AUT3 SA6 B4 SAVE INCREMENT IN POT
  6947. SA1 A0+VDCT STORE AUTO POT POINTER
  6948. SX6 B3
  6949. LX6 24
  6950. BX1 X6+X1
  6951. SX6 102B SET READ DATA AND AUTO MODE
  6952. LX6 48
  6953. BX6 X6+X1
  6954. SA6 A1
  6955. SB3 B0
  6956. SB4 B1+ SET WORD COUNT OF MESSAGE
  6957. IFMUX AUT4
  6958. SX6 AUTB SEND NEXT LINE TO TERMINAL
  6959. RJ MVA
  6960. EQ PCSX EXIT
  6961.  
  6962. AUT4 RJ GOP GET POT FOR CONTROL BYTE
  6963. SA1 AUTB GET CONTROL BYTE
  6964. BX6 X1
  6965. SA6 B4 SAVE CONTROL BYTE IN POT
  6966. SA1 A0+VDCT
  6967. MX5 -3
  6968. LX5 36-0
  6969. BX6 X5*X1 CLEAR FIRST WORD
  6970. SX2 B3
  6971. BX6 X2+X6 ADD IN POT POINTER
  6972. SX1 B1 SET AUTO MODE BIT FOR MUX TERMINAL
  6973. LX1 45-0
  6974. BX6 X1+X6
  6975. SA6 A1+
  6976. EQ PCSX EXIT
  6977.  
  6978. * ENTER HERE FROM *CLI* TO PROCESS AUTO MODE LINE
  6979. * NUMBERS OR *0003* BYTE AUTO MODE.
  6980. * (B3) = COMMAND POT POINTER.
  6981. * (B4) = COMMAND POT ADDRESS.
  6982. * (X7) = FIRST WORD IN COMMAND POT.
  6983. * SEE *VDCT* FOR EXPLANATION OF WHAT IS IN THE
  6984. * AUTO POT.
  6985.  
  6986. AUT5 IFNET AUT5.1
  6987. SA1 A0+VDCT
  6988. LX1 59-45
  6989. PL X1,PCM IF *0003* BYTE
  6990. EQ AUT5.2 CONTINUE MUX PROCESSING
  6991.  
  6992. AUT5.1 SA1 A0+VDCT CHECK FOR CANCEL AUTO LINE
  6993. LX1 59-53
  6994. SX6 B0 CLEAR FLAG
  6995. PL X1,AUT8 IF CANCEL LINE NOT SET
  6996. MX2 1
  6997. BX6 -X2*X1 CLEAR CANCEL AUTO LINE BIT
  6998. LX6 53-59
  6999. SA6 A1+
  7000. AUT5.2 SA1 B4+X7 GET BEGINNING OF LINE
  7001. SB5 -7
  7002. MX2 30
  7003. BX2 X2*X1
  7004. MX6 -6
  7005. AUT6 SB5 B5+6 INCREMENT MASK SHIFT COUNT
  7006. LX2 6
  7007. BX3 -X6*X2
  7008. SX4 X3-1R0
  7009. SX3 X3-1R+
  7010. NG X4,AUT7 IF ALPHABETIC
  7011. NG X3,AUT6 IF NUMERIC
  7012. AUT7 NG B5,AUT25 IF COMMAND LINE
  7013. MX5 1 BUILD MASK
  7014. AX4 X5,B5
  7015. BX5 X4*X1
  7016. SB7 B1 SET DECIMAL CONVERSION
  7017. RJ DXB
  7018. RJ SSP
  7019. AUT8 SA1 A0+VDCT
  7020. MX2 -12
  7021. AX1 24
  7022. BX2 -X2*X1
  7023. LX2 3
  7024. TB5 X2,VBMP CALCULATE POT ADDRESS
  7025. SA2 B5 GET INCREMENT
  7026. SA1 B5+B1 GET LINE NUMBER VALUE
  7027. PL X2,AUT10 IF NOT *0003* BYTE AUTO MODE
  7028. UX3 X1,B6 GET COUNT AND ADDRESS
  7029. SA2 X3 GET WORD CONTAINING *0003* BYTE
  7030. SB6 B6+B1
  7031. MX5 6
  7032. AUT9 LX5 6
  7033. SB6 B6-B1
  7034. NZ B6,AUT9 IF THIS NOT CONTROL BYTE
  7035. BX7 -X5*X2 CLEAR CONTROL BYTE
  7036. SA7 A2 REWRITE WORD
  7037. SB5 A2+ SET CONTROL BYTE WORD POINTER
  7038. EQ AUT12 CONTINUE
  7039.  
  7040. AUT10 ZR X6,AUT11 IF CANCEL LINE NOT SET
  7041. BX1 X6 REPLACE WITH NEW LINE NUMBER
  7042. SX7 B0
  7043. SA7 B5+2 CLEAR DISPLAY CODED LINE NUMBER
  7044. AUT11 IX6 X1+X2
  7045. SA6 A1+ REPLACE WITH NEXT LINE NUMBER
  7046. BX1 X6
  7047. RJ CDD CONVERT NUMBER
  7048. SX1 B2-31
  7049. PL X1,AUT25 IF LINE NUMBER OVERFLOW
  7050. LX6 30 POSITION NUMBER
  7051. SA1 =2222222222BS30
  7052. MX5 1
  7053. SB3 B2-30+1 SET MASK SHIFT COUNT
  7054. LX5 X5,B3
  7055. BX1 X5*X1
  7056. MX4 36
  7057. IX6 X6-X1
  7058. SX7 00150000B SET *EA* CONTROL BYTE
  7059. BX6 X4*X6
  7060. BX7 X6+X7
  7061. SA7 AUTB SAVE CONTROL BYTE
  7062. SB5 B5+2 SET POINTER TO LINE NUMBER
  7063.  
  7064. * THE DISPLAY CODED CHARACTERS IN B5 POT ARE
  7065. * APPENDED TO THE INPUT LINE.
  7066.  
  7067. AUT12 RJ SSP RESET ENTRY PARAMETERS
  7068. SB7 B4+VCPC CALCULATE END OF POT
  7069. SB4 B4+X7 CALCULATE FIRST WORD OF POT
  7070. SX7 B2
  7071. SA7 AUTC
  7072. SX7 B1 INITIALIZE EOL FLAG
  7073. MX4 6
  7074. MX5 12
  7075. SA2 B4 GET FIRST WORD OF POT
  7076. SA1 B5+ SET UP POINTER TO CONCATENATE CHARACTERS
  7077. IFNET AUT13
  7078. SX1 B0
  7079. AUT13 SA6 A1 REPLACE NEW DISPLAY CODED LINE
  7080. SB6 B0+
  7081. BX3 X5*X1
  7082. ZR X3,AUT23 IF NO AUTO CHARACTERS
  7083. SB2 10D
  7084. BX6 X1
  7085. AUT14 BX1 X5*X6
  7086. ZR X1,AUT15 IF END-OF-LINE FOUND
  7087. LX6 6
  7088. SB2 B2-B1 ROOM LEFT IN WORD
  7089. NZ B2,AUT14 IF MORE CHARACTERS IN WORD
  7090. AUT15 ZR B2,AUT22 IF WRITE WORD FULL
  7091. NZ B6,AUT18 IF MORE CHARACTERS IN READ WORD
  7092. SA2 B4 GET NEXT WORD OF POT
  7093. SB4 B4+B1 INCREMENT POINTER
  7094. LT B4,B7,AUT17 IF NOT END OF POT
  7095. BX5 X6 SAVE WRITE WORD
  7096. RJ GPL GET POT LINK
  7097. NZ B3,AUT16 IF POT LINK
  7098. SA1 AUTC RESTORE TERMINAL NUMBER
  7099. SB2 X1+
  7100. SMA X6,( INPUT LOST, REENTER LAST LINE."NL")
  7101. EQ PCS5 ISSUE MESSAGE TO TERMINAL
  7102.  
  7103. AUT16 SB7 B4+VCPC
  7104. MX4 6
  7105. BX6 X5 RECOVER WRITE WORD
  7106. AUT17 SB6 10D RESET CHARACTERS IN READ WORD
  7107. AUT18 BX3 X4*X2 GET NEXT CHARACTER
  7108. BX6 -X4*X6 CLEAR BYTE IN WRITE WORD
  7109. NG X7,AUT21 IF EOL ALREADY FOUND
  7110. NZ X3,AUT19 IF NOT 00 CHARACTER
  7111. SX7 X7-1
  7112. EQ AUT20 ADD NEXT CHARACTER
  7113.  
  7114. AUT19 SX7 B1
  7115. AUT20 BX6 X6+X3 ADD CHARACTER TO WRITE WORD
  7116. AUT21 LX6 6
  7117. LX2 6
  7118. SB2 B2-B1 CHARACTERS IN WRITE WORD
  7119. SB6 B6-B1 CHARACTERS LEFT IN READ WORD
  7120. EQ AUT15 CONTINUE SEARCH
  7121.  
  7122. AUT22 SA6 A2
  7123. AUT23 BX6 X6-X6 CLEAR WRITE WORD
  7124. SB2 10D RESET CHARACTER COUNT
  7125. PL X7,AUT15 IF NO EOL FOUND IN THIS WORD
  7126. SA1 AUTC RECOVER TERMINAL NUMBER
  7127. SB2 X1
  7128. IFNET AUT26 ASSIGN OUTPUT TO TERMINAL
  7129. SA2 AUTB PUT CONTROL BYTE IN POT
  7130. BX6 X2
  7131. SA6 B4
  7132. SA1 A0+VDCT ASSIGN OUTPUT TO DRIVER
  7133. SB7 B7-VCPC SET WORD TO BEGIN OUTPUTTING AT
  7134. SX6 B4-B7
  7135. LX6 36
  7136. SX4 B3
  7137. BX6 X1+X6
  7138. BX6 X6+X4
  7139. SA6 A1
  7140. AUT24 RJ SSP RESET ENTRY POT POINTER
  7141. SX6 B3
  7142. BX1 X4-X6
  7143. ZR X1,PCSX IF NO POT TO RELEASE, EXIT
  7144. SX5 2000B+/TLX/RIN SET UP RELEASE INPUT DRIVER REQUEST
  7145. LX6 12
  7146. LX5 48
  7147. BX7 X5+X6
  7148. LX4 24
  7149. SX2 B2
  7150. BX7 X7+X4
  7151. BX7 X7+X2
  7152. SA7 SSPA
  7153. RJ SSP
  7154. EQ RIN
  7155.  
  7156. AUT25 RJ SSP
  7157. RJ CAM CLEAR AUTO MODE
  7158. RJ DAP
  7159. RJ DLP
  7160. RJ SSP RESET ENTRY PARAMETERS
  7161. EQ PCM PROCESS AS COMMAND
  7162.  
  7163. * ASSIGN AUTO MODE OUTPUT TO TERMINAL.
  7164.  
  7165. AUT26 SX7 B3+ SAVE POT POINTER
  7166. SA7 AUTA
  7167. SA3 A0+VDCT
  7168. LX3 0-24
  7169. MX7 -12
  7170. BX3 -X7*X3
  7171. LX3 3
  7172. TB5 X3,VBMP
  7173. SA3 B5+
  7174. PL X3,AUT27 IF NOT *0003* BYTE AUTO MODE
  7175. RJ CAM CLEAR AUTO MODE
  7176. RJ SSP RESET ENTRY PARAMETERS
  7177. SB5 B2
  7178. RJ GRT
  7179. AX4 48
  7180. SX5 X4-INP$
  7181. ZR X5,CLI4 IF INPUT TO A RUNNING PROGRAM
  7182. EQ PCM PROCESS AS COMMAND
  7183.  
  7184. AUT27 TX1 B4,-VBMP GET POT POINTER AND WORD COUNT
  7185. BX2 X1
  7186. SA3 A0+VDPT
  7187. AX2 3 POT POINTER
  7188. MX7 -24
  7189. LX2 3
  7190. BX1 X1-X2 WORD COUNT
  7191. BX7 -X7*X3 CLEAR OLD POT POINTERS
  7192. LX2 36-3
  7193. LX1 30-0
  7194. BX7 X1+X7 ADD NEW CURRENT POT WORD COUNT
  7195. BX7 X2+X7 ADD NEW CURRENT POT
  7196. LX2 48-36
  7197. LX1 33-30
  7198. BX7 X1+X7 ADD NEW FIRST POT
  7199. BX7 X2+X7 ADD NEW FIRST POT FIRST WORD INDEX
  7200. SA7 A3
  7201. SA2 AUTB GET CONTROL BYTE
  7202. BX6 X2
  7203. SA6 B4 PUT CONTOL BYTE IN POT
  7204. SA1 A0+VDCT ASSIGN CONTOL BYTE TO DRIVER
  7205. SB7 B7-VCPC
  7206. SX6 B4-B7 CALCULATE WORD COUNT
  7207. LX6 36
  7208. SX4 B3 GET POT POINTER
  7209. BX6 X1+X6 ADD IN WORD COUNT
  7210. BX6 X6+X4 ADD IN POT POINTER
  7211. SA6 A1
  7212. SX6 AUTB SEND NEXT LINE NUMBER TO THE TERMINAL
  7213. SB3 B0
  7214. SB4 B1
  7215. RJ MVA
  7216. SA4 AUTA RESTORE POT POINTER
  7217. EQ AUT24 RELEASE INPUT POT
  7218.  
  7219. AUTA CON 0 SAVE MESSAGE POT POINTER
  7220. AUTB CON 0 NEXT AUTO LINE NUMBER
  7221. AUTC CON 0 TERMINAL NUMBER
  7222. BAT SPACE 4
  7223. ** BAT - REQUESTS A COMMAND FROM THE USER AND THEN ISSUES
  7224. * IT TO THE SYSTEM.
  7225.  
  7226.  
  7227. BAT BSS 0
  7228. SA1 PBUF+2
  7229. SA3 CCMA CHECK PARAMETER COUNT
  7230. SX3 X3-2
  7231. SA2 =4R$RFL
  7232. BX6 X2
  7233. SA2 A0+VSTT SET SUBSYSTEM
  7234. ZR X3,BAT1 IF FIELD LENGTH GIVEN
  7235. SA3 =1L0
  7236. BX7 X3
  7237. SA7 A1
  7238. SX7 1R.
  7239. SB5 B1+ SET CHARACTER COUNT
  7240. PX7 B5,X7
  7241. SA7 A7+B1
  7242. BAT1 LX6 36
  7243. SX4 70000B
  7244. BX3 -X4*X2
  7245. SA6 PBUF
  7246. SB5 4 SET CHARACTER COUNT
  7247. SX7 1R,
  7248. PX7 B5,X7
  7249. SA7 A1-B1
  7250. SX1 BATS*10000B SET BATCH SUBSYSETEM
  7251. BX7 X3+X1
  7252. SA7 A2
  7253. EQ PBS BEGIN SYSTEM JOB
  7254.  
  7255. ** ENTER WHEN COMMAND NOT IN IAFEX SUBSET.
  7256.  
  7257. BAT2 SX1 PBUF
  7258. RJ PCB PACK COMMAND BUFFER
  7259. SA1 PBUF
  7260. SX6 B1 SET *PPI* TO SORT THE FILE
  7261. BX7 X1 SET *EPN*
  7262. EQ BJB BEGIN JOB
  7263. BIN SPACE 4
  7264. ** BIN - SETS BINARY INPUT.
  7265.  
  7266.  
  7267. BIN BSS 0
  7268. SA1 A0+VFNT CHECK PRIMARY FILE
  7269. SA5 PBUF+2 CHECK NUMBER FOR NUMERICS
  7270. MX7 42
  7271. BX7 X1*X7
  7272. SB7 B1+ SET DECIMAL BASE
  7273. ZR X7,IPF IF NO PRIMARY FILE
  7274. RJ DXB
  7275. SX7 X6 CHECK VALUE
  7276. AX6 12
  7277. NZ X4,IPL IF NON-NUMERIC
  7278.  
  7279. * PROCESS CHARACTER COUNT.
  7280.  
  7281. SA1 =000600004000BS24
  7282. NZ X6,IPL IF TOO LARGE
  7283. LX7 36
  7284. BX6 X1+X7
  7285. ZR X7,IPL IF ZERO
  7286. SA5 PBUF+4
  7287. SA1 CCMA CHECK PARAMETER COUNT
  7288. SX1 X1-3
  7289. SA6 BINB
  7290. NZ X1,BIN1 IF NO TERMINATOR CHARACTER
  7291.  
  7292. * PROCESS TERMINATOR CHARACTER.
  7293.  
  7294. SB7 B0 SET OCTAL BASE
  7295. RJ DXB
  7296. NZ X4,IPL IF NON-NUMERIC
  7297. SX7 4000B+X6
  7298. AX6 8
  7299. NZ X6,IPL IF MORE THAN 8 BITS
  7300. LX7 24 MERGE TERMINATOR CHARACTER
  7301. SA1 BINB
  7302. BX6 X1-X7
  7303. SA6 A1
  7304.  
  7305. BIN1 RJ SSP
  7306. SA2 A0+VDCT CHECK TAPE MODE
  7307. LX2 59-48
  7308. SX6 BINA
  7309. SB4 4
  7310. PL X2,PCS6 NOT TAPE MODE
  7311. SX6 BINB
  7312. EQ PCS5
  7313.  
  7314.  
  7315. BINA DATA 20HENTER BINARY DATA' '
  7316. DATA 0
  7317. BINB CON 0006BS48
  7318. BRF SPACE 4,10
  7319. ** BRF - SET *BRIEF* MODE FLAG.
  7320. *
  7321. * EXIT (VDCT) BIT 55 = BRIEF MODE SET.
  7322.  
  7323.  
  7324. BRF BSS 0 ENTRY
  7325. SA1 A0+VDCT READ VDCT
  7326. SX6 B1 SET BRIEF MODE
  7327. LX6 55-0
  7328. BX7 X6+X1
  7329. SA7 A1 REWRITE VDCT
  7330. EQ RDY ISSUE *READY*
  7331. CST SPACE 4,10
  7332. ** DIA - ENABLES PRIVILEGED USER TO SEND MESSAGE TO
  7333. * ANOTHER USER CURRENTLY ON THE SYSTEM.
  7334.  
  7335.  
  7336. DIA BSS 0
  7337. SA1 CCMA CHECK PARAMETER COUNT
  7338. SX1 X1-2
  7339. NG X1,IPL IF *JSN* NOT SPECIFIED
  7340. SA1 PBUF+4
  7341. ZR X1,IPL IF NULL MESSAGE
  7342. SB7 PBUF+2 GET TERMINAL ADDRESS
  7343. RJ GTA
  7344. ZR X4,DIA3 IF NO USER NAME
  7345. TX1 A4,-VTTP GET TERMINAL NUMBER
  7346. SX2 VTTL
  7347. IX1 X1/X2
  7348. SX0 A4 SAVE RECEIVER-S TERMINAL TABLE ADDRESS
  7349. SB5 X1
  7350. RJ GRT READ QUEUE ENTRY
  7351. AX4 48
  7352. SX2 X4-INP$ CHECK QUEUE ENTRY
  7353. ZR X2,DIA4 IF EXPLICIT INPUT REQUEST
  7354. SA1 X0+VUIT CHECK TERMINAL STATUS
  7355. ZR X1,DIA3 IF NOT LOGGED IN
  7356. SA1 X0+VSTT
  7357. MX3 -12
  7358. LX1 59-48
  7359. SA2 X0+VDCT
  7360. NG X1,DIA3 IF LOGOUT IN PROGRESS
  7361. LX1 59-58-59+48
  7362. NG X1,DIA4 IF USER BREAK IN PROGRESS
  7363. LX1 -59+58 RESTORE VSTT
  7364. BX2 -X3*X2 DRIVER ASSIGNMENT
  7365. BX1 -X3*X1 QUEUED MESSAGE POINTER
  7366. DX1 X1*X2 CHECK PRODUCT
  7367. SA2 X0+VROT
  7368. NZ X1,DIA4 IF BOTH QUEUED OUTPUT AND REQUEST
  7369. SA1 =C*FROM* REPLACE COMMAND
  7370. LX2 59-0
  7371. BX6 X1
  7372. PL X2,DIA4 IF TERMINAL BUSY
  7373. SA6 PBUF
  7374. SX6 1R SET SEPARATOR AND LENGTH
  7375. SB7 4
  7376. PX6 X6,B7
  7377. SA6 A6+B1
  7378. SA1 A0+VFST GET SENDER-S JSN
  7379. MX6 24
  7380. BX6 X6*X1
  7381. SA6 A6+B1
  7382. SX6 1R: SET SEPARATOR
  7383. PX6 X6,B7
  7384. SA6 A6+B1
  7385. SX1 PBUF
  7386. SB2 B5
  7387. SA0 X0
  7388. RJ PCB
  7389. SB5 B4+VCPC-1 LAST WORD OF POT
  7390. NG B6,DIA0 IF WORD ALREADY FULL
  7391. NZ B6,DIA1 IF NOT JUST ONE ZERO CHARACTER
  7392. SX6 1R BLANK FILL LAST WORD OF MESSAGE
  7393. SA1 B7
  7394. BX6 X6+X1
  7395. SA6 A1+
  7396. DIA0 EQ B5,B7,DIA2 IF POT FULL
  7397. SB7 B7+1 ADD *EOL*
  7398. SX6 B0+
  7399. SA6 B7+
  7400. DIA1 EQ B5,B7,DIA2 IF POT FULL AFTER *EOL*
  7401. SMA A1,("NL") SET TERMINATION
  7402. BX7 X1
  7403. SB7 B7+B1
  7404. SA7 B7+
  7405. DIA2 SB3 B0
  7406. SX6 B4
  7407. SB4 B7-B4
  7408. SB4 B4+B1
  7409. RJ MVA
  7410. RJ SSP
  7411. EQ RDY SEND OUT *READY.*
  7412.  
  7413. DIA3 SMA X6,( TERMINAL NOT ACTIVE."NL")
  7414. EQ PCS5 ISSUE MESSAGE
  7415.  
  7416. DIA4 SMA X6,( TERMINAL BUSY."NL")
  7417. EQ PCS5 ISSUE MESSAGE
  7418. EDI SPACE 4
  7419. ** EDI - INITIATE TEXT EDITOR.
  7420.  
  7421.  
  7422. EDI BSS 0
  7423. SA4 CCMA COUNT PARAMETERS
  7424. SA2 PBUF+3 GET THIRD PARAMETER
  7425. SX4 X4-4
  7426. PL X4,PSS IF MORE THAN THREE PARAMETERS
  7427. SX2 X2-1R=
  7428. ZR X2,PSS IF PARAMETERS EQUATED
  7429.  
  7430. * CHECK NON-EQUATED FILE NAME.
  7431.  
  7432. SX4 X4+3
  7433. ZR X4,EDI1 IF NO FILE NAME
  7434. SA3 A2-B1 GET FILE NAME
  7435. ZR X3,EDI1 IF NULL FILE NAME
  7436. SB6 A2-1 GET GIVEN FILE NAME
  7437. RJ GFN
  7438. BX6 X2
  7439. EQ EDI2
  7440.  
  7441. EDI1 SA1 A0+VFNT GET PRIMARY FILE NAME
  7442. MX2 42
  7443. BX6 X2*X1
  7444. ZR X6,IPF IF NO PRIMARY FILE
  7445. LX1 59-12 GET WRITE LOCKOUT BIT
  7446. PL X1,EDI1.1 IF LOCKOUT BIT NOT SET
  7447. RJ SSP RESET REGISTERS
  7448. SMA X6,( WRITE ON READ-ONLY PRIMARY FILE."NL")
  7449. EQ PCS5 ISSUE MESSAGE
  7450.  
  7451. EDI1.1 ZR X3,EDI2 IF NULL PARAMETER
  7452. SX7 B1+B1 RESET PARAMETER COUNT
  7453. SA7 CCMA
  7454. EDI2 RJ CFC COUNT FILE NAME CHARACTERS
  7455. SA1 =4LEDIT SET UP COMMAND
  7456. BX7 X1 ENTER PROGRAM NAME
  7457. SA7 PBUF
  7458. SX7 1R,
  7459. SB7 4 INSERT CHARACTER COUNT
  7460. PX7 B7,X7
  7461. SA7 A7+B1
  7462. SA6 A7+B1
  7463. SA1 PBUF+5 GET MODE CHARACTER COUNT
  7464. UX1,B7 X1
  7465. SX4 X4-2
  7466. SA2 PBUF+4
  7467. PL X4,EDI3 IF MODE PARAMETER ENTERED
  7468. SA1 A0+VDCT CHECK TERMINAL MODE
  7469. LX1 59-51
  7470. PL X1,EDI4 IF NOT EXTENDED MODE
  7471. SX2 2RAS
  7472. LX2 48
  7473. SB7 B1+B1
  7474. EDI3 BX6 X2 ENTER MODE PARAMETER
  7475. PX7 B6,X7 INSERT FILE NAME CHARACTER COUNT
  7476. SA7 A6+B1
  7477. SA6 A7+B1
  7478. EQ EDI5 ENTER TERMINATOR
  7479.  
  7480. EDI4 SB7 B6 SET FILE NAME COUNT
  7481. EDI5 SX7 1R. SET TERMINATOR
  7482. PX7 B7,X7 INSERT CHARACTER COUNT
  7483. BX6 X6-X6
  7484. SA7 A6+B1
  7485. SA6 A7+B1
  7486. EQ PSS BEGIN SYSTEM JOB WITH SORT
  7487. FDP SPACE 4
  7488. ** FDP - SETS TERMINAL OPERATION TO FULL DUPLEX.
  7489.  
  7490.  
  7491. FDP BSS 0
  7492. SX2 /1TD/SFD REQUEST DRIVER TO SET FULL DUPLEX
  7493. SX7 RDY SET RETURN
  7494. JP DCR
  7495. HDP SPACE 4
  7496. ** HDP - SETS TERMINAL OPERATION TO HALF DUPLEX.
  7497.  
  7498.  
  7499. HDP BSS 0
  7500. SX2 /1TD/CFD REQUEST DRIVER TO CLEAR FULL DUPLEX
  7501. SX7 RDY SET RETURN
  7502. JP DCR
  7503. IED SPACE 4,10
  7504. ** IED - CALL *IEDIT* TO PROCESS IN-LINE EDITING COMMAND.
  7505. *
  7506. * ENTRY (B3) = POINTER TO POT CONTAINING *IEDIT* COMMAND.
  7507. *
  7508. * EXIT TO BJS.
  7509. * (B3) = POINTER TO POT CONTAINING *IEDIT* CONTROL
  7510. * STATMENT. POT CONTAINING *IEDIT* COMMAND IS
  7511. * LINKED TO IT.
  7512. *
  7513. * USES ALL REGISTERS.
  7514. *
  7515. * CALLS BJS, CFC, LEP, PCB, RPT.
  7516.  
  7517.  
  7518. IED BSS 0 ENTRY
  7519.  
  7520. * PROCESS FILE NAME.
  7521.  
  7522. SA1 A0+VFNT GET PRIMARY FILE NAME
  7523. MX6 42
  7524. BX6 X1*X6
  7525. SA6 IEDB STORE FILE NAME
  7526. ZR X6,IPF IF NO PRIMARY FILE
  7527. SX7 1R,
  7528. RJ CFC COUNT FILE NAME CHARACTERS
  7529. PX6 B6,X7
  7530. SA6 A6+B1
  7531.  
  7532. * PROCESS CHARACTER SET.
  7533.  
  7534. SA1 A0+VDCT
  7535. BX2 X1
  7536. LX1 59-52
  7537. SA3 IEDE GET *ASCII8*
  7538. LX2 59-55
  7539. NG X1,IED2 IF ASCII8 MODE
  7540. LX1 1
  7541. SA3 A3+B1 GET *ASCII*
  7542. NG X1,IED2 IF 6/12 ASCII MODE
  7543. SA3 A3+B1 GET *NORMAL*
  7544. IED2 BX6 X3
  7545. MX7 0
  7546. RJ CFC COUNT CHARACTERS
  7547. SA6 IEDC
  7548.  
  7549. * SET UP OPTIONS.
  7550.  
  7551. SA1 A0+VSTT
  7552. NG X2,IED3 IF IN BRIEF MODE
  7553. SX7 1RL SET LIST OPTION
  7554. IED3 LX7 48
  7555. AX1 12 EXTRACT SUBSYSTEM
  7556. SX2 7
  7557. BX2 X1*X2
  7558. SX2 X2-1
  7559. ZR X2,IED6 IF BASIC SUBSYSTEM
  7560. SX2 X2-1
  7561. ZR X2,IED7 IF FORTRAN SUBSYSTEM
  7562. SX2 X2-1
  7563. ZR X2,IED7 IF FTNTS SUBSYSTEM
  7564. LX7 6
  7565. BX2 X2-X2
  7566. EQ IED8 BYPASS SUBSYSTEM OPTION
  7567.  
  7568. IED6 SX2 1RB SET BASIC SUBSYSTEM
  7569. EQ IED8 OPTIONS COMPLETED
  7570.  
  7571. IED7 SX2 1RF SET FORTRAN/FTNTS SUBSYSTEM
  7572.  
  7573. * COMPLETE CONTROL STATMENT.
  7574.  
  7575. IED8 LX2 54
  7576. BX7 X2+X7
  7577. ZR X7,IED9 IF NO OPTIONS SELECTED
  7578. SX6 1R,
  7579. PX6 B6,X6
  7580. SA6 A6+B1 STORE SEPARATOR FOR CHARACTER SET
  7581. SA1 IEDD MOVE *OP* AND SEPARATOR
  7582. SA2 A1+B1
  7583. BX6 X1
  7584. SA6 A6+B1
  7585. BX6 X2
  7586. SA6 A6+B1
  7587. BX6 X7
  7588. SA6 A6+1
  7589. RJ CFC COUNT OPTIONS
  7590. IED9 SX6 1R)
  7591. PX6 B6,X6
  7592. SA6 A6+B1 STORE TERMINATOR
  7593. BX7 X7-X7
  7594. SA7 A6+B1
  7595. SA7 A7+1
  7596.  
  7597. * *1RI* ASSUMES THAT THE *IEDIT* COMMAND BEGINS IN THE
  7598. * FIRST WORD OF THE FIRST POT, SO IF THE COMMAND WAS
  7599. * PRECEDED BY SOURCE LINE INPUT THEN SHIFT THE *IEDIT*
  7600. * COMMAND DOWN TO THE BEGINNING OF THE POT.
  7601.  
  7602. RJ SSP RESTORE POINTER TO THE COMMAND IN THE POT
  7603. SX6 B3
  7604. SA6 IEDF SAVE *IEDIT* COMMAND POT POINTER
  7605. MX0 -12 CREATE EOL MASK
  7606. ZR X7,IED12 IF SHIFT NOT NECESSARY
  7607. SX5 B4 SET DESTINATION POT ADDRESS
  7608. SB6 X7 SET SOURCE POT INDEX
  7609. SB5 B0+ SET DESTINATION POT INDEX
  7610. SB7 VCPC SET POT SIZE LIMIT
  7611. IED10 SA1 B4+B6
  7612. BX6 X1
  7613. SA6 X5+B5
  7614. BX6 -X0*X6
  7615. ZR X6,IED12 IF TRANSFER COMPLETE
  7616. SB6 B6+1
  7617. LT B6,B7,IED11 IF NOT END OF POT
  7618. SB6 B0+
  7619. RJ GPL GET POT LINK
  7620. IED11 SB5 B5+B1
  7621. LT B5,B7,IED10 IF NOT END OF POT
  7622. SX5 B4
  7623. SB5 B0
  7624. EQ IED10 CHECK NEXT WORD
  7625.  
  7626. * PACK THE COMMAND INTO A POT AND LINK THE
  7627. * *IEDIT* COMMAND POT TO IT.
  7628.  
  7629. IED12 SB3 B0+ GET POT FOR COMMAND
  7630. RJ GOP
  7631. SX1 IEDA
  7632. RJ PCB PACK COMMAND INTO POT
  7633. SA2 IEDF
  7634. RJ LEP LINK *IEDIT* COMMAND TO COMMAND
  7635.  
  7636. * ENABLE THE JOB.
  7637.  
  7638. SA1 IEDA
  7639. MX7 42
  7640. LX1 6
  7641. SX6 B1 SET *PPI* TO SORT THE FILE
  7642. BX7 X7*X1 SET *EPN*
  7643. EQ BJB BEGIN JOB
  7644.  
  7645.  
  7646. * $IEDIT(FN=LFN,CS=CHAR,OP=OPT).
  7647.  
  7648. IEDA VFD 60/6L$IEDIT
  7649. VFD 12/2006B,48/1R(
  7650. VFD 60/2LFN
  7651. VFD 12/2002B,48/1R=
  7652. IEDB VFD 60/0 LFN
  7653. VFD 60/0 SEPARATOR
  7654. VFD 60/2LCS
  7655. VFD 12/2002B,48/1R=
  7656. IEDC VFD 60/0 CHARACTER SET
  7657. VFD 60/0 SEPARATOR OR TERMINATOR
  7658. BSSZ 6 ROOM FOR OP PARAMETER
  7659. IEDD VFD 60/2LOP
  7660. VFD 12/2002B,48/1R=
  7661.  
  7662. IEDE VFD 60/6LASCII8
  7663. VFD 60/5LASCII
  7664. VFD 60/6LNORMAL
  7665.  
  7666. IEDF CON 0 STORAGE FOR POT POINTER
  7667. LAN SPACE 4
  7668. ** LAN - SETS TYPE OF SYSTEM IN TERMINAL TABLE.
  7669.  
  7670.  
  7671. LAN SX1 B0 SET NULL FLAG
  7672. EQ LAN5
  7673.  
  7674. LAN1 SX1 BASS*10000B SET BASIC FLAG
  7675. EQ LAN5
  7676.  
  7677. LAN2 SX1 FORS*10000B SET FORTRAN FLAG
  7678. EQ LAN5
  7679.  
  7680. LAN3 SX1 FTNS*10000B SET FTN 4.3 TS FLAG
  7681. EQ LAN5
  7682.  
  7683. LAN4 SX1 EXES*10000B SET EXEC FLAG
  7684. LAN5 SA2 A0+VSTT
  7685. MX3 57
  7686. LX3 12
  7687. BX6 X3*X2 SET SYSTEM
  7688. BX6 X1+X6
  7689. SA6 A2
  7690. SA1 CCMA
  7691. SX6 X1-1
  7692. ZR X6,LAN6 IF NO SECOND COMMAND GIVEN
  7693. SA6 A1
  7694. SB5 PARC*2 MOVE DATA
  7695. SX2 PBUF+2
  7696. SX3 PBUF
  7697. RJ MDA
  7698. EQ PCM5 REENTER COMMAND PROCESSOR
  7699.  
  7700. LAN6 SA1 A0+VFNT CHECK FOR FILE DEFINED
  7701. MX2 42
  7702. BX1 X2*X1
  7703. NZ X1,RDY IF FILE DEFINED ISSUE READY MESSAGE
  7704. SMA X6,( OLD, NEW, OR LIB FILE')
  7705. EQ PCS5 ISSUE MESSAGE
  7706. LEN SPACE 4
  7707. ** LEN - DETERMINES THE LENGTH OF A USERS LOCAL FILE.
  7708.  
  7709.  
  7710. LEN BSS 0
  7711. SA2 CCMA GET PARAMETER COUNT
  7712. SX2 X2-3
  7713. PL X2,IPL IF MORE THAN TWO PARAMETERS
  7714. SX2 X2+1
  7715. SA1 PBUF+2 GET FILE NAME
  7716. NZ X2,LEN1 IF FILE NAME NOT GIVEN
  7717. NZ X1,PBS IF FILE NAME GIVEN
  7718. LEN1 SX6 B1+B1 RESET PARAMETER COUNT
  7719. SA6 A2
  7720. SA2 A0+VFNT
  7721. MX6 42
  7722. BX6 X6*X2
  7723. ZR X6,IPF IF NO PRIMARY NAME
  7724. SX7 1R,
  7725. SA6 A1 SET PRIMARY FILE NAME
  7726. SB6 6
  7727. PX7 B6,X7
  7728. RJ CFC COUNT FILE NAME CHARACTERS
  7729. SA7 A6-B1
  7730. SX6 1R.
  7731. PX6 B6,X6
  7732. SA6 A6+B1
  7733. BX6 X6-X6
  7734. SA6 A6+B1
  7735. SA6 A6+B1
  7736. EQ PSS
  7737. LIS SPACE 4
  7738. ** LIS - THIS COMMAND INITIATES THE SORTING IF NECESSARY AND
  7739. * THE LISTING OF A USER,S FILE.
  7740.  
  7741.  
  7742. LIS BSS 0
  7743. SX7 PBUF SET PARAMETER BUFFER POINTER
  7744. SA7 LISA SET UP DEFAULT PARAMETERS
  7745. BX7 X7-X7
  7746. BX6 X6-X6
  7747. SA7 A7+B1
  7748. SA6 A7+B1 CLEAR FIRST LINE NUMBER
  7749. SA7 A6+B1 CLEAR LINE RANGE FLAG
  7750. SA6 A7+B1 CLEAR LAST LINE NUMBER
  7751. RJ PLO PROCESS OPTIONS
  7752. SA1 LISB
  7753. ZR X1,LIS2 IF PRIMARY FILE LIST
  7754. RJ TPF CHECK IF THE PRIMARY FILE
  7755. ZR X6,LIS2 IF PRIMARY FILE LIST
  7756. SA1 LISE
  7757. NZ X1,LIS1 IF LINE RANGE SPECIFIED
  7758. SA1 LISC
  7759. BX7 X1
  7760. SA7 LISE LIST ONE LINE ONLY
  7761. LIS1 RJ CFX EXTERNAL LIST CALL
  7762. SX6 B0 SET *PPI* NOT TO SORT THE FILE
  7763. EQ BJB BEGIN JOB
  7764.  
  7765. LIS2 SA2 A0+VFNT
  7766. MX1 42
  7767. BX1 X1*X2
  7768. ZR X1,IPF IF NO PRIMARY FILE
  7769. LX2 59-14
  7770. NG X2,IEX IF EXECUTE ONLY
  7771. SA1 LISF
  7772. ZR X1,LIS2.1 IF NOT SECURED SYSTEM
  7773. SA1 LISE
  7774. NZ X1,LIS2.2 IF LINE RANGE SPECIFIED
  7775. SA1 LISC
  7776. BX7 X1
  7777. SA7 LISE LIST ONE LINE ONLY
  7778. EQ LIS2.2 SET UP EXTERNAL LIST
  7779.  
  7780. LIS2.1 SA3 LISE
  7781. SX6 B1
  7782. LX3 6
  7783. SA2 LISC
  7784. ZR X3,LIS3 IF NO LAST LINE SPECIFIED
  7785. SX3 X3-1R*
  7786. ZR X3,LIS3 IF LIST TO EOI SPECIFIED
  7787. LIS2.2 RJ CFX SET UP EXTERNAL LIST
  7788. SX6 B1+ SET *PPI* TO SORT THE FILE
  7789. EQ BJB BEGIN JOB
  7790.  
  7791. LIS3 NZ X2,LIS4 IF ANY LINE SPECIFICATION
  7792. SA6 LISD
  7793. LIS4 SA1 LISC GET LINE NUMBER
  7794. BX6 X1 SAVE LINE NUMBER
  7795. SA1 LISD GET SINGLE LINE FLAG
  7796. NZ X1,LIS5 IF NOT SINGLE LINE
  7797. SX7 B1 SET SINGLE LINE FLAG
  7798. BX6 X6+X7
  7799. LIS5 SA6 B4 SAVE LINE NUMBER AND FLAG
  7800. SA1 A0+VSTT CHECK SORT FLAG
  7801. LX1 59-52
  7802. PL X1,LIS8 IF NO SORT REQUIRED
  7803. SA1 A0+VFST SET NEXT OPERATION INDEX AND POT POINTER
  7804. MX6 43
  7805. BX1 X1*X6
  7806. SX2 B3
  7807. BX7 X2+X1
  7808. SX6 B1 SET NEXT OPERATION INDEX
  7809. LX6 12
  7810. BX7 X6+X7
  7811. SA7 A1 REWRITE VFST
  7812. SB3 B0
  7813. SX7 B0 SET *EPN*
  7814. SX6 B1 SET *PPI*
  7815. EQ BJB1 ENABLE THE SORT
  7816.  
  7817. LIS7 SA1 A0+VFST GET POT POINTER
  7818. MX2 48
  7819. BX6 X2*X1
  7820. SA6 A1 REWRITE VFST
  7821. BX7 -X2*X1
  7822. SB3 X7
  7823. BX7 X7-X7
  7824. SX5 LIS8$
  7825. EQ PCS1 MAKE WAIT COMPLETION QUEUE ENTRY
  7826.  
  7827. * MAKE QUEUE ENTRY FOR LIST.
  7828.  
  7829. LIS8 SA1 A0+VROT SET LIST AND OUTPUT AVAILABLE
  7830. SX6 120B
  7831. BX6 X1+X6
  7832. SA6 A1 REWRITE VROT
  7833. SX5 ITO$
  7834. EQ PCS1 MAKE 1TO QUEUE ENTRY
  7835.  
  7836.  
  7837. LISA BSSZ 1 PARAMETER POINTER
  7838. LISB BSSZ 1 FILE NAME
  7839. LISC BSSZ 1 LINE NUMBER
  7840. LISD BSSZ 1 SINGLE LINE/LINE RANGE
  7841. LISE BSSZ 1 LAST LINE NUMBER
  7842. LISF CON 0 SYSTEM SECURITY MODE
  7843. NOR SPACE 4,20
  7844. ** NOR - SET TERMINAL *NORMAL* MODE.
  7845. *
  7846. * CLEARS ASCII, AUTO, BRIEF AND TAPE MODES.
  7847. *
  7848. * EXIT (VDCT) = SPECIAL MODES CLEARED.
  7849. *
  7850. * CALLS DCR, RDY.
  7851.  
  7852.  
  7853. NOR BSS 0 ENTRY
  7854. SA1 A0+VDCT READ VDCT
  7855. SA2 =75647777000077777777B CLEAR MODE BITS
  7856. BX6 X2*X1
  7857. SA6 A1 REWRITE VDCT
  7858. SA1 A0+VSTT RESET ENTRY MODE CONTROL
  7859. SX7 B1
  7860. LX7 18
  7861. BX7 -X7*X1
  7862. SA7 A1
  7863. SX2 /1TD/SNM REQUEST DRIVER TO SET NORMAL MODES
  7864. SX7 RDY SET RETURN
  7865. JP DCR
  7866. NOS SPACE 4
  7867. ** NOS - CLEARS SORT FLAG.
  7868.  
  7869.  
  7870. NOS BSS 0
  7871. SA1 A0+VSTT
  7872. SX2 B1
  7873. LX2 52
  7874. BX6 -X2*X1
  7875. SA6 A1
  7876. EQ RDY
  7877. PAC SPACE 4
  7878. ** PAC - PACK FILE.
  7879.  
  7880.  
  7881. PAC BSS 0
  7882. SA1 PBUF+2
  7883. SA2 CCMA CHECK PARAMETER COUNT
  7884. SX2 X2-1
  7885. ZR X2,PAC1 IF NO FILE NAME
  7886. NZ X1,SOF1 IF FILE NAME GIVEN
  7887. EQ PAC2 SET FILE NAME
  7888.  
  7889. PAC1 SX2 X2+B1 RESET PARAMETER COUNT
  7890. SX6 X2+B1
  7891. SA6 CCMA
  7892. PAC2 SA3 A0+VFNT SET PRIMARY NAME AS DEFAULT
  7893. SX7 1R,
  7894. MX4 42
  7895. BX6 X4*X3
  7896. ZR X6,IPF IF NO PRIMARY FILE
  7897. SB6 4
  7898. PX7 B6,X7
  7899. SA6 A1 SET FILE NAME
  7900. SA7 A6-B1 SET SEPARATOR
  7901. RJ CFC COUNT FILE NAME CHARACTERS
  7902. SX2 X2-1 CHECK PARAMETER COUNT
  7903. ZR X2,PAC3 IF TWO PARAMETERS
  7904. PX7 B6,X7
  7905. SA7 A6+B1
  7906. EQ SOF2 SET SORT FLAG
  7907.  
  7908. PAC3 SX7 1R. SET TERMINATOR
  7909. PX7 B6,X7
  7910. SA7 A6+B1
  7911. BX6 X6-X6
  7912. SA6 A7+B1
  7913. SA6 A6+B1
  7914. EQ SOF2
  7915. PAR SPACE 4
  7916. ** PARITY - SETS TERMINAL PARITY.
  7917.  
  7918.  
  7919. PAR SA1 CCMA CHECK PARAMETER COUNT
  7920. SX1 X1-2
  7921. SX2 /1TD/SOP SET ODD PARITY BY DEFAULT
  7922. NZ X1,PAR1 IF NOT SECOND PARAMETER
  7923. SA1 PBUF+2 SET SECOND PARAMETER
  7924. SA3 =3LODD
  7925. SA4 =4LEVEN
  7926. IX3 X3-X1
  7927. BX4 X4-X1
  7928. ZR X3,PAR1 IF *ODD*
  7929. NZ X4,IPL IF NOT *EVEN*
  7930. SX2 /1TD/SEP
  7931.  
  7932. * ENTER DRIVER REQUEST.
  7933.  
  7934. PAR1 SX7 RDY SET RETURN
  7935. JP DCR ENTER DRIVER REQUEST
  7936. PFC SPACE 4
  7937. ** PFC - PROCESS PRIMARY FILE COMMAND.
  7938. *
  7939. * ENTRY-
  7940. * SEE SSP.
  7941.  
  7942.  
  7943. PFC BSS 0
  7944. SA1 CCMA CHECK PARAMETER COUNT
  7945. SX1 X1-2
  7946. PL X1,PFC1 IF PARAMETER GIVEN
  7947. SA1 PBUF SAVE COMMAND
  7948. BX6 X1
  7949. SA6 B4
  7950. SX6 B3
  7951. MX2 48
  7952. SA1 A0+VFNT
  7953. BX2 X2*X1
  7954. BX6 X2+X6
  7955. SA6 A1 REWRITE VFNT
  7956. SB3 B0
  7957. SMA X6,( FILE NAME')
  7958. SB4 B0
  7959. SB5 B0
  7960. RJ RQI REQUEST FILE NAME
  7961.  
  7962. * CONTINUE WHEN PARAMETERS AVAILABLE.
  7963.  
  7964. SX2 PBUF MOVE PARAMETERS
  7965. SX3 PBUF+2
  7966. SB5 -7*2
  7967. RJ MDA
  7968. SA1 A0+VDCT CLEAR READ DATA
  7969. SX6 B1
  7970. LX6 54
  7971. BX6 -X6*X1
  7972. SA6 A1
  7973. SA1 A0+VFNT RESTORE COMMAND
  7974. MX2 48
  7975. BX6 X2*X1
  7976. SA6 A1 REWRITE VFNT
  7977. BX2 -X2*X1
  7978. SB3 X2
  7979. LX2 3
  7980. TA1 X2,VBMP
  7981. SA2 =7LPRIMARY
  7982. BX6 X1
  7983. BX2 X2-X1
  7984. SA6 PBUF
  7985. SB4 3 CHARACTERS IN COMMAD
  7986. NZ X2,PFC0 IF NOT *PRIMARY* COMMAND
  7987. SB4 7 SET COMMAND LENGTH
  7988. PFC0 SX6 1R, SET SEPARATOR
  7989. PX6 X6,B4
  7990. SA6 A6+B1
  7991. SB4 B0
  7992. RJ DPT DROP COMMAND POT
  7993. RJ SSP RESTORE REGISTERS
  7994.  
  7995. * CHECK VALIDITY AND COMMAND TYPE.
  7996.  
  7997. PFC1 SB6 PBUF+2 CHECK FILE NAME
  7998. RJ GFN
  7999. SA2 A0+VSTT CLEAR THE SORT FLAG
  8000. SA2 PBUF
  8001. SA1 =3LLIB
  8002. BX2 X1-X2
  8003. NZ X2,PBS IF NOT *LIB*
  8004. SA2 PBUF+3
  8005. SX3 X2-1R=
  8006. SA1 =7LLIBRARY
  8007. SA2 PBUF+1 INITIALIZE TERMINATOR SEARCH
  8008. SX7 1R/ SET SEPARATOR FOR */UN=LIBRARY*
  8009.  
  8010. * SEARCH FOR POINT TO INSERT *UN=LIBRARY* PARAMETER.
  8011.  
  8012. PFC2 SA2 A2+2 READ SEPARATOR
  8013. SX6 X2-1R.
  8014. ZR X6,PFC3 IF *.*
  8015. SX6 X2-1R=
  8016. ZR X6,PFC2 IF *=*
  8017. SX6 X2-1R,
  8018. ZR X6,PFC2 IF *,*
  8019. SX6 X2-1R/
  8020. NZ X6,PFC3 IF NOT */*
  8021. SX7 1R, RESET */UN* SEPARATOR TO *,UN*
  8022. EQ PFC2 CONTINUE TERMINATOR SEARCH
  8023.  
  8024. * INSERT *UN=LIBRARY* PARAMETER.
  8025.  
  8026. PFC3 UX2,B6 X2
  8027. PX7 B6,X7
  8028. SA7 A2 STORE SEPARATOR
  8029. SX6 2RUN
  8030. SX7 1R=
  8031. SB6 B1+B1 SET CHARACTER COUNT
  8032. PX7 B6,X7
  8033. LX6 48
  8034. SA6 A7+B1 SET *UN*
  8035. SA7 A6+B1 SET *=*
  8036. BX6 X1
  8037. SA6 A7+B1 SET *LIBRARY*
  8038. SX7 1R.
  8039. SB6 7 SET CHARACTER COUNT
  8040. PX7 B6,X7
  8041. SA7 A6+B1
  8042. BX6 X6-X6
  8043. SA6 A7+B1
  8044. SA6 A6+B1
  8045. SX6 3ROLD
  8046. SB6 3
  8047. LX6 42
  8048. SA6 PBUF
  8049. SX6 1R, SET SEPARATOR
  8050. PX6 B6,X6
  8051. SA6 PBUF+1
  8052. EQ PSS ENTER JOB AFTER SORT
  8053. RER SPACE 4
  8054. ** RER - PROCESS RESEQUENCING OF PRIMARY FILE.
  8055.  
  8056.  
  8057. RER BSS 0
  8058. BX7 X7-X7 SET TERMINATOR
  8059. SA7 PBUF+11
  8060. SA7 A7-B1
  8061. SA2 CCMA CHECK PARAMETER COUNT
  8062. SX6 5 RESET PARAMETER COUNT
  8063. SA6 A2
  8064. SX2 X2-3
  8065. SX6 2R10 SET DEFAULT INCREMENT
  8066. LX6 48
  8067. SB6 B1+B1 SET CHARACTER COUNT
  8068. NG X2,RER1 IF DEFAULT
  8069. SA1 PBUF+4
  8070. ZR X1,RER1 IF DEFAULT
  8071. SA3 A1+B1 GET CHARACTER COUNT
  8072. UX3,B6 X3
  8073. BX6 X1
  8074. RER1 SX7 1R. SET TERMINATOR
  8075. PX7 B6,X7
  8076. SA7 A7-B1
  8077. SA6 A7-B1 SET INCREMENT
  8078. SX6 3R100 SET DEFAULT
  8079. LX6 42
  8080. SX2 X2+1 CHECK PARAMETER COUNT
  8081. SB6 3 SET CHARACTER COUNT
  8082. NG X2,RER2 IF DEFAULT
  8083. SA1 PBUF+2 GET DEFAULT
  8084. ZR X1,RER2 IF DEFAULT
  8085. BX6 X1
  8086. SA3 A1+B1 GET CHARACTER COUNT
  8087. UX3,B6 X3
  8088. RER2 SX7 1R, SET SEPERATOR
  8089. PX7 B6,X7
  8090. SA3 A6-B1 GET CHARACTER COUNT
  8091. SA1 A3-B1 CHECK IF FILE TYPE ENTERED
  8092. SA7 A6-B1
  8093. SA6 A7-B1 SET STARTING LINE NUMBER
  8094. LX1 6
  8095. SX2 X2-2 CHECK PARAMETER COUNT
  8096. NZ X2,RER3 IF FILE TYPE NOT ENTERED
  8097. UX3,B6 X3
  8098. BX6 X1
  8099. NZ X1,RER4 IF FILE TYPE PRESENT
  8100. RER3 SA1 A0+VSTT CHECK INTERACTIVE SUBSYSTEM
  8101. SX6 1RB
  8102. SB6 B1 SET CHARACTER COUNT
  8103. MX3 -3
  8104. LX1 -12
  8105. BX1 -X3*X1 EXTRACT CURRENT SUBSYSTEM
  8106. SX3 X1-BASS
  8107. ZR X3,RER4 IF BASIC
  8108. SX6 1RF
  8109. SX3 X1-FORS
  8110. ZR X3,RER4 IF FORTRAN
  8111. SX3 X1-FTNS
  8112. ZR X3,RER4 IF FTNTS
  8113. BX6 X6-X6
  8114. SB6 B0 SET CHARACTER COUNT
  8115. RER4 PX7 B6,X7
  8116. LX6 54
  8117. SA7 A6-B1
  8118. SA6 A7-B1 SET SYSTEM
  8119. SA1 A0+VFNT SET FILE NAME
  8120. MX6 42
  8121. BX6 X6*X1
  8122. ZR X6,IPF IF NO PRIMARY FILE
  8123. RJ CFC COUNT CHARACTERS
  8124. PX7 B6,X7 SET SEPARATOR
  8125. SA7 A6-B1
  8126. SA6 A7-B1
  8127. SA3 A6-B1 SET SEPARATOR
  8128. UX3,B6 X3
  8129. PX7 B6,X7
  8130. SA7 A3
  8131. EQ PSS BEGIN JOB
  8132. ROT SPACE 4
  8133. ** ROT - SETS RUBOUT COUNT.
  8134.  
  8135.  
  8136. ROT BSS 0
  8137. SA5 CCMA CHECK PARAMETER COUNT
  8138. SX5 X5-1
  8139. BX3 X3-X3
  8140. ZR X5,ROT1 IF NO RUBOUT COUNT ENTERED
  8141. SA5 PBUF+2
  8142. SB7 B1
  8143. ZR X5,ROT1 IF NULL RUBOUTS
  8144. RJ DXB
  8145. NZ X4,ROT2 IF NON NUMERIC
  8146. SX3 31
  8147. IX2 X6-X3
  8148. SX3 X6+1
  8149. PL X2,ROT2 IF TOO MANY
  8150. ROT1 SA1 A0+VDCT ENTER COUNT
  8151. MX6 -5
  8152. LX6 39
  8153. BX1 X6*X1
  8154. LX3 39
  8155. BX6 X1+X3
  8156. SA6 A1
  8157. RJ SSP
  8158. JP RDY ISSUE READY
  8159.  
  8160. ROT2 RJ SSP
  8161. SX6 =C*INCORRECT RUBOUT COUNT.*
  8162. EQ PCS5 ISSUE MESSAGE
  8163. RPF SPACE 4,10
  8164. ** RPF - RETRIEVE PERMANENT FILE.
  8165. * PROCESSES *ATTACH* OR *GET* COMMAND.
  8166.  
  8167.  
  8168. RPF BSS 0
  8169. SA2 CCMA CHECK PARAMETER COUNT
  8170. SX2 X2-1
  8171. ZR X2,PBS IF NULL
  8172. SA2 PBUF+2 CHECK FILE NAME
  8173. ZR X2,PBS IF NULL
  8174. SB6 A2
  8175. RJ GFN CHECK FOR RESERVED NAME
  8176. EQ PBS
  8177. RUN SPACE 4
  8178. ** RUN - INITIATES THE RUNNING OF A USERS JOB.
  8179.  
  8180.  
  8181. RUN BSS 0
  8182. SX6 PBUF+2 SET PARAMETER POINTER
  8183. SA6 RUNA
  8184. BX6 X6-X6 SET DEFAULT VALUES
  8185. SA6 A6+B1
  8186. SA6 A6+B1
  8187. SA6 A6+B1
  8188. SX6 2RGO
  8189. LX6 48
  8190. SA6 RUNH
  8191. SA6 RUNS
  8192. SX7 1R, SET CHARACTER COUNT
  8193. SB6 B1+B1
  8194. PX7 B6,X7
  8195. SA7 A6+B1
  8196. SA7 RUNH+1
  8197. RUN1 SA1 RUNA GET PARAMETER POINTER
  8198. SX6 X1+4 UPDATE POINTER
  8199. SA6 A1
  8200. SA1 X1 GET PARAMETER
  8201. SA2 A1-B1 GET TERMINATOR
  8202. UX2,B6 X2
  8203. SX2 X2-1R.
  8204. ZR X2,RUN2 IF ALL PARAMETERS PROCESSED
  8205. AX1 42
  8206. SX2 X1-1LI
  8207. ZR X2,RUN20 IF INPUT FILE NAME
  8208. SX2 X1-1LB
  8209. ZR X2,RUN20 IF BINARY FILE NAME
  8210. SX2 X1-1LC
  8211. ZR X2,RUN20 IF BINARY FILE NAME
  8212. SX2 X1-1LT
  8213. NZ X2,IPL IF NOT TRANSMIT
  8214. SX6 X6-2 SET TRANSMIT PARAMETER POINTER
  8215. SA6 RUND
  8216. RUN2 SA1 RUNB
  8217. NZ X1,RUN3 IF FILE NAME SPECIFIED
  8218. SA1 A0+VFNT
  8219. MX6 42
  8220. BX6 X1*X6
  8221. ZR X6,IPF IF NO PRIMARY FILE
  8222. SA6 RUNB
  8223. RUN3 SA1 A0+VSTT GET SUBSYSTEM
  8224. MX4 -3
  8225. AX1 12
  8226. BX4 -X4*X1
  8227. SA1 TSYS+X4 GET SYSTEM PROCESSOR
  8228. SX7 B1
  8229. IX6 X1+X7
  8230. AX1 42
  8231. SA6 A1
  8232. SB7 X1
  8233. RJ SRC SET TO ISSUE *RUN COMPLETE.*
  8234. JP B7
  8235.  
  8236. ** BASIC.
  8237.  
  8238. RUN4 SA1 RUND
  8239. NZ X1,IPL IF *T* PARAMETER SPECIFIED
  8240. SA1 A0+VDCT CHECK ASCII FLAG
  8241. LX1 59-51
  8242. SB6 B1+B1
  8243. SA2 =0LAS
  8244. NG X1,RUN5 IF ASCII
  8245. SA2 =0LAS=0
  8246. SB6 4
  8247. RUN5 BX6 X2
  8248. SX7 1R.
  8249. PX7 B6,X7
  8250. SA6 RUNR SET ASCII FLAG
  8251. SA7 A6+B1
  8252. SA1 RUNC BINARY FILE NAME
  8253. SA2 RUNB INPUT FILE NAME
  8254. NZ X1,RUN6 IF BINARY FILE NAME SUBSTITUTION
  8255. SA1 =0L0
  8256. RUN6 BX6 X1
  8257. RJ CFC GET CHARACTER COUNT
  8258. SX7 1R,
  8259. PX7 B6,X7
  8260. SA6 RUNP SET BINARY FILE NAME
  8261. SA7 A6+B1
  8262. BX6 X2
  8263. RJ CFC GET CHARACTER COUNT
  8264. SX7 1R,
  8265. PX7 B6,X7
  8266. SA6 RUNQ SET INPUT FILE NAME
  8267. SA7 A6+B1 SET SEPARATOR
  8268. SX1 RUNO
  8269. RJ PCB
  8270. SA1 =0LBASIC SET *EPN*
  8271. BX7 X1
  8272. EQ RUN13 MAKE QUEUE ENTRY
  8273.  
  8274. ** FTN 4.3 TS AND FTN5.
  8275.  
  8276. RUN7 SX7 1R5 *FTN5*
  8277. LX7 35-5
  8278. SB7 5 INSERT CHARACTER COUNT
  8279. SX2 RUNL MOVE COMMAND PARAMETERS
  8280. EQ RUN9 FORMAT COMMAND
  8281.  
  8282. RUN8 SX7 B0 *FTN*
  8283. SB7 4
  8284. SX2 RUNM MOVE COMMAND PARAMETERS
  8285. RUN9 SA1 RUND
  8286. NZ X1,IPL IF *T* PARAMETER SPECIFIED
  8287. SA1 RUNG
  8288. MX3 24
  8289. BX1 X3*X1
  8290. BX7 X7+X1
  8291. BX0 X7
  8292. SA7 A1+
  8293. LX0 6
  8294. BX0 X0*X3 SAVE *EPN*
  8295. SX7 1R, INSERT CHARACTER COUNT
  8296. PX7 B7,X7
  8297. SA7 A7+B1
  8298. SB5 8
  8299. SX3 RUNK
  8300. RJ MDA MOVE DATA
  8301. SA1 RUNC BINARY FILE NAME
  8302. SA2 RUNB INPUT FILE NAME
  8303. NZ X1,RUN10 IF BINARY FILE NAME SUBSTITUTION
  8304. SA1 =0LLGO
  8305. RUN10 BX6 X1
  8306. RJ CFC GET CHARACTER COUNT
  8307. SX7 1R,
  8308. PX7 B6,X7
  8309. SA6 RUNI SET BINARY FILE NAME
  8310. SA7 A6+B1 SET SEPARATOR
  8311. BX6 X2
  8312. RJ CFC GET CHARACTER COUNT
  8313. PX7 B6,X7
  8314. SA6 RUNJ SET INPUT FILE NAME
  8315. SA7 A6+B1 SET SEPARATOR
  8316. SX1 RUNG
  8317. RJ PCB
  8318. BX7 X0 SET *EPN*
  8319. EQ RUN13 MAKE QUEUE ENTRY
  8320.  
  8321. ** EXECUTE.
  8322.  
  8323. RUN11 SA1 RUNC
  8324. NZ X1,IPL IF *B* PARAMETER SPECIFIED
  8325. SA1 RUNB GET FILE TO EXECUTE
  8326. SA2 RUND CHECK FOR TRANSMIT PARAMETERS
  8327. BX6 X1
  8328. SA6 PBUF
  8329. BX0 X6 SET *EPN*
  8330. RJ CFC GET CHARACTER COUNT
  8331. SX7 1R.
  8332. PX7 B6,X7
  8333. SA7 A6+B1
  8334. BX6 X6-X6
  8335. SA6 A7+B1 SET BUFFER TERMINATION
  8336. SA6 A6+B1
  8337. ZR X2,RUN12 IF NOT TRANSMIT PARAMETERS
  8338. SX7 1R,
  8339. PX7 B6,X7
  8340. SA7 A7
  8341. SX3 A7+B1
  8342. SA4 CCMA GET PARAMETER COUNT
  8343. LX4 1
  8344. SB5 X4
  8345. RJ MDA
  8346. RUN12 SX1 PBUF BUILD COMMAND
  8347. RJ PCB
  8348. BX7 X0 SET *EPN*
  8349. EQ RUN14 BEGIN JOB
  8350.  
  8351. * ENABLE THE JOB.
  8352.  
  8353. RUN13 SA1 RUNB
  8354. RJ TPF CHECK PRIMARY FILE NAME
  8355. BX4 X6
  8356. SX6 B1 SET *PPI* TO SORT FILE
  8357. ZR X4,BJB IF PRIMARY FILE
  8358. RUN14 SX6 B0 SET *PPI* NOT TO SORT THE FILE
  8359. EQ BJB BEGIN JOB
  8360.  
  8361. ** PROCESS OPTIONAL FILE NAME.
  8362.  
  8363. RUN20 SA2 X6-3 CHECK SEPERATOR
  8364. SX3 X1-1LI
  8365. SX2 X2-1R=
  8366. NZ X2,IPL IF NOT *=* SEPERATOR
  8367. SB6 A2+B1
  8368. ZR X3,RUN21 IF INPUT
  8369. SX3 B1
  8370. SX6 B0+ PRESTORE NOGO
  8371. SA6 RUNH
  8372. SX6 1R,
  8373. PX6 B0,X6
  8374. SA6 A6+B1
  8375. SA6 RUNS+1
  8376. MX6 0
  8377. SA6 A6-B1
  8378. RUN21 RJ GFN CHECK FILE NAME
  8379. BX6 X2 SAVE FILE NAME
  8380. SA2 RUNB+X3
  8381. NZ X2,IPL IF PARAMETER SPECIFIED TWICE
  8382. SA6 A2
  8383. EQ RUN1 PROCESS NEXT PARAMETER
  8384.  
  8385. RUNA CON 0 PARAMETER POINTER
  8386. RUNB CON 0 INPUT FILE NAME
  8387. RUNC CON 0 BINARY FILE NAME
  8388. RUND CON 0 TRANSMIT PARAMETER POINTER
  8389.  
  8390. * FTN,GO,B=LGO,I=INPUT,L=0,SEQ,REW,X,A,TS,T.
  8391. * FTN5,GO,B=LGO,I=INPUT,L=0,SEQ,REW,X,OPT=0,ET=F.
  8392.  
  8393. RUNG BSS 0
  8394. VFD 60/5L$FTN5
  8395. VFD 12/2005B,48/1R,
  8396. RUNH VFD 60/2LGO
  8397. VFD 12/2002B,48/1R,
  8398. VFD 60/1LB
  8399. VFD 12/2001B,48/1R=
  8400. RUNI VFD 60/3LLGO
  8401. VFD 12/2003B,48/1R,
  8402. VFD 60/1LI
  8403. VFD 12/2001B,48/1R=
  8404. RUNJ VFD 60/5LINPUT
  8405. VFD 12/2005B,48/1R,
  8406. VFD 60/1LL
  8407. VFD 12/2001B,48/1R=
  8408. VFD 60/1L0
  8409. VFD 12/2001B,48/1R,
  8410. VFD 60/3LSEQ
  8411. VFD 12/2003B,48/1R,
  8412. VFD 60/3LREW
  8413. VFD 12/2003B,48/1R,
  8414. VFD 60/1LX
  8415. VFD 12/2001B,48/1R,
  8416. RUNK BSS 10 COMMAND REFORMAT AREA
  8417. RUNL VFD 60/3LOPT
  8418. VFD 12/2003B,48/1R=
  8419. VFD 60/1L0
  8420. VFD 12/2001B,48/1R,
  8421. VFD 60/2LET
  8422. VFD 12/2002B,48/1R=
  8423. VFD 60/1LF
  8424. VFD 12/2001B,48/1R.
  8425. RUNM VFD 60/1LA
  8426. VFD 12/2001B,48/1R,
  8427. VFD 60/2LTS
  8428. VFD 12/2002B,48/1R,
  8429. VFD 60/1LT
  8430. VFD 12/2001B,48/1R.
  8431. VFD 60/0
  8432. VFD 60/0
  8433.  
  8434. * BASIC,B=0,I=INPUT,L=0,GO,AS=0.
  8435.  
  8436. RUNO BSS 0
  8437. VFD 60/6L$BASIC
  8438. VFD 12/2006B,48/1R,
  8439. VFD 60/1LB
  8440. VFD 12/2001B,48/1R=
  8441. RUNP VFD 60/1L0
  8442. VFD 12/2001B,48/1R,
  8443. VFD 60/1LI
  8444. VFD 12/2001B,48/1R=
  8445. RUNQ VFD 60/5LINPUT
  8446. VFD 12/2005B,48/1R,
  8447. VFD 60/1LL
  8448. VFD 12/2001B,48/1R=
  8449. VFD 60/1L0
  8450. VFD 12/2001B,48/1R,
  8451. RUNS VFD 60/2LGO
  8452. VFD 12/2002B,48/1R,
  8453. RUNR VFD 60/4LAS=0
  8454. VFD 12/2004B,48/1R.
  8455. VFD 60/0
  8456. VFD 60/0
  8457.  
  8458. BSS 0
  8459. TSYS EQU *-1
  8460. VFD 18/RUN4,42/0
  8461. VFD 18/RUN7,42/0
  8462. VFD 18/RUN8,42/0
  8463. VFD 18/RUN11,42/0
  8464. SAV SPACE 4
  8465. ** SAV - SAVE, REPLACE, OR PURGE FILE.
  8466. *
  8467. * PROCESS IMPLIED PRIMARY FILE COMMANDS.
  8468.  
  8469.  
  8470. SAV BSS 0 ENTRY
  8471. SA3 CCMA GET PARAMETER COUNT
  8472. SX2 X3-1
  8473. SA1 PBUF+2 GET FILE NAME
  8474. ZR X2,SAV1 IF IMPLIED FILE NAME
  8475. NZ X1,SAV2 IF NOT IMPLIED FILE NAME
  8476. SAV1 SA1 A0+VFNT GET PRIMARY FILE NAME
  8477. MX3 42
  8478. BX6 X3*X1
  8479. ZR X6,PBS IF NO PRIMARY FILE
  8480. EQ PSS PROCESS COMMAND
  8481.  
  8482. SAV2 RJ TPF CHECK FOR PRIMARY FILE
  8483. NZ X6,PBS IF NOT PRIMARY FILE
  8484. EQ PSS PROCESS COMMAND
  8485. SOF SPACE 4
  8486. ** SOF - SETS SORT FLAG.
  8487.  
  8488.  
  8489. SOF BSS 0
  8490. SA2 CCMA CHECK PARAMETER COUNT
  8491. SA1 PBUF+2
  8492. SX2 X2-1
  8493. NZ X2,SOF1 IF SORT OF EXPLICIT FILE
  8494. SA1 A0+VSTT
  8495. SX6 B1
  8496. LX6 52
  8497. BX6 X1+X6
  8498. SA6 A1
  8499. EQ RDY
  8500.  
  8501. * ENTER HERE FROM PAC.
  8502.  
  8503. SOF1 RJ TPF CHECK PRIMARY FILE NAME
  8504. NZ X6,PBS IF NOT PRIMARY FILE BEING SORTED
  8505. SOF2 BSS 0
  8506. SA1 A0+VSTT CLEAR SORT FLAG
  8507. SX2 B1
  8508. LX2 52
  8509. BX6 -X2*X1
  8510. SA6 A1
  8511. EQ PBS
  8512. STA SPACE 4
  8513. ** STA - DETERMINES THE CURRENT JOB STATUS.
  8514.  
  8515.  
  8516. STA BSS 0
  8517. SA1 CCMA CHECK PARAMETER COUNT
  8518. SX1 X1-1
  8519. NZ X1,STA11 IF OPTIONAL PARAMETERS ENTERED
  8520.  
  8521. * PROCESS SIMPLE *STATUS* (*ENQUIRE*) COMMAND.
  8522.  
  8523. STA1 TA2 B2,VRAP
  8524. ZR X2,STA5 IF NO QUEUED ENTRY
  8525. MX5 12
  8526. BX1 X5*X2
  8527. NZ X1,STA3 IF SINGLE QUEUE ENTRY
  8528. SB7 X2 ADDRESS OF ENTRIES
  8529. SB6 B7+VCPC
  8530. STA2 SA1 B7 LOAD ENTRY
  8531. MX5 12
  8532. BX2 X5*X1 MASK OFF REQUEST
  8533. LX2 12D
  8534. ZR X2,STA4 IF NO MORE ENTRIES IN POT
  8535. SX2 X2-STA$
  8536. ZR X2,STA12 IF *STA$* REQUEST FOUND
  8537. SB7 B7+1 ADVANCE TO NEXT ENTRY
  8538. NE B7,B6,STA2 IF NOT AT END OF POT
  8539. EQ STA4 ENTER *STA$* REQUEST
  8540.  
  8541. STA3 LX1 12D
  8542. SX2 X1-STA$
  8543. ZR X2,STA12 IF ENTRY IS *STA$*
  8544. STA4 SX5 STA$ SET STA$ QUEUE ENTRY
  8545. SX7 B0+
  8546. EQ PCS1 MAKE QUEUE ENTRY
  8547.  
  8548. * REENTRY FROM QUEUED ENTRY.
  8549.  
  8550. STA5 SA1 A0+VROT CHECK JOB STATUS
  8551. LX1 59-1
  8552. SX7 B0
  8553. NG X1,STA6 IF JOB IN SYSTEM
  8554. LX1 59-0-59+1
  8555. PL X1,STA4 IF ACTIVITY
  8556.  
  8557. * MAKE *1TA* QUEUE ENTRY WITHOUT CLEARING THE COMPLETION
  8558. * BIT IN VROT.
  8559.  
  8560. STA6 SX5 ITA1$ CALL *1TA* FOR JOB STATUS
  8561. SB7 ITAQ
  8562. BX6 X6-X6 CLEAR POSSIBLE EOL
  8563. SA6 B4+4
  8564. SA6 A6+B1
  8565. SX6 B3
  8566. LX5 48
  8567. LX6 12
  8568. BX5 X5+X6
  8569. RJ MQE MAKE QUEUE ENTRY
  8570. EQ PCSX EXIT
  8571.  
  8572. * REENTRY FROM SJS TO ASSIGN MESSAGE.
  8573.  
  8574. STA7 SA1 A0+VROT CHECK FOR JOB ACTIVITY
  8575. MX2 -5
  8576. BX2 -X2*X1
  8577. SX6 X2-1
  8578. NZ X6,STA8 IF ACTIVITY
  8579. SA1 =0LIDLE
  8580. BX6 X1
  8581. SA6 B4 ISSUE IDLE MESSAGE
  8582. STA8 SA1 B4+VCPC-1 GET THE SRU ACCUMULATOR VALUE
  8583. RJ FSM FORMAT STATUS MESSAGE
  8584. SX6 FSMA
  8585. SB4 X7
  8586. EQ PCS6 ISSUE STATUS MESSAGE
  8587.  
  8588. * PROCESS OPTIONAL PARAMETERS.
  8589.  
  8590. STA11 SA2 A0+VROT CHECK JOB ACTIVITY
  8591. MX5 -5
  8592. BX5 -X5*X2
  8593. SX5 X5-1
  8594. SMA X6,( JOB ACTIVE."NL")
  8595. NZ X5,PCS5 IF TERMINAL NOT IDLE
  8596. EQ PBS ENTER JOB
  8597.  
  8598. * PROCESS DISCARDED REQUEST.
  8599.  
  8600. STA12 SB4 B0
  8601. RJ DPT DROP INPUT POT
  8602. EQ PCSX EXIT
  8603. STO SPACE 4
  8604. ** STO - STOPS COMPUTATION ON A USER,S JOB.
  8605.  
  8606.  
  8607. STO BSS 0 ENTRY
  8608. SX2 /1TD/SDU SUSPEND DRIVER FOR USER BREAK PROCESSING
  8609. SX7 STO1 SET REENTRY ADDRESS
  8610. EQ DCR ENTER DRIVER REQUEST TO HANG DRIVER
  8611.  
  8612. STO1 SA2 SSPA SET *TAET* ERROR FLAG IN *SSPA* AND X7
  8613. SX7 TAET
  8614. MX6 36
  8615. LX2 -24
  8616. BX6 X6*X2 REMOVE OLD X7 PARAMETER
  8617. BX6 X6+X7 INSERT *TAET* ERROR FLAG
  8618. LX6 24
  8619. SA6 A2
  8620. EQ PUB PROCESS AS A USER BREAK 2
  8621. SUB SPACE 4
  8622. ** SUB - PROCESS DEFAULT ON SUBMIT.
  8623.  
  8624.  
  8625. SUB BSS 0
  8626. SA3 CCMA GET PARAMETER COUNT
  8627. SX2 X3-1
  8628. SX6 2 RESET PARAMETER COUNT
  8629. SA1 PBUF+2 GET FILE NAME
  8630. ZR X2,SUB1 IF NULL FILE NAME
  8631. SX2 X2-1
  8632. NZ X1,PSS IF NOT DEFAULT
  8633. BX6 X3
  8634. SUB1 SA6 A3
  8635. SA1 A0+VFNT SET DEFAULT
  8636. MX3 42
  8637. BX6 X3*X1
  8638. ZR X6,IPF IF NO PRIMARY FILE
  8639. SX7 1R,
  8640. SB6 6
  8641. PX7 B6,X7
  8642. SA7 PBUF+1
  8643. SA6 A7+B1
  8644. RJ CFC GET CHARACTER COUNT
  8645. SX7 1R.
  8646. ZR X2,SUB2 IF FILE NAME ONLY
  8647. SA3 A6+B1 GET SEPARATOR
  8648. UX7,B7 X3
  8649. SUB2 PX7 B6,X7
  8650. SA7 A6+B1
  8651. NZ X2,PSS IF THREE PARAMETERS
  8652. BX6 X6-X6
  8653. SA6 A7+B1
  8654. SA6 A6+B1
  8655. EQ PSS PROCESS COMMAND
  8656. TAP SPACE 4
  8657. ** TAP - SETS TAPE MODE OPERATION FLAG.
  8658.  
  8659.  
  8660. TAP BSS 0
  8661. SA1 A0+VDCT SET TAPE MODE
  8662. SX6 B1
  8663. LX6 48
  8664. BX6 X1+X6
  8665. SA6 A1
  8666. EQ RDY ISSUE MESSAGE
  8667. TER SPACE 4
  8668. ** TER - SETS TERMINAL TYPE.
  8669.  
  8670.  
  8671. TER BSS 0
  8672. SA1 CCMA CHECK PARAMETER COUNT
  8673. SX1 X1-1
  8674. ZR X1,TER1 IF NO TYPE GIVEN
  8675. SA5 PBUF+2 CHECK PARAMETER
  8676. RJ LTT LOCATE TERMINAL TYPE
  8677. ZR X5,TER1 IF NO PARAMETER GIVEN
  8678. SX7 X1 EXTRACT CLASS
  8679. SA1 X2 FIRST TERMINAL NAME
  8680. SB7 X2
  8681. BX5 X5+X7 MERGE WITH PARAMETER
  8682. SX2 /1TD/STT SET DRIVER REQUEST
  8683. + BX7 X1-X5 COMPARE TABLE AND PARAMETER
  8684. ZR X7,TER2 IF MATCH FOUND
  8685. SA1 A1+B1
  8686. NZ X1,*-1
  8687. TER1 SMA X6,( INCORRECT TERMINAL TYPE."NL")
  8688. EQ PCS5 ISSUE MESSAGE
  8689.  
  8690. TER2 SX1 A1-B7 SET NEW INDEX
  8691. LX1 6
  8692. BX2 X2+X1
  8693. SX7 RDY SET RETURN
  8694. JP DCR ISSUE DRIVER REQUEST
  8695. TIM SPACE 4
  8696. ** TIM - PROCESS TIMEOUT LOGOFF COMMAND.
  8697.  
  8698.  
  8699. TIM BSS 0
  8700. MX2 -1
  8701. SA3 A0+VDCT GET ACCESS BITS
  8702. LX2 12+10 POSITION FOR TIMEOUT BIT
  8703. BX7 X2*X3 CLEAR BIT
  8704. SA7 A3 RESTORE *VDCT* WORD
  8705. JP RDY ISSUE *READY*
  8706. TXT SPACE 4
  8707. ** TXT - SETS TEXT MODE OPERATION FLAG.
  8708.  
  8709.  
  8710. TXT BSS 0
  8711. SA2 A0+VFNT
  8712. MX1 42
  8713. BX1 X1*X2
  8714. ZR X1,IPF IF NO PRIMARY FILE
  8715. LX2 59-12
  8716. SMA X6,( WRITE ON READ-ONLY FILE."NL")
  8717. NG X2,PCS5 IF WRITE LOCKOUT BIT SET
  8718. SX6 B1 SET TEXT MODE
  8719. SA2 A0+VDCT
  8720. LX6 50-0
  8721. BX6 X6+X2
  8722. SA6 A2 REWRITE VDCT
  8723. SX7 B1 CLEAR SORT FLAG
  8724. LX7 52
  8725. SA1 A0+VSTT
  8726. BX7 -X7*X1
  8727. SA7 A1
  8728. SMA X6,( ENTER TEXT MODE."NL""LF")
  8729. EQ PCS5 ISSUE MESSAGE
  8730. UNU SPACE 4
  8731. ** UNU - USER NAME SEARCH.
  8732. *
  8733. * *UNU* SEARCHES FOR USERS ON THE SYSTEM UNDER THE GIVEN USER
  8734. * NUMBER. THE JOB SEQUENCE NUMBERS OF THOSE USERS ARE RETURNED
  8735. * TO THE TERMINAL.
  8736. *
  8737. * ENTRY (SEE SSP).
  8738. *
  8739. * EXIT LIST OF *JSN*S ASSIGNED TO TERMINAL.
  8740. *
  8741. * USES X - 1, 2, 3, 6, 7.
  8742. * A - 1, 2, 6, 7.
  8743. * B - 5, 6, 7.
  8744. *
  8745. * CALLS ASM.
  8746.  
  8747.  
  8748. UNU BSS 0 ENTRY
  8749. TB7 B0,VTTP,LWA
  8750. TB6 VTTL*VPST-VTTL,VTTP FWA OF FIRST NON-PSEUDO TERMINAL
  8751. SA2 CCMA CHECK PARAMETER COUNT
  8752. SX2 X2-1
  8753. ZR X2,IPL IF USER NAME NOT GIVEN
  8754. SA1 =C*TERMINAL(S).*
  8755. SA2 A1+1
  8756. BX7 X1
  8757. BX6 X2
  8758. SA7 PBUF
  8759. SA6 A7+1
  8760. SA1 PBUF+2 GET GIVEN USER NAME
  8761. SB5 5 SET MAXIMUM NUMBER OF USERS RETURNED
  8762. MX3 42
  8763. MX7 24
  8764. UNU1 SA2 B6+VUIT GET USER NAME TO COMPARE
  8765. SB6 B6+VTTL
  8766. BX2 X2*X3
  8767. BX2 X1-X2
  8768. NZ X2,UNU2 IF USER NAMES DO NOT MATCH
  8769. SA2 A2+VFST-VUIT
  8770. BX6 X2*X7
  8771. SB5 B5-B1
  8772. NG B5,UNU4 IF MORE THAN MAXIMUM NUMBER OF USERS
  8773. SA6 A6+1 ADD *JSN* TO THE LIST
  8774. UNU2 LT B6,B7,UNU1 IF STILL MORE USERS TO CHECK
  8775. SB6 B5-5
  8776. ZR B6,UNU3 IF NO USERS FOUND
  8777. SMA A1,("NL")
  8778. BX7 X1
  8779. SA7 A6+B1 TERMINATE THE LIST
  8780. EQ UNU5 ISSUE THE MESSAGE
  8781.  
  8782. UNU3 SMA A1,( NONE."NL")
  8783. SA2 A1+B1
  8784. BX6 X1
  8785. BX7 X2
  8786. SA6 A6+B1
  8787. SA7 A6+1
  8788. EQ UNU5 ISSUE THE MESSAGE
  8789.  
  8790. UNU4 SMA A1,( MORE USERS."NL")
  8791. SA2 A1+B1
  8792. BX6 X1
  8793. BX7 X2
  8794. SA6 A6
  8795. SA7 A6+1
  8796. UNU5 SX6 PBUF PROCESS MESSAGE
  8797. SB4 A7-PBUF+1
  8798. RJ MVA
  8799. EQ PCSX EXIT
  8800. XEQ SPACE 4
  8801. ** XEQ - EXECUTE BATCH COMMAND.
  8802.  
  8803.  
  8804. XEQ BSS 0
  8805. SA1 PBUF+1
  8806. SX1 X1-1R,
  8807. NZ X1,BAT2 IF NOT *,*
  8808. SX2 PBUF+2 STRIP OFF *X,*
  8809. SX3 PBUF
  8810. SA4 CCMB GET NO. OF WORDS TO MOVE
  8811. SB5 X4
  8812. RJ MDA
  8813. EQ BAT2
  8814. TITLE PCM - REENTRANT COMMAND PROCESSING ROUTINES.
  8815. BJB SPACE 4,20
  8816. ** BJB - BEGIN JOB.
  8817. *
  8818. * *BJB* HAS TWO ENTRY POINTS. USERS BEGINNING A JOB STEP
  8819. * ENTER AT *BJB*. JOBS WHICH HAVE BEEN ROLLED OUT FOR
  8820. * SOME REASON ARE RE-ENABLED BY ENTERING AT *BJB1*.
  8821. *
  8822. * ENTRY (A0) = TERMINAL TABLE ADDRESS.
  8823. * (X6) = PRE-PROCESSOR INDEX.
  8824. * (X7) = ENTRY POINT NAME.
  8825. * (B3) = COMMAND POT POINTER.
  8826. *
  8827. * EXIT JOB ENABLED.
  8828. *
  8829. * USES X - ALL.
  8830. * A - 1, 2, 3, 4, 6, 7.
  8831. * B - 3, 4.
  8832. *
  8833. * CALLS DPT, GOP, INO, PMR, RDC, UEC.
  8834. *
  8835. * MACROS PARAM.
  8836.  
  8837.  
  8838. BJB BSS 0 ENTRY
  8839. BX4 X7
  8840. AX4 54 RIGHT JUSTIFY FIRST CHARACTER
  8841. SB7 X4+77B-1R$
  8842. NZ B7,BJB0 IF FIRST CHARACTER NOT DOLLAR SIGN
  8843. LX7 6 STRIP LEADING DOLLAR SIGN FROM *EPN*
  8844. BJB0 TA4 B2,VRAP CHECK FOR QUEUE ENTRY
  8845. NZ X4,CDA IF ANOTHER ENTRY ALREADY QUEUED
  8846. SA6 BJBA STORE *PPI*
  8847. SA7 BJBB STORE *EPN*
  8848. SX6 B3 STORE POT POINTER
  8849. SB3 B0
  8850. SA6 BJBC
  8851. RJ INO ISSUE NULL OUTPUT
  8852. SA1 BJBC RESTORE POT POINTER
  8853. SB3 X1+
  8854. EQ BJB2 SET UP *ENEJ* CALL
  8855.  
  8856. BJB1 SA6 BJBA STORE *PPI*
  8857. SA7 BJBB STORE *EPN*
  8858. BJB2 SA1 A0+VROT
  8859. SX2 B1
  8860. BX6 X2*X1 ABORT ON TERMINAL TABLE INTERLOCKED
  8861. ZR X6,BJB5 IF JOB IS IN ENABLED STATE
  8862. SA3 A0+VDCT CHECK CONNECTION TYPE
  8863. LX3 59-47
  8864. NG X3,PCSX IF CONNECTION LOANED
  8865. BX1 -X2*X1 SET THE TERMINAL BUSY
  8866. LX2 1-0
  8867. BX1 X2+X1 SET JOB IN SYSTEM FLAG
  8868. MX2 48
  8869. SX6 B3 STORE COMMAND LINE POT POINTER
  8870. LX2 36
  8871. BX2 X1*X2
  8872. LX6 36
  8873. BX6 X2+X6
  8874. SA6 A1 REWRITE *VROT*
  8875. SB3 B0
  8876. RJ GOP GET POT FOR EJT PARAMETER BLOCK
  8877. SA1 A0+VDCT READ VDCT FOR NETWORK TERMINAL
  8878. SA3 BJBA GET *PPI*
  8879. IFNET BJB2.1 IF NETWORK TERMINAL
  8880. SA2 A3+B1 GET ENTRY POINT NAME
  8881. BX6 X2
  8882. BX7 X3
  8883. SA6 B4 SAVE ENTRY POINT NAME
  8884. SA7 B4+B1 SAVE *PPI*
  8885. RJ RDC WAIT FOR VDCT INTERLOCK
  8886. SA2 B4+ RESTORE ENTRY POINT NAME
  8887. BX7 X2
  8888. SA3 A2+B1 RESTORE *PPI*
  8889. SA7 BJBB
  8890. BJB2.1 SX2 B1
  8891. LX2 54-0
  8892. BX6 X1+X2
  8893. SA6 A1 SET READ DATA FLAG
  8894. SA1 A0+VSTT SET JOB COMPLETION FLAG
  8895. BX6 X1+X2
  8896. SA6 A1 REWRITE VSTT
  8897. SX1 B1
  8898. BX1 X1*X3
  8899. ZR X1,BJB3 IF PRIMARY FILE NOT TO BE SORTED
  8900. BX3 -X1*X3 CLEAR *PPI* SORT FLAG
  8901. SA1 A0+VFNT
  8902. MX2 42
  8903. BX2 X1*X2
  8904. ZR X2,BJB3 IF NO PRIMARY FILE EXISTS
  8905. SA1 A0+VSTT
  8906. LX1 59-52
  8907. PL X1,BJB3 IF SORT NOT NEEDED
  8908. SX3 X3+B1 RESTORE *PPI* SORT FLAG
  8909. MX6 1 CLEAR SORT FLAG
  8910. BX6 -X6*X1
  8911. LX6 52-59
  8912. SA6 A1 REWRITE VSTT
  8913. BJB3 SA1 A0+VROT STORE *PPI* IN TERMINAL TABLE
  8914. MX2 54
  8915. LX2 48
  8916. BX6 X1*X2 CLEAR PREVIOUS INDEX
  8917. BX2 X3
  8918. LX2 48
  8919. BX6 X2+X6 ADD NEW INDEX
  8920. SA6 A1 REWRITE VROT
  8921. PARAM ENEJ,X3,BJBB
  8922. RJ PMR PROCESS MONITOR REQUEST
  8923. NZ X2,BJB4 IF ERROR RETURNED
  8924. SB4 B0
  8925. RJ DPT RETURN THE PARAMETER BLOCK POT
  8926. SA1 A0+VFST GET NEXT OPERATION INDEX
  8927. MX6 5
  8928. LX6 17
  8929. BX7 X6*X1
  8930. BX6 -X6*X1 CLEAR OLD INDEX
  8931. AX7 12
  8932. SA6 A1 REWRITE VFST
  8933. SX6 X7-TNOIL
  8934. PL X6,BJB4 IF NEXT OPERATION NOT DEFINED
  8935. SA1 X7+TNOI
  8936. SB7 X1
  8937. SB3 B0
  8938. BX7 X7-X7
  8939. JP B7 START NEXT OPERATION
  8940.  
  8941. BJB4 RJ UEC PROCESS UNEXPECTED ERROR CODE
  8942. SB4 B0
  8943. RJ DPT RETURN THE PARAMETER BLOCK POT
  8944. SA1 A0+VROT SET TERMINAL NOT BUSY
  8945. MX2 57 CLEAR JOB CONTINUATION AND JOB IN SYSTEM
  8946. BX6 X1*X2
  8947. SX3 B1
  8948. BX6 X3+X6
  8949. MX3 -12 REUSE COMMAND LINE POT POINTER
  8950. LX3 36
  8951. BX2 -X3*X1
  8952. BX6 X3*X6
  8953. AX2 36
  8954. SA6 A1 REWRITE VROT
  8955. SA1 A0+VSTT CLEAR JOB COMPLETION FLAG
  8956. LX3 54-0
  8957. BX6 -X3*X1
  8958. SA6 A1
  8959. SB3 X2
  8960. SMA X6,( SYSTEM ERROR."NL")
  8961. SB4 B0
  8962. RJ MVA ISSUE MESSAGE
  8963. SX7 3RIAF SET NVF PARAMETER
  8964. LX7 42
  8965. SB3 B0
  8966. SA7 A0+VFNT
  8967. IFNET HNG
  8968. RJ RDC WAIT FOR DRIVER TO ISSUE MESSAGE
  8969. RJ CLE CLEAN UP TERMINAL TABLE
  8970. SX7 DIN
  8971. SX2 /1TD/LGI SET RELOGIN REQUEST
  8972. EQ DCR1 MAKE DRIVER REQUEST
  8973.  
  8974. * ABORT BEGIN JOB PROCESS.
  8975.  
  8976. BJB5 SX6 3RBJB *ABT* ENTRY PRESET
  8977. RJ ABT ABORT
  8978. EQ PCSX EXIT
  8979.  
  8980.  
  8981. BJBA CON 0 PRE-PROCESSOR INDEX
  8982. BJBB CON 0 ENTRY POINT NAME
  8983. BJBC CON 0 COMMAND POT POINTER
  8984. TNOI SPACE 4,10
  8985. ** TNOI - TABLE OF NEXT OPERATION INDICES.
  8986. *
  8987. * 60/ NEXT OPERATION ADDRESS
  8988.  
  8989.  
  8990. TNOI BSS 0
  8991. CON PCSX RETURN FOR NO SPECIFED OPERATION
  8992. CON LIS7 LIST AFTER SORT
  8993. CON ETX3 EXIT TEXT MODE AFTER PACK COMPLETE
  8994. CON PUB7 COMPLETE USER BREAK PROCESSING
  8995.  
  8996. TNOIL EQU *-TNOI
  8997. CDA SPACE 4,10
  8998. ** CDA - ISSUE *COMMAND ACTIVE* DIAGNOSTIC.
  8999. *
  9000. * EXIT TO PCS5 TO ISSUE MESSAGE.
  9001.  
  9002.  
  9003. CDA BSS 0 ENTRY
  9004. SMA X6,( COMMAND ACTIVE."NL") SET MESSAGE ADDRESS
  9005. EQ PCS5 ISSUE MESSAGE
  9006. EJB SPACE 4,20
  9007. CJA SPACE 4,10
  9008. ** CJA - CLEAR JOB ACTIVITY.
  9009. *
  9010. * CLEARS INP$ REQUESTS FROM REENTRY QUEUE. REENTERS UNTIL
  9011. * REENTRY QUEUE IS CLEAR. ON REENTRY, IF A SECOND CJA$
  9012. * REENTRY EXITS IN THE QUEUE, EXIT AND PROCESS THE SECOND
  9013. * CJA$ REENTRY.
  9014. *
  9015. * ENTRY (X7) = RETURN ADDRESS.
  9016. * (B3) = ANYTHING TO BE SAVED.
  9017. *
  9018. * CALLS DPT, GRT, UQS.
  9019.  
  9020.  
  9021. CJA BSS 0 ENTRY
  9022. MX2 -12
  9023. SX1 B3
  9024. LX7 18
  9025. BX1 -X2*X1
  9026. BX7 X1+X7
  9027. SA7 CJAA SAVE RETURN ADDRESS
  9028. CJA1 RJ UQS UPDATE REENTRY QUEUE STACK
  9029. SB5 B2+ CHECK NEXT QUEUE ENTRY
  9030. RJ GRT
  9031. BX3 X4
  9032. AX4 48
  9033. SX6 X4-INP$
  9034. NZ X6,CJA4 IF NOT INPUT REQUEST
  9035. SX6 B0+ CLEAR ENTRY
  9036. SA6 A4
  9037. MX1 -12 GET POSSIBLE POT POINTER
  9038. AX3 12
  9039. BX1 -X1*X3
  9040. ZR X1,CJA1 IF NO POT POINTER IN REQUEST
  9041. SB3 X1 DROP POT
  9042. SB4 B0
  9043. RJ DPT
  9044. EQ CJA1 LOOP THROUGH STACK
  9045.  
  9046. CJA4 SA1 CJAA RESTORE ENTRY CONDITIONS
  9047. TA4 B2,VRAP CHECK REENTRY QUEUE
  9048. SX5 CJA$
  9049. SB3 X1
  9050. AX1 18
  9051. BX7 X1
  9052. NZ X4,PCS1 IF OTHER REENTRIES PRESENT
  9053. SB7 X7
  9054. JP B7 RETURN TO CALLER
  9055.  
  9056. * REENTRY FROM WAIT-COMPLETION QUEUE.
  9057.  
  9058. CJA5 SB5 B2 GET NEXT QUEUE ENTRY
  9059. RJ GRT
  9060. AX4 48
  9061. SX6 X4-CJA$
  9062. NZ X6,CJA IF NOT SUBSEQUENT *CJA* ENTRY
  9063. EQ PCSX EXIT
  9064.  
  9065.  
  9066. CJAA CON 0 STORAGE FOR RETURN ADDRESS
  9067. FTP SPACE 4,10
  9068. ** FTP - FINISH TIMEOUT PROCESSING.
  9069. *
  9070. * EXIT TO HNG IF DETACH SUCCESSFUL.
  9071. * TO FLO IF DETACHED FAILED.
  9072. *
  9073. * CALLS CDP, DAP, DLP, DPT, SLF, SSI, SSP.
  9074.  
  9075.  
  9076. FTP BSS 0 ENTRY
  9077. IFMUX FTP1
  9078. TA1 B2,VMST CHECK TIMEOUT FLAG
  9079. MX6 59 CLEAR INPUT ENABLED
  9080. LX6 53-0
  9081. BX6 X6*X1
  9082. LX1 59-48
  9083. NG X1,FTP1 IF TIMEOUT IN PROGRESS
  9084. SA6 A1 REWRITE VMST
  9085. SB3 B0
  9086. EQ RES RESTART TERMINAL
  9087.  
  9088. FTP1 SX7 FTP2 SET REENTRY ADDRESS
  9089. SA1 A0+VSTT
  9090. SX2 401B
  9091. LX2 48
  9092. BX6 X2*X1
  9093. NZ X6,PCSX IF LOGOUT OR DETACH IN PROGRESS
  9094. EQ CJA CLEAR JOB ACTIVITY
  9095.  
  9096. FTP2 SA1 A0+VUIT CHECK EJT ORDINAL
  9097. MX2 -12
  9098. BX2 -X2*X1
  9099. ZR X2,HNG IF NO EJT ORDINAL
  9100. RJ DLP DUMP LAST INPUT POT
  9101. RJ SSP RESET REGISTERS
  9102. SX5 FTP3$
  9103. EQ PCS1 WAIT FOR DUMP TO COMPLETE
  9104.  
  9105. FTP3 SX7 TORC SET TIMEOUT REASON CODE
  9106. EQ DTJ DETACH JOB
  9107.  
  9108. * NORMAL (NO ERROR) RETURN.
  9109.  
  9110. FTP4 RJ SLF SET LOGOUT IN PROGRESS
  9111. SA1 A0+VFST SET UP TIMEOUT MESSAGE
  9112. MX2 24
  9113. BX6 X1*X2
  9114. SX3 1R.
  9115. LX3 30
  9116. BX6 X3+X6
  9117. SA6 SSIB
  9118. RJ DAP DROP ASSIGNED POTS
  9119. RJ SSP RESET REGISTERS
  9120. SX6 B1 SEND TIMEOUT MESSAGE
  9121. RJ SSI SEND SRU INFORMATION
  9122. SX7 3RBYE SET NVF PARAMETER
  9123. LX7 42
  9124. SB3 B0
  9125. SA7 A0+VFNT
  9126. RJ CDP CLEAR DETACH IN PROGRESS
  9127. SX5 HNG$
  9128. EQ PCS1 EXIT AND DISCONNECT
  9129.  
  9130. * ERROR ON DETACH RETURNS HERE.
  9131.  
  9132. FTP5 SA1 A0+VSTT CLEAR LOGOUT AND DETACH
  9133. SX6 0401B
  9134. LX6 48
  9135. BX6 -X6*X1
  9136. SA6 A1 REWRITE VSTT
  9137. SB4 B0
  9138. ZR B3,FTP6 IF NO HELD POTS
  9139. RJ DPT DROP POTS
  9140. FTP6 SX7 2 SET FORCE LOGOUT VALUE
  9141. EQ FLO FORCE LOGOUT
  9142. IEX SPACE 4
  9143. ** IEX - ISSUE EXECUTE ONLY MESSAGE.
  9144.  
  9145.  
  9146. IEX BSS 0
  9147. SMA X6,( EXECUTE ONLY FILE."NL")
  9148. RJ SSP
  9149. EQ PCS5 ISSUE MESSAGE
  9150. IGN SPACE 4,20
  9151. ** IGN - IGNORE QUEUE ENTRY.
  9152. *
  9153. * DROPS REENTRY POTS AND EXITS FROM PCS PROCESSING.
  9154. *
  9155. * ENTRY (B3) = REENTRY POT CHAIN POINTER.
  9156. *
  9157. * EXIT POTS DROPPED.
  9158. *
  9159. * CALLS DPT.
  9160.  
  9161.  
  9162. IGN BSS 0 ENTRY
  9163. ZR B3,PCSX IF NO POTS TO BE DROPPED
  9164. SB4 B0+ DROP POT CHAIN
  9165. RJ DPT
  9166. EQ PCSX EXIT
  9167. IPF SPACE 4
  9168. ** IPF - ISSUE NO PRIMARY FILE NAME.
  9169.  
  9170.  
  9171. IPF BSS 0
  9172. SMA X6,( NO PRIMARY FILE."NL")
  9173. RJ SSP
  9174. EQ PCS5 ISSUE MESSAGE
  9175. IPL SPACE 4
  9176. ** IPL - ISSUES MESSAGE *INCORRECT PARAMETER.*
  9177. *
  9178. * ENTRY-
  9179. * NONE.
  9180.  
  9181.  
  9182. IPL BSS 0
  9183. SMA X6,( INCORRECT PARAMETER."NL")
  9184. RJ SSP
  9185. EQ PCS5 ISSUE MESSAGE
  9186. PBS SPACE 4
  9187. ** PBS - PROCESS COMMAND IN SYSTEM.
  9188. * PSS - PROCSS COMMAND IN SYSTEM AFTER SORT.
  9189. *
  9190. * ENTRY-
  9191. * SEE SSP.
  9192.  
  9193.  
  9194. PSS SX6 B1 SET *PPI* TO SORT FILE
  9195. EQ PBS1
  9196.  
  9197. PBS SX6 B0+ SET *PPI* NOT TO SORT THE FILE
  9198.  
  9199. * IF IN BATCH SUBSYSTEM ISSUE COMMANDS WITHOUT *$* PREFIX.
  9200.  
  9201. PBS1 SX1 LBUF COMMAND BUFFER WITH *$* PREFIX
  9202. SA2 A0+VSTT CHECK FOR BATCH SUBSYSTEM
  9203. MX5 -3
  9204. LX2 -12
  9205. BX5 -X5*X2
  9206. SX2 X5-BATS
  9207. NZ X2,PBS2 IF NOT BATCH SUBSYSTEM
  9208. SX1 PBUF COMMAND BUFFER WITHOUT *$* PREFIX
  9209. PBS2 RJ PCB PACK COMMAND
  9210. SA1 PBUF
  9211. BX7 X1 SET *EPN*
  9212. EQ BJB BEGIN JOB
  9213. RDY SPACE 4
  9214. ** RDY - ISSUES READY MESSAGE AND RETURNS TO PCS
  9215. *
  9216. * (A0) = TERMINAL TABLE ADDRESS.
  9217. * (B2) = TERMINAL NUMBER.
  9218. * (B3) = POT POINTER OR 0.
  9219.  
  9220.  
  9221. RDY BSS 0
  9222. IFNET /IAFEX4/RDY IF NETWORK TERMINAL
  9223. SA1 A0+VSTT SET SUBSYSTEM
  9224. SA2 A0+VDCT CHECK TAPE MODE
  9225. LX2 59-48
  9226. MX6 -3
  9227. LX1 -12
  9228. BX6 -X6*X1 EXTRACT CURRENT SUBSYSTEM
  9229. SX6 RDYA+X6 SELECT MESSAGE
  9230. PL X2,PCS5 ISSUE MESSAGE IF NOT TAPE MODE
  9231. SX6 =2L ISSUE NULL MESSAGE
  9232. EQ PCS5 ISSUE MESSAGE
  9233. PCS TITLE PCS - PROCESS QUEUE ENTRY.
  9234. PCS SPACE 4
  9235. ** PCS - PROCESS QUEUE ENTRY.
  9236. *
  9237. * SAVES PARAMETERS AND RETURN ADDRESS AND THEN EXECUTES STACK
  9238. * ENTRY.
  9239. *
  9240. * ENTRY (X5) = REENTRY STACK ENTRY.
  9241. * (B7) = ADDRESS OF PROCESSING ROUTINE.
  9242. *
  9243. * CALLS PROCESSING ROUTINE:
  9244. * (B2) = STACK ENTRY BITS 00-11 (TERMINAL NUMBER).
  9245. * (B3) = STACK ENTRY BITS 12-23 (POT POINTER).
  9246. * (B4) = POT ADDRESS.
  9247. * (X7) = STACK ENTRY BITS 24-47, RIGHT JUSTIFIED.
  9248.  
  9249.  
  9250. ** PCS5 - EXIT TO ASSIGN MESSAGE.
  9251. *
  9252. * LENGTH IS ASSUMED TO BE 7 OR LESS CM WORDS AND
  9253. * TERMINATES WITH A ZERO BYTE.
  9254. *
  9255. * MESSAGE IS 7 OR LESS WORDS IN LENGTH AND IS TERMINATED
  9256. * BY LINE TERMINATOR OR CONTROL BYTE.
  9257. *
  9258. * ENTRY-
  9259. * (B7) = ADDRESS OF PROCESSING ROUTINE
  9260. * (X5) = STACK ENTRY
  9261.  
  9262.  
  9263. ** ENTER- WITH PARAMETERS FOR MVA.
  9264.  
  9265. PCS5 SB4 0 SET LENGTH
  9266.  
  9267.  
  9268. ** PCS6 - EXIT TO ASSIGN MESSAGE.
  9269. *
  9270. * ENTRY (B4) = MESSAGE LENGTH IN CM WORDS.
  9271.  
  9272.  
  9273. PCS6 RJ MVA ISSUE MESSAGE
  9274.  
  9275. PCS SUBR ENTRY/EXIT
  9276. BX7 X5
  9277. SA7 SSPA
  9278. RJ SSP SET PARAMETERS
  9279. JP B7
  9280.  
  9281. ** PCS1 - EXIT TO MAKE QUEUE ENTRY.
  9282. *
  9283. * ENTRY (A0) = TERMINAL TABLE ADDRESS.
  9284. * (X5) = TRRT ORDER CODE.
  9285. * (X7) = QUEUE ENTRY BITS 24-47.
  9286. * (B2) = TERMINAL NUMBER.
  9287. * (B3) = QUEUE ENTRY BITS 12-23.
  9288. *
  9289. * EXIT QUEUE ENTRY MADE.
  9290. * VROT BIT ZERO CLEARED (BUSY) FOR ITAQ OR ITOQ
  9291. * REQUEST.
  9292.  
  9293. PCS1 BSS 0
  9294. SA1 TRRT-2000B+X5
  9295. SB7 B0
  9296. AX1 54
  9297. ZR X1,PCS3 IF FOR NO QUEUE
  9298. SB7 TRQT+X1
  9299. PCS3 LX5 48
  9300. MX6 -24
  9301. BX7 -X6*X7
  9302. LX7 24
  9303. BX5 X5+X7
  9304. MX6 -12
  9305. SX7 B3
  9306. BX7 -X6*X7
  9307. LX7 12
  9308. BX5 X5+X7
  9309. RJ MQE MAKE ENTRY IN REENTRY TABLE
  9310. NZ X2,PCSX IF NOT CURRENT ENTRY
  9311. SB6 B7-ITAQ
  9312. SB7 B7-ITOQ
  9313. ZR B6,PCS4 IF 1TA CALL
  9314. NZ B7,PCSX IF NOT 1TO OR 1TA CALL
  9315. PCS4 SA1 A0+VROT SET TERMINAL TABLE BUSY FOR 1TA AND 1TO
  9316. MX2 59
  9317. BX6 X1*X2
  9318. SA6 A1 REWRITE VROT
  9319. EQ PCSX RETURN TO CALLING ROUTINE
  9320. TITLE PMQ - PROCESS MONITOR WAIT QUEUE.
  9321. ** PMQ - PROCESS MONITOR WAIT QUEUE.
  9322. *
  9323. * RETURNS CONTROL TO THE ROUTINE WHICH MADE THE MONITOR
  9324. * REQUEST WHEN THE COMPLETE BIT IN THE PARAMETER BLOCK
  9325. * IS SET.
  9326. *
  9327. * USES X - 1, 2, 3, 4, 5, 6, 7.
  9328. * A - 0, 1, 2, 4, 5, 6, 7.
  9329. * B - 3, 5, 6, 7,
  9330. *
  9331. * CALLS GQE, GRT, PCS, SSP, UQS.
  9332. *
  9333. * MACROS TTADD.
  9334.  
  9335.  
  9336. PMQ SUBR ENTRY/EXIT
  9337. SA4 MNWQ CHECK QUEUE CONTENTS
  9338. SX7 X4
  9339. SA2 A4+B1
  9340. ZR X7,PMQX IF QUEUE EMPTY
  9341. SA1 RTIM CHECK TIME SINCE QUEUE PROCESSED
  9342. SX3 MWQT
  9343. IX2 X1-X2
  9344. IX2 X3-X2
  9345. PL X2,PMQX IF TIME DELAY NOT COMPLETE
  9346. BX6 X1 UPDATE PROCESSING TIME
  9347. SA6 A2
  9348.  
  9349. * SET QUEUE PROCESSING POINTERS.
  9350.  
  9351. SA7 PMQA LAST TERMINAL OF QUEUE
  9352. AX4 18 FIRST TERMINAL OF QUEUE
  9353. BX7 X7-X7
  9354. SX6 X4
  9355. SB5 B0
  9356. SA6 A7+B1 NEXT TERMINAL = FIRST TERMINAL
  9357. SA7 A6+B1 CLEAR TERMINAL LINK
  9358.  
  9359. * ADVANCE TO NEXT TERMINAL.
  9360.  
  9361. PMQ1 SA1 PMQA LAST TERMINAL IN QUEUE
  9362. SX7 B5
  9363. IX4 X1-X7
  9364. ZR X4,PMQX IF LAST TERMINAL CHECKED
  9365. SA5 A1+B1 NEXT TERMINAL
  9366. SB5 X5
  9367. ZR X5,PMQX IF NO NEXT TERMINAL
  9368. RJ GRT READ QUEUE ENTRY
  9369. ZR X4,PMQX IF NO QUEUE ENTRY
  9370. MX5 -12 SET NEXT TERMINAL NUMBER
  9371. BX7 -X5*X4
  9372. TTADD B5,A0,X1,X2
  9373. SA7 A5
  9374.  
  9375. * CHECK PARAMETER BLOCK STATUS.
  9376.  
  9377. AX4 12
  9378. BX2 -X5*X4
  9379. LX2 3
  9380. TA1 X2,VBMP
  9381. LX1 59-0
  9382. NG X1,PMQ2 IF REQUEST COMPLETE
  9383. SX7 B5 RETAIN TERMINAL IN QUEUE
  9384. SA7 A7+B1
  9385. EQ PMQ1 ADVANCE TO NEXT TERMINAL
  9386.  
  9387. * PROCESS COMPLETED ENTRY.
  9388.  
  9389. PMQ2 SA1 PMQC GET LINK TO CURRENT TERMINAL
  9390. SB6 MNWQ
  9391. SB7 X1
  9392. RJ GQE GET QUEUE ENTRY
  9393. UX4,B7 X5
  9394. SA2 TRRT+B7
  9395. SB7 X2
  9396. RJ PCS PROCESS FUNCTION
  9397. RJ SSP RESET PARAMETERS
  9398. RJ UQS UPDATE QUEUE STACK
  9399. RJ SSP RESET PARAMETERS
  9400. SB5 B2 SET CURRENT TERMINAL NUMBER
  9401. EQ PMQ1 ADVANCE TO NEXT QUEUE ENTRY
  9402.  
  9403.  
  9404. PMQA CON 0 LAST TERMINAL IN QUEUE
  9405. PMQB CON 0 NEXT TERMINAL IN QUEUE
  9406. PMQC CON 0 TERMINAL LINKED TO CURRENT TERMINAL
  9407. PPU TITLE PPU - PROCESS PPU REQUESTS.
  9408. PPU SPACE 4
  9409. ** PPU - PROCESSES ALL *IAFEX* REQUESTS THAT REQUIRE A PPU
  9410. * TO BE ASSIGNED. THESE REQUESTS ARE TAKEN FROM *IAFEX,S*
  9411. * INTERNAL QUEUE, ORDERED APPROPRIATELY, AND PLACED INTO POT
  9412. * QUEUES FOR THE VARIOUS PPU PROGRAMS.
  9413.  
  9414.  
  9415. * POST PROCESS *1TA* REQUESTS.
  9416.  
  9417. PPU SUBR ENTRY/EXIT
  9418. SA1 PITA
  9419. ZR X1,PPU2 IF *1TA* ACTIVE
  9420. BX2 X1
  9421. AX1 36
  9422. NZ X1,PPU2 IF REQUEST NOT MADE YET
  9423. MX1 -12
  9424. BX3 -X1*X2
  9425. AX2 12
  9426. SX1 X2
  9427. ZR X1,PPU1 IF POST PROCESSING DONE
  9428. SX6 B1 SET COMPLETION
  9429. SA6 A1
  9430. SB3 X3 DROP POTS
  9431. SB4 B0
  9432. RJ DPT
  9433.  
  9434. * PROCESS *1TA* REQUEST QUEUE.
  9435.  
  9436. PPU1 SA1 ITAQ CHECK IF REQUESTS WAITING
  9437. UX2,B2 X1
  9438. ZR B2,PPU2 IF NO REQUESTS
  9439. SA3 PPUA+1 CHECK IF REQUEST HAS WAITED 1/2 SECOND
  9440. SA2 RTIM
  9441. IX4 X2-X3
  9442. AX4 9
  9443. ZR X4,PPU2 IF TIME NOT ELASPED
  9444. BX6 X2
  9445. SA6 A3
  9446. SX0 A1 SORT AND BUILD REQUEST QUEUE FOR *1TA*
  9447. RJ BRQ
  9448. ZR X6,PPU2 IF NO REQUEST QUEUE GENERATED
  9449. SA1 PPUA
  9450. BX7 X1+X6
  9451. SA7 PITA
  9452. SA7 PPUC SAVE *1TA* REQUEST FOR DEBUG
  9453.  
  9454. * POST PROCESS *1TO* REQUESTS.
  9455.  
  9456.  
  9457. PPU2 SA1 PITO
  9458. BX2 X1
  9459. AX1 36
  9460. NZ X1,PPUX IF REQUEST NOT MADE YET
  9461. ZR X2,PPUX IF *1TO* ACTIVE
  9462. AX2 24
  9463. ZR X2,PPU7 IF POST PROCESSING DONE
  9464. LX2 3
  9465. TX1 X2+VCPC,VBMP SET LWA+1 OF POT
  9466. LX2 33
  9467. SX3 X1-VCPC SET FWA OF POT
  9468. LX1 18
  9469. BX2 X2+X3
  9470. BX6 X2+X1
  9471. SA6 PPUB+1
  9472. PPU3 SA1 PPUB+1 GET NEXT ENTRY TO PROCESS
  9473. MX2 24
  9474. SA5 X1
  9475. BX3 X2*X1
  9476. ZR X5,PPU6 IF LAST ENTRY
  9477. SX6 B1
  9478. ZR X3,PPU6 IF END OF POT CHAIN
  9479. IX6 X1+X6
  9480. AX1 18
  9481. BX2 X1-X6
  9482. SX3 X2
  9483. NZ X3,PPU4 IF NOT END OF POT
  9484. AX1 18 GET POT LINK
  9485. SB3 X1
  9486. RJ GPL
  9487. SX4 B3
  9488. SX7 B4+VCPC
  9489. LX4 36
  9490. SX6 B4
  9491. LX7 18
  9492. BX6 X6+X4
  9493. BX6 X6+X7
  9494.  
  9495. * THE FORMAT OF THE *1TO* REQUEST UPON RETURN FROM *1TO* IS
  9496. *
  9497. *T 6/ RT,6/ NP,12/ 0,12/ LP,12/ FP,12/ TN
  9498. *
  9499. * IF INPUT WAS DUMPED TO THE PRIMARY FILE,
  9500. * (RT) = 0, INPUT REQUEST.
  9501. * (NP) = 0.
  9502. * (LP) = LAST POT TO DROP.
  9503. * (FP) = FIRST POT TO DROP.
  9504. * (TN) = TERMINAL NUMBER.
  9505. *
  9506. * IF OUTPUT WAS REQUESTED FROM THE PRIMARY OR ROLLOUT FILE,
  9507. * (RT) = 1, OUTPUT REQUEST.
  9508. * (NP) = NUMBER OF POTS CONTAINING OUTPUT.
  9509. * (LP) = LAST POT CONTAINING OUTPUT.
  9510. * (FP) = FIRST POT CONTAINING OUTPUT.
  9511. * (TN) = TERMINAL NUMBER.
  9512. *
  9513. * IF OUTPUT WAS REQUESTED, A *VASO* QUEUE ENTRY WILL
  9514. * BE GENERATED TO ASSIGN THE DATA TO THE TERMINAL. IF
  9515. * INPUT WAS DUMPED TO THE PRIMARY FILE, A *VDPO* QUEUE
  9516. * ENTRY WILL BE FORMED TO DROP THE EMPTY POTS.
  9517.  
  9518. PPU4 SA6 A1
  9519. MX4 -42 MASK IF *VASO*
  9520. BX3 X5
  9521. MX1 -12
  9522. AX5 48
  9523. BX1 -X1*X3 EXTRACT TERMINAL NUMBER
  9524. SB2 X1+
  9525. SX2 VASO SET TO ASSIGN OUTPUT
  9526. NZ X5,PPU5 IF OUTPUT REQUEST
  9527. SX2 VDPO SET TO DROP POTS
  9528. MX6 12
  9529. MX4 -36 MASK IF *VDPO*
  9530. LX6 24
  9531. BX6 X6*X3
  9532. ZR X6,PPU3 IF NO POTS TO DROP
  9533. PPU5 SA1 TSTR-2000B+X2
  9534. LX5 36 MOVE POT COUNT FOR *VADO*
  9535. BX3 X3+X5
  9536. BX5 -X4*X3
  9537. LX2 48
  9538. BX5 X5+X2
  9539. SB7 X1
  9540. RJ PCS
  9541. EQ PPU3
  9542.  
  9543. PPU6 BX6 X6-X6
  9544. SA6 A1
  9545. SA2 PITO DROP POTS
  9546. SX7 B1
  9547. AX2 24
  9548. SA7 A2
  9549. SB3 X2
  9550. SB4 B0
  9551. RJ DPT
  9552.  
  9553. * PROCESS *1TO* REQUEST QUEUE.
  9554.  
  9555. PPU7 SA1 ITOQ
  9556. UX2 X1,B2
  9557. ZR B2,PPUX IF NO ENTRIES
  9558. SX0 A1
  9559. RJ BRQ
  9560. ZR X6,PPUX IF NO REQUEST QUEUE GENERATED
  9561. SA1 PPUB
  9562. LX6 24
  9563. BX7 X1+X6
  9564. SA7 PITO
  9565. SA7 PPUC+1 SAVE *1TO* REQUEST FOR DEBUG
  9566. EQ PPUX EXIT
  9567.  
  9568. PPUA VFD 18/3R1TA,6/0,6/0,18/PITA,12/0
  9569. CON 0 TIME OF LAST 1TA REQUEST
  9570. PPUB VFD 18/3R1TO,6/0,12/0,6/0,18/PITO
  9571. CON 0 NEXT ENTRY TO POSTPROCESS
  9572. PPUC CON 0 LAST *1TA* REQUEST
  9573. CON 0 LAST *1TO* REQUEST
  9574. RPC SPACE 4,30
  9575. ** RPC - REFILL POT CHAINS.
  9576. *
  9577. * FOR EACH *TGPM* QUEUE, *RPC* GETS QUEUE POINTERS FROM THE
  9578. * QUEUE STATUS WORDS AND PASSES THEM TO ROUTINE *FPQ* TO FILL
  9579. * THE QUEUE WITH POT CHAINS. THE QUEUE STATUS WORDS ARE
  9580. * UPDATED AFTER EACH QUEUE HAS BEEN FILLED.
  9581. *
  9582. * ENTRY (VGPL) = *TGPM* QUEUE STATUS WORDS.
  9583. * 6/PCL,6/PCC,12/PFP,12/NFP,12/BOQ,12/EOQ.
  9584. * PCL = POT CHAIN LENGTH.
  9585. * PCC = POT CHAIN COUNT(CONTROL VALUE).
  9586. * PFP = PREVIOUS FILL POINTER.
  9587. * NFP = NEXT FILL POINTER.
  9588. * BOQ = BEGINNING OF QUEUE.
  9589. * EOQ = END OF QUEUE.
  9590. *
  9591. * EXIT IF ENOUGH FIELD LENGTH WAS AVAILABLE, THE *TGPM*
  9592. * QUEUES HAVE BEEN FILLED TO THEIR CONTROL VALUES.
  9593. * IF NOT ENOUGH FIELD LENGTH WAS AVAILABLE, AS MANY
  9594. * ENTRIES AS POSSIBLE WERE FILLED WITH POT CHAINS.
  9595. * PCC, PFP, AND NFP IN *VGPL* WORDS HAVE BEEN UPDATED.
  9596. *
  9597. * USES A - 1, 2, 6.
  9598. * X - 0, 1, 2, 3, 4, 6.
  9599. * B - 2, 3, 4, 5.
  9600. *
  9601. * CALLS FPQ.
  9602.  
  9603.  
  9604. RPC SUBR ENTRY/EXIT
  9605. SX6 VGPL SAVE STATUS WORD ADDRESS
  9606. RPC1 SA6 RPCA
  9607. SA1 X6
  9608. BX2 X1 GET POINTERS FROM *VGPL* WORD
  9609. AX2 24
  9610. MX3 -12
  9611. BX4 -X3*X2
  9612. SB3 X4 (B3) = NEXT FILL POINTER
  9613. AX2 12
  9614. BX4 -X3*X2
  9615. SB4 X4 (B4) = PREVIOUS FILL POINTER
  9616. AX2 12
  9617. MX3 -6
  9618. BX4 -X3*X2
  9619. SB5 X4 (B5) = POT CHAIN COUNT(CONTROL VALUE)
  9620. AX2 6
  9621. BX4 -X3*X2
  9622. SB2 X4 (B2) = LENGTH OF POT CHAIN FOR THIS QUEUE
  9623. RJ FPQ FILL POT QUEUE
  9624. SA2 RPCA UPDATE QUEUE STATUS WORD
  9625. SA1 X2
  9626. MX3 30 CLEAR OLD POINTERS
  9627. LX3 24
  9628. BX6 X3*X1
  9629. SX3 B5 INSERT UPDATED CHAIN COUNT
  9630. LX3 48
  9631. BX6 X6+X3
  9632. LX4 36 INSERT UPDATED PREVIOUS FILL POINTER
  9633. BX6 X6+X4
  9634. LX0 24 INSERT UPDATED NEXT FILL POINTER
  9635. BX6 X6+X0
  9636. SA6 X2 REWRITE *TGPM* QUEUE STATUS WORD
  9637. SX2 X2+B1
  9638. BX6 X2
  9639. SX3 X2-VGPE
  9640. NG X3,RPC1 IF NOT LAST QUEUE STATUS WORD
  9641. EQ RPCX EXIT
  9642.  
  9643.  
  9644. RPCA CON 0 ADDRESS OF *TGPM* QUEUE STATUS WORDS
  9645. SPR TITLE SPR - SET FIELD LENGTH.
  9646. SPR SPACE 4,20
  9647. ** SPR - EVALUATE AND ADJUST FIELD LENGTH.
  9648. *
  9649. * INCREASE EVALUATION IS DONE EACH TIME *SPR* IS ENTERED.
  9650. * FIELD LENGTH INCREASES ARE PROCESSED BY A CALL TO *1TA*.
  9651. * A THROTTLE FLAG IS USED TO SLOW DOWN THE USAGE OF POTS
  9652. * SO IAF WILL NOT RUN OUT OF POTS BEFORE *1TA* GETS THE
  9653. * FIELD LENGTH INCREMENT.
  9654. *
  9655. * FIELD LENGTH DECREASE EVALUATION IS PERFORMED AFTER THE
  9656. * INTERVAL TIME HAS ELAPSED. THE TIME CYCLE IS DETERMINED
  9657. * DYNAMICALLY ACCORDING TO THE AMOUNT OF FIELD LENGTH
  9658. * VARIATION. MEMORY DECREASES ARE MADE BY THE SYSTEM
  9659. * *MEMORY* MACRO.
  9660. *
  9661. * THE INITIAL RESET START TIME IS SET TO 6 MINUTES TO
  9662. * ALLOW IAF TO PERFORM JOB RECOVERY.
  9663.  
  9664.  
  9665. SPR9 SA7 VPAL RESET TOTAL POTS AVAILABLE
  9666. BX6 X2
  9667. SA6 SPRK RESTORE CURRENT FL IN USE
  9668. SX6 3RSPR
  9669. NG X7,ABT+1 IF POTS AVAILABLE GOES NEGATIVE
  9670. MEMORY CM,,,X2 RELEASE MEMORY
  9671. SA1 SPRL COUNT MEMORY DECREASE
  9672. SX6 X1+B1
  9673. SA6 A1
  9674.  
  9675. SPR SUBR ENTRY/EXIT
  9676. SA1 VCPL
  9677. NZ X1,SPRX IF FL INCREASE REQUEST PENDING
  9678.  
  9679. * CHECK FOR FL INCREASE.
  9680.  
  9681. SA4 VPAL TOTAL POTS AVAILABLE
  9682. SA1 VPUL POTS IN USE
  9683. IX3 X4-X1 FREE POTS
  9684. SX6 X3-VMIP-VFLI/VCPC
  9685. SX7 B0
  9686. SA1 SPRM CLEAR THROTTLE FLAG
  9687. SA7 A1
  9688. SB3 X1 SAVE FLAG VALUE
  9689. SX1 VFLI GET FIELD LENGTH INCREMENT
  9690. SA5 VPLP PLT POINTERS
  9691. BX2 X4
  9692. LX2 3
  9693. TX2 X2,VBMP OLD FL
  9694. IX2 X2+X1 NEW FL
  9695. NG X6,SPR4 IF MORE POTS NEEDED
  9696. NZ B3,SPR4 IF THROTTLE FLAG SET
  9697.  
  9698. * AFTER A RESET INTERVAL HAS ELAPSED RESET THE TIME INTERVAL.
  9699. * EXIT IF A TIME INTERVAL HAS NOT ELAPSED.
  9700.  
  9701. SA1 STIM CURRENT TIME
  9702. BX6 X1
  9703. SA1 SPRD RESET START
  9704. SX2 RESTO RESET INTERVAL
  9705. IX2 X1+X2 RESET START + RESET INTERVAL
  9706. IX7 X6-X2 CURRENT TIME - RESET TIME
  9707. SA1 SPRJ
  9708. SA2 SPRC
  9709. NG X7,SPR1 IF NOT TIME TO RESET
  9710. SA6 SPRD RESET START
  9711. SX7 MINDL SET INTERVAL TIME
  9712. SA7 A1
  9713. SPR1 IX2 X1+X2 CHECK TIME INTERVAL
  9714. IX1 X6-X2
  9715. NG X1,SPRX IF TIME INTERVAL NOT ELAPSED
  9716. SA6 A2 SET LAST EVALUATION
  9717.  
  9718. * CHECK RESULTS OF PREVIOUS FIELD LENGTH EVALUATION.
  9719.  
  9720. SA1 SPRE
  9721. SA2 SPRG
  9722. NZ X1,SPR6 IF FL INCREASES NON-ZERO
  9723. NZ X2,SPR6 IF LAST FL SEGMENT USED
  9724.  
  9725. * CHECK IF FL DECREASE POSSIBLE.
  9726.  
  9727. SX2 VFLR FL DECREMENT POT COUNT
  9728. IX1 X2-X3
  9729. PL X1,SPRX IF FL DECREASE NOT POSSIBLE
  9730. SX6 B0 CLEAR DAYFILE MESSAGE COUNT
  9731. SA6 SPRN
  9732.  
  9733. * CALCULATE NEW FIELD LENGTH NEEDED FOR DECREASE.
  9734.  
  9735. BX1 -X1 COMPLEMENT FL
  9736. AX1 5 PLT WORDS ROUNDED TO NEAREST VFLI
  9737. LX1 8 REQUIRED FL FOR DECREASE
  9738. ZR X1,SPRX IF LESS THAN ONE VFLI MULTIPLE
  9739. BX1 -X1 COMPLEMENT FL
  9740. SA3 VPAL ALLOCATED POTS
  9741. LX3 3
  9742. TX3 X3,VBMP OLD FL
  9743. IX2 X3+X1 OLD FL - MIN DECREASE
  9744. SA3 X5 LWA+1 OF PLT
  9745. SPR2 SA3 A3-B1
  9746. ZR X3,SPR2 IF POTS NOT ALLOCATED
  9747. SX3 A3+B1 HIGHEST PLT WORD+1
  9748. SB2 24
  9749. AX7 X5,B2
  9750. SX7 X7 SET FWA OF PLT
  9751. IX6 X3-X7 FREE LWA+1 - FWA
  9752. LX6 5 NUMBER OF PLT WORDS * 32
  9753. TX6 X6,VBMP MIN FL NEEDED FOR PLT LINKS ACTIVE
  9754. SX7 X6+VCPC HIGHEST POT ADDR+8
  9755. IX6 X7-X2
  9756. PL X6,SPRX IF CANNOT DECREASE
  9757. SA6 SPRH
  9758.  
  9759. * DETERMINE NEW PLT LENGTH AND LWA.
  9760.  
  9761. SPR4 AX1 3 NUMBER OF POTS TO ADD OR DROP
  9762. IX7 X4+X1 NEW POTS COUNT
  9763. AX1 2 GET NEW PLT LENGTH
  9764. IX6 X1+X5
  9765. AX5 24 CHECK FOR PLT OVERFLOW
  9766. SB2 X5 SET PLT FWA
  9767. SB3 X6 SET PLT LWA+1
  9768. AX5 24
  9769. SB4 X5 SET PLT LENGTH
  9770. SB3 B3-B2
  9771. GT B3,B4,SPR7 IF INCREASE NOT POSSIBLE
  9772. SA6 A5
  9773. SX2 X2+77B ROUND UP FL
  9774. NG X1,SPR9 IF FL DECREASE
  9775.  
  9776. * PROCESS MEMORY INCREASE.
  9777.  
  9778. SA3 SPRB COUNT FL INCREASE
  9779. SX6 X3+B1
  9780. SA6 A3
  9781. SA6 SPRE SET FL INCREASE FLAG
  9782. SA3 SPRA DETERMINE IF NEW MAXIMUM FL
  9783. SA7 VCPL SET FL INCREASE IN PROGRESS
  9784. SA4 SPRI READ *1TA* REQUEST
  9785. IX1 X3-X2 MAXIMUM FL - REQUIRED FL
  9786. BX6 X2
  9787. SA6 SPRK RESET CURRENT FL IN USE
  9788. BX7 X4+X2 COMPLETE *1TA* REQUEST
  9789. PL X1,SPR5 IF NOT NEW MAXIMUM
  9790. SA6 A3 SET NEW MAXIMUM FL
  9791. SPR5 SA7 PMSG
  9792. EQ SPRX RETURN
  9793.  
  9794. * MAKE NO FIELD LENGTH CHANGE IF INCRESES HAVE OCCURRED
  9795. * THIS PERIOD OR IF NOT ENOUGH FIELD LENGHT REMAINS.
  9796. * RESET INCREASE FLAG AND LAST SEGMENT USED FLAG. SET
  9797. * MAXIMUM INTERVAL STATISTIC AND INCREMENT INTERVAL TIME
  9798. * IF NECESSARY.
  9799.  
  9800. SPR6 BX6 X6-X6
  9801. SA6 A1 RESET FL INCREASE FLAG
  9802. SA6 A2+
  9803. SA3 SPRH
  9804. ZR X3,SPRX IF REDUCE FLAG NOT SET
  9805. SA6 A3 RESET REDUCE FLAG
  9806. SA1 SPRJ INTERVAL TIME
  9807. SX2 X1-MAXDL
  9808. PL X2,SPRX IF INTERVAL TIME .GE. HIGH INTERVAL
  9809. SX7 X1+INCTO
  9810. SA7 A1
  9811. SA1 SPRF MAXIMUM INTERVAL TIME
  9812. IX1 X1-X7
  9813. PL X1,SPRX IF INTERVAL TIME .LE. MAXIMUM INTERVAL
  9814. SA7 A1+
  9815. EQ SPRX RETURN
  9816.  
  9817. * ISSUE DAYFILE MESSAGE.
  9818.  
  9819. SPR7 SA3 SPRN INCREMENT DAYFILE MESSAGE COUNT
  9820. SX6 X3+B1
  9821. SA6 A3
  9822. NZ X3,SPRX IF MESSAGE HAS BEEN ISSUED
  9823. MESSAGE (=C* PLT INCREASE NOT POSSIBLE.*)
  9824. EQ SPRX RETURN
  9825.  
  9826. * PARAMETERS FOR FIELD LENGTH EVALUATION.
  9827.  
  9828. SPRA CON 0 MAXIMUM FL USED
  9829. SPRB CON 0 NUMBER OF FL INCREASES
  9830. SPRC CON 0 LAST EVALUATION
  9831. SPRD CON 360D RESET START - SECONDS
  9832. SPRE CON 0 FL INCREASES FLAG
  9833. SPRF CON 0 MAXIMUM INTERVAL TIME
  9834. SPRG CON 0 LAST SEGMENT USED FLAG
  9835. SPRH CON 0 REDUCE FLAG
  9836. SPRI VFD 18/3R1TA,6/0,12/4001B,24/0
  9837. SPRJ CON MINDL INTERVAL TIME
  9838. SPRK CON 0 CURRENT FL IN USE
  9839. SPRL CON 0 NUMBER OF FL DECREASES
  9840. SPRM CON 0 THROTTLE FLAG
  9841. SPRN CON 0 DAYFILE MESSAGE COUNT
  9842. TDQ TITLE TDQ - PROCESS TIME DELAY QUEUE.
  9843. TDQ SPACE 4
  9844. ** TDQ - PROCESS TIME DELAY QUEUE.
  9845.  
  9846.  
  9847. TDQ SUBR ENTRY/EXIT
  9848. SA2 STIM
  9849. SA3 TIMQ+1
  9850. IX3 X2-X3 ELASPED TIME
  9851. ZR X3,TDQX IF TIME DELAY NOT EXCEEDED
  9852. BX6 X2 SAVE NEW TIME
  9853. SA6 A3
  9854. SA4 A3-B1
  9855. UX0 X4,B2
  9856. AX0 18
  9857. TDQ1 ZR X0,TDQX IF NO MORE ENTRIES
  9858. SB7 B5 SET PREVIOUS TERMINAL NUMBER
  9859. SB5 X0
  9860. MX5 -24
  9861. BX2 -X5*X2
  9862. RJ GRT GET ENTRY
  9863. SB2 B5 SET TERMINAL NUMBER
  9864. IFMUX TDQ2
  9865. TA1 B5,VMST
  9866. LX1 59-48
  9867. PL X1,TDQ3 IF TIMEOUT FLAG CLEAR
  9868. TDQ2 MX6 -12
  9869. BX0 -X6*X4
  9870. AX4 24
  9871. BX4 -X5*X4
  9872. IX4 X4-X2 RESTART TIME - REAL TIME
  9873. PL X4,TDQ1 IF TIME DELAY NOT PASSED
  9874. TDQ3 SX0 B5 SAVE LAST TERMINAL PROCESSED
  9875. SB6 TIMQ
  9876. RJ GQE GET ENTRY FROM QUEUE
  9877. SX1 B2
  9878. SX6 B5 SAVE CURRENT TERMINAL NUMBER
  9879. SB2 X0 SET LAST TERMINAL PROCESSED
  9880. LX6 18
  9881. BX0 X1+X6
  9882. RJ UQS UPDATE QUEUE STACK
  9883. SA2 STIM
  9884. BX1 X0 RESET NEXT TERMINAL NUMBER
  9885. SX0 X0
  9886. AX1 18 SET TERMINAL NUMBER JUST COMPLETED
  9887. SB5 X1
  9888. EQ TDQ1
  9889. TITLE TSR - CHECK FOR COMPLETION AND INITIATE NEXT OPERATION.
  9890. TSR SPACE 4,20
  9891. ** TSR - PROCESS WAIT-COMPLETION QUEUE.
  9892. *
  9893. * EXECUTES THE NEXT OPERATION FOR TERMINALS IN THE
  9894. * WAIT-COMPLETION QUEUE WHO MEET ONE OF THE FOLLOWING
  9895. * CRITERIA -
  9896. *
  9897. * (A) THE PREVIOUS OPERATION IS COMPLETE.
  9898. * (B) THE QUEUE ENTRY IS A WAIT-DRIVER (DCR1$)
  9899. * QUEUE ENTRY.
  9900. * (C) THE QUEUE ENTRY IS A STATUS (STA$) QUEUE
  9901. * ENTRY.
  9902. *
  9903. * EXIT QUEUE ENTRIES PROCESSED VIA *PCS*.
  9904. *
  9905. * USES A - 0, 1, 2, 4, 5, 6, 7.
  9906. * X - 1, 2, 3, 4, 5, 6, 7.
  9907. * B - 3, 5, 6, 7.
  9908. *
  9909. * CALLS GRT, GQE, PCS, SSP, UQS.
  9910. *
  9911. * MACROS TTADD.
  9912.  
  9913.  
  9914. TSR SUBR ENTRY/EXIT
  9915. SA1 RTIM GET REAL TIME
  9916. SA2 WCMQ+1 TIME QUEUE LAST PROCESSED
  9917. SX3 WCQT QUEUE TIME DELAY
  9918. IX2 X1-X2 ELAPSED TIME
  9919. IX2 X3-X2
  9920. PL X2,TSRX IF TIME DELAY NOT UP, RETURN
  9921.  
  9922. * SET QUEUE PROCESSING POINTERS.
  9923.  
  9924. BX6 X1 UPDATE PROCESSING TIME
  9925. SA4 A2-B1 READ QUEUE POINTER
  9926. SA6 A2
  9927. SX7 X4 LAST TERMINAL OF QUEUE
  9928. ZR X7,TSRX IF QUEUE EMPTY, RETURN
  9929. SA7 TSRA
  9930. AX4 18 FIRST TERMINAL OF QUEUE
  9931. BX7 X7-X7
  9932. SX6 X4
  9933. SB5 B0+ CLEAR CURRENT TERMINAL NUMBER
  9934. SA6 A7+B1 SET NEXT TERMINAL = FIRST TERMINAL
  9935. SA7 A6+B1 CLEAR TERMINAL LINK
  9936.  
  9937. * ADVANCE TO NEXT TERMINAL.
  9938.  
  9939. TSR1 SA1 TSRA LAST TERMINAL OF QUEUE
  9940. SX7 B5 CURRENT TERMINAL
  9941. IX4 X1-X7
  9942. ZR X4,TSRX IF LAST TERMINAL CHECKED, RETURN
  9943. SA5 TSRB NEXT TERMINAL
  9944. ZR X5,TSRX IF NO NEXT TERMINAL, RETURN
  9945. SB5 X5+ SET NEW CURRENT TERMINAL
  9946.  
  9947. * GET TERMINAL QUEUE ENTRY.
  9948.  
  9949. RJ GRT READ QUEUE ENTRY
  9950. ZR X4,TSRX IF NO QUEUE ENTRY, RETURN
  9951. MX1 -12 SET NEXT TERMINAL NUMBER
  9952. BX7 -X1*X4
  9953.  
  9954. * CHECK TERMINAL STATUS.
  9955.  
  9956. TTADD B5,A0,X1,X2 SET TERMINAL TABLE ADDRESS
  9957. SA7 TSRB
  9958. SA1 A0+VDCT READ VDCT ENTRY
  9959. MX2 2
  9960. AX4 48 CHECK QUEUE ENTRY
  9961. BX3 X2*X1
  9962. NZ X3,TSR2 IF DRIVER REQUEST OR INTERRUPT
  9963. SX1 X4-DCR2$
  9964. SX2 X4-DCR3$
  9965. ZR X1,TSR3 IF DRIVER REQUEST WAIT
  9966. SX3 X4-STA$
  9967. ZR X2,TSR3 IF WAIT-DRIVER QUEUE ENTRY
  9968. ZR X3,TSR3 IF STA$ QUEUE ENTRY
  9969. SX2 X4-CJA$
  9970. ZR X2,TSR3 IF CLEARING REENTRY QUEUE
  9971. SA1 A0+VROT READ VROT ENTRY
  9972. LX1 59-0
  9973. NG X1,TSR3 IF OPERATION COMPLETE
  9974. TSR2 SX7 B5 SET TERMINAL AS LINKED
  9975. SA7 A7+B1
  9976. EQ TSR1 ADVANCE TO NEXT TERMINAL
  9977.  
  9978. * PROCESS QUEUE ENTRY.
  9979.  
  9980. TSR3 SA1 TSRC GET LINK TO CURRENT TERMINAL
  9981. SB6 WCMQ INDICATE QUEUE
  9982. SB7 X1
  9983. RJ GQE GET ENTRY FROM QUEUE
  9984. SA1 A0+VROT READ OPERATION STATUS
  9985. UX4,B3 X5 UNPACK QUEUE ENTRY
  9986. LX1 59-11
  9987. SA2 TRRT+B3 READ REENTRY POINTER WORD
  9988. PL X1,TSR4 IF NO ERROR FLAG
  9989. MX6 -59 CLEAR ERROR FLAG
  9990. BX6 -X6*X1
  9991. LX6 11-59
  9992. AX2 18 SET ERROR PROCESSOR ADDRESS
  9993. SA6 A1+ REWRITE VROT ENTRY
  9994. TSR4 SB7 X2 SET *PCS* PROCESSOR ADDRESS
  9995. RJ PCS PROCESS QUEUE ENTRY
  9996. RJ SSP
  9997. RJ UQS UPDATE QUEUE STACK
  9998. RJ SSP
  9999. SB5 B2 SET CURRENT TERMINAL NUMBER
  10000. EQ TSR1 ADVANCE TO NEXT TERMINAL
  10001.  
  10002. TSRA CON 0 LAST TERMINAL OF QUEUE
  10003. TSRB CON 0 NEXT TERMINAL TO PROCESS
  10004. TSRC CON 0 TERMINAL LINKED TO CURRENT TERMINAL
  10005. TRRT SPACE 4
  10006. ** TRRT - TABLE OF REENTRY ROUTINES PARAMETERS.
  10007. * THIS TABLE OF CONSISTS OF ENTRIES THAT DIRECT FURTHER
  10008. * PROCESSING BASED ON ENTRIES FROM THE REENTRY TABLE AND
  10009. * ON CERTAIN ACTIONS BEING COMPLETED.
  10010. *
  10011. * THE FORMAT OF THE TABLE IS AS FOLLOWS
  10012. * XXYY ZZZZ EEEE EENN NNNN - WHERE
  10013. * XX = INDEX TO TRQT (TABLE OF PPU REQUESTS.)
  10014. * IF XX = 0, NO RESOURCE REQUIREMENTS EXCEPT FOR
  10015. * POSSIBLE A PERIPHERAL PROCESSOR.
  10016. * YY = FUNCTION CODE FOR CALLED PROGRAM.
  10017. * ZZZZ = FUNCTION PROCESSING ADDRESS RELATIVE TO TSRPROC
  10018. * EEEEEE = ERROR RETURN ADDRESS.
  10019. * NNNNNN = NORMAL RETURN ADDRESS.
  10020.  
  10021.  
  10022. TRRT BSS 0
  10023. LOC 2000B
  10024. COMMND APS1,WCMQ,APS1
  10025. COMMND ASO2,WCMQ,ASO2
  10026. COMMND CJA,WCMQ,CJA5
  10027. COMMND DCR2,WCMQ,DCR2
  10028. COMMND DCR3,WCMQ,DCR3
  10029. COMMND DIN1,WCMQ,DIN1
  10030. COMMND DTJ3,WCMQ,DTJ3
  10031. COMMND ETX1,WCMQ,ETX1
  10032. COMMND FLO4,WCMQ,FLO4
  10033. COMMND ETX2,WCMQ,ETX2
  10034. COMMND ETX4,WCMQ,ETX4
  10035. COMMND FTP,WCMQ,FTP
  10036. COMMND FTP3,WCMQ,FTP3
  10037. COMMND HNG,WCMQ,HNG
  10038. COMMND HUP2,WCMQ,HUP2
  10039. COMMND IAM3,ITAQ,,,3
  10040. COMMND ICH,ITOQ
  10041. COMMND INP,,INP
  10042. COMMND ITA2,ITAQ,LIN6,LIN14,2
  10043. COMMND ITA3,ITAQ,URL8,URL12,4
  10044. COMMND ITA4,ITAQ,CRR1,CRR,2
  10045. COMMND ITA1,ITAQ,,,5
  10046. COMMND ITO,ITOQ
  10047. COMMND ITO1,ITOQ
  10048. COMMND LIN1,WCMQ,LIN1
  10049. COMMND LIS8,WCMQ,LIS8
  10050. COMMND PCM1,WCMQ,PCM1
  10051. COMMND PCM2,WCMQ,PCM2
  10052. COMMND PMR2,MNWQ,PMR2
  10053. COMMND PMR4,MNWQ,PMR4
  10054. COMMND PUB4,WCMQ,PUB4
  10055. COMMND PUB8,WCMQ,PUB8
  10056. COMMND RDJ1,WCMQ,RDJ1
  10057. COMMND RIN,WCMQ,DRT
  10058. COMMND STA,WCMQ,STA5
  10059. COMMND TOT,TIMQ,TOT
  10060. BSS 0
  10061. LOC *O
  10062. TRRTL EQU *-TRRT
  10063. TITLE TSR - SUBROUTINES.
  10064. TSRPROC BSS 0
  10065. TSA SPACE 4
  10066. ** TSR ABORT.
  10067.  
  10068.  
  10069. TSA BSS 0
  10070. SX6 3RTSR
  10071. EQ ABT+1
  10072. DCR SPACE 4
  10073. ** DCR - DRIVER COMMAND REQUESTS
  10074. *
  10075. * ENTRY (X2) = COMMAND NUMBER.
  10076. * (X7) = RETURN ADDRESS.
  10077. *
  10078. * SEE SSP.
  10079.  
  10080.  
  10081. DCR BSS 0
  10082. SA1 A0+VSTT
  10083. LX1 59-58
  10084. NG X1,IGN IF USER BREAK IN PROGRESS
  10085. DCR1 SA1 A0+VDCT
  10086. SX3 X2+
  10087. MX0 -12
  10088. LX3 18
  10089. SX5 DCR2$ SET REENTRY
  10090. BX0 -X0*X1 CHECK FOR QUEUED OUTPUT
  10091. BX7 X7+X3
  10092. NZ X0,PCS1 IF QUEUED OUTPUT
  10093. RJ EDR ENTER DRIVER REQUEST
  10094. SX5 DCR3$ ENTER REQUEST QUEUE
  10095. EQ PCS1
  10096.  
  10097. DCR2 BX2 X7 RESTORE REQUEST CODE
  10098. AX2 18
  10099. EQ DCR1 PROCESS REQUEST
  10100.  
  10101. DCR3 SA1 A0+VDCT CHECK DRIVER REQUEST
  10102. SX5 DCR3$
  10103. MX2 -12
  10104. BX2 -X2*X1
  10105. NZ X2,PCS1 IF NOT YET PROCESSED
  10106. SB7 X7 GET RETURN ADDRESS
  10107. JP B7 RETURN
  10108. HNG SPACE 4
  10109. * HNG - REQUESTS DRIVER TO HANG UP PHONE WHEN LAST MESSAGE HAS
  10110. * BEEN ACCEPTED BY DRIVER.
  10111.  
  10112.  
  10113. HNG BSS 0
  10114. RJ RDC READ VDCT
  10115. SA2 A0+VSTT
  10116. MX6 -12
  10117. BX3 -X6*X2
  10118. ZR X3,HNG1 IF NO MESSAGE QUEUED IN VSTT
  10119. SX5 HNG$
  10120. IFNET PCS1
  10121. BX6 X6*X2
  10122. SA6 A2 UPDATE VSTT
  10123. BX6 X1+X3
  10124. SX3 B1+B1 TELL DRIVER TO START AT WORD TWO
  10125. LX3 36-0
  10126. BX6 X6+X3
  10127. SA6 A1 PUT MESSAGE IN VDCT
  10128. RJ RDC WAIT FOR MESSAGE TO BE TAKEN BY DRIVER
  10129. HNG1 SX2 /1TD/HUP
  10130. RJ EDR ENTER DRIVER REQUEST
  10131. RJ CDP CLEAR DETACH IN PROGRESS
  10132.  
  10133. * CLEAR OUTPUT AVAILABLE, INPUT REQUESTED, AND JOB CONTINUATION
  10134. * SO THAT THESE WILL NOT GET RESTARTED BY *RES*.
  10135.  
  10136. SA1 A0+VROT
  10137. SX6 34B
  10138. BX6 -X6*X1
  10139. SA6 A1 REWRITE VROT
  10140. IFNET PCSX
  10141.  
  10142. * DECREMENT ACTIVE USER COUNT FOR MUX TERMINALS.
  10143.  
  10144. SA1 VANL DECREMENT ACTIVE USER COUNT
  10145. ZR X1,PCSX IF NO ACTIVE USERS
  10146. SX6 B1+
  10147. IX6 X1-X6
  10148. SA6 A1
  10149. RJ UCP UPDATE CONVERTED POINTER
  10150. EQ PCSX EXIT
  10151. IAM SPACE 4,10
  10152. ** IAM - ISSUE TERMINAL ACCOUNTING MESSAGE.
  10153. *
  10154. * IAM FORMATS AND ISSUES ACCOUNTING MESSAGE REQUESTS
  10155. * TO ITA.
  10156. *
  10157. * ENTRY - (SEE SSP).
  10158. * X7 = REQUEST CODE.
  10159. * 0 = OUTPUT ACCOUNTING.
  10160. * 1 = INPUT ACCOUNTING.
  10161.  
  10162.  
  10163. IAM SA1 A0+VDCT CHECK TERMINAL STATUS
  10164. SA2 A0+VSTT
  10165. LX1 59-57 CHECK IF LOGGED IN
  10166. LX2 59-48 CHECK IF LOGGING OUT
  10167. SX0 X7+ SET ACCOUNTING MESSAGE INDEX
  10168. BX1 -X1+X2
  10169. AX7 1
  10170. NG X1,PCSX IF LOGGING OUT OR NOT LOGGED IN
  10171. NZ X7,IAM5 IF INCORRECT REQUEST
  10172.  
  10173. * INCREMENT INPUT/OUTPUT OVERFLOW COUNTER.
  10174.  
  10175. SA1 A0+VFST
  10176. MX7 -12
  10177. LX1 36
  10178. BX2 -X7*X1 EXTRACT OVERFLOW COUNTER
  10179. BX1 X7*X1
  10180. SX2 X2+B1 INCREMENT OVERFLOW COUNT
  10181. BX6 -X7*X2
  10182. BX6 X1+X6 MERGE NEW COUNT
  10183. LX6 24
  10184. SA6 A1 REWRITE VFST
  10185. BX2 X7*X2 SET FLAG IF COMBINED ACCUMULATOR OVERFLOW
  10186. LX2 1-12
  10187. BX0 X0+X2
  10188.  
  10189. * REQUEST POT IF NEEDED.
  10190.  
  10191. SA1 IAMA CHECK FOR STACKED ENTRY
  10192. ZR X1,IAM1 IF NO CURRENT ENTRY
  10193. UX7,B7 X1 UNPACK STACK ENTRY
  10194. SB6 B7-VCPC
  10195. NZ B6,IAM2 IF NOT AT END OF CURRENT POT
  10196. IAM1 PX5 X1,B1 REQUEST POT
  10197. RJ RPT
  10198. ZR X7,PCSX IF NO POT AVAILABLE, EXIT
  10199. SA1 IAMA
  10200. SB7 B0 SET WORD COUNT TO FIRST WORD
  10201. ZR X1,IAM2 IF FIRST POT
  10202. SB3 X7
  10203. RJ GPL GET POT LINK
  10204. SX7 B3+
  10205.  
  10206. * ENTER REQUEST WORD IN POT.
  10207.  
  10208. IAM2 BX4 X7 SAVE CURRENT POT
  10209. SX6 B2 SET TERMINAL NUMBER
  10210. LX7 3 SET POT ADDRESS
  10211. TB4 X7,VBMP
  10212. LX6 12
  10213. IX6 X6+X0 ADD REQUEST CODE
  10214. SA6 B4+B7 STORE IN POT
  10215. SB7 B7+B1 INCREMENT WORD POINTER
  10216. PX7 X4,B7 RESET STACK POINTER WORD
  10217. SA7 A1
  10218. NZ X1,PCSX IF NOT FIRST ENTRY
  10219.  
  10220. * MAKE 1TA QUEUE ENTRY.
  10221.  
  10222. SB2 ACPT SET ACCOUNTING PSEUDO TERMINAL
  10223. TTADD B2,A0,X1,X2 SET TERMINAL TABLE ADDRESS
  10224. SB3 0
  10225. SX5 IAM3$ MAKE 1TA QUEUE ENTRY
  10226. EQ PCS1 MAKE QUEUE ENTRY
  10227.  
  10228. * ENTRY FROM ITAQ PROCESSOR TO MAKE SORT BUFFER ENTRY.
  10229. *
  10230. * ENTRY (X0) = SORT BUFFER POINTER.
  10231. * (X7) = ACCOUNTING REQUEST POT POINTER.
  10232. *
  10233. * EXIT TO ITA8.
  10234. * (X6) = 1TA SORT BUFFER ENTRY.
  10235. * (X7) = 1TA FUNCTION ARGUMENT *400*.
  10236.  
  10237. IAM3 MX6 -12
  10238. SA2 A0+VROT SET POT POINTER
  10239. LX6 12
  10240. BX6 X6*X2 CLEAR POT POINTER FIELD
  10241. LX7 12
  10242. BX2 X6+X7
  10243. SX6 B1
  10244. BX6 -X6*X2
  10245. SA6 A2 REWRITE VROT
  10246. SA1 IAMA GET REQUEST POINTER
  10247. BX6 X6-X6 CLEAR REQUEST POINTER
  10248. SA6 A1
  10249. UX4,B7 X1
  10250. SX7 400 SET 1TA ARGUMENT
  10251. SB6 B7-VCPC CHECK POT WORD COUNT
  10252. ZR B6,IAM4 IF POT FILLED
  10253. LX4 3 SET TERMINATOR IN POT
  10254. TB4 X4,VBMP
  10255. SA6 B4+B7
  10256. IAM4 SX6 B2+ SET TERMINAL NUMBER
  10257. LX6 12
  10258. BX6 X6+X7
  10259. EQ ITA MAKE ITAQ ENTRY
  10260.  
  10261. * ERROR EXIT.
  10262.  
  10263. IAM5 SX6 3RIAM
  10264. RJ ABT
  10265. EQ PCSX EXIT
  10266.  
  10267.  
  10268. * IAM REQUEST POINTER WORD.
  10269. *
  10270. *T, 12/ 200N,36/ ,12/ PP
  10271. *
  10272. * N = NEXT AVAILABLE WORD IN POT.
  10273. * PP = POT POINTER.
  10274.  
  10275. IAMA DATA 0
  10276. ICH SPACE 4
  10277. ** ICH - MAKES AN INPUT TO PRIMARY FILE *1TO* REQUEST.
  10278. *
  10279. *T 6/FT,6/RT,12/EJTO,3/WC,9/NP,12/PP,12/TN.
  10280. *
  10281. * FT = 0, PRIMARY FILE REQUEST.
  10282. * RT = 0, INPUT DUMP REQUEST.
  10283. * EJTO = EXECUTING JOB TABLE ORDINAL.
  10284. * WC = LAST POT WORD COUNT IF FORCED DUMP.
  10285. * NP = NUMBER OF POTS TO DUMP.
  10286. * PP = FIRST POT OF INPUT TO PRIMARY FILE.
  10287. * TN = TERMINAL NUMBER.
  10288. *
  10289. * ENTRY (X0) = *1TO* REQUEST QUEUE POINTER.
  10290. * (SEE SSP).
  10291. *
  10292. * EXIT (X0) = REQUEST QUEUE POINTER UPDATED.
  10293. * *1TO* REQUEST ADDED TO BUFFER.
  10294. *
  10295. * USES X - 0, 1, 2, 3, 6.
  10296. * A - 1, 6.
  10297.  
  10298.  
  10299. ICH BSS 0
  10300. SA1 A0+VUIT GET EJT ORDINAL
  10301. MX2 -36
  10302. BX6 -X2*X5
  10303. MX3 12
  10304. LX1 36
  10305. LX3 -12
  10306. BX1 X3*X1
  10307. BX6 X6+X1
  10308. SA6 X0+ MAKE ENTRY
  10309. SX0 X0+B1 INCREMENT BUFFER POINTER
  10310. EQ PCSX EXIT
  10311. INP SPACE 4
  10312. ** INP - PROCESS INPUT DATA FOR A RUNNING PROGRAM.
  10313. *
  10314. * A *STOP* ENTERED BY A USER ON A MULTIPLEXOR TERMINAL IS
  10315. * TREATED LIKE A USER BREAK TWO.
  10316. *
  10317. * ENTRY-
  10318. * SEE SSP
  10319.  
  10320.  
  10321. INP BSS 0 ENTRY
  10322.  
  10323. * CHECK FOR *STOP* FROM MULTIPLEXER TERMINAL.
  10324.  
  10325. IFNET INP1 IF NETWORK TERMINAL
  10326. SA1 B4+ READ FIRST WORD OF INPUT
  10327. SA2 =4LSTOP CHECK UPPER CASE
  10328. SA3 =8L^S^T^O^P CHECK LOWER CASE
  10329. BX2 X1-X2
  10330. BX3 X1-X3
  10331. ZR X2,STO IF *STOP*
  10332. ZR X3,STO IF *STOP*
  10333.  
  10334. * ASSIGN INPUT POT TO MUX TERMINAL.
  10335.  
  10336. SB3 B0
  10337. RJ INO
  10338. RJ SSP RESTORE COMMAND LINE POT POINTER
  10339. INP1 SA1 INPA COUNT INPUT RESPONSE
  10340. SX2 B1
  10341. IX6 X1+X2
  10342. SA6 A1
  10343. SX6 B0 SET *PPI* NOT TO SORT THE FILE
  10344. SX7 B0 SET *EPN*
  10345. EQ BJB1 BEGIN JOB
  10346.  
  10347. INPA CON 0
  10348. ITA SPACE 4
  10349. ** ITA - ENTER *1TA* REQUEST.
  10350. *
  10351. * FORMAT 1TA REQUEST AND INSERT IN REQUEST BUFFER.
  10352. *
  10353. * ENTRY -
  10354. * SEE SSP.
  10355. * (X0) = REQUEST BUFFER POINTER.
  10356. * (X6) = 36/0,12/TN,12/ARG
  10357. * (*COMMND*) = *1TA* FUNCTION CODE, *FC*.
  10358. *
  10359. * EXIT -
  10360. * ((X0)) = 24/0,12/FC,12/TN,12/ARG
  10361. * (X0) = INCREMENTED TO NEXT ENTRY ADDRESS.
  10362.  
  10363.  
  10364. * FC = 5, STATUS REQUEST.
  10365. * MAKE QUEUE ENTRY.
  10366.  
  10367.  
  10368. ITA1 SB7 B0 MAKE QUEUE ENTRY
  10369. RJ MQE
  10370. * EQ ITA2 SET *1TA* CALL
  10371.  
  10372.  
  10373. * FC = 2, LOGIN.
  10374. * FC = 4, UPDATE RESOURCE LIMIT.
  10375. * SET (X6) = 36/0,12/TN/12/PP
  10376.  
  10377. ITA2 BSS 0
  10378. ITA3 BSS 0
  10379. ITA4 BSS 0
  10380. SX7 B2 SET TERMINAL NUMBER
  10381. SX6 B3 SET POT POINTER
  10382. LX7 12
  10383. BX6 X6+X7
  10384. * EQ ITA
  10385.  
  10386.  
  10387. * FORMAT 1TA REQUEST AND ENTER INTO BUFFER.
  10388.  
  10389.  
  10390. ITA BX7 X5 READ TABLE ENTRY
  10391. AX7 48
  10392. SA1 TRRT+X7-2000B
  10393. MX4 -6
  10394. SX2 X1-TSA
  10395. AX1 48
  10396. BX3 -X4*X1 MASK FUNCTION CODE
  10397. LX3 24
  10398. BX6 X6+X3 INSERT FUNCTION CODE
  10399. ZR X2,ITA0 IF NO WAIT-COMPLETION QUEUE ENTRY
  10400. SA6 ITAA SAVE REQUEST
  10401. SB7 WCMQ MAKE WAIT COMPLETION QUEUE ENTRY
  10402. RJ MQE
  10403. SA1 ITAA
  10404. BX6 X1
  10405. ITA0 SA6 X0 ENTER REQUEST IN BUFFER
  10406. SX0 X0+B1 INCREMENT BUFFER POINTER
  10407. EQ PCSX EXIT
  10408.  
  10409. ITAA CON 0 REQUEST
  10410. ITO SPACE 4
  10411. ** ITO - MAKES AN OUTPUT REQUEST *1TO* ENTRY.
  10412. *
  10413. *T 4/ ,1/ PFIC,1/ FT,6/ RT,12/ EJTO,12/ ,12/ PP,12/ TN
  10414. *
  10415. * PFIC = PRIMARY FILE INITIAL CALL FLAG.
  10416. * 1 = PRIMARY FILE INITIAL CALL.
  10417. * 0 = PRIMARY OR ROLLOUT FILE CONTINUATION CALL.
  10418. * FT = FILE TYPE.
  10419. * 0 = PRIMARY FILE.
  10420. * 1 = ROLLOUT FILE.
  10421. * RT = REQUEST TYPE.
  10422. * 0 = DUMP INPUT TO PRIMARY FILE.
  10423. * 1 = OUTPUT TO TERMINAL.
  10424. * EJTO = EXECUTING JOB TABLE ORDINAL.
  10425. * PP = FIRST POT TO USE FOR OUTPUT.
  10426. * TN = TERMINAL NUMBER.
  10427. *
  10428. * ENTRY (X0) = *1TO* REQUEST QUEUE POINTER.
  10429. * (B3) = POT CHAIN IF ONE PROVIDED BY CALLER.
  10430. *
  10431. * EXIT (X0) = *1TO* REQUEST QUEUE POINTER UPDATED.
  10432. * *1TO* REQUEST ADDED TO BUFFER.
  10433. *
  10434. * USES X - 0, 1, 2, 4, 5, 6, 7.
  10435. * A - 1, 6.
  10436. * B - 3, 5.
  10437. *
  10438. * CALLS RPT.
  10439.  
  10440.  
  10441. ITO BSS 0
  10442. SA2 A0+VROT
  10443. SX3 B1
  10444. LX3 17-0
  10445. BX6 -X3*X2 INDICATE PRIMARY FILE LIST
  10446. SA6 A2
  10447. SX6 B1+
  10448. LX6 55-0
  10449. SA6 ITOA INITIAL CALL TO LIST PRIMARY FILE
  10450.  
  10451. ITO1 BSS 0
  10452. SX4 VOPL
  10453. IFMUX ITO2 IF MULTIPLEXER TERMINAL
  10454. TA1 B2,VMST SET NUMBER OF POTS
  10455. ZR X1,ITO2 IF TERMINAL IS DISCONNECTED
  10456. MX4 -5
  10457. AX1 18
  10458. BX4 -X4*X1
  10459. ITO2 LX4 3 CONVERT TO CM WORDS
  10460. SB6 X4+2 ALLOW FOR LINKAGE WORDS
  10461. RJ GPC GET POT CHAIN
  10462. ZR X6,ITO3 IF NO POTS AVAILABLE
  10463. SA1 ITOA
  10464. NZ X1,ITO3 IF PRIMARY FILE LIST INITIAL CALL
  10465. SX6 B0 CLEAR FIRST WORD OF POT
  10466. SA6 B4
  10467. ITO3 SA1 A0+VUIT GET EJT ORDINAL
  10468. MX6 12
  10469. LX1 36
  10470. LX6 -12
  10471. BX6 X1*X6 SEPARATE EJT ORDINAL FROM REST OF WORD
  10472. SX7 B3 MERGE POT POINTER
  10473. SX5 B2 MERGE TERMINAL NUMBER
  10474. LX7 12
  10475. BX6 X6+X5
  10476. SX2 B1 SET OUTPUT FLAG
  10477. BX6 X6+X7
  10478. LX2 48-0
  10479. BX6 X6+X2
  10480. SA1 A0+VROT SPECIFY PRIMARY OR ROLLOUT FILE
  10481. MX2 1
  10482. LX1 54-17
  10483. LX2 54-59
  10484. BX2 X1*X2
  10485. BX6 X2+X6
  10486. SA1 ITOA
  10487. SX7 B0
  10488. ZR X1,ITO4 IF NOT INITIAL CALL TO LIST PRIMARY FILE
  10489. BX6 X1+X6
  10490. SA7 A1
  10491. ITO4 SA6 X0
  10492. SX0 X0+B1
  10493. EQ PCSX EXIT
  10494.  
  10495. ITOA CON 0 PRIMARY FILE INITIAL CALL FLAG
  10496. LIN SPACE 4
  10497. ** LIN - PROCESS LOG IN.
  10498. *
  10499. * ENTRY (PBUF) = ANSWERBACK.
  10500. * SEE SSP.
  10501.  
  10502.  
  10503. LIN BSS 0 ENTRY
  10504. RJ RDC WAIT *VDCT* CLEAR
  10505. MX7 0 CLEAR RETRY COUNTER AND FAMILY NAME
  10506. SA7 B4+VTRY
  10507. SA7 B4+VFNA
  10508. SA1 VANL INCREMENT ACTIVE USER COUNT
  10509. SX6 X1+B1
  10510. SA6 A1
  10511. SA2 LINB CHECK MAXIMUM USER COUNT
  10512. IX2 X2-X6
  10513. PL X2,LIN0 IF NOT NEW MAXIMUM
  10514. SA6 A2
  10515. LIN0 RJ UCP UPDATE CONVERTED POINTER
  10516.  
  10517. * ISSUE LOGIN HEADER MESSAGE.
  10518.  
  10519. LIN1 SX5 LIN1$ SET REENTRY
  10520. RJ CFL CHECK POT SUPPLY
  10521. NG X2,PCS1 IF IN SHORT SUPPLY
  10522. SX0 B3 SAVE LOGIN POT POINTER
  10523. SB3 B0
  10524. SX6 LINCP ISSUE COPYRIGHT NOTICE
  10525. SB4 LINCPL
  10526. RJ MVA
  10527. SX6 HEDR ISSUE HEADER MESSAGE
  10528. SB4 HEDRL
  10529. RJ MVA
  10530. LIN2 SB3 X0 RESTORE LOGIN POT POINTER
  10531. RJ RDC WAIT VDCT CLEAR
  10532. SB5 B3 SET LOGIN POT POINTER
  10533. SB3 B0 CLEAR MESSAGE POT POINTER
  10534. SB4 B0 SET DEFAULT MESSAGE LENGTH
  10535.  
  10536. * REQUEST FAMILY NAME.
  10537.  
  10538. SX6 LIMFN SET MESSAGE ADDRESS
  10539. RJ RQI REQUEST INPUT
  10540. SA1 PBUF READ FAMILY NAME
  10541. SA5 CCMA GET PARAMETER COUNT
  10542. SA2 A1+2 READ USER NAME
  10543. SX7 X1+
  10544. NZ X7,LIN14.1 IF TOO MANY CHARACTERS ENTERED
  10545. SB4 B0
  10546. BX7 X1 SET FAMILY NAME IN LOGIN POT
  10547. SA7 B6+VFNA
  10548. ZR X5,LIN3 IF NULL FAMILY ENTERED
  10549. SX5 X5-1 DECREMENT PARAMETER COUNT
  10550. NZ X5,LIN4 IF USER NAME ENTERED
  10551.  
  10552. * REQUEST USER NAME.
  10553.  
  10554. LIN3 SX6 LIMUN SET MESSAGE ADDRESS
  10555. RJ RQI REQUEST INPUT
  10556. SA2 PBUF READ USER NAME
  10557. SA5 CCMA GET PARAMETER COUNT
  10558. LIN4 SA3 A2+2 READ PASSWORD
  10559. SX7 X2+
  10560. NZ X7,LIN14.1 IF TOO MANY CHARACTERS ENTERED
  10561. SB4 B0
  10562. BX7 X2 SET USER NAME IN LOGIN POT
  10563. SA7 B6+VUNA
  10564. SA7 A0+VUIT SET USERNAME IN TERMINAL TABLE
  10565. SX5 X5-1 DECREMENT PARAMETER COUNT
  10566. NZ X5,LIN5 IF PASSWORD ENTERED
  10567.  
  10568. * REQUEST PASSWORD.
  10569.  
  10570. SX6 LIMPW SET MESSAGE ADDRESS
  10571. SB4 LIMTT-LIMPW
  10572. RJ RQI REQUEST INPUT
  10573. SA3 PBUF READ PASSWORD
  10574. SB4 B0+
  10575. LIN5 SX7 X3
  10576. NZ X7,LIN14.1 IF TOO MANY CHARACTERS ENTERED
  10577. BX7 X3 SET PASSWORD IN LOGIN POT
  10578. SA7 B6+VPWA
  10579.  
  10580. * GET UPPER ACCESS LEVEL LIMIT OF TERMINAL FROM MUX TABLE.
  10581.  
  10582. SX7 0+1S3 SET DEFAULT = 0, SET *AL SPECIFIED* FLAG
  10583. SB4 MXMX
  10584. MX3 -12
  10585. SX5 B2 CURRENT TERMINAL
  10586. LIN5.1 SB4 B4-B1 CHECK NEXT MUX TABLE ENTRY
  10587. NG B4,LIN5.2 IF NO MORE MUXES TO CHECK
  10588. SA1 MUXP+B4
  10589. ZR X1,LIN5.1 IF ZERO ENTRY
  10590. BX4 -X3*X1 FIRST TERMINAL FOR THIS MUX
  10591. IX6 X5-X4
  10592. NG X6,LIN5.1 IF FIRST TERMINAL .GT. CURRENT TERMINAL
  10593. LX1 -24 GET UPPER ACCESS LEVEL LIMIT FROM ENTRY
  10594. BX1 -X3*X1
  10595. BX7 X7+X1
  10596. LIN5.2 SA7 B6+VLAL SET UPPER ACCESS LEVEL LIMIT IN LOGIN POT
  10597. SB4 B0
  10598. SX0 B5 SAVE LOGIN POT POINTER
  10599.  
  10600. * CALL *1TA* TO PROCESS LOGIN PARAMETERS.
  10601.  
  10602. RJ DPT DROP INPUT POT
  10603. SX5 ITA2$ ENTER 1TA REQUEST
  10604. SB3 X0 RESTORE LOGIN POT POINTER
  10605. EQ PCS1 MAKE QUEUE ENTRY
  10606.  
  10607. * NORMAL *1TA* RETURN.
  10608. *
  10609. * ENTRY (B3) = LOGIN POT POINTER.
  10610. * (B4) = LOGIN POT ADDRESS.
  10611. * (POT+VUTA) = VALIDATION ACCESS CONTROL WORD.
  10612. * (POT+VUTD) = VALIDATION TERMINAL CONTROL WORD.
  10613.  
  10614. LIN6 RJ CDP CLEAR DETACH IN PROGRESS
  10615. IFNET LIN12
  10616.  
  10617. * SET PARITY.
  10618.  
  10619. SA3 B4+VUTD LOAD TERMINAL CONTROL WORD
  10620. PL X3,LIN8 IF EVEN PARITY VALIDATION
  10621. SX7 LIN8 SET RETURN ADDRESS
  10622. SX2 /1TD/SOP REQUEST ODD PARITY
  10623. JP DCR
  10624.  
  10625. * SET DUPLEX MODE.
  10626.  
  10627. LIN8 SA3 B4+VUTD RELOAD TERMINAL CONTROL WORD
  10628. LX3 59-53 CHECK DUPLEX MODE
  10629. PL X3,LIN9 IF HALF DUPLEX
  10630. SX7 LIN9 SET RETURN ADDRESS
  10631. SX2 /1TD/SFD REQUEST FULL DUPLEX
  10632. JP DCR
  10633.  
  10634. * SET TRANSLATION TABLE.
  10635.  
  10636. LIN9 SA3 B4+VUTD RELOAD TERMINAL CONTROL WORD
  10637. MX6 -5
  10638. AX3 48 MASK VALIDATED TERMINAL TYPE CODE
  10639. BX6 -X6*X3
  10640. ZR X6,LIN11 IF NONE SPECIFIED
  10641. SA5 X6+TTTT+1 READ IAFEX EQUIVALENT NAME
  10642. RJ LTT GET CURRENT TYPE
  10643. SX6 X1 SET CURRENT LINE CODE
  10644. BX5 X5+X6 MERGE EQUIVALENT NAME AND LINE CODE
  10645. SB7 X2+ SET FWA OF TRANSLATION TABLES
  10646. LIN10 SA1 X2+ READ TRANSLATION TABLE NAME
  10647. ZR X1,LIN11 IF END OF NAMES
  10648. SX2 X2+B1
  10649. IX6 X1-X5 COMPARE
  10650. NZ X6,LIN10 IF NO MATCH
  10651. SX1 A1-B7 SET TRANSLATION INDEX
  10652. LX1 6
  10653. SX7 LIN11 SET RETURN ADDRESS
  10654. SX2 X1+/1TD/STT REQUEST TRANSLATION INDEX
  10655. JP DCR
  10656.  
  10657. * SET RUBOUT COUNT.
  10658.  
  10659. LIN11 SA3 B4+VUTD RELOAD TERMINAL CONTROL WORD
  10660. MX6 -5
  10661. LX3 -54 SHIFT RUBOUT COUNT
  10662. SX2 X3+B1 ADD DRIVER BIAS
  10663. BX7 -X6*X2 MASK BIASED COUNT
  10664. ZR X7,LIN12 IF SYSTEM DEFAULT COUNT
  10665. SA1 A0+VDCT
  10666. LX6 39-0
  10667. LX7 39-0
  10668. BX1 X6*X1 CLEAR VDCT RUBOUNT COUNT
  10669. IX7 X7+X1 INSERT BIASED COUNT
  10670. SA7 A1+ REWRITE VDCT
  10671.  
  10672. * SET SUBSYSTEM.
  10673.  
  10674. LIN12 SA3 B4+VUTD RELOAD TERMINAL CONTROL WORD
  10675. MX7 -5
  10676. SA2 A0+VSTT
  10677. LX3 -42
  10678. BX6 -X7*X3 MASK VALIDATION SUBSYSTEM
  10679. SA3 X6+TTIS GET IAFEX EQUIVALENT SUBSYSTEM
  10680. BX3 -X7*X3
  10681. SX6 LIMUV
  10682. SX7 X3-MSYS
  10683. PL X7,LIN16 IF INCORRECT SUBSYSTEM
  10684. LX3 12 INSERT SUBSYSTEM IN VSTT
  10685. BX2 X3+X2
  10686. MX7 1
  10687. LX7 54-59 SET JOB COMPLETE
  10688. BX6 X2+X7
  10689. SA6 A2 REWRITE VSTT
  10690.  
  10691. * SET ACCESS BITS AND LOGGED-IN STATUS.
  10692. * SET READ DATA BIT IF *CHARGE* OR *RECOVER* HAVE
  10693. * ROLLED OUT AWAITING INPUT.
  10694.  
  10695. MX5 -12
  10696. SA1 B4+VUTA LOAD ACCESS WORD
  10697. SA3 A0+VDCT READ VDCT
  10698. TA2 B2,VRAP CHECK FOR A QUEUE ENTRY
  10699. ZR X2,LIN13 IF READ DATA NEED NOT BE SET
  10700. BX3 X3+X7 SET READ DATA
  10701. LIN13 BX1 -X5*X1 MASK ACCESS WORD ACCESS BITS
  10702. LX5 12
  10703. BX3 X5*X3 CLEAR VDCT ACCESS BITS
  10704. LX1 12
  10705. BX3 X1+X3 INSERT VALIDATION ACCESS BITS
  10706. LX7 57-54 SET LOGGED IN BIT
  10707. BX7 X7+X3
  10708. SA7 A3 REWRITE VDCT
  10709. SA1 VTNL INCREMENT TERMINALS ON LINE
  10710. SX6 X1+B1
  10711. SA6 A1
  10712. RJ UCP UPDATE CONVERTED POINTER
  10713.  
  10714. * ISSUE LOGIN COMPLETION MESSAGE.
  10715.  
  10716. SA3 LIMTT+1
  10717. SA1 A0+VFST
  10718. MX7 24
  10719. LX7 30
  10720. LX1 30
  10721. BX3 -X7*X3 CLEAR PREVIOUS *JSN*
  10722. BX1 X1*X7
  10723. BX6 X1+X3 INSERT CURRENT *JSN*
  10724. SA6 A3
  10725. MX4 42
  10726. SX5 1R
  10727. RJ LTT GET TERMINAL TYPE NAME
  10728. BX1 X4*X1 CLEAR LOWER 18 BITS
  10729. BX7 X1+X5 ADD BLANK
  10730. LX7 -6 SHIFT BLANK AHEAD OF TERMINAL TYPE
  10731. SA7 A6+B1
  10732. SX6 LIMTT ISSUE LOGGED-IN MESSAGE
  10733. SB4 B0
  10734. RJ MVA
  10735. EQ PCSX EXIT
  10736.  
  10737. * 1TA ERROR RETURN.
  10738.  
  10739. LIN14 SA1 A0+VROT CHECK ERROR STATUS
  10740. SX6 LIMJT
  10741. LX1 59-10
  10742. NG X1,LIN16 IF INPUT FILE ABORTED
  10743. SA1 B4+VUTA
  10744. SX6 LIMUC
  10745. LX1 59-1
  10746. LX7 X1,B1
  10747. NG X7,LIN16 IF USER SECURITY COUNT EXHAUSTED
  10748. SX6 LIMSC
  10749. NG X1,LIN16 IF USER NOT VALIDATED FOR SERVICE CLASS
  10750. LX1 59-3-59+1
  10751. LX7 X1,B1
  10752. SX6 LIMSF
  10753. NG X7,LIN16 IF SERVICE CLASS FULL
  10754. SX6 LIMAD
  10755. NG X1,LIN16 IF ACCESS DENIED (SECURITY CONFLICT)
  10756. SX6 LIMDI
  10757. LX1 59-5-59+3
  10758. LX7 X1,B1
  10759. NG X7,LIN16 IF DEVICE INACCESSIBLE OR I/O ERROR
  10760. SX6 LIMYF
  10761. NG X1,LIN16 IF QFT FULL
  10762. EQ LIN14.2 RETRY LOGIN
  10763.  
  10764. * RETRY LOGIN (ERROR DETECTED BEFORE CALLING *1TA*).
  10765.  
  10766. LIN14.1 SX0 B5 SAVE LOGIN POT POINTER
  10767. SB4 B0
  10768. RJ DPT DROP INPUT POT
  10769. SB3 X0 RESTORE LOGIN POT POINTER
  10770. LX0 3
  10771. TB4 X0,VBMP SET LOGIN POT ADDRESS
  10772.  
  10773. * RETRY LOGIN.
  10774.  
  10775. LIN14.2 SA1 B4+VTRY INCREMENT RETRY COUNT
  10776. SX7 X1+1
  10777. SX1 X7-LIAA
  10778. PL X1,LIN15 IF RETRY COUNT EXCEEDED
  10779. IFNET LIN15
  10780.  
  10781. * REATTEMPT LOGIN FOR MUX TERMINAL.
  10782.  
  10783. SA7 A1 REWRITE RETRY COUNT
  10784. SB4 B0 SET DEFAULT MESSAGE LENGTH
  10785. RJ CDP CLEAR DETACH IN PROGRESS
  10786. SX0 B3 SAVE POT POINTER
  10787. SB3 B0 SET NO POT FOR MESSAGE
  10788. SX6 LIMIL SET MESSAGE ADDRESS
  10789. RJ MVA ISSUE MESSAGE
  10790. EQ LIN2 RETRY LOGIN
  10791.  
  10792. * DISCONNECT USER WHEN LOGIN NOT POSSIBLE.
  10793.  
  10794. LIN15 SA1 LINA INCREMENT INCORRECT LOGIN COUNT
  10795. SX6 LIMIT SET MESSAGE ADDRESS
  10796. SX7 X1+B1
  10797. SA7 A1 REWRITE INCORRECT LOGIN COUNT
  10798.  
  10799. * ENTRY (X6) = MESSAGE ADDRESS.
  10800.  
  10801. LIN16 SB4 B0
  10802. RJ MVA ISSUE LOG OFF MESSAGE
  10803. EQ HNG LOG OFF USER
  10804. SPACE 4,10
  10805. ** LOGIN MESSAGES.
  10806.  
  10807.  
  10808. LIMFN DATA C*"EM"FAMILY: '"CB"*
  10809.  
  10810. LIMUN DATA C*"EM"USER NAME: '"CB"*
  10811.  
  10812. LIMPW DATA 10H"EM"PASSWORD
  10813. DATA 10H"NL"((((((((
  10814. DATA 10H"CR"))))))))
  10815. DATA 10H"CR"MMMMMMMM
  10816. DATA 10H"CR"QQQQQQQQ
  10817. DATA 10H"CR"XXXXXXXX
  10818. DATA C*"CR""CB"*
  10819.  
  10820. LINCP DATA C*WELCOME TO THE NOS SOFTWARE SYSTEM.*
  10821. *CALL COPYRT
  10822. CPRT HERE
  10823. CON 0
  10824. LINCPL EQU *-LINCP LENGTH OF COPYRIGHT NOTICE
  10825.  
  10826. LIMTT DATA 10H"EM" "NL"
  10827. DATA 10HJSN: ,
  10828. DATA 0
  10829.  
  10830. LIMAD DATA C*"EM"ACCESS DENIED - SECURITY CONFLICT."NL""LF""CB"*
  10831.  
  10832. LIMDI DATA C*"EM"DEVICE INACCESSIBLE - LOGIN FAILED. "NL""LF""CB"*
  10833.  
  10834. LIMIL DATA C*"EM"IMPROPER LOG IN, TRY AGAIN. "NL""LF""CB"*
  10835.  
  10836. LIMIT DATA C*"EM"INCORRECT TERMINAL. "NL""LF""CB"*
  10837.  
  10838. LIMJT DATA C*"EM"JOB TERMINATED. "NL""LF""CB"*
  10839.  
  10840. LIMSC DATA C*"EM"USER NOT VALIDATED FOR INTERACTIVE SERVICE CLASS.
  10841. , "NL""LF""CB"*
  10842.  
  10843. LIMSF DATA C*"EM"SERVICE CLASS FULL. "NL""LF""CB"*
  10844.  
  10845. LIMUC DATA C*"EM"USER SECURITY COUNT EXHAUSTED."NL""LF""CB"*
  10846.  
  10847. LIMUV DATA C*"EM"USER VALIDATION ERROR."NL""LF""CB"*
  10848.  
  10849. LIMYF DATA C*"EM"SYSTEM FULL."NL""LF""CB"*
  10850.  
  10851. LINA CON 0 NUMBER OF INCORRECT LOGINS
  10852. LINB CON 0 MAXIMUM NUMBER OF USERS ON SYSTEM
  10853. RDC SPACE 4,10
  10854. ** RDC - READ TERMINAL TABLE WORD *VDCT*.
  10855. *
  10856. * RETURN TERMINAL TABLE WORD *VDCT* WHEN INTERLOCK IS
  10857. * CLEAR. *RDC* WILL EXIT BY MEANS OF REENTRY THROUGH
  10858. * *DCR1* IF INTERLOCK IS NOT CLEAR ON ENTRY.
  10859. *
  10860. * ENTRY -
  10861. * (B3) = ANY INFORMATION TO BE RETAINED.
  10862. *
  10863. * EXIT -
  10864. * (A1) = ADDRESS OF *VDCT*.
  10865. * (X1) = *VDCT*.
  10866. * *VDCT* - INTERLOCK CLEAR.
  10867. * (B3) = ENTRY CONTENTS PRESERVED.
  10868.  
  10869.  
  10870. RDC SUBR ENTRY/EXIT
  10871. SA1 A0+VDCT CHECK INTERLOCK
  10872. MX2 14
  10873. LX2 12
  10874. BX7 X2*X1
  10875. ZR X7,RDCX IF INTERLOCK CLEAR
  10876. SA1 RDC SET RETURN ADDRESS
  10877. SX5 DCR3$
  10878. AX1 30
  10879. SX7 X1
  10880. EQ PCS1 MAKE QUEUE ENTRY
  10881. URL SPACE 4,15
  10882. ** URL - PROCESS USER RESOURCE LIMITS EXCEEDED.
  10883. *
  10884. * ENTERED WHEN A JOB HAS EXCEEDED ITS TIME OR SRU
  10885. * LIMIT. THE TERMINAL WILL BE PROMPTED UNTIL A VALID
  10886. * INCREMENT IS ENTERED OR A JOB ABORT IS REQUESTED.
  10887. *
  10888. * ENTRY SEE SSP.
  10889. * (X4) = RESOURCE LIMIT CODE.
  10890. *
  10891. * EXIT RESOURCE LIMIT INCREMENTED UNLESS JOB ABORT
  10892. * REQUESTED. CHARGE REQUIRED SET IF AT SRU
  10893. * VALIDATION LIMIT.
  10894. *
  10895. * CALLS CNT, DXB, INO, MVA, SRR, SSP.
  10896.  
  10897.  
  10898. URL BSS 0 ENTRY
  10899. AX4 1
  10900. MX0 54 SET UP MESSAGE
  10901. SA5 URLA+X4
  10902. URL1 SA1 X5
  10903. SA2 X5+B1
  10904. BX6 X1
  10905. BX7 X2
  10906. SA6 URLB
  10907. SA7 A6+B1
  10908. LX0 12
  10909. SA3 URLC
  10910. AX5 42
  10911. BX6 X0*X3
  10912. BX6 X5+X6
  10913. SA6 A3
  10914. IFMUX URL3
  10915. RJ CNT CANCEL TYPEAHEAD
  10916. ZR X1,URL3 IF NO REENTRY MADE
  10917. SA5 URLA+X6
  10918. MX0 54
  10919. EQ URL1 CONTINUE LIMIT PROCESSING
  10920.  
  10921. URL3 SB5 B0+ CLEAR POT POINTER
  10922. SX7 URL4 SET COMMAND REENTRY
  10923. RJ SRR
  10924. SX6 URLB SET MESSAGE ADDRESS
  10925. SB4 URLBL SET MESSAGE LENGTH
  10926. EQ PCS6 ISSUE MESSAGE
  10927.  
  10928. * REENTRY TO PROCESS LIMIT INCREMENT.
  10929.  
  10930. URL4 SA1 PBUF CHECK ENTRY
  10931. SA2 =8L^S^T^O^P
  10932. SA3 =4LSTOP
  10933. BX3 X1-X3
  10934. SX6 URLF CONTROL BYTE TO END TRANSPARENT MODE
  10935. ZR X3,URL10 IF STOP HAS BEEN ENTERED
  10936. BX2 X1-X2
  10937. ZR X2,URL10 IF STOP HAS BEEN ENTERED
  10938. URL5 SA2 A0+VROT
  10939. MX4 -1
  10940. AX2 19
  10941. BX2 -X4*X2
  10942. SA2 URLA+X2
  10943. MX4 6 SET COMMAND TO CHECK
  10944. BX4 X4*X2
  10945. BX4 X1-X4
  10946. AX2 18
  10947. NZ X4,URL13 IF INCORRECT ENTRY
  10948. SX6 X2 SET DEFAULT INCREMENT
  10949. AX2 18
  10950. SA5 PBUF+2
  10951. SB6 X2 SAVE FUNCTION CODE
  10952. SB7 B1 SET DECIMAL CONVERSION
  10953. ZR X5,URL7 IF NO INCREMENT ENTERED
  10954. LX5 6
  10955. SX4 X5-1R* CHECK FOR (*)
  10956. ZR X4,URL6 IF (*)
  10957. LX5 54
  10958. RJ DXB CONVERT INCREMENT TO BINARY
  10959. MX3 45
  10960. BX3 X3*X6
  10961. RJ SSP
  10962. NZ X4,URL13 IF INCORRECT INCREMENT
  10963. ZR X3,URL7 IF INCREMENT .LT. 77777B
  10964. URL6 SX6 77777B SET INCREMENT TO MAXIMUM
  10965. URL7 SX3 B6 SET FUNCTION CODE
  10966. LX3 18
  10967. BX6 X3+X6 MERGE FUNCTION CODE AND INCREMENT
  10968. SA6 B4
  10969. SX5 ITA3$
  10970. SX7 B0+
  10971. EQ PCS1 MAKE QUEUE ENTRY
  10972.  
  10973. * NORMAL EXIT.
  10974.  
  10975. URL8 SA1 A0+VDPT
  10976. LX1 59-15
  10977. PL X1,URL9 IF BINARY BIT NOT SET
  10978. SX6 URLG CONTROL BYTE TO RESUME TRANSPARENT MODE
  10979. EQ URL10 CONTINUE TO NEXT JOB STEP
  10980.  
  10981. URL9 IFMUX URL11
  10982. TA1 B2,VMST
  10983. LX1 59-25
  10984. PL X1,URL11 IF NOT NAM TRANSPARENT CONTINUATION
  10985. SX6 URLH CONTROL BYTE TO RESET NAM XPT CONTINUATION
  10986. URL10 SB4 B0+
  10987. RJ MVA
  10988. URL11 SA1 A0+VROT CLEAR LIMITS/INPUT SATISFIED/JOB WAITING
  10989. SA3 =00000000000003000050B
  10990. BX7 -X3*X1
  10991. SA7 A1
  10992. RJ INO ISSUE NULL OUTPUT
  10993. SA1 A0+VFST CHECK *SMF* CONNECTION
  10994. MX2 6
  10995. LX1 59-23
  10996. BX1 X2*X1
  10997. ZR X1,RES IF NO SMF CONNECTION
  10998. SX6 6 RESET VROT
  10999. SA6 A0+VROT
  11000.  
  11001. * RESCHEDULE *FSE* TO REINVOKE *WK* ROLLOUT STATUS.
  11002.  
  11003. RJ GOP GET PARAMETER BLOCK POT
  11004. PARAM ENEJ
  11005. RJ PMR
  11006. SB4 B0+ RETURN PARAMETER BLOCK POT
  11007. RJ DPT
  11008. EQ PCSX RETURN
  11009.  
  11010. * PROCESS VALIDATION LIMIT.
  11011.  
  11012. URL12 SMA X6,(USER VALIDATION LIMIT EXCEEDED,"NL")
  11013. EQ URL10 SEND MESSAGE AND RESTART JOB
  11014.  
  11015. * PROCESS INCORRECT INCREMENT.
  11016.  
  11017. URL13 SB5 B0+ CLEAR POT POINTER
  11018. SX7 URL4 SET COMMAND REENTRY
  11019. RJ SRR
  11020. SA1 A0+VROT CLEAR INPUT SATISFIED
  11021. SX6 1S5
  11022. BX6 -X6*X1
  11023. SA6 A1 REWRITE VROT
  11024. SMA X6,( *INCORRECT ENTRY, TRY AGAIN*"NL")
  11025. EQ PCS5 ISSUE ERROR MESSAGE
  11026.  
  11027. URLA VFD 6/1LT,12/0,6//CPS/RLIT,18/VDTI,18/URLD
  11028. VFD 6/1LS,12/0,6//CPS/RLIS,18/VDSI,18/URLE
  11029.  
  11030. URLB DATA 0
  11031. DATA 0
  11032. URLC DATA 10L ENTER X T
  11033. DATA 10LO CONTINUE
  11034. DATA 10L OR STOP T
  11035. DATA 10LO END JOB
  11036. DATA 5LSTEP.
  11037. DATA 10L TYPED AHE
  11038. DATA 10LAD INPUT M
  11039. DATA 10LUST BE REE
  11040. DATA 7LNTERED.
  11041. DATA 0
  11042. URLBL EQU *-URLB
  11043.  
  11044. URLD DATA 10L *TIME LIM
  11045. DATA 3LIT*
  11046.  
  11047. URLE DATA 10L *SRU LIMI
  11048. DATA 2LT*
  11049. URLF DATA B00164064400000000000 END TRANSPARENT MODE
  11050. URLG DATA B00062043001500000000 RESET TRANSPARENT MODE
  11051. URLH DATA B00164064400100000000 RESET NAM XPT CONTINUATION
  11052. TITLE GENERAL SUBROUTINES.
  11053. ** GENERAL SUBROUTINES.
  11054. *
  11055. * IF THE REGISTER USAGE IS NOT SPECIFIED IN THE HEADER
  11056. * INFORMATION, THEN IT SHOULD BE ASSUMED THAT THE SUBROUTINE
  11057. * USES ALL REGISTERS EXCEPT THOSE SPECIFIED BELOW.
  11058. *
  11059. * A - 0.
  11060. * B - 1, 2.
  11061. * X - 0.
  11062. ABT SPACE 4
  11063. ** ABT - THIS ROUTINE IS ENTERED WHEN IAFEX DETECTS
  11064. * INTERNALLY AN ABNORMAL CONDITION. A MESSAGE IS ISSUED
  11065. * TO THE DAYFILE AND AN ABORT TAKES PLACE.
  11066. *
  11067. * ENTRY-
  11068. * (X6) = NAME OF CALLING ROUTINE RIGHT JUSTIFIED
  11069. *
  11070. * CALLS IDM, MSG=, O6S, SYS=.
  11071.  
  11072.  
  11073. ABT SUBR ENTRY/EXIT
  11074.  
  11075. * SAVE EXCHANGE PACKAGE BEFORE PROCESSING ABORT.
  11076.  
  11077. SB1 A6 SAVE REGISTERS USED BY *SYS* MACRO
  11078. SA6 ABTB
  11079. SX6 B1
  11080. SB1 1
  11081. SA6 A6+B1
  11082. BX6 X1
  11083. SA6 A6+B1
  11084. BX6 X2
  11085. SA6 A6+B1
  11086. SX6 A1
  11087. SA6 A6+B1
  11088. SYSTEM XJR,R,ABTC,100B SAVE REMAINDER OF EXCHANGE PACKAGE
  11089. SA2 ABTB RESTORE ORIGINAL VALUE OF X6
  11090. SA1 VABL COUNT ABNORMAL OCCURRENCE
  11091. SX7 X1+B1
  11092. SA7 A1
  11093. SA1 ABTA+1
  11094. MX7 42
  11095. BX1 X7*X1
  11096. BX6 X1+X2
  11097. SA6 A1
  11098. SX1 B2
  11099. RJ O6S
  11100. SA6 ABTA+2
  11101. SA1 B0 CHECK ABORT SENSE SWITCH
  11102. LX1 59-8
  11103. NG X1,ABT1 IF SET TO ABORT
  11104. SA1 ABT CHECK FOR RETURN ADDRESS
  11105. AX1 30
  11106. ZR X1,ABT1 IF NO RETURN ADDRESS
  11107. SB7 X1
  11108. BX6 X6-X6 CLEAR ADDRESS
  11109. SA6 A1
  11110. SX6 ABTA ISSUE DAYFILE MESSAGE
  11111. RJ IDM
  11112. JP B7 RETURN
  11113.  
  11114. ABT1 MESSAGE ABTA,,R
  11115. ABORT
  11116.  
  11117. ABTA DATA C*IAFEX ABNORMAL - *
  11118. DATA 0
  11119. ABTB BSSZ 5 AREA TO HOLD REGISTERS USED BY *SYS* MACRO
  11120. ABTC BSSZ 20B AREA TO HOLD EXCHANGE PACKAGE
  11121. ASM SPACE 4
  11122. ** ASM - ASSIGN MESSAGE TO TERMINAL.
  11123. *
  11124. * ASSIGNS AN OUTPUT MESSAGE TO THE TERMINAL. FOR MUX
  11125. * TERMINALS, THE FIRST TWO WORDS IN THE POT ARE NOT USED.
  11126. * FOR NETWORK TERMINALS, THE CURRENT CHARACTER SET IS
  11127. * STORED IN THE SECOND WORD OF THE FIRST POT.
  11128. * THE FIRST WORD IN THE FIRST POT IS USED FOR LINKING
  11129. * OUTPUT INTO THE OUTPUT QUEUE IN VSTT.
  11130. *
  11131. * ENTRY (X7) = FIRST POT OF MESSAGE TO BE ASSIGNED.
  11132. *
  11133. * EXIT (B3) = 0.
  11134. * (B4) = 0.
  11135. *
  11136. * CALLS ABT, ANM, DPT.
  11137.  
  11138.  
  11139. ASM5 ZR X7,ASM6 IF NULL ASSIGNMENT
  11140. SB3 X7 DROP POT(S)
  11141. SB4 B0
  11142. RJ DPT
  11143. ASM6 SB3 B0+
  11144. SB4 B0+
  11145.  
  11146. ASM SUBR ENTRY/EXIT
  11147. IFNET ASM4 IF NAM TERMINAL
  11148. SA1 A0+VSTT
  11149. SA2 A0+VDCT
  11150. BX6 X1
  11151. LX6 59-58 CHECK USER BREAK IN PROGRESS
  11152. MX5 -12
  11153. BX3 -X5*X1
  11154. BX4 -X5*X2
  11155. NG X6,ASM5 IF USER BREAK IN PROGRESS
  11156. SX6 B1+B1 TELL DRIVER TO START AT WORD TWO
  11157. LX6 36-0
  11158. NZ X3,ASM1 IF STACKED MESSAGE
  11159. NZ X4,ASM2 IF CURRENT MESSAGE OR DRIVER REQUEST
  11160. BX6 X2+X6
  11161. BX6 X6+X7 ASSIGN MESSAGE
  11162. SA6 A2 REWRITE VDCT
  11163. EQ ASM6 RETURN
  11164.  
  11165. ASM1 NZ X4,ASM3 IF TWO MESSAGES ASSIGNED
  11166. BX6 X2+X6
  11167. BX6 X3+X6 ASSIGN STACKED MESSAGE AS CURRENT MESSAGE
  11168. SA6 A2+
  11169. BX1 X5*X1 CLEAR STACKED MESSAGE
  11170. ASM2 BX6 X1+X7 ASSIGN STACKED MESSAGE
  11171. SA6 A1
  11172. EQ ASM6 RETURN
  11173.  
  11174. ASM3 SA7 ASMA SAVE POT POINTER
  11175. SX6 3RASM
  11176. RJ ABT
  11177. SA1 ASMA
  11178. BX7 X1
  11179. EQ ASM5 DROP POTS
  11180.  
  11181. * PROCESS NETWORK TERMINAL MESSAGE; SET 6/12 ASCII FLAG,
  11182. * PRESERVE CONCATENATION BIT AND SET USER FORMAT EFFECTOR
  11183. * FLAG IN POT CHAIN HEADER (SEE *ANM*).
  11184.  
  11185. ASM4 LX7 3
  11186. SA3 A0+VDCT
  11187. SX5 B1
  11188. TA1 X7+1,VBMP
  11189. LX3 0-51
  11190. BX4 X3*X5
  11191. PL X6,ASM4.1 IF NOT CHECKING FOR USER FORMAT EFFECTORS
  11192. SA3 A0+VSTT
  11193. LX5 55-0
  11194. BX5 X5*X3
  11195. LX5 2-55
  11196. BX4 X4+X5
  11197. ASM4.1 BX6 X1+X4
  11198. SA6 A1+
  11199. AX7 3
  11200. RJ /IAFEX4/ANM QUEUE OUTPUT FOR TERMINAL
  11201. EQ ASM6 RETURN
  11202.  
  11203. ASMA CON 0 POT POINTER
  11204. AUU SPACE 4,10
  11205. ** AUU - ABORT UNIDENTIFIED OR RECONNECTING UCP.
  11206. *
  11207. * ENTRY (X7) = UCP IDENTIFICATION (JSN AND EJTO).
  11208. * (X6) = 0, IF SMF AND ALREADY CONNECTED TO IAF
  11209. *
  11210. * USES X - 1, 6.
  11211. * A - 1.
  11212. *
  11213. * CALLS EUC, SFC.
  11214.  
  11215.  
  11216. AUU SUBR ENTRY/EXIT
  11217. SA1 AUUA SET FORMATTED *REGR* ABORT CALL
  11218. NZ X6,AUU1 IF NOT SMF
  11219. SA1 AUUC SET FORMATTED *REGR* MESSAGE CALL
  11220. AUU1 BX6 X1
  11221. RJ SFC SEND SFCALL
  11222. RJ EUC END UCP CONNECTION
  11223. EQ AUUX EXIT
  11224.  
  11225.  
  11226. AUUA VFD 6/0,12/0,18/2,18/AUUB,6/REGR
  11227. AUUB DATA C+** UNRECOGNIZED UCP ABORTED BY IAF **+
  11228. AUUC VFD 6/0,12/0,18/1,18/AUUD,6/REGR
  11229. AUUD DATA C+** SMF IS ALREADY CONNECTED TO IAF **+
  11230. BRQ SPACE 4
  11231. ** BRQ - BUILD REQUEST QUEUE.
  11232. *
  11233. * ENTRY (X0) = ADDRESS OF QUEUE POINTER FOR BUILD.
  11234. *
  11235. * EXIT PPU FUNCTION REQUESTS BUILT IN POT CHAIN.
  11236. * (X6) = FIRST POT POINTER OF REQUEST CHAIN.
  11237. * = ZERO IF NO REQUESTS ENTERED IN CHAIN.
  11238. *
  11239. * CALLS CFL, ENP, PCS, SSP, UQS.
  11240.  
  11241.  
  11242. BRQ SUBR ENTRY/EXIT
  11243. SA1 X0
  11244. BX6 X6-X6
  11245. UX2,B2 X1
  11246. ZR B2,BRQX IF NO ENTRIES TO PROCESS
  11247. RJ CFL
  11248. BX6 X6-X6
  11249. SX1 B2+7 CALCULATE NUMBER OF POTS NEEDED
  11250. AX1 3
  11251. NG X2,BRQX IF POTS IN SHORT SUPPLY
  11252. SX6 X0-ITOQ
  11253. NZ X6,BRQ1 IF NOT *ITOQ*
  11254. SX2 B2+6-VRQB*VCPC CHECK QUEUE LENGTH
  11255. SB7 VRQB SET MAXIMUM QUEUE LENGTH
  11256. EQ BRQ2 SET QUEUE LENGTH
  11257.  
  11258. BRQ1 SX2 B2+6-VRQA*VCPC CHECK QUEUE LENGTH
  11259. SB7 VRQA SET MAXIMUM QUEUE LENGTH
  11260. BRQ2 PL X2,BRQ3 IF REQUEST .GT. MAXIMUM QUEUE LENGTH
  11261. SB7 X1+ SET REQUEST QUEUE LENGTH
  11262. BRQ3 BX7 X7-X7
  11263. RJ GZP REQUEST ZEROED POTS
  11264. BX6 X7
  11265. ZR X7,BRQX IF NO POTS AVAILABLE
  11266. LX7 3 SET UP ENTRY POINTER
  11267. TX5 X7,VBMP
  11268. LX7 15
  11269. BX6 X6+X7
  11270. LX5 36
  11271. BX6 X6+X5
  11272. SA6 BRQA
  11273. BX7 X0 SAVE ENTRY POINTER
  11274. SA7 A6+B1
  11275. SX5 X0-ITOQ
  11276. SX0 SBUF SET SORT BUFFER POINTER
  11277. SX6 SBUF+VRQA*VCPC
  11278. SA6 A7+B1 STORE BUFFER CONSTANT
  11279. MX1 1
  11280. NZ X5,BRQ4 IF NOT *ITOQ*
  11281. SX6 SBUF+VRQB*VCPC
  11282. BX6 X6+X1 SET *1TO* FLAG
  11283. SA6 A6 REPLACE CONSTANT WITH *1TO* VALUE
  11284. BRQ4 SA1 X7 READ QUEUE POINTER
  11285. SB6 X7
  11286. UX1,B2 X1
  11287. ZR B2,BRQ5 IF QUEUE EMPTY
  11288. AX1 18 GET ENTRY
  11289. SB5 X1
  11290. RJ GQE
  11291. UX4,B3 X5 GET PROCESSOR ADDRESS
  11292. SA3 TRRT+B3
  11293. MX2 -12
  11294. AX3 36
  11295. BX2 -X2*X3
  11296. SB7 X2+TSRPROC
  11297. RJ PCS
  11298. RJ SSP
  11299. RJ UQS
  11300. SA1 BRQC
  11301. SX6 X1 GET BUFFER CONSTANT
  11302. IX6 X0-X6
  11303. PL X6,BRQ5 IF NO ROOM FOR MORE ENTRIES
  11304. SA2 A1-B1
  11305. SX7 X2
  11306. PL X1,BRQ4 IF NOT *ITOQ*
  11307. RJ CFL CHECK POT SUPPLY
  11308. PL X2,BRQ4 IF NOT LOW POT SUPPLY
  11309. BRQ5 MX6 1 SET BUFFER TERMINATOR
  11310. SA1 BRQA GET POT POINTER
  11311. SA6 X0
  11312. BX0 X1
  11313. SB7 B1 SET ENTRY LENGTH
  11314. MX5 -54
  11315. BX7 -X5
  11316. BRQ6 SA1 SBUF START SEARCH
  11317. SB6 A1
  11318. BX2 -X5*X1
  11319. BRQ7 SA1 A1+B1 SEARCH ENTRIES
  11320. BX3 -X5*X1
  11321. IX4 X3-X2
  11322. NG X1,BRQ8 IF END OF QUEUE
  11323. PL X4,BRQ7 IF CURRENT FIND BEST
  11324. SB6 A1 SET NEW FIND POINTER
  11325. BX2 X3
  11326. EQ BRQ7 CONTINUE SEARCH
  11327.  
  11328. BRQ8 LX2 59-53
  11329. NG X2,BRQ9 IF ALL ENTRIES PROCESSED
  11330. SA1 B6
  11331. BX6 X1
  11332. SA7 B6
  11333. RJ ENP MAKE POT ENTRY
  11334. EQ BRQ6 CONTINUE
  11335.  
  11336. BRQ9 AX0 18
  11337. SX6 X0
  11338. EQ BRQX RETURN
  11339.  
  11340. BRQA CON 0 POT POINTER
  11341. BRQB CON 0 QUEUE POINTER ADDRESS
  11342. BRQC CON 0 1/*1TO* FLAG, 41/0, 18/BUFFER CONSTANT
  11343. CAM SPACE 4,10
  11344. ** CAM - CLEAR AUTO MODE.
  11345. *
  11346. * USES A - 2, 6.
  11347. * X - 2, 3, 5, 6.
  11348. * B - 3, 4.
  11349. *
  11350. * CALLS DPT.
  11351.  
  11352.  
  11353. CAM SUBR ENTRY/EXIT
  11354. SA2 A0+VDCT
  11355. BX6 X2 SAVE CONTENTS OF VDCT
  11356. SA6 CAMA
  11357. SX6 B2+ SAVE TERMINAL NUMBER OF USER
  11358. SA6 CAMB
  11359. SX6 41B CLEAR READ DATA AND AUTO MODE
  11360. LX6 49-0
  11361. BX2 -X6*X2
  11362. LX2 0-24
  11363. MX3 -12
  11364. BX5 -X3*X2 GET POT POINTER
  11365. BX6 X3*X2 CLEAR POT POINTER
  11366. LX6 24-0
  11367. SA6 A2
  11368. ZR X5,CAMX IF NO POT POINTER
  11369. SB3 X5
  11370. SB4 B0 DROP TO END OF CHAIN
  11371. RJ DPT DROP POTS
  11372. EQ CAMX RETURN
  11373.  
  11374. CAMA CON 0 VDCT OF LAST USER
  11375. CAMB CON 0 TERMINAL NUMBER OF LAST USER
  11376. CBL SPACE 4,20
  11377. ** CBL - CHECK BREAK IN PROGRESS AND LOGOUT FLAGS.
  11378. *
  11379. * CHECK IF EITHER FLAG IS SET. IF NOT, RETURN TO THE
  11380. * CALLING ROUTINE. IF EITHER FLAG IS SET, DROP
  11381. * POTS AND EXIT FROM QUEUE PROCESSING.
  11382. *
  11383. * ENTRY (SEE SSP.)
  11384. * (B3) = QUEUE ENTRY POT POINTER.
  11385. * (B5) = INP$ ENTRY POT POINTER IF NONZERO.
  11386. *
  11387. * EXIT TO *PCSX* IF EITHER FLAG SET.
  11388. * (B3) AND (B5) POTS DROPPED IF EXISTENT.
  11389. *
  11390. * USES X - 0, 1.
  11391. * A - 1.
  11392. * B - 3, 4.
  11393. *
  11394. * CALLS DPT.
  11395.  
  11396.  
  11397. CBL SUBR ENTRY/EXIT
  11398. SA1 A0+VSTT CHECK BREAK IN PROGRESS AND LOGOUT FLAGS
  11399. SX0 2001B
  11400. LX0 48
  11401. BX1 X0*X1
  11402. ZR X1,CBLX IF NEITHER FLAG SET, RETURN
  11403. SX0 B5
  11404. SB4 B0
  11405. ZR B3,CBL1 IF NO B3 POT(S)
  11406. RJ DPT DROP POTS
  11407. CBL1 ZR X0,PCSX IF NO B5 POT(S)
  11408. SB3 X0
  11409. SB4 B0
  11410. RJ DPT DROP POTS
  11411. EQ PCSX EXIT
  11412. CCM SPACE 4,30
  11413. ** CCM - COMMAND CRACKER.
  11414. *
  11415. * CCM CRACKS A COMMAND IMAGE INTO A STRING BUFFER
  11416. * AND THEN REASSEMBLES IT ON A PARAMETER BASIS UP TO
  11417. * *PARL* PARAMETERS. THE STRING BUFFER MAY BE PARTIALLY
  11418. * OVERLAID BY THE PARAMETER BUFFER. IF A PARAMETER OF
  11419. * MORE THAN TEN CHARACTERS IS FOUND, THE ELEVENTH CHAR-
  11420. * ACTER IS TREATED AS A SEPARATOR CHARACTER. COMMENTS
  11421. * FOLLOWING THE COMMAND TERMINATOR ARE PACKED TEN
  11422. * CHARACTERS TO A PARAMETER, REGARDLESS OF CONTENT. ALL
  11423. * EXCESS POTS ARE DROPPED. SEE *PBUF* AND *SBUF* DES-
  11424. * CRIPTIONS.
  11425. *
  11426. * ENTRY (B3) = POT POINTER OF POT BEGINNING COMMAND.
  11427. * (B4) = FWA OF POT.
  11428. * (X7) = FIRST WORD OF COMMAND IN CURRENT POT.
  11429. *
  11430. * EXIT TO *IPL* IF *PBUF* OVERLAYS *SBUF*.
  11431. * (CCMA) = PARAMETER COUNT.
  11432. * (CCMB) = WORD COUNT OF *PBUF*.
  11433. * SEE BUFFER DESCRIPTIONS.
  11434. *
  11435. * USES X - ALL.
  11436. * A - 1, 2, 3, 4, 5, 6, 7.
  11437. * B - 2, 3, 4, 5, 6, 7.
  11438. *
  11439. * CALLS GPL, IPL, RPL, SSP.
  11440.  
  11441.  
  11442. CCM SUBR ENTRY/EXIT
  11443. SB5 B4+VCPC SET LWA OF POT
  11444. SB4 B4+X7 SET FWA OF COMMAND IN POT
  11445. SX3 B1
  11446. SA5 A0+VDCT CHECK TRANSMISSION MODE
  11447. LX3 51-0
  11448. SB2 B0 PRESET DISASSEMBLY REGISTER EMPTY
  11449. SB7 -1R0
  11450. BX6 X6-X6 PREVENT SPACE SUPPRESS BEYOND FWA
  11451. BX3 -X5*X3 TOGGLE TRANSMISSION STATUS
  11452. SA6 CCMF CLEAR LONG COMMAND LINE FLAG
  11453. SA6 CCMA INITIALIZE PARAMETER COUNT
  11454. BX0 X0-X0
  11455. SX2 76B
  11456. BX5 X3+X2
  11457. SX7 B3 SAVE POT POINTER THROUGH LOOP
  11458. SA7 CCMG
  11459. SA6 SBUF-1
  11460. EQ CCM3 ENTER DISASSEMBLY LOOP
  11461.  
  11462. * DISASSEMBLE COMMAND TO STRING BUFFER.
  11463.  
  11464. CCM1 LX1 6 GET NEXT CHARACTER
  11465. BX6 -X3*X1
  11466. BX3 X6
  11467. LX3 6
  11468. AX0 6
  11469. BX0 X0+X3
  11470. SA3 CCMF
  11471. SB2 B2-B1
  11472. NZ X3,CCM3 IF LONG COMMAND LINE CONDITION
  11473. SA6 A6+B1
  11474. NZ X0,CCM2 IF NOT POSSIBLE END OF LINE
  11475. ZR B2,CCM6 IF LAST BYTE OF WORD
  11476. CCM2 NZ X2,CCM2.1 IF PREVIOUS CHARACTER NOT *76*
  11477. SA6 A6-B1 REPLACE *76*
  11478. SX4 X6+B7
  11479. NG X4,CCM3 IF LOWER-CASE ALPHABETIC
  11480. EQ CCM2.2 TRANSLATE SPECIAL CHARACTER
  11481.  
  11482. CCM2.1 SX4 B1+B1
  11483. BX4 X2-X4
  11484. NZ X4,CCM3 IF PREVIOUS CHARACTER NOT *74*
  11485. SA6 A6-1
  11486. SX6 X6+1R0+TSCTA-TSCT
  11487. CCM2.2 SA4 TSCT-1R0+X6 GET DISPLAY-CODE TRANSLATION
  11488. BX7 X4
  11489. SA7 A6 ENTER DISPLAY CODE TRANSLATION INTO BUFFER
  11490. CCM3 BX2 X6-X5
  11491. MX3 -6
  11492. NZ B2,CCM5 IF MORE CHARACTERS IN CURRENT WORD
  11493. LT B4,B5,CCM4 IF NOT END OF POT
  11494. SB6 X6+ SAVE CHARACTER THROUGH *GPL*
  11495. RJ GPL GET POT LINK
  11496. SX6 B6+ RESTORE CURRENT CHARACTER
  11497. SB5 B4+VCPC
  11498. SX3 -77B
  11499. CCM4 SA1 B4 READ NEXT WORD FROM POT
  11500. SB4 B4+B1
  11501. SB2 10 RESET CHARACTER COUNT
  11502. CCM5 SB6 A6+1-PBUF-PBUFL
  11503. NG B6,CCM1 IF ROOM REMAINING IN STRING BUFFER
  11504. ZR X0,CCM6 IF END OF COMMAND LINE
  11505. SX7 B1+ SET LONG COMMAND LINE FLAG
  11506. SA7 CCMF
  11507. ZR X6,CCM1 IF COLON - CONTINUE CHECKING
  11508. SX6 X6-1R
  11509. ZR X6,CCM1 IF BLANK - CONTINUE CHECKING
  11510. RJ SSP SET STACK PARAMETERS
  11511. SMA X6,( COMMAND TOO LONG."NL")
  11512. EQ PCS5 ISSUE MESSAGE
  11513.  
  11514. * DELETE TRAILING SPACES AND POTS.
  11515.  
  11516. CCM6 SA1 A6-B1
  11517. MX6 1
  11518. SX4 1R
  11519. CCM7 SA1 A1-1 READ PRECEEDING CHARACTER
  11520. SX5 A1-SBUF+1
  11521. ZR X5,CCM8 IF NO PARAMETERS IN THE BUFFER
  11522. ZR X1,CCM7 IF TRAILING COLON
  11523. CCM8 BX5 X4-X1
  11524. ZR X5,CCM7 IF TRAILING BLANK
  11525. SA6 A1+B1 SET END OF LINE FLAG
  11526. BX6 X6-X6
  11527. SA6 A6+B1 TERMINATE BUFFER
  11528. SA2 CCMG RESTORE POT POINTER
  11529. BX7 X2 DROP TRAILING POTS
  11530. SB7 B0
  11531. SA1 SSPA
  11532. MX6 -12
  11533. BX6 -X6*X1
  11534. SB2 X6 TERMINAL NUMBER TO (B2)
  11535. RJ RPL
  11536.  
  11537. * REASSEMBLE COMMAND ON PARAMETER BASIS.
  11538. *
  11539. * (X3) = PARAMETER COUNT.
  11540. * (X6) = ASSEMBLY REGISTER.
  11541. * (X7) = FILE NAME FLAG.
  11542. * (B4) = CHARACTER COUNT OF PARAMETER.
  11543. * (B5) = SHIFT COUNT.
  11544. * (B6) = PARAMETER BUFFER INDEX.
  11545. * (B7) = STRING BUFFER INDEX.
  11546.  
  11547. SB6 PBUF INITIALIZE BUFFER POINTERS
  11548. SB7 SBUF
  11549. BX3 X3-X3 PRESET PARAMETER COUNT
  11550. BX5 X5-X5 CLEAR DELIMITER INDICATOR
  11551. SB2 8
  11552. SA1 B7 CHECK FIRST CHARACTER
  11553. SB5 X1-1R*
  11554. NZ B5,CCM22 IF NOT COMMENT
  11555. SA1 A0+VDCT CHECK USER LOGGED IN
  11556. LX1 59-57
  11557. PL X1,CCM22 IF LOGIN NOT COMPLETE
  11558. SX1 B0
  11559. MX3 1
  11560. EQ CCM22 ENTER ASSEMBLY LOOP
  11561.  
  11562. * ASSEMBLE PARAMETER.
  11563.  
  11564. CCM9 SB4 B4+B1 COUNT CHARACTER
  11565. SB5 B5-6 DECREMENT SHIFT COUNT
  11566. BX6 X6+X2 MERGE CHARACTER
  11567. CCM10 SA1 B7+ GET NEXT CHARACTER
  11568. SB7 B7+1
  11569. BX2 X1
  11570. ZR X2,CCM11 IF COLON CHARACTER
  11571. SX2 X1-1R+
  11572. NG X1,CCM15 IF END OF STRING
  11573. CCM11 SA4 CCMC MASK FOR BLANK, ASTERIK, AND DOLLAR SIGN
  11574. BX2 X2+X3
  11575. NG X2,CCM14 IF COMMAND TERMINATED OR ALPHANUMERIC
  11576. SB3 X1
  11577. SX2 B7-SBUF-1
  11578. ZR X2,CCM12 IF FIRST CHARACTER
  11579. SA2 CCME MASK FOR DOLLAR SIGN
  11580. LX2 B3
  11581. BX5 X5-X2
  11582. NG X5,CCM13 IF BEGINNING OF LITERAL STRING
  11583. CCM12 LX4 B3
  11584. PL X4,CCM15 IF SEPARATOR CHARACTER
  11585. SB3 B3-1R
  11586. ZR B3,CCM10 IF UNDELIMITED BLANK
  11587. CCM13 SX7 B1+ SET NOT-FILE-NAME FLAG
  11588. CCM14 LX2 X1,B5 POSITION CHARACTER FOR MERGER
  11589. PL B5,CCM9 IF NOT YET ELEVENTH CHARACTER
  11590.  
  11591. * PROCESS SEPARATOR CHARACTER.
  11592.  
  11593. CCM15 NZ X6,CCM16 IF NON-NULL PARAMETER
  11594. SX7 B1 SET NOT FILE NAME FLAG
  11595. CCM16 PL X1,CCM17 IF NOT END OF STRING
  11596. NG X3,CCM17 IF COMMAND TERMINATED
  11597. NG X5,CCM17 IF INSIDE A LITERAL STRING
  11598. SX4 1R. SET TERMINATOR
  11599. BX1 X1+X4
  11600. CCM17 LT B4,B2,CCM18 IF .LT. EIGHT CHARACTERS
  11601. SX7 B1+ SET NOT FILE NAME FLAG
  11602. CCM18 LX7 36 STORE PARAMETER ASSEMBLY
  11603. BX7 X7+X1
  11604. MX4 1
  11605. BX7 -X4*X7
  11606. SA6 B6
  11607. PX7 X7,B4
  11608. SB6 B6+2 INCREMENT PARAMETER BUFFER ADDRESS
  11609. SA7 A6+B1
  11610. SB3 X1
  11611. NG X3,CCM22 IF COMMAND TERMINATED
  11612. PL X1,CCM18.1 IF NOT END OF STRING
  11613. NG X5,CCM21 IF INSIDE A LITERAL STRING
  11614. CCM18.1 SX3 X3+B1 COUNT PARAMETER
  11615. SA2 =4LDIAL
  11616. BX6 X2
  11617. SA2 PBUF
  11618. BX6 X2-X6
  11619. NZ X6,CCM19 IF COMMAND NOT *DIAL*
  11620. SX6 X3-2
  11621. ZR X6,CCM21 IF TERMINAL NUMBER PROCESSED
  11622. CCM19 SA2 CCMD MASK FOR TERMINATORS
  11623. NG X5,CCM22 IF INSIDE A LITERAL STRING
  11624. LX2 B3
  11625. PL X2,CCM22 IF CURRENT SEPARATOR NOT TERMINATOR
  11626. SB3 B3-1R.
  11627. NZ B3,CCM21 IF NOT PERIOD
  11628. SA2 PBUF CHECK IF *LIST* COMMAND
  11629. BX6 X2
  11630. SA2 =4LLIST
  11631. BX2 X2-X6
  11632. ZR X2,CCM20 IF *LIST*
  11633. SA2 =3LLNH
  11634. BX6 X2-X6
  11635. NZ X6,CCM21 IF NOT *LNH*
  11636. CCM20 SB3 -1R.
  11637. SA2 B7 CHECK NEXT CHARACTER
  11638. SX6 X2+B3
  11639. SA2 B6-3 CHECK LAST SEPARATOR
  11640. ZR X6,CCM22 IF ELIPSIS
  11641. SX6 X2+B3
  11642. SA2 A2+B1
  11643. BX6 X2+X6
  11644. ZR X6,CCM22 IF ELIPSIS
  11645. CCM21 BX6 X3 SAVE PARAMETER COUNT
  11646. MX3 1 TERMINATE COMMAND
  11647. SA6 CCMA
  11648. CCM22 GE B6,B7,IPL IF *PBUF* OVERFLOWS *SBUF*
  11649. SB5 54 RESET CHARACTER COUNT
  11650. BX7 X7-X7 RESET FILE NAME FLAG
  11651. MX6 0 CLEAR ASSEMBLY REGISTER
  11652. SB4 B0+ RESET CHARACTER COUNT
  11653. PL X1,CCM10 IF NOT END OF STRING
  11654.  
  11655. * TERMINATE PARAMETER BUFFER.
  11656.  
  11657. SX6 B6-PBUF+2 SET *PBUF* WORD COUNT
  11658. SA6 CCMB
  11659. SX6 B0+ TERMINATE BUFFER
  11660. SX7 B1 SET NOT FILE NAME FLAG
  11661. LX7 36
  11662. SB7 PBUF+PARC*2
  11663. CCM23 SA6 B6
  11664. SA7 B6+B1
  11665. SB6 B6+2
  11666. LT B6,B7,CCM23 IF MORE NULL PARAMETERS TO BE SET
  11667. RJ SSP SET STACK PARAMETERS
  11668. JP CCMX RETURN
  11669.  
  11670. CCMA CON 0 PARAMETER COUNT
  11671. CCMB CON 0 WORD COUNT
  11672.  
  11673. CCMC BSS 0 MASK OF ALLOWABLE NON-ALPHANUMERICS
  11674. POS 60-1R*
  11675. VFD 1/1
  11676. POS 60-1R
  11677. VFD 1/1
  11678. POS 60-1R$
  11679. VFD 1/1
  11680. POS 0 INSURE ZERO FILL
  11681.  
  11682. CCMD BSS 0 COMMAND TERMINATOR MASK
  11683. POS 60-1R)
  11684. VFD 1/1
  11685. POS 60-1R.
  11686. VFD 1/1
  11687. POS 0 INSURE ZERO FILL
  11688.  
  11689. CCME BSS 0 DELIMITED LITERAL MASK
  11690. POS 60-1R$
  11691. VFD 1/1
  11692. POS 0 INSURE ZERO FILL
  11693.  
  11694. CCMF CON 0 LONG COMMAND LINE FLAG
  11695. CCMG CON 0 COMMAND POT POINTER
  11696. TSCT SPACE 4,10
  11697. ** TSCT - TABLE OF SPECIAL CHARACTER TRANSLATIONS.
  11698. *
  11699. * TSCT CONTAINS THE DISPLAY CODE TRANSLATIONS OF THE *74XX*
  11700. * SPECIAL CHARACTERS AND THE DISPLAY CODE MAPPINGS OF THE
  11701. * *76XX* SPECIAL CHARACTERS. THE LOWER SIX BITS OF THE
  11702. * CHARACTER ARE THE INDEX INTO THE TABLE.
  11703.  
  11704. TSCT BSS 0 *76XX* MAPPINGS
  11705. CON 61B 7633 - LEFT BRACE
  11706. CON 75B 7634 - VERTICAL LINE
  11707. CON 62B 7635 - RIGHT BRACE
  11708. CON 76B 7636 - TILDE
  11709.  
  11710. TSCTA BSS 0 *74XX* TRANSLATIONS
  11711. CON 0 7400 - (NOT DEFINED)
  11712. CON 74B 7401 - COMMERCIAL AT
  11713. CON 76B 7402 - CIRCUMFLEX
  11714. CON 0 7403 - (NOT DEFINED)
  11715. CON 0 7404 - COLON
  11716. CON 0 7405 - (NOT DEFINED)
  11717. CON 0 7406 - (NOT DEFINED)
  11718. CON 74B 7407 - COMMERCIAL AT
  11719. PBUF SPACE 4,25
  11720. ** PBUF - PARAMETER BUFFER.
  11721. * SBUF - STRING BUFFER.
  11722. *
  11723. * *PBUF* IS FORMATTED DURING COMMAND CRACKING. EACH
  11724. * PARAMETER HAS A TWO WORD ENTRY AS FOLLOWS.
  11725. *
  11726. *T,PBUF 60/ PARAMETER
  11727. *T,PBUF+1 12/ WORD COUNT, 12/ FN FLAG, 18/ 0, 18/ SEPARATOR
  11728. *
  11729. * THE WORD COUNT IS BIASED BY 2000B. THE FILE NAME
  11730. * FLAG IS SET TO ZERO TO INDICATE THAT THE PARAMETER
  11731. * CONTAINS ONLY ALPHANUMERICS AND IS SEVEN CHARACTERS
  11732. * OR LESS IN LENGTH. IT IS SET TO ONE TO INDICATE
  11733. * OTHERWISE.
  11734.  
  11735.  
  11736. LBUF CON 0
  11737. CON 1R$
  11738. PBUF BSS 48
  11739. SBUF BSS 82
  11740. PBUFL EQU *-PBUF
  11741. PARL EQU PBUFL/2-2
  11742. TBUF SPACE 4,10
  11743. ** TBUF - NETWORK DATA TRANSLATION BUFFER.
  11744.  
  11745.  
  11746. TBUF EQU PBUF DEFINE BUFFER FWA
  11747. TBUFL EQU 77D DEFINE BUFFER LENGTH
  11748. TBUFE EQU TBUF+TBUFL+1 DEFINE END OF BUFFER
  11749. IFLT *,TBUFE,1 DEFINE BUFFER AREA
  11750. BSS TBUFE-*
  11751. BSS 3 TRANSLATION OVERFLOW AREA
  11752. EXIBUF SPACE 4,10
  11753. ** EXIBUF -BUFFER FOR EXIT OVERLAY.
  11754. *
  11755. * THE EXIT OVERLAY BUFFER IS DEFINED TO OVERLAY A PORTION
  11756. * OF THE PARAMETER AND TRANSLATION BUFFER.
  11757.  
  11758.  
  11759. EXIBUF EQU PBUF+20
  11760. TITLE GENERAL SUBROUTINES.
  11761. CDP SPACE 4,10
  11762. ** CDP - CLEAR DETACH IN PROGRESS.
  11763. *
  11764. * CLEARS VSTT BIT 56, DETACH IN PROGRESS.
  11765. *
  11766. * USES X - 1, 6.
  11767. * A - 1, 6.
  11768.  
  11769.  
  11770. CDP SUBR ENTRY/EXIT
  11771. SA1 A0+VSTT
  11772. SX6 B1
  11773. LX6 56
  11774. BX6 -X6*X1
  11775. SA6 A1 REWRITE VSTT
  11776. EQ CDPX EXIT
  11777. CDS SPACE 4,20
  11778. ** CDS - CHECK DRIVER STACK STATUS.
  11779. *
  11780. * CHECK TO SEE IF ANY ACTIVE DRIVERS REMAIN. IF NOT,
  11781. * THE EXECUTIVE IS ABORTED.
  11782. *
  11783. * EXIT TO CALLER IF ANY DRIVER REMAINS ACTIVE.
  11784. * ABORTS WITH DAYFILE MESSAGE IF NO DRIVER ACTIVE.
  11785. *
  11786. * N.B. THE NETWORK DRIVER IS ALWAYS CONSIDERED
  11787. * TO BE ACTIVE IF PRESENT.
  11788. *
  11789. * USES X - 2, 6, 7.
  11790. * A - 2.
  11791. * B - 6.
  11792. *
  11793. * MACROS ABORT, MESSAGE.
  11794.  
  11795.  
  11796. CDS SUBR ENTRY/EXIT
  11797. TX7 B0,VNTP CHECK IF NETWORK ACTIVE
  11798. NZ X7,CDSX IF NETWORK ACTIVE, RETURN
  11799. SB6 B0+ INITIALIZE STACK POINTER INDEX
  11800. SX6 =C* NO ACTIVE DRIVERS REMAINING.*
  11801.  
  11802. * CHECK STACK POINTERS FOR ACTIVE DRIVER.
  11803.  
  11804. CDS1 SA2 VDRL+B6 READ NEXT STACK POINTER
  11805. SB6 B6+B1
  11806. AX2 24
  11807. NG X2,CDS2 IF END OF STACK POINTERS
  11808. SX7 X2
  11809. LX2 59-48+24 CHECK SHUTDOWN FLAG
  11810. ZR X7,CDS1 IF NULL POINTER
  11811. PL X2,CDSX IF ACTIVE DRIVER
  11812. EQ CDS1 LOOP FOR NEXT ENTRY
  11813.  
  11814. * ISSUE DAYFILE MESSAGE AND ABORT.
  11815.  
  11816. CDS2 MESSAGE X6,,R ISSUE DAYFILE MESSAGE
  11817. ONSW 2 PREVENT RELOAD
  11818. ABORT
  11819. SPACE 4,10
  11820. ** CFC - COUNT NUMBER OF CHARACTERS.
  11821. *
  11822. * COUNTS THE NUMBER OF CHARACTERS CONTAINED IN A
  11823. * CHARACTER STRING. THE MAXIMUM LENGTH OF THE
  11824. * CHARACTER STRING IS SEVEN.
  11825. *
  11826. * ENTRY (X6) = 42/CHARACTER STRING, 18/0.
  11827. *
  11828. * EXIT (B6) = CHARACTER COUNT.
  11829. *
  11830. * USES X - 1, 3.
  11831. * B - 6.
  11832.  
  11833.  
  11834. CFC SUBR ENTRY/EXIT
  11835. SB6 B0
  11836. ZR X6,CFCX IF NULL NAME
  11837. SB6 8
  11838. MX3 6
  11839. LX3 17-59
  11840. CFC1 SB6 B6-B1
  11841. LX3 6
  11842. BX1 X3*X6
  11843. ZR X1,CFC1 IF NO CHARACTER
  11844. EQ CFCX EXIT
  11845. CFL SPACE 4,20
  11846. ** CFL - CHECK IF MORE FIELD LENGTH NEEDED (POTS IN SHORT
  11847. * SUPPLY).
  11848. *
  11849. * ENTRY (VPAL) = TOTAL POTS ALLOCATED.
  11850. * (VPUL) = TOTAL POTS RESERVED.
  11851. *
  11852. * EXIT (X1) = TOTAL POTS AVAILABLE.
  11853. * (X2) = NEGATIVE IF BELOW MINIMUM POT SUPPLY.
  11854. * (X2) = TOTAL POTS AVAILABLE IF NOT BELOW MINIMUM.
  11855. *
  11856. * USES A - 1, 2, 6.
  11857. * X - 1, 2, 6.
  11858.  
  11859.  
  11860. CFL SUBR ENTRY/EXIT
  11861. SA1 VPAL TOTAL POTS ALLOCATED
  11862. SA2 A1+B1 POTS IN USE
  11863. IX1 X1-X2 POTS NOT IN USE
  11864. SX2 X1-VMIP
  11865. NG X2,CFL1 IF BELOW MINIMUM
  11866. SX2 X1+ (X2) = POTS AVAILABLE
  11867. EQ CFLX RETURN
  11868.  
  11869. * PROCESS LOW POT SUPPLY.
  11870.  
  11871. CFL1 SA2 CPBM COUNT POT SHORTAGE
  11872. SX6 B1
  11873. IX6 X2+X1
  11874. BX2 -X1 (X2) = NEGATIVE STATUS
  11875. SA6 A2
  11876. EQ CFLX RETURN
  11877. CFX SPACE 4,10
  11878. ** CFX - COPY FILE EXTERNALLY.
  11879. *
  11880. * ENTRY (LISB) = INPUT FILE NAME ADDRESS
  11881. * (LISC) = FIRST LINE NUMBER.
  11882. * (LISE) = LAST LINE NUMBER.
  11883. *
  11884. * EXIT (X7) = *SCOPY* IN DISPLAY (ENTRY POINT NAME).
  11885. * (X1) = 1, (ENTRY POINT DIRECTORY FLAG).
  11886. *
  11887. * USES X - 0, 1, 6, 7.
  11888. * A - 1, 6.
  11889. *
  11890. * CALLS CFC, PCB, ZTB.
  11891.  
  11892.  
  11893. CFX SUBR ENTRY/EXIT
  11894. SA1 LISB GET FILE NAME
  11895. NZ X1,CFX1 IF NOT PRIMARY FILE
  11896. SA1 A0+VFNT
  11897. CFX1 BX6 X1
  11898. RJ CFC COUNT CHARACTERS
  11899. SA6 CFXB STORE FILE NAME
  11900. SX6 1R,
  11901. PX6 X6,B6
  11902. SA6 A6+B1
  11903. SA1 LISC
  11904. SX6 1R*
  11905. LX6 54
  11906. BX6 X6-X1
  11907. NZ X6,CFX2 IF FIRST NUMBER NOT AN ASTERISK
  11908. SX1 B0+
  11909. CFX2 RJ ZTB CONVERT ZERO FILL TO BLANKS
  11910. SA6 CFXC
  11911. SA1 LISE
  11912. SX6 1R*
  11913. LX6 54
  11914. BX6 X6-X1
  11915. NZ X6,CFX3 IF SECOND NUMBER NOT AN ASTERISK
  11916. SX1 B0+
  11917. CFX3 RJ ZTB CONVERT ZERO FILL TO BLANKS
  11918. SA6 CFXD
  11919. SX1 CFXA
  11920. RJ PCB PACK CONTROL STATMENT BUFFER
  11921. SA1 CFXA
  11922. MX7 42
  11923. LX1 6
  11924. BX7 X7*X1 SET *EPN*
  11925. EQ CFXX EXIT
  11926.  
  11927. * SCOPY,LFN,,,,,,R,D,FLINE,LLINE,NS.
  11928.  
  11929. CFXA VFD 60/6L$SCOPY
  11930. VFD 12/2006B,48/1R,
  11931. CFXB VFD 60/0 INPUT FILE NAME
  11932. VFD 60/0 SEPARATOR
  11933. VFD 60/6L,,,,,R REWIND OPTION
  11934. VFD 12/2006B,48/1R,
  11935. VFD 60/1LD CHARACTER SET
  11936. VFD 12/2001B,48/1R,
  11937. CFXC VFD 60/0 FIRST LINE
  11938. VFD 12/2012B,48/1R,
  11939. CFXD VFD 60/0 LAST LINE
  11940. VFD 12/2012B,48/1R,
  11941. VFD 60/2LNS
  11942. VFD 12/2002B,48/1R.
  11943. VFD 60/0
  11944. VFD 60/0
  11945. CLE SPACE 4
  11946. ** CLE - CLEANS UP TERMINAL TABLE AFTER A USER LOGS OFF.
  11947. *
  11948. * EXIT TERMINAL TABLE CLEARED, ALL POTS DROPPED,
  11949. * AND ACTIVE USER COUNT DECREMENTED.
  11950. *
  11951. * USES X - 1, 2, 6, 7.
  11952. * A - 1, 2, 6, 7.
  11953. * B - 3, 4.
  11954. *
  11955. * CALLS DAP, DPT.
  11956.  
  11957.  
  11958. CLE SUBR ENTRY/EXIT
  11959. SA1 VANL DECREMENT ACTIVE USER COUNT
  11960. ZR X1,CLE0.1 IF NO ACTIVE USERS
  11961. SX6 B1
  11962. IX6 X1-X6
  11963. SA6 A1
  11964. RJ UCP UPDATE CONVERTED POINTER
  11965. CLE0.1 RJ DAP DROP ASSIGNED POTS
  11966. SX6 B0
  11967. SX7 B1
  11968. SA6 A0+VUIT
  11969. SA6 A0+VFNT
  11970. SA6 A0+VFST
  11971. SA7 A0+VROT
  11972. SA6 A0+VSTT
  11973. TA6 B2,VTNP CLEAR TERMINAL NAME
  11974. IFNET CLE1 IF NETWORK TERMINAL
  11975. SA1 A0+VDCT
  11976. SA2 =00007400000000000000B
  11977. BX6 X2*X1
  11978. SA6 A1 REWRITE VDCT
  11979. EQ CLEX RETURN
  11980.  
  11981. CLE1 SA6 A0+VDCT
  11982. SA1 A0+VDPT
  11983. SA6 A0+VCHT
  11984. MX2 12
  11985. SA6 A1 CLEAR VDPT
  11986. BX2 X2*X1
  11987. ZR X2,CLE2 IF NO POTS IN VDPT
  11988. SB4 B0
  11989. LX2 12
  11990. SB3 X2
  11991. RJ DPT DROP VDPT POTS
  11992. CLE2 TA1 B2,VMST
  11993. MX2 -12
  11994. SX6 B0
  11995. BX2 -X2*X1
  11996. SA6 A1 CLEAR VMST
  11997. ZR X2,CLEX IF NO POTS IN VMST
  11998. SB4 B0
  11999. SB3 X2
  12000. RJ DPT DROP VMST POTS
  12001. EQ CLEX RETURN
  12002. CNT SPACE 4,15
  12003. ** CNT - CANCEL TYPEAHEAD.
  12004. *
  12005. * ENTRY (X4) = REASON CODE TO SAVE IN *VMST*.
  12006. *
  12007. * EXIT TYPEAHEAD MODE CLEARED.
  12008. * (X1) = 0, IF REENTRY NOT MADE.
  12009. * = 1, IF REENTRY MADE.
  12010. * (X6) = REASON CODE, IF REENTRY MADE.
  12011. *
  12012. * USES X - 1, 2, 3, 4, 6, 7.
  12013. * A - 3, 6.
  12014. * B - 3, 4.
  12015. *
  12016. * CALLS DCR, DPT.
  12017.  
  12018.  
  12019. CNT1 TA3 B2,VMST GET REASON CODE
  12020. MX4 -3
  12021. AX3 44
  12022. BX6 -X4*X3
  12023. SX1 1 SET REENTRY MADE
  12024.  
  12025. CNT SUBR ENTRY/EXIT
  12026. TA3 B2,VMST CHECK FOR INTERNAL TYPEAHEAD QUEUE
  12027. MX6 -12
  12028. BX1 -X6*X3
  12029. ZR X1,CNTX IF NO TYPEAHEAD POT
  12030. LX4 44-0
  12031. MX6 -3
  12032. LX6 44-0
  12033. BX3 X6*X3 CLEAR PREVIOUS CODE
  12034. BX3 X4+X3 SET NEW CODE
  12035. MX6 -18
  12036. BX6 X3*X6 CLEAR POINTER AND POT COUNT IN VMST
  12037. SA6 A3 RESET VMST
  12038. SB3 X1 DROP TYPEAHEAD POT
  12039. SB4 B0
  12040. RJ DPT
  12041. BX1 X1-X1 PRESET NO REENTRY
  12042. TA3 B2,VMST
  12043. LX3 59-51
  12044. PL X3,CNTX IF NAM TYPEAHEAD NOT IN EFFECT
  12045. SX2 /1TD/CTM CANCEL NAM TYPEAHEAD
  12046. SX7 CNT1
  12047. JP DCR ENTER DRIVER REQUEST
  12048. COP SPACE 4
  12049. ** COP - COPIES THE CONTENTS OF POT(S) TO OTHER POT(S).
  12050. *
  12051. * ENTRY (B3) = NONZERO, FIRST POT TO BE COPIED
  12052. * ZERO, THEN
  12053. * (B7) = NUMBER OF POTS TO COPY.
  12054. * (X5) = POT TO LINK TO.
  12055. * (X6) = PACKED - BYTE 0 = (B7).
  12056. * - BYTE 4 = FIRST POT TO COPY.
  12057. *
  12058. * EXIT (X7) = POINTER TO FIRST COPIED POT.
  12059. * ZERO, IF NO POTS AVAILABLE.
  12060. * (B7) = NUMBER OF POTS COPIED.
  12061. *
  12062. * CALLS GPL, RPT.
  12063.  
  12064.  
  12065. COP SUBR ENTRY/EXIT
  12066. ZR B3,COP2 IF POT COUNT SPECIFIED IN B7
  12067. SX7 B3 SAVE ENTRY INFORMATION
  12068. SB7 B0 INITIALIZE COUNT
  12069. COP1 SB7 B7+B1
  12070. RJ GPL
  12071. NZ B3,COP1 IF STILL MORE POTS IN THE CHAIN
  12072. PX6 X7,B7
  12073. BX5 X5-X5
  12074. COP2 SA6 COPA GET POTS
  12075. PX5 X5,B7
  12076. RJ RPT
  12077. ZR X7,COPX IF NO POT(S) AVAILABLE
  12078. SA1 COPA GET SAVED INFORMATION
  12079. UX4,B7 X1 SET FIRST READ POT
  12080. BX1 X7 SET FIRST WRITE POT
  12081. SB3 X4
  12082. LX4 3
  12083. LX7 3
  12084. TX2 X7+1,VBMP ADDRESS OF WRITE POT
  12085. AX7 3
  12086. TB4 X4,VBMP ADDRESS OF READ POT
  12087. SB6 VCPC-1
  12088. COP3 SA3 B4+B6 COPY POT
  12089. SB6 B6-B1
  12090. BX6 X3
  12091. SA6 X2+B6
  12092. PL B6,COP3 IF MORE WORDS TO COPY
  12093. SB6 B3 SAVE READ POT POINTER
  12094. SB3 X1 SET WRITE POT POINTER
  12095. RJ GPL GET POT LINK FOR WRITE POT
  12096. ZR B3,COPX IF COPY COMPLETE RETURN
  12097. SX2 B4+B1 SET WRITE POT ADDRESS
  12098. SX1 B3 SAVE WRITE POT POINTER
  12099. SB3 B6 SET READ POT POINTER
  12100. RJ GPL GET POT LINK FOR READ POT
  12101. SB6 VCPC-1
  12102. EQ COP3
  12103.  
  12104. COPA BSSZ 1 STORAGE FOR POT POINTER
  12105. CTM SPACE 4,20
  12106. ** CTM - CALL TWO PORT MUX DRIVER.
  12107. *
  12108. * *CTM* IS CALLED EITHER BY *ITP* WHEN A *TSEM*
  12109. * REQUEST HAS BEEN ISSUED, OR BY *DRI* AFTER DRIVER
  12110. * SHUTDOWN FOR *1TM* HAS COMPLETED.
  12111. *
  12112. * ENTRY (VITM) = FORMATTED *1TM* DRIVER REQUEST WORD.
  12113. * = 18/DN, 24/0, 18/VA.
  12114. * DN = *1TM* DRIVER NAME.
  12115. * VA = *1TM* *VDRL* ADDRESS.
  12116. *
  12117. * EXIT *1TM* HAS BEEN CALLED.
  12118. *
  12119. * USES A - 1, 2, 7.
  12120. * X - 1, 2, 7.
  12121. *
  12122. * MACROS SYSTEM.
  12123.  
  12124.  
  12125. CTM SUBR ENTRY/EXIT
  12126. SA2 VITM GET FORMATTED DRIVER REQUEST WORD
  12127. BX7 X2
  12128. SA7 CTMA SAVE FORMATTED REQUEST WORD
  12129. CTM1 SYSTEM SPC,,CTMA CALL *1TM*
  12130. + SA1 B1+
  12131. NZ X1,* IF SYSTEM REQUEST NOT CLEAR
  12132. SA1 CTMA
  12133. NZ X1,CTM1 IF PPU NOT AVAILABLE
  12134. EQ CTMX RETURN
  12135.  
  12136.  
  12137. CTMA CON 0 SCRATCH WORD
  12138. CTP SPACE 4,20
  12139. ** CTP - COPY DATA INTO POTS.
  12140. *
  12141. * COPY DATA FROM A BUFFER INTO POTS. *CTP* RESERVES POTS
  12142. * BASED ON THE BUFFER CM WORD COUNT AND ON HOW MANY POTS
  12143. * ARE PROVIDED BY THE CALLER.
  12144. *
  12145. * ENTRY (B3) = FIRST POT OF CHAIN IF ONE PROVIDED.
  12146. * (B4) = NUMBER OF WORDS TO TRANSFER INTO POTS.
  12147. * (X6) = BUFFER ADDRESS.
  12148. * (B5) = WORD OFFSET INTO THE FIRST POT AT WHICH POINT
  12149. * DATA WILL BEGIN TO BE STORED.
  12150. *
  12151. * EXIT (X6) = 0, IF DATA WAS NOT COPIED.
  12152. * POT COUNT, IF TRANSFER COMPLETE.
  12153. * (B3) = FIRST POT POINTER.
  12154. * (B4) = ADDRESS OF FIRST POT.
  12155. * (X7) = LAST POT POINTER.
  12156. * (B6) = WORD COUNT IN LAST POT.
  12157. *
  12158. * USES X - 1, 2, 5, 6, 7.
  12159. * A - 1, 2, 6, 7.
  12160. * B - 3, 4, 5, 6, 7.
  12161. *
  12162. * CALLS GPC, GPL.
  12163.  
  12164.  
  12165. CTP SUBR ENTRY/EXIT
  12166. SX7 B5 SAVE ENTRY CONDITIONS
  12167. PX6 X6,B4
  12168. SA7 CTPA
  12169. SA6 A7+B1
  12170. SB6 B4+B5 SET TOTAL CM WORD COUNT
  12171. RJ GPC GET POT CHAIN OF CORRECT LENGTH
  12172. ZR X6,CTPX IF POTS NOT OBTAINED
  12173. SA1 CTPA
  12174. SA2 A1+B1
  12175. SA6 A1 SAVE POT COUNT
  12176. UX6,B6 X2
  12177. SX5 B3 SAVE FIRST POT POINTER
  12178. SB7 X1
  12179. SB5 VCPC
  12180. SB5 B5-B7 NUMBER OF WORDS THAT CAN FIT IN FIRST POT
  12181. SA2 X6-1
  12182. SB4 B4+B7 START WITH OFFSET WORD
  12183. SB6 B6-B5
  12184. GT B6,CTP2 IF MORE THAN ONE POT OF DATA
  12185. SB5 B6+B5
  12186. SB7 X1+B5 SET WORD COUNT IN LAST POT
  12187. EQ CTP2 TRANSFER THE DATA
  12188.  
  12189. * COPY THE DATA INTO THE POTS.
  12190.  
  12191. CTP1 RJ GPL ADVANCE TO NEXT POT
  12192. SB5 VCPC SET TO TRANSFER *VCPC* WORDS
  12193. SB6 B6-B5
  12194. GT B6,CTP2 IF MORE THAN ONE POT OF DATA LEFT
  12195. SB5 B6+B5 SET TO TRANSFER PARTIAL POT
  12196. SB7 B5 SET WORD COUNT IN LAST POT
  12197. CTP2 SA2 A2+B1 GET WORD FROM BUFFER
  12198. SB5 B5-B1
  12199. SB4 B4+B1
  12200. BX7 X2 STORE WORD INTO POT
  12201. SA7 B4-1
  12202. NZ B5,CTP2 IF POT NOT YET FULL
  12203. GT B6,CTP1 IF ALL DATA NOT YET TRANSFERRED
  12204. SX7 B3 LAST POT POINTER
  12205. SB6 B7 WORD COUNT IN LAST POT
  12206. SA1 CTPA
  12207. SB3 X5 FIRST POT POINTER
  12208. LX5 3
  12209. BX6 X1
  12210. TB4 X5,VBMP ADDRESS OF FIRST POT
  12211. EQ CTPX EXIT
  12212.  
  12213. CTPA CON 0 OFFSET INTO FIRST POT
  12214. CTPB CON 0 WORD COUNT, BUFFER ADDRESS
  12215. DAP SPACE 4
  12216. ** DAP - DROP DRIVER REQUESTS AND POTS.
  12217. *
  12218. * DROPS POTS ASSIGNED TO TERMINAL IN VDCT AND IN
  12219. * VSTT.
  12220. *
  12221. * CALLS DPT, DQO.
  12222.  
  12223.  
  12224. DAP1 RJ DQO DROP QUEUED OUTPUT
  12225.  
  12226. DAP SUBR ENTRY/EXIT
  12227. SA1 A0+VDCT
  12228. MX2 -13
  12229. LX2 60-1
  12230. BX3 -X2*X1
  12231. ZR X3,DAP1 IF NO POTS TO DROP
  12232. BX6 X2*X1 CLEAR POINTER
  12233. SA6 A1
  12234. IFNET DAP1 CHECK NETWORK OUTPUT
  12235. NG X1,DAP1 IF DRIVER FUNCTION
  12236. SB3 X3 DROP POTS
  12237. SB4 B0
  12238. RJ DPT
  12239. EQ DAP1
  12240. DIP SPACE 4,10
  12241. ** DIP - DROP INPUT POT CHAIN.
  12242. *
  12243. * EXIT - INPUT POT CHAIN DROPPED.
  12244. *
  12245. * USES X - 1, 6.
  12246. * A - 1, 6.
  12247. * B - 3, 4.
  12248. *
  12249. * CALLS DPT.
  12250.  
  12251.  
  12252. DIP SUBR ENTRY/EXIT
  12253. IFMUX DIPX
  12254. SA1 A0+VDPT
  12255. AX1 48
  12256. ZR X1,DIPX IF NO INPUT POT CHAIN
  12257. BX6 X6-X6 CLEAR VDPT
  12258. SA6 A1
  12259. SB3 X1
  12260. SB4 B0
  12261. RJ DPT DROP POT CHAIN
  12262. EQ DIPX RETURN
  12263. DJS SPACE 4,10
  12264. ** DJS - DETERMINE JOB STATUS.
  12265. *
  12266. * EXIT (X6) = ADDRESS OF STATUS MESSAGE.
  12267.  
  12268.  
  12269. DJS SUBR ENTRY/EXIT
  12270. SA1 A0+VSTT
  12271. SA2 A0+VROT
  12272. LX1 59-54
  12273. LX2 59-2
  12274. SX6 =4LIDLE
  12275. PL X1,DJSX IF JOB COMPLETE
  12276. SX6 =4LWAIT
  12277. NG X2,DJSX IF JOB ROLLED OUT
  12278. SX6 =7LEXECUTE
  12279. EQ DJSX EXIT
  12280. DLP SPACE 4,10
  12281. ** DLP - DUMP LAST POT OF INPUT TO PRIMARY FILE.
  12282. *
  12283. * EXIT LAST INPUT POT DUMPED, POT POSITION CLEARED IN VDPT.
  12284. * (B6) = 0 IF NO DUMP, NONZERO IF DUMP IN PROGRESS.
  12285. *
  12286. * USES X - 0, 1, 2, 3, 6, 7.
  12287. * A - 1, 2, 6, 7.
  12288. * B - 3, 4, 6, 7.
  12289. *
  12290. * CALLS DMP, GPL, SSP.
  12291.  
  12292.  
  12293. DLP2 SB3 X0 LAST POT
  12294. MX7 12
  12295. BX1 -X7*X1
  12296. LX6 48 SAVE LAST POT POINTER FOR *DIP*
  12297. BX6 X6+X1
  12298. LX7 36
  12299. BX6 -X7*X6 CLEAR FW, WC, AND BC FIELDS
  12300. SA6 A1 REWRITE VDPT
  12301. BX6 X2
  12302. SA6 A2 REWRITE VSTT
  12303. LX7 12 CHECK QUEUED INPUT
  12304. DLP3 MX6 -3 CHECK CURRENT VDPT INPUT
  12305. LX1 30
  12306. IFNET DLP4
  12307. LX1 2 POSITION FOR CW MUX FORMAT
  12308. DLP4 BX0 -X6*X1 WORD COUNT IN LAST POT
  12309. DLP5 BX6 X2*X7 CHECK QUEUE IN VSTT
  12310. BX6 X0+X6
  12311. ZR X6,DLP6 IF NO DUMP NECESSARY
  12312. BX7 X0 WORD COUNT
  12313. SB7 B0 SET TO FORCE DUMP
  12314. SB6 X7 SET TO DUMP (B3) ONLY IF WC .GT. 0
  12315. RJ DMP DUMP LAST POT
  12316. SB6 B1 SET EXIT CONDITION
  12317. DLP6 RJ SSP RESET REGISTERS
  12318.  
  12319. DLP SUBR ENTRY/EXIT
  12320. SA1 A0+VDPT CLEAR INPUT INITIATED BIT
  12321. SX6 1S16
  12322. BX6 -X6*X1
  12323. SA6 A1 REWRITE VDPT
  12324. SA2 A0+VROT CHECK JOB ACTIVITY
  12325. SB6 B0 SET NO DUMP EXIT CONDITION
  12326. LX2 59-0
  12327. PL X2,DLPX IF JOB ACTIVE
  12328. SA2 A0+VFNT CHECK PRIMARY FILE
  12329. MX6 42
  12330. BX6 X6*X2
  12331. ZR X6,DLPX IF NO PRIMARY FILE
  12332. SA2 A0+VSTT QUEUE COMPLETE POTS OF DATA
  12333. MX7 12
  12334. BX0 X7*X1 FIRST POT POINTER
  12335. LX7 48
  12336. SB3 B0
  12337. ZR X0,DLP5 IF NO POT CHAIN IN VDPT
  12338. BX3 X7*X1 LAST POT IN VDPT
  12339. LX3 24
  12340. SB3 X3
  12341. IFMUX DLP3
  12342. SB7 X3
  12343. LX0 12 POSITION POT POINTER
  12344. SX6 X0 INITIALIZE LAST POT POINTER
  12345. SB3 X0
  12346. SB4 B7-B3
  12347. ZR B4,DLP2 IF LAST POT REACHED
  12348. DLP1 RJ GPL GET LINK TO NEXT POT
  12349. ZR B3,DLP2 IF LAST POT REACHED
  12350. BX6 X0 MOVE OLD FIRST POT POINTER
  12351. SX0 B3 SAVE NEW FIRST POT POINTER
  12352. SB4 B7-B3
  12353. ZR B4,DLP2 IF LAST POT REACHED
  12354. SX3 B1 INCREMENT POT COUNT
  12355. LX3 30-0
  12356. IX2 X2+X3
  12357. BX7 X7*X2 CHECK VSTT FIRST POT POINTER
  12358. LX6 36-0
  12359. NZ X7,DLP1 IF ALREADY SET
  12360. BX2 X2+X6 SET INTO VSTT
  12361. BX7 X2
  12362. EQ DLP1 CHECK NEXT POT IN CHAIN
  12363. DMP SPACE 4,30
  12364. ** DMP - DUMP SOURCE INPUT.
  12365. *
  12366. * CALLS *1TO* TO DUMP SOURCE POTS. THE SOURCE POT CHAIN
  12367. * POINTER AND CHAIN LENGTH IS MAINTAINED IN *VSTT* BYTES
  12368. * 1 AND 2. *1TO* WILL BE CALLED TO DUMP POTS WHEN THIS
  12369. * CHAIN LENGTH EXCEEDS THE MAXIMUM SPECIFIED IN THE CALL
  12370. * TO *DMP*.
  12371. *
  12372. * ENTRY (B3) = POT TO BE DUMPED.
  12373. * (X7) = WORD COUNT IN POT TO BE DUMPED.
  12374. * (B6) = 0, IF ONLY POTS IN VSTT ARE TO BE DUMPED.
  12375. * 1, IF POT IN *B3* SHOULD BE DUMPED ALSO.
  12376. * (B7) = POT COUNT THRESHOLD. A DUMP WILL BE
  12377. * FORCED IF THE POT COUNT EXCEEDS THIS
  12378. * VALUE. A VALUE OF ZERO MAY BE USED
  12379. * TO FORCE THE DUMP.
  12380. *
  12381. * EXIT IF *1TO* REQUEST NOT ENTERED.
  12382. * (VSTT) BYTE 1 = FIRST POT OF CHAIN.
  12383. * BYTE 2 = POT COUNT.
  12384. *
  12385. * IF *1TO* REQUEST ENTERED.
  12386. * (VSTT) BYTE 1 = 0.
  12387. * BYTE 2 = 0.
  12388. * (VROT) = SET BUSY IF CURRENT REENTRY QUEUE ENTRY.
  12389. *
  12390. * CALLS MQE, SSP.
  12391. *
  12392. * NOTE THE POT CHAIN CONTAINING INPUT DATA
  12393. * WILL BE DROPPED UPON RETURN FROM *1TO*
  12394. * EXCEPT FOR THE LAST (B3 - ENTRY) POT.
  12395.  
  12396.  
  12397. DMP SUBR ENTRY/EXIT
  12398. SA1 A0+VSTT
  12399. SA2 A0+VFNT
  12400. MX5 42
  12401. MX4 12
  12402. LX4 -12
  12403. BX6 X4*X1
  12404. BX5 X5*X2
  12405. MX3 18
  12406. ZR X5,DMPX IF PRIMARY FILE NON-EXISTENT
  12407. LX3 -12
  12408. BX2 X3*X1
  12409. NZ X6,DMP1 IF INPUT CURRENTLY BEING HELD
  12410. SX2 B3 SET POT IN ENTRY
  12411. ZR B6,DMPX IF NO DUMP NEEDED
  12412. LX2 36
  12413. DMP1 SX4 B0
  12414. ZR B6,DMP2 IF NO ADDITIONAL POT TO DUMP
  12415. SX4 B1 COUNT POT
  12416. DMP2 LX4 30
  12417. IX2 X2+X4
  12418. BX4 X2
  12419. MX6 -6
  12420. AX4 30
  12421. BX4 -X6*X4 GET NUMBER OF POTS
  12422. BX6 -X3*X1
  12423. SX3 B1 SET SORT FLAG
  12424. LX3 52-0
  12425. BX6 X3+X6
  12426. SB5 X4
  12427. LT B5,B7,DMP3 IF DUMP NOT NEEDED
  12428. SA5 A0+VROT CHECK FOR DUMP IN PROGRESS
  12429. LX5 59
  12430. NG X5,DMP4 IF FILE NOT ACTIVE
  12431. DMP3 BX6 X2+X6 UPDATE POT COUNT
  12432. SA6 A1
  12433. EQ DMPX
  12434.  
  12435. DMP4 SA6 A1 REEINITIALIZE POT COUNT AND POINTER
  12436. AX2 36
  12437. LX4 24 POSITION POT COUNT
  12438. SX5 ICH$ MAKE *1TO* REQUEST
  12439. NZ B6,DMP5 IF NEW POT BEING DUMPED
  12440. BX7 X7-X7
  12441. DMP5 LX7 33 POSITION WORD COUNT
  12442. BX6 X4+X7
  12443. LX5 48
  12444. BX6 X5+X6
  12445. SB7 ITOQ
  12446. LX2 12
  12447. BX5 X6+X2
  12448. RJ MQE
  12449. NZ X2,DMP6 IF STACKED QUEUE ENTRY
  12450. SA5 A0+VROT MARK STATUS BUSY IF CURRENT QUEUE ENTRY
  12451. MX6 59
  12452. BX6 X6*X5
  12453. SA6 A5+ REWRITE VROT
  12454. DMP6 RJ SSP RESET TERMINAL PARAMETERS
  12455. EQ DMPX RETURN
  12456. DPT SPACE 4
  12457. ** DPT - DROP POT.
  12458. *
  12459. * CLEARS POT LINK BYTES AND MARKS POTS AVAILABLE IN THE
  12460. * POT LINK TABLE.
  12461. *
  12462. * ENTRY (B3) = FIRST POT OF CHAIN TO BE DROPPED.
  12463. * (B4) = LAST POT IN CHAIN TO BE DROPPED.
  12464. * (B4) = 0 = DROP TO END OF CHAIN.
  12465. *
  12466. * EXIT (DPTA) = POT POINTER IF POT NOT RESERVED.
  12467. * (B3) = ZERO.
  12468. * (B4) = ZERO.
  12469. *
  12470. * USES A - 1, 6, 7.
  12471. * X - 1, 2, 3, 4, 5, 6, 7.
  12472. * B - 3, 4, 5, 6, 7.
  12473. *
  12474. * CALLS ABT IF POT NOT RESERVED.
  12475.  
  12476.  
  12477. DPT2 SX3 X2+ SAVE POT POINTER
  12478. LX2 58 GET PLT RELATIVE ADDRESS
  12479. SA1 X2+B7 READ PLT ENTRY
  12480. BX6 X5*X2 GET BYTE NUMBER * 12
  12481. LX6 4 BYTE * 4
  12482. LX7 X6,B1 BYTE * 8
  12483. IX6 X6+X7 BYTE * 12
  12484. AX7 3 GET BYTE NUMBER
  12485. SB3 X6+B6 SET BYTE MASK SHIFT
  12486. AX6 X5,B3 SHIFT BYTE MASK
  12487. SB4 X7 SET BIT MASK SHIFT
  12488. AX7 X4,B4 SHIFT BIT MASK
  12489. BX2 X6*X1 MASK OUT BYTE
  12490. LX1 X1,B3 SET FOR NEXT LINK
  12491. BX6 -X7*X2 MASK OUT BIT
  12492. SA6 A1 STORE WORD
  12493. BX7 X7*X2 CHECK RESERVATION
  12494. SB5 B5-B1 COUNT POT DROPPED
  12495. BX2 -X5*X1 GET NEXT LINK
  12496. ZR X7,DPT1 IF POT NOT RESERVED
  12497. NZ X2,DPT2 IF ANOTHER LINK TO DROP
  12498. SA1 VPUL UPDATE POTS IN USE
  12499. SX6 X1+B5
  12500. SA6 A1
  12501. DPT3 SB3 B0 CLEAR POT POINTER
  12502. SB4 B0 CLEAR POT CHAIN POINTER
  12503.  
  12504. DPT SUBR ENTRY/EXIT
  12505. ZR B3,DPT0 IF TRYING TO DROP POT ZERO
  12506. SX2 B3 SET FIRST POT TO DROP
  12507. SX4 10B
  12508. MX5 48
  12509. TB7 0,VPLP SET FWA OF PLT
  12510. SB6 -48
  12511. SB5 B0 CLEAR POTS DROPPED COUNT
  12512. ZR B4,DPT2 IF DROP TO END OF CHAIN
  12513. SX3 B4
  12514. LX3 58 GET PLT RELATIVE ADDRESS
  12515. SA1 X3+B7 READ PLT ENTRY
  12516. BX6 X5*X3
  12517. LX6 4 BYTE * 4
  12518. LX7 X6,B1 BYTE * 8
  12519. IX6 X6+X7 BYTE * 12
  12520. SB3 X6+B6 SET BYTE MASK SHIFT
  12521. AX6 X5,B3 SHIFT BYTE MASK
  12522. BX6 X6*X1 MASK OUT BYTE
  12523. SA6 A1 STORE WORD
  12524. EQ DPT2
  12525.  
  12526. * PROCESS NON-RESERVED POT ERROR.
  12527. *
  12528. * ENTRY (X3) = POT POINTER.
  12529.  
  12530. DPT0 SX3 B3
  12531. DPT1 SX7 X3+ STORE POT POINTER
  12532. SX6 3RDPT SET ERROR CODE
  12533. SA7 DPTA
  12534. RJ ABT
  12535. EQ DPT3 CLEAR REGISTERS AND RETURN
  12536.  
  12537. DPTA CON 0 POINTER TO NON-RESERVED POT
  12538. DQO SPACE 4,10
  12539. ** DQO - DROP QUEUED OUTPUT.
  12540. *
  12541. * DROPS OUTPUT POTS QUEUED IN *VSTT*.
  12542. * FOR A DESCRIPTION OF HOW POT CHAINS OF DATA ARE LINKED
  12543. * TOGETHER IN THE QUEUE, SEE THE NOTE AT THE BEGINNING
  12544. * OF SUBROUTINE *ANM*.
  12545. *
  12546. * CALLS DPT.
  12547.  
  12548.  
  12549. DQO2 SB3 X3 DROP THE SINGLE CHAIN
  12550. SB4 B0
  12551. RJ DPT
  12552.  
  12553. DQO SUBR ENTRY/EXIT
  12554. SA1 A0+VSTT
  12555. MX2 -12
  12556. BX3 -X2*X1
  12557. ZR X3,DQOX IF NO POTS TO DROP
  12558. BX6 X2*X1 CLEAR POINTER
  12559. MX2 54 CLEAR CHAIN COUNTER
  12560. LX2 24
  12561. BX6 X2*X6
  12562. SA6 A1
  12563. IFMUX DQO2 IF ONLY ONE CHAIN IN VSTT
  12564. DQO1 SB3 X3
  12565. LX3 3
  12566. TA1 X3,VBMP SAVE LINK TO NEXT CHAIN
  12567. SB4 B0
  12568. BX6 X1
  12569. SA6 DQOA
  12570. RJ DPT DROP CURRENT CHAIN
  12571. SA1 DQOA
  12572. MX3 -12
  12573. BX3 -X3*X1
  12574. ZR X3,DQOX IF NO MORE CHAINS TO DROP
  12575. EQ DQO1 DROP NEXT CHAIN
  12576.  
  12577. DQOA CON 0 LINK TO NEXT CHAIN
  12578. DQP SPACE 4,10
  12579. ** DQP - DROP QUEUE ENTRY POTS.
  12580. *
  12581. * RELEASE POTS ASSOCIATED WITH A REENTRY QUEUE ENTRY.
  12582. *
  12583. * ENTRY (SSPA) = REENTRY QUEUE ENTRY.
  12584. *
  12585. * EXIT QUEUE ENTRY POTS RELEASED.
  12586. * (SSPA) UPDATED.
  12587. * (B3) = 0.
  12588. * (B4) = 0.
  12589. *
  12590. * USES A - 1, 6.
  12591. * X - 1, 6.
  12592. * B - 3, 4.
  12593. *
  12594. * CALLS DPT, SSP.
  12595.  
  12596.  
  12597. DQP SUBR ENTRY/EXIT
  12598. RJ SSP SET UP REGISTERS
  12599. SB4 B0+
  12600. ZR B3,DQPX IF NO POTS
  12601. RJ DPT DROP POT(S)
  12602. SA1 SSPA CLEAR POT POINTER IN STACK ENTRY
  12603. MX6 -12
  12604. LX6 12
  12605. BX6 X6*X1
  12606. SA6 A1 REWRITE STACK ENTRY
  12607. EQ DQPX RETURN
  12608. DSH SPACE 4,10
  12609. ** DSH - SHUT DOWN DRIVER QUEUE STACK.
  12610. *
  12611. * ISSUE HANG-UP-PHONE DRIVER-TO-IAFEX REQUESTS. THE
  12612. * REQUESTS ARE PLUGGED INTO THE CIRCULAR REQUEST STACK
  12613. * TO BE PROCESSED BY *DRI* ON ITS NEXT CYCLE. THIS
  12614. * CAN CAUSE NO INTERFERENCE WITH DRIVER USE OF THE
  12615. * STACK BECAUSE THE DRIVER WILL HAVE DROPPED. *DSH*
  12616. * WILL BE CALLED FROM *DRI* WHENEVER *DRI* FINDS THAT
  12617. * A CIRCULAR STACK IS EMPTY AND THE SHUTDOWN FLAG IS
  12618. * SET. AFTER COMPLETION, *DSH* WILL SET THE DRIVER
  12619. * STATUS AS *OFF* IN THE DRIVER CIRCULAR STACK POINTER.
  12620. * IF NO ACTIVE DRIVERS REMAIN AND NETWORK IS NOT ACTIVE,
  12621. * THE EXECUTIVE WILL BE ABORTED.
  12622. *
  12623. * ENTRY (X1) = ADDRESS OF CIRCULAR STACK POINTER.
  12624. *
  12625. * USES A - 1, 2, 4, 5, 6.
  12626. * X - 1, 2, 3, 4, 5, 6, 7.
  12627. * B - 2, 3, 4, 7.
  12628. *
  12629. * CALLS CDS.
  12630.  
  12631.  
  12632. DSH SUBR ENTRY/EXIT
  12633. RJ CDS CHECK DRIVER STATUSES
  12634.  
  12635. * INITIALIZE NEW SHUTDOWN.
  12636.  
  12637. SA5 DSHA CURRENT SHUTDOWN POINTER
  12638. NZ X5,DSH1 IF SHUTDOWN IN PROGRESS
  12639. SA2 X1+ READ CIRCULAR STACK POINTER
  12640. MX5 -12
  12641. BX3 -X5*X2 SET FIRST TERMINAL NUMBER OF STACK
  12642. SB2 X3
  12643. PX6 X1,B2 FORMAT SHUTDOWN POINTER
  12644. BX5 X6
  12645. SA6 A5 STORE
  12646.  
  12647. * SET POINTERS FOR ENTERING CIRCULAR STACK REQUESTS.
  12648.  
  12649. DSH1 SA1 X5 (X5) = STACK POINTER ADDRESS
  12650. SB4 10 (B4) = REQUEST LIMIT
  12651. UX5,B2 X5 (B2) = CURRENT TERMINAL NUMBER
  12652. MX6 -12
  12653. BX2 -X6*X1 FIRST TERMINAL NUMBER OF STACK
  12654. AX1 12
  12655. SB7 X2
  12656. BX2 -X6*X1 TERMINAL COUNT
  12657. AX1 12
  12658. SB7 B7+X2 (B7) = LAST TERMINAL + 1 OF STACK
  12659. SA1 X1+B1 READ FIRST
  12660. SB3 A1+1 (B3) = ADDRESS OF IN
  12661. SX6 X1 SET OUT = FIRST
  12662. SA6 B3+B1
  12663. SX7 /TLX/HUP+2000B INITIALIZE REQUEST
  12664. SA6 B3 SET IN = FIRST
  12665. LX7 48
  12666.  
  12667. * FORMAT CIRCULAR STACK REQUEST.
  12668.  
  12669. DSH2 SX3 B2+ SET TERMINAL NUMBER
  12670. TTADD B2,A0,X2,X6 SET TERMINAL TABLE ADDRESS
  12671. SA1 A0+VDCT
  12672. SA2 A0+VDPT
  12673. MX4 12
  12674. BX1 X4*X1
  12675. ZR X1,DSH3 IF NO USER
  12676. SA1 A0+VSTT
  12677. LX1 59-48
  12678. NG X1,DSH3 IF LOGOUT IN PROGRESS
  12679. BX6 X6-X6
  12680. BX4 X4*X2
  12681. SA6 A2 CLEAR VDPT
  12682.  
  12683. * ENTER CIRCULAR STACK REQUEST.
  12684.  
  12685. SA1 B3 GET CURRENT IN POINTER
  12686. BX6 X7+X3 MERGE REQUEST AND TERMINAL NUMBER
  12687. LX4 24
  12688. BX6 X6+X4 MERGE POT POINTER
  12689. SA6 X1 STORE REQUEST IN CIRCULAR STACK
  12690. SX6 X1+B1 ADVANCE IN
  12691. SA6 B3
  12692. SB4 B4-B1 DECREMENT REQUEST COUNT
  12693.  
  12694. * ADVANCE TO NEXT TERMINAL.
  12695.  
  12696. DSH3 SB2 B2+B1 ADVANCE TERMINAL NUMBER
  12697. BX6 X6-X6 ASSUME END OF TERMINALS
  12698. GE B2,B7,DSH4 IF END OF TERMINALS
  12699. NZ B4,DSH2 IF NOT REQUEST LIMIT
  12700. PX6 X5,B2 UPDATE SHUTDOWN POINTER
  12701.  
  12702. * RESET SHUTDOWN POINTER AND SET DRIVER *OFF*.
  12703.  
  12704. DSH4 SA6 DSHA REWRITE SHUTDOWN POINTER
  12705. NZ X6,DSHX IF NOT END OF THIS SHUTDOWN, RETURN
  12706. SA1 X5 READ CIRCULAR STACK POINTER
  12707. SX6 B1 SET DRIVER STATUS = *OFF*
  12708. LX6 49-0
  12709. BX6 X6+X1
  12710. SA6 A1+ REWRITE CIRCULAR STACK POINTER
  12711. EQ DSHX RETURN
  12712.  
  12713. * DSHA - CURRENT SHUTDOWN POINTER.
  12714. *
  12715. * 12/2000B+TN , 48/SPA.
  12716. * TN = CURRENT TERMINAL NUMBER.
  12717. * SPA = CURRENT STACK POINTER ADDRESS.
  12718.  
  12719. DSHA CON 0 CURRENT SHUTDOWN POINTER.
  12720. DVP SPACE 4,10
  12721. ** DVP - DROP *VROT* POT CHAIN.
  12722. *
  12723. * DROP INPUT POT CHAIN POINTED TO BY *VROT*.
  12724. *
  12725. * USES X - 1, 2, 6.
  12726. * A - 1, 6.
  12727. * B - 3, 4.
  12728. *
  12729. * CALLS DPT.
  12730.  
  12731.  
  12732. DVP SUBR ENTRY/EXIT
  12733. SA1 A0+VROT CHECK FOR INPUT POT POINTER
  12734. MX2 -12
  12735. LX2 47-11
  12736. BX6 -X2*X1
  12737. ZR X6,DVPX IF NO POT TO DROP
  12738. LX6 -36
  12739. SB3 X6
  12740. BX6 X2*X1 CLEAR POT POINTER
  12741. SA6 A1
  12742. SB4 B0
  12743. RJ DPT DROP INPUT POT
  12744. EQ DVPX RETURN
  12745. EDR SPACE 4,20
  12746. ** EDR - ENTER DRIVER REQUEST.
  12747. *
  12748. * ENTER DRIVER REQUEST IN TERMINAL TABLE WORD *VDCT*
  12749. * AND SET ACTIVITY BIT IF NETWORK TERMINAL.
  12750. *
  12751. * ENTRY (VDCT) = INTERLOCK CLEAR.
  12752. * (X2) = DRIVER REQUEST.
  12753. *
  12754. * USES X - 1, 2, 6.
  12755. * A - 1, 6.
  12756. *
  12757. * CALLS ABT, /IAFEX4/SAB.
  12758.  
  12759.  
  12760. EDR1 SX6 3REDR
  12761. RJ ABT
  12762.  
  12763. EDR SUBR ENTRY/EXIT
  12764. SA1 A0+VDCT READ VDCT
  12765. MX6 1 SET DRIVER REQUEST
  12766. BX2 X6+X2
  12767. MX6 -12
  12768. BX6 -X6*X1
  12769. NZ X6,EDR1 IF VDCT INTERLOCKED
  12770. BX6 X2+X1
  12771. SA6 A1 REWRITE VDCT
  12772. IFMUX EDRX IF MUX TERMINAL, RETURN
  12773. RJ /IAFEX4/SAB SET ACTIVITY BIT
  12774. EQ EDRX RETURN
  12775. ENP SPACE 4,20
  12776. ** ENP - ENTER POT ENTERS TWO WORDS IN A POT CHAIN AND UPDATES
  12777. * POINTERS IF NECESARY. POT CHAIN MUST BE ZEROED.
  12778. *
  12779. * ENTRY-
  12780. * (X0) = BITS (53 - 36) = CURRENT ADDRESS IN CURRENT POT
  12781. * (X0) = BITS (35 - 18) = FIRST POT IN CHAIN.
  12782. * (X0) = BITS (17 - 0) = CURRENT POT IN CHAIN.
  12783. * (X6) = FIRST WORD TO BE ENTERED.
  12784. * (X7) = SECOND WORD TO BE ENTERED.
  12785. * (B7) = 1 OR 2 INDICATING 1 OR 2 WORD ENTRY.
  12786. *
  12787. * EXIT-
  12788. * (X0) = UPDATED.
  12789. * (X5) = UNCHANGED.
  12790. * (X7) = UNCHANGED.
  12791. * (B7) = UNCHANGED.
  12792. *
  12793. * CALLS GPL.
  12794.  
  12795.  
  12796. ENP2 LX1 36 UPDATE POINTER
  12797. BX6 X6-X6
  12798. IX0 X0+X1
  12799. SA6 B4
  12800.  
  12801. ENP SUBR ENTRY/EXIT
  12802. BX3 X0
  12803. SB3 X0
  12804. LX3 3
  12805. SX1 B7
  12806. TB5 X3+VCPC,VBMP SET LWA+1 OF POT
  12807. LX3 -3-36
  12808. SA6 X3 ENTER FIRST WORD
  12809. SB4 X3+B7 SET NEXT ADDRESS
  12810. EQ B1,B7,ENP1 IF ONE WORD ENTRY
  12811. SA7 X3+B1
  12812. ENP1 NE B4,B5,ENP2 IF NOT END OF POT
  12813. RJ GPL
  12814. MX6 -18
  12815. SX3 B4
  12816. LX6 18
  12817. BX0 -X6*X0
  12818. LX3 36
  12819. SX6 B3
  12820. BX2 X0+X3
  12821. IX0 X2+X6
  12822. EQ ENPX
  12823. EUC SPACE 4,10
  12824. ** EUC - END UCP CONNECTION.
  12825. *
  12826. * ENTRY (X7) = UCP IDENTIFICATION (JSN AND EJTO).
  12827. *
  12828. * EXIT (X1) = RETURN CODE.
  12829. *
  12830. * USES X - 1, 6.
  12831. * A - 1.
  12832. *
  12833. * CALLS SFC.
  12834.  
  12835.  
  12836. EUC SUBR ENTRY/EXIT
  12837. SA1 EUCA SET UP CALL FORMAT
  12838. BX6 X1
  12839. RJ SFC SEND SFCALL
  12840. EQ EUCX EXIT
  12841.  
  12842.  
  12843. EUCA VFD 18/0,18/-1,18/0,6/ENDT
  12844. FMF SPACE 4,15
  12845. ** FMF - FORMAT MODES FIELD.
  12846. *
  12847. * ENTRY (A6) = ADDRESS OF LWA MESSAGE SO FAR.
  12848. *
  12849. * EXIT (A6) = LWA OF MESSAGE INCLUDING EOL.
  12850. *
  12851. * USES X - 1, 2, 6.
  12852. * A - 1, 2, 6.
  12853. * B - 5.
  12854. *
  12855. * CALLS PKW.
  12856.  
  12857.  
  12858. FMF SUBR ENTRY/EXIT
  12859. SX6 2R:
  12860. SB5 60-12 BITS LEFT IN WORD
  12861. SA1 A0+VDCT
  12862. LX1 59-55
  12863. PL X1,FMF1 IF NOT BRIEF MODE
  12864. SA2 =7LBRIEF,
  12865. RJ PKW PACK WORD
  12866. FMF1 LX1 55-50
  12867. PL X1,FMF2 IF NOT TEXT MODE
  12868. SA2 =6LTEXT,
  12869. RJ PKW PACK WORD
  12870. FMF2 SA1 A0+VSTT
  12871. LX1 59-53
  12872. SA2 =10LPROMPT OFF
  12873. NG X1,FMF3 IF NO PROMPT MODE
  12874. SA2 =9LPROMPT ON
  12875. FMF3 RJ PKW
  12876. LX6 B5
  12877. SA6 A6+B1
  12878. MX2 -12
  12879. BX2 -X2*X6
  12880. ZR X2,FMFX IF EOL ALREADY INCLUDED
  12881. BX6 X6-X6
  12882. SA6 A6+B1
  12883. EQ FMFX EXIT
  12884. FPQ SPACE 4,30
  12885. ** FPQ - FILL POT QUEUE.
  12886. *
  12887. * *FPQ* CHECKS THE NUMBER OF POT CHAINS IN THE *TGPM* QUEUES
  12888. * THAT HAVE NOT BEEN USED. IF THE QUEUE IS EMPTY, THE NUMBER
  12889. * OF POT CHAINS TO KEEP IN THE QUEUE (CONTROL VALUE) IS
  12890. * INCREASED BY ONE. IF THE QUEUE IS NON-EMPTY FOR 1000 TIMES,
  12891. * THE CONTROL VALUE IS DECREASED BY ONE. *VMIL* IS THE
  12892. * MINIMUM POT CHAINS TO KEEP IN EACH QUEUE. EACH QUEUE IS
  12893. * FILLED IN A ROUND-ROBIN FASHION FROM WHERE THE LAST FILL
  12894. * COMPLETED. IF THERE IS NOT ENOUGH FIELD LENGTH TO FILL THE
  12895. * QUEUE TO CONTROL VALUE, AS MANY ENTRIES AS POSSIBLE
  12896. * ARE REFILLED, SO THERE MAY NOT ALWAYS BE THE CONTROL
  12897. * VALUE NUMBER OF POT CHAINS IN THE QUEUE. EACH TIME
  12898. * *FPQ* IS EXECUTED, AN ATTEMPT IS MADE TO FILL TO
  12899. * CONTROL VALUE.
  12900. *
  12901. * ENTRY (X1) = *TGPM* QUEUE STATUS WORD.
  12902. * (B2) = LENGTH OF POT CHAIN FOR THIS QUEUE.
  12903. * (B3) = NEXT FILL POINTER.
  12904. * (B4) = PREVIOUS FILL POINTER.
  12905. * (B5) = POT CHAIN COUNT(CONTROL VALUE).
  12906. *
  12907. * EXIT (X0) = UPDATED NEXT FILL POINTER.
  12908. * (X4) = UPDATED PREVIOUS FILL POINTER.
  12909. * (B5) = UPDATED POT CHAIN COUNT (CONTROL VALUE).
  12910. *
  12911. * USES A - 1, 3, 4, 5, 6, 7.
  12912. * X - 0, 1, 2, 3, 4, 5, 6, 7.
  12913. * B - 4, 5, 6, 7.
  12914. *
  12915. * CALLS CFL, RPT.
  12916.  
  12917.  
  12918. FPQ SUBR ENTRY/EXIT
  12919. BX6 X1 SAVE *TGPM* QUEUE STATUS WORD
  12920. SA6 FPQD
  12921. SX4 B0 CLEAR UNUSED CHAIN COUNT
  12922. SX5 B0 CLEAR USED CHAIN COUNT
  12923. MX2 -12
  12924. BX3 -X2*X1
  12925. SB6 X3 GET END OF QUEUE ADDRESS
  12926. AX1 12 GET BEGINNING OF QUEUE ADDRESS
  12927. BX3 -X2*X1
  12928. FPQ1 LT B4,B6,FPQ2 IF NOT END OF QUEUE
  12929. SB4 X3 RESET TO BEGINNING OF QUEUE
  12930. FPQ2 EQ B4,B3,FPQ6 IF END OF PREVIOUS FILL
  12931. SA1 B4
  12932. NZ X1,FPQ3 IF POT CHAIN NOT USED
  12933. SX5 X5+B1 COUNT USED POT CHAINS
  12934. SB4 B4+B1
  12935. EQ FPQ1 CHECK NEXT QUEUE ENTRY
  12936.  
  12937. FPQ3 SB7 B4 (B4) = UPDATED PREVIOUS FILL POINTER
  12938. FPQ4 LT B7,B6,FPQ5 IF NOT END OF QUEUE
  12939. SB7 X3 RESET TO BEGINNING OF QUEUE
  12940. FPQ5 EQ B7,B3,FPQ8 IF END OF PREVIOUS FILL
  12941. SX4 X4+B1 COUNT UNUSED POT CHAINS
  12942. SB7 B7+B1
  12943. EQ FPQ4 CHECK NEXT ENTRY
  12944.  
  12945. FPQ6 SB7 X5
  12946. NE B7,B5,FPQ8 IF NOT EMPTY QUEUE
  12947. SA1 FPQA CLEAR DECREMENT COUNTER
  12948. SB7 B2-VSCL
  12949. ZR B7,FPQ7 IF SHORT POT CHAIN QUEUE
  12950. SA1 FPQB
  12951. FPQ7 SX6 B0
  12952. SA6 A1
  12953. SX1 B5-VMXL
  12954. PL X1,FPQ11 IF QUEUE ALREADY AT MAXIMUM SIZE
  12955. SB5 B5+B1
  12956. EQ FPQ11 CONTINUE
  12957.  
  12958. FPQ8 SA1 FPQA
  12959. SB7 B2-VSCL
  12960. ZR B7,FPQ9 IF SHORT POT CHAIN QUEUE
  12961. SA1 FPQB CHECK DECREMENT COUNTER
  12962. FPQ9 SX6 X1+B1
  12963. SX1 X6-VTHL
  12964. NG X1,FPQ10 IF NOT TIME TO DECREASE QUEUE SIZE
  12965. SX6 B0 RESET COUNTER
  12966. SB7 VMIL
  12967. LE B5,B7,FPQ10 IF QUEUE ALREADY MINUMUM SIZE
  12968. SB5 B5-B1 DECREASE QUEUE SIZE
  12969. FPQ10 SA6 A1 SAVE COUNTER
  12970. FPQ11 SX0 B5 (X0) = UPDATED CHAIN COUNT
  12971. IX6 X0-X4 GET NUMBER OF ENTRIES LEFT TO FILL
  12972. SX1 B4 SAVE CHAIN COUNT AND FILL POINTER
  12973. PX7 X1,B5
  12974. SA7 FPQE
  12975. SX0 B3 (X0) = CURRENT FILL POINTER
  12976. FPQ12 SA6 FPQC
  12977. SX6 X6-1
  12978. NG X6,FPQ15 IF POT QUEUE HAS BEEN FILLED
  12979. RJ CFL CHECK POT SUPPLY
  12980. PL X2,FPQ13 IF MINIMUM OR ABOVE,FILL QUEUE
  12981. SA1 VCPL
  12982. NZ X1,FPQ15 IF FL INCREASE PENDING
  12983. SA1 SPRM INCREMENT THROTTLE FLAG
  12984. SX6 X1+1
  12985. SA6 A1
  12986. EQ FPQ15 RETURN
  12987.  
  12988. FPQ13 SX1 B0
  12989. PX5 X1,B2
  12990. RJ RPT GET POT CHAIN
  12991. ZR X7,FPQ15 IF NOT POTS AVAILABLE
  12992. SA7 X0 PUT POT POINTER IN QUEUE
  12993. SX0 X0+B1 UPDATE CURRENT FILL POINTER
  12994. MX3 -12 CHECK END OF QUEUE
  12995. SA1 FPQD
  12996. BX6 -X3*X1
  12997. BX6 X0-X6
  12998. NZ X6,FPQ14 IF NOT END OF QUEUE
  12999. AX1 12 RESET TO BEGINNING OF QUEUE
  13000. BX0 -X3*X1
  13001. FPQ14 SA1 FPQC DECREMENT FILL COUNTER
  13002. SX6 X1-1
  13003. EQ FPQ12 FILL NEXT QUEUE ENTRY
  13004.  
  13005. FPQ15 SA1 FPQE RESTORE PARAMETERS
  13006. UX4,B5 X1
  13007. EQ FPQX RETURN
  13008.  
  13009.  
  13010. FPQA CON 0 *VTSL* QUEUE NON-EMPTY COUNTER
  13011. FPQB CON 0 *VTLL* QUEUE NON-EMPTY COUNTER
  13012. FPQC CON 0 FILL COUNTER
  13013. FPQD CON 0 CURRENT *TGPM*QUEUE STATUS WORD
  13014. FPQE CON 0 TEMPORARY STORAGE FOR RETURN PARAMETERS
  13015. FSM SPACE 4,15
  13016. ** FSM - FORMAT STATUS MESSAGE.
  13017. *
  13018. * ENTRY (B4) = ADDRESS OF MESSAGE FIELD CONTENTS.
  13019. * (X1) = CUMULATIVE SRU-S.
  13020. *
  13021. * EXIT (A6) = LWA OF MESSAGE.
  13022. * (X7) = MESSAGE WORD COUNT.
  13023. * MESSAGE FORMATTED STARTING AT FSMA.
  13024. *
  13025. * USES X - 1, 2, 3, 5, 6, 7.
  13026. * A - 1, 2, 3, 5, 6, 7.
  13027. * B - 2, 3, 4.
  13028. *
  13029. * CALLS CFD, ZTB.
  13030.  
  13031.  
  13032. FSM SUBR ENTRY/EXIT
  13033. BX7 X1 SAVE ENTRY CONDITIONS
  13034. SA7 FSMB
  13035. SX7 B4
  13036. SA7 A7+B1
  13037. SX7 B3 SAVE TERMINAL NUMBER AND POT POINTER
  13038. PX7 X7,B2
  13039. SA7 A7+B1
  13040. SA1 A0+VFST GET JSN
  13041. MX2 24
  13042. BX2 X2*X1
  13043. SA3 =6L JSN:
  13044. LX2 24
  13045. BX6 X2+X3
  13046. SA6 FSMA
  13047. SA1 A0+VSTT
  13048. MX2 -3
  13049. AX1 12
  13050. BX1 -X2*X1
  13051. SA1 X1+STAA
  13052. SX2 1RS
  13053. BX1 X1+X2
  13054. RJ ZTB CONVERT ZERO CHARACTERS TO BLANKS
  13055. SA1 FSMB GET ENTRY PARAMETERS
  13056. SA5 A1+B1
  13057. SA6 A1
  13058. SA3 FSMC SRU CONSTANT (.0001)
  13059. PX1 X1
  13060. FX1 X3*X1 DIVIDE ACCUMULATOR VALUE BY 1000
  13061. RJ CFD CONVERT TO F10.3 FORMAT
  13062. SB4 X5
  13063. SA5 A5+B1
  13064. UX5,B2 X5 RESTORE POT POINTER AND TERMINAL NUMBER
  13065. SB3 X5
  13066. MX2 36
  13067. BX6 X2*X6
  13068. LX6 36
  13069. SA1 =4LRU:
  13070. BX6 X1+X6
  13071. SA6 A6+B1
  13072. LX7 36
  13073. BX6 X7
  13074. SA6 A6+B1
  13075. SA1 A0+VFNT
  13076. MX3 42
  13077. BX1 X3*X1
  13078. ZR X1,FSM1 IF NO PRIMARY FILE
  13079. SA2 =6L FILE
  13080. LX2 36
  13081. BX6 X2+X7
  13082. LX1 18
  13083. SA6 A6
  13084. SA2 =7L NAME:
  13085. MX3 -18
  13086. BX6 -X3*X1
  13087. BX6 X2+X6
  13088. SA6 A6+B1
  13089. MX2 -12
  13090. BX6 -X2*X6
  13091. ZR X6,FSM1 IF EOL APPENDED
  13092. BX6 X3*X1
  13093. SA6 A6+B1
  13094. FSM1 SA1 B4 CHECK STATUS MESSAGE
  13095. MX2 12
  13096. BX3 X2*X1
  13097. SA1 A1-B1 START LOOP
  13098. SA2 =10H STATUS:
  13099. BX6 X2
  13100. MX2 -12
  13101. NZ X3,FSM2 IF STATUS MESSAGE CURRENT
  13102. SX7 B0 DO NOT ISSUE MESSAGE
  13103. SA7 B4
  13104. FSM2 SX7 A6-FSMC+1
  13105. PL X7,FSM3 IF END OF BUFFER
  13106. SA6 A6+B1
  13107. BX3 -X2*X6
  13108. SA1 A1+B1
  13109. BX6 X1
  13110. NZ X3,FSM2 IF NO EOL
  13111. FSM3 SX7 A6-FSMA+1 SET WORD COUNT
  13112. EQ FSMX EXIT
  13113.  
  13114. FSMA CON 0 JSN
  13115. DATA 10H SYSTEM:
  13116. FSMB BSS 12 MESSAGE BUFFER
  13117. FSMC CON 0.0001P48+1 SRU CONSTANT
  13118. GFN SPACE 4
  13119. ** GFN - GET FILE NAME.
  13120. *
  13121. * GETS FILE NAME FROM *PBUF*, CHECKS FILE FLAG, RETURNS TO
  13122. * CALLING ROUTINE UNLESS AN ERROR WAS DETECTED.
  13123. *
  13124. * ENTRY (B6) = POINTER TO FILE NAME.
  13125. *
  13126. * EXIT (X2) = FILE NAME IF NO ERROR.
  13127. *
  13128. * ERROR TO *IPL* IF INCORRECT FILE NAME.
  13129. *
  13130. * USES X - 1, 2.
  13131. * A - 1, 2.
  13132.  
  13133.  
  13134. GFN SUBR ENTRY/EXIT
  13135. SA1 B6+1 GET ERROR FLAG
  13136. SA2 B6 GET FILE NAME
  13137. LX1 59-36
  13138. NG X1,IPL IF FILE NAME ERROR
  13139. EQ GFNX EXIT
  13140. GOP SPACE 4,10
  13141. ** GOP - GET ONE POT.
  13142. *
  13143. * ENTRY (B3) = POT POINTER IF POT ALREADY RESERVED.
  13144. *
  13145. * EXIT (B3) = POT POINTER.
  13146. * (B4) = POT FWA.
  13147. *
  13148. * CALLS RPT.
  13149.  
  13150.  
  13151. GOP SUBR ENTRY/EXIT
  13152. SX7 B3
  13153. GT B3,GOP1 IF POT ALREADY RESERVED
  13154. PX5 X7,B1
  13155. RJ RPT RESERVE POT
  13156. GOP1 SB3 X7
  13157. LX7 3
  13158. TB4 X7,VBMP
  13159. EQ GOPX EXIT
  13160. GPC SPACE 4,20
  13161. ** GPC - GET POT CHAIN.
  13162. *
  13163. * GETS SUFFICIENT POTS FOR THE NUMBER OF CM WORDS SPECIFIED.
  13164. * IF A POT CHAIN IS PROVIDED BY THE CALLER, *GPC* WILL ADD
  13165. * POTS AS NECESSARY TO THE END OF THE CHAIN. ANY EXTRA POTS
  13166. * WILL BE DROPPED.
  13167. *
  13168. * ENTRY (B3) = FIRST POT OF CHAIN IF ONE PROVIDED.
  13169. * (B6) = CM WORD COUNT.
  13170. *
  13171. * EXIT (X6) = 0, IF CHAIN NOT RESERVED.
  13172. * POT COUNT, IF CHAIN RESERVED.
  13173. * (B3) = FIRST POT OF CHAIN.
  13174. * (B4) = ADDRESS OF FIRST POT.
  13175. *
  13176. * USES X - 1, 5, 6.
  13177. * A - 1, 6.
  13178. * B - 3, 4, 6.
  13179. *
  13180. * CALLS GPL, RPT.
  13181.  
  13182.  
  13183. GPC SUBR ENTRY/EXIT
  13184. SX5 B3
  13185. SX6 B6+7
  13186. AX6 3
  13187. ZR X6,GPCX IF CM WORD COUNT IS ZERO
  13188. SB6 X6
  13189. PX6 X5,B6 SAVE FIRST POT, POT COUNT
  13190. SA6 GPCA
  13191. ZR B3,GPC3 IF NO POTS PROVIDED
  13192.  
  13193. * COMPUTE HOW MANY ADDITIONAL POTS MUST BE RESERVED.
  13194.  
  13195. GPC1 SB6 B6-1
  13196. ZR B6,GPC2 IF ENOUGH POTS PRESENT
  13197. RJ GPL GET POT LINK
  13198. ZR B3,GPC3 IF END OF SUPPLIED POT CHAIN REACHED
  13199. SX5 B3+
  13200. EQ GPC1 LOOP TO END OF CHAIN
  13201.  
  13202. * DROP ANY EXTRA POTS.
  13203.  
  13204. GPC2 SX7 B3
  13205. SB7 B0
  13206. RJ RPL DROP TRAILING POTS
  13207. EQ GPC4 SET UP EXIT CONDITIONS
  13208.  
  13209. * RESERVE ADDITIONAL POTS.
  13210.  
  13211. GPC3 PX5 X5,B6
  13212. RJ RPT REQUEST NEEDED POTS
  13213. SX6 X7+
  13214. ZR X6,GPC6 IF NO POTS WERE RESERVED
  13215. GPC4 SA1 GPCA
  13216. UX1,B6 X1
  13217. SB3 X1
  13218. NZ B3,GPC5 IF A CHAIN WAS SUPPLIED
  13219. SB3 X7+
  13220. GPC5 SX5 B3
  13221. SX6 B6+ RESTORE POT COUNT
  13222. LX5 3
  13223. TB4 X5,VBMP
  13224. EQ GPCX EXIT
  13225.  
  13226. GPC6 SA1 GPCA RESTORE ENTRY POT POINTER
  13227. SB3 X1+
  13228. EQ GPCX EXIT
  13229.  
  13230. GPCA CON 0 FIRST POT, POT COUNT
  13231. GPL SPACE 4,20
  13232. ** GPL - GET POT LINK.
  13233. *
  13234. * THIS ROUTINE IS ONLY USED FOR LOW USAGE ROUTINES WHICH
  13235. * REQUIRE POT LINKS.
  13236. *
  13237. * ENTRY (B3) = CURRENT POT.
  13238. *
  13239. * EXIT (B3) = NEW POT POINTER.
  13240. * = 0 IF AT END OF CHAIN ON ENTRY.
  13241. * (B4) = FWA OF NEW POT.
  13242. *
  13243. * USES A - 3.
  13244. * B - 3, 4.
  13245. * X - 3, 4, 6.
  13246. *
  13247. * CALLS ABT.
  13248.  
  13249.  
  13250. GPL SUBR ENTRY/EXIT
  13251. ZR B3,GPL1 IF TO GET LINK FOR POT ZERO
  13252. SX4 B3
  13253. LX4 58
  13254. TA3 X4,VPLP GET PLT ENTRY
  13255. MX6 48
  13256. BX4 X6*X4
  13257. LX4 4 BYTE * 4
  13258. LX6 X4,B1 BYTE * 8
  13259. IX4 X4+X6 BYTE * 12
  13260. SB3 X4+12
  13261. LX3 X3,B3 GET LINK BYTE
  13262. MX6 -12
  13263. BX3 -X6*X3
  13264. SB3 X3 SET NEW POT
  13265. LX3 3
  13266. TB4 X3,VBMP SET FWA OF NEW POT
  13267. EQ GPLX RETURN
  13268.  
  13269. GPL1 SX6 3RGPL
  13270. RJ ABT
  13271. SB3 B0+
  13272. EQ GPLX EXIT
  13273. GQE SPACE 4,30
  13274. ** GQE - GET QUEUE ENTRY FROM QUEUE.
  13275. *
  13276. * DELETES QUEUE ENTRY FROM QUEUE AND RETURNS ENTRY
  13277. * TO CALLING ROUTINE. THE EXECUTIVE WILL BE ABORTED
  13278. * IF THE QUEUE ENTRY IS DETERMINED TO BE INCORRECT.
  13279. *
  13280. * ENTRY (B5) = TERMINAL NUMBER OF QUEUE ENTRY.
  13281. * (B6) = ADDRESS OF QUEUE POINTER WORD.
  13282. * (B7) = TERMINAL NUMBER LINKED TO QUEUE ENTRY
  13283. * IF NOT FIRST TERMINAL OF QUEUE.
  13284. *
  13285. * EXIT ENTRY REMOVED FROM QUEUE.
  13286. * QUEUE POINTER WORD UPDATED.
  13287. * (B2) = NEXT TERMINAL OF QUEUE (ENTRY TO WHICH
  13288. * CURRENT ENTRY LINKED).
  13289. * = 0 IF NO ENTRIES AFTER CURRENT ENTRY.
  13290. * (B5) = TERMINAL NUMBER LINKED TO QUEUE ENTRY
  13291. * IF NOT FIRST OR LAST TERMINAL OF QUEUE.
  13292. * (X5) = QUEUE ENTRY.
  13293. * = 0 IF NO QUEUE ENTRY FOR TERMINAL.
  13294. *
  13295. * TO ABT+1 IF INCORRECT QUEUE ENTRY.
  13296. * (SSPA) = QUEUE ENTRY.
  13297. *
  13298. * USES A - 1, 6, 7.
  13299. * X - 1, 4, 5, 6, 7.
  13300. * B - 3, 4, 2.
  13301. *
  13302. * CALLS ABT, GRT.
  13303.  
  13304.  
  13305. GQE3 BX2 X1
  13306. LX2 42
  13307. BX7 X2-X7
  13308. SX7 X7
  13309. NZ X7,GQE1 IF NOT FIRST ENTRY IN QUEUE
  13310. BX2 X6*X2
  13311. BX2 X2+X4
  13312. LX2 18
  13313. PX6 X2,B3 UPDATE ENTRY
  13314. SA6 B6+ REWRITE QUEUE POINTER
  13315.  
  13316. GQE SUBR ENTRY/EXIT
  13317. MX2 -12
  13318. SX7 B1
  13319. RJ GRT
  13320. UX1,B3 X4
  13321. BX5 X4
  13322. SB4 TRRTL SET COMMAND TABLE LIMIT
  13323. GE B3,B4,GQE2 IF OUTSIDE TRRT TABLE ABORT
  13324. NG B3,GQE2 IF INCORRECT TRRT ORDINAL
  13325. BX7 X7-X7 CLEAR TABLE ENTRY
  13326. SA7 A4
  13327. BX4 -X2*X5 GET NEXT ENTRY POINTER
  13328. SX7 B5 SET CURRENT ENTRY POINTER
  13329. BX5 X2*X5
  13330. SB2 X4 SET NEXT ENTRY POINTER
  13331. BX5 X5+X7 MERGE TERMINAL NUMBER INTO ENTRY
  13332. SA1 B6
  13333. MX6 42
  13334. UX1,B3 X1
  13335. SB3 B3-B1 DECREMENT ENTRY COUNT
  13336. BX2 X1-X7
  13337. SX2 X2
  13338. NZ X2,GQE3 IF NOT LAST ENTRY IN QUEUE
  13339. BX1 X6*X1
  13340. SX2 B7
  13341. BX1 X1+X2
  13342. NZ B3,GQE1 IF NOT ONLY ENTRY
  13343. BX7 X7-X7
  13344. PX6 X7,B3 UPDATE POINTERS
  13345. SA6 B6+
  13346. EQ GQEX RETURN
  13347.  
  13348. GQE1 PX6 X1,B3 UPDATE ENTRY
  13349. SA6 B6
  13350. SB5 B7 UPDATE PREVIOUS ENTRY
  13351. MX7 48
  13352. RJ GRT
  13353. BX4 X7*X4
  13354. SX6 B2
  13355. BX6 X4+X6
  13356. SA6 A4
  13357. EQ GQEX RETURN
  13358.  
  13359. * PROCESS INCORRECT QUEUE ENTRY.
  13360.  
  13361. GQE2 SB2 B5 SET CURRENT TERMINAL NUMBER
  13362. BX7 X5 SAVE INCORRECT QUEUE ENTRY
  13363. SX6 3RGQE SET ERROR CODE
  13364. SA7 GQEA
  13365. EQ ABT+1 UNCONDITIONALLY ABORT
  13366.  
  13367. GQEA CON 0 SAVE INCORRECT QUEUE ENTRY
  13368. GRI SPACE 4,10
  13369. ** GRI - GATHER RECOVERY INFORMATION.
  13370. *
  13371. * ENTRY (A0) = ADDRESS OF TERMINAL TABLE.
  13372. * (B4) = FWA OF PARAMETER BLOCK.
  13373. *
  13374. * EXIT RECOVERY WORDS SET IN PARAMETER BLOCK.
  13375. *
  13376. * USES X - 1, 2, 3, 6, 7.
  13377. * A - 1, 2, 7.
  13378.  
  13379.  
  13380. GRI SUBR ENTRY/EXIT
  13381. SA1 A0+VROT SET UP MODES
  13382. SX2 34B JOB CONTINUATION FLAG
  13383. BX6 X1*X2 INPUT REQUEST, OUTPUT AVAILABLE
  13384. SX2 40B
  13385. AX1 17-5 FILE FOR OUTPUT
  13386. BX2 X2*X1
  13387. BX6 X6+X2
  13388. SA1 A0+VDCT
  13389. SX2 B1
  13390. AX1 50-0
  13391. BX7 X1*X2 TEXT MODE
  13392. AX1 51-50
  13393. BX3 X1*X2 CURRENT CHARACTER SET
  13394. AX1 55-51
  13395. BX1 X1*X2 BRIEF MODE
  13396. LX7 7
  13397. LX1 1
  13398. BX7 X1+X7
  13399. BX6 X6+X7
  13400. SA1 A0+VSTT
  13401. MX7 -3 SAVE TERMINAL TABLE SUBSYSTEM
  13402. LX7 12
  13403. BX7 -X7*X1
  13404. LX7 18-12
  13405. BX6 X6+X7
  13406. MX7 1
  13407. LX7 55-59
  13408. BX7 X7*X1 EFFECT MODE
  13409. LX7 8-55
  13410. BX6 X6+X7
  13411. MX7 1
  13412. LX7 49-59
  13413. BX7 X7*X1 SCREEN MODE
  13414. LX7 9-49
  13415. BX6 X6+X7
  13416. AX1 18-0
  13417. BX7 X2*X1 INITIAL CHAR SET
  13418. AX1 53-18
  13419. SX2 101B
  13420. BX1 X2*X1 DISABLE TERMINAL CONTROL, NO PROMPT FLAGS
  13421. BX6 X6+X1 MODES COMPLETED
  13422. LX7 15-0 INITIAL CHARACTER SET
  13423. LX3 12-0 CURRENT CHARACTER SET
  13424. BX3 X7+X3
  13425. BX7 X6+X3
  13426. SA1 A0+VCHT READ CHARACTER COUNTS
  13427. SA2 A0+VFST READ INPUT/OUTPUT OVERFLOW COUNT
  13428. SA7 B4+3 WRITE RECOVERY WORD 1
  13429. MX7 -24
  13430. MX6 -12
  13431. LX6 24
  13432. BX7 -X7*X1 SET CHARACTER COUNT
  13433. BX2 -X6*X2 SET OVERFLOW COUNT
  13434. BX7 X7+X2 WRITE RECOVERY WORD 2
  13435. SA7 A7+B1
  13436. EQ GRIX EXIT
  13437. GRT SPACE 4
  13438. ** GRT - GET ENTRY FROM TABLE.
  13439. *
  13440. * ENTRY-
  13441. * (B5) = TERMINAL NUMBER FOR ENTRY TO GET.
  13442. *
  13443. * EXIT-
  13444. * (X4) = ENTRY.
  13445. * (A4) = ADDRESS OF ENTRY.
  13446. * (B5) = UNCHANGED.
  13447. *
  13448. * SCRATCH-
  13449. * X6
  13450.  
  13451.  
  13452. GRT SUBR ENTRY/EXIT
  13453. TA4 B5,VRAP GET ENTRY
  13454. ZR X4,GRT IF NO ENTRY
  13455. MX6 12
  13456. BX6 X6*X4
  13457. NZ X6,GRTX IF ENTRY FOUND
  13458. SA4 X4
  13459. NZ X4,GRTX IF ENTRY FOUND
  13460. SA4 A4+B1
  13461. JP GRTX
  13462. GTA SPACE 4
  13463. ** GTA - GET TERMINAL TABLE ADDRESS.
  13464. *
  13465. * ENTRY (B7) = ADDRESS IN PBUF CONTAINING THE *JSN*.
  13466. * (B7)+1 = ADDRESS IN PBUF CONTAINING THE NUMBER OF
  13467. * CHARACTERS IN THE *JSN*.
  13468. *
  13469. * EXIT (A4) = ADDRESS OF TERMINAL TABLE.
  13470. * (X4) = 0, IF NO TERMINAL FOUND.
  13471. *
  13472. * USES X - 1, 2, 4.
  13473. * A - 1, 2, 4.
  13474. * B - 6, 7.
  13475.  
  13476.  
  13477. GTA2 SA4 B6+ SET TERMINAL TABLE ADDRESS
  13478.  
  13479. GTA SUBR ENTRY/EXIT
  13480. SA1 B7+1
  13481. SA2 B7+ GET THE *JSN*
  13482. UX1,B6 X1 CHECK NUMBER OF CHARACTERS IN *JSN*
  13483. SX4 B0+
  13484. MX1 24 BUILD MASK FOR *JSN*
  13485. SB6 B6-4
  13486. NZ B6,GTAX IF NOT A VALID *JSN*
  13487. TB7 B0,VTTP,LWA LWA+1 OF TERMINAL TABLES
  13488. TB6 VTTL*VPST-VTTL,VTTP FWA OF FIRST NON-PSEUDO TERMINAL
  13489. GTA1 SA4 B6+VFST
  13490. BX4 X4-X2
  13491. BX4 X1*X4
  13492. ZR X4,GTA2 IF *JSN* FOUND
  13493. SB6 B6+VTTL
  13494. LT B6,B7,GTA1 IF MORE TERMINALS TO CHECK
  13495. SX4 B0+ *JSN* NOT FOUND
  13496. EQ GTAX RETURN
  13497. GZP SPACE 4
  13498. ** GZP - GET ZEROED POT.
  13499. *
  13500. * IF X7 NOT = 0 UPON ENTRY,
  13501. * GZP RETURNS THE POT NUMBER THAT WAS PASSED TO GZP, NOT
  13502. * THE POT NUMBER OF THE NEW POT. GZP WILL ALSO ZERO OUT THE
  13503. * POT THAT WAS PASSED TO GZP.
  13504. *
  13505. * ENTRY-
  13506. * (X7) = POT TO BE LINKED ONTO.
  13507. * (B7) = NUMBER OF POTS NEEDED.
  13508. *
  13509. * EXIT-
  13510. * (X7) = NEW POT OR POT LINKED ONTO.
  13511. * (X7) = 0, IF NO POT AVAILABLE.
  13512. *
  13513. * CALLS-
  13514. * RPT, GPL.
  13515.  
  13516.  
  13517. GZP SUBR ENTRY/EXIT
  13518. PX5 X7,B7 GET POTS
  13519. RJ RPT
  13520. ZR X7,GZPX IF NO POT RETURN
  13521. BX1 X7
  13522. SB3 X7
  13523. LX1 3
  13524. TB4 X1,VBMP
  13525. GZP1 BX6 X6-X6
  13526. SB5 B4+VCPC
  13527. GZP2 SA6 B4 CLEAR POT
  13528. SB4 B4+B1
  13529. LT B4,B5,GZP2 IF AT END OF POTS
  13530. RJ GPL GET NEXT POT LINK
  13531. NZ B3,GZP1 IF STILL MORE POTS
  13532. EQ GZPX RETURN
  13533. IDM SPACE 4,10
  13534. ** IDM - ISSUE DAYFILE MESSAGE.
  13535. *
  13536. * FORMAT DAYFILE MESSAGE REQUEST AND PLACE IN PPU
  13537. * REQUEST BUFFER.
  13538. *
  13539. * ENTRY (X6) = ADDRESS OF DAYFILE MESSAGE.
  13540. *
  13541. * USES A - 2, 3, 6.
  13542. * X - 2, 3, 6.
  13543.  
  13544.  
  13545. IDM SUBR ENTRY/EXIT
  13546. SA2 IDMA GET PPU CALL
  13547. SA3 PMSG CHECK REQUEST BUFFER
  13548. IDM1 ZR X3,IDM2 IF VACANT SLOT FOUND
  13549. SX3 A3+1-PITA
  13550. PL X3,IDMX IF END OF REQUEST BUFFER
  13551. SA3 A3+1 CHECK NEXT SLOT
  13552. EQ IDM1
  13553.  
  13554. IDM2 BX6 X2+X6 FORMAT PPU CALL
  13555. SA6 A3 STORE CALL IN REQUEST BUFFER
  13556. EQ IDMX RETURN
  13557.  
  13558.  
  13559. IDMA VFD 18/3L1MA,6/0,12/1,24/0
  13560. IIR SPACE 4,10
  13561. ** IIR - ISSUE INPUT REQUEST.
  13562. *
  13563. * ISSUE TERMINAL INPUT REQUEST MESSAGE, SET READ DATA,
  13564. * AND MAKE INPUT QUEUE ENTRY. THE ADDRESS TO WHICH
  13565. * CONTROL RETURNS AFTER OPERATOR INPUT IS PRESET BY
  13566. * THE CALLER IN (X7) RATHER THAN EXTRACTED FROM THE
  13567. * SUBROUTINE ENTRY POINT AS IN SUBROUTINE *RQI*.
  13568. * B3 AND B5, IF NONZERO, SHOULD CONTAIN VALID POT
  13569. * POINTERS, AS THE POT STRING(S) WILL BE DROPPED IF
  13570. * THE BREAK IN PROGRESS OR LOGOUT FLAG IS SET.
  13571. *
  13572. * ENTRY (VDCT) = INTERLOCK CLEAR.
  13573. * (B3) = POT POINTER FOR MESSAGE.
  13574. * (B4) = MESSAGE LENGTH.
  13575. * (B5) = RETURN POT POINTER.
  13576. * (X6) = MESSAGE ADDRESS.
  13577. * (X7) = REENTRY ADDRESS.
  13578. *
  13579. * EXIT TO (X7) AFTER INPUT (SEE CLI.)
  13580. * (B5) = RETAINED.
  13581. *
  13582. * CALLS CBL, MVA, SRR.
  13583.  
  13584.  
  13585. IIR BSS 0 ENTRY
  13586. RJ CBL CHECK BREAK IN PROGRESS AND LOGOUT FLAGS
  13587. PX6 X6,B4 SAVE MESSAGE POINTERS
  13588. SA6 IIRA
  13589. SX6 B3
  13590. SA6 A6+B1
  13591. RJ SRR SET READ DATA AND REENTRY
  13592. SA1 IIRA RESET MESSAGE POINTERS
  13593. SA2 A1+B1
  13594. UX6,B4 X1
  13595. SB3 X2+
  13596. RJ MVA ISSUE MESSAGE
  13597. EQ PCSX EXIT
  13598.  
  13599. IIRA DATA 0 SAVE MESSAGE PARAMETERS
  13600. DATA 0
  13601. INO SPACE 4,10
  13602. ** INO - ISSUE NULL OUTPUT.
  13603. *
  13604. * FOR A MULTIPLEXER TERMINAL, *INO* SENDS A NULL OUTPUT
  13605. * LINE TO THE TERMINAL TO INSURE THAT THE DRIVER HAS AN
  13606. * INPUT POT. FOR A NETWORK TERMINAL, ANY POTS IN *B3*
  13607. * ARE DROPPED.
  13608. *
  13609. * ENTRY (B3) = POT POINTER IF NONZERO.
  13610. *
  13611. * CALLS ASM, DPT, GOP.
  13612.  
  13613.  
  13614. INO SUBR ENTRY/EXIT
  13615. IFNET INO1 IF NETWORK TERMINAL
  13616. RJ GOP GET ONE POT
  13617. SX6 2R"CB" SET TERMINATOR BYTE IN POT
  13618. SX7 B3
  13619. LX6 48-0
  13620. SA6 B4+2
  13621. RJ ASM ASSIGN MESSAGE
  13622. EQ INOX RETURN
  13623.  
  13624. * DROP NETWORK TERMINAL POT(S) AND RETURN.
  13625.  
  13626. INO1 ZR B3,INOX IF NO POTS, RETURN
  13627. SB4 B0+ DROP POT(S)
  13628. RJ DPT
  13629. EQ INOX RETURN
  13630. LEP SPACE 4,20
  13631. *** LEP - LINK EXISTING POTS.
  13632. *
  13633. * MANIPULATE PLT TO LINK TWO PREVIOUSLY RESERVED POTS
  13634. * OR POT CHAINS.
  13635. *
  13636. * ENTRY (B3) = POT POINTER FOR LEADING POT.
  13637. * (X2) = POT POINTER FOR TRAILING POT.
  13638. *
  13639. * EXIT (X7) = 0, LINKAGE NOT MADE.
  13640. * .NE. 0, LINKAGE MADE.
  13641. *
  13642. * USES X - 1, 6, 7.
  13643. * A - 1, 7.
  13644. * B - 5, 6, 7.
  13645. *
  13646. * CALLS ABT.
  13647.  
  13648.  
  13649. LEP SUBR ENTRY/EXIT
  13650. ZR B3,LEP2 IF NO FIRST POT
  13651. SB5 60
  13652. SB6 B1+B1
  13653. SX7 B3
  13654. LEP1 SX6 3
  13655. BX6 X7*X6
  13656. LX7 58
  13657. SB7 X7
  13658. TA1 B7,VPLP GET PLT ENTRY
  13659. LX7 X6,B6 BYTE NUMBER * 4
  13660. LX6 3 BYTE NUMBER * 8
  13661. IX6 X6+X7 BYTE NUMBER * 12
  13662. SB7 X6+12
  13663. SX7 7777B
  13664. LX6 X1,B7
  13665. BX7 X6*X7
  13666. NZ X7,LEP1 IF ALREADY LINKED
  13667. SB7 B5-B7
  13668. LX6 X2,B7 POSITION NEW POT LINK
  13669. BX7 X1+X6 MERGE NEW LINK
  13670. SA7 A1
  13671. EQ LEPX RETURN
  13672.  
  13673. LEP2 SX6 3RLEP
  13674. RJ ABT
  13675. BX7 X7-X7
  13676. EQ LEPX EXIT
  13677. LTT SPACE 4,10
  13678. ** LTT - LOCATE TERMINAL TYPE.
  13679. *
  13680. * EXIT (X1) = TERMINAL TYPE WORD.
  13681. * (X2) = BASE ADDRESS OF TERMINAL TYPE TABLE.
  13682. * (MULTIPLEXOR TERMINALS ONLY)
  13683. *
  13684. * USES X - 1, 2, 3.
  13685. * A - 1, 2.
  13686.  
  13687.  
  13688. LTT SUBR ENTRY/EXIT
  13689. IFNET LTT1 IF NETWORK TERMINAL
  13690. SA1 A0+VDPT EXTRACT TERMINAL TYPE
  13691. SA2 VDRL LOCATE TERMINAL NAME TABLE
  13692. MX3 -5
  13693. AX2 24 SHIFT DRIVER STACK ADDRESS
  13694. SA2 X2+4
  13695. AX1 12+7
  13696. BX3 -X3*X1
  13697. IX3 X2+X3 READ TERMINAL TYPE WORD
  13698. SA1 X3
  13699. JP LTTX RETURN
  13700.  
  13701. * SET NETWORK TERMINAL TYPE.
  13702.  
  13703. LTT1 SA1 =6LNAMIAF SET TERMINAL TYPE
  13704. EQ LTTX RETURN
  13705. MDA SPACE 4
  13706. ** MDA - MOVE DATA.
  13707. *
  13708. * ENTRY-
  13709. * (B5) = NUMBER OF WORDS TO MOVE.
  13710. * IF (B5) = NEGATIVE, THE MOVE IS FROM LOW CORE TO HIGH CORE.
  13711. * (X2) = FWA TO GET DATA FROM.
  13712. * (X3) = FWA TO STORE DATA AT.
  13713. *
  13714. * USES-
  13715. * A - 1, 6.
  13716. * B - 6.
  13717. * X - 1, 6.
  13718.  
  13719.  
  13720. MDA SUBR ENTRY/EXIT
  13721. NG B5,MDA2 IF MOVE UPWARD
  13722. SB6 B0
  13723. SX3 X3-1
  13724. MDA1 SA1 X2+B6
  13725. SB6 B6+B1
  13726. BX6 X1
  13727. SA6 X3+B6
  13728. LT B6,B5,MDA1 IF MORE DATA TO MOVE
  13729. EQ MDAX
  13730.  
  13731. MDA2 SB6 -B5
  13732. SX3 X3+B1
  13733. MDA3 SA1 X2+B6
  13734. SB6 B6-B1
  13735. BX6 X1
  13736. SA6 X3+B6
  13737. PL B6,MDA3 IF MORE DATA TO MOVE
  13738. EQ MDAX
  13739. MQE SPACE 4
  13740. ** MQE - MAKE QUEUE ENTRY.
  13741. *
  13742. * MAKES ENTRY IN REENTRY QUEUE. THE ENTRY IS PLACED
  13743. * IN THE TERMINAL REENTRY TABLE AND ASSOCIATED QUEUE
  13744. * POINTER IS UPDATED. IF A STACKED ENTRY IS MADE, THE
  13745. * QUEUE POINTER IS PLACED IN BYTE 4 OF THE STACKED
  13746. * ENTRY.
  13747. *
  13748. * ENTRY (B2) = TERMINAL NUMBER.
  13749. * (B7) = QUEUE POINTER.
  13750. * = ZERO IF FOR NULL QUEUE.
  13751. * (X5) BITS 59-12 = FORMATTED QUEUE ENTRY.
  13752. *
  13753. * EXIT ENTRY PLACED IN QUEUE.
  13754. * QUEUE POINTER UPDATED.
  13755. * (X2) = 0, IF CURRENT ENTRY FOR THIS TERMINAL.
  13756. * = 1, IF STACKED BEHIND CURRENT ENTRY.
  13757. * (X6) = QUEUE ENTRY.
  13758. *
  13759. * ERROR CALLS *ABT* IF INCORRECT ENTRY.
  13760. * (MQEA) = INCORRECT QUEUE ENTRY.
  13761. *
  13762. * CALLS ABT, GZP.
  13763.  
  13764.  
  13765. MQE8 SX6 3RMQE
  13766. BX2 X2-X2
  13767. BX7 X5 SAVE INCORRECT ENTRY
  13768. SA7 MQEA
  13769. RJ ABT
  13770.  
  13771. MQE SUBR ENTRY/EXIT
  13772. UX1,B6 X5
  13773. SB5 TRRTL SET COMMAND TABLE LIMIT
  13774. MX4 48
  13775. NG B6,MQE8 IF INCORRECT ENTRY
  13776. GE B6,B5,MQE8 IF INCORRECT ENTRY
  13777. TA1 B2,VRAP
  13778. BX5 X4*X5
  13779. SB5 X1
  13780. NZ X1,MQE4 IF PREVIOUS ENTRY
  13781. MQE1 ZR B7,MQE2 IF NO QUEUE POINTER TO UPDATE
  13782. SA2 B7 UPDATE QUEUE POINTER
  13783. UX3,B6 X2
  13784. SB6 B6+B1 INCREMENT ENTRY COUNT
  13785. SX7 B2
  13786. EQ B6,B1,MQE3 IF QUEUE PREVIOUSLY EMPTY
  13787. MX2 42
  13788. BX2 X2*X3
  13789. SB5 X3 UPDATE PREVIOUS ENTRY
  13790. BX2 X2+X7
  13791. RJ GRT
  13792. BX6 X4+X7
  13793. SA6 A4
  13794. PX6 X2,B6
  13795. SA6 B7
  13796. MQE2 BX6 X5 MAKE ENTRY
  13797. SA6 A1
  13798. SX2 B0+ INDICATE CURRENT ENTRY
  13799. EQ MQEX RETURN
  13800.  
  13801. MQE3 BX2 X7
  13802. LX7 18
  13803. BX2 X2+X7
  13804. PX6 X2,B6
  13805. SA6 B7
  13806. EQ MQE2
  13807.  
  13808. MQE4 MX2 12
  13809. BX2 X2*X1
  13810. ZR X2,MQE5 IF POT NOT NEEDED
  13811. SX2 B7 INDICATE QUEUE IN STACKED ENTRY
  13812. BX6 X5+X2
  13813. SA6 MQEA
  13814. BX7 X7-X7
  13815. SB7 B1 SET NUMBER OF POTS NEEDED
  13816. RJ GZP GET ZEROED POT
  13817. ZR X7,MQE8 IF NO POT AVAILABLE
  13818. LX7 3
  13819. TX5 X7,VBMP
  13820. LX7 15
  13821. BX7 X5+X7
  13822. TA1 B2,VRAP PUT POT POINTER IN REENTRY TABLE
  13823. SA7 A1 SET POT POINTER
  13824. BX6 X1
  13825. SA6 X5 SAVE CURENT ENTRY
  13826. SA1 MQEA
  13827. BX6 X1
  13828. SA6 A6+B1
  13829. SX2 B1 INDICATE STACKED ENTRY
  13830. EQ MQEX RETURN
  13831.  
  13832. MQE5 SB4 B5+B1
  13833. SB6 B5+VCPC-1 ALLOW UP TO 7 QUEUE ENTRIES
  13834. MQE6 SA1 B5
  13835. SB5 B5+B1
  13836. ZR X1,MQE7 IF EMPTY SLOT FOUND
  13837. NE B5,B6,MQE6 IF NOT AT END OF POT
  13838. EQ MQE8
  13839.  
  13840. MQE7 EQ B4,B5,MQE1 IF FIRST ENTRY IN POT
  13841. SX2 B7 INDICATE QUEUE IN STACKED ENTRY
  13842. BX6 X5+X2
  13843. SX2 B1 INDICATE STACKED ENTRY
  13844. SA6 A1 MAKE ENTRY
  13845. EQ MQEX EXIT
  13846.  
  13847. MQEA CON 0
  13848. MVA SPACE 4,20
  13849. ** MVA - MOVE MESSAGE INTO POTS.
  13850. *
  13851. * MOVES A MESSAGE INTO POTS, ADDS A *0001* CONTROL BYTE
  13852. * IF NECESSARY, AND ASSIGNS THE POTS TO TERMINAL OUTPUT.
  13853. *
  13854. * ENTRY (X6) = ADDRESS OF MESSAGE IN DISPLAY CODE FORMAT.
  13855. * (B3) = FIRST POT OF CHAIN IF ONE PROVIDED.
  13856. * (B4) = LENGTH OF MESSAGE.
  13857. * 0, IF MESSAGE IS SIX CM WORDS OR LESS IN LENGTH
  13858. * AND TERMINATES WITH AN EOL.
  13859. *
  13860. * EXIT MESSAGE ASSIGNED TO THE TERMINAL.
  13861. *
  13862. * USES X - 1, 5, 6, 7.
  13863. * A - 1, 6.
  13864. * B - 4, 5, 6, 7.
  13865. *
  13866. * CALLS ASM, CTP, DPT, GPC, GPL.
  13867.  
  13868.  
  13869. MVA SUBR ENTRY/EXIT
  13870. ZR B4,MVA2 IF NO WORD COUNT SPECIFIED
  13871. SB5 2
  13872. RJ CTP COPY MESSAGE TO POTS
  13873. ZR X6,MVA5 IF COPY UNSUCCESSFUL
  13874. LX6 24 SET POT COUNT
  13875. SA6 B4
  13876. SB5 B6-VCPC
  13877. ZR B5,MVA1 IF LAST POT EXACTLY FULL
  13878. SX6 2R"EB" ADD *0001* CONTROL BYTE
  13879. LX7 3
  13880. LX6 48
  13881. TX7 X7,VBMP
  13882. SA6 X7+B6
  13883. MVA1 SX7 B3+
  13884. SX6 B0+ ZERO OUT SECOND WORD OF POT CHAIN HEADER
  13885. BX5 X7
  13886. LX5 3
  13887. TA6 X5+1,VBMP
  13888. RJ ASM ASSIGN MESSAGE TO TERMINAL
  13889. EQ MVAX EXIT
  13890.  
  13891. MVA2 SB6 6
  13892. SA6 MVAA
  13893. RJ GPC GET POT CHAIN OF DEFAULT LENGTH
  13894. ZR X6,MVA5 IF POTS NOT OBTAINED
  13895. SX7 B1 SET POT COUNT FOR MESSAGE
  13896. LX7 24
  13897. SA7 B4
  13898. SA1 MVAA
  13899. SB5 B4+VCPC
  13900. SA1 X1-1
  13901. SB4 B4+2
  13902. MX5 -12
  13903. MVA3 SA1 A1+1 GET NEXT WORD OF MESSAGE
  13904. SB4 B4+B1
  13905. BX6 X1
  13906. SA6 B4-B1 ADD WORD TO POT
  13907. BX6 -X5*X6
  13908. ZR X6,MVA4 IF END OF MESSAGE REACHED
  13909. GT B5,B4,MVA3 IF MORE ROOM IN POT
  13910. MVA4 EQ B4,B5,MVA1 IF NO NEED FOR A *0001* BYTE
  13911. SX6 2R"EB"
  13912. LX6 48
  13913. SA6 B4+
  13914. EQ MVA1 ASSIGN MESSAGE TO TERMINAL
  13915.  
  13916. * IF A MESSAGE CANNOT BE ASSIGNED TO THE TERMINAL, ANY
  13917. * POTS SUPPLIED BY THE CALLER ARE DROPPED TO AVOID POT
  13918. * CANCER.
  13919.  
  13920. MVA5 ZR B3,MVAX IF NO POTS WERE PROVIDED
  13921. SB4 B0+
  13922. RJ DPT DROP POTS
  13923. EQ MVAX EXIT
  13924.  
  13925. MVAA CON 0 MESSAGE ADDRESS
  13926. O6S SPACE 4
  13927. ** O6S - CONVERT 6 DIGITS TO OCTAL DISPLAY CODE WITH TRAILING
  13928. * ZERO FILL.
  13929. *
  13930. * ENTRY-
  13931. * (X1) = NUMBER TO BE CONVERTED.
  13932. *
  13933. * EXIT-
  13934. * (X6) = CONVERTED NUMBER.
  13935. *
  13936. * USES-
  13937. * A - 2.
  13938. * B - 7.
  13939. * X - 2, 3, 7.
  13940.  
  13941.  
  13942. O6S1 SB7 B7-B1
  13943. AX3 6
  13944. AX1 3
  13945. AX7 6
  13946. BX2 -X3*X1
  13947. NZ X2,O6S2 IF NOT ZERO
  13948. BX6 X6+X7
  13949. O6S2 BX6 X2+X6
  13950. ZR X2,O6S3 IF ZERO
  13951. SX7 B0 STOP ZERO SUPPRESS
  13952. O6S3 NZ B7,O6S1 IF STILL MORE DIGITS TO CONVERT
  13953. SA2 =6L000000
  13954. ZR X7,O6S4
  13955. BX6 X6-X7
  13956. O6S4 LX6 24
  13957. IX6 X2+X6
  13958.  
  13959. O6S SUBR ENTRY/EXIT
  13960. SX6 B0
  13961. LX1 18
  13962. MX3 -3
  13963. LX3 36
  13964. SB7 6
  13965. SX7 1R -1R0
  13966. LX7 36
  13967. EQ O6S1
  13968. PCB SPACE 4
  13969. ** PCB - PACKS A COMMAND BUFFER ONE PARAMETER AT A TIME.
  13970. *
  13971. * ENTRY (X1) = FWA OF PARAMETER BUFFER.
  13972. * SEE EXIT CONDITIONS FOR *SSP*.
  13973. *
  13974. * EXIT SEE EXIT CONDITIONS FOR *SSP* (EXCEPT X7).
  13975. * (B4) = FWA POT STORED IN.
  13976. * (B6) = SHIFT COUNT FOR LAST CHARACTER INSERTED.
  13977. * (B7) = LAST WORD OF POT STORED IN.
  13978. *
  13979. * USES X - 1, 2, 3, 4, 5, 7.
  13980. * A - 1, 2, 7.
  13981. * B - 2, 5, 6, 7.
  13982. *
  13983. * NOTE TABLE PROCESSED BY THIS ROUTINE SHOULD HAVE TWO
  13984. * ZERO WORDS TERMINATING IT OR THE COMMAND PACKED
  13985. * BY THIS ROUTINE SHOULD FILL A POT. THESE CONDITIONS
  13986. * TERMINATE TABLE PROCESSING.
  13987. *
  13988.  
  13989.  
  13990. PCB SUBR ENTRY/EXIT
  13991. SB7 B4 SET POT ADDRESS
  13992. SB5 B4+VCPC-1 SET ENDING POT ADDRESS
  13993. MX5 -6
  13994. SX4 B2 SAVE TERMINAL NUMBER
  13995. SA1 X1 READ FIRST PARAMETER
  13996. SA2 A1+B1 READ FIRST SEPARATOR
  13997. UX2,B2 X2 SET CHARACTER COUNT
  13998. PCB1 BX7 X7-X7 CLEAR ASSEMBLY WORD
  13999. SB6 54
  14000. PCB2 SB2 B2-B1
  14001. NG B2,PCB4 IF END OF PARAMETER
  14002. LX1 6 GET CHARACTER
  14003. BX3 -X5*X1
  14004. PCB3 LX3 X3,B6 ENTER CHARACTER
  14005. SB6 B6-6
  14006. BX7 X3+X7
  14007. PL B6,PCB2 IF ASSEMBLY WORD NOT FULL
  14008. SA7 B7 STORE ASSEMBLY WORD
  14009. SB7 B7+B1
  14010. LE B7,B5,PCB1 IF POT NOT FULL
  14011. EQ PCB6 RETURN
  14012.  
  14013. PCB4 SX3 X2 INSERT SEPARATOR
  14014. SA1 A2+B1 GET NEXT PARAMETER
  14015. SA2 A1+B1 GET NEXT SEPARATOR
  14016. UX2,B2 X2
  14017. SX2 X2
  14018. NZ X2,PCB3 IF NOT END OF BUFFER
  14019. PL B2,PCB3 IF NOT END OF BUFFER
  14020. LX3 X3,B6 STORE LAST SEPARATOR
  14021. BX7 X3+X7
  14022. SA7 B7 STORE LAST ASSEMBLY WORD
  14023. EQ B5,B7,PCB6 IF POT FULL
  14024. BX7 X7-X7
  14025. PCB5 SA7 B5 CLEAR REST OF POT
  14026. SB5 B5-B1
  14027. NE B5,B7,PCB5 IF NOT END OF POT
  14028. PCB6 SB2 X4 RESTORE TERMINAL NUMBER
  14029. EQ PCBX RETURN
  14030. PKW SPACE 4,10
  14031. ** PKW - PACK WORD.
  14032. *
  14033. * ENTRY (X2) = WORD TO BE PACKED.
  14034. * (X6) = WORD TO BE PACKED INTO.
  14035. * (B5) = BITS LEFT IN X6.
  14036. * (A6) = LWA OF MESSAGE ALREADY FORMATTED.
  14037. *
  14038. * EXIT ALL ABOVE REGISTERS UPDATED.
  14039. *
  14040. * USES X - 2, 3, 6, 7.
  14041. * A - 6.
  14042. * B - 5, 6.
  14043.  
  14044.  
  14045. PKW SUBR
  14046. PKW1 NZ B5,PKW2 IF ROOM IN WORD
  14047. SA6 A6+B1
  14048. BX6 X6-X6
  14049. SB5 60
  14050. PKW2 MX3 -6
  14051. LX2 6
  14052. BX7 -X3*X2 NEXT CHARACTER
  14053. BX2 X2*X3 CLEAR CHARACTER
  14054. ZR X7,PKWX IF NO CHARACTER
  14055. LX6 6
  14056. BX6 X6+X7
  14057. SB5 B5-6
  14058. EQ PKW1 START NEW WORD
  14059. RCM SPACE 4,10
  14060. ** RCM - RESET CHARACTER MODE.
  14061. *
  14062. * USES X - 1, 2, 7.
  14063. * A - 1, 7.
  14064.  
  14065.  
  14066. RCM SUBR ENTRY/EXIT
  14067. SA1 A0+VSTT
  14068. MX2 -1
  14069. LX2 18
  14070. BX7 -X2*X1 INITIAL CHARACTER SET
  14071. SA1 A0+VDCT
  14072. LX2 51-18
  14073. BX2 X2*X1 CLEAR CURRENT CHARACTER SET
  14074. LX7 51-18
  14075. BX7 X2+X7 MERGE INITIAL CHARACTER SET
  14076. SA7 A1 REWRITE VDCT
  14077. EQ RCMX EXIT
  14078. PLO SPACE 4,10
  14079. ** PLO - PROCESS LIST OPTIONS.
  14080. *
  14081. * ENTRY (LISA) = ADDRESS OF FIRST PARAMETER.
  14082. * (PBUF) = FIRST PARAMETER.
  14083. * (CCMA) = PARAMETER COUNT.
  14084. *
  14085. * EXIT TO *IPL* IF INCORRECT PARAMETER.
  14086. * TO *IED* IF *IEDIT* CALL REQUIRED.
  14087. *
  14088. * CALLS DXB, GFN, SSP, TPF.
  14089.  
  14090.  
  14091. PLO SUBR ENTRY/EXIT
  14092. SA1 PBUF
  14093. SA3 CCMA
  14094. SX6 X3
  14095. SA6 PLOB STORE PARAMETER COUNT
  14096. PLO1 SA1 A1+2 GET NEXT PARAMETER
  14097. SX3 X3-1
  14098. ZR X3,PLO2 IF NO MORE PARAMETERS
  14099. NZ X1,PLO1 IF NOT POSSIBLE STRING
  14100. SA2 A1+B1 CHECK IF DELIMITER
  14101. SB6 X2
  14102. SA2 PLOA
  14103. LX2 B6
  14104. NG X2,IED IF IMPLIED STRING
  14105. EQ PLO1 CONTINUE SEARCH
  14106.  
  14107. PLO2 SA1 LISA GET POINTER
  14108. SX7 X1+2
  14109. SA2 PLOB
  14110. SA7 A1
  14111. SX6 X2-1
  14112. ZR X6,PLOX IF ALL PARAMETERS PROCESSED
  14113. SA6 A2
  14114. SA1 X7
  14115. SA2 A1-B1
  14116. SA4 PLOC GET INCORRECT SEPARATOR MASK
  14117. SB6 X2
  14118. LX4 B6
  14119. NG X4,IED IF AN INCORRECT SEPARATOR
  14120. ZR X1,IED IF A NULL PARAMETER
  14121. SX4 1RF
  14122. SX3 1RR
  14123. BX2 X1
  14124. LX2 6
  14125. BX4 X2-X4
  14126. BX3 X2-X3
  14127. ZR X4,PLO7 IF FILE NAME OPTION
  14128. ZR X3,PLO8 IF *R* OPTION
  14129.  
  14130. * LINE NUMBER PROCESSOR.
  14131.  
  14132. SA4 LISC
  14133. NZ X4,IED IF MORE THAN ONE LINE SPECIFICATION
  14134. PLO3 BX6 X1
  14135. SB7 B1
  14136. BX4 X6
  14137. LX4 6
  14138. SA6 A4
  14139. SX6 1R*
  14140. BX4 X4-X6
  14141. ZR X4,PLO4 IF BOI OR EOI
  14142. BX5 X1
  14143. RJ DXB TRANSLATE LINE NUMBER
  14144. RJ SSP RESET PARAMETER REGISTERS
  14145. NZ X4,IED IF INCORRECT NUMBER
  14146. EQ PLO5 CONTINUE SCAN
  14147.  
  14148. PLO4 SX6 B1+
  14149. SA6 LISD SET LINE RANGE FLAG
  14150. PLO5 SA1 A1+B1
  14151. SA2 A1+B1 GET NEXT PARAMETER
  14152. NZ X2,PLO2 IF NOT NULL PARAMETER
  14153. SB6 X1
  14154. SA2 A2+B1 EXAMINE SEPARATOR
  14155. SB6 -B6
  14156. SB6 B6+X2
  14157. NZ B6,PLO2 IF NOT ALIKE, NOT ELIPSIS
  14158. SX6 X1-1R.
  14159. NZ X6,IED IF NOT AN ELLIPSIS
  14160. SA1 LISA SKIP LINE RANGE
  14161. SX6 X1+4
  14162. SA6 A1
  14163. SA1 PLOB
  14164. SX6 X1-2
  14165. SA6 A1
  14166. SA1 A2+B1 GET SECOND LINE NUMBER
  14167. SA4 LISE LAST LINE NUMBER
  14168. NZ X4,IED IF ALREADY SPECIFIED
  14169. SX6 B1
  14170. SA6 A4-B1
  14171. EQ PLO3 CHECK VALIDITY
  14172.  
  14173. * FILE NAME OPTION.
  14174.  
  14175. PLO7 SA1 LISA SET PARAMETER ADDRESS
  14176. SX7 X1+2
  14177. SA7 A1
  14178. SA1 X1+B1
  14179. SX1 X1-1R=
  14180. SA3 PLOB
  14181. NZ X1,IED IF NOT *=*
  14182. SX6 X3-1 DECREMENT PARAMETER COUNT
  14183. SA6 A3
  14184. SB6 X7
  14185. RJ GFN GET FILE NAME
  14186. SA1 LISB
  14187. NZ X1,IED IF MORE THAN ONE FILE PARAMETER
  14188. BX6 X2
  14189. SA6 A1
  14190. EQ PLO2 CONTINUE PROCESSING
  14191.  
  14192. * *R* OPTION, NOW REPLACED WITH EXTERNAL COPY.
  14193.  
  14194. PLO8 SMA X6,( USE SCOPY FOR FILE STRUCTURE."NL")
  14195. RJ SSP
  14196. EQ PCS5 ISSUE MESSAGE
  14197.  
  14198. PLOA CON 74000000000033727777B STRING DELIMITER MASK
  14199. PLOB CON 0 PARAMETER COUNT
  14200. PLOC CON 50000000000000000000B INCORRECT SEPARATOR MASK
  14201. PMR SPACE 4,15
  14202. ** PMR - PROCESS MONITOR REQUEST.
  14203. *
  14204. * ENTRY (B3) = POT POINTER TO PARAMETER BLOCK.
  14205. * (B4) = ADDRESS OF PARAMETER BLOCK.
  14206. *
  14207. * EXIT TO CALLER, EITHER DIRECTLY OR VIA PCS.
  14208. * (X2) = CONTENTS OF ERROR CODE FIELD.
  14209. *
  14210. * USES X - 1, 2, 5, 6, 7.
  14211. * A - 1, 2, 6, 7.
  14212. * B - 7.
  14213. *
  14214. * CALLS ABT.
  14215. *
  14216. * MACROS SYSTEM.
  14217.  
  14218.  
  14219. PMR SUBR ENTRY/EXIT
  14220. PMR1 SYSTEM EJT,,B4
  14221. SA1 B4
  14222. LX1 59-0
  14223. SX5 PMR2$
  14224. SA2 PMRX GET REENTRY ADDRESS
  14225. LX2 30
  14226. SX7 X2
  14227. PL X1,PCS1 IF NOT COMPLETE
  14228.  
  14229. * REENTER HERE WHEN REQUEST IS COMPLETE.
  14230.  
  14231. PMR2 SB7 X7
  14232. SA1 B4
  14233. LX1 -10
  14234. MX2 -8
  14235. BX2 -X2*X1
  14236. ZR X2,PMR3 IF NO ERRORS
  14237. SX6 X2-RTER
  14238. NZ X6,PMR2.1 IF NOT IMMEDIATE RETRY
  14239. SX6 1-RTER
  14240. EQ PMR2.2 RETRY REQUEST AFTER REENTRY
  14241.  
  14242. PMR2.1 SX6 X2-REER
  14243. NZ X6,PMR2.3 IF NOT RECOVERABLE DISK ERROR
  14244. SX6 RTYDL-RTER RETRY REQUEST AFTER DELAY
  14245. PMR2.2 SX5 PMR4$ SET REENTRY ADDRESS
  14246. IX6 X6+X1 SET DELAY COUNTER
  14247. LX6 10
  14248. SA6 A1
  14249. EQ PCS1 REENTER AND DELAY
  14250.  
  14251. PMR2.3 SX6 X2-ISER
  14252. ZR X6,PMR3 IF INCORRECT SERVICE CLASS
  14253. SX6 X2-SFER
  14254. ZR X6,PMR3 IF SERVICE CLASS FULL
  14255. SX6 X2-JFER-1
  14256. PL X6,PMR3 IF NO ABT CALL
  14257. SA7 PMRA SAVE REENTRY ADDRESS
  14258. SX7 X2
  14259. SA7 A7+B1
  14260. RJ UEC PROCESS ERROR CODE
  14261. SA1 PMRA
  14262. SB7 X1
  14263. SA2 A1+B1
  14264. PMR3 JP B7 RETURN TO CALLER
  14265.  
  14266. PMR4 SX5 PMR4$ DECREMENT DELAY COUNTER
  14267. SX6 1S10
  14268. SA1 B4
  14269. IX6 X1-X6
  14270. SA6 A1
  14271. SX1 X6
  14272. AX1 10
  14273. NZ X1,PCS1 IF NOT TIME TO REISSUE REQUEST
  14274. LX7 30 RESET ENTRY
  14275. SA7 PMRX
  14276. SA1 B4 CLEAR COMPLETE BIT
  14277. MX2 -1
  14278. BX6 X2*X1
  14279. SA6 A1
  14280. EQ PMR1 REENTER REQUEST
  14281.  
  14282.  
  14283. PMRA CON 0 SAVE REENTRY ADDRESS
  14284. CON 0 SAVE ERROR CODE
  14285. PPB SPACE 4,15
  14286. ** PPB - PRESET PARAMETER BLOCK.
  14287. *
  14288. * ENTRY (A0) = TERMINAL TABLE ADDRESS.
  14289. * (B4) = FWA OF PARAMETER BLOCK.
  14290. * (X7) = FUNCTION CODE.
  14291. *
  14292. * EXIT WORDS 1 - 5 CLEARED.
  14293. * (X6) = 0.
  14294. * (A7) = (B4).
  14295. * FOR RCEJ - (X7) = (WD 0) = FUNCTION CODE*2.
  14296. * FOR ALL OTHERS - (X7) = (WD 0) = JSN, FUNCTION CODE.
  14297. * - (X2) = EJT ORDINAL.
  14298. *
  14299. * USES X - 1, 2, 6, 7.
  14300. * A - 1, 6, 7.
  14301.  
  14302.  
  14303. PPB1 SA7 B4 SET WORD 0
  14304. BX6 X6-X6 CLEAR WORDS 1 - 5
  14305. SA6 A7+1
  14306. MX1 EJPB-2
  14307. ERRNG VCPC-EJPB EJT RA+1 PARAMETER BLOCK LARGER THAN POT
  14308. PPB2 LX1 1
  14309. SA6 A6+B1
  14310. NG X1,PPB2 IF MORE WORDS TO CLEAR
  14311.  
  14312. PPB SUBR ENTRY/EXIT
  14313. LX7 1
  14314. MX6 24
  14315. SX2 X7-RCEJ*2
  14316. ZR X2,PPB1 IF RCEJ REQUEST
  14317. SA1 A0+VFST
  14318. BX2 X6*X1 JSN
  14319. BX7 X2+X7
  14320. SA1 A0+VUIT
  14321. MX2 -12
  14322. BX2 -X2*X1 EJT ORDINAL
  14323. EQ PPB1 CONTINUE
  14324. RPL SPACE 4,15
  14325. ** RPL - RESET POT LINK.
  14326. *
  14327. * DROPS POTS THAT FOLLOW A SPECIFIED POT ON POT CHAIN
  14328. * UP TO AND INCLUDING A SECOND SPECIFIED POT.
  14329. *
  14330. * ENTRY (X7) = POT AFTER WHICH TO DROP POTS.
  14331. * (B7) = LAST POT TO DROP.
  14332. *
  14333. * USES X - 1, 2, 3, 5, 6, 7.
  14334. * A - 1, 6.
  14335. * B - 3, 4.
  14336. *
  14337. * CALLS ABT, DPT.
  14338.  
  14339.  
  14340. RPL1 SX6 3RRPL
  14341. RJ ABT
  14342.  
  14343. RPL SUBR ENTRY/EXIT
  14344. ZR X7,RPL1 IF ATTEMPTING TO DROP POTS AFTER ZERO
  14345. LX7 58
  14346. TA1 X7,VPLP READ PLT ENTRY
  14347. MX5 48
  14348. BX2 X5*X7 GET BYTE * 12
  14349. LX2 4 BYTE * 4
  14350. LX3 X2,B1 BYTE * 8
  14351. IX2 X2+X3 BYTE * 12
  14352. SB4 X2+12
  14353. LX1 X1,B4 POSITION LINK BYTE
  14354. BX2 -X5*X1
  14355. ZR X2,RPLX IF END OF CHAIN RETURN
  14356. BX6 X5*X1 CLEAR LINK BYTE
  14357. SB3 X2
  14358. SB4 B4-60 REPOSITION PLT WORD
  14359. AX6 X6,B4 RESTORE PLT ENTRY WORD
  14360. SA6 A1
  14361. SB4 B7
  14362. RJ DPT
  14363. EQ RPLX RETURN
  14364. RPT SPACE 4,25
  14365. ** RPT - RESERVE POT(S).
  14366. * A POT OR POTS WILL BE RESERVED. IF THERE ARE NOT ENOUGH
  14367. * AVAILABLE *IAFEX* WILL BE ABORTED.
  14368. *
  14369. * ENTRY-
  14370. * (X5) BYTE 4 = CURRENT POT. IF CURRENT POT = 0, A NEW CHAIN
  14371. * WILL BE STARTED.
  14372. * (X5) BYTE 0 = 200N, WHERE N = NUMBER OF POTS REQUESTED.
  14373. *
  14374. * EXIT-
  14375. * (X7) = FIRST POT RESERVED OR IF A NEW CHAIN WAS NOT
  14376. * STARTED THE POT NUMBER THAT THE NEW POT WAS LINKED
  14377. * ONTO(THE POT NUMBER THAT WAS IN X5 UPON ENTRY
  14378. * TO RPT).
  14379. * (X7) = 0, IF THE REQUEST CANNOT BE SATISFIED.
  14380. * (X1) = LAST POT RESERVED.
  14381. *
  14382. * USES A - 1, 2, 6 ,7.
  14383. * B - 3, 4, 5, 6, 7.
  14384. * X - 1, 2, 3, 4, 5, 6, 7.
  14385. *
  14386. * CALLS ABT.
  14387.  
  14388.  
  14389. RPT SUBR ENTRY/EXIT
  14390. BX7 X5 SAVE REQUEST
  14391. SA7 RPTA
  14392. SA1 VPAL GET TOTAL NUMBER OF POTS AVAILABLE
  14393. SA2 VPUL GET NUMBER OF POTS IN USE
  14394. UX3,B7 X5 FIND NUMBER OF POTS REQUESTED
  14395. BX7 X3 SET RETURN POT POINTER
  14396. ZR B7,RPT3 IF BAD POT COUNT
  14397. NG B7,RPT3 IF BAD POT COUNT
  14398. SX6 X2+B7
  14399. IX1 X1-X6
  14400. NG X1,RPT3 IF NOT ENOUGH POTS AVAILABLE
  14401. SB3 3
  14402. LX4 X1,B3
  14403. SX4 X4-VFLI SET LAST SEGMENT USED FLAG
  14404. PL X4,RPT0 IF MORE THAN ONE INCREMENT SEGMENT FREE
  14405. SA6 SPRG
  14406. RPT0 SA6 A2 UPDATE POTS IN USE COUNT
  14407. MX5 48
  14408. TB6 0,VPLP SET FWA OF PLT
  14409. MX4 -4 (X4) = -17B
  14410. SA1 B6 READ FIRST ENTRY
  14411. SB5 -48
  14412. RPT1 BX6 -X4*X1 GET RESERVATION BITS
  14413. IX6 X4+X6
  14414. SA1 A1+1 READ NEXT ENTRY
  14415. ZR X6,RPT1 IF NO FREE POTS
  14416. NX6 X6,B3 GET BYTE NUMBER + 44
  14417. SA1 A1-B1
  14418. SX6 B1 SET RESERVATION BIT
  14419. LX6 47
  14420. SB4 A1-B6 SET RELATIVE WORD ADDRESS
  14421. AX6 X6,B3 POSITION RESERVATION BIT
  14422. SX2 -44/4+B4 BUILD PARTIAL POT POINTER
  14423. BX6 X1+X6 RESERVE POT
  14424. SA6 A1
  14425. LX2 2
  14426. SX1 X2+B3 ADD BYTE NUMBER TO COMPLETE POT POINTER
  14427. SB7 B7-1 DECREMENT POTS NEEDED
  14428. ZR X3,RPT2 IF START OF NEW CHAIN
  14429. LX3 58 UPDATE PREVIOUS WORD
  14430. SA2 B6+X3
  14431. BX3 X5*X3 GET BYTE * 12
  14432. LX3 4 BYTE * 4
  14433. LX6 X3,B1 BYTE * 8
  14434. IX6 X3+X6 BYTE * 12
  14435. SB3 X6+B5 SET BYTE * 12 - 48
  14436. AX6 X1,B3 POSITION LINK POINTER
  14437. BX6 X2+X6 MERGE LINK POINTER
  14438. SA6 A2
  14439. ZR B7,RPTX IF REQUEST FILLED
  14440. BX3 X1 SET POT TO ADD LINK BYTE TO
  14441. SA1 A1
  14442. EQ RPT1
  14443.  
  14444. RPT2 BX7 X1 SET RETURN POINTER
  14445. ZR B7,RPTX IF REQUEST FILLED
  14446. BX3 X1
  14447. SA1 A1
  14448. EQ RPT1
  14449.  
  14450. RPT3 SX6 3RRPT
  14451. RJ ABT
  14452. BX7 X7-X7
  14453. EQ RPTX
  14454.  
  14455. RPTA CON 0 CURRENT POT REQUEST
  14456. RQI SPACE 4,10
  14457. ** RQI - REQUEST INPUT.
  14458. *
  14459. * ISSUE TERMINAL INPUT REQUEST MESSAGE, SET READ DATA,
  14460. * AND MAKE INPUT QUEUE ENTRY. THE ADDRESS TO WHICH
  14461. * CONTROL RETURNS AFTER OPERATOR INPUT IS EXTRACTED
  14462. * FROM THE SUBROUTINE ENTRY POINT RATHER THAN PRESET
  14463. * BY THE CALLER IN (X7) AS IN SUBROUTINE *IIR*.
  14464. *
  14465. * ENTRY (VDCT) = INTERLOCK CLEAR.
  14466. * (B3) = POT POINTER FOR MESSAGE.
  14467. * (B4) = MESSAGE LENGTH.
  14468. * (B5) = RETURN POT POINTER.
  14469. * (X6) = MESSAGE ADDRESS.
  14470. *
  14471. * EXIT TO CALL AFTER INPUT (SEE CLI.)
  14472. * (B5) = RETAINED.
  14473. *
  14474. * CALLS IIR.
  14475.  
  14476.  
  14477. RQI SUBR ENTRY (EXIT THROUGH *IIR*)
  14478. SA1 RQI SET REENTRY ADDRESS
  14479. AX1 30
  14480. SX7 X1
  14481. JP IIR REQUEST INPUT
  14482. RST SPACE 4,10
  14483. ** RST - RESTART SUSPENDED JOB.
  14484. *
  14485. * ENTRY SEE SSP.
  14486. * (B3) = INPUT POT POINTER.
  14487. * (PBUF) = OPERATOR INPUT.
  14488. * *CR* = CONTINUE.
  14489. * *P* = CONTINUE BUT DROP OUTPUT.
  14490. * OTHER = END JOB.
  14491.  
  14492.  
  14493. RST BSS 0 ENTRY
  14494. SA1 PBUF
  14495. ZR X1,RST1 IF *CR* - CONTINUE JOB
  14496. LX1 -54
  14497. SX6 B1
  14498. SX1 X1-1RP
  14499. NZ X1,STO IF NOT *P* NOR *CR* THEN TERMINATE JOB
  14500. SA2 A0+VROT
  14501. LX6 4-0
  14502. BX6 -X6*X2 CLEAR OUTPUT AVAILABLE FLAG
  14503. SA6 A2+
  14504.  
  14505. * RESTART JOB.
  14506.  
  14507. RST1 RJ INO ISSUE NULL OUTPUT
  14508. SA1 A0+VROT
  14509. SX6 137B
  14510. BX6 X1*X6
  14511. SX6 X6-1
  14512. ZR X6,RDY IF NO ACTIVITY
  14513. EQ RES RESTART JOB
  14514. SFC SPACE 4,10
  14515. ** SFC - SEND SFCALL.
  14516. *
  14517. * PARAMETER BLOCK FORMAT =
  14518. *T 6/ REPLY,12/ FCN PARAM,18/ UCP ADDR,18/ SCP ADDR,6/FCN CD
  14519. *T 24/ UCP JSN,24/0,12/ UCP EJTO
  14520. *
  14521. * ENTRY (X6) = FORMATTED FIRST WORD OF MESSAGE.
  14522. * (X7) = UCP IDENTIFICATION (JSN AND EJTO).
  14523. *
  14524. * EXIT (X1) = RETURN CODE.
  14525. * (X7) = UNCHANGED.
  14526. *
  14527. * USES X - 1, 4, 6, 7.
  14528. * A - 1, 4, 6, 7.
  14529. * B - 2.
  14530. *
  14531. * MACROS SFCALL.
  14532.  
  14533.  
  14534. SFC SUBR ENTRY/EXIT
  14535. SA6 SFCA
  14536. SA7 A6+B1
  14537. SFCALL SFCA,R
  14538. SA1 SFCA CHECK RETURN CODE
  14539. SA4 A1+B1 RESET UCP ID
  14540. BX7 X4
  14541. MX6 6
  14542. BX1 X6*X1
  14543. EQ SFCX EXIT
  14544.  
  14545.  
  14546. SFCA BSS 2 BUFFER FOR SENDING SFCALL
  14547. SLF SPACE 4,20
  14548. ** SLF - SET LOGOUT FLAG.
  14549. *
  14550. * SETS LOGOUT FLAG IN TERMINAL TABLE.
  14551. *
  14552. * EXIT (VSTT) = LOGOUT FLAG BIT 48 SET.
  14553. *
  14554. * USES A - 1, 6.
  14555. * X - 1, 6.
  14556.  
  14557.  
  14558. SLF SUBR ENTRY/EXIT
  14559. SA1 A0+VSTT READ VSTT ENTRY
  14560. SX6 B1 SET LOGOUT FLAG
  14561. LX6 48-0
  14562. BX6 X6+X1
  14563. SA6 A1 REWRITE VSTT ENTRY
  14564. EQ SLFX RETURN
  14565. SRC SPACE 4
  14566. ** SRC - SET RUN COMPLETE MESSAGE FLAG.
  14567. *
  14568. * USES-
  14569. * A - 1, 6.
  14570. * B - NONE.
  14571. * X - 1, 6.
  14572.  
  14573.  
  14574. SRC SUBR ENTRY/EXIT
  14575. SA1 A0+VSTT
  14576. SX6 B1
  14577. LX6 51
  14578. BX6 X1+X6
  14579. SA6 A1
  14580. EQ SRCX RETURN
  14581. SRR SPACE 4
  14582. ** SRR - SET READ DATA AND REENTRY.
  14583. *
  14584. * SET UP INPUT REENTRY REQUEST AND SET *READ DATA*
  14585. * BIT. A POT POINTER MAY BE PASSED IN B5 AND RETURNED
  14586. * IN B5 BY *CLI* AFTER INPUT.
  14587. *
  14588. * ENTRY (VDCT) = INTERLOCK CLEAR.
  14589. * (B5) = RETURN POT POINTER
  14590. * (X7) = REENTRY ADDRESS.
  14591. *
  14592. * EXIT (VDCT) = *READ DATA* BIT SET.
  14593. * INP$ QUEUE ENTRY MADE.
  14594. *
  14595. * USES A - 1, 7.
  14596. * X - 1, 5, 6, 7.
  14597. * B - 7.
  14598. *
  14599. * CALLS MQE.
  14600.  
  14601.  
  14602. SRR SUBR ENTRY/EXIT
  14603. SX5 INP$ SET UP QUEUE ENTRY
  14604. LX7 24
  14605. SX1 B5 SET RETURN POT POINTER
  14606. MX6 -12
  14607. LX5 48
  14608. BX1 -X6*X1
  14609. IX7 X5+X7 MERGE QUEUE POINTER AND REENTRY
  14610. LX1 12
  14611. BX5 X7+X1 MERGE RETURN POT POINTER
  14612. SB7 B0+ INDICATE NULL QUEUE
  14613. RJ MQE MAKE QUEUE ENTRY
  14614. SA1 A0+VDCT SET *READ DATA*
  14615. SX6 B1
  14616. LX6 54-0
  14617. BX7 X6+X1
  14618. SA7 A1
  14619. EQ SRRX RETURN
  14620. SSI SPACE 4,10
  14621. * SSI - SEND SRU AND CHARACTER COUNT INFORMATION.
  14622. *
  14623. * ENTRY (B4) = FWA OF *EJT* CALL PARAMETER BLOCK.
  14624. * (X6) = TIMEOUT MESSAGE FLAG.
  14625. *
  14626. * EXIT TERMINAL TIMEOUT, SRU AND CHARACTER COUNT MESSAGES
  14627. * ASSIGNED.
  14628. *
  14629. * CALLS CFD, MVA, SFN, SSP.
  14630. *
  14631. * MACROS CLOCK.
  14632.  
  14633.  
  14634. SSI SUBR ENTRY/EXIT
  14635. SA6 SSIH SAVE TIMEOUT FLAG
  14636. SA1 A0+VUIT GET USER NAME
  14637. MX2 42
  14638. BX1 X2*X1
  14639. SA3 =3LUN=
  14640. LX1 42
  14641. BX1 X1+X3
  14642. RJ SFN SPACE FILL USER NAME
  14643. SA6 SSIC
  14644. SA1 A0+VFST
  14645. SA2 =6L JSN=
  14646. MX3 24
  14647. BX1 X1*X3
  14648. LX1 24
  14649. BX6 X1+X2
  14650. LX6 12
  14651. SA6 SSIE
  14652. SA5 B4+4 READ TERMINAL CHARACTER COUNTS
  14653. SA1 B4+B1 SET ACCUMULATED SRU-S
  14654. AX1 12
  14655. SA3 FSMC SRU CONSTANT (.0001)
  14656. PX1 X1
  14657. FX1 X3*X1 DIVIDE ACCUMULATOR VALUE BY 1000
  14658. RJ CFD CONVERT TO F10.3 FORMAT
  14659. SA6 SSIF
  14660. MX0 -12 COMPUTE TOTAL CHARACTER COUNT
  14661. MX1 -24
  14662. BX0 -X0*X5
  14663. LX5 -12
  14664. BX1 -X1*X5
  14665. IX1 X1+X0
  14666. RJ CFD CONVERT TO F10.3 FORMAT
  14667. SX7 1R=&1R
  14668. LX7 54
  14669. BX6 X6-X7
  14670. SA6 SSIG SET CHARACTER COUNT
  14671. CLOCK SSID
  14672. RJ SSP RESET REGISTERS
  14673. SB4 SICL SET MESSAGE LENGTH
  14674. SX6 SSIC SET MESSAGE ADDRESS
  14675. SA1 SSIH
  14676. ZR X1,SSI1 IF NO TIMEOUT MESSAGE
  14677. SB4 SIAL RESET MESSAGE LENGTH AND ADDRESS
  14678. SX6 SSIA
  14679. SSI1 RJ MVA MOVE MESSAGE
  14680. EQ SSIX EXIT
  14681.  
  14682.  
  14683. SSIA DATA 30L"EM""NL"TERMINAL TIME OUT - JSN =
  14684. SSIB DATA 5LJSNA.
  14685. SSIC DATA 10HUN=USERNAM
  14686. DATA 10H LOG OFF
  14687. SSID DATA 10H HH.MM.SS.
  14688. DATA 1L EOL
  14689. SSIE DATA 10HJSN=JSNA
  14690. DATA 10H SRU-S=
  14691. SSIF DATA 10H 12345.678
  14692. DATA 1L EOL
  14693. DATA 10HCHARACTERS
  14694. SSIG DATA 10H=12345.678
  14695. DATA 4LKCHS EOL
  14696. SICL EQU *-SSIC
  14697. SIAL EQU *-SSIA
  14698.  
  14699. SSIH CON 0 TIMEOUT MESSAGE FLAG
  14700. SSP SPACE 4,10
  14701. ** SSP - RESET PARAMETERS FROM STACK ENTRY.
  14702. *
  14703. * ENTRY (SSPA) = STACK ENTRY PARAMETER WORD.
  14704. *
  14705. * EXIT (A0) = FWA OF USER TERMINAL TABLE.
  14706. * (X5) = STACK ENTRY (SSPA).
  14707. * (X7) = STACK ENTRY BITS 47-24, RIGHT JUSTIFIED.
  14708. * (B2) = STACK ENTRY BITS 11-0 (TERMINAL NUMBER).
  14709. * (B3) = STACK ENTRY BITS 23-12 (POT POINTER).
  14710. * (B4) = ((B3) * 10B) + VBMP (POT ADDRESS).
  14711. *
  14712. * USES A - 5.
  14713. * X - 1, 2.
  14714.  
  14715.  
  14716. SSP1 MX1 -12
  14717. BX2 -X1*X5
  14718. SB2 X2 (B2)
  14719. TTADD X2,A0,X2,X7 (A0)
  14720. BX7 X5
  14721. AX7 12
  14722. BX2 -X1*X7
  14723. MX1 -24
  14724. SB3 X2 (B3)
  14725. LX2 3
  14726. TB4 X2,VBMP (B4)
  14727. AX7 12
  14728. BX7 -X1*X7 (X7)
  14729.  
  14730. SSP SUBR ENTRY/EXIT
  14731. SA5 SSPA (X5)
  14732. EQ SSP1
  14733. SSS SPACE 4,20
  14734. ** SSS - SET SSP PARAMETERS.
  14735. *
  14736. * INITIALIZE LOCATION *SSPA* FOR *SSP* CALLS.
  14737. *
  14738. * ENTRY (B2) = TERMINAL NUMBER.
  14739. * (B3) = POT POINTER.
  14740. * (X7) = 24/ANYTHING.
  14741. *
  14742. * EXIT (SSPA) = SET.
  14743. * (A0) = (B2) TERMINAL TABLE ADDRESS.
  14744. * (B4) = (B3) POT ADDRESS.
  14745. * (X5) = (SSPA).
  14746. *
  14747. * USES A - 6.
  14748. * X - 1, 2, 5, 6.
  14749.  
  14750.  
  14751. SSS SUBR ENTRY/EXIT
  14752. TTADD B2,A0,X5,X2 SET (A0) = TERMINAL TABLE ADDRESS
  14753. MX2 -24
  14754. BX5 -X2*X7 MASK (X7)
  14755. MX2 -12
  14756. LX5 24
  14757. SX1 B3 SET (B3)
  14758. BX1 -X2*X1
  14759. LX1 12
  14760. BX5 X5+X1
  14761. SX1 B2 SET TERMINAL NUMBER
  14762. BX1 -X2*X1
  14763. IX5 X5+X1
  14764. BX6 X5 STORE *SSPA*
  14765. SA6 SSPA
  14766. ZR B3,SSSX IF NO (B3) POT POINTER
  14767. SX1 B3 SET POT ADDRESS
  14768. LX1 3
  14769. TB4 X1,VBMP
  14770. EQ SSSX RETURN
  14771. TPF SPACE 4
  14772. ** TPF - TEST PRIMARY FILE NAME.
  14773. *
  14774. * ENTRY-
  14775. * (X1) = NAME TO BE COMPARED AGAINST.
  14776. *
  14777. * EXIT-
  14778. * (X1) = NAME COMPARED AGAINST.
  14779. * (X2) = ((A0+VFNT))
  14780. * (X6) = 0, IF NAME SAME AS PRIMARY FILE NAME.
  14781. *
  14782. * USES-
  14783. * X3, X4.
  14784.  
  14785.  
  14786. TPF SUBR ENTRY/EXIT
  14787. SA2 A0+VFNT
  14788. MX3 42
  14789. BX4 X3*X2
  14790. BX6 X1-X4
  14791. EQ TPFX
  14792. UCP SPACE 4,10
  14793. ** UCP - UPDATE CONVERTED POINTER WORD.
  14794. *
  14795. * CONVERT SPECIFIED VALUE TO DECIMAL DISPLAY CODE.
  14796. * CODE ADAPTED FROM *COMCCDD*.
  14797. *
  14798. * ENTRY (A1) = *VANL* OR *VTNL*.
  14799. * (X6) = VALUE.
  14800. *
  14801. * EXIT WORD *VCAL* OR *VCTL* UPDATED.
  14802. *
  14803. * USES X - 1, 2, 3, 4, 5, 6, 7.
  14804. * A - 2, 3, 5, 6.
  14805. * B - 4, 5, 6.
  14806.  
  14807.  
  14808. UCP SUBR ENTRY/EXIT
  14809. SA2 UCPA
  14810. SA3 A2+1
  14811. SA5 A3+1 (X5) = BACKGROUND
  14812. SB4 1R0-1R (B4) = CONVERSION
  14813. SB5 6
  14814. PX1 X6
  14815. SB6 -B5
  14816. UCP1 DX6 X2*X1 EXTRACT REMAINDER
  14817. FX1 X2*X1
  14818. SX4 X1
  14819. LX5 -6
  14820. SB6 B6+B5 ADVANCE SHIFT COUNT
  14821. FX6 X3*X6 EXTRACT DIGIT
  14822. SX7 X6+B4 CONVERT DIGIT
  14823. IX5 X5+X7 ADVANCE ASSEMBLY
  14824. NZ X4,UCP1 IF REMAINDER .NE. ZERO
  14825. LX6 X5,B6 LEFT JUSTIFY ASSEMBLY
  14826. SA6 A1+VCTL-VTNL
  14827. ERRNZ VCAL-VCTL-1 CODE REQUIRES CONTIGUOUS WORDS
  14828. ERRNZ VANL-VTNL-1 CODE REQUIRES CONTIGUOUS WORDS
  14829. EQ UCPX RETURN
  14830.  
  14831. UCPA CON 0.1P48+1
  14832. CON 10.0P
  14833. CON 10L
  14834. UEC SPACE 4,10
  14835. ** UEC - UNEXPECTED ERROR CODE PROCESSOR.
  14836. *
  14837. * ENTRY (X2) = ERROR CODE.
  14838. *
  14839. * EXIT TO ABT.
  14840. *
  14841. * USES X - 6.
  14842. * A - 6.
  14843. *
  14844. * CALLS ABT.
  14845.  
  14846.  
  14847. UEC SUBR ENTRY/EXIT
  14848. SX6 B3 SAVE PARAMETER BLOCK POT POINTER
  14849. LX6 12
  14850. BX6 X2+X6
  14851. SA6 UECA STORE ERROR CODE
  14852. SX6 3RUEC
  14853. RJ ABT ABORT PROCESSOR
  14854. EQ UECX EXIT
  14855.  
  14856.  
  14857. UECA CON 0 UNEXPECTED ERROR CODE
  14858. UQS SPACE 4
  14859. ** UQS - UPDATE QUEUE STACK.
  14860. *
  14861. * PACKS UP THE TERMINALS REENTRY STACK. THE NEXT
  14862. * QUEUE ENTRY WILL BE PLACED IN THE QUEUE INDICATED
  14863. * IN BYTE 4 OF THE STACKED ENTRY.
  14864. *
  14865. * ENTRY (B2) = TERMINAL NUMBER.
  14866. *
  14867. * EXIT TERMINAL REENTRY QUEUE UPDATED.
  14868. * STACKED QUEUE POTS DROPPED IF QUEUE EMPTIED.
  14869. *
  14870. * CALLS DPT, MQE.
  14871.  
  14872.  
  14873. UQS SUBR ENTRY/EXIT
  14874. TA1 B2,VRAP
  14875. ZR X1,UQSX IF NO ENTRY TO UPDATE
  14876. MX2 12
  14877. BX2 X2*X1
  14878. NZ X2,UQSX IF NO STACKED ENTRIES
  14879. SA3 X1 GET FIRST ENTRY IN QUEUE
  14880. NZ X3,UQSX IF ENTRY PLACED BACK IN QUEUE
  14881. SX7 B2 SET A0
  14882. TTADD X7,A0,X7,X5
  14883. SX7 B0 CLEAR NEXT ENTRY POINTER
  14884. SB5 X1+1 SET NEXT ENTRY ADDRESS
  14885. SA7 UQSA
  14886. SB7 X1+VCPC SET POT LIMIT
  14887.  
  14888. * LOCATE NEXT ENTRY.
  14889.  
  14890. UQS1 SA5 B5 GET NEXT ENTRY
  14891. SB5 B5+B1
  14892. NZ X5,UQS2 IF ENTRY FOUND
  14893. LT B5,B7,UQS1 IF END OF POT NOT REACHED
  14894. UQS2 BX6 X5 SAVE NEXT ENTRY TO BE PROCESSED
  14895. SA6 A7
  14896. SA7 A5+ CLEAR ENTRY POSITION
  14897. EQ B5,B7,UQS5 IF STACK EMPTY
  14898. SB6 X1+1 SET INSERT POINTER FOR MOVE
  14899.  
  14900. * PUSH UP STACK.
  14901.  
  14902. UQS3 SA5 B5 GET NEXT ENTRY
  14903. ZR X5,UQS4 IF NULL ENTRY
  14904. BX6 X5 MOVE ENTRY
  14905. SA6 B6
  14906. SA7 B5 CLEAR ENTRY POSITION
  14907. SB5 B5+1 INCREMENT POINTERS
  14908. SB6 B6+1
  14909. NE B5,B7,UQS3 IF NOT END OF POT
  14910. UQS4 SA5 X1+1 CHECK POT ENTRY
  14911. NZ X5,UQS6 IF POT NOT EMPTY
  14912.  
  14913. * DROP STACK POT IF EMPTIED.
  14914.  
  14915. UQS5 SA7 A1 CLEAR POT ADDRESS
  14916. AX1 18D DROP EMPTY POT
  14917. SB3 X1
  14918. SB4 X1
  14919. RJ DPT
  14920.  
  14921. * PLACE NEXT ENTRY IN QUEUE.
  14922.  
  14923. UQS6 SA5 UQSA ENTER NEXT ENTRY IN QUEUE
  14924. ZR X5,UQSX IF NO ENTRY
  14925. MX4 -12 GET CORRECT QUEUE
  14926. BX4 -X4*X5
  14927. BX5 X5-X4 CLEAR QUEUE POINTER FROM ENTRY
  14928. SB7 X4
  14929. RJ MQE MAKE QUEUE ENTRY
  14930. NZ X2,UQSX IF NOT CURRENT ENTRY
  14931. SB7 B7-ITAQ
  14932. ZR B7,UQS7 IF 1TA CALL
  14933. SB7 B7-ITOQ+ITAQ
  14934. NZ B7,UQSX IF NOT 1TO NOR 1TA CALL
  14935. UQS7 UX6,B7 X6 CHECK QUEUE ENTRY
  14936. MX2 59
  14937. SB5 B7-ITA1$+2000B
  14938. ZR B5,UQSX IF STATUS REQUEST
  14939. SA1 A0+VROT
  14940. MX2 59
  14941. BX6 X1*X2
  14942. SA6 A1 REWRITE VROT
  14943. JP UQSX
  14944.  
  14945. UQSA CON 0 NEXT ENTRY TO BE PLACED IN QUEUE
  14946. TITLE SMFIF - SCREEN MANAGEMENT FACILITY INTERFACE.
  14947. QUAL SMFIF
  14948. *** SMFIF - SCREEN MANAGEMENT FACILITY INTERFACE.
  14949. *
  14950. * SMFIF PROCESSES COMMUNICATIONS FOR SMFEX, THE
  14951. * SCREEN MANAGEMENT FACILITY EXECUTIVE, AND FOR FSE, THE
  14952. * FULL SCREEN EDITOR. A USERS EDITING SESSION PASSES
  14953. * BETWEEN FSE AND SMFEX DEPENDING ON THE COMMANDS
  14954. * ENTERED AND THE AVAILABILITY OF SMFEX. IF SMFEX
  14955. * IS NOT RUNNING, FSE IS CAPABLE OF HANDLING THE ENTIRE
  14956. * SESSION, TRANSPARENTLY TO USERS, BUT POSSIBLY SLOWER.
  14957. *
  14958. * A WALK-THROUGH OF AN FSE/SMFEX SESSION.
  14959. *
  14960. * 1. THE USER INVOKES THE EDITOR WITH THE COMMAND *FSE*.
  14961. * IAFEX SCHEDULES FSE AS AN ORDINARY COMMAND.
  14962. *
  14963. * 2. FSE BUILDS THE WORKFILE AND THEN ATTEMPTS TO
  14964. * ESTABLISH A CONNECTION BETWEEN THE TERMINAL
  14965. * AND SMFEX USING THE *TLX* FILE TRANSFER FUNCTION.
  14966. *
  14967. * 3. TLX TESTS FOR THE PRESENCE OR ABSENCE OF SMFEX, AND
  14968. * TESTS SUBSYSTEM ENABLE STATUS TO DETERMINE IF SMFEX IS
  14969. * WILLING TO ACCEPT ADDITIONAL USERS. IF SMFEX IS READY,
  14970. * TLX GENERATES A LOCAL FNT IN SMFEX AND DISABLES FSE
  14971. * FROM SIMULTANEOUS ACCESS TO THE SHARED FILE BY
  14972. * LIMITING FSE-S FNT ATTRIBUTES AND ROLLING FSE OUT WITH
  14973. * PP RECALL BACK INTO TLX. TLX THEN NOTIFIES IAFEX OF
  14974. * THE CONNECTION VIA THE VCSM TSEM FUNCTION.
  14975. *
  14976. * 4. IAFEX RESPONDS TO THE CONNECTION EVENT BY FLAGGING THE
  14977. * TERMINAL WITH NON-ZERO SMFEX CONNECTION STATE AND
  14978. * SENDING A MESSAGE TO SMFEX SO THAT IT CAN VERIFY
  14979. * VALIDITY OF FILE FORMAT AND PREPARE TO ACCEPT THE USER-S
  14980. * INPUT.
  14981. *
  14982. * 5. SO LONG AS THE SMFEX CONNECTION STATE REMAINS NON-ZERO,
  14983. * ALL TERMINAL I/O IS PROCESSED BY THE SMFIF INTERFACE AS
  14984. * MESSAGES TO AND FROM SMFEX.
  14985. *
  14986. * 6. WHEN SMFEX ENCOUNTERS ANY REQUEST IT CANNOT SATISFY, IT
  14987. * RETURNS ITS LOCAL FNT, SCHEDULES ROLLIN OF FSE, AND
  14988. * NOTIFIES IAFEX THAT THE CONNECTION IS FINISHED.
  14989. *
  14990. * 7. TLX IS RECALLED UPON ROLLIN TO VERIFY VALID RE-TRANSFER
  14991. * OF THE SHARED FILE. FSE THEN RESUMES EXECUTION AND SCANS
  14992. * FILE CONTENT TO DETERMINE THE OPERATION LEFT BY SMFEX.
  14993. * FSE MAY THEN DECIDE TO TERMINATE THE JOB STEP OR TO
  14994. * ONCE AGAIN CONNECT TO SMFEX.
  14995. EJECT
  14996. ** FORMAT OF IAFEX/SMFEX BUFFERS.
  14997. *
  14998. *T WORD 0 12/FUNCTION,12/TERMINAL,18/POINTER,18/LENGTH
  14999. *T,WORD N (TERMINAL I/O DATA)
  15000. *
  15001. * FUNCTION - FUNCTION CODE ORDINAL.
  15002. *
  15003. * TERMINAL - CONNECTION NUMBER.
  15004. *
  15005. * POINTER - ADDRESS WITHIN SMFEX OF IAF-TO-SMF BUFFER.
  15006. * THIS FIELD IS USED ONLY IN INITIALIZATION.
  15007. * POINTER-1 WILL BE ADDRESS OF IDLEDOWN BUFFER.
  15008. *
  15009. * LENGTH - LENGTH OF MESSAGE INCLUDING THIS WORD.
  15010. SPACE 4,10
  15011. ** SMFIF ASSEMBLY PARAMETERS.
  15012.  
  15013.  
  15014. NWSS EQU 100B NUMBER OF WORDS IN IAF TO SMF QUEUE
  15015. NWDB EQU 300B NUMBER OF WORDS IN DEBUGGING BUFFER
  15016. * (IF 0, DO NOT ASSEMBLE DEBUGGING CODE)
  15017. SPACE 4,10
  15018. ** SMFEX-TO-IAFEX FUNCTIONS.
  15019.  
  15020.  
  15021. BSS 0 (FORCE UPPER)
  15022. .SAVE SET *
  15023. LOC 0
  15024. FSIN BSS 1 SMFEX INITIALIZED
  15025. FAOT BSS 1 ASSIGN OUTPUT TO TERMINAL
  15026. FAOI BSS 1 ASSIGN OUTPUT AND REQUEST INPUT
  15027. FDSC BSS 1 DISCONNECT TERMINAL FROM SMFEX
  15028. NMSF BSS 0 NUMBER OF SMFEX FUNCTIONS
  15029. SPACE 4,10
  15030. ** IAFEX-TO-SMFEX FUNCTIONS.
  15031.  
  15032.  
  15033. LOC 0
  15034. FIIN BSS 1 IAFEX INITIALIZED
  15035. FCLI BSS 1 COMMAND LINE FROM TERMINAL
  15036. FRES BSS 1 DRIVER REQUESTS MORE OUTPUT
  15037. FPUB BSS 1 PROCESS USER BREAK FROM TERMINAL
  15038. FHUP BSS 1 PHONE HUNG-UP
  15039. FCSM BSS 1 CONNECT TO SMF
  15040. ORG .SAVE
  15041. EJECT
  15042. *** SMFIF PROCESSING.
  15043. *
  15044. * SMFIF RECEIVES CONTROL FROM IAFEX IN THREE WAYS.
  15045. *
  15046. * 1. FROM THE IAFEX MAIN LOOP, WHICH USES THE *CSS* ROUTINE
  15047. * TO DETECT MESSAGE ARRIVING FROM SMFEX. /SMFIF/RMS IS
  15048. * THE ENTRY POINT FOR THESE EVENTS.
  15049. *
  15050. * 2. FROM IAFEX ROUTINE *DRI* WHEN A DRIVER FUNCTION REQUEST
  15051. * HAS BEEN RECEIVED. (SUBROUTINE *PDR*)
  15052. *
  15053. * 3. FROM IAFEX ROUTINE *STR*, AS THE RESULT OF TSEM FUNCTION
  15054. * CODE VCSM. THIS CODE INDICATES EITHER A TLX REQUEST TO
  15055. * CONNECT A TERMINAL TO SMFEX, OR TLX CONFIRMATION THAT
  15056. * DISCONNECTION FROM SMFEX HAS BEEN VALIDLY COMPLETED.
  15057. * THE ENTRY POINTS ARE /SMFIF/CSM AND /SMFIF/DSM.
  15058. *
  15059. * FUNCTION REQUESTS FROM SMFEX, CERTAIN DRIVER FUNCTION
  15060. * REQUESTS, AND PROMPT-ISSUED ENTRY FROM *RES* ARE
  15061. * CALLED EVENTS AND ARE ASSIGNED SYMBOLS WITHIN
  15062. * SMFIF OF THE FORM *EXXX*.
  15063. *
  15064. * EACH IAFEX TERMINAL HAS ASSOCIATED WITH IT A STATE
  15065. * OF SMFIF PROCESSING. A STATE CODE IS MAINTAINED
  15066. * IN BITS 23-18 OF WORD VFST OF THE TERMINAL TABLE.
  15067. * STATE CODES ARE ASSIGNED SYMBOLS OF THE FORM *SXXX*.
  15068. *
  15069. * FOR EACH STATE, STATE/EVENT TABLES DEFINE WHAT ACTION
  15070. * (INCLUDING A POSSIBLE STATE CHANGE) IS TO BE PERFORMED
  15071. * UPON OCCURENCE OF EACH POSSIBLE EVENT. THE ACTION
  15072. * FOR A GIVEN EVENT IS A ROUTINE CALLED A STATE/EVENT
  15073. * HANDLER OR PROCESSOR.
  15074. *
  15075. * THUS, SMFIF PROCESSING CONSISTS OF THREE REQUEST
  15076. * PROCESSORS (CSM, DSM, PDR) DETECTING EVENTS AND
  15077. * EXECUTING THE APPROPRIATE STATE/EVENT HANDLERS.
  15078. SPACE 4,10
  15079. ** STATE TABLE MACROS.
  15080.  
  15081.  
  15082. MACRO STATE,SXXX
  15083. IF -DEF,.STATE,1
  15084. .STATE SET 0
  15085. ERRNZ SXXX-.STATE MISPLACED STATE EVENT TABLE
  15086. LOC 0
  15087. ENDM
  15088.  
  15089.  
  15090. EVENT MACRO EXXX,IXX,SXXX
  15091. ERRNZ EXXX-* MISPLACED EVENT ENTRY
  15092. IFC NE,*SXXX**
  15093. VFD 36/0,6/SXXX,18/IXX
  15094. ELSE
  15095. VFD 36/0,6/.STATE,18/IXX
  15096. ENDIF
  15097. ENDM
  15098.  
  15099.  
  15100. STATEND MACRO
  15101. .STATE SET .STATE+1
  15102. ERRNZ NMEV-* WRONG NUMBER OF EVENTS
  15103. LOC *O
  15104. ENDM
  15105. SPACE 4,10
  15106. ** SMFIF TERMINAL STATE SYMBOLS.
  15107.  
  15108.  
  15109. .SAVE SET *
  15110. LOC 0
  15111. SIDL BSS 1 NO FSE/SMFEX ACTIVITY IN PROGRESS
  15112. SINP BSS 1 WAITING FOR TERMINAL INPUT
  15113. SRSP BSS 1 WAITING FOR SMFEX RESPONSE
  15114. SOUT BSS 1 WAITING FOR MORE OUTPUT FROM SMFEX
  15115. SHUP BSS 1 WAIT SMFEX OK AFTER HUNG-UP PHONE
  15116. STOT BSS 1 WAIT SMFEX OK AFTER TIME-OUT LOGOFF
  15117. SDTJ BSS 1 WAIT SMFEX OK AFTER DETACH
  15118. ORG .SAVE
  15119. SPACE 4,10
  15120. ** SMFIF TERMINAL EVENT SYMBOLS.
  15121.  
  15122.  
  15123. .SAVE SET * SAVE ORIGIN
  15124. LOC 0
  15125. ERES BSS 1 DRIVER RES REQUEST
  15126. ECLI BSS 1 DRIVER CLI REQUEST
  15127. EPUB BSS 1 DRIVER PUB REQUEST
  15128. EDTJ BSS 1 DRIVER DTJ REQUEST
  15129. EHUP BSS 1 DRIVER HUP REQUEST
  15130. ETOT BSS 1 DRIVER TOT REQUEST
  15131. EUDR BSS 1 UNEXPECTED DRIVER REQUEST
  15132. EAOT BSS 1 SMFEX ASSIGN OUTPUT TO TERMINAL
  15133. EAOI BSS 1 SMFEX ASSIGN OUTPUT AND REQUEST INPUT
  15134. ECON BSS 1 TLX CONNECT TO SMF
  15135. EDSC BSS 1 SMFEX DISCONNECT FUNCTION
  15136. ECFR BSS 1 TLX CONFIRM DISCONNECTION
  15137. ERMO BSS 1 IAFEX REQUEST MORE OUTPUT FROM SMFEX
  15138. NMEV BSS 0 NUMBER OF EVENTS
  15139. ORG .SAVE RESTORE ORIGIN AND LOCATION COUNTERS
  15140. EJECT
  15141. ** SMFIF STATE/EVENT TABLES.
  15142.  
  15143.  
  15144. TSET BSS 0
  15145. SPACE 4,20
  15146. SIDL STATE NO FSE/SMFEX ACTIVITY
  15147. ERRNZ SIDL IAFEX AND DRIVER CODE ASSUMES SIDL=0
  15148. EVENT ERES,RDR
  15149. EVENT ECLI,RDR
  15150. EVENT EPUB,RDR
  15151. EVENT EDTJ,RDR
  15152. EVENT EHUP,RDR
  15153. EVENT ETOT,RDR
  15154. EVENT EUDR,RDR
  15155. EVENT EAOT,0
  15156. EVENT EAOI,0
  15157. EVENT ECON,NSC,SRSP
  15158. EVENT EDSC,0
  15159. EVENT ECFR,0
  15160. EVENT ERMO,0
  15161. STATEND
  15162. SPACE 4,20
  15163. SINP STATE WAITING FOR TERMINAL INPUT
  15164. EVENT ERES,DBI
  15165. EVENT ECLI,PCL,SRSP
  15166. EVENT EPUB,NSI,SRSP
  15167. EVENT EDTJ,NSH,SDTJ
  15168. EVENT EHUP,NSH,SHUP
  15169. EVENT ETOT,NSH,STOT
  15170. EVENT EUDR,ADR
  15171. EVENT EAOT,ASO
  15172. EVENT EAOI,ASO
  15173. EVENT ECON,ATL
  15174. EVENT EDSC,0,SIDL
  15175. EVENT ECFR,0
  15176. EVENT ERMO,0
  15177. STATEND
  15178. SPACE 4,20
  15179. SRSP STATE WAITING FOR SMFEX RESPONSE TO INPUT
  15180. EVENT ERES,0
  15181. EVENT ECLI,AIR1
  15182. EVENT EPUB,NSI
  15183. EVENT EDTJ,NSH,SDTJ
  15184. EVENT EHUP,NSH,SHUP
  15185. EVENT ETOT,NSH,STOT
  15186. EVENT EUDR,ADR
  15187. EVENT EAOT,ASO,SOUT
  15188. EVENT EAOI,ASO,SINP
  15189. EVENT ECON,ATL
  15190. EVENT EDSC,0,SIDL
  15191. EVENT ECFR,0,SIDL
  15192. EVENT ERMO,0
  15193. STATEND
  15194. SPACE 4,20
  15195. SOUT STATE EXPECTING OUTPUT FROM SMFEX
  15196. EVENT ERES,AMS
  15197. EVENT ECLI,AIR1
  15198. EVENT EPUB,NSI,SRSP
  15199. EVENT EDTJ,NSH,SDTJ
  15200. EVENT EHUP,NSH,SHUP
  15201. EVENT ETOT,NSH,STOT
  15202. EVENT EUDR,ADR
  15203. EVENT EAOT,ASO
  15204. EVENT EAOI,ASO,SINP
  15205. EVENT ECON,ATL
  15206. EVENT EDSC,0,SIDL
  15207. EVENT ECFR,0
  15208. EVENT ERMO,0,SRSP
  15209. STATEND
  15210. SPACE 4,20
  15211. SHUP STATE WAIT SMFEX OK AFTER HUNG UP PHONE
  15212. EVENT ERES,0
  15213. EVENT ECLI,AIR1
  15214. EVENT EPUB,AIR
  15215. EVENT EDTJ,0
  15216. EVENT EHUP,IES
  15217. EVENT ETOT,IES
  15218. EVENT EUDR,ADR
  15219. EVENT EAOT,0
  15220. EVENT EAOI,0
  15221. EVENT ECON,ATL
  15222. EVENT EDSC,AHU,SIDL
  15223. EVENT ECFR,0
  15224. EVENT ERMO,0
  15225. STATEND
  15226. SPACE 4,20
  15227. STOT STATE WAIT SMFEX OK AFTER TIME-OUT LOGOFF
  15228. EVENT ERES,0
  15229. EVENT ECLI,AIR1
  15230. EVENT EPUB,AIR
  15231. EVENT EDTJ,0
  15232. EVENT EHUP,0,SHUP
  15233. EVENT ETOT,IES
  15234. EVENT EUDR,ADR
  15235. EVENT EAOT,0
  15236. EVENT EAOI,0
  15237. EVENT ECON,ATL
  15238. EVENT EDSC,ATO,SIDL
  15239. EVENT ECFR,0
  15240. EVENT ERMO,0
  15241. STATEND
  15242. SPACE 4,20
  15243. SDTJ STATE WAIT SMFEX OK AFTER DETACH
  15244. EVENT ERES,0
  15245. EVENT ECLI,AIR1
  15246. EVENT EPUB,AIR
  15247. EVENT EDTJ,0
  15248. EVENT EHUP,0,SHUP
  15249. EVENT ETOT,0,STOT
  15250. EVENT EUDR,ADR
  15251. EVENT EAOT,0
  15252. EVENT EAOI,0
  15253. EVENT ECON,ATL
  15254. EVENT EDSC,ADT,SIDL
  15255. EVENT ECFR,0
  15256. EVENT ERMO,0
  15257. STATEND
  15258. TITLE SMFIF - CSM - CONNECT TO SCREEN MANAGEMENT FACILITY.
  15259. CSM SPACE 4,10
  15260. ** CSM - CONNECT TO SCREEN MANAGEMENT.
  15261. *
  15262. * USES X - 1.
  15263. *
  15264. * CALLS ESE.
  15265.  
  15266.  
  15267. CSM SUBR
  15268. SX1 ECON SET CONNECTION EVENT
  15269. RJ ESE EXECUTE STATE/EVENT PROCESSOR
  15270. EQ CSMX RETURN
  15271. TITLE SMFIF - DSM - DISCONNECT SCREEN MANAGEMENT FACILITY.
  15272. DSM SPACE 4,10
  15273. ** DSM - DISCONNECT FROM SCREEN MANAGEMENT.
  15274. *
  15275. * USES X - 1.
  15276. *
  15277. * CALLS ESE.
  15278.  
  15279.  
  15280. DSM SUBR
  15281. SX1 ECFR SET DISCONNECT CONFIRMATION EVENT
  15282. RJ ESE EXECUTE STATE/EVENT PROCESSOR
  15283. EQ DSMX RETURN
  15284. TITLE SMFIF - PDR - PROCESS DRIVER REQUESTS.
  15285. PDR SPACE 4,10
  15286. ** PDR - PROCESS DRIVER REQUESTS.
  15287. *
  15288. * ENTRY (X5) = DRIVER FUNCTION REQUEST.
  15289. * (B7) = *DRI* PROCESSOR FOR FUNCTION.
  15290. *
  15291. * USES X - 1, 2, 3, 7.
  15292. * A - 1, 2.
  15293. * B - 5.
  15294. *
  15295. * CALLS ESE, PCS, SSP.
  15296.  
  15297.  
  15298. PDR1 RJ PCS EXECUTE PROCESSOR
  15299.  
  15300. PDR SUBR
  15301. BX7 X5 STORE DRIVER REQUEST
  15302. SA7 SSPA
  15303. RJ SSP SET UP B2, B3, AND OTHER REGISTERS
  15304. UX1,B5 X5
  15305. SA1 TDRQ+B5
  15306. NG X1,PDR1 IF NO SMFIF HANDLING FOR THIS REQUEST
  15307. SA2 A0+VROT CHECK FOR RESOURCE LIMIT
  15308. MX3 2
  15309. LX2 59-19
  15310. BX3 X3*X2
  15311. NZ X3,PDR1 IF LIMIT OCCURRED, SKIP SMF PROCESSING
  15312. RJ ESE EXECUTE STATE/EVENT HANDLER
  15313. EQ PDRX RETURN
  15314.  
  15315.  
  15316. TDRQ INDEX CON,/TLX/REQL,0 TABLE OF DRIVER REQUESTS
  15317. INDEX ,/TLX/CLI,( ECLI )
  15318. INDEX ,/TLX/DIN,( EUDR )
  15319. INDEX ,/TLX/DLO,( -1 )
  15320. INDEX ,/TLX/DRP,( -1 )
  15321. INDEX ,/TLX/DRT,( -1 )
  15322. INDEX ,/TLX/DTJ,( EDTJ )
  15323. INDEX ,/TLX/ETX,( EUDR )
  15324. INDEX ,/TLX/FLO,( EUDR )
  15325. INDEX ,/TLX/HUP,( EHUP )
  15326. INDEX ,/TLX/IAM,( -1 )
  15327. INDEX ,/TLX/LPT,( -1 )
  15328. INDEX ,/TLX/PUB,( EPUB )
  15329. INDEX ,/TLX/RES,( ERES )
  15330. INDEX ,/TLX/RIN,( EUDR )
  15331. INDEX ,/TLX/SAI,( EUDR )
  15332. INDEX ,/TLX/TOT,( ETOT )
  15333. TDRQL EQU *-TDRQ
  15334. TITLE SMFIF - STATE/EVENT HANDLERS.
  15335. ** STATE/EVENT HANDLERS.
  15336. *
  15337. * STATE/EVENT PROCESSORS ARE CALLED ONLY BY *ESE* AND
  15338. * RETURN BY JUMPING TO *ESEX*. PROCESSORS MAY ALSO
  15339. * RETURN BY JUMPING TO EACH OTHER. *RDR* HAS THE
  15340. * PROPERTY OF CALLING *PCS* TO PERFORM ANY FUNCTIONS
  15341. * WHICH ARE NOT OVERRIDDEN BY SCREEN MANAGEMENT. THE
  15342. * FOLLOWING ARE TRUE OF ALL STATE/EVENT PROCESSORS.
  15343. *
  15344. * ENTRY (B2) = TERMINAL NUMBER.
  15345. *
  15346. * EXIT VIA *ESEX*.
  15347. ESE SPACE 4,10
  15348. ** ESE - EXECUTE STATE/EVENT HANDLER.
  15349. *
  15350. * ENTRY (X1) = EVENT CODE.
  15351. * (B2) = TERMINAL NUMBER.
  15352. * (B3) = PARAMETER TO STATE/EVENT PROCESSOR.
  15353. * (B4) = PARAMETER TO STATE/EVENT PROCESSOR.
  15354. *
  15355. * EXIT TO PROCESSOR.
  15356. *
  15357. * CALLS ABT, ASE.
  15358.  
  15359.  
  15360. ESE SUBR ENTRY/EXIT
  15361. RJ ASE ADVANCE STATE/EVENT TABLES
  15362. NG B6,ESE1 IF INCORRECT PROCESSOR
  15363. ZR B6,ESEX IF NO PROCESSOR
  15364. JP B6 EXIT TO PROCESSOR
  15365.  
  15366. ESE1 SX6 3RESE
  15367. RJ ABT ABORT
  15368. EQ ESEX RETURN
  15369. SPACE 4,10
  15370. ** ADT - SMFEX ACKNOWLEDGED DETACH.
  15371. *
  15372. * USES X - 1.
  15373. * A - 1.
  15374. *
  15375. * CALLS ADQ.
  15376.  
  15377.  
  15378. ADT BSS 0 ENTRY
  15379. SA1 ADTA SIMULATE DRIVER *DTJ* REQUEST
  15380. RJ ADQ ADD TO DRIVER QUEUE
  15381. EQ ESEX RETURN
  15382.  
  15383. ADTA VFD 12//TLX/DTJ+2000B,24/UDRC,24/0
  15384. ADR SPACE 4,10
  15385. ** ADR - ABORT FOR BAD DRIVER REQUEST.
  15386. *
  15387. * USES X - 6.
  15388. *
  15389. * CALLS ABT.
  15390.  
  15391.  
  15392. ADR BSS 0 ENTRY
  15393. SX6 3RADR
  15394. RJ ABT
  15395. EQ ESEX RETURN
  15396. AHU SPACE 4,10
  15397. ** AHU - SMFEX ACKNOWLEDGED HUNG-UP-PHONE.
  15398. *
  15399. * USES X - 1.
  15400. * A - 1.
  15401. *
  15402. * CALLS ADQ.
  15403.  
  15404.  
  15405. AHU BSS 0 ENTRY
  15406. SA1 AHUA SIMULATE DRIVER *HUP* REQUEST
  15407. RJ ADQ ADD TO DRIVER QUEUE
  15408. EQ ESEX RETURN
  15409.  
  15410. AHUA VFD 12//TLX/HUP+2000B,48/0
  15411. AIR SPACE 4,10
  15412. ** AIR - ACKNOWLEDGE INTERRUPT AND REASSIGN POT.
  15413. *
  15414. * ENTRY (B3) = POT POINTER.
  15415. *
  15416. * USES X - 2, 6.
  15417. * A - 2, 6.
  15418. * B - 4, 6.
  15419. *
  15420. * CALLS DPT, RDR.
  15421.  
  15422.  
  15423. AIR BSS 0 ENTRY
  15424. SA2 A0+VDCT ACKNOWLEDGE INTERRUPT
  15425. SX6 B1
  15426. LX6 58
  15427. BX6 X6+X2
  15428. SA6 A2
  15429. AIR1 SB4 0
  15430. ZR B3,ESEX IF NO POTS TO DROP
  15431. RJ DPT DROP POTS
  15432. EQ ESEX RETURN
  15433. AMS SPACE 4,10
  15434. ** AMS - ASSIGN MESSAGE.
  15435. *
  15436. * ENTRY (B3) = POT CHAIN.
  15437. *
  15438. * USES X - 1, 2, 4, 6, 7.
  15439. * A - 1, 2, 6, 7.
  15440. *
  15441. * CALLS QMS.
  15442.  
  15443.  
  15444. AMS BSS 0 ENTRY
  15445. IFNET AMS1
  15446. SA1 A0+VDCT
  15447. SA2 A0+VSTT
  15448. MX4 -12
  15449. MX7 14
  15450. LX7 12
  15451. BX6 X7*X1
  15452. NZ X6,ESEX IF DRIVER BUSY
  15453. BX7 -X4*X2
  15454. ZR X7,AMS1 IF NO STACKED MESSAGE
  15455. BX6 X4*X2 ASSIGN STACKED MESSAGE
  15456. SA6 A2
  15457. BX7 X1+X7
  15458. SA7 A1
  15459. EQ ESEX RETURN
  15460.  
  15461. AMS1 SX6 FRES ASK SMFEX FOR MORE OUTPUT
  15462. SX7 B2 TERMINAL NUMBER
  15463. LX6 48
  15464. LX7 36
  15465. BX6 X6+X7
  15466. SX7 B3 POT CHAIN
  15467. BX6 X6+X7 MESSAGE HEADER WORD
  15468. RJ QMS QUEUE MESSAGE FOR SMFEX
  15469. SX1 ERMO SET REQUEST MORE OUTPUT EVENT
  15470. RJ ASE ADVANCE STATE/EVENT TABLES
  15471. EQ ESEX RETURN
  15472. ASO SPACE 4,10
  15473. ** ASO - ASSIGN SMFEX OUTPUT TO TERMINAL.
  15474. *
  15475. * ENTRY (B4) = MESSAGE LENGTH.
  15476. *
  15477. * USES X - 6.
  15478. * B - 3.
  15479. *
  15480. * CALLS MVA.
  15481.  
  15482.  
  15483. ASO BSS 0 ENTRY
  15484. ZR B4,ESEX IF NULL OUTPUT
  15485. SA1 SSCR GET MESSAGE ADDRESS
  15486. SX6 X1+4
  15487. SB3 B0 ASK MVA TO GET POT CHAIN
  15488. RJ MVA ASSIGN OUTPUT
  15489. EQ ESEX RETURN
  15490. ATL SPACE 4,10
  15491. ** ATL - ABORT FOR BAD TLX TSEM.
  15492. *
  15493. * USES X - 6.
  15494. *
  15495. * CALLS ABT.
  15496.  
  15497.  
  15498. ATL BSS 0 ENTRY
  15499. SX6 3RATL
  15500. RJ ABT
  15501. EQ ESEX RETURN
  15502. ATO SPACE 4,10
  15503. ** ATO - SMFEX ACKNOWLEDGED TIME-OUT LOGOFF.
  15504. *
  15505. * EXIT (X1) = PARAMETER FOR *ADQ*.
  15506. *
  15507. * USES X - 1.
  15508. * A - 1.
  15509. *
  15510. * CALLS ADQ.
  15511.  
  15512.  
  15513. ATO BSS 0 ENTRY
  15514. SA1 ATOA SIMULATE DRIVER *TOT* REQUEST
  15515. RJ ADQ ADD TO DRIVER QUEUE
  15516. EQ ESEX RETURN
  15517.  
  15518.  
  15519. ATOA VFD 12//TLX/TOT+2000B,48/0
  15520. DBI SPACE 4,10
  15521. ** DBI - ASK DRIVER TO BEGIN INPUT.
  15522. *
  15523. * EXIT (X2) = PARAMETER FOR *EDR*.
  15524. *
  15525. * USES X - 1, 2, 3, 4.
  15526. * A - 1, 2, 3.
  15527. *
  15528. * CALLS EDR.
  15529.  
  15530.  
  15531. DBI BSS 0 ENTRY
  15532. IFNET DBI1
  15533. SA3 A0+VSTT CHECK FOR STACKED OUTPUT
  15534. MX4 -12
  15535. BX3 -X4*X3
  15536. NZ X3,AMS IF STACKED OUTPUT MESSAGE
  15537. DBI1 SA1 A0+VDCT
  15538. SA2 DBIA
  15539. BX3 X2*X1
  15540. NZ X3,ESEX IF INPUT BEGUN OR DRIVER BUSY
  15541. SA2 A2+B1
  15542. RJ EDR ENTER DRIVER REQUEST
  15543. EQ ESEX RETURN
  15544.  
  15545.  
  15546. DBIA CON 6400BS48+7777B
  15547. CON 4400BS48+/1TD/BGI
  15548. IES SPACE 4,10
  15549. ** IES - INVALID EVENT SEQUENCE.
  15550. *
  15551. * WHEN AN INVALID SEQUENCE OF EVENTS IS DETECTED, THE
  15552. * *SMF* SUBSYSTEM MAY NOT BE RESPONDING, THEREFORE DISCONNECT
  15553. * ALL USERS FROM THE MULTI-USER EDITOR.
  15554. *
  15555. * CALLS SID.
  15556.  
  15557.  
  15558. IES BSS 0 ENTRY
  15559. RJ SID DISCONNECT FROM *SMF* SUBSYSTEM
  15560. EQ ESEX RETURN
  15561. NSC SPACE 4,10
  15562. ** NSC - NOTIFY SMFEX OF CONNECTION REQUEST BY TLX.
  15563. *
  15564. * USES A - 1.
  15565. * X - 0, 1, 6, 7.
  15566. *
  15567. * CALLS QMS.
  15568.  
  15569.  
  15570. NSC BSS 0 ENTRY
  15571. SX6 FCSM FUNCTION CODE TO NOTIFY SMFEX
  15572. LX6 48
  15573. SX7 B2 TERMINAL NUMBER
  15574. LX7 36
  15575. BX6 X6+X7 GENERATE MESSAGE HEADER
  15576. RJ QMS QUEUE MESSAGE FOR SMFEX
  15577. SA1 A0+VUIT GET EJT ORDINAL
  15578. MX0 -12
  15579. BX6 -X0*X1
  15580. SA1 A0+VFST GET JSN
  15581. MX0 24
  15582. BX1 X1*X0
  15583. BX6 X6+X1 MERGE JSN AND EJT TO MAKE MESSAGE
  15584. RJ QMS QUEUE MESSAGE TO SMFEX
  15585. EQ ESEX RETURN
  15586. NSH SPACE 4,10
  15587. ** NSH - NOTIFY SMFEX PHONE HUNG UP.
  15588. *
  15589. * ENTRY (B3) = POT CHAIN.
  15590. *
  15591. * USES X - 6.
  15592. * B - 3, 4.
  15593. *
  15594. * CALLS DPT, QMS.
  15595.  
  15596.  
  15597. NSH BSS 0 ENTRY
  15598. SB4 0 SET TO DROP POT CHAIN
  15599. ZR B3,NSH1 IF NOT POTS TO DROP
  15600. RJ DPT DROP POT
  15601. NSH1 SX6 FHUP NOTIFY SMFEX OF HANG-UP
  15602. SX7 B2 TERMINAL NUMBER
  15603. LX6 48
  15604. LX7 36
  15605. BX6 X6+X7 MESSAGE HEADER WORD
  15606. RJ QMS QUEUE MESSAGE FOR SMFEX
  15607. EQ ESEX RETURN TO DRI
  15608. NSI SPACE 4,10
  15609. ** NSI - NOTIFY SMFEX OF INTERRUPT FROM TERMINAL.
  15610. *
  15611. * EXIT (B3) = POT CHAIN.
  15612. * TO *AIR*.
  15613. *
  15614. * USES X - 6, 7.
  15615. *
  15616. * CALLS DAP, QMS, SSP.
  15617.  
  15618.  
  15619. NSI BSS 0 ENTRY
  15620. RJ DAP DE-ASSIGN OUTPUT POTS
  15621. RJ SSP RESTORE PARAMETERS
  15622. SX6 FPUB
  15623. SX7 B2 TERMINAL NUMBER
  15624. LX6 48
  15625. LX7 36
  15626. BX6 X6+X7 MESSAGE HEADER WORD
  15627. RJ QMS QUEUE MESSAGE FOR SMFEX
  15628. EQ AIR GO ACKNOWLEDGE INTERRUPT
  15629. PCL SPACE 4,10
  15630. ** PCL - PROCESS COMMAND LINE FROM TERMINAL.
  15631. *
  15632. * ENTRY (B3) = POT CHAIN.
  15633. *
  15634. * USES X - 1, 2, 6, 7.
  15635. * A - 1, 6.
  15636. *
  15637. * CALLS QMS.
  15638.  
  15639.  
  15640. PCL BSS 0 ENTRY
  15641. SX6 FCLI PASS COMMAND TO SMFEX
  15642. SX7 B2 TERMINAL NUMBER
  15643. LX6 48
  15644. LX7 36
  15645. BX6 X6+X7
  15646. SX7 B3 POT CHAIN
  15647. BX6 X6+X7 MESSAGE HEADER WORD
  15648. RJ QMS QUEUE MESSAGE FOR SMFEX
  15649. SA1 A0+VDCT RESET INPUT REQUESTED
  15650. SX2 B1
  15651. LX2 56-0
  15652. BX6 -X2*X1
  15653. SA6 A1
  15654. EQ ESEX RETURN
  15655. RDR SPACE 4,10
  15656. ** RDR - RETURN DRIVER REQUEST TO *PCS* PROCESSING.
  15657. *
  15658. * CALLS PCS, SSP.
  15659.  
  15660.  
  15661. RDR BSS 0 ENTRY
  15662. SA5 SSPA RESTORE REQUEST REGISTERS
  15663. RJ SSP
  15664. RJ PCS EXECUTE PROCESSOR
  15665. EQ ESEX RETURN
  15666. TITLE SMFIF - SUBROUTINES.
  15667. ** ADQ - ADD REQUEST TO DRIVER QUEUE.
  15668. *
  15669. * ENTRY (B2) = TERMINAL NUMBER.
  15670. * (X1) = SIMULATED DRIVER FUNCTION REQUEST.
  15671. *
  15672. * EXIT REQUEST ADDED TO FIRST DRIVER REQUEST QUEUE.
  15673. *
  15674. * USES X - 2, 3, 4, 5, 6, 7.
  15675. * A - 2, 3, 4, 5, 6, 7.
  15676.  
  15677.  
  15678. ADQ SUBR ENTRY/EXIT
  15679. SX6 B2 ADD TERMINAL NUMBER TO DRIVER REQUEST
  15680. BX6 X1+X6
  15681. SA2 /IAFEX4/NDSA GET NETWORK DRIVER STACK ADDRESS
  15682. IFNET ADQ3 IF NETWORK TERMINAL
  15683. SA2 VDRL SEARCH FOR DRIVER QUEUE
  15684. MX3 -12
  15685. SX5 B2 CURRENT TERMINAL
  15686. ADQ1 NG X2,ADQ5 IF END OF DRIVER STATUS WORDS
  15687. BX4 -X3*X2 FIRST TERMINAL NUMBER FOR THIS DRIVER
  15688. IX7 X5-X4
  15689. PL X7,ADQ2 IF FIRST TERMINAL .LE. CURRENT TERMINAL
  15690. SA2 A2+1 NEXT DRIVER STATUS WORD
  15691. EQ ADQ1 PROCESS NEXT WORD
  15692.  
  15693. ADQ2 BX7 X2
  15694. AX2 24 STACK ADDRESS
  15695. AX7 12 COMPUTE LAST TERMINAL NUMBER+1
  15696. BX7 -X3*X7
  15697. IX7 X4+X7
  15698. IX7 X7-X5 COMPUTE LAST TERMINAL-CURRENT TERMINAL
  15699. PL X7,ADQ3 IF CORRECT DRIVER STATUS WORD
  15700. SA2 A2+1 NEXT DRIVER STATUS WORD
  15701. EQ ADQ1 PROCESS NEXT WORD
  15702.  
  15703. ADQ3 SX7 X2 STACK ADDRESS
  15704. SA2 X7+B1 READ FIRST
  15705. SA3 A2+B1 READ IN
  15706. SA4 A3+B1 READ OUT
  15707. BX5 X4-X2
  15708. NZ X5,ADQ4 IF OUT .NE. FIRST
  15709. SA5 A4+B1 READ LIMIT
  15710. BX4 X5
  15711. ADQ4 SX7 X4-1 DECREMENT OUT
  15712. BX3 X3-X7
  15713. SA6 X7 STORE REQUEST
  15714. SA7 A4 UPDATE OUT
  15715. NZ X3,ADQX IF NO DRIVER STACK OVERFLOW
  15716. ADQ5 SX6 3RADQ
  15717. EQ ABT+1 ABORT UNCONDITIONALLY
  15718. ASE SPACE 4,20
  15719. ** ASE - ADVANCE STATE/EVENT TABLES.
  15720. *
  15721. * ENTRY (X1) = EVENT CODE.
  15722. * (B2) = PARAMETER TO STATE/EVENT PROCESSOR.
  15723. * (B3) = PARAMETER TO STATE/EVENT PROCESSOR.
  15724. * (B4) = PARAMETER TO STATE/EVENT PROCESSOR.
  15725. *
  15726. * EXIT (B2) = UNCHANGED.
  15727. * (B3) = UNCHANGED.
  15728. * (B4) = UNCHANGED.
  15729. * (B6) = PROCESSOR ADDRESS.
  15730. * (B6) .LE. 0 IF NO PROCESSOR FOR THIS EVENT.
  15731. * (B6) .LT. 0 IF NO PROCESSOR AND INCORRECT EVENT.
  15732. *
  15733. * USES X - 1, 2, 3, 4, 6.
  15734. * A - 1, 2, 6.
  15735. * B - 5, 6.
  15736.  
  15737.  
  15738. ASE SUBR ENTRY/EXIT
  15739. SA2 A0+VFST EXTRACT STATE FROM VFST
  15740. MX3 -6
  15741. BX6 X2 SAVE VFST FOR SETTING NEW STATE
  15742. AX2 18
  15743. BX2 -X3*X2
  15744. SX4 NMEV CALCULATE ENTRY IN STATE/EVENT TABLES
  15745. IX4 X2*X4
  15746. IX4 X4+X1
  15747. SB5 X4+
  15748. SA1 TSET+B5 GET STATE/EVENT ENTRY
  15749. SB6 X1 SET STATE/EVENT HANDLER ADDRESS
  15750. LX3 18-0 SET NEW STATE IN VFST
  15751. BX1 -X3*X1
  15752. BX6 X3*X6
  15753. BX6 X1+X6
  15754. SA6 A2
  15755. EQ ASEX RETURN
  15756. GMQ SPACE 4,10
  15757. ** GMQ - GET MESSAGE FROM SEND-TO-SMFEX QUEUE.
  15758. *
  15759. * EXIT (X7) = 0 IF QUEUE EMPTY.
  15760. * (X6) = MESSAGE IF (X7) .NE. 0.
  15761. *
  15762. * USES X - 1, 3, 4, 6, 7.
  15763. * A - 1, 3, 4, 7.
  15764.  
  15765.  
  15766. GMQ1 SX7 X3+B1 UPDATE STACK OUT POINTER
  15767. BX6 X4
  15768. SA7 A3+
  15769.  
  15770. GMQ SUBR ENTRY/EXIT
  15771. SA1 QMSA+1 READ IN
  15772. SA3 A1+B1 READ OUT
  15773. IX7 X3-X1 OUT-IN
  15774. SA4 X3 READ WORD
  15775. NG X7,GMQ1 IF NO WRAPAROUND
  15776. SA1 A3+B1 READ LIMIT
  15777. SX6 X1
  15778. ZR X7,GMQX IF BUFFER EMPTY
  15779. SX7 X3+B1 ADVANCE OUT
  15780. IX1 X7-X6
  15781. NZ X1,GMQ1 IF OUT .NE. LIMIT
  15782. SA1 A1-3 READ FIRST
  15783. SX3 X1-1
  15784. EQ GMQ1 UPDATE QUEUE AND RETURN
  15785. ISM SPACE 4,10
  15786. ** ISM - IDLE SCREEN MANAGEMENT FACILITY.
  15787. *
  15788. * EXIT SHUTDOWN MESSAGE FORCIBLY TRANSMITTED.
  15789. *
  15790. * USES X - 1, 2, 6, 7.
  15791. * A - 1, 2, 6.
  15792. *
  15793. *
  15794. * CALLS EUC, SFC.
  15795.  
  15796.  
  15797. ISM SUBR ENTRY/EXIT
  15798. SA2 ASMF
  15799. ZR X2,ISMX IF SMF NEVER CONNECTED TO IAF
  15800. SA1 ISMA
  15801. BX6 X1
  15802. BX7 X2
  15803. RJ SFC SFCALL TO SMF
  15804. RJ EUC RELEASE SMF CONNECTION STATE
  15805. SX6 B0
  15806. SA6 ASMF CLEAR SMF ACTIVE WORD
  15807. EQ ISMX RETURN
  15808.  
  15809.  
  15810. ISMA VFD 6/0,12/1,18/0,18/ISMB,6/WRIT
  15811. ISMB VFD 12/FIIN,12/0,18/0,18/1
  15812. QMS SPACE 4,15
  15813. ** QMS - QUEUE MESSAGE TO SEND TO SMFEX.
  15814. *
  15815. * ENTRY (X6) = MESSAGE HEADER WORD.
  15816. *
  15817. * EXIT MESSAGE ADDED TO QUEUE.
  15818. *
  15819. * USES X - 1, 2, 3, 4, 6, 7.
  15820. * A - 1, 2, 3, 6, 7.
  15821. *
  15822. * CALLS SID.
  15823.  
  15824.  
  15825. QMS2 SA6 X1 STORE MESSAGE HEADER IN QUEUE
  15826. SA7 A1 UPDATE IN POINTER
  15827.  
  15828. QMS SUBR ENTRY/EXIT
  15829. SA1 QMSA+1 READ IN
  15830. SA3 A1+B1 READ OUT
  15831. SX7 X1+1 IN+1
  15832. IX4 X7-X3 IN+1-OUT
  15833. NG X4,QMS2 IF NO WRAPAROUND
  15834. SA3 A3+B1 READ LIMIT
  15835. SX2 X3
  15836. ZR X4,QMS1 IF BUFFER FULL
  15837. IX4 X7-X2 IN+1-LIMIT
  15838. NZ X4,QMS2 IF IN+1 .NE. LIMIT
  15839. SA3 A1-B1 READ FIRST
  15840. SA2 A1+B1 READ OUT
  15841. SX7 X3 IN+1
  15842. IX4 X7-X2
  15843. NZ X4,QMS2 IF IN+1 .NE. OUT
  15844. QMS1 RJ SID TREAT MESSAGE STACK OVERFLOW AS DROPOUT
  15845. EQ QMSX RETURN
  15846.  
  15847.  
  15848. QMSA CON QMSB FIRST
  15849. CON QMSB IN
  15850. CON QMSB OUT
  15851. CON QMSB+NWSS LIMIT
  15852. QMSB BSSZ NWSS SEND-TO-SMFEX MESSAGE STACK
  15853. RDB SPACE 4,15
  15854. ** RDB - RECORD DEBUG BUFFER MESSAGE.
  15855. *
  15856. * ENTRY (A1) = ADDRESS OF SFCALL MESSAGE HEADER.
  15857. * (X1) = SFCALL MESSAGE HEADER.
  15858. *
  15859. * EXIT SFCALL MESSAGE RECORDED IN DEBUG BUFFER.
  15860. *
  15861. * USES X - 1, 2, 6.
  15862. * A - 1, 2, 6.
  15863. * B - 4, 5, 6, 7.
  15864.  
  15865.  
  15866. .RDB IFNE NWDB,0
  15867. RDB3 SX6 B6 STORE NEW DEBUGGING BUFFER POINTER
  15868. SA6 RDBA
  15869. SA1 B4 RESTORE MESSAGE HEADER
  15870.  
  15871. RDB SUBR ENTRY/EXIT
  15872. SB4 A1 SAVE MESSAGE HEADER ADDRESS
  15873. SB7 X1 MESSAGE LENGTH
  15874. GE B7,B1,RDB0 IF MESSAGE LENGTH REASONABLE
  15875. SB7 B1
  15876. RDB0 SA2 RDBA DEBUGGING BUFFER POINTER
  15877. SB6 X2
  15878. SB5 RDBB+RDBBL DEBUGGING BUFFER LWA + 1
  15879. RDB1 BX6 X1 STORE MESSAGE WORD IN BUFFER
  15880. SA6 B6
  15881. SB6 B6+B1 ADVANCE BUFFER POINTER
  15882. SB7 B7-B1 DECREMENT MESSAGE LENGTH
  15883. GT B5,B6,RDB2 IF NO WRAPAROUND
  15884. SB6 RDBB RESET POINTER TO FWA
  15885. RDB2 ZR B7,RDB3 IF MESSAGE TRANSFERRED
  15886. SA1 A1+B1
  15887. EQ RDB1 PROCESS NEXT WORD
  15888.  
  15889.  
  15890. RDBA CON RDBB BUFFER POINTER
  15891. RDBB BSSZ NWDB SMFIF DEBUGGING BUFFER
  15892. RDBBL EQU *-RDBB DEBUGGING BUFFER LENGTH
  15893. .RDB ENDIF
  15894. RMS SPACE 4,15
  15895. ** RMS - RECEIVE MESSAGE FROM SMFEX.
  15896. *
  15897. * ENTRY (SSCR) = ADDRESS OF MESSAGE RECEIVED.
  15898. *
  15899. * USES X - 0, 1, 2, 6, 7.
  15900. * A - 1.
  15901. * B - 2, 3, 4, 5.
  15902. *
  15903. * MACROS TTADD.
  15904. *
  15905. * CALLS ESE, RDB, SFC, SID.
  15906.  
  15907.  
  15908. RMS SUBR ENTRY/EXIT
  15909. SA1 SSCR GET MESSAGE ADDRESS
  15910. SA1 X1+3 MESSAGE HEADER
  15911. IFNE NWDB,0,1
  15912. RJ RDB RECORD MESSAGE IN DEBUGGING BUFFER
  15913. SB5 12 SPLIT OFF PARAMETERS FROM MESSAGE HEADER
  15914. MX0 12
  15915. SB4 X1-1 B4 = BUFFER LENGTH MINUS 1
  15916. BX2 X0*X1
  15917. LX2 X2,B5
  15918. SB3 X2 B3 = FUNCTION CODE
  15919. LX2 X1,B5
  15920. BX2 X0*X2
  15921. LX2 X2,B5
  15922. SB2 X2 B2 = TERMINAL NUMBER
  15923. TTADD X2,A0,X3,X4 A0 = TERMINAL TABLE ADDRESS
  15924. SB5 B3-TSIFL-1
  15925. PL B5,RMS0 IF INCORRECT FUNCTION CODE
  15926. SA1 TSIF+B3 GET EVENT SYMBOL FOR FUNCTION
  15927. NG X1,RMSX IF NEW *SMF* INITIATION
  15928. RJ ESE EXECUTE STATE/EVENT HANDLER
  15929. SX6 ENDT SEND END OF TASK MESSAGE
  15930. SA1 /SMFIF/ASMF
  15931. BX7 X1
  15932. RJ SFC SEND SFCALL
  15933. ZR X1,RMSX IF NORMAL RETURN
  15934. RMS0 RJ SID DISCONNECT FROM *SMF* SUBSYSTEM
  15935. EQ RMSX RETURN
  15936.  
  15937.  
  15938. TSIF INDEX CON,NMSF,0 TABLE OF EVENTS FOR SMFEX FUNCTIONS
  15939. INDEX ,FSIN,( -1 )
  15940. INDEX ,FAOT,( EAOT )
  15941. INDEX ,FAOI,( EAOI )
  15942. INDEX ,FDSC,( EDSC )
  15943. TSIFL EQU *-TSIF
  15944. SID SPACE 4,10
  15945. ** SID - SMFEX DROPOUT DETECTED.
  15946. *
  15947. * X - 0, 1, 2, 3, 4, 5, 6.
  15948. * A - 1, 6.
  15949. * B - 2, 3, 4, 7.
  15950. *
  15951. * MACROS TTADD.
  15952. *
  15953. * CALLS ADQ, DPT, GMQ, ISM.
  15954.  
  15955.  
  15956. SID SUBR
  15957. BX6 X6-X6 CLEAR MESSAGE BUFFERS
  15958. SA6 SMSB
  15959.  
  15960. * EMPTY SEND-TO-SMFEX QUEUE AND DROP POTS.
  15961.  
  15962. SID1 SB4 0
  15963. RJ GMQ GET MESSAGE FROM QUEUE
  15964. ZR X7,SID2 IF QUEUE EMPTY
  15965. SB3 X6
  15966. MX0 12
  15967. BX1 X0*X6
  15968. LX1 12
  15969. SX1 X1-FCSM
  15970. NZ X1,SID1.1 IF NOT A CONNECTION MESSAGE
  15971. RJ GMQ SKIP PAST MESSAGE TEXT
  15972. EQ SID1 LOOP UNTIL QUEUE IS EMPTY
  15973.  
  15974. SID1.1 ZR B3,SID1 IF NO POT WITH MESSAGE
  15975. RJ DPT DROP POT
  15976. EQ SID1 LOOP TIL QUEUE EMPTY
  15977.  
  15978. * RETURN ALL TERMINALS WITH SMFIF ACTIVITY TO IDLE STATE.
  15979.  
  15980. SID2 SA1 VTTP GET TERMINAL TABLE POINTERS
  15981. SX2 X1 TERMINAL TABLE LWA+1
  15982. AX1 24
  15983. IX3 X2-X1
  15984. SX4 VTTL
  15985. IX6 X3/X4 LAST TERMINAL NUMBER
  15986. SA6 SIDA
  15987. SB2 VPST FIRST REAL TERMINAL
  15988. SID3 MX0 -6 MASK FOR SMFIF STATE CODE IN VFST
  15989. LX0 18-0
  15990. TTADD B2,A0,X2,X3 GET TERMINAL TABLE ADDRESS
  15991. SA1 A0+VFST GET SMFIF STATE CODE
  15992. BX6 -X0*X1
  15993. ZR X6,SID7 IF NO SMFIF ACTIVITY ON THIS TERMINAL
  15994. LX6 0-18
  15995. SX5 X6-SHUP
  15996. SA1 AHUA
  15997. ZR X5,SID4 IF STATE IS *SHUP*
  15998. SX5 X6-STOT
  15999. SA1 ATOA
  16000. NZ X5,SID5 IF STATE NOT *STOT*
  16001. SID4 RJ ADQ SIMULATE DRIVER *HUP* OR *TOT* REQUEST
  16002. SID5 SA1 A0+VFST
  16003. BX6 X0*X1
  16004. SA6 A1
  16005. ERRNZ SIDL CODE ABOVE ASSUMES *SIDL* = 0
  16006. SID7 SB2 B2+B1 ADVANCE TO NEXT TERMINAL
  16007. SA1 SIDA GET LAST TERMINAL NUMBER
  16008. SB7 X1
  16009. LE B2,B7,SID3 IF MORE TERMINALS TO BE RESET
  16010. RJ ISM IDLE *SMF* SUBSYSTEM
  16011. EQ SIDX EXIT
  16012.  
  16013.  
  16014. SIDA CON 0 LAST TERMINAL NUMBER
  16015. SMS SPACE 4,10
  16016. ** SMS - SEND MESSAGE TO SMFEX.
  16017. *
  16018. * ENTRY (SMSB) = 0 IF READY TO SEND QUEUED MESSAGE, OTHERWISE
  16019. * CURRENT MESSAGE HEADER.
  16020. *
  16021. * EXIT SAME AS ENTRY.
  16022. *
  16023. * USES X - 0, 1, 2, 5, 6, 7.
  16024. * A - 1, 2, 6, 7.
  16025. * B - 2, 3, 4, 5, 6.
  16026. *
  16027. * CALLS DPT, GMQ, GPL, QMS, RDB, SFC, SID.
  16028.  
  16029.  
  16030. SMS11 RJ SID DISCONNECT FROM *SMF* SUBSYSTEM
  16031.  
  16032. SMS SUBR ENTRY/EXIT
  16033. SA1 SMSB GET BUFFER HEADER
  16034. ZR X1,SMS3 IF BUFFER EMPTY
  16035. SMS0 SA1 SMSC READ BUFFER INTERLOCK WORD
  16036. SA2 ASMF
  16037. BX7 X2
  16038. BX6 X1
  16039. RJ SFC SEND SFCALL
  16040. NZ X1,SMS11 IF ABNORMAL RETURN
  16041. SA2 SMSD CHECK BUFFER ADDRESS
  16042. NZ X2,SMSX IF BUFFER ALREADY USED
  16043. SA1 SMSB GET MESSAGE LENGTH
  16044. MX0 -12
  16045. BX6 -X0*X1
  16046. SA1 SMSA GET SFCALL DESCRIPTOR
  16047. LX6 42
  16048. BX6 X6+X1 MERGE LENGTH INTO DESCRIPTOR
  16049. RJ SFC SFCALL TO WRITE MESSAGE
  16050. NZ X1,SMS11 IF ABNORMAL RETURN
  16051. .RDB IFNE NWDB,0
  16052. SA1 SMSB
  16053. MX0 1 FLAG HEADER AS IAFEX-TO-SMFEX
  16054. BX1 X0+X1
  16055. RJ RDB RECORD MESSAGE IN DEBUGGING BUFFER
  16056. .RDB ENDIF
  16057. BX6 X6-X6 CLEAR BUFFER TO INDICATE MESSAGE SENT
  16058. SA6 SMSB
  16059. SMS3 RJ GMQ GET MESSAGE FROM SMF QUEUE
  16060. ZR X7,SMSX IF QUEUE EMPTY
  16061. SB3 X6 GET POSSIBLE POT POINTER
  16062. SX5 B3 GET POSSIBLE POT ADDRESS
  16063. LX5 3
  16064. TB4 X5,VBMP
  16065. MX0 -12 REMOVE POT POINTER FIELD
  16066. BX6 X6*X0
  16067. MX0 12 TEST FOR MESSAGE EMBEDDED IN QUEUE
  16068. BX7 X6*X0
  16069. LX7 12
  16070. SX7 X7-FCSM
  16071. ZR X7,SMS9 IF CONNECTION MESSAGE
  16072. SX0 B1 SET WORD COUNT=1 FOR NO POT POINTER
  16073. BX6 X6+X0
  16074. SA6 SMSB STORE MESSAGE HEADER IN BUFFER
  16075. ZR B3,SMS0 IF NO POT POINTER WITH MESSAGE
  16076.  
  16077. * TRANSFER POT CONTENTS TO SMFEX MESSAGE BUFFER.
  16078.  
  16079. SX7 B3 SAVE POT POINTER FOR FIRST POT
  16080. MX2 -12
  16081. LX6 0-36 GET TERMINAL NUMBER
  16082. BX6 -X2*X6
  16083. SB2 X6 (B2) = TERMINAL NUMBER
  16084. SB5 0 INITIALIZE WORD COUNT
  16085. SB6 B4+VCPC-1 SET LIMIT ADDRESS FOR FIRST POT
  16086. SMS4 SA1 B4 FETCH NEXT WORD OF INPUT
  16087. SB5 B5+B1 ADVANCE WORD COUNT
  16088. SB4 B4+B1 ADVANCE FETCH ADDRESS
  16089. BX6 X1
  16090. SA6 A6+B1 ADVANCE STORE ADDRESS
  16091. BX0 -X2*X1
  16092. ZR X0,SMS5 IF END OF LINE
  16093. LE B4,B6,SMS4 IF NOT END-OF-POT
  16094. SX1 B5-MAXB+VCPC
  16095. PL X1,SMS6 IF LESS THAN ONE POT SPACE AVAILABLE
  16096. RJ GPL GET NEXT POT
  16097. SB6 B4+VCPC-1 SET LIMIT ADDRESS FOR NEW POT
  16098. NZ B3,SMS4 IF NOT END OF CHAIN
  16099. SMS5 SB3 0 FORCE DROPPING OF WHOLE POT CHAIN
  16100. SMS6 SA1 SMSB ADD WORD COUNT TO MESSAGE HEADER
  16101. SX6 B5+B1
  16102. MX0 42
  16103. BX1 X1*X0
  16104. BX6 X1+X6
  16105. SA6 A1 STORE MESSAGE HEADER
  16106. BX1 X7 SAVE POINTER TO FIRST POT
  16107. ZR B3,SMS8 IF NO MORE POTS TO REQUEUE
  16108. SA7 SMSE SAVE FIRST POT POINTER
  16109. SX6 B3 SAVE LAST POT POINTER
  16110. SA6 SMSF
  16111. RJ GPL GET POT POINTER TO REQUEUE
  16112. ZR B3,SMS7 IF NO MORE POTS BEYOND LAST SENT
  16113. SX6 FCLI FUNCTION CODE TO REQUEUE REMAINING POTS
  16114. SX7 B2 TERMINAL NUMBER
  16115. LX6 48
  16116. LX7 36
  16117. BX6 X6+X7
  16118. SX7 B3 POT CHAIN
  16119. BX6 X6+X7 MESSAGE HEADER WORD
  16120. RJ QMS QUEUE MESSAGE FOR SMFEX
  16121. SMS7 SA1 SMSF RESTORE LAST POT TO DROP
  16122. SB3 X1
  16123. SA1 SMSE RESTORE FIRST POT TO DROP
  16124. SMS8 SB4 B3 LAST POT TO DROP
  16125. SB3 X1 FIRST POT TO DROP
  16126. RJ DPT DROP POTS
  16127. EQ SMS0 GO SEND MESSAGE TO SMFEX
  16128.  
  16129. SMS9 SX0 B1+B1 SET WORD COUNT=2 FOR CONNECTION MESSAGE
  16130. BX6 X6+X0
  16131. SA6 SMSB STORE MESSAGE HEADER
  16132. RJ GMQ GET MESSAGE TEXT FROM QUEUE
  16133. NZ X7,SMS10 IF TEXT AVAILABLE NORMALLY
  16134. MX6 0 NULL TEXT IF NONE IN QUEUE
  16135. SMS10 SA6 A6+B1 STORE MESSAGE TEXT
  16136. EQ SMS0 GO SEND MESSAGE TO SMFEX
  16137.  
  16138.  
  16139. SMSA VFD 6/0,12/0,18/0,18/SMSB,6/WRIT
  16140. SMSB BSSZ MAXB
  16141. SMSC VFD 6/0,12/1,18/0,18/SMSD,6/READ
  16142. SMSD CON 0
  16143. SMSE CON 0 SAVE FIRST POT POINTER
  16144. SMSF CON 0 SAVE LAST POT POINTER
  16145. SPACE 4,10
  16146. ** BUFFERS FOR SCP INTERFACE.
  16147.  
  16148.  
  16149. ASMF CON 0 ACTIVE SMF WORD
  16150. BSMF BSS MAXB
  16151. QUAL *
  16152. SPACE 4
  16153. *CALL COMCCDD
  16154. *CALL COMCCFD
  16155. *CALL COMCCPM
  16156. *CALL COMCDXB
  16157. *CALL COMCSFN
  16158. *CALL COMCSYS
  16159. *CALL COMCZTB
  16160. SPACE 4
  16161. USE BUFFERS
  16162. TINST BSS 0
  16163. LIST -R
  16164. TINST HERE
  16165. LIST R
  16166. TINSTL EQU *-TINST
  16167. PRS TITLE IAFEX1 VALIDATION PRESET.
  16168. PRS SPACE 4,10
  16169. ** PRS - PRESET.
  16170. *
  16171. * *PRS* ABORTS THE CALLER OF *IAFEX1*.
  16172. * *PRS* WILL BE EXECUTED ONLY IF *IAFEX1* IMPROPERLY LOADED.
  16173. *
  16174. * MACROS ABORT, MESSAGE.
  16175.  
  16176.  
  16177. PRS MESSAGE (=C* USER ACCESS NOT VALID.*),,R
  16178. ABORT
  16179. TTL IAFEX2 - TTY EXECUTIVE EXIT PROCESSOR.
  16180. EJECT
  16181. QUAL IAFEX2
  16182. IDENT IAFEX2,EXI,EXI,0,0
  16183. BASE DECIMAL
  16184. *COMMENT IAFEX - EXIT PROCESSOR.
  16185. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  16186. IAFEX2 SPACE 4,10
  16187. ***** IAFEX2 - TTY EXECUTIVE EXIT PROCESSOR.
  16188. * P.D. FARRELL. 77/03/17.
  16189. *
  16190. *
  16191. * IAFEX2 IS CALLED BY JOB ADVANCEMENT *EXIT*
  16192. * COMMAND PROCESSING TO INITIATE THE TERMINATION OF THE
  16193. * INTERACTIVE TTY EXECUTIVE. THIS OVERLAY HAS BEEN MADE
  16194. * SEPARATE FROM THE MAIN TERMINATION PROCESSOR IN
  16195. * ORDER THAT IT MAY PROCESS A TERMINATION CORE DUMP
  16196. * WITHIN THE MINIMUM AMOUNT OF PROCESSOR CORE.
  16197. *
  16198. * IAFEX2 IS LOADED INTO AND EXECUTES WITHIN A
  16199. * SMALL BUFFER AREA ALLOCATED WITHIN THE MAIN PROCESSOR
  16200. * FIELD LENGTH. TO PREVENT OVERWRITING OF MAIN PROCESSOR
  16201. * CODE AND DATA, THE LENGTH OF THIS BUFFER, DEFINED AS
  16202. * *EXIBUF* IN THE MAIN PROCESSOR OVERLAY, SHOULD BE MAIN-
  16203. * TAINED AT THE LENGTH OF THE EXIT OVERLAY PLUS ONE.
  16204. IAFEX2 SPACE 4
  16205. *** IAFEX2 EXIT PROCESSING PERFORMS THE FOLLOWING FUNCTIONS:
  16206. *
  16207. * - DUMPS EXECUTIVE PROCESSOR CORE IF NOT OPERATOR
  16208. * DROP AND SENSE SWITCH 5 IS SET.
  16209. * - LOADS AND TRANSFERS CONTROL TO THE TERMINATION
  16210. * PROCESSOR, *IAFEX3*.
  16211. SPACE 4,10
  16212. ** PROGRAMS CALLED:
  16213. *
  16214. * DMD CORE DUMP PROCESSOR.
  16215. * CPM CONTROL POINT MANAGER.
  16216. * OVL OVERLAY LOADER.
  16217. * IAFEX3 TTY EXECUTIVE TERMINATION PROCESSOR.
  16218. TITLE MAIN PROCESSOR.
  16219. ORG EXIBUF+1
  16220. EXI SPACE 4,10
  16221. ** EXI - NETWORK IAF EXIT PROCESSOR.
  16222.  
  16223.  
  16224. EXI BSS 0 ENTRY
  16225. SB1 1 SET CONSTANT B1=1
  16226. SX6 //RPV2 SET REPRIEVE PROCESSING
  16227. SA6 //RPVB+1
  16228. SX6 B0+ CLEAR ANY LEFTOVER SYSTEM REQUEST
  16229. SA6 //RPVB+5
  16230. REPRIEVE //RPVB,SETUP,37B
  16231. MESSAGE EXIB,1,R ISSUES DUMP MESSAGE TO *MS1W*
  16232. GETJCR EXIA READ JOB CONTROL REGISTERS
  16233. SA1 EXIA
  16234. SA2 B0 READ SENSE SWITCHES
  16235. AX1 54 CHECK ERROR FLAG
  16236. ZR X1,EXI0 IF NO ERROR FLAG (RECOVERY DEADSTART)
  16237. SX1 X1-ODET
  16238. NZ X1,EXI1 IF NOT *OPERATOR DROP*
  16239.  
  16240. * DUMP FIELD LENGTH ON *OPERATOR DROP* IF SSW4 IS SET.
  16241.  
  16242. EXI0 LX2 59-5-4 CHECK SSW4
  16243. NG X2,EXI2 IF SET
  16244. EQ EXI3
  16245.  
  16246. * DUMP FIELD LENGTH ON OTHER THAN *OPERATOR DROP*
  16247. * IF SSW5 IS SET.
  16248.  
  16249. EXI1 LX2 59-5-5 CHECK SSW5
  16250. PL X2,EXI3 IF NOT SET
  16251. EXI2 SYSTEM DMD,R,A0,0 DUMP FIELD LENGTH
  16252. SYSTEM DMM,R,0,0
  16253.  
  16254. * LOAD AND EXECUTE TERMINATION PROCESSOR.
  16255.  
  16256. EXI3 OVERLAY (=6LIAFEX3),00,S
  16257.  
  16258.  
  16259. EXIA CON 0
  16260. EXIB DATA 10LDUMPING CE
  16261. DATA 10LNTRAL MEMO
  16262. DATA 3LRY.
  16263. TITLE SUBROUTINES.
  16264. SYS= SPACE 4,10
  16265. ** SYS= - PROCESS SYSTEM REQUEST.
  16266. *
  16267. * USED IN PLACE OF SYSTEM COMMON DECK *COMCSYS* IN
  16268. * ORDER TO REDUCE CORE REQUIREMENTS.
  16269. *
  16270. * ENTRY (X6) = SYSTEM REQUEST.
  16271. *
  16272. * EXIT REQUEST ISSUED.
  16273. *
  16274. * USES A - 1, 6.
  16275. * X - 1, 6.
  16276.  
  16277.  
  16278. SYS1 XJ
  16279.  
  16280. SYS= SUBR ENTRY/EXIT
  16281. SA6 B1 STORE REQUEST
  16282. EQ SYS1 MAKE REQUEST
  16283. SPACE 4,10
  16284. ** COMMON DECKS.
  16285.  
  16286.  
  16287. *CALL COMCCPM
  16288. *CALL COMCOVL
  16289. SPACE 4
  16290. USE END
  16291. EXIL EQU *-EXI DEFINE OVERLAY LENGTH
  16292. TTL IAFEX3 - TTY EXECUTIVE TERMINATION.
  16293. EJECT
  16294. QUAL IAFEX3
  16295. IDENT IAFEX3,TER,TER,0,0
  16296. *COMMENT IAFEX - EXECUTIVE TERMINATION.
  16297. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  16298. BASE DECIMAL
  16299. SPACE 4,10
  16300. *** TTY EXECUTIVE TERMINATION.
  16301. * R.E. TATE 70/04/01.
  16302. * P.D. FARRELL 77/03/17.
  16303. * L. K. TUTTLE 81/01/15.
  16304. SPACE 4
  16305. *** IAFEX3 PERFORMS TERMINATION PROCESSING FOR IAFEX.
  16306. * THIS INCLUDES THE FOLLOWING:
  16307. *
  16308. * 1) DETACHING ACTIVE USERS
  16309. * 2) ISSUING STATISTICAL INFORMATION.
  16310. SPACE 4
  16311. *** DAYFILE MESSAGES.
  16312. *
  16313. * SEE LISTING.
  16314. SPACE 4
  16315. *** OPERATOR MESSAGES.
  16316. *
  16317. * NONE.
  16318. SPACE 4
  16319. *** PROGRAMS CALLED.
  16320. *
  16321. * CIO - CIRCULAR INPUT/OUTPUT.
  16322. * CPM - CONTROL POINT MANAGER.
  16323. * DMP - DUMP CORE.
  16324. * LFM - LOCAL FILE MANAGER.
  16325. * MSG - ISSUE DAYFILE MESSAGE.
  16326. * 1TA - IAFEX AUXILIARY.
  16327. TER TITLE TER - MAIN PROCESSOR.
  16328. TER SPACE 4,10
  16329. ** TER - MAIN PROCESSOR.
  16330.  
  16331.  
  16332. ORG ASM
  16333. TER BSS 0
  16334. SB1 1
  16335. GETSSID TERA GET SUBSYSTEM IDENTIFICATION
  16336. SA1 TERA
  16337. SX0 X1-IFSI
  16338. ZR X0,TER1 IF IAF SUBSYSTEM
  16339. SX0 X1-RDSI
  16340. NZ X0,TER6 IF NOT RDF SUBSYSTEM
  16341. TER1 GETJO TERA GET JOB ORIGIN TYPE
  16342. SA1 TERA
  16343. MX2 -6
  16344. BX1 -X2*X1
  16345. NZ X1,TER6 IF NOT SYSTEM ORIGIN
  16346. MESSAGE (=C*TERMINATION IN PROGRESS.*),,R
  16347. MESSAGE (=C*SESB, IAF.*),5
  16348. RTIME RTIM GET CURRENT REAL TIME
  16349. GETJCR TERA
  16350. SA1 TERA
  16351. AX1 59-5
  16352. SX3 X1-ODET
  16353. NZ X3,TER2 IF NOT AN OPERATOR DROP
  16354. SA1 B0 CLEAR CORE DUMP FLAG
  16355. SX6 5700B
  16356. BX6 X6*X1
  16357. SA6 A1
  16358. MX6 1 SET NO-RELOAD FLAG
  16359. SA6 VRLL
  16360. EQ TER3 TERMINATE RUN
  16361.  
  16362. * CHECK IF RECOVERY POSSIBLE.
  16363.  
  16364. TER2 SA1 VRLL TIME SINCE DEADSTART AT LAST RELOAD
  16365. SA2 RTIM TIME SINCE DEADSTART
  16366. BX6 X1 CHECK FOR INITIALIZATION ABORT
  16367. LX6 1
  16368. NG X6,TER4 IF INITIALIZATION ABORT
  16369. MX6 -24
  16370. ZR X1,TER3 IF FIRST RECOVERY ATTEMPT
  16371. LX2 24
  16372. NG X1,TER3 IF NO-RELOAD SET
  16373. BX2 -X6*X2 SECONDS SINCE DEADSTART
  16374. IX3 X2-X1 SECONDS SINCE RECOVERY
  16375. NG X3,TER3 IF FRESH DEADSTART
  16376. SX4 X3-60
  16377. PL X4,TER3 IF .GT. 60 SECONDS SINCE RECOVERY
  16378. SX3 4
  16379. IX3 X2-X3
  16380. NG X3,TER3 IF LESS THAN 4 SECONDS SINCE DEADSTART
  16381. MX6 1 SET NO-RELOAD FLAG
  16382. SA6 A1
  16383. MESSAGE (=C* DURATION TIME TERMINATE.*),,R
  16384.  
  16385. * LOG OFF USERS AND ISSUE STATISTICS.
  16386.  
  16387. TER3 RJ LOG LOG OFF ACTIVE USERS
  16388. RJ STA ISSUE STATISTICS
  16389. SA1 B0
  16390. LX1 59-7 CHECK SSW2
  16391. NG X1,TER4 IF SSW2 ON, AVOID RELOAD
  16392. SA1 VRLL CHECK RECOVERY STATUS
  16393. PL X1,TER5 IF RELOAD REQUESTED
  16394. TER4 MESSAGE (=C* IAF TERMINATED.*)
  16395. MESSAGE (=C*SESC, IAF.*),5
  16396. ABORT
  16397.  
  16398. * PROCESS RELOAD.
  16399.  
  16400. TER5 MESSAGE (=C*RECOVERY COMPLETE.*),,R
  16401. MESSAGE (=C*SRSC, IAF.*),5
  16402. SA1 TERA SET IAFEX RECOVERY FLAG IN R1
  16403. SX6 B1
  16404. BX6 X1+X6
  16405. SA6 A1
  16406. SETJCR TERA
  16407. ENDRUN
  16408.  
  16409. TER6 MESSAGE (=C* USER ACCESS NOT VALID.*),,R
  16410. ABORT
  16411.  
  16412.  
  16413. TERA CON 0 JOB CONTROL REGISTERS
  16414. RTIM CON 0 REAL TIME
  16415. TITLE SUBROUTINES.
  16416. CKP SPACE 4
  16417. ** CKP - CHECK POINTER WORD.
  16418. *
  16419. * ENTRY-
  16420. * (X1) = POINTER WORD.
  16421. *
  16422. * EXIT-
  16423. * (B6) = FWA.
  16424. * (B7) = LWA.
  16425. * EXITS TO ERR1 IF POINTER BAD.
  16426.  
  16427.  
  16428. CKP SUBR ENTRY/EXIT
  16429. SB5 A0
  16430. SB7 X1
  16431. AX1 24
  16432. SB6 X1
  16433. EQ B6,B7,ERR1
  16434. NG B6,ERR1
  16435. NG B7,ERR1
  16436. ZR B6,ERR1
  16437. ZR B7,ERR1
  16438. GE B6,B7,ERR1
  16439. GE B6,B5,ERR1
  16440. GE B7,B5,ERR1
  16441. EQ CKPX
  16442. DCV SPACE 4
  16443. ** DCV - CONVERT DATA.
  16444. *
  16445. * ENTRY-
  16446. * (X1) = DATA TO BE CONVERTED.
  16447. *
  16448. * EXIT-
  16449. * (X6) = CONVERTED DATA.
  16450. *
  16451. * SCRATCH-
  16452. * X - 0, 1, 2, 3, 4, 5, 6, 7.
  16453. * B - 2, 3, 4, 5.
  16454. * A - 2, 3, 5.
  16455.  
  16456.  
  16457. DCV SUBR ENTRY/EXIT
  16458. MX0 -18 (X0) = FRACTION MASK
  16459. SX4 1R. (X4) = DECIMAL POINT
  16460. MX5 -36
  16461. SA2 DCVA =.1P48+1
  16462. LX4 18
  16463. SA3 A2+B1 =10.0P
  16464. SB5 6
  16465. BX6 -X5*X1
  16466. SX7 1000
  16467. ZR X6,DCVX IF BLANK WORD
  16468. SB4 1R0-1R (B4) = CONVERSION
  16469. SA5 A3+B1 (X5) = BACKGROUND
  16470. PX1 X6
  16471. IX7 X6-X7
  16472. SB2 -B5
  16473. PL X7,DCV1 IF INTEGER PRESENT
  16474. SB4 B0
  16475. SA5 A5+B1
  16476. DCV1 DX6 X2*X1 EXTRACT REMAINDER
  16477. FX1 X2*X1
  16478. SB3 X1
  16479. LX5 -6 SHIFT ASSEMBLY
  16480. SB2 B2+B5 ADVANCE SHIFT COUNT
  16481. FX6 X3*X6 EXTRACT DIGIT
  16482. SX7 X6+B4 CONVERT DIGIT
  16483. IX5 X5+X7 ADVANCE ASSEMBLY
  16484. NZ B3,DCV1 LOOP TO ZERO REMAINDER
  16485. LX6 X5,B2 RIGHT JUSTIFY ASSEMBLY
  16486. BX1 -X0*X6 EXTRACT FRACTION
  16487. IX7 X1+X4 ADD POINT
  16488. BX5 X0*X6 EXTRACT INTEGER
  16489. LX5 6
  16490. IX6 X5+X7 ADD INTEGER
  16491. EQ DCVX
  16492.  
  16493. DCVA CON 0.1P48+1
  16494. CON 10.0P
  16495. CON 9L
  16496. CON 9L 0000
  16497. ERR SPACE 4
  16498. ** ERR - ABORT,S ANY RECOVERY ATTEMPT.
  16499. * THIS ROUTINE IS CALLED WHEN ITEMS SUCH AS POINTERS HAVE
  16500. * BEEN MASHED.
  16501.  
  16502.  
  16503. ERR1 MESSAGE (=C*POINTER ERROR.*),,R
  16504. * EQ ERRX
  16505. ERRX MESSAGE (=C*RECOVERY IMPOSSIBLE.*),,R
  16506. MESSAGE (=C*SRSA, IAF.*),5
  16507. ABORT
  16508. GRI SPACE 4,10
  16509. ** GRI - GATHER RECOVERY INFORMATION.
  16510. *
  16511. * ENTRY (A0) = ADDRESS OF TERMINAL TABLE.
  16512. * (B4) = FWA OF PARAMETER BLOCK.
  16513. *
  16514. * EXIT RECOVERY WORDS SET IN PARAMETER BLOCK.
  16515. *
  16516. * USES X - 1, 2, 3, 6, 7.
  16517. * A - 1, 7.
  16518.  
  16519.  
  16520. GRI SUBR ENTRY/EXIT
  16521. SA1 A0+VROT SET UP MODES
  16522. SX2 34B JOB CONTINUATION FLAG
  16523. BX6 X1*X2 INPUT REQUESTED, OUTPUT AVAILABLE
  16524. SX2 40B
  16525. AX1 17-5 FILE FOR OUTPUT
  16526. BX2 X2*X1
  16527. BX6 X6+X2
  16528. SA1 A0+VDCT
  16529. SX2 B1
  16530. AX1 50-0
  16531. BX7 X1*X2 TEXT MODE
  16532. AX1 51-50
  16533. BX3 X1*X2 CURRENT CHARACTER SET
  16534. AX1 55-51
  16535. BX1 X1*X2 BRIEF MODE
  16536. LX7 7
  16537. LX1 1
  16538. BX7 X1+X7
  16539. BX6 X6+X7
  16540. SA1 A0+VSTT
  16541. MX7 -3 SAVE TERMINAL TABLE SUBSYSTEM
  16542. LX7 12
  16543. BX7 -X7*X1
  16544. LX7 18-12
  16545. BX6 X6+X7
  16546. MX7 1
  16547. LX7 55-59
  16548. BX7 X7*X1 EFFECT MODE
  16549. LX7 8-55
  16550. BX6 X6+X7
  16551. AX1 18-0
  16552. BX7 X2*X1 INITIAL CHAR SET
  16553. AX1 53-18
  16554. SX2 101B
  16555. BX1 X2*X1 DISABLE TERMINAL CONTROL, NO PROMPT FLAGS
  16556. BX6 X6+X1 MODES COMPLETED
  16557. LX7 15-0 INIT C.S.
  16558. LX3 12-0 CURRENT C.S.
  16559. BX3 X7+X3
  16560. BX7 X6+X3
  16561. SA1 A0+VCHT READ CHARACTER COUNTS
  16562. SA2 A0+VFST READ INPUT/OUTPUT OVERFLOW COUNT
  16563. SA7 B4+3 WRITE RECOVERY WORD 1
  16564. MX7 -24
  16565. MX6 -12
  16566. LX6 24
  16567. BX7 -X7*X1 SET CHARACTER COUNT
  16568. BX2 -X6*X2 SET OVERFLOW COUNT
  16569. BX7 X7+X2 WRITE RECOVERY WORD 2
  16570. SA7 A7+B1
  16571. EQ GRI EXIT
  16572. IER SPACE 4,10
  16573. ** IER - ISSUE EJT SYSTEM REQUEST.
  16574. *
  16575. * ENTRY LOGA = FWA OF EJT REQUEST PARAMETER BLOCK.
  16576. *
  16577. * EXIT (X2) = 0, IF REQUEST COMPLETE.
  16578. * 1, IF ERROR ENCOUNTERED.
  16579. *
  16580. * USES X - 1, 2, 6.
  16581. * A - 1, 2, 6.
  16582. *
  16583. * CALLS COD.
  16584. *
  16585. * MACROS MESSAGE, RECALL, RTIME, SYSTEM.
  16586.  
  16587.  
  16588. IER SUBR ENTRY/EXIT
  16589. RTIME IERE SET START TIME
  16590. IER1 SYSTEM EJT,R,LOGA ISSUE EJT SYSTEM REQUEST
  16591. SA1 LOGA
  16592. AX1 10 CHECK ERROR RETURN
  16593. MX2 -8
  16594. BX2 -X2*X1
  16595. ZR X2,IERX IF NO ERROR
  16596. SX1 X2-RTER
  16597. NZ X1,IER2 IF ERROR CODE OTHER THAN RETRY
  16598. RECALL
  16599. SA1 LOGA CLEAR ERROR CODE AND COMPLETION BIT
  16600. SX2 RTER*2000B+1
  16601. BX6 X2-X1
  16602. SA6 A1
  16603. RTIME IERF CHECK CURRENT TIME
  16604. SA1 IERE
  16605. SA2 A1+B1
  16606. ERRNZ IERF-IERE-1 CODE DEPENDS ON CONSECUTIVE WORDS
  16607. AX1 36
  16608. AX2 36
  16609. IX2 X2-X1 ELAPSED TIME SINCE *IER* CALLED
  16610. SX2 X2-30
  16611. NG X2,IER1 IF 30 SECONDS NOT YET ELAPSED
  16612. SX2 JDER JOB MUST BE HUNG AT A CONTROL POINT
  16613. IER2 BX1 X2
  16614. SX2 X2-JOER
  16615. ZR X2,IERX IF JOB ALREADY DETACHED
  16616. RJ COD CONVERT ERROR CODE TO DISPLAY
  16617. MX1 -24
  16618. SA2 IERB PUT ERROR CODE INTO MESSAGE
  16619. BX6 -X1*X6
  16620. BX2 X1*X2
  16621. BX6 X2+X6
  16622. SA6 A2+
  16623. SA2 VTTP GET TERMINAL NUMBER
  16624. SX1 A0
  16625. AX2 24
  16626. IX1 X1-X2
  16627. AX1 3
  16628. RJ COD CONVERT TERMINAL NUMBER TO DISPLAY
  16629. MX2 -30
  16630. SA1 IERD ADD TERMINAL NUMBER TO MESSAGE
  16631. BX6 -X2*X6
  16632. BX1 X1*X2
  16633. BX6 X1+X6
  16634. SA6 A1
  16635. MX6 -24
  16636. SA1 LOGA GET JSN
  16637. LX1 24
  16638. BX1 -X6*X1
  16639. NZ X1,IER3 IF JSN PRESENT
  16640. SA1 =4R****
  16641. IER3 SA2 IERC PUT JSN INTO MESSAGE
  16642. BX6 X6*X2
  16643. BX6 X6+X1
  16644. SA6 A2
  16645. MESSAGE IERA,,R
  16646. SX2 B1
  16647. EQ IERX RETURN
  16648.  
  16649. IERA DATA 20L EJT SYSTEM REQUEST
  16650. IERB DATA 10LERROR XXXX
  16651. IERC DATA 10L, JSN=JSNA
  16652. IERD DATA 10L, TN=12345
  16653. DATA 1L.
  16654. IERE CON 0 START TIME
  16655. IERF CON 0 CURRENT TIME
  16656. LOG SPACE 4
  16657. ** LOG - LOG OFF ALL ACTIVE USERS.
  16658. *
  16659. * ENTRY (A0) = LWA+1 OF IAF FL.
  16660. *
  16661. * EXIT ALL ACTIVE USERS DETACHED OR TERMINATED.
  16662. * ALL ACTIVE TERMINAL TABLES ZEROED.
  16663. * (A0) = LWA+1 OF IAF FL.
  16664. *
  16665. * USES X - 0, 1, 2, 5, 6, 7.
  16666. * A - 0, 1, 2, 6, 7.
  16667. * B - 2, 3, 4, 5, 6, 7.
  16668. *
  16669. * CALLS CKP, COD, IER.
  16670. *
  16671. * MACROS MESSAGE, PARAM, RECALL.
  16672.  
  16673.  
  16674. LOG6 SA1 LOGC RESTORE (A0)
  16675. SA0 X1
  16676.  
  16677. LOG SUBR ENTRY/EXIT
  16678. SA1 VTTP GET TERMINAL TABLE POINTERS
  16679. RJ CKP
  16680. SX6 A0 SAVE FL
  16681. SA6 LOGC
  16682. SX5 B6 SAVE FWA OF TERMINAL TABLE
  16683. SB6 B6+VPST*VTTL SET START OF ACTUAL TERMINALS
  16684. LOG1 SA0 B6+
  16685. SB2 VPST SET FIRST TERMINAL NUMBER
  16686. LOG2 SA1 A0+VUIT
  16687. MX2 -12
  16688. BX2 -X2*X1
  16689. ZR X2,LOG3 IF EJT ORDINAL = 0
  16690. SA1 A0+VSTT
  16691. LX1 59-48
  16692. NG X1,LOG3 IF LOGOUT IN PROGRESS
  16693. SB4 LOGA
  16694. PARAM FJEJ FREEZE JOB
  16695. RJ IER ISSUE EJT SYSTEM REQUEST
  16696. NZ X2,LOG3 IF UNABLE TO FREEZE JOB
  16697. SB4 LOGA
  16698. SX0 SARC SET REASON CODE
  16699. PARAM DTEJ,X0
  16700. RJ IER ISSUE EJT SYSTEM REQUEST
  16701. NZ X2,LOG3 IF UNABLE TO DETACH JOB
  16702. BX6 X6-X6 CLEAR TERMINAL TABLE
  16703. SA6 A0
  16704. LOG3 SB5 A0+VTTL
  16705. SB2 B2+B1 INCREMENT TERMINAL NUMBER
  16706. SA0 B5
  16707. LT B5,B7,LOG2 IF MORE TABLE TO SCAN
  16708.  
  16709. * CHECK IF ALL USERS DETACHED.
  16710.  
  16711. SA0 B6
  16712. SB4 B0 PRESET FAILURE COUNT
  16713. LOG4 SA1 A0+VUIT
  16714. MX2 -12
  16715. BX2 -X2*X1
  16716. ZR X2,LOG5 IF EJT ORDINAL = 0
  16717. SB4 B4+B1 COUNT DETACH FAILURE
  16718. LOG5 SB5 A0+VTTL
  16719. SA0 B5+
  16720. LT B5,B7,LOG4 IF SCAN NOT COMPLETE
  16721. ZR B4,LOG6 IF ALL TERMINALS DETACHED
  16722. SA1 LOGB DECREMENT DETACH ATTEMPTS
  16723. SX6 X1-1
  16724. SA6 A1+
  16725. ZR X6,LOG6 IF THREE ATTEMPTS, TERMINATE
  16726. MESSAGE (=C* RETRY DETACHES.*),,R
  16727. RECALL
  16728. EQ LOG1 LOOP TO NEXT SCAN
  16729.  
  16730.  
  16731. LOGA BSS EJPB EJT SYSTEM REQUEST PARAMETER BLOCK
  16732. LOGB CON 3 DETACH RETRY COUNT
  16733. LOGC CON 0 SAVE (A0)
  16734. PPB SPACE 4,15
  16735. ** PPB - PRESET PARAMETER BLOCK.
  16736. *
  16737. * ENTRY (A0) = TERMINAL TABLE ADDRESS.
  16738. * (B4) = FWA OF PARAMETER BLOCK.
  16739. * (X7) = FUNCTION CODE.
  16740. *
  16741. * EXIT WORDS 1 - 5 CLEARED.
  16742. * IF *FJEJ*, AN INFORMATIVE MESSAGE IS ISSUED
  16743. * TO *MS1W*.
  16744. * (X6) = 0.
  16745. * (A7) = (B4).
  16746. * (X7) = (WORD 0) = JSN, FUNCTION CODE.
  16747. * (X2) = EJT ORDINAL.
  16748. *
  16749. * USES X - 1, 2, 6, 7.
  16750. * A - 1, 6, 7.
  16751.  
  16752.  
  16753. PPB1 SA1 A0+VUIT GET EJT ORDINAL
  16754. MX2 -12
  16755. BX2 -X2*X1
  16756. BX6 X6-X6 CLEAR WORDS 1 - 5
  16757. SA6 A7+1
  16758. MX1 EJPB-2
  16759. PPB2 LX1 1
  16760. SA6 A6+B1
  16761. NG X1,PPB2 IF MORE WORDS TO CLEAR
  16762.  
  16763. PPB SUBR ENTRY/EXIT
  16764. LX7 1
  16765. MX6 24
  16766. SA1 A0+VFST ADD JSN TO WORD 0
  16767. SX2 X7-FJEJ*2
  16768. BX1 X1*X6
  16769. BX7 X1+X7
  16770. SA7 B4
  16771. NZ X2,PPB1 IF NOT TO ISSUE MESSAGE
  16772. LX6 24
  16773. SA2 PPBA+1
  16774. LX1 24
  16775. BX6 -X6*X2 CLEAR OLD JSN
  16776. BX6 X1+X6 ADD NEW JSN TO MESSAGE
  16777. SA6 A2
  16778. MESSAGE PPBA,1,R ISSUE MESSAGE TO *MS1W* ONLY
  16779. EQ PPB1 CONTINUE
  16780.  
  16781. PPBA DATA C*DETACHING, JSN= XXXX.*
  16782. STA SPACE 4
  16783. ** STA - ISSUES *IAFEX* STATISTICS.
  16784.  
  16785.  
  16786. STA8 MESSAGE STAH,,R
  16787.  
  16788. STA SUBR ENTRY/EXIT
  16789. SB6 STAC
  16790. SA1 VNTP CHECK IF NETWORK ACTIVE
  16791. SX6 B0+
  16792. NZ X1,STA1 IF ACTIVE
  16793. SA6 STAD TURN OF NETWORK STATISTICS
  16794. STA1 MX0 -12
  16795. SB7 STAB
  16796. SA2 B6 GET POINTER TO QUANITY TO BE CONVERTED
  16797. ZR X2,STA3 IF END OF TABLE
  16798. SB6 B6+B1
  16799. SA1 X2 GET QUANITY
  16800. STA2 SA2 A2+B1 MOVE MESSAGE
  16801. SB6 B6+B1
  16802. BX6 X2
  16803. SA6 B7+B1
  16804. SB7 B7+B1
  16805. BX2 -X0*X2
  16806. NZ X2,STA2 IF NOT END OF MESSAGE
  16807. MX6 -18
  16808. BX1 -X6*X1
  16809. ZR X1,STA1 IF QUANITY ZERO
  16810. RJ DCV CONVERT NUMBERS
  16811. SA1 STAA FORMAT MESSAGE
  16812. MX2 24
  16813. MX3 36
  16814. BX1 X2*X1
  16815. BX7 -X3*X6
  16816. AX6 24
  16817. BX6 -X2*X6
  16818. BX6 X1+X6
  16819. SA6 A1
  16820. SA1 =10H KILO-
  16821. BX1 -X2*X1
  16822. LX7 36
  16823. BX6 X1+X7
  16824. SA6 A6+B1
  16825. MESSAGE STAA,,R
  16826. EQ STA1 LOOP
  16827.  
  16828. STA3 SA1 VCTP ISSUE COMMAND COUNTS
  16829. BX6 X6-X6
  16830. SA6 STAA+4
  16831. RJ CKP
  16832. STA4 SA1 B6+B1
  16833. SB6 B6+2
  16834. SX1 X1
  16835. NZ X1,STA6 IF COMMAND USED
  16836. STA5 LT B6,B7,STA4 IF STILL MORE COMMANDS TO CEHCK
  16837. EQ STA7 RETURN
  16838.  
  16839. STA6 RJ DCV CONVERT NUMBER
  16840. SA1 STAA FORMAT MESSAGE
  16841. MX2 24
  16842. MX3 36
  16843. BX5 -X3*X6
  16844. AX6 24
  16845. BX6 -X2*X6
  16846. BX1 X2*X1
  16847. BX6 X1+X6
  16848. SA6 A1
  16849. SA1 B6-2 GET COMMAND NAME
  16850. MX6 42
  16851. BX1 X6*X1
  16852. RJ SFN SPACE FILL NAME
  16853. BX2 X6 SET UP FIRST FIVE CHARACTERS OF NAME
  16854. AX6 30
  16855. LX5 36
  16856. BX6 X5+X6
  16857. SX7 1R
  16858. LX7 30
  16859. BX6 X6+X7
  16860. SA6 A6+B1
  16861. MX7 12 SET UP LAST TWO CHARACTERS OF NAME
  16862. LX2 30
  16863. BX6 X7*X2
  16864. SA1 =8R COMMAND
  16865. BX6 X1+X6
  16866. SA6 A6+B1
  16867. SA1 =4L(S).
  16868. BX6 X1
  16869. SA6 A6+B1
  16870. MESSAGE STAA,,R
  16871. EQ STA5
  16872.  
  16873. STA7 TIME STAF
  16874. RTIME STAG
  16875. SA1 CPTIME
  16876. MX6 -12
  16877. BX2 -X6*X1
  16878. AX1 12
  16879. SX5 1000
  16880. IX4 X1*X5
  16881. IX4 X4+X2 TOTAL CPU TIME PREVIOUSLY (MS)
  16882. SA1 STAF
  16883. BX2 -X6*X1
  16884. AX1 12
  16885. IX3 X1*X5
  16886. IX3 X3+X2 TOTAL CPU TIME CURRENTLY (MS)
  16887. IX4 X3-X4 ELASPED CPU TIME (MS)
  16888. SA1 STAG
  16889. SA2 START
  16890. MX3 -36
  16891. BX1 -X3*X1
  16892. BX2 -X3*X2
  16893. IX1 X1-X2 ELAPSED TIME
  16894. NG X1,STA8 DEADSTART RECVOERY HAS OCCURRED
  16895. SX5 100*1000
  16896. IX4 X4*X5
  16897. IX1 X4/X1
  16898. RJ DCV CONVERT NUMBER
  16899. SA1 STAE
  16900. MX2 -36
  16901. BX7 X6
  16902. AX6 24
  16903. BX6 -X2*X6
  16904. BX6 X6+X1
  16905. SA6 A1
  16906. SA1 A1+B1
  16907. MX2 24
  16908. LX7 36
  16909. BX6 X2*X7
  16910. BX6 X6+X1
  16911. SA6 A1
  16912. MESSAGE STAE,,R
  16913. EQ STAX
  16914.  
  16915. STAA DATA 10HIAFX
  16916. STAB BSSZ 6
  16917. STAC CON VTNL
  16918. DATA C*USERS TOTAL.*
  16919. CON LINB
  16920. DATA C*USERS MAXIMUM.*
  16921. CON VANL
  16922. DATA C*USERS ACTIVE.*
  16923. CON RECS
  16924. DATA C*USERS RECOVERED.*
  16925. CON SPRA
  16926. DATA C*WORDS MAX. FL.*
  16927. CON SPRB
  16928. DATA C*FL INCREASES.*
  16929. CON SPRL
  16930. DATA C*FL DECREASES.*
  16931. CON SPRF
  16932. DATA C*SECS. MAX. INTERVAL*
  16933. CON LINA
  16934. DATA C*INCORRECT LOG IN(S).*
  16935. CON VABL
  16936. DATA C*ABNORMAL OCCURRENCES.*
  16937. CON CPBM
  16938. DATA C*POTS LOW.*
  16939. CON VTSR
  16940. DATA C* TSEM REJECTS DUE TO FULL QUEUE.*
  16941. CON VTGR
  16942. DATA C* TGPM REJECTS DUE TO NO POTS AVAILABLE.*
  16943. CON VPPL
  16944. DATA C*TIMES NO PPU.*
  16945. CON TSYS+1
  16946. DATA C*BASIC RUNS.*
  16947. CON TSYS+2
  16948. DATA C*FORTRAN RUNS.*
  16949. CON TSYS+4
  16950. DATA C*EXECUTES.*
  16951. CON INPA
  16952. DATA C*INPUT RESPONSES.*
  16953.  
  16954. * NETWORK STATISTICS.
  16955.  
  16956. STAD BSS 0
  16957. QUAL IAFEX4
  16958. CON BLTC
  16959. DATA C*BLOCKS LOST.*
  16960. CON IDBC
  16961. DATA C*INCORRECT DATA BLOCKS.*
  16962. CON ISMC
  16963. DATA C*INCORRECT SUPERVISORY MESSAGES.*
  16964. CON LGLC
  16965. DATA C*LOGICAL ERRORS.*
  16966. CON NAKC
  16967. DATA C*BLOCKS NAK.*
  16968. CON NPBC
  16969. DATA C*NETPUTS BUSY.*
  16970. CON DSXC
  16971. DATA C*DRIVER STACK EXITS.*
  16972. CON MSXC
  16973. DATA C*MONITOR STACK EXITS.*
  16974.  
  16975. QUAL *
  16976. CON 0 END OF TABLE
  16977.  
  16978. * CPU USAGE MESSAGE.
  16979.  
  16980. STAE DATA 4LIAFX
  16981. DATA 6R PERCE
  16982. DATA C*NT CPU USAGE.*
  16983. STAF CON 0
  16984. STAG CON 0
  16985. STAH DATA C*CPU UTILIZATION INDETERMINATE.*
  16986. TITLE COMMON DECKS.
  16987. *CALL COMCCIO
  16988. *CALL COMCCPM
  16989. *CALL COMCCOD
  16990. *CALL COMCLFM
  16991. *CALL COMCSFN
  16992. *CALL COMCSYS
  16993. QUAL
  16994. EJECT
  16995. TTL IAFEX4 - IAFEX/NETWORK INTERFACE.
  16996. QUAL IAFEX4
  16997. IDENT IAFEX4,TNI,,1,1
  16998. *COMMENT IAFEX - *IAF/NAM* INTERFACE.
  16999. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  17000. SPACE 4
  17001. *** IAFEX4 - IAFEX/NETWORK INTERFACE.
  17002. * P.D. FARRELL 77/03/17.
  17003. IAFEX4 SPACE 4
  17004. *** IAFEX4 PROVIDES THE INTERFACE BETWEEN IAFEX AND
  17005. * NETWORK INTERFACE (NAM) TERMINALS. IAFEX4 OPERATES
  17006. * AS AN ADDITIONAL TERMINAL DRIVER, EITHER IN PLACE OF
  17007. * OR IN PARALLEL WITH THE PPU MULTIPLEXER DRIVER, 1TM,
  17008. * OR THE INTERNAL STIMULATION DRIVER, 1TN. IAFEX4
  17009. * IS LOADED DURING IAFEX INITIALIZATION ONLY IF NETWORK
  17010. * TERMINALS HAVE BEEN DEFINED IN THE SYSTEM NETWORK FILE.
  17011. * BECAUSE IAFEX4 OVERLAYS TRANSACTION TERMINAL PROCESSING
  17012. * CODE OF THE MAIN EXECUTIVE, BOTH TRANSACTION AND NETWORK
  17013. * TERMINALS CANNOT BE DEFINED SIMULTANEOUSLY.
  17014. IAFEX4 TITLE INTERNAL DOCUMENTATION.
  17015. GLOSSARY SPACE 4,10
  17016. ** GLOSSARY OF NETWORK INTERFACE ACRONYMS.
  17017. *
  17018. *
  17019. * ABC APPLICATION BLOCK COUNT (DOWNSTREAM)
  17020. * ABH APPLICATION BLOCK HEADER
  17021. * ABL APPLICATION BLOCK LIMIT
  17022. * ABN APPLICATION BLOCK NUMBER
  17023. * ABT APPLICATION BLOCK TYPE
  17024. * ACN APPLICATION CONNECTION NUMBER
  17025. * ACT APPLICATION CHARACTER TYPE
  17026. * AIP APPLICATION INTERFACE PACKAGE OR PROCEDURE
  17027. * ALN APPLICATION LIST NUMBER
  17028. * APP APPLICATION
  17029. * BACK BLOCK ACKNOWLEDGEMENT
  17030. * BT BLOCK TYPE
  17031. * CS COMMUNICATIONS SUPERVISOR
  17032. * HA HEADER AREA
  17033. * TA TEXT AREA
  17034. * NAM NETWORK ACCESS METHOD
  17035. * NIP NETWORK INTERFACE PROGRAM
  17036. * SM SUPERVISORY MESSAGE
  17037. * SMP SUPERVISORY MESSAGE PROCESSOR
  17038. * TA TEXT AREA
  17039. * TL TEXT LENGTH
  17040. * TLC TEXT LENGTH IN CHARACTERS OR OTHER UNITS AS
  17041. * DEFINED BY THE ACT OF THE ASSOCIATED DATA BLOCK
  17042. * TLMAX MAXIMUM LENGTH OF DATA MESSAGE BLOCK TEXT
  17043. TABLES SPACE 4
  17044. ** IAFEX4 TABLE USAGE.
  17045. *
  17046. * *IAFEX4* AND THE NETWORK TERMINAL PROCESSING ROUTINES
  17047. * OF PPU PROGRAM *1TO* USE TERMINAL TABLE WORDS *VFST*,
  17048. * *VDPT*, AND *VCHT* TO MAINTAIN TERMINAL OPERATIONS PA-
  17049. * RAMETERS.
  17050. *
  17051. * IAFEX4 ALSO USES TWO DYNAMIC TABLES IN ADDITION TO THE
  17052. * REGULAR, NON-NETWORK TABLES. THESE TABLES, THE MESSAGE
  17053. * STATUS TABLE AND THE NETWORK ACTIVITY TABLE, ARE
  17054. * ALLOCATED ONLY IF NETWORK TABLES ARE DEFINED.
  17055. TABLES SPACE 4,10
  17056. ** MESSAGE STATUS TABLE, *VMST*.
  17057. *
  17058. * THE MESSAGE STATUS TABLE CONTAINS NETWORK
  17059. * TERMINAL CONTROL INFORMATION AND SUPERVISORY MESSAGE
  17060. * POINTERS.
  17061. *
  17062. *T, 16/ FLAGS,8/ DT,3/ ABC,3/ ABL,2/ ,5/ TF,5/ NP,6/ PC,12/ TP.
  17063. *
  17064. * FLAG BITS:
  17065. * 59 = TERMINAL ON-LINE.
  17066. * 58 = NETWORK TYPE.
  17067. * 0 = NAM/CCP CONNECTION.
  17068. * 1 = NAM/CDNA CONNECTION.
  17069. * 57 = BREAK IN PROGRESS.
  17070. * 56 = SHUTDOWN WARNING SENT.
  17071. * 55 = END-CONNECTION IN PROGRESS.
  17072. * 54 = DATA RECEIVED PREVIOUS CYCLE.
  17073. * 53 = *MSG* BLOCK SENT (INPUT ENABLED).
  17074. * 52 = OUTPUT PRESENT IN *NAM*.
  17075. * (THIS FLAG IS USED ONLY DURING BREAK
  17076. * PROCESSING.)
  17077. * 51 = TYPEAHEAD IN EFFECT.
  17078. * 50 = UNUSED.
  17079. * 49 = BREAK MARKER RECEIVED.
  17080. * 48 = TIMEOUT FLAG.
  17081. * 47 = CONNECTION RESET RECEIVED (FC/RST)
  17082. * 46-44 = TEMPORARY STORAGE FOR REASON CODE.
  17083. * DT = DEVICE TYPE.
  17084. * ABC = UNACKNOWLEDGED DOWNSTREAM BLOCK COUNT.
  17085. * ABL = APPLICATION BLOCK LIMIT.
  17086. * TF = TRANSLATION FLAGS.
  17087. * 27 = 74 ESCAPE CODE AT END OF PREVIOUS BLOCK.
  17088. * 26 = 76 ESCAPE CODE AT END OF PREVIOUS BLOCK.
  17089. * 25 = NAM TRANSPARENT CONTINUATION.
  17090. * 24 = PARTIAL LINE AT END OF PREVIOUS BLOCK.
  17091. * 23 = EXTENDED ASCII OUTPUT (*0011* BYTE).
  17092. * NP = NUMBER OF POTS ALLOCATED FOR OUTPUT POT STRING.
  17093. * PC = POT COUNT FOR INTERNAL TYPEAHEAD QUEUE.
  17094. * TP = TYPEAHEAD POT POINTER.
  17095. TABLES SPACE 4,10
  17096. ** NETWORK ACTIVITY TABLE, *VNAT*.
  17097. *
  17098. * THE NETWORK ACTIVITY TABLE INDICATES WHICH
  17099. * NETWORK TERMINALS REQUIRE SERVICE FROM THE TERMINAL
  17100. * MANAGER. ONE BIT IS USED FOR EACH NETWORK TERMINAL,
  17101. * 32 BITS PER CM WORD. A TERMINAL'S ACTIVITY IS SET
  17102. * WHEN THE TERMINAL REQUIRES SERVICE BY THE NETWORK
  17103. * DRIVER. A TERMINAL'S ACTIVITY BIT MAY BE FOUND BY
  17104. * THE FOLLOWING ALGORITHM:
  17105. *
  17106. * WORD LOCATION RELATIVE TO START OF TABLE =
  17107. *
  17108. * [(TERMINAL NO.) - (FIRST NETWORK TERMINAL NO.)]/32.
  17109. *
  17110. * BIT LOCATION RELATIVE TO BIT 59 =
  17111. *
  17112. * [(TERMINAL NO.) - (FIRST NETWORK TERMINAL NO.)] MOD 32.
  17113. RCCW SPACE 4,10
  17114. ** RECEIVING DATA CONTROL WORD, *RCCW*.
  17115. *
  17116. * THIS SINGLE WORD IS USED BY EACH TERMINAL FOR PROCESSING
  17117. * INPUT WHICH REQUIRES MORE THAN ONE CYCLE THROUGH THE
  17118. * TRANSLATION ROUTINE.
  17119. *
  17120. *T, 1/F, 23/UNUSED, 18/TLC, 18/CA.
  17121. *
  17122. * F = FIRST SEGMENT OF LOGICAL LINE IF SET.
  17123. * TLC = TEXT LENGTH IN CHARACTERS OF CURRENT BLOCK.
  17124. * CA = CURRENT ADDRESS IN RECEIVING BUFFER (RCVB).
  17125. TITLE LOCAL DEFINITIONS.
  17126. ASCII SPACE 4,10
  17127. ** ASCII CHARACTERS USED AS CONSTANTS.
  17128.  
  17129.  
  17130. ASC.A EQU 0#41 ASCII *A* (UC)
  17131. ASC.C EQU 0#43 ASCII *C* (UC)
  17132. ASC.X EQU 0#58 ASCII *X* (UC)
  17133. ASC.AT EQU 0#40 ASCII COMMERCIAL AT
  17134. ASC.CF EQU 0#5E ASCII CIRCUMFLEX
  17135. ASC.CL EQU 0#3A ASCII COLON
  17136. ASC.CM EQU 0#2C ASCII *,*
  17137. ASC.CR EQU 0#0D ASCII *CR*
  17138. ASC.ETX EQU 0#03 ASCII *ETX*
  17139. ASC.LF EQU 0#0A ASCII *LF*
  17140. ASC.PD EQU 0#2E ASCII *.*
  17141. ASC.PL EQU 0#2B ASCII *+*
  17142. ASC.SP EQU 0#20 ASCII SPACE
  17143. ASC.US EQU 0#1F ASCII *US*
  17144. ASC.0 EQU 0#30 ASCII ZERO
  17145. EXT SPACE 4,10
  17146. ** EXT - DISABLE NETWORK CALL MACRO *EXT* PSEUDO-OP.
  17147. *
  17148. * THE NETWORK CALL MACROS AS DEFINED IN NETTEXT USE
  17149. * *EXT* PSEUDO-OPS TO REFERENCE AIP MODULE ENTRY POINTS.
  17150. * THESE MUST BE DISABLED IN ORDER TO ALLOW ABSOLUTE
  17151. * ASSEMBLIES.
  17152.  
  17153.  
  17154. EXT OPSYN NIL
  17155. MSGHDR SPACE 4,10
  17156. ** MSGHDR - GENERATE MESSAGE HEADER.
  17157. *
  17158. * GENERATES NETWORK FORMAT MESSAGE HEADER.
  17159. *
  17160. * LOC MSGHDR ABT=A,ADR=B,ABN=C,ACT=D,NFE=E,XPT=F,AIM=G,TLC=H.
  17161. * *ABT* = BLOCK TYPE.
  17162. * *ADR* = ADDRESS (USUALLY ACN).
  17163. * *ABN* = APPLICATION BLOCK NUMBER.
  17164. * *ACT* = CHARACTER TYPE.
  17165. * *NFE* = NO-FORMAT-AFFECTOR BIT (0 OR 1).
  17166. * *XPT* = NAM TRANSPARENT MODE BIT (0 OR 1).
  17167. * *AIM* = AUTO-INPUT MODE BIT (0 OR 1).
  17168. * *TLC* = TEXT LENGTH IN *ACT* UNITS.
  17169. *
  17170. * OMITTED PARAMETERS DEFAULT TO A VALUE OF ZERO.
  17171.  
  17172.  
  17173. PURGMAC MSGHDR
  17174. MSGHDR MACROE ABT,ADR,ABN,ACT,NFE,XPT,AIM,TLC
  17175. VFD 6/ABT,12/ADR,18/ABN,4/ACT,4/0,1/NFE,1/XPT,1/0,1/AIM,12/TLC
  17176. ENDM
  17177. NETLINK SPACE 4,10
  17178. ** NETLINK - GENERATE NETWORK LINKAGE.
  17179. *
  17180. * LINKS TO A NETWORK AIP ENTRY AS LOADED.
  17181. *
  17182. * NETLINK ENTRY
  17183. * ENTRY = NAME OF AIP ENTRY POINT.
  17184. *
  17185. * CODE GENERATED:
  17186. *
  17187. * ENTRY PS 0
  17188. * SA4 ENTRY READ ENTRY POINT
  17189. * SX5 (AIP) SET AIP ENTRY POINT ADDRESS
  17190. * (PRESET DURING INITIALIZATION.)
  17191. * EQ XRJ TRANSFER RETURN JUMP
  17192.  
  17193.  
  17194. NETLINK MACRO A
  17195. IFC EQ,*A**,1
  17196. ERR NETLINK ENTRY POINT OMITTED.
  17197. A PS 0
  17198. SA4 A
  17199. SX5 *+400000B
  17200. EQ XRJ
  17201. ENDM
  17202. LIST X
  17203. *CALL COMSNCD
  17204. LIST *
  17205. *CALL COMSSCP
  17206. TITLE COMMON STORAGE.
  17207. SPACE 4,10
  17208. ORG //TINST+5
  17209. TNI BSS 0 DEFINE FWA OF OVERLAY.
  17210. SPACE 4,10
  17211. ** PROCESSOR CONTROL FLAGS.
  17212. *
  17213. * FLAG USAGE:
  17214. *
  17215. * NONZERO = ON/TRUE/SET.
  17216. * ZERO = OFF/FALSE/CLEAR.
  17217.  
  17218.  
  17219. IBSY CON 0 HEADER ADDRESS IF INPUT BUFFER BUSY
  17220. NBSY CON 0 NAM (PARALLEL MODE) BUSY
  17221. NDSL CON 0 NETWORK DRIVER STACK LIMIT
  17222. NTON CON 0 NETWORK CONNECTED
  17223. OBSY CON 0 OUTPUT BUFFER BUSY
  17224. PCRX CON 0 PREVIOUS CYCLE FORCED READ EXIT
  17225. SHDF CON 0 SHUTDOWN ADDRESS:
  17226. POSITIVE = NORMAL SHUTDOWN
  17227. NEGATIVE = FORCED SHUTDOWN
  17228. SUPA CON 0 SUPERVISORY MESSAGE AVAILABLE
  17229. SPACE 4,10
  17230. ** INTERESTING STATISTICS.
  17231.  
  17232.  
  17233. BLTC CON 0 BLOCK-LOST COUNT
  17234. DSXC CON 0 DRIVER STACK EXIT COUNT
  17235. IDBC CON 0 INCORRECT DATA BLOCK COUNT
  17236. ISMC CON 0 INCORRECT SUPERVISORY MESSAGE COUNT
  17237. LGLC CON 0 LOGICAL ERROR COUNT
  17238. MSXC CON 0 MONITOR STACK EXIT COUNT
  17239. NAKC CON 0 *NAK* COUNT
  17240. NGBC CON 0 NETGET BUSY COUNT
  17241. NPBC CON 0 NETPUT BUSY COUNT
  17242. SPACE 4,10
  17243. ** DATA STORAGE.
  17244.  
  17245.  
  17246. CCFC CON 0 CURRENT CYCLE FUNCTION COUNT COMPLEMENT
  17247. HACN CON 0 HIGHEST ACN ACTIVE
  17248. NCIN CON 0 NUMBER OF CHARACTERS ON INPUT LINE
  17249. NDSA CON 0 NETWORK DRIVER STACK ADDRESS
  17250. NFRT CON 0 NETWORK FUNCTION REAL TIME CLOCK
  17251. NGLN CON 0 NETGET LIST OR ACN NUMBER
  17252. NSPA CON 0 NETWORK DRIVER STACK POINTER ADDRESS
  17253. NSQP CON 0 NULL SUPERVISORY MESSAGE QUEUE POINTER
  17254. NSUP CON 0 AIP PARALLEL STATUS RESPONSE
  17255. OTPP CON 0 OUTPUT MESSAGE POT POINTER
  17256. RCCW CON 0 RECEIVING DATA CONTROL WORD
  17257. SMPF CON 0 SUPERVISORY MESSAGE PRIMARY FUNCTION CODE
  17258. SMSF CON 0 SUPERVISORY MESSAGE SUBFUNCTION CODE
  17259. TMSI CON 0 TERMINAL MANAGER SCAN INDEX
  17260. SPACE 4,10
  17261. ** AIP TRACE DATA STORAGE.
  17262.  
  17263. ATMC CON 0 MESSAGE COUNT
  17264. JPTO DATA 10H"TJOB" JOB FILE TO PROCESS AIP TRACE OUTPUT
  17265. MXLT CON MXML MAXIMUM MESSAGE LENGTH
  17266. RWTF DATA 0 REWIND FILE SPECIFIED BY *TJOB*
  17267. SPACE 4,10
  17268. ** TEMPORARY PARAMETERS FOR NETWORK CALLS.
  17269.  
  17270.  
  17271. NCPA CON 0 PARAMETER A
  17272. NCPB CON 0 PARAMETER B
  17273. NCPC CON 0 PARAMETER C
  17274. NCPD CON 0 PARAMETER D
  17275. NCAS CON 0 SAVE (A0)
  17276. NCBS CON 0 SAVE (B2)
  17277. NCZP CON 0 CONSTANT ZERO FOR RESERVED PARAMETERS
  17278. SPACE 4,10
  17279. ** CANNED SUPERVISORY MESSAGES.
  17280.  
  17281.  
  17282. * HDRS1 - HEADER FOR ONE WORD MESSAGE (DEFAULT HEADER).
  17283.  
  17284. HDRS1 MSGHDR ABT=BTSV,ACT=1,TLC=1
  17285.  
  17286.  
  17287. * HDRS2 - HEADER FOR TWO WORD MESSAGE.
  17288.  
  17289. HDRS2 MSGHDR ABT=BTSV,ACT=1,TLC=2
  17290.  
  17291.  
  17292. * HDRS3 - HEADER FOR A SYNCHRONOUS SUPERVISORY MESSAGE.
  17293.  
  17294. HDRS3 MSGHDR ABT=BTSV,ACT=2,TLC=2
  17295.  
  17296.  
  17297. * HDRS4 - HEADER FOR *CONEND* WITH PARAMETERS.
  17298.  
  17299. HDRS4 MSGHDR ABT=BTSV,ACT=1,TLC=8
  17300.  
  17301.  
  17302. * CONREQ - CONNECTION REQUEST REPLY.
  17303.  
  17304. CONREQ VFD 8/PFCN,2/1,6/SFRT,34/0,4/2,6/1
  17305.  
  17306.  
  17307. * CONREJ - CONNECTION REJECT.
  17308.  
  17309. CONREJ VFD 8/PFCN,2/2,6/SFRT,8/0,36/0
  17310.  
  17311.  
  17312. * CONEND - END CONNECTION.
  17313.  
  17314. CONEND VFD 8/PFCN,2/0,6/SFEN,44/0
  17315. CON 0 CONEND PARAMETER
  17316.  
  17317.  
  17318. * FCBRK - CONNECTION BREAK.
  17319.  
  17320. FCBRK VFD 8/PFFC,2/0,6/SFBK,44/0
  17321.  
  17322.  
  17323. * DCTRU - TRUNCATE UPLINE DATA TO IAF BUFFER SIZE.
  17324.  
  17325. DCTRU VFD 8/PFDC,2/0,6/SFTR,44/0
  17326.  
  17327.  
  17328. * FCINI - CONNECTION INITIATION RESPONSE.
  17329.  
  17330. FCINI VFD 8/PFFC,2/1,6/SFCM,44/0
  17331.  
  17332.  
  17333. * INTRES - RESPONSE TO BYPASS INTERRUPT FROM USER.
  17334.  
  17335. INTRES VFD 8/PFIN,2/0,6/SFRS,44/0
  17336.  
  17337.  
  17338. * LSTFDX - LIST CONTROL, FULL DUPLEX - CANCEL TYPEAHEAD.
  17339.  
  17340. LSTFDX VFD 8/PFLS,2/0,6/SFFD,44/0
  17341.  
  17342.  
  17343. * LSTHDX - LIST CONTROL, HALF DUPLEX - INITIATE TYPEAHEAD.
  17344.  
  17345. LSTHDX VFD 8/PFLS,2/0,6/SFHD,44/1
  17346.  
  17347.  
  17348. * ROMARK - RESUME OUTPUT.
  17349.  
  17350. ROMARK VFD 8/PFRO,8/0,40/0
  17351.  
  17352.  
  17353. * DLTDC - DOWNLINE TERMINAL DEFINITION - CDNA.
  17354. * MESSAGE HEADER IS USED FOR *0010* CONTROL BYTE PROCESSING.
  17355.  
  17356. DLTDC MSGHDR ABT=BTSV,ACT=2
  17357.  
  17358. * DLTDF - DOWNLINE TERMINAL DEFINITION - CCP.
  17359. * MESSAGE HEADER IS USED BY BOTH *0006* AND *0016* CONTROL
  17360. * BYTE PROCESSING. MESSAGE TEXT IS USED BY *0006* CONTROL
  17361. * BYTE PROCESSING ONLY.
  17362.  
  17363. DLTDF MSGHDR ABT=BTSV,ACT=2
  17364. VFD 8/PFTC,8/SFDM,8/70D,8/0,8/52D,8/1,8/57D,4/0
  17365. VFD 4/0,8/58D,8/0,8/60D,8/0,8/56D,8/0,8/59D
  17366. SPACE 4,10
  17367. ** CANNED DATA MESSAGES.
  17368.  
  17369.  
  17370. * HDRM - GENERAL IVT ASCII MESSAGE HEADER.
  17371.  
  17372. HDRM MSGHDR ABT=BTBK,ACT=2
  17373.  
  17374.  
  17375. * HDRAI - AUTO-INPUT MODE MESSAGE HEADER.
  17376.  
  17377. HDRAI MSGHDR ABT=BTMS,ACT=2
  17378.  
  17379.  
  17380. * HDRB - NAM TRANSPARENT OUTPUT MESSAGE HEADER.
  17381.  
  17382. HDRB MSGHDR ABT=BTBK,ACT=2,XPT=1
  17383.  
  17384.  
  17385. * DMBI - NULL MSG BLOCK.
  17386.  
  17387. DMBI MSGHDR ABT=BTMS,ACT=4,TLC=10
  17388. DATA 1L,
  17389.  
  17390.  
  17391. * DMBL - BELL MESSAGE.
  17392.  
  17393. DMBL MSGHDR ABT=BTBK,ACT=2,TLC=4
  17394. DATA 0#2C07071FS28
  17395. DMBLL EQU *-DMBL
  17396.  
  17397.  
  17398. * DMIC - * INCORRECT COMMAND.*
  17399.  
  17400. DMIC MSGHDR ABT=BTBK,ACT=4,TLC=40
  17401. DATA 10L INCORREC
  17402. DATA 10LT COMMAND.
  17403. DATA 2L
  17404. DATA 1L
  17405. DMICL EQU *-DMIC
  17406.  
  17407.  
  17408. * DMID - "IDLE".
  17409.  
  17410. DMID MSGHDR ABT=BTMS,ACT=4,TLC=20
  17411. DATA 5L IDLE
  17412. DATA 1L
  17413. DMIDL EQU *-DMID
  17414.  
  17415.  
  17416. * DMIF - "INCORRECTLY FORMATTED DATA."
  17417.  
  17418. DMIF MSGHDR ABT=BTBK,ACT=4,TLC=50
  17419. DATA 10L INCORREC
  17420. DATA 10LTLY FORMAT
  17421. DATA 10LTED DATA.
  17422. DATA 1L
  17423. DATA 1L
  17424. DMIFL EQU *-DMIF
  17425.  
  17426.  
  17427. * DMIN - "*INTERRUPTED*"
  17428.  
  17429. DMIN MSGHDR ABT=BTMS,ACT=4,TLC=30
  17430. DATA 10L *INTERRU
  17431. DATA 5LPTED*
  17432. DATA 1L
  17433. DMINL EQU *-DMIN
  17434.  
  17435.  
  17436. * DMIP - INPUT PROMPT.
  17437.  
  17438. DMIP MSGHDR ABT=BTMS,ACT=4,TLC=10
  17439. DATA 3L,?
  17440.  
  17441.  
  17442. * DMIT - "INCORRECTLY FORMATTED TRMDEF DATA."
  17443.  
  17444. DMIT MSGHDR ABT=BTBK,ACT=4,TLC=50
  17445. DATA 10L INCORREC
  17446. DATA 10LTLY FORMAT
  17447. DATA 10LTED TRMDEF
  17448. DATA 6L DATA.
  17449. DATA 1L
  17450. DMITL EQU *-DMIT
  17451.  
  17452.  
  17453. * DMLP - " WRITE ON READ-ONLY FILE."
  17454.  
  17455. DMLP MSGHDR ABT=BTMS,ACT=4,TLC=40
  17456. DATA 10L0 WRITE ON
  17457. DATA 10L READ-ONLY
  17458. DATA 6L FILE.
  17459. DATA 1L
  17460. DMLPL EQU *-DMLP
  17461.  
  17462.  
  17463. * DMNP - " NO PRIMARY FILE."
  17464.  
  17465. DMNP MSGHDR ABT=BTMS,ACT=4,TLC=30
  17466. DATA 10L0 NO PRIMA
  17467. DATA 8LRY FILE.
  17468. DATA 1L
  17469. DMNPL EQU *-DMNP
  17470.  
  17471.  
  17472. * DMOV - " *OVL*".
  17473.  
  17474. DMOV MSGHDR ABT=BTMS,ACT=4,TLC=20
  17475. DATA 7L *OVL*
  17476. DATA 1L
  17477. DMOVL EQU *-DMOV
  17478.  
  17479.  
  17480. * DMRC - "RUN COMPLETE."
  17481.  
  17482. DMRC MSGHDR ABT=BTMS,ACT=4,TLC=30
  17483. DATA 10L RUN COMP
  17484. DATA 5LLETE.
  17485. DATA 1L
  17486. DMRCL EQU *-DMRC
  17487.  
  17488.  
  17489. * DMRDY - "READY."
  17490.  
  17491. DMRDY MSGHDR ABT=BTMS,ACT=4,TLC=20
  17492. DATA 8L READY.
  17493. DATA 1L
  17494. DMRDYL EQU *-DMRDY
  17495.  
  17496.  
  17497. * DMSH - "NETWORK SHUTDOWN - PLEASE LOGOUT."
  17498.  
  17499. DMSH MSGHDR ABT=BTMS,ACT=4,TLC=50
  17500. DATA 10L0 NETWORK
  17501. DATA 10LSHUTDOWN -
  17502. DATA 10L PLEASE LO
  17503. DATA 5LGOUT.
  17504. DATA 1L0
  17505. DMSHL EQU *-DMSH
  17506.  
  17507.  
  17508. * DMSL - */* (OR *SLASH*).
  17509.  
  17510. DMSL MSGHDR ABT=BTMS,ACT=4,TLC=10
  17511. DATA 2L,/
  17512. DMSLL EQU *-DMSL
  17513.  
  17514.  
  17515. * DMTO - " TERMINAL TIMEOUT IN NNN SECONDS. "
  17516.  
  17517. DMTO MSGHDR ABT=BTMS,ACT=4,TLC=50
  17518. DATA 10L TERMINAL
  17519. DATA 10LTIMEOUT IN
  17520. DMTOS DATA 6R SECON
  17521. DATA 2LDS
  17522. DATA 1L
  17523. DMTOL EQU *-DMTO
  17524. NDR TITLE NDR - NETWORK DRIVER MAIN CONTROL.
  17525. NDR SPACE 4,10
  17526. ** NDR - NETWORK DRIVER MAIN CONTROL.
  17527. *
  17528. * THIS IS THE MAIN CONTROL LOOP OF THE NETWORK DRIVER.
  17529. *
  17530. * ENTRY (PCRX) = SET IF EXIT FORCED ON PREVIOUS CYCLE.
  17531. * (DBUG) = DRIVER DEBUG STATUS.
  17532. *
  17533. * EXIT (PCRX) = SET IF EXIT FORCED.
  17534. *
  17535. * CALLS CCT, CFX, CKP, GLM, GTM, MGR, NON, NSQ,
  17536. * RDM, RTF, SHA, SHD.
  17537.  
  17538.  
  17539. NDR SUBR ENTRY/EXIT
  17540.  
  17541. * CHECK DEBUG SWITCH.
  17542.  
  17543. SA2 DBUG READ DRIVER DEBUG WORD
  17544. MX6 -12
  17545. BX3 -X6*X2 MASK BYTE 4
  17546. NZ X3,NDRX IF BYTE 4 SET, EXIT
  17547. LX6 12 MOVE BYTE 3 TO BYTE 4
  17548. BX1 -X6*X2
  17549. AX1 12
  17550. BX6 X2+X1
  17551. SA6 A2+ REWRITE DEBUG WORD
  17552.  
  17553. * CHECK CONNECTION STATUS.
  17554.  
  17555. SX7 -NFCL
  17556. SA1 NTON READ NETON FLAG
  17557. SX6 B0+
  17558. SA6 NDSL
  17559. SA7 CCFC
  17560. NZ X1,NDR1 IF NTON SET
  17561. RJ NON TRY TO CONNECT
  17562. EQ NDRX EXIT
  17563.  
  17564. * CHECK SHUTDOWN STATUS.
  17565.  
  17566. NDR1 SA1 VSHD CHECK SCP STATUS
  17567. SA2 SHDF READ SHUTDOWN FLAG
  17568. PL X1,NDR2 IF NO SCP FAILURE
  17569. PL X2,SCF IF IMMEDIATE SHUTDOWN NOT IN PROGRESS
  17570. NDR2 ZR X2,NDR3 IF NO SHUTDOWN IN PROGESS
  17571. RJ SHD PROCESS SHUTDOWN
  17572. NG X6,NDRX IF IMMEDIATE SHUTDOWN
  17573.  
  17574. * CHECK NETWORK STATUS.
  17575.  
  17576. NDR3 SA1 NBSY GET PREVIOUS CYCLE STATUS
  17577. ZR X1,NDR4 IF NAM NOT BUSY PREVIOUS CYCLE
  17578. RJ CKP CHECK NAM STATUS
  17579. NZ X6,NDRX IF NAM BUSY, EXIT
  17580. NDR4 RJ RTF RELEASE TRACE FILE
  17581. NZ X6,NDRX IF NAM BUSY, EXIT
  17582.  
  17583. * POSTPROCESS PREVIOUS CYCLE NETWORK CALL.
  17584.  
  17585. SA4 IBSY CHECK FOR INPUT
  17586. ZR X4,NDR5 IF NO INPUT
  17587. RJ RDM PROCESS MESSAGE
  17588. NZ X6,NDRX IF UNABLE TO PROCESS AT THIS TIME
  17589. SA1 NBSY
  17590. SA2 CCFC INCREMENT FUNCTION COUNT
  17591. NZ X1,NDRX IF NAM BUSY, EXIT
  17592. SX7 X2+B1
  17593. SA7 A2
  17594. PL X7,NDRX IF FUNCTION LIMIT, EXIT
  17595.  
  17596. * PROCESS ASYNCHRONOUS SUPERVISORY MESSAGES.
  17597.  
  17598. NDR5 SA1 SUPA CHECK FOR SUPERVISORY MESSAGE
  17599. SA2 NDSL CHECK STACK LIMIT
  17600. NZ X2,NDRX IF STACK LIMIT, EXIT
  17601. ZR X1,NDR6 IF NO MESSAGE WAITING
  17602. SB2 B0+
  17603. RJ GTM GET MESSAGE, (B2) = ACN 0
  17604. NZ X6,NDRX IF NAM BUSY, EXIT
  17605. ZR X2,NDR6 IF NO MESSAGE
  17606. RJ RDM PROCESS MESSAGE
  17607. NZ X6,NDR12 IF UNABLE TO PROCESS AT THIS TIME
  17608. SA1 NBSY
  17609. SA2 CCFC INCREMENT FUNCTION COUNT
  17610. NZ X1,NDRX IF NAM BUSY, EXIT
  17611. SX7 X2+B1
  17612. SA7 A2
  17613. NG X7,NDR5 IF NOT FUNCTION LIMIT
  17614. EQ NDRX EXIT
  17615.  
  17616. * TRANSMIT NULL SUPERVISORY MESSAGE QUEUE.
  17617.  
  17618. NDR6 SA1 NSQP CHECK QUEUE POINTER
  17619. ZR X1,NDR7 IF EMPTY
  17620. RJ NSQ TRANSMIT NULL QUEUE
  17621. NZ X6,NDRX IF NAM BUSY, EXIT
  17622.  
  17623. * EXECUTE TERMINAL MANAGER.
  17624.  
  17625. NDR7 RJ CFX CHECK FOR FORCED EXIT
  17626. NZ X6,NDRX IF FORCED EXIT
  17627. RJ MGR EXECUTE TERMINAL MANAGER
  17628. NZ X6,NDRX IF FORCED EXIT OR STACK LIMIT
  17629.  
  17630. * CHECK IF IT IS TIME TO REQUEST INPUT.
  17631.  
  17632. SA1 PCRX CHECK PREVIOUS CYCLE READ EXIT
  17633. SA6 A1+ CLEAR FLAG
  17634. NZ X1,NDR8 IF FORCED READ EXIT PREVIOUS CYCLE
  17635. RJ CCT CHECK CYCLE TIME
  17636. ZR X6,NDRX IF NOT TIME FOR INPUT, EXIT
  17637.  
  17638. * REQUEST DATA OR SUPERVISORY MESSAGE FROM NETWORK.
  17639.  
  17640. NDR8 SA1 SUPA CHECK FOR SUPERVISORY MESSAGE
  17641. SX2 B1 SET (X2) = LIST 1
  17642. SB2 B0 SET (B2) = ACN 0
  17643. ZR X1,NDR9 IF NO SUPERVISORY MESSAGE QUEUED
  17644. RJ GTM GET MESSAGE, ACN =0
  17645. EQ NDR11 CHECK NAM BUSY
  17646.  
  17647. NDR9 RJ CFL CHECK AVAILABLE POT COUNT
  17648. PL X2,NDR10 IF MINIMUM OR ABOVE, GET INPUT FROM NAM
  17649. RJ CKP CHECK NAM STATUS
  17650. SA1 VCPL
  17651. NZ X1,NDRX IF FL INCREASE PENDING
  17652. SA1 SPRM INCREMENT THROTTLE FLAG
  17653. SX6 X1+1
  17654. SA6 A1+
  17655. EQ NDRX EXIT
  17656.  
  17657. NDR10 SX2 B1 SET (X2) = LIST 1
  17658. RJ GLM GET DATA LIST MESSAGE
  17659. NDR11 NZ X6,NDR12 IF NAM BUSY
  17660. ZR X2,NDRX IF NO MESSAGE, EXIT
  17661. SA1 NDSL CHECK STACK LIMIT
  17662. NZ X1,NDR12 IF STACK LIMIT
  17663. RJ RDM PROCESS MESSAGE
  17664. NZ X6,NDR12 IF UNABLE TO PROCESS AT THIS TIME
  17665.  
  17666. * CONTINUE READING IF WE CAN.
  17667.  
  17668. SA2 CCFC INCREMENT CYCLE FUNCTION COUNT
  17669. SA3 NBSY
  17670. NZ X3,NDR12 IF NAM BUSY
  17671. SX7 X2+B1 INCREMENT FUNCTION COUNT
  17672. SA7 A2
  17673. NZ X7,NDR8 IF NOT CYCLE LIMIT, LOOP
  17674. RJ CFX CHECK FOR FORCED EXIT
  17675. ZR X6,NDR8 IF NOT FORCED EXIT, LOOP
  17676.  
  17677. * SET FORCED READ EXIT FLAG AND EXIT.
  17678.  
  17679. NDR12 SX6 B1+ SET FORCED READ EXIT FLAG
  17680. SA6 PCRX
  17681. EQ NDRX EXIT
  17682. MGR TITLE MGR - TERMINAL MANAGER.
  17683. MGR SPACE 4,20
  17684. ** MGR - TERMINAL MANAGER.
  17685. *
  17686. * SCANS THE NETWORK TERMINAL TABLES AND MESSAGE STATUS
  17687. * TABLES AND DIRECTS PROCESSING AS REQUIRED FOR EACH
  17688. * ACTIVE TERMINAL.
  17689. *
  17690. * *MGR* PERIODICALLY CHECKS THE EXECUTIVES OTHER DRIVER
  17691. * STACKS AND THE MONITOR REQUEST STACK TO SEE IF THEY
  17692. * REQUIRE PROCESSING. IF SO, *MGR* WILL EXIT.
  17693. *
  17694. * ENTRY NAM NOT BUSY.
  17695. * (TMSI) = CURRENT SCAN INDEX.
  17696. *
  17697. * EXIT (X6) = NONZERO IF FORCED EXIT OR STACK LIMIT.
  17698. * (CCFC) = CURRENT CYCLE FUNCTION COUNT COMPLEMENT.
  17699. *
  17700. * CALLS CFX, GAT, ISW, PDR, PQO, RDM, SSM, TFR, UNQ.
  17701.  
  17702.  
  17703. MGR SUBR ENTRY/EXIT
  17704.  
  17705. * CHECK IF IT IS TIME TO CYCLE THE MANAGER.
  17706.  
  17707. SA2 TMSI GET SCAN INDEX
  17708. SB2 X2+ (B2) = SCAN INDEX (TERMINAL NUMBER)
  17709. TX3 X2,-VNTP
  17710. NZ X3,MGR1 IF NOT STARTING FROM GROUND ZERO
  17711. BX6 X6-X6 CLEAR ACTIVITY INDICATOR
  17712. SA2 MGRB
  17713. SA6 A2
  17714. NZ X2,MGR1 IF ACTIVITY PRESENT - CONTINUE PROCESSING
  17715. SA3 RTIM CURRENT REAL TIME
  17716. SA4 MGRA TIME OF LAST CYCLE
  17717. SX5 NMCT SET MINIMUM MANAGER SCAN CYCLE TIME
  17718. MX6 -36
  17719. IX4 X3-X4 ELAPSED TIME
  17720. BX4 -X6*X4 MASK MILLISECONDS
  17721. LX7 X3
  17722. IX4 X4-X5 COMPARE TO MINIMUM
  17723. BX6 X6-X6 RETURN (X6) = 0
  17724. NG X4,MGRX IF NOT MINIMUM, RETURN
  17725. SA7 A4+ RESET START TIME
  17726.  
  17727. * FIND TERMINAL WITH ACTIVITY BIT SET.
  17728.  
  17729. MGR1 RJ GAT GET ACTIVE TERMINAL
  17730. NZ X6,MGR2 IF TERMINAL FOUND
  17731. TX7 B0,VNTP RESET SCAN INDEX
  17732. SA7 TMSI
  17733. EQ MGRX RETURN
  17734.  
  17735. * PROCESS REENTRY.
  17736.  
  17737. MGR2 SA6 TMSI STORE SCAN INDEX
  17738. SA6 SSPA SET TERMINAL NUMBER IN SSPA
  17739. SA1 NDSL CHECK STACK LIMIT
  17740. NZ X1,MGR7 IF STACK LIMIT
  17741. RJ PDR PROCESS DRIVER REENTRY
  17742. NZ X6,MGR6 IF REENTRY PROCESSED
  17743.  
  17744. * PROCESS FUNCTION REQUEST.
  17745.  
  17746. SA1 A0+VDCT READ VDCT
  17747. PL X1,MGR3 IF NOT FUNCTION REQUEST
  17748. RJ TFR PROCESS REQUEST
  17749. EQ MGR6
  17750.  
  17751. * CHECK FOR QUEUED OUTPUT.
  17752.  
  17753. MGR3 RJ PQO PROCESS QUEUED OUTPUT
  17754. NZ X6,MGR6 IF OUTPUT
  17755.  
  17756. * CHECK FOR SHUTDOWN WARNING.
  17757.  
  17758. SA4 SHDF CHECK SHUTDOWN FLAG
  17759. ZR X4,MGR4 IF SHUTDOWN NOT IN PROGRESS
  17760. TA5 B2,VMST GET VMST ENTRY
  17761. LX5 59-56
  17762. NG X5,MGR4 IF SHUTDOWN WARNING SENT
  17763. RJ ISW ISSUE SHUTDOWN WARNING
  17764. EQ MGR6
  17765.  
  17766. * CHECK FOR INTERNAL TYPEAHEAD QUEUE.
  17767.  
  17768. MGR4 TA2 B2,VMST
  17769. MX6 -12
  17770. BX3 -X6*X2
  17771. ZR X3,MGR5 IF NO DATA QUEUED
  17772. SA1 A0+VROT
  17773. SX3 1S5
  17774. BX6 X1*X3
  17775. NZ X6,MGR7 IF INPUT REQUEST IS ALREADY SATISFIED
  17776. MX5 -5
  17777. BX5 -X5*X1
  17778. SX5 X5-1
  17779. SB5 B2
  17780. RJ GRT
  17781. BX5 X4+X5
  17782. ZR X5,MGR4.1 IF WAITING TO START A NEW JOB STEP
  17783. SA1 A0+VFST GET SCREEN MANAGEMENT STATE
  17784. MX0 -6
  17785. AX1 18
  17786. BX1 -X0*X1
  17787. SX1 X1-/SMFIF/SINP
  17788. ZR X1,MGR4.1 IF SMFEX IS AWAITING INPUT
  17789. AX4 48
  17790. SX4 X4-INP$
  17791. NZ X4,MGR7 IF NOT WAITING FOR PROGRAM INPUT
  17792. MGR4.1 RJ UNQ UNQUEUE TYPEAHEAD INPUT DATA
  17793. SX6 B1+
  17794. RJ RDM PROCESS MESSAGE
  17795. EQ MGR6 UPDATE FUNCTION COUNT
  17796.  
  17797. * CLEAR TERMINAL ACTIVITY BIT.
  17798.  
  17799. MGR5 TX2 B2,-VNTP SET TERMINAL ORDINAL
  17800. SX6 37B
  17801. BX6 X6*X2 TERMINAL ORDINAL MOD 32
  17802. AX2 5 TERMINAL ORDINAL/32
  17803. TA2 X2,VNAT READ TABLE WORD
  17804. SB5 X6-59
  17805. MX6 -1
  17806. AX6 X6,B5
  17807. BX6 X6*X2 CLEAR BIT
  17808. SA6 A2 REWRITE TABLE WORD
  17809. EQ MGR7
  17810.  
  17811. * UPDATE FUNCTION COUNT.
  17812.  
  17813. MGR6 SA1 CCFC GET FUNCTION COUNT
  17814. SX7 X1+B1 UPDATE COUNT
  17815. SA7 A1
  17816.  
  17817. * ADVANCE SCAN TO NEXT TERMINAL.
  17818.  
  17819. MGR7 SA1 HACN GET HIGHEST ACTIVE ACN
  17820. SA2 NBSY
  17821. SB2 B2+B1 ADVANCE SCAN
  17822. TX7 B0,VNTP ASSUME END OF SCAN
  17823. SB7 X1 (B7) = HIGHEST ACTIVE ACN
  17824. SX6 B1 PRESET (X6) EXIT STATUS
  17825. GT B2,B7,MGR8 IF END OF SCAN
  17826. SX7 B2 SET CURRENT SCAN INDEX
  17827. MGR8 SA7 TMSI STORE SCAN INDEX
  17828. NZ X2,MGRX IF NAM BUSY, EXIT
  17829. SX6 B0+ RESET (X6) EXIT STATUS
  17830. GT B2,B7,MGRX IF END OF SCAN, EXIT
  17831. RJ CFX CHECK FOR FORCED EXIT
  17832. NZ X6,MGRX IF FORCED EXIT
  17833. SA1 CCFC GET CYCLE FUNCTION COUNT
  17834. ZR X1,MGRX IF FUNCTION LIMIT
  17835. EQ MGR1 PROCESS NEXT TERMINAL
  17836.  
  17837. MGRA CON 0 REAL TIME LAST SCAN
  17838. MGRB CON 0 ACTIVITY INDICATOR (SET BY CBL)
  17839. NSQ TITLE NSQ - NULL SUPERVISORY QUEUE PROCESSOR.
  17840. NSQ SPACE 4,20
  17841. ** NSQ - PROCESS NULL SUPERVISORY MESSAGE QUEUE.
  17842. *
  17843. * THE NULL SUPERVISORY MESSAGE QUEUE CONSISTS OF THOSE
  17844. * MESSAGES WHICH, FOR ONE REASON OR ANOTHER, CANNOT BE
  17845. * ASSIGNED TO A TERMINAL'S MESSAGE STATUS TABLE.
  17846. *
  17847. * ENTRY (NSQP) = 30/LAST, 30/FIRST MESSAGE POT POINTER.
  17848. *
  17849. * EXIT (NSQP) = UPDATED.
  17850. * (NBSY) = SET IF NAM BUSY.
  17851. * (OTPP) = MESSAGE POT POINTER IF NAM BUSY.
  17852. * (OBSY) = SET IF NAM BUSY.
  17853. * (X6) = (NBSY).
  17854. *
  17855. * USES (NCPA) = HEADER ADDRESS.
  17856. * (NCPB) = TEXT ADDRESS.
  17857. *
  17858. * CALLS DLP, DPT, SSM.
  17859.  
  17860.  
  17861. NSQ SUBR ENTRY/EXIT
  17862. NSQ1 SA2 NSQP READ QUEUE POINTER
  17863. SX6 B0+
  17864. ZR X2,NSQX IF QUEUE EMPTY, EXIT
  17865. SX1 X2 SET MESSAGE POT POINTER
  17866.  
  17867. * UPDATE QUEUE POINTER.
  17868.  
  17869. BX2 X2-X1 CLEAR FIRST POT FROM QUEUE POINTER
  17870. RJ DLP DELINK MESSAGE POT
  17871. NZ X7,NSQ2 IF POT WAS LINKED
  17872. SX2 B0+ CLEAR LAST POT POINTER
  17873. NSQ2 BX7 X2+X7 UPDATE QUEUE POINTER
  17874. SA7 A2
  17875.  
  17876. * EXTRACT ACN FROM MESSAGE.
  17877.  
  17878. BX2 X1 SET POT ADDRESS
  17879. LX2 3
  17880. TB4 X2,VBMP
  17881. SA2 B4+B1 READ FIRST MESSAGE WORD
  17882. MX3 8 MASK PRIMARY FUNCTION CODE
  17883. BX3 X3*X2
  17884. LX3 8
  17885. SX5 X3-PFTC
  17886. NZ X5,NSQ3 IF NOT *PFTC*
  17887. SA2 B4 READ MESSAGE HEADER
  17888. AX2 42-24
  17889. NSQ3 AX2 24-0 MASK ACN
  17890. MX3 -12
  17891. BX2 -X3*X2
  17892. SB2 X2 SET ACN
  17893. TA2 B2,VMST READ VMST ENTRY
  17894. ZR X2,NSQ4 IF TERMINAL NOT CONNECTED
  17895.  
  17896. * TRANSMIT MESSAGE TO NETWORK.
  17897.  
  17898. RJ SSM SEND SUPERVISORY MESSAGE
  17899. ZR X6,NSQ1 IF COMPLETE, LOOP FOR NEXT MESSAGE
  17900. EQ NSQX RETURN
  17901.  
  17902. * DISCARD MESSAGE IF TERMINAL NO LONGER CONNECTED.
  17903.  
  17904. NSQ4 SB3 X1 DROP POT(S)
  17905. SB4 B0
  17906. RJ DPT
  17907. EQ NSQ1 CONTINUE
  17908. RDM TITLE RDM - RECEIVED DATA MANAGER.
  17909. RDM SPACE 4,20
  17910. ** RDM - RECEIVED DATA MANAGER.
  17911. *
  17912. * DIRECTS THE PROCESSING OF A RECEIVED NETWORK MESSAGE.
  17913. *
  17914. * ENTRY (IBSY) = MESSAGE HEADER ADDRESS.
  17915. * (RCVH) = MESSAGE HEADER.
  17916. * (RCVB) = MESSAGE TEXT.
  17917. * (NGLN) = .GE. 4 IF DATA REQUESTED FOR SPECIFIC
  17918. * TERMINAL.
  17919. * (X6) = QUEUED MESSAGE FLAG, 0=NEW, 1=QUEUED.
  17920. *
  17921. * EXIT IF MESSAGE PROCESSED:
  17922. * (X6) = 0.
  17923. * (IBSY) = 0.
  17924. * (RCVB) = 0.
  17925. * (RCVH) = 0.
  17926. * (PCRX) = 0.
  17927. *
  17928. * IF MESSAGE CANNOT BE PROCESSED AT THIS TIME:
  17929. * (X6) = NONZERO.
  17930. *
  17931. * IF NULL MESSAGE RECEIVED:
  17932. * (PCRX) = ZERO IF DATA NOT REQUESTED FOR
  17933. * SPECIFIC TERMINAL.
  17934. *
  17935. * CALLS ABT, CFL, DCI, GFM, GRT, PIN, QTI, SMP, UAC, VAC.
  17936.  
  17937.  
  17938. RDM SUBR ENTRY/EXIT
  17939. SA6 RDMA SAVE QUEUED MESSAGE FLAG
  17940.  
  17941. * CHECK BLOCK TYPE.
  17942.  
  17943. RDM1 SA1 RCVH READ MESSAGE HEADER
  17944. BX2 X1
  17945. AX2 54 SHIFT BLOCK TYPE
  17946. ZR X2,RDM10 IF NULL MESSAGE BLOCK
  17947. SX5 X2-BTSV
  17948. ZR X5,RDM3 IF SUPERVISORY MESSAGE
  17949. NG X5,RDM5 IF DATA MESSAGE (BLK OR MSG BLOCK)
  17950.  
  17951. * PROCESS ERROR.
  17952.  
  17953. RDM2 SX6 3RRDM SET ERROR CODE
  17954. RJ ABT PROCESS ERROR
  17955. EQ RDM4
  17956.  
  17957. * PROCESS SUPERVISORY MESSAGE.
  17958.  
  17959. RDM3 RJ SMP EXECUTE PROCESSOR
  17960.  
  17961. * CLEAR INPUT STATUS WORDS AND EXIT.
  17962.  
  17963. RDM4 BX6 X6-X6 CLEAR INPUT BUFFER
  17964. SA6 RCVH
  17965. SA6 A6+B1
  17966. SA6 IBSY SET INPUT NOT BUSY
  17967. EQ RDMX RETURN
  17968.  
  17969. * INITIALIZE *BLK* AND *MSG* DATA BLOCK PROCESSING.
  17970.  
  17971. RDM5 BX2 X1 EXTRACT ACN
  17972. MX6 -12
  17973. AX2 42-0
  17974. BX7 -X6*X2
  17975. LX1 59-17 BLOCK TRUNCATED BIT
  17976. SB2 X7
  17977. SA7 SSPA INITIALIZE (SSPA)
  17978. NG X1,RDM8 IF BLOCK TRUNCATED
  17979. RJ VAC VALIDATE ACN
  17980. NG X6,RDM2 IF INCORRECT ACN
  17981. TTADD B2,A0,X5,X6 SET TERMINAL TABLE ADDRESS
  17982.  
  17983. * SET INPUT STATUS AND CLEAR TERMINAL TIMEOUT FLAGS.
  17984.  
  17985. SX4 B1
  17986. LX4 17-0
  17987. SA5 A0+VFST CLEAR SCREEN MODE TIMEOUT FLAG
  17988. BX6 -X4*X5
  17989. SA6 A5 REWRITE VFST
  17990. LX4 48-17 CLEAR TIMEOUT FLAG
  17991. BX2 -X4*X2
  17992. LX4 54-48 SET INPUT RECIEVED FLAG
  17993. BX6 X4+X2
  17994. SA6 A2 REWRITE VMST ENTRY
  17995.  
  17996. * CHECK FOR DISCARD INPUT CONDITION.
  17997.  
  17998. LX1 17-59 RESTORE HEADER POSITION
  17999. RJ DCI DISCARD INPUT IF NECESSARY
  18000. NZ X0,RDM4 IF INPUT TO DISCARD
  18001.  
  18002. * CHECK INTERNAL TYPEAHEAD QUEUE.
  18003.  
  18004. RJ CFL CHECK POT SUPPLY
  18005. NG X2,RDM7 IF LOW POT SUPPLY
  18006. SA5 RDMA
  18007. NZ X5,RDM6 IF THIS IS A QUEUED MESSAGE
  18008. TA5 B2,VMST
  18009. MX0 -12
  18010. BX5 -X0*X5
  18011. NZ X5,RDM5.1 IF QUEUE ALREADY EXISTS, ADD INPUT TO END
  18012. SA1 A0+VROT
  18013. SX6 1S5
  18014. BX6 X1*X6
  18015. NZ X6,RDM5.1 IF INPUT REQUEST IS ALREADY SATISFIED
  18016. MX5 -5
  18017. BX5 -X5*X1
  18018. SX5 X5-1
  18019. SB5 B2
  18020. RJ GRT GET REENTRY
  18021. BX5 X4+X5
  18022. ZR X5,RDM6 IF WAITING TO START A NEW JOB STEP
  18023. AX4 48
  18024. SX4 X4-INP$
  18025. ZR X4,RDM6 IF WAITING FOR PROGRAM INPUT
  18026. SA4 A0+VFST GET SCREEN MANAGEMENT STATE
  18027. MX0 -6
  18028. AX4 18
  18029. BX4 -X0*X4
  18030. SX4 X4-/SMFIF/SINP
  18031. ZR X4,RDM6 IF SMFEX IS AWAITING INPUT
  18032. RDM5.1 RJ QTI QUEUE TYPEAHEAD INPUT MESSAGE
  18033. RJ SAB SET ACTIVITY BIT
  18034. EQ RDM4 EXIT
  18035.  
  18036. * PROCESS INPUT MESSAGE.
  18037.  
  18038. RDM6 RJ PIN PROCESS INPUT DATA
  18039. ZR X6,RDM7 IF NOT ENOUGH POTS AVAILABLE
  18040. PL X0,RDM8 IF OVERFLOW OCCURED
  18041. SX7 B1 INDICATE INPUT ACCOUNTING
  18042. SA1 RCVH SET HEADER ADDRESS
  18043. RJ UAC UPDATE ACCOUNTING
  18044. EQ RDM4 COMPLETE INPUT PROCESSING
  18045.  
  18046. * RETURN IF UNABLE TO PROCESS INPUT.
  18047.  
  18048. RDM7 SX6 B1 (X6) = UNABLE TO PROCESS STATUS
  18049. EQ RDMX RETURN
  18050.  
  18051. * PROCESS OVERFLOW OF LOGICAL LINE SIZE.
  18052.  
  18053. RDM8 BX6 X6-X6 SET OVERFLOW CONDITION
  18054. SA2 A0+VDPT
  18055. SX7 VXLL+3
  18056. BX7 X2+X7
  18057. SA7 A2
  18058. RJ DCI DISCARD INPUT
  18059. EQ RDM4 COMPLETE PROCESSING
  18060.  
  18061. * CLEAR (PCRX) IF DATA NOT REQUESTED FOR SPECIFIC
  18062. * TERMINAL.
  18063.  
  18064. RDM10 SA1 NGLN GET REQUEST LIST/ACN NUMBER
  18065. BX6 X6-X6
  18066. AX1 2
  18067. NZ X1,RDM4 IF FOR SPECIFIC ACN
  18068. SA6 PCRX CLEAR PCRX
  18069. EQ RDM4 COMPLETE READ PROCESSING
  18070.  
  18071.  
  18072. RDMA CON 0 QUEUED MESSAGE FLAG
  18073. SHD TITLE SHD - NETWORK SHUTDOWN PROCESSOR.
  18074. SHD SPACE 4,20
  18075. ** SHD - NETWORK SHUTDOWN PROCESSOR.
  18076. *
  18077. * ENTRY (SHDF) = 1/I, 59/ADDR.
  18078. * I = IMMEDIATE SHUTDOWN BIT.
  18079. * ADDR = PROCESSING ADDRESS.
  18080. * (SSCR) = SCP STATUS.
  18081. *
  18082. * EXIT AFTER ALL SHUTDOWNS COMPLETE:
  18083. * (NTON) = OFF.
  18084. * (SHDF) = ZERO.
  18085. * (SSCR) = ZERO.
  18086. * (NFRT) = REAL TIME (SECONDS).
  18087. *
  18088. * CALLS CLE, DAP, DPT, ERQ, IDM, NOF, SHA, SRE.
  18089. *
  18090. * MACROS MESSAGE.
  18091.  
  18092.  
  18093. SHD SUBR ENTRY/EXIT
  18094. SA1 SHDF CHECK SHUTDOWN FLAG
  18095. SB7 X1+
  18096. ZR B7,SHD1 IF NEW SHUTDOWN
  18097. JP B7 ENTER SEQUENCE
  18098.  
  18099. * INITIALIZE NORMAL SHUTDOWN.
  18100.  
  18101. SHD1 TX6 0,VNTP INITIALIZE CURRENT TERMINAL TABLE
  18102. SA6 SHDB
  18103. SX6 SHDD
  18104. SA6 SHDC INITIALIZE DAYFILE COUNTER
  18105. SX6 B0+
  18106. SA6 SHDG CLEAR NON-EJT TERMINAL FLAG
  18107. NG X1,SHD5 IF IMMEDIATE SHUTDOWN
  18108. SA1 STIM GET REAL TIME (SECONDS)
  18109. SX6 =C* SHUTDOWN WARNING.*
  18110. BX7 X1
  18111. SA7 SHDA SET STARTING TIME
  18112. RJ IDM ISSUE DAYFILE MESSAGE
  18113.  
  18114. * CHECK IF ALL USERS OFF OR SHOULD BE OFF.
  18115.  
  18116. SHD2 RJ SHA RESET HIGHEST ACTIVE ACN
  18117. ZR X6,SHD6 IF ALL USERS OFF
  18118. SA1 SHDA GET START TIME
  18119. SA2 STIM GET REAL TIME (SECONDS)
  18120. SX3 SDTO
  18121. IX1 X2-X1 ELAPSED TIME
  18122. IX1 X1-X3
  18123. PL X1,SHD6 IF TIME-OUT ELAPSED
  18124. SB7 SHD2 SET REENTRY ADDRESS
  18125.  
  18126. * SET SHUTDOWN REENTRY.
  18127. *
  18128. * ENTRY (B7) = NORMAL SHUTDOWN ADDRESS IF POSITIVE.
  18129. * = IMMEDIATE SHUTDOWN ADDRESS IF NEGATIVE.
  18130.  
  18131. SHD3 SX6 B7+ SET REENTRY ADDRESS
  18132. PL X6,SHD4 IF NORMAL
  18133. MX7 1 SET IMMEDIATE
  18134. SX6 -B7
  18135. BX6 X6+X7
  18136. SHD4 SA6 SHDF STORE SHUTDOWN ADDRESS
  18137. EQ SHDX EXIT/REENTER
  18138.  
  18139. * INITIALIZE IMMEDIATE SHUTDOWN.
  18140.  
  18141. SHD5 SX6 =C* FORCED NETWORK SHUTDOWN.*
  18142. RJ IDM ISSUE DAYFILE MESSAGE
  18143.  
  18144. * DROP OUTPUT AND NULL SUPERVISORY QUEUE POTS.
  18145.  
  18146. SHD6 SA1 NSQP GET QUEUE POINTER
  18147. ZR X1,SHD7 IF QUEUE EMPTY
  18148. SB3 X1 DROP POTS
  18149. SB4 B0
  18150. RJ DPT
  18151. SX6 B0+ CLEAR QUEUE POINTER
  18152. SA6 NSQP
  18153. SHD7 SA1 OBSY CHECK IF OUTPUT LEFT BUSY
  18154. SA2 OTPP
  18155. SB7 -SHD8
  18156. ZR X1,SHD3 IF NOT BUSY, REENTER
  18157. ZR X2,SHD3 IF NO POTS TO DROP, REENTER
  18158. SB3 X2 DROP OUTPUT POT CHAIN
  18159. SB4 B0
  18160. RJ DPT
  18161. SX6 B0+ CLEAR POINTERS
  18162. SA6 OBSY
  18163. SA6 OTPP
  18164. SB7 -SHD8 SET REENTRY ADDRESS
  18165. EQ SHD3 REENTER
  18166.  
  18167. * LOGOFF ALL REMAINING ACTIVE USERS (REENTRY).
  18168.  
  18169. SHD8 SA1 NDSL CHECK STACK LIMIT
  18170. SB7 -SHD8 SET REENTRY
  18171. SA2 SHDB GET CURRENT TERMINAL NUMBER
  18172. NZ X1,SHD3 IF STACK LIMIT, REENTER
  18173. TB6 0,VNTP,LTN
  18174. SB2 X2
  18175. SX6 X2+B1
  18176. GT B2,B6,SHD10 IF ALL TERMINALS PROCESSED
  18177. SA6 A2 UPDATE CURRENT TERMINAL
  18178. TTADD B2,A0,X2,X3
  18179. SA2 A0+VUIT
  18180. ZR X2,SHD8 IF TERMINAL TABLE ALREADY EMPTY
  18181. MX7 -12 GET EJT ORDINAL
  18182. BX7 -X7*X2
  18183. SA2 A0+VDCT
  18184. LX2 59-57
  18185. SX6 B1
  18186. PL X2,SHD8.1 IF USER NOT LOGGED IN
  18187. NZ X7,SHD8.2 IF EJT ORDINAL
  18188. SHD8.1 SA6 SHDG FLAG NON-EJT TERMINAL TABLE
  18189. EQ SHD8 LOOP TO NEXT TERMINAL
  18190.  
  18191. SHD8.2 SB7 B0+ CLEAR ANY DRIVER REENTRY
  18192. RJ SRE
  18193. RJ DAP CLEAR OUTPUT ASSIGNMENTS
  18194. TA1 B2,VMST DROP VMST POT
  18195. MX7 -12
  18196. BX7 -X7*X1
  18197. SB3 X7
  18198. SB4 B0
  18199. MX7 42 CLEAR POT POINTER
  18200. MX3 57 CLEAR UNANSWERED BLOCKS
  18201. LX3 33
  18202. BX1 X3*X1
  18203. BX7 X7*X1
  18204. MX3 1 CLEAR TERMINAL ON LINE
  18205. PL X7,SHD8 IF TERMINAL NOT ON-LINE, HUP ALREADY SENT
  18206. BX7 -X3*X7
  18207. SA7 A1 REWRITE VMST
  18208. ZR B3,SHD9 IF NO POT
  18209. RJ DPT DROP POTS
  18210. SHD9 SX7 B0
  18211. SB3 B0
  18212. SX6 /TLX/HUP
  18213. RJ ERQ ENTER REQUEST TO HANG UP PHONE
  18214. TX2 B2,-VNTP CLEAR ACTIVITY BIT
  18215. SX6 37B
  18216. BX6 X6*X2 TERMINAL ORDINAL MOD 32
  18217. AX2 5 TERMINAL ORDINAL/32
  18218. TA2 X2,VNAT READ TABLE WORD
  18219. SB5 X6-59
  18220. MX6 -1
  18221. AX6 X6,B5
  18222. BX6 X6*X2 CLEAR BIT
  18223. SA6 A2 REWRITE TABLE WORD
  18224. EQ SHD8 LOOP TO END OF TERMINALS
  18225.  
  18226. * WAIT FOR ALL TERMINAL TABLES TO BE CLEARED.
  18227.  
  18228. SHD10 TB2 -1,VNTP INITIALIZE TERMINAL SCAN
  18229. SX7 B0+
  18230. SA7 SHDB
  18231. SHD11 SB2 B2+B1 ADVANCE TO NEXT TERMINAL
  18232. TB6 0,VNTP,LTN
  18233. TTADD B2,A0,X2,X1
  18234. GT B2,B6,SHD13 IF ALL TERMINALS HAVE BEEN SCANNED
  18235. SA1 A0+VUIT
  18236. ZR X1,SHD11 IF TERMINAL TABLE EMPTY
  18237. TA3 B2,VMST
  18238. NG X3,SHD11.1 IF TERMINAL STILL ON-LINE
  18239. MX6 -12
  18240. BX5 -X6*X1 GET EJT ORDINAL
  18241. MX6 13
  18242. SX7 B1 FLAG NON-EMPTY TERMINAL TABLE
  18243. SA1 A0+VDCT
  18244. ZR X5,SHD12 IF JOB HAS BEEN DETACHED
  18245.  
  18246. * CLEAR DRIVER REQUEST FROM VDCT. IF RETRY COUNT EXHAUSTED
  18247. * ISSUE DAYFILE MESSAGE. LEAVE TERMINAL TABLE INTACT TO
  18248. * PREVENT POSSIBLE PP HANGS.
  18249.  
  18250. SA7 SHDB
  18251. LX6 12
  18252. BX6 -X6*X1 CLEAR CURRENT DRIVER REQUEST
  18253. SA6 A1+ REWRITE VDCT
  18254. SHD11.1 SA1 SHDC
  18255. MX6 24
  18256. LX6 -6
  18257. NZ X1,SHD11 IF NOT TIME TO ISSUE MESSAGE
  18258. SA2 A0+VFST GET JSN
  18259. LX2 -6
  18260. BX2 X2*X6
  18261. SA1 SHDE PUT JSN INTO MESSAGE
  18262. BX1 -X6*X1
  18263. BX6 X1+X2
  18264. SA6 A1+
  18265. MESSAGE SHDE,,R
  18266. EQ SHD11 CHECK NEXT TERMINAL
  18267.  
  18268. SHD12 RJ //CLE CLEAN UP TERMINAL TABLE
  18269. EQ SHD11 CHECK NEXT TERMINAL
  18270.  
  18271. SHD13 SA1 SHDG
  18272. ZR X1,SHD14 IF NO TERMINAL WITHOUT EJT
  18273. TX6 0,VNTP RESET CURRENT TERMINAL TABLE
  18274. SA6 SHDB
  18275. SX6 B0+
  18276. SA6 SHDG CLEAR NON-EJT TERMINAL FLAG
  18277. SB7 -SHD8
  18278. EQ SHD15 REPEAT FIRST LOOP
  18279.  
  18280. SHD14 SA1 SHDB
  18281. SB7 -SHD10
  18282. NZ X1,SHD15 IF AT LEAST ONE TERMINAL REMAINS
  18283.  
  18284. * SET SHUTDOWN COMPLETE.
  18285.  
  18286. SHD14.1 RJ NOF ISSUE *NETOFF* REQUEST
  18287. SX6 =C* NETWORK SHUTDOWN COMPLETE.*
  18288. RJ IDM ISSUE DAYFILE MESSAGE
  18289. SX7 B0+ CLEAR NETON STATUS
  18290. SA1 STIM READ REAL TIME (SECONDS)
  18291. SA7 NTON
  18292. SA7 SHDF CLEAR SHUTDOWN FLAG
  18293. SA7 VSHD CLEAR SCP STATUS
  18294. MX6 36 SET (X6) STATUS NEGATIVE
  18295. BX7 X1 SET NETWORK FUNCTION TIME
  18296. SA7 NFRT
  18297. EQ NDRX EXIT FROM DRIVER
  18298.  
  18299. SHD15 SA2 SHDC CHECK DAYFILE COUNTER
  18300. SX6 X2-1
  18301. PL X6,SHD16 IF COUNTER NOT EXPIRED
  18302. EQ SHD14.1 COMPLETE SHUTDOWN
  18303.  
  18304. SHD16 SA6 A2+ REWRITE COUNTER
  18305. EQ SHD3 RETRY LOGOFF
  18306.  
  18307. SHDA CON 0 SHUTDOWN START TIME
  18308. SHDB CON 0 NON-EMPTY TERMINAL TABLE FLAG
  18309. SHDC CON 0 DAYFILE COUNTER
  18310. SHDD EQU 3000D DAYFILE CONSTANT
  18311. SHDE DATA 10L **** CANN
  18312. DATA 10LOT BE DETA
  18313. DATA 5LCHED.
  18314. SHDG CON 0 SET IF NO EJT ORDINAL IN TERMINAL TABLE
  18315. SMP TITLE SMP - SUPERVISORY MESSAGE PROCESSOR.
  18316. SMP SPACE 4,20
  18317. ** SMP - SUPERVISORY MESSAGE PROCESSOR.
  18318. *
  18319. * DIRECTS THE PROCESSING OF INCOMING NETWORK SUPERVISORY
  18320. * MESSAGES.
  18321. *
  18322. * ENTRY (RCVH) = MESSAGE HEADER.
  18323. * (RCVB) = MESSAGE TEXT.
  18324. *
  18325. * EXIT TO PRIMARY FUNCTION PROCESSOR VIA *PCS*:
  18326. * (A0) = TERMINAL TABLE ADDRESS.
  18327. * (B2) = TERMINAL NUMBER (ACN).
  18328. * (B3) = PRIMARY FUNCTION CODE.
  18329. * (X3) = STATUS BITS FROM *CON/END/N*.
  18330. * (X7) = SUBFUNCTION CODE.
  18331. * (RCVH) = MESSAGE HEADER.
  18332. * (RCVB) = MESSAGE TEXT.
  18333. * (SMPF) = PRIMARY FUNCTION CODE.
  18334. * (SMSF) = SUBFUNCTION CODE.
  18335. *
  18336. * CALLS ABT, PCS, SFE.
  18337.  
  18338.  
  18339. SMP SUBR ENTRY/EXIT
  18340.  
  18341. * EXTRACT FUNCTION CODES.
  18342.  
  18343. SA2 RCVB READ FIRST WORD OF MESSAGE
  18344. MX5 -24 GET STATUS BITS
  18345. BX3 -X5*X2
  18346. MX5 -6
  18347. AX2 44-0 SHIFT SUBFUNCTION CODE
  18348. BX7 -X5*X2 (X7) = SUBFUNCTION CODE
  18349. SA7 SMSF SAVE SUBFUNCTION CODE
  18350. AX2 52-44 SHIFT PRIMARY FUNCTION CODE
  18351. MX5 -8
  18352. BX6 -X5*X2
  18353. SB3 X6+ (B3) = PRIMARY FUNCTION CODE
  18354. SA6 SMPF SAVE PRIMARY FUNCTION CODE
  18355. LX7 24 FORMAT *SSPA* PARAMETERS
  18356. LX6 12
  18357. SB2 B0 CLEAR TERMINAL NUMBER
  18358. BX5 X7+X6 (X5) = *SSPA* PARAMETER WORD
  18359. SB4 B0 SET TABLE SEARCH INDEX
  18360. MX4 -12
  18361.  
  18362. * SEARCH TABLE FOR PRIMARY FUNCTION PROCESSOR.
  18363.  
  18364. SMP1 SA2 TSMP+B4 READ TABLE ENTRY
  18365. SB4 B4+B1
  18366. SB7 X2 EXTRACT PRIMARY FUNCTION CODE
  18367. ZR X2,SMPE IF END OF TABLE, ERROR
  18368. NE B7,B3,SMP1 IF NO MATCH, CONTINUE SEARCH
  18369.  
  18370. * EXTRACT ACN AND ENTER PRIMARY FUNCTION CODE PROCESSOR.
  18371.  
  18372. SA1 RCVB ASSUME ACN IN FIRST WORD OF TEXT
  18373. AX2 18 SHIFT PROCESSOR ADDRESS
  18374. SB7 X2 SET PROCESSOR ADDRESS
  18375. AX1 24
  18376. PL B7,SMP2 IF ACN IN FIRST WORD OF TEXT
  18377. SB7 -B7
  18378. SA1 RCVH GET ACN FROM HEADER
  18379. AX1 42
  18380. SMP2 BX1 -X4*X1 EXTRACT ACN
  18381. BX5 X5+X1 MERGE WITH *SSPA* WORD
  18382. RJ PCS EXECUTE PROCESSOR
  18383. EQ SMPX EXIT
  18384.  
  18385.  
  18386. ** SMPE - SUPERVISORY MESSAGE ERROR EXIT.
  18387.  
  18388. SMPE RJ SFE ISSUE ERROR MESSAGE
  18389. EQ SMPX EXIT
  18390.  
  18391.  
  18392. ** TSMP - SMP PRIMARY FUNCTION PROCESSOR TABLE.
  18393. *
  18394. * ENTRY 24/, 18/ADR, 18/PFC.
  18395. * ADR = PROCESSOR ADDRESS.
  18396. * IF POSITIVE, THIS IS AN ASYNCHRONOUS
  18397. * SUPERVISORY MESSAGE AND THE ACN IS
  18398. * CONTAINED IN BITS 35-24 OF THE FIRST
  18399. * WORD OF THE MESSAGE TEXT. IF NEGATIVE,
  18400. * THIS IS A SYNCHRONOUS SUPERVISORY MESSAGE
  18401. * AND THE ACN IS CONTAINED IN BITS 53-42 OF
  18402. * THE MESSAGE HEADER.
  18403. * PFC = PRIMARY FUNCTION CODE.
  18404.  
  18405. TSMP BSS 0
  18406. VFD 24/0,18/CON,18/PFCN CONNECT FUNCTION
  18407. VFD 24/0,18/FCN,18/PFFC TERMINAL FUNCTION
  18408. VFD 24/0,18/LGL,18/PFLG LOGICAL ERROR
  18409. VFD 24/0,18/NSH,18/PFSH NETWORK SHUTDOWN
  18410. VFD 24/0,18/TCH,18/PFCH TERMINAL CHARACTERISTICS
  18411. VFD 24/0,18/-TCL,18/PFTC TERMINAL CONTROL
  18412. VFD 24/0,18/USI,18/PFIN INTERRUPT FROM USER
  18413. VFD 24/0,18/-BIM,18/PFBI BREAK INDICATION MARKER
  18414. VFD 24/0,18/SMPX,18/PFHO HOP REQUEST (IGNORED)
  18415. CON 0 END OF TABLE
  18416. SMP TITLE SMP - PRIMARY FUNCTION CODE PROCESSORS.
  18417. SMP SPACE 4,10
  18418. ** SMP - PRIMARY FUNCTION CODE PROCESSORS.
  18419. *
  18420. * THE FOLLOWING DOCUMENTATION IS COMMON TO ALL PRIMARY
  18421. * FUNCTION CODE PROCESSORS:
  18422. *
  18423. * ENTRY (A0) = TERMINAL TABLE ADDRESS.
  18424. * (B2) = TERMINAL NUMBER (ACN).
  18425. * (B3) = PRIMARY FUNCTION CODE.
  18426. * (X7) = SUBFUNCTION CODE.
  18427. * (RCVH) = MESSAGE HEADER.
  18428. * (RCVB) = MESSAGE TEXT.
  18429. * (SMPF) = PRIMARY FUNCTION CODE.
  18430. * (SMSF) = SECONDARY FUNCTION CODE.
  18431. *
  18432. * EXIT (SEE ABOVE):
  18433. * TO SUBFUNCTION PROCESSOR IF DEFINED.
  18434. * TO *SMPE* IF ERROR.
  18435. BIM SPACE 4,10
  18436. ** BIM - BREAK INDICATION MARKER, FUNCTION CODE #CA.
  18437. *
  18438. * THE BREAK INDICATION MARKER SYNCHRONOUS SUPERVISORY
  18439. * MESSAGE WAS RECEIVED. THE BREAK MARKER RECEIVED BIT
  18440. * (BIT 49) IN *VMST* IS SET.
  18441. *
  18442. * EXIT (VMST) = BIT 49 SET (BREAK MARKER RECEIVED).
  18443. *
  18444. * USES X - 1, 6.
  18445. * A - 1, 6.
  18446. *
  18447. * CALLS VAC.
  18448.  
  18449.  
  18450. BIM BSS 0 ENTRY
  18451. RJ VAC VALIDATE ACN
  18452. NG X6,SMPE IF INCORRECT ACN
  18453. TA1 B2,VMST SET BREAK MARKER RECEIVED BIT
  18454. SX6 B1
  18455. LX6 49-0
  18456. BX6 X1+X6
  18457. SA6 A1 REWRITE VMST
  18458. EQ PCSX EXIT
  18459. CON SPACE 4,10
  18460. ** CON - CONNECT FUNCTION, FUNCTION CODE #63.
  18461. *
  18462. * ENTRY (X7) = SUBFUNCTION CODE.
  18463. *
  18464. * EXIT TO *CNB* IF CONNECTION BROKEN.
  18465. * TO *ECR* IF END-CONNECTION RESPONSE.
  18466. * TO *NWC* IF NEW CONNECTION.
  18467. * TO APPROPRIATE ROUTINE BASED ON LOAN STATUS VALUE.
  18468. * TO *CLS1* IF INCORRECT LOAN STATUS OR ERROR.
  18469. * (X7) = LOAN STATUS VALUE.
  18470. * (B4) = ERROR MESSAGE INDICATOR.
  18471. * TO *SMPE* IF ERROR.
  18472. *
  18473. * CALLS VAC.
  18474.  
  18475.  
  18476. CON BSS 0 ENTRY
  18477. SB6 X7-SFRT CHECK SUBFUNCTION CODE
  18478. ZR B6,CON1 IF CONNECTION REQUEST
  18479. RJ VAC VALIDATE ACN
  18480. NG X6,SMPE IF INCORRECT ACN
  18481. SB6 X7-SFEN
  18482. ZR B6,ECR IF *END-CONNECTION* RESPONSE
  18483. SB6 X7-SFCB
  18484. ZR B6,CNB IF *CONNECTION BROKEN*
  18485. EQ SMPE ERROR EXIT
  18486.  
  18487. CON1 SA3 RCVB+3 GET LOAN STATUS
  18488. MX5 8
  18489. BX5 X5*X3
  18490. SB4 3 SET REGISTER FOR *CLS1*
  18491. LX5 0-52
  18492. SB7 X5
  18493. SX3 X5-MXLS-1
  18494. SX7 ERLS SET INTERNAL ERROR CODE
  18495. SA1 A0+VDCT CHECK CONNECTION TYPE
  18496. PL X3,CLS1 IF INDEX OUT OF RANGE
  18497. SX2 TPCP SET PRIMARY CONNECTION TABLE
  18498. LX1 59-47
  18499. NG X1,CON2 IF CONNECTION IS LOANED
  18500. SX2 TSCP SET SECONDARY CONNECTION TABLE
  18501. LX1 59-46-59+47
  18502. NG X1,CON2 IF SECONDARY CONNECTION
  18503. SA1 A0+VUIT CHECK USER NAME
  18504. NZ X1,CLS1 IF USER LOGGED IN
  18505. SX2 TNCP SET NEW CONNECTION TABLE
  18506. CON2 SA1 X2+B7 GET APPROPRIATE ENTRY
  18507. ZR X1,CLS1 IF NO ENTRY
  18508. SB7 X1 GET APPROPRIATE ROUTINE ADDRESS
  18509. SX7 X5 RESTORE LOAN STATUS VALUE IF NO ERROR
  18510. JP B7 PROCESS CONNECTION
  18511.  
  18512.  
  18513. TPCP SPACE 4,10
  18514. ** TABLE OF PRIMARY CONNECTION PROCESSORS.
  18515. * (USED FOR LOANED CONNECTIONS)
  18516. * INDEXED BY LOAN STATUS VALUE (DEFINED IN *COMSNCD*).
  18517.  
  18518. TPCP INDEX CON,MXLS,( 0 )
  18519. INDEX ,PNLS,( CLS1 )
  18520. INDEX ,SNLS,( CLS1 )
  18521. INDEX ,PALS,( CLS1 )
  18522. INDEX ,SCLS,( CLS )
  18523. INDEX ,SVLS,( CLS )
  18524. INDEX ,SOLS,( CLS )
  18525. INDEX ,SFLS,( CLS )
  18526. INDEX ,SULS,( CLS )
  18527. INDEX ,STLS,( CLS )
  18528. INDEX ,SRLS,( CLS )
  18529. INDEX ,SALS,( CLS )
  18530. INDEX ,SLLS,( CLS )
  18531. TPCPL EQU *-TPCP
  18532. TSCP SPACE 4,10
  18533. ** TABLE OF SECONDARY CONNECTION PROCESSORS.
  18534. * (USED FOR SECONDARY CONNECTIONS)
  18535. * INDEXED BY LOAN STATUS VALUE (DEFINED IN *COMSNCD*).
  18536.  
  18537. TSCP INDEX CON,MXLS,( 0 )
  18538. INDEX ,PNLS,( CLS1 )
  18539. INDEX ,SNLS,( CLS1 )
  18540. INDEX ,PALS,( CNB )
  18541. INDEX ,SCLS,( CLS1 )
  18542. INDEX ,SVLS,( CLS1 )
  18543. INDEX ,SOLS,( CLS1 )
  18544. INDEX ,SFLS,( CLS1 )
  18545. INDEX ,SULS,( CLS1 )
  18546. INDEX ,STLS,( CLS1 )
  18547. INDEX ,SRLS,( CLS1 )
  18548. INDEX ,SALS,( CLS1 )
  18549. INDEX ,SLLS,( CLS1 )
  18550. TSCPL EQU *-TSCP
  18551. TNCP SPACE 4,10
  18552. ** TABLE OF NEW CONNECTION PROCESSORS.
  18553. * (USED FOR NEW CONNECTIONS)
  18554. * INDEXED BY LOAN STATUS VALUE (DEFINED IN *COMSNCD*).
  18555.  
  18556. TNCP INDEX CON,MXLS,( 0 )
  18557. INDEX ,PNLS,( NWC0 )
  18558. INDEX ,SNLS,( NWC )
  18559. INDEX ,PALS,( CLS1 )
  18560. INDEX ,SCLS,( CLS1 )
  18561. INDEX ,SVLS,( CLS1 )
  18562. INDEX ,SOLS,( CLS1 )
  18563. INDEX ,SFLS,( CLS1 )
  18564. INDEX ,SULS,( CLS1 )
  18565. INDEX ,STLS,( CLS1 )
  18566. INDEX ,SRLS,( CLS1 )
  18567. INDEX ,SALS,( CLS1 )
  18568. INDEX ,SLLS,( CLS1 )
  18569. TNCPL EQU *-TNCP
  18570. FCN SPACE 4,10
  18571. ** FCN - TERMINAL FUNCTION, FUNCTION CODE #83.
  18572. *
  18573. * ENTRY (X7) = SUBFUNCTION CODE.
  18574. *
  18575. * CALLS VAC.
  18576.  
  18577.  
  18578. FCN BSS 0 ENTRY
  18579. RJ VAC VALIDATE ACN
  18580. NG X6,SMPE IF INCORRECT ACN
  18581. SB6 X7-TFCNL VALIDATE SUBFUNCTION CODE
  18582. PL B6,SMPE IF INCORRECT
  18583. SA1 TFCN+X7 GET PROCESSOR ADDRESS
  18584. SB7 X1+ ENTER PROCESSOR
  18585. JP B7
  18586.  
  18587.  
  18588. ** TFCN - TABLE OF *FCN* SUBFUNCTION PROCESSOR ADDRESSES.
  18589.  
  18590. TFCN INDEX CON,SFCM+1,( SMPE )
  18591. INDEX ,SFAK,( ACK ) BLOCK DELIVERED
  18592. INDEX ,SFAX,( NAK ) BLOCK NOT DELIVERED
  18593. INDEX ,SFIN,( INA ) CONNECTION INACTIVE
  18594. INDEX ,SFCM,( CNM ) CONNECTION MADE
  18595. INDEX ,SFRS,( SCR ) CONNECTION RESET
  18596.  
  18597. TFCNL EQU *-TFCN
  18598. LGL SPACE 4,10
  18599. ** LGL - LOGICAL ERROR, FUNCTION CODE #84.
  18600. *
  18601. * ISSUES DAYFILE MESSAGE AND COPIES ERROR MESSAGE FROM
  18602. * RECEIVE BUFFER TO INTERNAL BUFFER. IF THE MESSAGE
  18603. * WHICH WAS IN ERROR WAS A DATA MESSAGE OR A TERMINAL
  18604. * DEFINITION SUPERVISORY MESSAGE, THE TERMINAL-S DOWN-
  18605. * STREAM BLOCK COUNT WILL BE DECREMENTED TO COMPENSATE
  18606. * FOR THE MESSAGE IN ERROR.
  18607. *
  18608. * ENTRY (RCVB) = HEADER OF ERRONEOUS MESSAGE.
  18609. * (RCVB+1) = TEXT OF ERRONEOUS MESSAGE.
  18610. *
  18611. * EXIT TERMINAL BLOCK COUNT DECREMENTED.
  18612. * DAYFILE MESSAGE ISSUED.
  18613. * (LGLC) = INCREMENTED.
  18614. *
  18615. * CALLS CDD, DBC, IDM, SAB, VAC.
  18616.  
  18617.  
  18618. LGL BSS 0 ENTRY
  18619. SA1 RCVB READ MESSAGE FIRST WORD
  18620. SA3 LGLC UPDATE ERROR COUNT
  18621. MX2 -8 EXTRACT ERROR CODE
  18622. SX7 B1
  18623. AX1 36
  18624. IX7 X7+X3
  18625. BX1 -X2*X1
  18626. SA7 A3
  18627. RJ CDD CONVERT TO DECIMAL
  18628. SA1 LGLA+1 INSERT IN MESSAGE
  18629. MX2 -12
  18630. BX6 -X2*X6
  18631. LX1 -18
  18632. BX1 X2*X1
  18633. BX6 X6+X1
  18634. LX6 18
  18635. SA6 A1+
  18636. SX6 LGLA ISSUE DAYFILE MESSAGE
  18637. RJ IDM
  18638.  
  18639. * SAVE MESSAGE FOR REFERENCE.
  18640.  
  18641. SA1 RCVB SAVE FIRST THREE WORDS
  18642. SA2 A1+B1
  18643. BX6 X1
  18644. SA3 A2+B1
  18645. BX7 X2
  18646. SA6 LGLB
  18647. SA7 A6+B1
  18648. BX7 X3
  18649. SA7 A7+B1
  18650.  
  18651. * PROCESS DATA (*BLK* OR *MSG*) BLOCK ERROR.
  18652.  
  18653. MX4 -6 EXTRACT ACN FROM RETURNED HEADER
  18654. LX2 6
  18655. MX3 -12
  18656. BX6 -X4*X2
  18657. ZR X6,PCSX IF NULL HEADER
  18658. SX6 X6-BTSV
  18659. ZR X6,LGL1 IF SUPERVISORY MESSAGE
  18660. PL X6,PCSX IF UNDEFINED BLOCK TYPE, RETURN
  18661. EQ LGL2 CHECK FOR USER ON LINE
  18662.  
  18663. * PROCESS SUPERVISORY MESSAGE.
  18664.  
  18665. LGL1 SA1 A2+B1 READ FIRST WORD OF MESSAGE
  18666. MX6 -8 EXTRACT PRIMARY FUNCTION CODE
  18667. LX1 8
  18668. BX6 -X6*X1
  18669. SX6 X6-PFTC CHECK FOR *PFTC*
  18670. NZ X6,PCSX IF NOT *TERMINAL CONTROL*, RETURN
  18671.  
  18672. * CHECK FOR VALID USER ON LINE.
  18673.  
  18674. LGL2 LX2 12 EXTRACT ACN FROM RETURNED HEADER
  18675. BX2 -X3*X2
  18676. SB2 X2+ SET ACN
  18677. RJ VAC VALIDATE ACN
  18678. NG X6,PCSX IF NOT VALID ACN
  18679. ZR X2,PCSX IF NOT ON LINE
  18680. LX2 59-55 CHECK FOR END CONNECTION
  18681. NG X2,PCSX IF END OF CONNECTION SET
  18682. RJ DBC DECREMENT BLOCK COUNT
  18683. RJ SAB SET TERMINAL ACTIVITY
  18684. EQ PCSX EXIT
  18685.  
  18686. LGLA DATA 10H LOGICAL E
  18687. DATA 8LRROR XX.
  18688. LGLB BSSZ 3
  18689. NSH SPACE 4,10
  18690. ** NSH - NETWORK SHUTDOWN, FUNCTION CODE #42.
  18691. *
  18692. * CALLS *SHD* TO INITIATE NEW SHUTDOWN. IF THIS IS
  18693. * AN IMMEDIATE SHUTDOWN, *NSH* EXITS THROUGH *NDRX*
  18694. * TO BYPASS THE REMAINDER OF THE DRIVER CYCLE.
  18695. *
  18696. * ENTRY RCVB BIT 0 = SET, IF IMMEDIATE SHUTDOWN.
  18697. *
  18698. * USES X - 1, 2, 6, 7.
  18699. * A - 1, 2, 6.
  18700. *
  18701. * CALLS SHD.
  18702.  
  18703.  
  18704. NSH BSS 0 ENTRY
  18705. SA2 RCVB READ MESSAGE
  18706. SA1 SHDF GET SHUTDOWN FLAG
  18707. MX6 1
  18708. LX2 59-0 CHECK SHUTDOWN TYPE
  18709. NG X2,NSH1 IF IMMEDIATE SHUTDOWN
  18710. NZ X1,PCSX IF SHUTDOWN IN PROGRESS, EXIT
  18711. SX6 B0+
  18712. NSH1 NG X1,PCSX IF IMMEDIATE SHUTDOWN IN PROGRESS, EXIT
  18713. SA6 A1+ SET SHUTDOWN FLAG
  18714. RJ SHD INITIATE SHUTDOWN
  18715. PL X6,PCSX IF NORMAL SHUTDOWN, EXIT
  18716. EQ NDRX EXIT FROM DRIVER
  18717. TCH SPACE 4,10
  18718. ** TCH - TERMINAL CHARACTERISTICS, FUNCTION CODE #64.
  18719. *
  18720. * RESETS THE DEVICE TYPE (TERMINAL CLASS) FIELD OF
  18721. * VMST ENTRY.
  18722. *
  18723. * ENTRY (RCVB) = DEVICE TYPE, BITS 16-23.
  18724. *
  18725. * EXIT (VMST) = DEVICE TYPE, BITS 36-43.
  18726. *
  18727. * CALLS SMPE, VAC.
  18728.  
  18729.  
  18730. TCH BSS 0 ENTRY
  18731. RJ VAC VALIDATE ACN
  18732. NG X6,SMPE IF INCORRECT ACN
  18733. SA1 RCVB READ MESSAGE
  18734. MX6 -8
  18735. LX6 36-0 SHIFT MASK
  18736. LX1 36-16 SHIFT MESSAGE DEVICE TYPE
  18737. BX2 X6*X2 MASK IN NEW DEVICE TYPE
  18738. BX1 -X6*X1
  18739. BX6 X1+X2
  18740. SA6 A2+ REWRITE VMST ENTRY
  18741. EQ PCSX EXIT
  18742. TCL SPACE 4,10
  18743. ** TCL - TERMINAL CONTROL, FUNCTION CODE #C1.
  18744. *
  18745. * PROCESSES *TRMDEF* SUPERVISORY MESSAGES FROM THE NETWORK.
  18746. *
  18747. * USES X - 1, 7.
  18748. * A - 1.
  18749. * B - 3, 4.
  18750. *
  18751. * CALLS SMPE, VAC.
  18752.  
  18753.  
  18754. TCL BSS 0 ENTRY
  18755. RJ VAC VALIDATE ACN
  18756. NG X6,SMPE IF INCORRECT ACN
  18757. SX7 X7-SFDM
  18758. NZ X7,PCSX IF NOT A *TRMDEF* RESPONSE
  18759. SA1 RCVB
  18760. LX1 59-51
  18761. PL X1,PCSX IF NORMAL *TRMDEF* RESPONSE
  18762. SB3 B0
  18763. SX6 DMIT SET INCORRECTLY FORMATTED TRMDEF MSG
  18764. SB4 DMITL
  18765. RJ ACD ASSIGN CANNED DATA MESSAGE
  18766. EQ PCSX EXIT
  18767. USI SPACE 4,10
  18768. ** USI - USER INTERRUPT, FUNCTION CODE #80.
  18769. *
  18770. * MESSAGE FROM USER WHICH HAS BYPASSED THE TYPEAHEAD QUEUE.
  18771. *
  18772. * ENTRY (RCVB) = MESSAGE TEXT, BITS 36-43 CONTAIN PARAMETER
  18773. * FROM USER, ONE ASCII CHARACTER.
  18774. *
  18775. * EXIT APPROPRIATE DRIVER QUEUE ENTRY MADE.
  18776. *
  18777. * CALLS ACD, ASV, CTP, ERQ, ETX, GRT, VAC.
  18778.  
  18779.  
  18780. USI BSS 0 ENTRY
  18781. RJ VAC VALIDATE ACN
  18782. NG X6,SMPE IF INCORRECT ACN
  18783. SA1 RCVB READ MESSAGE TEXT
  18784. MX3 -8 EXTRACT PARAMETER
  18785. AX1 36
  18786. BX3 -X3*X1
  18787. BX7 X3 SAVE PARAMETER FOR BREAK PROCESSING
  18788. SB4 X3-USB1
  18789. ZR B4,BRK IF USER BREAK ONE
  18790. EQ B4,B1,BRK IF USER BREAK TWO
  18791. ERRNZ USB2-USB1-1 CODE DEPENDS ON USB2=USB1+1
  18792. MX1 -6
  18793. SA2 TVXD+X3 READ TRANSLATION OF CHARACTER
  18794. BX7 -X1*X2 CONVERT TO UPPER CASE
  18795. LX1 6
  18796. BX1 -X1*X2
  18797. SX2 X1-7400B
  18798. NZ X2,USI1 IF TRANSLATION CORRECT
  18799. BX7 X7+X1 RESTORE *74* ESCAPE CODE
  18800. USI1 SA7 USIA
  18801. BX6 X6-X6
  18802. SB4 B1
  18803. SX7 INTRES
  18804. RJ ASV ASSIGN RESPONSE MESSAGE
  18805. SA2 USIA RETRIEVE PARAMETER
  18806. SB3 B0
  18807. BX7 X2
  18808. SB7 USI1
  18809. ZR X6,PCD IF MESSAGE NOT ASSIGNED, REENTER
  18810. TA1 B2,VMST CHECK BREAK IN PROGRESS
  18811. MX3 59 CLEAR TIMEOUT FLAG
  18812. LX3 48
  18813. BX6 X3*X1
  18814. SA6 A1 REWRITE VMST
  18815. SA2 A0+VFST CLEAR SCREEN MODE TIMEOUT FLAG
  18816. LX3 17-48
  18817. BX6 X3*X2
  18818. SA6 A2 REWRITE VFST
  18819. SB5 B2
  18820. LX1 59-57
  18821. NG X1,PCSX IF BREAK IN PROGRESS
  18822. SA1 A0+VSTT
  18823. SA2 A0+VUIT
  18824. LX1 59-56
  18825. NG X1,PCSX IF DETACH IN PROGRESS, EXIT
  18826. MX1 -12
  18827. BX1 -X1*X2
  18828. ZR X1,PCSX IF NO EJT ORDINAL ASSIGNED, EXIT
  18829. SA1 A0+VDCT USER LOGGED IN
  18830. LX1 59-57
  18831. PL X1,PCSX IF USER NOT LOGGED IN
  18832. LX1 57-50
  18833. LX3 X1,B1
  18834. BX3 X1+X3
  18835. SX6 X7-USDT
  18836. ZR X6,USI2 IF DETACH REQUEST
  18837. NG X3,PCSX IF IN AUTO OR TEXT MODE
  18838. RJ GRT GET REENTRY REQUEST
  18839. SA1 USIC CHECK REQUEST TYPE
  18840. BX1 X1-X4
  18841. AX4 48
  18842. ZR X1,USI8 IF IN INTERRUPTED STATUS
  18843. SX4 X4-INP$
  18844. ZR X4,PCSX IF EXPLICIT INPUT REQUEST
  18845.  
  18846. * SET UP COMMAND.
  18847.  
  18848. USI2 SA7 USIA
  18849. SX3 X7-USDT
  18850. ZR X3,USI7 IF DETACH COMMAND
  18851. SX3 X7-USEN
  18852. SX7 X7-USST
  18853. SA1 =7LENQUIRE
  18854. ZR X7,USI3 IF SHORT STATUS REQUEST
  18855. BX7 X1
  18856. NZ X3,USI6 IF NOT ENQUIRE REQUEST
  18857. USI3 SA7 USIB
  18858. SA1 A0+VDPT CHECK SOURCE LINE INPUT
  18859. LX1 59-16
  18860. PL X1,USI4 IF NO SOURCE LINE INPUT
  18861. MX3 -12
  18862. LX1 29
  18863. MX2 -3
  18864. BX3 -X3*X1 GET FIRST POT POINTER
  18865. BX6 X7
  18866. SB3 X3+
  18867. LX3 3
  18868. LX1 15
  18869. TB4 X3,VBMP GET POT ADDRESS
  18870. BX7 -X2*X1 OFFSET INTO POT
  18871. SA6 X7+B4
  18872. SX6 /TLX/CLI
  18873. RJ ERQ ENTER COMMAND IN REQUEST QUEUE
  18874. NG X6,USI5 IF REQUEST NOT TAKEN
  18875. BX6 X6-X6 CLEAR SOURCE LINE INPUT POINTERS
  18876. SA6 A0+VDPT
  18877. EQ PCSX EXIT
  18878.  
  18879. USI4 SB4 B1 SET TEXT LENGTH
  18880. SB5 B0 USE FIRST WORD OF POT
  18881. SX6 USIB
  18882. RJ CTP COPY DATA TO POTS
  18883. ZR X6,USI5 IF NO POTS AVAILABLE
  18884. SX7 B0+
  18885. SX6 /TLX/CLI
  18886. RJ ERQ ENTER QUEUE
  18887. PL X6,PCSX IF ENTRY MADE
  18888. USI5 SA2 USIA
  18889. SB7 USI2
  18890. BX7 X2
  18891. EQ PCD REENTER
  18892.  
  18893. USI6 SX6 DMIC SET MESSAGE ADDRESS
  18894. SB4 DMICL SET MESSAGE LENGTH
  18895. RJ ACD ASSIGN CANNED MESSAGE
  18896. EQ PCSX RETURN
  18897.  
  18898. USI7 SA1 A0+VDCT
  18899. LX1 59-50
  18900. PL X1,USI7.1 IF NOT TEXT MODE
  18901. RJ ETX CLEAR TEXT MODE BEFORE DETACHING
  18902. USI7.1 SB3 B0+
  18903. SX7 UDRC SET REASON CODE
  18904. SX6 /TLX/DTJ
  18905. RJ ERQ ENTER REQUEST
  18906. PL X6,PCSX IF ENTRY MADE
  18907. EQ USI5 REENTER
  18908.  
  18909. USI8 SX6 DMIN *INTERRUPTED* MESSAGE ADDRESS
  18910. SB4 DMINL SET MESSAGE LENGTH
  18911. RJ ACD ASSIGN CANNED DATA MESSAGE
  18912. EQ PCSX RETURN
  18913.  
  18914. USIA CON 0 STORE PARAMETER
  18915. USIB CON 0 STORE COMMAND
  18916. USIC VFD 12/INP$,24///RST,24/0
  18917. TFR TITLE TFR - IAFEX FUNCTION REQUEST PROCESSOR.
  18918. TFR SPACE 4,10
  18919. ** TFR - IAFEX FUNCTION REQUEST PROCESSOR.
  18920. *
  18921. * PROCESSES EXECUTIVE-TO-DRIVER FUNCTION REQUESTS PASSED
  18922. * VIA BYTE FOUR AND THE DRIVER REQUEST BIT OF TERMINAL
  18923. * TABLE WORD *VDCT*.
  18924. *
  18925. * ENTRY (X1) = (VDCT).
  18926. * (A1) = ADDRESS OF VDCT.
  18927. *
  18928. * EXIT TO FUNCTION PROCESSOR.
  18929. *
  18930. * CALLS ABT, ERQ, PCS.
  18931.  
  18932.  
  18933. TFR SUBR ENTRY/EXIT
  18934. MX5 -12 MASK REQUEST CODE
  18935. BX7 -X5*X1
  18936. SX2 X7-/1TD/REQL VALIDATE REQUEST CODE
  18937. PL X2,TFR3 IF INCORRECT
  18938. SA3 TTFR+X7 GET PROCESSOR ADDRESS
  18939. SX5 B2 FORMAT (SSPA)
  18940. LX7 48
  18941. BX5 X7+X5
  18942. SB7 X3
  18943. TFR1 MX7 13 CLEAR VDCT REQUEST
  18944. LX7 12
  18945. BX7 -X7*X1
  18946. SA7 A1
  18947. PL X2,TFRX IF INCORRECT REQUEST
  18948. RJ PCS PROCESS REQUEST
  18949.  
  18950. * ENTER RESTART JOB REQUEST.
  18951.  
  18952. TFR2 SB3 B0 FORMAT REQUEST
  18953. BX7 X7-X7
  18954. SX6 /TLX/RES
  18955. RJ ERQ ENTER REQUEST
  18956. EQ TFRX RETURN
  18957.  
  18958. * PROCESS INCORRECT REQUEST CODE.
  18959.  
  18960. TFR3 SX6 3RTFR SET ERROR CODE
  18961. RJ ABT PROCESS INTERNAL ERROR
  18962. SA1 A0+VDCT READ VDCT
  18963. SX2 B0+ INDICATE INCORRECT REQUEST
  18964. EQ TFR1
  18965.  
  18966.  
  18967. ** TTFR - FUNCTION REQUEST PROCESSOR ADDRESS TABLE.
  18968.  
  18969. TTFR INDEX CON,/1TD/REQL,( TFR2 )
  18970. INDEX ,/1TD/BGI,( BGI )
  18971. INDEX ,/1TD/CRR,( CRR )
  18972. INDEX ,/1TD/CRR1,( CRR1 )
  18973. INDEX ,/1TD/CTM,( CTM )
  18974. INDEX ,/1TD/HUP,( HUP )
  18975. INDEX ,/1TD/IIP,( IIP )
  18976. INDEX ,/1TD/SDU,( SDU )
  18977. TITLE FUNCTION PROCESSOR ROUTINES.
  18978. SPACE 4,10
  18979. ** FUNCTION PROCESSOR ROUTINES.
  18980. *
  18981. * FUNCTION PROCESSOR ROUTINES ARE OPEN ROUTINES WHICH
  18982. * EXIT EITHER TO ANOTHER PROCESSOR ROUTINE OR TO A REENTRY
  18983. * EXIT POINT. THEY NORMALLY EXPECT THE FOLLOWING ENTRY
  18984. * CONDITIONS PLUS ANY ADDITIONAL ENTRY CONDITIONS AS
  18985. * DOCUMENTED IN THE INDIVIDUAL ROUTINE:
  18986. *
  18987. * ENTRY (A0) = TERMINAL TABLE ADDRESS.
  18988. * (B2) = TERMINAL NUMBER (ACN).
  18989. * (SSPA) = REGISTER PARAMETER WORD.
  18990. ACK SPACE 4,10
  18991. ** ACK - BLOCK ACKNOWLEDGED.
  18992. *
  18993. * DECREMENTS DOWNSTREAM BLOCK COUNT.
  18994. *
  18995. * CALLS ABT, DBC, SAB.
  18996.  
  18997.  
  18998. ACK BSS 0 ENTRY
  18999. TA1 B2,VMST READ VMST ENTRY
  19000. LX1 59-55 CHECK END-CONNECTION BIT
  19001. NG X1,PCSX IF SET, EXIT
  19002. RJ DBC DECREMENT BLOCK COUNT
  19003. NG X6,ACK2 IF BAD BLOCK COUNT
  19004. ACK1 RJ SAB SET ACTIVITY BIT
  19005. EQ PCSX EXIT
  19006.  
  19007. * PROCESS ERROR.
  19008.  
  19009. ACK2 SX6 3RACK SET ERROR CODE
  19010. RJ ABT PROCESS ERROR
  19011. EQ ACK1
  19012. AOM SPACE 4,10
  19013. ** AOM - ASSIGN OVERFLOW MESSAGE.
  19014. *
  19015. * ASSIGNS EITHER *OVL* OR NULL MESSAGE TO NETWORK,
  19016. * DEPENDING ON CHARACTER COUNT IN *VDPT*.
  19017. * REENTRANT WAY TO SEND OVERFLOW MESSAGE.
  19018.  
  19019.  
  19020. AOM BSS 0 ENTRY
  19021. RJ SOM SEND OVERFLOW MESSAGE
  19022. EQ PCSX EXIT
  19023. BGI SPACE 4,10
  19024. ** BGI - BEGIN INPUT.
  19025. *
  19026. * SENDS AN *MSG* BLOCK TO THE TERMINAL TO ENABLE INPUT
  19027. * IF AN *MSG* BLOCK WAS NOT THE LAST BLOCK SENT.
  19028. *
  19029. * CALLS ACD, PCD.
  19030.  
  19031.  
  19032. BGI BSS 0 ENTRY
  19033. TA5 B2,VMST READ VMST ENTRY
  19034. SB4 B1+B1 MESSAGE LENGTH
  19035. LX5 59-53
  19036. NG X5,PCSX IF *MSG* BLOCK SENT, EXIT
  19037. SX6 DMBI SET MESSAGE ADDRESS
  19038. RJ ACD ASSIGN MESSAGE
  19039. NZ X6,PCSX IF MESSAGE ASSIGNED, EXIT
  19040. BGI1 SB7 BGI SET REENTRY
  19041. BX7 X7-X7
  19042. SB3 B0
  19043. EQ PCD REENTER
  19044. BRK SPACE 4,10
  19045. ** BRK - PROCESS NETWORK BREAK CONDITION.
  19046. *
  19047. * PROCESS NETWORK USER BREAKS ONE AND TWO.
  19048. *
  19049. * ENTRY (X7) = BREAK REASON CODE.
  19050. *
  19051. * CALLS ACD, COA, ERQ, GTM, IFD, ONR, PCD, RDM, RST,
  19052. * SFE, SSP, SSS.
  19053.  
  19054.  
  19055. BRK BSS 0 ENTRY
  19056. SA7 BRKA SAVE BREAK REASON CODE
  19057. TA5 B2,VMST READ VMST ENTRY
  19058. MX6 59 CLEAR OUTPUT PRESENT FLAG
  19059. LX6 48-0 CLEAR TIMEOUT FLAG
  19060. BX5 X6*X5
  19061. LX6 52-48
  19062. BX5 X6*X5
  19063. SA1 A0+VFST CLEAR SCREEN MODE TIMEOUT FLAG
  19064. LX6 17-52
  19065. BX6 X6*X1
  19066. SA6 A1 REWRITE VFST
  19067. MX6 -3
  19068. SB3 B0
  19069. LX6 33-0 CHECK ABC
  19070. BX1 -X6*X5
  19071. ZR X1,BRK1 IF OUTPUT NOT PRESENT
  19072. SX1 B1 SET OUTPUT PRESENT FLAG
  19073. BRK1 SX4 44B SET BREAK AND DATA RECEIVED BITS
  19074. BX4 X4+X1
  19075. LX4 52-0
  19076. BX6 X5+X4
  19077. SA6 A5 REWRITE VMST ENTRY
  19078. LX5 59-57
  19079. NG X5,BRK12 IF BREAK ALREADY IN PROGRESS, ERROR
  19080.  
  19081. * REQUEST OUTSTANDING TERMINAL DATA.
  19082. *
  19083. * ENTRY (B3) = 0.
  19084. * (NBSY) = 0.
  19085.  
  19086. TA5 B2,VMST READ VMST ENTRY
  19087. MX2 59 CLEAR DATA-RECEIVED BIT
  19088. LX2 54-0
  19089. BX6 X2*X5
  19090. SA6 A5 REWRITE VMST ENTRY
  19091. LX5 59-55
  19092. MX1 -12
  19093. NG X5,PCSX IF END CONNECTION SET
  19094. BX1 -X1*X6 DROP TYPED AHEAD DATA POTS
  19095. ZR X1,BRK2.1 IF NO POTS
  19096. SB3 X1
  19097. MX1 42
  19098. BX6 X1*X6 CLEAR POT POINTER AND COUNT
  19099. SA6 A5 REWRITE VMST
  19100. SB4 B0 DROP ENTIRE CHAIN
  19101. RJ DPT DROP POTS
  19102. TA1 B2,VMST CHECK NAM TYPEAHEAD
  19103. SX6 B1
  19104. LX6 51-0
  19105. BX2 X1*X6
  19106. ZR X2,BRK2.1 IF NOT ON
  19107. BX6 X1-X6
  19108. SA6 A1 REWRITE VMST
  19109. SB4 B0
  19110. BX6 X6-X6
  19111. SX7 LSTFDX
  19112. RJ ASV ASSIGN SUPERVISORY MESSAGE
  19113. BRK2.1 SB7 B0+
  19114. RJ SRE CLEAR DRIVER REENTRY
  19115. SA1 BRKA
  19116. BX7 X1
  19117. BRK3 TA1 B2,VMST
  19118. LX1 59-49
  19119. NG X1,BRK5 IF BREAK MARKER RECEIVED
  19120. SB7 BRK3
  19121. EQ PCD REENTER
  19122.  
  19123. * SELECT BREAK REASON CODE PROCESSOR.
  19124.  
  19125. BRK5 SB5 X7-USB2 CHECK REASON CODE
  19126. SX7 B1+ CLEAR BREAK MARKER RECEIVED
  19127. TA5 B2,VMST
  19128. LX7 49
  19129. BX7 -X7*X5
  19130. SA7 A5+
  19131. SX7 TIET ASSUME USER BREAK 1
  19132. NG B5,BRK6 IF USER BREAK 1
  19133. SX7 TAET ASSUME USER BREAK 2
  19134.  
  19135. * PROCESS USER BREAK 1 AND USER BREAK 2.
  19136. *
  19137. * ENTRY (X7) = TAET, IF USER BREAK 2.
  19138. * TIET, IF USER BREAK 1.
  19139.  
  19140. BRK6 SA1 A0+VDCT READ VDCT
  19141. SA2 A0+VDPT READ VDPT
  19142. SA3 A0+VROT READ VROT
  19143. SA4 A0+VSTT READ VSTT
  19144. SB3 B0 INDICATE NO POT POINTER
  19145. SX6 B1 CLEAR INPUT REQUESTED FLAG
  19146. LX6 56-0
  19147. BX6 -X6*X1
  19148. SA6 A1
  19149. LX4 59-56
  19150. NG X4,ROI IF DETACH IN PROGRESS
  19151. LX1 59-50 CHECK FOR *TEXT* MODE
  19152. MX6 12
  19153. SA4 A0+VUIT
  19154. BX4 X6*X4
  19155. ZR X4,ROI IF NO EJT ORDINAL ASSIGNED
  19156. LX2 59-16 CHECK FOR INPUT INITIATED
  19157. MX4 -5
  19158. BX3 -X4*X3
  19159. LX4 X1,B1 CHECK *AUTO* MODE
  19160. SX3 X3-1
  19161. NG X1,ROI IF IN *TEXT* MODE
  19162. NG X2,BRK10 IF INPUT INITIATED
  19163. NZ X3,BRK7 IF ACTIVE
  19164. NG X4,BRK7 IF AUTO MODE
  19165. RJ COA CHECK OUTPUT AVAILABLE
  19166. ZR X4,BRK11 IF OUTPUT NOT PRESENT
  19167. BRK7 SX6 /TLX/PUB PROCESS USER BREAK
  19168. RJ ERQ ENTER REQUEST
  19169. SX7 B1+
  19170. SB7 BRK8
  19171. EQ PCD REENTER
  19172.  
  19173. * RESET TERMINAL AFTER INTERRUPT COMPLETION.
  19174. * (X7) = 1, PROCESSING A USER INITIATED USER BREAK.
  19175. * (X7) = 0, PROCESSING AN EXECUTIVE INITIATED USER BREAK.
  19176.  
  19177. BRK8 TA2 B2,VMST
  19178. SA3 A0+VSTT
  19179. SA1 A0+VDCT
  19180. LX2 59-55 CHECK END-CONNECTION FLAG
  19181. LX3 59-48 CHECK LOGOUT FLAG
  19182. NG X2,PCSX IF END-CONNECTION SET
  19183. LX2 X1,B1 CLEAR INTERRUPT COMPLETE
  19184. MX6 1
  19185. BX6 -X6*X2
  19186. LX6 58-59
  19187. SA6 A1+ REWRITE VDCT
  19188. NG X3,ROI IF LOGOUT FLAG SET
  19189. PL X1,BRK9 IF NO DRIVER REQUEST
  19190. MX3 -12 CHECK DRIVER REQUEST
  19191. BX4 -X3*X1
  19192. SX3 X4-/1TD/HUP
  19193. ZR X3,ROI IF *HANG UP PHONE* REQUEST
  19194. BRK9 PL X2,PCD IF INTERRUPT NOT COMPLETE
  19195. RJ SSS
  19196. SX6 /TLX/RES SET RESTART REQUEST
  19197. RJ ERQ ENTER RESTART REQUEST
  19198. RJ SSP RESTORE X7
  19199. NZ X7,ROI IF USER INITIATED
  19200. TA2 B2,VMST CLEAR BREAK-IN-PROGRESS BIT
  19201. SX6 B1
  19202. LX6 57-0
  19203. BX6 -X6*X2
  19204. SA6 A2
  19205. EQ PCSX EXIT
  19206.  
  19207. * ISSUE *IDLE* IF NO JOB ACTIVITY TO INTERRUPT.
  19208.  
  19209. BRK10 MX6 -59 CLEAR INPUT INITIATED
  19210. BX7 -X6*X2
  19211. LX7 16-59
  19212. SA7 A2 REWRITE VDPT ENTRY
  19213. BRK11 SX6 DMID SET IDLE MESSAGE ADDRESS
  19214. SB4 DMIDL SET MESSAGE LENGTH
  19215. RJ ACD ASSIGN MESSAGE
  19216. EQ ROI RESUME OUTPUT
  19217.  
  19218. * INCREMENT SECOND BREAK RECEIVED COUNTER.
  19219.  
  19220. BRK12 SA1 BRKB INCREMENT ERROR COUNTER
  19221. SX6 X1+B1
  19222. PX6 B2,X6 SAVE TN AND ERROR COUNT
  19223. SA6 A1
  19224. EQ PCSX EXIT
  19225.  
  19226.  
  19227. BRKA CON 0 WORD TO SAVE BREAK REASON CODE
  19228.  
  19229. * STORE THE TOTAL ERROR COUNT WITH THE MOST RECENT
  19230. * TERMINAL NUMBER THAT DETECTED AN ERROR.
  19231.  
  19232. BRKB CON 0 12/ TN, 48/ ERROR COUNTER
  19233. CLS SPACE 4,10
  19234. ** CLS - CHECK LOAN STATUS.
  19235. *
  19236. * ENTRY (X7) = LOAN STATUS VALUE.
  19237. * (B4) = ENTRY CONDITION FOR *CLS1*.
  19238. * = 0, IF NO CALL TO *SFE* OR EXIT TO *CRR*.
  19239. * = 1, IF ONLY EXIT TO *CRR*.
  19240. * = 2, IF ONLY CALL TO *SFE*.
  19241. * > 2, IF CALL TO *SFE* AND EXIT TO *CRR*.
  19242. *
  19243. * EXIT TO *CRR* IF CONNECTION RESPONSE IS TO BE ISSUED.
  19244. *
  19245. * CALLS ERQ, IDM, PRP, SFE, ZFN.
  19246.  
  19247.  
  19248. CLS BSS 0 ENTRY
  19249. SB4 B0 ENTRY CONDITION FOR CALL TO *ZFN*
  19250. MX0 42
  19251. SA1 RCVB+5 GET USERNAME FROM MESSAGE
  19252. RJ ZFN ZERO FILL USERNAME
  19253. SB4 3 SET ENTRY CONDITION IN CASE OF ERROR
  19254. BX2 X0*X6
  19255. SA3 A0+VUIT GET USERNAME FROM TERMINAL TABLE
  19256. BX4 X0*X3
  19257. BX4 X4-X2
  19258. NZ X4,CLS0 IF NOT THE SAME USERNAME
  19259. RJ PRP PROCESS RETURN TO PRIMARY
  19260. EQ CRR1 ISSUE *CON/REQ/N* MESSAGE
  19261.  
  19262. CLS0 SX7 ERLS SET INTERNAL ERROR
  19263. CLS1 RJ PRP PROCESS RETURN TO PRIMARY
  19264. SA2 A0+VDCT CLEAR PRIMARY CONNECTION BIT
  19265. SX6 B1
  19266. LX6 47-0
  19267. BX6 -X6*X2
  19268. SA6 A2 REWRITE VDCT
  19269. BX0 X7 SAVE LOAN STATUS VALUE FOR CALCULATION
  19270. LX7 0-24 SET UP ENTRY FOR DRIVER REQUEST
  19271. SX6 /TLX/RES SET UP DRIVER REQUEST
  19272. RJ ERQ ENTER REQUEST IN QUEUE
  19273. SX1 ERLS
  19274. BX1 X0-X1
  19275. NZ X1,CLS1.5 IF NOT INTERNAL ERROR
  19276. SA1 A0+VFST INSERT JSN INTO MESSAGE
  19277. MX0 24
  19278. BX1 X0*X1 GET JSN
  19279. LX1 -6 SHIFT JSN
  19280. LX0 -6 SHIFT MASK
  19281. SA2 CLSA
  19282. BX2 -X0*X2
  19283. BX6 X1+X2 INSERT JSN INTO MESSAGE
  19284. SA6 A2 REWRITE MESSAGE
  19285. SX6 CLSA SET MESSAGE ADDRESS
  19286. RJ IDM ISSUE DAYFILE MESSAGE
  19287. CLS1.5 ZR B4,PCSX IF NO OTHER TASKS WANTED
  19288. EQ B1,B4,CLS2 IF NO *SMP* MESSAGE WANTED
  19289. RJ SFE ISSUE IAF DAYFILE MESSAGE
  19290. CLS2 SB5 B1+B1
  19291. EQ B4,B5,PCSX IF NOT TO ISSUE *CON/REJ*
  19292. EQ CRR ISSUE *CON/REJ*
  19293.  
  19294.  
  19295. CLSA DATA C* JSNN DETACHED DUE TO APPLICATION SWITCH ERROR.*
  19296. CNB SPACE 4,10
  19297. ** CNB - CONNECTION BROKEN.
  19298. *
  19299. * PROCESS INTERRUPTION OF NETWORK TERMINAL CONNECTION.
  19300. *
  19301. * ENTRY (X3) = STATUS BITS FROM *CON/CB* MESSAGE
  19302. *
  19303. * EXIT TO *CLS1* IF CONNECTION IS LOANED.
  19304. * (X7) = LOAN STATUS VALUE.
  19305. * (B4) = ERROR MESSAGE INDICATOR.
  19306. *
  19307. * CALLS DAP, DPT, ENC, ERQ, SRE.
  19308.  
  19309.  
  19310. CNB BSS 0 ENTRY
  19311. SB3 B0
  19312. SA1 A0+VDCT CHECK CONNECTION TYPE
  19313. LX1 59-47
  19314. PL X1,CNB2 IF CONNECTION NOT LOANED
  19315.  
  19316. * PROCESS LOANED CONNECTION.
  19317.  
  19318. SB4 B0 SET ENTRY FOR *CLS1*
  19319. SX7 ERLS SET INTERNAL ERROR
  19320. ZR X3,CLS1 IF LOAN BIT NOT SET IN MESSAGE
  19321. SA1 RCVB GET REASON CODE
  19322. LX1 0-36
  19323. MX0 -8
  19324. BX1 -X0*X1
  19325. SB6 X1
  19326. SB5 3
  19327. LT B6,B5,CNB1 IF NOT SECONDARY ABORT
  19328. SX7 SCLS
  19329. EQ CLS1 PROCESS RETURN FROM SECONDARY ABORT
  19330.  
  19331. CNB1 SX7 LDLS SET LOAN STATUS FOR LINE DISCONNECT
  19332. EQ CLS1 PROCESS RETURN FROM LINE DISCONNECT
  19333.  
  19334. CNB2 BX7 X7-X7
  19335. TA1 B2,VMST
  19336. PL X1,CNB3 IF CONNECTION NOT YET COMPLETE
  19337. SA1 A0+VSTT
  19338. SB7 CNB
  19339. SA2 A0+VDCT
  19340. LX2 59-57
  19341. LX1 59-56
  19342. NG X1,PCD IF DETACH IN PROGRESS, REENTER
  19343. PL X2,PCD IF LOGIN NOT COMPLETE, REENTER
  19344. CNB3 SB7 B0
  19345. RJ SRE CLEAR REENTRY
  19346. RJ DAP CLEAR OUTPUT ASSIGNMENTS
  19347. TA1 B2,VMST DROP VMST POT
  19348. MX7 -12
  19349. BX7 -X7*X1
  19350. SB3 X7
  19351. SB4 B0
  19352. MX7 42 CLEAR POT POINTER
  19353. MX3 57 CLEAR UNANSWERED BLOCKS
  19354. LX3 33
  19355. BX1 X3*X1
  19356. BX7 X7*X1
  19357. MX3 1 CLEAR TERMINAL ON LINE
  19358. BX7 -X3*X7
  19359. SA7 A1 REWRITE VMST
  19360. ZR B3,CNB4 IF NO POT
  19361. RJ DPT DROP POTS
  19362. CNB4 SB3 B0 CLEAR POT POINTER
  19363. BX7 X7-X7
  19364. SX6 /TLX/HUP SET HANG UP PHONE REQUEST
  19365. SA1 A0+VUIT CHECK FOR EJT ORDINAL
  19366. MX3 -12
  19367. BX1 -X3*X1
  19368. ZR X1,ENC IF NO EJT ORDINAL
  19369. RJ ERQ ENTER REQUEST
  19370. EQ PCSX EXIT
  19371. CNM SPACE 4,10
  19372. ** CNM - CONNECTION MADE.
  19373. *
  19374. * MAKES 1TA QUEUE ENTRY TO LOGIN USER.
  19375. *
  19376. * ENTRY (VDPT(0)) = VALIDATION POT POINTER.
  19377. *
  19378. * EXIT TO *PCS1* TO MAKE QUEUE ENTRY.
  19379. *
  19380. * CALLS ASV, ITA2 (VIA PCS1).
  19381.  
  19382.  
  19383. CNM BSS 0 ENTRY
  19384. TA1 B2,VMST
  19385. LX1 59-55
  19386. NG X1,PCSX IF *CON/CB/R* ALREADY RECEIVED
  19387.  
  19388. * ISSUE CONNECTION INITIATION RESPONSE.
  19389.  
  19390. BX6 X6-X6 INDICATE DEFAULT HEADER
  19391. SB4 B1 TEXT LENGTH = 1
  19392. SX7 FCINI ISSUE SUPERVISORY MESSAGE
  19393. RJ ASV
  19394. NZ X6,CNM1 IF MESSAGE ISSUED
  19395. SB3 B0 SET REENTRY
  19396. BX7 X7-X7
  19397. SB7 CNM
  19398. EQ PCD
  19399.  
  19400. * BYPASS 1TA LOGIN REQUEST IF SECONDARY RETURNING TO PRIMARY.
  19401.  
  19402. CNM1 SA1 A0+VDCT CHECK PRIMARY CONNECTION
  19403. LX1 59-47
  19404. PL X1,CNM2 IF NOT RETURN OF SECONDARY CONNECTION
  19405. MX7 1 CLEAR PRIMARY CONNECTION BIT
  19406. BX7 -X7*X1
  19407. LX7 47-59
  19408. SA7 A1 REWRITE VDCT
  19409. SB3 B0 CLEAR POT POINTER
  19410. SX6 /TLX/RES SET UP DRIVER REQUEST
  19411. RJ ERQ ENTER REQUEST
  19412. EQ PCSX EXIT
  19413.  
  19414. * ENTER 1TA REQUEST TO LOGIN USER.
  19415.  
  19416. CNM2 SA1 A0+VDPT GET VALIDATION POT POINTER
  19417. MX7 12
  19418. BX7 -X7*X1 CLEAR VDPT POT POINTER
  19419. BX1 X1-X7 MASK VDPT POT POINTER
  19420. SA7 A1 REWRITE VDPT
  19421. LX1 12
  19422. BX7 X7-X7
  19423. SX5 ITA2$ SET QUEUE ENTRY
  19424. SB3 X1+
  19425. TA1 B2,VMST SET ON LINE
  19426. MX6 1
  19427. BX6 X6+X1
  19428. SA6 A1 REWRITE VMST
  19429. EQ PCS1 MAKE QUEUE ENTRY
  19430. CRR SPACE 4,10
  19431. ** CRR - CONNECTION REQUEST REPLY.
  19432. *
  19433. * EXIT EITHER THE *CON/REQ/N* OR *CON/REJ*
  19434. * SUPERVISORY MESSAGE HAS BEEN SENT TO NAM.
  19435. *
  19436. * CALLS ASV, SHA.
  19437.  
  19438.  
  19439. CRR BSS 0 ENTRY FOR *CON/REJ* MESSAGE
  19440. SA1 CONREJ
  19441. SX3 RTCI
  19442. LX3 36-0
  19443. BX6 X1+X3
  19444. EQ CRR2 CONTINUE
  19445.  
  19446. CRR1 BSS 0 ENTRY FOR *CON/REQ/N* MESSAGE
  19447. RJ SHA RESET HIGHEST ACTIVITY ACN
  19448. SA1 CONREQ CONNECTION ACCEPTED
  19449. BX6 X1
  19450.  
  19451. * ISSUE SUPERVISORY MESSAGE.
  19452.  
  19453. CRR2 SA6 CRRA
  19454. SX7 A6
  19455. BX6 X6-X6 USE DEFAULT HEADER
  19456. SB4 B1+ SET TEXT LENGTH
  19457. RJ ASV ASSIGN MESSAGE
  19458. EQ PCSX EXIT
  19459.  
  19460.  
  19461. CRRA CON 0 CANNED MESSAGE
  19462. CTM SPACE 4,10
  19463. ** CTM - CANCEL TYPEAHEAD MODE.
  19464. *
  19465. * SENDS A *LSTFDX* SUPERVISORY MESSAGE TO *NAM*
  19466. * TO CANCEL TYPEAHEAD QUEUEING.
  19467. *
  19468. * CALLS ASV, PCD.
  19469.  
  19470.  
  19471. CTM BSS 0 ENTRY
  19472. BX6 X6-X6 SET DEFAULT HEADER
  19473. SB4 B1 SET TEXT LENGTH
  19474. SX7 LSTFDX SET MESSAGE ADDRESS
  19475. RJ ASV ASSIGN SUPERVISORY MESSAGE
  19476. NZ X6,CTM1 IF MESSAGE ASSIGNED
  19477. SB3 B0 SET REENTRY PARAMETERS
  19478. BX7 X7-X7
  19479. SB7 CTM
  19480. EQ PCD REENTER
  19481.  
  19482. CTM1 TA1 B2,VMST READ VMST ENTRY
  19483. MX2 59
  19484. LX2 51-0
  19485. BX6 X1*X2 CLEAR TYPEAHEAD BIT
  19486. SA6 A1 REWRITE VMST
  19487. EQ PCSX EXIT
  19488. ECR SPACE 4,10
  19489. ** ECR - PROCESS *END CONNECTION* RESPONSE.
  19490. *
  19491. * PROCESS COMPLETION OF NORMAL LOGOUT OR APPLICATION SWITCH.
  19492. *
  19493. * ENTRY (X3) = MESSAGE STATUS BITS.
  19494. *
  19495. * EXIT TO *SMPE* IF THE FOLLOWING IS TRUE
  19496. * END-CONNECTION BIT IS NOT SET.
  19497. * TO *CLS1* IF ANY OF THE FOLLOWING IS TRUE
  19498. * LOAN CONFIRMATION BIT IS NOT SET.
  19499. * THE CONNECTION IS ALREADY LOANED.
  19500. *
  19501. * CALLS CLE, DPT, SHA.
  19502.  
  19503.  
  19504. ECR BSS 0 ENTRY
  19505. SA1 A0+VDCT CHECK CONNECTION TYPE
  19506. LX1 59-47
  19507. MX2 -12
  19508. PL X1,ECR1 IF NOT LOANING CONNECTION
  19509. SA1 A0+VFST GET APPSW POT POINTER
  19510. BX4 -X2*X1
  19511. ZR X4,ECR0 IF NO POT TO DROP
  19512. BX6 X2*X1 CLEAR POT POINTER IN VFST
  19513. SA6 A1
  19514. SB3 X4
  19515. SB4 B0 DROP TO END OF CHAIN
  19516. BX0 X3 SAVE MESSAGE STATUS BITS
  19517. RJ DPT DROP POT
  19518. BX3 X0
  19519. ECR0 SB4 B1+B1 SET REGISTERS FOR *CLS1*
  19520. LX3 59-0
  19521. SX7 ERLS
  19522. PL X3,CLS1 IF LOAN CONFIRMATION BIT NOT SET
  19523. LX3 59-1-59+0
  19524. NG X3,CLS1 IF CONNECTION ALREADY LOANED
  19525. EQ PCSX EXIT
  19526.  
  19527. ECR1 TA1 B2,VMST READ VMST ENTRY
  19528. LX1 59-55 CHECK END-CONNECTION BIT
  19529. PL X1,SMPE IF NOT SET, ERROR
  19530. RJ //CLE CLEAN UP TERMINAL TABLE
  19531. RJ SHA RESET HIGHEST ACTIVE ACN
  19532. EQ PCSX EXIT
  19533. ENC SPACE 4,10
  19534. ** ENC - END CONNECTION.
  19535. *
  19536. * PROCESSES THE TERMINATION OF THE CURRENT CONNECTION
  19537. * AND DIRECTS NVF TO SWITCH USER TO ANOTHER APPLICATION
  19538. * IF DESIRED.
  19539. *
  19540. * EXIT *END CONNECTION* SUPERVISORY MESSAGE ISSUED.
  19541. * (VMST) = END-CONNECTION BIT SET IF LOGOUT REQUEST.
  19542. * TO *CLS1* IF NO POT POINTER.
  19543. * (X7) = LOAN STATUS VALUE.
  19544. * (B4) = ERROR MESSAGE INDICATOR.
  19545. *
  19546. * CALLS ASV, DPT, ILV, PCD, SSP, ZFN.
  19547.  
  19548.  
  19549. ENC BSS 0 ENTRY
  19550. ZR B3,ENC0 IF NO POT
  19551. SB4 B0
  19552. RJ DPT DROP POT
  19553. ENC0 SA1 A0+VDCT CHECK CONNECTION TYPE
  19554. LX1 59-47
  19555. PL X1,ENC1 IF CONNECTION NOT BEING LOANED
  19556.  
  19557. * THIS CONNECTION IS BEING LOANED TO ANOTHER APPLICATION.
  19558.  
  19559. SX7 ENC0 SAVE ADDRESS
  19560. SA7 ENCA
  19561. SA1 A0+VFST GET POT POINTER
  19562. MX6 -12
  19563. SB4 B0 ENTRY FOR *CLS1*
  19564. BX2 -X6*X1
  19565. SX7 ERLS
  19566. ZR X2,CLS1 IF NO POT POINTER
  19567. LX2 3
  19568. TB4 X2,VBMP CALCULATE POT ADDRESS
  19569. SA1 B4+B1 GET APPLICATION NAME
  19570. MX2 42
  19571. BX6 X2*X1
  19572. RJ ZFN BLANK FILL APPLICATION NAME
  19573. SA1 CONEND SET STATUS BIT IN MESSAGE
  19574. SX2 B1
  19575. BX7 X2+X1
  19576. SA7 B4 STORE MESSAGE IN POT
  19577. SA6 A7+B1 REWRITE APPLICATION NAME
  19578. SX7 B4 SET MESSAGE ADDRESS
  19579. SB4 B1+B1 SET TEXT LENGTH
  19580. SX6 HDRS4 SET HEADER ADDRESS
  19581. EQ ENC4 CONTINUE
  19582.  
  19583. * SET END-CONNECTION IN VMST.
  19584.  
  19585. ENC1 TA1 B2,VMST READ VMST ENTRY
  19586. ZR X1,PCSX IF NO USER
  19587. MX6 1
  19588. LX1 59-55 CHECK END-CONNECTION BIT
  19589. NG X1,PCSX IF ALREADY SET
  19590. BX6 X1+X6 SET BIT
  19591. LX6 55-59 SHIFT RESTORE
  19592. SA6 A1+ REWRITE VMST
  19593.  
  19594. * DO NOT SEND MESSAGE WHEN SECONDARY CONNECTION HAS ABORTED.
  19595.  
  19596. SA2 A0+VROT CHECK LOAN STATUS VALUE
  19597. MX1 -12
  19598. LX1 24-0
  19599. BX2 -X1*X2
  19600. ZR X2,ENC2 IF NO LOAN STATUS VALUE
  19601. SX7 B0 CLEAR LOAN STATUS VALUE
  19602. RJ ILV
  19603. EQ ECR CONTINUE PROCESSING
  19604.  
  19605. * SET UP CONNECTION TERMINATION MESSAGE.
  19606.  
  19607. ENC2 SX7 ENC2 SAVE REENTRY ADDRESS
  19608. SA7 ENCA
  19609. SX7 CONEND SET MESSAGE ADDRESS
  19610. SA1 A0+VFNT
  19611. MX6 42
  19612. BX6 X6*X1
  19613. SA1 ENCB SET DEFAULT NVF PARAMETER
  19614. ZR X6,ENC3 IF NO NVF PARAMETER
  19615. BX1 X6
  19616. ENC3 SB4 B1+B1 SET TEXT LENGTH = 2
  19617. RJ ZFN BLANK FILL NVF PARAMETER
  19618. SA6 CONEND+1
  19619. SX6 HDRS2 SET HEADER ADDRESS
  19620.  
  19621. * ISSUE SUPERVISORY MESSAGE.
  19622.  
  19623. ENC4 RJ ASV ASSIGN MESSAGE
  19624. RJ SSP
  19625. SA1 ENCA GET REENTRY ADDRESS
  19626. SB7 X1+
  19627. ZR X6,PCD IF MESSAGE NOT ASSIGNED, REENTER
  19628. EQ PCSX EXIT
  19629.  
  19630.  
  19631. ENCA CON 0 REENTRY ADDRESS
  19632. ENCB DATA C*BYE*
  19633. HUP SPACE 4,10
  19634. ** HUP - HANG UP PHONE.
  19635. *
  19636. *
  19637. * PROCESS REQUEST TO TERMINATE CONNECTION.
  19638. *
  19639. * ENTRY (VFST) = NVF LOGOFF PARAMETER
  19640. *
  19641. * EXIT TO *ENC*.
  19642. * (VSTT) = POT POINTER CLEARED.
  19643. *
  19644. * CALLS CBL, ENC, PCD, SSS.
  19645.  
  19646.  
  19647. HUP BSS 0 ENTRY
  19648.  
  19649. * WAIT UNTIL DOWNSTREAM BLOCKS ARE ACKNOWLEDGED.
  19650.  
  19651. RJ CBL CHECK BLOCK LIMIT
  19652. SB7 HUP SET REENTRY
  19653. BX7 X7-X7
  19654. NZ X3,PCD IF BLOCKS OUTSTANDING, REENTER
  19655. EQ ENC END CONNECTION
  19656. IIP SPACE 4,10
  19657. ** IIP - ISSUE INPUT PROMPT.
  19658. *
  19659. * ISSUES INPUT PROMPT IF NOS TRANSPARENT, BINARY,
  19660. * OR AUTO MODE IS NOT SET.
  19661. *
  19662. * EXIT INPUT PROMPT ISSUED.
  19663. * (VDCT) = INPUT INITIATED BIT 56 SET.
  19664. *
  19665. * CALLS ACD, PCD.
  19666.  
  19667.  
  19668. IIP BSS 0 ENTRY
  19669. SA3 A0+VDCT GET VDCT
  19670. SX6 B1 SET *INPUT INITIATED* BIT
  19671. LX6 56-0
  19672. BX6 X6+X3
  19673. LX3 59-49
  19674. SA6 A3 REWRITE VDCT
  19675. NG X3,PCSX IF AUTO MODE, EXIT
  19676.  
  19677. * ISSUE PROMPT MESSAGE.
  19678.  
  19679. IIP1 RJ IPM ISSUE PROMPT MESSAGE
  19680. NZ X6,PCSX IF MESSAGE ASSIGNED, EXIT
  19681. SB7 IIP1 SET REENTRY ADDRESS
  19682. SB3 B0
  19683. BX7 X7-X7
  19684. EQ PCD REENTER
  19685. INA SPACE 4,20
  19686. ** INA - USER INACTIVE.
  19687. *
  19688. * INDICATES THAT USER HAS HAD NO TERMINAL ACTIVITY
  19689. * FOR A PERIOD OF TIME EQUAL TO THE INSTALLATION NET-
  19690. * WORK OPTION. CALLS EXECUTIVE TO LOGOFF USER IF THE
  19691. * VALIDATION NO-TIME-OUT BIT IS NOT SET, ELSE RETURNS.
  19692. * IF A TERMINAL IS IN SCREEN MODE, THE TIMEOUT PERIOD
  19693. * IS TWICE THE INSTALLATION NETWORK OPTION. TO
  19694. * ACCOMPLISH THIS, THE SCREEN MODE TIMEOUT BIT IS SET
  19695. * ON THE FIRST PASS THROUGH *INA*. ON THE SECOND
  19696. * PASS THROUGH *INA*, THIS BIT IS CHECKED AND IF IT
  19697. * IS SET, THE TERMINAL IS TIMED OUT.
  19698. *
  19699. * ENTRY (VDCT) = NO-TIME-OUT BIT, BIT 22.
  19700. * (VFST) = SCREEN MODE TIMEOUT FLAG, BIT 17.
  19701. * (VSTT) = SCREEN MODE, BIT 49.
  19702. *
  19703. * EXIT (VMST) = TIMEOUT FLAG, BIT 48.
  19704. * (VFST) = SCREEN MODE TIMEOUT FLAG, BIT 17.
  19705. *
  19706. * CALLS DAP, ENC, ERQ, RPT, SRE.
  19707.  
  19708.  
  19709. INA BSS 0 ENTRY
  19710.  
  19711. * CHECK CONNECTION TYPE.
  19712.  
  19713. SA1 A0+VDCT
  19714. LX1 59-47
  19715. PL X1,INA0 IF CONNECTION IS NOT LOANED
  19716. SB4 B0 SET ENTRY FOR *CLS1*
  19717. SX7 ERLS SET ENTERNAL ERROR
  19718. EQ CLS1 PROCESS ERROR
  19719.  
  19720. * EXIT IF THERE IS CURRENT USER ACTIVITY.
  19721.  
  19722. INA0 TA1 B2,VMST READ VMST ENTRY
  19723. SA2 A0+VROT READ VROT
  19724. SX7 B1 SET TIMEOUT FLAG
  19725. LX7 48
  19726. BX7 X1+X7
  19727. SX1 X1
  19728. NZ X1,PCSX IF MESSAGE ASSIGNED, EXIT
  19729. LX2 59-0 CHECK VROT ACTIVITY BIT
  19730. NG X2,INA1 IF NO JOB ACTIVITY
  19731. SA2 A0+VFST CHECK SMF CONNECTION STATE
  19732. MX3 6
  19733. LX3 24
  19734. BX2 X2*X3
  19735. ZR X2,PCSX IF ACTIVE AND NOT SMF, EXIT
  19736. INA1 SA2 A0+VUIT CHECK EJT ORDINAL
  19737. MX3 -12
  19738. BX2 -X3*X2
  19739. ZR X2,PCSX IF NO EJT ORDINAL ASSIGNED, EXIT
  19740. SA3 A0+VDCT
  19741. NG X3,PCSX IF DRIVER REQUEST, EXIT
  19742. SA1 A0+VCHT CHECK FOR REENTRY
  19743. MX6 36
  19744. BX1 X6*X1
  19745. NZ X1,PCSX IF REENTRY SET, EXIT
  19746. SA1 A0+VSTT
  19747. LX1 59-56
  19748. NG X1,PCSX IF DETACH IN PROGRESS, EXIT
  19749. LX3 59-22 CHECK NO-TIME-OUT BIT
  19750. SB3 B0 INDICATE NO POTS TO DROP
  19751. NG X3,PCSX IF NO-TIME-OUT
  19752. SB7 B0
  19753. SA1 A0+VSTT CHECK FOR SCREEN MODE IN EFFECT
  19754. SA3 A0+VFST CHECK SCREEN MODE TIMEOUT FLAG
  19755. LX1 59-49
  19756. PL X1,INA2 IF NOT IN SCREEN MODE
  19757. LX3 59-17
  19758. NG X3,INA2 IF SCREEN MODE TIMEOUT
  19759. MX6 1 SET SCREEN MODE TIMEOUT FOR NEXT PASS
  19760. BX6 X6+X3
  19761. LX6 17-59
  19762. SA6 A3 REWRITE VFST
  19763. EQ PCSX EXIT
  19764.  
  19765. * CLEAR UNACKNOWLEDGED BLOCKS AND ISSUE DOWNLINE BREAK.
  19766.  
  19767. INA2 MX6 -3 CLEAR APPLICATION BLOCK COUNT
  19768. LX6 33
  19769. BX7 X6*X7
  19770. BX6 X6-X6 USE DEFAULT SUPERVISORY MESSAGE HEADER
  19771. TA7 B2,VMST REWRITE *VMST*
  19772. SB4 B1+
  19773. SX7 FCBRK SEND CONNECTION BREAK SUPERVISORY MESSAGE
  19774. RJ ASV
  19775. SB3 B0
  19776. BX7 X7-X7
  19777. SB7 INA2
  19778. ZR X6,PCD IF MESSAGE NOT ISSUED
  19779. INA3 TA3 B2,VMST CHECK FOR CONNECTION RESET RECEIVED
  19780. LX3 59-47
  19781. NG X3,INA4 IF CONNECTION RESET HAS BEEN RECEIVED
  19782. BX7 X7-X7
  19783. SB7 INA3
  19784. EQ PCD REENTER
  19785.  
  19786. * CONNECTION RESET RECEIVED, CONTINUE WITH TIMEOUT.
  19787.  
  19788. INA4 MX7 1 CLEAR CONNECTION RESET RECEIVED BIT
  19789. BX7 -X7*X3
  19790. LX7 47-59 REALIGN *VMST*
  19791. SB7 B0
  19792. TA7 B2,VMST REWRITE *VMST*
  19793. RJ SRE CLEAR DRIVER REENTRY
  19794. SX6 /TLX/TOT
  19795. RJ ERQ ENTER REQUEST
  19796. RJ DAP DROP ASSIGNED POTS
  19797. SX6 DMBL SEND BELLS
  19798. SB4 DMBLL
  19799. RJ ACD ASSIGN MESSAGE
  19800. SX6 DMTO SEND TIMEOUT MESSAGE
  19801. SB4 DMTOL
  19802. SB3 B0
  19803. RJ ACD ASSIGN MESSAGE
  19804. EQ PCSX EXIT
  19805. ITM SPACE 4,10
  19806. ** ITM - INITIATE TYPEAHEAD MODE.
  19807. *
  19808. * SENDS A *LSTHDX* SUPERVISORY MESSAGE TO THE NETWORK
  19809. * TO INITIATE TYPEAHEAD QUEUING.
  19810. *
  19811. * CALLS ASV, PCD, SRE.
  19812.  
  19813.  
  19814. ITM BSS 0 ENTRY
  19815. BX6 X6-X6 SET DEFAULT HEADER
  19816. SB4 B1 SET MESSAGE LENGTH
  19817. SX7 LSTHDX SET MESSAGE NAME
  19818. RJ ASV ASSIGN MESSAGE
  19819. SB3 B0
  19820. BX7 X7-X7
  19821. SB7 ITM
  19822. ZR X6,PCD IF MESSAGE NOT ISSUED, REENTER
  19823. TA1 B2,VMST READ VMST ENTRY
  19824. SX6 B1 SET TYPEAHEAD IN EFFECT
  19825. LX6 51-0
  19826. BX6 X6+X1
  19827. SA6 A1 REWRITE VMST
  19828. EQ PCSX EXIT
  19829. JCM SPACE 4,10
  19830. ** JCM - ISSUE JOB COMPLETION MESSAGE.
  19831. *
  19832. * ISSUE JOB OR RUN COMPLETION MESSAGE AS DETERMINED
  19833. * BY THE TERMINAL SUBSYSTEM.
  19834. *
  19835. * ENTRY (VSTT) BYTE 3 = 6/, 6/SUBSYSTEM.
  19836. *
  19837. * EXIT TO *RDY* IF NO MESSAGE SPECIFIED FOR THE
  19838. * TERMINAL SUBSYSTEM.
  19839. *
  19840. * CALLS ACD, PCD, RDY.
  19841.  
  19842.  
  19843. JCM BSS 0 ENTRY
  19844. SA1 A0+VSTT READ VSTT
  19845. MX6 -3
  19846. LX1 -12
  19847. BX6 -X6*X1 EXTRACT CURRENT SUBSYSTEM
  19848. SA1 JCMT+X6 READ MESSAGE ADDRESS
  19849. ZR X1,RDY IF NO MESSAGE DEFINED
  19850. SX6 X1+ SET MESSAGE ADDRESS
  19851. SB4 DMRCL SET MESSAGE LENGTH
  19852. RJ ACD ASSIGN MESSAGE
  19853. NZ X6,PCSX IF MESSAGE ASSIGNED
  19854. SB7 JCM SET REENTRY
  19855. BX7 X7-X7
  19856. EQ PCD REENTER
  19857.  
  19858. * JCMT - TABLE OF RUN COMPLETION MESSAGES.
  19859.  
  19860. JCMT INDEX CON,MSYS,( 0 )
  19861. INDEX ,BASS,( DMRC )
  19862. INDEX ,FORS,( DMRC )
  19863. INDEX ,FTNS,( DMRC )
  19864. INDEX ,EXES,( DMRC )
  19865. NAK SPACE 4,10
  19866. ** NAK - BLOCK NOT DELIVERED.
  19867. *
  19868. * PERFORMS THE FOLLOWING FUNCTIONS IN RESPONSE TO A
  19869. * *NAK* SUPERVISORY MESSAGE-
  19870. *
  19871. * (1) UPDATES *NAK* COUNT.
  19872. * (2) DECREMENTS DOWNSTREAM BLOCK COUNT.
  19873. * (3) VALIDATES REASON CODE.
  19874. * (4) ISSUES APPROPRIATE DAYFILE MESSAGE.
  19875. * (5) CALLS ABORT PROCESSOR IF ERROR.
  19876. *
  19877. * ENTRY (RCVB) = REASON CODE, BITS 36-43.
  19878. *
  19879. * EXIT DAYFILE MESSAGE ISSUED.
  19880. * (NAKC) = INCREMENTED.
  19881. * (BLTC) = INCREMENTED IF BLOCK-LOST.
  19882. * (VMST) = DOWNSTREAM BLOCK COUNT DECREMENTED.
  19883. *
  19884. * CALLS ABT, DBC, IDM, O6S.
  19885.  
  19886.  
  19887. NAK BSS 0 ENTRY
  19888. SA1 NAKC UPDATE *NAK* COUNT
  19889. SX7 B1
  19890. SB6 B0 (B6) = ERROR FLAG
  19891. IX7 X1+X7
  19892. SA7 A1 REWRITE *NAK* COUNT
  19893. RJ DBC DECREMENT TERMINAL BLOCK COUNT
  19894. PL X6,NAK1 IF NO ERROR
  19895. SB6 B1+ SET ERROR FLAG
  19896.  
  19897. * VALIDATE REASON CODE.
  19898.  
  19899. NAK1 SA2 RCVB READ MESSAGE
  19900. MX3 -8 MASK REASON CODE
  19901. SX1 B2 SET (X1) FOR *O6S*
  19902. AX2 36
  19903. BX3 -X3*X2
  19904. SX2 X3-AXLB CHECK FOR *BLOCK-LOST*
  19905. NZ X2,NAK2 IF NOT *BLOCK-LOST*
  19906.  
  19907. * PROCESS *BLOCK-LOST* CONDITION.
  19908.  
  19909. RJ O6S CONVERT TERMINAL NUMBER
  19910. SA1 NAKB INSERT IN DAYFILE MESSAGE
  19911. MX3 18
  19912. AX6 6
  19913. BX1 X3*X1
  19914. BX6 -X3*X6
  19915. IX7 X6+X1
  19916. SA7 A1
  19917. SX6 NAKA SET MESSAGE ADDRESS
  19918. RJ IDM ISSUE DAYFILE MESSAGE
  19919. SA1 BLTC INCREMENT BLOCK-LOST COUNT
  19920. SX7 B1
  19921. IX6 X7+X1
  19922. SA6 A1+
  19923. ZR B6,PCSX IF NO ERROR, EXIT
  19924.  
  19925. * PROCESS ERROR.
  19926.  
  19927. NAK2 SX6 3RNAK SET ERROR CODE
  19928. RJ ABT PROCESS ERROR
  19929. EQ PCSX EXIT
  19930.  
  19931. NAKA DATA 10HBLOCK LOST
  19932. NAKB DATA 03L -
  19933. NWC SPACE 4,40
  19934. ** NWC - PROCESS NEW CONNECTION.
  19935. *
  19936. * INITIATES THE CREATION OF NEW USER. THE USER HAS
  19937. * BEEN VALIDATED BY *NVF* AND THE USERS VALIDATION DATA
  19938. * ARE AVAILABLE IN THE CONNECTION SUPERVISORY MESSAGE.
  19939. * *NWC* COPIES THE VALIDATION INFORMATION TO POT FOR
  19940. * USE FOR LOGIN AND ISSUES SUPERVISORY MESSAGE TO EITHER
  19941. * ACCEPT OR REJECT THE NEW CONNECTION. LOGIN WILL BE
  19942. * COMPLETED AFTER THE COMMUNICATIONS SUPERVISOR SENDS
  19943. * A *CONNECTION MADE* SUPERVISORY MESSAGE.
  19944. *
  19945. * ENTRY (MESSAGE) = VALIDATION PARAMETERS.
  19946. * (MSG+0) = 36/, 3/ ABL, 5/, 8/ DT, 8/.
  19947. * (MSG+1) = 42/ TN, 2/, 8/ PW, 8/PL.
  19948. * (MSG+2) = 46/, 1/A, 3/LAL, 11/ BSZ, 1/0.
  19949. * (MSG+4) = 42/ FN, 18/ FO.
  19950. * (MSG+5) = 42/ UN, 18/ UI.
  19951. * (MSG+6) = 60/ AHMT.
  19952. * (MSG+7) = 60/ AHDS.
  19953. * (MSG+8) = 60/ AAWC.
  19954. * (MSG+9) = 60/ ATWD.
  19955. *
  19956. * MSG = MESSAGE FWA.
  19957. * ABL = APPLICATION BLOCK LIMIT.
  19958. * DT = DEVICE TYPE.
  19959. * TN = TERMINAL NAME.
  19960. * PW = PAGE WIDTH.
  19961. * PL = PAGE LENGTH.
  19962. * A = *LAL* SPECIFIED.
  19963. * LAL = LINE ACCESS LEVEL LIMIT.
  19964. * BSZ = BLOCK SIZE.
  19965. * FN = FAMILY NAME.
  19966. * FO = FAMILY ORDINAL.
  19967. * UN = USER NAME.
  19968. * UI = USER INDEX (NOT USED).
  19969. * AHMT = ACCOUNT FILE WORD *AHMT*.
  19970. * AHDS = ACCOUNT FILE WORD *AHDS*.
  19971. * AAWC = ACCOUNT FILE WORD *AAWC*.
  19972. * ATWD = ACCOUNT FILE WORD *ATWD*.
  19973. *
  19974. * EXIT (VDPT(0)) = VALIDATION POT POINTER.
  19975. *
  19976. * TO *CRR* IF ERROR CONDITION DECTECTED.
  19977. * TO *CRR1* IF NO ERROR CONDITION DETECTED.
  19978. *
  19979. * CALLS ABT, CRR, CTP, ZFN.
  19980.  
  19981.  
  19982. NWC BSS 0 ENTRY
  19983.  
  19984. * ENTRY FOR SECONDARY CONNECTION REQUEST.
  19985.  
  19986. SA1 A0+VDCT SET SECONDARY APPLICATION
  19987. MX6 1
  19988. LX6 46-59
  19989. BX6 X1+X6
  19990. SA6 A1 REWRITE VDCT
  19991.  
  19992. * VERIFY THAT CONNECTION CAN BE ACCEPTED.
  19993.  
  19994. * ENTRY FOR PRIMARY CONNECTION REQUEST.
  19995.  
  19996. NWC0 BSS 0 ENTRY
  19997. SA1 SHDF CHECK SHUTDOWN FLAG
  19998. NZ X1,CRR IF SHUTDOWN IN PROGRESS
  19999. TB6 B0,VNTP
  20000. LT B2,B6,CRR IF INCORRECT ACN
  20001. TB7 B0,VNTP,LWA
  20002. GT B2,B7,CRR IF INCORRECT ACN
  20003. TA1 B2,VMST GET VMST
  20004. NZ X1,CRR IF ALREADY ON-LINE
  20005. SA1 RCVB CHECK DEVICE TYPE
  20006. MX6 -3
  20007. AX1 13-0
  20008. BX6 -X6*X1
  20009. SB4 B0 SELECT ZERO FILL
  20010. NZ X6,CRR IF PASSIVE DEVICE
  20011. SX0 B0 USE X0 AS A TEMPORARY VALIDATION FLAG
  20012. SA1 RCVB+10D CHECK FOR SECONDARY VALIDATION
  20013. SA3 =8HVALIDATE
  20014. BX6 X3-X1
  20015. NZ X6,NWC0.1 IF NO VALIDATION
  20016. SX0 B1 SET FLAG = ONE TO INDICATE VALIDATION
  20017. SA1 RCVB+11D PUT SECONDARY FAMILY NAME IN *RCVB+4*
  20018. BX6 X1
  20019. SA6 RCVB+4
  20020. SA1 A1+B1 PUT SECONDARY USER NUMBER IN *RCVB+5*
  20021. BX6 X1
  20022. SA6 A6+B1
  20023. SA1 RCVB+1
  20024. RJ ZFN ZERO FILL TERMINAL NAME
  20025. SA6 A1
  20026. NWC0.1 SA1 RCVB+4
  20027. RJ ZFN ZERO FILL FAMILY NAME
  20028. SA6 A1
  20029. SA1 A1+B1
  20030. RJ ZFN ZERO FILL USER NAME
  20031. SA6 A1
  20032.  
  20033. * INCREMENT ACTIVE USER COUNT.
  20034.  
  20035. SA1 VANL GET ACTIVE USER COUNT
  20036. SX6 X1+B1 INCREMENT ACTIVE USER COUNT
  20037. SA6 A1
  20038. SA2 LINB GET MAXIMUM USER COUNT
  20039. IX2 X2-X6
  20040. PL X2,NWC1 IF NOT NEW MAXIMUM
  20041. SA6 A2+ STORE NEW MAXIMUM
  20042. NWC1 RJ UCP UPDATE CONVERTED POINTER
  20043.  
  20044. * SAVE VALIDATION PARAMETERS IN POT.
  20045.  
  20046. SB3 B0 INDICATE NO POT AVAILABLE
  20047. BX6 X6-X6 CLEAR VCHT
  20048. SB4 VUNA-VFNA+1 SET BLOCK LENGTH
  20049. SA6 A0+VCHT
  20050. SX6 RCVB+4 SET BLOCK FWA
  20051. SB5 B0+ USE FIRST WORD OF POT
  20052. RJ CTP COPY INPUT BLOCK TO POT
  20053. SX7 B3 SET LOGIN POT POINTER
  20054. LX7 48
  20055. SA7 A0+VDPT
  20056. SA1 RCVB+2 SET LINE ACCESS LIMIT IN POT
  20057. MX6 -4
  20058. LX1 -12
  20059. BX6 -X6*X1
  20060. SA6 B4+VLAL
  20061. ZR X0,NWC1.1 IF NO VALIDATION, SKIP PASSWORD
  20062. SA1 RCVB+13D PUT PASSWORD INTO PARAMETER POT
  20063. MX6 42
  20064. BX6 X1*X6
  20065. EQ NWC1.2 CLEAR
  20066.  
  20067. NWC1.1 SA1 RCVB+13D PUT ZEROES IN PASSWORD FIELD
  20068. MX6 42
  20069. BX6 -X6*X1
  20070. NWC1.2 SA6 B4+VPWA WRITE INTO PARAMETER POT
  20071. SA1 RCVB+1 GET TERMINAL NAME
  20072. SA2 B4+VTRY GET LRC
  20073. MX6 42
  20074. BX1 X6*X1
  20075. BX2 -X6*X2
  20076. BX6 X2+X1
  20077. SA6 A2 SET TERMINAL NAME AND LRC IN POT
  20078.  
  20079. * SET TERMINAL CHARACTERISTICS IN MESSAGE STATUS TABLE.
  20080.  
  20081. SA1 RCVB READ FIRST WORD OF MESSAGE
  20082. MX5 -8
  20083. BX7 X7-X7
  20084. AX1 8 SHIFT DEVICE TYPE
  20085. BX6 -X5*X1 SET DEVICE TYPE
  20086. LX6 36
  20087. AX1 21-8 MASK BLOCK LIMIT (ABL)
  20088. MX5 -3
  20089. BX1 -X5*X1
  20090. LX1 30
  20091. BX6 X6+X1 MERGE
  20092. SA1 RCVB+2 READ THIRD WORD OF MESSAGE
  20093. MX5 -11 GET POT STRING LENGTH
  20094. SX7 60
  20095. AX1 1
  20096. BX1 -X5*X1
  20097. IX1 X1/X7 CALCULATE NUMBER OF POTS
  20098. SX1 X1+B1
  20099. SX7 VXPL
  20100. IX5 X1-X7
  20101. MX2 -5
  20102. PL X5,NWC2 IF GREATER THAN MAXIMUM
  20103. SX7 VNPL
  20104. IX5 X1-X7
  20105. NG X5,NWC2 IF LESS THAN MINIMUM
  20106. SX7 X1
  20107. NWC2 BX7 -X2*X7 SET NUMBER OF POTS
  20108. LX7 18
  20109. SA1 RCVB+5 READ USER NAME
  20110. BX6 X6+X7
  20111. SA2 RCVB+2 READ THIRD WORD OF MESSAGE
  20112. LX2 59-16 GET NETWORK TYPE
  20113. PL X2,NWC2.1 IF NAM/CCP CONNECTION
  20114. SX2 B1
  20115. LX2 58-0
  20116. BX6 X6+X2 STORE NETWORK TYPE
  20117. NWC2.1 TA6 B2,VMST STORE VMST
  20118.  
  20119. * INITIALIZE TERMINAL TABLE.
  20120.  
  20121. MX6 42
  20122. BX7 X6*X1 MASK OUT THE USER INDEX
  20123. SA7 A0+VUIT SET *VUIT*
  20124. SA1 RCVB+1 GET TERMINAL NAME
  20125. MX2 42
  20126. BX7 X2*X1
  20127. TA7 B2,VTNP ENTER NEW TERMINAL NAME
  20128. NZ X0,NWC3 IF VALIDATE FLAG IS SET, MAKE A REENTRY
  20129. EQ CRR1 SEND SUPERVISORY MESSAGE
  20130.  
  20131. NWC3 SX5 ITA4$ SET *1TA* REQUEST
  20132. EQ PCS1 MAKE ENTRY
  20133. PCD SPACE 4,10
  20134. ** PCD - DRIVER *PCS* PROCESSING EXIT.
  20135. *
  20136. * USED AS *PCS* EXIT IF DRIVER REENTRY IS REQUIRED.
  20137. *
  20138. * ENTRY (B7) = REENTRY ADDRESS IF NONZERO.
  20139. * (B3) = REENTRY POT POINTER.
  20140. * (X7) = 12 BIT REENTRY PARAMETER.
  20141. *
  20142. * CALLS SRE.
  20143.  
  20144.  
  20145. PCD BSS 0 ENTRY
  20146. ZR B7,PCSX IF NO REENTRY REQUIRED
  20147. RJ SRE SET REENTRY
  20148. EQ PCSX EXIT
  20149. RDY SPACE 4,10
  20150. ** RDY - ISSUE *READY* MESSAGE.
  20151. *
  20152. * ISSUES *READY* MESSAGE IF NOT IN BATCH SUBSYSTEM,
  20153. * ISSUES SLASH IF IN BATCH SUBSYSTEM.
  20154. *
  20155. * ENTRY (VSTT) BYTE 3 = 6/, 6/SUBSYSTEM.
  20156. *
  20157. * EXIT MESSAGE ISSUED.
  20158. *
  20159. * CALLS ACD, PCD.
  20160.  
  20161.  
  20162. RDY BSS 0 ENTRY
  20163. SA1 A0+VSTT READ VSTT
  20164. SX6 DMRDY ASSUME *READY* MESSAGE
  20165. SB4 DMRDYL
  20166. MX7 -3
  20167. LX1 -12
  20168. BX1 -X7*X1 EXTRACT CURRENT SUBSYSTEM
  20169. SX1 X1-BATS CHECK SUBSYSTEM
  20170. NZ X1,RDY1 IF NOT BATCH SUBSYSTEM
  20171. SX6 DMSL SET *SLASH* MESSAGE
  20172. SB4 DMSLL
  20173. RDY1 RJ ACD ASSIGN MESSAGE
  20174. NZ X6,PCSX IF MESSAGE ISSUED
  20175. SB7 RDY SET REENTRY
  20176. BX7 X7-X7
  20177. EQ PCD REENTER
  20178. ROI SPACE 4,10
  20179. ** ROI - RESUME OUTPUT INTERRUPT RESPONSE.
  20180. *
  20181. * ISSUES *INTRES* ASYNCHRONOUS SUPERVISORY MESSAGE IN
  20182. * RESPONSE TO A USER INTERRUPT AND ISSUES AN *ROMARK*
  20183. * SYNCHRONOUS SUPERVISORY MESSAGE TO RESUME OUTPUT TO
  20184. * THE TERMINAL FOLLOWING A USER BREAK ONE OR TWO. IF
  20185. * THE USER IS IN *TEXT* MODE AND BREAK IS IN PROGRESS,
  20186. * *ETX* WILL BE CALLED TO EXIT FROM *TEXT* MODE. IF THE
  20187. * TERMINAL LOGOUT FLAG IS SET, IT IS ASSUMED THAT HANG
  20188. * UP PROCESSING HAS BEEN INTERRUPTED AND MUST BE RESUMED.
  20189. *
  20190. * ENTRY (B3) = ZERO.
  20191. *
  20192. * EXIT (VMST) BREAK-IN-PROGRESS BIT CLEARED.
  20193. * *ETX* DRIVER REQUEST SENT, IF IN TEXT MODE.
  20194. * TO *CNB* IF LOGOUT FLAG IS SET.
  20195. *
  20196. * CALLS ASV, ETX, SAB, SCS.
  20197.  
  20198.  
  20199. ROI BSS 0 ENTRY
  20200. SX7 INTRES ISSUE *INTRES* SUPERVISORY MESSAGE
  20201. SB4 B1 TEXT LENGTH = 1
  20202. BX6 X6-X6 INDICATE DEFAULT HEADER
  20203. RJ ASV ASSIGN ASYNCHRONOUS MESSAGE
  20204. SB3 B0
  20205. NZ X6,ROI1 IF MESSAGE ASSIGNED
  20206. SB7 ROI SET REENTRY
  20207. EQ PCD REENTER
  20208.  
  20209. ROI1 SA2 NBSY CHECK IF NETWORK BUSY
  20210. NZ X2,ROI2 IF NETWORK BUSY
  20211. RJ CBL CHECK DOWNLINE BLOCK LIMIT
  20212. NZ X6,ROI2 IF AT BLOCK LIMIT
  20213. SB2 -B2 SEND RESUME OUTPUT SUPERVISORY MESSAGE
  20214. SX6 HDRS3 SET UP ASYNCHRONOUS HEADER
  20215. SX7 ROMARK
  20216. RJ SCS ASSIGN SYNCHRONOUS MESSAGE
  20217. SB3 B0
  20218. EQ ROI3 CONTINUE
  20219.  
  20220. ROI2 SB7 ROI1 SET REENTRY ADDRESS
  20221. EQ PCD REENTER
  20222.  
  20223. * HANG UP PHONE IF LOGOUT INTERRUPTED.
  20224.  
  20225. ROI3 RJ IBC INCREMENT DOWNLINE BLOCK COUNT
  20226. TA1 B2,VMST READ VMST ENTRY
  20227. SA2 A0+VDCT READ VDCT
  20228. SA4 A0+VSTT READ VSTT
  20229. LX1 59-57
  20230. LX2 59-50
  20231. MX6 -59
  20232. LX4 59-48 CHECK LOGOUT FLAG
  20233. BX3 X1*X2 CHECK BREAK AND TEXT MODE BITS
  20234. BX6 -X6*X1 CLEAR BREAK IN PROGRESS BIT
  20235. LX6 57-59
  20236. SB3 B0
  20237. SA6 A1+ REWRITE VMST ENTRY
  20238. NG X4,ROI5 IF LOGOUT FLAG SET
  20239. PL X3,ROI4 IF NOT BOTH BREAK AND TEXT MODE
  20240.  
  20241. * EXIT FROM *TEXT* MODE.
  20242.  
  20243. RJ ETX EXIT *TEXT* MODE
  20244. EQ PCSX EXIT
  20245.  
  20246. ROI4 RJ SAB SET TERMINAL ACTIVE
  20247. EQ PCSX EXIT
  20248.  
  20249. * WAIT FOR THE ACKNOWLEDGMENT OF THE *BI/MARK*
  20250. * MESSAGE BEFORE CONTINUING WITH LOGOUT.
  20251.  
  20252. ROI5 RJ CBL CHECK BLOCK LIMIT
  20253. SB7 ROI5 SET REENTRY ADDRESS
  20254. NZ X3,PCD IF BLOCKS OUTSTANDING
  20255. EQ CNB CONTINUE WITH LOGOUT
  20256. SCP SPACE 4,20
  20257. ** SCF - PROCESS SYSTEM CONTROL POINT FAILURE.
  20258. *
  20259. * SETS UP DAYFILE MESSAGE AND INITIATES IMMEDIATE SHUT-
  20260. * DOWN. IT IS ASSUMED THAT, UPON ENTRY, THE CONTENTS
  20261. * OF REGISTER B1 HAVE BEEN DESTROYED BY AN *AIP* CALL.
  20262. *
  20263. * EXIT TO *SIS*.
  20264. * (B1) = 1.
  20265. * (X6) = ADDRESS OF DAYFILE MESSAGE.
  20266.  
  20267.  
  20268. SCF BSS 0 ENTRY
  20269. SB1 1 RESTORE CONSTANT B1=1
  20270. SX6 =C* SYSTEM CONTROL POINT FAILURE.*
  20271. EQ SIS SET IMMEDIATE SHUTDOWN
  20272. SDU SPACE 4,10
  20273. ** SDU - SUSPEND DRIVER FOR USER BREAK.
  20274. *
  20275. * SETS BREAK-IN-PROGRESS BIT IN *VMST* AND THEN JUMPS TO
  20276. * USER BREAK PROCESSING. X7 IS SET TO ZERO, SIGNIFYING AN
  20277. * EXECUTIVE INITIATED USER BREAK.
  20278. *
  20279. * EXIT TO ROUTINE *BRK*.
  20280. * (X7) = 0.
  20281.  
  20282.  
  20283. SDU BSS 0 ENTRY
  20284. TA1 B2,VMST SET BREAK-IN-PROGRESS
  20285. SX6 B1
  20286. LX6 57-0
  20287. BX6 X1+X6
  20288. SA6 A1
  20289. SX7 B0+
  20290. SB7 BRK8
  20291. EQ PCD REENTER IN USER BREAK PROCESSING.
  20292. SCR SPACE 4,10
  20293. ** SCR - SET CONNECTION RESET BIT.
  20294. *
  20295. * SET CONNECTION RESET RECEIVED BIT IN *VMST* WHEN AN UPLINE
  20296. * FC/RST SUPERVISORY MESSAGE IS RECEIVED IN RESPONSE TO A
  20297. * DOWNLINE FC/BRK SUPERVISORY MESSAGE.
  20298. *
  20299. * EXIT (VMST) = CONNECTION RESET RECEIVED BIT SET
  20300. *
  20301. * USES A - 1, 6.
  20302. * X - 1, 6.
  20303.  
  20304.  
  20305. SCR BSS 0 ENTRY
  20306. TA1 B2,VMST READ *VMST*
  20307. MX6 1 SET CONNECTION RESET RECEIVED BIT
  20308. LX6 47-59
  20309. BX6 X1+X6
  20310. SA6 A1 REWRITE *VMST*
  20311. EQ PCSX EXIT
  20312. SIS SPACE 4,30
  20313. ** SIS - SET IMMEDIATE SHUTDOWN.
  20314. *
  20315. * PERFORMS THE FOLLOWING FUNCTIONS TO INITIATE AN
  20316. * IMMEDIATE SHUTDOWN-
  20317. *
  20318. * (1) ISSUES REASON FOR SHUTDOWN DAYFILE MESSAGE.
  20319. * (2) SETS IMMEDIATE SHUTDOWN STATUS IF NOT ALREADY SET.
  20320. * (3) EXITS FROM NETWORK DRIVER. SHUTDOWN WILL
  20321. * BE PROCESSED ON THE NEXT DRIVER CYCLE.
  20322. *
  20323. * ENTRY (X6) = DAYFILE MESSAGE ADDRESS.
  20324. * (SHDF) = CURRENT SHUTDOWN STATUS.
  20325. *
  20326. * EXIT TO *NDRX*.
  20327. * (SHDF) = SET FOR IMMEDIATE SHUTDOWN.
  20328. *
  20329. * USES X - 1, 6, 7.
  20330. * A - 1, 6, 7.
  20331. *
  20332. * CALLS IDM.
  20333.  
  20334.  
  20335. SIS BSS 0 ENTRY
  20336. RJ IDM ISSUE DAYFILE MESSAGE
  20337. SA1 SHDF GET CURRENT SHUTDOWN FLAG
  20338. NG X1,NDRX IF IMMEDIATE SHUTDOWN IN PROGRESS
  20339. MX6 1
  20340. SA6 A1 SET IMMEDIATE SHUTDOWN
  20341. EQ NDRX EXIT FROM NETWORK DRIVER
  20342. TITLE NETWORK INTERFACE ROUTINES.
  20343. SPACE 4,10
  20344. ** THE NETWORK INTERFACE ROUTINES CONSIST OF ALL ROUTINES
  20345. * WHICH EXECUTE NETWORK CALLS. ANY NETWORK CALL MACRO
  20346. * USED BY A NETWORK INTERFACE ROUTINE REQUIRES THE COR-
  20347. * RESPONDING AIP LINKAGE IN ORDER TO LINK TO ITS LOADED
  20348. * RELOCATABLE AIP SUBROUTINE ENTRY POINT.
  20349. CKP SPACE 4,40
  20350. ** CKP - CHECK NETWORK PARALLEL MODE STATUS.
  20351. *
  20352. * CHECKS NETWORK PARALLEL MODE STATUS AND POST PRO-
  20353. * CESSES COMPLETED INPUT OR OUTPUT REQUESTS. IN THE
  20354. * CASE OF AN INPUT REQUEST, *CKP* RETURNS THE MESSAGE
  20355. * HEADER AND BLOCK TYPE; IN THE CASE OF AN OUTPUT RE-
  20356. * QUEST, *CKP* CLEARS THE OUTPUT STATUS POINTERS AND
  20357. * DROPS ANY OUTPUT POTS HELD.
  20358. *
  20359. * IF NAM IS NO LONGER PRESENT, *CKP* WILL CALL *SCF*
  20360. * TO SET IMMEDIATE SHUTDOWN AND EXIT FROM THE NETWORK
  20361. * DRIVER.
  20362. *
  20363. * ENTRY (IBSY) = INPUT REQUEST HEADER ADDRESS.
  20364. * (NGLN) = .GE. 4 IF INPUT REQUESTED FOR SPECIFIC
  20365. * TERMINAL.
  20366. * (OBSY) = NONZERO IF OUTPUT REQUEST.
  20367. * (OTPP) = OUTPUT POT POINTER IF NONZERO.
  20368. * (NCAS) = (A0) TO BE RESTORED.
  20369. * (NCBS) = (B2) TO BE RESTORED.
  20370. * (SSCR) = NEGATIVE IF SCP FAILURE.
  20371. *
  20372. * EXIT (NBSY) = ZERO IF NETWORK CALL COMPLETE
  20373. * (PCRX) = ZERO IF NULL INPUT BLOCK RECEIVED
  20374. * NOT IN CUNJUNCTION WITH A SPECIFIC
  20375. * TERMINAL.
  20376. * (SUPA) = SET IF SUPERVISORY MESSAGE AVAILABLE.
  20377. * (X6) = ZERO IF CALL COMPLETE.
  20378. * (A0) = RESTORED.
  20379. * (B1) = 1.
  20380. * (B2) = RESTORED.
  20381. *
  20382. * IF OUTPUT REQUEST COMPLETE:
  20383. * (OBSY) = 0.
  20384. * (OTPP) = 0, POTS DROPPED.
  20385. *
  20386. * IF INPUT REQUEST COMPLETE:
  20387. * (X1) = MESSAGE HEADER.
  20388. * (X2) = MESSAGE BLOCK TYPE, RIGHT JUSTIFIED.
  20389. * = 0 IF NULL BLOCK.
  20390. * (IBSY) = 0 IF NULL BLOCK.
  20391. *
  20392. * TO SCF IF NAM FAILURE:
  20393. * (SHDF) = COMPLETE SHUTDOWN.
  20394. *
  20395. * CALLS DPT, SCF.
  20396. *
  20397. * MACROS NETCHEK.
  20398.  
  20399.  
  20400. CKP SUBR ENTRY/EXIT
  20401. SA1 VSHD CHECK SCP STATUS
  20402. NG X1,SCF IF SCP FAILURE
  20403. SA2 NSUP
  20404. NG X2,CKP1 IF CHECK UNNECESSARY
  20405. NETCHEK CHECK NETWORK STATUS
  20406. CKP1 SA1 NSUP READ STATUS RESPONSE WORD
  20407. SA3 NCAS RESTORE (A0)
  20408. SA4 NCBS RESTORE (B2)
  20409. SB1 1 RESET CONSTANT B1=1
  20410. SA0 X3+
  20411. SB2 X4+
  20412. BX2 X1
  20413. PL X2,CKP4 IF OPERATION NOT COMPLETE
  20414. LX2 59-57
  20415. PL X2,SCF IF NAM NO LONGER PRESENT
  20416. SX7 B1
  20417. AX1 55-0 SHIFT SUPERVISORY MESSAGE BIT
  20418. BX7 X7*X1 MASK SUPERVISORY MESSAGE BIT
  20419. SA1 OBSY GET OUTPUT POINTER
  20420. BX6 X6-X6
  20421. SA7 SUPA SET SUPERVISORY MESSAGE AVAILABLE
  20422. SA6 NBSY CLEAR BUSY STATUS
  20423.  
  20424. * POSTPROCESS OUTPUT OPERATION.
  20425.  
  20426. ZR X1,CKP2 IF NOT OUTPUT OPERATION
  20427. SA2 OTPP READ POT POINTER
  20428. SA6 A1 CLEAR OUTPUT BUSY STATUS
  20429. ZR X2,CKPX IF NO OUTPUT POTS, RETURN
  20430. SB3 X2 DROP OUTPUT POT CHAIN
  20431. SB4 B0
  20432. RJ DPT
  20433. SX6 B0+ CLEAR OUTPUT POT POINTER
  20434. SA6 OTPP
  20435. EQ CKPX RETURN
  20436.  
  20437. * POSTPROCESS INPUT OPERATION.
  20438.  
  20439. CKP2 SA3 IBSY GET HEADER ADDRESS
  20440. ZR X3,CKPX IF NOT INPUT OPERATION, RETURN
  20441. SA2 X3+ READ HEADER
  20442. AX2 54 SHIFT BLOCK TYPE
  20443. NZ X2,CKPX IF NOT NULL BLOCK
  20444. SA1 NGLN GET REQUEST LIST/ACN NUMBER
  20445. SA6 A3 CLEAR INPUT STATUS
  20446. AX1 2
  20447. NZ X1,CKPX IF FOR SPECIFIC ACN
  20448. SA6 PCRX CLEAR PREVIOUS CYCLE FORCED EXIT
  20449. EQ CKPX RETURN
  20450.  
  20451. * CHECK INCOMPLETE STATUS.
  20452.  
  20453. CKP4 LX1 59-57 CHECK FOR NAM NO LONGER PRESENT
  20454. SX6 =C* NETWORK CONNECTION LOST.*
  20455. PL X1,SIS IF NAM NO LONGER PRESENT
  20456. SX6 B1+
  20457. SA6 NBSY SET BUSY STATUS
  20458. EQ CKPX RETURN
  20459. GLM SPACE 4,30
  20460. ** GLM - GET DATA LIST MESSAGE.
  20461. *
  20462. * ISSUES *NETGTLQ* CALL TO INPUT DATA FROM NETWORK
  20463. * UPON SPECIFIED APPLICATION LIST.
  20464. *
  20465. * ENTRY (X2) = APPLICATION LIST NUMBER (ALN).
  20466. *
  20467. * EXIT (IBSY) = INPUT REQUEST HEADER ADDRESS.
  20468. * (IBSY) = ZERO IF NULL BLOCK RECEIVED.
  20469. * (NGLN) = APPLICATION LIST NUMBER (ALN).
  20470. * (RCVH) = MESSAGE HEADER.
  20471. * (RCVB) = MESSAGE BUFFER.
  20472. * (X6) = NONZERO IF NAM BUSY.
  20473. * (X1) = MESSAGE HEADER.
  20474. * (X2) = BLOCK TYPE, RIGHT JUSTIFIED.
  20475. * = 0 IF NULL BLOCK.
  20476. *
  20477. * USES (NCPA) = APPLICATION LIST NUMBER.
  20478. *
  20479. * CALLS CKP, SCF.
  20480. *
  20481. * MACROS NETGTLQ.
  20482.  
  20483.  
  20484. GLM SUBR ENTRY/EXIT
  20485. SX6 RCVH SET INPUT BUSY
  20486. SX7 X2+ SET APPLICATIONS LIST NUMBER
  20487. SA6 IBSY
  20488. SA1 VSHD CHECK SCP STATUS
  20489. SA7 NCPA
  20490. NG X1,SCF IF SCP FAILURE
  20491. SA7 NGLN
  20492. NETGTLQ NCPA,RCVH,RCVB,GLMA,GTMA ISSUE NETWORK CALL
  20493. RJ CKP CHECK PARALLEL STATUS
  20494. ZR X6,GLMX IF CALL COMPLETE
  20495.  
  20496. * INCREMENT NETGET BUSY COUNT.
  20497.  
  20498. SA1 NGBC GET BUSY COUNT
  20499. SX7 B1 INCREMENT COUNT
  20500. IX7 X7+X1
  20501. SA7 A1+
  20502. EQ GLMX RETURN
  20503.  
  20504. GLMA CON RCVL RECEIVE BUFFER LENGTH
  20505. GTM SPACE 4,20
  20506. ** GTM - GET MESSAGE.
  20507. *
  20508. * REQUESTS MESSAGE ON SPECIFIED ACN.
  20509. *
  20510. * ENTRY (B2) = TERMINAL NUMBER (ACN).
  20511. *
  20512. * EXIT (IBSY) = INPUT REQUEST HEADER ADDRESS.
  20513. * (NBSY) = SET IF NAM BUSY.
  20514. * (NGLN) = TERMINAL NUMBER (ACN).
  20515. * (RCVH) = MESSAGE HEADER.
  20516. * (RCVB) = MESSAGE BUFFER.
  20517. * (X1) = MESSAGE HEADER.
  20518. * (X2) = BLOCK TYPE, RIGHT JUSTIFIED.
  20519. * = 0 IF NULL BLOCK.
  20520. *
  20521. * USES (RCVH) = RECEIVE HEADER.
  20522. * (RCVB) = RECEIVE BUFFER.
  20523. * (NCPA) = ACN (TERMINAL NUMBER).
  20524. *
  20525. * CALLS CKP, SCF.
  20526. *
  20527. * MACROS NETGETQ.
  20528.  
  20529.  
  20530. GTM SUBR ENTRY/EXIT
  20531. SX6 B2 SAVE (B2)
  20532. SX7 A0 SAVE (A0)
  20533. SA6 NCBS
  20534. SA7 NCAS
  20535. SA1 VSHD CHECK SCP STATUS
  20536. SX7 RCVH SET INPUT BUSY
  20537. SA6 NCPA SET ACN
  20538. NG X1,SCF IF SYSTEM CONTROL POINT FAILURE
  20539. SA7 IBSY
  20540. SA6 NGLN
  20541. NETGETQ NCPA,RCVH,RCVB,GLMA,GTMA ISSUE NETWORK CALL
  20542. RJ CKP CHECK PARALLEL STATUS
  20543. ZR X6,GTMX IF CALL COMPLETE, RETURN
  20544.  
  20545. * INCREMENT NETGET BUSY COUNT.
  20546.  
  20547. SA1 NGBC GET BUSY COUNT
  20548. SX7 B1 INCREMENT COUNT
  20549. IX7 X7+X1
  20550. SA7 A1+
  20551. EQ GTMX RETURN
  20552.  
  20553. GTMA VFD 58/0,1/0,1/0 *NETGTLQ/NETGETQ* PROCESSING OPTIONS
  20554. NOF SPACE 4,10
  20555. ** NOF - DISCONNECT FROM NETWORK ACCESS SUBSYSTEM.
  20556. *
  20557. * ISSUE NETWORK *NETOFF* REQUEST.
  20558. *
  20559. * ENTRY (NTON) = ZERO IF NOT CONNECTED TO NETWORK.
  20560. * (ATMC) = MESSAGE COUNT USED TO CONTROL
  20561. * PROCESSING OF TRACE OUTPUT FILE.
  20562. * = ZERO, IF TRACE IS NOT SELECTED.
  20563. * = NEGATIVE, IF PROCESS TRACE FILE AT
  20564. * IAF TERMINATION ONLY.
  20565. *
  20566. * MACROS NETOFF, NETREL.
  20567.  
  20568.  
  20569. NOF SUBR ENTRY/EXIT
  20570. SA2 NTON CHECK NETON STATUS
  20571. ZR X2,NOFX IF NOT CONNECTED
  20572. NETOFF ISSUE *NETOFF* CALL
  20573. SA1 ATMC GET TRACE MESSAGE COUNT
  20574. SB1 1 RESET CONSTANT B1=1
  20575. ZR X1,NOFX IF TRACE IS NOT SELECTED
  20576. NG X1,NOFX IF NO TRACE FILE END PROCESSING
  20577. NETREL JPTO,MXLT,RWTF COMPLETE PROCESSING OF TRACE FILE
  20578. SB1 1
  20579. EQ NOFX RETURN
  20580. NON SPACE 4,30
  20581. ** NON - CONNECT TO NETWORK ACCESS SUBSYSTEM.
  20582. *
  20583. * SET PARALLEL MODE AND ISSUE *NETON* REQUEST.
  20584. *
  20585. * ENTRY (VNTP) = NETWORK TERMINAL POINTER.
  20586. * (STIM) = REAL TIME CLOCK (SECONDS).
  20587. * (NFRT) = REAL TIME (SECONDS) OF LAST NETON
  20588. * ATTEMPT OR OF INITIAL LOAD.
  20589. * (NONB) = NONZERO IF REQUEST ACTIVE.
  20590. *
  20591. * EXIT (NTON) = ON IF SUCCESSFUL *NETON*.
  20592. * (NONB) = NONZERO IF REQUEST ACTIVE.
  20593. * PARALLEL PROCESSING MODE SET.
  20594. * (TMSI) = FIRST NETWORK TERMINAL NUMBER.
  20595. * (HACN) = FIRST NETWORK TERMINAL NUMBER.
  20596. * (IBSY) = 0.
  20597. * (NBSY) = 0.
  20598. * (SHDF) = 0.
  20599. * (PCRX) = 0.
  20600. * (SUPA) = SET IF SUPERVISORY MESSAGE AVAILABLE.
  20601. *
  20602. * USES (NCPA) = LOWER ACN LIMIT.
  20603. * (NCPB) = UPPER ACN LIMIT.
  20604. * (NCPC) = STATUS REPLY WORD.
  20605. *
  20606. * CALLS ABT, IAT, IDM.
  20607. *
  20608. * MACROS NETCHEK, NETON, NETSETP.
  20609.  
  20610.  
  20611. NON SUBR ENTRY/EXIT
  20612.  
  20613. * TEST FOR INCOMPLETED PREVIOUS NETON REQUEST AND CHECK
  20614. * IF DELAY TIME HAS ELAPSED SINCE COMPLETED REQUEST.
  20615.  
  20616. SA3 NONB TEST IF REQUEST STILL ACTIVE
  20617. SA1 STIM GET CURRENT REAL-TIME CLOCK
  20618. NZ X3,NON1 IF REQUEST STILL ACTIVE
  20619. SA2 NFRT TIME OF LAST NETON ATTEMPT
  20620. SX6 NODT DELAY TIME
  20621. BX7 X1
  20622. IX2 X1-X2 ELAPSED TIME
  20623. IX2 X2-X6
  20624. NG X2,NONX IF DELAY TIME NOT ELAPSED, RETURN
  20625. SA7 A2 RESET TIME OF NETON
  20626.  
  20627. * SET ACN LIMIT CALL PARAMETERS.
  20628.  
  20629. TX6 0,VNTP SET LOWER ACN LIMIT
  20630. TX7 0,VNTP,LWA SET UPPER ACN LIMIT
  20631. SA6 NCPA SET NETON CALL PARAMETERS
  20632. SA7 NCPB
  20633.  
  20634. * REQUEST CONNECTION TO NETWORK.
  20635.  
  20636. RJ IAT INITIALIZE AIP TRACE OUTPUT FILE
  20637. NETSETP =0 SELECT PARALLEL MODE
  20638. NETON =3HIAF,NSUP,NCPC,NCPA,NCPB
  20639. SX7 1 FLAG REQUEST ACTIVE
  20640. SA7 NONB
  20641.  
  20642. * CHECK STATUS OF NETON REQUEST.
  20643.  
  20644. NON1 NETCHEK CHECK PARALLEL STATUS
  20645. SA1 NSUP READ RESPONSE
  20646. SB1 1 RESET CONSTANT B1=1
  20647. PL X1,NONX IF CALL NOT COMPLETED
  20648. SX7 B0+ CLEAR REQUEST ACTIVE FLAG
  20649. SA2 NCPC READ NETON STATUS REPLY
  20650. SA7 NONB
  20651. NZ X2,NON2 IF CONNECTION NOT MADE
  20652. SX6 =C* NETWORK CONNECTED.*
  20653. RJ IDM ISSUE DAYFILE MESSAGE
  20654. NETFUNC =2,AIPB SELECT AIP BUFFERING OF INPUT
  20655. SB1 1 RESET CONSTANT B1=1
  20656. NETPUTS HDRS1,DCTRU,NCZP SEND *DC/SFTR* TO NAM
  20657. SB1 1 RESET CONSTANT B1=1
  20658.  
  20659. * INITIALIZE CONTROL FLAGS AND POINTERS.
  20660.  
  20661. SX6 B1 SET NETON STATUS
  20662. BX7 X7-X7
  20663. SA6 NTON
  20664. AX1 55-0 SET SUPERVISORY MESSAGE STATUS
  20665. BX6 X6*X1
  20666. SA6 SUPA
  20667. SA7 IBSY CLEAR STATUS WORDS
  20668. SA7 NBSY
  20669. SA7 NONA
  20670. SA7 OBSY
  20671. SA7 OTPP
  20672. SA7 PCRX
  20673. TX6 B0,VNTP INITIALIZE MANAGER SCAN
  20674. SA6 TMSI
  20675. SA6 HACN
  20676. EQ NONX RETURN
  20677.  
  20678. * CHECK NETWORK NOT-CONNECTED RESPONSE.
  20679.  
  20680. NON2 SB7 X2-1 CHECK REPLY
  20681. NZ B7,NON4 IF NOT *UNAVAILABLE* STATUS
  20682. SA1 NONA CHECK LAST MESSAGE ADDRESS
  20683. SX6 =C* WAITING FOR NETWORK.*
  20684. IX1 X1-X6
  20685. ZR X1,NONX IF MESSAGE ISSUED, RETURN
  20686. SA6 A1 SET MESSAGE ADDRESS
  20687. RJ IDM ISSUE MESSAGE
  20688. EQ NONX RETURN
  20689.  
  20690. * PROCESS REJECT.
  20691.  
  20692. NON4 SA1 NONA GET LAST MESSAGE ADDRESS
  20693. SX6 =C* NETON REJECT.*
  20694. IX1 X1-X6
  20695. ZR X1,NONX IF MESSAGE ISSUED, RETURN
  20696. SA6 A1 SET MESSAGE ADDRESS
  20697. RJ IDM ISSUE DAYFILE MESSAGE
  20698. EQ NONX EXIT
  20699.  
  20700.  
  20701. NONA CON 0 MESSAGE-ISSUED ADDRESS
  20702. NONB CON 0 REQUEST ACTIVE FLAG
  20703. RTF SPACE 4,15
  20704. ** RTF - RELEASE NETWORK TRACE FILE.
  20705. *
  20706. * ENTRY (ATMC) = MESSAGE COUNT USED TO CONTROL
  20707. * PROCESSING OF TRACE OUTPUT FILE.
  20708. * = ZERO, IF TRACE IS NOT SELECTED.
  20709. * = NEGATIVE, IF PROCESS TRACE FILE AT
  20710. * IAF TERMINATION ONLY.
  20711. *
  20712. * EXIT (X6) = NONZERO, IF NAM BUSY.
  20713. *
  20714. * USES X - 1, 2, 3, 4, 6.
  20715. * A - 1, 2.
  20716. *
  20717. * CALLS CKP.
  20718. *
  20719. * MACROS NETREL.
  20720.  
  20721.  
  20722. RTF SUBR ENTRY/EXIT
  20723. SA1 ATMC CHECK TRACE THRESHOLD
  20724. MX3 -30
  20725. BX6 X6-X6
  20726. ZR X1,RTFX IF TRACE IS NOT SELECTED
  20727. NG X1,RTFX IF DO NOT PROCESS TRACE FILE
  20728. SA2 NSUP GET MESSAGE COUNT
  20729. BX2 -X3*X2
  20730. IX4 X2-X1
  20731. NG X4,RTFX IF NOT TIME TO PROCESS TRACE FILE
  20732. NETREL JPTO,MXLT,RWTF PROCESS TRACE FILE
  20733. RJ CKP CHECK NAM STATUS
  20734. EQ RTFX RETURN
  20735. SCS SPACE 4,30
  20736. ** SCS - SEND CANNED SUPERVISORY MESSAGE.
  20737. *
  20738. * TRANSMITS IN-CORE MESSAGE TO THE NETWORK. THE MESSAGE
  20739. * IS TRANSMITTED FROM CORE AS-IS AFTER THE ACN IS PLACED
  20740. * IN THE MESSAGE. ALTHOUGH PRIMARILY INTENDED FOR SUPER-
  20741. * VISORY MESSAGES, MAY BE USED FOR TRANSMISSION OF ANY
  20742. * IN-CORE MESSAGE.
  20743. *
  20744. * ENTRY (A0) = TERMINAL TABLE ADDRESS.
  20745. * (B2) = ACN TO BE PLACED IN MESSAGE:
  20746. * = POSITIVE, THIS IS AN ASYNCHRONOUS
  20747. * SUPERVISORY MESSAGE, SO THE ACN
  20748. * IS PLACED IN THE FIRST WORD OF THE
  20749. * MESSAGE TEXT, BITS 35-24.
  20750. * = NEGATIVE, THIS IS A SYNCHRONOUS
  20751. * SUPERVISORY MESSAGE, SO THE ACN
  20752. * IS PLACED IN BITS 53-42 OF THE
  20753. * MESSAGE HEADER.
  20754. * (X6) = ADDRESS OF HEADER:
  20755. * = ZERO, USE DEFAULT HEADER.
  20756. * (X7) = ADDRESS OF TEXT.
  20757. *
  20758. * EXIT (X6) = NONZERO IF NAM BUSY.
  20759. * (OBSY) = NONZERO IF NAM BUSY.
  20760. *
  20761. * USES (NCPA) = ADDRESS OF HEADER.
  20762. * (NCPB) = ADDRESS OF TEXT.
  20763. * (NCAS) = SAVE (A0).
  20764. * (NCBS) = SAVE (B2).
  20765. *
  20766. * CALLS CKP, SCF.
  20767. *
  20768. * MACROS NETPUTS.
  20769.  
  20770.  
  20771. SCS SUBR ENTRY/EXIT
  20772. NZ X6,SCS1 IF HEADER PROVIDED
  20773. SX6 HDRS1 USE DEFAULT HEADER
  20774. SCS1 SA6 NCPA STORE HEADER ADDRESS
  20775. SA7 NCPB STORE TEXT ADDRESS
  20776. SB6 24 SET TEXT ACN SHIFT COUNT
  20777. PL B2,SCS2 IF ACN IN TEXT WORD 1
  20778. SB2 -B2
  20779. SX7 X6 SET ADDRESS FOR ACN IN HEADER
  20780. SB6 42 SET HEADER ACN SHIFT COUNT
  20781. SCS2 SA1 X7+ READ WORD FOR ACN
  20782. MX4 -12
  20783. SX6 B2
  20784. LX4 X4,B6 SHIFT MASK
  20785. LX6 X6,B6 SHIFT ACN
  20786. BX1 X4*X1 INSERT ACN
  20787. BX6 X1+X6
  20788. SA6 A1 REWRITE WORD WITH ACN
  20789.  
  20790. * TRANSMIT MESSAGE TO NETWORK.
  20791.  
  20792. SX6 B1+ SET OUTPUT BUSY - NO POT POINTER
  20793. BX7 X7-X7
  20794. SA6 OBSY
  20795. SA7 OTPP
  20796. SX6 A0+ SAVE (A0)
  20797. SX7 B2+ SAVE (B2)
  20798. SA6 NCAS
  20799. SA1 VSHD CHECK SCP STATUS
  20800. SA7 NCBS
  20801. NG X1,SCF IF SCP FAILURE
  20802. SX6 NCZP
  20803. SA6 NCPC CLEAR PROCESSING OPTIONS
  20804. NETPUTS (LIST=NCPA) SEND MESSAGE TO NAM
  20805. RJ CKP CHECK STATUS
  20806. ZR X6,SCSX IF NAM NOT BUSY, RETURN
  20807.  
  20808. * INCREMENT NETPUT BUSY COUNT.
  20809.  
  20810. SA1 NPBC GET COUNTER
  20811. SX7 B1 INCREMENT COUNTER
  20812. IX7 X7+X1
  20813. SA7 A1+
  20814. EQ SCSX RETURN
  20815. SSM SPACE 4,30
  20816. ** SSM - SEND SUPERVISORY MESSAGE.
  20817. *
  20818. * SEND MESSAGE CONSISTING OF SINGLE POT TO NETWORK.
  20819. * ALTHOUGH PRIMARILY INTENDED FOR SUPERVISORY MES-
  20820. * SAGES, WHICH NEVER EXCEED ONE POT IN LENGTH, MAY
  20821. * BE USED FOR TRANSMISSION OF ANY SINGLE POT MESSAGE.
  20822. *
  20823. * ENTRY (X1) = MESSAGE POT POINTER.
  20824. *
  20825. * EXIT POT DROPPED IF NAM COMPLETE.
  20826. * (NBSY) = SET IF NAM BUSY.
  20827. * (OTPP) = POT POINTER IF NAM BUSY.
  20828. * (OBSY) = SET IF NAM BUSY.
  20829. * (X6) = (NBSY).
  20830. *
  20831. * USES (NCPA) = HEADER ADDRESS.
  20832. * (NCPB) = TEXT ADDRESS.
  20833. * (NCAS) = SAVE (A0).
  20834. * (NCBS) = SAVE (B2).
  20835. *
  20836. * CALLS CKP, SCF.
  20837. *
  20838. * MACROS NETPUTS.
  20839.  
  20840.  
  20841. SSM SUBR ENTRY/EXIT
  20842. BX7 X1 SET BUSY POINTERS
  20843. SA7 OBSY
  20844. LX1 3
  20845. SA7 OTPP
  20846. TX7 X1,VBMP SET HEADER ADDRESS
  20847. SA7 NCPA
  20848. SX7 X7+B1 SET TEXT ADDRESS
  20849. SA7 A7+B1
  20850. SX6 A0 SAVE (A0)
  20851. SX7 B2 SAVE (B2)
  20852. SA6 NCAS
  20853. SA1 VSHD CHECK SCP STATUS
  20854. SA7 NCBS
  20855. NG X1,SCF IF SCP FAILURE
  20856. SX6 NCZP
  20857. SA6 NCPC CLEAR PROCESSING OPTIONS
  20858. NETPUTS (LIST=NCPA) SEND MESSAGE TO NAM
  20859. RJ CKP GET STATUS
  20860. ZR X6,SSMX IF NAM NOT BUSY
  20861.  
  20862. * INCREMENT NETPUT BUSY COUNT.
  20863.  
  20864. SA1 NPBC GET COUNTER
  20865. SX7 B1 INCREMENT COUNT
  20866. IX7 X7+X1
  20867. SA7 A1+
  20868. EQ SSMX RETURN
  20869. TITLE NETWORK AIP LINKAGES.
  20870. ** NETWORK AIP LINKAGES.
  20871. *
  20872. * THE NETWORK AIP CALL LINKAGES LINK NETWORK AIP
  20873. * CALLS TO THE ACTUAL, LOADED ENTRY POINTS OF THE
  20874. * RELOCATABLE AIP SUBROUTINES. EACH LINKAGE IS REF-
  20875. * ERENCED BY THE NAME OF THE AIP ENTRY POINT TO WHICH
  20876. * IT LINKS. A CALL TO A LINKAGE WILL RESET THE AD-
  20877. * DRESS FIELD OF THE CALLING *RJ* INSTRUCTION TO THE
  20878. * ENTRY POINT OF THE CORRESPONDING AIP SUBROUTINE AND
  20879. * WILL RE-EXECUTE THE *RJ* TO THE NEW ADDRESS. THE
  20880. * AIP RELOCATABLE SUBROUTINE ENTRY POINT ADDRESSES ARE
  20881. * PRESET DURING INITIALIZATION BY THE INITIALIZER OVER-
  20882. * LAY ROUTINE *LNA* AND THE ENTRY POINTS ARE LINKED
  20883. * USING THE *TLCK* OR *TLKT* TABLE AND THE
  20884. * *LDREQ PASSLOC* ENTRIES.
  20885. *
  20886. * THE *EXT* PSEUDO-OP, USED WITHIN MOST NETWORK CALL
  20887. * MACROS, MUST BE DISABLED IN ORDER TO PREVENT ASSEMBLY
  20888. * ERRORS.
  20889. *
  20890. * THE FOLLOWING DOCUMENTATION IS COMMON TO ALL NETWORK AIP
  20891. * LINKAGES:
  20892. *
  20893. * ENTRY:
  20894. *
  20895. * ADR RJ NAM
  20896. * .
  20897. * .
  20898. * .
  20899. * NAM PS 0 ENTRY
  20900. * SA4 NAM READ ENTRY POINT
  20901. * SX5 AIP SET AIP ENTRY POINT ADDRESS
  20902. * EQ XRJ TRANSFER RETURN JUMP
  20903. *
  20904. * AIP = AIP ENTRY POINT ADDRESS. SET BY INI-
  20905. * TIALIZATION ROUTINE *LNA*.
  20906. * ADR = ADDRESS OF *RJ* INSTRUCTION (MUST BE UPPER).
  20907. * NAM = NAME OF AIP ENTRY POINT (I.E., LINKAGE).
  20908. *
  20909. * EXIT *RJ* ADDRESS FIELD MODIFIED.
  20910. * *RJ* RE-EXECUTED.
  20911. *
  20912. * USES A - 4, 5.
  20913. * X - 4, 5.
  20914. *
  20915. * CALLS XRJ.
  20916.  
  20917.  
  20918. ** GENERATE NETWORK AIP CALL LINKAGES USING THE *NETLINK*
  20919. * MACRO:
  20920.  
  20921. NETLINK NETCHEK
  20922. NETLINK NETFUNC
  20923. NETLINK NETGETQ
  20924. NETLINK NETGTLQ
  20925. NETLINK NETOFF
  20926. NETLINK NETON
  20927. NETLINK NETPUTS
  20928. NETLINK NETREL
  20929. NETLINK NETSETP
  20930. TITLE GENERAL SUBROUTINES.
  20931. GENERAL SPACE 4,10
  20932. ** GENERAL SUBROUTINES.
  20933. *
  20934. * IF THE REGISTER USAGE IS NOT SPECIFIED IN THE HEADER
  20935. * INFORMATION, IT SHOULD BE ASSUMED THAT THE SUBROUTINE
  20936. * USES ALL REGISTERS EXCEPT THOSE SPECIFIED BELOW:
  20937. *
  20938. * A - 0.
  20939. * X - 0.
  20940. * B - 1, 2.
  20941. ACD SPACE 4,20
  20942. ** ACD - ASSIGN CANNED DATA MESSAGE.
  20943. *
  20944. * COPY PREPARED IN-CORE MESSAGE TO POT(S) AND ASSIGN
  20945. * TO TERMINAL TABLE.
  20946. *
  20947. * ENTRY (B2) = TERMINAL NUMBER.
  20948. * (B3) = POT POINTER IF POT AVAILABLE.
  20949. * = 0 IF ACD TO GET POTS FOR MESSAGE.
  20950. * (B4) = MESSAGE LENGTH, INCLUDING HEADER, IN CM WORDS.
  20951. * (X6) = FWA OF MESSAGE.
  20952. *
  20953. * EXIT (X6) = NONZERO IF MESSAGE ASSIGNED.
  20954. * = ZERO IF MESSAGE COULD NOT BE ASSIGNED. CALLER
  20955. * MUST TRY AGAIN LATER.
  20956. *
  20957. * CALLS ANM, CFL, CTP.
  20958.  
  20959.  
  20960. ACD SUBR ENTRY/EXIT
  20961.  
  20962. * GET REQUIRED POTS FOR MESSAGE.
  20963.  
  20964. SX5 X6+ SAVE (X6)
  20965. NZ B3,ACD2 IF POTS PROVIDED
  20966. RJ CFL CHECK POT SUPPLY
  20967. SX6 B0+
  20968. NG X2,ACDX IF LOW POT SUPPLY, RETURN
  20969. ACD2 SX6 X5 COPY MESSAGE TO POT(S)
  20970. SB5 B1 SKIP FIRST WORD IN POT
  20971. RJ CTP
  20972. ZR X6,ACDX IF INSUFFICIENT POTS AVAILABLE
  20973. LX6 24 SET POT COUNT
  20974. SA6 B4
  20975. SX7 B3+ SET MESSAGE POT POINTER
  20976. RJ ANM ASSIGN MESSAGE
  20977. SX6 B1 SET EXIT STATUS COMPLETE
  20978. EQ ACDX RETURN
  20979. ADB SPACE 4,30
  20980. ** ADB - ASSEMBLE DISPLAY CODED BUFFER.
  20981. *
  20982. * ASSEMBLES DISPLAY CODED STRING BUFFER INTO POTS.
  20983. * THE STRING BUFFER CONSISTS OF 6 BIT DISPLAY CODE
  20984. * OR 12 BIT EXTENDED DISPLAY CODE CHARACTERS, RIGHT
  20985. * JUSTIFIED, AND IS TERMINATED BY A NEGATIVE WORD.
  20986. * A CHARACTER IS ASSEMBLED AS 12 BITS ONLY IF THE
  20987. * UPPER 6 BITS ARE NONZERO; THE LOWER SIX BITS ARE
  20988. * ALWAYS ASSEMBLED.
  20989. *
  20990. * ENTRY (VDPT) = CURRENT POSITION IN POT.
  20991. * (TBUF) = FIRST CHARACTER TO ASSEMBLE.
  20992. *
  20993. * EXIT DATA ASSEMBLED INTO POT CHAIN.
  20994. * (VDPT) = UPDATED.
  20995. * (X0) AND (X5) UNCHANGED.
  20996. *
  20997. * USES A - 2, 3, 4, 6.
  20998. * B - 3, 4, 5, 6, 7.
  20999. * X - 1, 2, 3, 4, 6.
  21000. *
  21001. * CALLS ADP.
  21002.  
  21003. ADB SUBR ENTRY/EXIT
  21004. SA2 A0+VDPT EXTRACT STARTING POSITION
  21005. LX2 24
  21006. MX3 -12
  21007. BX3 -X3*X2
  21008. SB3 X3+ (B3) = LAST POT POINTER
  21009. LX3 3
  21010. TB4 X3,VBMP (B4) = FWA LAST POT
  21011. SB7 B4+VCPC (B7) = POT LWA+1
  21012. LX2 6
  21013. MX3 -3
  21014. BX3 -X3*X2
  21015. SB6 X3 (B6) = WORD COUNT IN LAST POT
  21016. LX2 6
  21017. MX3 -6
  21018. BX3 -X3*X2
  21019. SB5 X3 (B5) = BIT COUNT IN LAST WORD
  21020. SA4 TBUF GET FIRST CHARACTER
  21021. BX6 X6-X6 CLEAR ASSEMBLY
  21022. SB4 B4+B6 SET POT STORE ADDRESS
  21023. SB6 60
  21024. SB6 B6-B5
  21025. ZR B6,ADB1 IF STARTING AT WORD BOUNDARY
  21026. SA3 B4 GET PARTIAL WORD
  21027. LX6 X3,B6 POSITION ASSEMBLY
  21028. ADB1 SB6 6 (B6) = ASSEMBLY SHIFT BIAS
  21029. SX3 77B (X3) = DISASSEMBLY MASK
  21030. NG X4,ADB4 IF END OF BUFFER
  21031.  
  21032. * SPLIT UP 12-BIT CHARACTER.
  21033.  
  21034. ADB2 BX1 X3*X4 (X1) = LOWER SIX BITS
  21035. AX2 X4,B6 (X2) = UPPER SIX BITS
  21036. ZR X2,ADB3 IF NO UPPER SIX BITS
  21037.  
  21038. * INSERT UPPER SIX BITS.
  21039.  
  21040. LX6 6 SHIFT ASSEMBLY
  21041. BX2 X2*X3 CLEAR FLAG BIT
  21042. SB5 B5-B6 BIAS ASSEMBLY SHIFT
  21043. BX6 X6+X2 MERGE CHARACER
  21044. NZ B5,ADB3 IF NOT END OF ASSEMBLY WORD
  21045. SA6 B4 STORE ASSEMBLY
  21046. SB4 B4+B1 ADVANCE POT ADDRESS
  21047. SX6 B0+ CLEAR ASSEMBLY
  21048. SB5 60
  21049. LT B4,B7,ADB3 IF NOT POT LIMIT
  21050. RJ ADP ADVANCE POT
  21051. SB6 6 RESET ASSEMBLY SHIFT BIAS
  21052. SB7 B4+VCPC
  21053. SX6 B0+ CLEAR ASSEMBLY
  21054. SX3 77B
  21055.  
  21056. * INSERT LOWER SIX BITS.
  21057.  
  21058. ADB3 SA4 A4+B1 READ UP NEXT WORD
  21059. LX6 6 SHIFT ASSEMBLY
  21060. SB5 B5-B6 BIAS ASSEMBLY SHIFT
  21061. BX6 X6+X1 MERGE CHARACTER
  21062. NG X4,ADB4 IF END OF BUFFER
  21063. NZ B5,ADB2 IF NOT END OF ASSEMBLY WORD
  21064. SA6 B4+ STORE ASSEMBLY
  21065. SB5 60
  21066. BX6 X6-X6
  21067. SB4 B4+B1
  21068. LT B4,B7,ADB2 IF NOT END OF POT
  21069. RJ ADP ADVANCE POT
  21070. BX6 X6-X6 CLEAR ASSEMBLY
  21071. SA4 A4 RESTORE NEXT CHARACTER
  21072. SB7 B4+VCPC SET LWA+1 OF NEW POT
  21073. EQ ADB1
  21074.  
  21075. * STORE FINAL WORD OF ASSEMBLY.
  21076.  
  21077. ADB4 LX6 X6,B5 STORE ASSEMBLY
  21078. SA6 B4
  21079. SA3 RCCW
  21080. NZ X3,ADB6 IF NOT FINISHED WITH THIS BLOCK
  21081. SA3 A0+VDPT
  21082. LX3 59-13
  21083. NG X3,ADB6 IF NOT MSG BLOCK
  21084. SB4 B4+B1
  21085. BX6 X6-X6
  21086. LT B4,B7,ADB5 IF NOT END OF POT
  21087. RJ ADP ADVANCE POT
  21088. SB7 B4+VCPC
  21089. SX6 B0+
  21090.  
  21091. * SET TERMINATOR WORD IN POT.
  21092.  
  21093. ADB5 SB6 B5-12
  21094. SB5 B0
  21095. PL B6,ADB7 IF TERMINATOR NOT NEEDED
  21096. SA6 B4 STORE TERMINATOR
  21097. ADB6 NZ B5,ADB7 IF ROOM IN WORD
  21098. SB5 60 RESET TO WORD BOUNDARY
  21099. SB4 B4+B1
  21100. LT B4,B7,ADB7 IF NOT END OF POT
  21101. RJ ADP ADVANCE POT
  21102. SB7 B4+VCPC
  21103.  
  21104. * REPACK VDPT.
  21105.  
  21106. ADB7 SA2 A0+VDPT
  21107. SA3 =77770000700077777777B
  21108. BX6 X2*X3 PRESERVE FP, FW, FLAGS AND CC
  21109. SX3 B3
  21110. LX3 36
  21111. BX6 X6+X3 MERGE NEW LAST POT
  21112. SB6 B4-B7
  21113. SX3 B6+VCPC
  21114. LX3 30
  21115. BX6 X6+X3 MERGE WORD COUNT
  21116. SX3 B5
  21117. LX3 24
  21118. BX6 X6+X3 MERGE BIT COUNT
  21119. SA6 A2 REWRITE VDPT
  21120. EQ ADBX RETURN
  21121. ADP SPACE 4,10
  21122. ** ADP - ADVANCE POT.
  21123. *
  21124. * ENTRY (B3) = FULL POT POINTER.
  21125. *
  21126. * EXIT (B3) = NEW POT POINTER.
  21127. * (B4) = NEW POT ADDRESS.
  21128. * (B5), (X5), (X1) UNCHANGED.
  21129. *
  21130. * USES X - 5, 6.
  21131. * A - 5, 6.
  21132. * B - 3, 7.
  21133. *
  21134. * CALLS GPL, RPT.
  21135. *
  21136. * NOTE IF *RPT* IS CALLED AND NO POT IS AVAILABLE,
  21137. * (B3) WILL BE RETURNED AS 7777B. THEREFORE,
  21138. * THIS ROUTINE SHOULD NOT BE USED UNLESS THE
  21139. * CALLER CAN GUARANTEE THAT A POT WILL BE AVAILABLE
  21140. * IF *RPT* NEEDS TO BE CALLED. THIS CAN BE
  21141. * DONE BY CALLING *CFL* BEFORE CALLING *ADP*.
  21142.  
  21143.  
  21144. ADP SUBR ENTRY/EXIT
  21145. ADP1 SB7 B3 SAVE ORIGINAL POT POINTER
  21146. RJ GPL GET POT LINK
  21147. NZ B3,ADPX IF NOT END OF CHAIN
  21148. SX6 B5 SAVE EXIT REQUIREMENTS
  21149. SA6 ADPA
  21150. BX6 X5
  21151. SA6 A6+B1
  21152. BX6 X1
  21153. SA6 A6+B1
  21154. SX5 B7
  21155. PX5 X5,B1 REQUEST ONE MORE POT
  21156. RJ RPT REQUEST POT
  21157. SB3 X1 SET NEW POT POINTER
  21158. SA5 ADPA RESTORE EXIT REQUIREMENTS
  21159. SB5 X5
  21160. SA5 A5+B1
  21161. SA1 A5+B1
  21162. EQ ADP1 CHECK LINK
  21163.  
  21164.  
  21165. ADPA BSS 3 EXIT REQUIREMENTS
  21166. ANM SPACE 4,10
  21167. ** ANM - ASSIGN MESSAGE TO NETWORK TERMINAL.
  21168. *
  21169. * ADDS A MESSAGE TO THE OUTPUT QUEUE IN VSTT. THE
  21170. * FIRST WORD IN THE FIRST POT OF EACH POT CHAIN IS USED TO
  21171. * LINK THE MESSAGE INTO THE QUEUE, USING THE FORMAT
  21172. *
  21173. *T 30/ 0,6/ NP,12/ LC,12/ NC.
  21174. *
  21175. * NP = NUMBER OF POTS IN THIS MESSAGE.
  21176. * LC = POT POINTER OF LAST CHAIN OF DATA IN QUEUE.
  21177. * NC = POT POINTER OF NEXT CHAIN OF DATA IN QUEUE.
  21178. * THE LC FIELD IS ONLY PRESENT IN THE LINKAGE WORD OF
  21179. * THE FIRST POT CHAIN IN THE QUEUE. SUBSEQUENT POT CHAINS USE
  21180. * LC = 0. THE LAST POT CHAIN IN THE QUEUE WILL
  21181. * ALWAYS HAVE NC = 0. IN THE CASE WHERE EXACTLY ONE MESSAGE IS
  21182. * IN THE QUEUE, THE LC FIELD POINTS TO ITSELF AND
  21183. * NC = 0. THE SECOND WORD IN THE FIRST POT IS EITHER A
  21184. * MESSAGE HEADER OR A SET OF TRANSLATION FLAGS. IF THE TOP
  21185. * 6 BITS OF THE WORD ARE NON-ZERO, THE WORD IS A MESSAGE
  21186. * HEADER, WHICH MEANS THE MESSAGE STARTING IN WORD THREE HAS
  21187. * ALREADY BEEN TRANSLATED TO ASCII8 FOR TRANSMISSION TO NAM.
  21188. * IF THE TOP 6 BITS ARE ZERO, THEN THE WORD CONTAINS
  21189. * TRANSLATION FLAGS IN THE FOLLOWING FORMAT:
  21190. *
  21191. *T 57/ 0,1/ UF,1/ WR,1/ CS.
  21192. *
  21193. * UF = 1 IF USER FORMAT EFFECTOR MODE IS SET.
  21194. * WR = 1 IF THIS CHAIN OF OUTPUT MAY NOT BE COMBINED
  21195. * WITH DATA IN SUBSEQUENT CHAINS.
  21196. * CS = CHARACTER SET AT THE TIME THE OUTPUT WAS SENT TO
  21197. * IAF (1=ASCII 6/12,0=NORMAL).
  21198. *
  21199. * ENTRY (X7) = MESSAGE POT POINTER.
  21200. * (FW OF POT CHAIN) = POT COUNT IN BITS 29-24.
  21201. *
  21202. * CALLS DPT, SAB.
  21203.  
  21204.  
  21205. ANM2 SA2 ANMA COUNT DISCARDED OUTPUT
  21206. IX6 X2+X1
  21207. SA6 A2
  21208. MX6 24
  21209. SA2 A0+VFST GET JSN
  21210. LX6 -6
  21211. LX2 -6
  21212. BX2 X2*X6
  21213. SA1 ANMB PUT JSN IN MESSAGE
  21214. BX1 -X6*X1
  21215. BX6 X1+X2
  21216. SA6 A1
  21217. MESSAGE ANMB,,R
  21218. ANM3 SB3 X7 DROP THE POT CHAIN
  21219. SB4 B0
  21220. RJ DPT DROP POTS
  21221.  
  21222. ANM SUBR ENTRY/EXIT
  21223. SX1 X7 SET POT ADDRESS
  21224. LX1 3
  21225. TA4 X1,VBMP GET POT COUNT
  21226. SA2 A0+VSTT
  21227. BX6 X2
  21228. LX6 59-58 CHECK USER BREAK IN PROGRESS
  21229. TA1 B2,VMST CHECK IF ON LINE
  21230. BX6 -X1+X6
  21231. MX5 -12
  21232. BX3 -X5*X2
  21233. NG X6,ANM3 IF USER BREAK IN PROGRESS
  21234. IX6 X2+X4 ADD IN POT COUNT
  21235. NZ X3,ANM1 IF VSTT BUSY
  21236. BX6 X6+X7
  21237. LX7 12 SET LINKAGE WORD
  21238. BX7 X7+X4
  21239. SA7 A4+ REWRITE FIRST WORD IN POT CHAIN
  21240. SA6 A2
  21241. RJ SAB SET TERMINAL ACTIVITY BIT
  21242. EQ ANMX RETURN
  21243.  
  21244. * ADD CHAIN TO END OF QUEUE IN VSTT.
  21245.  
  21246. ANM1 LX3 3
  21247. MX1 6 CHECK FOR POT COUNT OVERFLOW
  21248. LX1 30
  21249. BX2 X1*X2 OLD POT COUNT
  21250. IX2 X2+X4
  21251. BX2 -X1*X2
  21252. SX1 B1
  21253. LX5 12
  21254. NZ X2,ANM2 IF POT COUNT OVERFLOW
  21255. TA1 X3,VBMP
  21256. SA6 A2 REWRITE VSTT
  21257. BX3 -X5*X1 SAVE PREVIOUS LAST CHAIN
  21258. BX5 X5*X1
  21259. LX7 12
  21260. BX6 X5+X7 ADD NEW LAST CHAIN
  21261. SA6 A1
  21262. AX7 12
  21263. LX3 -9
  21264. TA1 X3,VBMP
  21265. BX7 X1+X7
  21266. SA7 A1
  21267. EQ ANMX EXIT
  21268.  
  21269.  
  21270. ANMA CON 0 DISCARDED OUTPUT COUNT
  21271. ANMB DATA 10L **** LOST
  21272. DATA 10L OUTPUT ME
  21273. DATA 6LSSAGE.
  21274. ASV SPACE 4,30
  21275. ** ASV - ASSIGN SUPERVISORY MESSAGE.
  21276. *
  21277. * TRANSMITS SUPERVISORY MESSAGE. IF NAM IS BUSY, *ASV*
  21278. * COPIES THE MESSAGE INTO A POT AND ASSIGNS IT TO
  21279. * THE NULL SUPERVISORY QUEUE.
  21280. *
  21281. *T NSQP 30/LAST POT ,30/FIRST POT.
  21282. *
  21283. *
  21284. * ENTRY (B2) = ACN TO BE PLACED IN THE FIRST WORD OF
  21285. * THE MESSAGE TEXT.
  21286. * (B4) = TEXT LENGTH; MAXIMUM 7 WORDS.
  21287. * (X6) = ADDRESS OF HEADER:
  21288. * = ZERO, USE DEFAULT HEADER.
  21289. * (X7) = ADDRESS OF TEXT. 7 WORDS ASSUMED.
  21290. *
  21291. * EXIT (X6) = ZERO IF NO POTS AVAILABLE.
  21292. *
  21293. * CALLS CBL, CFL, IBC, RPT, SAB, SCS.
  21294.  
  21295.  
  21296. ASV SUBR ENTRY/EXIT
  21297. SA6 ASVA SAVE (X6)
  21298. SA1 NBSY
  21299. NZ X1,ASV1 IF NAM BUSY
  21300. RJ SCS TRANSMIT MESSAGE
  21301. SX6 B1 FLAG MESSAGE AS SENT
  21302. EQ ASVX EXIT
  21303.  
  21304. * NAM IS BUSY. SEE IF A POT IS AVAILABLE INTO WHICH
  21305. * THE MESSAGE CAN BE STORED.
  21306.  
  21307. ASV1 RJ CFL CHECK POT SUPPLY
  21308. BX6 X6-X6
  21309. NG X2,ASVX IF LOW POT SUPPLY
  21310. SA7 ASVB SAVE (X7)
  21311. SX7 B4 SAVE (B4)
  21312. SA7 ASVC
  21313.  
  21314. * GET POT FOR MESSAGE.
  21315.  
  21316. SA5 NSQP GET NULL QUEUE POINTER
  21317. AX5 30 SET POT TO LINK TO
  21318. PX5 X5,B1 REQUEST ONE POT
  21319. RJ RPT
  21320. SB3 X1 NEW POT POINTER
  21321. LX1 3
  21322. TB4 X1,VBMP NEW POT ADDRESS
  21323.  
  21324. * ASSIGN POT TO NULL SUPERIVISORY MESSAGE QUEUE.
  21325.  
  21326. SA2 NSQP GET QUEUE POINTER
  21327. MX6 -30
  21328. BX2 -X6*X2 CLEAR LAST POT POINTER
  21329. NZ X2,ASV2 IF NOT EMPTY QUEUE
  21330. SX2 B3+
  21331. ASV2 LX1 30-3 SET NEW LAST POT POINTER
  21332. BX7 X1+X2
  21333. SA7 A2+ REWRITE QUEUE POINTER
  21334.  
  21335. * READ HEADER AND FIRST TEXT WORD OF MESSAGE.
  21336.  
  21337. SA1 ASVA GET HEADER ADDRESS
  21338. SA2 ASVB GET TEXT ADDRESS
  21339. SA2 X2+ READ FIRST WORD OF TEXT
  21340. NZ X1,ASV3 IF HEADER PROVIDED BY CALLER
  21341. SX1 HDRS1 USE DEFAULT HEADER
  21342. ASV3 SA1 X1 GET HEADER
  21343. MX3 -12
  21344. LX3 24 SET ACN MASK
  21345. SX6 B2 SET ACN
  21346.  
  21347. * INSERT ACN IN FIRST TEXT WORD, BITS 35-24.
  21348.  
  21349. BX2 X3*X2 CLEAR ACN FIELD
  21350. LX6 24 INSERT ACN
  21351. BX7 X2+X6
  21352.  
  21353. * COPY MESSAGE TO POT.
  21354.  
  21355. BX6 X1 COPY FIRST TWO WORDS
  21356. SA6 B4
  21357. SA7 A6+B1
  21358. SA5 ASVC GET WORD COUNT
  21359. SX6 B1+ SET EXIT STATUS
  21360. SB6 X5-1
  21361. ASV4 ZR B6,ASVX IF COPY COMPLETE
  21362. SA2 A2+B1
  21363. SB6 B6-B1
  21364. BX7 X2 STORE WORD
  21365. SA7 A7+B1
  21366. EQ ASV4 CONTINUE TRANSFER
  21367.  
  21368. ASVA CON 0 SAVE (X6) HEADER ADDRESS
  21369. ASVB CON 0 SAVE (X7) TEXT ADDRESS
  21370. ASVC CON 0 SAVE (B4) TEXT LENGTH
  21371. CBL SPACE 4,10
  21372. ** CBL - CHECK BLOCK LIMIT.
  21373. *
  21374. * CHECKS TERMINAL DOWNSTREAM BLOCK COUNT TO SEE IF
  21375. * TERMINAL IS CURRENTLY AT BLOCK LIMIT.
  21376. *
  21377. * EXIT (X6) = NONZERO IF AT TERMINAL BLOCK LIMIT.
  21378. * (X3) = APPLICATION BLOCK COUNT. (DOWNSTREAM
  21379. * BLOCKS NOT YET ACKNOWLEDGED).
  21380. *
  21381. * USES A - 3.
  21382. * X - 3, 4, 6.
  21383.  
  21384.  
  21385. CBL SUBR ENTRY/EXIT
  21386. TA3 B2,VMST READ VMST ENTRY
  21387. MX6 -3
  21388. AX3 30 SHIFT ABL
  21389. BX4 -X6*X3 SET ABL
  21390. AX3 3 SHIFT ABC
  21391. BX3 -X6*X3 SET ABC
  21392. BX6 X6-X6 ASSUME NOT AT LIMIT
  21393. IX4 X3-X4 ABC - ABL
  21394. NG X4,CBLX IF NOT AT LIMIT
  21395. SX6 B1 SET LIMIT EXIT STATUS
  21396. EQ CBLX RETURN
  21397. CCT SPACE 4,20
  21398. ** CCT - CHECK CYCLE TIME.
  21399. *
  21400. * CHECKS TO SEE IF IT IS TIME TO CYCLE NETWORK.
  21401. *
  21402. * ENTRY (NSCT) = MINIMUM CYCLE TIME (MSECS).
  21403. * (NFRT) = REAL TIME AT LAST CYCLE.
  21404. * (RTIM) = CURRENT REAL TIME.
  21405. *
  21406. * EXIT (X6) = ZERO IF MINIMUM NOT ELAPSED.
  21407. * (NFRT) = (RTIM) IF MINIMUM ELAPSED.
  21408. *
  21409. * USES A - 2, 3, 4, 6.
  21410. * X - 2, 3, 4, 6.
  21411.  
  21412.  
  21413. CCT SUBR ENTRY/EXIT
  21414. SA2 RTIM CURRENT REAL TIME
  21415. SA3 NFRT LAST FUNCTION REAL TIME
  21416. SX4 NSCT SET MINIMUM NETWORK SCAN CYCLE TIME
  21417. MX6 -36 MASK MILLISECONDS
  21418. BX3 -X6*X3
  21419. BX6 -X6*X2
  21420. IX3 X6-X3 ELAPSED MILLISECONDS
  21421. BX6 X6-X6
  21422. IX4 X3-X4
  21423. NG X3,CCT1 IF REAL TIME RESET
  21424. NG X4,CCTX IF LESS THAN MINIMUM, RETURN
  21425. CCT1 BX6 X2 SET FUNCTION TIME
  21426. SA6 A3
  21427. EQ CCTX RETURN
  21428. CFX SPACE 4,20
  21429. ** CFX - CHECK FOR FORCED EXIT.
  21430. *
  21431. * CHECKS MONITOR REQUEST AND OTHER DRIVERS CIRCULAR
  21432. * REQUEST STACKS TO SEE THEY REQUIRE PROCESSING BY
  21433. * MAIN EXECUTIVE. A STACK REQUIRES PROCESSING IF IT
  21434. * IS HALF-FULL.
  21435. *
  21436. * EXIT (X6) = NONZERO IF FORCED EXIT REQUIRED.
  21437. * (DSXC) = UPDATED IF DRIVER STACK EXIT.
  21438. * (MSXC) = UPDATED IF MONITOR STACK EXIT.
  21439. * (CCFC) = COMPLEMENT OF FUNCTION LIMIT (NFCL).
  21440. *
  21441. * USES X - 2, 3, 4, 6, 7.
  21442. * A - 2, 3, 4, 6, 7.
  21443. * B - 4, 5, 6.
  21444.  
  21445.  
  21446. CFX SUBR ENTRY/EXIT
  21447.  
  21448. * SET FUNCTION LIMIT COMPLEMENT. CHECK FOR FULL NETWORK STACK.
  21449.  
  21450. SA3 NDSL
  21451. SX6 -NFCL
  21452. SA6 CCFC
  21453. NZ X3,CFX4.1 IF NETWORK STACK IS FULL
  21454.  
  21455. * CHECK MONITOR REQUEST STACK.
  21456.  
  21457. SB5 VTRP SET STACK FWA
  21458. SB6 VTRP+VTRL STACK LWA+1
  21459. SX2 MSXC INDICATE EXIT COUNTER
  21460. SX4 VTRL/2 STACK LENGTH/2
  21461. CFX1 SA3 B5 READ STACK ENTRY
  21462. SB5 B5+B1
  21463. ZR X3,CFX2 IF NO REQUEST
  21464. SX4 X4-1 COUNT ENTRY
  21465. ZR X4,CFX5 IF STACK HALF FULL
  21466. CFX2 LT B5,B6,CFX1 IF NOT DONE WITH STACK, LOOP
  21467.  
  21468. * CHECK DRIVER REQUEST STACKS.
  21469.  
  21470. SA3 NSPA GET NETWORK STACK POINTER ADDRESS
  21471. SB5 VDRL-1 START OF DRIVER STACK POINTERS
  21472. BX6 X6-X6 ASSUME NO EXIT FORCE
  21473. SB6 X3 (B6) = NETWORK STACK POINTER ADDRESS
  21474. CFX3 SB5 B5+B1 ADVANCE POINTER ADDRESS
  21475. EQ B5,B6,CFX3 IF NETWORK POINTER ADDRESS, IGNORE
  21476. SA3 B5 READ STACK POINTER
  21477. NG X3,CFXX IF END OF STACK
  21478. ZR X3,CFX3 IF NULL STACK, IGNORE
  21479. AX3 24 SHIFT STACK POINTER
  21480. SB4 X3+B1 (B4) = ADDRESS OF FIRST
  21481. SA2 B4+1 READ IN
  21482. SA3 A2+1 READ OUT
  21483. SX2 X2+B1
  21484. IX4 X3-X2 (X4) = OUT-IN-1
  21485. PL X4,CFX4 IF IN .LE. OUT-1
  21486. SA2 B4 READ FIRST
  21487. SA3 A3+B1 READ LIMIT
  21488. SX2 X2
  21489. SX3 X3
  21490. IX4 X4-X2
  21491. IX4 X4+X3 (X4) = (OUT-FIRST)+(LIMIT-IN)-1
  21492. CFX4 SX4 X4-VDSL/2 CHECK LENGTH
  21493. PL X4,CFX3 IF LESS THAN HALF FULL
  21494. CFX4.1 SX2 DSXC
  21495.  
  21496. * UPDATE FORCED EXIT COUNT AND RETURN.
  21497.  
  21498. CFX5 SA2 X2 READ EXIT COUNTER WORD
  21499. SX6 B1 UPDATE EXIT COUNT
  21500. IX7 X6+X2
  21501. SA7 A2
  21502. EQ CFXX RETURN
  21503. SPACE 4,10
  21504. ** COA - CHECK OUTPUT AVAILABLE.
  21505. *
  21506. * DETERMINES IF THERE IS ANY OUTPUT BEING OUTPUT TO
  21507. * THE TERMINAL OR ANY DRIVER REQUESTS PENDING.
  21508. *
  21509. * ENTRY (A0) = TERMINAL TABLE ADDRESS.
  21510. * (X1) = VDCT, LEFT SHIFTED NINE BITS.
  21511. *
  21512. * EXIT (X4) = 0 IF NO OUTPUT PRESENT.
  21513. * (X4) .NE. 0 IF OUTPUT PRESENT.
  21514. *
  21515. * USES A - 1, 6.
  21516. * X - 1, 4, 6.
  21517.  
  21518.  
  21519. COA SUBR ENTRY/EXIT
  21520. LX1 -9 REALIGN VDCT
  21521. SX4 B1
  21522. NG X1,COAX IF DRIVER REQUEST PENDING
  21523. TA1 B2,VMST CHECK FOR OUTPUT FLAG
  21524. LX4 52-0
  21525. BX4 X4*X1
  21526. ZR X4,COA1 IF NO OUTPUT ON *NAM*
  21527. BX6 -X4*X1 CLEAR OUTPUT FLAG
  21528. SA6 A1 REWRITE VMST
  21529. EQ COAX RETURN
  21530.  
  21531. COA1 SA1 A0+VSTT CHECK FOR OUTPUT POT
  21532. MX4 -12
  21533. BX4 -X4*X1
  21534. EQ COAX RETURN
  21535. DBC SPACE 4,10
  21536. ** DBC - DECREMENT BLOCK COUNT.
  21537. *
  21538. * DECREMENT TERMINAL APPLICATION BLOCK COUNT.
  21539. *
  21540. * EXIT (X6) = NEGATIVE IF BLOCK COUNT ZERO ON ENTRY.
  21541. *
  21542. * USES A - 3, 6.
  21543. * X - 3, 6.
  21544.  
  21545.  
  21546. DBC SUBR ENTRY/EXIT
  21547. TA3 B2,VMST READ VMST ENTRY
  21548. MX6 -3 MASK BLOCK COUNT
  21549. LX3 -33
  21550. BX6 -X6*X3
  21551. IX3 X3-X6 CLEAR BLOCK COUNT
  21552. SX6 X6-1 DECREMENT BLOCK COUNT
  21553. NG X6,DBCX IF ZERO ON ENTRY
  21554. BX6 X6+X3 INSERT NEW BLOCK COUNT
  21555. LX6 33
  21556. SA6 A3 REWRITE VMST ENTRY
  21557. BX6 X6-X6 (X6) STATUS = NO ERROR
  21558. EQ DBCX RETURN
  21559. DCI SPACE 4,15
  21560. ** DCI - DISCARD INPUT IF NECESSARY.
  21561. *
  21562. * ENTRY (X1) = MESSAGE HEADER.
  21563. * (X6) = 0, IF OVERFLOW ALREADY DETECTED.
  21564. * = (VMST), IF TESTING FOR DISCARD.
  21565. *
  21566. * EXIT (X0) = NONZERO IF INPUT TO DISCARD.
  21567. *
  21568. * USES A - 1, 2, 3, 6.
  21569. * B - 3, 4, 7.
  21570. * X - ALL.
  21571. *
  21572. * CALLS DPT, ERQ, SRE.
  21573.  
  21574.  
  21575. DCI SUBR ENTRY/EXIT
  21576. SA2 A0+VUIT
  21577. SA3 A0+VSTT
  21578. MX7 -12
  21579. LX3 59-56
  21580. BX2 -X7*X2
  21581. ZR X2,DCI4 IF NO EJT ORDINAL ASSIGNED, DISCARD DATA
  21582. NG X3,DCI4 IF DETACH IN PROGRESS, DISCARD DATA
  21583. ZR X6,DCI4 IF OVERFLOW ALREADY DETECTED
  21584. LX1 59-13 CHECK CANCEL LINE FLAG
  21585. BX5 X1
  21586. SA1 A0+VDCT
  21587. PL X5,DCI0 IF CANCEL BIT NOT SET
  21588. LX1 59-49
  21589. PL X1,DCI0 IF NOT AUTO MODE
  21590. MX4 1
  21591. LX1 59-53-59+49
  21592. BX7 X4+X1 SET CANCEL AUTO LINE
  21593. LX7 53-59
  21594. SA7 A1
  21595. LX7 59-49-59+53
  21596. DCI0 SA1 A0+VDCT
  21597. SA2 A0+VDPT
  21598. LX2 59-12 CHECK DISCARD DATA BIT
  21599. BX2 X5+X2
  21600. NG X2,DCI4 IF EITHER SET
  21601. SA2 A0+VSTT
  21602. LX6 59-57 CHECK FOR BREAK IN PROGRESS
  21603. LX1 59-50 CHECK TEXT MODE IN PROGRESS
  21604. PL X6,DCI1 IF BREAK NOT IN PROGRESS
  21605. PL X1,DCI4 IF NOT TEXT MODE, DISCARD INPUT
  21606. DCI1 LX6 59-55-59+57 CHECK END-CONNECTION FLAG
  21607. LX2 59-48 CHECK LOGOUT IN PROGRESS
  21608. BX7 X6+X2
  21609. NG X7,DCI4 IF ANY OF THE ABOVE SET, DISCARD
  21610.  
  21611. * DISCARD *BGI* REQUEST.
  21612.  
  21613. DCI2 LX1 50-59
  21614. MX5 -12
  21615. BX3 -X5*X1 MASK DRIVER REQUEST
  21616. BX0 X0-X0 SET NORMAL RETURN STATUS
  21617. PL X1,DCIX IF NO DRIVER REQUEST
  21618. SX3 X3-/1TD/BGI
  21619. NZ X3,DCI3 IF NOT *BGI* REQUEST
  21620. MX6 13 CLEAR *BGI* REQUEST
  21621. LX6 12
  21622. BX6 -X6*X1
  21623. SA6 A1 REWRITE VDCT
  21624. EQ DCIX RETURN
  21625.  
  21626. DCI3 SX3 X3-/1TD/IIP+/1TD/BGI
  21627. ZR X3,DCIX IF AN *IIP* REQUEST
  21628.  
  21629. * DISCARD INPUT.
  21630.  
  21631. DCI4 SA1 RCVH READ MESSAGE HEADER
  21632. SA2 A0+VDPT
  21633. AX1 54
  21634. SX4 B0
  21635. SX0 X1-BTMS
  21636. ZR X0,DCI5 IF MSG BLOCK
  21637. SX4 10000B DISCARD DATA BIT
  21638. DCI5 BX6 X4+X2
  21639. SA6 A2 REWRITE *VDPT*
  21640. RJ RIP RESET INPUT POINTERS IN *VDPT*
  21641. DCI6 NZ X0,DCIX IF NOT MSG BLOCK
  21642. RJ SOM SEND OVERFLOW MESSAGE
  21643. SX0 B1 DISCARD INPUT FLAG
  21644. EQ DCIX EXIT
  21645. DLP SPACE 4,20
  21646. ** DLP - DELINK POT.
  21647. *
  21648. * DELINKS POT FROM CHAIN. POT REMAINS RESERVED AND
  21649. * LINK TO FOLLOWING POT IS CLEARED.
  21650. *
  21651. * ENTRY (X1) = POT POINTER.
  21652. *
  21653. * EXIT (X7) = POT POINTER TO WHICH ENTRY POT WAS
  21654. * ORIGINALLY LINKED. ZERO IF ENTRY POT
  21655. * WAS NOT LINKED.
  21656. *
  21657. * USES A - 3, 6.
  21658. * X - 3, 4, 6.
  21659. * B - 7.
  21660. *
  21661. * CALLS ABT.
  21662.  
  21663.  
  21664. DLP SUBR ENTRY/EXIT
  21665. SX4 X1 SET PLT RELATIVE ADDRESS
  21666. ZR X4,DLP1 IF TRYING TO DELINK POT ZERO
  21667. LX4 -2
  21668. TA3 X4,VPLP READ PLT ENTRY
  21669. MX6 2
  21670. BX4 X6*X4 MASK BYTE ORDINAL
  21671. LX4 4 BYTE * 4
  21672. LX6 X4,B1 BYTE * 8
  21673. IX4 X4+X6 BYTE * 12
  21674. SB7 X4+12 SET LINK BYTE SHIFT COUNT
  21675. LX3 X3,B7 SHIFT LINK BYTE
  21676. MX6 -12
  21677. BX7 -X6*X3 MASK LINK BYTE
  21678. SB7 B7-60
  21679. BX3 X6*X3 CLEAR LINK BYTE
  21680. AX6 X3,B7 REWRITE PLT ENTRY
  21681. SA6 A3
  21682. EQ DLPX RETURN
  21683.  
  21684. DLP1 SX6 3RDLP
  21685. RJ ABT
  21686. BX7 X7-X7
  21687. EQ DLPX EXIT
  21688. ECL SPACE 4,20
  21689. ** ECL - ENTER COMMAND INPUT LINE.
  21690. *
  21691. * ENTERS DRIVER REQUEST QUEUE ENTRY TO RELEASE INPUT
  21692. * LINE TO THE EXECUTIVE AS A COMMAND LINE.
  21693. *
  21694. * ENTRY (X1) = (VDPT).
  21695. * (VDPT) = 12/FP, 12/LP, 3/FW, 3/WC, 6/, 12/FLAGS, 12/.
  21696. * FP = FIRST POT OF LINE.
  21697. * LP = LAST POT OF LINE.
  21698. * FW = FIRST WORD OF FIRST POT.
  21699. * WC = LAST POT WORD COUNT.
  21700. * (A1) = ADDRESS OF VDPT.
  21701. *
  21702. * EXIT POTS RELEASED TO EXECUTIVE.
  21703. * (VDPT) = POT POINTERS CLEARED.
  21704. *
  21705. * CALLS ERQ.
  21706.  
  21707.  
  21708. ECL SUBR ENTRY/EXIT
  21709. SX7 1S16 CLEAR INPUT-INITIATED BIT
  21710. BX1 -X7*X1
  21711. MX6 -30 CLEAR POT POINTERS
  21712. BX6 -X6*X1
  21713. MX2 -12
  21714. SA6 A1+ REWRITE VDPT
  21715. LX1 12 SET FIRST POT OF LINE
  21716. MX7 -3
  21717. BX2 -X2*X1
  21718. LX1 15
  21719. SX6 /TLX/CLI SET REQUEST CODE
  21720. BX7 -X7*X1 SET FIRST WORD OF FIRST POT
  21721. SB3 X2
  21722. RJ ERQ ENTER REQUEST
  21723. SA1 A0+VROT SEE IF VROT COMPLETE
  21724. LX1 59-0
  21725. PL X1,ECLX IF CONNECTED TO SMFEX
  21726. LX1 0-59 SET INPUT SATISFIED
  21727. SX7 1S5
  21728. BX7 X1+X7
  21729. SA7 A1 REWRITE VROT
  21730. EQ ECLX EXIT
  21731. EIL SPACE 4,15
  21732. ** EIL - PROCESS END OF INPUT LINE.
  21733. *
  21734. * CALLS COMMAND OR SOURCE INPUT LINE PROCESSOR DEPENDING
  21735. * ON TERMINAL MODE AND DATA FORMAT.
  21736. *
  21737. * ENTRY (A1) = ADDRESS OF VDPT.
  21738. * (X1) = (VDPT).
  21739. *
  21740. * EXIT (VDPT) = UPDATED.
  21741. * (X0) AND (X5) UNCHANGED.
  21742. *
  21743. * CALLS ECL, ESL.
  21744.  
  21745.  
  21746. EIL SUBR ENTRY/EXIT
  21747.  
  21748. * SELECT PROCESSOR ACCORDING TO MODE FLAGS.
  21749.  
  21750. SA2 A0+VDCT READ VDCT
  21751. LX2 59-54 CHECK READ-DATA BIT
  21752. BX5 X1 MOVE (VDPT) FOR TESTING
  21753. NG X2,EIL1 IF READ-DATA SET
  21754. LX2 54-50 CHECK TEXT MODE BIT
  21755. MX3 -12
  21756. NG X2,EIL2 IF TEXT MODE SET
  21757.  
  21758. * SELECT PROCESSOR ACCORDING TO DATA MODE.
  21759.  
  21760. LX5 59-15 CHECK FOR BINARY MODE
  21761. NG X5,EIL2 IF SET
  21762. LX5 60+12-59+15 GET FIRST POT POINTER
  21763. BX2 -X3*X5
  21764. MX4 -3
  21765. LX5 15 GET FIRST POT FIRST WORD ADDRESS
  21766. BX4 -X4*X5 MASK FIRST POT WORD INDEX
  21767. SB3 X2 STORE POT POINTER
  21768. LX2 3 SET POT ADDRESS
  21769. TB4 X2,VBMP
  21770. SA3 B4+X4 READ FIRST WORD OF DATA
  21771. MX2 6
  21772. BX4 X2*X3 CHECK FIRST CHARACTER
  21773. LX4 6
  21774. SX2 X4-1R0
  21775. NG X2,EIL1 IF ALPHA CHARACTER
  21776. SX2 X4-1R9-1
  21777. NG X2,EIL2 IF NUMERIC
  21778.  
  21779. * ENTER COMMAND LINE.
  21780.  
  21781. EIL1 RJ ECL ENTER COMMAND LINE
  21782. EQ EILX RETURN
  21783.  
  21784. * ENTER SOURCE LINE.
  21785.  
  21786. EIL2 RJ ESL ENTER SOURCE LINE
  21787. EQ EILX RETURN
  21788. ERQ SPACE 4,30
  21789. ** ERQ - ENTER CIRCULAR STACK REQUEST.
  21790. *
  21791. * ENTERS DRIVER-TO-EXECUTIVE REQUESTS IN THE DRIVER
  21792. * CIRCULAR STACK. THE STACK LIMIT FLAG WILL BE SET
  21793. * IF THERE ARE LESS THAN THREE WORDS LEFT IN THE
  21794. * STACK TO INHIBIT OPERATIONS WHICH ISSUE MULTIPLE
  21795. * REQUESTS.
  21796. *
  21797. * ENTRY (NDSA) = ADDRESS OF CIRCULAR STACK.
  21798. * (X6) = REQUEST CODE.
  21799. * (X7) = REQUEST BITS 47-24.
  21800. * (B2) = REQUEST BITS 11-0 (TERMINAL NUMBER).
  21801. * (B3) = REQUEST BITS 23-12.
  21802. *
  21803. * EXIT (X6) = NEGATIVE IF ENTRY COULD NOT BE MADE.
  21804. * (X6) = (NDSL) IF ENTRY MADE.
  21805. * (X7) = STACK REMAINING WORD COUNT.
  21806. * REQUEST ENTERED IN CIRCULAR STACK.
  21807. * REQUEST STACK *IN* POINTER UPDATED.
  21808. * (NDSL) = NONZERO IF STACK FULL AFTER ENTRY.
  21809. *
  21810. * USES A - 1, 2, 3, 4, 6, 7.
  21811. * X - 1, 2, 3, 4, 5, 6, 7.
  21812. * B - 6.
  21813. *
  21814. * CALLS ABT.
  21815.  
  21816.  
  21817. ERQ SUBR ENTRY/EXIT
  21818. SB6 X6 SAVE REQUEST CODE FOR PACKING
  21819. MX6 -24
  21820.  
  21821. * FORMAT REQUEST STACK ENTRY.
  21822.  
  21823. SA1 NDSA GET DRIVER STACK ADDRESS
  21824. SX5 B3 SET BITS 23-12
  21825. BX7 -X6*X7 SET BITS 47-24
  21826. SX6 B2 SET BITS 11-0
  21827. LX5 12
  21828. SA1 X1+2 READ IN
  21829. PX6 X6,B6 PACK REQUEST CODE AND BITS 11-0
  21830. LX7 24
  21831. BX6 X6+X5 MERGE BITS 23-12
  21832. IX6 X6+X7 MERGE BITS 47-24
  21833. SA6 X1 STORE REQUEST
  21834.  
  21835. * UPDATE CIRCULAR STACK POINTER.
  21836.  
  21837. SX7 X1+B1 UPDATE IN
  21838. SA3 A1+2 READ LIMIT
  21839. SA4 A1-B1 READ FIRST
  21840. IX1 X3-X7 LIMIT - IN
  21841. SA2 A1+B1 READ OUT
  21842. NZ X1,ERQ1 IF IN .NE. LIMIT
  21843. SX7 X4 SET IN = FIRST
  21844. ERQ1 IX1 X2-X7 LENGTH = OUT-IN
  21845. ZR X1,ERQ4 IF OUT = IN, ERROR
  21846. SA7 A1 STORE NEW IN
  21847. PL X1,ERQ2 IF OUT > IN
  21848. IX1 X1-X4 LENGTH = (LIMIT-IN) + (OUT-FIRST)
  21849. IX1 X1+X3
  21850. ERQ2 SX6 B1+ INITIALIZE STACK LIMIT FLAG
  21851. SX7 X1-3
  21852. NG X7,ERQ3 IF STACK FULL
  21853. SX6 B0+
  21854. ERQ3 SA6 NDSL SET/CLEAR STACK LIMIT FLAG
  21855. EQ ERQX RETURN
  21856.  
  21857. * PROCESS ERROR IF STACK FULL.
  21858.  
  21859. ERQ4 SX6 3RERQ SET ERROR CODE
  21860. RJ ABT
  21861. MX6 59 SET NEGATIVE STATUS
  21862. BX7 X6
  21863. EQ ERQ3 RETURN
  21864. ESL SPACE 4,20
  21865. ** ESL - ENTER SOURCE INPUT LINE.
  21866. *
  21867. * RELEASES INPUT LINE TO EXECUTIVE AS A SOURCE LINE
  21868. * OF DATA IF THE LINE CROSSES A POT BOUNDARY. IF THERE
  21869. * IS NO POT SWITCH INVOLVED, THE INPUT INITIATED BIT
  21870. * IS SET ONLY.
  21871. * IF THE PRIMARY FILE IS NON-EXISTENT OR LOCKED,
  21872. * THIS ROUTINE ISUES AN APPROPRIATE MESSAGE AND
  21873. * CLEARS THE POT POINTERS IN *VDPT*.
  21874. *
  21875. * ENTRY (X1) = (VDPT).
  21876. * (VDPT) = 12/FP, 12/LP, 3/FW, 3/WC, 6/, 12/FLAGS, 12/.
  21877. * FP = FIRST POT OF LINE.
  21878. * LP = LAST POT OF LINE.
  21879. * FW = FIRST WORD OF FIRST POT.
  21880. * WC = LAST POT WORD COUNT.
  21881. * (A1) = ADDRESS OF VDPT.
  21882. * (B2) = TERMINAL NUMBER.
  21883. * (B3) = POT POINTER FOR THE INPUT LINE.
  21884. *
  21885. * EXIT IF PRIMARY FILE IS PRESENT IN WRITE MODE -
  21886. * (VDPT) = FIRST POT RESET TO LAST POT.
  21887. * INPUT INITIATED BIT SET.
  21888. * IF LOCKED OR NO PRIMARY FILE -
  21889. * (VDPT) = POT POINTERS CLEARED.
  21890. * APPROPRIATE MESSAGE ISSUED.
  21891. *
  21892. * USES X - 1, 2, 3, 4, 5, 6, 7.
  21893. * A - 1, 5, 6.
  21894. * B - 3, 4, 5, 7.
  21895. *
  21896. * CALLS ACD, ASV, ERQ, SSP.
  21897.  
  21898.  
  21899. ESL SUBR ENTRY/EXIT
  21900.  
  21901. * CHECK PRIMARY FILE
  21902.  
  21903. SA5 A0+VFNT GET PRIMARY FILE NAME
  21904. MX6 42
  21905. BX6 X6*X5
  21906. NZ X6,ESL1 IF PRIMARY FILE EXISTS
  21907. SX6 DMNP SET MESSAGE ADDRESS
  21908. SB4 DMNPL SET MESSAGE LENGTH
  21909. EQ ESL2 FINISH PROCESSING
  21910.  
  21911. ESL1 LX5 59-12 CHECK WRITE LOCKOUT BIT
  21912. PL X5,ESL3 IF WRITE LOCKOUT NOT SET
  21913. SX6 DMLP SET MESSAGE ADDRESS
  21914. SB4 DMLPL SET MESSAGE LENGTH
  21915. ESL2 RJ ACD ASSIGN MESSAGE
  21916.  
  21917. * CLEAR POT POINTERS IN VDPT
  21918.  
  21919. SA1 A0+VDPT CLEAR POT POINTERS
  21920. MX6 30
  21921. BX6 -X6*X1
  21922. SA6 A1+ REWRITE VDPT
  21923. EQ ESLX RETURN
  21924.  
  21925. * UPDATE POINTERS IN VDCT.
  21926.  
  21927. ESL3 MX5 -3 EXTRACT FIRST WORD
  21928. LX1 -30
  21929. BX7 -X5*X1 (X7) = FIRST WORD
  21930. LX1 -3 RESET FIRST WORD = WORD COUNT
  21931. BX6 X5*X1
  21932. IX6 X6+X7
  21933. MX5 -12 EXTRACT LAST POT
  21934. LX6 -3
  21935. BX1 -X5*X6 (X1) = LAST POT
  21936. LX6 -12 EXTRACT FIRST POT
  21937. BX2 -X5*X6 (X2) = FIRST POT
  21938. LX7 12 SHIFT WORD COUNT FOR *RIN* REQUEST
  21939. BX6 X5*X6 RESET FIRST POT = LAST POT
  21940. IX6 X6+X1
  21941. SX4 1S16 SET INPUT-INITIATED BIT 16
  21942. LX6 48 REWRITE VDPT
  21943. IX3 X1-X2 COMPARE POT POINTERS
  21944. BX6 X6+X4
  21945. SA6 A1
  21946. ZR X3,ESLX IF NO POT CHANGE
  21947. BX7 X7+X1 MERGE LAST POT, WORD COUNT
  21948. SB3 X2 SET FIRST POT
  21949. SX6 /TLX/RIN SET RELEASE-INPUT REQUEST
  21950. RJ ERQ ENTER REQUEST
  21951. EQ ESLX EXIT
  21952. ETX SPACE 4,10
  21953. ** ETX - EXIT FROM TEXT MODE.
  21954. *
  21955. * ENTER *EXIT TEXT MODE* REQUEST.
  21956. *
  21957. * ENTRY (A0) = TERMINAL TABLE ADDRESS.
  21958. *
  21959. * EXIT THE INPUT-INITIATED FLAG IS CLEARED.
  21960. * VDPT CLEARED.
  21961. * *EXIT TEXT MODE* REQUEST ENTERED.
  21962. *
  21963. * CALLS ERQ.
  21964.  
  21965.  
  21966. ETX SUBR ENTRY/EXIT
  21967. SA1 A0+VDCT CLEAR TEXT MODE BIT
  21968. MX6 59
  21969. LX6 50-0
  21970. BX6 X6*X1
  21971. SA6 A1 REWRITE VDCT
  21972. SA1 A0+VDPT GET POT POINTER
  21973. BX6 X6-X6
  21974. SA6 A1 CLEAR VDPT
  21975. MX6 -12
  21976. LX1 60-36 EXTRACT LAST POT OF LINE
  21977. BX6 -X6*X1
  21978. SB3 X6 (B3)=LAST POT OF LINE
  21979. MX7 -3
  21980. LX1 36-30 EXTRACT LAST POT WORD COUNT
  21981. BX7 -X7*X1 (X7)=LAST POT WORD COUNT
  21982. SX6 /TLX/ETX EXIT TEXT MODE REQUEST
  21983. RJ ERQ ENTER REQUEST
  21984. EQ ETXX RETURN
  21985. GAT SPACE 4,10
  21986. ** GAT - GET ACTIVE TERMINAL NUMBER.
  21987. *
  21988. * SEARCHES FOR NEXT TERMINAL WITH ACTIVITY BIT SET.
  21989. *
  21990. * ENTRY (B2) = STARTING TERMINAL NUMBER.
  21991. *
  21992. * EXIT (B2) = NEXT TERMINAL NUMBER WITH ACTIVITY.
  21993. * = ZERO IF NO TERMINAL FOUND.
  21994. * (A0) = (B2) TERMINAL TABLE ADDRESS.
  21995. * (X6) = (B2).
  21996. *
  21997. * MACROS TTADD.
  21998.  
  21999.  
  22000. GAT SUBR ENTRY/EXIT
  22001. SA4 HACN GET HIGHEST ACTIVE ACN
  22002. TX2 B2,-VNTP SET TERMINAL ORDINAL
  22003. MX7 -5
  22004. BX3 -X7*X2 TERMINAL ORDINAL MOD 32
  22005. AX2 5 TERMINAL ORDINAL/32
  22006. SB5 X3
  22007. TA1 X2,VNAT READ STARTING TABLE ENTRY
  22008. SB6 32 (B6) = BIT TEST SHIFT LIMIT
  22009. SB7 X4 (B7) = HIGHEST ACTIVE ACN
  22010. LX1 X1,B5 SHIFT STARTING TERMINAL BIT
  22011. EQ GAT2 ENTER TEST LOOP
  22012.  
  22013. * ADVANCE TO NEXT TABLE ENTRY.
  22014.  
  22015. GAT1 SA1 A1+B1 READ NEXT TABLE ENTRY
  22016. SB5 B0 CLEAR SHIFT COUNT
  22017. NZ X1,GAT2 IF NOT NULL WORD
  22018. SB2 B2+32 ADVANCE TERMINAL NUMBER
  22019. LE B2,B7,GAT1 IF NOT END OF TERMINALS
  22020. EQ GAT4
  22021.  
  22022. * SEARCH ENTRY WORD FOR ACTIVITY BIT.
  22023.  
  22024. GAT2 NG X1,GAT3 IF ACTIVITY BIT SET
  22025. SB2 B2+1 ADVANCE TERMINAL NUMBER
  22026. LX1 1 SHIFT NEXT TERMINAL BIT
  22027. GT B2,B7,GAT4 IF END OF ACTIVE TERMINALS
  22028. SB5 B5+B1 ADVANCE SHIFT COUNT
  22029. LT B5,B6,GAT2 IF NOT END OF ENTRY WORD
  22030. EQ GAT1 PROCESS NEXT TABLE ENTRY
  22031.  
  22032. * RETURN ENTRY FOUND.
  22033.  
  22034. GAT3 TTADD B2,A0,X1,X2 SET TERMINAL TABLE ADDRESS
  22035. SX6 B2 RETURN TERMINAL NUMBER
  22036. EQ GATX RETURN
  22037.  
  22038. * RETURN ENTRY NOT FOUND.
  22039.  
  22040. GAT4 SB2 B0 CLEAR RETURN REGISTERS
  22041. BX6 X6-X6
  22042. EQ GATX RETURN
  22043. IAT SPACE 4,10
  22044. ** IAT - INITIALIZE AIP TRACE OUTPUT FILE.
  22045. *
  22046. * ENTRY (ATMC) = MESSAGE COUNT USED TO CONTROL
  22047. * PROCESSING OF TRACE OUTPUT FILE.
  22048. * = ZERO, IF TRACE IS NOT SELECTED.
  22049. * = NEGATIVE, IF PROCESS TRACE FILE AT
  22050. * IAF TERMINATION ONLY.
  22051. *
  22052. * EXIT TRACE OUTPUT FILE INITIALIZED IF REQUIRED.
  22053. *
  22054. * USES X - 1, 2, 6.
  22055. * A - 1, 2, 6.
  22056. *
  22057. * MACROS NETREL.
  22058.  
  22059.  
  22060. IAT1 NETREL =0,MXLT,=0 INITIALIZE TRACE FILE FOR T=* OPTION
  22061. SB1 1
  22062.  
  22063. IAT SUBR ENTRY/EXIT
  22064. SA1 ATMC GET TRACE MESSAGE COUNT
  22065. SA2 IATA CHECK IF FILE ALREADY INITIALIZED
  22066. ZR X1,IATX IF TRACE IS NOT SELECTED
  22067. NZ X2,IATX IF TRACE FILE ALREADY INITIALIZED
  22068. BX6 X1
  22069. SA6 A2 INDICATE TRACE FILE INITIALIZED
  22070. NG X1,IAT1 IF T=* OPTION IS SELECTED
  22071. NETREL JPTO,MXLT,RWTF INITIALIZE TRACE OUTPUT FILE
  22072. SB1 1
  22073. EQ IATX RETURN
  22074.  
  22075. IATA DATA 0 SET NONZERO WHEN TRACE FILE INITIALIZED
  22076. IBC SPACE 4,10
  22077. ** IBC - INCREMENT BLOCK COUNT.
  22078. *
  22079. * INCREMENT TERMINAL APPLICATION BLOCK COUNT.
  22080. *
  22081. * EXIT (VMST) = BLOCK COUNT INCREMENTED
  22082. *
  22083. * USES A - 3, 6.
  22084. * X - 3, 6.
  22085.  
  22086.  
  22087. IBC SUBR ENTRY/EXIT
  22088. TA3 B2,VMST READ VMST
  22089. SX6 B1 INCREMENT ABC
  22090. LX6 33-0
  22091. IX6 X6+X3
  22092. SA6 A3 REWRITE VMST
  22093. EQ IBCX RETURN
  22094. ILV SPACE 4,10
  22095. ** ILV - INSERT LOAN STATUS VALUE.
  22096. *
  22097. * PUT THE LOAN STATUS VALUE IN BYTE 2 OF VROT.
  22098. *
  22099. * ENTRY (X7) = LOAN STATUS VALUE.
  22100. *
  22101. * EXIT (X7) = UNCHANGED.
  22102. *
  22103. * USES A - 1, 6.
  22104. * X - 0, 1, 6.
  22105.  
  22106.  
  22107. ILV SUBR ENTRY/EXIT
  22108. SA1 A0+VROT INSERT LOAN STATUS VALUE IN VROT
  22109. MX0 -12
  22110. LX0 24-0
  22111. BX6 X0*X1
  22112. LX1 59-0
  22113. PL X1,PCSX IF VROT BUSY
  22114. LX7 24-0
  22115. BX6 X6+X7
  22116. SA6 A1 REWRITE VROT
  22117. LX7 0-24 REALIGN LOAN STATUS VALUE
  22118. EQ ILVX RETURN
  22119. IPM SPACE 4,15
  22120. ** IPM - ISSUE PROMPT MESSAGE.
  22121. *
  22122. * EXIT (X6) .NE. 0, IF PROMPT WAS ASSIGNED TO TERMINAL,
  22123. * OR *MSG* BLOCK ALREADY SENT.
  22124. * .EQ. 0, IF POT WAS NOT AVAILABLE FOR PROMPT.
  22125. *
  22126. * USES X - 1, 2, 3, 6.
  22127. * A - 1, 3.
  22128. * B - 3, 4.
  22129. *
  22130. * CALLS ACD.
  22131.  
  22132.  
  22133. IPM SUBR ENTRY/EXIT
  22134. SA1 A0+VROT CHECK QUEUED INPUT AVAILABLE
  22135. TA3 B2,VMST
  22136. MX2 -12
  22137. BX3 -X2*X3
  22138. LX2 36
  22139. BX1 -X2*X1
  22140. BX6 X1+X3
  22141. NZ X6,IPMX IF INPUT QUEUED, DO NOT SEND PROMPT
  22142. SA1 A0+VDPT CHECK INPUT MODE
  22143. SX2 140000B
  22144. SA3 A0+VSTT CHECK PROMPT MODE
  22145. BX2 X1*X2
  22146. LX3 59-53
  22147. SX6 DMBI SET NULL MESSAGE ADDRESS
  22148. SB4 B1+B1 SET TEXT LENGTH
  22149. SB3 B0
  22150. NG X3,IPM1 IF PROMPT OFF
  22151. NZ X2,IPM1 IF TRANSPARENT OR EXTENDED MODE
  22152. LX3 59-55-6
  22153. NG X3,IPM1 IF USER EFFECT MODE
  22154. SX6 DMIP SET INPUT PROMPT ADDRESS
  22155. RJ ACD ASSIGN CANNED DATA MESSAGE
  22156. EQ IPMX EXIT
  22157.  
  22158. IPM1 TA3 B2,VMST READ VMST ENTRY
  22159. LX3 59-53
  22160. NG X3,IPMX IF *MSG* BLOCK SENT, EXIT
  22161. RJ ACD ASSIGN CANNED DATA MESSAGE
  22162. EQ IPMX EXIT
  22163. ISW SPACE 4,10
  22164. ** ISW - ISSUE SHUTDOWN WARNING MESSAGE.
  22165. *
  22166. * CALLS ACD, CBL.
  22167.  
  22168.  
  22169. ISW SUBR ENTRY/EXIT
  22170. RJ CBL CHECK BLOCK LIMIT
  22171. NZ X6,ISWX IF TERMINAL AT BLOCK LIMIT
  22172.  
  22173. * CHECK FOR BREAK IN PROGRESS, WARNING SENT, OR
  22174. * END CONNECTION.
  22175.  
  22176. TA1 B2,VMST READ VMST ENTRY
  22177. SX6 7B SET BIT MASK
  22178. LX6 55-0
  22179. BX6 X6*X1
  22180. NZ X6,ISWX IF ANY OF THE ABOVE, RETURN
  22181.  
  22182. * CHECK FOR JOB ACTIVE OR OUTPUT ON MASS STORAGE.
  22183.  
  22184. SA1 A0+VROT READ VROT
  22185. SX6 26B
  22186. BX6 X6*X1
  22187. NZ X6,ISWX IF ANY OF THE ABOVE, RETURN
  22188.  
  22189. * CHECK FOR OUTPUT CONTINUATION OR LOGOUT.
  22190.  
  22191. SA2 A0+VSTT READ VSTT
  22192. LX1 59-29
  22193. LX2 59-48
  22194. NG X1,ISWX IF OUTPUT CONTINUATION
  22195. NG X2,ISWX IF LOGOUT
  22196.  
  22197. * CHECK FOR AUTO MODE INPUT.
  22198.  
  22199. SA1 A0+VDCT READ VDCT
  22200. SB3 B0 INDICATE NO POT AVAILABLE FOR MESSAGE
  22201. LX1 59-49
  22202. NG X1,ISWX IF AUTO MODE, RETURN
  22203.  
  22204. * ASSIGN MESSAGE.
  22205.  
  22206. SX6 DMSH MESSAGE ADDRESS
  22207. SB4 DMSHL MESSAGE LENGTH
  22208. RJ ACD ASSIGN MESSAGE
  22209. ZR X6,ISWX IF MESSAGE NOT ASSIGNED, RETURN
  22210.  
  22211. * SET MESSAGE-ISSUED STATUS.
  22212.  
  22213. TA1 B2,VMST READ VMST
  22214. SX6 B1 SET BIT
  22215. LX6 56-0
  22216. BX6 X1+X6
  22217. SA6 A1 REWRITE VMST
  22218. EQ ISWX RETURN
  22219. PDR SPACE 4,10
  22220. ** PDR - PROCESS DRIVER REENTRY.
  22221. *
  22222. * ENTRY (VCHT) = REENTRY PARAMETERS.
  22223. *
  22224. * EXIT REENTRY PROCESSED.
  22225. * (X6) = ZERO IF NO REENTRY PRESENT.
  22226. *
  22227. * CALLS PCS.
  22228.  
  22229.  
  22230. PDR SUBR ENTRY/EXIT
  22231. SA1 A0+VCHT READ VCHT
  22232. BX6 X6-X6 ASSUME NO REENTRY
  22233. MX2 36
  22234. BX3 X2*X1 MASK REENTRY
  22235. ZR X3,PDRX IF NO REENTRY, RETURN
  22236. BX6 -X2*X1 CLEAR REENTRY
  22237. AX3 24
  22238. SA6 A1 REWRITE VCHT
  22239. BX5 -X2*X3 (X5) = X7 AND B3 REENTRY PARAMETERS
  22240. SX1 B2
  22241. LX5 12
  22242. IX5 X5+X1 INSERT (X5) TERMINAL NUMBER
  22243. AX3 24
  22244. MX2 -12
  22245. BX3 -X2*X3
  22246. SB7 X3+NDR SET REENTRY ADDRESS
  22247. RJ PCS EXECUTE REENTRY
  22248. SX6 B1+ INDICATE REENTRY PROCESSED
  22249. EQ PDRX RETURN
  22250. PIN SPACE 4,30
  22251. ** PIN - PROCESS INPUT DATA.
  22252. *
  22253. * TRANSLATES INPUT DATA AND PASSES INPUT TO EXECUTIVE.
  22254. *
  22255. * ENTRY (DIOF) = DIRECT INPUT FLAG.
  22256. * (RCVB) = INPUT DATA.
  22257. * (RCVH) = INPUT MESSAGE HEADER.
  22258. * (VDPT) = CURRENT POSITION IN POT.
  22259. *
  22260. * EXIT (X6) = ZERO IF NOT ENOUGH POTS FOR TRANSLATION.
  22261. * (VDPT) = UPDATED.
  22262. * (X0) = POSITIVE VALUE IF OVERFLOW OCCURRED.
  22263. *
  22264. * CALLS EIL, ETX, IVD, VBX, VDX.
  22265.  
  22266.  
  22267. PIN SUBR ENTRY/EXIT
  22268.  
  22269. * INITIALIZE TRANSLATOR CALL PARAMETERS.
  22270.  
  22271. SA4 RCVH READ MESSAGE HEADER
  22272. SA5 A0+VDPT READ VDPT
  22273. MX6 -12
  22274. BX2 -X6*X4 MASK TEXT LENGTH
  22275. BX3 -X6*X5 OLD CHARACTER COUNT
  22276. SB7 X2 (B7) = TEXT LENGTH IN CHARACTERS
  22277. IX1 X2+X3 CUMULATIVE CHARACTER COUNT
  22278. SX0 X1-VXLL-1
  22279. LX2 18
  22280. PL X0,PINX IF OVERFLOW OCCURRED
  22281. SA3 A0+VDCT
  22282. BX6 X3
  22283. LX6 59-47
  22284. NG X6,PINX IF CONNECTION IS LOANED
  22285. NE B7,B1,PIN1 IF NOT ONE CHARACTER MESSAGE
  22286. LX6 59-50-59+47
  22287. NG X6,PIN8 IF TEXT MODE
  22288.  
  22289. * SET UP RCCW.
  22290.  
  22291. PIN1 SX6 RCVB FWA BUFFER
  22292. BX6 X6+X2 COMBINE FWA AND TEXT LENGTH
  22293. SX0 B1
  22294. LX0 13
  22295. BX2 X0*X5 CHECK BLK BIT
  22296. NZ X2,PIN2 IF NOT FIRST BLOCK
  22297. MX2 1
  22298. BX6 X2+X6 SET FIRST BLOCK BIT
  22299. PIN2 SA6 RCCW
  22300. MX6 -12
  22301. BX6 X5*X6 CLEAR OLD CC
  22302. SA4 RCVH
  22303. BX6 X1+X6 INSERT CUMULATIVE CC
  22304. BX6 -X0*X6 CLEAR BLK RECEIVED
  22305. BX1 X4
  22306. AX1 54
  22307. SX7 X1+
  22308. SX1 X1-BTMS
  22309. SA7 PINA SAVE BLOCK TYPE
  22310. ZR X1,PIN3 IF MSG BLOCK
  22311. BX6 X0+X6 SET BLK RECEIVED
  22312. PIN3 SA6 A5+ REWRITE VDPT
  22313.  
  22314. * PROCESS RESOURCE LIMIT FOR TRANSPARENT MODE
  22315.  
  22316. SA1 A0+VROT CHECK FOR RESOURCE LIMIT
  22317. LX1 59-19
  22318. MX2 2
  22319. BX5 X2*X1
  22320. ZR X5,PIN4 IF NO LIMIT
  22321. MX2 1 CLEAR BINARY DATA BIT IN RCVH
  22322. LX2 14-59
  22323. BX7 -X2*X4
  22324. SA7 A4 REWRITE RCVH
  22325. BX4 X7
  22326.  
  22327. * SELECT TRANSLATION PROCESSOR.
  22328.  
  22329. PIN4 SX0 4000B SET BINARY DATA BIT
  22330. SX2 5 CHARACTERS PER WORD
  22331. SX5 7777B MASK FOR 12 BIT CHARACTERS
  22332. SX7 B7 SET CHARACTER COUNT FOR ENTRY TO *IVD*
  22333. LX4 59-14 CHECK HEADER *XPT* BIT
  22334. LX3 59-52 CHECK ASCII8 MODE
  22335. NG X4,PIN6 IF BINARY DATA
  22336. LX4 X3,B1
  22337. LX6 59-14 CHECK TRANSPARENT MODE
  22338. NG X4,PIN5 IF EXTENDED MODE
  22339. NG X6,PIN5 IF TRANSPARENT MODE
  22340. SX0 B1
  22341. LX0 58-0 SET ASCII8 BIT
  22342. NG X3,PIN6 IF ASCII8
  22343. MX5 7
  22344. LX5 6
  22345. SX2 10D CHARACTERS PER WORD
  22346. PIN5 RJ IVD INITIALIZE VDPT AND POT CHAIN
  22347. ZR X6,PINX IF NO POTS
  22348. RJ VDX TRANSLATE TO 6/12
  22349. EQ PIN7 COMPLETE PROCESSING
  22350.  
  22351. PIN6 RJ IVD INITIALIZE VDPT AND POT CHAIN
  22352. ZR X6,PINX IF NO POTS
  22353. RJ VBX TRANSLATE BINARY DATA
  22354. PIN7 SA1 A0+VDPT
  22355. BX0 X1
  22356. LX0 59-13
  22357. NG X0,PINX IF NOT MSG BLOCK
  22358. SA2 DIOF
  22359. MX0 1
  22360. NZ X2,PINX IF DIRECT I/O REQUEST
  22361. RJ EIL ENTER END-OF-LINE
  22362.  
  22363. * CLEAR MODE BITS AND CHARACTER COUNT.
  22364.  
  22365. SA1 A0+VDPT READ VDPT
  22366. MX6 -16
  22367. MX0 1 SET NO OVERFLOW STATUS
  22368. BX7 X6*X1 CLEAR BITS
  22369. SA2 A0+VROT CHECK FOR RESOURCE LIMIT
  22370. MX5 2
  22371. LX2 59-19
  22372. BX5 X5*X2
  22373. ZR X5,PIN7.1 IF NO LIMIT HAS OCCURRED
  22374. LX1 59-15
  22375. BX2 X0*X1 PRESERVE VALUE OF BINARY BIT
  22376. LX2 15-59
  22377. BX7 X7+X2
  22378. PIN7.1 SA7 A1+ REWRITE VDPT
  22379. EQ PINX RETURN
  22380.  
  22381. * PROCESS TEXT MODE EXIT.
  22382.  
  22383. PIN8 SA4 RCVB READ INPUT DATA
  22384. AX4 52
  22385. SX4 X4-ASC.ETX CHECK FOR *ETX* CODE
  22386. NZ X4,PIN1 IF NOT *ETX*
  22387. SB3 B0+
  22388. RJ ETX EXIT FROM TEXT MODE
  22389. SX6 B1
  22390. MX0 1 SET NORMAL RETURN
  22391. EQ PINX RETURN
  22392.  
  22393. PINA CON 0 BLOCK TYPE
  22394. PQO SPACE 4,20
  22395. ** PQO - PROCESS QUEUED OUTPUT.
  22396. *
  22397. * PROCESS THE NEXT OUTPUT MESSAGE QUEUED IN VSTT.
  22398. * FOR A DESCRIPTION OF HOW POT CHAINS OF DATA ARE LINKED
  22399. * TOGETHER IN THE QUEUE, SEE THE NOTE AT THE BEGINNING
  22400. * OF SUBROUTINE *ANM*.
  22401. *
  22402. * EXIT (X6) = ZERO IF NO OUTPUT PRESENT.
  22403. *
  22404. * CALLS CBL, DQO, ERQ, GPL, IBC, SCS, SRE, TDM, UAC, UOC.
  22405.  
  22406.  
  22407. PQO SUBR ENTRY/EXIT
  22408. TA1 B2,VMST
  22409. NG X1,PQO0 IF TERMINAL IS ON LINE
  22410. RJ DQO DROP QUEUED OUTPUT
  22411. PQO0 RJ CBL CHECK BLOCK LIMIT
  22412. NZ X6,PQOX IF AT BLOCK LIMIT
  22413. SA1 A0+VSTT
  22414. MX6 -12 MASK POT POINTER
  22415. BX6 -X6*X1
  22416. ZR X6,PQOX IF NO OUTPUT
  22417. SA1 A0+VDCT CHECK CONNECTION
  22418. LX1 59-47
  22419. NG X1,PQO8 IF LOANED CONNECTION
  22420. SA3 A0+VDPT READ VDPT
  22421. LX3 59-16
  22422. NG X3,PQOX IF INPUT INITIATED, RETURN
  22423. SB3 X6
  22424. LX6 3
  22425. TA2 X6+1,VBMP
  22426. AX6 3
  22427. MX4 6 CHECK FOR BLOCK TYPE
  22428. BX4 X4*X2
  22429. ZR X4,PQO3 IF MESSAGE NEEDS TO BE TRANSLATED
  22430. BX6 X2
  22431. SA6 SNDH STORE HEADER
  22432. SB5 6
  22433. PQO1 SA2 A2+B1 TRANSFER DATA INTO SEND BUFFER
  22434. SB5 B5-B1
  22435. BX6 X2
  22436. SA6 A6+B1
  22437. NZ B5,PQO1 IF MORE DATA IN POT
  22438. RJ GPL
  22439. SA2 B4-1
  22440. SB5 VCPC
  22441. NZ B3,PQO1 IF MORE POTS CONTAINING DATA
  22442. SA1 SNDH
  22443. EQ PQO6 SEND MESSAGE AND DROP POTS
  22444.  
  22445. * ENTRY POINT TO RESUME TRANSLATION OF DATA WHEN A
  22446. * CHAIN OF OUTPUT HAD TO BE BROKEN INTO MORE THAN ONE
  22447. * DOWNLINE BLOCK. AN EXAMPLE IS WHEN TRANSPARENT AND
  22448. * NORMAL DATA ARE MIXED IN THE SAME OUTPUT CHAIN.
  22449.  
  22450. PQO2 BSS 0
  22451. SA1 A0+VSTT CHECK OUTPUT POT POINTER
  22452. MX6 -12
  22453. BX6 -X6*X1
  22454. ZR X6,PQOX IF POTS HAVE BEEN DROPPED
  22455. SB7 PQO2
  22456. RJ CBL CHECK BLOCK LIMIT
  22457. NZ X6,PCD IF AT BLOCK LIMIT, REENTER
  22458. MX3 -3
  22459. BX2 -X3*X7 SET UP ENTRY CONDITIONS
  22460. AX7 3
  22461. BX7 -X3*X7
  22462. SX6 B3
  22463. SB6 X2
  22464. SB7 X7
  22465. EQ PQO4 RESUME TRANSLATION
  22466.  
  22467. PQO3 SB6 2
  22468. SB7 B0
  22469. PQO4 RJ TDM TRANSLATE DATA INTO BUFFER
  22470. SX7 B0+ CLEAR USER FORMAT EFFECTOR FLAG
  22471. SA7 TDMG
  22472. NG X6,PQO9 IF DATA COULD NOT BE TRANSLATED
  22473. ZR X6,PQO5 IF ENTIRE POT CHAIN TRANSLATED
  22474. BX7 X6
  22475. AX6 6 MAKE REENTRY FOR TRANSLATION CONTINUATION
  22476. SB3 X6
  22477. SB7 PQO2
  22478. RJ SRE
  22479. PQO5 SA1 SNDH CHECK FOR EMBEDDED FUNCTION REQUESTS
  22480. MX3 -12
  22481. BX3 -X3*X1
  22482. ZR X3,PQO8 IF ZERO LENGTH MESSAGE
  22483.  
  22484. * SET MESSAGE BLOCK SENT FLAG IF CURRENT MESSAGE IS A
  22485. * MESSAGE BLOCK.
  22486.  
  22487. PQO6 TA5 B2,VMST
  22488. AX1 54 EXTRACT BLOCK TYPE
  22489. SX3 B1
  22490. SX1 X1-BTMS
  22491. LX3 53-0
  22492. BX7 -X3*X5 CLEAR PREVIOUS VALUE
  22493. NZ X1,PQO7 IF NOT MESSAGE BLOCK
  22494. BX7 X3+X7 SET MESSAGE BLOCK FLAG
  22495. PQO7 SA7 A5
  22496. SX6 SNDH TRANSMIT MESSAGE
  22497. SX7 SNDB
  22498. SB2 -B2
  22499. RJ SCS
  22500. SA1 SNDH UPDATE OUTPUT ACCOUNTING
  22501. SX7 B0+
  22502. RJ UAC
  22503. RJ IBC INCREMENT BLOCK COUNT
  22504. PQO8 SA1 A0+VCHT
  22505. AX1 48
  22506. SX6 B1
  22507. NZ X1,PQOX IF A REENTRY WAS MADE, DO NOT DROP CHAIN
  22508. PQO9 RJ UOC UPDATE OUTPUT CHAINS
  22509. SX7 B0
  22510. SX6 /TLX/RES
  22511. RJ ERQ ENTER RESTART REQUEST
  22512. SX6 B1
  22513. EQ PQOX RETURN
  22514. PRP SPACE 4,15
  22515. ** PRP - PROCESS RETURN TO PRIMARY.
  22516. *
  22517. * UPON RETURNING FROM A SECONDARY APPLICATION, CHECK LOGOUT
  22518. * AND INTERLOCK CONDITIONS, AND INSERT THE LOAN STATUS
  22519. * VALUE IN VROT.
  22520. *
  22521. * ENTRY (X7) = LOAN STATUS VALUE.
  22522. *
  22523. * EXIT (X7) = UNCHANGED.
  22524. *
  22525. * USES A - 1.
  22526. * B - 3.
  22527. * X - 1.
  22528. *
  22529. * CALLS ILV.
  22530.  
  22531.  
  22532. PRP SUBR ENTRY/EXIT
  22533. SB3 B0 CLEAR SUPERVISORY FUNCTION CODE
  22534. SA1 A0+VSTT CHECK LOGOUT BIT
  22535. LX1 59-48
  22536. NG X1,PCSX IF LOGOUT IN PROGRESS
  22537. RJ ILV INSERT LOAN STATUS VALUE IN VROT
  22538. EQ PRPX EXIT
  22539. QTI SPACE 4,10
  22540. ** QTI - QUEUE TYPEAHEAD INTERNALLY.
  22541. *
  22542. * QUEUES INPUT DATA TO A DEPTH OF *TAPC* POTS, THEN
  22543. * INITIATES NAM TYPEAHEAD MODE TO PREVENT OVERFLOW.
  22544. *
  22545. * USES X - 1, 2, 6, 7.
  22546. * A - 1, 2, 6.
  22547. * B - 3, 4, 5, 7.
  22548. *
  22549. * CALLS ASV, CTP, LEP, MVA, SRE.
  22550.  
  22551.  
  22552. QTI SUBR ENTRY/EXIT
  22553. SA1 RCVH CALCULATE BUFFER LENGTH
  22554. SB3 B0 START NEW POT CHAIN
  22555. MX7 -12
  22556. BX2 -X7*X1 CHARACTER COUNT
  22557. LX2 1 TIMES TWO
  22558. SX2 X2+14
  22559. SX1 15
  22560. IX1 X2/X1 NUMBER OF WORDS IN MESSAGE
  22561. SB4 X1+B1 ADD ONE FOR THE HEADER
  22562. TA2 B2,VMST CHECK FOR INPUT QUEUE OVERFLOW
  22563. AX1 3 MESSAGE POT COUNT
  22564. MX7 -6
  22565. SB5 X1-77B
  22566. AX2 12
  22567. BX2 -X7*X2
  22568. SB5 X2+B5 TOTAL POT COUNT - 77B
  22569. GE B5,QTI5 IF THIS MESSAGE WILL OVERFLOW THE QUEUE
  22570. SB5 B1 SKIP FIRST WORD IN POT CHAIN
  22571. SX6 RCVH SET MESSAGE ADDRESS
  22572. RJ CTP COPY MESSAGE TO POTS
  22573. SB5 X6 SET POT COUNT
  22574. PX7 X7,B5
  22575. SA6 QTIA SAVE POT COUNT
  22576. SA7 B4 SET LINK TO LAST POT
  22577.  
  22578. * LINK ONTO INPUT POT CHAIN.
  22579.  
  22580. TA1 B2,VMST GET CURRENT POT POINTER
  22581. MX6 -12
  22582. BX6 -X6*X1
  22583. SX2 B3 TRAILING POT
  22584. NZ X6,QTI2 IF CURRENT CHAIN
  22585. BX6 X1+X2
  22586. SA6 A1 REWRITE VMST OR CHAIN HEADER
  22587. EQ QTI3 CHECK NAM TYPEAHEAD
  22588.  
  22589. QTI2 SB3 X6 LEADING POT
  22590. RJ LEP LINK EXISTING POT CHAINS
  22591. QTI3 TA2 B2,VMST CHECK NAM TYPEAHEAD MODE
  22592. SA1 QTIA
  22593. LX1 12 ADD POT COUNT
  22594. MX6 -6
  22595. IX7 X1+X2
  22596. SB3 B0
  22597. SA7 A2+ REWRITE VMST
  22598. LX2 59-51
  22599. NG X2,QTIX IF NAM TYPEAHEAD ALREADY IN EFFECT
  22600. AX7 12
  22601. BX1 -X6*X7
  22602. BX6 X6-X6 INDICATE DEFAULT MESSAGE HEADER
  22603. SX1 X1-TAPC+1
  22604. NG X1,QTIX IF NAM TYPEAHEAD NOT REQUIRED
  22605. SB4 B1 TEXT LENGTH
  22606. SX7 LSTHDX MESSAGE ADDRESS
  22607. RJ ASV ASSIGN SUPERVISORY MESSAGE
  22608. NZ X6,QTI4 IF ISSUED
  22609. SB3 B0
  22610. BX7 X7-X7
  22611. SB7 ITM
  22612. RJ SRE SET REENTRY
  22613. EQ QTIX EXIT
  22614.  
  22615. QTI4 TA1 B2,VMST SET NAM TYPEAHEAD IN EFFECT
  22616. SX6 B1
  22617. LX6 51-0
  22618. BX6 X6+X1
  22619. SA6 A1 REWRITE VMST
  22620. EQ QTIX EXIT
  22621.  
  22622. * SEND MESSAGE TO TERMINAL AND DISCARD INPUT.
  22623.  
  22624. QTI5 SMA X6,( TYPEAHEAD OVERFLOW, REENTER INPUT.)
  22625. SB4 B0+
  22626. RJ MVA MOVE MESSAGE TO OUTPUT QUEUE
  22627. SA1 QTIB COUNT OVERFLOW OCCURRENCE
  22628. SX6 B1
  22629. IX6 X1+X6
  22630. SA6 A1
  22631. EQ QTIX EXIT
  22632.  
  22633.  
  22634. QTIA CON 0 POT COUNT
  22635. QTIB CON 0 OVERFLOW OCCURRENCE COUNT
  22636. RIP SPACE 4,10
  22637. ** RIP - RESET INPUT POINTERS IN *VDPT*.
  22638. *
  22639. * ENTRY (A0) = TERMINAL TABLE ADDRESS.
  22640. *
  22641. * EXIT (VDPT) RESET TO LAST EOL.
  22642. *
  22643. * USES X - 1, 2, 6.
  22644. * A - 1, 6.
  22645.  
  22646.  
  22647. RIP SUBR ENTRY/EXIT
  22648. SA1 A0+VDPT
  22649. MX2 -9
  22650. LX2 24
  22651. BX6 X2*X1 CLEAR WORD COUNT IN CURRENT POT
  22652. LX2 3
  22653. BX2 -X2*X6 GET FIRST WORD
  22654. AX2 3
  22655. BX6 X6+X2
  22656. MX2 -12
  22657. LX2 36
  22658. BX6 X2*X6 CLEAR LAST POT
  22659. LX2 12
  22660. BX2 -X2*X1
  22661. LX2 48
  22662. BX6 X2+X6 REPLACE WITH FIRST POT
  22663. SA6 A1 REWRITE *VDPT*
  22664. EQ RIPX EXIT
  22665. SAB SPACE 4,10
  22666. ** SAB - SET TERMINAL ACTIVITY BIT.
  22667. *
  22668. * ENTRY (B2) = TERMINAL NUMBER.
  22669. *
  22670. * EXIT (VNAT) = BIT SET.
  22671. * (MGRB) = SET IF NOT TERMINAL BLOCK LIMIT.
  22672. *
  22673. * USES A - 2, 6.
  22674. * X - 2, 6.
  22675. * B - 5.
  22676. *
  22677. * CALLS CBL.
  22678.  
  22679.  
  22680. SAB SUBR ENTRY/EXIT
  22681. TX2 B2,-VNTP RELATIVE TERMINAL ORDINAL
  22682. SX6 37B
  22683. BX6 X6*X2 TERMINAL ORDINAL MOD 32
  22684. AX2 5 TERMINAL ORDINAL/32
  22685. TA2 X2,VNAT READ TABLE ENTRY
  22686. SB5 X6-59
  22687. MX6 -1
  22688. AX6 X6,B5
  22689. BX6 -X6+X2 SET BIT
  22690. SA6 A2 REWRITE TABLE ENTRY
  22691. RJ CBL CHECK BLOCK LIMIT
  22692. NZ X6,SABX IF NO MORE BLOCKS ALLOWED
  22693. SX6 B1+
  22694. SA6 MGRB
  22695. EQ SABX RETURN
  22696. SFE SPACE 4,10
  22697. ** SFE - SUPERVISORY FUNCTION CODE ERROR PROCESSOR.
  22698. *
  22699. * ISSUES SUPERVISORY MESSAGE ERROR DAYFILE MESSAGE.
  22700. *
  22701. * ENTRY (B2) = TERMINAL NUMBER (ACN).
  22702. *
  22703. * CALLS IDM, WOD.
  22704.  
  22705.  
  22706. SFE SUBR ENTRY/EXIT
  22707. SA1 RCVH PUT RCVH INTO MESSAGE
  22708. RJ WOD CONVERT WORD TO OCTAL DISPLAY CODE
  22709. SA6 SFEB
  22710. SA7 A6+1
  22711. SA1 RCVB ADD RCVB TO MESSAGE
  22712. RJ WOD CONVERT WORD TO OCTAL DISPLAY CODE
  22713. SA6 A7+B1
  22714. SA7 A6+B1
  22715. SX6 SFEA SET MESSAGE ADDRESS
  22716. RJ IDM ISSUE DAYFILE MESSAGE
  22717. SA1 ISMC UPDATE INCORRECT SUPERVISORY MESSAGE COUNT
  22718. SX7 B1
  22719. IX7 X1+X7
  22720. SA7 A1
  22721. EQ SFEX RETURN
  22722.  
  22723. SFEA DATA 10L SMP ERR
  22724. SFEB BSSZ 4
  22725. SHA SPACE 4,20
  22726. ** SHA - SET HIGHEST ACTIVE ACN NUMBER.
  22727. *
  22728. * EXIT (HACN) = HIGHEST ACTIVE ACN NUMBER.
  22729. * = 0 IF NO TERMINALS ACTIVE.
  22730. * (X6) = (HACN).
  22731. * = 0 IF NO TERMINALS ACTIVE.
  22732. * (B6) = FIRST NETWORK TERMINAL NUMBER.
  22733. * (B7) = (HACN).
  22734. *
  22735. * USES A - 2, 6.
  22736. * X - 2, 6.
  22737. * B - 6, 7.
  22738.  
  22739.  
  22740. SHA SUBR ENTRY/EXIT
  22741. TB6 B0,VNTP SET SEARCH LIMITS
  22742. TB7 B0,VNTP,LWA
  22743. SHA1 TA2 B7,VMST READ VMST ENTRY
  22744. NZ X2,SHA2 IF TERMINAL ACTIVE
  22745. SB7 B7-B1 DECREMENT TERMINAL NUMBER
  22746. GE B7,B6,SHA1 IF NOT END OF TERMINALS, LOOP
  22747. SB7 B0 ZERO HIGHEST ACTIVE ACN
  22748. SHA2 SX6 B7+ SET HIGHEST ACTIVE ACN
  22749. SA6 HACN
  22750. EQ SHAX RETURN
  22751. SOM SPACE 4,15
  22752. ** SOM - SEND OVERFLOW MESSAGE.
  22753. *
  22754. * SEND EITHER *OVL* OR NULL MESSAGE TO NETWORK
  22755. * DEPENDING ON CHARACTER COUNT IN *VDPT*.
  22756. *
  22757. * ENTRY (VDPT) BITS 11-0 = CHARACTER COUNT.
  22758. *
  22759. * EXIT (VDPT) BITS 23-0 = 0 IF MESSAGE SENT.
  22760. *
  22761. * USES X - 1, 2, 3, 6.
  22762. * A - 1, 2, 6.
  22763. * B - 3, 4, 7.
  22764. *
  22765. * CALLS ACD, SRE.
  22766.  
  22767.  
  22768. SOM2 SX2 40000B PRESERVE ASCII INPUT MODE
  22769. BX3 X3+X2
  22770. SOM3 SA2 A0+VDPT CLEAR FLAGS AND CHARACTER COUNT
  22771. BX6 X3*X2
  22772. SA6 A2 REWRITE *VDPT*
  22773.  
  22774. SOM SUBR ENTRY/EXIT
  22775. TA1 B2,VMST CHECK BREAK IN PROGRESS
  22776. SA2 A0+VSTT CHECK LOGOUT FLAG
  22777. LX1 59-57
  22778. LX2 59-48
  22779. MX3 36
  22780. BX2 X1+X2
  22781. LX1 59-55-59+57
  22782. BX2 X1+X2
  22783. NG X2,SOM3 IF LOGOUT, END CONNECTION, OR BREAK
  22784. SX6 DMBI SET NULL MESSAGE
  22785. SB4 B1+B1
  22786. MX1 -12
  22787. SA2 A0+VDPT CHECK CHARACTER COUNT
  22788. BX1 -X1*X2
  22789. SB3 B0
  22790. SX1 X1-VXLL
  22791. NG X1,SOM1 IF NOT OVERFLOW CONDITION
  22792. SX6 DMOV SET *OVL* MESSAGE
  22793. SB4 DMOVL
  22794. SOM1 RJ ACD ASSIGN MESSAGE
  22795. SA2 A0+VCHT CHECK DRIVER REENTRY
  22796. MX3 36
  22797. BX2 X3*X2
  22798. NZ X6,SOM2 IF MESSAGE ASSIGNED
  22799. NZ X2,SOMX IF REENTRY ALREADY ASSIGNED
  22800. SB7 AOM
  22801. RJ SRE SET REENTRY
  22802. EQ SOMX EXIT
  22803. SRE SPACE 4,20
  22804. ** SRE - SET/CLEAR DRIVER REENTRY.
  22805. *
  22806. * ENTRY (B7) = REENTRY ADDRESS IF NONZERO.
  22807. * (B3) = REENTRY POT POINTER.
  22808. * (X7) = 12 BIT REENTRY PARAMETER.
  22809. *
  22810. * EXIT (VCHT(0)) = REENTRY ADDRESS RELATIVE TO *NDR*.
  22811. * (VCHT(1)) = (X7) PARAMETER.
  22812. * (VCHT(2)) = (B3) POT POINTER.
  22813. *
  22814. * CALLS ABT, DPT, SAB.
  22815.  
  22816.  
  22817. SRE SUBR ENTRY/EXIT
  22818. ZR B7,SRE1 IF NO REENTRY ADDRESS
  22819. RJ SAB SET ACTIVITY BIT
  22820. SRE1 SA2 A0+VCHT READ VCHT
  22821. MX3 36
  22822. BX0 X0-X0
  22823. SX4 B7+ SET REENTRY ADDRESS
  22824. ZR X4,SRE2 IF NO REENTRY TO BE SET
  22825. SX4 X4-NDR BIAS REENTRY ADDRESS
  22826. MX6 -12
  22827. LX4 12
  22828. BX7 -X6*X7 TRUNCATE (X7) TO 12 BITS
  22829. SX6 B3+ SET POT POINTER
  22830. BX4 X4+X7 MERGE PARAMETERS
  22831. LX4 12
  22832. BX4 X4+X6
  22833. LX4 24
  22834. BX0 X3*X2 GET OLD PARAMETERS
  22835. SRE2 BX6 -X3*X2 INSERT NEW PARAMETERS
  22836. MX7 -12
  22837. BX6 X6+X4
  22838. AX2 24
  22839. SA6 A2 REWRITE VCHT
  22840. BX6 -X7*X2 MASK PRIOR REENTRY POT POINTER
  22841. AX2 24
  22842. BX2 -X7*X2 GET REENTRY INDEX
  22843. SB3 X2+NDR-PQO2
  22844. ZR B3,SRE2.1 IF TRANSLATION REENTRY
  22845. SB3 X6
  22846. SB4 B0
  22847. SRE2.1 SA2 A0+VDCT CLEAR INTERRUPT COMPLETE
  22848. MX6 59
  22849. LX6 58-0
  22850. BX6 X2*X6
  22851. SA6 A2 REWRITE VDCT
  22852. MX7 24
  22853. BX6 X7*X4 (X6) = REENTRY ADDRESS AND X7
  22854. SA2 SRE GET RETURN ADDRESS
  22855. MX7 18
  22856. LX7 -12
  22857. BX2 X7*X2
  22858. LX2 -18
  22859. BX6 X6+X2 MERGE RETURN ADDRESS IN X6
  22860. SX2 B2 GET TERMINAL NUMBER
  22861. BX6 X6+X2 MERGE TERMINAL NUMBER IN X6
  22862. SA2 SREC GET BUFFER POINTER
  22863. SA6 X2 STORE REENTRY INFORMATION IN BUFFER
  22864. SX6 X2+B1 INCREMENT BUFFER POINTER
  22865. SB5 X6-SREC
  22866. NG B5,SRE2.2 IF NOT AT END OF BUFFER
  22867. SX6 SREB RESET POINTER TO BEGINNING OF BUFFER
  22868. SRE2.2 SA6 SREC STORE BUFFER POINTER
  22869. ZR X0,SRE3 IF NO ABORT CONDITION
  22870. SX7 B7-HUP
  22871. ZR X7,SRE3 IF LOGOUT REQUEST
  22872. SX7 B7-CNB
  22873. ZR X7,SRE3 IF CONNECTION BROKEN REQUEST
  22874. BX6 X0
  22875. SA6 SREA
  22876. SX6 3RSRE
  22877. RJ ABT PROCESS ABORT
  22878. SRE3 ZR B3,SREX IF NO POTS TO DROP
  22879. RJ DPT
  22880. EQ SREX RETURN
  22881.  
  22882. SREA CON 0 SAVE OLD REENTRY
  22883.  
  22884. * 12/REENTRY ADDR, 12/X7, 6/, 18/RETURN ADDR, 12/TN
  22885.  
  22886. SREB BSSZ 20 REENTRY INFORMATION BUFFER
  22887. SREC CON SREB BUFFER POINTER
  22888. UAC SPACE 4,20
  22889. ** UAC - UPDATE CHARACTER ACCOUNTING.
  22890. *
  22891. * ADDS BLOCK CHARACTER COUNT TO ACCUMULATOR IN VCHT AND
  22892. * ENTERS EXECUTIVE ACCOUNTING REQUEST IF ACCUMLATOR
  22893. * OVERFLOW.
  22894. *
  22895. * ENTRY (X1) = BLOCK HEADER.
  22896. * (X7) = 0 IF OUTPUT ACCOUNTING.
  22897. * = 1 IF INPUT ACCOUNTING.
  22898. * (B2) = TERMINAL NUMBER.
  22899. *
  22900. * EXIT (A0) = (B2) TERMINAL TABLE ADDRESS.
  22901. * (VCHT) = ACCUMULATOR UPDATED.
  22902. *
  22903. * USES A - 1, 2, 6.
  22904. * X - 1, 2, 3, 6.
  22905. * B - 6.
  22906. *
  22907. * CALLS ERQ.
  22908.  
  22909.  
  22910. UAC SUBR ENTRY/EXIT
  22911.  
  22912. * INITIALIZE ACN AND TERMINAL TABLE ADDRESS.
  22913.  
  22914. SB6 X7 (B6) = ACCOUNTING TYPE
  22915. MX7 -12
  22916. TTADD B2,A0,X2,X3 (A0) = TERMINAL TABLE FWA
  22917. SA2 A0+VCHT READ VCHT
  22918. BX3 -X7*X1 (X3) = TEXT LENGTH IN ACT UNITS
  22919. ZR B6,UAC1 IF OUTPUT ACCOUNTING
  22920. LX2 -12 SHIFT INPUT ACCOUNTING ACCUMULATOR
  22921.  
  22922. * ADD CHARACTER COUNT TO ACCUMULATOR.
  22923.  
  22924. UAC1 AX1 20 GET CHARACTER TYPE
  22925. MX6 -4
  22926. BX1 -X6*X1 (X1) = CHARACTER TYPE CODE (ACT)
  22927. SX6 B0
  22928. SX1 X1-TUACL CHECK ACT
  22929. PL X1,UACX IF INCORRECT, RETURN
  22930. SA1 X1+TUAC+TUACL READ CONVERSION FACTOR
  22931. IX3 X3*X1 CONVERT TLC TO CHARACTER COUNT
  22932. BX6 -X7*X2 MASK VCHT ACCUMULATOR
  22933. IX6 X6+X3 ADD CHARACTER COUNT
  22934. BX2 X7*X2 CLEAR VCHT BYTE
  22935. BX3 -X7*X6 TRUNCATE TOTAL TO 12 BITS
  22936. IX7 X3+X2 INSERT UPDATED VALUE
  22937. AX6 12 SHIFT OFF ALL BUT OVERFLOW
  22938. ZR B6,UAC2 IF OUTPUT ACCOUNTING
  22939. LX7 12 RESTORE VCHT POSITION
  22940. UAC2 SA7 A2 REWRITE VCHT
  22941. SX7 B6 RESTORE (X7)
  22942. ZR X6,UACX IF NO OVERFLOW, RETURN
  22943.  
  22944. * CALL EXECUTIVE TO ENTER ACCOUNTING MESSAGE.
  22945.  
  22946. SX6 /TLX/IAM ENTER REQUEST
  22947. SB3 B0+
  22948. RJ ERQ
  22949. EQ UACX RETURN
  22950.  
  22951.  
  22952. * TUAC - TABLE OF ACCOUNTING CONVERSION FACTORS.
  22953.  
  22954. TUAC BSS 0
  22955. LOC 0
  22956.  
  22957. CON 1
  22958. CON 10
  22959. CON 1
  22960. CON 1
  22961. CON 1
  22962.  
  22963. LOC *O
  22964. TUACL EQU *-TUAC
  22965. UNQ SPACE 4,10
  22966. ** UNQ - UNQUEUE INTERNAL TYPEAHEAD INPUT.
  22967. *
  22968. * USES X - 1, 2, 3, 5, 6, 7.
  22969. * A - 1, 2, 5, 6.
  22970. * B - 3, 4, 5, 7.
  22971. *
  22972. * CALLS ABT, ASV, DLP, DPT, GPL, SRE.
  22973.  
  22974.  
  22975. UNQ SUBR ENTRY/EXIT
  22976. TA2 B2,VMST CHECK INTERNAL QUEUE
  22977. MX3 -12
  22978. BX1 -X3*X2
  22979. ZR X1,UNQX IF NO QUEUE
  22980. BX5 X1 SAVE CURRENT CHAIN POINTER
  22981. LX1 3 GET POINTER TO NEXT CHAIN
  22982. TA1 X1,VBMP
  22983. SX3 X1+
  22984. NZ X3,UNQ0 IF LAST POT POINTER PRESENT
  22985.  
  22986. * PROCESS ERROR IN TYPEAHEAD LINKAGE.
  22987.  
  22988. SX6 3RUNQ
  22989. RJ ABT
  22990. TA2 B2,VMST GET INTERNAL TYPEAHEAD
  22991. MX3 -12
  22992. BX3 -X3*X2
  22993. SB3 X3
  22994. SB4 B0
  22995. RJ DPT DROP POT CHAIN
  22996. SA2 A2
  22997. MX3 42
  22998. BX6 X3*X2 CLEAR TYPEAHEAD POT(S) AND COUNT
  22999. SA6 A2
  23000. EQ UNQ2.1 INGNORE TYPEAHEAD AND CONTINUE
  23001.  
  23002. * UNQUEUE FIRST POT CHAIN IN TYPEAHEAD QUEUE.
  23003.  
  23004. UNQ0 RJ DLP DELINK POT CHAIN
  23005. UX1,B5 X1
  23006. MX3 -6
  23007. LX3 12
  23008. BX3 -X3*X2 PREVIOUS POT COUNT
  23009. SX6 B5
  23010. LX6 12
  23011. IX3 X3-X6 NEW POT COUNT
  23012. MX6 42
  23013. BX6 X6*X2
  23014. ZR X7,UNQ1 IF NO POT QUEUED
  23015. BX6 X7+X6 MERGE POT POINTER
  23016. NG X3,UNQ1 IF BAD POT COUNT
  23017. BX6 X3+X6 MERGE POT COUNT
  23018. UNQ1 SA6 A2 REWRITE VMST
  23019. SB3 X5
  23020. BX1 X5 SAVE POT POINTER
  23021. LX5 3
  23022. TB4 X5,VBMP
  23023. SB5 VCPC-2
  23024. SA5 B4+B1
  23025. BX6 X5
  23026. SA6 RCVH
  23027. UNQ2 SA5 A5+B1 TRANSFER FROM POT TO RCVB
  23028. BX6 X5
  23029. SA6 A6+B1
  23030. SB5 B5-B1
  23031. NZ B5,UNQ2 IF MORE DATA IN POT
  23032. RJ GPL GET POT LINK
  23033. SA5 B4-B1
  23034. SB5 VCPC
  23035. NZ B3,UNQ2 IF MORE DATA IN POTS
  23036.  
  23037. * DROP POTS.
  23038.  
  23039. SB3 X1
  23040. SB4 B0
  23041. RJ DPT DROP POT CHAIN
  23042.  
  23043. * CHECK NAM TYPEAHEAD MODE.
  23044.  
  23045. TA1 B2,VMST
  23046. MX6 -6 CHECK POT COUNT
  23047. AX1 12
  23048. BX6 -X6*X1
  23049. LX1 59-51+12
  23050. PL X1,UNQX IF ALREADY OFF
  23051. SX6 X6-TAPT
  23052. PL X6,UNQX IF THRESHOLD NOT REACHED
  23053. UNQ2.1 SB4 B1 SET TEXT LENGTH
  23054. BX6 X6-X6 USE DEFAULT HEADER
  23055. SX7 LSTFDX SET TEXT ADDRESS
  23056. RJ ASV ASSIGN SUPERVISORY MESSAGE
  23057. NZ X6,UNQ3 IF MESSAGE ASSIGNED
  23058. SB3 B0
  23059. BX7 X7-X7
  23060. SB7 CTM SET REENTRY TO CANCEL TYPEAHEAD MODE
  23061. RJ SRE SET REENTRY
  23062. EQ UNQX EXIT
  23063.  
  23064. UNQ3 TA1 B2,VMST CLEAR TYPEAHEAD MODE
  23065. MX6 59
  23066. LX6 51-0
  23067. BX6 X1*X6
  23068. SA6 A1 REWRITE VMST
  23069. EQ UNQX EXIT
  23070. UOC SPACE 4,15
  23071. ** UOC - UPDATE OUTPUT CHAINS.
  23072. *
  23073. * ENTRY (VSTT BYTE 4) = CURRENT OUTPUT POT CHAIN POINTER.
  23074. *
  23075. * EXIT (VSTT BYTE 4) = NEW OUTPUT POT CHAIN POINTER, IF
  23076. * ANY - ZERO MEANS NO MORE OUTPUT.
  23077. *
  23078. * USES X - 1, 2, 3, 4, 6, 7.
  23079. * A - 1, 2, 6, 7.
  23080. * B - 3, 4.
  23081. *
  23082. * CALLS DPT.
  23083.  
  23084.  
  23085. UOC SUBR ENTRY/EXIT
  23086. SA1 A0+VSTT
  23087. MX6 -12
  23088. BX2 -X6*X1
  23089. SB3 X2
  23090. BX7 X1*X6 CLEAR VSTT POT POINTER
  23091. LX2 3
  23092. TA2 X2,VBMP
  23093. MX1 6 UPDATE POT COUNT IN VSTT
  23094. BX3 -X6*X2 GET LINK TO NEXT CHAIN
  23095. LX1 30
  23096. BX4 X1*X7 OLD POT COUNT
  23097. BX7 -X1*X7 CLEAR VSTT COUNT
  23098. BX1 X1*X2 MESSAGE POT COUNT
  23099. ZR X3,UOC2 IF NO NEXT CHAIN
  23100. IX1 X4-X1 NEW POT COUNT
  23101. NG X1,UOC1 IF NEGATIVE POT COUNT
  23102. BX7 X7+X1
  23103. UOC1 LX6 12
  23104. BX6 -X6*X2 GET LINK TO LAST CHAIN
  23105. BX7 X3+X7 STORE NEXT POT CHAIN IN VSTT
  23106. LX3 3
  23107. TA4 X3,VBMP
  23108. BX6 X4+X6
  23109. SA6 A4
  23110. UOC2 SA7 A1 REWRITE VSTT
  23111. NG X2,UOC3 IF *0003* BYTE AUTO MODE
  23112. SB4 B0
  23113. RJ DPT
  23114. EQ UOCX RETURN
  23115.  
  23116. UOC3 SA1 A0+VDCT SAVE AUTO MODE POT POINTER
  23117. LX1 -24
  23118. MX4 -12
  23119. BX5 -X4*X1 GET POT
  23120. BX1 X4*X1 CLEAR FIELD
  23121. SX7 B3
  23122. BX7 -X4*X7
  23123. BX7 X1+X7
  23124. LX7 24
  23125. SX3 102B SET AUTO MODE AND READ DATA BITS
  23126. LX3 48
  23127. BX7 X3+X7
  23128. SA7 A1
  23129. SB3 B0
  23130. ZR X5,UOCX IF NO POT
  23131. SB4 B0
  23132. SB3 X5
  23133. RJ DPT
  23134. EQ UOCX RETURN
  23135. VAC SPACE 4,20
  23136. ** VAC - VALIDATE ACN.
  23137. *
  23138. * CHECK ACN TO SEE IF ON-LINE NETWORK TERMINAL.
  23139. *
  23140. * ENTRY (B2) = ACN.
  23141. *
  23142. * EXIT (X6) = NEGATIVE IF INCORRECT ACN.
  23143. * (X2) = VMST ENTRY.
  23144. * (A2) = ADDRESS OF VMST ENTRY.
  23145. *
  23146. * USES A - 2.
  23147. * X - 2, 6.
  23148.  
  23149.  
  23150. VAC SUBR ENTRY/EXIT
  23151. TX6 B2,-VNTP COMPARE LOWER LIMIT
  23152. NG X6,VACX IF INCORRECT
  23153. SX6 B2-B1 CHECK UPPER LIMIT
  23154. TX6 X6,-VNTP,LWA
  23155. BX6 -X6 COMPLEMENT
  23156. NG X6,VACX IF INCORRECT NUMBER
  23157. TA2 B2,VMST READ VMST
  23158. NZ X2,VACX IF ON-LINE
  23159. SX6 -1
  23160. EQ VACX RETURN
  23161. XRJ SPACE 4,20
  23162. ** XRJ - TRANSFER RETURN JUMP.
  23163. *
  23164. * CHANGE ADDRESS FIELD OF RETURN JUMP INSTRUCTION
  23165. * AND RE-EXECUTE MODIFIED INSTRUCTION. THE RETURN
  23166. * JUMP INSTUCTION MUST BEGIN IN THE FIRST PARCEL OF
  23167. * THE INSTRUCTION WORD.
  23168. *
  23169. * ENTRY (X4) = 12, 18/ADR+1, 30/.
  23170. * (X5) = NAD.
  23171. * ADR = ADRESS OF RETURN JUMP INSTUCTION.
  23172. * NAD = NEW ADDRESS TO BE INSERTED.
  23173. *
  23174. * EXIT TO MODIFIED INSTRUCTION.
  23175. *
  23176. * USES A - 4, 6.
  23177. * X - 4, 6.
  23178. * B - 7.
  23179.  
  23180.  
  23181. XRJ BSS 0 ENTRY
  23182. AX4 30 SET ADDRESS OF RETURN JUMP
  23183. SB7 X4-1
  23184. SA4 B7 READ INSTRUCTION
  23185. MX6 -18
  23186. LX4 30 CLEAR ADDRESS FIELD
  23187. BX6 X6*X4
  23188. BX6 X6+X5 INSERT NEW ADDRESS
  23189. LX6 30 REWRITE INSTRUCTION
  23190. SA6 A4
  23191. JP B7 RE-EXECUTE MODIFIED INSTRUCTION
  23192. ZFN SPACE 4,15
  23193. ** ZFN - ZERO OR BLANK FILL NAME.
  23194. *
  23195. * *ZFN* ZERO FILLS A 42 BIT BLANK PADDED NAME OR BLANK
  23196. * FILLS A ZERO PADDED NAME. THE BOTTOM 18 BITS REMAIN
  23197. * UNCHANGED.
  23198. *
  23199. * ENTRY (X1) = NAME TO BE PROCESSED.
  23200. * (B4) .NE. 0, IF TO PAD NAME WITH BLANKS.
  23201. * .EQ. 0, IF TO REMOVE BLANK PADDING.
  23202. *
  23203. * EXIT (X6) = PROCESSED NAME.
  23204. * (B4) = UNCHANGED.
  23205. *
  23206. * USES X - 1, 2, 3, 4, 5, 6.
  23207. * A - 2.
  23208.  
  23209.  
  23210. ZFN SUBR ENTRY/EXIT
  23211. SA2 =10H
  23212. LX1 42
  23213. MX5 12
  23214. BX3 X1
  23215. NZ B4,ZFN1 IF NAME TO BE BLANK FILLED
  23216. BX3 X1-X2
  23217. ZFN1 AX5 6
  23218. BX4 -X5*X3
  23219. NZ X4,ZFN1 IF MORE CHARACTERS IN NAME
  23220. BX3 X1-X3 RESTORE FILL MASK
  23221. BX2 X2-X3
  23222. BX1 X5*X1 REMOVE OLD PADDING
  23223. BX6 -X5*X2 ADD NEW PADDING
  23224. BX6 X1+X6
  23225. LX6 -42
  23226. EQ ZFNX EXIT
  23227. TITLE TRANSLATION SUBROUTINES.
  23228. BHD SPACE 4,35
  23229. ** BHD - BUILD HEADER FOR DOWNLINE MESSAGE.
  23230. *
  23231. * *BHD* BUILDS THE HEADER WORD FOR THE DOWNLINE BLOCK
  23232. * OF DATA. IF MORE DATA REMAINS TO BE TRANSLATED, *BHD*
  23233. * ASSEMBLES ALL INFORMATION NECESSARY TO CONTINUE THE
  23234. * TRANSLATION LATER.
  23235. *
  23236. * ENTRY (X6) = CURRENT *WRITE* WORD, WITH CHARACTERS
  23237. * RIGHT JUSTIFIED.
  23238. * (B6) = NUMBER OF WHOLE EIGHT-BIT CHARACTERS THAT
  23239. * WILL STILL FIT INTO (X6).
  23240. * (SNDH) = SPECIAL HEADER, IF NEEDED FOR CONTROL BYTE.
  23241. * (BHDB) = ADDRESS TO CONTINUE AT, IF REENTRY NECESSARY.
  23242. * (BHDD) = BYTE TO CONTINUE AT, IF REENTRY NECESSARY.
  23243. * (BHDC) .EQ. 0, IF CURRENT CHARACTER COUNT TO BE USED.
  23244. * .GT. 0, IF TO USE CHARACTER COUNT AT LAST EOL.
  23245. *
  23246. * EXIT (X6) .EQ. 0, IF NO REENTRY REQUIRED.
  23247. * .EQ. 42/0, 12/PP, 3/FB, 3/FW.
  23248. * IF REENTRY REQUIRED, WHERE
  23249. * PP = POT POINTER TO REMAINING DATA.
  23250. * FW = FIRST WORD OF DATA IN POT PP.
  23251. * FB = FIRST BYTE OF DATA IN WORD FW.
  23252. *
  23253. * USES X - 2, 3, 4, 5, 6, 7.
  23254. * A - 3, 4, 5, 6, 7.
  23255. * B - 6, 7.
  23256.  
  23257.  
  23258. BHD SUBR ENTRY/EXIT
  23259.  
  23260. * LEFT JUSTIFY AND STORE THE FINAL *WRITE* WORD.
  23261.  
  23262. SA3 BHDC
  23263. SX4 A6-SNDB+2
  23264. LX4 59-0
  23265. PL X4,BHD1 IF SECOND WORD OF PAIR
  23266. LX6 4 ADJUST FOR 7.5 CHARACTER
  23267. BHD1 SX2 B6
  23268. LX2 3
  23269. SB7 X2
  23270. LX6 X6,B7 LEFT JUSTIFY LAST WORD
  23271. SA6 A6+B1
  23272.  
  23273. * PREPARE CHARACTER COUNT FOR HEADER.
  23274.  
  23275. ZR X3,BHD2 IF CURRENT CHARACTER COUNT TO BE USED
  23276. SA3 CBPA USE COUNT AT LAST EOL
  23277. BX7 X3
  23278. EQ BHD3 ADD COUNT TO HEADER
  23279.  
  23280. BHD2 SA3 TDMC ADD COUNT IN CURRENT WORD TO TOTAL
  23281. SX2 B6-7
  23282. IX7 X3-X2
  23283. BHD3 SA5 SNDH
  23284. NZ X5,BHD4 IF CONTROL BYTE HEADER
  23285. SA5 HDRM USE DEFAULT HEADER FOR MESSAGE
  23286. BHD4 BX7 X7+X5 ADD CHARACTER COUNT TO HEADER
  23287. SA7 SNDH
  23288. SX6 B0
  23289. SA3 BHDB
  23290. ZR X3,BHDX IF REENTRY IS NOT REQUIRED
  23291.  
  23292. * SET UP REENTRY INFORMATION.
  23293.  
  23294. SA4 TDMA FIRST POT OF REMAINING DATA
  23295. LX4 3
  23296. TB6 X4,VBMP
  23297. LX4 3
  23298. SB7 X3
  23299. SA3 BHDA FIRST BYTE OF REMAINING DATA
  23300. LX3 3
  23301. BX4 X3+X4
  23302. SX6 B7-B6 FIRST WORD OF REMAINING DATA
  23303. BX6 X4+X6
  23304. EQ BHDX EXIT
  23305.  
  23306. BHDA CON 0 BYTE AT WHICH TO CONTINUE
  23307. BHDB CON 0 WORD AT WHICH TO CONTINUE
  23308. BHDC CON 0 CHARACTER COUNT TO USE
  23309. CBP SPACE 4,25
  23310. ** CBP - CONTROL BYTE PROCESSOR.
  23311. *
  23312. * ENTRY (X2) = CONTROL BYTE.
  23313. *
  23314. * EXIT (X4) .NE. 0, IF TO IGNORE ANY REMAINING DATA.
  23315. * (X7) .NE. 0 IF SPECIAL CHARACTER IN X2.
  23316. *
  23317. * USES X - 0, 1, 2, 3, 4, 5, 6, 7.
  23318. * A - 1, 2, 3, 4, 5, 6, 7.
  23319. * B - 3, 4, 5, 6, 7.
  23320. *
  23321. * CALLS ABT, CFE, ERQ, GNR, TNT, TTL.
  23322. *
  23323. * DEFINE (A0) = TERMINAL TABLE ADDRESS.
  23324. * (A1) = CURRENT *READ* WORD ADDRESS.
  23325. * (X1) = CURRENT *READ* WORD.
  23326. * (A6) = CURRENT *WRITE* WORD ADDRESS.
  23327. * (X6) = CURRENT *WRITE* WORD.
  23328. * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
  23329. * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
  23330. * (B4) = LWA OF CURRENT *READ* POT.
  23331.  
  23332.  
  23333. CBP SUBR ENTRY/EXIT
  23334. SB7 X2 GET JUMP INDEX
  23335. JP B7+CBP1 PROCESS CONTROL BYTE
  23336.  
  23337. CBP1 BSS 0
  23338. LOC 0
  23339. EQ CB0 *0000* END OF LINE
  23340. EQ CB1 *0001* END OF BLOCK
  23341. EQ CB1 *0002* END OF BLOCK
  23342. EQ CB3 *0003* AUTO INPUT
  23343. EQ CB4 *0004* FORCE LOGOUT
  23344. EQ CB5 *0005* START EXTENDED ASCII INPUT
  23345. EQ CB6 *0006* START NAM TRANSPARENT INPUT
  23346. EQ CB7 *0007* START NAM TRANSPARENT OUTPUT
  23347. EQ CB10 *0010* TRMDEF - NAM/CDNA
  23348. EQ CB11 *0011* START EXTENDED ASCII OUTPUT
  23349. EQ CBP2 *0012* UNUSED
  23350. EQ CB13 *0013* END OF STRING
  23351. EQ CB14 *0014* INTERNAL END OF BLOCK
  23352. EQ CB15 *0015* INTERNAL AUTO INPUT
  23353. EQ CB16 *0016* TRMDEF - NAM/CCP
  23354. LOC *O
  23355.  
  23356. CBP2 SX6 3RCBP INCORRECT CONTROL BYTE
  23357. RJ ABT
  23358. MX6 1 TRANSLATION ERRORS
  23359. EQ TDMX EXIT
  23360.  
  23361. * *0000* - END OF LINE.
  23362. * SAVE THE CHARACTER COUNT (INCLUDING THE UNIT SEPARATOR)
  23363. * AT THE TIME THE EOL IS FOUND. SAVE BOTH THE ADDRESS
  23364. * OF THE WORD IN WHICH THE UNIT SEPARATOR WILL BE STORED
  23365. * AND ITS CHARACTER POSITION. CLEAR EXTENDED ASCII MODE
  23366. * IF IT IS SET AND CLEAR PARTIAL LINE FLAG.
  23367.  
  23368. CB0 SX7 A6+B1 SAVE ADDRESS AND POSITION OF EOL
  23369. PX7 X7,B6
  23370. SA7 CBPB
  23371. SX7 A1 SAVE ADDRESS OF LAST *READ* WORD EOL
  23372. BX5 X1
  23373. SA7 CBPE
  23374. SA3 TDMC SAVE CURRENT CHARACTER COUNT
  23375. SX7 B6-8
  23376. IX7 X3-X7
  23377. SB3 B1+B1
  23378. SA7 CBPA
  23379. SX2 ASC.US RETURN A UNIT SEPARATOR
  23380. SX1 1R. PRESET FORMAT EFFECTOR FOR NEXT LINE
  23381. LX1 54
  23382. SX4 B0 SET TO CONTINUE WITH DATA
  23383. SA3 TDMG CHECK EFFECT MODE
  23384. PL X3,CB0.1 IF NOT USER EFFECT MODE
  23385. SB3 B1 RESET NUMBER OF CHARACTERS IN *READ* WORD
  23386. SX1 B0
  23387. NZ X5,CB0.1 IF NOT POSSIBLE DEGENERATE LINE
  23388. SA3 A1-B1 CHECK FOR *EOL* IN PREVIOUS WORD
  23389. MX5 -12
  23390. BX3 -X5*X3
  23391. NZ X3,CB0.1 IF CURRENT READ WORD IS *EOL*
  23392. SB3 10
  23393. SX2 ASC.SP RETURN A BLANK AS DEFAULT FORMAT EFFECTOR
  23394. SX1 1R
  23395. LX1 59-5
  23396. CB0.1 TA3 B2,VMST CLEAR EXTENDED ASCII AND PARTIAL LINE FLAG
  23397. MX7 58
  23398. LX7 23-0
  23399. BX7 X3*X7
  23400. SA7 A3
  23401. SX7 B0+ SET NO SPECIAL CHARACTER
  23402. EQ CBPX EXIT
  23403.  
  23404. * *0001*, *0002* - END OF BLOCK.
  23405. * ADD UNIT SEPARATOR TO THE *WRITE* WORD IN *X6*. CHANGE
  23406. * THE FORMAT EFFECTOR ON THE CURRENT LINE FROM A PERIOD
  23407. * TO A COMMA SO THAT THE TERMINAL CARRIAGE WILL NOT ADVANCE
  23408. * TO THE NEXT LINE.
  23409.  
  23410. CB1 SX7 B7+ SAVE CONTROL BYTE
  23411. SA7 CBPC
  23412. SX2 ASC.US
  23413. NZ B6,CB1.1 IF NOT THE 7.5 CHARACTER
  23414. LX6 4 ADD TOP HALF OF SEPARATOR TO *X6*
  23415. LX2 -4
  23416. SX7 X2
  23417. BX6 X6+X7
  23418. SA6 A6+B1 STORE FIRST WORD
  23419. MX7 -4
  23420. SX3 A6-SNDB-SNDL
  23421. PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
  23422. LX2 4
  23423. BX6 -X7*X2 PUT REMAINDER OF SEPARATOR IN *X6*
  23424. SB6 7
  23425. SA3 TDMC UPDATE CHARACTER COUNT
  23426. SX7 X3+8
  23427. SA7 A3+
  23428. EQ CB1.2 CHANGE FORMAT EFFECTOR
  23429.  
  23430. CB1.1 BX6 X2+X6 ADD UNIT SEPARATOR
  23431. SB6 B6-B1
  23432. NZ B6,CB1.2 IF WORD NOT FULL
  23433. SX7 A6-SNDB+2
  23434. LX7 59-0
  23435. NG X7,CB1.2 IF IN FIRST WORD
  23436. SA6 A6+B1 STORE SECOND WORD
  23437. SX6 B0
  23438. SB6 7
  23439. SA3 TDMC UPDATE CHARACTER COUNT
  23440. SX7 X3+B6
  23441. SA7 A3
  23442. SX3 A6-SNDB-SNDL
  23443. PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
  23444. CB1.2 RJ CFE CHANGE FORMAT EFFECTOR
  23445. SA3 CBPC
  23446. SX4 B1 SET END OF DATA FLAG
  23447. SX7 X3-2R"IB"
  23448. ZR X7,CBPX IF *0014* BYTE
  23449. EQ CB0.1 CLEAR EXTENDED ASCII MODE
  23450.  
  23451. * *0003* - AUTO INPUT.
  23452. * ANY LINES PRECEEDING THE AUTO INPUT DATA MUST BE
  23453. * TRANSMITTED BEFORE CONTINUING. THE CARRIAGE
  23454. * WILL BE HELD AFTER THE OUTPUT.
  23455.  
  23456. CB3 SA3 CBPA
  23457. NZ X3,CB3.0 IF PREVIOUS DATA NOT YET TRANSMITTED
  23458. SA5 HDRAI USE AUTO INPUT HEADER
  23459. BX7 X5
  23460. SA7 SNDH
  23461. SA5 A0+VSTT GET OUTPUT POT POINTER
  23462. MX2 -12
  23463. BX5 -X2*X5
  23464. LX5 3 CALCULATE POT ADDRESS
  23465. TA2 X5,VBMP
  23466. SX5 A1 SAVE ADDRESS OF *0003* BYTE
  23467. SB5 B3+ SAVE REMAINING CHARACTER COUNT
  23468. SX7 B3-12B
  23469. NZ X7,CB3.4 IF *0003* NOT IN LAST BYTE
  23470. SX5 A1-B1 RESET ADDRESS
  23471. SB5 B0 RESET CHARACTER COUNT
  23472. CB3.4 PX7 X5,B5
  23473. SA7 A2+B1 SAVE IN POT
  23474. MX7 1
  23475. BX7 X2+X7 SET UPPER BIT AS FLAG
  23476. SA7 A2+
  23477. EQ CB1 HOLD CARRIAGE AT THIS POINT
  23478.  
  23479. * BACK UP TO LAST EOL.
  23480.  
  23481. CB3.0 SA1 CBPE GET LAST *READ* WORD EOL ADDRESS
  23482. TX3 X1,-VBMP
  23483. SA1 X1+
  23484. BX7 X3
  23485. AX7 3
  23486. SA7 TDMA SAVE *READ* POT POINTER
  23487. LX7 3
  23488. BX3 X3-X7
  23489. SX3 X3-VCPC+1
  23490. NZ X3,CB3.1 IF NOT AT THE END OF THE *READ* POT
  23491. RJ GNR GET NEXT *READ* POT
  23492. CB3.1 SA1 A1+B1 GET NEXT *READ* WORD
  23493. CB3.2 SX7 A1
  23494. SA7 BHDB SET REENTRY POINT
  23495. CB3.3 SX7 B1 TRANSMIT ALL COMPLETE LINES
  23496. SA7 BHDC
  23497. SX4 B1 STOP TRANSLATION
  23498. SX7 B0
  23499. ZR B6,CBPX IF ALREADY RIGHT JUSTIFIED
  23500. LX6 -8
  23501. EQ CBPX EXIT
  23502.  
  23503. * *0004* - FORCE LOGOUT.
  23504. * ISSUE FORCED LOGOUT DRIVER REQUEST AND DROP REMAINING
  23505. * OUTPUT.
  23506.  
  23507. CB4 SX0 A6 SAVE (A6)
  23508. SX3 B6 SAVE (B6)
  23509. SA6 CBPD SAVE (X6)
  23510. LX3 18
  23511. BX0 X0+X3
  23512. SX7 2 SET FORCE LOGOUT VALUE
  23513. SB3 B0
  23514. SX6 /TLX/FLO FORCE LOGOUT
  23515. RJ ERQ ENTER REQUEST
  23516. SA3 X0
  23517. AX0 18
  23518. SB6 X0 RESTORE (B6)
  23519. BX6 X3
  23520. SA5 CBPD
  23521. SA6 A3 RESTORE (A6)
  23522. BX6 X5 RESTORE (X6)
  23523. EQ CB3.3 TRANSMIT ALL COMPLETE LINES
  23524.  
  23525. * *0005* - START ASCII INPUT.
  23526. * SET EXTENDED ASCII INPUT MODE AND DROP REMAINING OUTPUT.
  23527.  
  23528. CB5 SA3 A0+VDPT SET EXTENDED ASCII INPUT MODE
  23529. SX7 1S14
  23530. BX7 X3+X7
  23531. SA7 A3
  23532. EQ CB1 HOLD CARRIAGE AT THIS POINT
  23533.  
  23534. * *0006* - START NAM TRANSPARENT INPUT.
  23535. * ANY LINES PRECEEDING THE *0006* BYTE MUST BE TRANSMITTED
  23536. * BEFORE CONTINUING BECAUSE NAM TRANSPARENT OUTPUT REQUIRES
  23537. * A SPECIAL SUPERVISORY MESSAGE IN THE FOLLOWING FORMAT.
  23538. *
  23539. *T 8/ PFC,8/ SFC,8/ TLF,8/ TLV,8/ INF,8/ INV,8/ C1F,4/ 0
  23540. *T, 4/ C1V,8/ C2F,8/ C2V,8/ TOF,8/ TOV,8/ DAF,8/ DAV,8/ XF
  23541. *T, 8/ XV
  23542. *
  23543. * WHERE PFC = PRIMARY FUNCTION CODE (PFTC)
  23544. * SFC = SECONDARY FUNCTION CODE (SFDM)
  23545. * TLF = TRANSPARENT LINE FUNCTION
  23546. * TLV = 0 = SINGLE LINE TRANSPARENT MODE
  23547. * INF = INPUT FUNCTION
  23548. * INV = 1 = TRANSPARENT MODE
  23549. * C1F = CHARACTER COUNT FUNCTION (UPPER BYTE)
  23550. * C1V = CHARACTER COUNT VALUE (UPPER BYTE)
  23551. * C2F = CHARACTER COUNT FUNCTION (LOWER BYTE)
  23552. * C2V = CHARACTER COUNT VALUE (LOWER BYTE)
  23553. * TOF = TIMEOUT OPTION
  23554. * TOV = 0 IF TIMEOUT NOT SELECTED
  23555. * DAF = CHARACTER DELIMITER ACTIVE FUNCTION
  23556. * DAV = 0, DELIMITER INACTIVE IF NO DELIMITER SPECIFIED
  23557. * = 1, DELIMITER ACTIVE IF DELIMITER SPECIFIED
  23558. * XF = DELIMITER FUNCTION
  23559. * XV = DELIMITER VALUE
  23560.  
  23561.  
  23562. CB6 SA3 CBPA
  23563. NZ X3,CB3.2 IF PREVIOUS DATA NOT YET TRANSMITTED
  23564. SA2 DLTDF STORE MESSAGE HEADER
  23565. SA3 A2+1 STORE FIRST WORD OF TEXT
  23566. SA4 A3+B1
  23567. BX7 X2
  23568. BX6 X3
  23569. MX2 12 EXTRACT CHARACTER COUNT
  23570. SA7 SNDH
  23571. BX5 X1*X2
  23572. MX2 8
  23573. NZ X5,CB6.1 IF CHARACTER COUNT SUPPLIED
  23574. SX5 B1
  23575. LX5 48 SET DEFAULT COUNT OF ONE
  23576. CB6.1 LX2 -4 SPLIT CHARACTER COUNT
  23577. BX7 X2*X5 BOTTOM EIGHT BITS
  23578. BX5 X5-X7 TOP FOUR BITS
  23579. LX7 40-48
  23580. SA6 SNDB
  23581. BX6 X4+X5
  23582. BX6 X6+X7
  23583. SX5 B1
  23584. LX5 8-0
  23585. SX7 14
  23586. LX1 12 CHECK FOR DELIMITER CHARACTER
  23587. MX2 8 GET DELIMITER CHARACTER
  23588. NG X1,CB6.2 IF NO DELIMITER CHARACTER
  23589. LX1 4
  23590. BX6 X5+X6
  23591. SA6 A6+1
  23592. BX3 X1*X2
  23593. BX6 X3
  23594. SX7 16
  23595. CB6.2 SA6 A6+B1
  23596. SA7 CBPA UPDATE LAST EOL CHARACTER COUNT
  23597. LX5 15-8
  23598. SA3 A0+VDPT
  23599. BX7 X3+X5 SET TRANSPARENT INPUT MODE
  23600. SA7 A3 REWRITE VDPT
  23601. SX3 A1-B4
  23602. NZ X3,CB6.3 IF NOT AT THE END OF THE *READ* POT
  23603. RJ GNR GET NEXT *READ* POT
  23604. CB6.3 SA1 A1+B1 GET NEXT *READ* WORD
  23605. SX7 2R"IB"
  23606. LX7 48
  23607. BX3 X1-X7
  23608. ZR X3,CB3.3 IF END OF *READ* DATA
  23609. EQ CB3.2 SET REENTRY POINT
  23610.  
  23611. * *0007* - START NAM TRANSPARENT OUTPUT.
  23612. * ANY LINES PRECEEDING THE *0007* BYTE MUST BE TRANSMITTED
  23613. * BEFORE CONTINUING BECAUSE NAM TRANSPARENT OUTPUT REQUIRES
  23614. * A SPECIAL MESSAGE HEADER.
  23615.  
  23616. CB7 SA3 CBPA
  23617. NZ X3,CB3.2 IF PREVIOUS DATA NOT YET TRANSMITTED
  23618. RJ TNT TRANSLATE NAM TRANSPARENT CHARACTERS
  23619. SX4 B1
  23620. SX7 B0
  23621. EQ CBPX EXIT
  23622.  
  23623. * *0010* - DOWNLINE TRMDEF FOR NAM/CDNA TERMINAL.
  23624. * ANY LINES PRECEEDING THE TRMDEF LINE MUST BE
  23625. * TRANSMITTED BEFORE CONTINUING BECAUSE TRMDEF
  23626. * REQUIRES A SPECIAL MESSAGE HEADER.
  23627.  
  23628. CB10 SA3 CBPA
  23629. NZ X3,CB3.2 IF PREVIOUS DATA NOT YET TRANSMITTED
  23630. SX6 B1+
  23631. RJ TTL TRANSFER TRMDEF LINE - NAM/CDNA
  23632. SX4 B1
  23633. SX7 B0
  23634. EQ CBPX EXIT
  23635.  
  23636. * *0011* - START EXTENDED ASCII OUTPUT.
  23637.  
  23638. CB11 TA3 B2,VMST SET EXTENDED ASCII BIT
  23639. SX7 B1+
  23640. LX7 23-0
  23641. BX7 X7+X3
  23642. SA7 A3+
  23643. CB11.1 LX1 6 EXTRACT NEXT *READ* CHARACTER
  23644. MX5 -6
  23645. BX2 -X5*X1
  23646. SA2 X2+TVXD LOOK IT UP IN THE TRANSLATION TABLE
  23647. BX7 X2 SET UP SPECIAL CHARACTER MASK
  23648. AX2 18
  23649. SX2 X2 GET TRANSLATED VERSION
  23650. SX4 B0
  23651. EQ CBPX EXIT
  23652.  
  23653. * *0013* - END OF STRING.
  23654. * TERMINATE LINE WITHOUT CHANGING TERMINAL CARRIAGE.
  23655. * IF FOLLOWED BY ADDITIONAL DATA, THE *0013* BYTE
  23656. * TREATS THAT DATA AS A PART OF THE CURRENT LINE.
  23657. * IF FOLLOWED BY ANOTHER CONTROL BYTE, THE *0013*
  23658. * BYTE HOLDS THE TERMINAL CARRIAGE ON THE CURRENT
  23659. * LINE AND TREATS THE FOLLOWING CONTROL BYTE AS THE
  23660. * BEGINNING OF A NEW LINE.
  23661.  
  23662. CB13 SX3 A1-B4
  23663. SA4 TDMA SAVE CURRENT *READ* WORD POSITION
  23664. SB5 X4
  23665. SB7 B4
  23666. SX0 A1
  23667. NZ X3,CB13.1 IF NOT AT THE END OF THE *READ* POT
  23668. RJ GNR GET NEXT *READ* POT
  23669. CB13.1 SA1 A1+B1 GET NEXT *READ* WORD
  23670. SB3 10
  23671. MX7 12
  23672. BX2 X1*X7
  23673. LX2 12
  23674. SX7 X2-17B
  23675. NG X7,CB13.2 IF WITHIN CONTROL BYTE RANGE
  23676. TA3 B2,VMST CLEAR EXTENDED ASCII BIT
  23677. SX7 B1
  23678. LX7 23-0
  23679. BX7 -X7*X3
  23680. SA7 A3
  23681. EQ CB11.1 GET NEXT READ CHARACTER
  23682.  
  23683. CB13.2 SX7 B5+ BACKUP TO PREVIOUS *READ* WORD
  23684. SA7 TDMA
  23685. SA1 X0
  23686. SB4 B7
  23687. SA3 PZDA
  23688. SB7 X2
  23689. LX3 X3,B7
  23690. ZR B6,CB13.3 IF ACCUMULATOR IS RIGHT JUSTIFIED
  23691. LX6 -8
  23692. CB13.3 RJ CFE CHANGE FORMAT EFFECTOR
  23693. ZR B6,CB13.4 IF ACCUMULATOR WAS RIGHT JUSTIFIED
  23694. LX6 8
  23695. CB13.4 SX2 ASC.US
  23696. SX7 A1 SAVE ADDRESS OF LAST *READ* WORD EOL
  23697. SA7 CBPE
  23698. SX7 A6+B1
  23699. PX7 X7,B6
  23700. SA7 CBPB
  23701. SA3 TDMC SAVE CHARACTER COUNT
  23702. SX7 B6-8
  23703. IX7 X3-X7
  23704. SB3 B1+B1
  23705. SA7 CBPA
  23706. SX1 1R.
  23707. LX1 54
  23708. SX4 B0
  23709. SX7 B0
  23710. EQ CBPX EXIT
  23711.  
  23712. * *0014* - INTERNAL END OF BLOCK.
  23713. * ALL PRECEEDING DATA WILL BE TRANSMITTED AND THE
  23714. * CARRIAGE WILL BE HELD AT ITS CURRENT POSITION.
  23715.  
  23716. CB14 SX4 B6-6
  23717. SA5 TDMG CHECK EFFECT MODE
  23718. PL X5,CB14.0 IF NOT USER EFFECT MODE
  23719. SX4 B6-7
  23720. CB14.0 SA5 TDMC
  23721. IX7 X5-X4
  23722. TA4 B2,VMST
  23723. LX4 59-24
  23724. SA5 CBPA
  23725. NZ X5,CB14.1 IF EOL ENCOUNTERED IN THIS POT CHAIN
  23726. NG X4,CB14.2 IF NO EOL PRECEEDING *0014* BYTE
  23727. CB14.1 BX7 X5-X7
  23728. NZ X7,CB14.2 IF NO EOL PRECEEDING *0014* BYTE
  23729. MX7 1 CLEAR PARTIAL LINE FLAG
  23730. BX7 -X7*X4
  23731. LX7 24-59
  23732. SA7 A4
  23733. EQ CB3.3 ALLOW CARRIAGE TO ADVANCE
  23734.  
  23735. CB14.2 MX7 1 SET PARTIAL LINE FLAG
  23736. BX7 X4+X7
  23737. LX7 24-59
  23738. SA7 A4
  23739. EQ CB1 HOLD CARRIAGE
  23740.  
  23741. * *0015* - EXECUTIVE AUTO MODE.
  23742. * THE *AUTO* COMMAND CAUSES A LINE NUMBER TO BE SENT
  23743. * DOWNLINE. ANY OUTPUT LINES PRECEDING THE AUTO LINE
  23744. * NUMBER MUST BE TRANSMITTED BEFORE CONTINUING. THE
  23745. * CARRIAGE WILL BE HELD AFTER THE LINE NUMBER.
  23746. *
  23747. CB15 SA3 CBPA
  23748. NZ X3,CB3.0 IF PREVIOUS DATA NOT YET TRANSMITTED
  23749. SA5 HDRAI USE AUTO INPUT HEADER
  23750. BX7 X5
  23751. SA7 SNDH
  23752. EQ CB1 HOLD CARRIAGE AT THIS POINT
  23753.  
  23754. * *0016* - DOWNLINE TRMDEF FOR NAM/CCP TERMINAL.
  23755. * ANY LINES PRECEEDING THE TRMDEF LINE MUST BE
  23756. * TRANSMITTED BEFORE CONTINUING BECAUSE TRMDEFS
  23757. * REQUIRE A SPECIAL MESSAGE HEADER.
  23758.  
  23759. CB16 SA3 CBPA
  23760. NZ X3,CB3.2 IF PREVIOUS DATA NOT YET TRANSMITTED
  23761. SX6 B0+
  23762. RJ TTL TRANSFER TERMDEF LINE - NAM/CCP
  23763. SX4 B1
  23764. SX7 B0
  23765. EQ CBPX EXIT
  23766.  
  23767. CBPA CON 0 LAST EOL WORD COUNT
  23768. CBPB CON 0 ADDRESS OF LAST EOL
  23769. CBPC CON 0 CONTROL BYTE
  23770. CBPD CON 0 SAVE *X6*
  23771. CBPE CON 0 ADDRESS OF LAST *READ* WORD EOL
  23772. CFE SPACE 4,30
  23773. ** CFE - CHANGE FORMAT EFFECTOR.
  23774. *
  23775. * *CFE* CHANGES THE FORMAT EFFECTOR OF THE MOST RECENT
  23776. * LINE FROM A PERIOD TO A COMMA IN ORDER TO PREVENT THE
  23777. * TERMINAL CARRIAGE FROM ADVANCING AFTER THE LINE IS
  23778. * PRINTED.
  23779. *
  23780. * ENTRY (CBPB) = ADDRESS OF LAST EOL.
  23781. *
  23782. * EXIT FORMAT EFFECTOR OF CURRENT LINE CHANGED FROM
  23783. * A PERIOD TO COMMA UNLESS IN USER EFFECT MODE.
  23784. *
  23785. * USES X - 2, 3, 4, 5, 6, 7.
  23786. * A - 3, 7.
  23787. * B - 3, 4, 7.
  23788. *
  23789. * DEFINE (A0) = TERMINAL TABLE ADDRESS.
  23790. * (A1) = CURRENT *READ* WORD ADDRESS.
  23791. * (X1) = CURRENT *READ* WORD.
  23792. * (A6) = CURRENT *WRITE* WORD ADDRESS.
  23793. * (X6) = CURRENT *WRITE* WORD.
  23794. * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
  23795. * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
  23796. * (B4) = LWA OF CURRENT *READ* POT.
  23797.  
  23798.  
  23799. CFE SUBR ENTRY/EXIT
  23800. SA3 TDMG CHECK EFFECT MODE
  23801. NG X3,CFEX IF USER EFFECT MODE
  23802. SA3 CBPB
  23803. NZ X3,CFE1 IF MORE THAN ONE LINE ALREADY TRANSLATED
  23804.  
  23805. * THE FORMAT EFFECTOR TO BE CHANGED IS THE FIRST CHARACTER
  23806. * IN WORD TWO OF THE FIRST *WRITE* POT.
  23807.  
  23808. SX3 SNDB-1
  23809. SX7 B1+
  23810. EQ CFE3 CHANGE FORMAT EFFECTOR
  23811.  
  23812. * THE POSITION OF THE FORMAT EFFECTOR TO BE CHANGED
  23813. * MUST BE CALCULATED USING THE CONTENTS OF *B6* AT THE
  23814. * TIME THE LAST EOL WAS PROCESSED AND THE ADDRESS OF
  23815. * THE WORD INTO WHICH THE CORRESPONDING UNIT SEPARATOR
  23816. * WAS STORED.
  23817.  
  23818. CFE1 SX7 B1
  23819. UX3,B7 X3
  23820. ZR B7,CFE3 IF UNIT SEPARATOR IS THE 7.5 CHARACTER
  23821. NE B7,B1,CFE4 IF NOT AT THE BOTTOM OF A WORD
  23822. SX5 X3-SNDB+2
  23823. LX5 59-0
  23824. NG X5,CFE3 IF UNIT SEPARATOR IS AT END OF SECOND WORD
  23825. SB7 9 FORMAT EFFECTOR IS THE 7.5 CHARACTER
  23826. SX3 X3+1
  23827. EQ CFE4 COMPARE ADDRESSES
  23828.  
  23829. CFE3 SX3 X3+1
  23830. SB7 8
  23831.  
  23832. * COMPARE ADDRESS AGAINST CURRENT *WRITE* WORD ADDRESS.
  23833.  
  23834. CFE4 SX5 A6+B1
  23835. BX5 X3-X5
  23836. NZ X5,CFE5 IF FORMAT EFFECTOR IN PREVIOUS WORD
  23837.  
  23838. * THE FORMAT EFFECTOR TO BE CHANGED IS IN THE CURRENT
  23839. * *WRITE* WORD BEING BUILT IN *X6*. USING THE CURRENT
  23840. * VALUE OF *B6*, CALCULATE WHERE THE FORMAT EFFECTOR
  23841. * IS POSITIONED AND CHANGE IT FROM A PERIOD TO A COMMA.
  23842.  
  23843. SX5 B7-B6
  23844. LX5 3
  23845. SB7 X5-15
  23846. LX7 X7,B7
  23847. BX6 -X7*X6 CHANGE FORMAT EFFECTOR
  23848. EQ CFEX EXIT
  23849.  
  23850. * THE FORMAT EFFECTOR TO BE CHANGED IS IN A WORD THAT
  23851. * HAS PREVIOUSLY BEEN STORED. LOAD THE WORD, CALCULATE
  23852. * THE POSITION OF THE FORMAT EFFECTOR, AND CHANGE IT FROM
  23853. * A PERIOD TO A COMMA. THEN REWRITE THE WORD IN PLACE.
  23854.  
  23855. CFE5 SX5 B7-B1
  23856. LX5 3
  23857. SB7 X5-3
  23858. SX5 X3-SNDB+2
  23859. LX5 59-0
  23860. PL X5,CFE6 IF IN FIRST WORD OF PAIR
  23861. SB7 B7-4
  23862. CFE6 SA3 X3
  23863. LX7 X7,B7
  23864. BX7 -X7*X3 CHANGE FORMAT EFFECTOR
  23865. SA7 A3
  23866. EQ CFEX EXIT
  23867. COC SPACE 4,10
  23868. ** COC - CHECK OUTPUT CHAINS.
  23869. *
  23870. * ENTRY (A6, X6, B6) = *WRITE* WORD POSITION.
  23871. * (B7) = RETURN ADDRESS FOR XPT OUTPUT PROCESSING.
  23872. *
  23873. * EXIT (B4) = 0, DO NOT CONTINUE TRANSLATION.
  23874. * = LWA *READ* POT, IF TRANSLATION TO CONTINE.
  23875. * TRANSLATION REGISTERS SET UP OR PRESERVED -
  23876. * A6, X6, B6, B7, A1, X1, B3, B4.
  23877. * *TDMA* AND *TDMF* UPDATED.
  23878. *
  23879. * USES X - 1, 2, 3, 4, 6, 7.
  23880. * A - 1, 2, 3, 4, 6, 7.
  23881. * B - 3, 4, 6, 7.
  23882. *
  23883. * CALLS UOC.
  23884. *
  23885. * NOTES THE CONCATENATION FIELD IN THE SECOND WORD OF THE POT
  23886. * CHAIN HEADER IS SET BY *1MI* FOR WRITER OR WRITEF
  23887. * *CIO* FUNCTIONS (SEE *ANM*).
  23888. *
  23889.  
  23890.  
  23891. COC SUBR ENTRY/EXIT
  23892. SB4 B0 SET NOT TO CONTINUE TRANSLATION
  23893. MX7 -12
  23894. SA3 SNDH
  23895. NZ X3,COCX IF HEADER ALREADY SET
  23896. SA3 A0+VSTT GET POINTER TO NEXT OUTPUT CHAIN
  23897. BX3 -X7*X3 CURRENT CHAIN POINTER
  23898. LX3 3
  23899. TA3 X3,VBMP
  23900. BX7 -X7*X3 NEXT CHAIN POINTER
  23901. LX7 3
  23902. ZR X7,COCX IF NO NEXT CHAIN
  23903. SA4 A3+B1 GET SECOND WORD OF POT CHAIN HEADER
  23904. TA3 X7+1,VBMP CHECK IF HEADER PROVIDED
  23905. MX7 6
  23906. BX3 X7*X3
  23907. NZ X3,COCX IF HEADER PROVIDED
  23908. LX4 59-1
  23909. NG X4,COCX IF WRITER OR WRITEF THEN RETURN
  23910. SA3 A3-1
  23911. LX7 30
  23912. BX2 X7*X3 POT COUNT IN THIS MESSAGE
  23913. TA3 B2,VMST GET BLOCKSIZE
  23914. MX7 -5
  23915. AX3 18
  23916. BX3 -X7*X3 NUMBER OF POTS IN BSZ
  23917. AX2 24
  23918. SX2 X2+B1 INSURANCE
  23919. IX3 X3-X2 BSZ-NEXT IN POTS
  23920. SX2 60D
  23921. IX2 X3*X2 BSZ-NEXT IN CHARACTERS
  23922. SA3 TDMC
  23923. IX3 X2-X3
  23924. SX2 2R"IB" RESET CONTROL BYTE
  23925. NG X3,COCX IF NOT ENOUGH ROOM FOR NEXT CHAIN
  23926. SX7 A6 PRESERVE REGISTERS USED FOR CONTINUATION
  23927. SA7 COCA
  23928. SA6 A7+B1
  23929. SX7 B7
  23930. SX6 B6
  23931. LX6 30
  23932. BX7 X6+X7
  23933. SA7 A6+B1
  23934. RJ UOC UPDATE OUTPUT CHAINS
  23935.  
  23936. * SET UP REENTRY TO TRANSLATION LOOP.
  23937.  
  23938. SA1 COCA RESTORE CONTINUATION REGISTERS
  23939. SA2 X1
  23940. BX6 X2
  23941. SA6 A2 (A6) RESTORED
  23942. SA2 A1+B1
  23943. BX6 X2 (X6) RESTORED
  23944. SA2 A2+B1
  23945. SB7 X2 (B7) RESTORED
  23946. AX2 30
  23947. SB6 X2 (B6) RESTORED
  23948. SA1 A0+VSTT GET POSSIBLE NEW CHARACTER SET
  23949. MX7 -12
  23950. BX7 -X7*X1
  23951. SA7 TDMA UPDATE *READ* POT POINTER
  23952. LX7 3
  23953. TA1 X7+1,VBMP GET CHARACTER SET
  23954. SB4 A1+VCPC-2
  23955. BX7 X1
  23956. LX7 59-0
  23957. SA7 TDMF
  23958. TA2 B2,VMST CHECK SPECIAL CONTINUATION
  23959. MX3 57
  23960. LX3 25-0
  23961. BX7 X3*X2 CLEAR POSSIBLE CONTINUATION BITS
  23962. BX3 -X3*X2
  23963. SA7 A2 REWRITE VMST
  23964. ZR X3,COC3 IF NO SPECIAL CONTINUATION
  23965. LX3 59-26
  23966. LX2 X3,B1
  23967. NG X2,COCX IF TRANSPARENT MODE CONTINUATION
  23968. SB3 B1
  23969. SX2 ASC.CF SET 76 ESCAPE CODE
  23970. NG X3,COC1 IF 76 CONTINUATION
  23971. SX2 ASC.AT SET 74 ESCAPE CODE
  23972. COC1 MX7 1 SET UP SPECIAL CONTINUATION
  23973. LX7 59
  23974. EQ COCX RETURN
  23975.  
  23976. COC3 SA2 TDMD GET OLD RETURN ADDRESS
  23977. MX7 -18
  23978. SA3 TRAR
  23979. SB3 TRARL
  23980. COC4 BX4 -X7*X3
  23981. BX4 X4-X2
  23982. ZR X4,COC5 IF ADDRESS FOUND
  23983. SA3 A3+B1
  23984. SB3 B3-B1
  23985. NZ B3,COC4 IF SEARCH NOT COMPLETE
  23986. SB3 11 SET UP PSEUDO CONTINUATION
  23987. SX2 B0
  23988. EQ COCX RETURN
  23989.  
  23990. COC5 AX3 18
  23991. PL X3,COC6 IF (X6) OK
  23992. LX6 -8 REPOSITION *WRITE* WORD
  23993. COC6 MX5 -6 RESET STANDARD CHARACTER MASK
  23994. SB7 X2 RESET OLD RETURN ADDRESS
  23995. SB3 X3+ GET NEW RETURN ADDRESS
  23996. JP B3 RETURN THERE
  23997.  
  23998.  
  23999. COCA BSS 3 CONTINUATION REGISTERS (A6, X6, B6, B7)
  24000. TRAR SPACE 4,10
  24001. ** TRAR - TABLE OF RETURN ADDRESSES TO RESET.
  24002. *
  24003. *T 1/F,23/ 0,18/ NEW ADDRESS,18/ OLD ADDRESS
  24004. * F = SET IF (X6) NEEDS REPOSITIONING.
  24005.  
  24006.  
  24007. TRAR BSS 0
  24008. VFD 1/1,23/0,18/TDM4,18/TDM6
  24009. VFD 1/0,23/0,18/TDM9,18/TDM11
  24010. VFD 1/1,23/0,18/TDM12,18/TDM14
  24011. TRARL EQU *-TRAR
  24012. GNR SPACE 4,30
  24013. ** GNR - GET NEXT *READ* POT.
  24014. *
  24015. * *GNR* DETERMINES THE NEXT *READ* POT IN THE CHAIN AND SETS
  24016. * UP THE *READ* DEFINED REGISTERS. IF NO POT IS FOUND,
  24017. * *GNR* RETURNS A *0014* CONTROL BYTE TO FORCE END OF DATA.
  24018. *
  24019. * ENTRY (TDMA) = CURRENT *READ* POT POINTER.
  24020. *
  24021. * EXIT (A1) = FIRST WORD ADDRESS OF THE POT - 1.
  24022. * (B4) = LWA OF NEW *READ* POT.
  24023. *
  24024. * USES X - 1, 5, 6, 7.
  24025. * A - 1, 7.
  24026. * B - 3, 4.
  24027. *
  24028. * CALLS GPL.
  24029. *
  24030. * DEFINE (A0) = TERMINAL TABLE ADDRESS.
  24031. * (A1) = CURRENT *READ* WORD ADDRESS.
  24032. * (X1) = CURRENT *READ* WORD.
  24033. * (A6) = CURRENT *WRITE* WORD ADDRESS.
  24034. * (X6) = CURRENT *WRITE* WORD.
  24035. * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
  24036. * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
  24037. * (B4) = LWA OF CURRENT *READ* POT.
  24038. * (B7) = RETURN ADDRESS FOR SPECIAL CHARACTER HANDLING.
  24039.  
  24040.  
  24041. GNR SUBR ENTRY/EXIT
  24042. SA1 TDMA CURRENT *READ* POT POINTER
  24043. BX5 X6
  24044. SB3 X1
  24045. RJ GPL GET THE NEXT LINK
  24046. SX7 B3
  24047. SA7 TDMA UPDATE CURRENT *READ* POT POINTER
  24048. SA1 B4-B1
  24049. BX6 X5
  24050. SB4 A1+VCPC
  24051. NZ B3,GNRX IF ANOTHER LINK IS FOUND
  24052. SA1 GNRA-1 RETURN A *0014* BYTE
  24053. EQ GNRX EXIT
  24054.  
  24055. GNRA CON 2L"IB"
  24056. IVD SPACE 4,30
  24057. ** IVD - INITIALIZE VIRTUAL ASCII DISASSEMBLY.
  24058. *
  24059. * GETS POT CHAIN FOR TRANSLATION ROUTINES, AND INITIALIZES
  24060. * VDPT IF NECESSARY.
  24061. *
  24062. * ENTRY (X2) = NUMBER OF DISPLAY CHARACTERS PER WORD.
  24063. * (X7) = ASCII CHARACTER COUNT.
  24064. *
  24065. * EXIT (X6) = ZERO IF INSUFFICIENT POTS AVAILABLE.
  24066. * (X0) AND (X5) UNCHANGED.
  24067. * (VDPT) = INITIALIZED IF FIRST BLOCK OF LOGICAL LINE.
  24068. *
  24069. * CALLS GPC.
  24070.  
  24071.  
  24072. IVD SUBR ENTRY/EXIT
  24073. BX6 X5 SAVE *X5*
  24074. SA6 IVDA
  24075. MX3 -3
  24076. SA1 A0+VDPT
  24077. LX1 30
  24078. BX3 -X3*X1 GET WORD COUNT
  24079. SB6 X3 WORD OFFSET IN POT
  24080. LX1 24-30
  24081. MX6 -12
  24082. BX3 -X6*X1 CURRENT POT
  24083. NZ X3,IVD1 IF CURRENT POT EXISTS
  24084. LX1 -12
  24085. BX3 -X6*X1 FIRST POT
  24086. IVD1 SB3 X3+ POT TO LINK TO
  24087.  
  24088. * GET POT CHAIN.
  24089.  
  24090. IX3 X7+X2 CHARACTERS NEEDED
  24091. IX3 X3/X2 WORDS REQUIRED
  24092. SB6 B6+X3 PLUS OFFSET
  24093. SB6 B6+2 PLUS TWO
  24094. RJ GPC GET POT CHAIN
  24095. SA5 IVDA RESTORE *X5*
  24096. ZR X6,IVDX IF NOT ENOUGH POTS
  24097. SX6 B1 SET EXIT CONDITION
  24098. SA3 RCCW
  24099. PL X3,IVDX IF NOT FIRST TIME THROUGH
  24100. SA2 A0+VDPT
  24101. MX3 6
  24102. LX3 30
  24103. BX6 -X3*X2 CLEAR BIT COUNT
  24104. SX3 60D NEW BIT COUNT
  24105. LX3 24
  24106. BX6 X3+X6
  24107. MX3 30
  24108. BX7 X3*X2 CHECK POT POINTERS
  24109. NZ X7,IVD2 IF POT POINTERS ALREADY SET
  24110. SX3 B3
  24111. LX3 36
  24112. BX6 X3+X6 INSERT LAST POT
  24113. LX3 12
  24114. BX6 X3+X6 INSERT FIRST POT
  24115. IVD2 SA6 A2 REWRITE VDPT
  24116. EQ IVDX RETURN
  24117. IVDA CON 0 SAVE *X5*
  24118. PZD SPACE 4,40
  24119. ** PZD - PROCESS ZERO DISPLAY CHARACTER.
  24120. *
  24121. * *PZD* DETERMINES WHETHER OR NOT A ZERO DISPLAY
  24122. * CHARACTER IS PART OF A CONTROL BYTE OR AN EOL.
  24123. *
  24124. * ENTRY (X1) = CURRENT *READ* WORD, WITH ZERO CHARACTER IN
  24125. * THE BOTTOM SIX BITS.
  24126. * (B3) = NUMBER OF CHARACTERS LEFT TO PROCESS IN X1,
  24127. * INCLUDING THE ZERO CHARACTER.
  24128. *
  24129. * EXIT (X7) .GE. 0,
  24130. * (X2) = COLON, IN ASCII.
  24131. * (X1) = CURRENT *READ* WORD, WITH CHARACTER
  24132. * FOLLOWING THE COLON IN THE TOP SIX
  24133. * BITS.
  24134. * (B3) = NUMBER OF CHARACTERS LEFT TO PROCESS
  24135. * IN X1, INCLUDING THE COLON.
  24136. * (X7) .LT. 0,
  24137. * (X2) = CONTROL BYTE.
  24138. * (X1) = CURRENT *READ* WORD, WITH CHARACTER
  24139. * FOLLOWING THE CONTROL BYTE IN THE TOP
  24140. * SIX BITS.
  24141. * (B3) = NUMBER OF CHARACTERS LEFT TO PROCESS
  24142. * IN X1, NOT COUNTING THE CONTROL BYTE.
  24143. *
  24144. * USES X - 1, 2, 3, 4, 5, 7.
  24145. * A - 1, 3, 4, 5, 7.
  24146. * B - 3, 7.
  24147. *
  24148. * CALLS GNR, COC.
  24149. *
  24150. * DEFINE (A0) = TERMINAL TABLE ADDRESS.
  24151. * (A1) = CURRENT *READ* WORD ADDRESS.
  24152. * (X1) = CURRENT *READ* WORD.
  24153. * (A6) = CURRENT *WRITE* WORD ADDRESS.
  24154. * (X6) = CURRENT *WRITE* WORD.
  24155. * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
  24156. * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
  24157. * (B4) = LWA OF CURRENT *READ* POT.
  24158.  
  24159.  
  24160. PZD SUBR ENTRY/EXIT
  24161. SX7 B0+
  24162. SA7 PZDB
  24163.  
  24164. * CHECK FOR END OF LINE CONTROL BYTE FIRST.
  24165.  
  24166. SB3 B3-B1
  24167. NZ B3,PZD2 IF NOT THE LAST SIX BITS OF WORD
  24168. SX2 A1-B4
  24169. NZ X2,PZD1 IF NOT AT THE END OF THE *READ* POT
  24170. RJ GNR GET NEXT *READ* POT
  24171. PZD1 SA1 A1+1 GET NEXT *READ* WORD
  24172. SB3 10
  24173. PZD2 SX3 B3+ BUILD MASK TO CHECK FOR EOL
  24174. SX2 6
  24175. IX2 X2*X3
  24176. MX7 1
  24177. SB7 X2-1
  24178. AX7 X7,B7
  24179. BX2 X7*X1
  24180. ZR X2,PZDX IF END OF LINE
  24181.  
  24182. * IF THE ZERO CHARACTER IS IN THE LOWER HALF OF A BYTE
  24183. * AND IS IMMEDIATELY FOLLOWED BY ONE OF THE CONTROL
  24184. * BYTES *0001*, *0002*, *0003*, *0005* OR *0013*, IT WILL
  24185. * NOT BE PRINTED ON THE TERMINAL.
  24186.  
  24187. LX3 59-0
  24188. NG X3,PZD3 IF ZERO CHARACTER IN TOP HALF OF BYTE
  24189. MX7 12 CHECK IF FOLLOWED BY A CONTROL BYTE
  24190. BX2 X7*X1
  24191. LX2 12
  24192. SX7 X2-17B
  24193. PL X7,PZD16 IF NOT IN CONTROL BYTE RANGE
  24194. SX3 35010B
  24195. SB7 X2+45
  24196. LX3 X3,B7
  24197. PL X3,PZD16 IF NOT A VALID CONTROL BYTE
  24198.  
  24199. * STORE POSITION OF ZERO CHARACTER IN CASE CONTROL BYTE DOES
  24200. * NOT TURN OUT TO BE VALID.
  24201.  
  24202. SX7 A1
  24203. PX7 X7,B3
  24204. SA7 PZDB
  24205. SB3 B3-B1 ADVANCE POINTER TO THE CONTROL BYTE
  24206. LX1 6
  24207.  
  24208. * CHECK IF A CONTROL BYTE EXISTS WITH THIS VALUE.
  24209.  
  24210. PZD3 MX7 6 GET LOWER HALF OF THE CONTROL BYTE
  24211. BX2 X7*X1
  24212. SA3 PZDA
  24213. LX2 6
  24214. SX7 X2-17B
  24215. PL X7,PZD16 IF NOT IN CONTROL BYTE RANGE
  24216. SB7 X2+
  24217. LX3 X3,B7
  24218. PL X3,PZD16 IF NOT A VALID CONTROL BYTE
  24219.  
  24220. * CHECK IF THE POTENTIAL CONTROL BYTE MUST BE THE FIRST
  24221. * BYTE OF A WORD AND MUST BE PRECEEDED BY AN END OF LINE.
  24222.  
  24223. LX3 15
  24224. PL X3,PZD5 IF FIRST BYTE POSITION NOT REQUIRED
  24225. SX5 B3-9
  24226. NZ X5,PZD16 IF NOT THE FIRST BYTE
  24227. SX5 X2-2R"IB"
  24228. ZR X5,PZD5 IF *0014* BYTE, NO PRECEEDING EOL NEEDED
  24229. SX4 B6-6 CALCULATE CURRENT CHARACTER COUNT
  24230. SA5 TDMG CHECK EFFECT MODE
  24231. PL X5,PZD3.1 IF NOT USER EFFECT MODE
  24232. SX4 B6-7
  24233. PZD3.1 SA5 TDMC
  24234. IX7 X5-X4
  24235. TA4 B2,VMST
  24236. LX4 59-24
  24237. SA5 CBPA COMPARE WITH TOTAL AT LAST EOL
  24238. NZ X5,PZD4 IF EOL ENCOUNTERED IN THIS POT CHAIN
  24239. NG X4,PZD16 IF NO EOL PRECEEDING CONTROL BYTE
  24240. PZD4 IX7 X5-X7
  24241. NZ X7,PZD16 IF NO EOL PRECEEDING CONTROL BYTE
  24242.  
  24243. * CHECK IF THE POTENTIAL CONTROL BYTE MUST BE FOLLOWED
  24244. * BY AN END OF LINE.
  24245.  
  24246. PZD5 LX3 15
  24247. PL X3,PZD9 IF TRAILING EOL NOT NECESSARY
  24248. SX5 B3-B1
  24249. ZR X5,PZD6 IF LAST BYTE OF WORD, LOOK ONE WORD AHEAD
  24250. SX4 6 BUILD MASK TO CHECK FOR EOL
  24251. IX5 X5*X4
  24252. MX7 1
  24253. SB7 X5-1
  24254. AX7 B7,X7
  24255. LX7 -6
  24256. BX4 X7*X1
  24257. NZ X4,PZD16 IF NO EOL FOLLOWING, NOT A CONTROL BYTE
  24258. EQ PZD9 CONTROL BYTE IS VALID
  24259.  
  24260. * PROCESS THE CASE WHERE THE CONTROL BYTE IS THE LAST
  24261. * BYTE IN A WORD. CHECK NEXT WORD TO SEE IF IT IS AN
  24262. * EOL. STORE CURRENT POSITION IN CASE CONTROL BYTE
  24263. * IS NOT VALID.
  24264.  
  24265. PZD6 SA4 PZDB STORE CURRENT POSITION
  24266. SX7 A1
  24267. PX7 X7,B3
  24268. NZ X4,PZD7 IF PRECEEDING COLON POSITION SAVED
  24269. SA7 A4+
  24270. PZD7 SX4 A1-B4
  24271. NZ X4,PZD8 IF NOT AT THE END OF THE *READ* POT
  24272. RJ GNR GET NEXT *READ* POT
  24273. SA3 PZDA
  24274. SB7 X2+30
  24275. LX3 X3,B7
  24276. PZD8 SA1 A1+1 GET NEXT *READ* WORD
  24277. NZ X1,PZD16 IF CONTROL BYTE NOT FOLLOWED BY AN EOL
  24278. SB3 11
  24279. LX1 -6
  24280.  
  24281. * SOME OF THE CONTROL BYTES HAVE SPECIAL CRITERIA IN
  24282. * ADDITION TO THE ABOVE TESTS WHICH MUST BE MET FOR
  24283. * THE CONTROL BYTE TO BE CONSIDERED VALID. PERFORM ANY
  24284. * SPECIAL CHECKS FOR THE CURRENT CONTROL BYTE.
  24285.  
  24286. PZD9 LX3 15
  24287. PL X3,PZD15 IF NO SPECIAL CHECKING NECESSARY
  24288.  
  24289. * THE BOTTOM TWO BYTES IN THE DISPLAY CODE WORD IN WHICH
  24290. * A *0006* BYTE OCCURS MUST BE ZERO.
  24291.  
  24292. PZD12 SX5 X2-2R"BI"
  24293. NZ X5,PZD13 IF NOT A *0006* BYTE
  24294. SX7 7777B
  24295. LX7 6
  24296. BX7 X1*X7
  24297. NZ X7,PZD16 IF LAST TWO BYTES ARE NOT ZERO
  24298. EQ PZD15 CONTROL BYTE IS VALID
  24299.  
  24300. * BOTH A *0007* AND A *0016* BYTE MUST BE FOLLOWED BY AT
  24301. * LEAST ONE VALID TRANPARENT-TYPE CHARACTER, IE, THE TOP
  24302. * FOUR BITS OF THE BYTE SHOULD BE *1000*.
  24303.  
  24304. PZD13 SX5 X2-2R"BO"
  24305. ZR X5,PZD13.1 IF A *0007* BYTE
  24306. SX5 X2-10B
  24307. ZR X5,PZD13.1 IF A *0010* BYTE
  24308. SX5 X2-16B
  24309. NZ X5,PZD13.2 IF NOT A *0016* BYTE
  24310. PZD13.1 MX7 4
  24311. LX7 -6
  24312. BX7 X7*X1
  24313. LX7 10
  24314. SX7 X7-10B
  24315. NZ X7,PZD16 IF NOT FOLLOWED BY TRANSPARENT CHARACTER
  24316. EQ PZD15 CONTROL BYTE IS VALID
  24317.  
  24318. * A *0014* CONTROL BYTE WILL ONLY BE PROCESSED IF
  24319. * NO MORE OUTPUT DATA CAN BE PROCESSED - IT MUST BE
  24320. * CHAINED IN VSTT AND FIT IN THE SEND BUFFER FOR
  24321. * TRANSLATION TO BE CONTINUED IGNORING THE *0014*.
  24322.  
  24323. PZD13.2 SX5 X2-2R"IB"
  24324. NZ X5,PZD14 IF NOT *0014*
  24325. RJ COC CHECK OUTPUT CHAINS
  24326. ZR B4,PZD15 IF NO CONTINUATION
  24327. EQ PZDX RETURN
  24328.  
  24329. * A *0015* BYTE MAY ONLY BE USED BY IAF FOR INTERNAL
  24330. * AUTO INPUT MODE. IT MUST ALSO HAVE A PRECEEDING END OF LINE
  24331. * IN THE DISPLAY CODE WORD IN WHICH IT APPEARS.
  24332. PZD14 SA5 A0+VDCT CHECK FOR AUTO MODE BIT SET
  24333. LX5 59-49
  24334. PL X5,PZD16 IF NOT IAF INTERNAL AUTO MODE
  24335. SA5 TDMC COMPUTE CHARACTER COUNT AT START OF WORD
  24336. SX4 B6-7+9
  24337. IX7 X5-X4
  24338. TA4 B2,VMST
  24339. LX4 59-24
  24340. SA5 CBPA COMPARE WITH TOTAL AT LAST EOL
  24341. NZ X5,PZD14.1 IF EOL ENCOUNTERED IN THIS POT CHAIN
  24342. NG X4,PZD16 IF NO EOL PRECEEDING CURRENT WORD
  24343. PZD14.1 IX7 X5-X7
  24344. NG X7,PZD16 IF NO EOL PRECEEDING CURRENT WORD
  24345.  
  24346. * A CONTROL BYTE HAS BEEN FOUND WHICH PASSES ALL CRITERIA.
  24347.  
  24348. PZD15 LX1 6
  24349. MX7 1
  24350. SB3 B3-1 GET TO NEXT CHARACTER
  24351. EQ PZDX EXIT
  24352.  
  24353. * THE ZERO CHARACTER WAS NOT PART OF A VALID CONTROL
  24354. * BYTE. SET UP EXIT CONDITIONS, RESTORING ALL *READ*
  24355. * DEFINED REGISTERS IF NECESSARY.
  24356.  
  24357. PZD16 SX2 ASC.CL
  24358. SX7 B0 NOT A CONTROL BYTE
  24359. SB3 B3+B1 BACK UP TO INCLUDE THE COLON
  24360. SA3 PZDB
  24361. ZR X3,PZDX IF COLON IN CURRENT WORD
  24362. UX3,B3 X3 BACK UP TO PREVIOUS WORD
  24363. SA1 X3
  24364. SX5 6
  24365. SX3 B3-10
  24366. IX3 X3*X5
  24367. SB7 X3
  24368. AX1 X1,B7 SHIFT *READ* WORD TO CORRECT POSITION
  24369. SB3 B3+B1
  24370. TX7 A1,-VBMP
  24371. AX7 3
  24372. SA7 TDMA
  24373. LX7 3
  24374. TB4 X7+VCPC-1,VBMP
  24375. SX7 B0 RESTORE EXIT CONDITION
  24376. EQ PZDX EXIT
  24377.  
  24378. PZDA VFD 15/37757B,15/02745B,15/37016B,15/00707B
  24379. PZDB CON 0
  24380. TDM SPACE 4,20
  24381. ** TDM - TRANSLATE DISPLAY CODED MESSAGE.
  24382. *
  24383. * TRANSLATES DISPLAY CODED DATA TO IVT ASCII, PACKING
  24384. * SEVEN AND ONE HALF CHARACTERS PER WORD.
  24385. * CODE IN THIS SUBROUTINE IS MONOLITHIC BECAUSE OF TIMING
  24386. * CONSIDERATIONS.
  24387. *
  24388. * ENTRY (B2) = TERMINAL NUMBER.
  24389. * (X6) = FIRST *READ* POT POINTER.
  24390. * (B6) = FWA IN FIRST DISPLAY CODE POT.
  24391. * (B7) = FIRST BYTE IN WORD.
  24392. *
  24393. * EXIT (X6) .EQ. 0, IF ALL DATA TRANSLATED.
  24394. * .LT. 0, IF TRANSLATION ERROR.
  24395. * .EQ. 42/0, 12/PP, 3/FB, 3/FW.
  24396. * IF REENTRY REQUIRED, WHERE
  24397. * PP = POT POINTER TO REMAINING DATA.
  24398. * FW = FIRST WORD OF DATA IN POT PP.
  24399. * FB = FIRST BYTE OF DATA IN WORD FW.
  24400. *
  24401. * USES X - 1, 2, 3, 4, 5, 6, 7.
  24402. * A - 1, 2, 3, 4, 5, 6, 7.
  24403. * B - 3, 4, 5, 6, 7.
  24404. *
  24405. * CALLS BHD, CPB, GNR, PZD, TNT.
  24406. *
  24407. * DEFINE (A0) = TERMINAL TABLE ADDRESS.
  24408. * (X5) = CHARACTER MASK.
  24409. * (A1) = CURRENT *READ* WORD ADDRESS.
  24410. * (X1) = CURRENT *READ* WORD.
  24411. * (A6) = CURRENT *WRITE* WORD ADDRESS.
  24412. * (X6) = CURRENT *WRITE* WORD.
  24413. * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
  24414. * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
  24415. * (B4) = LWA OF CURRENT *READ* POT.
  24416. * (B7) = RETURN ADDRESS FOR SPECIAL CHARACTER HANDLING.
  24417.  
  24418.  
  24419. TDM SUBR ENTRY/EXIT
  24420.  
  24421. * INITIALIZE DEFINED REGISTERS AND CELLS.
  24422.  
  24423. SA6 TDMA SAVE INITIAL *READ* POT POINTER
  24424. SA3 A0+VSTT
  24425. MX7 -12
  24426. LX6 3
  24427. TX1 X6,VBMP
  24428. SB4 X1+VCPC-1 SET LWA OF CURRENT *READ* POT
  24429. SB6 B6-B1
  24430. SA1 X1+B6 (A1) IS *READ* POT ADDRESS - 1
  24431. BX3 -X7*X3 SAVE OUTPUT CHARACTER SET
  24432. LX3 3
  24433. TA3 X3+1,VBMP
  24434. BX6 X3
  24435. LX6 59-0
  24436. SA6 TDMF
  24437. LX6 0-59+59-2
  24438. SA6 A6+B1 SAVE CURRENT EFFECT MODE
  24439. ERRNZ TDMF-TDMG+1 CODE REQUIRES CONTIGUOUS WORDS
  24440. SX7 B0
  24441. SX6 B0
  24442. SA7 TDMC INITIALIZE TRANSLATED CHARACTER COUNT
  24443. SA6 CBPA INITIALIZE LAST EOL POSITION
  24444. SA7 A6+B1
  24445. SA7 BHDA INITIALIZE REENTRY INFORMATION
  24446. SA6 A7+B1
  24447. SA7 A6+B1
  24448. SA6 SNDH
  24449. SB6 6 INITIAL *WRITE* WORD CHARACTER COUNT
  24450. SX6 ASC.PD INITIAL LINE FORMAT AFFECTOR
  24451.  
  24452. * CHECK IF THIS IS A CONTINUATION OF DATA IN A PREVIOUS
  24453. * DOWNLINE BLOCK.
  24454.  
  24455. TA2 B2,VMST GET CONTINUATION FLAGS
  24456. MX7 -3
  24457. LX2 59-24
  24458. SA3 TDMG CHECK EFFECT MODE
  24459. SX4 B1
  24460. BX4 X2*X4
  24461. NZ X4,TDM1 IF NAM CONTINUATION
  24462. PL X2,TDM3 IF NOT PARTIAL LINE
  24463. PL X3,TDM1 IF NOT USER EFFECT MODE
  24464. SX6 ASC.CM HOLD CARRIAGE FORMAT AFFECTOR
  24465. TDM1 BX5 -X7*X2 74 - 76 NAM CONTINUATION
  24466. ZR X5,TDM3.1 IF NOT CONTINUATION
  24467. MX5 2
  24468. SA4 A0+VROT CHECK FOR RESOURCE LIMIT
  24469. LX4 59-19
  24470. BX5 X5*X4
  24471. ZR X5,TDM1.1 IF NO LIMIT HAS OCCURRED
  24472. MX7 -2 LEAVE NAM TRANSPARENT CONTINUATION SET
  24473. LX7 1
  24474. TDM1.1 BX7 X7*X2 CLEAR CONTINUATION FLAGS
  24475. MX5 -6
  24476. LX7 25
  24477. SA1 A1+B1
  24478. SA7 A2
  24479. SB3 10
  24480. LX2 59-27+25-0
  24481. LX6 8
  24482. SB7 TDM6
  24483. SX4 200B
  24484. NG X2,TDM21 IF 74 ESCAPE CODE CONTINUATION
  24485. LX2 59-26-59+27
  24486. AX4 1
  24487. NG X2,TDM21 IF 76 ESCAPE CODE CONTINUATION
  24488. LX6 -8
  24489.  
  24490. * PROCESS NAM TRANSPARENT DATA CONTINUATION.
  24491.  
  24492. ZR X1,TDM2 IF DATA STARTS WITH AN EOL
  24493. MX7 12
  24494. BX7 X1*X7
  24495. LX7 4
  24496. SX2 X7-10B
  24497. ZR X2,TDM2 IF FIRST CHARACTER IS TRANSPARENT
  24498. LX7 8
  24499. SX7 X7-0007B
  24500. ZR X7,TDM2 IF *0007* CONTROL BYTE
  24501. PL X3,TDM5 IF NOT USER EFFECT MODE
  24502. SB6 7
  24503. SX6 B0
  24504. EQ TDM5 ENTER TRANSLATION LOOP
  24505.  
  24506. TDM2 RJ TNT NAM TRANSPARENT CONTINUATION
  24507. RJ BHD
  24508. EQ TDMX EXIT
  24509.  
  24510. * CHECK IF DATA STARTS AT THE BEGINNING OF THE POT.
  24511.  
  24512. TDM3 PL X3,TDM3.1 IF NOT USER EFFECT MODE
  24513. SB6 7 WORD EMPTY
  24514. SX6 B0 CLEAR *WRITE* WORD
  24515. TDM3.1 SX3 B7+B7 CHARACTER POSITION TO START AT
  24516. SB7 TDM6
  24517. MX5 -6
  24518. ZR X3,TDM4 IF DATA STARTS ON A WORD BOUNDARY
  24519. SX2 -6
  24520. SA1 A1+B1 POSITION FIRST WORD TO BEGINNING OF DATA
  24521. IX7 X2*X3
  24522. SB3 X7+60
  24523. LX1 X1,B3
  24524. SB3 X3
  24525. EQ TDM5 ENTER TRANSLATION LOOP
  24526.  
  24527. * BUILD FIRST WORD OF PAIR.
  24528.  
  24529. TDM4 SA1 A1+1 GET NEXT *READ* WORD
  24530. SB3 10
  24531. TDM5 LX1 6 EXTRACT NEXT *READ* CHARACTER
  24532. BX2 -X5*X1
  24533. SA2 X2+TVXD LOOK IT UP IN THE TRANSLATION TABLE
  24534. LX6 8
  24535. BX7 X2
  24536. AX2 18 GET TRANSLATED VERSION
  24537. LX7 59-58
  24538. SX2 X2+
  24539. NG X7,TDM18 IF CHARACTER NEEDS SPECIAL PROCESSING
  24540. TDM6 SB6 B6-B1
  24541. BX6 X6+X2 ADD CHARACTER TO *WRITE* WORD
  24542. SB3 B3-1
  24543. ZR B6,TDM8 IF SEVENTH CHARACTER COMPLETED
  24544. TDM7 NZ B3,TDM5 IF MORE CHARACTERS IN *READ* WORD
  24545. SX3 A1-B4
  24546. NZ X3,TDM4 IF NOT AT THE END OF THE *READ* POT
  24547. RJ GNR GET NEXT *READ* POT
  24548. MX5 -6
  24549. EQ TDM4 GET FIRST WORD OF NEW POT
  24550.  
  24551. * BUILD 7.5 CHARACTER.
  24552.  
  24553. TDM8 NZ B3,TDM10 IF MORE CHARACTERS IN *READ* WORD
  24554. SX3 A1-B4
  24555. NZ X3,TDM9 IF NOT AT THE END OF THE *READ* POT
  24556. RJ GNR GET NEXT *READ* POT
  24557. TDM9 SA1 A1+B1 GET NEXT *READ* WORD
  24558. SB3 10
  24559. MX5 -6
  24560. TDM10 LX1 6 EXTRACT NEXT *READ* CHARACTER
  24561. BX2 -X5*X1
  24562. SA2 X2+TVXD LOOK IT UP IN THE TRANSLATION TABLE
  24563. SB7 TDM11
  24564. BX7 X2
  24565. AX2 18 GET TRANSLATED VERSION
  24566. LX7 59-58
  24567. SX2 X2
  24568. NG X7,TDM18 IF CHARACTER NEEDS SPECIAL PROCESSING
  24569. TDM11 LX6 4
  24570. LX2 56
  24571. SX7 X2
  24572. BX6 X6+X7 ADD TOP HALF OF CHARACTER TO *WRITE* WORD
  24573. SA6 A6+B1 STORE FIRST WORD OF *WRITE* PAIR
  24574. MX7 -4
  24575. SX3 A6-SNDB-SNDL
  24576. PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
  24577. LX2 -56
  24578. BX6 -X7*X2
  24579. SB6 7
  24580. SA3 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
  24581. SX7 X3+8
  24582. SB3 B3-B1
  24583. SA7 A3
  24584. SB7 TDM14
  24585. EQ TDM15 ENTER TRANSLATION LOOP
  24586.  
  24587. * BUILD SECOND WORD OF PAIR.
  24588.  
  24589. TDM12 SA1 A1+1 GET NEXT *READ* WORD
  24590. SB3 10
  24591. TDM13 LX1 6 EXTRACT NEXT *READ* CHARACTER
  24592. BX2 -X5*X1
  24593. SA2 X2+TVXD LOOK IT UP IN THE TRANSLATION TABLE
  24594. LX6 8
  24595. BX7 X2
  24596. AX2 18 GET TRANSLATED VERSION
  24597. LX7 59-58
  24598. SX2 X2+
  24599. NG X7,TDM18 IF CHARACTER NEEDS SPECIAL PROCESSING
  24600. TDM14 SB6 B6-B1
  24601. BX6 X6+X2 ADD CHARACTER TO *WRITE* WORD
  24602. SB3 B3-1
  24603. ZR B6,TDM16 IF SECOND WORD IS FULL
  24604. TDM15 NZ B3,TDM13 IF MORE CHARACTERS IN *READ* WORD
  24605. SX3 A1-B4
  24606. NZ X3,TDM12 IF NOT AT THE END OF THE *READ* POT
  24607. RJ GNR GET NEXT *READ* POT
  24608. MX5 -6
  24609. EQ TDM12 GET FIRST WORD OF NEW POT
  24610.  
  24611. * STORE SECOND WORD OF *WRITE* PAIR AND THEN LOOP
  24612. * BACK AND BEGIN BUILDING THE NEXT WORD PAIR.
  24613.  
  24614. TDM16 SA6 A6+B1 STORE SECOND WORD OF *WRITE* PAIR
  24615. SB6 7
  24616. SX6 B0 CLEAR CHARACTER ACCUMULATOR
  24617. SA2 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
  24618. SX7 X2+7
  24619. SA7 A2
  24620. SX3 A6-SNDB-SNDL
  24621. PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
  24622. SB7 TDM6
  24623. MX5 -6
  24624. EQ TDM7 START NEXT *WRITE* WORD PAIR
  24625.  
  24626. * PROCESS SPECIAL CHARACTERS, WHICH INCLUDE THE 74 AND 76
  24627. * ESCAPE CODES AND DISPLAY CHARACTER ZERO.
  24628.  
  24629. TDM18 SX3 X2-ASC.CL
  24630. ZR X3,TDM26 IF ZERO DISPLAY CHARACTER
  24631. TA4 B2,VMST
  24632. SA3 TDMF
  24633. LX4 59-23
  24634. BX3 X3+X4
  24635. PL X3,TDM29 IF NOT EXTENDED ASCII, PRINT ESCAPE CODE
  24636. SX7 X2-ASC.AT
  24637. SX4 200B
  24638. ZR X7,TDM19 IF 74 ESCAPE
  24639. SX4 100B MUST BE 76 ESCAPE
  24640.  
  24641. * TRANSLATE NEXT CHARACTER WITH ESCAPE CODE BIAS.
  24642.  
  24643. TDM19 SB3 B3-B1
  24644. NZ B3,TDM21 IF MORE CHARACTERS IN *READ* WORD
  24645. SX7 A1-B4
  24646. NZ X7,TDM20 IF NOT AT THE END OF THE *READ* POT
  24647. BX7 X4
  24648. SA7 TDME
  24649. RJ GNR GET NEXT *READ* POT
  24650. SA4 TDME
  24651. MX5 -6
  24652. TDM20 SA1 A1+1 GET NEXT *READ* WORD
  24653. SB3 10
  24654. TDM21 LX1 6 EXTRACT NEXT *READ* CHARACTER
  24655. BX2 -X5*X1
  24656. BX2 X2+X4 ADD BIAS
  24657. SX3 X2-TVXDL
  24658. PL X3,TDM22 IF VALUE TOO LARGE TO BE A CHARACTER
  24659. SA2 X2+TVXD LOOK IT UP IN THE TRANSLATION TABLE
  24660. BX7 X2
  24661. AX2 18
  24662. SX2 X2 GET TRANSLATED VERSION
  24663. ZR X4,TDM28 IF SECOND TIME THROUGH
  24664. NG X2,TDM22 IF NO SUCH CHARACTER EXISTS
  24665. LX7 59-58
  24666. PL X7,TDM29 IF NOT A 7412 CHARACTER
  24667.  
  24668. * 7412 PROCESSING. A 7412 CHARACTER IS TREATED AS A
  24669. * UNIT SEPARATOR.
  24670.  
  24671. SX3 45B PRESET NEXT LINE FORMAT EFFECTOR
  24672. BX1 X1-X3
  24673. LX1 -6
  24674. SB3 B3+B1
  24675. SX7 A6+B1
  24676. PX7 X7,B6
  24677. SA7 CBPB
  24678. JP B7 RETURN A UNIT SEPARATOR
  24679.  
  24680. * PROCESS INCORRECT TWELVE BIT CHARACTERS. IF THE LAST
  24681. * SIX BITS OF THE CHARACTER ARE NON-ZERO, IT IS THROWN
  24682. * AWAY. IF THE LAST SIX BITS ARE THE BEGINNING OF AN
  24683. * EOL, THEN THE ESCAPE CODE IS PRINTED. IF THE LAST SIX
  24684. * BITS ARE THE START OF A *0014* BYTE, THEN A TWELVE BIT
  24685. * CHARACTER HAS BEEN SPLIT ACROSS DOWNLINE BLOCKS, SO
  24686. * THE APPROPRIATE ESCAPE CODE CONTINUATION FLAG IS SET.
  24687.  
  24688. TDM22 BX5 -X5*X1
  24689. NZ X5,TDM24 IF NOT A ZERO CHARACTER
  24690. MX5 6
  24691. BX5 X1*X5
  24692. ZR X5,TDM25 IF A POSSIBLE EOL
  24693. SX5 B3
  24694. LX5 59-0
  24695. NG X5,TDM24 IF NOT A CONTROL BYTE
  24696. SX3 2R"IB" CHECK FOR A *0014* BYTE
  24697. LX3 54
  24698. BX3 X1-X3
  24699. NZ X3,TDM23 IF NOT 74 NOR 76 CONTINUATION
  24700. TA3 B2,VMST SET CONTINUATION FLAG IN VMST
  24701. LX4 20
  24702. BX7 X3+X4
  24703. SA7 A3+
  24704. TDM23 SB3 B3+1
  24705. LX1 -6
  24706. TDM24 SX4 B0
  24707. MX5 -6
  24708. EQ TDM19 TRANSLATE NEXT CHARACTER
  24709.  
  24710. TDM25 SX4 B7 BUILD AN EOL MASK
  24711. SX3 B3-B1
  24712. SX5 6
  24713. IX5 X3*X5
  24714. MX7 1
  24715. SB7 X5-1
  24716. AX7 X7,B7
  24717. SB7 X4+
  24718. BX7 X1*X7
  24719. ZR X7,TDM23 IF A VALID EOL
  24720. EQ TDM24 THROW INCORRECT CHARACTER AWAY
  24721.  
  24722. * PROCESS ZERO CHARACTER.
  24723.  
  24724. TDM26 SX7 B7 SAVE RETURN ADDRESS
  24725. SA7 TDMD
  24726. RJ PZD PROCESS ZERO DISPLAY CHARACTER
  24727. PL X7,TDM27 IF NOT A CONTROL BYTE
  24728. RJ CBP CONTROL BYTE PROCESSOR
  24729. ZR X4,TDM27 IF NOT END OF THE DATA
  24730. RJ BHD BUILD MESSAGE HEADER
  24731. EQ TDMX EXIT
  24732.  
  24733. TDM27 SA3 TDMD RESTORE RETURN ADDRESS
  24734. SB7 X3+
  24735. TDM28 MX5 -6 RESTORE CHARACTER MASK
  24736. LX7 59-58
  24737. NG X7,TDM18 IF SPECIAL CHARACTER
  24738. TDM29 JP B7 RETURN TO THE CALLING ROUTINE
  24739.  
  24740. TDM30 SX6 3RTDM OVERFLOW OF SEND BUFFER
  24741. RJ ABT
  24742. MX6 1
  24743. EQ TDMX EXIT
  24744.  
  24745. TDMA DATA 0 CURRENT *READ* POT POINTER
  24746. TDMB DATA 0 CURRENT *WRITE* POT POINTER
  24747. TDMC DATA 0 TRANSLATED CHARACTER COUNT
  24748. TDMD DATA 0 RETURN ADDRESS
  24749. TDME DATA 0 74, 76 ESCAPE
  24750. TDMF DATA 0 EXTENDED MODE FLAG
  24751. TDMG DATA 0 USER-SUPPLIED FORMAT EFFECTORS FLAG
  24752. TNT SPACE 4,25
  24753. ** TNT - TRANSLATE NAM TRANSPARENT LINES.
  24754. *
  24755. * *TNT* TRANSFERS TRANSPARENT CHARACTERS TO THE SEND BUFFER,
  24756. * STRIPPING OFF THE TOP FOUR BITS OF EACH CHARACTER.
  24757. * THE TRANSFER CONTINUES UNTIL END OF DATA, OR UNTIL
  24758. * NON-TRANSPARENT DATA IS FOUND IN WHICH CASE *TNT* SETS
  24759. * UP THE REENTRY WORD AND BYTE ADDRESSES TO ALLOW
  24760. * TRANSLATION TO CONTINUE ONCE THE TRANSPARENT DATA HAS
  24761. * BEEN TRANSMITTED.
  24762. *
  24763. * ENTRY (X1) = TRANSPARENT DATA, LEFT ADJUSTED.
  24764. *
  24765. * EXIT TRANSPARENT DATA TRANSFERRED TO SEND BUFFER.
  24766. *
  24767. * USES X - 1, 2, 3, 4, 5, 6, 7.
  24768. * A - 1, 2, 3, 5, 6, 7.
  24769. * B - 3, 6, 7.
  24770. *
  24771. * CALLS GNR, COC.
  24772. *
  24773. * DEFINE (A0) = TERMINAL TABLE ADDRESS.
  24774. * (A1) = CURRENT *READ* WORD ADDRESS.
  24775. * (X1) = CURRENT *READ* WORD.
  24776. * (A6) = CURRENT *WRITE* WORD ADDRESS.
  24777. * (X6) = CURRENT *WRITE* WORD.
  24778. * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
  24779. * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
  24780. * (B4) = LWA OF CURRENT *READ* POT.
  24781.  
  24782.  
  24783. TNT SUBR ENTRY/EXIT
  24784. SB7 TNT3
  24785. SB6 7
  24786. MX5 -8
  24787. SX6 B0 THROW AWAY THE FORMAT EFFECTOR
  24788. EQ TNT2 ENTER TRANSLATION LOOP
  24789.  
  24790. * BUILD FIRST WORD OF PAIR.
  24791.  
  24792. TNT1 SA1 A1+1 GET NEXT *READ* WORD
  24793. SB3 10
  24794. TNT2 MX3 4 CHECK FOR A VALID NEXT CHARACTER
  24795. BX3 X3*X1
  24796. LX3 4
  24797. SX3 X3-10B
  24798. NZ X3,TNT12 IF NOT A NAM TRANSPARENT CHARACTER
  24799. LX6 8
  24800. LX1 12
  24801. BX3 -X5*X1 STRIP OFF TOP FOUR BITS
  24802. BX6 X6+X3 ADD CHARACTER TO *WRITE* WORD
  24803. SB6 B6-B1
  24804. SB3 B3-2
  24805. ZR B6,TNT4 IF SEVENTH CHARACTER COMPLETED
  24806. TNT3 NZ B3,TNT2 IF MORE CHARACTERS IN *READ* WORD
  24807. SX3 A1-B4
  24808. NZ X3,TNT1 IF NOT AT THE END OF THE *READ* POT
  24809. RJ GNR GET NEXT *READ* POT
  24810. MX5 -8
  24811. EQ TNT1 GET FIRST WORD OF NEW POT
  24812.  
  24813. * BUILD 7.5 CHARACTER.
  24814.  
  24815. TNT4 NZ B3,TNT6 IF MORE CHARACTERS IN *READ* WORD
  24816. SX3 A1-B4
  24817. NZ X3,TNT5 IF NOT AT THE END OF THE *READ* POT
  24818. RJ GNR GET NEXT *READ* POT
  24819. TNT5 SA1 A1+B1 GET NEXT *READ* WORD
  24820. SB3 10
  24821. MX5 -8
  24822. TNT6 MX3 4 CHECK FOR A VALID NEXT CHARACTER
  24823. BX3 X3*X1
  24824. SB7 TNT4
  24825. LX3 4
  24826. SX3 X3-10B
  24827. NZ X3,TNT12 IF NOT A NAM TRANSPARENT CHARACTER
  24828. LX1 12
  24829. LX6 4
  24830. BX2 -X5*X1 STRIP OFF TOP FOUR BITS
  24831. LX2 56
  24832. SX7 X2
  24833. BX6 X6+X7 ADD TOP HALF OF CHARACTER TO *WRITE* WORD
  24834. SA6 A6+B1 STORE FIRST WORD OF *WRITE* PAIR
  24835. MX7 -4
  24836. SX3 A6-SNDB-SNDL
  24837. PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
  24838. LX2 -56
  24839. BX6 -X7*X2
  24840. SB6 7
  24841. SB3 B3-2
  24842. SA3 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
  24843. SX7 X3+8
  24844. SA7 A3
  24845. SB7 TNT9
  24846. EQ TNT9 BEGIN FILLING SECOND WORD OF PAIR
  24847.  
  24848. * BUILD SECOND WORD OF PAIR.
  24849.  
  24850. TNT7 SA1 A1+1 GET NEXT *READ* WORD
  24851. SB3 10
  24852. TNT8 MX3 4 CHECK FOR A VALID NEXT CHARACTER
  24853. BX3 X3*X1
  24854. LX3 4
  24855. SX3 X3-10B
  24856. NZ X3,TNT12 IF NOT A NAM TRANSPARENT CHARACTER
  24857. LX6 8
  24858. LX1 12
  24859. BX3 -X5*X1 STRIP OFF TOP FOUR BITS
  24860. BX6 X3+X6 ADD CHARACTER TO *WRITE* WORD
  24861. SB6 B6-B1
  24862. SB3 B3-2
  24863. ZR B6,TNT10 IF SECOND WORD IS FULL
  24864. TNT9 NZ B3,TNT8 IF MORE CHARACTERS IN *READ* WORD
  24865. SX3 A1-B4
  24866. NZ X3,TNT7 IF NOT AT THE END OF THE *READ* POT
  24867. RJ GNR GET NEXT *READ* POT
  24868. MX5 -8
  24869. EQ TNT7 GET FIRST WORD OF NEW POT
  24870.  
  24871. * STORE SECOND WORD OF *WRITE* PAIR AND THEN LOOP
  24872. * BACK AND BEGIN BUILDING THE NEXT WORD PAIR.
  24873.  
  24874. TNT10 SA6 A6+B1 STORE SECOND WORD OF *WRITE* PAIR
  24875. SB6 7
  24876. SX6 B0 CLEAR CHARACTER ACCUMULATOR
  24877. SA2 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
  24878. SX7 X2+7
  24879. SA7 A2
  24880. SX3 A6-SNDB-SNDL
  24881. PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
  24882. SB7 TNT3
  24883. MX5 -8
  24884. EQ TNT3 START NEXT *WRITE* WORD PAIR
  24885.  
  24886. * SPECIAL CHARACTER HANDLING.
  24887. * CHECK FOR A VALID END OF LINE OR A *0007* BYTE.
  24888. * IF EITHER ONE, THEN CONTINUE TRANSLATING TRANSPARENT
  24889. * DATA.
  24890.  
  24891. TNT12 SX3 B3 BUILD AN EOL MASK
  24892. SX2 6
  24893. IX2 X2*X3
  24894. MX7 1
  24895. SX4 B7
  24896. SB7 X2-1
  24897. AX7 X7,B7
  24898. SB7 X4+
  24899. BX2 X7*X1
  24900. NZ X2,TNT13 IF NOT EOL
  24901. SB3 B0+
  24902. JP B7 CONTINUE TRANSLATION
  24903.  
  24904. TNT13 AX2 48
  24905. SX2 X2-0007B
  24906. NZ X2,TNT14 IF NOT *0007* BYTE
  24907. SB3 B3-2
  24908. LX1 12
  24909. JP B7 CONTINUE TRANSLATION
  24910.  
  24911. * END OF NAM TRANSPARENT LINE. A SPECIAL MESSAGE HEADER
  24912. * IS REQUIRED MAKING IT NECESSARY TO TRANSMIT THE
  24913. * TRANSPARENT DATA SEPARATELY FROM ANY DATA FOLLOWING IT.
  24914. * IF MORE DATA DOES EXIST, MARK TRANSLATION CONTINUATION
  24915. * POINT.
  24916.  
  24917. TNT14 SX7 0014B END OF DATA INDICATOR
  24918. LX7 48
  24919. BX3 X7-X1
  24920. NZ X3,TNT15 IF NOT *0014* BYTE
  24921. TA3 B2,VMST SET TRANSPARENT CONTINUATION
  24922. SX4 B1
  24923. LX4 25-0
  24924. BX7 X3+X4
  24925. SA7 A3
  24926. RJ COC CHECK OUTPUT CHAINS
  24927. ZR B4,TNT16 IF NO CONTINUATION
  24928. SA1 A1+B1 SET UP REGISTERS FOR REENTRY
  24929. SB3 10
  24930. MX5 -8
  24931. JP B7 CONTINUE TRANSLATION
  24932.  
  24933. TNT15 SX7 A1+
  24934. SA7 BHDB MARK TRANSLATION CONTINUATION POINT
  24935. SB7 10
  24936. EQ B7,B3,TNT16 IF DATA TO CONTINUE AT WORD BOUNDARY
  24937. SX7 B3 SAVE BYTE POSITION
  24938. AX7 1
  24939. SA7 BHDA
  24940. TNT16 SA5 HDRB USE TRANSPARENT HEADER
  24941. BX7 X5
  24942. SA7 SNDH
  24943. EQ TNTX EXIT
  24944. TTL SPACE 4,30
  24945. ** TTL - TRANSFER TRMDEF LINE.
  24946. *
  24947. * *TTL* TRANSFERS TRMDEF BYTES TO THE SEND BUFFER UNTIL AN EOL
  24948. * OR BYTE WITHOUT BIT 11 SET IS FOUND. SUPERVISORY MESSAGE
  24949. * PRIMARY AND SUBFUNCTIONS ARE ADDED TO THE BEGINNING OF THE
  24950. * DATA, AND IF ANY DATA FOLLOWS THE TRMDEF LINE, *TTL*
  24951. * SETS UP THE REENTRY ADDRESS TO ALLOW TRANSLATION TO
  24952. * CONTINUE ONCE THE TRMDEF MESSAGE IS TRANSMITTED.
  24953. *
  24954. * ENTRY (X1) = TRMDEF DATA, LEFT ADJUSTED.
  24955. * (X6) .EQ. 0 IF CONTROL BYTE 0016B TO BE SENT.
  24956. * .EQ. 1 IF CONTROL BYTE 0010B TO BE SENT.
  24957. *
  24958. * EXIT TRMDEF DATA TRANSFERRED TO SEND BUFFER.
  24959. *
  24960. * USES X - 1, 2, 3, 4, 5, 6, 7.
  24961. * A - 1, 2, 3, 6, 7.
  24962. * B - 3, 5, 6, 7.
  24963. *
  24964. * CALLS GNR.
  24965. *
  24966. * DEFINE (A0) = TERMINAL TABLE ADDRESS.
  24967. * (A1) = CURRENT *READ* WORD ADDRESS.
  24968. * (X1) = CURRENT *READ* WORD.
  24969. * (A6) = CURRENT *WRITE* WORD ADDRESS.
  24970. * (X6) = CURRENT *WRITE* WORD.
  24971. * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
  24972. * (B4) = LWA OF CURRENT *READ* POT.
  24973. * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
  24974.  
  24975.  
  24976. TTL SUBR ENTRY/EXIT
  24977. SB6 5
  24978. MX5 -8
  24979. SB5 X6 SAVE CONTROL BYTE FLAG
  24980. NZ X6,TTL0 IF CONTROL BYTE 0010B TO BE SENT
  24981. SX6 PFTC*400B+SFDM SET UP PRIMARY AND SUB-FUNCTIONS
  24982. EQ TTL2 ENTER TRANSFER LOOP
  24983.  
  24984. TTL0 SX6 PFTC*400B+SFCC SET UP PRIMARY AND SUB-FUNCTIONS
  24985. EQ TTL2 ENTER TRANSFER LOOP
  24986.  
  24987. * BUILD FIRST WORD OF PAIR.
  24988.  
  24989. TTL1 SA1 A1+1 GET NEXT *READ* WORD
  24990. SB3 10
  24991. TTL2 PL X1,TTL15 IF END OF TRMDEF DATA REACHED
  24992. LX1 12 EXTRACT NEXT *READ* CHARACTER
  24993. BX2 -X5*X1
  24994. LX6 8
  24995. BX6 X6+X2 ADD CHARACTER TO *WRITE* WORD
  24996. SB6 B6-1
  24997. SB3 B3-2
  24998. ZR B6,TTL5 IF SEVENTH CHARACTER COMPLETED
  24999. TTL4 NZ B3,TTL2 IF MORE CHARACTERS IN *READ* WORD
  25000. SX3 A1-B4
  25001. NZ X3,TTL1 IF NOT AT THE END OF THE *READ* POT
  25002. RJ GNR GET NEXT *READ* POT
  25003. MX5 -8
  25004. EQ TTL1 GET FIRST WORD OF NEW POT
  25005.  
  25006. * BUILD 7.5 CHARACTER.
  25007.  
  25008. TTL5 NZ B3,TTL7 IF MORE CHARACTERS IN *READ* WORD
  25009. SX3 A1-B4
  25010. NZ X3,TTL6 IF NOT AT THE END OF THE *READ* POT
  25011. RJ GNR GET NEXT *READ* POT
  25012. TTL6 SA1 A1+B1 GET NEXT *READ* WORD
  25013. SB3 10
  25014. MX5 -8
  25015. TTL7 PL X1,TTL15 IF END OF TRMDEF DATA REACHED
  25016. LX1 12 EXTRACT NEXT *READ* CHARACTER
  25017. BX2 -X5*X1
  25018. LX6 4
  25019. LX2 56
  25020. SX7 X2
  25021. BX6 X6+X7 ADD TOP HALF OF CHARACTER TO *WRITE* WORD
  25022. SA6 A6+B1 STORE FIRST WORD OF *WRITE* PAIR
  25023. MX7 -4
  25024. SX3 A6-SNDB-SNDL
  25025. PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
  25026. LX2 -56
  25027. BX6 -X7*X2
  25028. SB6 7
  25029. SB3 B3-2
  25030. SA3 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
  25031. SX7 X3+8
  25032. SA7 A3+
  25033. EQ TTL12 BEGIN FILLING SECOND WORD OF PAIR
  25034.  
  25035. * BUILD SECOND WORD OF PAIR.
  25036.  
  25037. TTL9 SA1 A1+1 GET NEXT *READ* WORD
  25038. SB3 10
  25039. TTL10 PL X1,TTL15 IF END OF TRMDEF DATA REACHED
  25040. LX1 12 EXTRACT NEXT *READ* CHARACTER
  25041. BX2 -X5*X1
  25042. LX6 8
  25043. BX6 X2+X6 ADD CHARACTER TO *WRITE* WORD
  25044. SB6 B6-1
  25045. SB3 B3-2
  25046. ZR B6,TTL13 IF SECOND WORD IS FULL
  25047. TTL12 NZ B3,TTL10 IF MORE CHARACTERS IN *READ* WORD
  25048. SX3 A1-B4
  25049. NZ X3,TTL9 IF NOT AT THE END OF THE *READ* POT
  25050. RJ GNR GET NEXT *READ* POT
  25051. MX5 -8
  25052. EQ TTL9 GET FIRST WORD OF NEW POT
  25053.  
  25054. * STORE SECOND WORD OF *WRITE* PAIR AND THEN LOOP BACK
  25055. * AND BEGIN BUILDING THE NEXT WORD PAIR.
  25056.  
  25057. TTL13 SA6 A6+B1 STORE SECOND WORD OF *WRITE* PAIR
  25058. SB6 7
  25059. SX6 B0 CLEAR CHARACTER ACCUMULATOR
  25060. SA2 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
  25061. SX7 X2+7
  25062. SA7 A2
  25063. MX5 -8
  25064. SX3 A6-SNDB-SNDL
  25065. PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
  25066. EQ TTL4 START NEXT *WRITE* WORD PAIR
  25067.  
  25068. * END OF TRMDEF DATA REACHED. TRMDEFS ARE SENT DOWNLINE
  25069. * AS SUPERVISORY MESSAGES, MAKING IT NECESSARY TO TRANSMIT
  25070. * THE TRMDEF DATA SEPARATELY FROM ANY DATA FOLLOWING IT.
  25071. * IF MORE DATA DOES EXIST, MARK TRANSLATION CONTINUATION
  25072. * WORD AND BYTE.
  25073.  
  25074. TTL15 SA5 DLTDC
  25075. NZ B5,TTL15.1 IF CONTROL BYTE 0010B TO BE SENT
  25076. SA5 DLTDF
  25077.  
  25078. TTL15.1 SX3 6
  25079. BX7 X5
  25080. SA7 SNDH
  25081. SX7 B3 BUILD AN EOL MASK
  25082. IX3 X3*X7
  25083. MX7 1
  25084. SB7 X3-1
  25085. AX7 X7,B7
  25086. BX7 X1*X7
  25087. ZR X7,TTL16 IF END OF LINE
  25088. SX7 A1 SET CONTINUATION WORD
  25089. SA7 BHDB
  25090. SX7 B3 SET CONTINUATION BYTE
  25091. AX7 1
  25092. SA7 BHDA
  25093. EQ TTLX EXIT
  25094.  
  25095. TTL16 SX3 A1-B4
  25096. NZ X3,TTL17 IF NOT AT THE END OF THE *READ* POT
  25097. RJ GNR GET NEXT *READ* POT
  25098. TTL17 SA1 A1+B1 GET NEXT *READ* WORD
  25099. SX7 2R"IB"
  25100. LX7 48
  25101. BX3 X1-X7
  25102. ZR X3,TTLX IF END OF *READ* DATA
  25103. SX7 A1
  25104. SA7 BHDB MARK TRANSLATION CONTINUATION POINT
  25105. EQ TTLX EXIT
  25106. VBX SPACE 4,30
  25107. ** VBX - ASCII TO BINARY CODE CONVERSION.
  25108. *
  25109. * COPIES IVT ASCII CODE TO RECEIVING POTS IN 12 BIT FORMAT,
  25110. * SETTING UPPER BIT OF EACH 12 BIT BYTE AS NOS BINARY FLAG.
  25111. * THE FIRST BYTE IS PRESET TO *0007B* AND THE DATA COPY
  25112. * STARTS AT THE SECOND BYTE OF THE RECEIVING POT.
  25113. *
  25114. * (RCCW) = 1/F,23/,18/TEXT LENGTH,18/RCVB.
  25115. * F = FIRST BLOCK OF LOGICAL LINE IF SET.
  25116. * ENTRY (X0) = ASCII8 OR BINARY BIT.
  25117. *
  25118. * EXIT (X6) = NONZERO IF CONVERSION COMPLETE.
  25119. * = ZERO IF INSUFFICIENT POTS AVAILABLE.
  25120. * (RCCW) = 0.
  25121. *
  25122. * CALLS ADB.
  25123.  
  25124.  
  25125. VBX SUBR ENTRY/EXIT
  25126. SA3 TBUF-1
  25127. BX7 X3
  25128. SA7 A3
  25129. SX7 X0+
  25130. SA3 RCCW
  25131. ZR X7,VBX1 IF ASCII8
  25132. PL X3,VBX1 IF NOT FIRST BLOCK
  25133. SX7 0007B SET CONTROL BYTE
  25134. SX4 B1+
  25135. LX4 58-0
  25136. BX7 X7+X4 ASSEMBLE 12 BITS
  25137. SA7 A7+1
  25138. VBX1 SA2 X3 ADDRESS OF NEXT WORD TO BE CRACKED
  25139. AX3 18
  25140. SB7 X3+ CHARACTER COUNT
  25141. SX1 B7-TBUFL+2
  25142. NG X1,VBX2 IF CHARACTERS WILL FIT IN BUFFER
  25143. SB7 TBUFL-2
  25144. VBX2 BX6 X6-X6
  25145. SB5 X3 CHARACTER COUNT
  25146. SB5 B5-B7
  25147. LE B5,VBX3 IF LAST TIME THROUGH THIS BLOCK
  25148. SX6 B5+ DECREMENT CHARACTER COUNT
  25149. LX6 18
  25150. SX4 A2+TBUFL*2/15 UPDATE ADDRESS IN RCBF
  25151. BX6 X4+X6
  25152. VBX3 SA6 A3 REWRITE *RCCW*
  25153. MX6 1 (X6) = EVEN/ODD WORD FLAG
  25154. SX4 377B (X4) = 8 BIT BYTE MASK
  25155. LE B7,B0,VBX6 IF NULL LINE
  25156.  
  25157. * CRACK ASCII DATA INTO TRANSLATION BUFFER.
  25158.  
  25159. VBX4 BX6 -X6 TOGGLE EVEN/ODD WORD FLAG
  25160. LX1 X2 MOVE NEXT WORD TO DISASSEMBLY
  25161. SB6 7 (B6) = ASCII BYTE COUNT PER WORD
  25162. VBX5 LX1 8 SHIFT NEXT CHARACTER
  25163. SB7 B7-1 DECREMENT TOTAL CHARACTER COUNT
  25164. BX7 X4*X1 MASK CHARACTER
  25165. SB6 B6-B1 DECREMENT WORD BYTE COUNT
  25166. BX7 X7+X0 ADD BINARY OR ASCII8 BIT
  25167. SA7 A7+1 STORE CHARACTER
  25168. LE B7,B0,VBX6 IF ALL CHARACTERS MOVED
  25169. NZ B6,VBX5 IF NOT END OF WORD
  25170. SA2 A2+B1 READ UP NEXT WORD
  25171. NG X6,VBX4 IF PROCESSING ODD WORD
  25172.  
  25173. * PROCESS HALF-BYTES AT EVEN/ODD WORD BOUNDARY.
  25174.  
  25175. LX1 4 SHIFT UPPER HALF-BYTE
  25176. MX7 -4
  25177. LX2 4 SHIFT LOWER HALF-BYTE
  25178. BX1 -X7*X1 MASK HALF-BYTE
  25179. BX7 -X7*X2
  25180. LX1 4 MERGE HALF-BYTES
  25181. BX7 X7+X1
  25182. BX7 X7+X0 ADD BINARY OR ASCII8 BIT
  25183. SA7 A7+B1 STORE ASSEMBLY
  25184. SB7 B7-1 DECREMENT CHARACTER COUNT
  25185. GT B7,B0,VBX4 IF NOT END OF DATA
  25186.  
  25187. * REASSEMBLE CRACKED DATA INTO POT CHAIN.
  25188.  
  25189. VBX6 MX7 1 TERMINATE BUFFER
  25190. SA7 A7+B1
  25191. RJ ADB ASSEMBLE BUFFER TO POTS
  25192. SA3 TBUF-1
  25193. BX7 X3
  25194. SA7 A3 RESET FWA STRING BUFFER
  25195. SA3 RCCW
  25196. NZ X3,VBX1 IF NOT FINISHED WITH THIS BLOCK
  25197. SX6 1
  25198. EQ VBXX RETURN
  25199. VGX SPACE 4,30
  25200. ** VDX - VIRTUAL ASCII TO DISPLAY CODE TRANSLATION.
  25201. *
  25202. * ENTRY (X5) = CHARACTER MASK -
  25203. * = LOWER 6 BITS PLUS BIT 59 IF 6-BIT
  25204. * DISPLAY CODE.
  25205. * = LOWER 12 BITS IF 6/12-BIT
  25206. * EXTENDED DISPLAY CODE.
  25207. * = LOWER 12 BITS IF 6/12-BIT TRANSPARENT
  25208. * DISPLAY CODE.
  25209. * (RCCW) = 1/F,23/,18/TEXT LENGTH,18/RCVB.
  25210. * F = FIRST BLOCK OF LOGICAL LINE IF SET.
  25211. *
  25212. * EXIT (X6) = NONZERO IF CONVERSION COMPLETE.
  25213. * = ZERO IF INSUFFICIENT POTS AVAILABLE.
  25214. * (RCCW) = 0.
  25215. *
  25216. * CALLS ADB.
  25217.  
  25218.  
  25219. VDX SUBR ENTRY/EXIT
  25220. VDX1 SA3 RCCW
  25221. SA2 X3 ADDRESS OF NEXT WORD TO BE PROCESSED
  25222. AX3 18
  25223. SB7 X3 SET CHARACTER COUNT
  25224. SB5 X3
  25225. SX1 B7-TBUFL+2
  25226. NG X1,VDX2 IF CHARACTERS WILL FIT IN BUFFER
  25227. SB7 TBUFL-2
  25228. VDX2 BX6 X6-X6
  25229. SB5 B5-B7
  25230. SB4 TBUF (B4) = STRING BUFFER ADDRESS
  25231. LE B5,B0,VDX3 IF LAST SEGMENT OF THIS BLOCK
  25232. SX6 B5+ UPDATE CHARACTER COUNT
  25233. LX6 18
  25234. SX4 A2+TBUFL*2/15 UPDATE ADDRESS IN RCBF
  25235. BX6 X4+X6
  25236. VDX3 SA6 A3+ REWRITE RCCW
  25237. SB5 7 (B5) = NUMBER OF ASCII BYTES PER WORD
  25238. ZR B7,VDX8 IF NULL LINE
  25239. SX4 177B SET 7-BIT ASCII MASK
  25240.  
  25241. * TRANSLATE ASCII WORD TO STRING BUFFER.
  25242.  
  25243. VDX4 MX7 1 TOGGLE MASK UPPER BIT
  25244. BX1 X2 MOVE NEXT WORD TO DISASSEMBLY
  25245. BX4 X4-X7
  25246. SB6 B5 (B6) = ASCII BYTE COUNT
  25247. VDX5 LX1 8 SHIFT NEXT ASCII BYTE
  25248. BX7 X4*X1 MASK ASCII BYTE
  25249. SA3 TVXD+X7 READ TRANSLATION
  25250. SB7 B7-1 DECREMENT COUNTERS
  25251. SB6 B6-B1
  25252. BX7 X5*X3 MASK TRANSLATION
  25253. NG X7,VDX6 IF IGNORE CHARACTER
  25254. SA7 B4+ STORE TRANSLATION
  25255. SB4 B4+B1
  25256. LX3 59-57 CHECK FOR SPECIAL CHARACTERS
  25257. NG X3,VDX9 IF SPECIAL CHARACTER
  25258. VDX6 LE B7,B0,VDX7 IF END OF DATA
  25259. GT B6,B0,VDX5 IF NOT END OF WORD
  25260. SA2 A2+1 READ NEXT WORD
  25261. PL X4,VDX4 IF NOT CROSSING FROM EVEN TO ODD WORD
  25262.  
  25263. * PROCESS HALF-BYTES AT EVEN/ODD WORD BOUNDARY.
  25264.  
  25265. LX1 4 SHIFT UPPER HALF-BYTE
  25266. SX7 17B
  25267. LX2 4 SHIFT LOWER HALF-BYTE
  25268. BX1 X7*X1 MASK HALF-BYTES
  25269. BX7 X7*X2
  25270. LX1 4
  25271. BX7 X7+X1 MERGE HALF BYTES
  25272. BX7 X4*X7 REMOVE ASCII PARITY BIT
  25273. SA3 TVXD+X7 READ TRANSLATION
  25274. SB7 B7-B1 DECREMENT CHARACTER COUNT
  25275. BX7 X5*X3 MASK TRANSLATION
  25276. NG X7,VDX7 IF IGNORE CHARACTER
  25277. SA7 B4 STORE TRANSLATION
  25278. SB4 B4+B1
  25279. LX3 59-57 CHECK FOR SPECIAL CHARACTERS
  25280. NG X3,VDX10 IF SPECIAL CHARACTER
  25281. VDX7 GT B7,B0,VDX4 IF NOT END OF DATA
  25282. SA3 B4-1 CHECK LAST CHARACTER OF BUFFER
  25283. SX7 1R
  25284. SA2 RCCW
  25285. NZ X3,VDX8 IF NOT COLON (*00*)
  25286. SA3 PINA GET BLOCK TYPE
  25287. NZ X2,VDX8 IF NOT END OF BLOCK
  25288. SX3 X3-BTBK
  25289. ZR X3,VDX8 IF BLK BLOCK TYPE
  25290. SA7 B4 ADD TRAILING BLANK
  25291. SB4 B4+B1 ADVANCE BUFFER POINTER
  25292. VDX8 MX7 1 TERMINATE BUFFER
  25293. SA7 B4
  25294.  
  25295. * REASSEMBLE TRANSLATED CODE INTO POT CHAIN.
  25296.  
  25297. RJ ADB ASSEMBLE DATA
  25298. SA3 RCCW
  25299. NZ X3,VDX1 IF NOT FINISHED WITH THIS BLOCK
  25300. SX6 B1+ SET RETURN STATUS
  25301. EQ VDXX RETURN
  25302.  
  25303. * PROCESS SPECIAL CHARACTERS IF IN NORMAL MODE.
  25304. *
  25305. * ENTRY (X7) = SPECIAL CHARACTER TRANSLATION.
  25306. * (A7) = CURRENT BUFFER ADDRESS.
  25307.  
  25308. VDX9 LX3 12-59+57 POSITION SPECIAL CHARACTER TRANSLATION
  25309. BX7 X5*X3
  25310. SX3 X5 SET LOWER 18 BITS OF MODE MASK
  25311. AX3 6 CHECK IF TRANSPARENT
  25312. NZ X3,VDX6 IF TRANSPARENT OR EXTENDED
  25313. SA7 A7+ REPLACE CHARACTER
  25314. EQ VDX6 CONTINUE
  25315.  
  25316. VDX10 LX3 12-59+57 POSITION LOWER 18 BITS OF MODE MASK
  25317. BX7 X5*X3
  25318. SX3 X5 SET LOWER 18 BITS OF MODE MASK
  25319. AX3 6 CHECK IF TRANSPARENT OR EXTENDED
  25320. NZ X3,VDX7 IF TRANSPARENT OR EXTENDED
  25321. SA7 A7+ REPLACE CHARACTER
  25322. EQ VDX7 CONTINUE
  25323. TITLE CPU COMMON DECKS.
  25324. SPACE 4,10
  25325. ** CPU COMMON DECKS.
  25326.  
  25327.  
  25328. *CALL COMCCIO
  25329. *CALL COMCWOD
  25330. LIST X
  25331. *CALL COMTVDT
  25332. LIST *
  25333. TITLE DATA TRANSFER BUFFERS.
  25334. USE BUFFERS
  25335. RCVB SPACE 4,10
  25336. ** RCVB - NETWORK DATA RECEIVE BUFFER.
  25337.  
  25338.  
  25339. RCVL EQU 1+2*VXPH/15D CALCULATE BUFFER LENGTH
  25340.  
  25341. RCVH CON 0 RECEIVE DATA BLOCK HEADER
  25342. RCVB BSSZ RCVL RECEIVE DATA BLOCK BUFFER
  25343. SNDB SPACE 4,10
  25344. ** SNDB - NETWORK DATA SEND BUFFER.
  25345.  
  25346.  
  25347. SNDH CON 0 SEND DATA BLOCK HEADER
  25348. SNDB BSSZ SNDL SEND DATA BLOCK BUFFER
  25349. ERRNZ SNDH-SNDB+1
  25350. VBUF SPACE 4,10
  25351. ** AIPB - APPLICATION INTERFACE PROCEDURES UPLINE DATA BUFFER.
  25352.  
  25353.  
  25354. AIPB VFD 12/0,12/1,12/1,12/0,12/AIPL
  25355. BSSZ AIPL
  25356. TINST SPACE 4,10
  25357. ** TINST - INSTRUCTION MODIFICATION TABLE.
  25358.  
  25359. TINST BSS 0
  25360. LIST -R
  25361. TINST HERE ASSEMBLE REMOTE CODE
  25362. LIST R
  25363. TINSTL EQU *-TINST
  25364. TTL IAFEX - TTY EXECUTIVE PROCESSOR.
  25365. END SPACE 4,10
  25366. END