cdc:nos2.source:opl871:iafex
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
- *IF DEF,IAF$
- IDENT IAFEX,/IAFINI/FWA
- *ELSE
- IDENT RDFEX,/IAFINI/FWA
- *ENDIF
- ABS
- SST JCTT
- *IF DEF,IAF$
- ENTRY IAFEX
- *ELSE
- ENTRY RDFEX
- *ENDIF
- ENTRY RFL=
- ENTRY SSJ=
- SYSCOM B1
- BASE DECIMAL
- IAFEX TITLE IAFEX - IAF EXECUTIVE INITIALIZATION.
- *COMMENT IAFEX - EXECUTIVE INITIALIZATION.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- IAFEX SPACE 4,10
- *** IAFEX - IAF EXECUTIVE INITIALIZATION.
- *
- * R.E. TATE 70/12/20.
- * M.H. DILATUSH. 73/01/20.
- * P.D. FARRELL. 77/03/17.
- SPACE 4,10
- *** THE IAFEX INITIALIZATION OVERLAY PERFORMS THE
- * FOLLOWING FUNCTIONS:
- *
- * (1) LOADS THE EXECUTIVE OVERLAY.
- * (2) LOADS THE NETWORK INTERFACE OVERLAY AND LOADS
- * AND LINKS THE NETWORK AIP IF NETWORK TERMINALS
- * ARE DEFINED IN THE NETWORK DESCRIPTION FILE.
- * (3) INITIALIZES TABLES AND POINTERS.
- * (4) STARTS THE EXECUTIVE PROCESSOR.
- SPACE 4,10
- *** THE COMMAND FORMAT.
- *
- * IAFEX,OP=XX.
- *
- * THE POSSIBLE MNEMONICS FOR *OP* ARE AS FOLLOWS.
- *
- * OP DESCRIPTION
- * -- -----------
- * T AIP TRACE PARAMETER.
- * THE *T* PARAMETER IS USED FOR SELECTION OF THE AIP
- * TRACE. THE VALUE OF THE MESSAGE COUNT
- * ASSIGNED TO THE *T* PARAMETER INDICATES IF THE
- * TRACE IS SELECTED OR NOT. IF THE TRACE IS
- * SELECTED, THEN THE MESSAGE COUNT INDICATES HOW
- * MANY MESSAGES WILL BE LOGGED BEFORE THE
- * TRACE FILE IS PROCESSED FOR OUTPUT.
- * T OMITTED TRACE IS NOT SELECTED
- * T USE DEFAULT MESSAGE COUNT OF 16200
- * T=0 TRACE IS NOT SELECTED
- * T=NNNNNNN USE NNNNNNN AS MESSAGE COUNT
- * VALID RANGE IS 5000 TO 9999999
- * T=* PROCESS TRACE FILE ONLY AT IAF TERMINATION
- IAFEX SPACE 4
- *** OPERATOR MESSAGES.
- *
- * NONE.
- SPACE 4,10
- *** ERROR MESSAGES.
- *
- * * IAFEX INITIALIZATION ABORT.*
- * AN ERROR CONDITION HAS BEEN ENCOUNTERED WHICH MAKES
- * INITIALIZATION IMPOSSIBLE. THE ERROR CONDITION IS
- * GIVEN BY ONE OF THE MESSAGES LISTED BELOW:
- *
- * * AIP LOAD ERROR.*
- * A LOADER ERROR WAS RETURNED WHILE ATTEMPTING
- * TO LOAD THE NETWORK AIP RELOCATABLE SUBROUTINES.
- *
- * * DRIVER STACK OVERFLOW.*
- * SEE * POT LINK TABLE OVERFLOW.*
- *
- * * ERROR IN IAFEX ARGUMENTS.*
- * AN ERROR WAS ENCOUNTERED WHEN PROCESSING THE *IAFEX*
- * COMMAND. CORRECT THE ERROR AND RETRY.
- *
- * * ERROR IN IAFEX PARAMETER - T.*
- * THE VALUE ASSIGNED TO THE *T* PARAMETER WAS NOT VALID.
- * CORRECT THE ERROR AND RETRY.
- *
- * * MESSAGE STATUS TABLE OVERFLOW.*
- * SEE * POT LINK TABLE OVERFLOW.*
- *
- * * MUX TABLE OVERFLOW.*
- * A TOTAL OF MORE THAN EIGHT MULTIPLEXORS AND
- * NETWORK INTERFACES WAS DEFINED.
- *
- * * NETWORK ACTIVITY TABLE OVERFLOW.*
- * SEE * POT LINK TABLE OVERFLOW.*
- *
- * * NO TERMINALS DEFINED.*
- * NO TERMINALS, EITHER MULTIPLEXOR OR NETWORK,
- * ARE PRESENT IN THE EST OR NETWORK FILE.
- *
- * * MISSING AIP ENTRY POINT.*
- * NO ENTRY POINT WAS RETURNED BY THE LOADER
- * FOR A REQUIRED AIP RELOCATABLE SUBROUTINE.
- *
- * * NO ACTIVE DRIVERS REMAINING. *
- * ALL AVAILABLE DRIVERS, NETWORK AND MULTIPLEXOR, HAVE
- * DROPPED. THIS CAN BE BECAUSE OF A HARDWARE FAILURE
- * OR BECAUSE A DRIVER NEVER BECOMES ACTIVE AFTER
- * INITIALIZATION AND THE OTHER DRIVERS DO NOT HAVE
- * TERMINALS DEFINED (NONEXISTENT OR OFF EST ENTRY).
- *
- * * POT LINK TABLE OVERFLOW.*
- * THE POT LINK TABLE OVERFLOWED AVAILABLE MEMORY.
- * THIS INDICATES THAT THE ORIGIN ADDRESS OF THE
- * INITIALIZER DOES NOT PROVIDE SUFFICIENT ROOM
- * FOR IAFEX TABLES AND THAT THE INITIALIZER MUST
- * BE ORIGINED HIGHER IN CORE. THIS WILL REQUIRE
- * A CORRESPONDING CHANGE TO *1TD* TO REQUEST
- * SUFFICIENT FIELD LENGTH FOR THE INITIALIZER.
- *
- * * REENTRY TABLE OVERFLOW.*
- * SEE * POT LINK TABLE OVERFLOW.*
- *
- * * TERMINAL TABLE OVERFLOW.*
- * SEE * POT LINK TABLE OVERFLOW.*
- *
- * * TOO MANY TERMINALS.*
- * THE TOTAL NUMBER OF TERMINALS DEFINED IN THE
- * EST AND ON THE NETWORK DESCRIPTION FILE EXCEEDS
- * THE MAXIMUM DEFINED BY THE ASSEMBLY VARIABLE *MAXTT*.
- *
- * * **** LOST OUTPUT MESSAGE.*
- * IAF RECEIVED MORE THAN 77B OUTPUT POTS FROM *1MI*,
- * SO THE LAST MESSAGE WAS THROWN AWAY. **** IS THE
- * JSN OF THE JOB THAT LOST THE OUTPUT MESSAGE.
- SPACE 4
- *** SENSE SWITCH OPTIONS.
- *
- * THE FOLLOWING OPTIONS ARE SELECTED IF THE CORRES-
- * PONDING SENSE SWITCH IS SET *ON*.
- *
- * SSW1 RETAIN USERS IN EJT (DETACHED) IF IAFEX IS DROP-
- * PED OR ABORTS. THIS WILL RETAIN USERS ACROSS
- * A RECOVERY DEADSTART.
- *
- * SSW2 DO NOT RELOAD AFTER AN ABORT. RELEASE OUTPUT FILE
- * TO OUTPUT QUEUE.
- *
- * SSW3 ABORT ON ABNORMAL CONDITIONS. THIS WILL
- * FORCE AN INTERNALLY GENERATED ABORT WHEN AN
- * INTERNAL ERROR SITUATION OCCURRS. A DAYFILE
- * MESSAGE WILL BE ISSUED GIVING THE NAME OF THE
- * SUBROUTINE BY WHICH THE ERROR WAS DETECTED.
- * THIS SWITCH IS SET AUTOMATICALLY DURING INI-
- * TIALIZATION AND SHOULD BE CLEARED IF ABORT
- * IS NOT DESIRED.
- *
- * SSW4 DUMP FIELD LENGTH TO THE OUTPUT FILE AFTER
- * OPERATOR DROP.
- *
- * SSW5 DUMP FIELD LENGTH TO THE OUTPUT FILE AFTER AN
- * INTERNAL ABORT ON ABNORMAL CONDITIONS. THE
- * OUTPUT FILE WILL NOT BE RELEASED TO THE OUT-
- * PUT QUEUE UNTIL AFTER IAFEX TERMINATION UN-
- * LESS SENSE SWITCH 6 IS SET.
- *
- * SSW6 RELEASE THE DUMP OUTPUT FILE TO THE OUT-
- * PUT QUEUE IMMEDIATELY AFTER A DROP OR AN ABORT.
- IAFEX SPACE 4
- ** PROGRAMS CALLED BY INITIALIZER:
- *
- * CIO - CIRCULAR INPUT/OUTPUT.
- * CPM - CONTROL POINT MANAGER.
- * LDR - LOAD OVERLAY.
- * 1MA - ISSUE DAYFILE MESSAGE.
- * 1TM AND 1TN - MUX TERMINAL DRIVERS.
- TITLE INTERNAL DOCUMENTATION.
- QUAL SPACE 4,10
- ** IAFEX INTERNAL DOCUMENTATION.
- *
- *
- QUAL SPACE 4,10
- ** DEFINE IAFEX QUALIFICATION SEQUENCE.
- QUAL
- QUAL IAFINI
- QUAL IAFEX2
- QUAL IAFEX3
- QUAL IAFEX4
- QUAL
- SPACE 4
- ** TABLES.
- *
- * IN GENERAL ALL TABLES IN *IAFEX* WILL BE DYNAMIC IN LENGTH
- * AT INITIALIZATION TIME. THE LENGTHS OF THE VARIOUS TABLES
- * WILL BE DETERMINED BY THE MAXIMUM NUMBER OF TERMINALS
- * TO BE SERVICED. THUS, IT WILL BE NECESARY FOR ALL ROUTINES
- * AT INITIALIZATION TIME TO DETERMINE THE VALUES OF TABLE
- * POINTERS ETC. ONCE *IAFEX* IS INITIALIZED, THE LENGTHS OF
- * TABLES WILL NOT CHANGE. THUS, POINTERS SUCH AS FIRST AND
- * LIMIT COULD BE READ AND SAVED BY PROGRAMS THAT ARE TIME
- * CRITICAL. THESE POINTERS COULD ALSO BE SAVED AS ABSOLUTE
- * ADDRESSES BECAUSE IAFEX WILL NEVER PAUSE FOR
- * STORAGE MOVE. IT WILL NOT BE POSSIBLE TO INCREASE THE
- * LENGTH OF *CMR* WHILE IAFEX IS IN OPERATION
- IAFEX SPACE 4
- ** TERMINAL TABLE.
- *
- * THE *TERMINAL TABLE* CONTAINS A GROUP OF WORDS FOR EACH
- * POSSIBLE ACTIVE USER. THESE WORDS CONTAIN ALL OF THE VITAL
- * INFORMATION ABOUT THE PARTICULAR USER THAT IS CURRENTLY
- * LOGGED IN ON A GIVEN CONNECTION. THE ENTRIES ARE FORMATTED
- * SUCH A WAY THAT THE AMOUNT OF INTERLOCKS NEEDED BETWEEN THE
- * VARIOUS ROUTINES IS KEPT AT A MINIMUM. THE ENTRIES ARE ALSO
- * FORMATTED IN SUCH A WAY THAT THE VARIOUS ROUTINES WHO HAVE
- * TO READ AND WRITE THIS TABLE ARE ABLE TO ACCESS A MINIMUM
- * NUMBER OF CM WORDS.
- *
- *
- * THE FORMAT OF AN ENTRY IN THE TERMINAL TABLE AND THE
- * RELATED INFORMATION CAN BE FOUND IN COMSREM.
- IAFEX SPACE 4
- ** CIRCULAR COMMAND STACKS.
- *
- * THE TTY DRIVER(S) WILL INTERFACE THROUGH
- * THE USE OF CIRCULAR COMMAND STACK(S). THE PARAMETERS FOR
- * THESE STACKS WILL BE SIMILAR TO THOSE IN A FET (I.E. THE
- * POINTER FOR A CIRCULAR STACK WILL POINT TO AN AREA AS
- * FOLLOWS)
- *
- * WORD 1 HEADER WORD (CONTAINS NAME OF CIRCULAR STACK AND
- * A POINTER TO THE NEXT STACK. THE LAST STACK IN THE CHAIN
- * HAS A ZERO POINTER.)
- * WORD 2 FIRST
- * WORD 3 IN
- * WORD 4 OUT
- * WORD 5 LIMIT
- *
- * THE FORMAT OF A STACK ENTRY IS
- *
- *T 12/ 20XX,24/ X7,12/ B3,12/ B2
- * XX = REQUEST CODE (QUAL TLX).
- * X7 = (X7).
- * B3 = POT POINTER, (B3).
- * B2 = TERMINAL NUMBER, (B2).
- *
- * THESE STACKS WILL BE PROCESSED FULL CIRCULAR BY *IAFEX*.
- * THE UTILIZATION OF COMMAND STACKS LESSENS THE AMOUNT OF
- * TIME THAT *IAFEX* HAS TO SPEND DETERMINING WHAT OPERATIONS
- * ARE TO BE PERFORMED.
- VDRL SPACE 4,10
- ** VDRL - DRIVER STATUS WORD TABLE.
- *
- * THE DRIVER STATUS WORDS BEGIN AT LOCATION *VDRL* (DE-
- * FINED IN COMMON DECK *COMSREM*). EACH DRIVER, INCLUD-
- * ING THE NETWORK INTERFACE, HAS AN ENTRY IN THIS TABLE.
- * THE TABLE IS TERMINATED BY A NEGATIVE WORD. THE WORDS
- * ARE USED DURING INITIALIZATION TO PASS INFORMATION BACK
- * AND FORTH BETWEEN THE EXECUTIVE AND THE PPU DRIVER(S)
- * AND TO SIGNAL DRIVER FAILURE AFTER INITIALIZATION.
- *
- * 1. INITIAL CONDITIONS. PPU DRIVER SETS INTERLOCK PRIOR TO
- * STARTUP OF CPU CONTROL CARD PROCESSING:
- *
- * 12/ IL, 48/ 0.
- * IL = POSITIVE NONZERO.
- *
- * 2. EXECUTIVE INDICATES STARTUP BY CLEARING INTERLOCK AND
- * SETTING THE DRIVER NAME IN EACH DRIVER STATUS WORD.
- *
- * 12/ 0, 24/ DN, 24/ 0.
- * DN = DRIVER NAME.
- *
- * 3. DRIVER(S) REPLY WITH TERMINAL COUNT, CM CONVERSION AND
- * ID TABLE LENGTH:
- *
- * 12/ IL, 24/ DN, 12/ TC, 12/ CL.
- * IL = POSITIVE NONZERO.
- * DN = DRIVER NAME.
- * TC = TERMINAL COUNT.
- * CL = CM CONVERSION AND ID TABLE LENGTH.
- *
- * NOTE - IF THERE ARE NO TERMINALS DEFINED FOR THIS MUX
- * DRIVER, BOTH *TC* AND *CL* ARE SET TO ZERO AND THE
- * DRIVER WILL DROP AT THIS POINT.
- *
- * 4. EXECUTIVE REPLIES WITH DRIVER POINTERS TO START DRIVER:
- *
- * 12/0, 24/ SA, 12/ TC, 12/ FT.
- * SA = DRIVER CIRCULAR STACK ADDRESS.
- * TC = TERMINAL COUNT.
- * FT = FIRST TERMINAL NUMBER.
- *
- * NOTE - IF THE DRIVER HAS NO TERMINALS DEFINED (AS IN
- * NOTE 3) THIS WORD IS SIMPLY CLEARED.
- *
- * 5. IF DRIVER SUBSEQUENTLY DROPS, DRIVER INDICATES
- * FAILURE BY SETTING THE INTERLOCK PRIOR TO DROPPING:
- *
- * 11/ 0, 1/ 1, 48/ (AS ABOVE).
- *
- * 6. ALL USERS ACTIVE ON THE FAILED DRIVER WILL BE LOGGED
- * OFF IN A RECOVERABLE STATE. WHEN ALL USERS ARE LOG-
- * GED OFF, BIT 49 WILL BE SET TO INDICATE THAT THE
- * DRIVER IS LOGICALLY *OFF*:
- *
- * 12/ 3, 48/ (AS ABOVE).
- *
- * 7. IF THE DRIVER SHOULD RECOVER, THE DRIVER INDICATES
- * ITS RESURRECTION BY CLEARING BYTE ZERO AFTER BIT 49
- * HAS BEEN SET:
- *
- * 12/ 0, 48/ (AS ABOVE).
- * SA = DRIVER CIRCULAR STACK ADDRESS.
- * TC = TERMINAL COUNT.
- * FT = FIRST TERMINAL NUMBER.
- SPACE 4,20
- * EXECUTIVE - DRIVER INTERLOCKS.
- *
- * IN ORDER FOR THE IAF EXECUTIVE AND THE MUX DRIVERS TO STAY IN
- * SYNC, THE FOLLOWING STEPS ARE FOLLOWED WHEN A COMMAND LINE IS
- * ENTERED.
- *
- *
- * 1) DRIVER ISSUES *CLI* REQUEST TO EXECUTIVE.
- *
- * 2) DRIVER WILL NOW IGNORE INPUT UNTIL A POT
- * IS GIVEN BACK BY IAFEX.
- *
- * 3) THUS, THE DRIVER CANNOT GIVE DATA TO THE EXECUTIVE
- * UNTIL IAFEX IS READY FOR IT.
- *
- * 4) THIS ALLOWS IAFEX TO MAKE ANY MODE CHANGES SUCH AS
- * DATA AND COMMAND MODE BEFORE GIVING THE DRIVER A POT SO THAT
- * ADDITIONAL COMMANDS SUCH AS *STOP* MAY BE ENTERED.
- *
- *
- * THIS INTERLOCK AS WELL AS THE ONE DESCRIBED IN THE
- * DESCRIPTION OF THE *VDCT* WORD ARE THE PRIME METHODS OF
- * INTERLOCKING.
- SPACE 4,10
- ** OUTPUT MESSAGES.
- *
- * PPUS MAY ASSIGN OUTPUT MESSAGE POTS BY MEANS OF
- * MONITOR *TSEM/VASO* FUNCTION REQUESTS. REFER TO
- * THE *TSEM* DOCUMENTATION IN *COMSREM* FOR A DESCRIPTION
- * OF THIS REQUEST.
- *
- *
- * *NOS* FORMAT MESSAGES.
- *
- * *NOS* FORMAT MESSAGES ARE MESSAGES EMPLOYING NOS
- * TIME SHARING 6-BIT, 6/12-BIT, OR 12-BIT TERMINAL
- * BINARY FORMATS. REFER TO THE NOS TIME SHARING US-
- * ERS REFERENCE MANUAL FOR A DESCRIPTION OF NOS FOR-
- * MAT MESSAGES.
- *
- *
- * *NAM* FORMAT MESSAGES.
- *
- * *NAM* FORMAT MESSAGES ARE MESSAGES CONSTRUCTED AS
- * NETWORK FORMAT MESSAGE BLOCKS. REFER TO THE NETWORK
- * R4 EXTERNAL REFERENCE SPECIFICATIONS FOR A DESCRIP-
- * TION OF NAM FORMAT MESSAGES.
- *
- * PROGRAMS USING NETWORK FORMAT MESSAGES SHOULD ALWAYS
- * SET THE *ADR* FIELD OF THE HEADER TO ZERO UNLESS IT
- * IS DESIRED TO TAKE ADVANTAGE OF THE IMBEDDED REQUEST
- * CAPABILITIES ALLOWED BY THE NETWORK INTERACTIVE EXEC-
- * UTIVE. THE PROPER ADR FIELD WILL BE SET BY THE EXEC-
- * UTIVE PRIOR TO TRANSMISSION TO THE NETWORK. AS LONG
- * AS THE ADR FIELD IS ZERO, THE ABN WILL BE TRANSMITTED
- * AS-IS, ALLOWING THE USER TO PRESET THE ABN FIELD.
- *
- * IF THE UPPER 6 BITS OF THE STANDARD ADR FIELD ARE NON-
- * ZERO, IT INDICATES THAT THE COMBINED ADR AND ABN
- * FIELDS OF THE HEADER CONTAIN AN IMBEDDED FUNCTION
- * REQUEST. USING THIS FORMAT, THE HEADER IS FORMATTED
- * AS FOLLOWS:
- *
- *T, 6/ABT, 6/FC, 12/P1, 12/P2, 4/ACT, 8/BITS, 12/TLC.
- *
- * FC = IMBEDDED FUNCTION REQUEST IF NONZERO-
- * = 4 - LOGOFF USER.
- * = 5 - REQUEST TRANSPARENT INPUT.
- * = 6 - REQUEST BINARY INPUT.
- * = 16 - SEND DOWNLINE TERMINAL DEFINITIONS.
- * P1 = BINARY INPUT CHARACTER COUNT.
- * P2 = BINARY INPUT TERMINATION CHARACTER.
- * ABT = APPLICATION BLOCK TYPE.
- * ACT = APPLICATION CHARACTER TYPE.
- * BITS = REFER TO NAM ERS.
- * TLC = TEXT LENGTH IN UNITS SPECIFIED BY *ACT*.
- IAFEX SPACE 4
- ** *IAFEX* REENTRY TABLE.
- * THE *IAFEX* REENTRY TABLE ALLOWS ROUTINES TO BE ABLE
- * TO GET CONTROL RETURNED TO THEM OR FUNCTIONS PERFORMED
- * FOR THEM WHEN A SET OF CONDITIONS HAVE BEEN MET.
- *
- * THE REENTRY TABLE CONSISTS OF ONE WORD FOR EACH TERMINAL
- * WHICH MAY CONTAIN ONE OF THE FOLLOWING
- *
- * 1.) 0000 0000 0000 0000 0000 - NO REENTRY CONDITIONS.
- *
- * 2.) 2YYY XXXX XXXX PPPP NNNN - WHERE
- * YYY = INDEX TO TRRT (TABLE OF REENTRY PROCESSORS).
- * XXXX XXXX = ANYTHING.
- * PPPP = POT POINTER.
- * NNNN = LINK TO NEXT ENTRY OF THIS TYPE IN THE QUEUE.
- * SEE TSR.
- *
- * 3.) 0000 0000 00PP PPNN NNNN - WHERE
- * NNNNNN = POT ADDRESS OF STACKED ENTRIES
- * PPPP = POT POINTER TO STACKED ENTRIES.
- TITLE ERROR MESSAGES.
- SPACE 4
- *** DAYFILE MESSAGES.
- *
- * *IAFEX ABNORMAL - XXX NNN.*
- * AN ERROR CONDITION HAS BEEN DETECTED BY ROUTINE
- * *XXX* DURING THE PROCESSING OF TERMINAL *NNN*.
- * *NNN* IS THE POT LINK TABLE ADDRESS FOR *SPR*.
- * REFER TO THE DESCRIPTIONS OF THE VARIOUS ERROR
- * CODES *XXX* FOR THE DESCRIPTIONS OF THESE
- * ERROR CONDITONS.
- *
- * * PLT INCREASE NOT POSSIBLE.*
- * THE POT LINK TABLE IS AT ITS MAXIMUM POSSIBLE LENGTH
- * WHEN MORE ENTRIES WERE REQUESTED DUE TO CURRENT
- * ACTIVITY. A TEMPORARY SLOWDOWN IN RESPONSE TIME
- * MAY BE NOTICED BY TERMINAL USERS. IF THIS MESSAGE
- * IS SEEN OFTEN, INFORM SITE ANALYST.
- *
- * *BLOCK LOST - NNNN*
- * *IAFEX* HAS RECEIVED A *NAK* SUPERVISORY MESSAGE
- * FOR ACN *NNNN* INDICATING THAT A DOWNSTREAM DATA
- * BLOCK HAS BEEN LOST.
- *
- * *LOGICAL ERROR XX.*
- * LOGICAL ERROR XX HAS OCCURRED. FOR INSTANCE,
- * A MESSAGE IS SENT TO A NON CONNECTED TERMINAL.
- * THIS CAN HAPPEN LEGALLY IF A MESSAGE IS OUTPUT
- * AND THE USER HANGS UP THE PHONE AT THE SAME
- * TIME.
- *
- * *INCORRECTLY FORMATTED DATA - NNN.*
- * *NAM* HAS SENT *IAFEX* A *BREAK* CONDITION MESSAGE
- * ON ACN *NNN* INDICATING THAT AN INCORRECTLY FORMATTED
- * MESSAGE HAS BEEN SENT BY *IAFEX* TO THAT ACN.
- *
- * *SMP INCORRECT SM = AABB, ACN = NNNN.*
- * AN INCORRECT OR UNRECOGNIZABLE SUPERVISORY MESSAGE,
- * PRIMARY FUNCTION CODE *AA* AND SECONDARY FUNCTION
- * *BB*, HAS BEEN RECEIVED FOR ACN *NNNN*. THE FUNCTION
- * CODE VALUES GIVEN ARE IN HEXADECIMAL.
- SPACE 4,7
- ** ACCOUNT FILE MESSAGES.
- *
- * *SBSB, IAF.* *IAFEX* INITIATED.
- * *SESB, IAF.* *IAFEX* TERMINATION IN PROGRESS.
- * *SESC, IAF.* *IAFEX* TERMINATION COMPLETE.
- * *SRSC, IAF.* *IAFEX* RECOVERY COMPLETE.
- * *SRSA, IAF.* *IAFEX* RECOVERY ABORTED.
- SPACE 4,20
- ** ABNORMAL CONDITION ERROR CODES.
- *
- * THE FOLLOWING IS A LIST OF THE ABNORMAL ERROR CODES
- * THAT MAY BE ISSUED BY *IAFEX* AND SOME INSIGHT INTO WHAT
- * MAY CAUSE THEM. THE THREE CHARACTER ERROR CODES CORRESPOND
- * TO THE NAME OF THE SUBROUTINE THAT DETECTED THE ERROR.
- *
- * CODE DESCRIPTION.
- *
- * ADQ THE SCREEN MANAGEMENT INTERFACE ENCOUNTERED
- * A FULL DRIVER STACK, OR WAS UNABLE TO LOCATE THE
- * CORRECT DRIVER REQUEST WORD STARTING AT VDRL.
- *
- * ADR THE SCREEN MANAGEMENT INTERFACE ENCOUNTERED
- * A DRIVER REQUEST EVENT WHICH WAS UNEXPECTED FOR THE
- * TERMINAL*S CURRENT SCREEN MANAGEMENT CONNECT STATE.
- *
- * ASO THIS DOCUMENTS AN ATTEMPT TO ASSIGN OUTPUT (WHICH
- * MEANS A SYSTEM STEP COMPLETION) TO A TERMINAL TABLE
- * WHICH IS ALREADY SET COMPLETE (VROT BIT ZERO = 1).
- * IT USUALLY MEANS A BUG IN THE COMMUNICATION BETWEEN
- * IAF AND THE SYSTEM.
- *
- * ASM IT IS ONLY POSSIBLE TO STACK TWO MESSAGES OR ONE
- * DRIVER REQUEST AND ONE MESSAGE FOR THE DRIVER AT ONE
- * TIME. IF THIS MESSAGE IS ISSUED, THEN ONE OF THESE
- * CONDITIONS WAS ENCOUNTERED WHEN *ASM* ATTEMPTED TO
- * ASSIGN A NEW MESSAGE TO THE TERMINAL. THIS CONDITION
- * SHOULD NOT NORMALLY OCCUR, BUT THE ONLY HARM DONE IS
- * THAT THE PARTICULAR USER LOSES SOME OUTPUT. IF THIS
- * DOES OCCUR, DURING NORMAL OPERATION, AND THERE HAVE
- * BEEN NO *DIAL* COMMANDS TO THE TERMINAL THERE IS
- * PROBABLY AN INTERLOCK PROBLEM.
- *
- * ASR THE SCREEN MANAGEMENT INTERFACE RECEIVED A
- * FUNCTION CODE FROM SMFEX WHICH WAS UNEXPECTED
- * FOR THE TERMINAL*S CURRENT CONNECT STATE.
- *
- * ATL A *TLX* PP ISSUED A *VCSM* TSEM CODE WHEN THE
- * TERMINALS *SMFEX* CONNECTION CODE DOES NOT ALLOW
- * THAT FUNCTION CODE.
- *
- * BJB AN ATTEMPT WAS MADE TO ENABLE A USER JOB WHILE
- * ITS TERMINAL TABLE INTERLOCK (*VROT* BIT 0=0)
- * WAS OUTSTANDING.
- *
- * DLP AN ATTEMPT WAS MADE TO DELINK POT ZERO. THIS SHOULD
- * NEVER HAPPEN.
- *
- * DPT THIS INDICATES A POT OR POTS WERE DROPPED THAT WERE
- * NOT RESERVED. THIS IS IN GENERAL INDICATIVE OF IAFEX
- * AND FRIENDS TRYING TO USE ONE POT FOR TWO THINGS AT THE
- * SAME TIME. NEEDLESS TO SAY THIS DOES NOT WORK TOO WELL
- * AND IN FACT CAN CAUSE A WIDE VARITY OF PROBLEMS. THIS
- * ERROR MOST OFTEN RESULTS FROM *1TD* OR IAFEX RELEASING
- * A POT OR POTS, BUT FAILING TO NOTE IT AND THEN
- * USING THE SAME POT AGAIN LATER IN THE CODE.
- *
- * DRI A DRIVER REQUEST TO IAFEX CONTAINED AN INCORRECT
- * REQUEST CODE. THIS SHOULD NEVER OCCUR.
- *
- * EDR A DRIVER REQUEST WAS ENTERED AND THE *VDCT* INTERLOCK
- * WAS NOT CLEARED.
- *
- * ESE THE SCREEN MANAGEMENT INTERFACE ENCOUNTERED
- * A COMBINATION OF TERMINAL CONNECT STATE AND
- * EVENT (FROM DRI OR SMFEX) WHICH IS UNDEFINED.
- *
- * GPL A POT LINK WAS ATTEMPTED FOR POT ZERO.
- *
- * GQE THIS INDICATES THAT IAFEX FOUND A BAD ENTRY IN THE
- * REENTRY TABLE. THIS IS A FATAL ERROR ON WHICH IAFEX
- * WILL ABORT BECAUSE THERE IS NO WAY TO REBUILD THE
- * REENTRY QUEUE AS IT IS A LINKED QUEUE. THE ENTRIES
- * VALIDITY IS CHECKED AS THEY ARE PUT IN THE TABLE BY
- * *MQE* SO THIS ERROR WOULD USUALLY INDICATE THE TABLE
- * WAS BASHED AFTER THE THE ENTRY WAS MADE OR PERHAPS A
- * POT CONTAINING MULTIPLE ENTRIES WAS BASHED.
- *
- * IAM INDICATES THAT EITHER AN INCORRECT ACCOUNTING MESSAGE
- * WAS REQUESTED BY THE DRIVER, WHICH SHOULD NEVER HAPPEN,
- * OR THAT SUBROUTINE *IAM* WAS UNABLE TO TO GET
- * TO GET A POT FOR STACKING MESSAGES.
- *
- * ITM THE DRIVER GAVE *IAFEX* AN INCORRECT MESSAGE CODE.
- * THIS SHOULD NEVER OCCUR.
- *
- * LEP AN ATTEMPT WAS MADE TO LINK TWO POT CHAINS AND THE
- * FIRST POT POINTER WAS ZERO.
- *
- * MQE THIS INDICATES EITHER A BAD QUEUE ENTRY WAS ATTEMPTED
- * OR ELSE AN ENTIRE POT FULL OF QUEUE ENTRIES WAS STACKED
- * UP. NEITHER OF THESE SHOULD EVER OCCUR. IF THEY DO
- * THEY CAN USUALLY EASILY BE DEBUGGED IF ONE LETS
- * *IAFEX* ABORT ON THIS ERROR AND THEN WORKS FROM THE
- * DUMP.
- *
- * RPL AN ATTEMPT WAS MADE TO DROP POTS AFTER POT ZERO.
- *
- * RPT THERE WERE NOT ENOUGH POTS AVAILABLE TO SATISIFY A
- * REQUEST. THIS WOULD PROBABLY INDICATE THAT THE VALUES
- * OF *VSPL* AND *VMPL* SHOULD BE INCREASED SO AS TO
- * MAINTAIN MORE SPARE POTS. PROBLEMS IN THIS AREA WILL
- * ALSO BE INDICATED BY THE STATISTIC IAFEX MAINTAINS ON
- * THE NUMBER OF TIMES ONLY A FEW POTS ARE LEFT. THIS
- * ALSO COULD OCCUR BECAUSE OF A SOME SYSTEM HANG
- * WHICH PREVENTED *IAFEX* FROM OBTAINING MORE STORAGE.
- *
- * RMS THE SCREEN MANAGEMENT INTERFACE RECEIVED
- * A FUNCTION CODE FROM SMFEX WHICH IS OUT OF RANGE.
- *
- * SBS A REQUEST WAS MADE TO SET AN INCORRECT SUBSYSTEM
- * BY MEANS OF A MONITOR *TSEM* REQUEST.
- *
- * SDT A PPU REQUESTED A BIT TO BE SET IN AN INCORRECT
- * TERMINAL TABLE WORD OR ELSE THE BIT VALUE WAS GREATER
- * THAN 59. THIS SHOULD NEVER OCCUR.
- *
- * SFC IAF HAS RECEIVED AN ERROR RETURN FROM CPUMTR ON
- * AN *SFCALL*. THIS MAY MEAN THAT THERE IS AN ERROR IN
- * THE SCP/UCP INTERFACE BETWEEN IAF AND SMF.
- *
- * STR A PPU REQUEST RECEIVED VIA A *TSEM* MONITOR
- * FUNCTION CONTAINED AN INCORRECT REQUEST CODE.
- * THIS SHOULD NEVER OCCUR.
- *
- * TSR THIS IS A FATAL ERROR WHICH INDICATES *IAFEX,S* REENTRY
- * QUEUE HAS BEEN SCREWED UP. THE PLACE TO START TO DEBUG
- * THIS IS TO LOOK AT THE CONTENTS OF *SSPA* WHICH
- * CONTAINS THE QUEUE ENTRY THAT WAS BEING PROCESSED AT
- * THE TIME OF THE ERROR.
- *
- * UEC UNEXPECTED ERROR CODE WAS RECEIVED FROM AN EJT MONITOR
- * REQUEST.
- *
- * UNQ LINKAGE IN TYPEAHEAD POT CHAIN IS INCORRECT. THE
- * POINTER TO THE LAST POT IN THE CHAIN IS ZERO.
- *
- *
- *
- * IAFEX NETWORK INTERFACE ABNORMAL CONDITIONS.
- *
- * THE FOLLOWING ERROR MESSAGES ARE ISSUED ONLY BY THE
- * NETWORK INTERFACE OVERLAY:
- *
- * CODE DESCRIPTION
- *
- * ACK A BLOCK ACKNOWLEDGED MESSAGE WAS RECEIVED
- * FROM THE NETWORK WHEN THE MESSAGE STATUS
- * TABLE SHOWED NO UNACKNOWLEDGED DOWNSTREAM
- * MESSAGES OUTSTANDING.
- *
- * ERQ SUBROUTINE *ERQ* WAS CALLED TO ENTER A
- * DRIVER CIRCULAR REQUEST STACK REQUEST TO THE
- * EXECUTIVE WHEN THE STACK WAS FULL.
- *
- * NAK A BLOCK-NOT-DELIVERED SUPERVISORY MESSAGE HAS
- * BEEN RECEIVED FROM NAM AND EITHER (1) THE TER-
- * MINAL OUTSTANDING BLOCK COUNT WAS ZERO, OR (2)
- * THE REASON CODE FOR THE BLOCK-NOT-DELIVERED
- * CONDITION WAS INCORRECT.
- *
- * NWC THIS INDICATES THAT THE NETWORK REQUESTED A CONNECTION
- * FOR WHICH IAF DOES NOT HAVE A TERMINAL TABLE, OR
- * ON WHICH IAF HAS NOT FINISHED LOGOFF FOR THE
- * PREVIOUS USER.
- *
- * RDM A MESSAGE WITH AN UNIDENTIFIABLE BLOCK TYPE
- * OR INCORRECT ACN HAS BEEN RECEIVED FROM NAM.
- *
- * SRE A DRIVER REENTRY HAS BEEN OVERWRITTEN.
- *
- * TFR THE MAIN IAFEX EXECUTIVE HAS PASSED AN UN-
- * IDENTIFIABLE DRIVER REQUEST TO THE NETWORK
- * DRIVER IN BYTE 4 OF TERMINAL TABLE WORD
- * *VDCT*.
- TITLE DEFINITION COMMON DECKS.
- SPACE 4,10
- *CALL COMCMAC
- *CALL COMCCMD
- *CALL COMSACC
- QUAL CPS
- *CALL COMSCPS
- QUAL *
- *CALL COMSNET
- *CALL COMSPRD
- *CALL COMSRPV
- *CALL COMSSCP
- *CALL COMSSFM
- *CALL COMSSSD
- *CALL COMSSSJ
- LIST F,X
- *CALL COMSEJT
- *CALL COMSTDR
- VXJT SET 1 ENABLE CEJ/MEJ ERROR CHECK
- *CALL COMSREM
- *CALL COMSTCM
- LIST * REVERSE *LIST X,F*
- TITLE ASSEMBLY CONSTANTS.
- **** ASSEMBLY CONSTANTS.
- QUAL$ EQU 0 SET TO INDICATE PROGRAM WILL HANDLE QUAL
- MAXTT EQU 1024D MAXIMUM NUMBER OF TERMINALS
- WCQT EQU 100 WAIT COMPLETION QUEUE DELAY TIME (MSEC.)
- MWQT EQU 100 MONITOR WAIT QUEUE DELAY TIME(MSEC)
- LIAA EQU 4 LOG IN ATTEMPTS ALLOWED
- MINDL EQU 60D MINIMUM FL CHANGE DELAY TIME
- MAXDL EQU 360D MAXIMUM FL CHANGE DELAY TIME
- INCTO EQU 1 FL CHANGE INCREMENT TIME
- RESTO EQU 60D*15D FL CHANGE RESET TIME INTERVAL SECONDS
- RTYDL EQU 30D *REER* DELAY COUNTER
- ** NETWORK INTERFACE ASSEMBLY CONSTANTS.
- NFCL EQU 20D NETWORK FUNCTION LIMIT PER CYCLE
- NMCT EQU 300 NETWORK MANAGER CYCLE TIME (MSECS)
- NODT EQU 10D NETON DELAY TIME (SECONDS)
- NSCT EQU 128D NETWORK SCAN CYCLE TIME (MSECS)
- SDTO EQU 60D*3 SHUTDOWN TIME-OUT (SECONDS)
- AIPL EQU 511D AIP UPLINE DATA BUFFER LENGTH
- SNDL EQU VXPL*VCPC*4/3+1 SEND BUFFER LENGTH
- NTODL EQU 30D NETWORK TERMINAL TIMEOUT DELAY (SECONDS)
- SPACE 4,10
- ** AIP TRACE ASSEMBLY CONSTANTS.
- DMCT EQU 16200 DEFAULT MESSAGE COUNT TO TRACE
- MNCT EQU 5000 MINIMUM MESSAGE COUNT TO TRACE
- MXML EQU 10 MAXIMUM MESSAGE LENGTH TO TRACE
- ** AIP TRACE JOB FILE NAME DEFINITION.
- * THE TRACE OUTPUT FILE CAN BE PROCESSED THROUGH THE USE
- * OF AN INPUT JOB. THIS REQUIRES AN INDIRECT ACCESS FILE
- * UNDER THE SYSTEM USER INDEX 377777 WHICH CONTAINS THE
- * COMMANDS NECESSARY TO PROCESS THE TRACE OUTPUT FILE
- * VIA AN INPUT JOB.
- * THIS MICRO DEFINES THE NAME OF THAT FILE.
- TJOB MICRO 1,,*TRACIAF*
- TITLE FETS AND DATA STORAGE.
- QUAL IAFINI
- ORG 55000B SET ORIGIN
- FWA BSS 0 DEFINE FWA OF OVERLAY.
- FETS SPACE 4,10
- ** FETS.
- CON NMSG ERROR MESSAGE BUFFER ADDRESS
- NMSG BSS 4 ERROR MESSAGE BUFFER
- L BSS 0 LOADER PARAMETER FILE
- ZZZZZ17 FILEB FBUF,FBUFL
- SPACE 4,10
- ** DATA STORAGE.
- ATAS CON 0 AIP TRACE PARAMETER ASSUMED VALUE
- ATPV CON 1R+ COMMAND TRACE PARAMETER VALUE
- LWAA CON 0 LWA+1 ALLOCATED CORE
- NDRO CON 0 NETWORK DRIVER ORDINAL
- VHMP CON 0 HIGHEST MUX PORT NUMBER
- TITLE MAIN ROUTINE.
- INI SPACE 4,10
- ** INI - IAFEX INITIALIZATION.
- *
- * ENTRY (R1) = 1 IF IAF RECOVERY.
- * WHERE R1 IS THE JOB CONTROL REGISTER 1.
- INI BSS 0 ENTRY
- SB1 1 SET CONSTANT B1=1
- GETSSID INID GET SUBSYSTEM IDENTIFICATION
- SA1 INID
- SX0 X1-IFSI
- ZR X0,INI1 IF IAF SUBSYSTEM
- SX0 X1-RDSI
- NZ X0,INI6 IF NOT RDF SUBSYSTEM
- INI1 GETJO INID GET JOB ORIGIN CODE
- SA1 INID
- MX2 -6
- BX1 -X2*X1
- NZ X1,INI6 IF NOT SYSTEM ORIGIN TYPE
- SETUI 377777B SET SYSTEM USER INDEX
- OVERLAY (=6LIAFEX1),100B,S LOAD EXECUTIVE
- GETSSM //LISF GET SYSTEM SECURITY MODE
- GETJCR INIC
- SA1 INIC
- LX1 59-0
- NG X1,INI1.1 IF RELOAD - KEEP PREVIOUS SWITCH SETTINGS
- ONSW 20B SELECT DUMP OPTION
- INI1.1 MOVE //TINSTL,//TINST,TINS
- RJ CIC CRACK *IAFEX* COMMAND
- RJ CPA CLEAR POINTER AREAS
- * CHECK IF *IAF* RECOVERY (R1=1 IF RECOVERY)
- SA1 INIC
- SX7 B1
- BX7 X7*X1
- ZR X7,INI2 IF NOT IAF RECOVERY
- BX7 X1-X7 CLEAR THE RECOVERY FLAG
- SA7 A1
- SETJCR INIC SET JOB CONTROL REGISTERS
- RTIME VRLL SET RECOVERY TIME IN SECONDS
- SA1 VRLL
- LX1 -36
- MX7 -24
- BX7 -X7*X1
- SA7 A1+
- *IF DEF,IAF$
- * CALL DRIVERS.
- INI2 SA1 INIH
- SB6 VDRL+VDRM
- RJ CDR CALL *1TM* DRIVER
- SA6 VITM SAVE *1TM* DRIVER REQUEST WORD
- SA1 INIB
- SB6 VDRL+VDRN
- RJ CDR CALL *1TN* DRIVER
- *ELSE
- * CALL TWO PORT MUX DRIVER.
- INI2 SA1 INIH
- SB6 VDRL+VDRM
- RJ CDR CALL *1TM* DRIVER
- SA6 VITM SAVE *1TM* DRIVER REQUEST WORD
- *ENDIF
- RJ WDP WAIT DRIVER PRESET COMPLETE
- * DETERMINE MAXIMUM NUMBER OF USERS.
- SA1 B0 SET TIMEOUT ACCORDING TO SSW1
- SX6 B1
- LX6 6-0
- BX6 X6*X1
- SA2 INIE SET INTO REQUEST
- LX6 25-6
- BX6 X6+X2
- SA6 A2 REWRITE REQUEST
- SYSTEM EJT,R,INIE UPDATE TIME IN EJT
- SX7 TINST
- SA7 LWAA FWA OF ALLOCATABLE MEMORY
- SA1 VMNL NUMBER OF MUX PORTS
- SA3 VNTP NUMBER OF NETWORK TERMINALS
- SX2 =C* NO TERMINALS DEFINED.*
- IX6 X3+X1 TOTAL MUX AND NETWORK TERMINALS
- SA6 A1 STORE TOTAL TERMINAL COUNT
- ZR X6,ABT IF NO TERMINALS DEFINED
- SX6 X6-MAXTT-1 CHECK TOTAL TERMINAL COUNT
- SX2 =C* TOO MANY TERMINALS.*
- PL X6,ABT IF TOO MANY TERMINALS
- *IF DEF,IAF$
- ZR X3,INI3 IF NO NETWORK TERMINALS
- RJ LNI LOAD NETWORK INTERFACE
- *ENDIF
- * SET UP REPRIEVE PROCESSING.
- INI3 REPRIEVE RPVB,SETUP,77B SET REPRIEVE PROCESSING
- * ALLOCATE MEMORY AND TABLES.
- RJ CAM CLEAR ALLOCATABLE MEMORY
- RJ ADS ALLOCATE DRIVER STACKS
- RJ ATT ALLOCATE TERMINAL TABLES
- RJ ATN ALLOCATE TERMINAL NAME TABLE
- RJ ART ALLOCATE REENTRY TABLES
- RJ AMS ALLOCATE MESSAGE STATUS TABLE
- RJ ANA ALLOCATE NETWORK ACTIVITY TABLE
- RJ ABM ALLOCATE BUFFER MEMORY
- RJ PMP PRESET MISCELLANEOUS POINTERS
- * SET TABLE REFERENCE ADDRESSES IN INSTRUCTIONS.
- SB5 TINS EXECUTIVE INSTRUCTION TABLE ADDRESS
- SB7 //TINSTL
- RJ SAD SET INSTRUCTION ADDRESSES
- SA1 VNTP CHECK IF NETWORK DEFINED
- ZR X1,INI4 IF NETWORK INTERFACE NOT LOADED
- SB5 TINS2 IAFEX4 INSTRUCTION TABLE ADDRESS
- SB7 /IAFEX4/TINSTL
- RJ SAD SET INSTRUCTION ADDRESSES
- * ENTER IAFEX EXECUTIVE.
- INI4 RJ SPC SET SUBSYSTEM PROCESSOR CALLS
- RJ STD START DRIVER(S)
- SB5 FBUF SET POINTERS TO CLEAR VERSION AREA
- SB6 FBUF+8
- SX6 B0+
- + SA6 B5 CLEAR WORD
- SB5 B5+B1
- LT B5,B6,* IF NOT COMPLETE
- VERSION INIA GET SYSTEM NAME
- MESSAGE FBUF,,R ISSUE DAYFILE MESSAGE
- DATE //DATE
- CLOCK //TIME
- TIME //CPTIME
- RTIME //START
- SX6 -1
- SA6 HEDR+4
- SYSTEM RSB,R,INIG GET BANNER MESSAGE
- SB6 HEDR+4
- SB7 HEDR+7
- INI4.1 SA1 B6 CONVERT ZEROS TO BLANKS IN HEADER
- SB6 B6+B1
- RJ ZTB
- SA6 A1+
- LE B6,B7,INI4.1 IF MORE WORDS TO CONVERT
- SA2 //START
- SA3 //SPRD
- AX2 36 REAL TIME IN SECONDS
- IX7 X2+X3 INCREMENT REAL TIME
- SA7 //SPRC
- SA7 //SPRD
- SA1 VNTP CHECK NETWORK TERMINALS
- BX7 X2
- AX1 24
- SX2 X1-VPST COMPARE TO FIRST LIVE TERMINAL NUMBER
- ZR X1,INI5 IF NO NETWORK TERMINALS DEFINED
- SA7 /IAFEX4/NFRT SET INITIAL *NETON* DELAY
- INI5 MESSAGE (=C*SBSB, IAF.*),5 TIMESHARING EXECUTIVE INITIATED
- EQ //IAF ENTER EXECUTIVE
- INI6 MESSAGE (=C* USER ACCESS NOT VALID.*)
- ABORT
- INIA VFD 12/11B,12/0,12/0,24/FBUF
- INIB VFD 18/3L1TN,42/0
- INIC CON 0 JOB CONTROL REGISTERS
- INID CON 0 QUEUE PRIORITY/JOB ORIGIN TYPE
- INIE VFD 24/0,12/1,23/RTEJ,1/0
- VFD 60/0
- VFD 6/0,6/TXOT,48/0
- BSSZ EJPB-*+INIE
- INIG VFD 12/0,12/6,18/SYTL,18/HEDR+4
- INIH VFD 18/3L1TM,30/0,12/0 *1TM* CALL
- TITLE SUBROUTINES.
- ABM SPACE 4,25
- ** ABM - ALLOCATE BUFFER MEMORY (POTS).
- *
- * ENTRY (LWAA) = LWA+1 OF MEMORY ALLOCATED.
- * (VMNL) = TERMINAL COUNT.
- *
- * EXIT (LWAA) = LWA+1 OF POT LINK TABLE.
- * (VCPL) = FL CHANGE IN PROGRESS.
- * (VPAL) = POTS ALLOCATED.
- * (VPLP) = 12/LENGTH, 24/ FWA, 24/ LWA+1 OF
- * POT LINK TABLE.
- * (VBMP) = 36/, 24/ FWA OF BUFFER MEMORY.
- * (VPUL) = 1.
- * POT 0 IS RESERVED.
- *
- * TO *ABT* IF POT LINK TABLE OVERFLOW.
- *
- * USES X - 0, 1, 2, 3, 4, 5, 6, 7.
- * A - 1, 2, 3, 4, 5, 6, 7.
- * B - 2, 6, 7.
- *
- * CALLS ABT.
- *
- * MACROS MEMORY.
- ABM SUBR ENTRY/EXIT
- * FIND PLT SIZE BASED ON TERMINALS IN SYSTEM.
- SA1 VMNL DETERMINE NUMBER OF USERS
- SX2 VPLM
- IX1 X1*X2 CALCULATE PERCENTAGE OF PLT TO ALLOCATE
- SX2 VMXU
- IX1 X1/X2
- SX3 VMIL*VSCL+VLCL*VMIL INCREASE PLT DUE TO QUEUES
- AX3 2 CALCULATE PLT WORDS
- IX1 X3+X1 ADD TO PLT SIZE
- ABM0 SX4 VFLI/VCPC/4 INCREASE TO NEXT PLT INCREMENT
- SX2 X4
- IX1 X4+X1
- IX1 X1/X4
- IX1 X1*X2
- SX2 X1-VPLI
- PL X2,ABM1 IF PLT ABOVE MINIMUM SIZE
- SX1 VPLI USE MINIMUM SIZE
- EQ ABM4 ALLOCATE PLT
- ABM1 SX2 X1-VPLM
- NG X2,ABM4 IF PLT BELOW MAXIMUM
- SX1 VPLM
- * ALLOCATE POT LINK TABLE.
- ABM4 SA2 LWAA GET FWA FOR PLT
- SX6 X1 SET POTS AVAILABLE
- LX6 2
- SA6 VPAL
- SB6 X2 SET PLT FWA
- IX7 X2+X1 SET LWA+1
- LX1 5 CALCULATE MAXIMUM FL
- IX3 X1+X7
- SX5 3777B-MNFL
- LX5 6
- IX5 X3-X5
- NG X5,ABM4.1 IF END OF FL OKAY
- SX5 X5+VFLI+1 INCREASE THE DIFFERENCE
- IX1 X1-X5 DECREASE MAXIMUM PLT SIZE
- AX1 5 CALCULATE PLT WORDS
- EQ ABM0 DECREASE TO NEXT PLT INCREMENT
- ABM4.1 AX1 5 RESTORE PLT SIZE
- SA7 A2 REWRITE LWAA
- SB7 X7
- LX2 24 FORMAT PLT POINTER WORD
- LX1 48
- BX6 X7+X2
- BX6 X1+X6
- SA6 VPLP STORE PLT POINTER WORD
- SX1 X6-FWA CHECK FOR OVERFLOW
- SX2 =C* POT LINK TABLE OVERFLOW.*
- PL X1,ABT IF OVERFLOW
- SX7 X7+1
- SA7 VBMP
- * VERIFY THAT PLT LENGTH IS WITHIN IAF FL.
- * IF IT IS NOT REDUCE PLT UNTIL FL IS REACHED.
- MEMORY CM,ABMA SEE AMOUNT OF FL CURRENTLY ALLOCATED
- SA2 VPLP
- SA3 ABMA COMPARE MEMORY ALLOCATION
- SX4 X2 SAVE LWA+1 OF PLT
- LX2 -24
- MX0 -12
- LX3 59-29
- SX2 X2 SAVE FWA OF PLT
- SX3 X3 SAVE CURRENT FL
- BX7 X3
- IX2 X4-X2 LENGTH OF PLT
- LX2 5 PLT LENGTH*32
- SA4 VBMP
- IX5 X4+X2
- IX0 X5-X3
- NG X0,ABM5 IF ENOUGH FIELD LENGTH AVAILABLE
- IX0 X3-X4 LENGTH OF POTS
- BX6 X0
- AX0 5 (FL-VBMP)/32 = LENGTH OF PLT
- AX6 3
- SB2 24 SHIFT COUNT
- SA2 A2
- SA6 VPAL SET POTS AVAILABLE
- AX3 X2,B2
- SX3 X3 FWA OF PLT
- MX5 36
- IX3 X3+X0 LWA+1 OF PLT
- BX2 X5*X2 SAVE FWA OF PLT
- BX6 X3+X2
- SA6 A2 SAVE NEW POINTERS
- * RESERVE POT ZERO AND SET CURRENT FL IN *FLCW*.
- ABM5 SA1 =77770000000000000010B
- SA4 ABMD CREATE *1TA* FIELD LENGTH REQUEST
- SA3 VPAL
- BX6 X4+X7
- BX7 X3
- SA6 PMSG
- SA7 VCPL SET FL INCREASE IN PROGRESS
- SX6 B1
- BX7 X1
- SA5 VPLP GET POT LINK TABLE ADDRESS
- SA6 VPUL
- AX5 24
- SA7 X5
- EQ ABMX RETURN
- ABMA DATA 0
- ABMD VFD 18/3R1TA,6/0,12/4001B,24/0
- ABT SPACE 4,10
- ** ABT - INITIALIZATION ABORT.
- *
- * ENTRY (X2) = ADDRESS OF ERROR MESSAGE.
- *
- * EXIT (VRLL) = BITS 59 AND 58 SET.
- * DAYFILE MESSAGE(S) ISSUED.
- *
- * CALLS MSG=, SYS=.
- ABT BSS 0 ENTRY
- * SET INITIALIZATION ABORT AND NO-RELOAD STATUS.
- SA1 VRLL SET STATUS BITS
- MX6 2
- BX6 X6+X1
- SA6 A1
- ZR X2,ABT1 IF NO MESSAGE
- MESSAGE X2,,R ISSUE ERROR MESSAGE
- ABT1 MESSAGE (=C* IAFEX INITIALIZATION ABORT.*),,R
- OFFSW 20B DESELECT DUMP OPTION
- ABORT
- ADS SPACE 4,30
- ** ADS - ALLOCATE DRIVER STACKS.
- *
- * UPDATE THE *MUXP* AND *VDRL* TABLE ENTRIES
- * AND ALLOCATE DRIVER CIRCULAR REQUEST STACKS.
- * IF A DRIVER HAS NO PORTS DEFINED, ITS DRIVER WORD
- * IS CLEARED TO ALLOW THE DRIVER TO COMPLETE INITIAL-
- * IZATION AND DROP.
- *
- * ENTRY (LWAA) = LWA+1 OF ALLOCATED CORE.
- * (MUXP - MUXP+MXMX) = MUX TABLE ENTRIES.
- * 6/CH, 6/EQ, 12/, 12/UAL, 12/NT, 12/0
- * NT = NUMBER OF TERMINALS.
- * (VDRL - VDRL+4) = DRIVER INITIALIZATION WORDS.
- * 12/IL, 6/0, 18/DN, 12/TC, 12/CL.
- * IL = DRIVER INTERLOCK.
- * DN = DRIVER NAME.
- * TC = TERMINAL COUNT.
- * CL = CONVERSION TABLE LENGTH.
- *
- * EXIT (LWAA) = LWA+1 OF DRIVER STACKS.
- * (MUXP - MUXP+MXMX) = MUX TABLE ENTRIES.
- * 6/CH, 6/EQ, 12/, 12/UAL, 12/NT, 12/FT
- * FT = FIRST TERMINAL.
- * (VDRL - VDRL+4) = DRIVER INITIALIZATION WORDS.
- * 12/IL, 24/SA, 12/TC, 12/FT.
- * IL = DRIVER INTERLOCK.
- * SA = DRIVER STACK ADDRESS.
- * TC = TERMINAL COUNT.
- * FT = FIRST TERMINAL NUMBER.
- *
- * TO *ABT* IF DRIVER STACK OVERFLOW.
- *
- * USES A - 1, 2, 6, 7.
- * X - 1, 2, 3, 4, 5, 6, 7.
- * B - 4, 5, 6, 7.
- ADS SUBR ENTRY/EXIT
- SB4 VPST (B4) = FIRST TERMINAL NUMBER
- SB6 MUXP (B6) = MUX TABLE ADDRESS
- SB7 B0 (B7) = MUX TABLE INDEX
- MX5 -12
- * UPDATE MUX TABLE ENTRIES.
- ADS0 SA1 B6+B7 READ MUX TABLE ENTRY
- SB7 B7+B1
- ZR X1,ADS0.1 IF END OF TABLE
- BX3 X1
- LX3 -12
- BX6 -X5*X3 TERMINAL COUNT
- SX7 B4 SET FIRST TERMINAL NUMBER
- BX7 X1+X7
- SB4 B4+X6 UPDATE FIRST TERMINAL NUMBER
- SA7 A1 REWRITE TABLE ENTRY
- EQ ADS0 PROCESS NEXT ENTRY
- ADS0.1 SA1 LWAA GET LWA+1 OF PHYSICAL ALLOCATED CORE
- SB4 VPST (B4) = FIRST TERMINAL NUMBER
- SB5 X1 (B5) = DRIVER STACK ADDRESS
- SB6 VDRL (B6) = DRIVER STATUS TABLE ADDRESS
- SB7 B0 (B7) = DRIVER STATUS TABLE INDEX
- * READ DRIVER STATUS TABLE ENTRY PARAMETERS.
- ADS1 SA1 B6+B7 READ TABLE ENTRY
- MX5 -12
- SB7 B7+1 ADVANCE POINTER
- NG X1,ADS3 IF END OF TABLE
- BX2 -X5*X1 (X2) = CONVERSION AND ID TABLE LENGTH
- BX3 X1
- LX3 18
- MX4 18
- BX3 X4*X3 (X3)=DRIVER NAME, RIGHT JUSTIFIED
- AX1 12
- BX6 -X5*X1 (X6) = TERMINAL COUNT
- NZ X6,ADS2 IF TERMINALS DEFINED
- SA6 A1 CLEAR TABLE ENTRY
- EQ ADS1 CONTINUE
- * SET STACK ADDRESS AND FIRST TERMINAL IN TABLE ENTRY.
- ADS2 SX1 B5 SET STACK ADDRESS
- LX1 12
- BX1 X1+X6 INSERT TERMINAL COUNT
- SX7 B4 INSERT FIRST TERMINAL
- LX1 12
- BX1 X1+X7
- SX7 B1 SET INTERLOCK
- LX7 48-0
- BX7 X7+X1
- SA7 A1+ REWRITE TABLE ENTRY
- SB4 B4+X6 UPDATE FIRST TERMINAL NUMBER
- * SET UP DRIVER CIRCULAR STACK.
- SX6 B5+5 SET *FIRST*
- SA6 B5+B1
- SA6 A6+B1 SET *IN*
- SA6 A6+B1 SET *OUT*
- SX6 X6+VDSL SET *LIMIT*
- SA6 A6+B1
- IX6 X6+X2 CALCULATE FWA OF NEXT STACK
- BX7 X3+X6 FORMAT STACK HEADER
- SA7 B5 WRITE STACK HEADER
- SB5 X6+ UPDATE STACK ADDRESS
- SX1 X6-FWA CHECK FOR OVERFLOW
- NG X1,ADS1 IF NO OVERFLOW, LOOP
- SX2 =C* DRIVER STACK OVERFLOW.*
- EQ ABT ABORT INITIALIZATION
- * CLEAR POINTER TO NEXT STACK FROM LAST ENTRY.
- ADS3 ZR B7,ADS5 IF BACK AT START OF TABLE
- SB7 B7-B1 READ PREVIOUS ENTRY
- SA1 B6+B7
- ZR X1,ADS3 IF NULL ENTRY
- NG X1,ADS3 IF END OF TABLE
- AX1 24 SET HEADER ADDRESS
- SA2 X1
- MX6 42
- BX6 X6*X2 CLEAR POINTER
- SA6 X1+ REWRITE HEADER
- * UPDATE LWA+1 OF ALLOCATED CORE.
- ADS5 SX6 B5+ SET LWA+1 ALLOCATED
- SA6 LWAA
- EQ ADSX RETURN
- AMS SPACE 4,10
- ** AMS - ALLOCATE NETWORK MESSAGE STATUS TABLE.
- *
- * THE START OF THE MESSAGE STATUS TABLE IS BIASED BACK-
- * WARDS IN ORDER THAT NON-NETWORK TERMINAL ENTRIES NEED
- * NOT BE ALLOCATED.
- *
- * ENTRY (LWAA) = LWA+1 OF MEMORY ALLOCATED.
- * (VNTP) = 36/FIRST, 24/LAST NETWORK TERMINAL NUMBERS.
- *
- * EXIT (VMST) = 36/FWA, 24/LWA+1 OF MESSAGE STATUS TABLE.
- * (LWAA) = LWA+1 OF MESSAGE STATUS TABLE.
- *
- * TO *ABT* IF MESSAGE STATUS TABLE OVERFLOW.
- *
- * USES A - 1, 2, 6.
- * X - 1, 2, 6.
- AMS SUBR ENTRY/EXIT
- SA1 VNTP GET NETWORK TERMINAL POINTER
- SX6 X1+ LAST TERMINAL NUMBER
- AX1 24 SHIFT FIRST TERMINAL NUMBER
- ZR X6,AMS1 IF NO NETWORK TERMINALS
- IX6 X6-X1 NETWORK TERMINAL COUNT -1
- SA2 LWAA GET LWA+1 ALLOCATED CORE
- SX6 X6+B1 TERMINAL COUNT
- IX6 X2+X6 SET LWA+1
- IX2 X2-X1 SUBTRACT NON-NETWORK TERMINALS
- SA6 A2 STORE (LWAA) = LWA+1
- LX2 24 MERGE FWA AND LWA+1
- BX6 X6+X2
- AMS1 SA6 VMST STORE (VMST)
- SX1 X6-FWA CHECK FOR OVERFLOW
- SX2 =C* MESSAGE STATUS TABLE OVERFLOW.*
- PL X1,ABT IF OVERFLOW
- EQ AMSX RETURN
- ANA SPACE 4,10
- ** ANA - ALLOCATE NETWORK ACTIVITY TABLE.
- *
- * ALLOCATES ONE TABLE WORD PER EACH 32 NETWORK TERMINALS
- * DEFINED.
- *
- * ENTRY (VNTP) = 36/FIRST, 24/LAST NETWORK TERMINAL NO.
- * (LWAA) = LWA+1 OF MEMORY ALLOCATED.
- *
- * EXIT (LWAA) = LWA+1 OF NETWORK ACTIVITY TABLE.
- * (VNAT) = 36/FWA, 24/LWA+1 OF NETWORK ACTIVITY TABLE.
- *
- * TO *ABT* IF TABLE OVERFLOW.
- *
- * USES A - 1, 2, 6.
- * X - 1, 2, 3, 6.
- ANA SUBR ENTRY/EXIT
- SA1 VNTP GET NETWORK TERMINAL POINTER
- SX6 B0+
- ZR X1,ANA1 IF NO NETWORK TERMINALS
- SX3 X1+33 LAST TERMINAL NUMBER + 33
- AX1 24 FIRST TERMINAL NUMBER
- IX1 X3-X1 TERMINAL COUNT + 32
- SA2 LWAA
- AX1 5 LENGTH = (TERMINAL COUNT+32)/32
- IX6 X2+X1 SET LWA+1
- SA6 A2+ STORE (LWAA)
- LX2 24 SET FWA
- BX6 X2+X6
- ANA1 SA6 VNAT STORE (VNAT)
- SX1 X6-FWA CHECK FOR OVERFLOW
- SX2 =C* NETWORK ACTIVITY TABLE OVERFLOW.*
- PL X1,ABT IF OVERFLOW
- EQ ANAX RETURN
- ART SPACE 4,10
- ** ART - ALLOCATE REENTRY TABLE.
- *
- * ENTRY (LWAA) = LWA+1 OF ALLOCATED CORE.
- * (VMNL) = TERMINAL COUNT.
- *
- * EXIT (LWAA) = LWA+1 OF REENTRY TABLE.
- * (VRAP) = 36/ FWA, 24/ LWA+1 OF REENTRY TABLE.
- *
- * TO *ABT* IF REENTRY TABLE OVERFLOW.
- *
- * USES A - 1, 2, 6.
- * X - 1, 2, 6.
- ART SUBR ENTRY/EXIT
- SA1 VMNL GET TERMINAL COUNT
- SA2 LWAA GET LWA+1 ALLOCATED CORE
- SX6 X1+VPST ADD PSEUDO-TERMINALS
- IX6 X6+X2 SET LWA+1
- SA6 A2 UPDATE (LWAA)
- LX2 24 MERGE FWA AND LWA+1
- BX6 X6+X2
- SA6 VRAP STORE (VRAP)
- SX1 X6-FWA CHECK FOR OVERFLOW
- SX2 =C* REENTRY TABLE OVERFLOW.*
- PL X1,ABT IF OVERFLOW
- EQ ARTX RETURN
- ATN SPACE 4,5
- ** ATN - ALLOCATE TERMINAL NAME TABLE.
- *
- * ENTRY (LWAA) = LWA+1 OF ALLOCATED CORE.
- * (VMNL) = TERMINAL COUNT.
- *
- * EXIT (VTNP) = 36/ FWA, 24/ LWA+1 OF NAMES TABLE.
- * (LWAA) = LWA+1 OF NAMES TABLE.
- *
- * TO *ABT* IF OVERFLOW.
- *
- * USES X - 1, 2, 6.
- * A - 1, 2, 6.
- ATN SUBR ENTRY/EXIT
- SA1 VMNL GET TERMINAL COUNT
- SA2 LWAA LWA+1 OF ALLOCATED CORE
- IX6 X2+X1
- SA6 A2 UPDATE LWA+1
- LX2 24
- BX6 X6+X2
- SA6 VTNP STORE POINTER TO TABLE
- SX6 X6-FWA
- SX2 =C* TERMINAL NAME TABLE OVERFLOW.*
- PL X6,ABT IF OVERFLOW
- EQ ATNX RETURN
- ATT SPACE 4,10
- ** ATT - ALLOCATE TERMINAL TABLES.
- *
- * ENTRY (VMNL) = TERMINAL COUNT.
- * (LWAA) = LWA+1 OF ALLOCATED CORE.
- *
- * EXIT (VTTP) = 36/ FWA, 24/ LWA+1 OF TERMINAL TABLES.
- * (LWAA) = LWA+1 OF TERMINAL TABLES.
- * TERMINAL TABLE STATUSES SET COMPLETE.
- *
- * TO *ABT* IF TERMINAL TABLE OVERFLOW.
- *
- * USES A - 1, 2, 6.
- * X - 1, 2, 3, 6.
- * B - 6, 7.
- *
- * CALLS ABT.
- ATT SUBR ENTRY/EXIT
- SA1 VMNL GET TERMINAL COUNT
- SX3 VTTL SET TERMINAL TABLE LENGTH
- SX1 X1+VPST TERMINAL COUNT + PSEUDO TERMINALS
- SA2 LWAA GET LWA+1 OF ALLOCATED CORE
- IX6 X3*X1 LENGTH OF TABLES
- SB6 X2 SET FWA
- IX6 X6+X2 SET LWA+1
- SA6 A2 UPDATE (LWAA)
- SB7 X6+
- LX2 24 MERGE FWA AND LWA+1
- BX6 X6+X2
- SA6 VTTP STORE (VTTP)
- SX6 X6-FWA CHECK FOR OVERFLOW
- SX2 =C* TERMINAL TABLE OVERFLOW.*
- PL X6,ABT IF OVERFLOW
- * SET ALL TERMINAL TABLE STATUSES COMPLETE.
- SX1 VROT
- SX6 1
- ATT1 SA6 B6+X1 STORE VROT
- SB6 B6+X3
- LT B6,B7,ATT1 IF NOT COMPLETE
- EQ ATTX RETURN
- CAM SPACE 4,10
- ** CAM - CLEAR ALLOCATABLE MEMORY.
- *
- * CLEAR THE ALLOCATABLE IAFEX TABLE AREA FROM THE LWA+1
- * OF LOADED EXECUTIVE OVERLAY(S) TO THE FWA OF THE
- * INITIALIZATION OVERLAY.
- *
- * ENTRY (LWAA) = FWA OF ALLOCATABLE MEMORY.
- *
- * USES A - 1, 6.
- * X - 1, 6.
- * B - 6, 7.
- CAM1 SA6 B6 STORE ZERO WORD
- SB6 B6+B1
- LT B6,B7,CAM1 IF NOT COMPLETE
- * EQ CAMX RETURN
- * CAM - ENTRY/EXIT.
- CAM SUBR ENTRY/EXIT
- SA1 LWAA GET FWA OF ALLOCATABLE MEMORY
- SB7 FWA SET INTIALIZER FWA
- BX6 X6-X6
- SB6 X1 (B6) = LWA+1 OF LOADS
- EQ CAM1
- CDR SPACE 4,25
- ** CDR - CALL DRIVER.
- *
- * THE DRIVER NAME IS SET INTO THE SPECIFIED *VDRL*
- * ENTRY, AND THE *VDRL* ADDRESS FOR THIS DRIVER IS SET
- * INTO THE DRIVER REQUEST WORD. THIS DRIVER REQUEST
- * WORD IS THEN USED TO CALL THE APPROPRIATE DRIVER.
- *
- * ENTRY (X1) = DRIVER NAME, LEFT JUSTIFIED.
- * (B6) = ADDRESS OF *VDRL* ENTRY FOR THIS DRIVER.
- *
- * EXIT APPROPRIATE PPU DRIVER HAS BEEN LOADED.
- * (X6) = FORMATTED DRIVER REQUEST WORD.
- * = 18/DN, 24/0, 18/VA.
- * DN = DRIVER NAME.
- * VA = *VDRL* ADDRESS.
- * (VDRL) = 18/0, 18/DN, 24/0.
- * DN = DRIVER NAME.
- *
- * USES A - 2, 6.
- * X - 1, 2, 3, 6.
- * B - 6.
- *
- * MACROS SYSTEM.
- CDR SUBR ENTRY/EXIT
- BX6 X1 GET DRIVER NAME
- LX6 42
- SA6 B6
- MX3 42
- BX1 X3*X1 CLEAR BYTE 4 OF DRIVER REQUEST WORD
- SX2 B6
- BX6 X1+X2 SET ADDRESS IN DRIVER REQUEST WORD
- SA6 CDRA REWRITE DRIVER REQUEST WORD
- SA6 CDRB SAVE FORMATTED REQUEST WORD
- CDR2 SYSTEM SPC,,CDRA CALL APPROPRIATE DRIVER
- + SA2 B1+
- NZ X2,* IF RA+1 NOT CLEAR
- SA2 CDRA
- NZ X2,CDR2 IF PPU NOT AVAILABLE
- SA2 CDRB
- BX6 X2 RETURN DRIVER REQUEST WORD
- EQ CDRX EXIT
- CDRA CON 0 DRIVER SCRATCH WORD
- CDRB CON 0 FORMATTED DRIVER REQUEST WORD
- CIC SPACE 4,10
- ** CIC - CRACK *IAFEX* COMMAND.
- *
- * EXIT TO *ABT* IF ERROR IN ARGUMENTS.
- * (X2) = ERROR MESSAGE.
- *
- * USES X - 1, 2, 4.
- * A - 1, 4.
- * B - 4, 5.
- *
- * CALLS ARG.
- CIC SUBR ENTRY/EXIT
- SA1 ACTR GET ARGUMENT COUNT
- SA4 ARGR GET FIRST ARGUMENT
- SB4 X1+
- ZR B4,CICX IF NO ARGUMENTS
- SB5 TICP ARGUMENT TABLE
- RJ ARG PROCESS ARGUMENTS
- SX2 =C* ERROR IN IAFEX ARGUMENTS.*
- NZ X1,ABT IF ERROR IN ARGUMENTS
- EQ CICX RETURN
- CPA SPACE 4,10
- ** CPA - CLEAR POINTER AREAS.
- *
- * CLEAR LOW CORE POINTER WORDS AND DRIVER MULTIPLEXER
- * TABLE.
- *
- * EXIT AREAS CLEARED.
- *
- * USES A - 6.
- * X - 6.
- * B - 6, 7.
- CPA SUBR ENTRY/EXIT
- SB6 PGNR-1 LWA OF POINTER AREA
- SX6 B0+
- * CLEAR LOW CORE POINTERS.
- CPA1 SA6 B6 CLEAR CORE
- SB6 B6-B1
- GT B6,B1,CPA1 IF NOT COMPLETE
- * CLEAR MULTIPLEXER TABLE.
- SB6 MUXP FWA OF MUX TABLE
- SB7 TXORG LWA+1 OF MUX POINTERS
- CPA2 SA6 B6 CLEAR CORE
- SB6 B6+B1
- LT B6,B7,CPA2 IF NOT COMPLETE
- MX6 12
- SB6 VDRL FWA OF *VDRL* ENTRIES
- SB7 B6+4 LWA+1 OF *VDRL* ENTRIES
- CPA3 SA6 B6 INITIALIZE ENTRIES TO NEGATIVE NUMBER
- SB6 B6+B1
- LT B6,B7,CPA3 IF NOT COMPLETE
- * CLEAR *TGPM* AND *TSEM* QUEUES
- SX6 B0+
- SB6 VTRP
- SB5 VTEQ
- CPA4 SA6 B6 CLEAR QUEUE ENTRY
- SB6 B6+B1
- LT B6,B5,CPA4 IF MORE ENTRIES TO CLEAR
- EQ CPAX RETURN
- PMP SPACE 4,10
- ** PMP - PRESET MISCELLANEOUS POINTERS.
- *
- * SETS THE FOLLOWING:
- * COMMAND TABLE POINTER.
- * HEADER MESSAGE ADDRESS.
- * WORDS 50 AND 51 FOR SCP/UCP INTERFACE.
- * IAF ACTIVE AS AN SCP.
- * NETWORK DRIVER STACK ADDRESS.
- * *TGPM* QUEUE STATUS WORDS.
- *
- * USES A - 1, 6, 7.
- * X - 1, 6, 7.
- *
- * MACROS CALLSS.
- PMP SUBR ENTRY/EXIT
- SX6 TCOM SET COMMAND TABLE POINTER
- SX7 TCOM+TCOML
- LX6 24
- BX7 X6+X7
- SA7 VCTP
- SX6 HEDR+3 SET HEADER MESSAGE ADDRESS
- SA6 VWMP
- * SET UP SYSTEM CONTROL POINT WORDS AND REQUEST SCP STATUS.
- BX6 X6-X6 CLEAR SCP SHUTDOWN FLAG
- SA6 VSHD
- SA1 PMPB GET PARAMETER WORDS
- SA2 A1+1
- BX6 X1 STORE IN SCP AREA
- LX7 X2
- SA6 SSIW
- SA7 A6+B1
- CALLSS 0,PMPC,R SET SCP ACTIVE
- * INITIALIZE *TGPM* QUEUE STATUS WORDS.
- SA1 PMPA INITIALIZE QUEUE STATUS WORDS
- BX6 X1
- SA6 VGPL
- SA1 A1+B1
- BX6 X1
- SA6 A6+B1
- * ZERO *TGPM* AND *TSEM* QUEUES.
- SA1 VTRP SET BEGINNING OF QUEUES
- PMP1 SX6 A1-VTEQ
- ZR X6,PMP2 IF END OF QUEUES
- BX6 X6-X6
- SA6 A1 ZERO QUEUE ENTRY
- SA1 A1+1
- EQ PMP1 CLEAR NEXT ENTRY
- * INITIALIZE NETWORK DRIVER STACK ADDRESS.
- PMP2 SA1 VNTP CHECK NETWORK TERMINAL POINTER
- ZR X1,PMPX IF NO NAM INTERFACE - RETURN
- SA1 NDRO GET DRIVER ORDINAL
- SA1 VDRL+X1 READ STACK POINTER
- AX1 24 SHIFT STACK ADDRESS
- SX6 X1+
- SX7 A1 SET STACK POINTER ADDRESS
- SA6 /IAFEX4/NDSA STORE STACK ADDRESS
- SA7 /IAFEX4/NSPA STORE STACK POINTER ADDRESS
- EQ PMPX RETURN
- PMPA VFD 6/VSCL,6/VMIL,12/VTSP,12/VTSP,12/VTSP,12/VTLP
- VFD 6/VLCL,6/VMIL,12/VTLP,12/VTLP,12/VTLP,12/VTEQ
- PMPB VFD 42/5LIAFEX,18/IFSI
- VFD 1/0,1/1,22/0,18/MAXB,18//SMFIF/BSMF
- PMPC CON 0
- SAD SPACE 4,10
- ** SAD - SET INSTRUCTION ADDRESSES.
- *
- * SETS ADDRESS FIELDS IN TABLE REFERENCE INSTRUCTIONS.
- *
- * ENTRY (TINST) = TABLE PRESET.
- * 12/POS, 1/LWAF, 11/0, 12/PTRA, 12/ADDR
- * POS = POSITION COUNTER + 2000B.
- * LWAF = USE TABLE LWA IF SET.
- * PTRA = POINTER ADDRESS.
- * ADDR = INSTRUCTION ADDRESS.
- * (B5) = ADDRESS OF *TINST* TABLE.
- * (B7) = TABLE LENGTH.
- *
- * EXIT INSTRUCTION ADDRESS FIELD SET.
- *
- * USES A - 1, 2, 6.
- * X - 1, 2, 3, 4, 6.
- * B - 2, 3, 4, 5, 6, 7.
- SAD SUBR ENTRY/EXIT
- SAD1 SB7 B7-B1 DECREMENT TABLE INDEX
- NG B7,SADX IF END OF TABLE - RETURN
- SA1 B5+B7 READ NEXT TABLE ENTRY
- UX4,B6 X1 (B6) = POSITION COUNTER
- SA2 X1
- AX1 18 SET TABLE POINTER
- SX1 X1
- SX3 X1
- PL X1,SAD3 IF POSITIVE VALUE WANTED
- BX1 -X1
- * GET POINTER TABLE ENTRY.
- SAD3 SA1 X1 READ TABLE POINTER
- PL X3,SAD4 IF POSITIVE VALUE WANTED
- BX1 -X1 COMPLEMENT POINTER
- SAD4 MX7 -18 SET MASK FOR ADDRESS FIELD
- SB4 B6-60 SET ADDRESS FIELD SHIFT COUNT
- LX4 59-47 CHECK LWAF BIT
- NG X4,SAD5 IF LWA WANTED
- SX6 A1-VBMP CHECK POINTER
- ZR X6,SAD5 IF BUFFER MEMORY POINTER
- AX1 24 SET TABLE FWA
- * INSERT TABLE ADDRESS IN INSTRUCTION.
- SAD5 BX1 -X7*X1 MASK TABLE ADDRESS
- AX2 X2,B4 POSITION INSTRUCTION
- BX3 -X7*X2 MASK ADDRESS FIELD
- BX2 X7*X2 CLEAR ADDRESS FIELD
- SX3 X3 EXTEND SIGN
- IX3 X3+X1 ADD (SUBTRACT) TABLE ADDRESS
- BX3 -X7*X3
- BX2 X2+X3 MERGE ADDRESS FIELD AND INSTRUCTION
- LX6 X2,B6 REPOSITION INSTRUCTION
- SA6 A2 REWRITE INSTRUCTION
- EQ SAD1 LOOP FOR NEXT ENTRY
- SPC SPACE 4,10
- ** SPC - SET PROCESSOR CALLS.
- *
- * SET IAFEX MAIN CONTROL LOOP TO CALL OR BYPASS NETWORK
- * INTERFACE CODE.
- *
- * ENTRY (VNTP) = NETWORK TERMINAL POINTER.
- *
- * EXIT MAIN LOOP *RJ* INSTRUCTIONS PRESET.
- *
- * USES A - 1, 2, 6.
- * X - 1, 2, 6.
- SPC SUBR ENTRY/EXIT
- SA1 SPCA ASSUME NO CALLS
- SA2 VNTP
- ZR X2,SPC1 IF NO NETWORK
- SA1 SPCB
- SPC1 BX6 X1
- SA6 //IAFA
- EQ SPCX EXIT
- SPCA SB0 0 (NO-OP)
- SB0 0 FILL WORD
- SPCB RJ /IAFEX4/NDR (EXECUTE NETWORK DRIVER)
- STD SPACE 4,10
- ** STD - START DRIVERS.
- *
- * CLEAR DRIVER INTERLOCKS TO ALLOW DRIVERS TO PICK
- * UP THEIR STACK ADDRESSES AND COMPLETE LOADING.
- *
- * ENTRY (VDRL - VDRL+4) = DRIVER INITIALIZATION WORDS.
- * 12/IL, 24/SA, 12/TC, 12/FT.
- * IL = DRIVER INTERLOCK.
- * SA = STACK ADDRESS.
- * TC = TERMINAL COUNT.
- * FT = FIRST TERMINAL NUMBER.
- *
- * EXIT DRIVER INTERLOCK BITS CLEARED.
- *
- * USES A - 1, 7.
- * X - 1, 6, 7.
- * B - 5, 7.
- STD SUBR ENTRY/EXIT
- SB7 B0 SET DRIVER WORD INDEX
- MX6 12 SET MASK
- SB5 VDRL DRIVER WORD POINTER
- STD1 SA1 B5+B7 READ DRIVER WORD
- SB7 B7+B1 ADVANCE INDEX
- NG X1,STDX IF END OF DRIVER WORD TABLE, RETURN
- BX7 -X6*X1 CLEAR INTERLOCK
- SA7 A1
- EQ STD1 LOOP FOR NEXT DRIVER
- WDP SPACE 4,10
- ** WDP - WAIT DRIVER PRESET COMPLETE.
- *
- * WAIT FOR DRIVER(S) TO SIGNAL COMPLETION OF FIRST PHASE
- * OF INITIALIZATION BY SETTING *VDRL* WORD(S).
- *
- * ENTRY (VDRL - VDRL+4) = DRIVER INITIALIZATION WORDS.
- * 11/0, 1/IL, 24/DN, 12/TC, 12/CL.
- * IL = INTERLOCK (DRIVER RESPONSE) BIT.
- * DN = DRIVER NAME.
- * TC = TERMINAL (PORT) COUNT.
- * CL = ID AND CONVERSION TABLE LENGTH.
- *
- * EXIT (VMNL) = NUMBER OF DRIVER PORTS.
- * (VHMP) = 36/HIGHEST MUX PORT, 24/0.
- * (VNTP) = NUMBER OF NETWORK TERMINALS.
- *
- * USES A - 1, 6.
- * X - 0, 1, 2, 4, 5, 6.
- *
- * CALLS RCL=.
- WDP SUBR ENTRY/EXIT
- SX0 B0+ INITIALIZE PORT COUNT
- SX5 VDRL
- WDP1 RECALL WAIT
- SA1 X5 READ DRIVER RESPONSE
- MX4 -12
- MX2 12
- BX2 X2*X1
- ZR X2,WDP1 IF DRIVER PRESET NOT COMPLETE
- NG X1,WDP2 IF ALL DRIVERS COMPLETE
- AX1 12 MASK PORT COUNT
- BX1 -X4*X1
- SX5 X5+B1 ADVANCE DRIVER POINTER
- IX0 X1+X0 UPDATE PORT COUNT
- EQ WDP1 LOOP FOR NEXT DRIVER
- * STORE DRIVER PORT COUNT AND RETURN.
- WDP2 AX1 12
- BX6 -X4*X1
- SA6 VNTP SET TERMINAL COUNT
- SX6 X0+ STORE PORT COUNT
- SA6 VMNL
- ZR X6,WDPX IF NO MUX PORTS
- SX6 X6+VPST-1 SET HIGHEST MUX PORT NUMBER
- LX6 24
- SA6 VHMP
- EQ WDPX RETURN
- TITLE COMMON DECKS.
- SPACE 4
- *CALL COMCARG
- *CALL COMCCIO
- *CALL COMCCPM
- *CALL COMCLFM
- *CALL COMCOVL
- *CALL COMCSYS
- *CALL COMCPFM
- *CALL COMCDXB
- *CALL COMCMVE
- *IF DEF,IAF$
- *CALL COMCZTB
- LIST X
- *CALL COMCLNI
- LIST *
- *CALL COMCLOD
- *ENDIF
- TITLE INITIALIZATION TABLES AND BUFFERS.
- SPACE 4,5
- ** TICP - TABLE OF *IAFEX* COMMAND PARAMETERS.
- TICP BSS 0
- T ARG ATAS,ATPV,400B
- ARG
- FBUF SPACE 4,10
- USE BUFFERS
- ** FBUF - ALL-PURPOSE CIO CIRCULAR BUFFER.
- FBUF BSSZ 1001B ALL-PURPOSE CIO BUFFER
- FBUFL EQU *-FBUF
- TINS SPACE 4,10
- ** TINS - EXECUTIVE OVERLAY INSTRUCTION MODIFICATION TABLE.
- TINS BSSZ 300B
- TINSL EQU *-TINS
- ERRMI TINSL-//TINSTL
- TINS2 SPACE 4,10
- ** TINS2 - IAFEX4 INSTRUCTION MODIFICATION TABLE.
- TINS2 BSSZ 300B
- TINS2L EQU *-TINS2
- ERRMI TINS2L-/IAFEX4/TINSTL
- QUAL
- SPACE 4,10
- ** GLOBAL SYMBOL DEFINITIONS.
- *IF DEF,IAF$
- IAFEX EQU /IAFINI/INI
- *ELSE
- RDFEX EQU /IAFINI/INI
- *ENDIF
- SSJ= EQU 0
- RFL= EQU *
- EJECT
- TTL IAFEX1 - TTY EXECUTIVE PROCESSOR.
- IDENT IAFEX1,TRQT,PRS,1,0
- *COMMENT IAFEX - EXECUTIVE PROCESSOR.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- BASE DECIMAL
- SPACE 4
- *** IAF - INTERACTIVE FACILITY.
- * R. E. TATE 70/03/17.
- * P. D. FARRELL 75/02/07.
- * P. D. FARRELL 77/03/17.
- * L. K. TUTTLE, K. F. REHM 81/10/21.
- SPACE 4
- *** IAF PERFORMS INTERACTIVE PROCESSING FOR NOS. IT CRACKS
- * COMMANDS FROM INTERACTIVE USERS AND CALLS THE APPROPRIATE
- * ROUTINE TO PROCESS THE COMMAND. IT MAKES THE REQUESTS
- * TO DUMP SOURCE INPUT TO DISK AND TO REFILL OUTPUT BUFFERS
- * FROM DISK. IT ALSO HANDLES BUFFER MEMORY ALLOCATION.
- * THE AMOUNT OF MEMORY REQUIRED BY *IAFEX* WILL BE INCREASED
- * AS MORE TERMINALS BECOME ACTIVE.
- SPACE 4
- *** PROGRAMS CALLED.
- *
- * 1TA - IAFEX AUXILIARY.
- * 1TO - TERMINAL INPUT/OUTPUT.
- * 1MA - ISSUE DAYFILE MESSAGE.
- EJECT
- MACROS TITLE MACROS.
- SPACE 4
- COMMND SPACE 4
- ** COMMND - THIS MACRO GENERATES THE ENTRY ADDRESSES AND A TAG
- * WITH THE VALUE OF THE COMMAND BITS (59 - 47) FOR THE *IAFEX*
- * REENTRY QUEUE.
- *
- * DEFINITIONS.
- *
- * PROC = ENTRY POINT OF ROUTINE TO PROCESS THIS COMMAND.
- * SYSR = QUEUE REQUEST TO BE PLACED IN.
- * NPRO = ADDRESS TO RETURN TO WHEN THIS ENTRY COMPETE.
- * ERRA = ADDRESS TO RETURN TO IF ERROR ON COMPLETION.
- * FUNC = FUNCTION CODE TO BE PASSED TO THE CALLED PROGRAM.
- * (ALSO SEE TSR FOR ADDITIONAL DOCUMENTATION.)
- COMMND MACRO PROC,SYSR,NPRO,ERRA,FUNC
- PROC$ EQU *
- VFD 1/0
- IFC NE,*SYSR**
- VFD 5/SYSR-TRQT
- ELSE 1
- VFD 5/0
- IFC NE,*FUNC**
- VFD 6/FUNC
- ELSE 1
- VFD 6/0
- VFD 12/PROC-TSRPROC
- IFC NE,*ERRA**
- VFD 18/ERRA
- ELSE 1
- VFD 18/TSA SET ABORT
- IFC NE,*NPRO**
- VFD 18/NPRO
- ELSE 1
- VFD 18/TSA SET ABORT
- ENDM
- INDEX SPACE 4
- *** INDEX - INDEXED TABLE ENTRY GENERATION.
- *
- *
- * INDEX GENERATES TABLES WHICH ARE TO BE INDEXED BY VALUES
- * WHICH MAY CHANGE DUE TO ASSEMBLY MODES OR OPTIONS.
- *
- *
- * FIRST CALL - SET START OF TABLE AND GENERATE DEFAULT ENTRIES.
- *
- *NAME INDEX MACRO,LENGTH,ADDRESS
- * ENTRY *NAME* = NAME OF TABLE.
- * *LENGTH* = TABLE LENGTH.
- *
- * *MACRO* = NAME OF MACRO WHICH GENERATES TABLE ENTRY.
- * CON ADDRESS
- *
- * *ADDRESS* = ADDRESS FIELD OF ENTRY GENERATION
- * INSTRUCTION. ADDRESS MUST BE EXPRESSED
- * AS A DELIMITED CHARACTER STRING. THIS
- * TO ALLOW ALMOST ANYTHING IN AN ADDRESS
- * FIELD.
- *
- * EXIT *.1* = MICRO OF *MACRO*
- * *NAME* = *.1* = BASE ADDRESS OF TABLE.
- * *NAMEL* = LENGTH OF TABLE.
- * *TBLLGH* = LENGTH OF TABLE FOR LOCAL USE.
- *
- * USES MICRO *.2*.
- *
- *
- * TABLE ENTRY GENERATION -
- *
- *NAME INDEX ,IND,ADDRESS
- * ENTRY *NAME* = NAME OF TABLE ENTRY.
- * *IND* = INDEX AT WHICH ENTRY IS TO BE PLACED.
- * *ADDRESS* = ADDRESS FIELD OF ENTRY GENERATION
- * INSTRUCTION.
- *
- * EXIT *NAME* = ADDRESS OF ENTRY.
- *
- * USES MICRO *.2*.
- MACRO INDEX,NAME,MAC,IND,ADD
- IFC NE,*MAC**
- .1 MICRO 1,, MAC
- .2 MICRO 1,,ADD
- NAME ".1" ".2"
- .1 SET NAME
- TBLLGH SET IND
- NAME_L EQU IND
- DUP IND-1,1
- ".1" ".2"
- ORG .1+TBLLGH
- ELSE
- .2 MICRO 1,,ADD
- ORG .1+IND
- LOC IND
- ".1" ".2"
- ORG .1+IND
- NAME BSS 0
- ORG .1+TBLLGH
- ENDIF
- ENDM
- INMOD SPACE 4
- ** INMOD - THIS MACRO IN CONJUNCTION WITH THE FOLLOWING OPDEF,S
- * MAKES IT POSSIBLE TO SPECIFY A MODIFIER ON ALL 30 BIT
- * INCREMENT INSTRUCTIONS. THIS MODIFER MUST BE IN THE FORM
- * OF A POINTER TO ONE OF THE TABLE POINTERS THAT IS SET
- * DYNAMICALLY AT INITILIZATION TIME. THE INSTRUCTION WILL
- * BE MODIFIED DURING INITILIZATION.
- * THIS IS USEFUL FOR ACCESSING THE POINTERS THAT ARE
- * DYNAMICALLY SET AT INITILIZATION TIME SUCH AS THE FIRST
- * WORD ADDRESS OF THE TERMINAL TABLE.
- *
- * DEFINITIONS.
- *
- * PTRA = POINTER DESIRED.
- * LWAF = IF DEFINED TAKE LWA INSTEAD OF FWA.
- *
- * EXAMPLE-
- * TA1 B5,VTTP
- * THIS WILL GENERATE A 30 BIT INSTRUCTION OF THE FOLLOWING FORM
- * SA1 B5+K
- * WHERE K = THE FIRST WORD ADDRESS OF THE TERMINAL TABLE.
- INMOD MACRO PTRA,LWAF
- LOCAL INM1,INM2
- QUAL
- * GENERATE REFERENCE TO SYMBOL.
- INM1 SET PTRA
- * GENERATE TABLE ENTRY.
- INM1 SET *P
- INM2 SET *
- IFEQ INM1,60,2
- INM1 SET 0
- INM2 SET *-1
- TINST RMT
- VFD 12/2000B+INM1
- IFC EQ,*LWAF**
- VFD 12/0
- ELSE 1
- VFD 12/4000B
- VFD 18/PTRA
- VFD 18/INM2
- TINST RMT
- QUAL *
- ENDM
- OPDEFS SPACE 4
- ** OPDEF,S USED WITH INMOD.
- TAAQ,Q OPDEF P1,P2,P3,P4
- SA.P1 A.P2+P3
- INMOD P4
- ENDM
- TAA,Q OPDEF P1,P2,P4
- SA.P1 A.P2+0
- INMOD P4
- ENDM
- TAAQ,Q,Q OPDEF P1,P2,P3,P4,P5
- SA.P1 A.P2+P3
- INMOD P4,P5
- ENDM
- TAA,Q,Q OPDEF P1,P2,P4,P5
- SA.P1 A.P2+0
- INMOD P4,P5
- ENDM
- TABQ,Q OPDEF P1,P2,P3,P4
- SA.P1 B.P2+P3
- INMOD P4
- ENDM
- TAB,Q OPDEF P1,P2,P4
- SA.P1 B.P2+0
- INMOD P4
- ENDM
- TABQ,Q,Q OPDEF P1,P2,P3,P4,P5
- SA.P1 B.P2+P3
- INMOD P4,P5
- ENDM
- TAB,Q,Q OPDEF P1,P2,P4,P5
- SA.P1 B.P2+0
- INMOD P4,P5
- ENDM
- TAXQ,Q OPDEF P1,P2,P3,P4
- SA.P1 X.P2+P3
- INMOD P4
- ENDM
- TAX,Q OPDEF P1,P2,P4
- SA.P1 X.P2+0
- INMOD P4
- ENDM
- TAXQ,Q,Q OPDEF P1,P2,P3,P4,P5
- SA.P1 X.P2+P3
- INMOD P4,P5
- ENDM
- TAX,Q,Q OPDEF P1,P2,P4,P5
- SA.P1 X.P2+0
- INMOD P4,P5
- ENDM
- TAQ,Q OPDEF P1,P3,P4
- SA.P1 B0+P3
- INMOD P4
- ENDM
- TAQ,Q,Q OPDEF P1,P3,P4,P5
- SA.P1 B0+P3
- INMOD P4,P5
- ENDM
- TBAQ,Q OPDEF P1,P2,P3,P4
- SB.P1 A.P2+P3
- INMOD P4
- ENDM
- TBA,Q OPDEF P1,P2,P4
- SB.P1 A.P2+0
- INMOD P4
- ENDM
- TBAQ,Q,Q OPDEF P1,P2,P3,P4,P5
- SB.P1 A.P2+P3
- INMOD P4,P5
- ENDM
- TBA,Q,Q OPDEF P1,P2,P4,P5
- SB.P1 A.P2+0
- INMOD P4,P5
- ENDM
- TBBQ,Q OPDEF P1,P2,P3,P4
- SB.P1 B.P2+P3
- INMOD P4
- ENDM
- TBB,Q OPDEF P1,P2,P4
- SB.P1 B.P2+0
- INMOD P4
- ENDM
- TBBQ,Q,Q OPDEF P1,P2,P3,P4,P5
- SB.P1 B.P2+P3
- INMOD P4,P5
- ENDM
- TBB,Q,Q OPDEF P1,P2,P4,P5
- SB.P1 B.P2+0
- INMOD P4,P5
- ENDM
- TBXQ,Q OPDEF P1,P2,P3,P4
- SB.P1 X.P2+P3
- INMOD P4
- ENDM
- TBX,Q OPDEF P1,P2,P4
- SB.P1 X.P2+0
- INMOD P4
- ENDM
- TBXQ,Q,Q OPDEF P1,P2,P3,P4,P5
- SB.P1 X.P2+P3
- INMOD P4,P5
- ENDM
- TBX,Q,Q OPDEF P1,P2,P4,P5
- SB.P1 X.P2+0
- INMOD P4,P5
- ENDM
- TBQ,Q OPDEF P1,P3,P4
- SB.P1 B0+P3
- INMOD P4
- ENDM
- TBQ,Q,Q OPDEF P1,P3,P4,P5
- SB.P1 B0+P3
- INMOD P4,P5
- ENDM
- TXAQ,Q OPDEF P1,P2,P3,P4
- SX.P1 A.P2+P3
- INMOD P4
- ENDM
- TXA,Q OPDEF P1,P2,P4
- SX.P1 A.P2+0
- INMOD P4
- ENDM
- TXAQ,Q,Q OPDEF P1,P2,P3,P4,P5
- SX.P1 A.P2+P3
- INMOD P4,P5
- ENDM
- TXA,Q,Q OPDEF P1,P2,P4,P5
- SX.P1 A.P2+0
- INMOD P4,P5
- ENDM
- TXBQ,Q OPDEF P1,P2,P3,P4
- SX.P1 B.P2+P3
- INMOD P4
- ENDM
- TXB,Q OPDEF P1,P2,P4
- SX.P1 B.P2+0
- INMOD P4
- ENDM
- TXBQ,Q,Q OPDEF P1,P2,P3,P4,P5
- SX.P1 B.P2+P3
- INMOD P4,P5
- ENDM
- TXB,Q,Q OPDEF P1,P2,P4,P5
- SX.P1 B.P2+0
- INMOD P4,P5
- ENDM
- TXXQ,Q OPDEF P1,P2,P3,P4
- SX.P1 X.P2+P3
- INMOD P4
- ENDM
- TXX,Q OPDEF P1,P2,P4
- SX.P1 X.P2+0
- INMOD P4
- ENDM
- TXXQ,Q,Q OPDEF P1,P2,P3,P4,P5
- SX.P1 X.P2+P3
- INMOD P4,P5
- ENDM
- TXX,Q,Q OPDEF P1,P2,P4,P5
- SX.P1 X.P2+0
- INMOD P4,P5
- ENDM
- TXQ,Q OPDEF P1,P3,P4
- SX.P1 B0+P3
- INMOD P4
- ENDM
- TXQ,Q,Q OPDEF P1,P3,P4,P5
- SX.P1 B0+P3
- INMOD P4,P5
- ENDM
- USECMN SPACE 4
- ** USECMN - THIS MACRO GENERATES THE TABLE ENTRIES AND THE
- * INDEX WORDS FOR PROCESSING USER COMMANDS.
- *
- * EACH CALL GENERATES A WORD WHICH CONTAINS THE NAME
- * OF THE COMMAND LEFT JUSTIFIED IN DISPLAY CODE AND
- * THE ADDRESS OF THE COMMAND PROCESSOR. A SECOND WORD
- * IS ALSO GENERATED WHICH INDICATES WHETHER THE COMMAND IS A
- * VALID SECONDARY COMMAND, THE NUMBER OF LEGAL PARAMETERS,
- * AND THE NUMBER OF TIMES THE COMMAND HAS BEEN PROCESSED.
- * EACH CALL FOR A COMMAND STARTING WITH A DIFFERENT CHARACTER
- * THAN THE PREVIOUS CALL SETS A VALUE WHICH IS USED
- * TO BUILD INDEX WORDS TO THE COMMAND TABLE TO REDUCE
- * SEARCH TIME. (SEE TCOM TABLE)
- *
- *
- * TCOM TABLE FORMAT.
- *
- * WORD - 1.
- * VFD 42/0LCOMMAND,18/PROCESSOR ADDRESS.
- * WORD - 2.
- * VFD 6/BITS USED FOR COMMAND FLAGS
- * VFD 6/NUMBER OF PARAMETERS
- * VFD 12/ FIELD LENGTH
- * VFD 18/SUB-SYSTEMS VALID
- * VFD 18/OCCURENCE COUNT
- * USECMN NAME,ROUT,COUN,BITS,,P
- *
- * DEFINITIONS.
- *
- * NAME = NAME OF COMMAND.
- * ROUT = ENTRY ADDRESS OF PROCESSING ROUTINE.
- * COUN = MAXIMUM NUMBER OF PARAMETERS LEGAL IN A COMMAND.
- * IF IT IS NOT DEFINED, ONE IS ASSUMED. IF IT IS DEFINED AS
- * ZERO, IT WILL BE ASSUMED ANY NUMBER ARE LEGAL.
- * BITS = NON NULL HAVE FOLLOWING BIT MEANINGS
- * BIT MEANING
- * 59 SECONDARY COMMAND.
- * 58 LEGAL COMMAND WHEN CHARGE NUMBER REQUIRED.
- * 57 INCORRECT FOR NETWORK TERMINAL.
- * P1, P2, ETC. = SUB-SYSTEMS COMMAND IS VALID IN. IF THESE
- * ARE NEGATIVE THEN THEY ARE THE SUBSYSTEMS
- * NOT VALID IN. ALL ENTRIES IN P FIELDS MUST
- * BE POSITIVE OR ALL NEGATIVE. IF THE P FIELD IS
- * NULL, THEN THE DEFAULT IS TAKEN WHICH IS ALL SYSTEMS
- * EXCEPT ACCESS.
- SCOM EQU 40B
- CHGR EQU 20B
- INVN EQU 10B INCORRECT FOR NETWORK TERMINALS
- USECMN MACRO NAME,ROUT,COUN,BITS,FL,P
- U1 MICRO 1,7,*NAME* TRUNCATE NAME TO SEVEN CHARACTERS
- U2 MICRO 1,1,*NAME* GET FIRST CHARACTER OF NAME
- IFC NE,*"U2"*"U3"*,2 IF NEW BEGINNING CHARACTER
- US"U2" SET *
- U3 MICRO 1,1,*"U2"*
- VFD 42/0L"U1",18/ROUT
- IFC EQ,*BITS**
- VFD 6/0
- ELSE 1
- VFD 6/BITS
- IFC EQ,*COUN**,1
- VFD 6/1
- IFC EQ,*COUN*0*
- VFD 6/77B
- ELSE 2
- IFC NE,*COUN**,1
- VFD 6/_COUN
- IFC EQ,*FL**
- VFD 12/0
- ELSE 1
- ERR FL OPTION NO LONGER AVAIALABLE
- U4 DECMIC ACCS
- U5 SET 0
- UA IFC EQ,*P*ALL*
- U5 SET 777777B
- UA ELSE
- UB IFC EQ,*P** IF NULL ALL SYSTEMS VALID EXCEPT ACCESS
- U5 SET 777777B-1S"U4"
- UB ELSE
- U7 MICRO 1,1,*P*
- UC IFC EQ,*"U7"*-*
- U5 SET 777777B
- IRP P
- IFC NE,*P**,5
- U7 SET P
- U7 SET -U7
- ERRMI U7
- U4 DECMIC _U7
- U5 SET U5-1S"U4"
- IRP
- UC ELSE
- U5 SET 0
- IRP P
- IFC NE,*P**,3
- ERRMI P
- U4 DECMIC _P
- U5 SET U5+1S"U4"
- IRP
- UC ENDIF
- UB ENDIF
- UA ENDIF
- VFD 18/U5
- VFD 18/0 OCCURENCE COUNT
- ENDM
- NOREF U1,U2,U3,U4,U5,U6,U7
- GTM SPACE 4,15
- ** GTM - GENERATE IAFEX MESSAGE.
- *
- * GENERATES MESSAGE IN IAFEX FORMAT. AN *EM* (EXTENDED
- * MODE) CONTROL BYTE IS INSERTED AT THE BEGINNING OF
- * THE MESSAGE.
- * THIS MACRO IS USED BY OTHER IAFEX MACROS TO DEFINE
- * TERMINAL MESSAGES.
- *
- * LOC GTM STR,TB
- *
- * DEFINITIONS.
- *
- * LOC = LOCATION SYMBOL. IF NOT PRESENT, A LITERAL
- * IS GENERATED. THE ADDRESS OF THE LITERAL
- * MAY THEN BE REFERENCED BY THE SYMBOL *.2*.
- *
- * STR = CHARACTER STRING. MAY CONTAIN CARRIAGE CONTROL
- * MICROS AND MAY NOT CONTAIN THE CHARACTER *+*
- * (*PLUS* SIGN).
- *
- * TB = TERMINATOR BYTE MICRO. IF OMITTED, *CEB*
- * (0002) IS ASSUMED.
- PURGMAC GTM
- MACRO GTM,N,STR,TB
- NOREF .1,.2,.L
- * DEFINE STRING MICRO.
- .1 MICRO 1,,+STR+
- * SET STRING LENGTH TO MULTIPLE OF TWO CHARACTERS.
- .1 MICRO 1,,+"EM"".1"+
- .L MICCNT .1
- IFNE .L,.L/2*2,1
- .1 MICRO 1,,+".1"_'+
- * SET TERMINATOR.
- IFC EQ,$TB$$
- .2 MICRO 1,, "CB"
- ELSE
- .2 MICRO 1,, "TB"
- ENDIF
- * GENERATE STRING OR LITERAL AND SET LENGTH OF MESSAGE.
- .2 MICRO 1,,+".1"".2"+
- IFC NE,$N$$
- N DATA C+".2"+
- ELSE
- .2 SET =C+".2"+
- ENDIF
- .L MICCNT .2
- .L SET .L/10+1
- ENDM
- IFMUX SPACE 4,10
- ** IFMUX - MULTIPLEXER TERMINAL CONDITIONAL JUMP.
- *
- * IFMUX ADR
- *
- * ENTRY (B2) = TERMINAL NUMBER.
- * ADR = ADDRESS.
- *
- * EXIT TO ADR IF MULTIPLEXER TERMINAL.
- *
- * USES B - 6.
- PURGMAC IFMUX
- IFMUX MACRO ADR
- TB6 B0,/IAFINI/VHMP
- LE B2,B6,ADR
- ENDM
- IFNET SPACE 4,10
- ** IFNET - NETWORK TERMINAL CONDITIONAL JUMP.
- *
- * IFNET ADR
- *
- * ENTRY (B2) = TERMINAL NUMBER.
- * ADR = ADDRESS.
- *
- * EXIT TO ADR IF NETWORK TERMINAL.
- *
- * USES B - 6.
- PURGMAC IFNET
- IFNET MACRO ADR
- TB6 B0,/IAFINI/VHMP
- GT B2,B6,ADR
- ENDM
- MSG SPACE 4,10
- ** MSG - GENERATE IAFEX MESSAGE.
- *
- * MSG (STR),TB
- *
- * STR = MESSAGE STRING.
- * TB = TERMINATOR BYTE. *0002* ASSUMED.
- PURGMAC MSG
- MACRO MSG,L,STR,TB
- LOCAL A
- IFC NE,*L**
- L GTM (STR),TB
- ELSE
- A GTM (STR),TB
- ENDIF
- ENDM
- SMA SPACE 4,10
- ** SMA - SET IAFEX MESSAGE ADDRESS.
- *
- * SMA R,(STR),TB
- *
- * R = REGISTER TO BE SET WITH ADDRESS OF
- * GENERATED MESSAGE LITERAL.
- * STR = MESSAGE STRING.
- * TB = TERMINATOR BYTE. *0002* ASSUMED.
- SMA MACRO R,STR,TB
- GTM (STR),TB
- S_R .2
- ENDM
- TTADD SPACE 4
- ** TTADD - THIS MACRO IS USER FOR GENERATING TERMINAL
- * TABLE ADDRESSES.
- *
- * DEFINITIONS.
- *
- * RTN = REGISTER CONTAINING TERMINAL NUMBER
- * RER = RESULT REGISTER WHICH WILL BE SET TO TERMINAL TABLE
- * ADDRESS.
- * XA, XB = TWO X REGISTERS TO BE USED IN CALCULATION.
- * TTW = TERMINAL TABLE WORD.
- TTADD MACRO RTN,RER,XA,XB,TTW
- R= XA,RTN
- IFEQ VTTL,8,2
- L_XA 3
- TTA SKIP
- IFEQ VTTL,16,2
- L_XA 4
- TTA SKIP
- R= XB,VTTL
- I_XA XA*XB
- TTA ENDIF
- T_RER XA+TTW,VTTP
- ENDM
- PARAM SPACE 4,55
- ** PARAM - CONSTRUCT PARAMETER BLOCK FOR EJT SYSTEM REQUEST.
- *
- * CALL FORMATS ARE AS FOLLOWS.
- *
- * PARAM DTEJ,RC
- *
- * DTEJ - DETACH JOB.
- * RC - REASON CODE.
- *
- * PARAM ENEJ,PPI,EPN
- *
- * ENEJ - ENABLE JOB.
- * PPI - PREPROCESSOR INDEX.
- * EPN - ADDRESS OF ENTRY POINT NAME,
- * - LEFT JUSTIFIED AND ZERO FILLED.
- *
- * PARAM FJEJ
- *
- * FJEJ - FREEZE JOB.
- *
- * PARAM RCEJ,JSN,MSG
- *
- * RCEJ - RECOVER JOB.
- * JSN - ADDRESS OF JSN TO RECOVER.
- * MSG - ADDRESS OF BUFFER FOR MSW1.
- *
- * PARAM RSEJ
- *
- * RSEJ - RESTART JOB.
- *
- * PARAM RTEJ,OT,FG
- *
- * RTEJ - RESET SYSTEM TIMEOUT ON SUSPENDED JOBS.
- * OT - ORIGIN TYPE OF JOBS TO RESET.
- * FG - PRESET FLAGS FIELD.
- *
- * PARAM SAEJ,ERF
- *
- * SAEJ - SET ABORT FLAG ON JOB.
- * ERF - ERROR FLAG TO SET.
- *
- * PARAM TJEJ
- *
- * TJEJ - TERMINATE INTERACTIVE JOB.
- *
- *
- * THE FORMAT OF THE PARAMETER BLOCK IS AS FOLLOWS (NOTE THAT
- * ANY CHANGE SHOULD ALSO BE DOCUMENTED IN *CPUMTR* AND *1MA*).
- *
- *(B4) 24/ JSN,12/ FLAGS,6/ PPI,8/ ERR,9/ FCN,1/C
- * 42/ NAME,6/ ERF,12/ EJTO
- * 3/RES,3/JAL,6/ OT,6/ RC,18/ MSG BUF,24/RES
- * 60/ REC WD 1
- * 60/ REC WD 2
- * 12/ INST,12/ TN,36/ CDC RES
- * 42/ TNAME, 18/ RESERVED
- *
- * JSN = JOB SEQUENCE NUMBER.
- * FLAGS = RTEJ - BIT 0 = SELECT EJT ENTRIES BY ORIGIN TYPE.
- * BIT 1 = DEFAULT TIMEOUT (CLEAR = 0 TIMEOUT).
- * PPI = PREPROCESSOR INDEX.
- * ERR = ERROR RETURN (0 ON CALL).
- * FCN = FUNCTION CODE.
- * C = COMPLETE BIT (0 ON CALL).
- * NAME = ENEJ - ENTRY POINT NAME.
- * DTEJ, RCEJ, RSEJ - USER NAME.
- * ERF = ERROR FLAG TO SET.
- * EJTO = EXECUTING JOB TABLE ORDINAL.
- * RES = RESERVED FOR CDC.
- * JAL = JOB ACCESS LEVEL LIMIT (RETURNED ON *DTEJ*; 0 ON CALL).
- * OT = ORIGIN TYPE.
- * RC = REASON CODE.
- * MSG BUF = RELATIVE ADDRESS OF BUFFER TO RETURN *MS1W*.
- * REC WD 1 = RECOVERY WORD 1 (NFL WORD RC1N - SEE *PPCOM*).
- * REC WD 2 = RECOVERY WORD 2 (NFL WORD RC2W - SEE *PPCOM*).
- * INST = RESERVED FOR INSTALLATIONS.
- * TN = TERMINAL NUMBER.
- * CDC RES = RESERVED FOR CDC.
- * TNAME = TERMINAL NAME (RETURNED BY *DTEJ* AND *TJEJ*;
- * SPECIFIED ON CALL FOR *RCEJ*).
- *
- *
- * ENTRY (B4) = ADDRESS OF PARAMETER BLOCK AREA.
- * (A0) = TERMINAL TABLE ADDRESS.
- *
- * USES X - 0, 1, 2, 3, 6, 7.
- * A - 1, 3, 6, 7.
- *
- * CALLS GRI, PPB.
- PARAM MACRO TYPE,P1,P2,P3
- LOCAL PARAM1,PARAM2
- MACREF PARAM
- LIST M
- SX7 TYPE
- RJ PPB PRESET PARAMETER BLOCK
- LIST *
- TYPE1 IFC EQ,$TYPE$DTEJ$
- LIST M
- SA1 A0+VUIT GET USERNAME
- MX6 42
- BX6 X6*X1
- BX6 X2+X6
- SA6 A7+B1 SET WORD ONE - USERNAME AND EJT ORDINAL
- R= X7,P1 SET REASON CODE
- LX7 42
- SA7 A6+B1
- RJ GRI GATHER RECOVERY INFORMATION
- SX6 B2 SET TERMINAL NUMBER IN WORD 5
- LX6 36
- SA6 B4+5
- LIST *
- TYPE1 ENDIF
- TYPE2 IFC EQ,$TYPE$ENEJ$
- LIST M
- BX6 X2
- IFC NE,$P2$$,2
- SA1 P2 GET ENTRY POINT NAME
- MX2 42
- BX1 X2*X1
- BX6 X6+X1 MERGE EJT ORDINAL
- SA6 A7+B1 SET WORD 1
- IFC NE,$P1$$,3
- R= X3,P1
- LX3 18
- BX7 X3+X7 MERGE PPI
- SA1 A0+VSTT COPY DISABLED TERMINAL FLAG INTO REQUEST
- MX6 1
- BX1 X1*X6
- LX1 24-59
- BX7 X1+X7
- SA7 A7 SET WORD ZERO
- LIST *
- TYPE2 ENDIF
- TYPE3 IFC EQ,$TYPE$FJEJ$
- LIST M
- SX6 B2 SUPPLY TERMINAL NUMBER FOR *TSEM*
- LX6 36
- SA6 A7+5
- BX6 X2
- SA6 A7+B1
- LIST *
- TYPE3 ENDIF
- TYPE4 IFC EQ,$TYPE$RCEJ$
- LIST M
- R= A3,P1
- BX7 X3+X7
- SA1 A0+VUIT SET USERNAME
- MX6 42
- BX6 X1*X6
- SA6 A7+B1 SET WORD ONE - USERNAME AND EJT ORDINAL
- R= X0,P2
- LX0 24
- SA7 A7
- BX6 X0
- SA6 A6+B1 WORD TWO - BUFFER ADDRESS
- SX6 B2
- LX6 36
- SA6 A6+3
- LIST *
- TYPE4 ENDIF
- TYPE5 IFC EQ,$TYPE$RSEJ$
- LIST M
- SA1 A0+VUIT GET USER NAME
- MX6 42
- BX6 X6*X1
- BX6 X2+X6
- SA6 A7+B1 SET WORD ONE - USER NAME AND EJT ORDINAL
- LIST *
- TYPE5 ENDIF
- TYPE6 IFC EQ,$TYPE$RTEJ$
- LIST M
- BX6 X2
- SA6 A7+B1 SET WORD ONE - EJT ORDINAL
- IFC NE,$P1$$,4
- R= X3,P1
- LX3 48
- BX6 X3
- SA6 A6+B1 SET WORD TWO - ORGIN TYPE
- IFC NE,$P2$$,4
- R= X0,P2
- LX0 24
- BX7 X0+X7
- SA7 A7 SET FLAGS
- LIST *
- TYPE6 ENDIF
- TYPE7 IFC EQ,$TYPE$SAEJ$
- LIST M
- R= X3,P1
- LX3 12-0
- BX6 X2+X3
- SA6 A7+B1 SET WORD ONE - ERROR FLAG
- LIST *
- TYPE7 ENDIF
- TYPE8 IFC EQ,$TYPE$TJEJ$
- LIST M
- BX7 X2
- SA7 A7+B1 SET WORD ONE - EJT ORDINAL
- RJ GRI GATHER RECOVERY INFORMATION
- SX6 B2 SET TERMINAL NUMBER IN WORD 5
- LX6 36
- SA6 B4+5
- LIST *
- TYPE8 ENDIF
- ENDM
- TQST TITLE TABLE OF QUEUES.
- ** TQST - TABLE OF QUEUES.
- * THIS TABLE CONSISTS OF ALL THE QUEUES THAT MAY HAVE
- * REQUESTS IN THE REENTRY TABLE.
- *
- * THE FORMAT OF THIS TABLE IS AS FOLLOWS
- *
- * CCCC NNNN 00NN NN00 YYYY
- * 0000 0000 TTTT TTTT TTTT
- * WHERE-
- * CCCC = NUMBER OF ENTRIES (PACKED FORMAT).
- * NNNN = FIRST TERMINAL ENTRY.
- * YYYY = LAST TERMINAL ENTRY.
- * TTTT TTTT TTTT = RESOURCE CONTROL COUNT (RESOURCE CONROL
- * QUEUE).
- * QUEUE TABLE.
- ORG TXORG
- TRQT BSS 0
- SSPA CON 0 CURRENT ENTRY
- WCMQ VFD 12/2000B,48/0 WAIT COMPLETION QUEUE
- CON 0
- TIMQ VFD 12/2000B,48/0 TIME DELAY QUEUE
- CON 0
- MNWQ VFD 12/2000B,48/0 MONITOR WAIT QUEUE
- CON 0
- * PPU REQUEST QUEUES.
- ITAQ VFD 12/2000B,48/0
- ITOQ VFD 12/2000B,48/0
- * PPU REQUEST WORDS.
- PPUR BSS 0 PPU REQUEST QUEUE
- PMSG CON 0 *MSG* AND FL CHANGE REQUEST
- CON 0
- CON 0
- PITA CON 1 *1TA* REQUEST
- PITO CON 1 *1TO* REQUEST
- CON -0
- * INTERESTING STATISTICS.
- CPBM CON 0 NUMBER OF TIMES BELOW MINIMUM POT SUPPLY
- * CLOCKS.
- RTIM CON 0 36 BIT MILLI SECOND CLOCK
- STIM CON 0 24 BIT SECOND CLOCK
- CPTIME CON 0 CPU TIME AT PROGRAM START
- START CON 0 REAL TIME AT START UP
- * HEADER MESSAGE AND DATE AND TIME.
- HEDR CON 0
- DATE CON 0
- TIME CON 0
- BSSZ 8 SYSTEM TITLE AND VERSION
- HEDRL EQU *-HEDR
- TITLE SUB-SYSTEM CONTROL TABLES.
- JCTT SPACE 4
- ** JCCT - JOB COMPLETION MESSAGES AND INPUT DELAY TABLE.
- GTM ("NL"RUN COMPLETE. "NL")
- JCTM EQU .2 SET LITERAL ADDRESS
- JCCTM MACRO A
- VFD 42/,18/A
- ENDM
- JCTT BSS 0
- JCCT INDEX JCCTM,MSYS,( 0 )
- INDEX ,BASS,( JCTM )
- INDEX ,FORS,( JCTM )
- INDEX ,FTNS,( JCTM )
- INDEX ,EXES,( JCTM )
- INDEX ,BATS,( 0 )
- INDEX ,ACCS,( 0 )
- PCOM SPACE 4
- ** PCOM - TABLE OF MINIMUM MASKS AND ERROR PROCESSORS FOR
- * EACH SYSTEM. BITS (48 - 59) IN PACKED FORMAT CONTAIN
- * THE MINIMUM NUMBER OF CHARACTERS TO MASK ON. BITS (0 - 17)
- * CONTAIN THE ADDRESS OF THE ERROR PROCESSING ROUTINE.
- PCOMM MACRO A,B
- VFD 12/2000B+A,30/,18/B
- ENDM
- PCOM INDEX PCOMM,MSYS,( 3,PCM21 )
- INDEX ,BATS,( 7,BAT2 )
- RDYA SPACE 4
- ** RDYA - TABLE OF READY MESSAGES.
- RDYAM MACRO A
- VFD A
- ENDM
- RDYA INDEX RDYAM,MSYS,( 60/8LREADY. )
- INDEX ,BATS,( 60/4L/''B )
- STAA SPACE 4
- ** STAA - TABLE OF SUB-SYSTEM NAMES.
- STAAM MACRO A
- CON 0L;A
- ENDM
- STAA INDEX STAAM,MSYS,( )
- INDEX ,NULS,( "NULS" )
- INDEX ,BASS,( "BASS" )
- INDEX ,FORS,( "FORS" )
- INDEX ,FTNS,( "FTNS" )
- INDEX ,EXES,( "EXES" )
- INDEX ,BATS,( "BATS" )
- INDEX ,ACCS,( "ACCS" )
- TTTT SPACE 4
- ** TTTT - TABLE OF TERMINAL TYPES FROM MODVAL.
- TTTT INDEX CON,ATTMX+1,( -* )
- INDEX ,ATTY+1,( 0LTTY )
- INDEX ,ATT7+1,( 0L713 )
- INDEX ,ATTCO+1,( 0LCOR )
- INDEX ,ATTCA+1,( 0LCORAPL )
- INDEX ,ATTMA+1,( 0LMEMAPL )
- INDEX ,ATTE+1,( 0LBLKEDT )
- TTIS SPACE 4
- ** TTIS - TABLE OF INITIAL SUBSYSTEMS
- TTIS INDEX CON,MSYS,( NULS )
- INDEX ,AISNUL,( NULS )
- INDEX ,AISBAS,( BASS )
- INDEX ,AISFOR,( FORS )
- INDEX ,AISFTN,( FTNS )
- INDEX ,AISEXE,( EXES )
- INDEX ,AISBAT,( BATS )
- INDEX ,AISACC,( ACCS )
- IAF TITLE CONTROL LOOP.
- ** IAFEX - MAIN CONTROL LOOP.
- IAF RJ DRI PROCESS DRIVER QUEUE
- RJ URT UPDATE RUNNING TIME
- RJ STR PROCESS SYSTEM IAFEX REQUESTS
- RJ RPC REFILL POT CHAIN QUEUE
- RJ TDQ PROCESS TIME DELAY QUEUE
- RJ PMQ PROCESS MONITOR WAIT QUEUE
- RJ TSR CHECK FOR REQUEST COMPLETIONS
- RJ PPU PROCESS PPU REQUESTS
- RJ CSS CHECK SCP STATUS
- IAFA RJ /IAFEX4/NDR EXECUTE NETWORK DRIVER
- * SB0 0 (IF NETWORK DRIVER NOT LOADED)
- RJ SPR CHECK FOR FIELD LENGTH CHANGE NEEDED
- RJ EPP ENTER PP REQUESTS
- RJ DRI PROCESS DRIVER QUEUE
- RJ STR PROCESS SYSTEM IAFEX REQUESTS
- RJ RPC REFILL POT POT CHAIN QUEUE
- SA1 VANL
- NZ X1,IAF1 IF AT LEAST ONE ACTIVE USER
- WAIT 100
- IAF1 RECALL
- EQ IAF RE-ENTER MAIN LOOP
- RPV SPACE 4,10
- ** RPV - REPRIEVE PROCESSING.
- RPV BSS 0 ENTRY
- MESSAGE RPVA,0,R
- RJ /SMFIF/ISM IDLE SCREEN MANAGMENT FACILITY
- SA1 VNTP
- ZR X1,RPV1 IF NO NETWORK TERMINALS DEFINED
- RJ /IAFEX4/NOF NETOFF
- RPV1 REPRIEVE RPVB,RESET,0
- EQ * WAIT FOR RESET
- * THE FOLLOWING CODE IS USED BY *IAFEX2* TO PREVENT THE
- * IDLING OF *IAFEX2* OR *IAFEX3* BEFORE ALL USERS HAVE
- * BEEN DETACHED AND IAF ACCESSABILITY HAS BEEN CLEARED.
- RPV2 REPRIEVE RPVB,RESUME,37B
- EQ * WAIT FOR RESUME OF EXECUTION
- RPVA DATA C+ IAF REPRIEVED.+
- RPVB RPVBLK RPV
- TITLE CONTROL SUBROUTINES.
- CSS SPACE 4,10
- ** CSS - CHECK SCP STATUS.
- *
- * CALLS AUU, CDD, CFL, RMS, SID, SMS.
- * AFTER RECEIVED MESSAGE PROCESSED.
- CSS7 RJ /SMFIF/SMS SEND IAF TO SMF MESSAGES
- CSS SUBR ENTRY/EXIT
- SA1 SSCR
- PL X1,CSS7 IF NO MESSAGE RECEIVED
- * CHECK PARAMETER BLOCK HEADER.
- SA2 X1
- MX6 -6
- AX2 18
- BX2 -X6*X2 STATUS FROM CPUMTR
- SX7 X2-4
- NG X7,CSS1 IF NORMAL, OR UCP ABORT, END, OVERRIDE
- NZ X7,CSS5 IF UNKNOWN STATUS
- * SCP (NAM) ABORT NOTIFICATION.
- SX6 -B1 INDICATE SCP FAILURE
- SA6 VSHD
- EQ CSS6 CLEAR INTERLOCK AND EXIT
- * UCP MESSAGE PROCESSING.
- CSS1 SA3 /SMFIF/ASMF CHECK ACTIVE SMF WORD
- SA4 A2+B1 COMPARE TO SENDER
- BX6 X3-X4
- BX7 X4
- NZ X6,CSS3 IF NOT SMF, SMF NOT ACTIVE OR RECONNECT
- ZR X2,CSS2 IF NORMAL UCP MESSAGE
- * UCP ABORT, END OR OVERRIDE.
- RJ /SMFIF/SID DROP THE SMFEX CONNECTION
- EQ CSSX RETURN
- * NORMAL UCP MESSAGE.
- CSS2 RJ CFL CHECK POT SUPPLY
- NG X2,CSS7 IF POTS LOW DO NOT PROCESS CURRENT MESSAGE
- RJ /SMFIF/RMS RECEIVE MESSAGE FROM SMF
- EQ CSS6 COMPLETE PROCESSING
- * CHECK FOR NEW CONNECTION TO SMF.
- CSS3 MX6 24
- BX6 X4*X6 CALLER-S JSN
- SA1 CSSC
- BX6 X6-X1
- BX1 X6+X2
- ZR X1,CSS4 IF NEW CONNECTION
- RJ AUU ABORT UNRECOGNIZED OR RECONNECTING UCP
- EQ CSS6 COMPLETE PROCESSING
- * SET UP NEW CONNECTION WITH SMF.
- CSS4 SA7 /SMFIF/ASMF SET ACTIVE SMF WORD
- SA1 A2+3 GET BUFFER POINTER
- MX6 -18
- AX1 18
- BX1 -X6*X1 ISOLATE SMF BUFFER ADDRESS
- LX1 24
- SA2 /SMFIF/SMSA
- MX3 -18 CLEAR ADDRESS FIELD
- LX3 24
- BX2 X3*X2
- BX6 X1+X2
- SA6 A2
- SA2 /SMFIF/SMSC
- BX2 X3*X2 CLEAR ADDRESS FIELD
- BX6 X1+X2
- SA6 A2
- SA2 /SMFIF/ISMA
- BX2 X3*X2 CLEAR ADDRESS FIELD
- SX6 B1 DECREMENT FOR IDLEDOWN ADDRESS
- LX6 24
- IX6 X1-X6
- BX6 X6+X2
- SA6 A2
- EQ CSS2 INITIATE CONNECTION
- * UNKNOWN STATUS CODE.
- CSS5 SX1 X2
- RJ CDD CHANGE TO DISPLAY CODE
- SA6 CSSB
- MESSAGE CSSA,0,R
- * CLEAR INTERLOCK ON SCP BUFFER.
- CSS6 SA1 SSCR
- MX6 -59
- BX6 -X6*X1
- SA6 A1
- EQ CSS7 SEND IAF TO SMF MESSAGES
- CSSA DATA C+** INCORRECT SSC STATUS RECEIVED+
- CSSB CON 0
- DATA C+. **+
- CSSC VFD 24/4LSMF ,36/0
- EPP SPACE 4,10
- ** EPP - ENTER PPU REQUESTS.
- *
- * ENTERS PPU REQUESTS QUEUED IN PP REQUEST WORDS.
- *
- * ENTRY (PPUR) = LIST OF FORMATTED PPU REQUESTS.
- EPP SUBR ENTRY/EXIT
- SX7 3RSPC
- SA2 B1 CHECK RA+1 CLEAR
- LX7 42
- SA1 PPUR-1
- * THE FOLLOWING SHOULD ONLY HAPPEN IF A GARBAGE STORE IS MADE
- * IN *RA+1*. THE MODE ERROR IS COMPATIBLE WITH OTHER
- * PROCESSORS FOR THIS ERROR, AND IT PRESERVES ALL THE
- * REGISTERS.
- NZ X2,*+400000B IF (RA+1) .NE. 0, ABORT
- EPP1 SA1 A1+B1 CHECK NEXT REQUEST
- SX6 A1+
- AX1 36
- NG X1,EPPX IF END OF QUEUE
- ZR X1,EPP1 IF NO ENTRY
- BX6 X6+X7
- SA6 B1 STORE REQUEST
- XJ
- SA1 A1+
- ZR X1,EPP1 IF PPU AVAILABLE
- SA1 VPPL COUNT NO PPU
- SX6 B1
- IX6 X6+X1
- SA6 A1
- EQ EPPX EXIT
- URT SPACE 4,10
- ** URT - UPDATE RUNNING TIME.
- *
- * UPDATE IAFEX RUNNING TIME, TIME OF DAY, AND DATE.
- *
- * CALLS SYS=.
- URT SUBR ENTRY/EXIT
- SA5 RTIM UPDATE REAL TIME
- RTIME RTIM
- SA1 A5
- MX6 -36
- BX6 -X6*X1
- SA6 A1
- AX1 36 SET TIME IN SECONDS
- BX7 X1
- SA7 STIM
- BX5 X5-X6
- AX5 12
- ZR X5,URTX IF FOUR SECONDS NOT ELAPSED
- CLOCK TIME UPDATE TIME OF DAY
- DATE DATE UPDATE DATE
- EQ URTX EXIT
- STR SPACE 4,10
- ** STR - PROCESS SYSTEM IAFEX REQUESTS.
- *
- * PROCESS SYSTEM REQUESTS MADE TO IAFEX VIA MONITOR
- * *TSEM* REQUESTS.
- *
- * CALLS REQUEST PROCESSOR VIA *PCS*.
- * ABT IF INCORRECT REQUEST.
- STR SUBR ENTRY/EXIT
- * GET ENTRY FROM MONITOR BUFFER.
- STR1 SA1 STRA CHECK FOR ENTRY
- SA5 X1
- BX6 X6-X6
- ZR X5,STRX IF NO ENTRIES TO PROCESS
- UX2,B7 X5
- SX7 X1+B1 UPDATE POINTER
- SB6 TSTRL SET COMMAND TABLE LIMIT
- SX2 X7-VTRP-VTRL
- NZ X2,STR2 IF NOT LIMIT
- SX7 VTRP
- * PROCESS ENTRY.
- STR2 SA7 A1 UPDATE POINTER
- SA6 A5 CLEAR ENTRY
- NG B7,STR3 IF INCORRECT REQUEST
- GE B7,B6,STR3 IF INCORRECT REQUEST
- SA4 TSTR+B7 SET PROCESSOR ADDRESS
- SB7 X4+
- RJ PCS PROCESS ENTRY
- EQ STR1 LOOP
- * PROCESS INCORRECT ENTRY.
- STR3 BX7 X5 SAVE INCORRECT REQUEST
- SX6 3RSTR SET ERROR CODE
- SA7 STRB
- RJ ABT
- EQ STRX
- STRA CON VTRP
- STRB CON 0 SAVE INCORRECT REQUEST CODE
- TCCS SPACE 4
- ** TSTR - IAFEX *TSEM* SYSTEM COMMAND PROCESSING TABLE.
- TSTR INDEX CON,VMXR-2000B,( 0 )
- INDEX ,VDPO-2000B,( DRT )
- INDEX ,VASO-2000B,( ASO )
- INDEX ,VMSG-2000B,( DSD )
- INDEX ,VSDT-2000B,( SDT )
- INDEX ,VCDT-2000B,( CDT )
- INDEX ,VSCS-2000B,( SCS )
- INDEX ,VPTY-2000B,( PTY )
- INDEX ,VSBS-2000B,( SBS )
- INDEX ,VSJS-2000B,( SJS )
- INDEX ,VTLF-2000B,( FLO )
- INDEX ,VREC-2000B,( RDJ )
- INDEX ,VITP-2000B,( ITP )
- INDEX ,VADI-2000B,( ADI )
- INDEX ,VADO-2000B,( ASO1 )
- INDEX ,VCSM-2000B,( CSM )
- INDEX ,VDTJ-2000B,( DTJ )
- ADI SPACE 4,10
- ** ADI - ASSIGN DIRECT INPUT.
- *
- * GETS INPUT FROM INTERNAL TYPEAHEAD QUEUE FOR DIRECT I/O
- * REQUEST.
- *
- * USES X - 0, 1, 2, 6, 7.
- * A - 1, 2, 6, 7.
- *
- * NOTE THE *DIOF* FLAG MUST BE CLEARED ON EXIT TO AVOID
- * ANOTHER TERMINAL FROM IMPROPERLY INTERPRETING IT.
- *
- * CALLS CFL, DCI, EDR, PIN, UAC, UNQ.
- ADI BSS 0 ENTRY
- IFMUX PCSX
- ADI1 RJ CFL CHECK POT SUPPLY
- SX6 B1 SET NO POT REJECT BIT
- LX6 22-0
- NG X2,ADI3 IF INSUFFICIENT POTS
- TA1 B2,VMST CHECK INTERNAL QUEUE
- MX7 -12
- BX7 -X7*X1
- SA7 DIOF SET/CLEAR DIRECT I/O FLAG
- ZR X7,ADI3 IF NO INTERNAL QUEUE
- LX6 23-22 SET INPUT BUSY RETRY BIT
- SA2 /IAFEX4/IBSY
- NZ X2,ADI3 IF NETWORK INPUT BUFFER IN USE
- RJ /IAFEX4/UNQ UNQUEUE INPUT DATA
- RJ /IAFEX4/PIN PROCESS INPUT DATA
- ZR X6,ADI1 IF INSUFFICIENT POTS
- PL X0,ADI2 IF OVERFLOW DETECTED
- SA1 /IAFEX4/RCVH
- BX0 X1
- SX7 B1 SET INPUT ACCOUNTING
- RJ /IAFEX4/UAC UPDATE ACCOUNTING
- AX0 54
- SX6 X0-/IAFEX4/BTMS
- NZ X6,ADI1 IF NOT MESSAGE BLOCK
- SA6 DIOF CLEAR DIRECT I/O FLAG
- SA6 /IAFEX4/RCVH CLEAR HEADER
- SA6 A6+B1 CLEAR FIRST DATA WORD
- * SET POT POINTER INTO VROT FOR SYSTEM.
- SA2 A0+VROT
- SA1 A0+VDPT
- MX0 12
- BX7 X0*X1 FIRST POT OF LINE
- LX0 48
- BX2 -X0*X2
- LX7 48
- BX7 X7+X2 INSERT POT POINTER
- SA7 A2 REWRITE VROT
- SA6 A1 CLEAR VDPT
- SA3 A0+VDCT SET INPUT INITIATED
- MX2 1
- LX2 56-59
- BX7 X2+X3
- SA7 A3
- EQ PCSX EXIT
- * DISCARD INPUT IF OVERFLOW.
- ADI2 SA1 A0+VDPT
- SX2 VXLL+3
- BX6 X1+X2
- SA6 A1 REWRITE VDPT WITH OVERFLOW CHARACTER COUNT
- SX6 B0 SET ENTRY CONDITION
- RJ /IAFEX4/DCI DISCARD INPUT
- BX6 X6-X6
- SA6 DIOF
- SA6 /IAFEX4/RCVH
- SA6 A6+B1
- SX6 B1 SET OVERFLOW REJECT BIT
- LX6 22-0
- * SEND REJECT TO SYSTEM.
- ADI3 SA1 A0+VROT SET RESPONSE IN VROT
- BX6 X6+X1
- SA6 A1 REWRITE VROT
- SA1 ADIA INCREMENT REJECT COUNT
- SX6 X1+B1
- SA6 A1
- SX6 B0+ CLEAR DIRECT INPUT FALG
- SA6 DIOF
- EQ PCSX EXIT
- ADIA CON 0 *VADI* REJECT/RETRY COUNT
- DIOF CON 0 DIRECT I/O REQUEST FLAG
- APS SPACE 4,10
- ** APS - APPLICATION SWITCH.
- *
- * THIS ROUTINE IS ENTERED FROM ROUTINE *FLO*.
- *
- * ENTRY (B3) = POINTER TO POT CONTAINING APPLICATION NAME.
- * (B4) = ADDRESS OF POT.
- * (A2) = ADDRESS OF *VDCT*.
- * (X2) = CONTENTS OF *VDCT* SHIFTED.
- *
- * CALLS CJA, DPT, EDR, GOP, PMR, PPB.
- *
- * MACROS IFMUX, PARAM.
- APS BSS 0 ENTRY
- IFMUX PCSX IF MUX TERMINAL
- SX3 B1 SET CONNECTION LOANED BIT
- LX3 47-0
- LX2 46-59
- BX7 X2+X3
- SA7 A2 REWRITE VDCT
- MX3 -12
- SA1 A0+VFST
- BX1 X1*X3 CLEAR POT POINTER FIELD
- SX6 B3 SAVE APPLICATION NAME POT POINTER
- BX6 X6+X1
- SA6 A1 REWRITE VFST
- APS1 SA2 A0+VROT CHECK COMPLETE BIT
- LX2 59-0
- SB3 B0
- PL X2,APS2 IF VROT NOT COMPLETE
- SA1 A0+VSTT WAIT FOR OUTPUT TO COMPLETE
- MX5 -12
- BX3 -X5*X1
- ZR X3,APS3 IF NO OUTPUT
- APS2 SX5 APS1$
- EQ PCS1 MAKE QUEUE ENTRY
- APS3 SX7 APS4 SET REENTRY ADDRESS
- EQ CJA CLEAR JOB ACTIVITY
- APS4 SX2 /1TD/HUP
- RJ EDR ENTER DRIVER REQUEST
- EQ PCSX EXIT
- ASO SPACE 4,20
- ** ASO - ASSIGN OUTPUT.
- *
- * ASSIGNS OUTPUT POT CHAIN TO TERMINAL. UNUSED POTS
- * AT END OF CHAIN ARE DROPPED.
- *
- * ENTRY (B3) = FIRST POT OF OUTPUT.
- * = ZERO IF NO OUTPUT ASSIGNED.
- * (X7) = 42/ 0,6/ POT COUNT,12/ LAST POT POINTER.
- *
- * CALLS ABT, ASM, GRT, RPL.
- ASO BSS 0 ENTRY
- SA1 A0+VROT SET COMPLETE
- SX2 B1
- BX6 X1+X2
- LX1 59-0
- NG X1,ASO4 IF *VROT* ALREADY COMPLETE
- SA6 A1
- * ENTRY FOR ASSIGNMENT OF OUTPUT FROM DIRECT I/O REQUEST.
- ASO1 BSS 0
- TA4 B2,VRAP CHECK FOR QUEUE ENTRY
- SA2 A0+VSTT
- SB5 B2 SET TERMINAL NUMBER FOR *GRT*
- LX2 59-48 CHECK LOGOUT FLAG
- NG X2,IGN IF LOGOUT IN PROGRESS
- ZR X4,ASO2 IF NO QUEUE ENTRY
- RJ GRT
- AX4 48
- SX3 X4-ETX4$
- ZR X3,IGN IF PACK COMPLETE, IGNORE
- SX3 X4-ITA2$
- ZR X3,ASO3 IF LOGIN NOT YET COMPLETE
- * ENTRY FROM *DSD* TO ASSIGN *DIAL* MESSAGE.
- ASO2 ZR B3,RES IF NO OUTPUT TO ASSIGN, CONTINUE JOB
- MX0 -12
- BX6 X0*X7
- NZ X6,ASO2.1 IF POT COUNT PROVIDED
- SX6 VLCL*10000B SET TO MAXIMUM
- ASO2.1 LX6 12 POSITION POT COUNT
- SX1 B3
- LX1 3
- TA6 X1,VBMP STORE IN FIRST WORD OF MESSAGE
- BX7 -X0*X7
- SX0 B3 SAVE OUTPUT POT POINTER THROUGH *RPL*
- SB7 B0+
- RJ RPL DROP ANY UNUSED POTS
- SX7 X0
- MX6 1 CHECK USER FORMAT EFFECTOR MODE
- RJ ASM PROCESS MESSAGE
- EQ PCSX EXIT
- ASO3 SX5 ASO2$ WAIT TIME OUT DELAY
- EQ PCS1 MAKE QUEUE ENTRY
- * DIAGNOSE INTERLOCK FAILURE OR FAULTY ASSIGNMENT.
- ASO4 SX6 3RASO SET ERROR CODE
- RJ ABT
- EQ PCSX EXIT
- CDT SPACE 4
- ** CDT - CLEAR TERMINAL TABLE BIT.
- *
- * ENTRY (B3) = BIT NUMBER.
- * (X7) = TERMINAL TABLE WORD ORDINAL.
- *
- * CALLS SDT.
- CDT BSS 0
- SX3 B0
- SB4 X7 SET WORD IN TERMINAL TABLE
- JP SDT1
- CRR SPACE 4,10
- ** CRR - CONNECTION REQUEST REPLY
- *
- * IF *1TA* HAS BEEN CALLED TO VALIDATE A SECONDARY CONNECTION
- * REQUEST, THIS ROUTINE WILL ENTER A DRIVER REQUEST TO ACCEPT
- * OR REJECT THE CONNECTION ACCORDING TO THE RESULTS RETURNED
- * BY *1TA* PROCESSING.
- *
- * USES X - 2
- *
- * CALLS EDR
- CRR BSS 0
- SX2 /1TD/CRR IF ERROR CONDITION DETECTED
- EQ CRR2 SKIP TO REQUEST ENTRY
- CRR1 SX2 /1TD/CRR1 IF NO ERROR CONDITION DETECTED
- CRR2 RJ EDR ENTER DRIVER REQUEST
- EQ PCSX EXIT
- CSM SPACE 4,10
- ** CSM - CONNECT TO SCREEN MANAGEMENT FACILITY.
- *
- * ENTRY (B3) = 0 TO REQUEST CONNECTION.
- * (B3) = 1 TO CONFIRM DISCONNECTION.
- *
- * CALLS /SMFIF/CSM.
- CSM BSS 0
- NZ B3,CSM1 IF DISCONNECTION CONFIRMATION
- RJ /SMFIF/CSM CONNECT TO SCREEN MANAGER
- EQ PCSX EXIT
- CSM1 RJ /SMFIF/DSM DISCONNECT FROM SCREEN MANAGER
- EQ PCSX EXIT
- DRT SPACE 4
- ** DRT - DROP POTS.
- *
- * ENTRY (B3) = FIRST POT OF CHAIN TO BE DROPPED.
- * (X7) = LAST POT OF CHAIN TO BE DROPPED. DROP
- * TO END OF CHAIN IF ZERO.
- *
- * CALLS DPT.
- DRT BSS 0
- SB4 X7+
- RJ DPT DROP POT(S)
- EQ PCSX EXIT
- DSD SPACE 4
- ** DSD - *DSD* DIAL AND WARN MESSAGES.
- *
- * ENTRY (B2) = NONZERO = TERMINAL NUMBER FOR DIAL MESSAGE.
- * = ZERO = WARNING MESSAGE.
- * (B3) = MESSAGE POT POINTER.
- * (X7) = LAST POT POINTER OF MESSAGE.
- *
- * CALLS ASO, DPT.
- DSD SB7 B2-VPST
- NG B7,DSD1 IF WARNING MESSAGE
- * PROCESS *DIAL* MESSAGE.
- SX7 X7+10000B SET DEFAULT POT COUNT
- SA2 A0+VSTT CHECK LOGOUT FLAG
- LX2 59-48
- SB5 B2
- NG X2,DSD0 IF LOGOUT FLAG SET
- LX2 59-58-59+48
- NG X2,DSD0 IF USER BREAK IN PROGRESS
- SX6 B0 ZERO OUT SECOND WORD OF POT CHAIN HEADER
- SA1 A0+VDCT CHECK IF USER LOGGED IN
- LX1 59-57
- SA6 B4+B1
- NG X1,ASO2 IF USER LOGGED IN
- DSD0 SB4 B0
- RJ DPT DROP POTS
- EQ PCSX EXIT
- * PROCESS *WARN* MESSAGE.
- DSD1 SA1 VWMP PROCESS WARNING MESSAGE
- MX2 -24
- LX1 -24
- BX3 -X2*X1 SAVE PREVIOUS CHAIN
- BX6 X2*X1
- SX0 B3
- SX7 B0 ZERO OUT SECOND WORD OF POT CHAIN HEADER
- ZR B3,DSD2 IF NO MESSAGE
- SA7 B4+B1
- SX7 B1 SET POT COUNT FOR MESSAGE
- LX7 24
- SA7 B4
- SX4 B4
- BX6 X6+X4
- DSD2 LX6 24
- SA6 A1
- ZR X3,DSD3 IF NO PREVIOUS CHAIN
- TX3 X3,-VBMP
- AX3 3
- SB4 B0 DROP POTS
- SB3 X3
- RJ DPT
- DSD3 ZR X0,PCSX IF CLEAR OF PREVIOUS WARNING MESSAGE
- SX5 B1 CLEAR ALL MESSAGE ISSUED FLAGS
- LX5 50
- TB3 VSTT+VPST*VTTL,VTTP SET FWA OF TERMINAL TABLE
- TB4 VSTT,VTTP,LWA SET LWA+1 OF TERMINAL TABLE
- DSD4 SA1 B3 CLEAR MESSAGE ISSUED FLAG
- BX6 -X5*X1
- SA6 A1+
- SB3 B3+VTTL
- LT B3,B4,DSD4 IF STILL MORE TERMINALS
- EQ PCSX EXIT
- ITP SPACE 4,30
- ** ITP - INITIATE TWO PORT MUX DRIVER.
- *
- * *ITP* CALLS THE *1TM* DRIVER ONLY IF PRIOR DRIVER SHUTDOWN
- * IS COMPLETE. IF IT IS NOT COMPLETE, A FLAG IS SET IN *VDRL*
- * TO INDICATE TO *DSH* THAT *1TM* CANNOT BE CALLED UNTIL
- * DRIVER SHUTDOWN IS COMPLETE. IF THE *1TM* DRIVER IS ALREADY
- * RUNNING, NOTHING IS DONE.
- *
- * ENTRY (VITM) = *1TM* DRIVER REQUEST WORD.
- * = 18/DN, 24/0, 18/VA.
- * DN = *1TM* DRIVER NAME.
- * VA = *1TM* *VDRL* ADDRESS.
- * (VDRL) = 9/0,1/F1,1/F2,1/F3,24/SA,12/TC,12/FT.
- * F1 = CALL *1TM* DRIVER FLAG.
- * F2 = DRIVER SHUTDOWN COMPLETE FLAG.
- * F3 = INITIATE DRIVER SHUTDOWN FLAG.
- * SA = CIRCULAR DRIVER STACK ADDRESS.
- * TC = TERMINAL COUNT.
- * FT = FIRST TERMINAL.
- *
- * EXIT EITHER *1TM* IS CALLED IF PREVIOUS DRIVER SHUTDOWN IS
- * COMPLETE, OR F1 IN *VDRL* IS SET TO FLAG *DRI* TO CALL
- * *1TM* ONCE DRIVER SHUTDOWN HAS COMPLETED.
- *
- * USES A - 1, 2, 6.
- * X - 1, 2, 3, 4, 6.
- *
- * CALLS CTM.
- ITP BSS 0 ENTRY
- SA2 VITM GET *1TM* *VDRL* ADDRESS
- SA1 X2 GET *VDRL* ENTRY
- MX4 12
- BX3 X4*X1 MASK TERMINATION BITS
- ZR X3,PCSX IF *1TM* ALREADY RUNNING
- SX4 B1
- LX4 49
- BX3 X4*X1
- NZ X3,ITP1 IF PREVIOUS DRIVER SHUTDOWN COMPLETE
- LX4 1
- BX6 X4+X1 SET CALL *1TM* DRIVER FLAG.
- SA6 X2+ REWRITE *VDRL* WORD
- EQ PCSX EXIT
- ITP1 RJ CTM CALL *1TM* DRIVER
- EQ PCSX EXIT
- PTY SPACE 4,10
- ** PTY - SET TERMINAL PARITY.
- *
- * ENTRY (B3) = 0 = SET EVEN PARITY.
- * = 1 = SET ODD PARITY.
- *
- * CALLS DCR, RDC, RES, SEP, SOP.
- PTY SB7 B3+ SAVE REQUEST CODE
- SB3 /1TD/SOP
- EQ B7,B1,PTY1 IF *ODD*
- SB3 /1TD/SEP
- EQ B7,B0,PTY1 IF *EVEN*
- EQ PCSX EXIT - INCORRECT REQUEST
- PTY1 RJ RDC WAIT VDCT CLEAR
- SX2 B3 SET REQUEST CODE
- SB3 B0 CLEAR (B3)
- SX7 RES SET RESTART ADDRESS
- EQ DCR ENTER DRIVER REQUEST
- RDJ SPACE 4,10
- ** RDJ - RECOVER DETACHED JOB.
- *
- * ENTRY (X7) = JSN OF JOB TO RECOVER, RIGHT JUSTIFIED.
- *
- * EXIT JOB RECOVERED AND CURRENT JOB TERMINATED,
- * OR ERROR MESSAGE SENT AND CURRENT JOB CONTINUED.
- *
- * CALLS DCR, DPT, FMF, FSM, GOP, GPL, INO, MVA, PMR, PPB,
- * RCM, RDC, REP, RES, RPT, SSP, TXT, UEC, ZTB.
- RDJ BSS 0 ENTRY
- SA1 A0+VSTT
- SX2 401B
- LX2 48
- BX2 X1*X2
- NZ X2,PCSX IF DETACH OR LOGOUT IN PROGRESS
- SX2 B1 SET DETACH IN PROGRESS
- LX2 56-0
- BX6 X1+X2
- SA6 A1
- LX7 36 SAVE JSN FOR RECOVERY
- SA7 RDJA
- SX5 B0 GET PARAMETER POTS
- SB5 B1+B1
- PX5 X5,B5
- RJ RPT
- SA1 RDJA SAVE JSN IN PARAMETER POT
- SB3 X7+ SET POT POINTER
- LX7 3 SET POT ADDRESS
- TB4 X7,VBMP
- BX6 X1
- SA6 B4+EJPB
- ERRPL EJPB-VCPC PARAMETERS OVERFLOW POT
- SX5 RDJ1$ WAIT FOR JOB TO RETURN
- EQ PCS1 MAKE QUEUE ENTRY
- RDJ1 RJ GPL GET POT LINK
- SX0 B4+ SET MESSAGE ADDRESS
- RJ SSP RESTORE PARAMETERS
- SA3 B4+EJPB SET RECOVERY JSN
- PARAM RCEJ,A3,X0
- RJ PMR PROCESS MONITOR REQUST
- NZ X2,REP IF ERROR RETURNED
- SX7 B3 SAVE POT POINTER TO BEGINNING OF CHAIN
- MX2 48
- SA1 A0+VFST
- BX1 X1*X2
- BX7 X7+X1
- SA7 A1
- SB3 B0 GET TERMINATION PARAMETER POT
- RJ GOP
- PARAM TJEJ TERMINATE CURRENT JOB
- RJ PMR PROCESS MONITOR REQUEST
- ZR X2,RDJ1.1 IF NO ERROR ON TERMINATION
- RJ UEC PROCESS TERMINATION ERROR
- RDJ1.1 SA1 B4+6 SAVE TERMINAL NAME OF TERMINATED JOB
- MX6 42
- BX6 X6*X1
- SA6 RDJE
- SB4 B0+ DROP PARAMETER POT
- RJ DPT
- SA1 A0+VFST GET RECOVERY POT POINTER
- MX2 -12
- BX3 -X2*X1 GET POT POINTER
- BX6 X2*X1
- SA6 A1
- SB3 X3
- LX3 3
- TB4 X3,VBMP
- SA2 RECS COUNT RECOVERY
- SX7 B1
- IX6 X2+X7
- SA6 A2
- * RECONSTRUCT TERMINAL TABLE.
- IFNET RDJ1.2 IF NETWORK TERMINAL
- SX2 /1TD/SDU SUSPEND MUX TERMINAL DRIVER
- SX7 RDJ1.2
- EQ DCR ENTER DRIVER REQUEST
- RDJ1.2 MX2 48 GET PRIMARY FILE NAME
- SA1 B4
- BX5 X2*X1
- SA1 A1+B1
- SX0 IDMS
- BX6 X1*X2
- AX6 12
- SA6 RDJA SAVE SRU COUNT
- SA3 B4+EJPB GET JSN
- SA4 A0+VUIT SET EJT ORDINAL IN VUIT
- BX6 -X2*X1
- BX4 X2*X4
- BX6 X6+X4
- SA6 A4 REWRITE VUIT
- SA1 A1+B1 GET NEXT PARAMETER BLOCK WORD
- MX7 -6
- LX7 6
- BX7 -X7*X1
- LX7 6
- BX7 X5+X7 MERGE FILE NAME AND MODES
- SA7 A0+VFNT
- SA2 A0+VFST SET JSN IN VFST
- MX4 -36
- BX6 -X4*X2 CLEAR OLD JSN
- BX6 X6+X3
- SA6 A2 REWRITE VFST
- SX6 VRIR (X6) = (VROT) JOB CONTINUATION FLAG
- MX2 -3
- BX7 -X2*X1 INTERACTIVE SUBSYSTEM
- LX1 59-5
- SX4 X7-MSYS
- LX7 12
- NG X4,RDJ2 IF VALID SUBSYSTEM
- BX7 X7-X7
- RDJ2 SX4 B1 SET JOB COMPLETE FLAG
- LX4 54-0
- BX7 X7+X4
- SX2 B1 SET VROT COMPLETE
- SA7 A0+VSTT WRITE VSTT
- PL X1,RDJ3 IF JOB NOT ACTIVE
- SX2 VJIR SET JOB IN SYSTEM
- SX0 JEMS JOB ACTIVE MESSAGE
- RDJ3 BX6 X2+X6 ADD STATUS TO VROT
- LX1 3 GET RESOURCE LIMITS
- MX2 -2
- BX2 -X2*X1
- LX2 19-1
- BX6 X6+X2 PUT INTO VROT
- SA1 A1+B1 GET FIRST WORD OF RECOVERY TABLE
- MX2 12
- BX7 X1*X2
- LX7 12
- SA6 A0+VROT WRITE VROT
- SX4 X7-IFSI
- ZR X4,RDJ4 IF RECOVERY TABLE FROM *IAF*
- SX4 X7-RDSI
- NZ X4,RDJ8 IF RECOVERY TABLE NOT FROM *RDF*
- * PROCESS RECOVERY TABLE.
- RDJ4 SX7 34B
- BX7 X7*X1
- BX6 X6+X7
- SX4 40B
- BX4 X4*X1 GET FILE TYPE FLAG
- LX4 17-5
- BX6 X6+X4 SET IN VROT
- SA6 A0+VROT WRITE VROT
- SA4 A0+VDCT
- MX6 27
- LX6 24
- BX6 X4*X6
- BX2 X1 SECOND COPY OF RECOVER INFORMATION
- LX2 59-7
- MX7 -3
- LX7 12
- BX7 -X7*X1
- LX7 51-12
- PL X2,RDJ5 IF NOT TEXT MODE
- SX0 TXMS
- RDJ5 SX2 B1
- LX2 1-0 GET BRIEF MODE
- BX4 X2*X1
- LX4 55-1
- BX7 X7+X4
- BX6 X7+X6
- SA6 A4 REWRITE VDCT
- LX2 6-1 GET DISTC BIT
- SA4 A0+VSTT
- BX7 X2*X1
- LX7 59-6
- BX4 X4+X7
- SX2 B1 GET PROMPT BIT
- BX7 X2*X1
- LX7 53-0
- BX4 X4+X7
- MX7 -3 GET INITIAL CHARACTER SET
- LX7 15
- BX7 -X7*X1
- LX7 18-15
- BX6 X4+X7
- MX7 56 GET TERMINAL TABLE SUBSYSTEM
- LX7 12
- BX6 X7*X6 CLEAR CPA SUBSYSTEM
- LX7 18-12
- BX7 -X7*X1
- AX7 18-12
- BX6 X6+X7 INSERT TERMINAL TABLE SUBSYSTEM
- MX7 -1
- LX7 8
- BX2 -X7*X1 GET EFFECT MODE
- LX2 55-8
- BX6 X6+X2
- LX7 9-8 GET SCREEN MODE
- BX2 -X7*X1
- LX2 49-9
- BX6 X6+X2
- LX1 59-4
- SA6 A4 REWRITE VSTT
- LX2 X1,B1
- LX3 X2,B1
- PL X3,RDJ6 IF NO JOB CONTINUATION
- SX0 JEMS
- RDJ6 PL X2,RDJ7 IF NO INPUT REQUESTED
- SX0 INMS
- RDJ7 PL X1,RDJ7.1 IF NO OUTPUT AVAILABLE
- SX0 OTMS
- * RECOVER CHARACTER COUNTS.
- RDJ7.1 SA2 A0+VCHT GET CHARACTER COUNTS
- SA3 A0+VFST
- SA1 A1+B1 READ RECOVERY WORD 2
- MX7 -24
- MX6 -12
- LX6 24
- BX2 X7*X2 CLEAR INPUT/OUTPUT COUNTS
- BX3 X6*X3 CLEAR OVERFLOW COUNT
- BX7 -X7*X1
- BX6 -X6*X1
- BX7 X7+X2 MERGE INPUT/OUTPUT COUNTS
- BX6 X6+X3 MERGE OVERFLOW COUNT
- SA7 A2 WWRIE INPUT/OUTPUT COUNTS
- SA6 A3 WRITE OVERFLOW COUNT
- * ISSUE RECOVERY MESSAGE.
- RDJ8 SX6 B3 SAVE POT POINTER
- SA6 RDJB
- RJ GPL GET ADDRESS OF MSW1
- SA1 RDJA GET SRU COUNT
- RJ FSM FORMAT STATUS MESSAGE
- SX6 FSMA SET MESSAGE ADDRESS
- SB3 B0+
- SB4 A6-FSMA+1 CALCULATE MESSAGE LENGTH
- RJ MVA ISSUE STATUS MESSAGE
- SB5 RDJC SET MESSAGE BUFFER POINTER
- SX3 X0-IDMS
- NZ X3,RDJ9 IF NOT IDLE
- SA1 A0+VROT CLEAR JOB CONTINUATION
- SX7 VRIR
- BX7 -X7*X1
- SA7 A1+ REWRITE VROT
- RJ RCM RESET CHARACTER MODE
- RDJ9 SA1 A0+VDCT
- SA2 =10H CHARACTER
- BX6 X2
- LX1 59-51
- SA6 B5
- MX7 24
- SA2 =6L SET:
- SA3 =6LNORMAL
- PL X1,RDJ10 IF NOT ASCII MODE
- SA3 =5LASCII
- RDJ10 BX1 X7*X3
- LX1 24
- BX6 X1+X2
- SA6 A6+B1
- BX3 -X7*X3 REST OF CHARACTER SET
- LX3 24 LEFT JUSTIFIED
- SA1 =5RMODES
- BX1 X3+X1
- RJ ZTB CONVERT ZERO CHARACTERS TO BLANKS
- SA6 A6+B1
- RJ FMF FORMAT MODES FIELD
- SA1 X0
- MX2 -12
- RDJ11 BX6 X1 MOVE APPROPRIATE PROMPT MESSAGE
- SX7 A6-RDJD
- PL X7,RDJ11.2 IF END OF BUFFER
- SA6 A6+B1
- BX6 -X2*X6
- SA1 A1+B1
- NZ X6,RDJ11 IF NO EOL
- RDJ11.2 SX6 A6-RDJC+1 SAVE MESSAGE LENGTH
- SA1 RDJB GET POT CHAIN TO DROP
- SB3 X1
- SA6 A1
- SB4 B0
- RJ DPT DROP POT CHAIN
- MX2 1 SET READ DATA BIT
- LX2 54-59
- SA1 A0+VDCT
- BX6 X2+X1
- SA6 A1 REWRITE VDCT
- SA1 RDJB GET MESSAGE LENGTH
- SB3 B0
- SB4 X1
- SX6 RDJC SET FWA OF FORMATTED MESSAGE
- RJ MVA SEND MESSAGE TO TERMINAL
- IFNET RDJ12 IF NETWORK TERMINAL
- SB3 X0+ SAVE MESSAGE ADDRESS
- SA1 A0+VDCT SET INTERRUPT COMPLETE FLAG
- SX6 B1+
- LX6 58-0
- BX6 X1+X6
- SA6 A1+
- RJ RDC ENSURE INTERLOCK CLEAR
- SX0 B3+ RESTORE MESSAGE ADDRESS
- SB3 B0+
- RDJ12 RJ GOP GET POT FOR PARAMETER BLOCK
- PARAM RSEJ RESTART JOB
- SA1 RDJE ADD TERMINATED TERMINAL NAME TO BLOCK
- SA2 B4+6
- MX3 -18
- BX3 -X3*X2
- BX6 X1+X3
- SA6 B4+6
- SX1 X0-TXMS
- ZR X1,RDJ13 IF TEXT MODE
- RJ PMR PROCESS MONITOR REQUEST
- ZR X2,RDJ12.1 IF NO ERROR
- SX3 X2-ERER
- ZR X3,REP IF DEVICE INACCESSIBLE OR I/O ERROR
- RDJ12.1 SB4 B0+
- RJ DPT DROP REQUEST POT
- EQ RES RESTART TERMINAL SESSION
- * FINISH TEXT MODE RECOVERY.
- RDJ13 RJ PMR PROCESS MONITOR REQUEST
- ZR X2,RDJ13.1 IF NO ERROR
- SX3 X2-ERER
- ZR X3,REP IF DEVICE INACCESSIBLE OR I/O ERROR
- RDJ13.1 RJ RDC ENSURE INTERLOCK CLEAR
- SA1 A0+VDCT CLEAR READ DATA BIT
- MX6 59
- LX6 54-0
- BX6 X6*X1
- SA6 A1 REWRITE VDCT
- EQ TXT ENTER TEXT MODE
- RDJA CON 0 TEMPORARY STORAGE
- RDJB CON 0
- RDJC BSS 15 FORMATTED MESSAGE BUFFER
- RDJD BSS 0 END OF MESSAGE BUFFER
- RDJE CON 0 TERMINAL NAME OF TERMINATED JOB
- RECS CON 0 COUNT OF RECOVERED USERS
- IDMS DATA 22L IDLE. ENTER COMMAND.
- TXMS DATA 11L TEXT MODE.
- JEMS DATA 15L JOB IN SYSTEM.
- INMS DATA 17L INPUT REQUESTED.
- OTMS DATA 18L OUTPUT AVAILABLE.
- REP SPACE 4,10
- ** REP - RECOVERY ERROR PROCESSOR.
- * PROCESS ERROR RETURN.
- REP BSS 0 ENTRY
- SX6 X2-NTER
- SX3 X2-JFER
- ZR X6,REP1 IF NOT DETACHED
- ZR X3,REP2 IF NOT FOUND
- SX3 X2-ERER
- SMA X6,( DEVICE INACCESSIBLE - RECOVERY FAILED."NL")
- ZR X3,REP3 IF DEVICE INACCESSIBLE OR I/O ERROR
- SMA X6,( JOB NOT RECOVERABLE."NL")
- EQ REP3 SEND MESSAGE
- REP1 SMA X6,( JOB NOT DETACHED."NL")
- EQ REP3 SEND MESSAGE
- REP2 SMA X6,( JOB NOT FOUND."NL")
- REP3 SB4 B0+
- RJ MVA MOVE DATA AND ASSIGN MESSAGE
- * EXIT TO RESTART JOB.
- RJ CDP CLEAR DETACH IN PROGRESS
- SB3 B0 SET NO POT
- EQ RES RESTART TERMINAL SESSION
- SBS SPACE 4,10
- ** SBS - SET SUBSYSTEM.
- *
- * ENTRY (B3) = SUBSYSTEM REQUESTED.
- *
- * CALLS ABT IF INCORRECT SUBSYSTEM.
- SBS BSS 0
- SA1 A0+VSTT GET WORD VSTT
- SB4 B3-MSYS CHECK REQUESTED SUBSYSTEM
- MX6 57
- PL B4,SBS1 IF INCORRECT SUBSYSTEM
- SX7 B3
- LX7 12
- LX6 12
- BX6 X6*X1 MASK SUBSYSTEM
- IX7 X6+X7 INSERT NEW SUBSYSTEM
- SA7 A1
- EQ PCSX EXIT
- SBS1 SX6 3RSBS
- RJ ABT
- EQ PCSX EXIT
- SCS SPACE 4,10
- ** SCS - SET CHARACTER SET MODE.
- *
- * ENTRY (X7) = 56/, 1/Y, 3/X.
- * Y = RESET ENTRY MODE IF NONZERO.
- * X = 0 = SET NORMAL MODE.
- * = 1 = SET EXTENDED MODE.
- * = 2 = RESET TO ENTRY MODE.
- *
- * EXIT (VDCT) = MODE RESET.
- *
- * CALLS RDC, RES.
- SCS MX1 -2 ISOLATE ARGUMENT
- BX1 -X1*X7
- SB3 X1
- SB4 B3-B1 TEST ARGUMENT
- LE B3,B1,SCS1 IF *NORMAL* OR *ASCII*
- NE B4,B1,PCSX IF NOT *RESTORE*
- * PROCESS *RESTORE* FUNCTION.
- SA1 A0+VSTT GET ENTRY MODE
- SX7 B1
- AX1 18
- BX7 X7*X1 ENTRY MODE BIT
- SB3 X7 SAVE IN B3
- EQ SCS2
- * PROCESS *NORMAL* OR *ASCII* FUNCTION.
- SCS1 LX7 59-3 CHECK FOR ENTRY MODE RESET
- PL X7,SCS2 IF NOT RESET
- SX5 B3
- SA1 A0+VSTT CLEAR ENTRY MODE
- MX7 -1
- LX1 -18
- BX7 X7*X1
- BX7 X7+X5 SET ENTRY MODE
- LX7 18
- SA7 A1 REWRITE VSTT
- SCS2 RJ RDC READ *VDCT*
- SX7 B1 CLEAR MODE
- LX7 51-0
- BX1 -X7*X1
- SX7 B3 SET MODE
- LX7 51-0
- IX7 X7+X1
- SA7 A1 REWRITE *VDCT*
- SB3 B0
- IFNET RES RESTART JOB
- SX2 /1TD/SCE SET TRANSMISSION MODE FOR MUX TERMINALS
- SX7 RES SET RESTART ADDRESS
- JP DCR ENTER DRIVER REQUEST
- SDT SPACE 4,10
- ** SDT - SET TERMINAL TABLE BIT.
- *
- * ENTRY (B3) = BIT NUMBER.
- * (X7) = TERMINAL TABLE WORD ORDINAL.
- *
- * CALLS ABT.
- SDT BSS 0
- SX3 1
- SB4 X7+
- SDT1 MX2 59
- SX6 X7-VSTT
- LX3 X3,B3 POSITION BIT
- NZ X6,SDT2 IF WRONG WORD
- SA1 A0+B4
- LX2 X2,B3 POSITION MASK
- SB7 B3-60
- BX6 X2*X1 CLEAR BIT
- PL B7,SDT2 IF BIT OUT OF RANGE
- BX6 X6+X3
- SA6 A1
- EQ PCSX EXIT
- SDT2 SX6 3RSDT
- RJ ABT
- EQ PCSX EXIT
- SJS SPACE 4,10
- ** SJS - SET JOB STATUS MESSAGE FOR *ENQUIRE* COMMAND.
- *
- * ENTRY (X7) = 0 IF BAD ROLLOUT FILE.
- SJS BSS 0 ENTRY
- SA2 A0+VSTT
- SX0 2001B CHECK USER BREAK OR LOGOUT IN PROGRESS
- SB5 B2
- LX0 48
- RJ GRT READ QUEUE ENTRY
- BX5 X4
- AX4 48
- SX4 X4-ITA1$
- NZ X4,SJS1 IF NOT STATUS REQUEST QUEUE ENTRY
- SX6 B0
- BX0 X0*X2
- SA6 A4+ CLEAR QUEUE ENTRY
- RJ UQS UPDATE QUEUE STACK
- RJ SSP
- NZ X0,IGN IF USER BREAK OR LOGOUT IN PROGRESS
- ZR X7,STA1 IF REQUEST REJECTED, REISSUE
- EQ STA7 REENTER STATUS PROCESSING
- SJS1 SX6 3RSJS SET ERROR CODE
- RJ ABT
- EQ PCSX EXIT
- TITLE CHECK SALVARE FILE.
- TITLE DRI - PROCESS DRIVER REQUESTS.
- DRI SPACE 4
- ** DRI - FINDS ALL DRIVER CIRCULAR STACK REQUESTS AND BEGINS
- * PROCESSING OF THEM.
- *
- * CALLS ABT, CTM, DSH, REQUEST PROCESSORS VIA *PDR*.
- DRI SUBR ENTRY/EXIT
- SX7 VDRL SET FIRST STACK POINTER ADDRESS
- SA7 DRIA
- * SET STACK ADDRESS.
- DRI1 SA1 X7 READ STACK POINTER
- NG X1,DRIX IF END OF STACK POINTERS, EXIT
- AX1 24
- SX7 X1+ SET STACK ADDRESS
- ZR X7,DRI5 IF NULL STACK
- SA7 DRIB SAVE STACK ADDRESS
- * GET CIRCULAR STACK ENTRY.
- DRI2 SA2 X1+2 READ IN
- SA3 A2+B1 READ OUT
- BX4 X2-X3
- ZR X4,DRI4 IF IN .EQ. OUT
- SA4 A3+B1 READ LIMIT
- SA5 X3 READ ENTRY
- SX6 X3+B1 ADVANCE OUT
- BX4 X6-X4
- NZ X4,DRI3 IF OUT .NE. LIMIT
- SA1 A2-1 READ FIRST
- SX6 X1+ SET OUT = FIRST
- * PROCESS CIRCULAR STACK ENTRY.
- DRI3 SA6 A3 REWRITE OUT
- UX1,B7 X5 UNPACK ENTRY
- SB6 TDRIL SET COMMAND TABLE LIMIT
- NG B7,DRI6 IF BAD ENTRY
- GE B7,B6,DRI6 IF BAD ENTRY
- SA4 TDRI+B7 GET PROCESSOR ADDRESS
- SB7 X4+
- ZR B7,DRI6 IF UNDEFINED PROCESSOR
- RJ /SMFIF/PDR PROCESS DRIVER REQUEST
- SA1 DRIB RESET STACK ADDRESS
- EQ DRI2 CONTINUE
- * CHECK COMPLETED STACK FOR SHUTDOWN.
- DRI4 SA1 DRIA GET STACK POINTER ADDRESS
- SA2 X1 READ STACK POINTER
- AX2 48 CHECK SHUTDOWN POINTER
- ZR X2,DRI5 IF NO SHUTDOWN
- LX2 59-49+48
- NG X2,DRI7 IF SHUTDOWN COMPLETE
- RJ DSH PROCESS SHUTDOWN
- * ADVANCE STACK POINTER AND CONTINUE.
- DRI5 SA1 DRIA GET STACK POINTER
- SX7 X1+B1 ADVANCE POINTER
- SA7 A1
- EQ DRI1 CONTINUE
- * PROCESS BAD STACK ENTRY.
- DRI6 SX6 3RDRI SET ERROR CODE
- BX7 X5 SAVE INCORRECT REQUEST
- SA7 DRIC
- RJ ABT PROCESS ERROR
- EQ DRI5 CONTINUE
- * CHECK CALL *1TM* FLAG.
- DRI7 SA1 DRIA GET CURRENT *VDRL* ADDRESS
- MX7 -18
- SA2 VITM GET *1TM* *VDRL* ADDRESS
- BX2 -X7*X2
- BX7 X1-X2
- NZ X7,DRI5 IF NOT *1TM* *VDRL* ADDRESS
- SA1 X2
- LX1 59-50
- PL X1,DRI5 IF CALL *1TM* FLAG NOT SET
- RJ CTM CALL *1TM* DRIVER
- EQ DRI5 CONTINUE
- DRIA CON 0 CURRENT STACK POINTER ADDRESS
- DRIB CON 0 CURRENT STACK ADDRESS
- DRIC CON 0 SAVE INCORRECT REQUEST CODE
- TDRI SPACE 4
- ** TDRI - COMMAND PROCESSING TABLE FOR DRIVER(S) CIRCULAR.
- * STACK(S).
- TDRI INDEX CON,/TLX/REQL,( 0 )
- INDEX ,/TLX/CLI,( CLI )
- INDEX ,/TLX/DIN,( DIN )
- INDEX ,/TLX/DLO,( DLO )
- INDEX ,/TLX/DRP,( DRP )
- INDEX ,/TLX/DRT,( DRT )
- INDEX ,/TLX/DTJ,( DTJ )
- INDEX ,/TLX/ETX,( ETX )
- INDEX ,/TLX/FLO,( FLO )
- INDEX ,/TLX/HUP,( HUP )
- INDEX ,/TLX/IAM,( IAM )
- INDEX ,/TLX/LPT,( LPT )
- INDEX ,/TLX/PUB,( PUB )
- INDEX ,/TLX/RES,( RES )
- INDEX ,/TLX/RIN,( RIN )
- INDEX ,/TLX/SAI,( SAI )
- INDEX ,/TLX/TOT,( TOT )
- TDRIL EQU *-TDRI TABLE LENGTH
- DRI TITLE DRI - SUBROUTINES.
- CLI SPACE 4
- ** CLI - COMMAND LINE OF INPUT RECEIVED.
- *
- * ENTRY (B3) = COMMAND POT POINTER.
- * (B4) = COMMAND POT ADDRESS.
- * (X7) = FWA IN COMMAND POT.
- *
- * EXIT TO APPROPRIATE COMMAND PROCESSOR.
- * SEE SSP.
- CLI BSS 0
- SA1 A0+VDCT
- SA2 A0+VROT
- MX4 59
- LX4 5-0 CLEAR *INPUT SATISFIED* BIT
- BX6 X2*X4
- LX4 56-5 CLEAR *INPUT REQUESTED*
- SA6 A2
- BX6 X1*X4
- SA6 A1+
- SB5 B2+
- RJ GRT READ QUEUE ENTRY
- BX3 X4
- AX4 48
- SX5 X4-INP$
- LX1 59-49
- ZR X5,CLI2 IF EXPLICIT INPUT REQUEST
- SX5 X4-TOT$
- ZR X5,IGN IF TIMEOUT IN PROGRESS
- NG X1,AUT5 IF AUTO MODE
- IFNET CLI1
- SA2 A0+VDCT CLEAR AUTO MODE BIT FOR MUX TERMINAL
- SX6 B1
- LX6 45-0
- BX6 -X6*X2
- SA6 A2
- CLI1 LX1 59-57-59+49
- NG X1,PCM IF USER LOGGED IN, PROCESS COMMAND
- RJ INO ISSUE NULL OUTPUT
- EQ PCSX EXIT
- * PROCESS INP$ QUEUE ENTRY.
- *
- * EXIT TO INP$ QUEUE ENTRY REENTRY ADDRESS.
- * (B3) = INPUT POT POINTER.
- * (B5) = QUEUE ENTRY POT POINTER.
- * (B6) = QUEUE ENTRY POT ADDRESS.
- * (PBUF) = CRACKED COMMAND.
- CLI2 BX4 X3
- LX3 -24
- PL X1,CLI3 IF NOT AUTO MODE
- IFNET AUT5
- MX6 1 CLEAR AUTO MODE BIT FOR MUX TERMINAL
- BX6 -X6*X1
- LX6 49-59
- SA6 A1
- CLI3 SX5 X3-INP
- ZR X5,CLI5 IF INPUT TO A RUNNING PROGRAM
- RJ CCM CRACK COMMAND
- CLI4 SB5 B2+ SET TERMINAL NUMBER
- RJ GRT READ QUEUE ENTRY
- * SET PARAMETERS AND EXIT TO PROCESSOR.
- CLI5 BX6 X6-X6 CLEAR QUEUE ENTRY
- SA6 A4
- BX6 X4 SAVE QUEUE ENTRY
- SA6 CLIA
- RJ UQS UPDATE QUEUE STACK
- RJ SSP RESTORE REGISTERS
- SA4 CLIA GET QUEUE ENTRY
- AX4 12 SET QUEUE ENTRY POT POINTER
- MX1 -12
- BX1 -X1*X4
- SB5 X1
- AX4 12 SET REENTRY ADDRESS
- LX1 3 SET QUEUE ENTRY POT ADDRESS
- SB7 X4+
- TB6 X1,VBMP
- JP B7 EXIT TO PROCESSOR
- CLIA CON 0 QUEUE ENTRY
- DIN SPACE 4,10
- ** DIN - PROCESS USER DIALED IN.
- *
- * DIN IS ENTERED WHEN A COMMUNICATIONS LINE BECOMES
- * ACTIVE. A POT IS GIVEN TO THE DRIVER FOR THE
- * ANSWERBACK FROM THE TERMINAL. REENTRY IS SET TO
- * *LIN* FOR NON-POLLED TERMINALS.
- DIN BSS 0 ENTRY
- * DETERMINE IF TERMINAL IS IDLE.
- DIN1 SA2 A0+VROT
- SA3 A0+VDCT
- LX2 59-0
- SA4 A0+VSTT
- MX6 -12
- LX4 59-48
- BX2 -X2+X4
- BX4 X3+X2
- NG X4,DIN2 IF LOGOUT, DRIVER REQUEST, OR INCOMPLETE
- BX6 -X6*X3
- NZ X6,DIN2 IF VDCT INTERLOCKED
- * REQUEST ANSWERBACK POT.
- PX5 X6,B1
- RJ CFL CHECK FIELD LENGTH
- NG X2,DIN2 IF POTS IN SHORT SUPPLY
- RJ RPT RESERVE POT
- SA1 A0+VDCT
- NZ X7,DIN3 IF POT RESERVED
- * REENTER DIAL IN PROCESSING.
- DIN2 SX5 DIN1$
- BX7 X7-X7
- SB3 B0
- EQ PCS1 MAKE QUEUE ENTRY
- * PRESET FOR LOGIN PROCESSING.
- DIN3 BX3 X7 ASSIGN POT TO DRIVER
- SX6 2R"EB" SET TERMINATOR IN POT
- BX7 X1+X7
- LX3 3
- LX6 48-0
- LX1 59-47
- TA6 X3,VBMP
- SX2 B1 SET *READ DATA*
- LX2 54-0
- BX7 X7+X2
- SA7 A1 REWRITE VDCT
- NG X1,PCSX IF POLLED LINE
- SX5 INP$ SET UP QUEUE ENTRY
- SX7 LIN SET REENTRY
- LX5 48
- LX7 24
- IX5 X5+X7 MERGE QUEUE POINTER AND REENTRY
- SB7 B0 INDICATE NULL QUEUE
- RJ MQE MAKE QUEUE ENTRY
- EQ PCSX EXIT
- DTJ SPACE 4,15
- ** DTJ - DETACH JOB.
- *
- * ENTRY (X7) = REASON CODE.
- * (B3) = POT POINTER, IF PROVIDED.
- * (B4) = FWA POT, IF PROVIDED.
- *
- * EXIT (B3) = POT POINTER TO PARAMETER BLOCK.
- * (B4) = FWA PARAMETER BLOCK.
- * (X2) = ERROR FIELD, IF ANY.
- *
- * CALLS CAM, CDP, CJA, CNT, DAP, DIP, DLP, DVP, GOP, MVA, PMR,
- * SSP, UEC.
- *
- * MACROS PARAM.
- DTJ BSS 0
- SA1 A0+VSTT
- BX2 X1
- LX1 59-56
- LX2 59-48
- BX2 X1+X2
- NG X2,PCSX IF LOGOUT OR DETACH IN PROGRESS
- MX6 1 SET DETACH IN PROGRESS
- BX6 X1+X6
- LX6 56-59
- SA6 A1
- SA1 A0+VDCT
- SA7 DTJD SAVE REASON CODE
- LX1 59-49
- PL X1,DTJ1 IF NOT IN AUTO MODE
- RJ CAM CLEAR AUTO MODE
- RJ DAP DEASSIGN ANY OUTPUT/DRIVER REQUESTS
- RJ DLP DUMP ANY REMAINING SOURCE INPUT
- RJ SSP RESTORE ENTRY PARAMETERS
- DTJ1 IFMUX DTJ1.1
- SA4 DTJD SAVE REASON CODE IN VMST
- RJ CNT CANCEL TYPEAHEAD
- ZR X1,DTJ1.1 IF NO REENTRY MADE
- SA6 DTJD RESTORE REASON CODE
- DTJ1.1 SA1 A0+VDCT CLEAR *INPUT REQUESTED*
- SX4 B1
- LX4 56-0
- BX6 -X4*X1
- SA6 A1
- RJ GOP
- SA1 DTJD
- BX7 X1
- SA7 B4+VCPC-1 SAVE REASON CODE
- SX7 DTJ2 SET RETURN ADDRESS
- EQ CJA CLEAR JOB ACTIVITY
- DTJ2 SX7 B3 SET POT ADDRESS
- LX7 3
- TB4 X7,VBMP
- PARAM FJEJ FREEZE JOB
- RJ PMR PROCESS MONITOR REQUEST
- SX5 DTJ3$
- EQ PCS1 WAIT UNTIL THE JOB HAS ROLLED
- DTJ3 SA3 B4+VCPC-1 RESTORE REASON CODE
- PARAM DTEJ,X3
- RJ PMR PROCESS MONITOR REQUEST
- BX0 X2 SAVE RESULT
- RJ DIP DROP INPUT POT CHAIN
- RJ DVP DROP *VROT* POT CHAIN
- RJ SSP RESTORE B4
- BX2 X0 RESTORE RESULT CODE
- SA1 B4+2 GET REASON CODE
- MX3 -6
- AX1 42
- BX3 -X3*X1
- SB6 X3-TDJPL
- PL B6,DTJ6 IF INVALID REASON CODE
- SA5 TDJP+X3 GET PROCESSOR ADDRESSES
- SB7 X5
- AX5 30
- SB6 X5
- ZR X2,DTJ4 IF NO ERRORS REPORTED
- SX1 X2-JOER
- ZR X1,DTJ3.1 IF JOB NOT ON-LINE
- * IF A *JDER* ERROR CODE IS RETURNED, EITHER THE
- * JOB IS NOT IN *IOJS* OR *DOJS* STATUS, OR THERE
- * IS A BAD REASON CODE IN THE REQUEST. IN EITHER
- * CASE THERE IS NO WAY TO RECOVER FROM THIS ERROR.
- SX1 X2-JDER
- ZR X1,DTJ6 IF UNRECOVERABLE ERROR
- * IF AN *ERER* ERROR CODE IS RETURNED AN UNRECOVERABLE I/O
- * ERROR OCCURRED.
- SX1 X2-ERER
- ZR X1,DTJ3.1 IF UNRECOVERABLE I/O ERROR
- JP B7 RETURN TO ERROR PROCESSOR
- DTJ3.1 SA1 A0+VFST BUILD MESSAGE
- MX6 24
- BX1 X6*X1 JSN
- SA2 DTJE+2
- BX2 -X6*X2 CLEAR OLD JSN
- BX6 X1+X2 ADD NEW JSN
- SA6 A2
- SX6 DTJE
- RJ IDM ISSUE DAYFILE MESSAGE
- DTJ4 SA1 A0+VUIT CLEAR EJT ORDINAL
- MX3 48
- BX6 X1*X3
- SA6 A1 REWRITE VUIT
- JP B6 EXIT TO NORMAL PROCESSOR
- * RETURN HERE UPON SUCCESSFUL USER DETACH.
- DTJ5 SA1 A0+VFST PUT JSN IN MESSAGE
- MX6 24
- MX0 -3 SAVE ACCESS LEVEL LIMIT OF DETACHED JOB
- SA2 B4+2
- LX2 -54
- BX0 -X0*X2
- BX6 X1*X6
- BX7 X7-X7
- SA6 DTJB
- MX6 42 SAVE TERMINAL NAME OF DETACHED JOB
- SA2 B4+6
- BX6 X6*X2
- SA6 DTJC
- SA7 A0+VFNT
- SA7 A0+VCHT
- SA1 A0+VSTT CLEAR USER EFFECT MODE
- MX7 1
- LX7 55-59
- BX6 -X7*X1
- SA6 A1 REWRITE VSTT
- SX6 DTJA SET MESSAGE ADDRESS
- SB4 3
- RJ MVA MOVE MESSAGE TO POT AND ASSIGN
- RJ GOP GET ONE POT
- SA1 A0+VUIT
- MX6 -6
- MX7 42
- BX7 X7*X1 GET USERNAME
- LX1 48
- BX6 -X6*X1 GET FAMILY ORDINAL
- SA6 B4
- ERRNZ VUFO CODE DEPENDS ON VALUE
- SA7 B4+VUNA
- SX6 X0+10B SET ACCESS LEVEL LIMIT FOR NEW JOB
- SA6 B4+VLAL
- BX7 X7-X7 ZERO VFST
- SX6 B1 CLEAR VROT
- SA7 A0+VFST
- SA6 A0+VROT
- SA1 DTJC
- BX6 X1
- SA6 B4+VTRY SET TERMINAL NAME
- SX5 ITA2$ SET 1TA LOGIN REQUEST
- EQ PCS1 RELOGIN USER
- * RETURN HERE UPON ERROR IN USER DETACH.
- DTJ6 RJ CDP CLEAR DETACH IN PROGRESS
- SX1 X2-DLER
- SMA X6,( DETACH LIMIT EXCEEDED."NL")
- ZR X1,PCS5 IF LIMIT EXCEEDED
- SX1 X2-SFER
- SX3 X2-ISER
- SMA X6,(USER NOT VALIDATED FOR DETACHED SERVICE CLASS."NL")
- ZR X3,PCS5 IF SERVICE CLASS NOT VALID FOR USER
- SMA X6,(SERVICE CLASS FULL."NL")
- ZR X1,PCS5 IF SERVICE CLASS AT JOB LIMIT
- SX3 X2-ERER
- SMA X6,( DEVICE INACCESSIBLE - DETACH FAILED."NL")
- ZR X3,PCS5 IF DEVICE INACCESSIBLE OR I/O ERROR
- RJ UEC PROCESS ERROR CODE
- SMA X6,( ERROR ON DETACH."NL")
- EQ PCS5 EXIT TO SEND MESSAGE
- DTJA DATA 10H JOB DETA
- DATA 10HCHED, JSN=
- DTJB CON 0 JSN DETACH
- DTJC CON 0 TERMINAL NAME OF DETACHED JOB
- DTJD CON 0 DETACH REASON CODE
- DTJE DATA C* DETACH FAILED, JSN=XXXX.*
- TDJP SPACE 4,10
- ** TDJP - TABLE OF DETACH PROCESSORS.
- *
- * 30/NORMAL RETURN, 30/ERROR RETURN.
- TDJP INDEX VFD,MXDT,( )
- INDEX ,LDRC,( 30/HUP3,30/FTP5 ) LINE DISCONNECT
- INDEX ,TORC,( 30/FTP4,30/FTP5 ) FINISH TIMEOUT PROCESSING
- INDEX ,SARC,( 30/PCSX,30/PCSX ) SUBSYSTEM ABORT
- INDEX ,UDRC,( 30/DTJ5,30/DTJ6 ) USER DETACH
- INDEX ,PDRC,( 30/DTJ5,30/DTJ6 ) PROGRAM INITIATED DETACH
- INDEX ,PIDL,( 30/HUP3,30/FTP5 ) PROGRAM INITIATED HUP
- DLO SPACE 4
- ** DLO - PROCESSES DATA LOST CONDITION.
- *
- * ENTRY-
- * SEE SSP
- *
- * (X7) = REQUEST CODE.
- * 0 = DRIVER REENTRY. THIS MEANS THAT INPUT COULD
- * NOT BE ACCEPTED BECAUSE A DRIVER REENTRY WAS
- * ALREADY WAITING TO BE PROCESSED. THIS
- * IS DIAGNOSED AS *DATA LOST IAFEX*.
- *
- * 1 = LOST DATA. THIS MEANS THAT THE LOST DATA STATUS
- * WAS DETECTED IN THE 667X STATUS. THIS IS DIAGNOSED
- * AS *DATA LOST DRIVER*.
- DLO SA1 PMSG CHECK PENDING MESSAGE
- SA2 DLOB+X7 GET ERROR TYPE
- NZ X1,PCSX IF REQUEST PENDING SKIP MESSAGE
- SX1 B2 SET TERMINAL NUMBER
- BX6 X2
- SA6 DLOA+1
- RJ O6S
- SA2 DLOC SET SYSTEM CALL
- SA6 A6+B1
- BX7 X2
- SA7 A1
- EQ PCSX EXIT
- DLOA DATA H*DATA LOST *
- DATA 0
- DATA 0
- DLOB DATA 10HIAFEX
- DATA 10HDRIVER
- DLOC VFD 18/3R1MA,6/0,12/1,6/0,18/DLOA
- DRP SPACE 4
- ** DRP - DROPS A POT THAT IS NO LONGER NEEDED.
- *
- * ENTRY-
- * SEE SSP
- DRP BSS 0
- ZR X7,DRP1 IF NO RESET OF END OF CHAIN
- SB7 B0
- RJ RPL RESET POT LINKAGE
- EQ PCSX EXIT
- DRP1 SB4 B3
- RJ DPT DROP POT
- EQ PCSX EXIT
- ETX SPACE 4,10
- ** ETX - PROCESS TEXT MODE EXIT.
- *
- * ENTRY (B2) = TERMINAL NUMBER.
- * (B3) = POT TO BE DUMPED.
- * (X7) = WORD COUNT IN POT.
- * IF ZERO, NO DUMP IS FORCED.
- *
- * EXIT LAST POT IS DUMPED IF NOT EMPTY.
- * THE SORT FLAG IS CLEARED.
- * THE PRIMARY FILE IS PACKED.
- * *EXIT TEXT MODE.* MESSAGE IS ISSUED.
- *
- * CALLS CFC, DMP, MQE, PCB, SFL.
- ETX BSS 0 ENTRY
- SA1 A0+VROT CHECK FOR ACTIVITY
- LX1 59-0
- SX5 ETX1$
- PL X1,PCS1 IF TERMINAL ACTIVE
- * REENTRY AFTER ACTIVITY CEASES.
- ETX1 ZR B3,ETX2 IF USER ENTERED NO DATA
- SB7 B0 FORCE DUMP
- SB6 X7 WORD COUNT IN POT
- RJ DMP FORCE LAST POT DUMP
- SX5 ETX2$
- EQ PCS1 EXIT TO MAKE QUEUE ENTRY
- * REENTRY AFTER THE LAST POT IS DUMPED.
- ETX2 SA1 A0+VSTT CLEAR SORT FLAG
- SX2 B1
- LX2 54-0
- BX1 X1+X2 SET JOB COMPLETION FLAG
- LX2 52-54+60
- BX6 -X2*X1
- SA6 A1 REWRITE VSTT
- ZR B3,ETX2.1 IF USER ENTERED NO DATA
- SB4 B0
- RJ DPT DROP POT
- ETX2.1 SA1 A0+VFST SET NEXT OPERATION INDEX
- SX6 B1+B1 NEXT OPERATION INDEX, PREPROCESSOR INDEX
- LX6 12
- BX7 X6+X1
- SA7 A1 REWRITE VFST
- LX6 48
- SX7 B0 SET *EPN*
- EQ BJB1 ENABLE EXECUTION OF THE PACK INSTRUCTION
- ETX3 SX5 ETX4$ WAIT FOR PACK TO COMPLETE
- EQ PCS1 MAKE QUEUE ENTRY
- * REENTRY AFTER THE PACK IS COMPLETE.
- ETX4 SB3 B0 SET NO POT AVAILABLE
- SMA X6,("NL" EXIT TEXT MODE."NL")
- EQ PCS5 ISSUE THE MESSAGE
- FLO SPACE 4,10
- ** FLO - FORCED LOGOUT, *0004* CONTROL BYTE.
- *
- * ENTRY (B3) = APPLICATION NAME POT POINTER IF .NE. 0.
- * (X7) = 0, IF LOGOUT.
- * = 1, IF APPLICATION SWITCH.
- * = 2, IF FORCED LOGOUT.
- *
- * EXIT TO *APS* IF APPLICATION SWITCH.
- *
- * CALLS CJA, CLE, DIN, DRC1, GOP, HNG, IGN, PMR, PPB, RDC,
- * SLF, SSI.
- *
- * MACROS PARAM.
- FLO BSS 0
- SA1 A0+VSTT CHECK DETACH OR LOGOUT
- BX2 X1
- LX1 59-56
- LX2 59-48
- BX1 X1+X2
- NG X1,IGN IF DETACH OR LOGOUT IN PROGRESS
- SB5 X7+
- NE B5,B1,FLO0 IF NOT APPLICATION SWITCH
- SA2 A0+VDCT CHECK CONNECTION TYPE
- LX2 59-47
- NG X2,IGN IF THIS CONNECTION IS ALREADY LOANED
- LX2 59-46-59+47
- PL X2,APS IF IAF NOT SECONDARY APPLICATION
- FLO0 RJ SLF SET LOGOUT FLAG
- NZ B3,FLO0.1 IF POT PROVIDED
- RJ GOP
- SX1 B0+ PASS ZEROES FOR APPLICATION NAME
- EQ FLO1 CONTINUE
- FLO0.1 SA1 B4 GET NEXT APPLICATION NAME
- ZR B5,FLO1 IF NO FORCE LOGOUT, KEEP APPLICATION NAME
- SA1 =6LLOGOUT SET APPLICATION NAME FOR FORCE LOGOUT
- FLO1 BX6 X1
- SA6 B4+EJPB SAVE APPLICATION NAME
- ERRPL EJPB-VCPC PARAMETERS OVERFLOW POT
- SX7 FLO2 SET RETURN ADDRESS
- EQ CJA CLEAR JOB ACTIVITY
- FLO2 PARAM FJEJ FORCE JOB TO ROLLOUT
- RJ PMR
- FLO3 SX5 FLO4$ WAIT FOR ACTIVITY TO COMPLETE
- EQ PCS1 MAKE QUEUE ENTRY
- FLO4 SA1 B4+EJPB SAVE NEXT APPLICATION
- SA2 A0+VFNT
- MX0 -18
- BX2 -X0*X2
- BX6 X0*X1
- BX6 X6+X2
- SA6 A2 REWRITE VFNT
- PARAM TJEJ TERMINATE JOB
- RJ PMR
- ZR X2,FLO5 IF NO ERROR
- RJ UEC PROCESS TERMINATION ERROR
- FLO5 SA1 A0+VUIT CLEAR EJT ORDINAL
- MX0 42
- BX6 X0*X1
- SA6 A1
- BX6 X6-X6
- RJ SSI SEND SRU INFORMATION
- IFNET HNG IF NETWORK TERMINAL
- SA1 A0+VFNT
- SA2 =5LHELLO
- SA3 =5LLOGIN
- SX4 3RIAF
- LX4 42
- MX0 42
- BX1 X0*X1
- BX2 X1-X2
- BX3 X1-X3
- BX4 X1-X4
- ZR X2,FLO6 IF RELOGIN REQUIRED
- ZR X3,FLO6 IF RELOGIN REQUIRED
- NZ X4,HNG IF RELOGIN NOT REQUIRED
- FLO6 RJ RDC WAIT FOR DRIVER TO ACCEPT MESSAGE
- RJ CLE CLEAN UP TERMINAL TABLE
- SX7 DIN SET REENTRY ADDRESS
- SX2 /1TD/LGI SET RELOGIN REQUEST
- EQ DCR1 MAKE DRIVER REQUEST
- HUP SPACE 4
- ** HUP - PROCESSES THE COMMAND THAT SAYS A USER HAS HUNG UP.
- *
- * IF A NETWORK TERMINAL IS IN THE PROCESS OF LOGGING
- * OUT OR HAS COMPLETED LOGOUT, EXIT *HUP* IMMEDIATELY.
- * IN THE CASE OF MUX TERMINALS, *HUP* MUST ALWAYS BE
- * EXECUTED SO NO OUTPUT GOES TO TERMINALS AFTER THE
- * PHONE IS HUNG UP, AND THE TERMINAL TABLE GETS CLEANED UP.
- *
- * CALLS CLE, DAP, DLP, DPT, DQP, SLF, SSP.
- HUP BSS 0
- IFMUX HUP0.1
- SA1 A0+VDCT CHECK IF LOGOUT HAS ALREADY BEGUN
- SA2 A0+VSTT
- LX1 59-57
- LX2 59-48
- BX2 -X1+X2
- NG X2,PCSX IF LOGOUT IN PROGRESS OR JUST COMPLETED
- HUP0.1 RJ DAP DROP ASSIGNED POTS
- RJ SSP
- SA1 A0+VDCT CLEAR INTERRUPT COMPLETE FLAG
- MX2 1
- LX2 -1
- BX6 -X2*X1
- SA6 A1
- SX7 HUP1 SET REENTRY ADDRESS
- EQ CJA CLEAR JOB ACTIVITY
- HUP1 SA1 A0+VUIT CHECK EJT ORDINAL
- MX2 -12
- BX2 -X2*X1
- ZR X2,HUP3 IF NO EJT ORDINAL
- RJ DLP DUMP LAST INPUT POT
- ZR B6,HUP2 IF NO DUMP IN PROGRESS
- SX5 HUP2$
- EQ PCS1 WAIT DUMP COMPLETE
- HUP2 SX7 LDRC SET LINE DISCONNECT REASON CODE
- IFMUX HUP2.1
- SA1 /IAFEX4/SHDF
- PL X1,HUP2.1 IF NOT NETWORK SHUTDOWN
- SX7 SARC SET SUBSYSTEM ABORT REASON CODE
- HUP2.1 EQ DTJ DETACH JOB
- * RETURN HERE AFTER JOB DETACH.
- HUP3 RJ DQP DROP QUEUE ENTRY POTS
- SA1 A0+VFST CHECK FOR SPARE POT POINTER
- MX0 -12
- BX6 X0*X1 CLEAR POT POINTER
- BX1 -X0*X1
- ZR X1,HUP4 IF NO POT TO DROP
- SA6 A1
- SB3 X1
- SB4 B0 DROP TO END OF CHAIN
- RJ DPT DROP SPARE POT
- HUP4 RJ SLF SET LOGOUT FLAG
- SX7 3RBYE SET NVF PARAMETER
- LX7 42
- SB3 B0
- SA7 A0+VFNT
- IFNET HNG HANG UP PHONE FOR NETWORK TERMINAL
- RJ CLE CLEAR TERMINAL TABLE
- EQ PCSX EXIT
- LPT SPACE 4
- ** LPT - LINKS A NEW POT TO THE CURRENT CHAIN.
- *
- * ENTRY (B3) = POT TO WHICH NEW POT IS TO BE LINKED.
- *
- * CALLS RPT.
- LPT BSS 0
- SX5 B3 SET PARAMETERS TO REQUEST A POT
- PX5 X5,B1
- RJ RPT REQUEST POT
- EQ PCSX EXIT
- PUB SPACE 4,10
- ** PUB - PROCESS USER BREAKS.
- *
- * ENTRY (X7) = USER BREAK CODE.
- * (B3) = POT POINTER PASSED BY DRIVER.
- *
- * EXIT JOB STEP TERMINATED IF USER BREAK TWO ON A
- * NON-DISABLED TERMINAL.
- * REENTRY SET FOR *RST* IF USER BREAK ONE ON A
- * NON-DISABLED TERMINAL.
- * USER BREAK ERROR FLAG SET IF A DISABLED TERMINAL.
- *
- * CALLS CAM, CJA, DAP, DIP, DLP, DPT, DQP, DVP, GOP, GRT, INO,
- * MVA, PMR, SRR, SSP.
- *
- * MACROS PARAM, SMA.
- *
- * NOTES A TERMINAL IS DISABLED IF THE JOB STEP CURRENTLY
- * EXECUTING ON THAT TERMINAL HAS REPRIEVE PROCESSING
- * ENABLED FOR USER BREAKS.
- PUB BSS 0 ENTRY
- RJ DQP DROP ANY POTS PASSED BY THE DRIVER
- IFMUX PUB0
- TA1 B2,VMST
- PL X1,PUB12 IF TERMINAL IS NOT ON-LINE
- PUB0 SA2 A0+VSTT
- SA1 A0+VDCT
- MX3 -12
- SX4 0401B CHECK FOR LOGOUT OR DETACH IN PROGRESS
- BX3 -X3*X1
- LX1 59-57
- LX4 48
- BX4 X2*X4
- LX2 59-58
- NG X2,PCSX IF USER BREAK ALREADY IN PROGRESS
- NZ X4,PUB1 IF LOGOUT OR DETACH IN PROGRESS
- NG X1,PUB2 IF LOGIN COMPLETE
- PUB1 NZ X3,PUB12 IF OUTPUT/FUNCTION REQUEST ALREADY QUEUED
- EQ PUB11 SET COMPLETE FLAG TO RESTART DRIVER
- PUB2 MX6 1 SET BREAK IN PROGRESS
- BX6 X2+X6
- LX6 58-59 REALIGN VSTT
- SA6 A2
- RJ CAM CLEAR AUTO MODE
- RJ DAP DEASSIGN ANY OUTPUT/DRIVER REQUESTS
- RJ DLP DUMP ANY REMAINING SOURCE INPUT
- RJ SSP RESTORE THE USER BREAK CODE
- SB3 X7 SAVE USER BREAK CODE THROUGH *CJA*
- SX7 PUB3
- EQ CJA CLEAR JOB ACTIVITY
- PUB3 SX0 B3 SAVE USER BREAK CODE THROUGH *GOP*
- SB3 B0
- RJ GOP GET A POT FOR THE PARAMETER BLOCK
- SX7 X0+
- SA7 B4+VCPC-1 SAVE USER BREAK CODE THROUGH *PMR*
- PARAM FJEJ FREEZE JOB
- RJ PMR PROCESS MONITOR REQUEST
- SA3 B4+VCPC-1 RESTORE USER BREAK CODE
- SA1 A0+VSTT CHECK DISABLED TERMINAL CONTROL
- MX2 1
- SX7 X3-TIET
- BX2 X2*X1
- BX2 X2+X7
- SX5 PUB4$
- ZR X2,PCS1 IF USER BREAK ONE WITHOUT DISTC
- PARAM SAEJ,X3 SET USER BREAK ERROR FLAG
- RJ PMR PROCESS MONITOR REQUEST
- SX5 PUB4$
- EQ PCS1 WAIT UNTIL THE JOB HAS ROLLED
- * CONTROL IS NOT RETURNED UNTIL THE JOB HAS ROLLED OUT
- * AND THE USER BREAK ERROR FLAG HAS BEEN PLACED IN
- * THE EJT ENTRY.
- PUB4 SA1 A0+VSTT
- NG X1,PUB9 IF DISABLED TERMINAL
- SA1 B4+B1 RESTORE USER BREAK CODE
- MX7 -12
- AX1 12
- BX7 -X7*X1
- SX7 X7-TAET
- ZR X7,PUB5 IF USER BREAK 2 ON NON-DISABLED TERMINAL
- SB5 B0 USER BREAK 1 ON NON-DISABLED TERMINAL
- SX7 RST
- RJ SRR MAKE INP$ ENTRY TO RETURN AT *RST*
- SMA X6,("NL" *INTERRUPTED*"NL")
- EQ PUB8.1 ASSIGN MESSAGE
- PUB5 SB4 B0+ RETURN THE PARAMETER BLOCK POT
- RJ DPT
- RJ DVP DROP VROT POT CHAIN
- SX6 3 SET NEXT OPERATION INDEX
- SA1 A0+VFST
- LX6 12
- BX6 X1+X6
- SA6 A1
- SX7 B0 SET *EPN*
- SX6 B0 SET *PPI* NOT TO SORT FILE
- EQ BJB1 BEGIN JOB
- PUB7 SX5 PUB8$
- EQ PCS1 MAKE QUEUE ENTRY
- PUB8 SA1 A0+VSTT CLEAR RUN COMPLETE AND JOB COMPLETE
- SX2 0110B
- LX2 48
- BX6 -X2*X1
- SA6 A1
- MX3 59
- SA2 A0+VROT CLEAR LIST COMPLETE
- LX3 6-0
- BX6 X3*X2
- SA6 A2
- SA2 A0+VDCT CLEAR READ DATA
- LX3 54-6
- BX2 X3*X2
- LX1 51-18
- LX3 51-54
- BX2 X3*X2 CLEAR EXTENDED/ASCII CHARACTER SET
- BX6 -X3*X1
- IX6 X6+X2 RESTORE INITIAL CHARACTER SET
- SA6 A2+ REWRITE VDCT
- SMA X6,("NL" *TERMINATED*"NL")
- PUB8.1 IFMUX PUB10 ASSIGN MESSAGE
- TA1 B2,VMST CLEAR CONTINUATION FLAGS
- MX7 55
- LX7 23
- BX7 X7*X1
- SA7 A1 REWRITE VMST
- EQ PUB10 ASSIGN MESSAGE
- PUB9 SA1 A0+VROT CLEAR OUTPUT AVAILABLE/INPUT REQUESTED
- MX6 58
- LX6 3-0
- BX6 X1*X6
- SX1 B1 SET EOF
- LX1 13-0
- BX6 X1+X6
- SA6 A1+
- SX6 B0 SET NO MESSAGE
- * ISSUE MESSAGE AND REENABLE THE DRIVER.
- * THE MESSAGE ACTS AS AN INTERLOCK TO KEEP IAF FROM
- * WRITING IN VDCT UNTIL THE DRIVER HAS CLEARED THE
- * INTERRUPT COMPLETE FLAG.
- PUB10 SA1 A0+VSTT CLEAR BREAK IN PROGRESS FLAG
- SX7 B1
- LX7 58-0
- BX7 -X7*X1
- SA7 A1
- ZR X6,PUB11 IF NO MESSAGE TO ASSIGN
- SB4 B0
- RJ MVA ASSIGN INTERLOCKING OUTPUT MESSAGE
- EQ PUB12 CLEAR INTERRUPT COMPLETE FLAG
- PUB11 RJ INO PROVIDE THE DRIVER WITH A POT
- PUB12 IFNET PUB13
- SB5 B2+
- RJ GRT CHECK NEXT REENTRY
- ZR X4,PUB14 IF NONE
- AX4 24
- SX1 X4-HUP1
- NZ X1,PUB14 IF (X7) NOT *HUP1*
- AX4 24
- SX4 X4-CJA$
- ZR X4,PCSX IF *CJA* FOR HUP, EXIT
- EQ PUB14 SET INTERRUPT COMPLETE
- PUB13 RJ DIP DROP INPUT POT CHAIN
- SA2 A0+VCHT SET DRIVER REENTRY
- MX6 12
- BX6 X6*X2
- LX6 12
- SX6 X6+/IAFEX4/NDR-/IAFEX4/BRK8
- NZ X6,PCSX IF USER BREAK DRIVER REENTRY GONE
- PUB14 SA1 A0+VDCT SET INTERRUPT COMPLETE FLAG
- SX6 B1
- LX6 58-0
- BX6 X1+X6
- SA6 A1
- EQ PCSX EXIT
- RES SPACE 4
- ** RES - REQUEST NEXT ASSIGNMENT.
- *
- * CHECKS CURRENT TERMINAL STATUS AND MAKES NEW ASSIGNMENT IF
- * NEEDED.
- *
- * ENTRY (SEE SSP).
- * (B3) = 0.
- *
- * CALLS ASM, COI, COP, EDR, GRT, INP, PIP, RDY, URL.
- RES BSS 0
- SA1 A0+VROT
- MX4 -12
- LX1 59-0
- PL X1,PCSX IF ACTIVE, EXIT
- MX7 14
- LX1 1
- SA3 A0+VSTT CHECK FOR SECONDARY OUTPUT ASSIGNMENT
- SA2 A0+VDCT CHECK FOR OUTPUT CURRENTLY AVAILABLE
- LX7 12
- BX6 X7*X2
- NZ X6,PCSX IF OUTPUT, DRIVER REQUEST, OR INTERRUPT ACK
- BX7 -X4*X3
- BX5 X1
- ZR X7,RES1 IF NO OUTPUT IN VSTT
- IFNET PCSX IF OUTPUT ON NETWORK TERMINAL
- BX6 X3*X4
- SA6 A3 REWRITE VSTT
- SX5 B1+B1 TELL DRIVER TO START AT WORD TWO
- BX7 X2+X7
- LX5 36-0
- BX7 X5+X7
- SA7 A2+ REWRITE VDCT
- EQ PCSX EXIT
- RES1 SB5 B2+ CHECK FOR QUEUE ENTRY
- RJ GRT GET ENTRY FROM TABLE
- NZ X4,RES8 IF QUEUED ENTRY
- BX4 X3
- LX3 59-56
- LX4 59-48
- BX4 X3+X4
- NG X4,PCSX IF DETACH OR LOGOUT IN PROGRESS
- LX1 59-4
- MX4 -2
- NG X1,RES2 IF OUTPUT ON MASS STORAGE
- LX1 0-18-59+4+60
- BX4 -X4*X1
- NZ X4,URL IF TIME OR SRU LIMIT
- LX1 0-36-0+18
- MX4 -12
- BX6 -X4*X1
- NZ X6,RES4.1 IF WAITING TO BE ROLLED IN WITH INPUT
- LX1 59-3-0+36-60
- NG X1,RES3 IF WAITING FOR INPUT
- LX1 3-2
- NG X1,RES5 IF WAITING TO BE ROLLED IN
- LX1 62-6
- LX3 56-54
- NG X1,RES6 IF LIST COMPLETE
- NG X3,RES6 IF JOB COMPLETION NOT PROCESSED
- SA1 VWMP
- LX2 59-49
- NG X2,PCSX IF AUTO MODE, EXIT
- LX2 59-57-59+49+60
- AX1 24
- PL X2,PCSX IF USER NOT COMPLETELY LOGGED IN
- LX3 54-50
- ZR X1,RES9 IF NO WARNING MESSAGE
- NG X3,RES9 IF MESSAGE ISSUED
- EQ RES10 ISSUE WARNING MESSAGE
- * PROCESS OUTPUT ON MASS STORAGE.
- RES2 SX5 ITO1$
- EQ PCS1 MAKE QUEUE ENTRY
- * PROCESS INPUT REQUEST MESSAGE.
- RES3 SA1 A0+VDCT REQUEST DRIVER TO ISSUE INPUT PROMPT
- SX2 /1TD/IIP SET INPUT PROMPT REQUEST
- LX1 59-49 CHECK FOR AUTO MODE
- NG X1,RES4 IF AUTO MODE TO A RUNNING PROGRAM
- RJ EDR ENTER DRIVER REQUEST
- RES4 SX5 INP$ SET UP INPUT REQUEST
- SX7 INP SET RETURN ADDRESS
- SB3 B0
- EQ PCS1 MAKE QUEUE ENTRY
- * ROLLIN JOB.
- RES4.1 SB3 X6 SAVE INPUT POT POINTER
- BX6 X4*X1 CLEAR POT POINTER IN VROT
- LX6 36
- SA6 A0+VROT
- RES5 SX7 B0 SET *EPN*
- SX6 B0+ SET *PPI* NOT TO SORT FILE
- EQ BJB1 BEGIN JOB
- * PROCESS JOB COMPLETION.
- RES6 SX6 B1 CLEAR READ DATA FLAG
- LX6 54
- BX6 -X6*X2
- SA6 A2
- SA4 =77777777777700004001B
- BX6 X4*X5
- SA6 A1
- SA3 A0+VFST CLEAR SMFIF STATE CODE
- MX6 -6
- LX6 18-0
- BX6 X6*X3
- SA6 A3
- ERRNZ /SMFIF/SIDL THIS CODE ASSUMES SIDL=0
- SA3 A0+VSTT
- SX6 4110B CLEAR CONTROL FLAGS
- LX6 48
- BX6 -X6*X3
- SX5 B1
- LX3 59-54
- PL X3,RES7 IF NOT JOB COMPLETION
- * RESET TERMINAL CHARACTER MODE.
- SA1 A0+VDCT
- LX5 18
- BX4 X5*X6 GET VSTT ENTRY MODE
- LX5 51-18
- LX4 51-18
- BX7 -X5*X1 CLEAR VDCT CHARACTER MODE
- BX7 X4+X7 RESET TO ENTRY MODE
- SA7 A1+ REWRITE VDCT
- SX7 X6 RESET SYSTEM
- AX7 12
- * ISSUE COMPLETION MESSAGE.
- RES7 SA6 A3 REWRITE VSTT
- LX3 54-51
- PL X3,RDY IF NOT RUN COMPLETE
- IFNET /IAFEX4/JCM IF NETWORK TERMINAL
- MX1 -3
- LX6 -12
- BX7 -X1*X6 EXTRACT CURRENT SUBSYSTEM
- SA1 JCTT+X7 GET MESSAGE TO ISSUE
- SX6 X1+
- NZ X6,PCS5 IF MESSAGE SPECIFIED
- JP RDY
- * CHECK STATUS OF QUEUED ENTRY.
- RES8 AX4 48 CHECK QUEUE ENTRY
- SX6 X4-INP$
- NZ X6,PCSX IF NOT EXPLICIT INPUT REQUEST
- * ISSUE BEGIN INPUT REQUEST.
- RES9 SA1 A0+VDCT CHECK DRIVER STATUS
- SA2 RESA
- BX3 X2*X1
- NZ X3,PCSX IF INPUT REQUESTED OR DRIVER REQUEST
- IFMUX RES9.1 IF MUX TERMINAL
- SA1 A0+VSTT
- MX3 -12
- BX3 -X3*X1
- NZ X3,PCSX IF OUTPUT ON NETWORK TERMINAL
- RES9.1 SA2 A2+B1 REQUEST DRIVER TO BEGIN INPUT
- RJ EDR ENTER DRIVER REQUEST
- EQ PCSX EXIT
- * ISSUE WARNING MESSAGE.
- RES10 MX6 1 SET MESSAGE ISSUED
- BX6 X3+X6
- LX6 51
- SA6 A3
- TX2 X1,-VBMP GET POT POINTER
- AX2 3
- SB3 X2 COPY POT(S)
- RJ COP
- RJ ASM ASSIGN MESSAGE
- EQ PCSX EXIT
- ** TABLE OF TERMINAL DATA REQUESTS
- RESA CON 6400BS48+7777B
- CON 4400BS48+/1TD/BGI
- RIN SPACE 4,10
- ** RIN - RELEASE SOURCE INPUT POTS.
- *
- * ENTRY SEE SSP.
- *
- *T SSPA 12/ RIN ,6/ ,1/ F ,5/ WC ,12/ LP ,12/ FP ,12/ TN
- *
- * F = FORCED DUMP FLAG.
- * WC = WORD COUNT OF LAST POT IF FORCED DUMP
- * SPECIFIED.
- * LP = LAST POT OF SOURCE INPUT STRING. IF
- * FORCED DUMP SPECIFIED, LAST POT BELONGS
- * TO *RIN*, ELSE RETAINED BY ORIGINATOR.
- * FP = FIRST POT OF SOURCE INPUT STRING.
- * TN = TERMINAL NUMBER.
- RIN BSS 0 ENTRY
- ZR B3,RIN9 IF FIRST POT POINTER ZERO
- SA2 A0+VFNT
- SX0 B3
- MX1 42
- BX1 X1*X2
- ZR X1,RIN3 IF NO FILE TO DUMP TO
- LX2 59-12
- NG X2,RIN3 IF WRITE LOCKOUT BIT SET
- SA2 A0+VDCT
- LX2 59-57
- PL X2,RIN3 IF USER NOT LOGGED IN
- EQ RIN2 ENTER SOURCE DUMP LOOP
- * DUMP SOURCE TO PRIMARY FILE.
- RIN1 SB7 VIPL SET POT LIMIT
- BX7 X7-X7
- SB6 B1 SET POT TO BE DUMPED FLAG
- RJ DMP DUMP POTS
- SB3 X0 ADVANCE TO NEXT POT
- RJ GPL GET POT LINK
- ZR B3,RIN9 IF NEXT POT POINTER ZERO
- SX0 B3 (X0) = NEXT POT TO DUMP
- RJ SSP
- RIN2 MX3 -12 CHECK IF CURRENT POT REACHED
- BX2 -X3*X7
- BX2 X0-X2
- BX7 X3*X7
- SB3 X0
- NZ X2,RIN1 IF CURRENT POT NOT YET REACHED
- LX7 59-17 CHECK IF FORCED DUMP REQUESTED
- PL X7,PCSX IF NOT FORCED DUMP
- * FORCE *1TO* CALL TO DUMP CURRENT POT STRING.
- LX7 5-59
- SB7 B0 SET DUMP REQUIRED
- SX7 X7-40B SET POT LENGTH
- SB6 X7+
- RJ DMP FORCE SOURCE DUMP
- * REENTER TO DROP LAST POT ON *1TO* COMPLETION.
- SB3 X0 SET POT TO DROP
- BX7 X7-X7 SET TO DROP ENTIRE CHAIN
- SX5 RIN$
- EQ PCS1 MAKE QUEUE ENTRY
- * DROP POTS IF NO PRIMARY FILE.
- RIN3 LX7 59-17 CHECK FOR FORCED DUMP REQUESTED
- NG X7,RIN8 IF FORCED DUMP
- MX6 -12
- LX7 17-59
- BX7 -X6*X7
- RIN4 SX2 B3
- RJ GPL GET POT LINK
- SX1 B3
- BX1 X1-X7
- NZ X1,RIN4 IF NOT YET CURRENT POT
- SB3 X0 SET FIRST POT TO DROP
- SB4 X2 SET LAST POT TO DROP
- RJ DPT DROP POTS
- * ISSUE DIAGNOSTIC.
- RIN5 SA1 A0+VDCT
- SB3 B0 SET NO POT AVAILABLE
- LX1 59-57
- PL X1,PCSX IF USER NOT LOGGED IN
- SMA X6,(NO PRIMARY FILE."NL")
- SA1 A0+VFNT
- LX1 59-12
- PL X1,RIN6 IF NO WRITE LOCKOUT
- SMA X6,(WRITE ON READ-ONLY FILE."NL")
- RIN6 IFMUX RIN7
- SA1 A0+VDPT CLEAR *INPUT INITIATED*
- SX7 1S16
- BX7 -X7*X1
- SA7 A1 REWRITE VDPT
- EQ PCS5 ISSUE MESSAGE
- RIN7 SA1 A0+VSTT
- MX2 -12
- BX3 -X2*X1
- ZR X3,PCS5 IF OUTPUT NOT BACKED UP, ISSUE MESSAGE
- EQ PCSX NO MESSAGE - PREVENT *ASM* ERRORS
- * ENTRY TO DROP ENTIRE CHAIN AND ISSUE DIAGNOSTIC.
- RIN8 SB4 B0 DROP WHOLE CHAIN
- RJ DPT DROP POTS
- EQ RIN5 ISSUE MESSAGE
- RIN9 SX6 3RRIN SET ERROR CODE
- RJ ABT ABORT IF SENSE SWITCH THREE SET
- EQ PCSX EXIT
- SAI SPACE 4,10
- ** SAI - SET AUTO INPUT MODE.
- *
- * ENTRY -
- * SEE SSP.
- SAI SA1 A0+VDCT SET AUTO MODE INPUT BIT
- SX6 B1
- LX6 49
- BX6 X6+X1
- SA6 A1
- JP PCSX EXIT
- TOT SPACE 4,10
- ** TOT - TIME OUT TERMINAL.
- *
- * MAKES A TIME DELAY QUEUE ENTRY FOLLOWED BY A WAIT
- * COMPLETION QUEUE ENTRY TO FTP (FINISH TIMEOUT PROCESSING).
- TOT BSS 0 ENTRY
- IFMUX FTP1
- SB5 B2
- RJ GRT GET QUEUE ENTRY
- SX7 TOT
- NZ X4,CJA IF REQUEST, CLEAR QUEUE
- SB7 TIMQ
- SA1 STIM
- MX3 -24
- BX3 -X3*X1
- SX2 NTODL
- SX5 TOT$
- IX2 X2+X3 SET COMPLETION TIME
- LX5 48
- LX2 24
- BX5 X2+X5
- RJ MQE MAKE QUEUE ENTRY
- SX5 FTP$
- BX7 X7-X7
- SB3 B0
- EQ PCS1 EXIT
- PCM TITLE PCM - PROCESSES ALL TERMINAL COMMANDS.
- PCM SPACE 4
- *** PCM - PROCESSES ALL TERMINAL COMMANDS.
- *
- * ALL COMMANDS ARE PROCESSED ON THE BASIS OF WHAT SYSTEM THE
- * USER IS IN. IN SOME SYSTEMS ABBREVIATED FORMS OF THE
- * COMMANDS MAY BE ENTERED. IN OTHERS ESPECIALLY *BATCH*,
- * THE COMMANDS MUST BE ENTERED COMPLETELY. IT SHOULD
- * BE NOTED ALSO THAT SOME COMMANDS ARE VALID ONLY IN CERTAIN
- * SYSTEMS. IF NO SYSTEM NAMES ARE GIVEN ON THE COMMAND MACRO
- * CALL, THEN THE DEFAULT GROUP WILL BE TAKEN. IT SHOULD
- * BE NOTED THAT THE ABOVE ALLOWS A COMMAND TO HAVE DIFFERENT
- * MEANINGS, SYNTAX, ETC. IN DIFFERENT SYSTEMS.
- *
- *
- * 1) A MASK TO USE IN COMPARISON OF THE COMMAND WITH
- * THE COMMAND TABLE IS GENERATED AND THEN THE FIRST
- * CHARACTER IS CHECKED FOR BEING ALPHABETIC.
- * THE MINIMUM NUMBER OF CHARACTERS IN THIS MASK IS
- * DETERMINED BY THE SYSTEM THE USER IS UNDER.
- *
- * CURRENTLY THE REQUIREMENTS ARE AS FOLLOWS
- * SYSTEM MINIMUM CHARACTER MASK
- * NULL 3
- * BASIC 3
- * FORTRAN 3
- * FTNTS 3
- * BATCH 7
- * ACCESS 3
- *
- * 2) THE FIRST CHARACTER IS USED TO GET AN ADDRESS TO
- * START SEARCHING AT IN THE COMMAND TABLE.
- *
- * 3) THE COMMAND TABLE IS SEARCHED UNTIL A COMPARISON
- * IS MADE OR UNTIL THE COMMAND IS OF A LESSER
- * VALUE THAN THOSE BEING COMPARED AGAINST. THE
- * COMMAND TABLE IS IN ALPHABETICAL ORDER.
- *
- * 4) IF A SUCCESSFUL COMPARISON IS MADE, A CHECK IS MADE
- * TO SEE IF THE COMMAND IS VALID IN THE SUBSYSTEM.
- * IF IT ISN,T GO BACK TO STEP (3).
- *
- * 5) A CHECK IS MADE AFTER A SUCCESSFUL COMPARISION
- * TO SEE IF THERE IS ANY OTHER COMMAND BEGINNING
- * WITH THE SAME GROUP OF CHARACTERS THAT IS LEGAL IN
- * THE SYSTEM THE USER IS UNDER. IF THERE IS
- * THE MESSAGE *COMMAND NOT UNIQUE.* IS ISSUED.
- *
- * 6) THE MAXIMUM NUMBER OF PARAMETERS IS THEN CHECKED.
- * IF THE MAXIMUM NUMBER IS EXCEEDED GO TO STEP (8).
- *
- * 7) IF THE ABOVE STEPS WERE COMPLETED SUCCESSFULLY, THE
- * COUNT IS INCREMENTED FOR THE GIVEN COMMAND AND THE
- * APPROPRIATE PROCESSING ROUTINE IS ENTERED.
- *
- * 8) THE APPROPRIATE ERROR PROCESSING ROUTINE IS ENTERED
- * BASED ON THE SYSTEM THE USER IS IN.
- *
- *
- * ERROR RETURNS-
- *
- * *FILE NAME ERROR.* A FILE NAME DOES NOT CONFORM TO ONE OR
- * MORE OF THE FOLLOWING
- * 1) A FILE NAME MUST BE SEVEN CHARACTERS OR LESS
- * 2) A FILE NAME MUST CONTAIN ONLY ALPHANUMERICS
- *
- * *TOO MANY PARAMETERS.* THE NUMBER OF PARAMETERS IN THE
- * COMMAND EXCEED THE NUMBER REQUIRED.
- *
- * *INCORRECT PARAMETER.* CHECK PARAMETER DEFINITIONS.
- *
- *
- * ENTRY (SEE SSP).
- * (B3) = COMMAND POT POINTER.
- * (B4) = COMMAND POT ADDRESS.
- * (X7) = COMMAND WORD INDEX.
- *
- * CALLS CCM, DMP, IGN, SCT, SSP.
- PCM BSS 0 ENTRY
- SA1 A0+VDCT
- LX1 59-54
- NG X1,PCM2 IF DATA MODE INPUT
- SA1 A0+VROT
- LX1 59-0
- NG X1,PCM1 IF NO ACTIVITY
- SX5 PCM1$ MAKE QUEUE ENTRY
- EQ PCS1 MAKE QUEUE ENTRY
- * DUMP QUEUED DATA TO DISK.
- PCM1 SA1 A0+VSTT CHECK FOR QUEUED DISK DATA
- MX2 12
- LX2 -12
- BX3 X2*X1
- BX3 X3+X7
- ZR X3,PCM2 IF NO DATA TO DUMP TO DISK
- SA1 A0+VFNT
- MX2 42
- BX2 X1*X2
- ZR X2,RIN8 IF NO PRIMARY FILE
- SB7 B0 RELEASE SOURCE LINB INPUT
- SB6 X7
- RJ DMP
- SX5 PCM2$
- EQ PCS1 MAKE QUEUE ENTRY
- * CHECK JOB ACTIVITY.
- PCM2 SA2 A0+VSTT
- SX3 2001B CHECK FOR USER BREAK OR LOGOUT IN PROGRESS
- SA1 B4+X7 READ COMMAND
- LX3 48-0
- BX2 X3*X2
- NZ X2,IGN IF USER BREAK OR LOGOUT IN PROGRESS
- SA2 A0+VUIT
- ZR X2,IGN IF LOGGED OFF
- NZ X1,PCM4 IF NOT NULL
- * ISSUE SHORT STATUS RESPONSE IF NULL COMMAND.
- PCM3 NG X1,PCM20 IF NEGATIVE
- RJ DJS DETERMINE JOB STATUS
- EQ PCS5 ISSUE MESSAGE
- * CRACK COMMAND TO COMMAND BUFFER.
- PCM4 RJ CCM CRACK COMMAND
- SA1 PBUF GET CRACKED COMMAND
- SA2 CCMA GET PARAMETER COUNT
- AX2 1
- IX3 X2+X1
- ZR X3,PCM3 IF SINGLE COMMAND OF BLANKS
- ** PROCESS COMMAND.
- * REENTER HERE FROM LAN WHEN PROCESSING SECOND COMMAND.
- PCM5 BSS 0
- SA1 PBUF READ PARAMETER
- SA2 A1+1 READ SEPARATOR
- NZ X1,PCM6 IF NOT NULL PARAMETER
- SX2 X2-1R-
- NZ X2,PCM6 IF NOT *-* SEPARATOR
- SA3 =0LBEGIN
- BX6 X3
- SA6 A1
- SX6 1R(
- SB4 5 CHARACTER COUNT
- PX6 X6,B4
- SA6 A2
- PCM6 BSS 0
- SA1 A0+VSTT DETERMINE MINIMUM CHARACTERS TO PROCESS
- * BASED ON SYSTEM
- SA2 PBUF+1 GET COUNT OF CHARACTERS IN COMMAND NAME
- MX3 -3
- LX1 -12
- BX3 -X3*X1 EXTRACT CURRENT SUBSYSTEM
- SX1 X3-MSYS
- PL X1,PCM18 IF INCORRECT SUBSYSTEM
- SA1 PCOM+X3
- UX2,B4 X2 GET NUMBER OF CHARACTERS RECEIVED
- UX1,B5 X1 GET MINIMUM TO COMPARE ON
- SB7 X3+ SET SYSTEM NUMBER
- SX3 B4
- GE B4,B5,PCM7 IF AT OR ABOVE MINIMUM CHARACTER COUNT
- SX3 B5
- PCM7 LX4 X3,B1 CHARACTER COUNT * 6
- LX3 2
- IX6 X3+X4
- MX5 1 GENERATE COMPARISON MASK
- SB5 X6-1
- AX5 X5,B5 GENERATE MASK
- SA3 A2-B1 GET COMMAND NAME
- BX1 X3
- AX3 54 GET FIRST CHARACTER
- SX4 X3-1R0
- NG X1,PCM18 IF INCORRECT COMMAND
- PL X4,PCM18 IF INCORRECT COMMAND
- MX2 -2
- BX2 -X2*X3 GET LOWER TWO BITS
- AX3 2 USE UPPER THREE BITS TO INDEX TABLE
- SA4 TCOMA+X3 GET INDEX WORD
- SX2 X2+B1 SHIFT COUNT = (BYTE + 1) * 12
- LX2 2 GET BYTE IN INDEX WORD
- LX3 X2,B1
- IX3 X2+X3
- SB4 X3 SET SHIFT COUNT
- MX2 -12
- LX4 X4,B4
- BX6 -X2*X4
- SX0 B1+
- PCM8 SA2 TCOM+X6 GET NEXT COMMAND
- BX3 X5*X2
- IX3 X1-X3
- NG X3,PCM18 IF INCORRECT COMMAND
- SX6 X6+2
- NZ X3,PCM8 IF NO FIND
- SA3 A2+B1 CHECK IF COMMAND VALID
- LX4 X0,B7 SET SYSTEM MASK BIT
- LX4 18
- BX7 X4*X3
- ZR X7,PCM8 IF NOT VALID FOR THIS SYSTEM
- SB5 X2 SET COMMAND PROCESSOR ADDRESS
- MX6 42 SAVE FULL COMMAND NAME
- BX6 X6*X2
- BX2 X1-X6
- ZR X2,PCM9 IF COMPLETE COMMAND
- SA2 A3+B1 CHECK UNIQUENESS
- BX2 X5*X2
- BX2 X1-X2
- NZ X2,PCM9 IF COMMAND UNIQUE
- SA2 A2+B1
- BX4 X4*X2
- NZ X4,PCM16 IF COMMAND NOT UNIQUE TO THIS SYSTEM
- PCM9 SA6 PBUF
- BX2 X3
- RJ CFC COUNT COMMAND CHARACTERS
- BX3 X2
- SA1 PBUF+1 GET SEPARATOR
- UX6,B7 X1
- PX6 B6,X6
- SA6 A1
- SA1 A0+VROT
- IX6 X3+X0 INCREMENT COMMAND COUNT
- LX1 59-11
- SX4 X6
- PL X4,PCM10 IF NO COMMAND COUNT OVERFLOW
- BX6 X3
- PCM10 NG X1,PCM15 IF ERROR ON LAST OPERATION
- AX1 48
- MX2 -5
- BX1 -X2*X1
- SX1 X1-1
- NG X3,PCM12 IF SECONDARY COMMAND
- ZR X1,PCM11 IF STATUS IDLE
- SMA X6,( JOB ACTIVE."NL")
- RJ SSP
- EQ PCS5 ISSUE MESSAGE
- PCM11 TA4 B2,VRAP
- NZ X4,PCM20 IF REENTRY TABLE ENTRY TO BE PROCESSED
- PCM12 AX3 48 GET NUMBER OF LEGAL PARAMETERS
- MX5 -6
- SA2 CCMA
- BX5 -X5*X3
- IX5 X5-X2
- NG X5,PCM17 IF TOO MANY PARAMETERS
- IFMUX PCM14 IF MUX TERMINAL
- BX5 X6
- LX5 59-57
- NG X5,PCM18 IF COMMAND INCORRECT FOR NETWORK
- PCM14 SA6 A3 UPDATE COMMAND COUNT
- RJ SSP
- JP B5 PROCESS COMMAND
- PCM15 MX6 -59 CLEAR ERROR FLAG
- BX6 -X6*X1
- LX6 12
- SA6 A1
- SMA X0,( SYSTEM ERROR."NL")
- RJ SSP
- EQ PCM21 SEND ERROR MESSAGE
- PCM16 SMA X0,( COMMAND NOT UNIQUE."NL")
- RJ SSP
- EQ PCM21 SEND ERROR MESSAGE
- PCM17 SMA X0,( TOO MANY PARAMETERS."NL")
- EQ PCM19 PROCESS ERROR
- PCM18 SMA X0,( INCORRECT COMMAND."NL")
- PCM19 RJ SSP
- SA1 A0+VROT CHECK FOR ACTIVITY
- MX2 -5
- BX3 -X2*X1
- SX4 X3-1
- NZ X4,PCM21 IF NOT IDLE
- SA1 A0+VSTT READ VSTT
- MX4 -3
- LX1 -12
- BX1 -X4*X1 EXTRACT CURRENT SUBSYSTEM
- SA1 PCOM+X1 READ ERROR PROCESSOR ADDRESS
- SB6 X1+
- JP B6 GO TO SYSTEM ERROR PROCESSOR
- PCM20 SMA X0,( INCORRECT COMMAND."NL")
- RJ SSP
- PCM21 SA1 TCOMI+1 COUNT INCORRECT COMMAND
- SX7 X1+B1
- SA7 A1
- BX6 X0 GET MESSAGE ADDRESS
- EQ PCS5 ISSUE MESSAGE
- PCM TITLE PCM - TERMINAL USER,S COMMANDS.
- ** TCOM - TELETYPE USER,S VALID COMMAND TABLE.
- * ALL COMMANDS MUST BE ENTERED IN THIS TABLE IN ALPHABETICAL
- * ORDER.
- * SEE MACRO USECMN FOR A DESCRIPTION OF THE TABLE FORMAT.
- TCOM SPACE 4
- *** THE FOLLOWING IS A LIST OF ALL OF THE COMMANDS THAT MAY BE
- * ISSUED BY THE TTY USER. MOST OF THE COMMANDS MAY BE ISSUED
- * IN ALL SYSTEMS EXCEPT THE ACCESS SYSTEM. SOME COMMANDS
- * ARE RESTRICTED TO CERTAIN SYSTEMS. IN THE BATCH SYSTEM
- * ANY COMMAND WHICH CANNOT BE INTERPETED WILL BE ISSUED AS
- * A COMMAND. ANY COMMAND WHICH IS ISSUED IN A SYSTEM
- * WHICH IT IS NOT LEGAL FOR WITH THE EXCEPTION OF BATCH
- * WILL RETURN * INCORRECT COMMAND.*
- U3 MICRO 1,1,* * FIRST CHARACTER OF LAST COMMAND PROCESSED
- PARC EQU 10 NUMBER OF PARAMETER POSITIONS TO BE
- * CLEARED IN PBUF BY CCM. USED FOR
- * INSURING DEFAULTS FOR *RESEQ* FOR EXAMPLE
- TCOM BSS 0
- ACCESS SPACE 4
- *** ACCESS.
- *
- * SETS THE USER-S SYSTEM TO *ACCESS* IF VALIDATED (*CTPC* SET
- * IN *AACW*). IF NOT VALIDATED, * INCORRECT COMMAND.* WILL BE
- * RETURNED.
- USECMN ACCESS,ACC,,,,(ALL)
- SPACE 4,10
- *** ADMIT.
- *
- * ALLOWS USER TO GRANT EXPLICIT PERMISSION TO ACCESS TAPE
- * FILE(S) TO ANOTHER USER. (SEE TMS REFERENCE MANUAL FOR
- * DETAILS.
- USECMN ADMIT,PBS,0
- ALTER SPACE 4,10
- *** ALTER,LINES,/STR1/STR2/.
- *
- * REPLACES CHARACTER STRINGS IN SPECIFIED PRIMARY FILE LINES.
- *
- * LINES = ANY NUMBER OF LINE NUMBERS AND LINE RANGES,
- * IN ASCENDING ORDER. THIS PARAMETER IS OPTIONAL.
- * /STR1/STR2/ = TWO SEQUENCES OF CHARACTERS SEPARATED BY AND
- * DELIMITED BY A STRING DELIMITER. EITHER SEQUENCE MAY
- * BE NULL.
- USECMN ALTER,IED,0
- SPACE 4,10
- *** AMEND.
- *
- * ALLOWS USER TO AMEND THE CATALOG ENTRY FOR A TAPE FILE.
- * (SEE TMS REFERENCE MANUAL FOR DETAILS.)
- USECMN AMEND,PBS,0
- APL SPACE 4
- *** APL,XXXXX
- *
- * CALL *APL*.
- *
- * PARAMETER -
- * XXXXX = TERMINAL TYPE FOR APL PROCESSING.
- USECMN APL,PBS,0
- APP SPACE 4
- *** APPEND,LFN=PFN.
- *
- * THIS ALLOWS THE USER TO APPEND THE CONTENTS OF FILE *LFN*
- * TO FILE *PFN*. (SEE PFILES)
- USECMN APPEND,PSS,0
- SPACE 4,10
- *** APPSW,AP=ANAME,OP.
- *
- * THIS COMMAND ALLOWS THE USER TO SWITCH TO THE APPLICATION
- * *ANAME*, AND TO OPTIONALLY PASS INFORMATION TO THAT
- * APPLICATIOIN WITH THE *Z* PARAMETER.
- USECMN APPSW,PBS,0
- ASCII SPACE 4
- *** ASCII.
- *
- * SETS THE FLAG TO THE DRIVER FOR ASCII CONVERSION.
- USECMN ASCII,PBS,,,,(ALL)
- ATTACH SPACE 4
- *** ATTACH.
- *
- * SEE *PFILES* DOCUMENTATION.
- USECMN ATTACH,RPF,0
- SPACE 4,10
- *** AUDIT.
- *
- * ALLOWS USER TO OBTAIN INFORMATION ABOUT THE FILES THAT
- * RESIDE IN THE USERS TAPE FILE CATALOG OR ARE PERMITTED TO
- * ACCESS IN AN ALTERNATE USERS CATALOG. (SEE TMS REFERENCE
- * MANUAL FOR DETAILS.)
- USECMN AUDIT,PBS,0
- AUTO SPACE 4
- *** AUTO,NNN,YYY.
- *
- * THIS ALLOWS THE USER TO HAVE THE SYSTEM SUPPLY HIM
- * WITH LINE NUMBERS AUTOMATICALLY. THIS MODE IS CLEARED
- * ANYTIME A COMMAND LINE IS ENTERED. IT IS POSSIBLE
- * TO GET OUT OF THIS MODE BY ENTERING A COMMAND LINE.
- *
- * PARAMETERS-
- * NNN = STARTING LINE NUMBER. IF NULL, 100 IS ASSUMED.
- * YYY = AMOUNT TO INCREMENT EACH LINE NUMBER BY. IF NULL,
- * 10 IS ASSUMED.
- *
- * ERRORS-
- * *INCORRECT PARAMETER.* = THE INCREMENT IS MORE THAN 4095
- * OR THE STARTING LINE NUMBER IS MORE THAN FIVE
- * DIGITS.
- USECMN AUTO,AUT,3
- BASIC SPACE 4
- *** BASIC,NNNNN.
- *
- * THIS DEFINES THE SYSTEM TYPE TO BE *BASIC*. IF THERE
- * HAS BEEN NO FILE PREVIOUSLY DEFINED, THE USER IS ASKED
- * *OLD, NEW, OR LIB FILE *.
- *
- * PARAMETERS-
- * NNNNN = OPTIONAL ADDITIONAL COMMAND STRING.
- USECMN BASIC,LAN1,0,,,(ALL)
- BATCH SPACE 4
- *** BATCH,NNNNN.
- *
- * THIS COMMAND ALLOWS THE USER TO ENTER STANDARD *NOS*
- * BATCH COMMANDS AS WELL AS THE *IAFEX* COMMANDS THAT
- * ARE DESIGNATED VALID FOR THIS SYSTEM. IF A COMMAND CANNOT
- * BE INTERPRETED BY *IAFEX* IN THIS MODE IT WILL THEN BE
- * PASSED ONTO THE SYSTEM AS A COMMAND.
- *
- * PARAMETERS-
- * NNNNN = AMOUNT OF FL THESE JOBS ARE TO RUN IN.
- * IF *NNNNNN* IS NOT GIVEN, THEN THE DEFAULT *VBFL* IS USED.
- USECMN BATCH,BAT,2,,,(ALL)
- BEGIN SPACE 4,10
- *** BEGIN.
- *
- * SEE CYBER CONTROL LANGUAGE DOCUMENTATION.
- USECMN BEGIN,PSS,0
- BINARY SPACE 4
- *** BINARY,X,Y
- *
- * THIS ALLOWS THE USER TO INPUT BINARY DATA FROM THE TERMINAL
- * TO HIS PRIMARY FILE.
- * X = NUMBER OF CHARACTERS/LINE.
- * Y = TERMINATION CHARACTER IN OCTAL.
- USECMN BINARY,BIN,3,INVN
- BRIEF SPACE 4,10
- *** BRIEF.
- *
- * SETS BRIEF MODE, WHICH SUPPRESSES THE ISSUANCE OF
- * FULL OR PARTIAL HEADER RESPONSES TO COMMANDS. BRIEF
- * MODE IS CLEARED BY THE *NORMAL* COMMAND.
- USECMN BRIEF,BRF
- BYE SPACE 4
- *** BYE,ANAME.
- *
- * LOGS THE USER OFF AFTER ISSUING ACCOUNTING INFORMATION.
- *
- * PARAMETERS:
- *
- * ANAME NEXT APPLICATION TO BE LOGGED INTO. ONLY
- * *IAF* IS VALID FOR MULTIPLEXER TERMINALS.
- USECMN BYE,PBS,0,CHGR,,(ALL)
- CATLIST SPACE 4
- *** CATLIST.
- * SEE *CATLIST* DOCUMENTATION.
- USECMN CATLIST,PBS,0
- CHANGE SPACE 4
- *** CHANGE.
- * ALLOWS USER TO CHANGE THE CATALOG ENTRY
- * FOR A FILE (SEE PFILES).
- USECMN CHANGE,PBS,0
- CHARGE SPACE 4
- *** CHARGE,XXXXXXXXXX,YYYYYYYYYYYYYYYYYYYY.
- *
- * THIS COMMAND IS USED TO ENTER AN ACCOUNT FILE MESSAGE AND
- * VALIDATE THE CHARGE NUMBER *XXXXXXXXXX* AND PROJECT NUMBER
- * *YYYYYYYYYYYYYYYYYYYY* IF REQUIRED.
- * UP TO 10D CHARACTERS MAY BE ENTERED FOR CHARGE NUMBER
- * AND UP TO 20D FOR PROJECT NUMBER.
- * WHEN CHARGE NUMBER IS REQUIRED, ONLY THE FOLLOWING COMMANDS
- * MAY BE ENTERED
- * CHARGE,XXXXXXXXXX,YYYYYYYYYYYYYYYYYYYY.
- * HELLO.
- * LOGIN.
- * BYE.
- USECMN CHARGE,PBS,0,CHGR,,(ALL)
- CHVAL SPACE 4,10
- *** CHVAL(DI=DATA,...,DI=DATA)
- *
- * CHANGE USER VALIDATION DATA.
- *
- * DI = DATA IDENTIFIER.
- * DATA = VALUE TO BE ASSIGNED.
- *
- * ALLOWED DATA IDENTIFIERS ARE -
- * UC=OTSC. SET USER DEFAULT SERVICE CLASS *SC* FOR ORIGIN
- * TYPE *OT*.
- USECMN CHVAL,PBS,0
- CLASS SPACE 4,10
- *** CLASS,SC=SC,OT=OT,L=LFN,A.
- *
- * DISPLAY AND/OR CHANGE CURRENT SERVICE CLASS OF JOB.
- *
- * SC = SERVICE CLASS.
- * OT = ORIGIN TYPE.
- * L = OUTPUT FILE NAME.
- * A = ABORT MODE.
- USECMN CLASS,PBS,0
- CLEAR SPACE 4
- *** CLEAR.
- *
- * RETURN ALL FILES EXCEPT FOR PRIMARY FILE.
- USECMN CLEAR,PBS,0
- CVT SPACE 4,10
- *** CONVERT(P1,...,PN)
- *
- * CALLS *CONVERT* UTILITY TO CONVERT FILE FORMATS FROM
- * 63 TO 64 CHARACTER SET OR FROM NEW TO OLD CHARACTER
- * SET.
- USECMN CONVERT,PBS,0
- CSET SPACE 4,10
- *** CSET,PARAM.
- *
- * SETS TERMINAL TO NORMAL OR ASCII CHARACTER SET MODE.
- *
- * PARAMETERS-
- * PARAM = *ASCII*. SET EXTENDED CHARACTER SET MODE.
- * = *NORMAL*. SET NORMAL MODE.
- *
- * ERRORS-
- * *INCORRECT PARAMETER.* = AN UNRECOGNIZABLE PARAMETER
- * OR NO SECOND PARAMETER WAS ENTERED.
- USECMN CSET,PBS,2,,,(ALL)
- DAYFILE SPACE 4
- *** DAYFILE.
- *
- * PRINTS THE USER,S CONTROL POINT AREA DAYFILE TO HIS TERMINAL.
- USECMN DAYFILE,PBS,0
- DEFINE SPACE 4
- *** DEBUG,PARAM.
- *
- * ALLOWS THE USER TO ACTIVATE, TERMINATE OR RESUME
- * DEBUG MODE.
- *
- * PARAMETERS-
- * PARAM = *ON* DEFAULT. ACTIVATES DEBUG MODE.
- * WHENEVER A RELOCATABLE BINARY PROGRAM
- * IS LOADED AND EXECUTED, CYBER
- * INTERACTIVE DEBUG IS LOADED AND GIVEN
- * CONTROL.
- * = *OFF* TERMINATES DEBUG MODE.
- * = *RESUME* RESUME THE DEBUG SESSION SUSPENDED
- * BY THE LAST EXECUTION OF THE SUSPEND
- * COMMAND.
- USECMN DEBUG,PBS,0
- SPACE 4
- *** DEFINE.
- *
- * SEE *PFILES* DOCUMENTATION.
- USECMN DEFINE,PBS,0
- DELETE SPACE 4,15
- *** DELETE,LINES,/STRING/.
- *
- * THIS PRIMARY FILE EDITING COMMAND DELETES LINES SPECIFIED
- * BY LINE NUMBER OR CHARACTER CONTENT.
- *
- * LINES = ANY NUMBER OF LINE NUMBERS OR LINE RANGES, IN
- * ASCENDING ORDER.
- * /STRING/ = NON-NULL SEQUENCE OF CHARACTERS DELIMITED BY A
- * STRING DELIMITER.
- *
- * EITHER PARAMETER MAY BE OMITTED.
- USECMN DELETE,IED,0
- DIAL SPACE 4
- *** DIAL,NNNN,AAAAAAAAA.
- *
- * ALLOWS ONE USER TO SEND A MESSAGE TO ANOTHER USER.
- *
- * PARAMETERS-
- * NNNN = TERMINAL *JSN*. MAY BE DETERMINED BY COMMAND
- * *USER,USERNUM.*.
- * AAAAA = THE MESSAGE TO BE SENT. (IT MAY BE UP TO ONE TTY
- * LINE IN LENGTH INCLUDING THE COMMAND.
- USECMN DIAL,DIA,0,,,(ACCS)
- DROP SPACE 4,10
- *** DROP,JSN,Q,UJN.
- *
- * DROPS A JOB OR QUEUE FILE FROM ANY QUEUE OR CONTROL POINT.
- * ANY COMBINATION OF PARAMETERS MAY BE SPECIFIED.
- *
- * JSN = JOB SEQUENCE NUMBER.
- * Q = QUEUE TYPE: PR, PU, PL, IN, EX, TT, ALL.
- * UJN = USER JOB NAME.
- USECMN DROP,PBS,0
- DUP SPACE 4,15
- *** DUP,LR,N,Z.
- *
- * DUPLICATES LINE(S) FROM ONE PLACE IN A PRIMARY FILE
- * IN ANOTHER PLACE.
- *
- * LR = LINE NUMBER OR RANGE OF LINES TO BE DUPLICATED.
- * N = LINE NUMBER AFTER WHICH TO INSERT DUPLICATED LINES.
- * Z = LINE NUMBER INCREMENT USED TO GENERATE NEW LINE NUMBERS
- * ON DUPLICATED LINES.
- *
- * N AND Z ARE OPTIONAL.
- USECMN DUP,IED,0
- EDIT SPACE 4
- *** EDIT,LFN,AS.
- *
- * INITIATES THE TEXT EDITOR.
- *
- * PARAMETERS-
- * LFN = NAME OF THE FILE TO BE EDITED. IF NULL, THE PRIMARY
- * FILE NAME IS ASSUMED.
- * AS = EDIT FILE IN ASCII MODE.
- * (NOT REQUIRED IF TERMINAL IN ASCII MODE.)
- USECMN EDIT,EDI,9
- ENQ SPACE 4,10
- *** ENQUIRE,N.
- * ALLOWS USER TO FIND OUT HIS CURRENT STATUS.
- *
- * THIS COMMAND IS IDENTICAL IN ITS FUNCTION AND PARAMETERS
- * TO THE *STATUS* COMMAND (Q.V.). IT IS RECOMMENDED
- * THAT THIS FORM OF THE COMMAND BE USED WHEN IT IS
- * UNDESIRABLE TO ENTER THE LETTER *S* WHICH INITIATES
- * THE *STATUS* COMMAND.
- USECMN ENQUIRE,STA,0,SCOM,,(ALL)
- EFFECT SPACE 4
- *** EFFECT,PARAM.
- *
- * SET USER OR SYSTEM SUPPLIED FORMAT EFFECTOR MODE. IF
- * *SYSTEM* IS ENTERED, THEN IAFEX WILL GENERATE FORMAT
- * EFFECTORS FOR OUTPUT. IF *USER* IS ENTERED, THE
- * PROGRAM/USER MUST GENERATE ITS OWN FORMAT EFFECTORS FOR
- * OUTPUT.
- *
- * PARAMETERS-
- * PARAM = *SYSTEM*. SET SYSTEM SUPPLIED FORMAT EFFECTOR MODE.
- * = *USER*. SET USER SUPPLIED FORMAT EFFECTOR MODE.
- * = (OMITTED) = *SYSTEM*.
- *
- * ERRORS-
- * *ILLEGAL PARAMETER.* = AN UNRECOGNIZABLE PARAMETER
- * WAS ENTERED.
- USECMN EFFECT,PBS,2,,,(ALL)
- EXECUTE SPACE 4
- *** EXECUTE,NNNNN.
- *
- * SETS THE SYSTEM TYPE TO EXECUTE.
- * IF THERE HAS BEEN NO FILE SPECIFIED, THE USER IS ASKED
- * *OLD OR LIB FILE *.
- * NNNNN = OPTIONAL ADDITIONAL COMMAND STRING.
- USECMN EXECUTE,LAN4,PARL,,,(ALL)
- EXPLAIN SPACE 4
- *** EXPLAIN.
- *
- * ALLOWS USER TO ACCESS ON-LINE DOCUMENTATION.
- USECMN EXPLAIN,PBS,0,,,(ALL)
- SPACE 4,10
- *** FCOPY.
- *
- * CONVERT FILE FROM ONE CODE SET TO ANOTHER CODE SET.
- USECMN FCOPY,PBS,0
- FORTRAN SPACE 4
- *** FORTRAN,NNNNN.
- *
- * SETS THE SYSTEM TYPE TO *FORTRAN*. OTHERWISE IT IS
- * THE SAME AS THE *BASIC* COMMAND.
- USECMN FORTRAN,LAN2,0,,,(ALL)
- FSE SPACE 4,10
- *** FSE,LFN,ASCII.
- *
- * THIS COMMAND EXECUTES THE FULL SCREEN EDITOR.
- *
- * LFN = LOCAL FILE TO BE EDITED. IF OMITTED, ATTEMPT
- * TO RESUME PREVIOUS EDIT SESSION.
- * ASCII = PROCESS FILE AS 6/12 ASCII CODE IF THIS
- * PARAMETER IS PRESENT AND STARTS WITH *A*.
- USECMN FSE,PSS,0,,,(ALL)
- FTNTS SPACE 4
- ** FTNTS,NNNN.
- *
- * SETS THE SYSTEM TYPE TO *FTNTS*. OTHERWISE IT IS THE
- * SAME AS THE *BASIC* COMMAND.
- USECMN FTNTS,LAN3,0,,,(ALL)
- FULL SPACE 4
- *** FULL.
- *
- * SETS FULL DUPLEX TERMINAL OPERATION.
- USECMN FULL,FDP,,SCOM+INVN,,(ALL)
- GET SPACE 4
- *** GET,LFN=PFN.
- *
- * THIS ALLOWS THE USER TO GET A FILE FROM THE PERMANENT
- * FILE SYSTEM. (SEE PFILES)
- USECMN GET,RPF,0
- GOODBYE SPACE 4
- *** GOODBYE,ANAME.
- *
- * SEE *BYE.*
- USECMN GOODBYE,PBS,0,CHGR,,(ALL)
- HALF SPACE 4
- *** HALF.
- *
- * SETS HALF DUPLEX TERMINAL OPERATION.
- USECMN HALF,HDP,,SCOM+INVN,,(ALL)
- HELLO SPACE 4
- *** HELLO,ANAME.
- *
- * SAME AS *BYE,ANAME* IF ANAME IS PRESENT. IF *ANAME*
- * IS OMITTED, *IAF* IS ASSUMED.
- USECMN HELLO,PBS,0,CHGR,,(ALL)
- HELP SPACE 4
- *** HELP.
- *
- * USER DOCUMENTATION.
- USECMN HELP,PBS,,,,(ALL)
- HELPME SPACE 4
- *** HELPME.
- *
- * WILL DESCRIBE AND EXECUTE NOS COMMANDS FOR ON-LINE
- * USERS.
- USECMN HELPME,PBS,,,,(ALL)
- LENGTH SPACE 4
- *** LENGTH,LFN.
- *
- * RETURNS THE FILE TYPE, LAST STATUS, AND LENGTH OF FILE
- * *LFN*. IF *LFN* IS NULL, THE PRIMARY FILE NAME IS USED.
- *
- * PARAMETERS-
- * LFN = LOGICAL FILE NAME. (THIS DOES NOT RETURN THE LENGTH
- * OF A PERMANENT FILE.)
- USECMN LENGTH,LEN,2
- LIBRARY SPACE 4
- *** LIB.
- * LIB,LFN=PFN.
- *
- * SAME AS *OLD,PFN/UN=LIBRARY.*
- USECMN LIB,PFC,0
- LIMITS SPACE 4
- *** LIMITS.
- * THIS COMMAND DISPLAYS A USERS CURRENT
- * VALIDATION FILE PARAMETERS.
- USECMN LIMITS,PBS,0,,,(ALL)
- LINE SPACE 4,10
- *** LINE.
- * LINE,TM=MNEMONIC.
- * LINE,MNEMONIC.
- *
- * SETS THE TERMINAL IN LINE MODE AND OPTIONALLY SETS THE
- * TERMINAL MODEL.
- *
- * PARAMETERS-
- * MNEMONIC = TERMINAL MODEL.
- USECMN LINE,PBS,0
- LIST SPACE 4,20
- *** LIST,LINES,/STRING/.
- * LIST,LINE,F=LFN.
- *
- * ALLOWS THE USER TO LIST SELECTED LINES FROM PRIMARY AND
- * SECONDARY FILES TO THE TERMINAL.
- *
- * FIRST SYNTAX - PRIMARY FILES ONLY.
- *
- * LINES = ANY NUMBER OF LINE NUMBERS OR LINE RANGES
- * IN ASCENDING ORDER.
- * /STRING/ = A DELIMITED SEQUENCE OF CHARACTERS.
- *
- * SECOND SYNTAX - ANY LOCAL FILE.
- *
- * LINE = ONE LINE NUMBER OR ONE LINE RANGE. ONLY ONE
- * SUCH PARAMETER MAY APPEAR WHEN F=LFN IS SPECIFIED.
- * LFN = FILE TO BE LISTED. IF OMITTED, PRIMARY FILE ASSUMED.
- *
- * ALL PARAMETERS ARE OPTIONAL.
- USECMN LIST,LIS,0
- LNH SPACE 4
- *** LNH,LINES,/STRING/.
- * LNH,LINE,F=LFN.
- *
- * THIS COMMAND WORKS THE SAME AS *LIST*.
- USECMN LNH,LIS,0
- LOGIN SPACE 4
- *** LOGIN,ANAME.
- *
- * SAME AS *HELLO*
- USECMN LOGIN,PBS,0,CHGR,,(ALL)
- LOGOUT SPACE 4,10
- *** LOGOUT,ANAME.
- *
- * SAME AS *BYE,ANAME*.
- USECMN LOGOUT,PBS,0,CHGR,,(ALL)
- LO72 SPACE 4
- *** LO72.
- * SEE LO72 DOCUMENTATION.
- USECMN LO72,PBS
- MOVE SPACE 4,15
- *** MOVE,LR,N,Z.
- *
- * THIS PRIMARY FILE EDITING COMMAND MOVES LINES FROM ONE PLACE
- * TO ANOTHER, DELETING THE ORIGINAL LINES.
- *
- * LR = LINE NUMBER OR RANGE OF LINES TO BE MOVED.
- * N = LINE NUMBER AFTER WHICH TO INSERT THE MOVED LINES.
- * Z = LINE NUMBER INCREMENT USED TO GENERATE NEW LINE NUMBERS
- * ON MOVED LINES.
- *
- * N AND Z ARE OPTIONAL.
- USECMN MOVE,IED,0
- NEW SPACE 4
- *** NEW,LFN.
- *
- * THIS CAUSES ALL OF THE USER,S CURRENT FILES (NON-PERMANENT)
- * TO BE PURGED. A NEW PRIMARY FILE IS THEN ESTABLISHED FOR
- * THE USER.
- *
- * PARAMETERS-
- * LFN = OPTIONAL FILE NAME.
- *
- * RETURN-
- * *FILE NAME * = USER SUPPLIES FILE NAME.
- USECMN NEW,PFC,3
- NORMAL SPACE 4
- *** NORMAL.
- *
- * CLEARS THE SPECIAL OPTIONS ASCII, BRIEF, AND TAPE
- * MODES AND ODD PARITY.
- USECMN NORMAL,NOR,,,,(ALL)
- NOSORT SPACE 4
- *** NOSORT.
- *
- * ALLOWS THE USER TO PREVENT HIS PRIMARY FILE FROM BEING
- * SORTED ON A LIST OR A RUN COMMAND. THIS COMMAND MUST
- * BE ENTERED AFTER ALL CORRECTION LINES HAVE BEEN ENTERED
- * TO BE EFFECTIVE.
- USECMN NOSORT,NOS
- NULL SPACE 4
- *** NULL.
- *
- * CLEARS ALL SUB-SYSTEMS.
- USECMN NULL,LAN,,,,(ALL)
- OLD SPACE 4
- *** OLD.
- * OLD,LFN=PFN/UN=USERNUM,PW=PASSWOR.
- *
- * IF FIRST FORM IS USED THEN USER IS ASKED FOR FILE NAME.
- * SAME AS *GET* EXCEPT THAT PRIMARY FILE NAME IS SET TO LFN.
- USECMN OLD,PFC,0
- PACK SPACE 4
- *** PACK,LFN1,LFN2,NR.
- *
- * READS LFN1 TO EOI AND WRITES IT TO LFN2 AS ONE LOGICAL
- * RECORD. IF LFN1 AND LFN2 ARE NULL, THEN THE PRIMARY FILE
- * IS PACKED AND WRITTEN BACK. IF NR IS SPECIFIED AND LFN1
- * IS NOT THE PRIMARY FILE, LFN1 IS NOT REWOUND BEFORE
- * THE PACK.
- USECMN PACK,PAC,4
- PACKNAM SPACE 4,10
- *** PACKNAM,PN=DNAM,R=TYPE.
- *
- * DIRECTS SUBSEQUENT PERMANENT FILE REQUESTS TO THE
- * NAMED AUXILIARY DEVICE *DNAM* OF TYPE *TYPE*. THE *PN=*
- * PORTION OF *PN=DNAM*, AND *R=TYPE*, ARE OPTIONAL.
- USECMN PACKNAM,PBS,5,,,(ALL)
- PARITY SPACE 4
- *** PARITY,PARAM.
- *
- * SETS TERMINAL PARITY. IF NO PARAMETER IS ENTERED,
- * ODD PARITY IS ASSUMED.
- *
- * PARAMETERS-
- * PARAM = *ODD*. SET ODD PARITY.
- * = *EVEN*. SET EVEN PARITY.
- *
- * ERRORS-
- * *INCORRECT PARAMETER.* = AN UNRECOGNIZABLE PARAMETER
- * WAS ENTERED.
- USECMN PARITY,PAR,2,SCOM+INVN,,(ALL)
- PASSWORD SPACE 4
- *** PASSWOR,OLD,NEW.
- *
- * ALLOWS THE USER TO CHANGE HIS PASSWORD.
- *
- * PARMETERS-
- * OLD = USER,S CURRENT PASSWORD.
- * NEW = NEW PASSWORD.
- USECMN PASSWOR,PBS,3,,,(ALL)
- PERMIT SPACE 4
- *** PERMIT.
- *
- * ALLOWS THE USER TO GRANT AN EXPLICIT PERMISSION TO ACCESS
- * ONE OF HIS FILES TO ANOTHER USER. (SEE PFILES)
- USECMN PERMIT,PBS,0
- PRI SPACE 4,10
- *** PRIMARY,LFN.
- *
- * MAKES LOCAL FILE *LFN* PRIMARY FILE.
- USECMN PRIMARY,PFC,2
- PURGE SPACE 4
- *** PURGE,PFN/UN=USERNUM.
- *
- * ALLOWS A USER TO PURGE A FILE FROM THE PERMANENT FILE
- * SYSTEM. (SEE PFILES)
- USECMN PURGE,SAV,0
- QGET SPACE 4,15
- *** QGET,JSN,Q,UJN.
- *
- * ALLOWS USERS TO OBTAIN JOB OUTPUT FROM PRINT, PUNCH OR PLOT
- * QUEUES.
- *
- * JSN = JOB SEQUENCE NUMBER OF QUEUE FILE.
- * Q = QUEUE TYPE: PR, PU, PL OR TT. PR IS DEFAULT.
- * UJN = USER JOB NAME OF QUEUE FILE.
- *
- * EITHER JSN OR UJN MUST BE SPECIFIED. THE LOCAL FILE NAME OF
- * THE QUEUE FILE WILL BE JSN IF SPECIFIED, OR UJN IF
- * JSN IS OMITTED.
- USECMN QGET,PBS,0
- READ SPACE 4,15
- *** READ,LFN,N,Z.
- *
- * THIS COMMAND ADDS THE CONTENTS OF A FILE TO THE PRIMARY FILE.
- *
- * LFN = FILE TO ADD TO PRIMARY FILE. LINE NUMBERS ARE OPTIONAL
- * ON THIS FILE.
- * N = NUMBER OF LINE AFTER WHICH TO INSERT FILE.
- * Z = LINE NUMBER INCREMENT.
- *
- * N AND Z ARE OPTIONAL.
- USECMN READ,IED,0
- RECOVER SPACE 4
- *** RECOVER,NNNN.
- *
- * THIS COMMAND ALLOWS A USER TO ATTEMPT TO PICK UP FROM WHERE
- * HE WAS AT AFTER A LOSS OF COMMUNICATIONS OR A SYSTEM
- * FAILURE, OR A USER DETACH.
- *
- * PARAMETERS-
- * NNNN = JSN OF JOB TO RECOVER.
- *
- * REPLYS-
- * *JOB NOT FOUND.* JSN WAS NOT IN EJT.
- * *JOB NOT DETACHED.* JSN POINTS TO NON-DTCS JOB.
- * *JOB NOT RECOVERABLE.* SOME OTHER REASON PREVENTED RECOVERY,
- * I.E. BAD ROLLOUT FILE.
- USECMN RECOVER,PBS,0,,,(ALL)
- SPACE 4,10
- *** RELEASE.
- *
- * ALLOWS USER TO RELEASE ONE OR MORE TAPE FILES FROM THE
- * USERS TAPE CATALOG. (SEE TMS REFERENCE MANUAL FOR DETAILS.)
- USECMN RELEASE,PBS,0
- RENAME SPACE 4
- *** RENAME,LFN1=LFN2.
- *
- * CHANGES THE NAME OF FILE *LFN2* TO NAME *LFN1*. IF FILE
- * *LFN1* WAS PREVIOUSLY DEFINED IT IS DROPPED.
- USECMN RENAME,PBS,0
- REPLACE SPACE 4
- *** REPLACE,LFN=PFN.
- *
- * ALLOWS THE USER TO REPLACE A FILE THAT HE HAS SAVED IN
- * THE PERMANENT FILE SYSTEM. (SEE PFILES)
- USECMN REPLACE,SAV,0
- RESEQ SPACE 4
- *** RESEQ,NNNNN,YYYYY,T
- *
- * ALLOWS THE USER TO RESEQUENCE HIS PRIMARY FILE.
- *
- * PARAMETERS-
- * NNNNN = THE NUMBER TO START THE NEW FILE WITH.
- * IF NULL, 100 IS ASSUMED.
- * YYYYY = THE INCREMENT TO BE ADDED TO NNNNN FOR EACH LINE.
- * IF NULL, 10 IS ASSUMED.
- * T = TYPE OF FILE.
- * IF T = *B*, FILE TYPE IS ASSUMED BASIC AND INTERNAL SEQUENCE
- * NUMBERS ARE RESEQUENCED.
- * IF T = *T*, A FIVE DIGIT SEQUENCE NUMBER + BLANK ARE ADDED
- * TO THE BEGINNING OF ALL LINES WITH NO INSPECTION FOR
- * LEADING LINE NUMBERS.
- * IF T IS OMITTED, IT DEFAULTS TO *B* IF UNDER BASIC SUBSYSTEM,
- * OTHERWISE, THE FILE IS TREATED AS A FORTRAN TYPE FILE WHERE
- * ALL LEADING LINE NUMBERS ARE RESEQUENCED WITH NUMBERS BEING
- * SUPPLIED WHERE NONE ARE PRESENT.
- *
- * ERRORS-
- * *INCORRECT PARAMETER.* = INCREMENT IS ZERO.
- USECMN RESEQ,RER,4
- SPACE 4,10
- *** RESERVE.
- *
- * ALLOWS USER TO RESERVE A CENTER-OWNED SCRATCH TAPE. (SEE
- * TMS REFERENCE MANUAL FOR DETAILS.)
- USECMN RESERVE,PBS,0
- RETURN SPACE 4
- *** RETURN,LFN.
- *
- * SEE *FILES*.
- USECMN RETURN,PBS,0
- REWIND SPACE 4
- *** REWIND,LFN.
- *
- * REWINDS FILE *LFN*.
- USECMN REWIND,PBS,0
- RFL SPACE 4,15
- *** RFL,CM=NNNNNN,EC=MMMM.
- *
- * ALLOWS THE USER TO SPECIFY THE INITIAL RUNNING FIELD LENGTH
- * FOR EACH SUBSEQUENT JOB STEP.
- *
- * PARAMETERS-
- * NNNNNN = DESIRED CENTRAL MEMORY FIELD LENGTH. THIS VALUE
- * WILL BE ROUNDED UP TO THE NEAREST 100B. ASSUMED TO BE OCTAL
- * UNLESS AN 8, 9 OR D SUFFIX PRESENT.
- * MMMM = DESIRED EXTENDED MEMORY FIELD LENGTH IN OCTAL. MMMM
- * IS THE ACTUAL EXTENDED MEMORY DIVIDED BY 1000B.
- USECMN RFL,PBS,5
- RNH SPACE 4
- *** RNH.
- *
- * SAME AS THE *RUN* COMMAND.
- USECMN RNH,RUN,0,,,(BASS,FORS,FTNS,EXES)
- ROUT SPACE 4
- *** ROUT=XX.
- *
- * SETS NUMBER OF RUBOUTS AFTER CARRIAGE RETURN TO XX.
- * XX MUST BE LESS THAN 31.
- * IF XX IS NULL, SYSTEM DEFINED NUMBER WILL BE SET.
- USECMN ROUT,ROT,2,SCOM+INVN,,(ALL)
- RUN SPACE 4
- *** RUN,B=LFN,C=LFN,I=LFN,T,Q1,Q2,QN.
- *
- * ALLOWS THE USER TO COMPILE IF NECESSARY AND BEGIN EXECUTION
- * OF HIS PROGRAM.
- *
- * PARAMETERS-
- * THE FOLLOWING ARE OPTIONAL
- * B = SPECIFIES THAT A BINARY FILE CONTAINING THE OBJECT
- * CODE IS TO BE GENERATED ON FILE *LFN*.
- * C = SAME AS *B*.
- * I = USE FILE LFN INSTEAD OF PRIMARY FILE. FILE IS ASSUMED
- * SORTED.
- * T = TRANSMIT THE FOLLOWING PARAMETER STRING AS A CONTROL
- * COMMAND STRING FOLLOWING THE FILE NAME. APPLIES TO EXECUTE
- * SYSTEM ONLY.
- USECMN RUN,RUN,0,,,(BASS,FORS,FTNS,EXES)
- SAVE SPACE 4
- *** SAVE,LFN=PFN.
- *
- * SAME AS *REPLACE* EXCEPT THAT THE FILE *PFN* CANNOT
- * PREVIOUSLY EXIST IN THE PERMANENT FILE SYSTEM. (SEE PFILES)
- USECMN SAVE,SAV,0
- SCOPY SPACE 4,10
- *** SCOPY,LFN.
- *
- * THIS COMMAND COPIES LFN FROM PRESENT POSITION TO EOF TO THE
- * OUTPUT FILE, REPORTING FILE STRUCTURE (EOR-S AND EOF-S) IN
- * READABLE FORMAT. FOR OTHER PARAMETERS AVAILABLE ON THIS
- * COMMAND, SEE THE NOS REFERENCE MANUAL, VOLUME ONE.
- *
- * LFN = LOCAL FILE NAME, DEFAULT INPUT.
- USECMN SCOPY,PBS,0
- SCREEN SPACE 4,10
- *** SCREEN.
- * SCREEN,TM=MNEMONIC.
- * SCREEN,MNEMONIC.
- *
- * SETS THE TERMINAL IN SCREEN MODE AND OPTIONALLY SETS THE
- * TERMINAL MODEL.
- *
- * PARAMETERS-
- * MNEMONIC = TERMINAL MODEL.
- USECMN SCREEN,PBS,0
- SETASL SPACE 4,12
- *** SETASL,SSSSS
- *
- * ALLOWS THE USER TO SPECIFY HIS TOTAL ALLOWABLE SRU
- * ACCUMULATON.
- *
- * PARAMETERS -
- * SSSSS = DESIRED SRU ACCOUNT BLOCK LIMIT. THIS VALUE WILL BE
- * ROUNDED UP TO THE NEAREST 10. ASSUMED TO BE IN DEFAULT
- * BASE UNLESS POST RADIX GIVEN. IF NULL, DEFAULT IS ASSUMED.
- USECMN SETASL,PBS,2
- SETFS SPACE 4,15
- *** SETFS,LFN1,LFN2,...,LFNN/FS=FS.
- * SETFS,*,LFN1,LFN2,...,LFNN/FS=FS.
- *
- * SET THE AUTO-DROP OR NO-AUTO-DROP STATUS ON FILES ASSIGNED
- * TO YOUR JOB. IF NO-AUTO-DROP IS SET, THE FILE IS NOT
- * RELEASED FROM YOUR JOB BY COMMANDS *NEW*, *OLD*, *CLEAR*,
- * +RETURN,*+ OR +UNLOAD,*+. THE FIRST FORMAT ASSIGNS THE
- * SPECIFIED STATUS TO THE FILES LISTED. THE SECOND FORMAT
- * ASSIGNS THE SPECIFIED STATUS TO ALL FILES ASSIGNED TO THE
- * JOB, EXCEPT THE FILES LISTED.
- *
- * LFNX = LOCAL FILE NAME.
- * FS = SPECIFIES EITHER THE AUTO-DROP (FS=AD) OR NO-AUTO-
- * DROP (FS=NAD) STATUS. THE DEFAULT FOR USER-CREATED
- * FILES IS AUTO-DROP.
- SETFS USECMN SETFS,PBS,0
- SETJOB SPACE 4,10
- *** SETJOB,UJN,DC,OP.
- *
- * SPECIFIES USER JOB NAME, DISPOSITION OF DETACHED JOB OUTPUT
- * UPON JOB COMPLETION, OR END OF JOB PROCESSING FOR DETACHED
- * JOB. ANY COMBINATION OF PARAMETERS MAY BE SPECIFIED.
- *
- * UJN = USER JOB NAME.
- * DC = OUTPUT DESTINATION: TO, NO, BC, RB, DF.
- * OP = END OF DETACHED JOB OPTION: SU, TJ.
- USECMN SETJOB,PBS,0
- SETJSL SPACE 4,12
- *** SETJSL,SSSSS
- *
- * ALLOWS THE USER TO SPECIFY THE ALLOWABLE SRU ACCUMULATION
- * DURING EACH JOB STEP.
- *
- * PARAMETERS -
- * SSSSS = DESIRED SRU JOB STEP LIMIT. THIS VALUE WILL BE
- * ROUNDED UP TO THE NEAREST 10. ASSUMED TO BE IN DEFAULT BASE
- * UNLESS POST RADIX GIVEN. IF NULL, DEFAULT IS ASSUMED.
- USECMN SETJSL,PBS,2
- SETTL SPACE 4
- *** SETTL,NNNNN.
- *
- * ALLOWS THE USER TO INCREASE HIS TOTAL ALLOWABLE CPU TIME.
- *
- * PARAMETERS-
- * NNNNN = DESIRED TIME LIMIT. THIS VALUE WILL BE ROUNDED
- * UP TO THE NEAREST 10. ASSUMED TO BE IN DEFAULT BASE UNLESS
- * POST RADIX GIVEN.
- * IF NULL, DEFAULT IS ASUMED.
- USECMN SETTL,PBS,2
- SORT SPACE 4
- *** SORT,LFN,NC=N.
- *
- * ALLOWS THE USER TO FORCE SORTING OF HIS PRIMARY FILE.
- * IF *LFN* (OPTIONAL IS GIVEN, A SORT IS PERFORMED IMMEDIATLEY
- * ON THE FILE NAMED. A FILE OF ANY LENGTH MAY BE SORTED
- * BY THIS METHOD.
- * *NC=N* IS AN OPTIONAL PARMETER WHICH SPECIFIES THE NUMBER
- * OF CHARACTERS TO SORT ON. THIS IS IN THE RANGE OF 1 TO 10.
- USECMN SORT,SOF,0
- STATUS SPACE 4
- *** STATUS,N.
- * ALLOWS THE USER TO FIND OUT HIS CURRENT STATUS.
- *
- * PARAMETERS-
- * N = F, RETURN FILE DESCRIPTION INFORMATION FOR ALL FILES.
- * N = T, RETURN CUMALATIVE CPU TIME USED.
- * N = (J=JOBNAME), DETERMINE STATUS OF JOB *JOBNAME*.
- *
- * RETURNS-
- * *TTY NNN*, WHERE NNN = TERMINAL NUMBER.
- * *SYSTEM - XXXXXXX*, WHERE XXXXXXX = NAME OF SYSTEM.
- * *FILE NAME FILENAM*, WHERE FILENAM = PRIMARY FILE NAME.
- * *STATUS - ZZZZZZ*, WHERE ZZZZZZ = USER,S STATUS .
- USECMN STATUS,STA,0,SCOM,,(ALL)
- STOP SPACE 4
- *** STOP.
- *
- * ALLOWS THE USER TO STOP EXECUTION OF HIS JOB.
- * IF THE USER WANTS TO STOP HIS JOB WHILE IT IS WAITING
- * FOR INPUT HE MAY TYPE *STOP* AFTER THE QUESTION MARK HAS
- * BEEN OUTPUT.
- USECMN STOP,STO,,SCOM+INVN,,(ALL)
- SUBMIT SPACE 4
- *** SUBMIT,LFN,Q.C
- *
- * LFN = PRIMARY FILE NAME IF NO PARAMETERS GIVEN.
- * SEE SUBMIT DOCUMENTATION.
- USECMN SUBMIT,SUB,0
- SUM SPACE 4,10
- *** SUMMARY.
- *
- * RETURNS SUMMARY OF SYSTEM RESOURCES USED.
- USECMN SUMMARY,PBS,0
- TAPE SPACE 4
- *** TAPE.
- *
- * ALLOWS THE USER TO INPUT FROM PAPER TAPE. THE READER
- * WILL BE STARTED AT THE COMPLETION OF THIS COMMAND IF IT
- * IS READY.
- USECMN TAPE,TAP,,INVN
- TERM SPACE 4
- *** TERM,T.
- *
- * SET TERMINAL TYPE TO T.
- *
- * T TERMINAL
- *
- * TTY MODEL 33, 35, 37 TELETYPES.
- * 713 CONTROL DATA 713.
- * COR CORRESPONDENCE CODE.
- * CORAPL CORRESPONDENCE CODE WITH *APL* TYPESPHERE.
- * MEMAPL MEMOREX 1240 WITH *APL* PRINT BELT.
- USECMN TERM,TER,2,INVN
- TEXT SPACE 4
- *** TEXT.
- *
- * ALLOWS USER TO INPUT SOURCE WITH ALPHABETIC LEADING
- * CHARACTERS. USER MUST ENTER *CONTROL C* (ETX) TO
- * TERMINATE THIS MODE.
- USECMN TEXT,TXT
- TIMEOUT SPACE 4
- *** TIMEOUT.
- *
- * CLEARS THE TIME OUT LOGOFF BIT IN
- * THE *VDCT* WORD TO ALLOW THE TERMINAL
- * TO BE TIMED OUT.
- *
- USECMN TIMEOUT,TIM,,,,(ALL)
- TRMDEF SPACE 4,10
- *** TRMDEF.
- *
- * REDEFINE THE NETWORK TERMINAL CONFIGURATION.
- *
- USECMN TRMDEF,PBS,0,,,
- USER SPACE 4
- *** WHATJSN,USERNUM.
- *
- * THIS IS A PRIVILEGED COMMAND THAT ALLOWS THE USER
- * TO DETERMINE WHAT SPIGOT(S) A GIVEN *USERNUM* IS
- * CURRENTLY CONNECTED TO.
- USECMN WHATJSN,UNU,2,,,(ACCS)
- WRITE SPACE 4,15
- *** WRITE,LFN,LINES,/STRING/.
- *
- * THIS COMMAND WRITES LINES SELECTED BY LINE NUMBER OR
- * CHARACTER CONTENT FROM THE USER-S PRIMARY FILE TO A
- * SPECIFIED SECONDARY FILE.
- *
- * LFN = NAME OF FILE ON WHICH TO WRITE LINES.
- * LINES = ANY NUMBER OF LINE NUMBERS AND LINE RANGES, IN
- * ASCENDING ORDER.
- * /STRING/ = DELIMITED SEQUENCE OF CHARACTERS.
- *
- * EITHER LINES OR /STRING/ MAY BE OMITTED.
- USECMN WRITE,IED,0
- WRITEN SPACE 4,10
- *** WRITEN,LFN,LINES,/STRING/.
- *
- * THIS COMMAND IS THE SAME AS *WRITE* EXCEPT LINE NUMBERS ARE
- * NOT WRITTEN TO FILE LFN.
- USECMN WRITEN,IED,0
- X, SPACE 4
- *** X,NNNNNNNNNN.
- *
- * THIS COMMAND ALLOWS A USER TO FORCE A COMMAND
- * TO BE PROCESSED AS A COMMAND CALL EVEN
- * THOUGH IT WOULD NORMALLY BE INTERPRETED BY *IAFEX*.
- USECMN X,XEQ,0,,,(ALL)
- XEDIT SPACE 4,10
- *** XEDIT.
- *
- * THIS COMMAND INITIATES THE TEXT EDITING PROGRAM,
- * *XEDIT*.
- USECMN XEDIT,PSS,0
- ILLEGAL SPACE 4
- ** ILLEGAL.
- TCOMI VFD 54/0LINCORRECT,6/0
- DATA 0 COUNT OF INCORRECT COMMANDS
- TCOML EQU *-TCOM
- TCOMT DATA 37777777777777777777B TABLE TERMINATOR
- TCOM SPACE 4
- ** GENERATE INDEX WORDS TO COMMAND TABLE.
- * THE FOLLOWING ENABLES THE COMMAND SEARCH ROUTINE TO START
- * THE SEARCH OF THE COMMAND TABLE AT THE FIRST COMMAND
- * WHICH BEGINS WITH THE SAME FIRST CHARACTER.
- * THE TABLE FORMAT IS 12 BITS PER CHARACTER WITH 4 BYTES
- * USED PER WORD. THE CHARACTER VALUE DIVIDED BY 4 GIVES THE
- * INDEX TO THE CORRECT WORD AND THE LOWER TWO BITS OF THE
- * CHARACTER VALUE INDICATES THE BYTE. EACH BYTE CONTAINS AN
- * ADDRESS RELATIVE TO *TCOM* WHICH IS THE FIRST WORD ADDRESS
- * OF THE COMMAND TABLE FOR COMMANDS BEGINNING WITH THAT
- * CHARACTER.
- U1 SET 0 CHARACTER BEING PROCESSED
- U2 SET 0 CURRENT WORD COUNT THROUGH THIS INDEX WORD
- U3 SET 0 POSITION IN WORD
- TCOMA BSS 0
- DUP 28
- U1 SET U1+1
- U4 MICRO U1,1,* ABCDEFGHIJKLMNOPQRSTUVWXYZ *
- IF DEF,US"U4"
- VFD 12/US"U4"-TCOM
- ELSE 1
- VFD 12/TCOMT-TCOM
- IFEQ U3,3
- VFD 12/0
- U3 SET 0
- ELSE 1
- U3 SET U3+1
- ENDD
- PCM TITLE PCM - USER COMMAND PROCESSING ROUTINES.
- SPACE 4
- ** ROUTINES FOR PROCESSING EACH TTY USER,S COMMAND.
- *
- * THE ENTRY CONDITIONS FOR ALL OF THEM ARE EXACTLY WHAT IS
- * SET UP BY SSP.
- *
- * SEE CCM AND BUFFER DOCUMENTATION FOR COMMAND PARAMETERS.
- *
- * IT IS ASSUMED THAT *VROT* IS COMPLETE AND THAT THE NEXT
- * MESSAGE POINTER IN *VDCT* IS CLEAR FOR THE GIVEN TERMINAL
- * PRIOR TO ANY ENTRY TO THESE ROUTINES.
- ACC SPACE 4
- ** ACC - SET *ACCESS* SUBSYSTEM.
- ACC BSS 0
- SA1 A0+VDCT CHECK USER ACCESS LEVEL
- LX1 59-13
- PL X1,ACC1 IF USER NOT VALIDATED
- SA1 A0+VSTT SET SYSTEM
- MX6 57
- LX6 12
- BX1 X6*X1
- SX6 ACCS*10000B
- BX6 X1+X6
- SA6 A1
- EQ RDY ISSUE *READY*
- ACC1 SMA X6,( INCORRECT COMMAND."NL")
- EQ PCS5 ISSUE MESSAGE
- AUT SPACE 4
- ** AUT - INITIALIZES FOR PROCESSING OF AUTO LINE NUMBERS.
- AUT BSS 0
- SA1 A0+VFNT
- MX5 42
- SB7 B1 SET DECIMAL BASE
- BX5 X1*X5
- LX1 59-12
- ZR X5,IPF IF NO PRIMARY FILE
- SMA X6,( WRITE ON READ-ONLY FILE."NL")
- NG X1,PCS5 IF WRITE LOCKOUT BIT SET
- SA5 CCMA CHECK PARAMETER COUNT
- SX7 3R100 SET DEFAULT LINE NUMBER
- SB6 3*6-1 SET BIT COUNT
- LX7 42
- SX5 X5-1
- ZR X5,AUT0 IF DEFAULT LINE NUMBER
- SA5 PBUF+2 CHECK NUMBER FOR NUMERICS
- ZR X5,AUT0 IF DEFAULT LINE NUMBER
- BX7 X5
- SB6 B0
- AUT0 SA7 AUTB SAVE DISPLAY CODED LINE NUMBER
- BX5 X7
- RJ DXB
- NZ X4,IPL IF ERROR IN CONVERSION
- SX7 100000
- IX7 X6-X7
- PL X7,IPL IF LARGER THAN FIVE DIGITS
- SA4 =8L00000 "EA" SET *EA* CONTROL BYTE
- SA1 AUTB RECOVER DISPLAY CODED LINE NUMBER
- NZ B6,AUT1 IF BIT COUNT DETERMINED
- SA2 PBUF+3 GET CHARACTER COUNT
- UX2 B6,X2
- SX2 B6
- SB6 B6-6
- PL B6,IPL IF MORE THAN 5 DIGITS
- SX3 6 BITS PER CHARACTER
- IX2 X3*X2 CALCULATE BITS
- SB6 X2-1
- AUT1 MX7 1 GENERATE MASK
- AX7 X7,B6
- SB6 B6+31
- LX7 X7,B6
- LX1 X1,B6 POSITION LINE NUMBER
- BX4 -X7*X4 MASK CONTROL BYTE
- BX7 X4+X1 ADD IN LINE NUMBER
- BX4 X7
- SA7 AUTB SAVE CONTROL BYTE
- RJ SSP
- SA6 B4+B1 SAVE LINE NUMBER VALUE
- MX6 36 MASK OUT LINE NUMBER
- BX6 X4*X6
- SA6 A6+B1 SAVE DISPLAY CODED LINE
- SA5 PBUF+4
- SB7 B1 SET DECIMAL BASE
- SA1 CCMA CHECK PARAMETER COUNT
- SX1 X1-3
- NG X1,AUT2 IF DEFAULT
- RJ DXB
- NZ X4,IPL IF INCORRECT PARAMETER
- SX7 10000
- IX7 X6-X7
- PL X7,IPL IF INCORRECT PARAMETER
- RJ SSP
- NZ X6,AUT3 IF NOT DEFAULT
- AUT2 SX6 10
- AUT3 SA6 B4 SAVE INCREMENT IN POT
- SA1 A0+VDCT STORE AUTO POT POINTER
- SX6 B3
- LX6 24
- BX1 X6+X1
- SX6 102B SET READ DATA AND AUTO MODE
- LX6 48
- BX6 X6+X1
- SA6 A1
- SB3 B0
- SB4 B1+ SET WORD COUNT OF MESSAGE
- IFMUX AUT4
- SX6 AUTB SEND NEXT LINE TO TERMINAL
- RJ MVA
- EQ PCSX EXIT
- AUT4 RJ GOP GET POT FOR CONTROL BYTE
- SA1 AUTB GET CONTROL BYTE
- BX6 X1
- SA6 B4 SAVE CONTROL BYTE IN POT
- SA1 A0+VDCT
- MX5 -3
- LX5 36-0
- BX6 X5*X1 CLEAR FIRST WORD
- SX2 B3
- BX6 X2+X6 ADD IN POT POINTER
- SX1 B1 SET AUTO MODE BIT FOR MUX TERMINAL
- LX1 45-0
- BX6 X1+X6
- SA6 A1+
- EQ PCSX EXIT
- * ENTER HERE FROM *CLI* TO PROCESS AUTO MODE LINE
- * NUMBERS OR *0003* BYTE AUTO MODE.
- * (B3) = COMMAND POT POINTER.
- * (B4) = COMMAND POT ADDRESS.
- * (X7) = FIRST WORD IN COMMAND POT.
- * SEE *VDCT* FOR EXPLANATION OF WHAT IS IN THE
- * AUTO POT.
- AUT5 IFNET AUT5.1
- SA1 A0+VDCT
- LX1 59-45
- PL X1,PCM IF *0003* BYTE
- EQ AUT5.2 CONTINUE MUX PROCESSING
- AUT5.1 SA1 A0+VDCT CHECK FOR CANCEL AUTO LINE
- LX1 59-53
- SX6 B0 CLEAR FLAG
- PL X1,AUT8 IF CANCEL LINE NOT SET
- MX2 1
- BX6 -X2*X1 CLEAR CANCEL AUTO LINE BIT
- LX6 53-59
- SA6 A1+
- AUT5.2 SA1 B4+X7 GET BEGINNING OF LINE
- SB5 -7
- MX2 30
- BX2 X2*X1
- MX6 -6
- AUT6 SB5 B5+6 INCREMENT MASK SHIFT COUNT
- LX2 6
- BX3 -X6*X2
- SX4 X3-1R0
- SX3 X3-1R+
- NG X4,AUT7 IF ALPHABETIC
- NG X3,AUT6 IF NUMERIC
- AUT7 NG B5,AUT25 IF COMMAND LINE
- MX5 1 BUILD MASK
- AX4 X5,B5
- BX5 X4*X1
- SB7 B1 SET DECIMAL CONVERSION
- RJ DXB
- RJ SSP
- AUT8 SA1 A0+VDCT
- MX2 -12
- AX1 24
- BX2 -X2*X1
- LX2 3
- TB5 X2,VBMP CALCULATE POT ADDRESS
- SA2 B5 GET INCREMENT
- SA1 B5+B1 GET LINE NUMBER VALUE
- PL X2,AUT10 IF NOT *0003* BYTE AUTO MODE
- UX3 X1,B6 GET COUNT AND ADDRESS
- SA2 X3 GET WORD CONTAINING *0003* BYTE
- SB6 B6+B1
- MX5 6
- AUT9 LX5 6
- SB6 B6-B1
- NZ B6,AUT9 IF THIS NOT CONTROL BYTE
- BX7 -X5*X2 CLEAR CONTROL BYTE
- SA7 A2 REWRITE WORD
- SB5 A2+ SET CONTROL BYTE WORD POINTER
- EQ AUT12 CONTINUE
- AUT10 ZR X6,AUT11 IF CANCEL LINE NOT SET
- BX1 X6 REPLACE WITH NEW LINE NUMBER
- SX7 B0
- SA7 B5+2 CLEAR DISPLAY CODED LINE NUMBER
- AUT11 IX6 X1+X2
- SA6 A1+ REPLACE WITH NEXT LINE NUMBER
- BX1 X6
- RJ CDD CONVERT NUMBER
- SX1 B2-31
- PL X1,AUT25 IF LINE NUMBER OVERFLOW
- LX6 30 POSITION NUMBER
- SA1 =2222222222BS30
- MX5 1
- SB3 B2-30+1 SET MASK SHIFT COUNT
- LX5 X5,B3
- BX1 X5*X1
- MX4 36
- IX6 X6-X1
- SX7 00150000B SET *EA* CONTROL BYTE
- BX6 X4*X6
- BX7 X6+X7
- SA7 AUTB SAVE CONTROL BYTE
- SB5 B5+2 SET POINTER TO LINE NUMBER
- * THE DISPLAY CODED CHARACTERS IN B5 POT ARE
- * APPENDED TO THE INPUT LINE.
- AUT12 RJ SSP RESET ENTRY PARAMETERS
- SB7 B4+VCPC CALCULATE END OF POT
- SB4 B4+X7 CALCULATE FIRST WORD OF POT
- SX7 B2
- SA7 AUTC
- SX7 B1 INITIALIZE EOL FLAG
- MX4 6
- MX5 12
- SA2 B4 GET FIRST WORD OF POT
- SA1 B5+ SET UP POINTER TO CONCATENATE CHARACTERS
- IFNET AUT13
- SX1 B0
- AUT13 SA6 A1 REPLACE NEW DISPLAY CODED LINE
- SB6 B0+
- BX3 X5*X1
- ZR X3,AUT23 IF NO AUTO CHARACTERS
- SB2 10D
- BX6 X1
- AUT14 BX1 X5*X6
- ZR X1,AUT15 IF END-OF-LINE FOUND
- LX6 6
- SB2 B2-B1 ROOM LEFT IN WORD
- NZ B2,AUT14 IF MORE CHARACTERS IN WORD
- AUT15 ZR B2,AUT22 IF WRITE WORD FULL
- NZ B6,AUT18 IF MORE CHARACTERS IN READ WORD
- SA2 B4 GET NEXT WORD OF POT
- SB4 B4+B1 INCREMENT POINTER
- LT B4,B7,AUT17 IF NOT END OF POT
- BX5 X6 SAVE WRITE WORD
- RJ GPL GET POT LINK
- NZ B3,AUT16 IF POT LINK
- SA1 AUTC RESTORE TERMINAL NUMBER
- SB2 X1+
- SMA X6,( INPUT LOST, REENTER LAST LINE."NL")
- EQ PCS5 ISSUE MESSAGE TO TERMINAL
- AUT16 SB7 B4+VCPC
- MX4 6
- BX6 X5 RECOVER WRITE WORD
- AUT17 SB6 10D RESET CHARACTERS IN READ WORD
- AUT18 BX3 X4*X2 GET NEXT CHARACTER
- BX6 -X4*X6 CLEAR BYTE IN WRITE WORD
- NG X7,AUT21 IF EOL ALREADY FOUND
- NZ X3,AUT19 IF NOT 00 CHARACTER
- SX7 X7-1
- EQ AUT20 ADD NEXT CHARACTER
- AUT19 SX7 B1
- AUT20 BX6 X6+X3 ADD CHARACTER TO WRITE WORD
- AUT21 LX6 6
- LX2 6
- SB2 B2-B1 CHARACTERS IN WRITE WORD
- SB6 B6-B1 CHARACTERS LEFT IN READ WORD
- EQ AUT15 CONTINUE SEARCH
- AUT22 SA6 A2
- AUT23 BX6 X6-X6 CLEAR WRITE WORD
- SB2 10D RESET CHARACTER COUNT
- PL X7,AUT15 IF NO EOL FOUND IN THIS WORD
- SA1 AUTC RECOVER TERMINAL NUMBER
- SB2 X1
- IFNET AUT26 ASSIGN OUTPUT TO TERMINAL
- SA2 AUTB PUT CONTROL BYTE IN POT
- BX6 X2
- SA6 B4
- SA1 A0+VDCT ASSIGN OUTPUT TO DRIVER
- SB7 B7-VCPC SET WORD TO BEGIN OUTPUTTING AT
- SX6 B4-B7
- LX6 36
- SX4 B3
- BX6 X1+X6
- BX6 X6+X4
- SA6 A1
- AUT24 RJ SSP RESET ENTRY POT POINTER
- SX6 B3
- BX1 X4-X6
- ZR X1,PCSX IF NO POT TO RELEASE, EXIT
- SX5 2000B+/TLX/RIN SET UP RELEASE INPUT DRIVER REQUEST
- LX6 12
- LX5 48
- BX7 X5+X6
- LX4 24
- SX2 B2
- BX7 X7+X4
- BX7 X7+X2
- SA7 SSPA
- RJ SSP
- EQ RIN
- AUT25 RJ SSP
- RJ CAM CLEAR AUTO MODE
- RJ DAP
- RJ DLP
- RJ SSP RESET ENTRY PARAMETERS
- EQ PCM PROCESS AS COMMAND
- * ASSIGN AUTO MODE OUTPUT TO TERMINAL.
- AUT26 SX7 B3+ SAVE POT POINTER
- SA7 AUTA
- SA3 A0+VDCT
- LX3 0-24
- MX7 -12
- BX3 -X7*X3
- LX3 3
- TB5 X3,VBMP
- SA3 B5+
- PL X3,AUT27 IF NOT *0003* BYTE AUTO MODE
- RJ CAM CLEAR AUTO MODE
- RJ SSP RESET ENTRY PARAMETERS
- SB5 B2
- RJ GRT
- AX4 48
- SX5 X4-INP$
- ZR X5,CLI4 IF INPUT TO A RUNNING PROGRAM
- EQ PCM PROCESS AS COMMAND
- AUT27 TX1 B4,-VBMP GET POT POINTER AND WORD COUNT
- BX2 X1
- SA3 A0+VDPT
- AX2 3 POT POINTER
- MX7 -24
- LX2 3
- BX1 X1-X2 WORD COUNT
- BX7 -X7*X3 CLEAR OLD POT POINTERS
- LX2 36-3
- LX1 30-0
- BX7 X1+X7 ADD NEW CURRENT POT WORD COUNT
- BX7 X2+X7 ADD NEW CURRENT POT
- LX2 48-36
- LX1 33-30
- BX7 X1+X7 ADD NEW FIRST POT
- BX7 X2+X7 ADD NEW FIRST POT FIRST WORD INDEX
- SA7 A3
- SA2 AUTB GET CONTROL BYTE
- BX6 X2
- SA6 B4 PUT CONTOL BYTE IN POT
- SA1 A0+VDCT ASSIGN CONTOL BYTE TO DRIVER
- SB7 B7-VCPC
- SX6 B4-B7 CALCULATE WORD COUNT
- LX6 36
- SX4 B3 GET POT POINTER
- BX6 X1+X6 ADD IN WORD COUNT
- BX6 X6+X4 ADD IN POT POINTER
- SA6 A1
- SX6 AUTB SEND NEXT LINE NUMBER TO THE TERMINAL
- SB3 B0
- SB4 B1
- RJ MVA
- SA4 AUTA RESTORE POT POINTER
- EQ AUT24 RELEASE INPUT POT
- AUTA CON 0 SAVE MESSAGE POT POINTER
- AUTB CON 0 NEXT AUTO LINE NUMBER
- AUTC CON 0 TERMINAL NUMBER
- BAT SPACE 4
- ** BAT - REQUESTS A COMMAND FROM THE USER AND THEN ISSUES
- * IT TO THE SYSTEM.
- BAT BSS 0
- SA1 PBUF+2
- SA3 CCMA CHECK PARAMETER COUNT
- SX3 X3-2
- SA2 =4R$RFL
- BX6 X2
- SA2 A0+VSTT SET SUBSYSTEM
- ZR X3,BAT1 IF FIELD LENGTH GIVEN
- SA3 =1L0
- BX7 X3
- SA7 A1
- SX7 1R.
- SB5 B1+ SET CHARACTER COUNT
- PX7 B5,X7
- SA7 A7+B1
- BAT1 LX6 36
- SX4 70000B
- BX3 -X4*X2
- SA6 PBUF
- SB5 4 SET CHARACTER COUNT
- SX7 1R,
- PX7 B5,X7
- SA7 A1-B1
- SX1 BATS*10000B SET BATCH SUBSYSETEM
- BX7 X3+X1
- SA7 A2
- EQ PBS BEGIN SYSTEM JOB
- ** ENTER WHEN COMMAND NOT IN IAFEX SUBSET.
- BAT2 SX1 PBUF
- RJ PCB PACK COMMAND BUFFER
- SA1 PBUF
- SX6 B1 SET *PPI* TO SORT THE FILE
- BX7 X1 SET *EPN*
- EQ BJB BEGIN JOB
- BIN SPACE 4
- ** BIN - SETS BINARY INPUT.
- BIN BSS 0
- SA1 A0+VFNT CHECK PRIMARY FILE
- SA5 PBUF+2 CHECK NUMBER FOR NUMERICS
- MX7 42
- BX7 X1*X7
- SB7 B1+ SET DECIMAL BASE
- ZR X7,IPF IF NO PRIMARY FILE
- RJ DXB
- SX7 X6 CHECK VALUE
- AX6 12
- NZ X4,IPL IF NON-NUMERIC
- * PROCESS CHARACTER COUNT.
- SA1 =000600004000BS24
- NZ X6,IPL IF TOO LARGE
- LX7 36
- BX6 X1+X7
- ZR X7,IPL IF ZERO
- SA5 PBUF+4
- SA1 CCMA CHECK PARAMETER COUNT
- SX1 X1-3
- SA6 BINB
- NZ X1,BIN1 IF NO TERMINATOR CHARACTER
- * PROCESS TERMINATOR CHARACTER.
- SB7 B0 SET OCTAL BASE
- RJ DXB
- NZ X4,IPL IF NON-NUMERIC
- SX7 4000B+X6
- AX6 8
- NZ X6,IPL IF MORE THAN 8 BITS
- LX7 24 MERGE TERMINATOR CHARACTER
- SA1 BINB
- BX6 X1-X7
- SA6 A1
- BIN1 RJ SSP
- SA2 A0+VDCT CHECK TAPE MODE
- LX2 59-48
- SX6 BINA
- SB4 4
- PL X2,PCS6 NOT TAPE MODE
- SX6 BINB
- EQ PCS5
- BINA DATA 20HENTER BINARY DATA' '
- DATA 0
- BINB CON 0006BS48
- BRF SPACE 4,10
- ** BRF - SET *BRIEF* MODE FLAG.
- *
- * EXIT (VDCT) BIT 55 = BRIEF MODE SET.
- BRF BSS 0 ENTRY
- SA1 A0+VDCT READ VDCT
- SX6 B1 SET BRIEF MODE
- LX6 55-0
- BX7 X6+X1
- SA7 A1 REWRITE VDCT
- EQ RDY ISSUE *READY*
- CST SPACE 4,10
- ** DIA - ENABLES PRIVILEGED USER TO SEND MESSAGE TO
- * ANOTHER USER CURRENTLY ON THE SYSTEM.
- DIA BSS 0
- SA1 CCMA CHECK PARAMETER COUNT
- SX1 X1-2
- NG X1,IPL IF *JSN* NOT SPECIFIED
- SA1 PBUF+4
- ZR X1,IPL IF NULL MESSAGE
- SB7 PBUF+2 GET TERMINAL ADDRESS
- RJ GTA
- ZR X4,DIA3 IF NO USER NAME
- TX1 A4,-VTTP GET TERMINAL NUMBER
- SX2 VTTL
- IX1 X1/X2
- SX0 A4 SAVE RECEIVER-S TERMINAL TABLE ADDRESS
- SB5 X1
- RJ GRT READ QUEUE ENTRY
- AX4 48
- SX2 X4-INP$ CHECK QUEUE ENTRY
- ZR X2,DIA4 IF EXPLICIT INPUT REQUEST
- SA1 X0+VUIT CHECK TERMINAL STATUS
- ZR X1,DIA3 IF NOT LOGGED IN
- SA1 X0+VSTT
- MX3 -12
- LX1 59-48
- SA2 X0+VDCT
- NG X1,DIA3 IF LOGOUT IN PROGRESS
- LX1 59-58-59+48
- NG X1,DIA4 IF USER BREAK IN PROGRESS
- LX1 -59+58 RESTORE VSTT
- BX2 -X3*X2 DRIVER ASSIGNMENT
- BX1 -X3*X1 QUEUED MESSAGE POINTER
- DX1 X1*X2 CHECK PRODUCT
- SA2 X0+VROT
- NZ X1,DIA4 IF BOTH QUEUED OUTPUT AND REQUEST
- SA1 =C*FROM* REPLACE COMMAND
- LX2 59-0
- BX6 X1
- PL X2,DIA4 IF TERMINAL BUSY
- SA6 PBUF
- SX6 1R SET SEPARATOR AND LENGTH
- SB7 4
- PX6 X6,B7
- SA6 A6+B1
- SA1 A0+VFST GET SENDER-S JSN
- MX6 24
- BX6 X6*X1
- SA6 A6+B1
- SX6 1R: SET SEPARATOR
- PX6 X6,B7
- SA6 A6+B1
- SX1 PBUF
- SB2 B5
- SA0 X0
- RJ PCB
- SB5 B4+VCPC-1 LAST WORD OF POT
- NG B6,DIA0 IF WORD ALREADY FULL
- NZ B6,DIA1 IF NOT JUST ONE ZERO CHARACTER
- SX6 1R BLANK FILL LAST WORD OF MESSAGE
- SA1 B7
- BX6 X6+X1
- SA6 A1+
- DIA0 EQ B5,B7,DIA2 IF POT FULL
- SB7 B7+1 ADD *EOL*
- SX6 B0+
- SA6 B7+
- DIA1 EQ B5,B7,DIA2 IF POT FULL AFTER *EOL*
- SMA A1,("NL") SET TERMINATION
- BX7 X1
- SB7 B7+B1
- SA7 B7+
- DIA2 SB3 B0
- SX6 B4
- SB4 B7-B4
- SB4 B4+B1
- RJ MVA
- RJ SSP
- EQ RDY SEND OUT *READY.*
- DIA3 SMA X6,( TERMINAL NOT ACTIVE."NL")
- EQ PCS5 ISSUE MESSAGE
- DIA4 SMA X6,( TERMINAL BUSY."NL")
- EQ PCS5 ISSUE MESSAGE
- EDI SPACE 4
- ** EDI - INITIATE TEXT EDITOR.
- EDI BSS 0
- SA4 CCMA COUNT PARAMETERS
- SA2 PBUF+3 GET THIRD PARAMETER
- SX4 X4-4
- PL X4,PSS IF MORE THAN THREE PARAMETERS
- SX2 X2-1R=
- ZR X2,PSS IF PARAMETERS EQUATED
- * CHECK NON-EQUATED FILE NAME.
- SX4 X4+3
- ZR X4,EDI1 IF NO FILE NAME
- SA3 A2-B1 GET FILE NAME
- ZR X3,EDI1 IF NULL FILE NAME
- SB6 A2-1 GET GIVEN FILE NAME
- RJ GFN
- BX6 X2
- EQ EDI2
- EDI1 SA1 A0+VFNT GET PRIMARY FILE NAME
- MX2 42
- BX6 X2*X1
- ZR X6,IPF IF NO PRIMARY FILE
- LX1 59-12 GET WRITE LOCKOUT BIT
- PL X1,EDI1.1 IF LOCKOUT BIT NOT SET
- RJ SSP RESET REGISTERS
- SMA X6,( WRITE ON READ-ONLY PRIMARY FILE."NL")
- EQ PCS5 ISSUE MESSAGE
- EDI1.1 ZR X3,EDI2 IF NULL PARAMETER
- SX7 B1+B1 RESET PARAMETER COUNT
- SA7 CCMA
- EDI2 RJ CFC COUNT FILE NAME CHARACTERS
- SA1 =4LEDIT SET UP COMMAND
- BX7 X1 ENTER PROGRAM NAME
- SA7 PBUF
- SX7 1R,
- SB7 4 INSERT CHARACTER COUNT
- PX7 B7,X7
- SA7 A7+B1
- SA6 A7+B1
- SA1 PBUF+5 GET MODE CHARACTER COUNT
- UX1,B7 X1
- SX4 X4-2
- SA2 PBUF+4
- PL X4,EDI3 IF MODE PARAMETER ENTERED
- SA1 A0+VDCT CHECK TERMINAL MODE
- LX1 59-51
- PL X1,EDI4 IF NOT EXTENDED MODE
- SX2 2RAS
- LX2 48
- SB7 B1+B1
- EDI3 BX6 X2 ENTER MODE PARAMETER
- PX7 B6,X7 INSERT FILE NAME CHARACTER COUNT
- SA7 A6+B1
- SA6 A7+B1
- EQ EDI5 ENTER TERMINATOR
- EDI4 SB7 B6 SET FILE NAME COUNT
- EDI5 SX7 1R. SET TERMINATOR
- PX7 B7,X7 INSERT CHARACTER COUNT
- BX6 X6-X6
- SA7 A6+B1
- SA6 A7+B1
- EQ PSS BEGIN SYSTEM JOB WITH SORT
- FDP SPACE 4
- ** FDP - SETS TERMINAL OPERATION TO FULL DUPLEX.
- FDP BSS 0
- SX2 /1TD/SFD REQUEST DRIVER TO SET FULL DUPLEX
- SX7 RDY SET RETURN
- JP DCR
- HDP SPACE 4
- ** HDP - SETS TERMINAL OPERATION TO HALF DUPLEX.
- HDP BSS 0
- SX2 /1TD/CFD REQUEST DRIVER TO CLEAR FULL DUPLEX
- SX7 RDY SET RETURN
- JP DCR
- IED SPACE 4,10
- ** IED - CALL *IEDIT* TO PROCESS IN-LINE EDITING COMMAND.
- *
- * ENTRY (B3) = POINTER TO POT CONTAINING *IEDIT* COMMAND.
- *
- * EXIT TO BJS.
- * (B3) = POINTER TO POT CONTAINING *IEDIT* CONTROL
- * STATMENT. POT CONTAINING *IEDIT* COMMAND IS
- * LINKED TO IT.
- *
- * USES ALL REGISTERS.
- *
- * CALLS BJS, CFC, LEP, PCB, RPT.
- IED BSS 0 ENTRY
- * PROCESS FILE NAME.
- SA1 A0+VFNT GET PRIMARY FILE NAME
- MX6 42
- BX6 X1*X6
- SA6 IEDB STORE FILE NAME
- ZR X6,IPF IF NO PRIMARY FILE
- SX7 1R,
- RJ CFC COUNT FILE NAME CHARACTERS
- PX6 B6,X7
- SA6 A6+B1
- * PROCESS CHARACTER SET.
- SA1 A0+VDCT
- BX2 X1
- LX1 59-52
- SA3 IEDE GET *ASCII8*
- LX2 59-55
- NG X1,IED2 IF ASCII8 MODE
- LX1 1
- SA3 A3+B1 GET *ASCII*
- NG X1,IED2 IF 6/12 ASCII MODE
- SA3 A3+B1 GET *NORMAL*
- IED2 BX6 X3
- MX7 0
- RJ CFC COUNT CHARACTERS
- SA6 IEDC
- * SET UP OPTIONS.
- SA1 A0+VSTT
- NG X2,IED3 IF IN BRIEF MODE
- SX7 1RL SET LIST OPTION
- IED3 LX7 48
- AX1 12 EXTRACT SUBSYSTEM
- SX2 7
- BX2 X1*X2
- SX2 X2-1
- ZR X2,IED6 IF BASIC SUBSYSTEM
- SX2 X2-1
- ZR X2,IED7 IF FORTRAN SUBSYSTEM
- SX2 X2-1
- ZR X2,IED7 IF FTNTS SUBSYSTEM
- LX7 6
- BX2 X2-X2
- EQ IED8 BYPASS SUBSYSTEM OPTION
- IED6 SX2 1RB SET BASIC SUBSYSTEM
- EQ IED8 OPTIONS COMPLETED
- IED7 SX2 1RF SET FORTRAN/FTNTS SUBSYSTEM
- * COMPLETE CONTROL STATMENT.
- IED8 LX2 54
- BX7 X2+X7
- ZR X7,IED9 IF NO OPTIONS SELECTED
- SX6 1R,
- PX6 B6,X6
- SA6 A6+B1 STORE SEPARATOR FOR CHARACTER SET
- SA1 IEDD MOVE *OP* AND SEPARATOR
- SA2 A1+B1
- BX6 X1
- SA6 A6+B1
- BX6 X2
- SA6 A6+B1
- BX6 X7
- SA6 A6+1
- RJ CFC COUNT OPTIONS
- IED9 SX6 1R)
- PX6 B6,X6
- SA6 A6+B1 STORE TERMINATOR
- BX7 X7-X7
- SA7 A6+B1
- SA7 A7+1
- * *1RI* ASSUMES THAT THE *IEDIT* COMMAND BEGINS IN THE
- * FIRST WORD OF THE FIRST POT, SO IF THE COMMAND WAS
- * PRECEDED BY SOURCE LINE INPUT THEN SHIFT THE *IEDIT*
- * COMMAND DOWN TO THE BEGINNING OF THE POT.
- RJ SSP RESTORE POINTER TO THE COMMAND IN THE POT
- SX6 B3
- SA6 IEDF SAVE *IEDIT* COMMAND POT POINTER
- MX0 -12 CREATE EOL MASK
- ZR X7,IED12 IF SHIFT NOT NECESSARY
- SX5 B4 SET DESTINATION POT ADDRESS
- SB6 X7 SET SOURCE POT INDEX
- SB5 B0+ SET DESTINATION POT INDEX
- SB7 VCPC SET POT SIZE LIMIT
- IED10 SA1 B4+B6
- BX6 X1
- SA6 X5+B5
- BX6 -X0*X6
- ZR X6,IED12 IF TRANSFER COMPLETE
- SB6 B6+1
- LT B6,B7,IED11 IF NOT END OF POT
- SB6 B0+
- RJ GPL GET POT LINK
- IED11 SB5 B5+B1
- LT B5,B7,IED10 IF NOT END OF POT
- SX5 B4
- SB5 B0
- EQ IED10 CHECK NEXT WORD
- * PACK THE COMMAND INTO A POT AND LINK THE
- * *IEDIT* COMMAND POT TO IT.
- IED12 SB3 B0+ GET POT FOR COMMAND
- RJ GOP
- SX1 IEDA
- RJ PCB PACK COMMAND INTO POT
- SA2 IEDF
- RJ LEP LINK *IEDIT* COMMAND TO COMMAND
- * ENABLE THE JOB.
- SA1 IEDA
- MX7 42
- LX1 6
- SX6 B1 SET *PPI* TO SORT THE FILE
- BX7 X7*X1 SET *EPN*
- EQ BJB BEGIN JOB
- * $IEDIT(FN=LFN,CS=CHAR,OP=OPT).
- IEDA VFD 60/6L$IEDIT
- VFD 12/2006B,48/1R(
- VFD 60/2LFN
- VFD 12/2002B,48/1R=
- IEDB VFD 60/0 LFN
- VFD 60/0 SEPARATOR
- VFD 60/2LCS
- VFD 12/2002B,48/1R=
- IEDC VFD 60/0 CHARACTER SET
- VFD 60/0 SEPARATOR OR TERMINATOR
- BSSZ 6 ROOM FOR OP PARAMETER
- IEDD VFD 60/2LOP
- VFD 12/2002B,48/1R=
- IEDE VFD 60/6LASCII8
- VFD 60/5LASCII
- VFD 60/6LNORMAL
- IEDF CON 0 STORAGE FOR POT POINTER
- LAN SPACE 4
- ** LAN - SETS TYPE OF SYSTEM IN TERMINAL TABLE.
- LAN SX1 B0 SET NULL FLAG
- EQ LAN5
- LAN1 SX1 BASS*10000B SET BASIC FLAG
- EQ LAN5
- LAN2 SX1 FORS*10000B SET FORTRAN FLAG
- EQ LAN5
- LAN3 SX1 FTNS*10000B SET FTN 4.3 TS FLAG
- EQ LAN5
- LAN4 SX1 EXES*10000B SET EXEC FLAG
- LAN5 SA2 A0+VSTT
- MX3 57
- LX3 12
- BX6 X3*X2 SET SYSTEM
- BX6 X1+X6
- SA6 A2
- SA1 CCMA
- SX6 X1-1
- ZR X6,LAN6 IF NO SECOND COMMAND GIVEN
- SA6 A1
- SB5 PARC*2 MOVE DATA
- SX2 PBUF+2
- SX3 PBUF
- RJ MDA
- EQ PCM5 REENTER COMMAND PROCESSOR
- LAN6 SA1 A0+VFNT CHECK FOR FILE DEFINED
- MX2 42
- BX1 X2*X1
- NZ X1,RDY IF FILE DEFINED ISSUE READY MESSAGE
- SMA X6,( OLD, NEW, OR LIB FILE')
- EQ PCS5 ISSUE MESSAGE
- LEN SPACE 4
- ** LEN - DETERMINES THE LENGTH OF A USERS LOCAL FILE.
- LEN BSS 0
- SA2 CCMA GET PARAMETER COUNT
- SX2 X2-3
- PL X2,IPL IF MORE THAN TWO PARAMETERS
- SX2 X2+1
- SA1 PBUF+2 GET FILE NAME
- NZ X2,LEN1 IF FILE NAME NOT GIVEN
- NZ X1,PBS IF FILE NAME GIVEN
- LEN1 SX6 B1+B1 RESET PARAMETER COUNT
- SA6 A2
- SA2 A0+VFNT
- MX6 42
- BX6 X6*X2
- ZR X6,IPF IF NO PRIMARY NAME
- SX7 1R,
- SA6 A1 SET PRIMARY FILE NAME
- SB6 6
- PX7 B6,X7
- RJ CFC COUNT FILE NAME CHARACTERS
- SA7 A6-B1
- SX6 1R.
- PX6 B6,X6
- SA6 A6+B1
- BX6 X6-X6
- SA6 A6+B1
- SA6 A6+B1
- EQ PSS
- LIS SPACE 4
- ** LIS - THIS COMMAND INITIATES THE SORTING IF NECESSARY AND
- * THE LISTING OF A USER,S FILE.
- LIS BSS 0
- SX7 PBUF SET PARAMETER BUFFER POINTER
- SA7 LISA SET UP DEFAULT PARAMETERS
- BX7 X7-X7
- BX6 X6-X6
- SA7 A7+B1
- SA6 A7+B1 CLEAR FIRST LINE NUMBER
- SA7 A6+B1 CLEAR LINE RANGE FLAG
- SA6 A7+B1 CLEAR LAST LINE NUMBER
- RJ PLO PROCESS OPTIONS
- SA1 LISB
- ZR X1,LIS2 IF PRIMARY FILE LIST
- RJ TPF CHECK IF THE PRIMARY FILE
- ZR X6,LIS2 IF PRIMARY FILE LIST
- SA1 LISE
- NZ X1,LIS1 IF LINE RANGE SPECIFIED
- SA1 LISC
- BX7 X1
- SA7 LISE LIST ONE LINE ONLY
- LIS1 RJ CFX EXTERNAL LIST CALL
- SX6 B0 SET *PPI* NOT TO SORT THE FILE
- EQ BJB BEGIN JOB
- LIS2 SA2 A0+VFNT
- MX1 42
- BX1 X1*X2
- ZR X1,IPF IF NO PRIMARY FILE
- LX2 59-14
- NG X2,IEX IF EXECUTE ONLY
- SA1 LISF
- ZR X1,LIS2.1 IF NOT SECURED SYSTEM
- SA1 LISE
- NZ X1,LIS2.2 IF LINE RANGE SPECIFIED
- SA1 LISC
- BX7 X1
- SA7 LISE LIST ONE LINE ONLY
- EQ LIS2.2 SET UP EXTERNAL LIST
- LIS2.1 SA3 LISE
- SX6 B1
- LX3 6
- SA2 LISC
- ZR X3,LIS3 IF NO LAST LINE SPECIFIED
- SX3 X3-1R*
- ZR X3,LIS3 IF LIST TO EOI SPECIFIED
- LIS2.2 RJ CFX SET UP EXTERNAL LIST
- SX6 B1+ SET *PPI* TO SORT THE FILE
- EQ BJB BEGIN JOB
- LIS3 NZ X2,LIS4 IF ANY LINE SPECIFICATION
- SA6 LISD
- LIS4 SA1 LISC GET LINE NUMBER
- BX6 X1 SAVE LINE NUMBER
- SA1 LISD GET SINGLE LINE FLAG
- NZ X1,LIS5 IF NOT SINGLE LINE
- SX7 B1 SET SINGLE LINE FLAG
- BX6 X6+X7
- LIS5 SA6 B4 SAVE LINE NUMBER AND FLAG
- SA1 A0+VSTT CHECK SORT FLAG
- LX1 59-52
- PL X1,LIS8 IF NO SORT REQUIRED
- SA1 A0+VFST SET NEXT OPERATION INDEX AND POT POINTER
- MX6 43
- BX1 X1*X6
- SX2 B3
- BX7 X2+X1
- SX6 B1 SET NEXT OPERATION INDEX
- LX6 12
- BX7 X6+X7
- SA7 A1 REWRITE VFST
- SB3 B0
- SX7 B0 SET *EPN*
- SX6 B1 SET *PPI*
- EQ BJB1 ENABLE THE SORT
- LIS7 SA1 A0+VFST GET POT POINTER
- MX2 48
- BX6 X2*X1
- SA6 A1 REWRITE VFST
- BX7 -X2*X1
- SB3 X7
- BX7 X7-X7
- SX5 LIS8$
- EQ PCS1 MAKE WAIT COMPLETION QUEUE ENTRY
- * MAKE QUEUE ENTRY FOR LIST.
- LIS8 SA1 A0+VROT SET LIST AND OUTPUT AVAILABLE
- SX6 120B
- BX6 X1+X6
- SA6 A1 REWRITE VROT
- SX5 ITO$
- EQ PCS1 MAKE 1TO QUEUE ENTRY
- LISA BSSZ 1 PARAMETER POINTER
- LISB BSSZ 1 FILE NAME
- LISC BSSZ 1 LINE NUMBER
- LISD BSSZ 1 SINGLE LINE/LINE RANGE
- LISE BSSZ 1 LAST LINE NUMBER
- LISF CON 0 SYSTEM SECURITY MODE
- NOR SPACE 4,20
- ** NOR - SET TERMINAL *NORMAL* MODE.
- *
- * CLEARS ASCII, AUTO, BRIEF AND TAPE MODES.
- *
- * EXIT (VDCT) = SPECIAL MODES CLEARED.
- *
- * CALLS DCR, RDY.
- NOR BSS 0 ENTRY
- SA1 A0+VDCT READ VDCT
- SA2 =75647777000077777777B CLEAR MODE BITS
- BX6 X2*X1
- SA6 A1 REWRITE VDCT
- SA1 A0+VSTT RESET ENTRY MODE CONTROL
- SX7 B1
- LX7 18
- BX7 -X7*X1
- SA7 A1
- SX2 /1TD/SNM REQUEST DRIVER TO SET NORMAL MODES
- SX7 RDY SET RETURN
- JP DCR
- NOS SPACE 4
- ** NOS - CLEARS SORT FLAG.
- NOS BSS 0
- SA1 A0+VSTT
- SX2 B1
- LX2 52
- BX6 -X2*X1
- SA6 A1
- EQ RDY
- PAC SPACE 4
- ** PAC - PACK FILE.
- PAC BSS 0
- SA1 PBUF+2
- SA2 CCMA CHECK PARAMETER COUNT
- SX2 X2-1
- ZR X2,PAC1 IF NO FILE NAME
- NZ X1,SOF1 IF FILE NAME GIVEN
- EQ PAC2 SET FILE NAME
- PAC1 SX2 X2+B1 RESET PARAMETER COUNT
- SX6 X2+B1
- SA6 CCMA
- PAC2 SA3 A0+VFNT SET PRIMARY NAME AS DEFAULT
- SX7 1R,
- MX4 42
- BX6 X4*X3
- ZR X6,IPF IF NO PRIMARY FILE
- SB6 4
- PX7 B6,X7
- SA6 A1 SET FILE NAME
- SA7 A6-B1 SET SEPARATOR
- RJ CFC COUNT FILE NAME CHARACTERS
- SX2 X2-1 CHECK PARAMETER COUNT
- ZR X2,PAC3 IF TWO PARAMETERS
- PX7 B6,X7
- SA7 A6+B1
- EQ SOF2 SET SORT FLAG
- PAC3 SX7 1R. SET TERMINATOR
- PX7 B6,X7
- SA7 A6+B1
- BX6 X6-X6
- SA6 A7+B1
- SA6 A6+B1
- EQ SOF2
- PAR SPACE 4
- ** PARITY - SETS TERMINAL PARITY.
- PAR SA1 CCMA CHECK PARAMETER COUNT
- SX1 X1-2
- SX2 /1TD/SOP SET ODD PARITY BY DEFAULT
- NZ X1,PAR1 IF NOT SECOND PARAMETER
- SA1 PBUF+2 SET SECOND PARAMETER
- SA3 =3LODD
- SA4 =4LEVEN
- IX3 X3-X1
- BX4 X4-X1
- ZR X3,PAR1 IF *ODD*
- NZ X4,IPL IF NOT *EVEN*
- SX2 /1TD/SEP
- * ENTER DRIVER REQUEST.
- PAR1 SX7 RDY SET RETURN
- JP DCR ENTER DRIVER REQUEST
- PFC SPACE 4
- ** PFC - PROCESS PRIMARY FILE COMMAND.
- *
- * ENTRY-
- * SEE SSP.
- PFC BSS 0
- SA1 CCMA CHECK PARAMETER COUNT
- SX1 X1-2
- PL X1,PFC1 IF PARAMETER GIVEN
- SA1 PBUF SAVE COMMAND
- BX6 X1
- SA6 B4
- SX6 B3
- MX2 48
- SA1 A0+VFNT
- BX2 X2*X1
- BX6 X2+X6
- SA6 A1 REWRITE VFNT
- SB3 B0
- SMA X6,( FILE NAME')
- SB4 B0
- SB5 B0
- RJ RQI REQUEST FILE NAME
- * CONTINUE WHEN PARAMETERS AVAILABLE.
- SX2 PBUF MOVE PARAMETERS
- SX3 PBUF+2
- SB5 -7*2
- RJ MDA
- SA1 A0+VDCT CLEAR READ DATA
- SX6 B1
- LX6 54
- BX6 -X6*X1
- SA6 A1
- SA1 A0+VFNT RESTORE COMMAND
- MX2 48
- BX6 X2*X1
- SA6 A1 REWRITE VFNT
- BX2 -X2*X1
- SB3 X2
- LX2 3
- TA1 X2,VBMP
- SA2 =7LPRIMARY
- BX6 X1
- BX2 X2-X1
- SA6 PBUF
- SB4 3 CHARACTERS IN COMMAD
- NZ X2,PFC0 IF NOT *PRIMARY* COMMAND
- SB4 7 SET COMMAND LENGTH
- PFC0 SX6 1R, SET SEPARATOR
- PX6 X6,B4
- SA6 A6+B1
- SB4 B0
- RJ DPT DROP COMMAND POT
- RJ SSP RESTORE REGISTERS
- * CHECK VALIDITY AND COMMAND TYPE.
- PFC1 SB6 PBUF+2 CHECK FILE NAME
- RJ GFN
- SA2 A0+VSTT CLEAR THE SORT FLAG
- SA2 PBUF
- SA1 =3LLIB
- BX2 X1-X2
- NZ X2,PBS IF NOT *LIB*
- SA2 PBUF+3
- SX3 X2-1R=
- SA1 =7LLIBRARY
- SA2 PBUF+1 INITIALIZE TERMINATOR SEARCH
- SX7 1R/ SET SEPARATOR FOR */UN=LIBRARY*
- * SEARCH FOR POINT TO INSERT *UN=LIBRARY* PARAMETER.
- PFC2 SA2 A2+2 READ SEPARATOR
- SX6 X2-1R.
- ZR X6,PFC3 IF *.*
- SX6 X2-1R=
- ZR X6,PFC2 IF *=*
- SX6 X2-1R,
- ZR X6,PFC2 IF *,*
- SX6 X2-1R/
- NZ X6,PFC3 IF NOT */*
- SX7 1R, RESET */UN* SEPARATOR TO *,UN*
- EQ PFC2 CONTINUE TERMINATOR SEARCH
- * INSERT *UN=LIBRARY* PARAMETER.
- PFC3 UX2,B6 X2
- PX7 B6,X7
- SA7 A2 STORE SEPARATOR
- SX6 2RUN
- SX7 1R=
- SB6 B1+B1 SET CHARACTER COUNT
- PX7 B6,X7
- LX6 48
- SA6 A7+B1 SET *UN*
- SA7 A6+B1 SET *=*
- BX6 X1
- SA6 A7+B1 SET *LIBRARY*
- SX7 1R.
- SB6 7 SET CHARACTER COUNT
- PX7 B6,X7
- SA7 A6+B1
- BX6 X6-X6
- SA6 A7+B1
- SA6 A6+B1
- SX6 3ROLD
- SB6 3
- LX6 42
- SA6 PBUF
- SX6 1R, SET SEPARATOR
- PX6 B6,X6
- SA6 PBUF+1
- EQ PSS ENTER JOB AFTER SORT
- RER SPACE 4
- ** RER - PROCESS RESEQUENCING OF PRIMARY FILE.
- RER BSS 0
- BX7 X7-X7 SET TERMINATOR
- SA7 PBUF+11
- SA7 A7-B1
- SA2 CCMA CHECK PARAMETER COUNT
- SX6 5 RESET PARAMETER COUNT
- SA6 A2
- SX2 X2-3
- SX6 2R10 SET DEFAULT INCREMENT
- LX6 48
- SB6 B1+B1 SET CHARACTER COUNT
- NG X2,RER1 IF DEFAULT
- SA1 PBUF+4
- ZR X1,RER1 IF DEFAULT
- SA3 A1+B1 GET CHARACTER COUNT
- UX3,B6 X3
- BX6 X1
- RER1 SX7 1R. SET TERMINATOR
- PX7 B6,X7
- SA7 A7-B1
- SA6 A7-B1 SET INCREMENT
- SX6 3R100 SET DEFAULT
- LX6 42
- SX2 X2+1 CHECK PARAMETER COUNT
- SB6 3 SET CHARACTER COUNT
- NG X2,RER2 IF DEFAULT
- SA1 PBUF+2 GET DEFAULT
- ZR X1,RER2 IF DEFAULT
- BX6 X1
- SA3 A1+B1 GET CHARACTER COUNT
- UX3,B6 X3
- RER2 SX7 1R, SET SEPERATOR
- PX7 B6,X7
- SA3 A6-B1 GET CHARACTER COUNT
- SA1 A3-B1 CHECK IF FILE TYPE ENTERED
- SA7 A6-B1
- SA6 A7-B1 SET STARTING LINE NUMBER
- LX1 6
- SX2 X2-2 CHECK PARAMETER COUNT
- NZ X2,RER3 IF FILE TYPE NOT ENTERED
- UX3,B6 X3
- BX6 X1
- NZ X1,RER4 IF FILE TYPE PRESENT
- RER3 SA1 A0+VSTT CHECK INTERACTIVE SUBSYSTEM
- SX6 1RB
- SB6 B1 SET CHARACTER COUNT
- MX3 -3
- LX1 -12
- BX1 -X3*X1 EXTRACT CURRENT SUBSYSTEM
- SX3 X1-BASS
- ZR X3,RER4 IF BASIC
- SX6 1RF
- SX3 X1-FORS
- ZR X3,RER4 IF FORTRAN
- SX3 X1-FTNS
- ZR X3,RER4 IF FTNTS
- BX6 X6-X6
- SB6 B0 SET CHARACTER COUNT
- RER4 PX7 B6,X7
- LX6 54
- SA7 A6-B1
- SA6 A7-B1 SET SYSTEM
- SA1 A0+VFNT SET FILE NAME
- MX6 42
- BX6 X6*X1
- ZR X6,IPF IF NO PRIMARY FILE
- RJ CFC COUNT CHARACTERS
- PX7 B6,X7 SET SEPARATOR
- SA7 A6-B1
- SA6 A7-B1
- SA3 A6-B1 SET SEPARATOR
- UX3,B6 X3
- PX7 B6,X7
- SA7 A3
- EQ PSS BEGIN JOB
- ROT SPACE 4
- ** ROT - SETS RUBOUT COUNT.
- ROT BSS 0
- SA5 CCMA CHECK PARAMETER COUNT
- SX5 X5-1
- BX3 X3-X3
- ZR X5,ROT1 IF NO RUBOUT COUNT ENTERED
- SA5 PBUF+2
- SB7 B1
- ZR X5,ROT1 IF NULL RUBOUTS
- RJ DXB
- NZ X4,ROT2 IF NON NUMERIC
- SX3 31
- IX2 X6-X3
- SX3 X6+1
- PL X2,ROT2 IF TOO MANY
- ROT1 SA1 A0+VDCT ENTER COUNT
- MX6 -5
- LX6 39
- BX1 X6*X1
- LX3 39
- BX6 X1+X3
- SA6 A1
- RJ SSP
- JP RDY ISSUE READY
- ROT2 RJ SSP
- SX6 =C*INCORRECT RUBOUT COUNT.*
- EQ PCS5 ISSUE MESSAGE
- RPF SPACE 4,10
- ** RPF - RETRIEVE PERMANENT FILE.
- * PROCESSES *ATTACH* OR *GET* COMMAND.
- RPF BSS 0
- SA2 CCMA CHECK PARAMETER COUNT
- SX2 X2-1
- ZR X2,PBS IF NULL
- SA2 PBUF+2 CHECK FILE NAME
- ZR X2,PBS IF NULL
- SB6 A2
- RJ GFN CHECK FOR RESERVED NAME
- EQ PBS
- RUN SPACE 4
- ** RUN - INITIATES THE RUNNING OF A USERS JOB.
- RUN BSS 0
- SX6 PBUF+2 SET PARAMETER POINTER
- SA6 RUNA
- BX6 X6-X6 SET DEFAULT VALUES
- SA6 A6+B1
- SA6 A6+B1
- SA6 A6+B1
- SX6 2RGO
- LX6 48
- SA6 RUNH
- SA6 RUNS
- SX7 1R, SET CHARACTER COUNT
- SB6 B1+B1
- PX7 B6,X7
- SA7 A6+B1
- SA7 RUNH+1
- RUN1 SA1 RUNA GET PARAMETER POINTER
- SX6 X1+4 UPDATE POINTER
- SA6 A1
- SA1 X1 GET PARAMETER
- SA2 A1-B1 GET TERMINATOR
- UX2,B6 X2
- SX2 X2-1R.
- ZR X2,RUN2 IF ALL PARAMETERS PROCESSED
- AX1 42
- SX2 X1-1LI
- ZR X2,RUN20 IF INPUT FILE NAME
- SX2 X1-1LB
- ZR X2,RUN20 IF BINARY FILE NAME
- SX2 X1-1LC
- ZR X2,RUN20 IF BINARY FILE NAME
- SX2 X1-1LT
- NZ X2,IPL IF NOT TRANSMIT
- SX6 X6-2 SET TRANSMIT PARAMETER POINTER
- SA6 RUND
- RUN2 SA1 RUNB
- NZ X1,RUN3 IF FILE NAME SPECIFIED
- SA1 A0+VFNT
- MX6 42
- BX6 X1*X6
- ZR X6,IPF IF NO PRIMARY FILE
- SA6 RUNB
- RUN3 SA1 A0+VSTT GET SUBSYSTEM
- MX4 -3
- AX1 12
- BX4 -X4*X1
- SA1 TSYS+X4 GET SYSTEM PROCESSOR
- SX7 B1
- IX6 X1+X7
- AX1 42
- SA6 A1
- SB7 X1
- RJ SRC SET TO ISSUE *RUN COMPLETE.*
- JP B7
- ** BASIC.
- RUN4 SA1 RUND
- NZ X1,IPL IF *T* PARAMETER SPECIFIED
- SA1 A0+VDCT CHECK ASCII FLAG
- LX1 59-51
- SB6 B1+B1
- SA2 =0LAS
- NG X1,RUN5 IF ASCII
- SA2 =0LAS=0
- SB6 4
- RUN5 BX6 X2
- SX7 1R.
- PX7 B6,X7
- SA6 RUNR SET ASCII FLAG
- SA7 A6+B1
- SA1 RUNC BINARY FILE NAME
- SA2 RUNB INPUT FILE NAME
- NZ X1,RUN6 IF BINARY FILE NAME SUBSTITUTION
- SA1 =0L0
- RUN6 BX6 X1
- RJ CFC GET CHARACTER COUNT
- SX7 1R,
- PX7 B6,X7
- SA6 RUNP SET BINARY FILE NAME
- SA7 A6+B1
- BX6 X2
- RJ CFC GET CHARACTER COUNT
- SX7 1R,
- PX7 B6,X7
- SA6 RUNQ SET INPUT FILE NAME
- SA7 A6+B1 SET SEPARATOR
- SX1 RUNO
- RJ PCB
- SA1 =0LBASIC SET *EPN*
- BX7 X1
- EQ RUN13 MAKE QUEUE ENTRY
- ** FTN 4.3 TS AND FTN5.
- RUN7 SX7 1R5 *FTN5*
- LX7 35-5
- SB7 5 INSERT CHARACTER COUNT
- SX2 RUNL MOVE COMMAND PARAMETERS
- EQ RUN9 FORMAT COMMAND
- RUN8 SX7 B0 *FTN*
- SB7 4
- SX2 RUNM MOVE COMMAND PARAMETERS
- RUN9 SA1 RUND
- NZ X1,IPL IF *T* PARAMETER SPECIFIED
- SA1 RUNG
- MX3 24
- BX1 X3*X1
- BX7 X7+X1
- BX0 X7
- SA7 A1+
- LX0 6
- BX0 X0*X3 SAVE *EPN*
- SX7 1R, INSERT CHARACTER COUNT
- PX7 B7,X7
- SA7 A7+B1
- SB5 8
- SX3 RUNK
- RJ MDA MOVE DATA
- SA1 RUNC BINARY FILE NAME
- SA2 RUNB INPUT FILE NAME
- NZ X1,RUN10 IF BINARY FILE NAME SUBSTITUTION
- SA1 =0LLGO
- RUN10 BX6 X1
- RJ CFC GET CHARACTER COUNT
- SX7 1R,
- PX7 B6,X7
- SA6 RUNI SET BINARY FILE NAME
- SA7 A6+B1 SET SEPARATOR
- BX6 X2
- RJ CFC GET CHARACTER COUNT
- PX7 B6,X7
- SA6 RUNJ SET INPUT FILE NAME
- SA7 A6+B1 SET SEPARATOR
- SX1 RUNG
- RJ PCB
- BX7 X0 SET *EPN*
- EQ RUN13 MAKE QUEUE ENTRY
- ** EXECUTE.
- RUN11 SA1 RUNC
- NZ X1,IPL IF *B* PARAMETER SPECIFIED
- SA1 RUNB GET FILE TO EXECUTE
- SA2 RUND CHECK FOR TRANSMIT PARAMETERS
- BX6 X1
- SA6 PBUF
- BX0 X6 SET *EPN*
- RJ CFC GET CHARACTER COUNT
- SX7 1R.
- PX7 B6,X7
- SA7 A6+B1
- BX6 X6-X6
- SA6 A7+B1 SET BUFFER TERMINATION
- SA6 A6+B1
- ZR X2,RUN12 IF NOT TRANSMIT PARAMETERS
- SX7 1R,
- PX7 B6,X7
- SA7 A7
- SX3 A7+B1
- SA4 CCMA GET PARAMETER COUNT
- LX4 1
- SB5 X4
- RJ MDA
- RUN12 SX1 PBUF BUILD COMMAND
- RJ PCB
- BX7 X0 SET *EPN*
- EQ RUN14 BEGIN JOB
- * ENABLE THE JOB.
- RUN13 SA1 RUNB
- RJ TPF CHECK PRIMARY FILE NAME
- BX4 X6
- SX6 B1 SET *PPI* TO SORT FILE
- ZR X4,BJB IF PRIMARY FILE
- RUN14 SX6 B0 SET *PPI* NOT TO SORT THE FILE
- EQ BJB BEGIN JOB
- ** PROCESS OPTIONAL FILE NAME.
- RUN20 SA2 X6-3 CHECK SEPERATOR
- SX3 X1-1LI
- SX2 X2-1R=
- NZ X2,IPL IF NOT *=* SEPERATOR
- SB6 A2+B1
- ZR X3,RUN21 IF INPUT
- SX3 B1
- SX6 B0+ PRESTORE NOGO
- SA6 RUNH
- SX6 1R,
- PX6 B0,X6
- SA6 A6+B1
- SA6 RUNS+1
- MX6 0
- SA6 A6-B1
- RUN21 RJ GFN CHECK FILE NAME
- BX6 X2 SAVE FILE NAME
- SA2 RUNB+X3
- NZ X2,IPL IF PARAMETER SPECIFIED TWICE
- SA6 A2
- EQ RUN1 PROCESS NEXT PARAMETER
- RUNA CON 0 PARAMETER POINTER
- RUNB CON 0 INPUT FILE NAME
- RUNC CON 0 BINARY FILE NAME
- RUND CON 0 TRANSMIT PARAMETER POINTER
- * FTN,GO,B=LGO,I=INPUT,L=0,SEQ,REW,X,A,TS,T.
- * FTN5,GO,B=LGO,I=INPUT,L=0,SEQ,REW,X,OPT=0,ET=F.
- RUNG BSS 0
- VFD 60/5L$FTN5
- VFD 12/2005B,48/1R,
- RUNH VFD 60/2LGO
- VFD 12/2002B,48/1R,
- VFD 60/1LB
- VFD 12/2001B,48/1R=
- RUNI VFD 60/3LLGO
- VFD 12/2003B,48/1R,
- VFD 60/1LI
- VFD 12/2001B,48/1R=
- RUNJ VFD 60/5LINPUT
- VFD 12/2005B,48/1R,
- VFD 60/1LL
- VFD 12/2001B,48/1R=
- VFD 60/1L0
- VFD 12/2001B,48/1R,
- VFD 60/3LSEQ
- VFD 12/2003B,48/1R,
- VFD 60/3LREW
- VFD 12/2003B,48/1R,
- VFD 60/1LX
- VFD 12/2001B,48/1R,
- RUNK BSS 10 COMMAND REFORMAT AREA
- RUNL VFD 60/3LOPT
- VFD 12/2003B,48/1R=
- VFD 60/1L0
- VFD 12/2001B,48/1R,
- VFD 60/2LET
- VFD 12/2002B,48/1R=
- VFD 60/1LF
- VFD 12/2001B,48/1R.
- RUNM VFD 60/1LA
- VFD 12/2001B,48/1R,
- VFD 60/2LTS
- VFD 12/2002B,48/1R,
- VFD 60/1LT
- VFD 12/2001B,48/1R.
- VFD 60/0
- VFD 60/0
- * BASIC,B=0,I=INPUT,L=0,GO,AS=0.
- RUNO BSS 0
- VFD 60/6L$BASIC
- VFD 12/2006B,48/1R,
- VFD 60/1LB
- VFD 12/2001B,48/1R=
- RUNP VFD 60/1L0
- VFD 12/2001B,48/1R,
- VFD 60/1LI
- VFD 12/2001B,48/1R=
- RUNQ VFD 60/5LINPUT
- VFD 12/2005B,48/1R,
- VFD 60/1LL
- VFD 12/2001B,48/1R=
- VFD 60/1L0
- VFD 12/2001B,48/1R,
- RUNS VFD 60/2LGO
- VFD 12/2002B,48/1R,
- RUNR VFD 60/4LAS=0
- VFD 12/2004B,48/1R.
- VFD 60/0
- VFD 60/0
- BSS 0
- TSYS EQU *-1
- VFD 18/RUN4,42/0
- VFD 18/RUN7,42/0
- VFD 18/RUN8,42/0
- VFD 18/RUN11,42/0
- SAV SPACE 4
- ** SAV - SAVE, REPLACE, OR PURGE FILE.
- *
- * PROCESS IMPLIED PRIMARY FILE COMMANDS.
- SAV BSS 0 ENTRY
- SA3 CCMA GET PARAMETER COUNT
- SX2 X3-1
- SA1 PBUF+2 GET FILE NAME
- ZR X2,SAV1 IF IMPLIED FILE NAME
- NZ X1,SAV2 IF NOT IMPLIED FILE NAME
- SAV1 SA1 A0+VFNT GET PRIMARY FILE NAME
- MX3 42
- BX6 X3*X1
- ZR X6,PBS IF NO PRIMARY FILE
- EQ PSS PROCESS COMMAND
- SAV2 RJ TPF CHECK FOR PRIMARY FILE
- NZ X6,PBS IF NOT PRIMARY FILE
- EQ PSS PROCESS COMMAND
- SOF SPACE 4
- ** SOF - SETS SORT FLAG.
- SOF BSS 0
- SA2 CCMA CHECK PARAMETER COUNT
- SA1 PBUF+2
- SX2 X2-1
- NZ X2,SOF1 IF SORT OF EXPLICIT FILE
- SA1 A0+VSTT
- SX6 B1
- LX6 52
- BX6 X1+X6
- SA6 A1
- EQ RDY
- * ENTER HERE FROM PAC.
- SOF1 RJ TPF CHECK PRIMARY FILE NAME
- NZ X6,PBS IF NOT PRIMARY FILE BEING SORTED
- SOF2 BSS 0
- SA1 A0+VSTT CLEAR SORT FLAG
- SX2 B1
- LX2 52
- BX6 -X2*X1
- SA6 A1
- EQ PBS
- STA SPACE 4
- ** STA - DETERMINES THE CURRENT JOB STATUS.
- STA BSS 0
- SA1 CCMA CHECK PARAMETER COUNT
- SX1 X1-1
- NZ X1,STA11 IF OPTIONAL PARAMETERS ENTERED
- * PROCESS SIMPLE *STATUS* (*ENQUIRE*) COMMAND.
- STA1 TA2 B2,VRAP
- ZR X2,STA5 IF NO QUEUED ENTRY
- MX5 12
- BX1 X5*X2
- NZ X1,STA3 IF SINGLE QUEUE ENTRY
- SB7 X2 ADDRESS OF ENTRIES
- SB6 B7+VCPC
- STA2 SA1 B7 LOAD ENTRY
- MX5 12
- BX2 X5*X1 MASK OFF REQUEST
- LX2 12D
- ZR X2,STA4 IF NO MORE ENTRIES IN POT
- SX2 X2-STA$
- ZR X2,STA12 IF *STA$* REQUEST FOUND
- SB7 B7+1 ADVANCE TO NEXT ENTRY
- NE B7,B6,STA2 IF NOT AT END OF POT
- EQ STA4 ENTER *STA$* REQUEST
- STA3 LX1 12D
- SX2 X1-STA$
- ZR X2,STA12 IF ENTRY IS *STA$*
- STA4 SX5 STA$ SET STA$ QUEUE ENTRY
- SX7 B0+
- EQ PCS1 MAKE QUEUE ENTRY
- * REENTRY FROM QUEUED ENTRY.
- STA5 SA1 A0+VROT CHECK JOB STATUS
- LX1 59-1
- SX7 B0
- NG X1,STA6 IF JOB IN SYSTEM
- LX1 59-0-59+1
- PL X1,STA4 IF ACTIVITY
- * MAKE *1TA* QUEUE ENTRY WITHOUT CLEARING THE COMPLETION
- * BIT IN VROT.
- STA6 SX5 ITA1$ CALL *1TA* FOR JOB STATUS
- SB7 ITAQ
- BX6 X6-X6 CLEAR POSSIBLE EOL
- SA6 B4+4
- SA6 A6+B1
- SX6 B3
- LX5 48
- LX6 12
- BX5 X5+X6
- RJ MQE MAKE QUEUE ENTRY
- EQ PCSX EXIT
- * REENTRY FROM SJS TO ASSIGN MESSAGE.
- STA7 SA1 A0+VROT CHECK FOR JOB ACTIVITY
- MX2 -5
- BX2 -X2*X1
- SX6 X2-1
- NZ X6,STA8 IF ACTIVITY
- SA1 =0LIDLE
- BX6 X1
- SA6 B4 ISSUE IDLE MESSAGE
- STA8 SA1 B4+VCPC-1 GET THE SRU ACCUMULATOR VALUE
- RJ FSM FORMAT STATUS MESSAGE
- SX6 FSMA
- SB4 X7
- EQ PCS6 ISSUE STATUS MESSAGE
- * PROCESS OPTIONAL PARAMETERS.
- STA11 SA2 A0+VROT CHECK JOB ACTIVITY
- MX5 -5
- BX5 -X5*X2
- SX5 X5-1
- SMA X6,( JOB ACTIVE."NL")
- NZ X5,PCS5 IF TERMINAL NOT IDLE
- EQ PBS ENTER JOB
- * PROCESS DISCARDED REQUEST.
- STA12 SB4 B0
- RJ DPT DROP INPUT POT
- EQ PCSX EXIT
- STO SPACE 4
- ** STO - STOPS COMPUTATION ON A USER,S JOB.
- STO BSS 0 ENTRY
- SX2 /1TD/SDU SUSPEND DRIVER FOR USER BREAK PROCESSING
- SX7 STO1 SET REENTRY ADDRESS
- EQ DCR ENTER DRIVER REQUEST TO HANG DRIVER
- STO1 SA2 SSPA SET *TAET* ERROR FLAG IN *SSPA* AND X7
- SX7 TAET
- MX6 36
- LX2 -24
- BX6 X6*X2 REMOVE OLD X7 PARAMETER
- BX6 X6+X7 INSERT *TAET* ERROR FLAG
- LX6 24
- SA6 A2
- EQ PUB PROCESS AS A USER BREAK 2
- SUB SPACE 4
- ** SUB - PROCESS DEFAULT ON SUBMIT.
- SUB BSS 0
- SA3 CCMA GET PARAMETER COUNT
- SX2 X3-1
- SX6 2 RESET PARAMETER COUNT
- SA1 PBUF+2 GET FILE NAME
- ZR X2,SUB1 IF NULL FILE NAME
- SX2 X2-1
- NZ X1,PSS IF NOT DEFAULT
- BX6 X3
- SUB1 SA6 A3
- SA1 A0+VFNT SET DEFAULT
- MX3 42
- BX6 X3*X1
- ZR X6,IPF IF NO PRIMARY FILE
- SX7 1R,
- SB6 6
- PX7 B6,X7
- SA7 PBUF+1
- SA6 A7+B1
- RJ CFC GET CHARACTER COUNT
- SX7 1R.
- ZR X2,SUB2 IF FILE NAME ONLY
- SA3 A6+B1 GET SEPARATOR
- UX7,B7 X3
- SUB2 PX7 B6,X7
- SA7 A6+B1
- NZ X2,PSS IF THREE PARAMETERS
- BX6 X6-X6
- SA6 A7+B1
- SA6 A6+B1
- EQ PSS PROCESS COMMAND
- TAP SPACE 4
- ** TAP - SETS TAPE MODE OPERATION FLAG.
- TAP BSS 0
- SA1 A0+VDCT SET TAPE MODE
- SX6 B1
- LX6 48
- BX6 X1+X6
- SA6 A1
- EQ RDY ISSUE MESSAGE
- TER SPACE 4
- ** TER - SETS TERMINAL TYPE.
- TER BSS 0
- SA1 CCMA CHECK PARAMETER COUNT
- SX1 X1-1
- ZR X1,TER1 IF NO TYPE GIVEN
- SA5 PBUF+2 CHECK PARAMETER
- RJ LTT LOCATE TERMINAL TYPE
- ZR X5,TER1 IF NO PARAMETER GIVEN
- SX7 X1 EXTRACT CLASS
- SA1 X2 FIRST TERMINAL NAME
- SB7 X2
- BX5 X5+X7 MERGE WITH PARAMETER
- SX2 /1TD/STT SET DRIVER REQUEST
- + BX7 X1-X5 COMPARE TABLE AND PARAMETER
- ZR X7,TER2 IF MATCH FOUND
- SA1 A1+B1
- NZ X1,*-1
- TER1 SMA X6,( INCORRECT TERMINAL TYPE."NL")
- EQ PCS5 ISSUE MESSAGE
- TER2 SX1 A1-B7 SET NEW INDEX
- LX1 6
- BX2 X2+X1
- SX7 RDY SET RETURN
- JP DCR ISSUE DRIVER REQUEST
- TIM SPACE 4
- ** TIM - PROCESS TIMEOUT LOGOFF COMMAND.
- TIM BSS 0
- MX2 -1
- SA3 A0+VDCT GET ACCESS BITS
- LX2 12+10 POSITION FOR TIMEOUT BIT
- BX7 X2*X3 CLEAR BIT
- SA7 A3 RESTORE *VDCT* WORD
- JP RDY ISSUE *READY*
- TXT SPACE 4
- ** TXT - SETS TEXT MODE OPERATION FLAG.
- TXT BSS 0
- SA2 A0+VFNT
- MX1 42
- BX1 X1*X2
- ZR X1,IPF IF NO PRIMARY FILE
- LX2 59-12
- SMA X6,( WRITE ON READ-ONLY FILE."NL")
- NG X2,PCS5 IF WRITE LOCKOUT BIT SET
- SX6 B1 SET TEXT MODE
- SA2 A0+VDCT
- LX6 50-0
- BX6 X6+X2
- SA6 A2 REWRITE VDCT
- SX7 B1 CLEAR SORT FLAG
- LX7 52
- SA1 A0+VSTT
- BX7 -X7*X1
- SA7 A1
- SMA X6,( ENTER TEXT MODE."NL""LF")
- EQ PCS5 ISSUE MESSAGE
- UNU SPACE 4
- ** UNU - USER NAME SEARCH.
- *
- * *UNU* SEARCHES FOR USERS ON THE SYSTEM UNDER THE GIVEN USER
- * NUMBER. THE JOB SEQUENCE NUMBERS OF THOSE USERS ARE RETURNED
- * TO THE TERMINAL.
- *
- * ENTRY (SEE SSP).
- *
- * EXIT LIST OF *JSN*S ASSIGNED TO TERMINAL.
- *
- * USES X - 1, 2, 3, 6, 7.
- * A - 1, 2, 6, 7.
- * B - 5, 6, 7.
- *
- * CALLS ASM.
- UNU BSS 0 ENTRY
- TB7 B0,VTTP,LWA
- TB6 VTTL*VPST-VTTL,VTTP FWA OF FIRST NON-PSEUDO TERMINAL
- SA2 CCMA CHECK PARAMETER COUNT
- SX2 X2-1
- ZR X2,IPL IF USER NAME NOT GIVEN
- SA1 =C*TERMINAL(S).*
- SA2 A1+1
- BX7 X1
- BX6 X2
- SA7 PBUF
- SA6 A7+1
- SA1 PBUF+2 GET GIVEN USER NAME
- SB5 5 SET MAXIMUM NUMBER OF USERS RETURNED
- MX3 42
- MX7 24
- UNU1 SA2 B6+VUIT GET USER NAME TO COMPARE
- SB6 B6+VTTL
- BX2 X2*X3
- BX2 X1-X2
- NZ X2,UNU2 IF USER NAMES DO NOT MATCH
- SA2 A2+VFST-VUIT
- BX6 X2*X7
- SB5 B5-B1
- NG B5,UNU4 IF MORE THAN MAXIMUM NUMBER OF USERS
- SA6 A6+1 ADD *JSN* TO THE LIST
- UNU2 LT B6,B7,UNU1 IF STILL MORE USERS TO CHECK
- SB6 B5-5
- ZR B6,UNU3 IF NO USERS FOUND
- SMA A1,("NL")
- BX7 X1
- SA7 A6+B1 TERMINATE THE LIST
- EQ UNU5 ISSUE THE MESSAGE
- UNU3 SMA A1,( NONE."NL")
- SA2 A1+B1
- BX6 X1
- BX7 X2
- SA6 A6+B1
- SA7 A6+1
- EQ UNU5 ISSUE THE MESSAGE
- UNU4 SMA A1,( MORE USERS."NL")
- SA2 A1+B1
- BX6 X1
- BX7 X2
- SA6 A6
- SA7 A6+1
- UNU5 SX6 PBUF PROCESS MESSAGE
- SB4 A7-PBUF+1
- RJ MVA
- EQ PCSX EXIT
- XEQ SPACE 4
- ** XEQ - EXECUTE BATCH COMMAND.
- XEQ BSS 0
- SA1 PBUF+1
- SX1 X1-1R,
- NZ X1,BAT2 IF NOT *,*
- SX2 PBUF+2 STRIP OFF *X,*
- SX3 PBUF
- SA4 CCMB GET NO. OF WORDS TO MOVE
- SB5 X4
- RJ MDA
- EQ BAT2
- TITLE PCM - REENTRANT COMMAND PROCESSING ROUTINES.
- BJB SPACE 4,20
- ** BJB - BEGIN JOB.
- *
- * *BJB* HAS TWO ENTRY POINTS. USERS BEGINNING A JOB STEP
- * ENTER AT *BJB*. JOBS WHICH HAVE BEEN ROLLED OUT FOR
- * SOME REASON ARE RE-ENABLED BY ENTERING AT *BJB1*.
- *
- * ENTRY (A0) = TERMINAL TABLE ADDRESS.
- * (X6) = PRE-PROCESSOR INDEX.
- * (X7) = ENTRY POINT NAME.
- * (B3) = COMMAND POT POINTER.
- *
- * EXIT JOB ENABLED.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 4, 6, 7.
- * B - 3, 4.
- *
- * CALLS DPT, GOP, INO, PMR, RDC, UEC.
- *
- * MACROS PARAM.
- BJB BSS 0 ENTRY
- BX4 X7
- AX4 54 RIGHT JUSTIFY FIRST CHARACTER
- SB7 X4+77B-1R$
- NZ B7,BJB0 IF FIRST CHARACTER NOT DOLLAR SIGN
- LX7 6 STRIP LEADING DOLLAR SIGN FROM *EPN*
- BJB0 TA4 B2,VRAP CHECK FOR QUEUE ENTRY
- NZ X4,CDA IF ANOTHER ENTRY ALREADY QUEUED
- SA6 BJBA STORE *PPI*
- SA7 BJBB STORE *EPN*
- SX6 B3 STORE POT POINTER
- SB3 B0
- SA6 BJBC
- RJ INO ISSUE NULL OUTPUT
- SA1 BJBC RESTORE POT POINTER
- SB3 X1+
- EQ BJB2 SET UP *ENEJ* CALL
- BJB1 SA6 BJBA STORE *PPI*
- SA7 BJBB STORE *EPN*
- BJB2 SA1 A0+VROT
- SX2 B1
- BX6 X2*X1 ABORT ON TERMINAL TABLE INTERLOCKED
- ZR X6,BJB5 IF JOB IS IN ENABLED STATE
- SA3 A0+VDCT CHECK CONNECTION TYPE
- LX3 59-47
- NG X3,PCSX IF CONNECTION LOANED
- BX1 -X2*X1 SET THE TERMINAL BUSY
- LX2 1-0
- BX1 X2+X1 SET JOB IN SYSTEM FLAG
- MX2 48
- SX6 B3 STORE COMMAND LINE POT POINTER
- LX2 36
- BX2 X1*X2
- LX6 36
- BX6 X2+X6
- SA6 A1 REWRITE *VROT*
- SB3 B0
- RJ GOP GET POT FOR EJT PARAMETER BLOCK
- SA1 A0+VDCT READ VDCT FOR NETWORK TERMINAL
- SA3 BJBA GET *PPI*
- IFNET BJB2.1 IF NETWORK TERMINAL
- SA2 A3+B1 GET ENTRY POINT NAME
- BX6 X2
- BX7 X3
- SA6 B4 SAVE ENTRY POINT NAME
- SA7 B4+B1 SAVE *PPI*
- RJ RDC WAIT FOR VDCT INTERLOCK
- SA2 B4+ RESTORE ENTRY POINT NAME
- BX7 X2
- SA3 A2+B1 RESTORE *PPI*
- SA7 BJBB
- BJB2.1 SX2 B1
- LX2 54-0
- BX6 X1+X2
- SA6 A1 SET READ DATA FLAG
- SA1 A0+VSTT SET JOB COMPLETION FLAG
- BX6 X1+X2
- SA6 A1 REWRITE VSTT
- SX1 B1
- BX1 X1*X3
- ZR X1,BJB3 IF PRIMARY FILE NOT TO BE SORTED
- BX3 -X1*X3 CLEAR *PPI* SORT FLAG
- SA1 A0+VFNT
- MX2 42
- BX2 X1*X2
- ZR X2,BJB3 IF NO PRIMARY FILE EXISTS
- SA1 A0+VSTT
- LX1 59-52
- PL X1,BJB3 IF SORT NOT NEEDED
- SX3 X3+B1 RESTORE *PPI* SORT FLAG
- MX6 1 CLEAR SORT FLAG
- BX6 -X6*X1
- LX6 52-59
- SA6 A1 REWRITE VSTT
- BJB3 SA1 A0+VROT STORE *PPI* IN TERMINAL TABLE
- MX2 54
- LX2 48
- BX6 X1*X2 CLEAR PREVIOUS INDEX
- BX2 X3
- LX2 48
- BX6 X2+X6 ADD NEW INDEX
- SA6 A1 REWRITE VROT
- PARAM ENEJ,X3,BJBB
- RJ PMR PROCESS MONITOR REQUEST
- NZ X2,BJB4 IF ERROR RETURNED
- SB4 B0
- RJ DPT RETURN THE PARAMETER BLOCK POT
- SA1 A0+VFST GET NEXT OPERATION INDEX
- MX6 5
- LX6 17
- BX7 X6*X1
- BX6 -X6*X1 CLEAR OLD INDEX
- AX7 12
- SA6 A1 REWRITE VFST
- SX6 X7-TNOIL
- PL X6,BJB4 IF NEXT OPERATION NOT DEFINED
- SA1 X7+TNOI
- SB7 X1
- SB3 B0
- BX7 X7-X7
- JP B7 START NEXT OPERATION
- BJB4 RJ UEC PROCESS UNEXPECTED ERROR CODE
- SB4 B0
- RJ DPT RETURN THE PARAMETER BLOCK POT
- SA1 A0+VROT SET TERMINAL NOT BUSY
- MX2 57 CLEAR JOB CONTINUATION AND JOB IN SYSTEM
- BX6 X1*X2
- SX3 B1
- BX6 X3+X6
- MX3 -12 REUSE COMMAND LINE POT POINTER
- LX3 36
- BX2 -X3*X1
- BX6 X3*X6
- AX2 36
- SA6 A1 REWRITE VROT
- SA1 A0+VSTT CLEAR JOB COMPLETION FLAG
- LX3 54-0
- BX6 -X3*X1
- SA6 A1
- SB3 X2
- SMA X6,( SYSTEM ERROR."NL")
- SB4 B0
- RJ MVA ISSUE MESSAGE
- SX7 3RIAF SET NVF PARAMETER
- LX7 42
- SB3 B0
- SA7 A0+VFNT
- IFNET HNG
- RJ RDC WAIT FOR DRIVER TO ISSUE MESSAGE
- RJ CLE CLEAN UP TERMINAL TABLE
- SX7 DIN
- SX2 /1TD/LGI SET RELOGIN REQUEST
- EQ DCR1 MAKE DRIVER REQUEST
- * ABORT BEGIN JOB PROCESS.
- BJB5 SX6 3RBJB *ABT* ENTRY PRESET
- RJ ABT ABORT
- EQ PCSX EXIT
- BJBA CON 0 PRE-PROCESSOR INDEX
- BJBB CON 0 ENTRY POINT NAME
- BJBC CON 0 COMMAND POT POINTER
- TNOI SPACE 4,10
- ** TNOI - TABLE OF NEXT OPERATION INDICES.
- *
- * 60/ NEXT OPERATION ADDRESS
- TNOI BSS 0
- CON PCSX RETURN FOR NO SPECIFED OPERATION
- CON LIS7 LIST AFTER SORT
- CON ETX3 EXIT TEXT MODE AFTER PACK COMPLETE
- CON PUB7 COMPLETE USER BREAK PROCESSING
- TNOIL EQU *-TNOI
- CDA SPACE 4,10
- ** CDA - ISSUE *COMMAND ACTIVE* DIAGNOSTIC.
- *
- * EXIT TO PCS5 TO ISSUE MESSAGE.
- CDA BSS 0 ENTRY
- SMA X6,( COMMAND ACTIVE."NL") SET MESSAGE ADDRESS
- EQ PCS5 ISSUE MESSAGE
- EJB SPACE 4,20
- CJA SPACE 4,10
- ** CJA - CLEAR JOB ACTIVITY.
- *
- * CLEARS INP$ REQUESTS FROM REENTRY QUEUE. REENTERS UNTIL
- * REENTRY QUEUE IS CLEAR. ON REENTRY, IF A SECOND CJA$
- * REENTRY EXITS IN THE QUEUE, EXIT AND PROCESS THE SECOND
- * CJA$ REENTRY.
- *
- * ENTRY (X7) = RETURN ADDRESS.
- * (B3) = ANYTHING TO BE SAVED.
- *
- * CALLS DPT, GRT, UQS.
- CJA BSS 0 ENTRY
- MX2 -12
- SX1 B3
- LX7 18
- BX1 -X2*X1
- BX7 X1+X7
- SA7 CJAA SAVE RETURN ADDRESS
- CJA1 RJ UQS UPDATE REENTRY QUEUE STACK
- SB5 B2+ CHECK NEXT QUEUE ENTRY
- RJ GRT
- BX3 X4
- AX4 48
- SX6 X4-INP$
- NZ X6,CJA4 IF NOT INPUT REQUEST
- SX6 B0+ CLEAR ENTRY
- SA6 A4
- MX1 -12 GET POSSIBLE POT POINTER
- AX3 12
- BX1 -X1*X3
- ZR X1,CJA1 IF NO POT POINTER IN REQUEST
- SB3 X1 DROP POT
- SB4 B0
- RJ DPT
- EQ CJA1 LOOP THROUGH STACK
- CJA4 SA1 CJAA RESTORE ENTRY CONDITIONS
- TA4 B2,VRAP CHECK REENTRY QUEUE
- SX5 CJA$
- SB3 X1
- AX1 18
- BX7 X1
- NZ X4,PCS1 IF OTHER REENTRIES PRESENT
- SB7 X7
- JP B7 RETURN TO CALLER
- * REENTRY FROM WAIT-COMPLETION QUEUE.
- CJA5 SB5 B2 GET NEXT QUEUE ENTRY
- RJ GRT
- AX4 48
- SX6 X4-CJA$
- NZ X6,CJA IF NOT SUBSEQUENT *CJA* ENTRY
- EQ PCSX EXIT
- CJAA CON 0 STORAGE FOR RETURN ADDRESS
- FTP SPACE 4,10
- ** FTP - FINISH TIMEOUT PROCESSING.
- *
- * EXIT TO HNG IF DETACH SUCCESSFUL.
- * TO FLO IF DETACHED FAILED.
- *
- * CALLS CDP, DAP, DLP, DPT, SLF, SSI, SSP.
- FTP BSS 0 ENTRY
- IFMUX FTP1
- TA1 B2,VMST CHECK TIMEOUT FLAG
- MX6 59 CLEAR INPUT ENABLED
- LX6 53-0
- BX6 X6*X1
- LX1 59-48
- NG X1,FTP1 IF TIMEOUT IN PROGRESS
- SA6 A1 REWRITE VMST
- SB3 B0
- EQ RES RESTART TERMINAL
- FTP1 SX7 FTP2 SET REENTRY ADDRESS
- SA1 A0+VSTT
- SX2 401B
- LX2 48
- BX6 X2*X1
- NZ X6,PCSX IF LOGOUT OR DETACH IN PROGRESS
- EQ CJA CLEAR JOB ACTIVITY
- FTP2 SA1 A0+VUIT CHECK EJT ORDINAL
- MX2 -12
- BX2 -X2*X1
- ZR X2,HNG IF NO EJT ORDINAL
- RJ DLP DUMP LAST INPUT POT
- RJ SSP RESET REGISTERS
- SX5 FTP3$
- EQ PCS1 WAIT FOR DUMP TO COMPLETE
- FTP3 SX7 TORC SET TIMEOUT REASON CODE
- EQ DTJ DETACH JOB
- * NORMAL (NO ERROR) RETURN.
- FTP4 RJ SLF SET LOGOUT IN PROGRESS
- SA1 A0+VFST SET UP TIMEOUT MESSAGE
- MX2 24
- BX6 X1*X2
- SX3 1R.
- LX3 30
- BX6 X3+X6
- SA6 SSIB
- RJ DAP DROP ASSIGNED POTS
- RJ SSP RESET REGISTERS
- SX6 B1 SEND TIMEOUT MESSAGE
- RJ SSI SEND SRU INFORMATION
- SX7 3RBYE SET NVF PARAMETER
- LX7 42
- SB3 B0
- SA7 A0+VFNT
- RJ CDP CLEAR DETACH IN PROGRESS
- SX5 HNG$
- EQ PCS1 EXIT AND DISCONNECT
- * ERROR ON DETACH RETURNS HERE.
- FTP5 SA1 A0+VSTT CLEAR LOGOUT AND DETACH
- SX6 0401B
- LX6 48
- BX6 -X6*X1
- SA6 A1 REWRITE VSTT
- SB4 B0
- ZR B3,FTP6 IF NO HELD POTS
- RJ DPT DROP POTS
- FTP6 SX7 2 SET FORCE LOGOUT VALUE
- EQ FLO FORCE LOGOUT
- IEX SPACE 4
- ** IEX - ISSUE EXECUTE ONLY MESSAGE.
- IEX BSS 0
- SMA X6,( EXECUTE ONLY FILE."NL")
- RJ SSP
- EQ PCS5 ISSUE MESSAGE
- IGN SPACE 4,20
- ** IGN - IGNORE QUEUE ENTRY.
- *
- * DROPS REENTRY POTS AND EXITS FROM PCS PROCESSING.
- *
- * ENTRY (B3) = REENTRY POT CHAIN POINTER.
- *
- * EXIT POTS DROPPED.
- *
- * CALLS DPT.
- IGN BSS 0 ENTRY
- ZR B3,PCSX IF NO POTS TO BE DROPPED
- SB4 B0+ DROP POT CHAIN
- RJ DPT
- EQ PCSX EXIT
- IPF SPACE 4
- ** IPF - ISSUE NO PRIMARY FILE NAME.
- IPF BSS 0
- SMA X6,( NO PRIMARY FILE."NL")
- RJ SSP
- EQ PCS5 ISSUE MESSAGE
- IPL SPACE 4
- ** IPL - ISSUES MESSAGE *INCORRECT PARAMETER.*
- *
- * ENTRY-
- * NONE.
- IPL BSS 0
- SMA X6,( INCORRECT PARAMETER."NL")
- RJ SSP
- EQ PCS5 ISSUE MESSAGE
- PBS SPACE 4
- ** PBS - PROCESS COMMAND IN SYSTEM.
- * PSS - PROCSS COMMAND IN SYSTEM AFTER SORT.
- *
- * ENTRY-
- * SEE SSP.
- PSS SX6 B1 SET *PPI* TO SORT FILE
- EQ PBS1
- PBS SX6 B0+ SET *PPI* NOT TO SORT THE FILE
- * IF IN BATCH SUBSYSTEM ISSUE COMMANDS WITHOUT *$* PREFIX.
- PBS1 SX1 LBUF COMMAND BUFFER WITH *$* PREFIX
- SA2 A0+VSTT CHECK FOR BATCH SUBSYSTEM
- MX5 -3
- LX2 -12
- BX5 -X5*X2
- SX2 X5-BATS
- NZ X2,PBS2 IF NOT BATCH SUBSYSTEM
- SX1 PBUF COMMAND BUFFER WITHOUT *$* PREFIX
- PBS2 RJ PCB PACK COMMAND
- SA1 PBUF
- BX7 X1 SET *EPN*
- EQ BJB BEGIN JOB
- RDY SPACE 4
- ** RDY - ISSUES READY MESSAGE AND RETURNS TO PCS
- *
- * (A0) = TERMINAL TABLE ADDRESS.
- * (B2) = TERMINAL NUMBER.
- * (B3) = POT POINTER OR 0.
- RDY BSS 0
- IFNET /IAFEX4/RDY IF NETWORK TERMINAL
- SA1 A0+VSTT SET SUBSYSTEM
- SA2 A0+VDCT CHECK TAPE MODE
- LX2 59-48
- MX6 -3
- LX1 -12
- BX6 -X6*X1 EXTRACT CURRENT SUBSYSTEM
- SX6 RDYA+X6 SELECT MESSAGE
- PL X2,PCS5 ISSUE MESSAGE IF NOT TAPE MODE
- SX6 =2L ISSUE NULL MESSAGE
- EQ PCS5 ISSUE MESSAGE
- PCS TITLE PCS - PROCESS QUEUE ENTRY.
- PCS SPACE 4
- ** PCS - PROCESS QUEUE ENTRY.
- *
- * SAVES PARAMETERS AND RETURN ADDRESS AND THEN EXECUTES STACK
- * ENTRY.
- *
- * ENTRY (X5) = REENTRY STACK ENTRY.
- * (B7) = ADDRESS OF PROCESSING ROUTINE.
- *
- * CALLS PROCESSING ROUTINE:
- * (B2) = STACK ENTRY BITS 00-11 (TERMINAL NUMBER).
- * (B3) = STACK ENTRY BITS 12-23 (POT POINTER).
- * (B4) = POT ADDRESS.
- * (X7) = STACK ENTRY BITS 24-47, RIGHT JUSTIFIED.
- ** PCS5 - EXIT TO ASSIGN MESSAGE.
- *
- * LENGTH IS ASSUMED TO BE 7 OR LESS CM WORDS AND
- * TERMINATES WITH A ZERO BYTE.
- *
- * MESSAGE IS 7 OR LESS WORDS IN LENGTH AND IS TERMINATED
- * BY LINE TERMINATOR OR CONTROL BYTE.
- *
- * ENTRY-
- * (B7) = ADDRESS OF PROCESSING ROUTINE
- * (X5) = STACK ENTRY
- ** ENTER- WITH PARAMETERS FOR MVA.
- PCS5 SB4 0 SET LENGTH
- ** PCS6 - EXIT TO ASSIGN MESSAGE.
- *
- * ENTRY (B4) = MESSAGE LENGTH IN CM WORDS.
- PCS6 RJ MVA ISSUE MESSAGE
- PCS SUBR ENTRY/EXIT
- BX7 X5
- SA7 SSPA
- RJ SSP SET PARAMETERS
- JP B7
- ** PCS1 - EXIT TO MAKE QUEUE ENTRY.
- *
- * ENTRY (A0) = TERMINAL TABLE ADDRESS.
- * (X5) = TRRT ORDER CODE.
- * (X7) = QUEUE ENTRY BITS 24-47.
- * (B2) = TERMINAL NUMBER.
- * (B3) = QUEUE ENTRY BITS 12-23.
- *
- * EXIT QUEUE ENTRY MADE.
- * VROT BIT ZERO CLEARED (BUSY) FOR ITAQ OR ITOQ
- * REQUEST.
- PCS1 BSS 0
- SA1 TRRT-2000B+X5
- SB7 B0
- AX1 54
- ZR X1,PCS3 IF FOR NO QUEUE
- SB7 TRQT+X1
- PCS3 LX5 48
- MX6 -24
- BX7 -X6*X7
- LX7 24
- BX5 X5+X7
- MX6 -12
- SX7 B3
- BX7 -X6*X7
- LX7 12
- BX5 X5+X7
- RJ MQE MAKE ENTRY IN REENTRY TABLE
- NZ X2,PCSX IF NOT CURRENT ENTRY
- SB6 B7-ITAQ
- SB7 B7-ITOQ
- ZR B6,PCS4 IF 1TA CALL
- NZ B7,PCSX IF NOT 1TO OR 1TA CALL
- PCS4 SA1 A0+VROT SET TERMINAL TABLE BUSY FOR 1TA AND 1TO
- MX2 59
- BX6 X1*X2
- SA6 A1 REWRITE VROT
- EQ PCSX RETURN TO CALLING ROUTINE
- TITLE PMQ - PROCESS MONITOR WAIT QUEUE.
- ** PMQ - PROCESS MONITOR WAIT QUEUE.
- *
- * RETURNS CONTROL TO THE ROUTINE WHICH MADE THE MONITOR
- * REQUEST WHEN THE COMPLETE BIT IN THE PARAMETER BLOCK
- * IS SET.
- *
- * USES X - 1, 2, 3, 4, 5, 6, 7.
- * A - 0, 1, 2, 4, 5, 6, 7.
- * B - 3, 5, 6, 7,
- *
- * CALLS GQE, GRT, PCS, SSP, UQS.
- *
- * MACROS TTADD.
- PMQ SUBR ENTRY/EXIT
- SA4 MNWQ CHECK QUEUE CONTENTS
- SX7 X4
- SA2 A4+B1
- ZR X7,PMQX IF QUEUE EMPTY
- SA1 RTIM CHECK TIME SINCE QUEUE PROCESSED
- SX3 MWQT
- IX2 X1-X2
- IX2 X3-X2
- PL X2,PMQX IF TIME DELAY NOT COMPLETE
- BX6 X1 UPDATE PROCESSING TIME
- SA6 A2
- * SET QUEUE PROCESSING POINTERS.
- SA7 PMQA LAST TERMINAL OF QUEUE
- AX4 18 FIRST TERMINAL OF QUEUE
- BX7 X7-X7
- SX6 X4
- SB5 B0
- SA6 A7+B1 NEXT TERMINAL = FIRST TERMINAL
- SA7 A6+B1 CLEAR TERMINAL LINK
- * ADVANCE TO NEXT TERMINAL.
- PMQ1 SA1 PMQA LAST TERMINAL IN QUEUE
- SX7 B5
- IX4 X1-X7
- ZR X4,PMQX IF LAST TERMINAL CHECKED
- SA5 A1+B1 NEXT TERMINAL
- SB5 X5
- ZR X5,PMQX IF NO NEXT TERMINAL
- RJ GRT READ QUEUE ENTRY
- ZR X4,PMQX IF NO QUEUE ENTRY
- MX5 -12 SET NEXT TERMINAL NUMBER
- BX7 -X5*X4
- TTADD B5,A0,X1,X2
- SA7 A5
- * CHECK PARAMETER BLOCK STATUS.
- AX4 12
- BX2 -X5*X4
- LX2 3
- TA1 X2,VBMP
- LX1 59-0
- NG X1,PMQ2 IF REQUEST COMPLETE
- SX7 B5 RETAIN TERMINAL IN QUEUE
- SA7 A7+B1
- EQ PMQ1 ADVANCE TO NEXT TERMINAL
- * PROCESS COMPLETED ENTRY.
- PMQ2 SA1 PMQC GET LINK TO CURRENT TERMINAL
- SB6 MNWQ
- SB7 X1
- RJ GQE GET QUEUE ENTRY
- UX4,B7 X5
- SA2 TRRT+B7
- SB7 X2
- RJ PCS PROCESS FUNCTION
- RJ SSP RESET PARAMETERS
- RJ UQS UPDATE QUEUE STACK
- RJ SSP RESET PARAMETERS
- SB5 B2 SET CURRENT TERMINAL NUMBER
- EQ PMQ1 ADVANCE TO NEXT QUEUE ENTRY
- PMQA CON 0 LAST TERMINAL IN QUEUE
- PMQB CON 0 NEXT TERMINAL IN QUEUE
- PMQC CON 0 TERMINAL LINKED TO CURRENT TERMINAL
- PPU TITLE PPU - PROCESS PPU REQUESTS.
- PPU SPACE 4
- ** PPU - PROCESSES ALL *IAFEX* REQUESTS THAT REQUIRE A PPU
- * TO BE ASSIGNED. THESE REQUESTS ARE TAKEN FROM *IAFEX,S*
- * INTERNAL QUEUE, ORDERED APPROPRIATELY, AND PLACED INTO POT
- * QUEUES FOR THE VARIOUS PPU PROGRAMS.
- * POST PROCESS *1TA* REQUESTS.
- PPU SUBR ENTRY/EXIT
- SA1 PITA
- ZR X1,PPU2 IF *1TA* ACTIVE
- BX2 X1
- AX1 36
- NZ X1,PPU2 IF REQUEST NOT MADE YET
- MX1 -12
- BX3 -X1*X2
- AX2 12
- SX1 X2
- ZR X1,PPU1 IF POST PROCESSING DONE
- SX6 B1 SET COMPLETION
- SA6 A1
- SB3 X3 DROP POTS
- SB4 B0
- RJ DPT
- * PROCESS *1TA* REQUEST QUEUE.
- PPU1 SA1 ITAQ CHECK IF REQUESTS WAITING
- UX2,B2 X1
- ZR B2,PPU2 IF NO REQUESTS
- SA3 PPUA+1 CHECK IF REQUEST HAS WAITED 1/2 SECOND
- SA2 RTIM
- IX4 X2-X3
- AX4 9
- ZR X4,PPU2 IF TIME NOT ELASPED
- BX6 X2
- SA6 A3
- SX0 A1 SORT AND BUILD REQUEST QUEUE FOR *1TA*
- RJ BRQ
- ZR X6,PPU2 IF NO REQUEST QUEUE GENERATED
- SA1 PPUA
- BX7 X1+X6
- SA7 PITA
- SA7 PPUC SAVE *1TA* REQUEST FOR DEBUG
- * POST PROCESS *1TO* REQUESTS.
- PPU2 SA1 PITO
- BX2 X1
- AX1 36
- NZ X1,PPUX IF REQUEST NOT MADE YET
- ZR X2,PPUX IF *1TO* ACTIVE
- AX2 24
- ZR X2,PPU7 IF POST PROCESSING DONE
- LX2 3
- TX1 X2+VCPC,VBMP SET LWA+1 OF POT
- LX2 33
- SX3 X1-VCPC SET FWA OF POT
- LX1 18
- BX2 X2+X3
- BX6 X2+X1
- SA6 PPUB+1
- PPU3 SA1 PPUB+1 GET NEXT ENTRY TO PROCESS
- MX2 24
- SA5 X1
- BX3 X2*X1
- ZR X5,PPU6 IF LAST ENTRY
- SX6 B1
- ZR X3,PPU6 IF END OF POT CHAIN
- IX6 X1+X6
- AX1 18
- BX2 X1-X6
- SX3 X2
- NZ X3,PPU4 IF NOT END OF POT
- AX1 18 GET POT LINK
- SB3 X1
- RJ GPL
- SX4 B3
- SX7 B4+VCPC
- LX4 36
- SX6 B4
- LX7 18
- BX6 X6+X4
- BX6 X6+X7
- * THE FORMAT OF THE *1TO* REQUEST UPON RETURN FROM *1TO* IS
- *
- *T 6/ RT,6/ NP,12/ 0,12/ LP,12/ FP,12/ TN
- *
- * IF INPUT WAS DUMPED TO THE PRIMARY FILE,
- * (RT) = 0, INPUT REQUEST.
- * (NP) = 0.
- * (LP) = LAST POT TO DROP.
- * (FP) = FIRST POT TO DROP.
- * (TN) = TERMINAL NUMBER.
- *
- * IF OUTPUT WAS REQUESTED FROM THE PRIMARY OR ROLLOUT FILE,
- * (RT) = 1, OUTPUT REQUEST.
- * (NP) = NUMBER OF POTS CONTAINING OUTPUT.
- * (LP) = LAST POT CONTAINING OUTPUT.
- * (FP) = FIRST POT CONTAINING OUTPUT.
- * (TN) = TERMINAL NUMBER.
- *
- * IF OUTPUT WAS REQUESTED, A *VASO* QUEUE ENTRY WILL
- * BE GENERATED TO ASSIGN THE DATA TO THE TERMINAL. IF
- * INPUT WAS DUMPED TO THE PRIMARY FILE, A *VDPO* QUEUE
- * ENTRY WILL BE FORMED TO DROP THE EMPTY POTS.
- PPU4 SA6 A1
- MX4 -42 MASK IF *VASO*
- BX3 X5
- MX1 -12
- AX5 48
- BX1 -X1*X3 EXTRACT TERMINAL NUMBER
- SB2 X1+
- SX2 VASO SET TO ASSIGN OUTPUT
- NZ X5,PPU5 IF OUTPUT REQUEST
- SX2 VDPO SET TO DROP POTS
- MX6 12
- MX4 -36 MASK IF *VDPO*
- LX6 24
- BX6 X6*X3
- ZR X6,PPU3 IF NO POTS TO DROP
- PPU5 SA1 TSTR-2000B+X2
- LX5 36 MOVE POT COUNT FOR *VADO*
- BX3 X3+X5
- BX5 -X4*X3
- LX2 48
- BX5 X5+X2
- SB7 X1
- RJ PCS
- EQ PPU3
- PPU6 BX6 X6-X6
- SA6 A1
- SA2 PITO DROP POTS
- SX7 B1
- AX2 24
- SA7 A2
- SB3 X2
- SB4 B0
- RJ DPT
- * PROCESS *1TO* REQUEST QUEUE.
- PPU7 SA1 ITOQ
- UX2 X1,B2
- ZR B2,PPUX IF NO ENTRIES
- SX0 A1
- RJ BRQ
- ZR X6,PPUX IF NO REQUEST QUEUE GENERATED
- SA1 PPUB
- LX6 24
- BX7 X1+X6
- SA7 PITO
- SA7 PPUC+1 SAVE *1TO* REQUEST FOR DEBUG
- EQ PPUX EXIT
- PPUA VFD 18/3R1TA,6/0,6/0,18/PITA,12/0
- CON 0 TIME OF LAST 1TA REQUEST
- PPUB VFD 18/3R1TO,6/0,12/0,6/0,18/PITO
- CON 0 NEXT ENTRY TO POSTPROCESS
- PPUC CON 0 LAST *1TA* REQUEST
- CON 0 LAST *1TO* REQUEST
- RPC SPACE 4,30
- ** RPC - REFILL POT CHAINS.
- *
- * FOR EACH *TGPM* QUEUE, *RPC* GETS QUEUE POINTERS FROM THE
- * QUEUE STATUS WORDS AND PASSES THEM TO ROUTINE *FPQ* TO FILL
- * THE QUEUE WITH POT CHAINS. THE QUEUE STATUS WORDS ARE
- * UPDATED AFTER EACH QUEUE HAS BEEN FILLED.
- *
- * ENTRY (VGPL) = *TGPM* QUEUE STATUS WORDS.
- * 6/PCL,6/PCC,12/PFP,12/NFP,12/BOQ,12/EOQ.
- * PCL = POT CHAIN LENGTH.
- * PCC = POT CHAIN COUNT(CONTROL VALUE).
- * PFP = PREVIOUS FILL POINTER.
- * NFP = NEXT FILL POINTER.
- * BOQ = BEGINNING OF QUEUE.
- * EOQ = END OF QUEUE.
- *
- * EXIT IF ENOUGH FIELD LENGTH WAS AVAILABLE, THE *TGPM*
- * QUEUES HAVE BEEN FILLED TO THEIR CONTROL VALUES.
- * IF NOT ENOUGH FIELD LENGTH WAS AVAILABLE, AS MANY
- * ENTRIES AS POSSIBLE WERE FILLED WITH POT CHAINS.
- * PCC, PFP, AND NFP IN *VGPL* WORDS HAVE BEEN UPDATED.
- *
- * USES A - 1, 2, 6.
- * X - 0, 1, 2, 3, 4, 6.
- * B - 2, 3, 4, 5.
- *
- * CALLS FPQ.
- RPC SUBR ENTRY/EXIT
- SX6 VGPL SAVE STATUS WORD ADDRESS
- RPC1 SA6 RPCA
- SA1 X6
- BX2 X1 GET POINTERS FROM *VGPL* WORD
- AX2 24
- MX3 -12
- BX4 -X3*X2
- SB3 X4 (B3) = NEXT FILL POINTER
- AX2 12
- BX4 -X3*X2
- SB4 X4 (B4) = PREVIOUS FILL POINTER
- AX2 12
- MX3 -6
- BX4 -X3*X2
- SB5 X4 (B5) = POT CHAIN COUNT(CONTROL VALUE)
- AX2 6
- BX4 -X3*X2
- SB2 X4 (B2) = LENGTH OF POT CHAIN FOR THIS QUEUE
- RJ FPQ FILL POT QUEUE
- SA2 RPCA UPDATE QUEUE STATUS WORD
- SA1 X2
- MX3 30 CLEAR OLD POINTERS
- LX3 24
- BX6 X3*X1
- SX3 B5 INSERT UPDATED CHAIN COUNT
- LX3 48
- BX6 X6+X3
- LX4 36 INSERT UPDATED PREVIOUS FILL POINTER
- BX6 X6+X4
- LX0 24 INSERT UPDATED NEXT FILL POINTER
- BX6 X6+X0
- SA6 X2 REWRITE *TGPM* QUEUE STATUS WORD
- SX2 X2+B1
- BX6 X2
- SX3 X2-VGPE
- NG X3,RPC1 IF NOT LAST QUEUE STATUS WORD
- EQ RPCX EXIT
- RPCA CON 0 ADDRESS OF *TGPM* QUEUE STATUS WORDS
- SPR TITLE SPR - SET FIELD LENGTH.
- SPR SPACE 4,20
- ** SPR - EVALUATE AND ADJUST FIELD LENGTH.
- *
- * INCREASE EVALUATION IS DONE EACH TIME *SPR* IS ENTERED.
- * FIELD LENGTH INCREASES ARE PROCESSED BY A CALL TO *1TA*.
- * A THROTTLE FLAG IS USED TO SLOW DOWN THE USAGE OF POTS
- * SO IAF WILL NOT RUN OUT OF POTS BEFORE *1TA* GETS THE
- * FIELD LENGTH INCREMENT.
- *
- * FIELD LENGTH DECREASE EVALUATION IS PERFORMED AFTER THE
- * INTERVAL TIME HAS ELAPSED. THE TIME CYCLE IS DETERMINED
- * DYNAMICALLY ACCORDING TO THE AMOUNT OF FIELD LENGTH
- * VARIATION. MEMORY DECREASES ARE MADE BY THE SYSTEM
- * *MEMORY* MACRO.
- *
- * THE INITIAL RESET START TIME IS SET TO 6 MINUTES TO
- * ALLOW IAF TO PERFORM JOB RECOVERY.
- SPR9 SA7 VPAL RESET TOTAL POTS AVAILABLE
- BX6 X2
- SA6 SPRK RESTORE CURRENT FL IN USE
- SX6 3RSPR
- NG X7,ABT+1 IF POTS AVAILABLE GOES NEGATIVE
- MEMORY CM,,,X2 RELEASE MEMORY
- SA1 SPRL COUNT MEMORY DECREASE
- SX6 X1+B1
- SA6 A1
- SPR SUBR ENTRY/EXIT
- SA1 VCPL
- NZ X1,SPRX IF FL INCREASE REQUEST PENDING
- * CHECK FOR FL INCREASE.
- SA4 VPAL TOTAL POTS AVAILABLE
- SA1 VPUL POTS IN USE
- IX3 X4-X1 FREE POTS
- SX6 X3-VMIP-VFLI/VCPC
- SX7 B0
- SA1 SPRM CLEAR THROTTLE FLAG
- SA7 A1
- SB3 X1 SAVE FLAG VALUE
- SX1 VFLI GET FIELD LENGTH INCREMENT
- SA5 VPLP PLT POINTERS
- BX2 X4
- LX2 3
- TX2 X2,VBMP OLD FL
- IX2 X2+X1 NEW FL
- NG X6,SPR4 IF MORE POTS NEEDED
- NZ B3,SPR4 IF THROTTLE FLAG SET
- * AFTER A RESET INTERVAL HAS ELAPSED RESET THE TIME INTERVAL.
- * EXIT IF A TIME INTERVAL HAS NOT ELAPSED.
- SA1 STIM CURRENT TIME
- BX6 X1
- SA1 SPRD RESET START
- SX2 RESTO RESET INTERVAL
- IX2 X1+X2 RESET START + RESET INTERVAL
- IX7 X6-X2 CURRENT TIME - RESET TIME
- SA1 SPRJ
- SA2 SPRC
- NG X7,SPR1 IF NOT TIME TO RESET
- SA6 SPRD RESET START
- SX7 MINDL SET INTERVAL TIME
- SA7 A1
- SPR1 IX2 X1+X2 CHECK TIME INTERVAL
- IX1 X6-X2
- NG X1,SPRX IF TIME INTERVAL NOT ELAPSED
- SA6 A2 SET LAST EVALUATION
- * CHECK RESULTS OF PREVIOUS FIELD LENGTH EVALUATION.
- SA1 SPRE
- SA2 SPRG
- NZ X1,SPR6 IF FL INCREASES NON-ZERO
- NZ X2,SPR6 IF LAST FL SEGMENT USED
- * CHECK IF FL DECREASE POSSIBLE.
- SX2 VFLR FL DECREMENT POT COUNT
- IX1 X2-X3
- PL X1,SPRX IF FL DECREASE NOT POSSIBLE
- SX6 B0 CLEAR DAYFILE MESSAGE COUNT
- SA6 SPRN
- * CALCULATE NEW FIELD LENGTH NEEDED FOR DECREASE.
- BX1 -X1 COMPLEMENT FL
- AX1 5 PLT WORDS ROUNDED TO NEAREST VFLI
- LX1 8 REQUIRED FL FOR DECREASE
- ZR X1,SPRX IF LESS THAN ONE VFLI MULTIPLE
- BX1 -X1 COMPLEMENT FL
- SA3 VPAL ALLOCATED POTS
- LX3 3
- TX3 X3,VBMP OLD FL
- IX2 X3+X1 OLD FL - MIN DECREASE
- SA3 X5 LWA+1 OF PLT
- SPR2 SA3 A3-B1
- ZR X3,SPR2 IF POTS NOT ALLOCATED
- SX3 A3+B1 HIGHEST PLT WORD+1
- SB2 24
- AX7 X5,B2
- SX7 X7 SET FWA OF PLT
- IX6 X3-X7 FREE LWA+1 - FWA
- LX6 5 NUMBER OF PLT WORDS * 32
- TX6 X6,VBMP MIN FL NEEDED FOR PLT LINKS ACTIVE
- SX7 X6+VCPC HIGHEST POT ADDR+8
- IX6 X7-X2
- PL X6,SPRX IF CANNOT DECREASE
- SA6 SPRH
- * DETERMINE NEW PLT LENGTH AND LWA.
- SPR4 AX1 3 NUMBER OF POTS TO ADD OR DROP
- IX7 X4+X1 NEW POTS COUNT
- AX1 2 GET NEW PLT LENGTH
- IX6 X1+X5
- AX5 24 CHECK FOR PLT OVERFLOW
- SB2 X5 SET PLT FWA
- SB3 X6 SET PLT LWA+1
- AX5 24
- SB4 X5 SET PLT LENGTH
- SB3 B3-B2
- GT B3,B4,SPR7 IF INCREASE NOT POSSIBLE
- SA6 A5
- SX2 X2+77B ROUND UP FL
- NG X1,SPR9 IF FL DECREASE
- * PROCESS MEMORY INCREASE.
- SA3 SPRB COUNT FL INCREASE
- SX6 X3+B1
- SA6 A3
- SA6 SPRE SET FL INCREASE FLAG
- SA3 SPRA DETERMINE IF NEW MAXIMUM FL
- SA7 VCPL SET FL INCREASE IN PROGRESS
- SA4 SPRI READ *1TA* REQUEST
- IX1 X3-X2 MAXIMUM FL - REQUIRED FL
- BX6 X2
- SA6 SPRK RESET CURRENT FL IN USE
- BX7 X4+X2 COMPLETE *1TA* REQUEST
- PL X1,SPR5 IF NOT NEW MAXIMUM
- SA6 A3 SET NEW MAXIMUM FL
- SPR5 SA7 PMSG
- EQ SPRX RETURN
- * MAKE NO FIELD LENGTH CHANGE IF INCRESES HAVE OCCURRED
- * THIS PERIOD OR IF NOT ENOUGH FIELD LENGHT REMAINS.
- * RESET INCREASE FLAG AND LAST SEGMENT USED FLAG. SET
- * MAXIMUM INTERVAL STATISTIC AND INCREMENT INTERVAL TIME
- * IF NECESSARY.
- SPR6 BX6 X6-X6
- SA6 A1 RESET FL INCREASE FLAG
- SA6 A2+
- SA3 SPRH
- ZR X3,SPRX IF REDUCE FLAG NOT SET
- SA6 A3 RESET REDUCE FLAG
- SA1 SPRJ INTERVAL TIME
- SX2 X1-MAXDL
- PL X2,SPRX IF INTERVAL TIME .GE. HIGH INTERVAL
- SX7 X1+INCTO
- SA7 A1
- SA1 SPRF MAXIMUM INTERVAL TIME
- IX1 X1-X7
- PL X1,SPRX IF INTERVAL TIME .LE. MAXIMUM INTERVAL
- SA7 A1+
- EQ SPRX RETURN
- * ISSUE DAYFILE MESSAGE.
- SPR7 SA3 SPRN INCREMENT DAYFILE MESSAGE COUNT
- SX6 X3+B1
- SA6 A3
- NZ X3,SPRX IF MESSAGE HAS BEEN ISSUED
- MESSAGE (=C* PLT INCREASE NOT POSSIBLE.*)
- EQ SPRX RETURN
- * PARAMETERS FOR FIELD LENGTH EVALUATION.
- SPRA CON 0 MAXIMUM FL USED
- SPRB CON 0 NUMBER OF FL INCREASES
- SPRC CON 0 LAST EVALUATION
- SPRD CON 360D RESET START - SECONDS
- SPRE CON 0 FL INCREASES FLAG
- SPRF CON 0 MAXIMUM INTERVAL TIME
- SPRG CON 0 LAST SEGMENT USED FLAG
- SPRH CON 0 REDUCE FLAG
- SPRI VFD 18/3R1TA,6/0,12/4001B,24/0
- SPRJ CON MINDL INTERVAL TIME
- SPRK CON 0 CURRENT FL IN USE
- SPRL CON 0 NUMBER OF FL DECREASES
- SPRM CON 0 THROTTLE FLAG
- SPRN CON 0 DAYFILE MESSAGE COUNT
- TDQ TITLE TDQ - PROCESS TIME DELAY QUEUE.
- TDQ SPACE 4
- ** TDQ - PROCESS TIME DELAY QUEUE.
- TDQ SUBR ENTRY/EXIT
- SA2 STIM
- SA3 TIMQ+1
- IX3 X2-X3 ELASPED TIME
- ZR X3,TDQX IF TIME DELAY NOT EXCEEDED
- BX6 X2 SAVE NEW TIME
- SA6 A3
- SA4 A3-B1
- UX0 X4,B2
- AX0 18
- TDQ1 ZR X0,TDQX IF NO MORE ENTRIES
- SB7 B5 SET PREVIOUS TERMINAL NUMBER
- SB5 X0
- MX5 -24
- BX2 -X5*X2
- RJ GRT GET ENTRY
- SB2 B5 SET TERMINAL NUMBER
- IFMUX TDQ2
- TA1 B5,VMST
- LX1 59-48
- PL X1,TDQ3 IF TIMEOUT FLAG CLEAR
- TDQ2 MX6 -12
- BX0 -X6*X4
- AX4 24
- BX4 -X5*X4
- IX4 X4-X2 RESTART TIME - REAL TIME
- PL X4,TDQ1 IF TIME DELAY NOT PASSED
- TDQ3 SX0 B5 SAVE LAST TERMINAL PROCESSED
- SB6 TIMQ
- RJ GQE GET ENTRY FROM QUEUE
- SX1 B2
- SX6 B5 SAVE CURRENT TERMINAL NUMBER
- SB2 X0 SET LAST TERMINAL PROCESSED
- LX6 18
- BX0 X1+X6
- RJ UQS UPDATE QUEUE STACK
- SA2 STIM
- BX1 X0 RESET NEXT TERMINAL NUMBER
- SX0 X0
- AX1 18 SET TERMINAL NUMBER JUST COMPLETED
- SB5 X1
- EQ TDQ1
- TITLE TSR - CHECK FOR COMPLETION AND INITIATE NEXT OPERATION.
- TSR SPACE 4,20
- ** TSR - PROCESS WAIT-COMPLETION QUEUE.
- *
- * EXECUTES THE NEXT OPERATION FOR TERMINALS IN THE
- * WAIT-COMPLETION QUEUE WHO MEET ONE OF THE FOLLOWING
- * CRITERIA -
- *
- * (A) THE PREVIOUS OPERATION IS COMPLETE.
- * (B) THE QUEUE ENTRY IS A WAIT-DRIVER (DCR1$)
- * QUEUE ENTRY.
- * (C) THE QUEUE ENTRY IS A STATUS (STA$) QUEUE
- * ENTRY.
- *
- * EXIT QUEUE ENTRIES PROCESSED VIA *PCS*.
- *
- * USES A - 0, 1, 2, 4, 5, 6, 7.
- * X - 1, 2, 3, 4, 5, 6, 7.
- * B - 3, 5, 6, 7.
- *
- * CALLS GRT, GQE, PCS, SSP, UQS.
- *
- * MACROS TTADD.
- TSR SUBR ENTRY/EXIT
- SA1 RTIM GET REAL TIME
- SA2 WCMQ+1 TIME QUEUE LAST PROCESSED
- SX3 WCQT QUEUE TIME DELAY
- IX2 X1-X2 ELAPSED TIME
- IX2 X3-X2
- PL X2,TSRX IF TIME DELAY NOT UP, RETURN
- * SET QUEUE PROCESSING POINTERS.
- BX6 X1 UPDATE PROCESSING TIME
- SA4 A2-B1 READ QUEUE POINTER
- SA6 A2
- SX7 X4 LAST TERMINAL OF QUEUE
- ZR X7,TSRX IF QUEUE EMPTY, RETURN
- SA7 TSRA
- AX4 18 FIRST TERMINAL OF QUEUE
- BX7 X7-X7
- SX6 X4
- SB5 B0+ CLEAR CURRENT TERMINAL NUMBER
- SA6 A7+B1 SET NEXT TERMINAL = FIRST TERMINAL
- SA7 A6+B1 CLEAR TERMINAL LINK
- * ADVANCE TO NEXT TERMINAL.
- TSR1 SA1 TSRA LAST TERMINAL OF QUEUE
- SX7 B5 CURRENT TERMINAL
- IX4 X1-X7
- ZR X4,TSRX IF LAST TERMINAL CHECKED, RETURN
- SA5 TSRB NEXT TERMINAL
- ZR X5,TSRX IF NO NEXT TERMINAL, RETURN
- SB5 X5+ SET NEW CURRENT TERMINAL
- * GET TERMINAL QUEUE ENTRY.
- RJ GRT READ QUEUE ENTRY
- ZR X4,TSRX IF NO QUEUE ENTRY, RETURN
- MX1 -12 SET NEXT TERMINAL NUMBER
- BX7 -X1*X4
- * CHECK TERMINAL STATUS.
- TTADD B5,A0,X1,X2 SET TERMINAL TABLE ADDRESS
- SA7 TSRB
- SA1 A0+VDCT READ VDCT ENTRY
- MX2 2
- AX4 48 CHECK QUEUE ENTRY
- BX3 X2*X1
- NZ X3,TSR2 IF DRIVER REQUEST OR INTERRUPT
- SX1 X4-DCR2$
- SX2 X4-DCR3$
- ZR X1,TSR3 IF DRIVER REQUEST WAIT
- SX3 X4-STA$
- ZR X2,TSR3 IF WAIT-DRIVER QUEUE ENTRY
- ZR X3,TSR3 IF STA$ QUEUE ENTRY
- SX2 X4-CJA$
- ZR X2,TSR3 IF CLEARING REENTRY QUEUE
- SA1 A0+VROT READ VROT ENTRY
- LX1 59-0
- NG X1,TSR3 IF OPERATION COMPLETE
- TSR2 SX7 B5 SET TERMINAL AS LINKED
- SA7 A7+B1
- EQ TSR1 ADVANCE TO NEXT TERMINAL
- * PROCESS QUEUE ENTRY.
- TSR3 SA1 TSRC GET LINK TO CURRENT TERMINAL
- SB6 WCMQ INDICATE QUEUE
- SB7 X1
- RJ GQE GET ENTRY FROM QUEUE
- SA1 A0+VROT READ OPERATION STATUS
- UX4,B3 X5 UNPACK QUEUE ENTRY
- LX1 59-11
- SA2 TRRT+B3 READ REENTRY POINTER WORD
- PL X1,TSR4 IF NO ERROR FLAG
- MX6 -59 CLEAR ERROR FLAG
- BX6 -X6*X1
- LX6 11-59
- AX2 18 SET ERROR PROCESSOR ADDRESS
- SA6 A1+ REWRITE VROT ENTRY
- TSR4 SB7 X2 SET *PCS* PROCESSOR ADDRESS
- RJ PCS PROCESS QUEUE ENTRY
- RJ SSP
- RJ UQS UPDATE QUEUE STACK
- RJ SSP
- SB5 B2 SET CURRENT TERMINAL NUMBER
- EQ TSR1 ADVANCE TO NEXT TERMINAL
- TSRA CON 0 LAST TERMINAL OF QUEUE
- TSRB CON 0 NEXT TERMINAL TO PROCESS
- TSRC CON 0 TERMINAL LINKED TO CURRENT TERMINAL
- TRRT SPACE 4
- ** TRRT - TABLE OF REENTRY ROUTINES PARAMETERS.
- * THIS TABLE OF CONSISTS OF ENTRIES THAT DIRECT FURTHER
- * PROCESSING BASED ON ENTRIES FROM THE REENTRY TABLE AND
- * ON CERTAIN ACTIONS BEING COMPLETED.
- *
- * THE FORMAT OF THE TABLE IS AS FOLLOWS
- * XXYY ZZZZ EEEE EENN NNNN - WHERE
- * XX = INDEX TO TRQT (TABLE OF PPU REQUESTS.)
- * IF XX = 0, NO RESOURCE REQUIREMENTS EXCEPT FOR
- * POSSIBLE A PERIPHERAL PROCESSOR.
- * YY = FUNCTION CODE FOR CALLED PROGRAM.
- * ZZZZ = FUNCTION PROCESSING ADDRESS RELATIVE TO TSRPROC
- * EEEEEE = ERROR RETURN ADDRESS.
- * NNNNNN = NORMAL RETURN ADDRESS.
- TRRT BSS 0
- LOC 2000B
- COMMND APS1,WCMQ,APS1
- COMMND ASO2,WCMQ,ASO2
- COMMND CJA,WCMQ,CJA5
- COMMND DCR2,WCMQ,DCR2
- COMMND DCR3,WCMQ,DCR3
- COMMND DIN1,WCMQ,DIN1
- COMMND DTJ3,WCMQ,DTJ3
- COMMND ETX1,WCMQ,ETX1
- COMMND FLO4,WCMQ,FLO4
- COMMND ETX2,WCMQ,ETX2
- COMMND ETX4,WCMQ,ETX4
- COMMND FTP,WCMQ,FTP
- COMMND FTP3,WCMQ,FTP3
- COMMND HNG,WCMQ,HNG
- COMMND HUP2,WCMQ,HUP2
- COMMND IAM3,ITAQ,,,3
- COMMND ICH,ITOQ
- COMMND INP,,INP
- COMMND ITA2,ITAQ,LIN6,LIN14,2
- COMMND ITA3,ITAQ,URL8,URL12,4
- COMMND ITA4,ITAQ,CRR1,CRR,2
- COMMND ITA1,ITAQ,,,5
- COMMND ITO,ITOQ
- COMMND ITO1,ITOQ
- COMMND LIN1,WCMQ,LIN1
- COMMND LIS8,WCMQ,LIS8
- COMMND PCM1,WCMQ,PCM1
- COMMND PCM2,WCMQ,PCM2
- COMMND PMR2,MNWQ,PMR2
- COMMND PMR4,MNWQ,PMR4
- COMMND PUB4,WCMQ,PUB4
- COMMND PUB8,WCMQ,PUB8
- COMMND RDJ1,WCMQ,RDJ1
- COMMND RIN,WCMQ,DRT
- COMMND STA,WCMQ,STA5
- COMMND TOT,TIMQ,TOT
- BSS 0
- LOC *O
- TRRTL EQU *-TRRT
- TITLE TSR - SUBROUTINES.
- TSRPROC BSS 0
- TSA SPACE 4
- ** TSR ABORT.
- TSA BSS 0
- SX6 3RTSR
- EQ ABT+1
- DCR SPACE 4
- ** DCR - DRIVER COMMAND REQUESTS
- *
- * ENTRY (X2) = COMMAND NUMBER.
- * (X7) = RETURN ADDRESS.
- *
- * SEE SSP.
- DCR BSS 0
- SA1 A0+VSTT
- LX1 59-58
- NG X1,IGN IF USER BREAK IN PROGRESS
- DCR1 SA1 A0+VDCT
- SX3 X2+
- MX0 -12
- LX3 18
- SX5 DCR2$ SET REENTRY
- BX0 -X0*X1 CHECK FOR QUEUED OUTPUT
- BX7 X7+X3
- NZ X0,PCS1 IF QUEUED OUTPUT
- RJ EDR ENTER DRIVER REQUEST
- SX5 DCR3$ ENTER REQUEST QUEUE
- EQ PCS1
- DCR2 BX2 X7 RESTORE REQUEST CODE
- AX2 18
- EQ DCR1 PROCESS REQUEST
- DCR3 SA1 A0+VDCT CHECK DRIVER REQUEST
- SX5 DCR3$
- MX2 -12
- BX2 -X2*X1
- NZ X2,PCS1 IF NOT YET PROCESSED
- SB7 X7 GET RETURN ADDRESS
- JP B7 RETURN
- HNG SPACE 4
- * HNG - REQUESTS DRIVER TO HANG UP PHONE WHEN LAST MESSAGE HAS
- * BEEN ACCEPTED BY DRIVER.
- HNG BSS 0
- RJ RDC READ VDCT
- SA2 A0+VSTT
- MX6 -12
- BX3 -X6*X2
- ZR X3,HNG1 IF NO MESSAGE QUEUED IN VSTT
- SX5 HNG$
- IFNET PCS1
- BX6 X6*X2
- SA6 A2 UPDATE VSTT
- BX6 X1+X3
- SX3 B1+B1 TELL DRIVER TO START AT WORD TWO
- LX3 36-0
- BX6 X6+X3
- SA6 A1 PUT MESSAGE IN VDCT
- RJ RDC WAIT FOR MESSAGE TO BE TAKEN BY DRIVER
- HNG1 SX2 /1TD/HUP
- RJ EDR ENTER DRIVER REQUEST
- RJ CDP CLEAR DETACH IN PROGRESS
- * CLEAR OUTPUT AVAILABLE, INPUT REQUESTED, AND JOB CONTINUATION
- * SO THAT THESE WILL NOT GET RESTARTED BY *RES*.
- SA1 A0+VROT
- SX6 34B
- BX6 -X6*X1
- SA6 A1 REWRITE VROT
- IFNET PCSX
- * DECREMENT ACTIVE USER COUNT FOR MUX TERMINALS.
- SA1 VANL DECREMENT ACTIVE USER COUNT
- ZR X1,PCSX IF NO ACTIVE USERS
- SX6 B1+
- IX6 X1-X6
- SA6 A1
- RJ UCP UPDATE CONVERTED POINTER
- EQ PCSX EXIT
- IAM SPACE 4,10
- ** IAM - ISSUE TERMINAL ACCOUNTING MESSAGE.
- *
- * IAM FORMATS AND ISSUES ACCOUNTING MESSAGE REQUESTS
- * TO ITA.
- *
- * ENTRY - (SEE SSP).
- * X7 = REQUEST CODE.
- * 0 = OUTPUT ACCOUNTING.
- * 1 = INPUT ACCOUNTING.
- IAM SA1 A0+VDCT CHECK TERMINAL STATUS
- SA2 A0+VSTT
- LX1 59-57 CHECK IF LOGGED IN
- LX2 59-48 CHECK IF LOGGING OUT
- SX0 X7+ SET ACCOUNTING MESSAGE INDEX
- BX1 -X1+X2
- AX7 1
- NG X1,PCSX IF LOGGING OUT OR NOT LOGGED IN
- NZ X7,IAM5 IF INCORRECT REQUEST
- * INCREMENT INPUT/OUTPUT OVERFLOW COUNTER.
- SA1 A0+VFST
- MX7 -12
- LX1 36
- BX2 -X7*X1 EXTRACT OVERFLOW COUNTER
- BX1 X7*X1
- SX2 X2+B1 INCREMENT OVERFLOW COUNT
- BX6 -X7*X2
- BX6 X1+X6 MERGE NEW COUNT
- LX6 24
- SA6 A1 REWRITE VFST
- BX2 X7*X2 SET FLAG IF COMBINED ACCUMULATOR OVERFLOW
- LX2 1-12
- BX0 X0+X2
- * REQUEST POT IF NEEDED.
- SA1 IAMA CHECK FOR STACKED ENTRY
- ZR X1,IAM1 IF NO CURRENT ENTRY
- UX7,B7 X1 UNPACK STACK ENTRY
- SB6 B7-VCPC
- NZ B6,IAM2 IF NOT AT END OF CURRENT POT
- IAM1 PX5 X1,B1 REQUEST POT
- RJ RPT
- ZR X7,PCSX IF NO POT AVAILABLE, EXIT
- SA1 IAMA
- SB7 B0 SET WORD COUNT TO FIRST WORD
- ZR X1,IAM2 IF FIRST POT
- SB3 X7
- RJ GPL GET POT LINK
- SX7 B3+
- * ENTER REQUEST WORD IN POT.
- IAM2 BX4 X7 SAVE CURRENT POT
- SX6 B2 SET TERMINAL NUMBER
- LX7 3 SET POT ADDRESS
- TB4 X7,VBMP
- LX6 12
- IX6 X6+X0 ADD REQUEST CODE
- SA6 B4+B7 STORE IN POT
- SB7 B7+B1 INCREMENT WORD POINTER
- PX7 X4,B7 RESET STACK POINTER WORD
- SA7 A1
- NZ X1,PCSX IF NOT FIRST ENTRY
- * MAKE 1TA QUEUE ENTRY.
- SB2 ACPT SET ACCOUNTING PSEUDO TERMINAL
- TTADD B2,A0,X1,X2 SET TERMINAL TABLE ADDRESS
- SB3 0
- SX5 IAM3$ MAKE 1TA QUEUE ENTRY
- EQ PCS1 MAKE QUEUE ENTRY
- * ENTRY FROM ITAQ PROCESSOR TO MAKE SORT BUFFER ENTRY.
- *
- * ENTRY (X0) = SORT BUFFER POINTER.
- * (X7) = ACCOUNTING REQUEST POT POINTER.
- *
- * EXIT TO ITA8.
- * (X6) = 1TA SORT BUFFER ENTRY.
- * (X7) = 1TA FUNCTION ARGUMENT *400*.
- IAM3 MX6 -12
- SA2 A0+VROT SET POT POINTER
- LX6 12
- BX6 X6*X2 CLEAR POT POINTER FIELD
- LX7 12
- BX2 X6+X7
- SX6 B1
- BX6 -X6*X2
- SA6 A2 REWRITE VROT
- SA1 IAMA GET REQUEST POINTER
- BX6 X6-X6 CLEAR REQUEST POINTER
- SA6 A1
- UX4,B7 X1
- SX7 400 SET 1TA ARGUMENT
- SB6 B7-VCPC CHECK POT WORD COUNT
- ZR B6,IAM4 IF POT FILLED
- LX4 3 SET TERMINATOR IN POT
- TB4 X4,VBMP
- SA6 B4+B7
- IAM4 SX6 B2+ SET TERMINAL NUMBER
- LX6 12
- BX6 X6+X7
- EQ ITA MAKE ITAQ ENTRY
- * ERROR EXIT.
- IAM5 SX6 3RIAM
- RJ ABT
- EQ PCSX EXIT
- * IAM REQUEST POINTER WORD.
- *
- *T, 12/ 200N,36/ ,12/ PP
- *
- * N = NEXT AVAILABLE WORD IN POT.
- * PP = POT POINTER.
- IAMA DATA 0
- ICH SPACE 4
- ** ICH - MAKES AN INPUT TO PRIMARY FILE *1TO* REQUEST.
- *
- *T 6/FT,6/RT,12/EJTO,3/WC,9/NP,12/PP,12/TN.
- *
- * FT = 0, PRIMARY FILE REQUEST.
- * RT = 0, INPUT DUMP REQUEST.
- * EJTO = EXECUTING JOB TABLE ORDINAL.
- * WC = LAST POT WORD COUNT IF FORCED DUMP.
- * NP = NUMBER OF POTS TO DUMP.
- * PP = FIRST POT OF INPUT TO PRIMARY FILE.
- * TN = TERMINAL NUMBER.
- *
- * ENTRY (X0) = *1TO* REQUEST QUEUE POINTER.
- * (SEE SSP).
- *
- * EXIT (X0) = REQUEST QUEUE POINTER UPDATED.
- * *1TO* REQUEST ADDED TO BUFFER.
- *
- * USES X - 0, 1, 2, 3, 6.
- * A - 1, 6.
- ICH BSS 0
- SA1 A0+VUIT GET EJT ORDINAL
- MX2 -36
- BX6 -X2*X5
- MX3 12
- LX1 36
- LX3 -12
- BX1 X3*X1
- BX6 X6+X1
- SA6 X0+ MAKE ENTRY
- SX0 X0+B1 INCREMENT BUFFER POINTER
- EQ PCSX EXIT
- INP SPACE 4
- ** INP - PROCESS INPUT DATA FOR A RUNNING PROGRAM.
- *
- * A *STOP* ENTERED BY A USER ON A MULTIPLEXOR TERMINAL IS
- * TREATED LIKE A USER BREAK TWO.
- *
- * ENTRY-
- * SEE SSP
- INP BSS 0 ENTRY
- * CHECK FOR *STOP* FROM MULTIPLEXER TERMINAL.
- IFNET INP1 IF NETWORK TERMINAL
- SA1 B4+ READ FIRST WORD OF INPUT
- SA2 =4LSTOP CHECK UPPER CASE
- SA3 =8L^S^T^O^P CHECK LOWER CASE
- BX2 X1-X2
- BX3 X1-X3
- ZR X2,STO IF *STOP*
- ZR X3,STO IF *STOP*
- * ASSIGN INPUT POT TO MUX TERMINAL.
- SB3 B0
- RJ INO
- RJ SSP RESTORE COMMAND LINE POT POINTER
- INP1 SA1 INPA COUNT INPUT RESPONSE
- SX2 B1
- IX6 X1+X2
- SA6 A1
- SX6 B0 SET *PPI* NOT TO SORT THE FILE
- SX7 B0 SET *EPN*
- EQ BJB1 BEGIN JOB
- INPA CON 0
- ITA SPACE 4
- ** ITA - ENTER *1TA* REQUEST.
- *
- * FORMAT 1TA REQUEST AND INSERT IN REQUEST BUFFER.
- *
- * ENTRY -
- * SEE SSP.
- * (X0) = REQUEST BUFFER POINTER.
- * (X6) = 36/0,12/TN,12/ARG
- * (*COMMND*) = *1TA* FUNCTION CODE, *FC*.
- *
- * EXIT -
- * ((X0)) = 24/0,12/FC,12/TN,12/ARG
- * (X0) = INCREMENTED TO NEXT ENTRY ADDRESS.
- * FC = 5, STATUS REQUEST.
- * MAKE QUEUE ENTRY.
- ITA1 SB7 B0 MAKE QUEUE ENTRY
- RJ MQE
- * EQ ITA2 SET *1TA* CALL
- * FC = 2, LOGIN.
- * FC = 4, UPDATE RESOURCE LIMIT.
- * SET (X6) = 36/0,12/TN/12/PP
- ITA2 BSS 0
- ITA3 BSS 0
- ITA4 BSS 0
- SX7 B2 SET TERMINAL NUMBER
- SX6 B3 SET POT POINTER
- LX7 12
- BX6 X6+X7
- * EQ ITA
- * FORMAT 1TA REQUEST AND ENTER INTO BUFFER.
- ITA BX7 X5 READ TABLE ENTRY
- AX7 48
- SA1 TRRT+X7-2000B
- MX4 -6
- SX2 X1-TSA
- AX1 48
- BX3 -X4*X1 MASK FUNCTION CODE
- LX3 24
- BX6 X6+X3 INSERT FUNCTION CODE
- ZR X2,ITA0 IF NO WAIT-COMPLETION QUEUE ENTRY
- SA6 ITAA SAVE REQUEST
- SB7 WCMQ MAKE WAIT COMPLETION QUEUE ENTRY
- RJ MQE
- SA1 ITAA
- BX6 X1
- ITA0 SA6 X0 ENTER REQUEST IN BUFFER
- SX0 X0+B1 INCREMENT BUFFER POINTER
- EQ PCSX EXIT
- ITAA CON 0 REQUEST
- ITO SPACE 4
- ** ITO - MAKES AN OUTPUT REQUEST *1TO* ENTRY.
- *
- *T 4/ ,1/ PFIC,1/ FT,6/ RT,12/ EJTO,12/ ,12/ PP,12/ TN
- *
- * PFIC = PRIMARY FILE INITIAL CALL FLAG.
- * 1 = PRIMARY FILE INITIAL CALL.
- * 0 = PRIMARY OR ROLLOUT FILE CONTINUATION CALL.
- * FT = FILE TYPE.
- * 0 = PRIMARY FILE.
- * 1 = ROLLOUT FILE.
- * RT = REQUEST TYPE.
- * 0 = DUMP INPUT TO PRIMARY FILE.
- * 1 = OUTPUT TO TERMINAL.
- * EJTO = EXECUTING JOB TABLE ORDINAL.
- * PP = FIRST POT TO USE FOR OUTPUT.
- * TN = TERMINAL NUMBER.
- *
- * ENTRY (X0) = *1TO* REQUEST QUEUE POINTER.
- * (B3) = POT CHAIN IF ONE PROVIDED BY CALLER.
- *
- * EXIT (X0) = *1TO* REQUEST QUEUE POINTER UPDATED.
- * *1TO* REQUEST ADDED TO BUFFER.
- *
- * USES X - 0, 1, 2, 4, 5, 6, 7.
- * A - 1, 6.
- * B - 3, 5.
- *
- * CALLS RPT.
- ITO BSS 0
- SA2 A0+VROT
- SX3 B1
- LX3 17-0
- BX6 -X3*X2 INDICATE PRIMARY FILE LIST
- SA6 A2
- SX6 B1+
- LX6 55-0
- SA6 ITOA INITIAL CALL TO LIST PRIMARY FILE
- ITO1 BSS 0
- SX4 VOPL
- IFMUX ITO2 IF MULTIPLEXER TERMINAL
- TA1 B2,VMST SET NUMBER OF POTS
- ZR X1,ITO2 IF TERMINAL IS DISCONNECTED
- MX4 -5
- AX1 18
- BX4 -X4*X1
- ITO2 LX4 3 CONVERT TO CM WORDS
- SB6 X4+2 ALLOW FOR LINKAGE WORDS
- RJ GPC GET POT CHAIN
- ZR X6,ITO3 IF NO POTS AVAILABLE
- SA1 ITOA
- NZ X1,ITO3 IF PRIMARY FILE LIST INITIAL CALL
- SX6 B0 CLEAR FIRST WORD OF POT
- SA6 B4
- ITO3 SA1 A0+VUIT GET EJT ORDINAL
- MX6 12
- LX1 36
- LX6 -12
- BX6 X1*X6 SEPARATE EJT ORDINAL FROM REST OF WORD
- SX7 B3 MERGE POT POINTER
- SX5 B2 MERGE TERMINAL NUMBER
- LX7 12
- BX6 X6+X5
- SX2 B1 SET OUTPUT FLAG
- BX6 X6+X7
- LX2 48-0
- BX6 X6+X2
- SA1 A0+VROT SPECIFY PRIMARY OR ROLLOUT FILE
- MX2 1
- LX1 54-17
- LX2 54-59
- BX2 X1*X2
- BX6 X2+X6
- SA1 ITOA
- SX7 B0
- ZR X1,ITO4 IF NOT INITIAL CALL TO LIST PRIMARY FILE
- BX6 X1+X6
- SA7 A1
- ITO4 SA6 X0
- SX0 X0+B1
- EQ PCSX EXIT
- ITOA CON 0 PRIMARY FILE INITIAL CALL FLAG
- LIN SPACE 4
- ** LIN - PROCESS LOG IN.
- *
- * ENTRY (PBUF) = ANSWERBACK.
- * SEE SSP.
- LIN BSS 0 ENTRY
- RJ RDC WAIT *VDCT* CLEAR
- MX7 0 CLEAR RETRY COUNTER AND FAMILY NAME
- SA7 B4+VTRY
- SA7 B4+VFNA
- SA1 VANL INCREMENT ACTIVE USER COUNT
- SX6 X1+B1
- SA6 A1
- SA2 LINB CHECK MAXIMUM USER COUNT
- IX2 X2-X6
- PL X2,LIN0 IF NOT NEW MAXIMUM
- SA6 A2
- LIN0 RJ UCP UPDATE CONVERTED POINTER
- * ISSUE LOGIN HEADER MESSAGE.
- LIN1 SX5 LIN1$ SET REENTRY
- RJ CFL CHECK POT SUPPLY
- NG X2,PCS1 IF IN SHORT SUPPLY
- SX0 B3 SAVE LOGIN POT POINTER
- SB3 B0
- SX6 LINCP ISSUE COPYRIGHT NOTICE
- SB4 LINCPL
- RJ MVA
- SX6 HEDR ISSUE HEADER MESSAGE
- SB4 HEDRL
- RJ MVA
- LIN2 SB3 X0 RESTORE LOGIN POT POINTER
- RJ RDC WAIT VDCT CLEAR
- SB5 B3 SET LOGIN POT POINTER
- SB3 B0 CLEAR MESSAGE POT POINTER
- SB4 B0 SET DEFAULT MESSAGE LENGTH
- * REQUEST FAMILY NAME.
- SX6 LIMFN SET MESSAGE ADDRESS
- RJ RQI REQUEST INPUT
- SA1 PBUF READ FAMILY NAME
- SA5 CCMA GET PARAMETER COUNT
- SA2 A1+2 READ USER NAME
- SX7 X1+
- NZ X7,LIN14.1 IF TOO MANY CHARACTERS ENTERED
- SB4 B0
- BX7 X1 SET FAMILY NAME IN LOGIN POT
- SA7 B6+VFNA
- ZR X5,LIN3 IF NULL FAMILY ENTERED
- SX5 X5-1 DECREMENT PARAMETER COUNT
- NZ X5,LIN4 IF USER NAME ENTERED
- * REQUEST USER NAME.
- LIN3 SX6 LIMUN SET MESSAGE ADDRESS
- RJ RQI REQUEST INPUT
- SA2 PBUF READ USER NAME
- SA5 CCMA GET PARAMETER COUNT
- LIN4 SA3 A2+2 READ PASSWORD
- SX7 X2+
- NZ X7,LIN14.1 IF TOO MANY CHARACTERS ENTERED
- SB4 B0
- BX7 X2 SET USER NAME IN LOGIN POT
- SA7 B6+VUNA
- SA7 A0+VUIT SET USERNAME IN TERMINAL TABLE
- SX5 X5-1 DECREMENT PARAMETER COUNT
- NZ X5,LIN5 IF PASSWORD ENTERED
- * REQUEST PASSWORD.
- SX6 LIMPW SET MESSAGE ADDRESS
- SB4 LIMTT-LIMPW
- RJ RQI REQUEST INPUT
- SA3 PBUF READ PASSWORD
- SB4 B0+
- LIN5 SX7 X3
- NZ X7,LIN14.1 IF TOO MANY CHARACTERS ENTERED
- BX7 X3 SET PASSWORD IN LOGIN POT
- SA7 B6+VPWA
- * GET UPPER ACCESS LEVEL LIMIT OF TERMINAL FROM MUX TABLE.
- SX7 0+1S3 SET DEFAULT = 0, SET *AL SPECIFIED* FLAG
- SB4 MXMX
- MX3 -12
- SX5 B2 CURRENT TERMINAL
- LIN5.1 SB4 B4-B1 CHECK NEXT MUX TABLE ENTRY
- NG B4,LIN5.2 IF NO MORE MUXES TO CHECK
- SA1 MUXP+B4
- ZR X1,LIN5.1 IF ZERO ENTRY
- BX4 -X3*X1 FIRST TERMINAL FOR THIS MUX
- IX6 X5-X4
- NG X6,LIN5.1 IF FIRST TERMINAL .GT. CURRENT TERMINAL
- LX1 -24 GET UPPER ACCESS LEVEL LIMIT FROM ENTRY
- BX1 -X3*X1
- BX7 X7+X1
- LIN5.2 SA7 B6+VLAL SET UPPER ACCESS LEVEL LIMIT IN LOGIN POT
- SB4 B0
- SX0 B5 SAVE LOGIN POT POINTER
- * CALL *1TA* TO PROCESS LOGIN PARAMETERS.
- RJ DPT DROP INPUT POT
- SX5 ITA2$ ENTER 1TA REQUEST
- SB3 X0 RESTORE LOGIN POT POINTER
- EQ PCS1 MAKE QUEUE ENTRY
- * NORMAL *1TA* RETURN.
- *
- * ENTRY (B3) = LOGIN POT POINTER.
- * (B4) = LOGIN POT ADDRESS.
- * (POT+VUTA) = VALIDATION ACCESS CONTROL WORD.
- * (POT+VUTD) = VALIDATION TERMINAL CONTROL WORD.
- LIN6 RJ CDP CLEAR DETACH IN PROGRESS
- IFNET LIN12
- * SET PARITY.
- SA3 B4+VUTD LOAD TERMINAL CONTROL WORD
- PL X3,LIN8 IF EVEN PARITY VALIDATION
- SX7 LIN8 SET RETURN ADDRESS
- SX2 /1TD/SOP REQUEST ODD PARITY
- JP DCR
- * SET DUPLEX MODE.
- LIN8 SA3 B4+VUTD RELOAD TERMINAL CONTROL WORD
- LX3 59-53 CHECK DUPLEX MODE
- PL X3,LIN9 IF HALF DUPLEX
- SX7 LIN9 SET RETURN ADDRESS
- SX2 /1TD/SFD REQUEST FULL DUPLEX
- JP DCR
- * SET TRANSLATION TABLE.
- LIN9 SA3 B4+VUTD RELOAD TERMINAL CONTROL WORD
- MX6 -5
- AX3 48 MASK VALIDATED TERMINAL TYPE CODE
- BX6 -X6*X3
- ZR X6,LIN11 IF NONE SPECIFIED
- SA5 X6+TTTT+1 READ IAFEX EQUIVALENT NAME
- RJ LTT GET CURRENT TYPE
- SX6 X1 SET CURRENT LINE CODE
- BX5 X5+X6 MERGE EQUIVALENT NAME AND LINE CODE
- SB7 X2+ SET FWA OF TRANSLATION TABLES
- LIN10 SA1 X2+ READ TRANSLATION TABLE NAME
- ZR X1,LIN11 IF END OF NAMES
- SX2 X2+B1
- IX6 X1-X5 COMPARE
- NZ X6,LIN10 IF NO MATCH
- SX1 A1-B7 SET TRANSLATION INDEX
- LX1 6
- SX7 LIN11 SET RETURN ADDRESS
- SX2 X1+/1TD/STT REQUEST TRANSLATION INDEX
- JP DCR
- * SET RUBOUT COUNT.
- LIN11 SA3 B4+VUTD RELOAD TERMINAL CONTROL WORD
- MX6 -5
- LX3 -54 SHIFT RUBOUT COUNT
- SX2 X3+B1 ADD DRIVER BIAS
- BX7 -X6*X2 MASK BIASED COUNT
- ZR X7,LIN12 IF SYSTEM DEFAULT COUNT
- SA1 A0+VDCT
- LX6 39-0
- LX7 39-0
- BX1 X6*X1 CLEAR VDCT RUBOUNT COUNT
- IX7 X7+X1 INSERT BIASED COUNT
- SA7 A1+ REWRITE VDCT
- * SET SUBSYSTEM.
- LIN12 SA3 B4+VUTD RELOAD TERMINAL CONTROL WORD
- MX7 -5
- SA2 A0+VSTT
- LX3 -42
- BX6 -X7*X3 MASK VALIDATION SUBSYSTEM
- SA3 X6+TTIS GET IAFEX EQUIVALENT SUBSYSTEM
- BX3 -X7*X3
- SX6 LIMUV
- SX7 X3-MSYS
- PL X7,LIN16 IF INCORRECT SUBSYSTEM
- LX3 12 INSERT SUBSYSTEM IN VSTT
- BX2 X3+X2
- MX7 1
- LX7 54-59 SET JOB COMPLETE
- BX6 X2+X7
- SA6 A2 REWRITE VSTT
- * SET ACCESS BITS AND LOGGED-IN STATUS.
- * SET READ DATA BIT IF *CHARGE* OR *RECOVER* HAVE
- * ROLLED OUT AWAITING INPUT.
- MX5 -12
- SA1 B4+VUTA LOAD ACCESS WORD
- SA3 A0+VDCT READ VDCT
- TA2 B2,VRAP CHECK FOR A QUEUE ENTRY
- ZR X2,LIN13 IF READ DATA NEED NOT BE SET
- BX3 X3+X7 SET READ DATA
- LIN13 BX1 -X5*X1 MASK ACCESS WORD ACCESS BITS
- LX5 12
- BX3 X5*X3 CLEAR VDCT ACCESS BITS
- LX1 12
- BX3 X1+X3 INSERT VALIDATION ACCESS BITS
- LX7 57-54 SET LOGGED IN BIT
- BX7 X7+X3
- SA7 A3 REWRITE VDCT
- SA1 VTNL INCREMENT TERMINALS ON LINE
- SX6 X1+B1
- SA6 A1
- RJ UCP UPDATE CONVERTED POINTER
- * ISSUE LOGIN COMPLETION MESSAGE.
- SA3 LIMTT+1
- SA1 A0+VFST
- MX7 24
- LX7 30
- LX1 30
- BX3 -X7*X3 CLEAR PREVIOUS *JSN*
- BX1 X1*X7
- BX6 X1+X3 INSERT CURRENT *JSN*
- SA6 A3
- MX4 42
- SX5 1R
- RJ LTT GET TERMINAL TYPE NAME
- BX1 X4*X1 CLEAR LOWER 18 BITS
- BX7 X1+X5 ADD BLANK
- LX7 -6 SHIFT BLANK AHEAD OF TERMINAL TYPE
- SA7 A6+B1
- SX6 LIMTT ISSUE LOGGED-IN MESSAGE
- SB4 B0
- RJ MVA
- EQ PCSX EXIT
- * 1TA ERROR RETURN.
- LIN14 SA1 A0+VROT CHECK ERROR STATUS
- SX6 LIMJT
- LX1 59-10
- NG X1,LIN16 IF INPUT FILE ABORTED
- SA1 B4+VUTA
- SX6 LIMUC
- LX1 59-1
- LX7 X1,B1
- NG X7,LIN16 IF USER SECURITY COUNT EXHAUSTED
- SX6 LIMSC
- NG X1,LIN16 IF USER NOT VALIDATED FOR SERVICE CLASS
- LX1 59-3-59+1
- LX7 X1,B1
- SX6 LIMSF
- NG X7,LIN16 IF SERVICE CLASS FULL
- SX6 LIMAD
- NG X1,LIN16 IF ACCESS DENIED (SECURITY CONFLICT)
- SX6 LIMDI
- LX1 59-5-59+3
- LX7 X1,B1
- NG X7,LIN16 IF DEVICE INACCESSIBLE OR I/O ERROR
- SX6 LIMYF
- NG X1,LIN16 IF QFT FULL
- EQ LIN14.2 RETRY LOGIN
- * RETRY LOGIN (ERROR DETECTED BEFORE CALLING *1TA*).
- LIN14.1 SX0 B5 SAVE LOGIN POT POINTER
- SB4 B0
- RJ DPT DROP INPUT POT
- SB3 X0 RESTORE LOGIN POT POINTER
- LX0 3
- TB4 X0,VBMP SET LOGIN POT ADDRESS
- * RETRY LOGIN.
- LIN14.2 SA1 B4+VTRY INCREMENT RETRY COUNT
- SX7 X1+1
- SX1 X7-LIAA
- PL X1,LIN15 IF RETRY COUNT EXCEEDED
- IFNET LIN15
- * REATTEMPT LOGIN FOR MUX TERMINAL.
- SA7 A1 REWRITE RETRY COUNT
- SB4 B0 SET DEFAULT MESSAGE LENGTH
- RJ CDP CLEAR DETACH IN PROGRESS
- SX0 B3 SAVE POT POINTER
- SB3 B0 SET NO POT FOR MESSAGE
- SX6 LIMIL SET MESSAGE ADDRESS
- RJ MVA ISSUE MESSAGE
- EQ LIN2 RETRY LOGIN
- * DISCONNECT USER WHEN LOGIN NOT POSSIBLE.
- LIN15 SA1 LINA INCREMENT INCORRECT LOGIN COUNT
- SX6 LIMIT SET MESSAGE ADDRESS
- SX7 X1+B1
- SA7 A1 REWRITE INCORRECT LOGIN COUNT
- * ENTRY (X6) = MESSAGE ADDRESS.
- LIN16 SB4 B0
- RJ MVA ISSUE LOG OFF MESSAGE
- EQ HNG LOG OFF USER
- SPACE 4,10
- ** LOGIN MESSAGES.
- LIMFN DATA C*"EM"FAMILY: '"CB"*
- LIMUN DATA C*"EM"USER NAME: '"CB"*
- LIMPW DATA 10H"EM"PASSWORD
- DATA 10H"NL"((((((((
- DATA 10H"CR"))))))))
- DATA 10H"CR"MMMMMMMM
- DATA 10H"CR"QQQQQQQQ
- DATA 10H"CR"XXXXXXXX
- DATA C*"CR""CB"*
- LINCP DATA C*WELCOME TO THE NOS SOFTWARE SYSTEM.*
- *CALL COPYRT
- CPRT HERE
- CON 0
- LINCPL EQU *-LINCP LENGTH OF COPYRIGHT NOTICE
- LIMTT DATA 10H"EM" "NL"
- DATA 10HJSN: ,
- DATA 0
- LIMAD DATA C*"EM"ACCESS DENIED - SECURITY CONFLICT."NL""LF""CB"*
- LIMDI DATA C*"EM"DEVICE INACCESSIBLE - LOGIN FAILED. "NL""LF""CB"*
- LIMIL DATA C*"EM"IMPROPER LOG IN, TRY AGAIN. "NL""LF""CB"*
- LIMIT DATA C*"EM"INCORRECT TERMINAL. "NL""LF""CB"*
- LIMJT DATA C*"EM"JOB TERMINATED. "NL""LF""CB"*
- LIMSC DATA C*"EM"USER NOT VALIDATED FOR INTERACTIVE SERVICE CLASS.
- , "NL""LF""CB"*
- LIMSF DATA C*"EM"SERVICE CLASS FULL. "NL""LF""CB"*
- LIMUC DATA C*"EM"USER SECURITY COUNT EXHAUSTED."NL""LF""CB"*
- LIMUV DATA C*"EM"USER VALIDATION ERROR."NL""LF""CB"*
- LIMYF DATA C*"EM"SYSTEM FULL."NL""LF""CB"*
- LINA CON 0 NUMBER OF INCORRECT LOGINS
- LINB CON 0 MAXIMUM NUMBER OF USERS ON SYSTEM
- RDC SPACE 4,10
- ** RDC - READ TERMINAL TABLE WORD *VDCT*.
- *
- * RETURN TERMINAL TABLE WORD *VDCT* WHEN INTERLOCK IS
- * CLEAR. *RDC* WILL EXIT BY MEANS OF REENTRY THROUGH
- * *DCR1* IF INTERLOCK IS NOT CLEAR ON ENTRY.
- *
- * ENTRY -
- * (B3) = ANY INFORMATION TO BE RETAINED.
- *
- * EXIT -
- * (A1) = ADDRESS OF *VDCT*.
- * (X1) = *VDCT*.
- * *VDCT* - INTERLOCK CLEAR.
- * (B3) = ENTRY CONTENTS PRESERVED.
- RDC SUBR ENTRY/EXIT
- SA1 A0+VDCT CHECK INTERLOCK
- MX2 14
- LX2 12
- BX7 X2*X1
- ZR X7,RDCX IF INTERLOCK CLEAR
- SA1 RDC SET RETURN ADDRESS
- SX5 DCR3$
- AX1 30
- SX7 X1
- EQ PCS1 MAKE QUEUE ENTRY
- URL SPACE 4,15
- ** URL - PROCESS USER RESOURCE LIMITS EXCEEDED.
- *
- * ENTERED WHEN A JOB HAS EXCEEDED ITS TIME OR SRU
- * LIMIT. THE TERMINAL WILL BE PROMPTED UNTIL A VALID
- * INCREMENT IS ENTERED OR A JOB ABORT IS REQUESTED.
- *
- * ENTRY SEE SSP.
- * (X4) = RESOURCE LIMIT CODE.
- *
- * EXIT RESOURCE LIMIT INCREMENTED UNLESS JOB ABORT
- * REQUESTED. CHARGE REQUIRED SET IF AT SRU
- * VALIDATION LIMIT.
- *
- * CALLS CNT, DXB, INO, MVA, SRR, SSP.
- URL BSS 0 ENTRY
- AX4 1
- MX0 54 SET UP MESSAGE
- SA5 URLA+X4
- URL1 SA1 X5
- SA2 X5+B1
- BX6 X1
- BX7 X2
- SA6 URLB
- SA7 A6+B1
- LX0 12
- SA3 URLC
- AX5 42
- BX6 X0*X3
- BX6 X5+X6
- SA6 A3
- IFMUX URL3
- RJ CNT CANCEL TYPEAHEAD
- ZR X1,URL3 IF NO REENTRY MADE
- SA5 URLA+X6
- MX0 54
- EQ URL1 CONTINUE LIMIT PROCESSING
- URL3 SB5 B0+ CLEAR POT POINTER
- SX7 URL4 SET COMMAND REENTRY
- RJ SRR
- SX6 URLB SET MESSAGE ADDRESS
- SB4 URLBL SET MESSAGE LENGTH
- EQ PCS6 ISSUE MESSAGE
- * REENTRY TO PROCESS LIMIT INCREMENT.
- URL4 SA1 PBUF CHECK ENTRY
- SA2 =8L^S^T^O^P
- SA3 =4LSTOP
- BX3 X1-X3
- SX6 URLF CONTROL BYTE TO END TRANSPARENT MODE
- ZR X3,URL10 IF STOP HAS BEEN ENTERED
- BX2 X1-X2
- ZR X2,URL10 IF STOP HAS BEEN ENTERED
- URL5 SA2 A0+VROT
- MX4 -1
- AX2 19
- BX2 -X4*X2
- SA2 URLA+X2
- MX4 6 SET COMMAND TO CHECK
- BX4 X4*X2
- BX4 X1-X4
- AX2 18
- NZ X4,URL13 IF INCORRECT ENTRY
- SX6 X2 SET DEFAULT INCREMENT
- AX2 18
- SA5 PBUF+2
- SB6 X2 SAVE FUNCTION CODE
- SB7 B1 SET DECIMAL CONVERSION
- ZR X5,URL7 IF NO INCREMENT ENTERED
- LX5 6
- SX4 X5-1R* CHECK FOR (*)
- ZR X4,URL6 IF (*)
- LX5 54
- RJ DXB CONVERT INCREMENT TO BINARY
- MX3 45
- BX3 X3*X6
- RJ SSP
- NZ X4,URL13 IF INCORRECT INCREMENT
- ZR X3,URL7 IF INCREMENT .LT. 77777B
- URL6 SX6 77777B SET INCREMENT TO MAXIMUM
- URL7 SX3 B6 SET FUNCTION CODE
- LX3 18
- BX6 X3+X6 MERGE FUNCTION CODE AND INCREMENT
- SA6 B4
- SX5 ITA3$
- SX7 B0+
- EQ PCS1 MAKE QUEUE ENTRY
- * NORMAL EXIT.
- URL8 SA1 A0+VDPT
- LX1 59-15
- PL X1,URL9 IF BINARY BIT NOT SET
- SX6 URLG CONTROL BYTE TO RESUME TRANSPARENT MODE
- EQ URL10 CONTINUE TO NEXT JOB STEP
- URL9 IFMUX URL11
- TA1 B2,VMST
- LX1 59-25
- PL X1,URL11 IF NOT NAM TRANSPARENT CONTINUATION
- SX6 URLH CONTROL BYTE TO RESET NAM XPT CONTINUATION
- URL10 SB4 B0+
- RJ MVA
- URL11 SA1 A0+VROT CLEAR LIMITS/INPUT SATISFIED/JOB WAITING
- SA3 =00000000000003000050B
- BX7 -X3*X1
- SA7 A1
- RJ INO ISSUE NULL OUTPUT
- SA1 A0+VFST CHECK *SMF* CONNECTION
- MX2 6
- LX1 59-23
- BX1 X2*X1
- ZR X1,RES IF NO SMF CONNECTION
- SX6 6 RESET VROT
- SA6 A0+VROT
- * RESCHEDULE *FSE* TO REINVOKE *WK* ROLLOUT STATUS.
- RJ GOP GET PARAMETER BLOCK POT
- PARAM ENEJ
- RJ PMR
- SB4 B0+ RETURN PARAMETER BLOCK POT
- RJ DPT
- EQ PCSX RETURN
- * PROCESS VALIDATION LIMIT.
- URL12 SMA X6,(USER VALIDATION LIMIT EXCEEDED,"NL")
- EQ URL10 SEND MESSAGE AND RESTART JOB
- * PROCESS INCORRECT INCREMENT.
- URL13 SB5 B0+ CLEAR POT POINTER
- SX7 URL4 SET COMMAND REENTRY
- RJ SRR
- SA1 A0+VROT CLEAR INPUT SATISFIED
- SX6 1S5
- BX6 -X6*X1
- SA6 A1 REWRITE VROT
- SMA X6,( *INCORRECT ENTRY, TRY AGAIN*"NL")
- EQ PCS5 ISSUE ERROR MESSAGE
- URLA VFD 6/1LT,12/0,6//CPS/RLIT,18/VDTI,18/URLD
- VFD 6/1LS,12/0,6//CPS/RLIS,18/VDSI,18/URLE
- URLB DATA 0
- DATA 0
- URLC DATA 10L ENTER X T
- DATA 10LO CONTINUE
- DATA 10L OR STOP T
- DATA 10LO END JOB
- DATA 5LSTEP.
- DATA 10L TYPED AHE
- DATA 10LAD INPUT M
- DATA 10LUST BE REE
- DATA 7LNTERED.
- DATA 0
- URLBL EQU *-URLB
- URLD DATA 10L *TIME LIM
- DATA 3LIT*
- URLE DATA 10L *SRU LIMI
- DATA 2LT*
- URLF DATA B00164064400000000000 END TRANSPARENT MODE
- URLG DATA B00062043001500000000 RESET TRANSPARENT MODE
- URLH DATA B00164064400100000000 RESET NAM XPT CONTINUATION
- TITLE GENERAL SUBROUTINES.
- ** GENERAL SUBROUTINES.
- *
- * IF THE REGISTER USAGE IS NOT SPECIFIED IN THE HEADER
- * INFORMATION, THEN IT SHOULD BE ASSUMED THAT THE SUBROUTINE
- * USES ALL REGISTERS EXCEPT THOSE SPECIFIED BELOW.
- *
- * A - 0.
- * B - 1, 2.
- * X - 0.
- ABT SPACE 4
- ** ABT - THIS ROUTINE IS ENTERED WHEN IAFEX DETECTS
- * INTERNALLY AN ABNORMAL CONDITION. A MESSAGE IS ISSUED
- * TO THE DAYFILE AND AN ABORT TAKES PLACE.
- *
- * ENTRY-
- * (X6) = NAME OF CALLING ROUTINE RIGHT JUSTIFIED
- *
- * CALLS IDM, MSG=, O6S, SYS=.
- ABT SUBR ENTRY/EXIT
- * SAVE EXCHANGE PACKAGE BEFORE PROCESSING ABORT.
- SB1 A6 SAVE REGISTERS USED BY *SYS* MACRO
- SA6 ABTB
- SX6 B1
- SB1 1
- SA6 A6+B1
- BX6 X1
- SA6 A6+B1
- BX6 X2
- SA6 A6+B1
- SX6 A1
- SA6 A6+B1
- SYSTEM XJR,R,ABTC,100B SAVE REMAINDER OF EXCHANGE PACKAGE
- SA2 ABTB RESTORE ORIGINAL VALUE OF X6
- SA1 VABL COUNT ABNORMAL OCCURRENCE
- SX7 X1+B1
- SA7 A1
- SA1 ABTA+1
- MX7 42
- BX1 X7*X1
- BX6 X1+X2
- SA6 A1
- SX1 B2
- RJ O6S
- SA6 ABTA+2
- SA1 B0 CHECK ABORT SENSE SWITCH
- LX1 59-8
- NG X1,ABT1 IF SET TO ABORT
- SA1 ABT CHECK FOR RETURN ADDRESS
- AX1 30
- ZR X1,ABT1 IF NO RETURN ADDRESS
- SB7 X1
- BX6 X6-X6 CLEAR ADDRESS
- SA6 A1
- SX6 ABTA ISSUE DAYFILE MESSAGE
- RJ IDM
- JP B7 RETURN
- ABT1 MESSAGE ABTA,,R
- ABORT
- ABTA DATA C*IAFEX ABNORMAL - *
- DATA 0
- ABTB BSSZ 5 AREA TO HOLD REGISTERS USED BY *SYS* MACRO
- ABTC BSSZ 20B AREA TO HOLD EXCHANGE PACKAGE
- ASM SPACE 4
- ** ASM - ASSIGN MESSAGE TO TERMINAL.
- *
- * ASSIGNS AN OUTPUT MESSAGE TO THE TERMINAL. FOR MUX
- * TERMINALS, THE FIRST TWO WORDS IN THE POT ARE NOT USED.
- * FOR NETWORK TERMINALS, THE CURRENT CHARACTER SET IS
- * STORED IN THE SECOND WORD OF THE FIRST POT.
- * THE FIRST WORD IN THE FIRST POT IS USED FOR LINKING
- * OUTPUT INTO THE OUTPUT QUEUE IN VSTT.
- *
- * ENTRY (X7) = FIRST POT OF MESSAGE TO BE ASSIGNED.
- *
- * EXIT (B3) = 0.
- * (B4) = 0.
- *
- * CALLS ABT, ANM, DPT.
- ASM5 ZR X7,ASM6 IF NULL ASSIGNMENT
- SB3 X7 DROP POT(S)
- SB4 B0
- RJ DPT
- ASM6 SB3 B0+
- SB4 B0+
- ASM SUBR ENTRY/EXIT
- IFNET ASM4 IF NAM TERMINAL
- SA1 A0+VSTT
- SA2 A0+VDCT
- BX6 X1
- LX6 59-58 CHECK USER BREAK IN PROGRESS
- MX5 -12
- BX3 -X5*X1
- BX4 -X5*X2
- NG X6,ASM5 IF USER BREAK IN PROGRESS
- SX6 B1+B1 TELL DRIVER TO START AT WORD TWO
- LX6 36-0
- NZ X3,ASM1 IF STACKED MESSAGE
- NZ X4,ASM2 IF CURRENT MESSAGE OR DRIVER REQUEST
- BX6 X2+X6
- BX6 X6+X7 ASSIGN MESSAGE
- SA6 A2 REWRITE VDCT
- EQ ASM6 RETURN
- ASM1 NZ X4,ASM3 IF TWO MESSAGES ASSIGNED
- BX6 X2+X6
- BX6 X3+X6 ASSIGN STACKED MESSAGE AS CURRENT MESSAGE
- SA6 A2+
- BX1 X5*X1 CLEAR STACKED MESSAGE
- ASM2 BX6 X1+X7 ASSIGN STACKED MESSAGE
- SA6 A1
- EQ ASM6 RETURN
- ASM3 SA7 ASMA SAVE POT POINTER
- SX6 3RASM
- RJ ABT
- SA1 ASMA
- BX7 X1
- EQ ASM5 DROP POTS
- * PROCESS NETWORK TERMINAL MESSAGE; SET 6/12 ASCII FLAG,
- * PRESERVE CONCATENATION BIT AND SET USER FORMAT EFFECTOR
- * FLAG IN POT CHAIN HEADER (SEE *ANM*).
- ASM4 LX7 3
- SA3 A0+VDCT
- SX5 B1
- TA1 X7+1,VBMP
- LX3 0-51
- BX4 X3*X5
- PL X6,ASM4.1 IF NOT CHECKING FOR USER FORMAT EFFECTORS
- SA3 A0+VSTT
- LX5 55-0
- BX5 X5*X3
- LX5 2-55
- BX4 X4+X5
- ASM4.1 BX6 X1+X4
- SA6 A1+
- AX7 3
- RJ /IAFEX4/ANM QUEUE OUTPUT FOR TERMINAL
- EQ ASM6 RETURN
- ASMA CON 0 POT POINTER
- AUU SPACE 4,10
- ** AUU - ABORT UNIDENTIFIED OR RECONNECTING UCP.
- *
- * ENTRY (X7) = UCP IDENTIFICATION (JSN AND EJTO).
- * (X6) = 0, IF SMF AND ALREADY CONNECTED TO IAF
- *
- * USES X - 1, 6.
- * A - 1.
- *
- * CALLS EUC, SFC.
- AUU SUBR ENTRY/EXIT
- SA1 AUUA SET FORMATTED *REGR* ABORT CALL
- NZ X6,AUU1 IF NOT SMF
- SA1 AUUC SET FORMATTED *REGR* MESSAGE CALL
- AUU1 BX6 X1
- RJ SFC SEND SFCALL
- RJ EUC END UCP CONNECTION
- EQ AUUX EXIT
- AUUA VFD 6/0,12/0,18/2,18/AUUB,6/REGR
- AUUB DATA C+** UNRECOGNIZED UCP ABORTED BY IAF **+
- AUUC VFD 6/0,12/0,18/1,18/AUUD,6/REGR
- AUUD DATA C+** SMF IS ALREADY CONNECTED TO IAF **+
- BRQ SPACE 4
- ** BRQ - BUILD REQUEST QUEUE.
- *
- * ENTRY (X0) = ADDRESS OF QUEUE POINTER FOR BUILD.
- *
- * EXIT PPU FUNCTION REQUESTS BUILT IN POT CHAIN.
- * (X6) = FIRST POT POINTER OF REQUEST CHAIN.
- * = ZERO IF NO REQUESTS ENTERED IN CHAIN.
- *
- * CALLS CFL, ENP, PCS, SSP, UQS.
- BRQ SUBR ENTRY/EXIT
- SA1 X0
- BX6 X6-X6
- UX2,B2 X1
- ZR B2,BRQX IF NO ENTRIES TO PROCESS
- RJ CFL
- BX6 X6-X6
- SX1 B2+7 CALCULATE NUMBER OF POTS NEEDED
- AX1 3
- NG X2,BRQX IF POTS IN SHORT SUPPLY
- SX6 X0-ITOQ
- NZ X6,BRQ1 IF NOT *ITOQ*
- SX2 B2+6-VRQB*VCPC CHECK QUEUE LENGTH
- SB7 VRQB SET MAXIMUM QUEUE LENGTH
- EQ BRQ2 SET QUEUE LENGTH
- BRQ1 SX2 B2+6-VRQA*VCPC CHECK QUEUE LENGTH
- SB7 VRQA SET MAXIMUM QUEUE LENGTH
- BRQ2 PL X2,BRQ3 IF REQUEST .GT. MAXIMUM QUEUE LENGTH
- SB7 X1+ SET REQUEST QUEUE LENGTH
- BRQ3 BX7 X7-X7
- RJ GZP REQUEST ZEROED POTS
- BX6 X7
- ZR X7,BRQX IF NO POTS AVAILABLE
- LX7 3 SET UP ENTRY POINTER
- TX5 X7,VBMP
- LX7 15
- BX6 X6+X7
- LX5 36
- BX6 X6+X5
- SA6 BRQA
- BX7 X0 SAVE ENTRY POINTER
- SA7 A6+B1
- SX5 X0-ITOQ
- SX0 SBUF SET SORT BUFFER POINTER
- SX6 SBUF+VRQA*VCPC
- SA6 A7+B1 STORE BUFFER CONSTANT
- MX1 1
- NZ X5,BRQ4 IF NOT *ITOQ*
- SX6 SBUF+VRQB*VCPC
- BX6 X6+X1 SET *1TO* FLAG
- SA6 A6 REPLACE CONSTANT WITH *1TO* VALUE
- BRQ4 SA1 X7 READ QUEUE POINTER
- SB6 X7
- UX1,B2 X1
- ZR B2,BRQ5 IF QUEUE EMPTY
- AX1 18 GET ENTRY
- SB5 X1
- RJ GQE
- UX4,B3 X5 GET PROCESSOR ADDRESS
- SA3 TRRT+B3
- MX2 -12
- AX3 36
- BX2 -X2*X3
- SB7 X2+TSRPROC
- RJ PCS
- RJ SSP
- RJ UQS
- SA1 BRQC
- SX6 X1 GET BUFFER CONSTANT
- IX6 X0-X6
- PL X6,BRQ5 IF NO ROOM FOR MORE ENTRIES
- SA2 A1-B1
- SX7 X2
- PL X1,BRQ4 IF NOT *ITOQ*
- RJ CFL CHECK POT SUPPLY
- PL X2,BRQ4 IF NOT LOW POT SUPPLY
- BRQ5 MX6 1 SET BUFFER TERMINATOR
- SA1 BRQA GET POT POINTER
- SA6 X0
- BX0 X1
- SB7 B1 SET ENTRY LENGTH
- MX5 -54
- BX7 -X5
- BRQ6 SA1 SBUF START SEARCH
- SB6 A1
- BX2 -X5*X1
- BRQ7 SA1 A1+B1 SEARCH ENTRIES
- BX3 -X5*X1
- IX4 X3-X2
- NG X1,BRQ8 IF END OF QUEUE
- PL X4,BRQ7 IF CURRENT FIND BEST
- SB6 A1 SET NEW FIND POINTER
- BX2 X3
- EQ BRQ7 CONTINUE SEARCH
- BRQ8 LX2 59-53
- NG X2,BRQ9 IF ALL ENTRIES PROCESSED
- SA1 B6
- BX6 X1
- SA7 B6
- RJ ENP MAKE POT ENTRY
- EQ BRQ6 CONTINUE
- BRQ9 AX0 18
- SX6 X0
- EQ BRQX RETURN
- BRQA CON 0 POT POINTER
- BRQB CON 0 QUEUE POINTER ADDRESS
- BRQC CON 0 1/*1TO* FLAG, 41/0, 18/BUFFER CONSTANT
- CAM SPACE 4,10
- ** CAM - CLEAR AUTO MODE.
- *
- * USES A - 2, 6.
- * X - 2, 3, 5, 6.
- * B - 3, 4.
- *
- * CALLS DPT.
- CAM SUBR ENTRY/EXIT
- SA2 A0+VDCT
- BX6 X2 SAVE CONTENTS OF VDCT
- SA6 CAMA
- SX6 B2+ SAVE TERMINAL NUMBER OF USER
- SA6 CAMB
- SX6 41B CLEAR READ DATA AND AUTO MODE
- LX6 49-0
- BX2 -X6*X2
- LX2 0-24
- MX3 -12
- BX5 -X3*X2 GET POT POINTER
- BX6 X3*X2 CLEAR POT POINTER
- LX6 24-0
- SA6 A2
- ZR X5,CAMX IF NO POT POINTER
- SB3 X5
- SB4 B0 DROP TO END OF CHAIN
- RJ DPT DROP POTS
- EQ CAMX RETURN
- CAMA CON 0 VDCT OF LAST USER
- CAMB CON 0 TERMINAL NUMBER OF LAST USER
- CBL SPACE 4,20
- ** CBL - CHECK BREAK IN PROGRESS AND LOGOUT FLAGS.
- *
- * CHECK IF EITHER FLAG IS SET. IF NOT, RETURN TO THE
- * CALLING ROUTINE. IF EITHER FLAG IS SET, DROP
- * POTS AND EXIT FROM QUEUE PROCESSING.
- *
- * ENTRY (SEE SSP.)
- * (B3) = QUEUE ENTRY POT POINTER.
- * (B5) = INP$ ENTRY POT POINTER IF NONZERO.
- *
- * EXIT TO *PCSX* IF EITHER FLAG SET.
- * (B3) AND (B5) POTS DROPPED IF EXISTENT.
- *
- * USES X - 0, 1.
- * A - 1.
- * B - 3, 4.
- *
- * CALLS DPT.
- CBL SUBR ENTRY/EXIT
- SA1 A0+VSTT CHECK BREAK IN PROGRESS AND LOGOUT FLAGS
- SX0 2001B
- LX0 48
- BX1 X0*X1
- ZR X1,CBLX IF NEITHER FLAG SET, RETURN
- SX0 B5
- SB4 B0
- ZR B3,CBL1 IF NO B3 POT(S)
- RJ DPT DROP POTS
- CBL1 ZR X0,PCSX IF NO B5 POT(S)
- SB3 X0
- SB4 B0
- RJ DPT DROP POTS
- EQ PCSX EXIT
- CCM SPACE 4,30
- ** CCM - COMMAND CRACKER.
- *
- * CCM CRACKS A COMMAND IMAGE INTO A STRING BUFFER
- * AND THEN REASSEMBLES IT ON A PARAMETER BASIS UP TO
- * *PARL* PARAMETERS. THE STRING BUFFER MAY BE PARTIALLY
- * OVERLAID BY THE PARAMETER BUFFER. IF A PARAMETER OF
- * MORE THAN TEN CHARACTERS IS FOUND, THE ELEVENTH CHAR-
- * ACTER IS TREATED AS A SEPARATOR CHARACTER. COMMENTS
- * FOLLOWING THE COMMAND TERMINATOR ARE PACKED TEN
- * CHARACTERS TO A PARAMETER, REGARDLESS OF CONTENT. ALL
- * EXCESS POTS ARE DROPPED. SEE *PBUF* AND *SBUF* DES-
- * CRIPTIONS.
- *
- * ENTRY (B3) = POT POINTER OF POT BEGINNING COMMAND.
- * (B4) = FWA OF POT.
- * (X7) = FIRST WORD OF COMMAND IN CURRENT POT.
- *
- * EXIT TO *IPL* IF *PBUF* OVERLAYS *SBUF*.
- * (CCMA) = PARAMETER COUNT.
- * (CCMB) = WORD COUNT OF *PBUF*.
- * SEE BUFFER DESCRIPTIONS.
- *
- * USES X - ALL.
- * A - 1, 2, 3, 4, 5, 6, 7.
- * B - 2, 3, 4, 5, 6, 7.
- *
- * CALLS GPL, IPL, RPL, SSP.
- CCM SUBR ENTRY/EXIT
- SB5 B4+VCPC SET LWA OF POT
- SB4 B4+X7 SET FWA OF COMMAND IN POT
- SX3 B1
- SA5 A0+VDCT CHECK TRANSMISSION MODE
- LX3 51-0
- SB2 B0 PRESET DISASSEMBLY REGISTER EMPTY
- SB7 -1R0
- BX6 X6-X6 PREVENT SPACE SUPPRESS BEYOND FWA
- BX3 -X5*X3 TOGGLE TRANSMISSION STATUS
- SA6 CCMF CLEAR LONG COMMAND LINE FLAG
- SA6 CCMA INITIALIZE PARAMETER COUNT
- BX0 X0-X0
- SX2 76B
- BX5 X3+X2
- SX7 B3 SAVE POT POINTER THROUGH LOOP
- SA7 CCMG
- SA6 SBUF-1
- EQ CCM3 ENTER DISASSEMBLY LOOP
- * DISASSEMBLE COMMAND TO STRING BUFFER.
- CCM1 LX1 6 GET NEXT CHARACTER
- BX6 -X3*X1
- BX3 X6
- LX3 6
- AX0 6
- BX0 X0+X3
- SA3 CCMF
- SB2 B2-B1
- NZ X3,CCM3 IF LONG COMMAND LINE CONDITION
- SA6 A6+B1
- NZ X0,CCM2 IF NOT POSSIBLE END OF LINE
- ZR B2,CCM6 IF LAST BYTE OF WORD
- CCM2 NZ X2,CCM2.1 IF PREVIOUS CHARACTER NOT *76*
- SA6 A6-B1 REPLACE *76*
- SX4 X6+B7
- NG X4,CCM3 IF LOWER-CASE ALPHABETIC
- EQ CCM2.2 TRANSLATE SPECIAL CHARACTER
- CCM2.1 SX4 B1+B1
- BX4 X2-X4
- NZ X4,CCM3 IF PREVIOUS CHARACTER NOT *74*
- SA6 A6-1
- SX6 X6+1R0+TSCTA-TSCT
- CCM2.2 SA4 TSCT-1R0+X6 GET DISPLAY-CODE TRANSLATION
- BX7 X4
- SA7 A6 ENTER DISPLAY CODE TRANSLATION INTO BUFFER
- CCM3 BX2 X6-X5
- MX3 -6
- NZ B2,CCM5 IF MORE CHARACTERS IN CURRENT WORD
- LT B4,B5,CCM4 IF NOT END OF POT
- SB6 X6+ SAVE CHARACTER THROUGH *GPL*
- RJ GPL GET POT LINK
- SX6 B6+ RESTORE CURRENT CHARACTER
- SB5 B4+VCPC
- SX3 -77B
- CCM4 SA1 B4 READ NEXT WORD FROM POT
- SB4 B4+B1
- SB2 10 RESET CHARACTER COUNT
- CCM5 SB6 A6+1-PBUF-PBUFL
- NG B6,CCM1 IF ROOM REMAINING IN STRING BUFFER
- ZR X0,CCM6 IF END OF COMMAND LINE
- SX7 B1+ SET LONG COMMAND LINE FLAG
- SA7 CCMF
- ZR X6,CCM1 IF COLON - CONTINUE CHECKING
- SX6 X6-1R
- ZR X6,CCM1 IF BLANK - CONTINUE CHECKING
- RJ SSP SET STACK PARAMETERS
- SMA X6,( COMMAND TOO LONG."NL")
- EQ PCS5 ISSUE MESSAGE
- * DELETE TRAILING SPACES AND POTS.
- CCM6 SA1 A6-B1
- MX6 1
- SX4 1R
- CCM7 SA1 A1-1 READ PRECEEDING CHARACTER
- SX5 A1-SBUF+1
- ZR X5,CCM8 IF NO PARAMETERS IN THE BUFFER
- ZR X1,CCM7 IF TRAILING COLON
- CCM8 BX5 X4-X1
- ZR X5,CCM7 IF TRAILING BLANK
- SA6 A1+B1 SET END OF LINE FLAG
- BX6 X6-X6
- SA6 A6+B1 TERMINATE BUFFER
- SA2 CCMG RESTORE POT POINTER
- BX7 X2 DROP TRAILING POTS
- SB7 B0
- SA1 SSPA
- MX6 -12
- BX6 -X6*X1
- SB2 X6 TERMINAL NUMBER TO (B2)
- RJ RPL
- * REASSEMBLE COMMAND ON PARAMETER BASIS.
- *
- * (X3) = PARAMETER COUNT.
- * (X6) = ASSEMBLY REGISTER.
- * (X7) = FILE NAME FLAG.
- * (B4) = CHARACTER COUNT OF PARAMETER.
- * (B5) = SHIFT COUNT.
- * (B6) = PARAMETER BUFFER INDEX.
- * (B7) = STRING BUFFER INDEX.
- SB6 PBUF INITIALIZE BUFFER POINTERS
- SB7 SBUF
- BX3 X3-X3 PRESET PARAMETER COUNT
- BX5 X5-X5 CLEAR DELIMITER INDICATOR
- SB2 8
- SA1 B7 CHECK FIRST CHARACTER
- SB5 X1-1R*
- NZ B5,CCM22 IF NOT COMMENT
- SA1 A0+VDCT CHECK USER LOGGED IN
- LX1 59-57
- PL X1,CCM22 IF LOGIN NOT COMPLETE
- SX1 B0
- MX3 1
- EQ CCM22 ENTER ASSEMBLY LOOP
- * ASSEMBLE PARAMETER.
- CCM9 SB4 B4+B1 COUNT CHARACTER
- SB5 B5-6 DECREMENT SHIFT COUNT
- BX6 X6+X2 MERGE CHARACTER
- CCM10 SA1 B7+ GET NEXT CHARACTER
- SB7 B7+1
- BX2 X1
- ZR X2,CCM11 IF COLON CHARACTER
- SX2 X1-1R+
- NG X1,CCM15 IF END OF STRING
- CCM11 SA4 CCMC MASK FOR BLANK, ASTERIK, AND DOLLAR SIGN
- BX2 X2+X3
- NG X2,CCM14 IF COMMAND TERMINATED OR ALPHANUMERIC
- SB3 X1
- SX2 B7-SBUF-1
- ZR X2,CCM12 IF FIRST CHARACTER
- SA2 CCME MASK FOR DOLLAR SIGN
- LX2 B3
- BX5 X5-X2
- NG X5,CCM13 IF BEGINNING OF LITERAL STRING
- CCM12 LX4 B3
- PL X4,CCM15 IF SEPARATOR CHARACTER
- SB3 B3-1R
- ZR B3,CCM10 IF UNDELIMITED BLANK
- CCM13 SX7 B1+ SET NOT-FILE-NAME FLAG
- CCM14 LX2 X1,B5 POSITION CHARACTER FOR MERGER
- PL B5,CCM9 IF NOT YET ELEVENTH CHARACTER
- * PROCESS SEPARATOR CHARACTER.
- CCM15 NZ X6,CCM16 IF NON-NULL PARAMETER
- SX7 B1 SET NOT FILE NAME FLAG
- CCM16 PL X1,CCM17 IF NOT END OF STRING
- NG X3,CCM17 IF COMMAND TERMINATED
- NG X5,CCM17 IF INSIDE A LITERAL STRING
- SX4 1R. SET TERMINATOR
- BX1 X1+X4
- CCM17 LT B4,B2,CCM18 IF .LT. EIGHT CHARACTERS
- SX7 B1+ SET NOT FILE NAME FLAG
- CCM18 LX7 36 STORE PARAMETER ASSEMBLY
- BX7 X7+X1
- MX4 1
- BX7 -X4*X7
- SA6 B6
- PX7 X7,B4
- SB6 B6+2 INCREMENT PARAMETER BUFFER ADDRESS
- SA7 A6+B1
- SB3 X1
- NG X3,CCM22 IF COMMAND TERMINATED
- PL X1,CCM18.1 IF NOT END OF STRING
- NG X5,CCM21 IF INSIDE A LITERAL STRING
- CCM18.1 SX3 X3+B1 COUNT PARAMETER
- SA2 =4LDIAL
- BX6 X2
- SA2 PBUF
- BX6 X2-X6
- NZ X6,CCM19 IF COMMAND NOT *DIAL*
- SX6 X3-2
- ZR X6,CCM21 IF TERMINAL NUMBER PROCESSED
- CCM19 SA2 CCMD MASK FOR TERMINATORS
- NG X5,CCM22 IF INSIDE A LITERAL STRING
- LX2 B3
- PL X2,CCM22 IF CURRENT SEPARATOR NOT TERMINATOR
- SB3 B3-1R.
- NZ B3,CCM21 IF NOT PERIOD
- SA2 PBUF CHECK IF *LIST* COMMAND
- BX6 X2
- SA2 =4LLIST
- BX2 X2-X6
- ZR X2,CCM20 IF *LIST*
- SA2 =3LLNH
- BX6 X2-X6
- NZ X6,CCM21 IF NOT *LNH*
- CCM20 SB3 -1R.
- SA2 B7 CHECK NEXT CHARACTER
- SX6 X2+B3
- SA2 B6-3 CHECK LAST SEPARATOR
- ZR X6,CCM22 IF ELIPSIS
- SX6 X2+B3
- SA2 A2+B1
- BX6 X2+X6
- ZR X6,CCM22 IF ELIPSIS
- CCM21 BX6 X3 SAVE PARAMETER COUNT
- MX3 1 TERMINATE COMMAND
- SA6 CCMA
- CCM22 GE B6,B7,IPL IF *PBUF* OVERFLOWS *SBUF*
- SB5 54 RESET CHARACTER COUNT
- BX7 X7-X7 RESET FILE NAME FLAG
- MX6 0 CLEAR ASSEMBLY REGISTER
- SB4 B0+ RESET CHARACTER COUNT
- PL X1,CCM10 IF NOT END OF STRING
- * TERMINATE PARAMETER BUFFER.
- SX6 B6-PBUF+2 SET *PBUF* WORD COUNT
- SA6 CCMB
- SX6 B0+ TERMINATE BUFFER
- SX7 B1 SET NOT FILE NAME FLAG
- LX7 36
- SB7 PBUF+PARC*2
- CCM23 SA6 B6
- SA7 B6+B1
- SB6 B6+2
- LT B6,B7,CCM23 IF MORE NULL PARAMETERS TO BE SET
- RJ SSP SET STACK PARAMETERS
- JP CCMX RETURN
- CCMA CON 0 PARAMETER COUNT
- CCMB CON 0 WORD COUNT
- CCMC BSS 0 MASK OF ALLOWABLE NON-ALPHANUMERICS
- POS 60-1R*
- VFD 1/1
- POS 60-1R
- VFD 1/1
- POS 60-1R$
- VFD 1/1
- POS 0 INSURE ZERO FILL
- CCMD BSS 0 COMMAND TERMINATOR MASK
- POS 60-1R)
- VFD 1/1
- POS 60-1R.
- VFD 1/1
- POS 0 INSURE ZERO FILL
- CCME BSS 0 DELIMITED LITERAL MASK
- POS 60-1R$
- VFD 1/1
- POS 0 INSURE ZERO FILL
- CCMF CON 0 LONG COMMAND LINE FLAG
- CCMG CON 0 COMMAND POT POINTER
- TSCT SPACE 4,10
- ** TSCT - TABLE OF SPECIAL CHARACTER TRANSLATIONS.
- *
- * TSCT CONTAINS THE DISPLAY CODE TRANSLATIONS OF THE *74XX*
- * SPECIAL CHARACTERS AND THE DISPLAY CODE MAPPINGS OF THE
- * *76XX* SPECIAL CHARACTERS. THE LOWER SIX BITS OF THE
- * CHARACTER ARE THE INDEX INTO THE TABLE.
- TSCT BSS 0 *76XX* MAPPINGS
- CON 61B 7633 - LEFT BRACE
- CON 75B 7634 - VERTICAL LINE
- CON 62B 7635 - RIGHT BRACE
- CON 76B 7636 - TILDE
- TSCTA BSS 0 *74XX* TRANSLATIONS
- CON 0 7400 - (NOT DEFINED)
- CON 74B 7401 - COMMERCIAL AT
- CON 76B 7402 - CIRCUMFLEX
- CON 0 7403 - (NOT DEFINED)
- CON 0 7404 - COLON
- CON 0 7405 - (NOT DEFINED)
- CON 0 7406 - (NOT DEFINED)
- CON 74B 7407 - COMMERCIAL AT
- PBUF SPACE 4,25
- ** PBUF - PARAMETER BUFFER.
- * SBUF - STRING BUFFER.
- *
- * *PBUF* IS FORMATTED DURING COMMAND CRACKING. EACH
- * PARAMETER HAS A TWO WORD ENTRY AS FOLLOWS.
- *
- *T,PBUF 60/ PARAMETER
- *T,PBUF+1 12/ WORD COUNT, 12/ FN FLAG, 18/ 0, 18/ SEPARATOR
- *
- * THE WORD COUNT IS BIASED BY 2000B. THE FILE NAME
- * FLAG IS SET TO ZERO TO INDICATE THAT THE PARAMETER
- * CONTAINS ONLY ALPHANUMERICS AND IS SEVEN CHARACTERS
- * OR LESS IN LENGTH. IT IS SET TO ONE TO INDICATE
- * OTHERWISE.
- LBUF CON 0
- CON 1R$
- PBUF BSS 48
- SBUF BSS 82
- PBUFL EQU *-PBUF
- PARL EQU PBUFL/2-2
- TBUF SPACE 4,10
- ** TBUF - NETWORK DATA TRANSLATION BUFFER.
- TBUF EQU PBUF DEFINE BUFFER FWA
- TBUFL EQU 77D DEFINE BUFFER LENGTH
- TBUFE EQU TBUF+TBUFL+1 DEFINE END OF BUFFER
- IFLT *,TBUFE,1 DEFINE BUFFER AREA
- BSS TBUFE-*
- BSS 3 TRANSLATION OVERFLOW AREA
- EXIBUF SPACE 4,10
- ** EXIBUF -BUFFER FOR EXIT OVERLAY.
- *
- * THE EXIT OVERLAY BUFFER IS DEFINED TO OVERLAY A PORTION
- * OF THE PARAMETER AND TRANSLATION BUFFER.
- EXIBUF EQU PBUF+20
- TITLE GENERAL SUBROUTINES.
- CDP SPACE 4,10
- ** CDP - CLEAR DETACH IN PROGRESS.
- *
- * CLEARS VSTT BIT 56, DETACH IN PROGRESS.
- *
- * USES X - 1, 6.
- * A - 1, 6.
- CDP SUBR ENTRY/EXIT
- SA1 A0+VSTT
- SX6 B1
- LX6 56
- BX6 -X6*X1
- SA6 A1 REWRITE VSTT
- EQ CDPX EXIT
- CDS SPACE 4,20
- ** CDS - CHECK DRIVER STACK STATUS.
- *
- * CHECK TO SEE IF ANY ACTIVE DRIVERS REMAIN. IF NOT,
- * THE EXECUTIVE IS ABORTED.
- *
- * EXIT TO CALLER IF ANY DRIVER REMAINS ACTIVE.
- * ABORTS WITH DAYFILE MESSAGE IF NO DRIVER ACTIVE.
- *
- * N.B. THE NETWORK DRIVER IS ALWAYS CONSIDERED
- * TO BE ACTIVE IF PRESENT.
- *
- * USES X - 2, 6, 7.
- * A - 2.
- * B - 6.
- *
- * MACROS ABORT, MESSAGE.
- CDS SUBR ENTRY/EXIT
- TX7 B0,VNTP CHECK IF NETWORK ACTIVE
- NZ X7,CDSX IF NETWORK ACTIVE, RETURN
- SB6 B0+ INITIALIZE STACK POINTER INDEX
- SX6 =C* NO ACTIVE DRIVERS REMAINING.*
- * CHECK STACK POINTERS FOR ACTIVE DRIVER.
- CDS1 SA2 VDRL+B6 READ NEXT STACK POINTER
- SB6 B6+B1
- AX2 24
- NG X2,CDS2 IF END OF STACK POINTERS
- SX7 X2
- LX2 59-48+24 CHECK SHUTDOWN FLAG
- ZR X7,CDS1 IF NULL POINTER
- PL X2,CDSX IF ACTIVE DRIVER
- EQ CDS1 LOOP FOR NEXT ENTRY
- * ISSUE DAYFILE MESSAGE AND ABORT.
- CDS2 MESSAGE X6,,R ISSUE DAYFILE MESSAGE
- ONSW 2 PREVENT RELOAD
- ABORT
- SPACE 4,10
- ** CFC - COUNT NUMBER OF CHARACTERS.
- *
- * COUNTS THE NUMBER OF CHARACTERS CONTAINED IN A
- * CHARACTER STRING. THE MAXIMUM LENGTH OF THE
- * CHARACTER STRING IS SEVEN.
- *
- * ENTRY (X6) = 42/CHARACTER STRING, 18/0.
- *
- * EXIT (B6) = CHARACTER COUNT.
- *
- * USES X - 1, 3.
- * B - 6.
- CFC SUBR ENTRY/EXIT
- SB6 B0
- ZR X6,CFCX IF NULL NAME
- SB6 8
- MX3 6
- LX3 17-59
- CFC1 SB6 B6-B1
- LX3 6
- BX1 X3*X6
- ZR X1,CFC1 IF NO CHARACTER
- EQ CFCX EXIT
- CFL SPACE 4,20
- ** CFL - CHECK IF MORE FIELD LENGTH NEEDED (POTS IN SHORT
- * SUPPLY).
- *
- * ENTRY (VPAL) = TOTAL POTS ALLOCATED.
- * (VPUL) = TOTAL POTS RESERVED.
- *
- * EXIT (X1) = TOTAL POTS AVAILABLE.
- * (X2) = NEGATIVE IF BELOW MINIMUM POT SUPPLY.
- * (X2) = TOTAL POTS AVAILABLE IF NOT BELOW MINIMUM.
- *
- * USES A - 1, 2, 6.
- * X - 1, 2, 6.
- CFL SUBR ENTRY/EXIT
- SA1 VPAL TOTAL POTS ALLOCATED
- SA2 A1+B1 POTS IN USE
- IX1 X1-X2 POTS NOT IN USE
- SX2 X1-VMIP
- NG X2,CFL1 IF BELOW MINIMUM
- SX2 X1+ (X2) = POTS AVAILABLE
- EQ CFLX RETURN
- * PROCESS LOW POT SUPPLY.
- CFL1 SA2 CPBM COUNT POT SHORTAGE
- SX6 B1
- IX6 X2+X1
- BX2 -X1 (X2) = NEGATIVE STATUS
- SA6 A2
- EQ CFLX RETURN
- CFX SPACE 4,10
- ** CFX - COPY FILE EXTERNALLY.
- *
- * ENTRY (LISB) = INPUT FILE NAME ADDRESS
- * (LISC) = FIRST LINE NUMBER.
- * (LISE) = LAST LINE NUMBER.
- *
- * EXIT (X7) = *SCOPY* IN DISPLAY (ENTRY POINT NAME).
- * (X1) = 1, (ENTRY POINT DIRECTORY FLAG).
- *
- * USES X - 0, 1, 6, 7.
- * A - 1, 6.
- *
- * CALLS CFC, PCB, ZTB.
- CFX SUBR ENTRY/EXIT
- SA1 LISB GET FILE NAME
- NZ X1,CFX1 IF NOT PRIMARY FILE
- SA1 A0+VFNT
- CFX1 BX6 X1
- RJ CFC COUNT CHARACTERS
- SA6 CFXB STORE FILE NAME
- SX6 1R,
- PX6 X6,B6
- SA6 A6+B1
- SA1 LISC
- SX6 1R*
- LX6 54
- BX6 X6-X1
- NZ X6,CFX2 IF FIRST NUMBER NOT AN ASTERISK
- SX1 B0+
- CFX2 RJ ZTB CONVERT ZERO FILL TO BLANKS
- SA6 CFXC
- SA1 LISE
- SX6 1R*
- LX6 54
- BX6 X6-X1
- NZ X6,CFX3 IF SECOND NUMBER NOT AN ASTERISK
- SX1 B0+
- CFX3 RJ ZTB CONVERT ZERO FILL TO BLANKS
- SA6 CFXD
- SX1 CFXA
- RJ PCB PACK CONTROL STATMENT BUFFER
- SA1 CFXA
- MX7 42
- LX1 6
- BX7 X7*X1 SET *EPN*
- EQ CFXX EXIT
- * SCOPY,LFN,,,,,,R,D,FLINE,LLINE,NS.
- CFXA VFD 60/6L$SCOPY
- VFD 12/2006B,48/1R,
- CFXB VFD 60/0 INPUT FILE NAME
- VFD 60/0 SEPARATOR
- VFD 60/6L,,,,,R REWIND OPTION
- VFD 12/2006B,48/1R,
- VFD 60/1LD CHARACTER SET
- VFD 12/2001B,48/1R,
- CFXC VFD 60/0 FIRST LINE
- VFD 12/2012B,48/1R,
- CFXD VFD 60/0 LAST LINE
- VFD 12/2012B,48/1R,
- VFD 60/2LNS
- VFD 12/2002B,48/1R.
- VFD 60/0
- VFD 60/0
- CLE SPACE 4
- ** CLE - CLEANS UP TERMINAL TABLE AFTER A USER LOGS OFF.
- *
- * EXIT TERMINAL TABLE CLEARED, ALL POTS DROPPED,
- * AND ACTIVE USER COUNT DECREMENTED.
- *
- * USES X - 1, 2, 6, 7.
- * A - 1, 2, 6, 7.
- * B - 3, 4.
- *
- * CALLS DAP, DPT.
- CLE SUBR ENTRY/EXIT
- SA1 VANL DECREMENT ACTIVE USER COUNT
- ZR X1,CLE0.1 IF NO ACTIVE USERS
- SX6 B1
- IX6 X1-X6
- SA6 A1
- RJ UCP UPDATE CONVERTED POINTER
- CLE0.1 RJ DAP DROP ASSIGNED POTS
- SX6 B0
- SX7 B1
- SA6 A0+VUIT
- SA6 A0+VFNT
- SA6 A0+VFST
- SA7 A0+VROT
- SA6 A0+VSTT
- TA6 B2,VTNP CLEAR TERMINAL NAME
- IFNET CLE1 IF NETWORK TERMINAL
- SA1 A0+VDCT
- SA2 =00007400000000000000B
- BX6 X2*X1
- SA6 A1 REWRITE VDCT
- EQ CLEX RETURN
- CLE1 SA6 A0+VDCT
- SA1 A0+VDPT
- SA6 A0+VCHT
- MX2 12
- SA6 A1 CLEAR VDPT
- BX2 X2*X1
- ZR X2,CLE2 IF NO POTS IN VDPT
- SB4 B0
- LX2 12
- SB3 X2
- RJ DPT DROP VDPT POTS
- CLE2 TA1 B2,VMST
- MX2 -12
- SX6 B0
- BX2 -X2*X1
- SA6 A1 CLEAR VMST
- ZR X2,CLEX IF NO POTS IN VMST
- SB4 B0
- SB3 X2
- RJ DPT DROP VMST POTS
- EQ CLEX RETURN
- CNT SPACE 4,15
- ** CNT - CANCEL TYPEAHEAD.
- *
- * ENTRY (X4) = REASON CODE TO SAVE IN *VMST*.
- *
- * EXIT TYPEAHEAD MODE CLEARED.
- * (X1) = 0, IF REENTRY NOT MADE.
- * = 1, IF REENTRY MADE.
- * (X6) = REASON CODE, IF REENTRY MADE.
- *
- * USES X - 1, 2, 3, 4, 6, 7.
- * A - 3, 6.
- * B - 3, 4.
- *
- * CALLS DCR, DPT.
- CNT1 TA3 B2,VMST GET REASON CODE
- MX4 -3
- AX3 44
- BX6 -X4*X3
- SX1 1 SET REENTRY MADE
- CNT SUBR ENTRY/EXIT
- TA3 B2,VMST CHECK FOR INTERNAL TYPEAHEAD QUEUE
- MX6 -12
- BX1 -X6*X3
- ZR X1,CNTX IF NO TYPEAHEAD POT
- LX4 44-0
- MX6 -3
- LX6 44-0
- BX3 X6*X3 CLEAR PREVIOUS CODE
- BX3 X4+X3 SET NEW CODE
- MX6 -18
- BX6 X3*X6 CLEAR POINTER AND POT COUNT IN VMST
- SA6 A3 RESET VMST
- SB3 X1 DROP TYPEAHEAD POT
- SB4 B0
- RJ DPT
- BX1 X1-X1 PRESET NO REENTRY
- TA3 B2,VMST
- LX3 59-51
- PL X3,CNTX IF NAM TYPEAHEAD NOT IN EFFECT
- SX2 /1TD/CTM CANCEL NAM TYPEAHEAD
- SX7 CNT1
- JP DCR ENTER DRIVER REQUEST
- COP SPACE 4
- ** COP - COPIES THE CONTENTS OF POT(S) TO OTHER POT(S).
- *
- * ENTRY (B3) = NONZERO, FIRST POT TO BE COPIED
- * ZERO, THEN
- * (B7) = NUMBER OF POTS TO COPY.
- * (X5) = POT TO LINK TO.
- * (X6) = PACKED - BYTE 0 = (B7).
- * - BYTE 4 = FIRST POT TO COPY.
- *
- * EXIT (X7) = POINTER TO FIRST COPIED POT.
- * ZERO, IF NO POTS AVAILABLE.
- * (B7) = NUMBER OF POTS COPIED.
- *
- * CALLS GPL, RPT.
- COP SUBR ENTRY/EXIT
- ZR B3,COP2 IF POT COUNT SPECIFIED IN B7
- SX7 B3 SAVE ENTRY INFORMATION
- SB7 B0 INITIALIZE COUNT
- COP1 SB7 B7+B1
- RJ GPL
- NZ B3,COP1 IF STILL MORE POTS IN THE CHAIN
- PX6 X7,B7
- BX5 X5-X5
- COP2 SA6 COPA GET POTS
- PX5 X5,B7
- RJ RPT
- ZR X7,COPX IF NO POT(S) AVAILABLE
- SA1 COPA GET SAVED INFORMATION
- UX4,B7 X1 SET FIRST READ POT
- BX1 X7 SET FIRST WRITE POT
- SB3 X4
- LX4 3
- LX7 3
- TX2 X7+1,VBMP ADDRESS OF WRITE POT
- AX7 3
- TB4 X4,VBMP ADDRESS OF READ POT
- SB6 VCPC-1
- COP3 SA3 B4+B6 COPY POT
- SB6 B6-B1
- BX6 X3
- SA6 X2+B6
- PL B6,COP3 IF MORE WORDS TO COPY
- SB6 B3 SAVE READ POT POINTER
- SB3 X1 SET WRITE POT POINTER
- RJ GPL GET POT LINK FOR WRITE POT
- ZR B3,COPX IF COPY COMPLETE RETURN
- SX2 B4+B1 SET WRITE POT ADDRESS
- SX1 B3 SAVE WRITE POT POINTER
- SB3 B6 SET READ POT POINTER
- RJ GPL GET POT LINK FOR READ POT
- SB6 VCPC-1
- EQ COP3
- COPA BSSZ 1 STORAGE FOR POT POINTER
- CTM SPACE 4,20
- ** CTM - CALL TWO PORT MUX DRIVER.
- *
- * *CTM* IS CALLED EITHER BY *ITP* WHEN A *TSEM*
- * REQUEST HAS BEEN ISSUED, OR BY *DRI* AFTER DRIVER
- * SHUTDOWN FOR *1TM* HAS COMPLETED.
- *
- * ENTRY (VITM) = FORMATTED *1TM* DRIVER REQUEST WORD.
- * = 18/DN, 24/0, 18/VA.
- * DN = *1TM* DRIVER NAME.
- * VA = *1TM* *VDRL* ADDRESS.
- *
- * EXIT *1TM* HAS BEEN CALLED.
- *
- * USES A - 1, 2, 7.
- * X - 1, 2, 7.
- *
- * MACROS SYSTEM.
- CTM SUBR ENTRY/EXIT
- SA2 VITM GET FORMATTED DRIVER REQUEST WORD
- BX7 X2
- SA7 CTMA SAVE FORMATTED REQUEST WORD
- CTM1 SYSTEM SPC,,CTMA CALL *1TM*
- + SA1 B1+
- NZ X1,* IF SYSTEM REQUEST NOT CLEAR
- SA1 CTMA
- NZ X1,CTM1 IF PPU NOT AVAILABLE
- EQ CTMX RETURN
- CTMA CON 0 SCRATCH WORD
- CTP SPACE 4,20
- ** CTP - COPY DATA INTO POTS.
- *
- * COPY DATA FROM A BUFFER INTO POTS. *CTP* RESERVES POTS
- * BASED ON THE BUFFER CM WORD COUNT AND ON HOW MANY POTS
- * ARE PROVIDED BY THE CALLER.
- *
- * ENTRY (B3) = FIRST POT OF CHAIN IF ONE PROVIDED.
- * (B4) = NUMBER OF WORDS TO TRANSFER INTO POTS.
- * (X6) = BUFFER ADDRESS.
- * (B5) = WORD OFFSET INTO THE FIRST POT AT WHICH POINT
- * DATA WILL BEGIN TO BE STORED.
- *
- * EXIT (X6) = 0, IF DATA WAS NOT COPIED.
- * POT COUNT, IF TRANSFER COMPLETE.
- * (B3) = FIRST POT POINTER.
- * (B4) = ADDRESS OF FIRST POT.
- * (X7) = LAST POT POINTER.
- * (B6) = WORD COUNT IN LAST POT.
- *
- * USES X - 1, 2, 5, 6, 7.
- * A - 1, 2, 6, 7.
- * B - 3, 4, 5, 6, 7.
- *
- * CALLS GPC, GPL.
- CTP SUBR ENTRY/EXIT
- SX7 B5 SAVE ENTRY CONDITIONS
- PX6 X6,B4
- SA7 CTPA
- SA6 A7+B1
- SB6 B4+B5 SET TOTAL CM WORD COUNT
- RJ GPC GET POT CHAIN OF CORRECT LENGTH
- ZR X6,CTPX IF POTS NOT OBTAINED
- SA1 CTPA
- SA2 A1+B1
- SA6 A1 SAVE POT COUNT
- UX6,B6 X2
- SX5 B3 SAVE FIRST POT POINTER
- SB7 X1
- SB5 VCPC
- SB5 B5-B7 NUMBER OF WORDS THAT CAN FIT IN FIRST POT
- SA2 X6-1
- SB4 B4+B7 START WITH OFFSET WORD
- SB6 B6-B5
- GT B6,CTP2 IF MORE THAN ONE POT OF DATA
- SB5 B6+B5
- SB7 X1+B5 SET WORD COUNT IN LAST POT
- EQ CTP2 TRANSFER THE DATA
- * COPY THE DATA INTO THE POTS.
- CTP1 RJ GPL ADVANCE TO NEXT POT
- SB5 VCPC SET TO TRANSFER *VCPC* WORDS
- SB6 B6-B5
- GT B6,CTP2 IF MORE THAN ONE POT OF DATA LEFT
- SB5 B6+B5 SET TO TRANSFER PARTIAL POT
- SB7 B5 SET WORD COUNT IN LAST POT
- CTP2 SA2 A2+B1 GET WORD FROM BUFFER
- SB5 B5-B1
- SB4 B4+B1
- BX7 X2 STORE WORD INTO POT
- SA7 B4-1
- NZ B5,CTP2 IF POT NOT YET FULL
- GT B6,CTP1 IF ALL DATA NOT YET TRANSFERRED
- SX7 B3 LAST POT POINTER
- SB6 B7 WORD COUNT IN LAST POT
- SA1 CTPA
- SB3 X5 FIRST POT POINTER
- LX5 3
- BX6 X1
- TB4 X5,VBMP ADDRESS OF FIRST POT
- EQ CTPX EXIT
- CTPA CON 0 OFFSET INTO FIRST POT
- CTPB CON 0 WORD COUNT, BUFFER ADDRESS
- DAP SPACE 4
- ** DAP - DROP DRIVER REQUESTS AND POTS.
- *
- * DROPS POTS ASSIGNED TO TERMINAL IN VDCT AND IN
- * VSTT.
- *
- * CALLS DPT, DQO.
- DAP1 RJ DQO DROP QUEUED OUTPUT
- DAP SUBR ENTRY/EXIT
- SA1 A0+VDCT
- MX2 -13
- LX2 60-1
- BX3 -X2*X1
- ZR X3,DAP1 IF NO POTS TO DROP
- BX6 X2*X1 CLEAR POINTER
- SA6 A1
- IFNET DAP1 CHECK NETWORK OUTPUT
- NG X1,DAP1 IF DRIVER FUNCTION
- SB3 X3 DROP POTS
- SB4 B0
- RJ DPT
- EQ DAP1
- DIP SPACE 4,10
- ** DIP - DROP INPUT POT CHAIN.
- *
- * EXIT - INPUT POT CHAIN DROPPED.
- *
- * USES X - 1, 6.
- * A - 1, 6.
- * B - 3, 4.
- *
- * CALLS DPT.
- DIP SUBR ENTRY/EXIT
- IFMUX DIPX
- SA1 A0+VDPT
- AX1 48
- ZR X1,DIPX IF NO INPUT POT CHAIN
- BX6 X6-X6 CLEAR VDPT
- SA6 A1
- SB3 X1
- SB4 B0
- RJ DPT DROP POT CHAIN
- EQ DIPX RETURN
- DJS SPACE 4,10
- ** DJS - DETERMINE JOB STATUS.
- *
- * EXIT (X6) = ADDRESS OF STATUS MESSAGE.
- DJS SUBR ENTRY/EXIT
- SA1 A0+VSTT
- SA2 A0+VROT
- LX1 59-54
- LX2 59-2
- SX6 =4LIDLE
- PL X1,DJSX IF JOB COMPLETE
- SX6 =4LWAIT
- NG X2,DJSX IF JOB ROLLED OUT
- SX6 =7LEXECUTE
- EQ DJSX EXIT
- DLP SPACE 4,10
- ** DLP - DUMP LAST POT OF INPUT TO PRIMARY FILE.
- *
- * EXIT LAST INPUT POT DUMPED, POT POSITION CLEARED IN VDPT.
- * (B6) = 0 IF NO DUMP, NONZERO IF DUMP IN PROGRESS.
- *
- * USES X - 0, 1, 2, 3, 6, 7.
- * A - 1, 2, 6, 7.
- * B - 3, 4, 6, 7.
- *
- * CALLS DMP, GPL, SSP.
- DLP2 SB3 X0 LAST POT
- MX7 12
- BX1 -X7*X1
- LX6 48 SAVE LAST POT POINTER FOR *DIP*
- BX6 X6+X1
- LX7 36
- BX6 -X7*X6 CLEAR FW, WC, AND BC FIELDS
- SA6 A1 REWRITE VDPT
- BX6 X2
- SA6 A2 REWRITE VSTT
- LX7 12 CHECK QUEUED INPUT
- DLP3 MX6 -3 CHECK CURRENT VDPT INPUT
- LX1 30
- IFNET DLP4
- LX1 2 POSITION FOR CW MUX FORMAT
- DLP4 BX0 -X6*X1 WORD COUNT IN LAST POT
- DLP5 BX6 X2*X7 CHECK QUEUE IN VSTT
- BX6 X0+X6
- ZR X6,DLP6 IF NO DUMP NECESSARY
- BX7 X0 WORD COUNT
- SB7 B0 SET TO FORCE DUMP
- SB6 X7 SET TO DUMP (B3) ONLY IF WC .GT. 0
- RJ DMP DUMP LAST POT
- SB6 B1 SET EXIT CONDITION
- DLP6 RJ SSP RESET REGISTERS
- DLP SUBR ENTRY/EXIT
- SA1 A0+VDPT CLEAR INPUT INITIATED BIT
- SX6 1S16
- BX6 -X6*X1
- SA6 A1 REWRITE VDPT
- SA2 A0+VROT CHECK JOB ACTIVITY
- SB6 B0 SET NO DUMP EXIT CONDITION
- LX2 59-0
- PL X2,DLPX IF JOB ACTIVE
- SA2 A0+VFNT CHECK PRIMARY FILE
- MX6 42
- BX6 X6*X2
- ZR X6,DLPX IF NO PRIMARY FILE
- SA2 A0+VSTT QUEUE COMPLETE POTS OF DATA
- MX7 12
- BX0 X7*X1 FIRST POT POINTER
- LX7 48
- SB3 B0
- ZR X0,DLP5 IF NO POT CHAIN IN VDPT
- BX3 X7*X1 LAST POT IN VDPT
- LX3 24
- SB3 X3
- IFMUX DLP3
- SB7 X3
- LX0 12 POSITION POT POINTER
- SX6 X0 INITIALIZE LAST POT POINTER
- SB3 X0
- SB4 B7-B3
- ZR B4,DLP2 IF LAST POT REACHED
- DLP1 RJ GPL GET LINK TO NEXT POT
- ZR B3,DLP2 IF LAST POT REACHED
- BX6 X0 MOVE OLD FIRST POT POINTER
- SX0 B3 SAVE NEW FIRST POT POINTER
- SB4 B7-B3
- ZR B4,DLP2 IF LAST POT REACHED
- SX3 B1 INCREMENT POT COUNT
- LX3 30-0
- IX2 X2+X3
- BX7 X7*X2 CHECK VSTT FIRST POT POINTER
- LX6 36-0
- NZ X7,DLP1 IF ALREADY SET
- BX2 X2+X6 SET INTO VSTT
- BX7 X2
- EQ DLP1 CHECK NEXT POT IN CHAIN
- DMP SPACE 4,30
- ** DMP - DUMP SOURCE INPUT.
- *
- * CALLS *1TO* TO DUMP SOURCE POTS. THE SOURCE POT CHAIN
- * POINTER AND CHAIN LENGTH IS MAINTAINED IN *VSTT* BYTES
- * 1 AND 2. *1TO* WILL BE CALLED TO DUMP POTS WHEN THIS
- * CHAIN LENGTH EXCEEDS THE MAXIMUM SPECIFIED IN THE CALL
- * TO *DMP*.
- *
- * ENTRY (B3) = POT TO BE DUMPED.
- * (X7) = WORD COUNT IN POT TO BE DUMPED.
- * (B6) = 0, IF ONLY POTS IN VSTT ARE TO BE DUMPED.
- * 1, IF POT IN *B3* SHOULD BE DUMPED ALSO.
- * (B7) = POT COUNT THRESHOLD. A DUMP WILL BE
- * FORCED IF THE POT COUNT EXCEEDS THIS
- * VALUE. A VALUE OF ZERO MAY BE USED
- * TO FORCE THE DUMP.
- *
- * EXIT IF *1TO* REQUEST NOT ENTERED.
- * (VSTT) BYTE 1 = FIRST POT OF CHAIN.
- * BYTE 2 = POT COUNT.
- *
- * IF *1TO* REQUEST ENTERED.
- * (VSTT) BYTE 1 = 0.
- * BYTE 2 = 0.
- * (VROT) = SET BUSY IF CURRENT REENTRY QUEUE ENTRY.
- *
- * CALLS MQE, SSP.
- *
- * NOTE THE POT CHAIN CONTAINING INPUT DATA
- * WILL BE DROPPED UPON RETURN FROM *1TO*
- * EXCEPT FOR THE LAST (B3 - ENTRY) POT.
- DMP SUBR ENTRY/EXIT
- SA1 A0+VSTT
- SA2 A0+VFNT
- MX5 42
- MX4 12
- LX4 -12
- BX6 X4*X1
- BX5 X5*X2
- MX3 18
- ZR X5,DMPX IF PRIMARY FILE NON-EXISTENT
- LX3 -12
- BX2 X3*X1
- NZ X6,DMP1 IF INPUT CURRENTLY BEING HELD
- SX2 B3 SET POT IN ENTRY
- ZR B6,DMPX IF NO DUMP NEEDED
- LX2 36
- DMP1 SX4 B0
- ZR B6,DMP2 IF NO ADDITIONAL POT TO DUMP
- SX4 B1 COUNT POT
- DMP2 LX4 30
- IX2 X2+X4
- BX4 X2
- MX6 -6
- AX4 30
- BX4 -X6*X4 GET NUMBER OF POTS
- BX6 -X3*X1
- SX3 B1 SET SORT FLAG
- LX3 52-0
- BX6 X3+X6
- SB5 X4
- LT B5,B7,DMP3 IF DUMP NOT NEEDED
- SA5 A0+VROT CHECK FOR DUMP IN PROGRESS
- LX5 59
- NG X5,DMP4 IF FILE NOT ACTIVE
- DMP3 BX6 X2+X6 UPDATE POT COUNT
- SA6 A1
- EQ DMPX
- DMP4 SA6 A1 REEINITIALIZE POT COUNT AND POINTER
- AX2 36
- LX4 24 POSITION POT COUNT
- SX5 ICH$ MAKE *1TO* REQUEST
- NZ B6,DMP5 IF NEW POT BEING DUMPED
- BX7 X7-X7
- DMP5 LX7 33 POSITION WORD COUNT
- BX6 X4+X7
- LX5 48
- BX6 X5+X6
- SB7 ITOQ
- LX2 12
- BX5 X6+X2
- RJ MQE
- NZ X2,DMP6 IF STACKED QUEUE ENTRY
- SA5 A0+VROT MARK STATUS BUSY IF CURRENT QUEUE ENTRY
- MX6 59
- BX6 X6*X5
- SA6 A5+ REWRITE VROT
- DMP6 RJ SSP RESET TERMINAL PARAMETERS
- EQ DMPX RETURN
- DPT SPACE 4
- ** DPT - DROP POT.
- *
- * CLEARS POT LINK BYTES AND MARKS POTS AVAILABLE IN THE
- * POT LINK TABLE.
- *
- * ENTRY (B3) = FIRST POT OF CHAIN TO BE DROPPED.
- * (B4) = LAST POT IN CHAIN TO BE DROPPED.
- * (B4) = 0 = DROP TO END OF CHAIN.
- *
- * EXIT (DPTA) = POT POINTER IF POT NOT RESERVED.
- * (B3) = ZERO.
- * (B4) = ZERO.
- *
- * USES A - 1, 6, 7.
- * X - 1, 2, 3, 4, 5, 6, 7.
- * B - 3, 4, 5, 6, 7.
- *
- * CALLS ABT IF POT NOT RESERVED.
- DPT2 SX3 X2+ SAVE POT POINTER
- LX2 58 GET PLT RELATIVE ADDRESS
- SA1 X2+B7 READ PLT ENTRY
- BX6 X5*X2 GET BYTE NUMBER * 12
- LX6 4 BYTE * 4
- LX7 X6,B1 BYTE * 8
- IX6 X6+X7 BYTE * 12
- AX7 3 GET BYTE NUMBER
- SB3 X6+B6 SET BYTE MASK SHIFT
- AX6 X5,B3 SHIFT BYTE MASK
- SB4 X7 SET BIT MASK SHIFT
- AX7 X4,B4 SHIFT BIT MASK
- BX2 X6*X1 MASK OUT BYTE
- LX1 X1,B3 SET FOR NEXT LINK
- BX6 -X7*X2 MASK OUT BIT
- SA6 A1 STORE WORD
- BX7 X7*X2 CHECK RESERVATION
- SB5 B5-B1 COUNT POT DROPPED
- BX2 -X5*X1 GET NEXT LINK
- ZR X7,DPT1 IF POT NOT RESERVED
- NZ X2,DPT2 IF ANOTHER LINK TO DROP
- SA1 VPUL UPDATE POTS IN USE
- SX6 X1+B5
- SA6 A1
- DPT3 SB3 B0 CLEAR POT POINTER
- SB4 B0 CLEAR POT CHAIN POINTER
- DPT SUBR ENTRY/EXIT
- ZR B3,DPT0 IF TRYING TO DROP POT ZERO
- SX2 B3 SET FIRST POT TO DROP
- SX4 10B
- MX5 48
- TB7 0,VPLP SET FWA OF PLT
- SB6 -48
- SB5 B0 CLEAR POTS DROPPED COUNT
- ZR B4,DPT2 IF DROP TO END OF CHAIN
- SX3 B4
- LX3 58 GET PLT RELATIVE ADDRESS
- SA1 X3+B7 READ PLT ENTRY
- BX6 X5*X3
- LX6 4 BYTE * 4
- LX7 X6,B1 BYTE * 8
- IX6 X6+X7 BYTE * 12
- SB3 X6+B6 SET BYTE MASK SHIFT
- AX6 X5,B3 SHIFT BYTE MASK
- BX6 X6*X1 MASK OUT BYTE
- SA6 A1 STORE WORD
- EQ DPT2
- * PROCESS NON-RESERVED POT ERROR.
- *
- * ENTRY (X3) = POT POINTER.
- DPT0 SX3 B3
- DPT1 SX7 X3+ STORE POT POINTER
- SX6 3RDPT SET ERROR CODE
- SA7 DPTA
- RJ ABT
- EQ DPT3 CLEAR REGISTERS AND RETURN
- DPTA CON 0 POINTER TO NON-RESERVED POT
- DQO SPACE 4,10
- ** DQO - DROP QUEUED OUTPUT.
- *
- * DROPS OUTPUT POTS QUEUED IN *VSTT*.
- * FOR A DESCRIPTION OF HOW POT CHAINS OF DATA ARE LINKED
- * TOGETHER IN THE QUEUE, SEE THE NOTE AT THE BEGINNING
- * OF SUBROUTINE *ANM*.
- *
- * CALLS DPT.
- DQO2 SB3 X3 DROP THE SINGLE CHAIN
- SB4 B0
- RJ DPT
- DQO SUBR ENTRY/EXIT
- SA1 A0+VSTT
- MX2 -12
- BX3 -X2*X1
- ZR X3,DQOX IF NO POTS TO DROP
- BX6 X2*X1 CLEAR POINTER
- MX2 54 CLEAR CHAIN COUNTER
- LX2 24
- BX6 X2*X6
- SA6 A1
- IFMUX DQO2 IF ONLY ONE CHAIN IN VSTT
- DQO1 SB3 X3
- LX3 3
- TA1 X3,VBMP SAVE LINK TO NEXT CHAIN
- SB4 B0
- BX6 X1
- SA6 DQOA
- RJ DPT DROP CURRENT CHAIN
- SA1 DQOA
- MX3 -12
- BX3 -X3*X1
- ZR X3,DQOX IF NO MORE CHAINS TO DROP
- EQ DQO1 DROP NEXT CHAIN
- DQOA CON 0 LINK TO NEXT CHAIN
- DQP SPACE 4,10
- ** DQP - DROP QUEUE ENTRY POTS.
- *
- * RELEASE POTS ASSOCIATED WITH A REENTRY QUEUE ENTRY.
- *
- * ENTRY (SSPA) = REENTRY QUEUE ENTRY.
- *
- * EXIT QUEUE ENTRY POTS RELEASED.
- * (SSPA) UPDATED.
- * (B3) = 0.
- * (B4) = 0.
- *
- * USES A - 1, 6.
- * X - 1, 6.
- * B - 3, 4.
- *
- * CALLS DPT, SSP.
- DQP SUBR ENTRY/EXIT
- RJ SSP SET UP REGISTERS
- SB4 B0+
- ZR B3,DQPX IF NO POTS
- RJ DPT DROP POT(S)
- SA1 SSPA CLEAR POT POINTER IN STACK ENTRY
- MX6 -12
- LX6 12
- BX6 X6*X1
- SA6 A1 REWRITE STACK ENTRY
- EQ DQPX RETURN
- DSH SPACE 4,10
- ** DSH - SHUT DOWN DRIVER QUEUE STACK.
- *
- * ISSUE HANG-UP-PHONE DRIVER-TO-IAFEX REQUESTS. THE
- * REQUESTS ARE PLUGGED INTO THE CIRCULAR REQUEST STACK
- * TO BE PROCESSED BY *DRI* ON ITS NEXT CYCLE. THIS
- * CAN CAUSE NO INTERFERENCE WITH DRIVER USE OF THE
- * STACK BECAUSE THE DRIVER WILL HAVE DROPPED. *DSH*
- * WILL BE CALLED FROM *DRI* WHENEVER *DRI* FINDS THAT
- * A CIRCULAR STACK IS EMPTY AND THE SHUTDOWN FLAG IS
- * SET. AFTER COMPLETION, *DSH* WILL SET THE DRIVER
- * STATUS AS *OFF* IN THE DRIVER CIRCULAR STACK POINTER.
- * IF NO ACTIVE DRIVERS REMAIN AND NETWORK IS NOT ACTIVE,
- * THE EXECUTIVE WILL BE ABORTED.
- *
- * ENTRY (X1) = ADDRESS OF CIRCULAR STACK POINTER.
- *
- * USES A - 1, 2, 4, 5, 6.
- * X - 1, 2, 3, 4, 5, 6, 7.
- * B - 2, 3, 4, 7.
- *
- * CALLS CDS.
- DSH SUBR ENTRY/EXIT
- RJ CDS CHECK DRIVER STATUSES
- * INITIALIZE NEW SHUTDOWN.
- SA5 DSHA CURRENT SHUTDOWN POINTER
- NZ X5,DSH1 IF SHUTDOWN IN PROGRESS
- SA2 X1+ READ CIRCULAR STACK POINTER
- MX5 -12
- BX3 -X5*X2 SET FIRST TERMINAL NUMBER OF STACK
- SB2 X3
- PX6 X1,B2 FORMAT SHUTDOWN POINTER
- BX5 X6
- SA6 A5 STORE
- * SET POINTERS FOR ENTERING CIRCULAR STACK REQUESTS.
- DSH1 SA1 X5 (X5) = STACK POINTER ADDRESS
- SB4 10 (B4) = REQUEST LIMIT
- UX5,B2 X5 (B2) = CURRENT TERMINAL NUMBER
- MX6 -12
- BX2 -X6*X1 FIRST TERMINAL NUMBER OF STACK
- AX1 12
- SB7 X2
- BX2 -X6*X1 TERMINAL COUNT
- AX1 12
- SB7 B7+X2 (B7) = LAST TERMINAL + 1 OF STACK
- SA1 X1+B1 READ FIRST
- SB3 A1+1 (B3) = ADDRESS OF IN
- SX6 X1 SET OUT = FIRST
- SA6 B3+B1
- SX7 /TLX/HUP+2000B INITIALIZE REQUEST
- SA6 B3 SET IN = FIRST
- LX7 48
- * FORMAT CIRCULAR STACK REQUEST.
- DSH2 SX3 B2+ SET TERMINAL NUMBER
- TTADD B2,A0,X2,X6 SET TERMINAL TABLE ADDRESS
- SA1 A0+VDCT
- SA2 A0+VDPT
- MX4 12
- BX1 X4*X1
- ZR X1,DSH3 IF NO USER
- SA1 A0+VSTT
- LX1 59-48
- NG X1,DSH3 IF LOGOUT IN PROGRESS
- BX6 X6-X6
- BX4 X4*X2
- SA6 A2 CLEAR VDPT
- * ENTER CIRCULAR STACK REQUEST.
- SA1 B3 GET CURRENT IN POINTER
- BX6 X7+X3 MERGE REQUEST AND TERMINAL NUMBER
- LX4 24
- BX6 X6+X4 MERGE POT POINTER
- SA6 X1 STORE REQUEST IN CIRCULAR STACK
- SX6 X1+B1 ADVANCE IN
- SA6 B3
- SB4 B4-B1 DECREMENT REQUEST COUNT
- * ADVANCE TO NEXT TERMINAL.
- DSH3 SB2 B2+B1 ADVANCE TERMINAL NUMBER
- BX6 X6-X6 ASSUME END OF TERMINALS
- GE B2,B7,DSH4 IF END OF TERMINALS
- NZ B4,DSH2 IF NOT REQUEST LIMIT
- PX6 X5,B2 UPDATE SHUTDOWN POINTER
- * RESET SHUTDOWN POINTER AND SET DRIVER *OFF*.
- DSH4 SA6 DSHA REWRITE SHUTDOWN POINTER
- NZ X6,DSHX IF NOT END OF THIS SHUTDOWN, RETURN
- SA1 X5 READ CIRCULAR STACK POINTER
- SX6 B1 SET DRIVER STATUS = *OFF*
- LX6 49-0
- BX6 X6+X1
- SA6 A1+ REWRITE CIRCULAR STACK POINTER
- EQ DSHX RETURN
- * DSHA - CURRENT SHUTDOWN POINTER.
- *
- * 12/2000B+TN , 48/SPA.
- * TN = CURRENT TERMINAL NUMBER.
- * SPA = CURRENT STACK POINTER ADDRESS.
- DSHA CON 0 CURRENT SHUTDOWN POINTER.
- DVP SPACE 4,10
- ** DVP - DROP *VROT* POT CHAIN.
- *
- * DROP INPUT POT CHAIN POINTED TO BY *VROT*.
- *
- * USES X - 1, 2, 6.
- * A - 1, 6.
- * B - 3, 4.
- *
- * CALLS DPT.
- DVP SUBR ENTRY/EXIT
- SA1 A0+VROT CHECK FOR INPUT POT POINTER
- MX2 -12
- LX2 47-11
- BX6 -X2*X1
- ZR X6,DVPX IF NO POT TO DROP
- LX6 -36
- SB3 X6
- BX6 X2*X1 CLEAR POT POINTER
- SA6 A1
- SB4 B0
- RJ DPT DROP INPUT POT
- EQ DVPX RETURN
- EDR SPACE 4,20
- ** EDR - ENTER DRIVER REQUEST.
- *
- * ENTER DRIVER REQUEST IN TERMINAL TABLE WORD *VDCT*
- * AND SET ACTIVITY BIT IF NETWORK TERMINAL.
- *
- * ENTRY (VDCT) = INTERLOCK CLEAR.
- * (X2) = DRIVER REQUEST.
- *
- * USES X - 1, 2, 6.
- * A - 1, 6.
- *
- * CALLS ABT, /IAFEX4/SAB.
- EDR1 SX6 3REDR
- RJ ABT
- EDR SUBR ENTRY/EXIT
- SA1 A0+VDCT READ VDCT
- MX6 1 SET DRIVER REQUEST
- BX2 X6+X2
- MX6 -12
- BX6 -X6*X1
- NZ X6,EDR1 IF VDCT INTERLOCKED
- BX6 X2+X1
- SA6 A1 REWRITE VDCT
- IFMUX EDRX IF MUX TERMINAL, RETURN
- RJ /IAFEX4/SAB SET ACTIVITY BIT
- EQ EDRX RETURN
- ENP SPACE 4,20
- ** ENP - ENTER POT ENTERS TWO WORDS IN A POT CHAIN AND UPDATES
- * POINTERS IF NECESARY. POT CHAIN MUST BE ZEROED.
- *
- * ENTRY-
- * (X0) = BITS (53 - 36) = CURRENT ADDRESS IN CURRENT POT
- * (X0) = BITS (35 - 18) = FIRST POT IN CHAIN.
- * (X0) = BITS (17 - 0) = CURRENT POT IN CHAIN.
- * (X6) = FIRST WORD TO BE ENTERED.
- * (X7) = SECOND WORD TO BE ENTERED.
- * (B7) = 1 OR 2 INDICATING 1 OR 2 WORD ENTRY.
- *
- * EXIT-
- * (X0) = UPDATED.
- * (X5) = UNCHANGED.
- * (X7) = UNCHANGED.
- * (B7) = UNCHANGED.
- *
- * CALLS GPL.
- ENP2 LX1 36 UPDATE POINTER
- BX6 X6-X6
- IX0 X0+X1
- SA6 B4
- ENP SUBR ENTRY/EXIT
- BX3 X0
- SB3 X0
- LX3 3
- SX1 B7
- TB5 X3+VCPC,VBMP SET LWA+1 OF POT
- LX3 -3-36
- SA6 X3 ENTER FIRST WORD
- SB4 X3+B7 SET NEXT ADDRESS
- EQ B1,B7,ENP1 IF ONE WORD ENTRY
- SA7 X3+B1
- ENP1 NE B4,B5,ENP2 IF NOT END OF POT
- RJ GPL
- MX6 -18
- SX3 B4
- LX6 18
- BX0 -X6*X0
- LX3 36
- SX6 B3
- BX2 X0+X3
- IX0 X2+X6
- EQ ENPX
- EUC SPACE 4,10
- ** EUC - END UCP CONNECTION.
- *
- * ENTRY (X7) = UCP IDENTIFICATION (JSN AND EJTO).
- *
- * EXIT (X1) = RETURN CODE.
- *
- * USES X - 1, 6.
- * A - 1.
- *
- * CALLS SFC.
- EUC SUBR ENTRY/EXIT
- SA1 EUCA SET UP CALL FORMAT
- BX6 X1
- RJ SFC SEND SFCALL
- EQ EUCX EXIT
- EUCA VFD 18/0,18/-1,18/0,6/ENDT
- FMF SPACE 4,15
- ** FMF - FORMAT MODES FIELD.
- *
- * ENTRY (A6) = ADDRESS OF LWA MESSAGE SO FAR.
- *
- * EXIT (A6) = LWA OF MESSAGE INCLUDING EOL.
- *
- * USES X - 1, 2, 6.
- * A - 1, 2, 6.
- * B - 5.
- *
- * CALLS PKW.
- FMF SUBR ENTRY/EXIT
- SX6 2R:
- SB5 60-12 BITS LEFT IN WORD
- SA1 A0+VDCT
- LX1 59-55
- PL X1,FMF1 IF NOT BRIEF MODE
- SA2 =7LBRIEF,
- RJ PKW PACK WORD
- FMF1 LX1 55-50
- PL X1,FMF2 IF NOT TEXT MODE
- SA2 =6LTEXT,
- RJ PKW PACK WORD
- FMF2 SA1 A0+VSTT
- LX1 59-53
- SA2 =10LPROMPT OFF
- NG X1,FMF3 IF NO PROMPT MODE
- SA2 =9LPROMPT ON
- FMF3 RJ PKW
- LX6 B5
- SA6 A6+B1
- MX2 -12
- BX2 -X2*X6
- ZR X2,FMFX IF EOL ALREADY INCLUDED
- BX6 X6-X6
- SA6 A6+B1
- EQ FMFX EXIT
- FPQ SPACE 4,30
- ** FPQ - FILL POT QUEUE.
- *
- * *FPQ* CHECKS THE NUMBER OF POT CHAINS IN THE *TGPM* QUEUES
- * THAT HAVE NOT BEEN USED. IF THE QUEUE IS EMPTY, THE NUMBER
- * OF POT CHAINS TO KEEP IN THE QUEUE (CONTROL VALUE) IS
- * INCREASED BY ONE. IF THE QUEUE IS NON-EMPTY FOR 1000 TIMES,
- * THE CONTROL VALUE IS DECREASED BY ONE. *VMIL* IS THE
- * MINIMUM POT CHAINS TO KEEP IN EACH QUEUE. EACH QUEUE IS
- * FILLED IN A ROUND-ROBIN FASHION FROM WHERE THE LAST FILL
- * COMPLETED. IF THERE IS NOT ENOUGH FIELD LENGTH TO FILL THE
- * QUEUE TO CONTROL VALUE, AS MANY ENTRIES AS POSSIBLE
- * ARE REFILLED, SO THERE MAY NOT ALWAYS BE THE CONTROL
- * VALUE NUMBER OF POT CHAINS IN THE QUEUE. EACH TIME
- * *FPQ* IS EXECUTED, AN ATTEMPT IS MADE TO FILL TO
- * CONTROL VALUE.
- *
- * ENTRY (X1) = *TGPM* QUEUE STATUS WORD.
- * (B2) = LENGTH OF POT CHAIN FOR THIS QUEUE.
- * (B3) = NEXT FILL POINTER.
- * (B4) = PREVIOUS FILL POINTER.
- * (B5) = POT CHAIN COUNT(CONTROL VALUE).
- *
- * EXIT (X0) = UPDATED NEXT FILL POINTER.
- * (X4) = UPDATED PREVIOUS FILL POINTER.
- * (B5) = UPDATED POT CHAIN COUNT (CONTROL VALUE).
- *
- * USES A - 1, 3, 4, 5, 6, 7.
- * X - 0, 1, 2, 3, 4, 5, 6, 7.
- * B - 4, 5, 6, 7.
- *
- * CALLS CFL, RPT.
- FPQ SUBR ENTRY/EXIT
- BX6 X1 SAVE *TGPM* QUEUE STATUS WORD
- SA6 FPQD
- SX4 B0 CLEAR UNUSED CHAIN COUNT
- SX5 B0 CLEAR USED CHAIN COUNT
- MX2 -12
- BX3 -X2*X1
- SB6 X3 GET END OF QUEUE ADDRESS
- AX1 12 GET BEGINNING OF QUEUE ADDRESS
- BX3 -X2*X1
- FPQ1 LT B4,B6,FPQ2 IF NOT END OF QUEUE
- SB4 X3 RESET TO BEGINNING OF QUEUE
- FPQ2 EQ B4,B3,FPQ6 IF END OF PREVIOUS FILL
- SA1 B4
- NZ X1,FPQ3 IF POT CHAIN NOT USED
- SX5 X5+B1 COUNT USED POT CHAINS
- SB4 B4+B1
- EQ FPQ1 CHECK NEXT QUEUE ENTRY
- FPQ3 SB7 B4 (B4) = UPDATED PREVIOUS FILL POINTER
- FPQ4 LT B7,B6,FPQ5 IF NOT END OF QUEUE
- SB7 X3 RESET TO BEGINNING OF QUEUE
- FPQ5 EQ B7,B3,FPQ8 IF END OF PREVIOUS FILL
- SX4 X4+B1 COUNT UNUSED POT CHAINS
- SB7 B7+B1
- EQ FPQ4 CHECK NEXT ENTRY
- FPQ6 SB7 X5
- NE B7,B5,FPQ8 IF NOT EMPTY QUEUE
- SA1 FPQA CLEAR DECREMENT COUNTER
- SB7 B2-VSCL
- ZR B7,FPQ7 IF SHORT POT CHAIN QUEUE
- SA1 FPQB
- FPQ7 SX6 B0
- SA6 A1
- SX1 B5-VMXL
- PL X1,FPQ11 IF QUEUE ALREADY AT MAXIMUM SIZE
- SB5 B5+B1
- EQ FPQ11 CONTINUE
- FPQ8 SA1 FPQA
- SB7 B2-VSCL
- ZR B7,FPQ9 IF SHORT POT CHAIN QUEUE
- SA1 FPQB CHECK DECREMENT COUNTER
- FPQ9 SX6 X1+B1
- SX1 X6-VTHL
- NG X1,FPQ10 IF NOT TIME TO DECREASE QUEUE SIZE
- SX6 B0 RESET COUNTER
- SB7 VMIL
- LE B5,B7,FPQ10 IF QUEUE ALREADY MINUMUM SIZE
- SB5 B5-B1 DECREASE QUEUE SIZE
- FPQ10 SA6 A1 SAVE COUNTER
- FPQ11 SX0 B5 (X0) = UPDATED CHAIN COUNT
- IX6 X0-X4 GET NUMBER OF ENTRIES LEFT TO FILL
- SX1 B4 SAVE CHAIN COUNT AND FILL POINTER
- PX7 X1,B5
- SA7 FPQE
- SX0 B3 (X0) = CURRENT FILL POINTER
- FPQ12 SA6 FPQC
- SX6 X6-1
- NG X6,FPQ15 IF POT QUEUE HAS BEEN FILLED
- RJ CFL CHECK POT SUPPLY
- PL X2,FPQ13 IF MINIMUM OR ABOVE,FILL QUEUE
- SA1 VCPL
- NZ X1,FPQ15 IF FL INCREASE PENDING
- SA1 SPRM INCREMENT THROTTLE FLAG
- SX6 X1+1
- SA6 A1
- EQ FPQ15 RETURN
- FPQ13 SX1 B0
- PX5 X1,B2
- RJ RPT GET POT CHAIN
- ZR X7,FPQ15 IF NOT POTS AVAILABLE
- SA7 X0 PUT POT POINTER IN QUEUE
- SX0 X0+B1 UPDATE CURRENT FILL POINTER
- MX3 -12 CHECK END OF QUEUE
- SA1 FPQD
- BX6 -X3*X1
- BX6 X0-X6
- NZ X6,FPQ14 IF NOT END OF QUEUE
- AX1 12 RESET TO BEGINNING OF QUEUE
- BX0 -X3*X1
- FPQ14 SA1 FPQC DECREMENT FILL COUNTER
- SX6 X1-1
- EQ FPQ12 FILL NEXT QUEUE ENTRY
- FPQ15 SA1 FPQE RESTORE PARAMETERS
- UX4,B5 X1
- EQ FPQX RETURN
- FPQA CON 0 *VTSL* QUEUE NON-EMPTY COUNTER
- FPQB CON 0 *VTLL* QUEUE NON-EMPTY COUNTER
- FPQC CON 0 FILL COUNTER
- FPQD CON 0 CURRENT *TGPM*QUEUE STATUS WORD
- FPQE CON 0 TEMPORARY STORAGE FOR RETURN PARAMETERS
- FSM SPACE 4,15
- ** FSM - FORMAT STATUS MESSAGE.
- *
- * ENTRY (B4) = ADDRESS OF MESSAGE FIELD CONTENTS.
- * (X1) = CUMULATIVE SRU-S.
- *
- * EXIT (A6) = LWA OF MESSAGE.
- * (X7) = MESSAGE WORD COUNT.
- * MESSAGE FORMATTED STARTING AT FSMA.
- *
- * USES X - 1, 2, 3, 5, 6, 7.
- * A - 1, 2, 3, 5, 6, 7.
- * B - 2, 3, 4.
- *
- * CALLS CFD, ZTB.
- FSM SUBR ENTRY/EXIT
- BX7 X1 SAVE ENTRY CONDITIONS
- SA7 FSMB
- SX7 B4
- SA7 A7+B1
- SX7 B3 SAVE TERMINAL NUMBER AND POT POINTER
- PX7 X7,B2
- SA7 A7+B1
- SA1 A0+VFST GET JSN
- MX2 24
- BX2 X2*X1
- SA3 =6L JSN:
- LX2 24
- BX6 X2+X3
- SA6 FSMA
- SA1 A0+VSTT
- MX2 -3
- AX1 12
- BX1 -X2*X1
- SA1 X1+STAA
- SX2 1RS
- BX1 X1+X2
- RJ ZTB CONVERT ZERO CHARACTERS TO BLANKS
- SA1 FSMB GET ENTRY PARAMETERS
- SA5 A1+B1
- SA6 A1
- SA3 FSMC SRU CONSTANT (.0001)
- PX1 X1
- FX1 X3*X1 DIVIDE ACCUMULATOR VALUE BY 1000
- RJ CFD CONVERT TO F10.3 FORMAT
- SB4 X5
- SA5 A5+B1
- UX5,B2 X5 RESTORE POT POINTER AND TERMINAL NUMBER
- SB3 X5
- MX2 36
- BX6 X2*X6
- LX6 36
- SA1 =4LRU:
- BX6 X1+X6
- SA6 A6+B1
- LX7 36
- BX6 X7
- SA6 A6+B1
- SA1 A0+VFNT
- MX3 42
- BX1 X3*X1
- ZR X1,FSM1 IF NO PRIMARY FILE
- SA2 =6L FILE
- LX2 36
- BX6 X2+X7
- LX1 18
- SA6 A6
- SA2 =7L NAME:
- MX3 -18
- BX6 -X3*X1
- BX6 X2+X6
- SA6 A6+B1
- MX2 -12
- BX6 -X2*X6
- ZR X6,FSM1 IF EOL APPENDED
- BX6 X3*X1
- SA6 A6+B1
- FSM1 SA1 B4 CHECK STATUS MESSAGE
- MX2 12
- BX3 X2*X1
- SA1 A1-B1 START LOOP
- SA2 =10H STATUS:
- BX6 X2
- MX2 -12
- NZ X3,FSM2 IF STATUS MESSAGE CURRENT
- SX7 B0 DO NOT ISSUE MESSAGE
- SA7 B4
- FSM2 SX7 A6-FSMC+1
- PL X7,FSM3 IF END OF BUFFER
- SA6 A6+B1
- BX3 -X2*X6
- SA1 A1+B1
- BX6 X1
- NZ X3,FSM2 IF NO EOL
- FSM3 SX7 A6-FSMA+1 SET WORD COUNT
- EQ FSMX EXIT
- FSMA CON 0 JSN
- DATA 10H SYSTEM:
- FSMB BSS 12 MESSAGE BUFFER
- FSMC CON 0.0001P48+1 SRU CONSTANT
- GFN SPACE 4
- ** GFN - GET FILE NAME.
- *
- * GETS FILE NAME FROM *PBUF*, CHECKS FILE FLAG, RETURNS TO
- * CALLING ROUTINE UNLESS AN ERROR WAS DETECTED.
- *
- * ENTRY (B6) = POINTER TO FILE NAME.
- *
- * EXIT (X2) = FILE NAME IF NO ERROR.
- *
- * ERROR TO *IPL* IF INCORRECT FILE NAME.
- *
- * USES X - 1, 2.
- * A - 1, 2.
- GFN SUBR ENTRY/EXIT
- SA1 B6+1 GET ERROR FLAG
- SA2 B6 GET FILE NAME
- LX1 59-36
- NG X1,IPL IF FILE NAME ERROR
- EQ GFNX EXIT
- GOP SPACE 4,10
- ** GOP - GET ONE POT.
- *
- * ENTRY (B3) = POT POINTER IF POT ALREADY RESERVED.
- *
- * EXIT (B3) = POT POINTER.
- * (B4) = POT FWA.
- *
- * CALLS RPT.
- GOP SUBR ENTRY/EXIT
- SX7 B3
- GT B3,GOP1 IF POT ALREADY RESERVED
- PX5 X7,B1
- RJ RPT RESERVE POT
- GOP1 SB3 X7
- LX7 3
- TB4 X7,VBMP
- EQ GOPX EXIT
- GPC SPACE 4,20
- ** GPC - GET POT CHAIN.
- *
- * GETS SUFFICIENT POTS FOR THE NUMBER OF CM WORDS SPECIFIED.
- * IF A POT CHAIN IS PROVIDED BY THE CALLER, *GPC* WILL ADD
- * POTS AS NECESSARY TO THE END OF THE CHAIN. ANY EXTRA POTS
- * WILL BE DROPPED.
- *
- * ENTRY (B3) = FIRST POT OF CHAIN IF ONE PROVIDED.
- * (B6) = CM WORD COUNT.
- *
- * EXIT (X6) = 0, IF CHAIN NOT RESERVED.
- * POT COUNT, IF CHAIN RESERVED.
- * (B3) = FIRST POT OF CHAIN.
- * (B4) = ADDRESS OF FIRST POT.
- *
- * USES X - 1, 5, 6.
- * A - 1, 6.
- * B - 3, 4, 6.
- *
- * CALLS GPL, RPT.
- GPC SUBR ENTRY/EXIT
- SX5 B3
- SX6 B6+7
- AX6 3
- ZR X6,GPCX IF CM WORD COUNT IS ZERO
- SB6 X6
- PX6 X5,B6 SAVE FIRST POT, POT COUNT
- SA6 GPCA
- ZR B3,GPC3 IF NO POTS PROVIDED
- * COMPUTE HOW MANY ADDITIONAL POTS MUST BE RESERVED.
- GPC1 SB6 B6-1
- ZR B6,GPC2 IF ENOUGH POTS PRESENT
- RJ GPL GET POT LINK
- ZR B3,GPC3 IF END OF SUPPLIED POT CHAIN REACHED
- SX5 B3+
- EQ GPC1 LOOP TO END OF CHAIN
- * DROP ANY EXTRA POTS.
- GPC2 SX7 B3
- SB7 B0
- RJ RPL DROP TRAILING POTS
- EQ GPC4 SET UP EXIT CONDITIONS
- * RESERVE ADDITIONAL POTS.
- GPC3 PX5 X5,B6
- RJ RPT REQUEST NEEDED POTS
- SX6 X7+
- ZR X6,GPC6 IF NO POTS WERE RESERVED
- GPC4 SA1 GPCA
- UX1,B6 X1
- SB3 X1
- NZ B3,GPC5 IF A CHAIN WAS SUPPLIED
- SB3 X7+
- GPC5 SX5 B3
- SX6 B6+ RESTORE POT COUNT
- LX5 3
- TB4 X5,VBMP
- EQ GPCX EXIT
- GPC6 SA1 GPCA RESTORE ENTRY POT POINTER
- SB3 X1+
- EQ GPCX EXIT
- GPCA CON 0 FIRST POT, POT COUNT
- GPL SPACE 4,20
- ** GPL - GET POT LINK.
- *
- * THIS ROUTINE IS ONLY USED FOR LOW USAGE ROUTINES WHICH
- * REQUIRE POT LINKS.
- *
- * ENTRY (B3) = CURRENT POT.
- *
- * EXIT (B3) = NEW POT POINTER.
- * = 0 IF AT END OF CHAIN ON ENTRY.
- * (B4) = FWA OF NEW POT.
- *
- * USES A - 3.
- * B - 3, 4.
- * X - 3, 4, 6.
- *
- * CALLS ABT.
- GPL SUBR ENTRY/EXIT
- ZR B3,GPL1 IF TO GET LINK FOR POT ZERO
- SX4 B3
- LX4 58
- TA3 X4,VPLP GET PLT ENTRY
- MX6 48
- BX4 X6*X4
- LX4 4 BYTE * 4
- LX6 X4,B1 BYTE * 8
- IX4 X4+X6 BYTE * 12
- SB3 X4+12
- LX3 X3,B3 GET LINK BYTE
- MX6 -12
- BX3 -X6*X3
- SB3 X3 SET NEW POT
- LX3 3
- TB4 X3,VBMP SET FWA OF NEW POT
- EQ GPLX RETURN
- GPL1 SX6 3RGPL
- RJ ABT
- SB3 B0+
- EQ GPLX EXIT
- GQE SPACE 4,30
- ** GQE - GET QUEUE ENTRY FROM QUEUE.
- *
- * DELETES QUEUE ENTRY FROM QUEUE AND RETURNS ENTRY
- * TO CALLING ROUTINE. THE EXECUTIVE WILL BE ABORTED
- * IF THE QUEUE ENTRY IS DETERMINED TO BE INCORRECT.
- *
- * ENTRY (B5) = TERMINAL NUMBER OF QUEUE ENTRY.
- * (B6) = ADDRESS OF QUEUE POINTER WORD.
- * (B7) = TERMINAL NUMBER LINKED TO QUEUE ENTRY
- * IF NOT FIRST TERMINAL OF QUEUE.
- *
- * EXIT ENTRY REMOVED FROM QUEUE.
- * QUEUE POINTER WORD UPDATED.
- * (B2) = NEXT TERMINAL OF QUEUE (ENTRY TO WHICH
- * CURRENT ENTRY LINKED).
- * = 0 IF NO ENTRIES AFTER CURRENT ENTRY.
- * (B5) = TERMINAL NUMBER LINKED TO QUEUE ENTRY
- * IF NOT FIRST OR LAST TERMINAL OF QUEUE.
- * (X5) = QUEUE ENTRY.
- * = 0 IF NO QUEUE ENTRY FOR TERMINAL.
- *
- * TO ABT+1 IF INCORRECT QUEUE ENTRY.
- * (SSPA) = QUEUE ENTRY.
- *
- * USES A - 1, 6, 7.
- * X - 1, 4, 5, 6, 7.
- * B - 3, 4, 2.
- *
- * CALLS ABT, GRT.
- GQE3 BX2 X1
- LX2 42
- BX7 X2-X7
- SX7 X7
- NZ X7,GQE1 IF NOT FIRST ENTRY IN QUEUE
- BX2 X6*X2
- BX2 X2+X4
- LX2 18
- PX6 X2,B3 UPDATE ENTRY
- SA6 B6+ REWRITE QUEUE POINTER
- GQE SUBR ENTRY/EXIT
- MX2 -12
- SX7 B1
- RJ GRT
- UX1,B3 X4
- BX5 X4
- SB4 TRRTL SET COMMAND TABLE LIMIT
- GE B3,B4,GQE2 IF OUTSIDE TRRT TABLE ABORT
- NG B3,GQE2 IF INCORRECT TRRT ORDINAL
- BX7 X7-X7 CLEAR TABLE ENTRY
- SA7 A4
- BX4 -X2*X5 GET NEXT ENTRY POINTER
- SX7 B5 SET CURRENT ENTRY POINTER
- BX5 X2*X5
- SB2 X4 SET NEXT ENTRY POINTER
- BX5 X5+X7 MERGE TERMINAL NUMBER INTO ENTRY
- SA1 B6
- MX6 42
- UX1,B3 X1
- SB3 B3-B1 DECREMENT ENTRY COUNT
- BX2 X1-X7
- SX2 X2
- NZ X2,GQE3 IF NOT LAST ENTRY IN QUEUE
- BX1 X6*X1
- SX2 B7
- BX1 X1+X2
- NZ B3,GQE1 IF NOT ONLY ENTRY
- BX7 X7-X7
- PX6 X7,B3 UPDATE POINTERS
- SA6 B6+
- EQ GQEX RETURN
- GQE1 PX6 X1,B3 UPDATE ENTRY
- SA6 B6
- SB5 B7 UPDATE PREVIOUS ENTRY
- MX7 48
- RJ GRT
- BX4 X7*X4
- SX6 B2
- BX6 X4+X6
- SA6 A4
- EQ GQEX RETURN
- * PROCESS INCORRECT QUEUE ENTRY.
- GQE2 SB2 B5 SET CURRENT TERMINAL NUMBER
- BX7 X5 SAVE INCORRECT QUEUE ENTRY
- SX6 3RGQE SET ERROR CODE
- SA7 GQEA
- EQ ABT+1 UNCONDITIONALLY ABORT
- GQEA CON 0 SAVE INCORRECT QUEUE ENTRY
- GRI SPACE 4,10
- ** GRI - GATHER RECOVERY INFORMATION.
- *
- * ENTRY (A0) = ADDRESS OF TERMINAL TABLE.
- * (B4) = FWA OF PARAMETER BLOCK.
- *
- * EXIT RECOVERY WORDS SET IN PARAMETER BLOCK.
- *
- * USES X - 1, 2, 3, 6, 7.
- * A - 1, 2, 7.
- GRI SUBR ENTRY/EXIT
- SA1 A0+VROT SET UP MODES
- SX2 34B JOB CONTINUATION FLAG
- BX6 X1*X2 INPUT REQUEST, OUTPUT AVAILABLE
- SX2 40B
- AX1 17-5 FILE FOR OUTPUT
- BX2 X2*X1
- BX6 X6+X2
- SA1 A0+VDCT
- SX2 B1
- AX1 50-0
- BX7 X1*X2 TEXT MODE
- AX1 51-50
- BX3 X1*X2 CURRENT CHARACTER SET
- AX1 55-51
- BX1 X1*X2 BRIEF MODE
- LX7 7
- LX1 1
- BX7 X1+X7
- BX6 X6+X7
- SA1 A0+VSTT
- MX7 -3 SAVE TERMINAL TABLE SUBSYSTEM
- LX7 12
- BX7 -X7*X1
- LX7 18-12
- BX6 X6+X7
- MX7 1
- LX7 55-59
- BX7 X7*X1 EFFECT MODE
- LX7 8-55
- BX6 X6+X7
- MX7 1
- LX7 49-59
- BX7 X7*X1 SCREEN MODE
- LX7 9-49
- BX6 X6+X7
- AX1 18-0
- BX7 X2*X1 INITIAL CHAR SET
- AX1 53-18
- SX2 101B
- BX1 X2*X1 DISABLE TERMINAL CONTROL, NO PROMPT FLAGS
- BX6 X6+X1 MODES COMPLETED
- LX7 15-0 INITIAL CHARACTER SET
- LX3 12-0 CURRENT CHARACTER SET
- BX3 X7+X3
- BX7 X6+X3
- SA1 A0+VCHT READ CHARACTER COUNTS
- SA2 A0+VFST READ INPUT/OUTPUT OVERFLOW COUNT
- SA7 B4+3 WRITE RECOVERY WORD 1
- MX7 -24
- MX6 -12
- LX6 24
- BX7 -X7*X1 SET CHARACTER COUNT
- BX2 -X6*X2 SET OVERFLOW COUNT
- BX7 X7+X2 WRITE RECOVERY WORD 2
- SA7 A7+B1
- EQ GRIX EXIT
- GRT SPACE 4
- ** GRT - GET ENTRY FROM TABLE.
- *
- * ENTRY-
- * (B5) = TERMINAL NUMBER FOR ENTRY TO GET.
- *
- * EXIT-
- * (X4) = ENTRY.
- * (A4) = ADDRESS OF ENTRY.
- * (B5) = UNCHANGED.
- *
- * SCRATCH-
- * X6
- GRT SUBR ENTRY/EXIT
- TA4 B5,VRAP GET ENTRY
- ZR X4,GRT IF NO ENTRY
- MX6 12
- BX6 X6*X4
- NZ X6,GRTX IF ENTRY FOUND
- SA4 X4
- NZ X4,GRTX IF ENTRY FOUND
- SA4 A4+B1
- JP GRTX
- GTA SPACE 4
- ** GTA - GET TERMINAL TABLE ADDRESS.
- *
- * ENTRY (B7) = ADDRESS IN PBUF CONTAINING THE *JSN*.
- * (B7)+1 = ADDRESS IN PBUF CONTAINING THE NUMBER OF
- * CHARACTERS IN THE *JSN*.
- *
- * EXIT (A4) = ADDRESS OF TERMINAL TABLE.
- * (X4) = 0, IF NO TERMINAL FOUND.
- *
- * USES X - 1, 2, 4.
- * A - 1, 2, 4.
- * B - 6, 7.
- GTA2 SA4 B6+ SET TERMINAL TABLE ADDRESS
- GTA SUBR ENTRY/EXIT
- SA1 B7+1
- SA2 B7+ GET THE *JSN*
- UX1,B6 X1 CHECK NUMBER OF CHARACTERS IN *JSN*
- SX4 B0+
- MX1 24 BUILD MASK FOR *JSN*
- SB6 B6-4
- NZ B6,GTAX IF NOT A VALID *JSN*
- TB7 B0,VTTP,LWA LWA+1 OF TERMINAL TABLES
- TB6 VTTL*VPST-VTTL,VTTP FWA OF FIRST NON-PSEUDO TERMINAL
- GTA1 SA4 B6+VFST
- BX4 X4-X2
- BX4 X1*X4
- ZR X4,GTA2 IF *JSN* FOUND
- SB6 B6+VTTL
- LT B6,B7,GTA1 IF MORE TERMINALS TO CHECK
- SX4 B0+ *JSN* NOT FOUND
- EQ GTAX RETURN
- GZP SPACE 4
- ** GZP - GET ZEROED POT.
- *
- * IF X7 NOT = 0 UPON ENTRY,
- * GZP RETURNS THE POT NUMBER THAT WAS PASSED TO GZP, NOT
- * THE POT NUMBER OF THE NEW POT. GZP WILL ALSO ZERO OUT THE
- * POT THAT WAS PASSED TO GZP.
- *
- * ENTRY-
- * (X7) = POT TO BE LINKED ONTO.
- * (B7) = NUMBER OF POTS NEEDED.
- *
- * EXIT-
- * (X7) = NEW POT OR POT LINKED ONTO.
- * (X7) = 0, IF NO POT AVAILABLE.
- *
- * CALLS-
- * RPT, GPL.
- GZP SUBR ENTRY/EXIT
- PX5 X7,B7 GET POTS
- RJ RPT
- ZR X7,GZPX IF NO POT RETURN
- BX1 X7
- SB3 X7
- LX1 3
- TB4 X1,VBMP
- GZP1 BX6 X6-X6
- SB5 B4+VCPC
- GZP2 SA6 B4 CLEAR POT
- SB4 B4+B1
- LT B4,B5,GZP2 IF AT END OF POTS
- RJ GPL GET NEXT POT LINK
- NZ B3,GZP1 IF STILL MORE POTS
- EQ GZPX RETURN
- IDM SPACE 4,10
- ** IDM - ISSUE DAYFILE MESSAGE.
- *
- * FORMAT DAYFILE MESSAGE REQUEST AND PLACE IN PPU
- * REQUEST BUFFER.
- *
- * ENTRY (X6) = ADDRESS OF DAYFILE MESSAGE.
- *
- * USES A - 2, 3, 6.
- * X - 2, 3, 6.
- IDM SUBR ENTRY/EXIT
- SA2 IDMA GET PPU CALL
- SA3 PMSG CHECK REQUEST BUFFER
- IDM1 ZR X3,IDM2 IF VACANT SLOT FOUND
- SX3 A3+1-PITA
- PL X3,IDMX IF END OF REQUEST BUFFER
- SA3 A3+1 CHECK NEXT SLOT
- EQ IDM1
- IDM2 BX6 X2+X6 FORMAT PPU CALL
- SA6 A3 STORE CALL IN REQUEST BUFFER
- EQ IDMX RETURN
- IDMA VFD 18/3L1MA,6/0,12/1,24/0
- IIR SPACE 4,10
- ** IIR - ISSUE INPUT REQUEST.
- *
- * ISSUE TERMINAL INPUT REQUEST MESSAGE, SET READ DATA,
- * AND MAKE INPUT QUEUE ENTRY. THE ADDRESS TO WHICH
- * CONTROL RETURNS AFTER OPERATOR INPUT IS PRESET BY
- * THE CALLER IN (X7) RATHER THAN EXTRACTED FROM THE
- * SUBROUTINE ENTRY POINT AS IN SUBROUTINE *RQI*.
- * B3 AND B5, IF NONZERO, SHOULD CONTAIN VALID POT
- * POINTERS, AS THE POT STRING(S) WILL BE DROPPED IF
- * THE BREAK IN PROGRESS OR LOGOUT FLAG IS SET.
- *
- * ENTRY (VDCT) = INTERLOCK CLEAR.
- * (B3) = POT POINTER FOR MESSAGE.
- * (B4) = MESSAGE LENGTH.
- * (B5) = RETURN POT POINTER.
- * (X6) = MESSAGE ADDRESS.
- * (X7) = REENTRY ADDRESS.
- *
- * EXIT TO (X7) AFTER INPUT (SEE CLI.)
- * (B5) = RETAINED.
- *
- * CALLS CBL, MVA, SRR.
- IIR BSS 0 ENTRY
- RJ CBL CHECK BREAK IN PROGRESS AND LOGOUT FLAGS
- PX6 X6,B4 SAVE MESSAGE POINTERS
- SA6 IIRA
- SX6 B3
- SA6 A6+B1
- RJ SRR SET READ DATA AND REENTRY
- SA1 IIRA RESET MESSAGE POINTERS
- SA2 A1+B1
- UX6,B4 X1
- SB3 X2+
- RJ MVA ISSUE MESSAGE
- EQ PCSX EXIT
- IIRA DATA 0 SAVE MESSAGE PARAMETERS
- DATA 0
- INO SPACE 4,10
- ** INO - ISSUE NULL OUTPUT.
- *
- * FOR A MULTIPLEXER TERMINAL, *INO* SENDS A NULL OUTPUT
- * LINE TO THE TERMINAL TO INSURE THAT THE DRIVER HAS AN
- * INPUT POT. FOR A NETWORK TERMINAL, ANY POTS IN *B3*
- * ARE DROPPED.
- *
- * ENTRY (B3) = POT POINTER IF NONZERO.
- *
- * CALLS ASM, DPT, GOP.
- INO SUBR ENTRY/EXIT
- IFNET INO1 IF NETWORK TERMINAL
- RJ GOP GET ONE POT
- SX6 2R"CB" SET TERMINATOR BYTE IN POT
- SX7 B3
- LX6 48-0
- SA6 B4+2
- RJ ASM ASSIGN MESSAGE
- EQ INOX RETURN
- * DROP NETWORK TERMINAL POT(S) AND RETURN.
- INO1 ZR B3,INOX IF NO POTS, RETURN
- SB4 B0+ DROP POT(S)
- RJ DPT
- EQ INOX RETURN
- LEP SPACE 4,20
- *** LEP - LINK EXISTING POTS.
- *
- * MANIPULATE PLT TO LINK TWO PREVIOUSLY RESERVED POTS
- * OR POT CHAINS.
- *
- * ENTRY (B3) = POT POINTER FOR LEADING POT.
- * (X2) = POT POINTER FOR TRAILING POT.
- *
- * EXIT (X7) = 0, LINKAGE NOT MADE.
- * .NE. 0, LINKAGE MADE.
- *
- * USES X - 1, 6, 7.
- * A - 1, 7.
- * B - 5, 6, 7.
- *
- * CALLS ABT.
- LEP SUBR ENTRY/EXIT
- ZR B3,LEP2 IF NO FIRST POT
- SB5 60
- SB6 B1+B1
- SX7 B3
- LEP1 SX6 3
- BX6 X7*X6
- LX7 58
- SB7 X7
- TA1 B7,VPLP GET PLT ENTRY
- LX7 X6,B6 BYTE NUMBER * 4
- LX6 3 BYTE NUMBER * 8
- IX6 X6+X7 BYTE NUMBER * 12
- SB7 X6+12
- SX7 7777B
- LX6 X1,B7
- BX7 X6*X7
- NZ X7,LEP1 IF ALREADY LINKED
- SB7 B5-B7
- LX6 X2,B7 POSITION NEW POT LINK
- BX7 X1+X6 MERGE NEW LINK
- SA7 A1
- EQ LEPX RETURN
- LEP2 SX6 3RLEP
- RJ ABT
- BX7 X7-X7
- EQ LEPX EXIT
- LTT SPACE 4,10
- ** LTT - LOCATE TERMINAL TYPE.
- *
- * EXIT (X1) = TERMINAL TYPE WORD.
- * (X2) = BASE ADDRESS OF TERMINAL TYPE TABLE.
- * (MULTIPLEXOR TERMINALS ONLY)
- *
- * USES X - 1, 2, 3.
- * A - 1, 2.
- LTT SUBR ENTRY/EXIT
- IFNET LTT1 IF NETWORK TERMINAL
- SA1 A0+VDPT EXTRACT TERMINAL TYPE
- SA2 VDRL LOCATE TERMINAL NAME TABLE
- MX3 -5
- AX2 24 SHIFT DRIVER STACK ADDRESS
- SA2 X2+4
- AX1 12+7
- BX3 -X3*X1
- IX3 X2+X3 READ TERMINAL TYPE WORD
- SA1 X3
- JP LTTX RETURN
- * SET NETWORK TERMINAL TYPE.
- LTT1 SA1 =6LNAMIAF SET TERMINAL TYPE
- EQ LTTX RETURN
- MDA SPACE 4
- ** MDA - MOVE DATA.
- *
- * ENTRY-
- * (B5) = NUMBER OF WORDS TO MOVE.
- * IF (B5) = NEGATIVE, THE MOVE IS FROM LOW CORE TO HIGH CORE.
- * (X2) = FWA TO GET DATA FROM.
- * (X3) = FWA TO STORE DATA AT.
- *
- * USES-
- * A - 1, 6.
- * B - 6.
- * X - 1, 6.
- MDA SUBR ENTRY/EXIT
- NG B5,MDA2 IF MOVE UPWARD
- SB6 B0
- SX3 X3-1
- MDA1 SA1 X2+B6
- SB6 B6+B1
- BX6 X1
- SA6 X3+B6
- LT B6,B5,MDA1 IF MORE DATA TO MOVE
- EQ MDAX
- MDA2 SB6 -B5
- SX3 X3+B1
- MDA3 SA1 X2+B6
- SB6 B6-B1
- BX6 X1
- SA6 X3+B6
- PL B6,MDA3 IF MORE DATA TO MOVE
- EQ MDAX
- MQE SPACE 4
- ** MQE - MAKE QUEUE ENTRY.
- *
- * MAKES ENTRY IN REENTRY QUEUE. THE ENTRY IS PLACED
- * IN THE TERMINAL REENTRY TABLE AND ASSOCIATED QUEUE
- * POINTER IS UPDATED. IF A STACKED ENTRY IS MADE, THE
- * QUEUE POINTER IS PLACED IN BYTE 4 OF THE STACKED
- * ENTRY.
- *
- * ENTRY (B2) = TERMINAL NUMBER.
- * (B7) = QUEUE POINTER.
- * = ZERO IF FOR NULL QUEUE.
- * (X5) BITS 59-12 = FORMATTED QUEUE ENTRY.
- *
- * EXIT ENTRY PLACED IN QUEUE.
- * QUEUE POINTER UPDATED.
- * (X2) = 0, IF CURRENT ENTRY FOR THIS TERMINAL.
- * = 1, IF STACKED BEHIND CURRENT ENTRY.
- * (X6) = QUEUE ENTRY.
- *
- * ERROR CALLS *ABT* IF INCORRECT ENTRY.
- * (MQEA) = INCORRECT QUEUE ENTRY.
- *
- * CALLS ABT, GZP.
- MQE8 SX6 3RMQE
- BX2 X2-X2
- BX7 X5 SAVE INCORRECT ENTRY
- SA7 MQEA
- RJ ABT
- MQE SUBR ENTRY/EXIT
- UX1,B6 X5
- SB5 TRRTL SET COMMAND TABLE LIMIT
- MX4 48
- NG B6,MQE8 IF INCORRECT ENTRY
- GE B6,B5,MQE8 IF INCORRECT ENTRY
- TA1 B2,VRAP
- BX5 X4*X5
- SB5 X1
- NZ X1,MQE4 IF PREVIOUS ENTRY
- MQE1 ZR B7,MQE2 IF NO QUEUE POINTER TO UPDATE
- SA2 B7 UPDATE QUEUE POINTER
- UX3,B6 X2
- SB6 B6+B1 INCREMENT ENTRY COUNT
- SX7 B2
- EQ B6,B1,MQE3 IF QUEUE PREVIOUSLY EMPTY
- MX2 42
- BX2 X2*X3
- SB5 X3 UPDATE PREVIOUS ENTRY
- BX2 X2+X7
- RJ GRT
- BX6 X4+X7
- SA6 A4
- PX6 X2,B6
- SA6 B7
- MQE2 BX6 X5 MAKE ENTRY
- SA6 A1
- SX2 B0+ INDICATE CURRENT ENTRY
- EQ MQEX RETURN
- MQE3 BX2 X7
- LX7 18
- BX2 X2+X7
- PX6 X2,B6
- SA6 B7
- EQ MQE2
- MQE4 MX2 12
- BX2 X2*X1
- ZR X2,MQE5 IF POT NOT NEEDED
- SX2 B7 INDICATE QUEUE IN STACKED ENTRY
- BX6 X5+X2
- SA6 MQEA
- BX7 X7-X7
- SB7 B1 SET NUMBER OF POTS NEEDED
- RJ GZP GET ZEROED POT
- ZR X7,MQE8 IF NO POT AVAILABLE
- LX7 3
- TX5 X7,VBMP
- LX7 15
- BX7 X5+X7
- TA1 B2,VRAP PUT POT POINTER IN REENTRY TABLE
- SA7 A1 SET POT POINTER
- BX6 X1
- SA6 X5 SAVE CURENT ENTRY
- SA1 MQEA
- BX6 X1
- SA6 A6+B1
- SX2 B1 INDICATE STACKED ENTRY
- EQ MQEX RETURN
- MQE5 SB4 B5+B1
- SB6 B5+VCPC-1 ALLOW UP TO 7 QUEUE ENTRIES
- MQE6 SA1 B5
- SB5 B5+B1
- ZR X1,MQE7 IF EMPTY SLOT FOUND
- NE B5,B6,MQE6 IF NOT AT END OF POT
- EQ MQE8
- MQE7 EQ B4,B5,MQE1 IF FIRST ENTRY IN POT
- SX2 B7 INDICATE QUEUE IN STACKED ENTRY
- BX6 X5+X2
- SX2 B1 INDICATE STACKED ENTRY
- SA6 A1 MAKE ENTRY
- EQ MQEX EXIT
- MQEA CON 0
- MVA SPACE 4,20
- ** MVA - MOVE MESSAGE INTO POTS.
- *
- * MOVES A MESSAGE INTO POTS, ADDS A *0001* CONTROL BYTE
- * IF NECESSARY, AND ASSIGNS THE POTS TO TERMINAL OUTPUT.
- *
- * ENTRY (X6) = ADDRESS OF MESSAGE IN DISPLAY CODE FORMAT.
- * (B3) = FIRST POT OF CHAIN IF ONE PROVIDED.
- * (B4) = LENGTH OF MESSAGE.
- * 0, IF MESSAGE IS SIX CM WORDS OR LESS IN LENGTH
- * AND TERMINATES WITH AN EOL.
- *
- * EXIT MESSAGE ASSIGNED TO THE TERMINAL.
- *
- * USES X - 1, 5, 6, 7.
- * A - 1, 6.
- * B - 4, 5, 6, 7.
- *
- * CALLS ASM, CTP, DPT, GPC, GPL.
- MVA SUBR ENTRY/EXIT
- ZR B4,MVA2 IF NO WORD COUNT SPECIFIED
- SB5 2
- RJ CTP COPY MESSAGE TO POTS
- ZR X6,MVA5 IF COPY UNSUCCESSFUL
- LX6 24 SET POT COUNT
- SA6 B4
- SB5 B6-VCPC
- ZR B5,MVA1 IF LAST POT EXACTLY FULL
- SX6 2R"EB" ADD *0001* CONTROL BYTE
- LX7 3
- LX6 48
- TX7 X7,VBMP
- SA6 X7+B6
- MVA1 SX7 B3+
- SX6 B0+ ZERO OUT SECOND WORD OF POT CHAIN HEADER
- BX5 X7
- LX5 3
- TA6 X5+1,VBMP
- RJ ASM ASSIGN MESSAGE TO TERMINAL
- EQ MVAX EXIT
- MVA2 SB6 6
- SA6 MVAA
- RJ GPC GET POT CHAIN OF DEFAULT LENGTH
- ZR X6,MVA5 IF POTS NOT OBTAINED
- SX7 B1 SET POT COUNT FOR MESSAGE
- LX7 24
- SA7 B4
- SA1 MVAA
- SB5 B4+VCPC
- SA1 X1-1
- SB4 B4+2
- MX5 -12
- MVA3 SA1 A1+1 GET NEXT WORD OF MESSAGE
- SB4 B4+B1
- BX6 X1
- SA6 B4-B1 ADD WORD TO POT
- BX6 -X5*X6
- ZR X6,MVA4 IF END OF MESSAGE REACHED
- GT B5,B4,MVA3 IF MORE ROOM IN POT
- MVA4 EQ B4,B5,MVA1 IF NO NEED FOR A *0001* BYTE
- SX6 2R"EB"
- LX6 48
- SA6 B4+
- EQ MVA1 ASSIGN MESSAGE TO TERMINAL
- * IF A MESSAGE CANNOT BE ASSIGNED TO THE TERMINAL, ANY
- * POTS SUPPLIED BY THE CALLER ARE DROPPED TO AVOID POT
- * CANCER.
- MVA5 ZR B3,MVAX IF NO POTS WERE PROVIDED
- SB4 B0+
- RJ DPT DROP POTS
- EQ MVAX EXIT
- MVAA CON 0 MESSAGE ADDRESS
- O6S SPACE 4
- ** O6S - CONVERT 6 DIGITS TO OCTAL DISPLAY CODE WITH TRAILING
- * ZERO FILL.
- *
- * ENTRY-
- * (X1) = NUMBER TO BE CONVERTED.
- *
- * EXIT-
- * (X6) = CONVERTED NUMBER.
- *
- * USES-
- * A - 2.
- * B - 7.
- * X - 2, 3, 7.
- O6S1 SB7 B7-B1
- AX3 6
- AX1 3
- AX7 6
- BX2 -X3*X1
- NZ X2,O6S2 IF NOT ZERO
- BX6 X6+X7
- O6S2 BX6 X2+X6
- ZR X2,O6S3 IF ZERO
- SX7 B0 STOP ZERO SUPPRESS
- O6S3 NZ B7,O6S1 IF STILL MORE DIGITS TO CONVERT
- SA2 =6L000000
- ZR X7,O6S4
- BX6 X6-X7
- O6S4 LX6 24
- IX6 X2+X6
- O6S SUBR ENTRY/EXIT
- SX6 B0
- LX1 18
- MX3 -3
- LX3 36
- SB7 6
- SX7 1R -1R0
- LX7 36
- EQ O6S1
- PCB SPACE 4
- ** PCB - PACKS A COMMAND BUFFER ONE PARAMETER AT A TIME.
- *
- * ENTRY (X1) = FWA OF PARAMETER BUFFER.
- * SEE EXIT CONDITIONS FOR *SSP*.
- *
- * EXIT SEE EXIT CONDITIONS FOR *SSP* (EXCEPT X7).
- * (B4) = FWA POT STORED IN.
- * (B6) = SHIFT COUNT FOR LAST CHARACTER INSERTED.
- * (B7) = LAST WORD OF POT STORED IN.
- *
- * USES X - 1, 2, 3, 4, 5, 7.
- * A - 1, 2, 7.
- * B - 2, 5, 6, 7.
- *
- * NOTE TABLE PROCESSED BY THIS ROUTINE SHOULD HAVE TWO
- * ZERO WORDS TERMINATING IT OR THE COMMAND PACKED
- * BY THIS ROUTINE SHOULD FILL A POT. THESE CONDITIONS
- * TERMINATE TABLE PROCESSING.
- *
- PCB SUBR ENTRY/EXIT
- SB7 B4 SET POT ADDRESS
- SB5 B4+VCPC-1 SET ENDING POT ADDRESS
- MX5 -6
- SX4 B2 SAVE TERMINAL NUMBER
- SA1 X1 READ FIRST PARAMETER
- SA2 A1+B1 READ FIRST SEPARATOR
- UX2,B2 X2 SET CHARACTER COUNT
- PCB1 BX7 X7-X7 CLEAR ASSEMBLY WORD
- SB6 54
- PCB2 SB2 B2-B1
- NG B2,PCB4 IF END OF PARAMETER
- LX1 6 GET CHARACTER
- BX3 -X5*X1
- PCB3 LX3 X3,B6 ENTER CHARACTER
- SB6 B6-6
- BX7 X3+X7
- PL B6,PCB2 IF ASSEMBLY WORD NOT FULL
- SA7 B7 STORE ASSEMBLY WORD
- SB7 B7+B1
- LE B7,B5,PCB1 IF POT NOT FULL
- EQ PCB6 RETURN
- PCB4 SX3 X2 INSERT SEPARATOR
- SA1 A2+B1 GET NEXT PARAMETER
- SA2 A1+B1 GET NEXT SEPARATOR
- UX2,B2 X2
- SX2 X2
- NZ X2,PCB3 IF NOT END OF BUFFER
- PL B2,PCB3 IF NOT END OF BUFFER
- LX3 X3,B6 STORE LAST SEPARATOR
- BX7 X3+X7
- SA7 B7 STORE LAST ASSEMBLY WORD
- EQ B5,B7,PCB6 IF POT FULL
- BX7 X7-X7
- PCB5 SA7 B5 CLEAR REST OF POT
- SB5 B5-B1
- NE B5,B7,PCB5 IF NOT END OF POT
- PCB6 SB2 X4 RESTORE TERMINAL NUMBER
- EQ PCBX RETURN
- PKW SPACE 4,10
- ** PKW - PACK WORD.
- *
- * ENTRY (X2) = WORD TO BE PACKED.
- * (X6) = WORD TO BE PACKED INTO.
- * (B5) = BITS LEFT IN X6.
- * (A6) = LWA OF MESSAGE ALREADY FORMATTED.
- *
- * EXIT ALL ABOVE REGISTERS UPDATED.
- *
- * USES X - 2, 3, 6, 7.
- * A - 6.
- * B - 5, 6.
- PKW SUBR
- PKW1 NZ B5,PKW2 IF ROOM IN WORD
- SA6 A6+B1
- BX6 X6-X6
- SB5 60
- PKW2 MX3 -6
- LX2 6
- BX7 -X3*X2 NEXT CHARACTER
- BX2 X2*X3 CLEAR CHARACTER
- ZR X7,PKWX IF NO CHARACTER
- LX6 6
- BX6 X6+X7
- SB5 B5-6
- EQ PKW1 START NEW WORD
- RCM SPACE 4,10
- ** RCM - RESET CHARACTER MODE.
- *
- * USES X - 1, 2, 7.
- * A - 1, 7.
- RCM SUBR ENTRY/EXIT
- SA1 A0+VSTT
- MX2 -1
- LX2 18
- BX7 -X2*X1 INITIAL CHARACTER SET
- SA1 A0+VDCT
- LX2 51-18
- BX2 X2*X1 CLEAR CURRENT CHARACTER SET
- LX7 51-18
- BX7 X2+X7 MERGE INITIAL CHARACTER SET
- SA7 A1 REWRITE VDCT
- EQ RCMX EXIT
- PLO SPACE 4,10
- ** PLO - PROCESS LIST OPTIONS.
- *
- * ENTRY (LISA) = ADDRESS OF FIRST PARAMETER.
- * (PBUF) = FIRST PARAMETER.
- * (CCMA) = PARAMETER COUNT.
- *
- * EXIT TO *IPL* IF INCORRECT PARAMETER.
- * TO *IED* IF *IEDIT* CALL REQUIRED.
- *
- * CALLS DXB, GFN, SSP, TPF.
- PLO SUBR ENTRY/EXIT
- SA1 PBUF
- SA3 CCMA
- SX6 X3
- SA6 PLOB STORE PARAMETER COUNT
- PLO1 SA1 A1+2 GET NEXT PARAMETER
- SX3 X3-1
- ZR X3,PLO2 IF NO MORE PARAMETERS
- NZ X1,PLO1 IF NOT POSSIBLE STRING
- SA2 A1+B1 CHECK IF DELIMITER
- SB6 X2
- SA2 PLOA
- LX2 B6
- NG X2,IED IF IMPLIED STRING
- EQ PLO1 CONTINUE SEARCH
- PLO2 SA1 LISA GET POINTER
- SX7 X1+2
- SA2 PLOB
- SA7 A1
- SX6 X2-1
- ZR X6,PLOX IF ALL PARAMETERS PROCESSED
- SA6 A2
- SA1 X7
- SA2 A1-B1
- SA4 PLOC GET INCORRECT SEPARATOR MASK
- SB6 X2
- LX4 B6
- NG X4,IED IF AN INCORRECT SEPARATOR
- ZR X1,IED IF A NULL PARAMETER
- SX4 1RF
- SX3 1RR
- BX2 X1
- LX2 6
- BX4 X2-X4
- BX3 X2-X3
- ZR X4,PLO7 IF FILE NAME OPTION
- ZR X3,PLO8 IF *R* OPTION
- * LINE NUMBER PROCESSOR.
- SA4 LISC
- NZ X4,IED IF MORE THAN ONE LINE SPECIFICATION
- PLO3 BX6 X1
- SB7 B1
- BX4 X6
- LX4 6
- SA6 A4
- SX6 1R*
- BX4 X4-X6
- ZR X4,PLO4 IF BOI OR EOI
- BX5 X1
- RJ DXB TRANSLATE LINE NUMBER
- RJ SSP RESET PARAMETER REGISTERS
- NZ X4,IED IF INCORRECT NUMBER
- EQ PLO5 CONTINUE SCAN
- PLO4 SX6 B1+
- SA6 LISD SET LINE RANGE FLAG
- PLO5 SA1 A1+B1
- SA2 A1+B1 GET NEXT PARAMETER
- NZ X2,PLO2 IF NOT NULL PARAMETER
- SB6 X1
- SA2 A2+B1 EXAMINE SEPARATOR
- SB6 -B6
- SB6 B6+X2
- NZ B6,PLO2 IF NOT ALIKE, NOT ELIPSIS
- SX6 X1-1R.
- NZ X6,IED IF NOT AN ELLIPSIS
- SA1 LISA SKIP LINE RANGE
- SX6 X1+4
- SA6 A1
- SA1 PLOB
- SX6 X1-2
- SA6 A1
- SA1 A2+B1 GET SECOND LINE NUMBER
- SA4 LISE LAST LINE NUMBER
- NZ X4,IED IF ALREADY SPECIFIED
- SX6 B1
- SA6 A4-B1
- EQ PLO3 CHECK VALIDITY
- * FILE NAME OPTION.
- PLO7 SA1 LISA SET PARAMETER ADDRESS
- SX7 X1+2
- SA7 A1
- SA1 X1+B1
- SX1 X1-1R=
- SA3 PLOB
- NZ X1,IED IF NOT *=*
- SX6 X3-1 DECREMENT PARAMETER COUNT
- SA6 A3
- SB6 X7
- RJ GFN GET FILE NAME
- SA1 LISB
- NZ X1,IED IF MORE THAN ONE FILE PARAMETER
- BX6 X2
- SA6 A1
- EQ PLO2 CONTINUE PROCESSING
- * *R* OPTION, NOW REPLACED WITH EXTERNAL COPY.
- PLO8 SMA X6,( USE SCOPY FOR FILE STRUCTURE."NL")
- RJ SSP
- EQ PCS5 ISSUE MESSAGE
- PLOA CON 74000000000033727777B STRING DELIMITER MASK
- PLOB CON 0 PARAMETER COUNT
- PLOC CON 50000000000000000000B INCORRECT SEPARATOR MASK
- PMR SPACE 4,15
- ** PMR - PROCESS MONITOR REQUEST.
- *
- * ENTRY (B3) = POT POINTER TO PARAMETER BLOCK.
- * (B4) = ADDRESS OF PARAMETER BLOCK.
- *
- * EXIT TO CALLER, EITHER DIRECTLY OR VIA PCS.
- * (X2) = CONTENTS OF ERROR CODE FIELD.
- *
- * USES X - 1, 2, 5, 6, 7.
- * A - 1, 2, 6, 7.
- * B - 7.
- *
- * CALLS ABT.
- *
- * MACROS SYSTEM.
- PMR SUBR ENTRY/EXIT
- PMR1 SYSTEM EJT,,B4
- SA1 B4
- LX1 59-0
- SX5 PMR2$
- SA2 PMRX GET REENTRY ADDRESS
- LX2 30
- SX7 X2
- PL X1,PCS1 IF NOT COMPLETE
- * REENTER HERE WHEN REQUEST IS COMPLETE.
- PMR2 SB7 X7
- SA1 B4
- LX1 -10
- MX2 -8
- BX2 -X2*X1
- ZR X2,PMR3 IF NO ERRORS
- SX6 X2-RTER
- NZ X6,PMR2.1 IF NOT IMMEDIATE RETRY
- SX6 1-RTER
- EQ PMR2.2 RETRY REQUEST AFTER REENTRY
- PMR2.1 SX6 X2-REER
- NZ X6,PMR2.3 IF NOT RECOVERABLE DISK ERROR
- SX6 RTYDL-RTER RETRY REQUEST AFTER DELAY
- PMR2.2 SX5 PMR4$ SET REENTRY ADDRESS
- IX6 X6+X1 SET DELAY COUNTER
- LX6 10
- SA6 A1
- EQ PCS1 REENTER AND DELAY
- PMR2.3 SX6 X2-ISER
- ZR X6,PMR3 IF INCORRECT SERVICE CLASS
- SX6 X2-SFER
- ZR X6,PMR3 IF SERVICE CLASS FULL
- SX6 X2-JFER-1
- PL X6,PMR3 IF NO ABT CALL
- SA7 PMRA SAVE REENTRY ADDRESS
- SX7 X2
- SA7 A7+B1
- RJ UEC PROCESS ERROR CODE
- SA1 PMRA
- SB7 X1
- SA2 A1+B1
- PMR3 JP B7 RETURN TO CALLER
- PMR4 SX5 PMR4$ DECREMENT DELAY COUNTER
- SX6 1S10
- SA1 B4
- IX6 X1-X6
- SA6 A1
- SX1 X6
- AX1 10
- NZ X1,PCS1 IF NOT TIME TO REISSUE REQUEST
- LX7 30 RESET ENTRY
- SA7 PMRX
- SA1 B4 CLEAR COMPLETE BIT
- MX2 -1
- BX6 X2*X1
- SA6 A1
- EQ PMR1 REENTER REQUEST
- PMRA CON 0 SAVE REENTRY ADDRESS
- CON 0 SAVE ERROR CODE
- PPB SPACE 4,15
- ** PPB - PRESET PARAMETER BLOCK.
- *
- * ENTRY (A0) = TERMINAL TABLE ADDRESS.
- * (B4) = FWA OF PARAMETER BLOCK.
- * (X7) = FUNCTION CODE.
- *
- * EXIT WORDS 1 - 5 CLEARED.
- * (X6) = 0.
- * (A7) = (B4).
- * FOR RCEJ - (X7) = (WD 0) = FUNCTION CODE*2.
- * FOR ALL OTHERS - (X7) = (WD 0) = JSN, FUNCTION CODE.
- * - (X2) = EJT ORDINAL.
- *
- * USES X - 1, 2, 6, 7.
- * A - 1, 6, 7.
- PPB1 SA7 B4 SET WORD 0
- BX6 X6-X6 CLEAR WORDS 1 - 5
- SA6 A7+1
- MX1 EJPB-2
- ERRNG VCPC-EJPB EJT RA+1 PARAMETER BLOCK LARGER THAN POT
- PPB2 LX1 1
- SA6 A6+B1
- NG X1,PPB2 IF MORE WORDS TO CLEAR
- PPB SUBR ENTRY/EXIT
- LX7 1
- MX6 24
- SX2 X7-RCEJ*2
- ZR X2,PPB1 IF RCEJ REQUEST
- SA1 A0+VFST
- BX2 X6*X1 JSN
- BX7 X2+X7
- SA1 A0+VUIT
- MX2 -12
- BX2 -X2*X1 EJT ORDINAL
- EQ PPB1 CONTINUE
- RPL SPACE 4,15
- ** RPL - RESET POT LINK.
- *
- * DROPS POTS THAT FOLLOW A SPECIFIED POT ON POT CHAIN
- * UP TO AND INCLUDING A SECOND SPECIFIED POT.
- *
- * ENTRY (X7) = POT AFTER WHICH TO DROP POTS.
- * (B7) = LAST POT TO DROP.
- *
- * USES X - 1, 2, 3, 5, 6, 7.
- * A - 1, 6.
- * B - 3, 4.
- *
- * CALLS ABT, DPT.
- RPL1 SX6 3RRPL
- RJ ABT
- RPL SUBR ENTRY/EXIT
- ZR X7,RPL1 IF ATTEMPTING TO DROP POTS AFTER ZERO
- LX7 58
- TA1 X7,VPLP READ PLT ENTRY
- MX5 48
- BX2 X5*X7 GET BYTE * 12
- LX2 4 BYTE * 4
- LX3 X2,B1 BYTE * 8
- IX2 X2+X3 BYTE * 12
- SB4 X2+12
- LX1 X1,B4 POSITION LINK BYTE
- BX2 -X5*X1
- ZR X2,RPLX IF END OF CHAIN RETURN
- BX6 X5*X1 CLEAR LINK BYTE
- SB3 X2
- SB4 B4-60 REPOSITION PLT WORD
- AX6 X6,B4 RESTORE PLT ENTRY WORD
- SA6 A1
- SB4 B7
- RJ DPT
- EQ RPLX RETURN
- RPT SPACE 4,25
- ** RPT - RESERVE POT(S).
- * A POT OR POTS WILL BE RESERVED. IF THERE ARE NOT ENOUGH
- * AVAILABLE *IAFEX* WILL BE ABORTED.
- *
- * ENTRY-
- * (X5) BYTE 4 = CURRENT POT. IF CURRENT POT = 0, A NEW CHAIN
- * WILL BE STARTED.
- * (X5) BYTE 0 = 200N, WHERE N = NUMBER OF POTS REQUESTED.
- *
- * EXIT-
- * (X7) = FIRST POT RESERVED OR IF A NEW CHAIN WAS NOT
- * STARTED THE POT NUMBER THAT THE NEW POT WAS LINKED
- * ONTO(THE POT NUMBER THAT WAS IN X5 UPON ENTRY
- * TO RPT).
- * (X7) = 0, IF THE REQUEST CANNOT BE SATISFIED.
- * (X1) = LAST POT RESERVED.
- *
- * USES A - 1, 2, 6 ,7.
- * B - 3, 4, 5, 6, 7.
- * X - 1, 2, 3, 4, 5, 6, 7.
- *
- * CALLS ABT.
- RPT SUBR ENTRY/EXIT
- BX7 X5 SAVE REQUEST
- SA7 RPTA
- SA1 VPAL GET TOTAL NUMBER OF POTS AVAILABLE
- SA2 VPUL GET NUMBER OF POTS IN USE
- UX3,B7 X5 FIND NUMBER OF POTS REQUESTED
- BX7 X3 SET RETURN POT POINTER
- ZR B7,RPT3 IF BAD POT COUNT
- NG B7,RPT3 IF BAD POT COUNT
- SX6 X2+B7
- IX1 X1-X6
- NG X1,RPT3 IF NOT ENOUGH POTS AVAILABLE
- SB3 3
- LX4 X1,B3
- SX4 X4-VFLI SET LAST SEGMENT USED FLAG
- PL X4,RPT0 IF MORE THAN ONE INCREMENT SEGMENT FREE
- SA6 SPRG
- RPT0 SA6 A2 UPDATE POTS IN USE COUNT
- MX5 48
- TB6 0,VPLP SET FWA OF PLT
- MX4 -4 (X4) = -17B
- SA1 B6 READ FIRST ENTRY
- SB5 -48
- RPT1 BX6 -X4*X1 GET RESERVATION BITS
- IX6 X4+X6
- SA1 A1+1 READ NEXT ENTRY
- ZR X6,RPT1 IF NO FREE POTS
- NX6 X6,B3 GET BYTE NUMBER + 44
- SA1 A1-B1
- SX6 B1 SET RESERVATION BIT
- LX6 47
- SB4 A1-B6 SET RELATIVE WORD ADDRESS
- AX6 X6,B3 POSITION RESERVATION BIT
- SX2 -44/4+B4 BUILD PARTIAL POT POINTER
- BX6 X1+X6 RESERVE POT
- SA6 A1
- LX2 2
- SX1 X2+B3 ADD BYTE NUMBER TO COMPLETE POT POINTER
- SB7 B7-1 DECREMENT POTS NEEDED
- ZR X3,RPT2 IF START OF NEW CHAIN
- LX3 58 UPDATE PREVIOUS WORD
- SA2 B6+X3
- BX3 X5*X3 GET BYTE * 12
- LX3 4 BYTE * 4
- LX6 X3,B1 BYTE * 8
- IX6 X3+X6 BYTE * 12
- SB3 X6+B5 SET BYTE * 12 - 48
- AX6 X1,B3 POSITION LINK POINTER
- BX6 X2+X6 MERGE LINK POINTER
- SA6 A2
- ZR B7,RPTX IF REQUEST FILLED
- BX3 X1 SET POT TO ADD LINK BYTE TO
- SA1 A1
- EQ RPT1
- RPT2 BX7 X1 SET RETURN POINTER
- ZR B7,RPTX IF REQUEST FILLED
- BX3 X1
- SA1 A1
- EQ RPT1
- RPT3 SX6 3RRPT
- RJ ABT
- BX7 X7-X7
- EQ RPTX
- RPTA CON 0 CURRENT POT REQUEST
- RQI SPACE 4,10
- ** RQI - REQUEST INPUT.
- *
- * ISSUE TERMINAL INPUT REQUEST MESSAGE, SET READ DATA,
- * AND MAKE INPUT QUEUE ENTRY. THE ADDRESS TO WHICH
- * CONTROL RETURNS AFTER OPERATOR INPUT IS EXTRACTED
- * FROM THE SUBROUTINE ENTRY POINT RATHER THAN PRESET
- * BY THE CALLER IN (X7) AS IN SUBROUTINE *IIR*.
- *
- * ENTRY (VDCT) = INTERLOCK CLEAR.
- * (B3) = POT POINTER FOR MESSAGE.
- * (B4) = MESSAGE LENGTH.
- * (B5) = RETURN POT POINTER.
- * (X6) = MESSAGE ADDRESS.
- *
- * EXIT TO CALL AFTER INPUT (SEE CLI.)
- * (B5) = RETAINED.
- *
- * CALLS IIR.
- RQI SUBR ENTRY (EXIT THROUGH *IIR*)
- SA1 RQI SET REENTRY ADDRESS
- AX1 30
- SX7 X1
- JP IIR REQUEST INPUT
- RST SPACE 4,10
- ** RST - RESTART SUSPENDED JOB.
- *
- * ENTRY SEE SSP.
- * (B3) = INPUT POT POINTER.
- * (PBUF) = OPERATOR INPUT.
- * *CR* = CONTINUE.
- * *P* = CONTINUE BUT DROP OUTPUT.
- * OTHER = END JOB.
- RST BSS 0 ENTRY
- SA1 PBUF
- ZR X1,RST1 IF *CR* - CONTINUE JOB
- LX1 -54
- SX6 B1
- SX1 X1-1RP
- NZ X1,STO IF NOT *P* NOR *CR* THEN TERMINATE JOB
- SA2 A0+VROT
- LX6 4-0
- BX6 -X6*X2 CLEAR OUTPUT AVAILABLE FLAG
- SA6 A2+
- * RESTART JOB.
- RST1 RJ INO ISSUE NULL OUTPUT
- SA1 A0+VROT
- SX6 137B
- BX6 X1*X6
- SX6 X6-1
- ZR X6,RDY IF NO ACTIVITY
- EQ RES RESTART JOB
- SFC SPACE 4,10
- ** SFC - SEND SFCALL.
- *
- * PARAMETER BLOCK FORMAT =
- *T 6/ REPLY,12/ FCN PARAM,18/ UCP ADDR,18/ SCP ADDR,6/FCN CD
- *T 24/ UCP JSN,24/0,12/ UCP EJTO
- *
- * ENTRY (X6) = FORMATTED FIRST WORD OF MESSAGE.
- * (X7) = UCP IDENTIFICATION (JSN AND EJTO).
- *
- * EXIT (X1) = RETURN CODE.
- * (X7) = UNCHANGED.
- *
- * USES X - 1, 4, 6, 7.
- * A - 1, 4, 6, 7.
- * B - 2.
- *
- * MACROS SFCALL.
- SFC SUBR ENTRY/EXIT
- SA6 SFCA
- SA7 A6+B1
- SFCALL SFCA,R
- SA1 SFCA CHECK RETURN CODE
- SA4 A1+B1 RESET UCP ID
- BX7 X4
- MX6 6
- BX1 X6*X1
- EQ SFCX EXIT
- SFCA BSS 2 BUFFER FOR SENDING SFCALL
- SLF SPACE 4,20
- ** SLF - SET LOGOUT FLAG.
- *
- * SETS LOGOUT FLAG IN TERMINAL TABLE.
- *
- * EXIT (VSTT) = LOGOUT FLAG BIT 48 SET.
- *
- * USES A - 1, 6.
- * X - 1, 6.
- SLF SUBR ENTRY/EXIT
- SA1 A0+VSTT READ VSTT ENTRY
- SX6 B1 SET LOGOUT FLAG
- LX6 48-0
- BX6 X6+X1
- SA6 A1 REWRITE VSTT ENTRY
- EQ SLFX RETURN
- SRC SPACE 4
- ** SRC - SET RUN COMPLETE MESSAGE FLAG.
- *
- * USES-
- * A - 1, 6.
- * B - NONE.
- * X - 1, 6.
- SRC SUBR ENTRY/EXIT
- SA1 A0+VSTT
- SX6 B1
- LX6 51
- BX6 X1+X6
- SA6 A1
- EQ SRCX RETURN
- SRR SPACE 4
- ** SRR - SET READ DATA AND REENTRY.
- *
- * SET UP INPUT REENTRY REQUEST AND SET *READ DATA*
- * BIT. A POT POINTER MAY BE PASSED IN B5 AND RETURNED
- * IN B5 BY *CLI* AFTER INPUT.
- *
- * ENTRY (VDCT) = INTERLOCK CLEAR.
- * (B5) = RETURN POT POINTER
- * (X7) = REENTRY ADDRESS.
- *
- * EXIT (VDCT) = *READ DATA* BIT SET.
- * INP$ QUEUE ENTRY MADE.
- *
- * USES A - 1, 7.
- * X - 1, 5, 6, 7.
- * B - 7.
- *
- * CALLS MQE.
- SRR SUBR ENTRY/EXIT
- SX5 INP$ SET UP QUEUE ENTRY
- LX7 24
- SX1 B5 SET RETURN POT POINTER
- MX6 -12
- LX5 48
- BX1 -X6*X1
- IX7 X5+X7 MERGE QUEUE POINTER AND REENTRY
- LX1 12
- BX5 X7+X1 MERGE RETURN POT POINTER
- SB7 B0+ INDICATE NULL QUEUE
- RJ MQE MAKE QUEUE ENTRY
- SA1 A0+VDCT SET *READ DATA*
- SX6 B1
- LX6 54-0
- BX7 X6+X1
- SA7 A1
- EQ SRRX RETURN
- SSI SPACE 4,10
- * SSI - SEND SRU AND CHARACTER COUNT INFORMATION.
- *
- * ENTRY (B4) = FWA OF *EJT* CALL PARAMETER BLOCK.
- * (X6) = TIMEOUT MESSAGE FLAG.
- *
- * EXIT TERMINAL TIMEOUT, SRU AND CHARACTER COUNT MESSAGES
- * ASSIGNED.
- *
- * CALLS CFD, MVA, SFN, SSP.
- *
- * MACROS CLOCK.
- SSI SUBR ENTRY/EXIT
- SA6 SSIH SAVE TIMEOUT FLAG
- SA1 A0+VUIT GET USER NAME
- MX2 42
- BX1 X2*X1
- SA3 =3LUN=
- LX1 42
- BX1 X1+X3
- RJ SFN SPACE FILL USER NAME
- SA6 SSIC
- SA1 A0+VFST
- SA2 =6L JSN=
- MX3 24
- BX1 X1*X3
- LX1 24
- BX6 X1+X2
- LX6 12
- SA6 SSIE
- SA5 B4+4 READ TERMINAL CHARACTER COUNTS
- SA1 B4+B1 SET ACCUMULATED SRU-S
- AX1 12
- SA3 FSMC SRU CONSTANT (.0001)
- PX1 X1
- FX1 X3*X1 DIVIDE ACCUMULATOR VALUE BY 1000
- RJ CFD CONVERT TO F10.3 FORMAT
- SA6 SSIF
- MX0 -12 COMPUTE TOTAL CHARACTER COUNT
- MX1 -24
- BX0 -X0*X5
- LX5 -12
- BX1 -X1*X5
- IX1 X1+X0
- RJ CFD CONVERT TO F10.3 FORMAT
- SX7 1R=&1R
- LX7 54
- BX6 X6-X7
- SA6 SSIG SET CHARACTER COUNT
- CLOCK SSID
- RJ SSP RESET REGISTERS
- SB4 SICL SET MESSAGE LENGTH
- SX6 SSIC SET MESSAGE ADDRESS
- SA1 SSIH
- ZR X1,SSI1 IF NO TIMEOUT MESSAGE
- SB4 SIAL RESET MESSAGE LENGTH AND ADDRESS
- SX6 SSIA
- SSI1 RJ MVA MOVE MESSAGE
- EQ SSIX EXIT
- SSIA DATA 30L"EM""NL"TERMINAL TIME OUT - JSN =
- SSIB DATA 5LJSNA.
- SSIC DATA 10HUN=USERNAM
- DATA 10H LOG OFF
- SSID DATA 10H HH.MM.SS.
- DATA 1L EOL
- SSIE DATA 10HJSN=JSNA
- DATA 10H SRU-S=
- SSIF DATA 10H 12345.678
- DATA 1L EOL
- DATA 10HCHARACTERS
- SSIG DATA 10H=12345.678
- DATA 4LKCHS EOL
- SICL EQU *-SSIC
- SIAL EQU *-SSIA
- SSIH CON 0 TIMEOUT MESSAGE FLAG
- SSP SPACE 4,10
- ** SSP - RESET PARAMETERS FROM STACK ENTRY.
- *
- * ENTRY (SSPA) = STACK ENTRY PARAMETER WORD.
- *
- * EXIT (A0) = FWA OF USER TERMINAL TABLE.
- * (X5) = STACK ENTRY (SSPA).
- * (X7) = STACK ENTRY BITS 47-24, RIGHT JUSTIFIED.
- * (B2) = STACK ENTRY BITS 11-0 (TERMINAL NUMBER).
- * (B3) = STACK ENTRY BITS 23-12 (POT POINTER).
- * (B4) = ((B3) * 10B) + VBMP (POT ADDRESS).
- *
- * USES A - 5.
- * X - 1, 2.
- SSP1 MX1 -12
- BX2 -X1*X5
- SB2 X2 (B2)
- TTADD X2,A0,X2,X7 (A0)
- BX7 X5
- AX7 12
- BX2 -X1*X7
- MX1 -24
- SB3 X2 (B3)
- LX2 3
- TB4 X2,VBMP (B4)
- AX7 12
- BX7 -X1*X7 (X7)
- SSP SUBR ENTRY/EXIT
- SA5 SSPA (X5)
- EQ SSP1
- SSS SPACE 4,20
- ** SSS - SET SSP PARAMETERS.
- *
- * INITIALIZE LOCATION *SSPA* FOR *SSP* CALLS.
- *
- * ENTRY (B2) = TERMINAL NUMBER.
- * (B3) = POT POINTER.
- * (X7) = 24/ANYTHING.
- *
- * EXIT (SSPA) = SET.
- * (A0) = (B2) TERMINAL TABLE ADDRESS.
- * (B4) = (B3) POT ADDRESS.
- * (X5) = (SSPA).
- *
- * USES A - 6.
- * X - 1, 2, 5, 6.
- SSS SUBR ENTRY/EXIT
- TTADD B2,A0,X5,X2 SET (A0) = TERMINAL TABLE ADDRESS
- MX2 -24
- BX5 -X2*X7 MASK (X7)
- MX2 -12
- LX5 24
- SX1 B3 SET (B3)
- BX1 -X2*X1
- LX1 12
- BX5 X5+X1
- SX1 B2 SET TERMINAL NUMBER
- BX1 -X2*X1
- IX5 X5+X1
- BX6 X5 STORE *SSPA*
- SA6 SSPA
- ZR B3,SSSX IF NO (B3) POT POINTER
- SX1 B3 SET POT ADDRESS
- LX1 3
- TB4 X1,VBMP
- EQ SSSX RETURN
- TPF SPACE 4
- ** TPF - TEST PRIMARY FILE NAME.
- *
- * ENTRY-
- * (X1) = NAME TO BE COMPARED AGAINST.
- *
- * EXIT-
- * (X1) = NAME COMPARED AGAINST.
- * (X2) = ((A0+VFNT))
- * (X6) = 0, IF NAME SAME AS PRIMARY FILE NAME.
- *
- * USES-
- * X3, X4.
- TPF SUBR ENTRY/EXIT
- SA2 A0+VFNT
- MX3 42
- BX4 X3*X2
- BX6 X1-X4
- EQ TPFX
- UCP SPACE 4,10
- ** UCP - UPDATE CONVERTED POINTER WORD.
- *
- * CONVERT SPECIFIED VALUE TO DECIMAL DISPLAY CODE.
- * CODE ADAPTED FROM *COMCCDD*.
- *
- * ENTRY (A1) = *VANL* OR *VTNL*.
- * (X6) = VALUE.
- *
- * EXIT WORD *VCAL* OR *VCTL* UPDATED.
- *
- * USES X - 1, 2, 3, 4, 5, 6, 7.
- * A - 2, 3, 5, 6.
- * B - 4, 5, 6.
- UCP SUBR ENTRY/EXIT
- SA2 UCPA
- SA3 A2+1
- SA5 A3+1 (X5) = BACKGROUND
- SB4 1R0-1R (B4) = CONVERSION
- SB5 6
- PX1 X6
- SB6 -B5
- UCP1 DX6 X2*X1 EXTRACT REMAINDER
- FX1 X2*X1
- SX4 X1
- LX5 -6
- SB6 B6+B5 ADVANCE SHIFT COUNT
- FX6 X3*X6 EXTRACT DIGIT
- SX7 X6+B4 CONVERT DIGIT
- IX5 X5+X7 ADVANCE ASSEMBLY
- NZ X4,UCP1 IF REMAINDER .NE. ZERO
- LX6 X5,B6 LEFT JUSTIFY ASSEMBLY
- SA6 A1+VCTL-VTNL
- ERRNZ VCAL-VCTL-1 CODE REQUIRES CONTIGUOUS WORDS
- ERRNZ VANL-VTNL-1 CODE REQUIRES CONTIGUOUS WORDS
- EQ UCPX RETURN
- UCPA CON 0.1P48+1
- CON 10.0P
- CON 10L
- UEC SPACE 4,10
- ** UEC - UNEXPECTED ERROR CODE PROCESSOR.
- *
- * ENTRY (X2) = ERROR CODE.
- *
- * EXIT TO ABT.
- *
- * USES X - 6.
- * A - 6.
- *
- * CALLS ABT.
- UEC SUBR ENTRY/EXIT
- SX6 B3 SAVE PARAMETER BLOCK POT POINTER
- LX6 12
- BX6 X2+X6
- SA6 UECA STORE ERROR CODE
- SX6 3RUEC
- RJ ABT ABORT PROCESSOR
- EQ UECX EXIT
- UECA CON 0 UNEXPECTED ERROR CODE
- UQS SPACE 4
- ** UQS - UPDATE QUEUE STACK.
- *
- * PACKS UP THE TERMINALS REENTRY STACK. THE NEXT
- * QUEUE ENTRY WILL BE PLACED IN THE QUEUE INDICATED
- * IN BYTE 4 OF THE STACKED ENTRY.
- *
- * ENTRY (B2) = TERMINAL NUMBER.
- *
- * EXIT TERMINAL REENTRY QUEUE UPDATED.
- * STACKED QUEUE POTS DROPPED IF QUEUE EMPTIED.
- *
- * CALLS DPT, MQE.
- UQS SUBR ENTRY/EXIT
- TA1 B2,VRAP
- ZR X1,UQSX IF NO ENTRY TO UPDATE
- MX2 12
- BX2 X2*X1
- NZ X2,UQSX IF NO STACKED ENTRIES
- SA3 X1 GET FIRST ENTRY IN QUEUE
- NZ X3,UQSX IF ENTRY PLACED BACK IN QUEUE
- SX7 B2 SET A0
- TTADD X7,A0,X7,X5
- SX7 B0 CLEAR NEXT ENTRY POINTER
- SB5 X1+1 SET NEXT ENTRY ADDRESS
- SA7 UQSA
- SB7 X1+VCPC SET POT LIMIT
- * LOCATE NEXT ENTRY.
- UQS1 SA5 B5 GET NEXT ENTRY
- SB5 B5+B1
- NZ X5,UQS2 IF ENTRY FOUND
- LT B5,B7,UQS1 IF END OF POT NOT REACHED
- UQS2 BX6 X5 SAVE NEXT ENTRY TO BE PROCESSED
- SA6 A7
- SA7 A5+ CLEAR ENTRY POSITION
- EQ B5,B7,UQS5 IF STACK EMPTY
- SB6 X1+1 SET INSERT POINTER FOR MOVE
- * PUSH UP STACK.
- UQS3 SA5 B5 GET NEXT ENTRY
- ZR X5,UQS4 IF NULL ENTRY
- BX6 X5 MOVE ENTRY
- SA6 B6
- SA7 B5 CLEAR ENTRY POSITION
- SB5 B5+1 INCREMENT POINTERS
- SB6 B6+1
- NE B5,B7,UQS3 IF NOT END OF POT
- UQS4 SA5 X1+1 CHECK POT ENTRY
- NZ X5,UQS6 IF POT NOT EMPTY
- * DROP STACK POT IF EMPTIED.
- UQS5 SA7 A1 CLEAR POT ADDRESS
- AX1 18D DROP EMPTY POT
- SB3 X1
- SB4 X1
- RJ DPT
- * PLACE NEXT ENTRY IN QUEUE.
- UQS6 SA5 UQSA ENTER NEXT ENTRY IN QUEUE
- ZR X5,UQSX IF NO ENTRY
- MX4 -12 GET CORRECT QUEUE
- BX4 -X4*X5
- BX5 X5-X4 CLEAR QUEUE POINTER FROM ENTRY
- SB7 X4
- RJ MQE MAKE QUEUE ENTRY
- NZ X2,UQSX IF NOT CURRENT ENTRY
- SB7 B7-ITAQ
- ZR B7,UQS7 IF 1TA CALL
- SB7 B7-ITOQ+ITAQ
- NZ B7,UQSX IF NOT 1TO NOR 1TA CALL
- UQS7 UX6,B7 X6 CHECK QUEUE ENTRY
- MX2 59
- SB5 B7-ITA1$+2000B
- ZR B5,UQSX IF STATUS REQUEST
- SA1 A0+VROT
- MX2 59
- BX6 X1*X2
- SA6 A1 REWRITE VROT
- JP UQSX
- UQSA CON 0 NEXT ENTRY TO BE PLACED IN QUEUE
- TITLE SMFIF - SCREEN MANAGEMENT FACILITY INTERFACE.
- QUAL SMFIF
- *** SMFIF - SCREEN MANAGEMENT FACILITY INTERFACE.
- *
- * SMFIF PROCESSES COMMUNICATIONS FOR SMFEX, THE
- * SCREEN MANAGEMENT FACILITY EXECUTIVE, AND FOR FSE, THE
- * FULL SCREEN EDITOR. A USERS EDITING SESSION PASSES
- * BETWEEN FSE AND SMFEX DEPENDING ON THE COMMANDS
- * ENTERED AND THE AVAILABILITY OF SMFEX. IF SMFEX
- * IS NOT RUNNING, FSE IS CAPABLE OF HANDLING THE ENTIRE
- * SESSION, TRANSPARENTLY TO USERS, BUT POSSIBLY SLOWER.
- *
- * A WALK-THROUGH OF AN FSE/SMFEX SESSION.
- *
- * 1. THE USER INVOKES THE EDITOR WITH THE COMMAND *FSE*.
- * IAFEX SCHEDULES FSE AS AN ORDINARY COMMAND.
- *
- * 2. FSE BUILDS THE WORKFILE AND THEN ATTEMPTS TO
- * ESTABLISH A CONNECTION BETWEEN THE TERMINAL
- * AND SMFEX USING THE *TLX* FILE TRANSFER FUNCTION.
- *
- * 3. TLX TESTS FOR THE PRESENCE OR ABSENCE OF SMFEX, AND
- * TESTS SUBSYSTEM ENABLE STATUS TO DETERMINE IF SMFEX IS
- * WILLING TO ACCEPT ADDITIONAL USERS. IF SMFEX IS READY,
- * TLX GENERATES A LOCAL FNT IN SMFEX AND DISABLES FSE
- * FROM SIMULTANEOUS ACCESS TO THE SHARED FILE BY
- * LIMITING FSE-S FNT ATTRIBUTES AND ROLLING FSE OUT WITH
- * PP RECALL BACK INTO TLX. TLX THEN NOTIFIES IAFEX OF
- * THE CONNECTION VIA THE VCSM TSEM FUNCTION.
- *
- * 4. IAFEX RESPONDS TO THE CONNECTION EVENT BY FLAGGING THE
- * TERMINAL WITH NON-ZERO SMFEX CONNECTION STATE AND
- * SENDING A MESSAGE TO SMFEX SO THAT IT CAN VERIFY
- * VALIDITY OF FILE FORMAT AND PREPARE TO ACCEPT THE USER-S
- * INPUT.
- *
- * 5. SO LONG AS THE SMFEX CONNECTION STATE REMAINS NON-ZERO,
- * ALL TERMINAL I/O IS PROCESSED BY THE SMFIF INTERFACE AS
- * MESSAGES TO AND FROM SMFEX.
- *
- * 6. WHEN SMFEX ENCOUNTERS ANY REQUEST IT CANNOT SATISFY, IT
- * RETURNS ITS LOCAL FNT, SCHEDULES ROLLIN OF FSE, AND
- * NOTIFIES IAFEX THAT THE CONNECTION IS FINISHED.
- *
- * 7. TLX IS RECALLED UPON ROLLIN TO VERIFY VALID RE-TRANSFER
- * OF THE SHARED FILE. FSE THEN RESUMES EXECUTION AND SCANS
- * FILE CONTENT TO DETERMINE THE OPERATION LEFT BY SMFEX.
- * FSE MAY THEN DECIDE TO TERMINATE THE JOB STEP OR TO
- * ONCE AGAIN CONNECT TO SMFEX.
- EJECT
- ** FORMAT OF IAFEX/SMFEX BUFFERS.
- *
- *T WORD 0 12/FUNCTION,12/TERMINAL,18/POINTER,18/LENGTH
- *T,WORD N (TERMINAL I/O DATA)
- *
- * FUNCTION - FUNCTION CODE ORDINAL.
- *
- * TERMINAL - CONNECTION NUMBER.
- *
- * POINTER - ADDRESS WITHIN SMFEX OF IAF-TO-SMF BUFFER.
- * THIS FIELD IS USED ONLY IN INITIALIZATION.
- * POINTER-1 WILL BE ADDRESS OF IDLEDOWN BUFFER.
- *
- * LENGTH - LENGTH OF MESSAGE INCLUDING THIS WORD.
- SPACE 4,10
- ** SMFIF ASSEMBLY PARAMETERS.
- NWSS EQU 100B NUMBER OF WORDS IN IAF TO SMF QUEUE
- NWDB EQU 300B NUMBER OF WORDS IN DEBUGGING BUFFER
- * (IF 0, DO NOT ASSEMBLE DEBUGGING CODE)
- SPACE 4,10
- ** SMFEX-TO-IAFEX FUNCTIONS.
- BSS 0 (FORCE UPPER)
- .SAVE SET *
- LOC 0
- FSIN BSS 1 SMFEX INITIALIZED
- FAOT BSS 1 ASSIGN OUTPUT TO TERMINAL
- FAOI BSS 1 ASSIGN OUTPUT AND REQUEST INPUT
- FDSC BSS 1 DISCONNECT TERMINAL FROM SMFEX
- NMSF BSS 0 NUMBER OF SMFEX FUNCTIONS
- SPACE 4,10
- ** IAFEX-TO-SMFEX FUNCTIONS.
- LOC 0
- FIIN BSS 1 IAFEX INITIALIZED
- FCLI BSS 1 COMMAND LINE FROM TERMINAL
- FRES BSS 1 DRIVER REQUESTS MORE OUTPUT
- FPUB BSS 1 PROCESS USER BREAK FROM TERMINAL
- FHUP BSS 1 PHONE HUNG-UP
- FCSM BSS 1 CONNECT TO SMF
- ORG .SAVE
- EJECT
- *** SMFIF PROCESSING.
- *
- * SMFIF RECEIVES CONTROL FROM IAFEX IN THREE WAYS.
- *
- * 1. FROM THE IAFEX MAIN LOOP, WHICH USES THE *CSS* ROUTINE
- * TO DETECT MESSAGE ARRIVING FROM SMFEX. /SMFIF/RMS IS
- * THE ENTRY POINT FOR THESE EVENTS.
- *
- * 2. FROM IAFEX ROUTINE *DRI* WHEN A DRIVER FUNCTION REQUEST
- * HAS BEEN RECEIVED. (SUBROUTINE *PDR*)
- *
- * 3. FROM IAFEX ROUTINE *STR*, AS THE RESULT OF TSEM FUNCTION
- * CODE VCSM. THIS CODE INDICATES EITHER A TLX REQUEST TO
- * CONNECT A TERMINAL TO SMFEX, OR TLX CONFIRMATION THAT
- * DISCONNECTION FROM SMFEX HAS BEEN VALIDLY COMPLETED.
- * THE ENTRY POINTS ARE /SMFIF/CSM AND /SMFIF/DSM.
- *
- * FUNCTION REQUESTS FROM SMFEX, CERTAIN DRIVER FUNCTION
- * REQUESTS, AND PROMPT-ISSUED ENTRY FROM *RES* ARE
- * CALLED EVENTS AND ARE ASSIGNED SYMBOLS WITHIN
- * SMFIF OF THE FORM *EXXX*.
- *
- * EACH IAFEX TERMINAL HAS ASSOCIATED WITH IT A STATE
- * OF SMFIF PROCESSING. A STATE CODE IS MAINTAINED
- * IN BITS 23-18 OF WORD VFST OF THE TERMINAL TABLE.
- * STATE CODES ARE ASSIGNED SYMBOLS OF THE FORM *SXXX*.
- *
- * FOR EACH STATE, STATE/EVENT TABLES DEFINE WHAT ACTION
- * (INCLUDING A POSSIBLE STATE CHANGE) IS TO BE PERFORMED
- * UPON OCCURENCE OF EACH POSSIBLE EVENT. THE ACTION
- * FOR A GIVEN EVENT IS A ROUTINE CALLED A STATE/EVENT
- * HANDLER OR PROCESSOR.
- *
- * THUS, SMFIF PROCESSING CONSISTS OF THREE REQUEST
- * PROCESSORS (CSM, DSM, PDR) DETECTING EVENTS AND
- * EXECUTING THE APPROPRIATE STATE/EVENT HANDLERS.
- SPACE 4,10
- ** STATE TABLE MACROS.
- MACRO STATE,SXXX
- IF -DEF,.STATE,1
- .STATE SET 0
- ERRNZ SXXX-.STATE MISPLACED STATE EVENT TABLE
- LOC 0
- ENDM
- EVENT MACRO EXXX,IXX,SXXX
- ERRNZ EXXX-* MISPLACED EVENT ENTRY
- IFC NE,*SXXX**
- VFD 36/0,6/SXXX,18/IXX
- ELSE
- VFD 36/0,6/.STATE,18/IXX
- ENDIF
- ENDM
- STATEND MACRO
- .STATE SET .STATE+1
- ERRNZ NMEV-* WRONG NUMBER OF EVENTS
- LOC *O
- ENDM
- SPACE 4,10
- ** SMFIF TERMINAL STATE SYMBOLS.
- .SAVE SET *
- LOC 0
- SIDL BSS 1 NO FSE/SMFEX ACTIVITY IN PROGRESS
- SINP BSS 1 WAITING FOR TERMINAL INPUT
- SRSP BSS 1 WAITING FOR SMFEX RESPONSE
- SOUT BSS 1 WAITING FOR MORE OUTPUT FROM SMFEX
- SHUP BSS 1 WAIT SMFEX OK AFTER HUNG-UP PHONE
- STOT BSS 1 WAIT SMFEX OK AFTER TIME-OUT LOGOFF
- SDTJ BSS 1 WAIT SMFEX OK AFTER DETACH
- ORG .SAVE
- SPACE 4,10
- ** SMFIF TERMINAL EVENT SYMBOLS.
- .SAVE SET * SAVE ORIGIN
- LOC 0
- ERES BSS 1 DRIVER RES REQUEST
- ECLI BSS 1 DRIVER CLI REQUEST
- EPUB BSS 1 DRIVER PUB REQUEST
- EDTJ BSS 1 DRIVER DTJ REQUEST
- EHUP BSS 1 DRIVER HUP REQUEST
- ETOT BSS 1 DRIVER TOT REQUEST
- EUDR BSS 1 UNEXPECTED DRIVER REQUEST
- EAOT BSS 1 SMFEX ASSIGN OUTPUT TO TERMINAL
- EAOI BSS 1 SMFEX ASSIGN OUTPUT AND REQUEST INPUT
- ECON BSS 1 TLX CONNECT TO SMF
- EDSC BSS 1 SMFEX DISCONNECT FUNCTION
- ECFR BSS 1 TLX CONFIRM DISCONNECTION
- ERMO BSS 1 IAFEX REQUEST MORE OUTPUT FROM SMFEX
- NMEV BSS 0 NUMBER OF EVENTS
- ORG .SAVE RESTORE ORIGIN AND LOCATION COUNTERS
- EJECT
- ** SMFIF STATE/EVENT TABLES.
- TSET BSS 0
- SPACE 4,20
- SIDL STATE NO FSE/SMFEX ACTIVITY
- ERRNZ SIDL IAFEX AND DRIVER CODE ASSUMES SIDL=0
- EVENT ERES,RDR
- EVENT ECLI,RDR
- EVENT EPUB,RDR
- EVENT EDTJ,RDR
- EVENT EHUP,RDR
- EVENT ETOT,RDR
- EVENT EUDR,RDR
- EVENT EAOT,0
- EVENT EAOI,0
- EVENT ECON,NSC,SRSP
- EVENT EDSC,0
- EVENT ECFR,0
- EVENT ERMO,0
- STATEND
- SPACE 4,20
- SINP STATE WAITING FOR TERMINAL INPUT
- EVENT ERES,DBI
- EVENT ECLI,PCL,SRSP
- EVENT EPUB,NSI,SRSP
- EVENT EDTJ,NSH,SDTJ
- EVENT EHUP,NSH,SHUP
- EVENT ETOT,NSH,STOT
- EVENT EUDR,ADR
- EVENT EAOT,ASO
- EVENT EAOI,ASO
- EVENT ECON,ATL
- EVENT EDSC,0,SIDL
- EVENT ECFR,0
- EVENT ERMO,0
- STATEND
- SPACE 4,20
- SRSP STATE WAITING FOR SMFEX RESPONSE TO INPUT
- EVENT ERES,0
- EVENT ECLI,AIR1
- EVENT EPUB,NSI
- EVENT EDTJ,NSH,SDTJ
- EVENT EHUP,NSH,SHUP
- EVENT ETOT,NSH,STOT
- EVENT EUDR,ADR
- EVENT EAOT,ASO,SOUT
- EVENT EAOI,ASO,SINP
- EVENT ECON,ATL
- EVENT EDSC,0,SIDL
- EVENT ECFR,0,SIDL
- EVENT ERMO,0
- STATEND
- SPACE 4,20
- SOUT STATE EXPECTING OUTPUT FROM SMFEX
- EVENT ERES,AMS
- EVENT ECLI,AIR1
- EVENT EPUB,NSI,SRSP
- EVENT EDTJ,NSH,SDTJ
- EVENT EHUP,NSH,SHUP
- EVENT ETOT,NSH,STOT
- EVENT EUDR,ADR
- EVENT EAOT,ASO
- EVENT EAOI,ASO,SINP
- EVENT ECON,ATL
- EVENT EDSC,0,SIDL
- EVENT ECFR,0
- EVENT ERMO,0,SRSP
- STATEND
- SPACE 4,20
- SHUP STATE WAIT SMFEX OK AFTER HUNG UP PHONE
- EVENT ERES,0
- EVENT ECLI,AIR1
- EVENT EPUB,AIR
- EVENT EDTJ,0
- EVENT EHUP,IES
- EVENT ETOT,IES
- EVENT EUDR,ADR
- EVENT EAOT,0
- EVENT EAOI,0
- EVENT ECON,ATL
- EVENT EDSC,AHU,SIDL
- EVENT ECFR,0
- EVENT ERMO,0
- STATEND
- SPACE 4,20
- STOT STATE WAIT SMFEX OK AFTER TIME-OUT LOGOFF
- EVENT ERES,0
- EVENT ECLI,AIR1
- EVENT EPUB,AIR
- EVENT EDTJ,0
- EVENT EHUP,0,SHUP
- EVENT ETOT,IES
- EVENT EUDR,ADR
- EVENT EAOT,0
- EVENT EAOI,0
- EVENT ECON,ATL
- EVENT EDSC,ATO,SIDL
- EVENT ECFR,0
- EVENT ERMO,0
- STATEND
- SPACE 4,20
- SDTJ STATE WAIT SMFEX OK AFTER DETACH
- EVENT ERES,0
- EVENT ECLI,AIR1
- EVENT EPUB,AIR
- EVENT EDTJ,0
- EVENT EHUP,0,SHUP
- EVENT ETOT,0,STOT
- EVENT EUDR,ADR
- EVENT EAOT,0
- EVENT EAOI,0
- EVENT ECON,ATL
- EVENT EDSC,ADT,SIDL
- EVENT ECFR,0
- EVENT ERMO,0
- STATEND
- TITLE SMFIF - CSM - CONNECT TO SCREEN MANAGEMENT FACILITY.
- CSM SPACE 4,10
- ** CSM - CONNECT TO SCREEN MANAGEMENT.
- *
- * USES X - 1.
- *
- * CALLS ESE.
- CSM SUBR
- SX1 ECON SET CONNECTION EVENT
- RJ ESE EXECUTE STATE/EVENT PROCESSOR
- EQ CSMX RETURN
- TITLE SMFIF - DSM - DISCONNECT SCREEN MANAGEMENT FACILITY.
- DSM SPACE 4,10
- ** DSM - DISCONNECT FROM SCREEN MANAGEMENT.
- *
- * USES X - 1.
- *
- * CALLS ESE.
- DSM SUBR
- SX1 ECFR SET DISCONNECT CONFIRMATION EVENT
- RJ ESE EXECUTE STATE/EVENT PROCESSOR
- EQ DSMX RETURN
- TITLE SMFIF - PDR - PROCESS DRIVER REQUESTS.
- PDR SPACE 4,10
- ** PDR - PROCESS DRIVER REQUESTS.
- *
- * ENTRY (X5) = DRIVER FUNCTION REQUEST.
- * (B7) = *DRI* PROCESSOR FOR FUNCTION.
- *
- * USES X - 1, 2, 3, 7.
- * A - 1, 2.
- * B - 5.
- *
- * CALLS ESE, PCS, SSP.
- PDR1 RJ PCS EXECUTE PROCESSOR
- PDR SUBR
- BX7 X5 STORE DRIVER REQUEST
- SA7 SSPA
- RJ SSP SET UP B2, B3, AND OTHER REGISTERS
- UX1,B5 X5
- SA1 TDRQ+B5
- NG X1,PDR1 IF NO SMFIF HANDLING FOR THIS REQUEST
- SA2 A0+VROT CHECK FOR RESOURCE LIMIT
- MX3 2
- LX2 59-19
- BX3 X3*X2
- NZ X3,PDR1 IF LIMIT OCCURRED, SKIP SMF PROCESSING
- RJ ESE EXECUTE STATE/EVENT HANDLER
- EQ PDRX RETURN
- TDRQ INDEX CON,/TLX/REQL,0 TABLE OF DRIVER REQUESTS
- INDEX ,/TLX/CLI,( ECLI )
- INDEX ,/TLX/DIN,( EUDR )
- INDEX ,/TLX/DLO,( -1 )
- INDEX ,/TLX/DRP,( -1 )
- INDEX ,/TLX/DRT,( -1 )
- INDEX ,/TLX/DTJ,( EDTJ )
- INDEX ,/TLX/ETX,( EUDR )
- INDEX ,/TLX/FLO,( EUDR )
- INDEX ,/TLX/HUP,( EHUP )
- INDEX ,/TLX/IAM,( -1 )
- INDEX ,/TLX/LPT,( -1 )
- INDEX ,/TLX/PUB,( EPUB )
- INDEX ,/TLX/RES,( ERES )
- INDEX ,/TLX/RIN,( EUDR )
- INDEX ,/TLX/SAI,( EUDR )
- INDEX ,/TLX/TOT,( ETOT )
- TDRQL EQU *-TDRQ
- TITLE SMFIF - STATE/EVENT HANDLERS.
- ** STATE/EVENT HANDLERS.
- *
- * STATE/EVENT PROCESSORS ARE CALLED ONLY BY *ESE* AND
- * RETURN BY JUMPING TO *ESEX*. PROCESSORS MAY ALSO
- * RETURN BY JUMPING TO EACH OTHER. *RDR* HAS THE
- * PROPERTY OF CALLING *PCS* TO PERFORM ANY FUNCTIONS
- * WHICH ARE NOT OVERRIDDEN BY SCREEN MANAGEMENT. THE
- * FOLLOWING ARE TRUE OF ALL STATE/EVENT PROCESSORS.
- *
- * ENTRY (B2) = TERMINAL NUMBER.
- *
- * EXIT VIA *ESEX*.
- ESE SPACE 4,10
- ** ESE - EXECUTE STATE/EVENT HANDLER.
- *
- * ENTRY (X1) = EVENT CODE.
- * (B2) = TERMINAL NUMBER.
- * (B3) = PARAMETER TO STATE/EVENT PROCESSOR.
- * (B4) = PARAMETER TO STATE/EVENT PROCESSOR.
- *
- * EXIT TO PROCESSOR.
- *
- * CALLS ABT, ASE.
- ESE SUBR ENTRY/EXIT
- RJ ASE ADVANCE STATE/EVENT TABLES
- NG B6,ESE1 IF INCORRECT PROCESSOR
- ZR B6,ESEX IF NO PROCESSOR
- JP B6 EXIT TO PROCESSOR
- ESE1 SX6 3RESE
- RJ ABT ABORT
- EQ ESEX RETURN
- SPACE 4,10
- ** ADT - SMFEX ACKNOWLEDGED DETACH.
- *
- * USES X - 1.
- * A - 1.
- *
- * CALLS ADQ.
- ADT BSS 0 ENTRY
- SA1 ADTA SIMULATE DRIVER *DTJ* REQUEST
- RJ ADQ ADD TO DRIVER QUEUE
- EQ ESEX RETURN
- ADTA VFD 12//TLX/DTJ+2000B,24/UDRC,24/0
- ADR SPACE 4,10
- ** ADR - ABORT FOR BAD DRIVER REQUEST.
- *
- * USES X - 6.
- *
- * CALLS ABT.
- ADR BSS 0 ENTRY
- SX6 3RADR
- RJ ABT
- EQ ESEX RETURN
- AHU SPACE 4,10
- ** AHU - SMFEX ACKNOWLEDGED HUNG-UP-PHONE.
- *
- * USES X - 1.
- * A - 1.
- *
- * CALLS ADQ.
- AHU BSS 0 ENTRY
- SA1 AHUA SIMULATE DRIVER *HUP* REQUEST
- RJ ADQ ADD TO DRIVER QUEUE
- EQ ESEX RETURN
- AHUA VFD 12//TLX/HUP+2000B,48/0
- AIR SPACE 4,10
- ** AIR - ACKNOWLEDGE INTERRUPT AND REASSIGN POT.
- *
- * ENTRY (B3) = POT POINTER.
- *
- * USES X - 2, 6.
- * A - 2, 6.
- * B - 4, 6.
- *
- * CALLS DPT, RDR.
- AIR BSS 0 ENTRY
- SA2 A0+VDCT ACKNOWLEDGE INTERRUPT
- SX6 B1
- LX6 58
- BX6 X6+X2
- SA6 A2
- AIR1 SB4 0
- ZR B3,ESEX IF NO POTS TO DROP
- RJ DPT DROP POTS
- EQ ESEX RETURN
- AMS SPACE 4,10
- ** AMS - ASSIGN MESSAGE.
- *
- * ENTRY (B3) = POT CHAIN.
- *
- * USES X - 1, 2, 4, 6, 7.
- * A - 1, 2, 6, 7.
- *
- * CALLS QMS.
- AMS BSS 0 ENTRY
- IFNET AMS1
- SA1 A0+VDCT
- SA2 A0+VSTT
- MX4 -12
- MX7 14
- LX7 12
- BX6 X7*X1
- NZ X6,ESEX IF DRIVER BUSY
- BX7 -X4*X2
- ZR X7,AMS1 IF NO STACKED MESSAGE
- BX6 X4*X2 ASSIGN STACKED MESSAGE
- SA6 A2
- BX7 X1+X7
- SA7 A1
- EQ ESEX RETURN
- AMS1 SX6 FRES ASK SMFEX FOR MORE OUTPUT
- SX7 B2 TERMINAL NUMBER
- LX6 48
- LX7 36
- BX6 X6+X7
- SX7 B3 POT CHAIN
- BX6 X6+X7 MESSAGE HEADER WORD
- RJ QMS QUEUE MESSAGE FOR SMFEX
- SX1 ERMO SET REQUEST MORE OUTPUT EVENT
- RJ ASE ADVANCE STATE/EVENT TABLES
- EQ ESEX RETURN
- ASO SPACE 4,10
- ** ASO - ASSIGN SMFEX OUTPUT TO TERMINAL.
- *
- * ENTRY (B4) = MESSAGE LENGTH.
- *
- * USES X - 6.
- * B - 3.
- *
- * CALLS MVA.
- ASO BSS 0 ENTRY
- ZR B4,ESEX IF NULL OUTPUT
- SA1 SSCR GET MESSAGE ADDRESS
- SX6 X1+4
- SB3 B0 ASK MVA TO GET POT CHAIN
- RJ MVA ASSIGN OUTPUT
- EQ ESEX RETURN
- ATL SPACE 4,10
- ** ATL - ABORT FOR BAD TLX TSEM.
- *
- * USES X - 6.
- *
- * CALLS ABT.
- ATL BSS 0 ENTRY
- SX6 3RATL
- RJ ABT
- EQ ESEX RETURN
- ATO SPACE 4,10
- ** ATO - SMFEX ACKNOWLEDGED TIME-OUT LOGOFF.
- *
- * EXIT (X1) = PARAMETER FOR *ADQ*.
- *
- * USES X - 1.
- * A - 1.
- *
- * CALLS ADQ.
- ATO BSS 0 ENTRY
- SA1 ATOA SIMULATE DRIVER *TOT* REQUEST
- RJ ADQ ADD TO DRIVER QUEUE
- EQ ESEX RETURN
- ATOA VFD 12//TLX/TOT+2000B,48/0
- DBI SPACE 4,10
- ** DBI - ASK DRIVER TO BEGIN INPUT.
- *
- * EXIT (X2) = PARAMETER FOR *EDR*.
- *
- * USES X - 1, 2, 3, 4.
- * A - 1, 2, 3.
- *
- * CALLS EDR.
- DBI BSS 0 ENTRY
- IFNET DBI1
- SA3 A0+VSTT CHECK FOR STACKED OUTPUT
- MX4 -12
- BX3 -X4*X3
- NZ X3,AMS IF STACKED OUTPUT MESSAGE
- DBI1 SA1 A0+VDCT
- SA2 DBIA
- BX3 X2*X1
- NZ X3,ESEX IF INPUT BEGUN OR DRIVER BUSY
- SA2 A2+B1
- RJ EDR ENTER DRIVER REQUEST
- EQ ESEX RETURN
- DBIA CON 6400BS48+7777B
- CON 4400BS48+/1TD/BGI
- IES SPACE 4,10
- ** IES - INVALID EVENT SEQUENCE.
- *
- * WHEN AN INVALID SEQUENCE OF EVENTS IS DETECTED, THE
- * *SMF* SUBSYSTEM MAY NOT BE RESPONDING, THEREFORE DISCONNECT
- * ALL USERS FROM THE MULTI-USER EDITOR.
- *
- * CALLS SID.
- IES BSS 0 ENTRY
- RJ SID DISCONNECT FROM *SMF* SUBSYSTEM
- EQ ESEX RETURN
- NSC SPACE 4,10
- ** NSC - NOTIFY SMFEX OF CONNECTION REQUEST BY TLX.
- *
- * USES A - 1.
- * X - 0, 1, 6, 7.
- *
- * CALLS QMS.
- NSC BSS 0 ENTRY
- SX6 FCSM FUNCTION CODE TO NOTIFY SMFEX
- LX6 48
- SX7 B2 TERMINAL NUMBER
- LX7 36
- BX6 X6+X7 GENERATE MESSAGE HEADER
- RJ QMS QUEUE MESSAGE FOR SMFEX
- SA1 A0+VUIT GET EJT ORDINAL
- MX0 -12
- BX6 -X0*X1
- SA1 A0+VFST GET JSN
- MX0 24
- BX1 X1*X0
- BX6 X6+X1 MERGE JSN AND EJT TO MAKE MESSAGE
- RJ QMS QUEUE MESSAGE TO SMFEX
- EQ ESEX RETURN
- NSH SPACE 4,10
- ** NSH - NOTIFY SMFEX PHONE HUNG UP.
- *
- * ENTRY (B3) = POT CHAIN.
- *
- * USES X - 6.
- * B - 3, 4.
- *
- * CALLS DPT, QMS.
- NSH BSS 0 ENTRY
- SB4 0 SET TO DROP POT CHAIN
- ZR B3,NSH1 IF NOT POTS TO DROP
- RJ DPT DROP POT
- NSH1 SX6 FHUP NOTIFY SMFEX OF HANG-UP
- SX7 B2 TERMINAL NUMBER
- LX6 48
- LX7 36
- BX6 X6+X7 MESSAGE HEADER WORD
- RJ QMS QUEUE MESSAGE FOR SMFEX
- EQ ESEX RETURN TO DRI
- NSI SPACE 4,10
- ** NSI - NOTIFY SMFEX OF INTERRUPT FROM TERMINAL.
- *
- * EXIT (B3) = POT CHAIN.
- * TO *AIR*.
- *
- * USES X - 6, 7.
- *
- * CALLS DAP, QMS, SSP.
- NSI BSS 0 ENTRY
- RJ DAP DE-ASSIGN OUTPUT POTS
- RJ SSP RESTORE PARAMETERS
- SX6 FPUB
- SX7 B2 TERMINAL NUMBER
- LX6 48
- LX7 36
- BX6 X6+X7 MESSAGE HEADER WORD
- RJ QMS QUEUE MESSAGE FOR SMFEX
- EQ AIR GO ACKNOWLEDGE INTERRUPT
- PCL SPACE 4,10
- ** PCL - PROCESS COMMAND LINE FROM TERMINAL.
- *
- * ENTRY (B3) = POT CHAIN.
- *
- * USES X - 1, 2, 6, 7.
- * A - 1, 6.
- *
- * CALLS QMS.
- PCL BSS 0 ENTRY
- SX6 FCLI PASS COMMAND TO SMFEX
- SX7 B2 TERMINAL NUMBER
- LX6 48
- LX7 36
- BX6 X6+X7
- SX7 B3 POT CHAIN
- BX6 X6+X7 MESSAGE HEADER WORD
- RJ QMS QUEUE MESSAGE FOR SMFEX
- SA1 A0+VDCT RESET INPUT REQUESTED
- SX2 B1
- LX2 56-0
- BX6 -X2*X1
- SA6 A1
- EQ ESEX RETURN
- RDR SPACE 4,10
- ** RDR - RETURN DRIVER REQUEST TO *PCS* PROCESSING.
- *
- * CALLS PCS, SSP.
- RDR BSS 0 ENTRY
- SA5 SSPA RESTORE REQUEST REGISTERS
- RJ SSP
- RJ PCS EXECUTE PROCESSOR
- EQ ESEX RETURN
- TITLE SMFIF - SUBROUTINES.
- ** ADQ - ADD REQUEST TO DRIVER QUEUE.
- *
- * ENTRY (B2) = TERMINAL NUMBER.
- * (X1) = SIMULATED DRIVER FUNCTION REQUEST.
- *
- * EXIT REQUEST ADDED TO FIRST DRIVER REQUEST QUEUE.
- *
- * USES X - 2, 3, 4, 5, 6, 7.
- * A - 2, 3, 4, 5, 6, 7.
- ADQ SUBR ENTRY/EXIT
- SX6 B2 ADD TERMINAL NUMBER TO DRIVER REQUEST
- BX6 X1+X6
- SA2 /IAFEX4/NDSA GET NETWORK DRIVER STACK ADDRESS
- IFNET ADQ3 IF NETWORK TERMINAL
- SA2 VDRL SEARCH FOR DRIVER QUEUE
- MX3 -12
- SX5 B2 CURRENT TERMINAL
- ADQ1 NG X2,ADQ5 IF END OF DRIVER STATUS WORDS
- BX4 -X3*X2 FIRST TERMINAL NUMBER FOR THIS DRIVER
- IX7 X5-X4
- PL X7,ADQ2 IF FIRST TERMINAL .LE. CURRENT TERMINAL
- SA2 A2+1 NEXT DRIVER STATUS WORD
- EQ ADQ1 PROCESS NEXT WORD
- ADQ2 BX7 X2
- AX2 24 STACK ADDRESS
- AX7 12 COMPUTE LAST TERMINAL NUMBER+1
- BX7 -X3*X7
- IX7 X4+X7
- IX7 X7-X5 COMPUTE LAST TERMINAL-CURRENT TERMINAL
- PL X7,ADQ3 IF CORRECT DRIVER STATUS WORD
- SA2 A2+1 NEXT DRIVER STATUS WORD
- EQ ADQ1 PROCESS NEXT WORD
- ADQ3 SX7 X2 STACK ADDRESS
- SA2 X7+B1 READ FIRST
- SA3 A2+B1 READ IN
- SA4 A3+B1 READ OUT
- BX5 X4-X2
- NZ X5,ADQ4 IF OUT .NE. FIRST
- SA5 A4+B1 READ LIMIT
- BX4 X5
- ADQ4 SX7 X4-1 DECREMENT OUT
- BX3 X3-X7
- SA6 X7 STORE REQUEST
- SA7 A4 UPDATE OUT
- NZ X3,ADQX IF NO DRIVER STACK OVERFLOW
- ADQ5 SX6 3RADQ
- EQ ABT+1 ABORT UNCONDITIONALLY
- ASE SPACE 4,20
- ** ASE - ADVANCE STATE/EVENT TABLES.
- *
- * ENTRY (X1) = EVENT CODE.
- * (B2) = PARAMETER TO STATE/EVENT PROCESSOR.
- * (B3) = PARAMETER TO STATE/EVENT PROCESSOR.
- * (B4) = PARAMETER TO STATE/EVENT PROCESSOR.
- *
- * EXIT (B2) = UNCHANGED.
- * (B3) = UNCHANGED.
- * (B4) = UNCHANGED.
- * (B6) = PROCESSOR ADDRESS.
- * (B6) .LE. 0 IF NO PROCESSOR FOR THIS EVENT.
- * (B6) .LT. 0 IF NO PROCESSOR AND INCORRECT EVENT.
- *
- * USES X - 1, 2, 3, 4, 6.
- * A - 1, 2, 6.
- * B - 5, 6.
- ASE SUBR ENTRY/EXIT
- SA2 A0+VFST EXTRACT STATE FROM VFST
- MX3 -6
- BX6 X2 SAVE VFST FOR SETTING NEW STATE
- AX2 18
- BX2 -X3*X2
- SX4 NMEV CALCULATE ENTRY IN STATE/EVENT TABLES
- IX4 X2*X4
- IX4 X4+X1
- SB5 X4+
- SA1 TSET+B5 GET STATE/EVENT ENTRY
- SB6 X1 SET STATE/EVENT HANDLER ADDRESS
- LX3 18-0 SET NEW STATE IN VFST
- BX1 -X3*X1
- BX6 X3*X6
- BX6 X1+X6
- SA6 A2
- EQ ASEX RETURN
- GMQ SPACE 4,10
- ** GMQ - GET MESSAGE FROM SEND-TO-SMFEX QUEUE.
- *
- * EXIT (X7) = 0 IF QUEUE EMPTY.
- * (X6) = MESSAGE IF (X7) .NE. 0.
- *
- * USES X - 1, 3, 4, 6, 7.
- * A - 1, 3, 4, 7.
- GMQ1 SX7 X3+B1 UPDATE STACK OUT POINTER
- BX6 X4
- SA7 A3+
- GMQ SUBR ENTRY/EXIT
- SA1 QMSA+1 READ IN
- SA3 A1+B1 READ OUT
- IX7 X3-X1 OUT-IN
- SA4 X3 READ WORD
- NG X7,GMQ1 IF NO WRAPAROUND
- SA1 A3+B1 READ LIMIT
- SX6 X1
- ZR X7,GMQX IF BUFFER EMPTY
- SX7 X3+B1 ADVANCE OUT
- IX1 X7-X6
- NZ X1,GMQ1 IF OUT .NE. LIMIT
- SA1 A1-3 READ FIRST
- SX3 X1-1
- EQ GMQ1 UPDATE QUEUE AND RETURN
- ISM SPACE 4,10
- ** ISM - IDLE SCREEN MANAGEMENT FACILITY.
- *
- * EXIT SHUTDOWN MESSAGE FORCIBLY TRANSMITTED.
- *
- * USES X - 1, 2, 6, 7.
- * A - 1, 2, 6.
- *
- *
- * CALLS EUC, SFC.
- ISM SUBR ENTRY/EXIT
- SA2 ASMF
- ZR X2,ISMX IF SMF NEVER CONNECTED TO IAF
- SA1 ISMA
- BX6 X1
- BX7 X2
- RJ SFC SFCALL TO SMF
- RJ EUC RELEASE SMF CONNECTION STATE
- SX6 B0
- SA6 ASMF CLEAR SMF ACTIVE WORD
- EQ ISMX RETURN
- ISMA VFD 6/0,12/1,18/0,18/ISMB,6/WRIT
- ISMB VFD 12/FIIN,12/0,18/0,18/1
- QMS SPACE 4,15
- ** QMS - QUEUE MESSAGE TO SEND TO SMFEX.
- *
- * ENTRY (X6) = MESSAGE HEADER WORD.
- *
- * EXIT MESSAGE ADDED TO QUEUE.
- *
- * USES X - 1, 2, 3, 4, 6, 7.
- * A - 1, 2, 3, 6, 7.
- *
- * CALLS SID.
- QMS2 SA6 X1 STORE MESSAGE HEADER IN QUEUE
- SA7 A1 UPDATE IN POINTER
- QMS SUBR ENTRY/EXIT
- SA1 QMSA+1 READ IN
- SA3 A1+B1 READ OUT
- SX7 X1+1 IN+1
- IX4 X7-X3 IN+1-OUT
- NG X4,QMS2 IF NO WRAPAROUND
- SA3 A3+B1 READ LIMIT
- SX2 X3
- ZR X4,QMS1 IF BUFFER FULL
- IX4 X7-X2 IN+1-LIMIT
- NZ X4,QMS2 IF IN+1 .NE. LIMIT
- SA3 A1-B1 READ FIRST
- SA2 A1+B1 READ OUT
- SX7 X3 IN+1
- IX4 X7-X2
- NZ X4,QMS2 IF IN+1 .NE. OUT
- QMS1 RJ SID TREAT MESSAGE STACK OVERFLOW AS DROPOUT
- EQ QMSX RETURN
- QMSA CON QMSB FIRST
- CON QMSB IN
- CON QMSB OUT
- CON QMSB+NWSS LIMIT
- QMSB BSSZ NWSS SEND-TO-SMFEX MESSAGE STACK
- RDB SPACE 4,15
- ** RDB - RECORD DEBUG BUFFER MESSAGE.
- *
- * ENTRY (A1) = ADDRESS OF SFCALL MESSAGE HEADER.
- * (X1) = SFCALL MESSAGE HEADER.
- *
- * EXIT SFCALL MESSAGE RECORDED IN DEBUG BUFFER.
- *
- * USES X - 1, 2, 6.
- * A - 1, 2, 6.
- * B - 4, 5, 6, 7.
- .RDB IFNE NWDB,0
- RDB3 SX6 B6 STORE NEW DEBUGGING BUFFER POINTER
- SA6 RDBA
- SA1 B4 RESTORE MESSAGE HEADER
- RDB SUBR ENTRY/EXIT
- SB4 A1 SAVE MESSAGE HEADER ADDRESS
- SB7 X1 MESSAGE LENGTH
- GE B7,B1,RDB0 IF MESSAGE LENGTH REASONABLE
- SB7 B1
- RDB0 SA2 RDBA DEBUGGING BUFFER POINTER
- SB6 X2
- SB5 RDBB+RDBBL DEBUGGING BUFFER LWA + 1
- RDB1 BX6 X1 STORE MESSAGE WORD IN BUFFER
- SA6 B6
- SB6 B6+B1 ADVANCE BUFFER POINTER
- SB7 B7-B1 DECREMENT MESSAGE LENGTH
- GT B5,B6,RDB2 IF NO WRAPAROUND
- SB6 RDBB RESET POINTER TO FWA
- RDB2 ZR B7,RDB3 IF MESSAGE TRANSFERRED
- SA1 A1+B1
- EQ RDB1 PROCESS NEXT WORD
- RDBA CON RDBB BUFFER POINTER
- RDBB BSSZ NWDB SMFIF DEBUGGING BUFFER
- RDBBL EQU *-RDBB DEBUGGING BUFFER LENGTH
- .RDB ENDIF
- RMS SPACE 4,15
- ** RMS - RECEIVE MESSAGE FROM SMFEX.
- *
- * ENTRY (SSCR) = ADDRESS OF MESSAGE RECEIVED.
- *
- * USES X - 0, 1, 2, 6, 7.
- * A - 1.
- * B - 2, 3, 4, 5.
- *
- * MACROS TTADD.
- *
- * CALLS ESE, RDB, SFC, SID.
- RMS SUBR ENTRY/EXIT
- SA1 SSCR GET MESSAGE ADDRESS
- SA1 X1+3 MESSAGE HEADER
- IFNE NWDB,0,1
- RJ RDB RECORD MESSAGE IN DEBUGGING BUFFER
- SB5 12 SPLIT OFF PARAMETERS FROM MESSAGE HEADER
- MX0 12
- SB4 X1-1 B4 = BUFFER LENGTH MINUS 1
- BX2 X0*X1
- LX2 X2,B5
- SB3 X2 B3 = FUNCTION CODE
- LX2 X1,B5
- BX2 X0*X2
- LX2 X2,B5
- SB2 X2 B2 = TERMINAL NUMBER
- TTADD X2,A0,X3,X4 A0 = TERMINAL TABLE ADDRESS
- SB5 B3-TSIFL-1
- PL B5,RMS0 IF INCORRECT FUNCTION CODE
- SA1 TSIF+B3 GET EVENT SYMBOL FOR FUNCTION
- NG X1,RMSX IF NEW *SMF* INITIATION
- RJ ESE EXECUTE STATE/EVENT HANDLER
- SX6 ENDT SEND END OF TASK MESSAGE
- SA1 /SMFIF/ASMF
- BX7 X1
- RJ SFC SEND SFCALL
- ZR X1,RMSX IF NORMAL RETURN
- RMS0 RJ SID DISCONNECT FROM *SMF* SUBSYSTEM
- EQ RMSX RETURN
- TSIF INDEX CON,NMSF,0 TABLE OF EVENTS FOR SMFEX FUNCTIONS
- INDEX ,FSIN,( -1 )
- INDEX ,FAOT,( EAOT )
- INDEX ,FAOI,( EAOI )
- INDEX ,FDSC,( EDSC )
- TSIFL EQU *-TSIF
- SID SPACE 4,10
- ** SID - SMFEX DROPOUT DETECTED.
- *
- * X - 0, 1, 2, 3, 4, 5, 6.
- * A - 1, 6.
- * B - 2, 3, 4, 7.
- *
- * MACROS TTADD.
- *
- * CALLS ADQ, DPT, GMQ, ISM.
- SID SUBR
- BX6 X6-X6 CLEAR MESSAGE BUFFERS
- SA6 SMSB
- * EMPTY SEND-TO-SMFEX QUEUE AND DROP POTS.
- SID1 SB4 0
- RJ GMQ GET MESSAGE FROM QUEUE
- ZR X7,SID2 IF QUEUE EMPTY
- SB3 X6
- MX0 12
- BX1 X0*X6
- LX1 12
- SX1 X1-FCSM
- NZ X1,SID1.1 IF NOT A CONNECTION MESSAGE
- RJ GMQ SKIP PAST MESSAGE TEXT
- EQ SID1 LOOP UNTIL QUEUE IS EMPTY
- SID1.1 ZR B3,SID1 IF NO POT WITH MESSAGE
- RJ DPT DROP POT
- EQ SID1 LOOP TIL QUEUE EMPTY
- * RETURN ALL TERMINALS WITH SMFIF ACTIVITY TO IDLE STATE.
- SID2 SA1 VTTP GET TERMINAL TABLE POINTERS
- SX2 X1 TERMINAL TABLE LWA+1
- AX1 24
- IX3 X2-X1
- SX4 VTTL
- IX6 X3/X4 LAST TERMINAL NUMBER
- SA6 SIDA
- SB2 VPST FIRST REAL TERMINAL
- SID3 MX0 -6 MASK FOR SMFIF STATE CODE IN VFST
- LX0 18-0
- TTADD B2,A0,X2,X3 GET TERMINAL TABLE ADDRESS
- SA1 A0+VFST GET SMFIF STATE CODE
- BX6 -X0*X1
- ZR X6,SID7 IF NO SMFIF ACTIVITY ON THIS TERMINAL
- LX6 0-18
- SX5 X6-SHUP
- SA1 AHUA
- ZR X5,SID4 IF STATE IS *SHUP*
- SX5 X6-STOT
- SA1 ATOA
- NZ X5,SID5 IF STATE NOT *STOT*
- SID4 RJ ADQ SIMULATE DRIVER *HUP* OR *TOT* REQUEST
- SID5 SA1 A0+VFST
- BX6 X0*X1
- SA6 A1
- ERRNZ SIDL CODE ABOVE ASSUMES *SIDL* = 0
- SID7 SB2 B2+B1 ADVANCE TO NEXT TERMINAL
- SA1 SIDA GET LAST TERMINAL NUMBER
- SB7 X1
- LE B2,B7,SID3 IF MORE TERMINALS TO BE RESET
- RJ ISM IDLE *SMF* SUBSYSTEM
- EQ SIDX EXIT
- SIDA CON 0 LAST TERMINAL NUMBER
- SMS SPACE 4,10
- ** SMS - SEND MESSAGE TO SMFEX.
- *
- * ENTRY (SMSB) = 0 IF READY TO SEND QUEUED MESSAGE, OTHERWISE
- * CURRENT MESSAGE HEADER.
- *
- * EXIT SAME AS ENTRY.
- *
- * USES X - 0, 1, 2, 5, 6, 7.
- * A - 1, 2, 6, 7.
- * B - 2, 3, 4, 5, 6.
- *
- * CALLS DPT, GMQ, GPL, QMS, RDB, SFC, SID.
- SMS11 RJ SID DISCONNECT FROM *SMF* SUBSYSTEM
- SMS SUBR ENTRY/EXIT
- SA1 SMSB GET BUFFER HEADER
- ZR X1,SMS3 IF BUFFER EMPTY
- SMS0 SA1 SMSC READ BUFFER INTERLOCK WORD
- SA2 ASMF
- BX7 X2
- BX6 X1
- RJ SFC SEND SFCALL
- NZ X1,SMS11 IF ABNORMAL RETURN
- SA2 SMSD CHECK BUFFER ADDRESS
- NZ X2,SMSX IF BUFFER ALREADY USED
- SA1 SMSB GET MESSAGE LENGTH
- MX0 -12
- BX6 -X0*X1
- SA1 SMSA GET SFCALL DESCRIPTOR
- LX6 42
- BX6 X6+X1 MERGE LENGTH INTO DESCRIPTOR
- RJ SFC SFCALL TO WRITE MESSAGE
- NZ X1,SMS11 IF ABNORMAL RETURN
- .RDB IFNE NWDB,0
- SA1 SMSB
- MX0 1 FLAG HEADER AS IAFEX-TO-SMFEX
- BX1 X0+X1
- RJ RDB RECORD MESSAGE IN DEBUGGING BUFFER
- .RDB ENDIF
- BX6 X6-X6 CLEAR BUFFER TO INDICATE MESSAGE SENT
- SA6 SMSB
- SMS3 RJ GMQ GET MESSAGE FROM SMF QUEUE
- ZR X7,SMSX IF QUEUE EMPTY
- SB3 X6 GET POSSIBLE POT POINTER
- SX5 B3 GET POSSIBLE POT ADDRESS
- LX5 3
- TB4 X5,VBMP
- MX0 -12 REMOVE POT POINTER FIELD
- BX6 X6*X0
- MX0 12 TEST FOR MESSAGE EMBEDDED IN QUEUE
- BX7 X6*X0
- LX7 12
- SX7 X7-FCSM
- ZR X7,SMS9 IF CONNECTION MESSAGE
- SX0 B1 SET WORD COUNT=1 FOR NO POT POINTER
- BX6 X6+X0
- SA6 SMSB STORE MESSAGE HEADER IN BUFFER
- ZR B3,SMS0 IF NO POT POINTER WITH MESSAGE
- * TRANSFER POT CONTENTS TO SMFEX MESSAGE BUFFER.
- SX7 B3 SAVE POT POINTER FOR FIRST POT
- MX2 -12
- LX6 0-36 GET TERMINAL NUMBER
- BX6 -X2*X6
- SB2 X6 (B2) = TERMINAL NUMBER
- SB5 0 INITIALIZE WORD COUNT
- SB6 B4+VCPC-1 SET LIMIT ADDRESS FOR FIRST POT
- SMS4 SA1 B4 FETCH NEXT WORD OF INPUT
- SB5 B5+B1 ADVANCE WORD COUNT
- SB4 B4+B1 ADVANCE FETCH ADDRESS
- BX6 X1
- SA6 A6+B1 ADVANCE STORE ADDRESS
- BX0 -X2*X1
- ZR X0,SMS5 IF END OF LINE
- LE B4,B6,SMS4 IF NOT END-OF-POT
- SX1 B5-MAXB+VCPC
- PL X1,SMS6 IF LESS THAN ONE POT SPACE AVAILABLE
- RJ GPL GET NEXT POT
- SB6 B4+VCPC-1 SET LIMIT ADDRESS FOR NEW POT
- NZ B3,SMS4 IF NOT END OF CHAIN
- SMS5 SB3 0 FORCE DROPPING OF WHOLE POT CHAIN
- SMS6 SA1 SMSB ADD WORD COUNT TO MESSAGE HEADER
- SX6 B5+B1
- MX0 42
- BX1 X1*X0
- BX6 X1+X6
- SA6 A1 STORE MESSAGE HEADER
- BX1 X7 SAVE POINTER TO FIRST POT
- ZR B3,SMS8 IF NO MORE POTS TO REQUEUE
- SA7 SMSE SAVE FIRST POT POINTER
- SX6 B3 SAVE LAST POT POINTER
- SA6 SMSF
- RJ GPL GET POT POINTER TO REQUEUE
- ZR B3,SMS7 IF NO MORE POTS BEYOND LAST SENT
- SX6 FCLI FUNCTION CODE TO REQUEUE REMAINING POTS
- SX7 B2 TERMINAL NUMBER
- LX6 48
- LX7 36
- BX6 X6+X7
- SX7 B3 POT CHAIN
- BX6 X6+X7 MESSAGE HEADER WORD
- RJ QMS QUEUE MESSAGE FOR SMFEX
- SMS7 SA1 SMSF RESTORE LAST POT TO DROP
- SB3 X1
- SA1 SMSE RESTORE FIRST POT TO DROP
- SMS8 SB4 B3 LAST POT TO DROP
- SB3 X1 FIRST POT TO DROP
- RJ DPT DROP POTS
- EQ SMS0 GO SEND MESSAGE TO SMFEX
- SMS9 SX0 B1+B1 SET WORD COUNT=2 FOR CONNECTION MESSAGE
- BX6 X6+X0
- SA6 SMSB STORE MESSAGE HEADER
- RJ GMQ GET MESSAGE TEXT FROM QUEUE
- NZ X7,SMS10 IF TEXT AVAILABLE NORMALLY
- MX6 0 NULL TEXT IF NONE IN QUEUE
- SMS10 SA6 A6+B1 STORE MESSAGE TEXT
- EQ SMS0 GO SEND MESSAGE TO SMFEX
- SMSA VFD 6/0,12/0,18/0,18/SMSB,6/WRIT
- SMSB BSSZ MAXB
- SMSC VFD 6/0,12/1,18/0,18/SMSD,6/READ
- SMSD CON 0
- SMSE CON 0 SAVE FIRST POT POINTER
- SMSF CON 0 SAVE LAST POT POINTER
- SPACE 4,10
- ** BUFFERS FOR SCP INTERFACE.
- ASMF CON 0 ACTIVE SMF WORD
- BSMF BSS MAXB
- QUAL *
- SPACE 4
- *CALL COMCCDD
- *CALL COMCCFD
- *CALL COMCCPM
- *CALL COMCDXB
- *CALL COMCSFN
- *CALL COMCSYS
- *CALL COMCZTB
- SPACE 4
- USE BUFFERS
- TINST BSS 0
- LIST -R
- TINST HERE
- LIST R
- TINSTL EQU *-TINST
- PRS TITLE IAFEX1 VALIDATION PRESET.
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * *PRS* ABORTS THE CALLER OF *IAFEX1*.
- * *PRS* WILL BE EXECUTED ONLY IF *IAFEX1* IMPROPERLY LOADED.
- *
- * MACROS ABORT, MESSAGE.
- PRS MESSAGE (=C* USER ACCESS NOT VALID.*),,R
- ABORT
- TTL IAFEX2 - TTY EXECUTIVE EXIT PROCESSOR.
- EJECT
- QUAL IAFEX2
- IDENT IAFEX2,EXI,EXI,0,0
- BASE DECIMAL
- *COMMENT IAFEX - EXIT PROCESSOR.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- IAFEX2 SPACE 4,10
- ***** IAFEX2 - TTY EXECUTIVE EXIT PROCESSOR.
- * P.D. FARRELL. 77/03/17.
- *
- *
- * IAFEX2 IS CALLED BY JOB ADVANCEMENT *EXIT*
- * COMMAND PROCESSING TO INITIATE THE TERMINATION OF THE
- * INTERACTIVE TTY EXECUTIVE. THIS OVERLAY HAS BEEN MADE
- * SEPARATE FROM THE MAIN TERMINATION PROCESSOR IN
- * ORDER THAT IT MAY PROCESS A TERMINATION CORE DUMP
- * WITHIN THE MINIMUM AMOUNT OF PROCESSOR CORE.
- *
- * IAFEX2 IS LOADED INTO AND EXECUTES WITHIN A
- * SMALL BUFFER AREA ALLOCATED WITHIN THE MAIN PROCESSOR
- * FIELD LENGTH. TO PREVENT OVERWRITING OF MAIN PROCESSOR
- * CODE AND DATA, THE LENGTH OF THIS BUFFER, DEFINED AS
- * *EXIBUF* IN THE MAIN PROCESSOR OVERLAY, SHOULD BE MAIN-
- * TAINED AT THE LENGTH OF THE EXIT OVERLAY PLUS ONE.
- IAFEX2 SPACE 4
- *** IAFEX2 EXIT PROCESSING PERFORMS THE FOLLOWING FUNCTIONS:
- *
- * - DUMPS EXECUTIVE PROCESSOR CORE IF NOT OPERATOR
- * DROP AND SENSE SWITCH 5 IS SET.
- * - LOADS AND TRANSFERS CONTROL TO THE TERMINATION
- * PROCESSOR, *IAFEX3*.
- SPACE 4,10
- ** PROGRAMS CALLED:
- *
- * DMD CORE DUMP PROCESSOR.
- * CPM CONTROL POINT MANAGER.
- * OVL OVERLAY LOADER.
- * IAFEX3 TTY EXECUTIVE TERMINATION PROCESSOR.
- TITLE MAIN PROCESSOR.
- ORG EXIBUF+1
- EXI SPACE 4,10
- ** EXI - NETWORK IAF EXIT PROCESSOR.
- EXI BSS 0 ENTRY
- SB1 1 SET CONSTANT B1=1
- SX6 //RPV2 SET REPRIEVE PROCESSING
- SA6 //RPVB+1
- SX6 B0+ CLEAR ANY LEFTOVER SYSTEM REQUEST
- SA6 //RPVB+5
- REPRIEVE //RPVB,SETUP,37B
- MESSAGE EXIB,1,R ISSUES DUMP MESSAGE TO *MS1W*
- GETJCR EXIA READ JOB CONTROL REGISTERS
- SA1 EXIA
- SA2 B0 READ SENSE SWITCHES
- AX1 54 CHECK ERROR FLAG
- ZR X1,EXI0 IF NO ERROR FLAG (RECOVERY DEADSTART)
- SX1 X1-ODET
- NZ X1,EXI1 IF NOT *OPERATOR DROP*
- * DUMP FIELD LENGTH ON *OPERATOR DROP* IF SSW4 IS SET.
- EXI0 LX2 59-5-4 CHECK SSW4
- NG X2,EXI2 IF SET
- EQ EXI3
- * DUMP FIELD LENGTH ON OTHER THAN *OPERATOR DROP*
- * IF SSW5 IS SET.
- EXI1 LX2 59-5-5 CHECK SSW5
- PL X2,EXI3 IF NOT SET
- EXI2 SYSTEM DMD,R,A0,0 DUMP FIELD LENGTH
- SYSTEM DMM,R,0,0
- * LOAD AND EXECUTE TERMINATION PROCESSOR.
- EXI3 OVERLAY (=6LIAFEX3),00,S
- EXIA CON 0
- EXIB DATA 10LDUMPING CE
- DATA 10LNTRAL MEMO
- DATA 3LRY.
- TITLE SUBROUTINES.
- SYS= SPACE 4,10
- ** SYS= - PROCESS SYSTEM REQUEST.
- *
- * USED IN PLACE OF SYSTEM COMMON DECK *COMCSYS* IN
- * ORDER TO REDUCE CORE REQUIREMENTS.
- *
- * ENTRY (X6) = SYSTEM REQUEST.
- *
- * EXIT REQUEST ISSUED.
- *
- * USES A - 1, 6.
- * X - 1, 6.
- SYS1 XJ
- SYS= SUBR ENTRY/EXIT
- SA6 B1 STORE REQUEST
- EQ SYS1 MAKE REQUEST
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMCCPM
- *CALL COMCOVL
- SPACE 4
- USE END
- EXIL EQU *-EXI DEFINE OVERLAY LENGTH
- TTL IAFEX3 - TTY EXECUTIVE TERMINATION.
- EJECT
- QUAL IAFEX3
- IDENT IAFEX3,TER,TER,0,0
- *COMMENT IAFEX - EXECUTIVE TERMINATION.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- BASE DECIMAL
- SPACE 4,10
- *** TTY EXECUTIVE TERMINATION.
- * R.E. TATE 70/04/01.
- * P.D. FARRELL 77/03/17.
- * L. K. TUTTLE 81/01/15.
- SPACE 4
- *** IAFEX3 PERFORMS TERMINATION PROCESSING FOR IAFEX.
- * THIS INCLUDES THE FOLLOWING:
- *
- * 1) DETACHING ACTIVE USERS
- * 2) ISSUING STATISTICAL INFORMATION.
- SPACE 4
- *** DAYFILE MESSAGES.
- *
- * SEE LISTING.
- SPACE 4
- *** OPERATOR MESSAGES.
- *
- * NONE.
- SPACE 4
- *** PROGRAMS CALLED.
- *
- * CIO - CIRCULAR INPUT/OUTPUT.
- * CPM - CONTROL POINT MANAGER.
- * DMP - DUMP CORE.
- * LFM - LOCAL FILE MANAGER.
- * MSG - ISSUE DAYFILE MESSAGE.
- * 1TA - IAFEX AUXILIARY.
- TER TITLE TER - MAIN PROCESSOR.
- TER SPACE 4,10
- ** TER - MAIN PROCESSOR.
- ORG ASM
- TER BSS 0
- SB1 1
- GETSSID TERA GET SUBSYSTEM IDENTIFICATION
- SA1 TERA
- SX0 X1-IFSI
- ZR X0,TER1 IF IAF SUBSYSTEM
- SX0 X1-RDSI
- NZ X0,TER6 IF NOT RDF SUBSYSTEM
- TER1 GETJO TERA GET JOB ORIGIN TYPE
- SA1 TERA
- MX2 -6
- BX1 -X2*X1
- NZ X1,TER6 IF NOT SYSTEM ORIGIN
- MESSAGE (=C*TERMINATION IN PROGRESS.*),,R
- MESSAGE (=C*SESB, IAF.*),5
- RTIME RTIM GET CURRENT REAL TIME
- GETJCR TERA
- SA1 TERA
- AX1 59-5
- SX3 X1-ODET
- NZ X3,TER2 IF NOT AN OPERATOR DROP
- SA1 B0 CLEAR CORE DUMP FLAG
- SX6 5700B
- BX6 X6*X1
- SA6 A1
- MX6 1 SET NO-RELOAD FLAG
- SA6 VRLL
- EQ TER3 TERMINATE RUN
- * CHECK IF RECOVERY POSSIBLE.
- TER2 SA1 VRLL TIME SINCE DEADSTART AT LAST RELOAD
- SA2 RTIM TIME SINCE DEADSTART
- BX6 X1 CHECK FOR INITIALIZATION ABORT
- LX6 1
- NG X6,TER4 IF INITIALIZATION ABORT
- MX6 -24
- ZR X1,TER3 IF FIRST RECOVERY ATTEMPT
- LX2 24
- NG X1,TER3 IF NO-RELOAD SET
- BX2 -X6*X2 SECONDS SINCE DEADSTART
- IX3 X2-X1 SECONDS SINCE RECOVERY
- NG X3,TER3 IF FRESH DEADSTART
- SX4 X3-60
- PL X4,TER3 IF .GT. 60 SECONDS SINCE RECOVERY
- SX3 4
- IX3 X2-X3
- NG X3,TER3 IF LESS THAN 4 SECONDS SINCE DEADSTART
- MX6 1 SET NO-RELOAD FLAG
- SA6 A1
- MESSAGE (=C* DURATION TIME TERMINATE.*),,R
- * LOG OFF USERS AND ISSUE STATISTICS.
- TER3 RJ LOG LOG OFF ACTIVE USERS
- RJ STA ISSUE STATISTICS
- SA1 B0
- LX1 59-7 CHECK SSW2
- NG X1,TER4 IF SSW2 ON, AVOID RELOAD
- SA1 VRLL CHECK RECOVERY STATUS
- PL X1,TER5 IF RELOAD REQUESTED
- TER4 MESSAGE (=C* IAF TERMINATED.*)
- MESSAGE (=C*SESC, IAF.*),5
- ABORT
- * PROCESS RELOAD.
- TER5 MESSAGE (=C*RECOVERY COMPLETE.*),,R
- MESSAGE (=C*SRSC, IAF.*),5
- SA1 TERA SET IAFEX RECOVERY FLAG IN R1
- SX6 B1
- BX6 X1+X6
- SA6 A1
- SETJCR TERA
- ENDRUN
- TER6 MESSAGE (=C* USER ACCESS NOT VALID.*),,R
- ABORT
- TERA CON 0 JOB CONTROL REGISTERS
- RTIM CON 0 REAL TIME
- TITLE SUBROUTINES.
- CKP SPACE 4
- ** CKP - CHECK POINTER WORD.
- *
- * ENTRY-
- * (X1) = POINTER WORD.
- *
- * EXIT-
- * (B6) = FWA.
- * (B7) = LWA.
- * EXITS TO ERR1 IF POINTER BAD.
- CKP SUBR ENTRY/EXIT
- SB5 A0
- SB7 X1
- AX1 24
- SB6 X1
- EQ B6,B7,ERR1
- NG B6,ERR1
- NG B7,ERR1
- ZR B6,ERR1
- ZR B7,ERR1
- GE B6,B7,ERR1
- GE B6,B5,ERR1
- GE B7,B5,ERR1
- EQ CKPX
- DCV SPACE 4
- ** DCV - CONVERT DATA.
- *
- * ENTRY-
- * (X1) = DATA TO BE CONVERTED.
- *
- * EXIT-
- * (X6) = CONVERTED DATA.
- *
- * SCRATCH-
- * X - 0, 1, 2, 3, 4, 5, 6, 7.
- * B - 2, 3, 4, 5.
- * A - 2, 3, 5.
- DCV SUBR ENTRY/EXIT
- MX0 -18 (X0) = FRACTION MASK
- SX4 1R. (X4) = DECIMAL POINT
- MX5 -36
- SA2 DCVA =.1P48+1
- LX4 18
- SA3 A2+B1 =10.0P
- SB5 6
- BX6 -X5*X1
- SX7 1000
- ZR X6,DCVX IF BLANK WORD
- SB4 1R0-1R (B4) = CONVERSION
- SA5 A3+B1 (X5) = BACKGROUND
- PX1 X6
- IX7 X6-X7
- SB2 -B5
- PL X7,DCV1 IF INTEGER PRESENT
- SB4 B0
- SA5 A5+B1
- DCV1 DX6 X2*X1 EXTRACT REMAINDER
- FX1 X2*X1
- SB3 X1
- LX5 -6 SHIFT ASSEMBLY
- SB2 B2+B5 ADVANCE SHIFT COUNT
- FX6 X3*X6 EXTRACT DIGIT
- SX7 X6+B4 CONVERT DIGIT
- IX5 X5+X7 ADVANCE ASSEMBLY
- NZ B3,DCV1 LOOP TO ZERO REMAINDER
- LX6 X5,B2 RIGHT JUSTIFY ASSEMBLY
- BX1 -X0*X6 EXTRACT FRACTION
- IX7 X1+X4 ADD POINT
- BX5 X0*X6 EXTRACT INTEGER
- LX5 6
- IX6 X5+X7 ADD INTEGER
- EQ DCVX
- DCVA CON 0.1P48+1
- CON 10.0P
- CON 9L
- CON 9L 0000
- ERR SPACE 4
- ** ERR - ABORT,S ANY RECOVERY ATTEMPT.
- * THIS ROUTINE IS CALLED WHEN ITEMS SUCH AS POINTERS HAVE
- * BEEN MASHED.
- ERR1 MESSAGE (=C*POINTER ERROR.*),,R
- * EQ ERRX
- ERRX MESSAGE (=C*RECOVERY IMPOSSIBLE.*),,R
- MESSAGE (=C*SRSA, IAF.*),5
- ABORT
- GRI SPACE 4,10
- ** GRI - GATHER RECOVERY INFORMATION.
- *
- * ENTRY (A0) = ADDRESS OF TERMINAL TABLE.
- * (B4) = FWA OF PARAMETER BLOCK.
- *
- * EXIT RECOVERY WORDS SET IN PARAMETER BLOCK.
- *
- * USES X - 1, 2, 3, 6, 7.
- * A - 1, 7.
- GRI SUBR ENTRY/EXIT
- SA1 A0+VROT SET UP MODES
- SX2 34B JOB CONTINUATION FLAG
- BX6 X1*X2 INPUT REQUESTED, OUTPUT AVAILABLE
- SX2 40B
- AX1 17-5 FILE FOR OUTPUT
- BX2 X2*X1
- BX6 X6+X2
- SA1 A0+VDCT
- SX2 B1
- AX1 50-0
- BX7 X1*X2 TEXT MODE
- AX1 51-50
- BX3 X1*X2 CURRENT CHARACTER SET
- AX1 55-51
- BX1 X1*X2 BRIEF MODE
- LX7 7
- LX1 1
- BX7 X1+X7
- BX6 X6+X7
- SA1 A0+VSTT
- MX7 -3 SAVE TERMINAL TABLE SUBSYSTEM
- LX7 12
- BX7 -X7*X1
- LX7 18-12
- BX6 X6+X7
- MX7 1
- LX7 55-59
- BX7 X7*X1 EFFECT MODE
- LX7 8-55
- BX6 X6+X7
- AX1 18-0
- BX7 X2*X1 INITIAL CHAR SET
- AX1 53-18
- SX2 101B
- BX1 X2*X1 DISABLE TERMINAL CONTROL, NO PROMPT FLAGS
- BX6 X6+X1 MODES COMPLETED
- LX7 15-0 INIT C.S.
- LX3 12-0 CURRENT C.S.
- BX3 X7+X3
- BX7 X6+X3
- SA1 A0+VCHT READ CHARACTER COUNTS
- SA2 A0+VFST READ INPUT/OUTPUT OVERFLOW COUNT
- SA7 B4+3 WRITE RECOVERY WORD 1
- MX7 -24
- MX6 -12
- LX6 24
- BX7 -X7*X1 SET CHARACTER COUNT
- BX2 -X6*X2 SET OVERFLOW COUNT
- BX7 X7+X2 WRITE RECOVERY WORD 2
- SA7 A7+B1
- EQ GRI EXIT
- IER SPACE 4,10
- ** IER - ISSUE EJT SYSTEM REQUEST.
- *
- * ENTRY LOGA = FWA OF EJT REQUEST PARAMETER BLOCK.
- *
- * EXIT (X2) = 0, IF REQUEST COMPLETE.
- * 1, IF ERROR ENCOUNTERED.
- *
- * USES X - 1, 2, 6.
- * A - 1, 2, 6.
- *
- * CALLS COD.
- *
- * MACROS MESSAGE, RECALL, RTIME, SYSTEM.
- IER SUBR ENTRY/EXIT
- RTIME IERE SET START TIME
- IER1 SYSTEM EJT,R,LOGA ISSUE EJT SYSTEM REQUEST
- SA1 LOGA
- AX1 10 CHECK ERROR RETURN
- MX2 -8
- BX2 -X2*X1
- ZR X2,IERX IF NO ERROR
- SX1 X2-RTER
- NZ X1,IER2 IF ERROR CODE OTHER THAN RETRY
- RECALL
- SA1 LOGA CLEAR ERROR CODE AND COMPLETION BIT
- SX2 RTER*2000B+1
- BX6 X2-X1
- SA6 A1
- RTIME IERF CHECK CURRENT TIME
- SA1 IERE
- SA2 A1+B1
- ERRNZ IERF-IERE-1 CODE DEPENDS ON CONSECUTIVE WORDS
- AX1 36
- AX2 36
- IX2 X2-X1 ELAPSED TIME SINCE *IER* CALLED
- SX2 X2-30
- NG X2,IER1 IF 30 SECONDS NOT YET ELAPSED
- SX2 JDER JOB MUST BE HUNG AT A CONTROL POINT
- IER2 BX1 X2
- SX2 X2-JOER
- ZR X2,IERX IF JOB ALREADY DETACHED
- RJ COD CONVERT ERROR CODE TO DISPLAY
- MX1 -24
- SA2 IERB PUT ERROR CODE INTO MESSAGE
- BX6 -X1*X6
- BX2 X1*X2
- BX6 X2+X6
- SA6 A2+
- SA2 VTTP GET TERMINAL NUMBER
- SX1 A0
- AX2 24
- IX1 X1-X2
- AX1 3
- RJ COD CONVERT TERMINAL NUMBER TO DISPLAY
- MX2 -30
- SA1 IERD ADD TERMINAL NUMBER TO MESSAGE
- BX6 -X2*X6
- BX1 X1*X2
- BX6 X1+X6
- SA6 A1
- MX6 -24
- SA1 LOGA GET JSN
- LX1 24
- BX1 -X6*X1
- NZ X1,IER3 IF JSN PRESENT
- SA1 =4R****
- IER3 SA2 IERC PUT JSN INTO MESSAGE
- BX6 X6*X2
- BX6 X6+X1
- SA6 A2
- MESSAGE IERA,,R
- SX2 B1
- EQ IERX RETURN
- IERA DATA 20L EJT SYSTEM REQUEST
- IERB DATA 10LERROR XXXX
- IERC DATA 10L, JSN=JSNA
- IERD DATA 10L, TN=12345
- DATA 1L.
- IERE CON 0 START TIME
- IERF CON 0 CURRENT TIME
- LOG SPACE 4
- ** LOG - LOG OFF ALL ACTIVE USERS.
- *
- * ENTRY (A0) = LWA+1 OF IAF FL.
- *
- * EXIT ALL ACTIVE USERS DETACHED OR TERMINATED.
- * ALL ACTIVE TERMINAL TABLES ZEROED.
- * (A0) = LWA+1 OF IAF FL.
- *
- * USES X - 0, 1, 2, 5, 6, 7.
- * A - 0, 1, 2, 6, 7.
- * B - 2, 3, 4, 5, 6, 7.
- *
- * CALLS CKP, COD, IER.
- *
- * MACROS MESSAGE, PARAM, RECALL.
- LOG6 SA1 LOGC RESTORE (A0)
- SA0 X1
- LOG SUBR ENTRY/EXIT
- SA1 VTTP GET TERMINAL TABLE POINTERS
- RJ CKP
- SX6 A0 SAVE FL
- SA6 LOGC
- SX5 B6 SAVE FWA OF TERMINAL TABLE
- SB6 B6+VPST*VTTL SET START OF ACTUAL TERMINALS
- LOG1 SA0 B6+
- SB2 VPST SET FIRST TERMINAL NUMBER
- LOG2 SA1 A0+VUIT
- MX2 -12
- BX2 -X2*X1
- ZR X2,LOG3 IF EJT ORDINAL = 0
- SA1 A0+VSTT
- LX1 59-48
- NG X1,LOG3 IF LOGOUT IN PROGRESS
- SB4 LOGA
- PARAM FJEJ FREEZE JOB
- RJ IER ISSUE EJT SYSTEM REQUEST
- NZ X2,LOG3 IF UNABLE TO FREEZE JOB
- SB4 LOGA
- SX0 SARC SET REASON CODE
- PARAM DTEJ,X0
- RJ IER ISSUE EJT SYSTEM REQUEST
- NZ X2,LOG3 IF UNABLE TO DETACH JOB
- BX6 X6-X6 CLEAR TERMINAL TABLE
- SA6 A0
- LOG3 SB5 A0+VTTL
- SB2 B2+B1 INCREMENT TERMINAL NUMBER
- SA0 B5
- LT B5,B7,LOG2 IF MORE TABLE TO SCAN
- * CHECK IF ALL USERS DETACHED.
- SA0 B6
- SB4 B0 PRESET FAILURE COUNT
- LOG4 SA1 A0+VUIT
- MX2 -12
- BX2 -X2*X1
- ZR X2,LOG5 IF EJT ORDINAL = 0
- SB4 B4+B1 COUNT DETACH FAILURE
- LOG5 SB5 A0+VTTL
- SA0 B5+
- LT B5,B7,LOG4 IF SCAN NOT COMPLETE
- ZR B4,LOG6 IF ALL TERMINALS DETACHED
- SA1 LOGB DECREMENT DETACH ATTEMPTS
- SX6 X1-1
- SA6 A1+
- ZR X6,LOG6 IF THREE ATTEMPTS, TERMINATE
- MESSAGE (=C* RETRY DETACHES.*),,R
- RECALL
- EQ LOG1 LOOP TO NEXT SCAN
- LOGA BSS EJPB EJT SYSTEM REQUEST PARAMETER BLOCK
- LOGB CON 3 DETACH RETRY COUNT
- LOGC CON 0 SAVE (A0)
- PPB SPACE 4,15
- ** PPB - PRESET PARAMETER BLOCK.
- *
- * ENTRY (A0) = TERMINAL TABLE ADDRESS.
- * (B4) = FWA OF PARAMETER BLOCK.
- * (X7) = FUNCTION CODE.
- *
- * EXIT WORDS 1 - 5 CLEARED.
- * IF *FJEJ*, AN INFORMATIVE MESSAGE IS ISSUED
- * TO *MS1W*.
- * (X6) = 0.
- * (A7) = (B4).
- * (X7) = (WORD 0) = JSN, FUNCTION CODE.
- * (X2) = EJT ORDINAL.
- *
- * USES X - 1, 2, 6, 7.
- * A - 1, 6, 7.
- PPB1 SA1 A0+VUIT GET EJT ORDINAL
- MX2 -12
- BX2 -X2*X1
- BX6 X6-X6 CLEAR WORDS 1 - 5
- SA6 A7+1
- MX1 EJPB-2
- PPB2 LX1 1
- SA6 A6+B1
- NG X1,PPB2 IF MORE WORDS TO CLEAR
- PPB SUBR ENTRY/EXIT
- LX7 1
- MX6 24
- SA1 A0+VFST ADD JSN TO WORD 0
- SX2 X7-FJEJ*2
- BX1 X1*X6
- BX7 X1+X7
- SA7 B4
- NZ X2,PPB1 IF NOT TO ISSUE MESSAGE
- LX6 24
- SA2 PPBA+1
- LX1 24
- BX6 -X6*X2 CLEAR OLD JSN
- BX6 X1+X6 ADD NEW JSN TO MESSAGE
- SA6 A2
- MESSAGE PPBA,1,R ISSUE MESSAGE TO *MS1W* ONLY
- EQ PPB1 CONTINUE
- PPBA DATA C*DETACHING, JSN= XXXX.*
- STA SPACE 4
- ** STA - ISSUES *IAFEX* STATISTICS.
- STA8 MESSAGE STAH,,R
- STA SUBR ENTRY/EXIT
- SB6 STAC
- SA1 VNTP CHECK IF NETWORK ACTIVE
- SX6 B0+
- NZ X1,STA1 IF ACTIVE
- SA6 STAD TURN OF NETWORK STATISTICS
- STA1 MX0 -12
- SB7 STAB
- SA2 B6 GET POINTER TO QUANITY TO BE CONVERTED
- ZR X2,STA3 IF END OF TABLE
- SB6 B6+B1
- SA1 X2 GET QUANITY
- STA2 SA2 A2+B1 MOVE MESSAGE
- SB6 B6+B1
- BX6 X2
- SA6 B7+B1
- SB7 B7+B1
- BX2 -X0*X2
- NZ X2,STA2 IF NOT END OF MESSAGE
- MX6 -18
- BX1 -X6*X1
- ZR X1,STA1 IF QUANITY ZERO
- RJ DCV CONVERT NUMBERS
- SA1 STAA FORMAT MESSAGE
- MX2 24
- MX3 36
- BX1 X2*X1
- BX7 -X3*X6
- AX6 24
- BX6 -X2*X6
- BX6 X1+X6
- SA6 A1
- SA1 =10H KILO-
- BX1 -X2*X1
- LX7 36
- BX6 X1+X7
- SA6 A6+B1
- MESSAGE STAA,,R
- EQ STA1 LOOP
- STA3 SA1 VCTP ISSUE COMMAND COUNTS
- BX6 X6-X6
- SA6 STAA+4
- RJ CKP
- STA4 SA1 B6+B1
- SB6 B6+2
- SX1 X1
- NZ X1,STA6 IF COMMAND USED
- STA5 LT B6,B7,STA4 IF STILL MORE COMMANDS TO CEHCK
- EQ STA7 RETURN
- STA6 RJ DCV CONVERT NUMBER
- SA1 STAA FORMAT MESSAGE
- MX2 24
- MX3 36
- BX5 -X3*X6
- AX6 24
- BX6 -X2*X6
- BX1 X2*X1
- BX6 X1+X6
- SA6 A1
- SA1 B6-2 GET COMMAND NAME
- MX6 42
- BX1 X6*X1
- RJ SFN SPACE FILL NAME
- BX2 X6 SET UP FIRST FIVE CHARACTERS OF NAME
- AX6 30
- LX5 36
- BX6 X5+X6
- SX7 1R
- LX7 30
- BX6 X6+X7
- SA6 A6+B1
- MX7 12 SET UP LAST TWO CHARACTERS OF NAME
- LX2 30
- BX6 X7*X2
- SA1 =8R COMMAND
- BX6 X1+X6
- SA6 A6+B1
- SA1 =4L(S).
- BX6 X1
- SA6 A6+B1
- MESSAGE STAA,,R
- EQ STA5
- STA7 TIME STAF
- RTIME STAG
- SA1 CPTIME
- MX6 -12
- BX2 -X6*X1
- AX1 12
- SX5 1000
- IX4 X1*X5
- IX4 X4+X2 TOTAL CPU TIME PREVIOUSLY (MS)
- SA1 STAF
- BX2 -X6*X1
- AX1 12
- IX3 X1*X5
- IX3 X3+X2 TOTAL CPU TIME CURRENTLY (MS)
- IX4 X3-X4 ELASPED CPU TIME (MS)
- SA1 STAG
- SA2 START
- MX3 -36
- BX1 -X3*X1
- BX2 -X3*X2
- IX1 X1-X2 ELAPSED TIME
- NG X1,STA8 DEADSTART RECVOERY HAS OCCURRED
- SX5 100*1000
- IX4 X4*X5
- IX1 X4/X1
- RJ DCV CONVERT NUMBER
- SA1 STAE
- MX2 -36
- BX7 X6
- AX6 24
- BX6 -X2*X6
- BX6 X6+X1
- SA6 A1
- SA1 A1+B1
- MX2 24
- LX7 36
- BX6 X2*X7
- BX6 X6+X1
- SA6 A1
- MESSAGE STAE,,R
- EQ STAX
- STAA DATA 10HIAFX
- STAB BSSZ 6
- STAC CON VTNL
- DATA C*USERS TOTAL.*
- CON LINB
- DATA C*USERS MAXIMUM.*
- CON VANL
- DATA C*USERS ACTIVE.*
- CON RECS
- DATA C*USERS RECOVERED.*
- CON SPRA
- DATA C*WORDS MAX. FL.*
- CON SPRB
- DATA C*FL INCREASES.*
- CON SPRL
- DATA C*FL DECREASES.*
- CON SPRF
- DATA C*SECS. MAX. INTERVAL*
- CON LINA
- DATA C*INCORRECT LOG IN(S).*
- CON VABL
- DATA C*ABNORMAL OCCURRENCES.*
- CON CPBM
- DATA C*POTS LOW.*
- CON VTSR
- DATA C* TSEM REJECTS DUE TO FULL QUEUE.*
- CON VTGR
- DATA C* TGPM REJECTS DUE TO NO POTS AVAILABLE.*
- CON VPPL
- DATA C*TIMES NO PPU.*
- CON TSYS+1
- DATA C*BASIC RUNS.*
- CON TSYS+2
- DATA C*FORTRAN RUNS.*
- CON TSYS+4
- DATA C*EXECUTES.*
- CON INPA
- DATA C*INPUT RESPONSES.*
- * NETWORK STATISTICS.
- STAD BSS 0
- QUAL IAFEX4
- CON BLTC
- DATA C*BLOCKS LOST.*
- CON IDBC
- DATA C*INCORRECT DATA BLOCKS.*
- CON ISMC
- DATA C*INCORRECT SUPERVISORY MESSAGES.*
- CON LGLC
- DATA C*LOGICAL ERRORS.*
- CON NAKC
- DATA C*BLOCKS NAK.*
- CON NPBC
- DATA C*NETPUTS BUSY.*
- CON DSXC
- DATA C*DRIVER STACK EXITS.*
- CON MSXC
- DATA C*MONITOR STACK EXITS.*
- QUAL *
- CON 0 END OF TABLE
- * CPU USAGE MESSAGE.
- STAE DATA 4LIAFX
- DATA 6R PERCE
- DATA C*NT CPU USAGE.*
- STAF CON 0
- STAG CON 0
- STAH DATA C*CPU UTILIZATION INDETERMINATE.*
- TITLE COMMON DECKS.
- *CALL COMCCIO
- *CALL COMCCPM
- *CALL COMCCOD
- *CALL COMCLFM
- *CALL COMCSFN
- *CALL COMCSYS
- QUAL
- EJECT
- TTL IAFEX4 - IAFEX/NETWORK INTERFACE.
- QUAL IAFEX4
- IDENT IAFEX4,TNI,,1,1
- *COMMENT IAFEX - *IAF/NAM* INTERFACE.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SPACE 4
- *** IAFEX4 - IAFEX/NETWORK INTERFACE.
- * P.D. FARRELL 77/03/17.
- IAFEX4 SPACE 4
- *** IAFEX4 PROVIDES THE INTERFACE BETWEEN IAFEX AND
- * NETWORK INTERFACE (NAM) TERMINALS. IAFEX4 OPERATES
- * AS AN ADDITIONAL TERMINAL DRIVER, EITHER IN PLACE OF
- * OR IN PARALLEL WITH THE PPU MULTIPLEXER DRIVER, 1TM,
- * OR THE INTERNAL STIMULATION DRIVER, 1TN. IAFEX4
- * IS LOADED DURING IAFEX INITIALIZATION ONLY IF NETWORK
- * TERMINALS HAVE BEEN DEFINED IN THE SYSTEM NETWORK FILE.
- * BECAUSE IAFEX4 OVERLAYS TRANSACTION TERMINAL PROCESSING
- * CODE OF THE MAIN EXECUTIVE, BOTH TRANSACTION AND NETWORK
- * TERMINALS CANNOT BE DEFINED SIMULTANEOUSLY.
- IAFEX4 TITLE INTERNAL DOCUMENTATION.
- GLOSSARY SPACE 4,10
- ** GLOSSARY OF NETWORK INTERFACE ACRONYMS.
- *
- *
- * ABC APPLICATION BLOCK COUNT (DOWNSTREAM)
- * ABH APPLICATION BLOCK HEADER
- * ABL APPLICATION BLOCK LIMIT
- * ABN APPLICATION BLOCK NUMBER
- * ABT APPLICATION BLOCK TYPE
- * ACN APPLICATION CONNECTION NUMBER
- * ACT APPLICATION CHARACTER TYPE
- * AIP APPLICATION INTERFACE PACKAGE OR PROCEDURE
- * ALN APPLICATION LIST NUMBER
- * APP APPLICATION
- * BACK BLOCK ACKNOWLEDGEMENT
- * BT BLOCK TYPE
- * CS COMMUNICATIONS SUPERVISOR
- * HA HEADER AREA
- * TA TEXT AREA
- * NAM NETWORK ACCESS METHOD
- * NIP NETWORK INTERFACE PROGRAM
- * SM SUPERVISORY MESSAGE
- * SMP SUPERVISORY MESSAGE PROCESSOR
- * TA TEXT AREA
- * TL TEXT LENGTH
- * TLC TEXT LENGTH IN CHARACTERS OR OTHER UNITS AS
- * DEFINED BY THE ACT OF THE ASSOCIATED DATA BLOCK
- * TLMAX MAXIMUM LENGTH OF DATA MESSAGE BLOCK TEXT
- TABLES SPACE 4
- ** IAFEX4 TABLE USAGE.
- *
- * *IAFEX4* AND THE NETWORK TERMINAL PROCESSING ROUTINES
- * OF PPU PROGRAM *1TO* USE TERMINAL TABLE WORDS *VFST*,
- * *VDPT*, AND *VCHT* TO MAINTAIN TERMINAL OPERATIONS PA-
- * RAMETERS.
- *
- * IAFEX4 ALSO USES TWO DYNAMIC TABLES IN ADDITION TO THE
- * REGULAR, NON-NETWORK TABLES. THESE TABLES, THE MESSAGE
- * STATUS TABLE AND THE NETWORK ACTIVITY TABLE, ARE
- * ALLOCATED ONLY IF NETWORK TABLES ARE DEFINED.
- TABLES SPACE 4,10
- ** MESSAGE STATUS TABLE, *VMST*.
- *
- * THE MESSAGE STATUS TABLE CONTAINS NETWORK
- * TERMINAL CONTROL INFORMATION AND SUPERVISORY MESSAGE
- * POINTERS.
- *
- *T, 16/ FLAGS,8/ DT,3/ ABC,3/ ABL,2/ ,5/ TF,5/ NP,6/ PC,12/ TP.
- *
- * FLAG BITS:
- * 59 = TERMINAL ON-LINE.
- * 58 = NETWORK TYPE.
- * 0 = NAM/CCP CONNECTION.
- * 1 = NAM/CDNA CONNECTION.
- * 57 = BREAK IN PROGRESS.
- * 56 = SHUTDOWN WARNING SENT.
- * 55 = END-CONNECTION IN PROGRESS.
- * 54 = DATA RECEIVED PREVIOUS CYCLE.
- * 53 = *MSG* BLOCK SENT (INPUT ENABLED).
- * 52 = OUTPUT PRESENT IN *NAM*.
- * (THIS FLAG IS USED ONLY DURING BREAK
- * PROCESSING.)
- * 51 = TYPEAHEAD IN EFFECT.
- * 50 = UNUSED.
- * 49 = BREAK MARKER RECEIVED.
- * 48 = TIMEOUT FLAG.
- * 47 = CONNECTION RESET RECEIVED (FC/RST)
- * 46-44 = TEMPORARY STORAGE FOR REASON CODE.
- * DT = DEVICE TYPE.
- * ABC = UNACKNOWLEDGED DOWNSTREAM BLOCK COUNT.
- * ABL = APPLICATION BLOCK LIMIT.
- * TF = TRANSLATION FLAGS.
- * 27 = 74 ESCAPE CODE AT END OF PREVIOUS BLOCK.
- * 26 = 76 ESCAPE CODE AT END OF PREVIOUS BLOCK.
- * 25 = NAM TRANSPARENT CONTINUATION.
- * 24 = PARTIAL LINE AT END OF PREVIOUS BLOCK.
- * 23 = EXTENDED ASCII OUTPUT (*0011* BYTE).
- * NP = NUMBER OF POTS ALLOCATED FOR OUTPUT POT STRING.
- * PC = POT COUNT FOR INTERNAL TYPEAHEAD QUEUE.
- * TP = TYPEAHEAD POT POINTER.
- TABLES SPACE 4,10
- ** NETWORK ACTIVITY TABLE, *VNAT*.
- *
- * THE NETWORK ACTIVITY TABLE INDICATES WHICH
- * NETWORK TERMINALS REQUIRE SERVICE FROM THE TERMINAL
- * MANAGER. ONE BIT IS USED FOR EACH NETWORK TERMINAL,
- * 32 BITS PER CM WORD. A TERMINAL'S ACTIVITY IS SET
- * WHEN THE TERMINAL REQUIRES SERVICE BY THE NETWORK
- * DRIVER. A TERMINAL'S ACTIVITY BIT MAY BE FOUND BY
- * THE FOLLOWING ALGORITHM:
- *
- * WORD LOCATION RELATIVE TO START OF TABLE =
- *
- * [(TERMINAL NO.) - (FIRST NETWORK TERMINAL NO.)]/32.
- *
- * BIT LOCATION RELATIVE TO BIT 59 =
- *
- * [(TERMINAL NO.) - (FIRST NETWORK TERMINAL NO.)] MOD 32.
- RCCW SPACE 4,10
- ** RECEIVING DATA CONTROL WORD, *RCCW*.
- *
- * THIS SINGLE WORD IS USED BY EACH TERMINAL FOR PROCESSING
- * INPUT WHICH REQUIRES MORE THAN ONE CYCLE THROUGH THE
- * TRANSLATION ROUTINE.
- *
- *T, 1/F, 23/UNUSED, 18/TLC, 18/CA.
- *
- * F = FIRST SEGMENT OF LOGICAL LINE IF SET.
- * TLC = TEXT LENGTH IN CHARACTERS OF CURRENT BLOCK.
- * CA = CURRENT ADDRESS IN RECEIVING BUFFER (RCVB).
- TITLE LOCAL DEFINITIONS.
- ASCII SPACE 4,10
- ** ASCII CHARACTERS USED AS CONSTANTS.
- ASC.A EQU 0#41 ASCII *A* (UC)
- ASC.C EQU 0#43 ASCII *C* (UC)
- ASC.X EQU 0#58 ASCII *X* (UC)
- ASC.AT EQU 0#40 ASCII COMMERCIAL AT
- ASC.CF EQU 0#5E ASCII CIRCUMFLEX
- ASC.CL EQU 0#3A ASCII COLON
- ASC.CM EQU 0#2C ASCII *,*
- ASC.CR EQU 0#0D ASCII *CR*
- ASC.ETX EQU 0#03 ASCII *ETX*
- ASC.LF EQU 0#0A ASCII *LF*
- ASC.PD EQU 0#2E ASCII *.*
- ASC.PL EQU 0#2B ASCII *+*
- ASC.SP EQU 0#20 ASCII SPACE
- ASC.US EQU 0#1F ASCII *US*
- ASC.0 EQU 0#30 ASCII ZERO
- EXT SPACE 4,10
- ** EXT - DISABLE NETWORK CALL MACRO *EXT* PSEUDO-OP.
- *
- * THE NETWORK CALL MACROS AS DEFINED IN NETTEXT USE
- * *EXT* PSEUDO-OPS TO REFERENCE AIP MODULE ENTRY POINTS.
- * THESE MUST BE DISABLED IN ORDER TO ALLOW ABSOLUTE
- * ASSEMBLIES.
- EXT OPSYN NIL
- MSGHDR SPACE 4,10
- ** MSGHDR - GENERATE MESSAGE HEADER.
- *
- * GENERATES NETWORK FORMAT MESSAGE HEADER.
- *
- * LOC MSGHDR ABT=A,ADR=B,ABN=C,ACT=D,NFE=E,XPT=F,AIM=G,TLC=H.
- * *ABT* = BLOCK TYPE.
- * *ADR* = ADDRESS (USUALLY ACN).
- * *ABN* = APPLICATION BLOCK NUMBER.
- * *ACT* = CHARACTER TYPE.
- * *NFE* = NO-FORMAT-AFFECTOR BIT (0 OR 1).
- * *XPT* = NAM TRANSPARENT MODE BIT (0 OR 1).
- * *AIM* = AUTO-INPUT MODE BIT (0 OR 1).
- * *TLC* = TEXT LENGTH IN *ACT* UNITS.
- *
- * OMITTED PARAMETERS DEFAULT TO A VALUE OF ZERO.
- PURGMAC MSGHDR
- MSGHDR MACROE ABT,ADR,ABN,ACT,NFE,XPT,AIM,TLC
- VFD 6/ABT,12/ADR,18/ABN,4/ACT,4/0,1/NFE,1/XPT,1/0,1/AIM,12/TLC
- ENDM
- NETLINK SPACE 4,10
- ** NETLINK - GENERATE NETWORK LINKAGE.
- *
- * LINKS TO A NETWORK AIP ENTRY AS LOADED.
- *
- * NETLINK ENTRY
- * ENTRY = NAME OF AIP ENTRY POINT.
- *
- * CODE GENERATED:
- *
- * ENTRY PS 0
- * SA4 ENTRY READ ENTRY POINT
- * SX5 (AIP) SET AIP ENTRY POINT ADDRESS
- * (PRESET DURING INITIALIZATION.)
- * EQ XRJ TRANSFER RETURN JUMP
- NETLINK MACRO A
- IFC EQ,*A**,1
- ERR NETLINK ENTRY POINT OMITTED.
- A PS 0
- SA4 A
- SX5 *+400000B
- EQ XRJ
- ENDM
- LIST X
- *CALL COMSNCD
- LIST *
- *CALL COMSSCP
- TITLE COMMON STORAGE.
- SPACE 4,10
- ORG //TINST+5
- TNI BSS 0 DEFINE FWA OF OVERLAY.
- SPACE 4,10
- ** PROCESSOR CONTROL FLAGS.
- *
- * FLAG USAGE:
- *
- * NONZERO = ON/TRUE/SET.
- * ZERO = OFF/FALSE/CLEAR.
- IBSY CON 0 HEADER ADDRESS IF INPUT BUFFER BUSY
- NBSY CON 0 NAM (PARALLEL MODE) BUSY
- NDSL CON 0 NETWORK DRIVER STACK LIMIT
- NTON CON 0 NETWORK CONNECTED
- OBSY CON 0 OUTPUT BUFFER BUSY
- PCRX CON 0 PREVIOUS CYCLE FORCED READ EXIT
- SHDF CON 0 SHUTDOWN ADDRESS:
- POSITIVE = NORMAL SHUTDOWN
- NEGATIVE = FORCED SHUTDOWN
- SUPA CON 0 SUPERVISORY MESSAGE AVAILABLE
- SPACE 4,10
- ** INTERESTING STATISTICS.
- BLTC CON 0 BLOCK-LOST COUNT
- DSXC CON 0 DRIVER STACK EXIT COUNT
- IDBC CON 0 INCORRECT DATA BLOCK COUNT
- ISMC CON 0 INCORRECT SUPERVISORY MESSAGE COUNT
- LGLC CON 0 LOGICAL ERROR COUNT
- MSXC CON 0 MONITOR STACK EXIT COUNT
- NAKC CON 0 *NAK* COUNT
- NGBC CON 0 NETGET BUSY COUNT
- NPBC CON 0 NETPUT BUSY COUNT
- SPACE 4,10
- ** DATA STORAGE.
- CCFC CON 0 CURRENT CYCLE FUNCTION COUNT COMPLEMENT
- HACN CON 0 HIGHEST ACN ACTIVE
- NCIN CON 0 NUMBER OF CHARACTERS ON INPUT LINE
- NDSA CON 0 NETWORK DRIVER STACK ADDRESS
- NFRT CON 0 NETWORK FUNCTION REAL TIME CLOCK
- NGLN CON 0 NETGET LIST OR ACN NUMBER
- NSPA CON 0 NETWORK DRIVER STACK POINTER ADDRESS
- NSQP CON 0 NULL SUPERVISORY MESSAGE QUEUE POINTER
- NSUP CON 0 AIP PARALLEL STATUS RESPONSE
- OTPP CON 0 OUTPUT MESSAGE POT POINTER
- RCCW CON 0 RECEIVING DATA CONTROL WORD
- SMPF CON 0 SUPERVISORY MESSAGE PRIMARY FUNCTION CODE
- SMSF CON 0 SUPERVISORY MESSAGE SUBFUNCTION CODE
- TMSI CON 0 TERMINAL MANAGER SCAN INDEX
- SPACE 4,10
- ** AIP TRACE DATA STORAGE.
- ATMC CON 0 MESSAGE COUNT
- JPTO DATA 10H"TJOB" JOB FILE TO PROCESS AIP TRACE OUTPUT
- MXLT CON MXML MAXIMUM MESSAGE LENGTH
- RWTF DATA 0 REWIND FILE SPECIFIED BY *TJOB*
- SPACE 4,10
- ** TEMPORARY PARAMETERS FOR NETWORK CALLS.
- NCPA CON 0 PARAMETER A
- NCPB CON 0 PARAMETER B
- NCPC CON 0 PARAMETER C
- NCPD CON 0 PARAMETER D
- NCAS CON 0 SAVE (A0)
- NCBS CON 0 SAVE (B2)
- NCZP CON 0 CONSTANT ZERO FOR RESERVED PARAMETERS
- SPACE 4,10
- ** CANNED SUPERVISORY MESSAGES.
- * HDRS1 - HEADER FOR ONE WORD MESSAGE (DEFAULT HEADER).
- HDRS1 MSGHDR ABT=BTSV,ACT=1,TLC=1
- * HDRS2 - HEADER FOR TWO WORD MESSAGE.
- HDRS2 MSGHDR ABT=BTSV,ACT=1,TLC=2
- * HDRS3 - HEADER FOR A SYNCHRONOUS SUPERVISORY MESSAGE.
- HDRS3 MSGHDR ABT=BTSV,ACT=2,TLC=2
- * HDRS4 - HEADER FOR *CONEND* WITH PARAMETERS.
- HDRS4 MSGHDR ABT=BTSV,ACT=1,TLC=8
- * CONREQ - CONNECTION REQUEST REPLY.
- CONREQ VFD 8/PFCN,2/1,6/SFRT,34/0,4/2,6/1
- * CONREJ - CONNECTION REJECT.
- CONREJ VFD 8/PFCN,2/2,6/SFRT,8/0,36/0
- * CONEND - END CONNECTION.
- CONEND VFD 8/PFCN,2/0,6/SFEN,44/0
- CON 0 CONEND PARAMETER
- * FCBRK - CONNECTION BREAK.
- FCBRK VFD 8/PFFC,2/0,6/SFBK,44/0
- * DCTRU - TRUNCATE UPLINE DATA TO IAF BUFFER SIZE.
- DCTRU VFD 8/PFDC,2/0,6/SFTR,44/0
- * FCINI - CONNECTION INITIATION RESPONSE.
- FCINI VFD 8/PFFC,2/1,6/SFCM,44/0
- * INTRES - RESPONSE TO BYPASS INTERRUPT FROM USER.
- INTRES VFD 8/PFIN,2/0,6/SFRS,44/0
- * LSTFDX - LIST CONTROL, FULL DUPLEX - CANCEL TYPEAHEAD.
- LSTFDX VFD 8/PFLS,2/0,6/SFFD,44/0
- * LSTHDX - LIST CONTROL, HALF DUPLEX - INITIATE TYPEAHEAD.
- LSTHDX VFD 8/PFLS,2/0,6/SFHD,44/1
- * ROMARK - RESUME OUTPUT.
- ROMARK VFD 8/PFRO,8/0,40/0
- * DLTDC - DOWNLINE TERMINAL DEFINITION - CDNA.
- * MESSAGE HEADER IS USED FOR *0010* CONTROL BYTE PROCESSING.
- DLTDC MSGHDR ABT=BTSV,ACT=2
- * DLTDF - DOWNLINE TERMINAL DEFINITION - CCP.
- * MESSAGE HEADER IS USED BY BOTH *0006* AND *0016* CONTROL
- * BYTE PROCESSING. MESSAGE TEXT IS USED BY *0006* CONTROL
- * BYTE PROCESSING ONLY.
- DLTDF MSGHDR ABT=BTSV,ACT=2
- VFD 8/PFTC,8/SFDM,8/70D,8/0,8/52D,8/1,8/57D,4/0
- VFD 4/0,8/58D,8/0,8/60D,8/0,8/56D,8/0,8/59D
- SPACE 4,10
- ** CANNED DATA MESSAGES.
- * HDRM - GENERAL IVT ASCII MESSAGE HEADER.
- HDRM MSGHDR ABT=BTBK,ACT=2
- * HDRAI - AUTO-INPUT MODE MESSAGE HEADER.
- HDRAI MSGHDR ABT=BTMS,ACT=2
- * HDRB - NAM TRANSPARENT OUTPUT MESSAGE HEADER.
- HDRB MSGHDR ABT=BTBK,ACT=2,XPT=1
- * DMBI - NULL MSG BLOCK.
- DMBI MSGHDR ABT=BTMS,ACT=4,TLC=10
- DATA 1L,
- * DMBL - BELL MESSAGE.
- DMBL MSGHDR ABT=BTBK,ACT=2,TLC=4
- DATA 0#2C07071FS28
- DMBLL EQU *-DMBL
- * DMIC - * INCORRECT COMMAND.*
- DMIC MSGHDR ABT=BTBK,ACT=4,TLC=40
- DATA 10L INCORREC
- DATA 10LT COMMAND.
- DATA 2L
- DATA 1L
- DMICL EQU *-DMIC
- * DMID - "IDLE".
- DMID MSGHDR ABT=BTMS,ACT=4,TLC=20
- DATA 5L IDLE
- DATA 1L
- DMIDL EQU *-DMID
- * DMIF - "INCORRECTLY FORMATTED DATA."
- DMIF MSGHDR ABT=BTBK,ACT=4,TLC=50
- DATA 10L INCORREC
- DATA 10LTLY FORMAT
- DATA 10LTED DATA.
- DATA 1L
- DATA 1L
- DMIFL EQU *-DMIF
- * DMIN - "*INTERRUPTED*"
- DMIN MSGHDR ABT=BTMS,ACT=4,TLC=30
- DATA 10L *INTERRU
- DATA 5LPTED*
- DATA 1L
- DMINL EQU *-DMIN
- * DMIP - INPUT PROMPT.
- DMIP MSGHDR ABT=BTMS,ACT=4,TLC=10
- DATA 3L,?
- * DMIT - "INCORRECTLY FORMATTED TRMDEF DATA."
- DMIT MSGHDR ABT=BTBK,ACT=4,TLC=50
- DATA 10L INCORREC
- DATA 10LTLY FORMAT
- DATA 10LTED TRMDEF
- DATA 6L DATA.
- DATA 1L
- DMITL EQU *-DMIT
- * DMLP - " WRITE ON READ-ONLY FILE."
- DMLP MSGHDR ABT=BTMS,ACT=4,TLC=40
- DATA 10L0 WRITE ON
- DATA 10L READ-ONLY
- DATA 6L FILE.
- DATA 1L
- DMLPL EQU *-DMLP
- * DMNP - " NO PRIMARY FILE."
- DMNP MSGHDR ABT=BTMS,ACT=4,TLC=30
- DATA 10L0 NO PRIMA
- DATA 8LRY FILE.
- DATA 1L
- DMNPL EQU *-DMNP
- * DMOV - " *OVL*".
- DMOV MSGHDR ABT=BTMS,ACT=4,TLC=20
- DATA 7L *OVL*
- DATA 1L
- DMOVL EQU *-DMOV
- * DMRC - "RUN COMPLETE."
- DMRC MSGHDR ABT=BTMS,ACT=4,TLC=30
- DATA 10L RUN COMP
- DATA 5LLETE.
- DATA 1L
- DMRCL EQU *-DMRC
- * DMRDY - "READY."
- DMRDY MSGHDR ABT=BTMS,ACT=4,TLC=20
- DATA 8L READY.
- DATA 1L
- DMRDYL EQU *-DMRDY
- * DMSH - "NETWORK SHUTDOWN - PLEASE LOGOUT."
- DMSH MSGHDR ABT=BTMS,ACT=4,TLC=50
- DATA 10L0 NETWORK
- DATA 10LSHUTDOWN -
- DATA 10L PLEASE LO
- DATA 5LGOUT.
- DATA 1L0
- DMSHL EQU *-DMSH
- * DMSL - */* (OR *SLASH*).
- DMSL MSGHDR ABT=BTMS,ACT=4,TLC=10
- DATA 2L,/
- DMSLL EQU *-DMSL
- * DMTO - " TERMINAL TIMEOUT IN NNN SECONDS. "
- DMTO MSGHDR ABT=BTMS,ACT=4,TLC=50
- DATA 10L TERMINAL
- DATA 10LTIMEOUT IN
- DMTOS DATA 6R SECON
- DATA 2LDS
- DATA 1L
- DMTOL EQU *-DMTO
- NDR TITLE NDR - NETWORK DRIVER MAIN CONTROL.
- NDR SPACE 4,10
- ** NDR - NETWORK DRIVER MAIN CONTROL.
- *
- * THIS IS THE MAIN CONTROL LOOP OF THE NETWORK DRIVER.
- *
- * ENTRY (PCRX) = SET IF EXIT FORCED ON PREVIOUS CYCLE.
- * (DBUG) = DRIVER DEBUG STATUS.
- *
- * EXIT (PCRX) = SET IF EXIT FORCED.
- *
- * CALLS CCT, CFX, CKP, GLM, GTM, MGR, NON, NSQ,
- * RDM, RTF, SHA, SHD.
- NDR SUBR ENTRY/EXIT
- * CHECK DEBUG SWITCH.
- SA2 DBUG READ DRIVER DEBUG WORD
- MX6 -12
- BX3 -X6*X2 MASK BYTE 4
- NZ X3,NDRX IF BYTE 4 SET, EXIT
- LX6 12 MOVE BYTE 3 TO BYTE 4
- BX1 -X6*X2
- AX1 12
- BX6 X2+X1
- SA6 A2+ REWRITE DEBUG WORD
- * CHECK CONNECTION STATUS.
- SX7 -NFCL
- SA1 NTON READ NETON FLAG
- SX6 B0+
- SA6 NDSL
- SA7 CCFC
- NZ X1,NDR1 IF NTON SET
- RJ NON TRY TO CONNECT
- EQ NDRX EXIT
- * CHECK SHUTDOWN STATUS.
- NDR1 SA1 VSHD CHECK SCP STATUS
- SA2 SHDF READ SHUTDOWN FLAG
- PL X1,NDR2 IF NO SCP FAILURE
- PL X2,SCF IF IMMEDIATE SHUTDOWN NOT IN PROGRESS
- NDR2 ZR X2,NDR3 IF NO SHUTDOWN IN PROGESS
- RJ SHD PROCESS SHUTDOWN
- NG X6,NDRX IF IMMEDIATE SHUTDOWN
- * CHECK NETWORK STATUS.
- NDR3 SA1 NBSY GET PREVIOUS CYCLE STATUS
- ZR X1,NDR4 IF NAM NOT BUSY PREVIOUS CYCLE
- RJ CKP CHECK NAM STATUS
- NZ X6,NDRX IF NAM BUSY, EXIT
- NDR4 RJ RTF RELEASE TRACE FILE
- NZ X6,NDRX IF NAM BUSY, EXIT
- * POSTPROCESS PREVIOUS CYCLE NETWORK CALL.
- SA4 IBSY CHECK FOR INPUT
- ZR X4,NDR5 IF NO INPUT
- RJ RDM PROCESS MESSAGE
- NZ X6,NDRX IF UNABLE TO PROCESS AT THIS TIME
- SA1 NBSY
- SA2 CCFC INCREMENT FUNCTION COUNT
- NZ X1,NDRX IF NAM BUSY, EXIT
- SX7 X2+B1
- SA7 A2
- PL X7,NDRX IF FUNCTION LIMIT, EXIT
- * PROCESS ASYNCHRONOUS SUPERVISORY MESSAGES.
- NDR5 SA1 SUPA CHECK FOR SUPERVISORY MESSAGE
- SA2 NDSL CHECK STACK LIMIT
- NZ X2,NDRX IF STACK LIMIT, EXIT
- ZR X1,NDR6 IF NO MESSAGE WAITING
- SB2 B0+
- RJ GTM GET MESSAGE, (B2) = ACN 0
- NZ X6,NDRX IF NAM BUSY, EXIT
- ZR X2,NDR6 IF NO MESSAGE
- RJ RDM PROCESS MESSAGE
- NZ X6,NDR12 IF UNABLE TO PROCESS AT THIS TIME
- SA1 NBSY
- SA2 CCFC INCREMENT FUNCTION COUNT
- NZ X1,NDRX IF NAM BUSY, EXIT
- SX7 X2+B1
- SA7 A2
- NG X7,NDR5 IF NOT FUNCTION LIMIT
- EQ NDRX EXIT
- * TRANSMIT NULL SUPERVISORY MESSAGE QUEUE.
- NDR6 SA1 NSQP CHECK QUEUE POINTER
- ZR X1,NDR7 IF EMPTY
- RJ NSQ TRANSMIT NULL QUEUE
- NZ X6,NDRX IF NAM BUSY, EXIT
- * EXECUTE TERMINAL MANAGER.
- NDR7 RJ CFX CHECK FOR FORCED EXIT
- NZ X6,NDRX IF FORCED EXIT
- RJ MGR EXECUTE TERMINAL MANAGER
- NZ X6,NDRX IF FORCED EXIT OR STACK LIMIT
- * CHECK IF IT IS TIME TO REQUEST INPUT.
- SA1 PCRX CHECK PREVIOUS CYCLE READ EXIT
- SA6 A1+ CLEAR FLAG
- NZ X1,NDR8 IF FORCED READ EXIT PREVIOUS CYCLE
- RJ CCT CHECK CYCLE TIME
- ZR X6,NDRX IF NOT TIME FOR INPUT, EXIT
- * REQUEST DATA OR SUPERVISORY MESSAGE FROM NETWORK.
- NDR8 SA1 SUPA CHECK FOR SUPERVISORY MESSAGE
- SX2 B1 SET (X2) = LIST 1
- SB2 B0 SET (B2) = ACN 0
- ZR X1,NDR9 IF NO SUPERVISORY MESSAGE QUEUED
- RJ GTM GET MESSAGE, ACN =0
- EQ NDR11 CHECK NAM BUSY
- NDR9 RJ CFL CHECK AVAILABLE POT COUNT
- PL X2,NDR10 IF MINIMUM OR ABOVE, GET INPUT FROM NAM
- RJ CKP CHECK NAM STATUS
- SA1 VCPL
- NZ X1,NDRX IF FL INCREASE PENDING
- SA1 SPRM INCREMENT THROTTLE FLAG
- SX6 X1+1
- SA6 A1+
- EQ NDRX EXIT
- NDR10 SX2 B1 SET (X2) = LIST 1
- RJ GLM GET DATA LIST MESSAGE
- NDR11 NZ X6,NDR12 IF NAM BUSY
- ZR X2,NDRX IF NO MESSAGE, EXIT
- SA1 NDSL CHECK STACK LIMIT
- NZ X1,NDR12 IF STACK LIMIT
- RJ RDM PROCESS MESSAGE
- NZ X6,NDR12 IF UNABLE TO PROCESS AT THIS TIME
- * CONTINUE READING IF WE CAN.
- SA2 CCFC INCREMENT CYCLE FUNCTION COUNT
- SA3 NBSY
- NZ X3,NDR12 IF NAM BUSY
- SX7 X2+B1 INCREMENT FUNCTION COUNT
- SA7 A2
- NZ X7,NDR8 IF NOT CYCLE LIMIT, LOOP
- RJ CFX CHECK FOR FORCED EXIT
- ZR X6,NDR8 IF NOT FORCED EXIT, LOOP
- * SET FORCED READ EXIT FLAG AND EXIT.
- NDR12 SX6 B1+ SET FORCED READ EXIT FLAG
- SA6 PCRX
- EQ NDRX EXIT
- MGR TITLE MGR - TERMINAL MANAGER.
- MGR SPACE 4,20
- ** MGR - TERMINAL MANAGER.
- *
- * SCANS THE NETWORK TERMINAL TABLES AND MESSAGE STATUS
- * TABLES AND DIRECTS PROCESSING AS REQUIRED FOR EACH
- * ACTIVE TERMINAL.
- *
- * *MGR* PERIODICALLY CHECKS THE EXECUTIVES OTHER DRIVER
- * STACKS AND THE MONITOR REQUEST STACK TO SEE IF THEY
- * REQUIRE PROCESSING. IF SO, *MGR* WILL EXIT.
- *
- * ENTRY NAM NOT BUSY.
- * (TMSI) = CURRENT SCAN INDEX.
- *
- * EXIT (X6) = NONZERO IF FORCED EXIT OR STACK LIMIT.
- * (CCFC) = CURRENT CYCLE FUNCTION COUNT COMPLEMENT.
- *
- * CALLS CFX, GAT, ISW, PDR, PQO, RDM, SSM, TFR, UNQ.
- MGR SUBR ENTRY/EXIT
- * CHECK IF IT IS TIME TO CYCLE THE MANAGER.
- SA2 TMSI GET SCAN INDEX
- SB2 X2+ (B2) = SCAN INDEX (TERMINAL NUMBER)
- TX3 X2,-VNTP
- NZ X3,MGR1 IF NOT STARTING FROM GROUND ZERO
- BX6 X6-X6 CLEAR ACTIVITY INDICATOR
- SA2 MGRB
- SA6 A2
- NZ X2,MGR1 IF ACTIVITY PRESENT - CONTINUE PROCESSING
- SA3 RTIM CURRENT REAL TIME
- SA4 MGRA TIME OF LAST CYCLE
- SX5 NMCT SET MINIMUM MANAGER SCAN CYCLE TIME
- MX6 -36
- IX4 X3-X4 ELAPSED TIME
- BX4 -X6*X4 MASK MILLISECONDS
- LX7 X3
- IX4 X4-X5 COMPARE TO MINIMUM
- BX6 X6-X6 RETURN (X6) = 0
- NG X4,MGRX IF NOT MINIMUM, RETURN
- SA7 A4+ RESET START TIME
- * FIND TERMINAL WITH ACTIVITY BIT SET.
- MGR1 RJ GAT GET ACTIVE TERMINAL
- NZ X6,MGR2 IF TERMINAL FOUND
- TX7 B0,VNTP RESET SCAN INDEX
- SA7 TMSI
- EQ MGRX RETURN
- * PROCESS REENTRY.
- MGR2 SA6 TMSI STORE SCAN INDEX
- SA6 SSPA SET TERMINAL NUMBER IN SSPA
- SA1 NDSL CHECK STACK LIMIT
- NZ X1,MGR7 IF STACK LIMIT
- RJ PDR PROCESS DRIVER REENTRY
- NZ X6,MGR6 IF REENTRY PROCESSED
- * PROCESS FUNCTION REQUEST.
- SA1 A0+VDCT READ VDCT
- PL X1,MGR3 IF NOT FUNCTION REQUEST
- RJ TFR PROCESS REQUEST
- EQ MGR6
- * CHECK FOR QUEUED OUTPUT.
- MGR3 RJ PQO PROCESS QUEUED OUTPUT
- NZ X6,MGR6 IF OUTPUT
- * CHECK FOR SHUTDOWN WARNING.
- SA4 SHDF CHECK SHUTDOWN FLAG
- ZR X4,MGR4 IF SHUTDOWN NOT IN PROGRESS
- TA5 B2,VMST GET VMST ENTRY
- LX5 59-56
- NG X5,MGR4 IF SHUTDOWN WARNING SENT
- RJ ISW ISSUE SHUTDOWN WARNING
- EQ MGR6
- * CHECK FOR INTERNAL TYPEAHEAD QUEUE.
- MGR4 TA2 B2,VMST
- MX6 -12
- BX3 -X6*X2
- ZR X3,MGR5 IF NO DATA QUEUED
- SA1 A0+VROT
- SX3 1S5
- BX6 X1*X3
- NZ X6,MGR7 IF INPUT REQUEST IS ALREADY SATISFIED
- MX5 -5
- BX5 -X5*X1
- SX5 X5-1
- SB5 B2
- RJ GRT
- BX5 X4+X5
- ZR X5,MGR4.1 IF WAITING TO START A NEW JOB STEP
- SA1 A0+VFST GET SCREEN MANAGEMENT STATE
- MX0 -6
- AX1 18
- BX1 -X0*X1
- SX1 X1-/SMFIF/SINP
- ZR X1,MGR4.1 IF SMFEX IS AWAITING INPUT
- AX4 48
- SX4 X4-INP$
- NZ X4,MGR7 IF NOT WAITING FOR PROGRAM INPUT
- MGR4.1 RJ UNQ UNQUEUE TYPEAHEAD INPUT DATA
- SX6 B1+
- RJ RDM PROCESS MESSAGE
- EQ MGR6 UPDATE FUNCTION COUNT
- * CLEAR TERMINAL ACTIVITY BIT.
- MGR5 TX2 B2,-VNTP SET TERMINAL ORDINAL
- SX6 37B
- BX6 X6*X2 TERMINAL ORDINAL MOD 32
- AX2 5 TERMINAL ORDINAL/32
- TA2 X2,VNAT READ TABLE WORD
- SB5 X6-59
- MX6 -1
- AX6 X6,B5
- BX6 X6*X2 CLEAR BIT
- SA6 A2 REWRITE TABLE WORD
- EQ MGR7
- * UPDATE FUNCTION COUNT.
- MGR6 SA1 CCFC GET FUNCTION COUNT
- SX7 X1+B1 UPDATE COUNT
- SA7 A1
- * ADVANCE SCAN TO NEXT TERMINAL.
- MGR7 SA1 HACN GET HIGHEST ACTIVE ACN
- SA2 NBSY
- SB2 B2+B1 ADVANCE SCAN
- TX7 B0,VNTP ASSUME END OF SCAN
- SB7 X1 (B7) = HIGHEST ACTIVE ACN
- SX6 B1 PRESET (X6) EXIT STATUS
- GT B2,B7,MGR8 IF END OF SCAN
- SX7 B2 SET CURRENT SCAN INDEX
- MGR8 SA7 TMSI STORE SCAN INDEX
- NZ X2,MGRX IF NAM BUSY, EXIT
- SX6 B0+ RESET (X6) EXIT STATUS
- GT B2,B7,MGRX IF END OF SCAN, EXIT
- RJ CFX CHECK FOR FORCED EXIT
- NZ X6,MGRX IF FORCED EXIT
- SA1 CCFC GET CYCLE FUNCTION COUNT
- ZR X1,MGRX IF FUNCTION LIMIT
- EQ MGR1 PROCESS NEXT TERMINAL
- MGRA CON 0 REAL TIME LAST SCAN
- MGRB CON 0 ACTIVITY INDICATOR (SET BY CBL)
- NSQ TITLE NSQ - NULL SUPERVISORY QUEUE PROCESSOR.
- NSQ SPACE 4,20
- ** NSQ - PROCESS NULL SUPERVISORY MESSAGE QUEUE.
- *
- * THE NULL SUPERVISORY MESSAGE QUEUE CONSISTS OF THOSE
- * MESSAGES WHICH, FOR ONE REASON OR ANOTHER, CANNOT BE
- * ASSIGNED TO A TERMINAL'S MESSAGE STATUS TABLE.
- *
- * ENTRY (NSQP) = 30/LAST, 30/FIRST MESSAGE POT POINTER.
- *
- * EXIT (NSQP) = UPDATED.
- * (NBSY) = SET IF NAM BUSY.
- * (OTPP) = MESSAGE POT POINTER IF NAM BUSY.
- * (OBSY) = SET IF NAM BUSY.
- * (X6) = (NBSY).
- *
- * USES (NCPA) = HEADER ADDRESS.
- * (NCPB) = TEXT ADDRESS.
- *
- * CALLS DLP, DPT, SSM.
- NSQ SUBR ENTRY/EXIT
- NSQ1 SA2 NSQP READ QUEUE POINTER
- SX6 B0+
- ZR X2,NSQX IF QUEUE EMPTY, EXIT
- SX1 X2 SET MESSAGE POT POINTER
- * UPDATE QUEUE POINTER.
- BX2 X2-X1 CLEAR FIRST POT FROM QUEUE POINTER
- RJ DLP DELINK MESSAGE POT
- NZ X7,NSQ2 IF POT WAS LINKED
- SX2 B0+ CLEAR LAST POT POINTER
- NSQ2 BX7 X2+X7 UPDATE QUEUE POINTER
- SA7 A2
- * EXTRACT ACN FROM MESSAGE.
- BX2 X1 SET POT ADDRESS
- LX2 3
- TB4 X2,VBMP
- SA2 B4+B1 READ FIRST MESSAGE WORD
- MX3 8 MASK PRIMARY FUNCTION CODE
- BX3 X3*X2
- LX3 8
- SX5 X3-PFTC
- NZ X5,NSQ3 IF NOT *PFTC*
- SA2 B4 READ MESSAGE HEADER
- AX2 42-24
- NSQ3 AX2 24-0 MASK ACN
- MX3 -12
- BX2 -X3*X2
- SB2 X2 SET ACN
- TA2 B2,VMST READ VMST ENTRY
- ZR X2,NSQ4 IF TERMINAL NOT CONNECTED
- * TRANSMIT MESSAGE TO NETWORK.
- RJ SSM SEND SUPERVISORY MESSAGE
- ZR X6,NSQ1 IF COMPLETE, LOOP FOR NEXT MESSAGE
- EQ NSQX RETURN
- * DISCARD MESSAGE IF TERMINAL NO LONGER CONNECTED.
- NSQ4 SB3 X1 DROP POT(S)
- SB4 B0
- RJ DPT
- EQ NSQ1 CONTINUE
- RDM TITLE RDM - RECEIVED DATA MANAGER.
- RDM SPACE 4,20
- ** RDM - RECEIVED DATA MANAGER.
- *
- * DIRECTS THE PROCESSING OF A RECEIVED NETWORK MESSAGE.
- *
- * ENTRY (IBSY) = MESSAGE HEADER ADDRESS.
- * (RCVH) = MESSAGE HEADER.
- * (RCVB) = MESSAGE TEXT.
- * (NGLN) = .GE. 4 IF DATA REQUESTED FOR SPECIFIC
- * TERMINAL.
- * (X6) = QUEUED MESSAGE FLAG, 0=NEW, 1=QUEUED.
- *
- * EXIT IF MESSAGE PROCESSED:
- * (X6) = 0.
- * (IBSY) = 0.
- * (RCVB) = 0.
- * (RCVH) = 0.
- * (PCRX) = 0.
- *
- * IF MESSAGE CANNOT BE PROCESSED AT THIS TIME:
- * (X6) = NONZERO.
- *
- * IF NULL MESSAGE RECEIVED:
- * (PCRX) = ZERO IF DATA NOT REQUESTED FOR
- * SPECIFIC TERMINAL.
- *
- * CALLS ABT, CFL, DCI, GFM, GRT, PIN, QTI, SMP, UAC, VAC.
- RDM SUBR ENTRY/EXIT
- SA6 RDMA SAVE QUEUED MESSAGE FLAG
- * CHECK BLOCK TYPE.
- RDM1 SA1 RCVH READ MESSAGE HEADER
- BX2 X1
- AX2 54 SHIFT BLOCK TYPE
- ZR X2,RDM10 IF NULL MESSAGE BLOCK
- SX5 X2-BTSV
- ZR X5,RDM3 IF SUPERVISORY MESSAGE
- NG X5,RDM5 IF DATA MESSAGE (BLK OR MSG BLOCK)
- * PROCESS ERROR.
- RDM2 SX6 3RRDM SET ERROR CODE
- RJ ABT PROCESS ERROR
- EQ RDM4
- * PROCESS SUPERVISORY MESSAGE.
- RDM3 RJ SMP EXECUTE PROCESSOR
- * CLEAR INPUT STATUS WORDS AND EXIT.
- RDM4 BX6 X6-X6 CLEAR INPUT BUFFER
- SA6 RCVH
- SA6 A6+B1
- SA6 IBSY SET INPUT NOT BUSY
- EQ RDMX RETURN
- * INITIALIZE *BLK* AND *MSG* DATA BLOCK PROCESSING.
- RDM5 BX2 X1 EXTRACT ACN
- MX6 -12
- AX2 42-0
- BX7 -X6*X2
- LX1 59-17 BLOCK TRUNCATED BIT
- SB2 X7
- SA7 SSPA INITIALIZE (SSPA)
- NG X1,RDM8 IF BLOCK TRUNCATED
- RJ VAC VALIDATE ACN
- NG X6,RDM2 IF INCORRECT ACN
- TTADD B2,A0,X5,X6 SET TERMINAL TABLE ADDRESS
- * SET INPUT STATUS AND CLEAR TERMINAL TIMEOUT FLAGS.
- SX4 B1
- LX4 17-0
- SA5 A0+VFST CLEAR SCREEN MODE TIMEOUT FLAG
- BX6 -X4*X5
- SA6 A5 REWRITE VFST
- LX4 48-17 CLEAR TIMEOUT FLAG
- BX2 -X4*X2
- LX4 54-48 SET INPUT RECIEVED FLAG
- BX6 X4+X2
- SA6 A2 REWRITE VMST ENTRY
- * CHECK FOR DISCARD INPUT CONDITION.
- LX1 17-59 RESTORE HEADER POSITION
- RJ DCI DISCARD INPUT IF NECESSARY
- NZ X0,RDM4 IF INPUT TO DISCARD
- * CHECK INTERNAL TYPEAHEAD QUEUE.
- RJ CFL CHECK POT SUPPLY
- NG X2,RDM7 IF LOW POT SUPPLY
- SA5 RDMA
- NZ X5,RDM6 IF THIS IS A QUEUED MESSAGE
- TA5 B2,VMST
- MX0 -12
- BX5 -X0*X5
- NZ X5,RDM5.1 IF QUEUE ALREADY EXISTS, ADD INPUT TO END
- SA1 A0+VROT
- SX6 1S5
- BX6 X1*X6
- NZ X6,RDM5.1 IF INPUT REQUEST IS ALREADY SATISFIED
- MX5 -5
- BX5 -X5*X1
- SX5 X5-1
- SB5 B2
- RJ GRT GET REENTRY
- BX5 X4+X5
- ZR X5,RDM6 IF WAITING TO START A NEW JOB STEP
- AX4 48
- SX4 X4-INP$
- ZR X4,RDM6 IF WAITING FOR PROGRAM INPUT
- SA4 A0+VFST GET SCREEN MANAGEMENT STATE
- MX0 -6
- AX4 18
- BX4 -X0*X4
- SX4 X4-/SMFIF/SINP
- ZR X4,RDM6 IF SMFEX IS AWAITING INPUT
- RDM5.1 RJ QTI QUEUE TYPEAHEAD INPUT MESSAGE
- RJ SAB SET ACTIVITY BIT
- EQ RDM4 EXIT
- * PROCESS INPUT MESSAGE.
- RDM6 RJ PIN PROCESS INPUT DATA
- ZR X6,RDM7 IF NOT ENOUGH POTS AVAILABLE
- PL X0,RDM8 IF OVERFLOW OCCURED
- SX7 B1 INDICATE INPUT ACCOUNTING
- SA1 RCVH SET HEADER ADDRESS
- RJ UAC UPDATE ACCOUNTING
- EQ RDM4 COMPLETE INPUT PROCESSING
- * RETURN IF UNABLE TO PROCESS INPUT.
- RDM7 SX6 B1 (X6) = UNABLE TO PROCESS STATUS
- EQ RDMX RETURN
- * PROCESS OVERFLOW OF LOGICAL LINE SIZE.
- RDM8 BX6 X6-X6 SET OVERFLOW CONDITION
- SA2 A0+VDPT
- SX7 VXLL+3
- BX7 X2+X7
- SA7 A2
- RJ DCI DISCARD INPUT
- EQ RDM4 COMPLETE PROCESSING
- * CLEAR (PCRX) IF DATA NOT REQUESTED FOR SPECIFIC
- * TERMINAL.
- RDM10 SA1 NGLN GET REQUEST LIST/ACN NUMBER
- BX6 X6-X6
- AX1 2
- NZ X1,RDM4 IF FOR SPECIFIC ACN
- SA6 PCRX CLEAR PCRX
- EQ RDM4 COMPLETE READ PROCESSING
- RDMA CON 0 QUEUED MESSAGE FLAG
- SHD TITLE SHD - NETWORK SHUTDOWN PROCESSOR.
- SHD SPACE 4,20
- ** SHD - NETWORK SHUTDOWN PROCESSOR.
- *
- * ENTRY (SHDF) = 1/I, 59/ADDR.
- * I = IMMEDIATE SHUTDOWN BIT.
- * ADDR = PROCESSING ADDRESS.
- * (SSCR) = SCP STATUS.
- *
- * EXIT AFTER ALL SHUTDOWNS COMPLETE:
- * (NTON) = OFF.
- * (SHDF) = ZERO.
- * (SSCR) = ZERO.
- * (NFRT) = REAL TIME (SECONDS).
- *
- * CALLS CLE, DAP, DPT, ERQ, IDM, NOF, SHA, SRE.
- *
- * MACROS MESSAGE.
- SHD SUBR ENTRY/EXIT
- SA1 SHDF CHECK SHUTDOWN FLAG
- SB7 X1+
- ZR B7,SHD1 IF NEW SHUTDOWN
- JP B7 ENTER SEQUENCE
- * INITIALIZE NORMAL SHUTDOWN.
- SHD1 TX6 0,VNTP INITIALIZE CURRENT TERMINAL TABLE
- SA6 SHDB
- SX6 SHDD
- SA6 SHDC INITIALIZE DAYFILE COUNTER
- SX6 B0+
- SA6 SHDG CLEAR NON-EJT TERMINAL FLAG
- NG X1,SHD5 IF IMMEDIATE SHUTDOWN
- SA1 STIM GET REAL TIME (SECONDS)
- SX6 =C* SHUTDOWN WARNING.*
- BX7 X1
- SA7 SHDA SET STARTING TIME
- RJ IDM ISSUE DAYFILE MESSAGE
- * CHECK IF ALL USERS OFF OR SHOULD BE OFF.
- SHD2 RJ SHA RESET HIGHEST ACTIVE ACN
- ZR X6,SHD6 IF ALL USERS OFF
- SA1 SHDA GET START TIME
- SA2 STIM GET REAL TIME (SECONDS)
- SX3 SDTO
- IX1 X2-X1 ELAPSED TIME
- IX1 X1-X3
- PL X1,SHD6 IF TIME-OUT ELAPSED
- SB7 SHD2 SET REENTRY ADDRESS
- * SET SHUTDOWN REENTRY.
- *
- * ENTRY (B7) = NORMAL SHUTDOWN ADDRESS IF POSITIVE.
- * = IMMEDIATE SHUTDOWN ADDRESS IF NEGATIVE.
- SHD3 SX6 B7+ SET REENTRY ADDRESS
- PL X6,SHD4 IF NORMAL
- MX7 1 SET IMMEDIATE
- SX6 -B7
- BX6 X6+X7
- SHD4 SA6 SHDF STORE SHUTDOWN ADDRESS
- EQ SHDX EXIT/REENTER
- * INITIALIZE IMMEDIATE SHUTDOWN.
- SHD5 SX6 =C* FORCED NETWORK SHUTDOWN.*
- RJ IDM ISSUE DAYFILE MESSAGE
- * DROP OUTPUT AND NULL SUPERVISORY QUEUE POTS.
- SHD6 SA1 NSQP GET QUEUE POINTER
- ZR X1,SHD7 IF QUEUE EMPTY
- SB3 X1 DROP POTS
- SB4 B0
- RJ DPT
- SX6 B0+ CLEAR QUEUE POINTER
- SA6 NSQP
- SHD7 SA1 OBSY CHECK IF OUTPUT LEFT BUSY
- SA2 OTPP
- SB7 -SHD8
- ZR X1,SHD3 IF NOT BUSY, REENTER
- ZR X2,SHD3 IF NO POTS TO DROP, REENTER
- SB3 X2 DROP OUTPUT POT CHAIN
- SB4 B0
- RJ DPT
- SX6 B0+ CLEAR POINTERS
- SA6 OBSY
- SA6 OTPP
- SB7 -SHD8 SET REENTRY ADDRESS
- EQ SHD3 REENTER
- * LOGOFF ALL REMAINING ACTIVE USERS (REENTRY).
- SHD8 SA1 NDSL CHECK STACK LIMIT
- SB7 -SHD8 SET REENTRY
- SA2 SHDB GET CURRENT TERMINAL NUMBER
- NZ X1,SHD3 IF STACK LIMIT, REENTER
- TB6 0,VNTP,LTN
- SB2 X2
- SX6 X2+B1
- GT B2,B6,SHD10 IF ALL TERMINALS PROCESSED
- SA6 A2 UPDATE CURRENT TERMINAL
- TTADD B2,A0,X2,X3
- SA2 A0+VUIT
- ZR X2,SHD8 IF TERMINAL TABLE ALREADY EMPTY
- MX7 -12 GET EJT ORDINAL
- BX7 -X7*X2
- SA2 A0+VDCT
- LX2 59-57
- SX6 B1
- PL X2,SHD8.1 IF USER NOT LOGGED IN
- NZ X7,SHD8.2 IF EJT ORDINAL
- SHD8.1 SA6 SHDG FLAG NON-EJT TERMINAL TABLE
- EQ SHD8 LOOP TO NEXT TERMINAL
- SHD8.2 SB7 B0+ CLEAR ANY DRIVER REENTRY
- RJ SRE
- RJ DAP CLEAR OUTPUT ASSIGNMENTS
- TA1 B2,VMST DROP VMST POT
- MX7 -12
- BX7 -X7*X1
- SB3 X7
- SB4 B0
- MX7 42 CLEAR POT POINTER
- MX3 57 CLEAR UNANSWERED BLOCKS
- LX3 33
- BX1 X3*X1
- BX7 X7*X1
- MX3 1 CLEAR TERMINAL ON LINE
- PL X7,SHD8 IF TERMINAL NOT ON-LINE, HUP ALREADY SENT
- BX7 -X3*X7
- SA7 A1 REWRITE VMST
- ZR B3,SHD9 IF NO POT
- RJ DPT DROP POTS
- SHD9 SX7 B0
- SB3 B0
- SX6 /TLX/HUP
- RJ ERQ ENTER REQUEST TO HANG UP PHONE
- TX2 B2,-VNTP CLEAR ACTIVITY BIT
- SX6 37B
- BX6 X6*X2 TERMINAL ORDINAL MOD 32
- AX2 5 TERMINAL ORDINAL/32
- TA2 X2,VNAT READ TABLE WORD
- SB5 X6-59
- MX6 -1
- AX6 X6,B5
- BX6 X6*X2 CLEAR BIT
- SA6 A2 REWRITE TABLE WORD
- EQ SHD8 LOOP TO END OF TERMINALS
- * WAIT FOR ALL TERMINAL TABLES TO BE CLEARED.
- SHD10 TB2 -1,VNTP INITIALIZE TERMINAL SCAN
- SX7 B0+
- SA7 SHDB
- SHD11 SB2 B2+B1 ADVANCE TO NEXT TERMINAL
- TB6 0,VNTP,LTN
- TTADD B2,A0,X2,X1
- GT B2,B6,SHD13 IF ALL TERMINALS HAVE BEEN SCANNED
- SA1 A0+VUIT
- ZR X1,SHD11 IF TERMINAL TABLE EMPTY
- TA3 B2,VMST
- NG X3,SHD11.1 IF TERMINAL STILL ON-LINE
- MX6 -12
- BX5 -X6*X1 GET EJT ORDINAL
- MX6 13
- SX7 B1 FLAG NON-EMPTY TERMINAL TABLE
- SA1 A0+VDCT
- ZR X5,SHD12 IF JOB HAS BEEN DETACHED
- * CLEAR DRIVER REQUEST FROM VDCT. IF RETRY COUNT EXHAUSTED
- * ISSUE DAYFILE MESSAGE. LEAVE TERMINAL TABLE INTACT TO
- * PREVENT POSSIBLE PP HANGS.
- SA7 SHDB
- LX6 12
- BX6 -X6*X1 CLEAR CURRENT DRIVER REQUEST
- SA6 A1+ REWRITE VDCT
- SHD11.1 SA1 SHDC
- MX6 24
- LX6 -6
- NZ X1,SHD11 IF NOT TIME TO ISSUE MESSAGE
- SA2 A0+VFST GET JSN
- LX2 -6
- BX2 X2*X6
- SA1 SHDE PUT JSN INTO MESSAGE
- BX1 -X6*X1
- BX6 X1+X2
- SA6 A1+
- MESSAGE SHDE,,R
- EQ SHD11 CHECK NEXT TERMINAL
- SHD12 RJ //CLE CLEAN UP TERMINAL TABLE
- EQ SHD11 CHECK NEXT TERMINAL
- SHD13 SA1 SHDG
- ZR X1,SHD14 IF NO TERMINAL WITHOUT EJT
- TX6 0,VNTP RESET CURRENT TERMINAL TABLE
- SA6 SHDB
- SX6 B0+
- SA6 SHDG CLEAR NON-EJT TERMINAL FLAG
- SB7 -SHD8
- EQ SHD15 REPEAT FIRST LOOP
- SHD14 SA1 SHDB
- SB7 -SHD10
- NZ X1,SHD15 IF AT LEAST ONE TERMINAL REMAINS
- * SET SHUTDOWN COMPLETE.
- SHD14.1 RJ NOF ISSUE *NETOFF* REQUEST
- SX6 =C* NETWORK SHUTDOWN COMPLETE.*
- RJ IDM ISSUE DAYFILE MESSAGE
- SX7 B0+ CLEAR NETON STATUS
- SA1 STIM READ REAL TIME (SECONDS)
- SA7 NTON
- SA7 SHDF CLEAR SHUTDOWN FLAG
- SA7 VSHD CLEAR SCP STATUS
- MX6 36 SET (X6) STATUS NEGATIVE
- BX7 X1 SET NETWORK FUNCTION TIME
- SA7 NFRT
- EQ NDRX EXIT FROM DRIVER
- SHD15 SA2 SHDC CHECK DAYFILE COUNTER
- SX6 X2-1
- PL X6,SHD16 IF COUNTER NOT EXPIRED
- EQ SHD14.1 COMPLETE SHUTDOWN
- SHD16 SA6 A2+ REWRITE COUNTER
- EQ SHD3 RETRY LOGOFF
- SHDA CON 0 SHUTDOWN START TIME
- SHDB CON 0 NON-EMPTY TERMINAL TABLE FLAG
- SHDC CON 0 DAYFILE COUNTER
- SHDD EQU 3000D DAYFILE CONSTANT
- SHDE DATA 10L **** CANN
- DATA 10LOT BE DETA
- DATA 5LCHED.
- SHDG CON 0 SET IF NO EJT ORDINAL IN TERMINAL TABLE
- SMP TITLE SMP - SUPERVISORY MESSAGE PROCESSOR.
- SMP SPACE 4,20
- ** SMP - SUPERVISORY MESSAGE PROCESSOR.
- *
- * DIRECTS THE PROCESSING OF INCOMING NETWORK SUPERVISORY
- * MESSAGES.
- *
- * ENTRY (RCVH) = MESSAGE HEADER.
- * (RCVB) = MESSAGE TEXT.
- *
- * EXIT TO PRIMARY FUNCTION PROCESSOR VIA *PCS*:
- * (A0) = TERMINAL TABLE ADDRESS.
- * (B2) = TERMINAL NUMBER (ACN).
- * (B3) = PRIMARY FUNCTION CODE.
- * (X3) = STATUS BITS FROM *CON/END/N*.
- * (X7) = SUBFUNCTION CODE.
- * (RCVH) = MESSAGE HEADER.
- * (RCVB) = MESSAGE TEXT.
- * (SMPF) = PRIMARY FUNCTION CODE.
- * (SMSF) = SUBFUNCTION CODE.
- *
- * CALLS ABT, PCS, SFE.
- SMP SUBR ENTRY/EXIT
- * EXTRACT FUNCTION CODES.
- SA2 RCVB READ FIRST WORD OF MESSAGE
- MX5 -24 GET STATUS BITS
- BX3 -X5*X2
- MX5 -6
- AX2 44-0 SHIFT SUBFUNCTION CODE
- BX7 -X5*X2 (X7) = SUBFUNCTION CODE
- SA7 SMSF SAVE SUBFUNCTION CODE
- AX2 52-44 SHIFT PRIMARY FUNCTION CODE
- MX5 -8
- BX6 -X5*X2
- SB3 X6+ (B3) = PRIMARY FUNCTION CODE
- SA6 SMPF SAVE PRIMARY FUNCTION CODE
- LX7 24 FORMAT *SSPA* PARAMETERS
- LX6 12
- SB2 B0 CLEAR TERMINAL NUMBER
- BX5 X7+X6 (X5) = *SSPA* PARAMETER WORD
- SB4 B0 SET TABLE SEARCH INDEX
- MX4 -12
- * SEARCH TABLE FOR PRIMARY FUNCTION PROCESSOR.
- SMP1 SA2 TSMP+B4 READ TABLE ENTRY
- SB4 B4+B1
- SB7 X2 EXTRACT PRIMARY FUNCTION CODE
- ZR X2,SMPE IF END OF TABLE, ERROR
- NE B7,B3,SMP1 IF NO MATCH, CONTINUE SEARCH
- * EXTRACT ACN AND ENTER PRIMARY FUNCTION CODE PROCESSOR.
- SA1 RCVB ASSUME ACN IN FIRST WORD OF TEXT
- AX2 18 SHIFT PROCESSOR ADDRESS
- SB7 X2 SET PROCESSOR ADDRESS
- AX1 24
- PL B7,SMP2 IF ACN IN FIRST WORD OF TEXT
- SB7 -B7
- SA1 RCVH GET ACN FROM HEADER
- AX1 42
- SMP2 BX1 -X4*X1 EXTRACT ACN
- BX5 X5+X1 MERGE WITH *SSPA* WORD
- RJ PCS EXECUTE PROCESSOR
- EQ SMPX EXIT
- ** SMPE - SUPERVISORY MESSAGE ERROR EXIT.
- SMPE RJ SFE ISSUE ERROR MESSAGE
- EQ SMPX EXIT
- ** TSMP - SMP PRIMARY FUNCTION PROCESSOR TABLE.
- *
- * ENTRY 24/, 18/ADR, 18/PFC.
- * ADR = PROCESSOR ADDRESS.
- * IF POSITIVE, THIS IS AN ASYNCHRONOUS
- * SUPERVISORY MESSAGE AND THE ACN IS
- * CONTAINED IN BITS 35-24 OF THE FIRST
- * WORD OF THE MESSAGE TEXT. IF NEGATIVE,
- * THIS IS A SYNCHRONOUS SUPERVISORY MESSAGE
- * AND THE ACN IS CONTAINED IN BITS 53-42 OF
- * THE MESSAGE HEADER.
- * PFC = PRIMARY FUNCTION CODE.
- TSMP BSS 0
- VFD 24/0,18/CON,18/PFCN CONNECT FUNCTION
- VFD 24/0,18/FCN,18/PFFC TERMINAL FUNCTION
- VFD 24/0,18/LGL,18/PFLG LOGICAL ERROR
- VFD 24/0,18/NSH,18/PFSH NETWORK SHUTDOWN
- VFD 24/0,18/TCH,18/PFCH TERMINAL CHARACTERISTICS
- VFD 24/0,18/-TCL,18/PFTC TERMINAL CONTROL
- VFD 24/0,18/USI,18/PFIN INTERRUPT FROM USER
- VFD 24/0,18/-BIM,18/PFBI BREAK INDICATION MARKER
- VFD 24/0,18/SMPX,18/PFHO HOP REQUEST (IGNORED)
- CON 0 END OF TABLE
- SMP TITLE SMP - PRIMARY FUNCTION CODE PROCESSORS.
- SMP SPACE 4,10
- ** SMP - PRIMARY FUNCTION CODE PROCESSORS.
- *
- * THE FOLLOWING DOCUMENTATION IS COMMON TO ALL PRIMARY
- * FUNCTION CODE PROCESSORS:
- *
- * ENTRY (A0) = TERMINAL TABLE ADDRESS.
- * (B2) = TERMINAL NUMBER (ACN).
- * (B3) = PRIMARY FUNCTION CODE.
- * (X7) = SUBFUNCTION CODE.
- * (RCVH) = MESSAGE HEADER.
- * (RCVB) = MESSAGE TEXT.
- * (SMPF) = PRIMARY FUNCTION CODE.
- * (SMSF) = SECONDARY FUNCTION CODE.
- *
- * EXIT (SEE ABOVE):
- * TO SUBFUNCTION PROCESSOR IF DEFINED.
- * TO *SMPE* IF ERROR.
- BIM SPACE 4,10
- ** BIM - BREAK INDICATION MARKER, FUNCTION CODE #CA.
- *
- * THE BREAK INDICATION MARKER SYNCHRONOUS SUPERVISORY
- * MESSAGE WAS RECEIVED. THE BREAK MARKER RECEIVED BIT
- * (BIT 49) IN *VMST* IS SET.
- *
- * EXIT (VMST) = BIT 49 SET (BREAK MARKER RECEIVED).
- *
- * USES X - 1, 6.
- * A - 1, 6.
- *
- * CALLS VAC.
- BIM BSS 0 ENTRY
- RJ VAC VALIDATE ACN
- NG X6,SMPE IF INCORRECT ACN
- TA1 B2,VMST SET BREAK MARKER RECEIVED BIT
- SX6 B1
- LX6 49-0
- BX6 X1+X6
- SA6 A1 REWRITE VMST
- EQ PCSX EXIT
- CON SPACE 4,10
- ** CON - CONNECT FUNCTION, FUNCTION CODE #63.
- *
- * ENTRY (X7) = SUBFUNCTION CODE.
- *
- * EXIT TO *CNB* IF CONNECTION BROKEN.
- * TO *ECR* IF END-CONNECTION RESPONSE.
- * TO *NWC* IF NEW CONNECTION.
- * TO APPROPRIATE ROUTINE BASED ON LOAN STATUS VALUE.
- * TO *CLS1* IF INCORRECT LOAN STATUS OR ERROR.
- * (X7) = LOAN STATUS VALUE.
- * (B4) = ERROR MESSAGE INDICATOR.
- * TO *SMPE* IF ERROR.
- *
- * CALLS VAC.
- CON BSS 0 ENTRY
- SB6 X7-SFRT CHECK SUBFUNCTION CODE
- ZR B6,CON1 IF CONNECTION REQUEST
- RJ VAC VALIDATE ACN
- NG X6,SMPE IF INCORRECT ACN
- SB6 X7-SFEN
- ZR B6,ECR IF *END-CONNECTION* RESPONSE
- SB6 X7-SFCB
- ZR B6,CNB IF *CONNECTION BROKEN*
- EQ SMPE ERROR EXIT
- CON1 SA3 RCVB+3 GET LOAN STATUS
- MX5 8
- BX5 X5*X3
- SB4 3 SET REGISTER FOR *CLS1*
- LX5 0-52
- SB7 X5
- SX3 X5-MXLS-1
- SX7 ERLS SET INTERNAL ERROR CODE
- SA1 A0+VDCT CHECK CONNECTION TYPE
- PL X3,CLS1 IF INDEX OUT OF RANGE
- SX2 TPCP SET PRIMARY CONNECTION TABLE
- LX1 59-47
- NG X1,CON2 IF CONNECTION IS LOANED
- SX2 TSCP SET SECONDARY CONNECTION TABLE
- LX1 59-46-59+47
- NG X1,CON2 IF SECONDARY CONNECTION
- SA1 A0+VUIT CHECK USER NAME
- NZ X1,CLS1 IF USER LOGGED IN
- SX2 TNCP SET NEW CONNECTION TABLE
- CON2 SA1 X2+B7 GET APPROPRIATE ENTRY
- ZR X1,CLS1 IF NO ENTRY
- SB7 X1 GET APPROPRIATE ROUTINE ADDRESS
- SX7 X5 RESTORE LOAN STATUS VALUE IF NO ERROR
- JP B7 PROCESS CONNECTION
- TPCP SPACE 4,10
- ** TABLE OF PRIMARY CONNECTION PROCESSORS.
- * (USED FOR LOANED CONNECTIONS)
- * INDEXED BY LOAN STATUS VALUE (DEFINED IN *COMSNCD*).
- TPCP INDEX CON,MXLS,( 0 )
- INDEX ,PNLS,( CLS1 )
- INDEX ,SNLS,( CLS1 )
- INDEX ,PALS,( CLS1 )
- INDEX ,SCLS,( CLS )
- INDEX ,SVLS,( CLS )
- INDEX ,SOLS,( CLS )
- INDEX ,SFLS,( CLS )
- INDEX ,SULS,( CLS )
- INDEX ,STLS,( CLS )
- INDEX ,SRLS,( CLS )
- INDEX ,SALS,( CLS )
- INDEX ,SLLS,( CLS )
- TPCPL EQU *-TPCP
- TSCP SPACE 4,10
- ** TABLE OF SECONDARY CONNECTION PROCESSORS.
- * (USED FOR SECONDARY CONNECTIONS)
- * INDEXED BY LOAN STATUS VALUE (DEFINED IN *COMSNCD*).
- TSCP INDEX CON,MXLS,( 0 )
- INDEX ,PNLS,( CLS1 )
- INDEX ,SNLS,( CLS1 )
- INDEX ,PALS,( CNB )
- INDEX ,SCLS,( CLS1 )
- INDEX ,SVLS,( CLS1 )
- INDEX ,SOLS,( CLS1 )
- INDEX ,SFLS,( CLS1 )
- INDEX ,SULS,( CLS1 )
- INDEX ,STLS,( CLS1 )
- INDEX ,SRLS,( CLS1 )
- INDEX ,SALS,( CLS1 )
- INDEX ,SLLS,( CLS1 )
- TSCPL EQU *-TSCP
- TNCP SPACE 4,10
- ** TABLE OF NEW CONNECTION PROCESSORS.
- * (USED FOR NEW CONNECTIONS)
- * INDEXED BY LOAN STATUS VALUE (DEFINED IN *COMSNCD*).
- TNCP INDEX CON,MXLS,( 0 )
- INDEX ,PNLS,( NWC0 )
- INDEX ,SNLS,( NWC )
- INDEX ,PALS,( CLS1 )
- INDEX ,SCLS,( CLS1 )
- INDEX ,SVLS,( CLS1 )
- INDEX ,SOLS,( CLS1 )
- INDEX ,SFLS,( CLS1 )
- INDEX ,SULS,( CLS1 )
- INDEX ,STLS,( CLS1 )
- INDEX ,SRLS,( CLS1 )
- INDEX ,SALS,( CLS1 )
- INDEX ,SLLS,( CLS1 )
- TNCPL EQU *-TNCP
- FCN SPACE 4,10
- ** FCN - TERMINAL FUNCTION, FUNCTION CODE #83.
- *
- * ENTRY (X7) = SUBFUNCTION CODE.
- *
- * CALLS VAC.
- FCN BSS 0 ENTRY
- RJ VAC VALIDATE ACN
- NG X6,SMPE IF INCORRECT ACN
- SB6 X7-TFCNL VALIDATE SUBFUNCTION CODE
- PL B6,SMPE IF INCORRECT
- SA1 TFCN+X7 GET PROCESSOR ADDRESS
- SB7 X1+ ENTER PROCESSOR
- JP B7
- ** TFCN - TABLE OF *FCN* SUBFUNCTION PROCESSOR ADDRESSES.
- TFCN INDEX CON,SFCM+1,( SMPE )
- INDEX ,SFAK,( ACK ) BLOCK DELIVERED
- INDEX ,SFAX,( NAK ) BLOCK NOT DELIVERED
- INDEX ,SFIN,( INA ) CONNECTION INACTIVE
- INDEX ,SFCM,( CNM ) CONNECTION MADE
- INDEX ,SFRS,( SCR ) CONNECTION RESET
- TFCNL EQU *-TFCN
- LGL SPACE 4,10
- ** LGL - LOGICAL ERROR, FUNCTION CODE #84.
- *
- * ISSUES DAYFILE MESSAGE AND COPIES ERROR MESSAGE FROM
- * RECEIVE BUFFER TO INTERNAL BUFFER. IF THE MESSAGE
- * WHICH WAS IN ERROR WAS A DATA MESSAGE OR A TERMINAL
- * DEFINITION SUPERVISORY MESSAGE, THE TERMINAL-S DOWN-
- * STREAM BLOCK COUNT WILL BE DECREMENTED TO COMPENSATE
- * FOR THE MESSAGE IN ERROR.
- *
- * ENTRY (RCVB) = HEADER OF ERRONEOUS MESSAGE.
- * (RCVB+1) = TEXT OF ERRONEOUS MESSAGE.
- *
- * EXIT TERMINAL BLOCK COUNT DECREMENTED.
- * DAYFILE MESSAGE ISSUED.
- * (LGLC) = INCREMENTED.
- *
- * CALLS CDD, DBC, IDM, SAB, VAC.
- LGL BSS 0 ENTRY
- SA1 RCVB READ MESSAGE FIRST WORD
- SA3 LGLC UPDATE ERROR COUNT
- MX2 -8 EXTRACT ERROR CODE
- SX7 B1
- AX1 36
- IX7 X7+X3
- BX1 -X2*X1
- SA7 A3
- RJ CDD CONVERT TO DECIMAL
- SA1 LGLA+1 INSERT IN MESSAGE
- MX2 -12
- BX6 -X2*X6
- LX1 -18
- BX1 X2*X1
- BX6 X6+X1
- LX6 18
- SA6 A1+
- SX6 LGLA ISSUE DAYFILE MESSAGE
- RJ IDM
- * SAVE MESSAGE FOR REFERENCE.
- SA1 RCVB SAVE FIRST THREE WORDS
- SA2 A1+B1
- BX6 X1
- SA3 A2+B1
- BX7 X2
- SA6 LGLB
- SA7 A6+B1
- BX7 X3
- SA7 A7+B1
- * PROCESS DATA (*BLK* OR *MSG*) BLOCK ERROR.
- MX4 -6 EXTRACT ACN FROM RETURNED HEADER
- LX2 6
- MX3 -12
- BX6 -X4*X2
- ZR X6,PCSX IF NULL HEADER
- SX6 X6-BTSV
- ZR X6,LGL1 IF SUPERVISORY MESSAGE
- PL X6,PCSX IF UNDEFINED BLOCK TYPE, RETURN
- EQ LGL2 CHECK FOR USER ON LINE
- * PROCESS SUPERVISORY MESSAGE.
- LGL1 SA1 A2+B1 READ FIRST WORD OF MESSAGE
- MX6 -8 EXTRACT PRIMARY FUNCTION CODE
- LX1 8
- BX6 -X6*X1
- SX6 X6-PFTC CHECK FOR *PFTC*
- NZ X6,PCSX IF NOT *TERMINAL CONTROL*, RETURN
- * CHECK FOR VALID USER ON LINE.
- LGL2 LX2 12 EXTRACT ACN FROM RETURNED HEADER
- BX2 -X3*X2
- SB2 X2+ SET ACN
- RJ VAC VALIDATE ACN
- NG X6,PCSX IF NOT VALID ACN
- ZR X2,PCSX IF NOT ON LINE
- LX2 59-55 CHECK FOR END CONNECTION
- NG X2,PCSX IF END OF CONNECTION SET
- RJ DBC DECREMENT BLOCK COUNT
- RJ SAB SET TERMINAL ACTIVITY
- EQ PCSX EXIT
- LGLA DATA 10H LOGICAL E
- DATA 8LRROR XX.
- LGLB BSSZ 3
- NSH SPACE 4,10
- ** NSH - NETWORK SHUTDOWN, FUNCTION CODE #42.
- *
- * CALLS *SHD* TO INITIATE NEW SHUTDOWN. IF THIS IS
- * AN IMMEDIATE SHUTDOWN, *NSH* EXITS THROUGH *NDRX*
- * TO BYPASS THE REMAINDER OF THE DRIVER CYCLE.
- *
- * ENTRY RCVB BIT 0 = SET, IF IMMEDIATE SHUTDOWN.
- *
- * USES X - 1, 2, 6, 7.
- * A - 1, 2, 6.
- *
- * CALLS SHD.
- NSH BSS 0 ENTRY
- SA2 RCVB READ MESSAGE
- SA1 SHDF GET SHUTDOWN FLAG
- MX6 1
- LX2 59-0 CHECK SHUTDOWN TYPE
- NG X2,NSH1 IF IMMEDIATE SHUTDOWN
- NZ X1,PCSX IF SHUTDOWN IN PROGRESS, EXIT
- SX6 B0+
- NSH1 NG X1,PCSX IF IMMEDIATE SHUTDOWN IN PROGRESS, EXIT
- SA6 A1+ SET SHUTDOWN FLAG
- RJ SHD INITIATE SHUTDOWN
- PL X6,PCSX IF NORMAL SHUTDOWN, EXIT
- EQ NDRX EXIT FROM DRIVER
- TCH SPACE 4,10
- ** TCH - TERMINAL CHARACTERISTICS, FUNCTION CODE #64.
- *
- * RESETS THE DEVICE TYPE (TERMINAL CLASS) FIELD OF
- * VMST ENTRY.
- *
- * ENTRY (RCVB) = DEVICE TYPE, BITS 16-23.
- *
- * EXIT (VMST) = DEVICE TYPE, BITS 36-43.
- *
- * CALLS SMPE, VAC.
- TCH BSS 0 ENTRY
- RJ VAC VALIDATE ACN
- NG X6,SMPE IF INCORRECT ACN
- SA1 RCVB READ MESSAGE
- MX6 -8
- LX6 36-0 SHIFT MASK
- LX1 36-16 SHIFT MESSAGE DEVICE TYPE
- BX2 X6*X2 MASK IN NEW DEVICE TYPE
- BX1 -X6*X1
- BX6 X1+X2
- SA6 A2+ REWRITE VMST ENTRY
- EQ PCSX EXIT
- TCL SPACE 4,10
- ** TCL - TERMINAL CONTROL, FUNCTION CODE #C1.
- *
- * PROCESSES *TRMDEF* SUPERVISORY MESSAGES FROM THE NETWORK.
- *
- * USES X - 1, 7.
- * A - 1.
- * B - 3, 4.
- *
- * CALLS SMPE, VAC.
- TCL BSS 0 ENTRY
- RJ VAC VALIDATE ACN
- NG X6,SMPE IF INCORRECT ACN
- SX7 X7-SFDM
- NZ X7,PCSX IF NOT A *TRMDEF* RESPONSE
- SA1 RCVB
- LX1 59-51
- PL X1,PCSX IF NORMAL *TRMDEF* RESPONSE
- SB3 B0
- SX6 DMIT SET INCORRECTLY FORMATTED TRMDEF MSG
- SB4 DMITL
- RJ ACD ASSIGN CANNED DATA MESSAGE
- EQ PCSX EXIT
- USI SPACE 4,10
- ** USI - USER INTERRUPT, FUNCTION CODE #80.
- *
- * MESSAGE FROM USER WHICH HAS BYPASSED THE TYPEAHEAD QUEUE.
- *
- * ENTRY (RCVB) = MESSAGE TEXT, BITS 36-43 CONTAIN PARAMETER
- * FROM USER, ONE ASCII CHARACTER.
- *
- * EXIT APPROPRIATE DRIVER QUEUE ENTRY MADE.
- *
- * CALLS ACD, ASV, CTP, ERQ, ETX, GRT, VAC.
- USI BSS 0 ENTRY
- RJ VAC VALIDATE ACN
- NG X6,SMPE IF INCORRECT ACN
- SA1 RCVB READ MESSAGE TEXT
- MX3 -8 EXTRACT PARAMETER
- AX1 36
- BX3 -X3*X1
- BX7 X3 SAVE PARAMETER FOR BREAK PROCESSING
- SB4 X3-USB1
- ZR B4,BRK IF USER BREAK ONE
- EQ B4,B1,BRK IF USER BREAK TWO
- ERRNZ USB2-USB1-1 CODE DEPENDS ON USB2=USB1+1
- MX1 -6
- SA2 TVXD+X3 READ TRANSLATION OF CHARACTER
- BX7 -X1*X2 CONVERT TO UPPER CASE
- LX1 6
- BX1 -X1*X2
- SX2 X1-7400B
- NZ X2,USI1 IF TRANSLATION CORRECT
- BX7 X7+X1 RESTORE *74* ESCAPE CODE
- USI1 SA7 USIA
- BX6 X6-X6
- SB4 B1
- SX7 INTRES
- RJ ASV ASSIGN RESPONSE MESSAGE
- SA2 USIA RETRIEVE PARAMETER
- SB3 B0
- BX7 X2
- SB7 USI1
- ZR X6,PCD IF MESSAGE NOT ASSIGNED, REENTER
- TA1 B2,VMST CHECK BREAK IN PROGRESS
- MX3 59 CLEAR TIMEOUT FLAG
- LX3 48
- BX6 X3*X1
- SA6 A1 REWRITE VMST
- SA2 A0+VFST CLEAR SCREEN MODE TIMEOUT FLAG
- LX3 17-48
- BX6 X3*X2
- SA6 A2 REWRITE VFST
- SB5 B2
- LX1 59-57
- NG X1,PCSX IF BREAK IN PROGRESS
- SA1 A0+VSTT
- SA2 A0+VUIT
- LX1 59-56
- NG X1,PCSX IF DETACH IN PROGRESS, EXIT
- MX1 -12
- BX1 -X1*X2
- ZR X1,PCSX IF NO EJT ORDINAL ASSIGNED, EXIT
- SA1 A0+VDCT USER LOGGED IN
- LX1 59-57
- PL X1,PCSX IF USER NOT LOGGED IN
- LX1 57-50
- LX3 X1,B1
- BX3 X1+X3
- SX6 X7-USDT
- ZR X6,USI2 IF DETACH REQUEST
- NG X3,PCSX IF IN AUTO OR TEXT MODE
- RJ GRT GET REENTRY REQUEST
- SA1 USIC CHECK REQUEST TYPE
- BX1 X1-X4
- AX4 48
- ZR X1,USI8 IF IN INTERRUPTED STATUS
- SX4 X4-INP$
- ZR X4,PCSX IF EXPLICIT INPUT REQUEST
- * SET UP COMMAND.
- USI2 SA7 USIA
- SX3 X7-USDT
- ZR X3,USI7 IF DETACH COMMAND
- SX3 X7-USEN
- SX7 X7-USST
- SA1 =7LENQUIRE
- ZR X7,USI3 IF SHORT STATUS REQUEST
- BX7 X1
- NZ X3,USI6 IF NOT ENQUIRE REQUEST
- USI3 SA7 USIB
- SA1 A0+VDPT CHECK SOURCE LINE INPUT
- LX1 59-16
- PL X1,USI4 IF NO SOURCE LINE INPUT
- MX3 -12
- LX1 29
- MX2 -3
- BX3 -X3*X1 GET FIRST POT POINTER
- BX6 X7
- SB3 X3+
- LX3 3
- LX1 15
- TB4 X3,VBMP GET POT ADDRESS
- BX7 -X2*X1 OFFSET INTO POT
- SA6 X7+B4
- SX6 /TLX/CLI
- RJ ERQ ENTER COMMAND IN REQUEST QUEUE
- NG X6,USI5 IF REQUEST NOT TAKEN
- BX6 X6-X6 CLEAR SOURCE LINE INPUT POINTERS
- SA6 A0+VDPT
- EQ PCSX EXIT
- USI4 SB4 B1 SET TEXT LENGTH
- SB5 B0 USE FIRST WORD OF POT
- SX6 USIB
- RJ CTP COPY DATA TO POTS
- ZR X6,USI5 IF NO POTS AVAILABLE
- SX7 B0+
- SX6 /TLX/CLI
- RJ ERQ ENTER QUEUE
- PL X6,PCSX IF ENTRY MADE
- USI5 SA2 USIA
- SB7 USI2
- BX7 X2
- EQ PCD REENTER
- USI6 SX6 DMIC SET MESSAGE ADDRESS
- SB4 DMICL SET MESSAGE LENGTH
- RJ ACD ASSIGN CANNED MESSAGE
- EQ PCSX RETURN
- USI7 SA1 A0+VDCT
- LX1 59-50
- PL X1,USI7.1 IF NOT TEXT MODE
- RJ ETX CLEAR TEXT MODE BEFORE DETACHING
- USI7.1 SB3 B0+
- SX7 UDRC SET REASON CODE
- SX6 /TLX/DTJ
- RJ ERQ ENTER REQUEST
- PL X6,PCSX IF ENTRY MADE
- EQ USI5 REENTER
- USI8 SX6 DMIN *INTERRUPTED* MESSAGE ADDRESS
- SB4 DMINL SET MESSAGE LENGTH
- RJ ACD ASSIGN CANNED DATA MESSAGE
- EQ PCSX RETURN
- USIA CON 0 STORE PARAMETER
- USIB CON 0 STORE COMMAND
- USIC VFD 12/INP$,24///RST,24/0
- TFR TITLE TFR - IAFEX FUNCTION REQUEST PROCESSOR.
- TFR SPACE 4,10
- ** TFR - IAFEX FUNCTION REQUEST PROCESSOR.
- *
- * PROCESSES EXECUTIVE-TO-DRIVER FUNCTION REQUESTS PASSED
- * VIA BYTE FOUR AND THE DRIVER REQUEST BIT OF TERMINAL
- * TABLE WORD *VDCT*.
- *
- * ENTRY (X1) = (VDCT).
- * (A1) = ADDRESS OF VDCT.
- *
- * EXIT TO FUNCTION PROCESSOR.
- *
- * CALLS ABT, ERQ, PCS.
- TFR SUBR ENTRY/EXIT
- MX5 -12 MASK REQUEST CODE
- BX7 -X5*X1
- SX2 X7-/1TD/REQL VALIDATE REQUEST CODE
- PL X2,TFR3 IF INCORRECT
- SA3 TTFR+X7 GET PROCESSOR ADDRESS
- SX5 B2 FORMAT (SSPA)
- LX7 48
- BX5 X7+X5
- SB7 X3
- TFR1 MX7 13 CLEAR VDCT REQUEST
- LX7 12
- BX7 -X7*X1
- SA7 A1
- PL X2,TFRX IF INCORRECT REQUEST
- RJ PCS PROCESS REQUEST
- * ENTER RESTART JOB REQUEST.
- TFR2 SB3 B0 FORMAT REQUEST
- BX7 X7-X7
- SX6 /TLX/RES
- RJ ERQ ENTER REQUEST
- EQ TFRX RETURN
- * PROCESS INCORRECT REQUEST CODE.
- TFR3 SX6 3RTFR SET ERROR CODE
- RJ ABT PROCESS INTERNAL ERROR
- SA1 A0+VDCT READ VDCT
- SX2 B0+ INDICATE INCORRECT REQUEST
- EQ TFR1
- ** TTFR - FUNCTION REQUEST PROCESSOR ADDRESS TABLE.
- TTFR INDEX CON,/1TD/REQL,( TFR2 )
- INDEX ,/1TD/BGI,( BGI )
- INDEX ,/1TD/CRR,( CRR )
- INDEX ,/1TD/CRR1,( CRR1 )
- INDEX ,/1TD/CTM,( CTM )
- INDEX ,/1TD/HUP,( HUP )
- INDEX ,/1TD/IIP,( IIP )
- INDEX ,/1TD/SDU,( SDU )
- TITLE FUNCTION PROCESSOR ROUTINES.
- SPACE 4,10
- ** FUNCTION PROCESSOR ROUTINES.
- *
- * FUNCTION PROCESSOR ROUTINES ARE OPEN ROUTINES WHICH
- * EXIT EITHER TO ANOTHER PROCESSOR ROUTINE OR TO A REENTRY
- * EXIT POINT. THEY NORMALLY EXPECT THE FOLLOWING ENTRY
- * CONDITIONS PLUS ANY ADDITIONAL ENTRY CONDITIONS AS
- * DOCUMENTED IN THE INDIVIDUAL ROUTINE:
- *
- * ENTRY (A0) = TERMINAL TABLE ADDRESS.
- * (B2) = TERMINAL NUMBER (ACN).
- * (SSPA) = REGISTER PARAMETER WORD.
- ACK SPACE 4,10
- ** ACK - BLOCK ACKNOWLEDGED.
- *
- * DECREMENTS DOWNSTREAM BLOCK COUNT.
- *
- * CALLS ABT, DBC, SAB.
- ACK BSS 0 ENTRY
- TA1 B2,VMST READ VMST ENTRY
- LX1 59-55 CHECK END-CONNECTION BIT
- NG X1,PCSX IF SET, EXIT
- RJ DBC DECREMENT BLOCK COUNT
- NG X6,ACK2 IF BAD BLOCK COUNT
- ACK1 RJ SAB SET ACTIVITY BIT
- EQ PCSX EXIT
- * PROCESS ERROR.
- ACK2 SX6 3RACK SET ERROR CODE
- RJ ABT PROCESS ERROR
- EQ ACK1
- AOM SPACE 4,10
- ** AOM - ASSIGN OVERFLOW MESSAGE.
- *
- * ASSIGNS EITHER *OVL* OR NULL MESSAGE TO NETWORK,
- * DEPENDING ON CHARACTER COUNT IN *VDPT*.
- * REENTRANT WAY TO SEND OVERFLOW MESSAGE.
- AOM BSS 0 ENTRY
- RJ SOM SEND OVERFLOW MESSAGE
- EQ PCSX EXIT
- BGI SPACE 4,10
- ** BGI - BEGIN INPUT.
- *
- * SENDS AN *MSG* BLOCK TO THE TERMINAL TO ENABLE INPUT
- * IF AN *MSG* BLOCK WAS NOT THE LAST BLOCK SENT.
- *
- * CALLS ACD, PCD.
- BGI BSS 0 ENTRY
- TA5 B2,VMST READ VMST ENTRY
- SB4 B1+B1 MESSAGE LENGTH
- LX5 59-53
- NG X5,PCSX IF *MSG* BLOCK SENT, EXIT
- SX6 DMBI SET MESSAGE ADDRESS
- RJ ACD ASSIGN MESSAGE
- NZ X6,PCSX IF MESSAGE ASSIGNED, EXIT
- BGI1 SB7 BGI SET REENTRY
- BX7 X7-X7
- SB3 B0
- EQ PCD REENTER
- BRK SPACE 4,10
- ** BRK - PROCESS NETWORK BREAK CONDITION.
- *
- * PROCESS NETWORK USER BREAKS ONE AND TWO.
- *
- * ENTRY (X7) = BREAK REASON CODE.
- *
- * CALLS ACD, COA, ERQ, GTM, IFD, ONR, PCD, RDM, RST,
- * SFE, SSP, SSS.
- BRK BSS 0 ENTRY
- SA7 BRKA SAVE BREAK REASON CODE
- TA5 B2,VMST READ VMST ENTRY
- MX6 59 CLEAR OUTPUT PRESENT FLAG
- LX6 48-0 CLEAR TIMEOUT FLAG
- BX5 X6*X5
- LX6 52-48
- BX5 X6*X5
- SA1 A0+VFST CLEAR SCREEN MODE TIMEOUT FLAG
- LX6 17-52
- BX6 X6*X1
- SA6 A1 REWRITE VFST
- MX6 -3
- SB3 B0
- LX6 33-0 CHECK ABC
- BX1 -X6*X5
- ZR X1,BRK1 IF OUTPUT NOT PRESENT
- SX1 B1 SET OUTPUT PRESENT FLAG
- BRK1 SX4 44B SET BREAK AND DATA RECEIVED BITS
- BX4 X4+X1
- LX4 52-0
- BX6 X5+X4
- SA6 A5 REWRITE VMST ENTRY
- LX5 59-57
- NG X5,BRK12 IF BREAK ALREADY IN PROGRESS, ERROR
- * REQUEST OUTSTANDING TERMINAL DATA.
- *
- * ENTRY (B3) = 0.
- * (NBSY) = 0.
- TA5 B2,VMST READ VMST ENTRY
- MX2 59 CLEAR DATA-RECEIVED BIT
- LX2 54-0
- BX6 X2*X5
- SA6 A5 REWRITE VMST ENTRY
- LX5 59-55
- MX1 -12
- NG X5,PCSX IF END CONNECTION SET
- BX1 -X1*X6 DROP TYPED AHEAD DATA POTS
- ZR X1,BRK2.1 IF NO POTS
- SB3 X1
- MX1 42
- BX6 X1*X6 CLEAR POT POINTER AND COUNT
- SA6 A5 REWRITE VMST
- SB4 B0 DROP ENTIRE CHAIN
- RJ DPT DROP POTS
- TA1 B2,VMST CHECK NAM TYPEAHEAD
- SX6 B1
- LX6 51-0
- BX2 X1*X6
- ZR X2,BRK2.1 IF NOT ON
- BX6 X1-X6
- SA6 A1 REWRITE VMST
- SB4 B0
- BX6 X6-X6
- SX7 LSTFDX
- RJ ASV ASSIGN SUPERVISORY MESSAGE
- BRK2.1 SB7 B0+
- RJ SRE CLEAR DRIVER REENTRY
- SA1 BRKA
- BX7 X1
- BRK3 TA1 B2,VMST
- LX1 59-49
- NG X1,BRK5 IF BREAK MARKER RECEIVED
- SB7 BRK3
- EQ PCD REENTER
- * SELECT BREAK REASON CODE PROCESSOR.
- BRK5 SB5 X7-USB2 CHECK REASON CODE
- SX7 B1+ CLEAR BREAK MARKER RECEIVED
- TA5 B2,VMST
- LX7 49
- BX7 -X7*X5
- SA7 A5+
- SX7 TIET ASSUME USER BREAK 1
- NG B5,BRK6 IF USER BREAK 1
- SX7 TAET ASSUME USER BREAK 2
- * PROCESS USER BREAK 1 AND USER BREAK 2.
- *
- * ENTRY (X7) = TAET, IF USER BREAK 2.
- * TIET, IF USER BREAK 1.
- BRK6 SA1 A0+VDCT READ VDCT
- SA2 A0+VDPT READ VDPT
- SA3 A0+VROT READ VROT
- SA4 A0+VSTT READ VSTT
- SB3 B0 INDICATE NO POT POINTER
- SX6 B1 CLEAR INPUT REQUESTED FLAG
- LX6 56-0
- BX6 -X6*X1
- SA6 A1
- LX4 59-56
- NG X4,ROI IF DETACH IN PROGRESS
- LX1 59-50 CHECK FOR *TEXT* MODE
- MX6 12
- SA4 A0+VUIT
- BX4 X6*X4
- ZR X4,ROI IF NO EJT ORDINAL ASSIGNED
- LX2 59-16 CHECK FOR INPUT INITIATED
- MX4 -5
- BX3 -X4*X3
- LX4 X1,B1 CHECK *AUTO* MODE
- SX3 X3-1
- NG X1,ROI IF IN *TEXT* MODE
- NG X2,BRK10 IF INPUT INITIATED
- NZ X3,BRK7 IF ACTIVE
- NG X4,BRK7 IF AUTO MODE
- RJ COA CHECK OUTPUT AVAILABLE
- ZR X4,BRK11 IF OUTPUT NOT PRESENT
- BRK7 SX6 /TLX/PUB PROCESS USER BREAK
- RJ ERQ ENTER REQUEST
- SX7 B1+
- SB7 BRK8
- EQ PCD REENTER
- * RESET TERMINAL AFTER INTERRUPT COMPLETION.
- * (X7) = 1, PROCESSING A USER INITIATED USER BREAK.
- * (X7) = 0, PROCESSING AN EXECUTIVE INITIATED USER BREAK.
- BRK8 TA2 B2,VMST
- SA3 A0+VSTT
- SA1 A0+VDCT
- LX2 59-55 CHECK END-CONNECTION FLAG
- LX3 59-48 CHECK LOGOUT FLAG
- NG X2,PCSX IF END-CONNECTION SET
- LX2 X1,B1 CLEAR INTERRUPT COMPLETE
- MX6 1
- BX6 -X6*X2
- LX6 58-59
- SA6 A1+ REWRITE VDCT
- NG X3,ROI IF LOGOUT FLAG SET
- PL X1,BRK9 IF NO DRIVER REQUEST
- MX3 -12 CHECK DRIVER REQUEST
- BX4 -X3*X1
- SX3 X4-/1TD/HUP
- ZR X3,ROI IF *HANG UP PHONE* REQUEST
- BRK9 PL X2,PCD IF INTERRUPT NOT COMPLETE
- RJ SSS
- SX6 /TLX/RES SET RESTART REQUEST
- RJ ERQ ENTER RESTART REQUEST
- RJ SSP RESTORE X7
- NZ X7,ROI IF USER INITIATED
- TA2 B2,VMST CLEAR BREAK-IN-PROGRESS BIT
- SX6 B1
- LX6 57-0
- BX6 -X6*X2
- SA6 A2
- EQ PCSX EXIT
- * ISSUE *IDLE* IF NO JOB ACTIVITY TO INTERRUPT.
- BRK10 MX6 -59 CLEAR INPUT INITIATED
- BX7 -X6*X2
- LX7 16-59
- SA7 A2 REWRITE VDPT ENTRY
- BRK11 SX6 DMID SET IDLE MESSAGE ADDRESS
- SB4 DMIDL SET MESSAGE LENGTH
- RJ ACD ASSIGN MESSAGE
- EQ ROI RESUME OUTPUT
- * INCREMENT SECOND BREAK RECEIVED COUNTER.
- BRK12 SA1 BRKB INCREMENT ERROR COUNTER
- SX6 X1+B1
- PX6 B2,X6 SAVE TN AND ERROR COUNT
- SA6 A1
- EQ PCSX EXIT
- BRKA CON 0 WORD TO SAVE BREAK REASON CODE
- * STORE THE TOTAL ERROR COUNT WITH THE MOST RECENT
- * TERMINAL NUMBER THAT DETECTED AN ERROR.
- BRKB CON 0 12/ TN, 48/ ERROR COUNTER
- CLS SPACE 4,10
- ** CLS - CHECK LOAN STATUS.
- *
- * ENTRY (X7) = LOAN STATUS VALUE.
- * (B4) = ENTRY CONDITION FOR *CLS1*.
- * = 0, IF NO CALL TO *SFE* OR EXIT TO *CRR*.
- * = 1, IF ONLY EXIT TO *CRR*.
- * = 2, IF ONLY CALL TO *SFE*.
- * > 2, IF CALL TO *SFE* AND EXIT TO *CRR*.
- *
- * EXIT TO *CRR* IF CONNECTION RESPONSE IS TO BE ISSUED.
- *
- * CALLS ERQ, IDM, PRP, SFE, ZFN.
- CLS BSS 0 ENTRY
- SB4 B0 ENTRY CONDITION FOR CALL TO *ZFN*
- MX0 42
- SA1 RCVB+5 GET USERNAME FROM MESSAGE
- RJ ZFN ZERO FILL USERNAME
- SB4 3 SET ENTRY CONDITION IN CASE OF ERROR
- BX2 X0*X6
- SA3 A0+VUIT GET USERNAME FROM TERMINAL TABLE
- BX4 X0*X3
- BX4 X4-X2
- NZ X4,CLS0 IF NOT THE SAME USERNAME
- RJ PRP PROCESS RETURN TO PRIMARY
- EQ CRR1 ISSUE *CON/REQ/N* MESSAGE
- CLS0 SX7 ERLS SET INTERNAL ERROR
- CLS1 RJ PRP PROCESS RETURN TO PRIMARY
- SA2 A0+VDCT CLEAR PRIMARY CONNECTION BIT
- SX6 B1
- LX6 47-0
- BX6 -X6*X2
- SA6 A2 REWRITE VDCT
- BX0 X7 SAVE LOAN STATUS VALUE FOR CALCULATION
- LX7 0-24 SET UP ENTRY FOR DRIVER REQUEST
- SX6 /TLX/RES SET UP DRIVER REQUEST
- RJ ERQ ENTER REQUEST IN QUEUE
- SX1 ERLS
- BX1 X0-X1
- NZ X1,CLS1.5 IF NOT INTERNAL ERROR
- SA1 A0+VFST INSERT JSN INTO MESSAGE
- MX0 24
- BX1 X0*X1 GET JSN
- LX1 -6 SHIFT JSN
- LX0 -6 SHIFT MASK
- SA2 CLSA
- BX2 -X0*X2
- BX6 X1+X2 INSERT JSN INTO MESSAGE
- SA6 A2 REWRITE MESSAGE
- SX6 CLSA SET MESSAGE ADDRESS
- RJ IDM ISSUE DAYFILE MESSAGE
- CLS1.5 ZR B4,PCSX IF NO OTHER TASKS WANTED
- EQ B1,B4,CLS2 IF NO *SMP* MESSAGE WANTED
- RJ SFE ISSUE IAF DAYFILE MESSAGE
- CLS2 SB5 B1+B1
- EQ B4,B5,PCSX IF NOT TO ISSUE *CON/REJ*
- EQ CRR ISSUE *CON/REJ*
- CLSA DATA C* JSNN DETACHED DUE TO APPLICATION SWITCH ERROR.*
- CNB SPACE 4,10
- ** CNB - CONNECTION BROKEN.
- *
- * PROCESS INTERRUPTION OF NETWORK TERMINAL CONNECTION.
- *
- * ENTRY (X3) = STATUS BITS FROM *CON/CB* MESSAGE
- *
- * EXIT TO *CLS1* IF CONNECTION IS LOANED.
- * (X7) = LOAN STATUS VALUE.
- * (B4) = ERROR MESSAGE INDICATOR.
- *
- * CALLS DAP, DPT, ENC, ERQ, SRE.
- CNB BSS 0 ENTRY
- SB3 B0
- SA1 A0+VDCT CHECK CONNECTION TYPE
- LX1 59-47
- PL X1,CNB2 IF CONNECTION NOT LOANED
- * PROCESS LOANED CONNECTION.
- SB4 B0 SET ENTRY FOR *CLS1*
- SX7 ERLS SET INTERNAL ERROR
- ZR X3,CLS1 IF LOAN BIT NOT SET IN MESSAGE
- SA1 RCVB GET REASON CODE
- LX1 0-36
- MX0 -8
- BX1 -X0*X1
- SB6 X1
- SB5 3
- LT B6,B5,CNB1 IF NOT SECONDARY ABORT
- SX7 SCLS
- EQ CLS1 PROCESS RETURN FROM SECONDARY ABORT
- CNB1 SX7 LDLS SET LOAN STATUS FOR LINE DISCONNECT
- EQ CLS1 PROCESS RETURN FROM LINE DISCONNECT
- CNB2 BX7 X7-X7
- TA1 B2,VMST
- PL X1,CNB3 IF CONNECTION NOT YET COMPLETE
- SA1 A0+VSTT
- SB7 CNB
- SA2 A0+VDCT
- LX2 59-57
- LX1 59-56
- NG X1,PCD IF DETACH IN PROGRESS, REENTER
- PL X2,PCD IF LOGIN NOT COMPLETE, REENTER
- CNB3 SB7 B0
- RJ SRE CLEAR REENTRY
- RJ DAP CLEAR OUTPUT ASSIGNMENTS
- TA1 B2,VMST DROP VMST POT
- MX7 -12
- BX7 -X7*X1
- SB3 X7
- SB4 B0
- MX7 42 CLEAR POT POINTER
- MX3 57 CLEAR UNANSWERED BLOCKS
- LX3 33
- BX1 X3*X1
- BX7 X7*X1
- MX3 1 CLEAR TERMINAL ON LINE
- BX7 -X3*X7
- SA7 A1 REWRITE VMST
- ZR B3,CNB4 IF NO POT
- RJ DPT DROP POTS
- CNB4 SB3 B0 CLEAR POT POINTER
- BX7 X7-X7
- SX6 /TLX/HUP SET HANG UP PHONE REQUEST
- SA1 A0+VUIT CHECK FOR EJT ORDINAL
- MX3 -12
- BX1 -X3*X1
- ZR X1,ENC IF NO EJT ORDINAL
- RJ ERQ ENTER REQUEST
- EQ PCSX EXIT
- CNM SPACE 4,10
- ** CNM - CONNECTION MADE.
- *
- * MAKES 1TA QUEUE ENTRY TO LOGIN USER.
- *
- * ENTRY (VDPT(0)) = VALIDATION POT POINTER.
- *
- * EXIT TO *PCS1* TO MAKE QUEUE ENTRY.
- *
- * CALLS ASV, ITA2 (VIA PCS1).
- CNM BSS 0 ENTRY
- TA1 B2,VMST
- LX1 59-55
- NG X1,PCSX IF *CON/CB/R* ALREADY RECEIVED
- * ISSUE CONNECTION INITIATION RESPONSE.
- BX6 X6-X6 INDICATE DEFAULT HEADER
- SB4 B1 TEXT LENGTH = 1
- SX7 FCINI ISSUE SUPERVISORY MESSAGE
- RJ ASV
- NZ X6,CNM1 IF MESSAGE ISSUED
- SB3 B0 SET REENTRY
- BX7 X7-X7
- SB7 CNM
- EQ PCD
- * BYPASS 1TA LOGIN REQUEST IF SECONDARY RETURNING TO PRIMARY.
- CNM1 SA1 A0+VDCT CHECK PRIMARY CONNECTION
- LX1 59-47
- PL X1,CNM2 IF NOT RETURN OF SECONDARY CONNECTION
- MX7 1 CLEAR PRIMARY CONNECTION BIT
- BX7 -X7*X1
- LX7 47-59
- SA7 A1 REWRITE VDCT
- SB3 B0 CLEAR POT POINTER
- SX6 /TLX/RES SET UP DRIVER REQUEST
- RJ ERQ ENTER REQUEST
- EQ PCSX EXIT
- * ENTER 1TA REQUEST TO LOGIN USER.
- CNM2 SA1 A0+VDPT GET VALIDATION POT POINTER
- MX7 12
- BX7 -X7*X1 CLEAR VDPT POT POINTER
- BX1 X1-X7 MASK VDPT POT POINTER
- SA7 A1 REWRITE VDPT
- LX1 12
- BX7 X7-X7
- SX5 ITA2$ SET QUEUE ENTRY
- SB3 X1+
- TA1 B2,VMST SET ON LINE
- MX6 1
- BX6 X6+X1
- SA6 A1 REWRITE VMST
- EQ PCS1 MAKE QUEUE ENTRY
- CRR SPACE 4,10
- ** CRR - CONNECTION REQUEST REPLY.
- *
- * EXIT EITHER THE *CON/REQ/N* OR *CON/REJ*
- * SUPERVISORY MESSAGE HAS BEEN SENT TO NAM.
- *
- * CALLS ASV, SHA.
- CRR BSS 0 ENTRY FOR *CON/REJ* MESSAGE
- SA1 CONREJ
- SX3 RTCI
- LX3 36-0
- BX6 X1+X3
- EQ CRR2 CONTINUE
- CRR1 BSS 0 ENTRY FOR *CON/REQ/N* MESSAGE
- RJ SHA RESET HIGHEST ACTIVITY ACN
- SA1 CONREQ CONNECTION ACCEPTED
- BX6 X1
- * ISSUE SUPERVISORY MESSAGE.
- CRR2 SA6 CRRA
- SX7 A6
- BX6 X6-X6 USE DEFAULT HEADER
- SB4 B1+ SET TEXT LENGTH
- RJ ASV ASSIGN MESSAGE
- EQ PCSX EXIT
- CRRA CON 0 CANNED MESSAGE
- CTM SPACE 4,10
- ** CTM - CANCEL TYPEAHEAD MODE.
- *
- * SENDS A *LSTFDX* SUPERVISORY MESSAGE TO *NAM*
- * TO CANCEL TYPEAHEAD QUEUEING.
- *
- * CALLS ASV, PCD.
- CTM BSS 0 ENTRY
- BX6 X6-X6 SET DEFAULT HEADER
- SB4 B1 SET TEXT LENGTH
- SX7 LSTFDX SET MESSAGE ADDRESS
- RJ ASV ASSIGN SUPERVISORY MESSAGE
- NZ X6,CTM1 IF MESSAGE ASSIGNED
- SB3 B0 SET REENTRY PARAMETERS
- BX7 X7-X7
- SB7 CTM
- EQ PCD REENTER
- CTM1 TA1 B2,VMST READ VMST ENTRY
- MX2 59
- LX2 51-0
- BX6 X1*X2 CLEAR TYPEAHEAD BIT
- SA6 A1 REWRITE VMST
- EQ PCSX EXIT
- ECR SPACE 4,10
- ** ECR - PROCESS *END CONNECTION* RESPONSE.
- *
- * PROCESS COMPLETION OF NORMAL LOGOUT OR APPLICATION SWITCH.
- *
- * ENTRY (X3) = MESSAGE STATUS BITS.
- *
- * EXIT TO *SMPE* IF THE FOLLOWING IS TRUE
- * END-CONNECTION BIT IS NOT SET.
- * TO *CLS1* IF ANY OF THE FOLLOWING IS TRUE
- * LOAN CONFIRMATION BIT IS NOT SET.
- * THE CONNECTION IS ALREADY LOANED.
- *
- * CALLS CLE, DPT, SHA.
- ECR BSS 0 ENTRY
- SA1 A0+VDCT CHECK CONNECTION TYPE
- LX1 59-47
- MX2 -12
- PL X1,ECR1 IF NOT LOANING CONNECTION
- SA1 A0+VFST GET APPSW POT POINTER
- BX4 -X2*X1
- ZR X4,ECR0 IF NO POT TO DROP
- BX6 X2*X1 CLEAR POT POINTER IN VFST
- SA6 A1
- SB3 X4
- SB4 B0 DROP TO END OF CHAIN
- BX0 X3 SAVE MESSAGE STATUS BITS
- RJ DPT DROP POT
- BX3 X0
- ECR0 SB4 B1+B1 SET REGISTERS FOR *CLS1*
- LX3 59-0
- SX7 ERLS
- PL X3,CLS1 IF LOAN CONFIRMATION BIT NOT SET
- LX3 59-1-59+0
- NG X3,CLS1 IF CONNECTION ALREADY LOANED
- EQ PCSX EXIT
- ECR1 TA1 B2,VMST READ VMST ENTRY
- LX1 59-55 CHECK END-CONNECTION BIT
- PL X1,SMPE IF NOT SET, ERROR
- RJ //CLE CLEAN UP TERMINAL TABLE
- RJ SHA RESET HIGHEST ACTIVE ACN
- EQ PCSX EXIT
- ENC SPACE 4,10
- ** ENC - END CONNECTION.
- *
- * PROCESSES THE TERMINATION OF THE CURRENT CONNECTION
- * AND DIRECTS NVF TO SWITCH USER TO ANOTHER APPLICATION
- * IF DESIRED.
- *
- * EXIT *END CONNECTION* SUPERVISORY MESSAGE ISSUED.
- * (VMST) = END-CONNECTION BIT SET IF LOGOUT REQUEST.
- * TO *CLS1* IF NO POT POINTER.
- * (X7) = LOAN STATUS VALUE.
- * (B4) = ERROR MESSAGE INDICATOR.
- *
- * CALLS ASV, DPT, ILV, PCD, SSP, ZFN.
- ENC BSS 0 ENTRY
- ZR B3,ENC0 IF NO POT
- SB4 B0
- RJ DPT DROP POT
- ENC0 SA1 A0+VDCT CHECK CONNECTION TYPE
- LX1 59-47
- PL X1,ENC1 IF CONNECTION NOT BEING LOANED
- * THIS CONNECTION IS BEING LOANED TO ANOTHER APPLICATION.
- SX7 ENC0 SAVE ADDRESS
- SA7 ENCA
- SA1 A0+VFST GET POT POINTER
- MX6 -12
- SB4 B0 ENTRY FOR *CLS1*
- BX2 -X6*X1
- SX7 ERLS
- ZR X2,CLS1 IF NO POT POINTER
- LX2 3
- TB4 X2,VBMP CALCULATE POT ADDRESS
- SA1 B4+B1 GET APPLICATION NAME
- MX2 42
- BX6 X2*X1
- RJ ZFN BLANK FILL APPLICATION NAME
- SA1 CONEND SET STATUS BIT IN MESSAGE
- SX2 B1
- BX7 X2+X1
- SA7 B4 STORE MESSAGE IN POT
- SA6 A7+B1 REWRITE APPLICATION NAME
- SX7 B4 SET MESSAGE ADDRESS
- SB4 B1+B1 SET TEXT LENGTH
- SX6 HDRS4 SET HEADER ADDRESS
- EQ ENC4 CONTINUE
- * SET END-CONNECTION IN VMST.
- ENC1 TA1 B2,VMST READ VMST ENTRY
- ZR X1,PCSX IF NO USER
- MX6 1
- LX1 59-55 CHECK END-CONNECTION BIT
- NG X1,PCSX IF ALREADY SET
- BX6 X1+X6 SET BIT
- LX6 55-59 SHIFT RESTORE
- SA6 A1+ REWRITE VMST
- * DO NOT SEND MESSAGE WHEN SECONDARY CONNECTION HAS ABORTED.
- SA2 A0+VROT CHECK LOAN STATUS VALUE
- MX1 -12
- LX1 24-0
- BX2 -X1*X2
- ZR X2,ENC2 IF NO LOAN STATUS VALUE
- SX7 B0 CLEAR LOAN STATUS VALUE
- RJ ILV
- EQ ECR CONTINUE PROCESSING
- * SET UP CONNECTION TERMINATION MESSAGE.
- ENC2 SX7 ENC2 SAVE REENTRY ADDRESS
- SA7 ENCA
- SX7 CONEND SET MESSAGE ADDRESS
- SA1 A0+VFNT
- MX6 42
- BX6 X6*X1
- SA1 ENCB SET DEFAULT NVF PARAMETER
- ZR X6,ENC3 IF NO NVF PARAMETER
- BX1 X6
- ENC3 SB4 B1+B1 SET TEXT LENGTH = 2
- RJ ZFN BLANK FILL NVF PARAMETER
- SA6 CONEND+1
- SX6 HDRS2 SET HEADER ADDRESS
- * ISSUE SUPERVISORY MESSAGE.
- ENC4 RJ ASV ASSIGN MESSAGE
- RJ SSP
- SA1 ENCA GET REENTRY ADDRESS
- SB7 X1+
- ZR X6,PCD IF MESSAGE NOT ASSIGNED, REENTER
- EQ PCSX EXIT
- ENCA CON 0 REENTRY ADDRESS
- ENCB DATA C*BYE*
- HUP SPACE 4,10
- ** HUP - HANG UP PHONE.
- *
- *
- * PROCESS REQUEST TO TERMINATE CONNECTION.
- *
- * ENTRY (VFST) = NVF LOGOFF PARAMETER
- *
- * EXIT TO *ENC*.
- * (VSTT) = POT POINTER CLEARED.
- *
- * CALLS CBL, ENC, PCD, SSS.
- HUP BSS 0 ENTRY
- * WAIT UNTIL DOWNSTREAM BLOCKS ARE ACKNOWLEDGED.
- RJ CBL CHECK BLOCK LIMIT
- SB7 HUP SET REENTRY
- BX7 X7-X7
- NZ X3,PCD IF BLOCKS OUTSTANDING, REENTER
- EQ ENC END CONNECTION
- IIP SPACE 4,10
- ** IIP - ISSUE INPUT PROMPT.
- *
- * ISSUES INPUT PROMPT IF NOS TRANSPARENT, BINARY,
- * OR AUTO MODE IS NOT SET.
- *
- * EXIT INPUT PROMPT ISSUED.
- * (VDCT) = INPUT INITIATED BIT 56 SET.
- *
- * CALLS ACD, PCD.
- IIP BSS 0 ENTRY
- SA3 A0+VDCT GET VDCT
- SX6 B1 SET *INPUT INITIATED* BIT
- LX6 56-0
- BX6 X6+X3
- LX3 59-49
- SA6 A3 REWRITE VDCT
- NG X3,PCSX IF AUTO MODE, EXIT
- * ISSUE PROMPT MESSAGE.
- IIP1 RJ IPM ISSUE PROMPT MESSAGE
- NZ X6,PCSX IF MESSAGE ASSIGNED, EXIT
- SB7 IIP1 SET REENTRY ADDRESS
- SB3 B0
- BX7 X7-X7
- EQ PCD REENTER
- INA SPACE 4,20
- ** INA - USER INACTIVE.
- *
- * INDICATES THAT USER HAS HAD NO TERMINAL ACTIVITY
- * FOR A PERIOD OF TIME EQUAL TO THE INSTALLATION NET-
- * WORK OPTION. CALLS EXECUTIVE TO LOGOFF USER IF THE
- * VALIDATION NO-TIME-OUT BIT IS NOT SET, ELSE RETURNS.
- * IF A TERMINAL IS IN SCREEN MODE, THE TIMEOUT PERIOD
- * IS TWICE THE INSTALLATION NETWORK OPTION. TO
- * ACCOMPLISH THIS, THE SCREEN MODE TIMEOUT BIT IS SET
- * ON THE FIRST PASS THROUGH *INA*. ON THE SECOND
- * PASS THROUGH *INA*, THIS BIT IS CHECKED AND IF IT
- * IS SET, THE TERMINAL IS TIMED OUT.
- *
- * ENTRY (VDCT) = NO-TIME-OUT BIT, BIT 22.
- * (VFST) = SCREEN MODE TIMEOUT FLAG, BIT 17.
- * (VSTT) = SCREEN MODE, BIT 49.
- *
- * EXIT (VMST) = TIMEOUT FLAG, BIT 48.
- * (VFST) = SCREEN MODE TIMEOUT FLAG, BIT 17.
- *
- * CALLS DAP, ENC, ERQ, RPT, SRE.
- INA BSS 0 ENTRY
- * CHECK CONNECTION TYPE.
- SA1 A0+VDCT
- LX1 59-47
- PL X1,INA0 IF CONNECTION IS NOT LOANED
- SB4 B0 SET ENTRY FOR *CLS1*
- SX7 ERLS SET ENTERNAL ERROR
- EQ CLS1 PROCESS ERROR
- * EXIT IF THERE IS CURRENT USER ACTIVITY.
- INA0 TA1 B2,VMST READ VMST ENTRY
- SA2 A0+VROT READ VROT
- SX7 B1 SET TIMEOUT FLAG
- LX7 48
- BX7 X1+X7
- SX1 X1
- NZ X1,PCSX IF MESSAGE ASSIGNED, EXIT
- LX2 59-0 CHECK VROT ACTIVITY BIT
- NG X2,INA1 IF NO JOB ACTIVITY
- SA2 A0+VFST CHECK SMF CONNECTION STATE
- MX3 6
- LX3 24
- BX2 X2*X3
- ZR X2,PCSX IF ACTIVE AND NOT SMF, EXIT
- INA1 SA2 A0+VUIT CHECK EJT ORDINAL
- MX3 -12
- BX2 -X3*X2
- ZR X2,PCSX IF NO EJT ORDINAL ASSIGNED, EXIT
- SA3 A0+VDCT
- NG X3,PCSX IF DRIVER REQUEST, EXIT
- SA1 A0+VCHT CHECK FOR REENTRY
- MX6 36
- BX1 X6*X1
- NZ X1,PCSX IF REENTRY SET, EXIT
- SA1 A0+VSTT
- LX1 59-56
- NG X1,PCSX IF DETACH IN PROGRESS, EXIT
- LX3 59-22 CHECK NO-TIME-OUT BIT
- SB3 B0 INDICATE NO POTS TO DROP
- NG X3,PCSX IF NO-TIME-OUT
- SB7 B0
- SA1 A0+VSTT CHECK FOR SCREEN MODE IN EFFECT
- SA3 A0+VFST CHECK SCREEN MODE TIMEOUT FLAG
- LX1 59-49
- PL X1,INA2 IF NOT IN SCREEN MODE
- LX3 59-17
- NG X3,INA2 IF SCREEN MODE TIMEOUT
- MX6 1 SET SCREEN MODE TIMEOUT FOR NEXT PASS
- BX6 X6+X3
- LX6 17-59
- SA6 A3 REWRITE VFST
- EQ PCSX EXIT
- * CLEAR UNACKNOWLEDGED BLOCKS AND ISSUE DOWNLINE BREAK.
- INA2 MX6 -3 CLEAR APPLICATION BLOCK COUNT
- LX6 33
- BX7 X6*X7
- BX6 X6-X6 USE DEFAULT SUPERVISORY MESSAGE HEADER
- TA7 B2,VMST REWRITE *VMST*
- SB4 B1+
- SX7 FCBRK SEND CONNECTION BREAK SUPERVISORY MESSAGE
- RJ ASV
- SB3 B0
- BX7 X7-X7
- SB7 INA2
- ZR X6,PCD IF MESSAGE NOT ISSUED
- INA3 TA3 B2,VMST CHECK FOR CONNECTION RESET RECEIVED
- LX3 59-47
- NG X3,INA4 IF CONNECTION RESET HAS BEEN RECEIVED
- BX7 X7-X7
- SB7 INA3
- EQ PCD REENTER
- * CONNECTION RESET RECEIVED, CONTINUE WITH TIMEOUT.
- INA4 MX7 1 CLEAR CONNECTION RESET RECEIVED BIT
- BX7 -X7*X3
- LX7 47-59 REALIGN *VMST*
- SB7 B0
- TA7 B2,VMST REWRITE *VMST*
- RJ SRE CLEAR DRIVER REENTRY
- SX6 /TLX/TOT
- RJ ERQ ENTER REQUEST
- RJ DAP DROP ASSIGNED POTS
- SX6 DMBL SEND BELLS
- SB4 DMBLL
- RJ ACD ASSIGN MESSAGE
- SX6 DMTO SEND TIMEOUT MESSAGE
- SB4 DMTOL
- SB3 B0
- RJ ACD ASSIGN MESSAGE
- EQ PCSX EXIT
- ITM SPACE 4,10
- ** ITM - INITIATE TYPEAHEAD MODE.
- *
- * SENDS A *LSTHDX* SUPERVISORY MESSAGE TO THE NETWORK
- * TO INITIATE TYPEAHEAD QUEUING.
- *
- * CALLS ASV, PCD, SRE.
- ITM BSS 0 ENTRY
- BX6 X6-X6 SET DEFAULT HEADER
- SB4 B1 SET MESSAGE LENGTH
- SX7 LSTHDX SET MESSAGE NAME
- RJ ASV ASSIGN MESSAGE
- SB3 B0
- BX7 X7-X7
- SB7 ITM
- ZR X6,PCD IF MESSAGE NOT ISSUED, REENTER
- TA1 B2,VMST READ VMST ENTRY
- SX6 B1 SET TYPEAHEAD IN EFFECT
- LX6 51-0
- BX6 X6+X1
- SA6 A1 REWRITE VMST
- EQ PCSX EXIT
- JCM SPACE 4,10
- ** JCM - ISSUE JOB COMPLETION MESSAGE.
- *
- * ISSUE JOB OR RUN COMPLETION MESSAGE AS DETERMINED
- * BY THE TERMINAL SUBSYSTEM.
- *
- * ENTRY (VSTT) BYTE 3 = 6/, 6/SUBSYSTEM.
- *
- * EXIT TO *RDY* IF NO MESSAGE SPECIFIED FOR THE
- * TERMINAL SUBSYSTEM.
- *
- * CALLS ACD, PCD, RDY.
- JCM BSS 0 ENTRY
- SA1 A0+VSTT READ VSTT
- MX6 -3
- LX1 -12
- BX6 -X6*X1 EXTRACT CURRENT SUBSYSTEM
- SA1 JCMT+X6 READ MESSAGE ADDRESS
- ZR X1,RDY IF NO MESSAGE DEFINED
- SX6 X1+ SET MESSAGE ADDRESS
- SB4 DMRCL SET MESSAGE LENGTH
- RJ ACD ASSIGN MESSAGE
- NZ X6,PCSX IF MESSAGE ASSIGNED
- SB7 JCM SET REENTRY
- BX7 X7-X7
- EQ PCD REENTER
- * JCMT - TABLE OF RUN COMPLETION MESSAGES.
- JCMT INDEX CON,MSYS,( 0 )
- INDEX ,BASS,( DMRC )
- INDEX ,FORS,( DMRC )
- INDEX ,FTNS,( DMRC )
- INDEX ,EXES,( DMRC )
- NAK SPACE 4,10
- ** NAK - BLOCK NOT DELIVERED.
- *
- * PERFORMS THE FOLLOWING FUNCTIONS IN RESPONSE TO A
- * *NAK* SUPERVISORY MESSAGE-
- *
- * (1) UPDATES *NAK* COUNT.
- * (2) DECREMENTS DOWNSTREAM BLOCK COUNT.
- * (3) VALIDATES REASON CODE.
- * (4) ISSUES APPROPRIATE DAYFILE MESSAGE.
- * (5) CALLS ABORT PROCESSOR IF ERROR.
- *
- * ENTRY (RCVB) = REASON CODE, BITS 36-43.
- *
- * EXIT DAYFILE MESSAGE ISSUED.
- * (NAKC) = INCREMENTED.
- * (BLTC) = INCREMENTED IF BLOCK-LOST.
- * (VMST) = DOWNSTREAM BLOCK COUNT DECREMENTED.
- *
- * CALLS ABT, DBC, IDM, O6S.
- NAK BSS 0 ENTRY
- SA1 NAKC UPDATE *NAK* COUNT
- SX7 B1
- SB6 B0 (B6) = ERROR FLAG
- IX7 X1+X7
- SA7 A1 REWRITE *NAK* COUNT
- RJ DBC DECREMENT TERMINAL BLOCK COUNT
- PL X6,NAK1 IF NO ERROR
- SB6 B1+ SET ERROR FLAG
- * VALIDATE REASON CODE.
- NAK1 SA2 RCVB READ MESSAGE
- MX3 -8 MASK REASON CODE
- SX1 B2 SET (X1) FOR *O6S*
- AX2 36
- BX3 -X3*X2
- SX2 X3-AXLB CHECK FOR *BLOCK-LOST*
- NZ X2,NAK2 IF NOT *BLOCK-LOST*
- * PROCESS *BLOCK-LOST* CONDITION.
- RJ O6S CONVERT TERMINAL NUMBER
- SA1 NAKB INSERT IN DAYFILE MESSAGE
- MX3 18
- AX6 6
- BX1 X3*X1
- BX6 -X3*X6
- IX7 X6+X1
- SA7 A1
- SX6 NAKA SET MESSAGE ADDRESS
- RJ IDM ISSUE DAYFILE MESSAGE
- SA1 BLTC INCREMENT BLOCK-LOST COUNT
- SX7 B1
- IX6 X7+X1
- SA6 A1+
- ZR B6,PCSX IF NO ERROR, EXIT
- * PROCESS ERROR.
- NAK2 SX6 3RNAK SET ERROR CODE
- RJ ABT PROCESS ERROR
- EQ PCSX EXIT
- NAKA DATA 10HBLOCK LOST
- NAKB DATA 03L -
- NWC SPACE 4,40
- ** NWC - PROCESS NEW CONNECTION.
- *
- * INITIATES THE CREATION OF NEW USER. THE USER HAS
- * BEEN VALIDATED BY *NVF* AND THE USERS VALIDATION DATA
- * ARE AVAILABLE IN THE CONNECTION SUPERVISORY MESSAGE.
- * *NWC* COPIES THE VALIDATION INFORMATION TO POT FOR
- * USE FOR LOGIN AND ISSUES SUPERVISORY MESSAGE TO EITHER
- * ACCEPT OR REJECT THE NEW CONNECTION. LOGIN WILL BE
- * COMPLETED AFTER THE COMMUNICATIONS SUPERVISOR SENDS
- * A *CONNECTION MADE* SUPERVISORY MESSAGE.
- *
- * ENTRY (MESSAGE) = VALIDATION PARAMETERS.
- * (MSG+0) = 36/, 3/ ABL, 5/, 8/ DT, 8/.
- * (MSG+1) = 42/ TN, 2/, 8/ PW, 8/PL.
- * (MSG+2) = 46/, 1/A, 3/LAL, 11/ BSZ, 1/0.
- * (MSG+4) = 42/ FN, 18/ FO.
- * (MSG+5) = 42/ UN, 18/ UI.
- * (MSG+6) = 60/ AHMT.
- * (MSG+7) = 60/ AHDS.
- * (MSG+8) = 60/ AAWC.
- * (MSG+9) = 60/ ATWD.
- *
- * MSG = MESSAGE FWA.
- * ABL = APPLICATION BLOCK LIMIT.
- * DT = DEVICE TYPE.
- * TN = TERMINAL NAME.
- * PW = PAGE WIDTH.
- * PL = PAGE LENGTH.
- * A = *LAL* SPECIFIED.
- * LAL = LINE ACCESS LEVEL LIMIT.
- * BSZ = BLOCK SIZE.
- * FN = FAMILY NAME.
- * FO = FAMILY ORDINAL.
- * UN = USER NAME.
- * UI = USER INDEX (NOT USED).
- * AHMT = ACCOUNT FILE WORD *AHMT*.
- * AHDS = ACCOUNT FILE WORD *AHDS*.
- * AAWC = ACCOUNT FILE WORD *AAWC*.
- * ATWD = ACCOUNT FILE WORD *ATWD*.
- *
- * EXIT (VDPT(0)) = VALIDATION POT POINTER.
- *
- * TO *CRR* IF ERROR CONDITION DECTECTED.
- * TO *CRR1* IF NO ERROR CONDITION DETECTED.
- *
- * CALLS ABT, CRR, CTP, ZFN.
- NWC BSS 0 ENTRY
- * ENTRY FOR SECONDARY CONNECTION REQUEST.
- SA1 A0+VDCT SET SECONDARY APPLICATION
- MX6 1
- LX6 46-59
- BX6 X1+X6
- SA6 A1 REWRITE VDCT
- * VERIFY THAT CONNECTION CAN BE ACCEPTED.
- * ENTRY FOR PRIMARY CONNECTION REQUEST.
- NWC0 BSS 0 ENTRY
- SA1 SHDF CHECK SHUTDOWN FLAG
- NZ X1,CRR IF SHUTDOWN IN PROGRESS
- TB6 B0,VNTP
- LT B2,B6,CRR IF INCORRECT ACN
- TB7 B0,VNTP,LWA
- GT B2,B7,CRR IF INCORRECT ACN
- TA1 B2,VMST GET VMST
- NZ X1,CRR IF ALREADY ON-LINE
- SA1 RCVB CHECK DEVICE TYPE
- MX6 -3
- AX1 13-0
- BX6 -X6*X1
- SB4 B0 SELECT ZERO FILL
- NZ X6,CRR IF PASSIVE DEVICE
- SX0 B0 USE X0 AS A TEMPORARY VALIDATION FLAG
- SA1 RCVB+10D CHECK FOR SECONDARY VALIDATION
- SA3 =8HVALIDATE
- BX6 X3-X1
- NZ X6,NWC0.1 IF NO VALIDATION
- SX0 B1 SET FLAG = ONE TO INDICATE VALIDATION
- SA1 RCVB+11D PUT SECONDARY FAMILY NAME IN *RCVB+4*
- BX6 X1
- SA6 RCVB+4
- SA1 A1+B1 PUT SECONDARY USER NUMBER IN *RCVB+5*
- BX6 X1
- SA6 A6+B1
- SA1 RCVB+1
- RJ ZFN ZERO FILL TERMINAL NAME
- SA6 A1
- NWC0.1 SA1 RCVB+4
- RJ ZFN ZERO FILL FAMILY NAME
- SA6 A1
- SA1 A1+B1
- RJ ZFN ZERO FILL USER NAME
- SA6 A1
- * INCREMENT ACTIVE USER COUNT.
- SA1 VANL GET ACTIVE USER COUNT
- SX6 X1+B1 INCREMENT ACTIVE USER COUNT
- SA6 A1
- SA2 LINB GET MAXIMUM USER COUNT
- IX2 X2-X6
- PL X2,NWC1 IF NOT NEW MAXIMUM
- SA6 A2+ STORE NEW MAXIMUM
- NWC1 RJ UCP UPDATE CONVERTED POINTER
- * SAVE VALIDATION PARAMETERS IN POT.
- SB3 B0 INDICATE NO POT AVAILABLE
- BX6 X6-X6 CLEAR VCHT
- SB4 VUNA-VFNA+1 SET BLOCK LENGTH
- SA6 A0+VCHT
- SX6 RCVB+4 SET BLOCK FWA
- SB5 B0+ USE FIRST WORD OF POT
- RJ CTP COPY INPUT BLOCK TO POT
- SX7 B3 SET LOGIN POT POINTER
- LX7 48
- SA7 A0+VDPT
- SA1 RCVB+2 SET LINE ACCESS LIMIT IN POT
- MX6 -4
- LX1 -12
- BX6 -X6*X1
- SA6 B4+VLAL
- ZR X0,NWC1.1 IF NO VALIDATION, SKIP PASSWORD
- SA1 RCVB+13D PUT PASSWORD INTO PARAMETER POT
- MX6 42
- BX6 X1*X6
- EQ NWC1.2 CLEAR
- NWC1.1 SA1 RCVB+13D PUT ZEROES IN PASSWORD FIELD
- MX6 42
- BX6 -X6*X1
- NWC1.2 SA6 B4+VPWA WRITE INTO PARAMETER POT
- SA1 RCVB+1 GET TERMINAL NAME
- SA2 B4+VTRY GET LRC
- MX6 42
- BX1 X6*X1
- BX2 -X6*X2
- BX6 X2+X1
- SA6 A2 SET TERMINAL NAME AND LRC IN POT
- * SET TERMINAL CHARACTERISTICS IN MESSAGE STATUS TABLE.
- SA1 RCVB READ FIRST WORD OF MESSAGE
- MX5 -8
- BX7 X7-X7
- AX1 8 SHIFT DEVICE TYPE
- BX6 -X5*X1 SET DEVICE TYPE
- LX6 36
- AX1 21-8 MASK BLOCK LIMIT (ABL)
- MX5 -3
- BX1 -X5*X1
- LX1 30
- BX6 X6+X1 MERGE
- SA1 RCVB+2 READ THIRD WORD OF MESSAGE
- MX5 -11 GET POT STRING LENGTH
- SX7 60
- AX1 1
- BX1 -X5*X1
- IX1 X1/X7 CALCULATE NUMBER OF POTS
- SX1 X1+B1
- SX7 VXPL
- IX5 X1-X7
- MX2 -5
- PL X5,NWC2 IF GREATER THAN MAXIMUM
- SX7 VNPL
- IX5 X1-X7
- NG X5,NWC2 IF LESS THAN MINIMUM
- SX7 X1
- NWC2 BX7 -X2*X7 SET NUMBER OF POTS
- LX7 18
- SA1 RCVB+5 READ USER NAME
- BX6 X6+X7
- SA2 RCVB+2 READ THIRD WORD OF MESSAGE
- LX2 59-16 GET NETWORK TYPE
- PL X2,NWC2.1 IF NAM/CCP CONNECTION
- SX2 B1
- LX2 58-0
- BX6 X6+X2 STORE NETWORK TYPE
- NWC2.1 TA6 B2,VMST STORE VMST
- * INITIALIZE TERMINAL TABLE.
- MX6 42
- BX7 X6*X1 MASK OUT THE USER INDEX
- SA7 A0+VUIT SET *VUIT*
- SA1 RCVB+1 GET TERMINAL NAME
- MX2 42
- BX7 X2*X1
- TA7 B2,VTNP ENTER NEW TERMINAL NAME
- NZ X0,NWC3 IF VALIDATE FLAG IS SET, MAKE A REENTRY
- EQ CRR1 SEND SUPERVISORY MESSAGE
- NWC3 SX5 ITA4$ SET *1TA* REQUEST
- EQ PCS1 MAKE ENTRY
- PCD SPACE 4,10
- ** PCD - DRIVER *PCS* PROCESSING EXIT.
- *
- * USED AS *PCS* EXIT IF DRIVER REENTRY IS REQUIRED.
- *
- * ENTRY (B7) = REENTRY ADDRESS IF NONZERO.
- * (B3) = REENTRY POT POINTER.
- * (X7) = 12 BIT REENTRY PARAMETER.
- *
- * CALLS SRE.
- PCD BSS 0 ENTRY
- ZR B7,PCSX IF NO REENTRY REQUIRED
- RJ SRE SET REENTRY
- EQ PCSX EXIT
- RDY SPACE 4,10
- ** RDY - ISSUE *READY* MESSAGE.
- *
- * ISSUES *READY* MESSAGE IF NOT IN BATCH SUBSYSTEM,
- * ISSUES SLASH IF IN BATCH SUBSYSTEM.
- *
- * ENTRY (VSTT) BYTE 3 = 6/, 6/SUBSYSTEM.
- *
- * EXIT MESSAGE ISSUED.
- *
- * CALLS ACD, PCD.
- RDY BSS 0 ENTRY
- SA1 A0+VSTT READ VSTT
- SX6 DMRDY ASSUME *READY* MESSAGE
- SB4 DMRDYL
- MX7 -3
- LX1 -12
- BX1 -X7*X1 EXTRACT CURRENT SUBSYSTEM
- SX1 X1-BATS CHECK SUBSYSTEM
- NZ X1,RDY1 IF NOT BATCH SUBSYSTEM
- SX6 DMSL SET *SLASH* MESSAGE
- SB4 DMSLL
- RDY1 RJ ACD ASSIGN MESSAGE
- NZ X6,PCSX IF MESSAGE ISSUED
- SB7 RDY SET REENTRY
- BX7 X7-X7
- EQ PCD REENTER
- ROI SPACE 4,10
- ** ROI - RESUME OUTPUT INTERRUPT RESPONSE.
- *
- * ISSUES *INTRES* ASYNCHRONOUS SUPERVISORY MESSAGE IN
- * RESPONSE TO A USER INTERRUPT AND ISSUES AN *ROMARK*
- * SYNCHRONOUS SUPERVISORY MESSAGE TO RESUME OUTPUT TO
- * THE TERMINAL FOLLOWING A USER BREAK ONE OR TWO. IF
- * THE USER IS IN *TEXT* MODE AND BREAK IS IN PROGRESS,
- * *ETX* WILL BE CALLED TO EXIT FROM *TEXT* MODE. IF THE
- * TERMINAL LOGOUT FLAG IS SET, IT IS ASSUMED THAT HANG
- * UP PROCESSING HAS BEEN INTERRUPTED AND MUST BE RESUMED.
- *
- * ENTRY (B3) = ZERO.
- *
- * EXIT (VMST) BREAK-IN-PROGRESS BIT CLEARED.
- * *ETX* DRIVER REQUEST SENT, IF IN TEXT MODE.
- * TO *CNB* IF LOGOUT FLAG IS SET.
- *
- * CALLS ASV, ETX, SAB, SCS.
- ROI BSS 0 ENTRY
- SX7 INTRES ISSUE *INTRES* SUPERVISORY MESSAGE
- SB4 B1 TEXT LENGTH = 1
- BX6 X6-X6 INDICATE DEFAULT HEADER
- RJ ASV ASSIGN ASYNCHRONOUS MESSAGE
- SB3 B0
- NZ X6,ROI1 IF MESSAGE ASSIGNED
- SB7 ROI SET REENTRY
- EQ PCD REENTER
- ROI1 SA2 NBSY CHECK IF NETWORK BUSY
- NZ X2,ROI2 IF NETWORK BUSY
- RJ CBL CHECK DOWNLINE BLOCK LIMIT
- NZ X6,ROI2 IF AT BLOCK LIMIT
- SB2 -B2 SEND RESUME OUTPUT SUPERVISORY MESSAGE
- SX6 HDRS3 SET UP ASYNCHRONOUS HEADER
- SX7 ROMARK
- RJ SCS ASSIGN SYNCHRONOUS MESSAGE
- SB3 B0
- EQ ROI3 CONTINUE
- ROI2 SB7 ROI1 SET REENTRY ADDRESS
- EQ PCD REENTER
- * HANG UP PHONE IF LOGOUT INTERRUPTED.
- ROI3 RJ IBC INCREMENT DOWNLINE BLOCK COUNT
- TA1 B2,VMST READ VMST ENTRY
- SA2 A0+VDCT READ VDCT
- SA4 A0+VSTT READ VSTT
- LX1 59-57
- LX2 59-50
- MX6 -59
- LX4 59-48 CHECK LOGOUT FLAG
- BX3 X1*X2 CHECK BREAK AND TEXT MODE BITS
- BX6 -X6*X1 CLEAR BREAK IN PROGRESS BIT
- LX6 57-59
- SB3 B0
- SA6 A1+ REWRITE VMST ENTRY
- NG X4,ROI5 IF LOGOUT FLAG SET
- PL X3,ROI4 IF NOT BOTH BREAK AND TEXT MODE
- * EXIT FROM *TEXT* MODE.
- RJ ETX EXIT *TEXT* MODE
- EQ PCSX EXIT
- ROI4 RJ SAB SET TERMINAL ACTIVE
- EQ PCSX EXIT
- * WAIT FOR THE ACKNOWLEDGMENT OF THE *BI/MARK*
- * MESSAGE BEFORE CONTINUING WITH LOGOUT.
- ROI5 RJ CBL CHECK BLOCK LIMIT
- SB7 ROI5 SET REENTRY ADDRESS
- NZ X3,PCD IF BLOCKS OUTSTANDING
- EQ CNB CONTINUE WITH LOGOUT
- SCP SPACE 4,20
- ** SCF - PROCESS SYSTEM CONTROL POINT FAILURE.
- *
- * SETS UP DAYFILE MESSAGE AND INITIATES IMMEDIATE SHUT-
- * DOWN. IT IS ASSUMED THAT, UPON ENTRY, THE CONTENTS
- * OF REGISTER B1 HAVE BEEN DESTROYED BY AN *AIP* CALL.
- *
- * EXIT TO *SIS*.
- * (B1) = 1.
- * (X6) = ADDRESS OF DAYFILE MESSAGE.
- SCF BSS 0 ENTRY
- SB1 1 RESTORE CONSTANT B1=1
- SX6 =C* SYSTEM CONTROL POINT FAILURE.*
- EQ SIS SET IMMEDIATE SHUTDOWN
- SDU SPACE 4,10
- ** SDU - SUSPEND DRIVER FOR USER BREAK.
- *
- * SETS BREAK-IN-PROGRESS BIT IN *VMST* AND THEN JUMPS TO
- * USER BREAK PROCESSING. X7 IS SET TO ZERO, SIGNIFYING AN
- * EXECUTIVE INITIATED USER BREAK.
- *
- * EXIT TO ROUTINE *BRK*.
- * (X7) = 0.
- SDU BSS 0 ENTRY
- TA1 B2,VMST SET BREAK-IN-PROGRESS
- SX6 B1
- LX6 57-0
- BX6 X1+X6
- SA6 A1
- SX7 B0+
- SB7 BRK8
- EQ PCD REENTER IN USER BREAK PROCESSING.
- SCR SPACE 4,10
- ** SCR - SET CONNECTION RESET BIT.
- *
- * SET CONNECTION RESET RECEIVED BIT IN *VMST* WHEN AN UPLINE
- * FC/RST SUPERVISORY MESSAGE IS RECEIVED IN RESPONSE TO A
- * DOWNLINE FC/BRK SUPERVISORY MESSAGE.
- *
- * EXIT (VMST) = CONNECTION RESET RECEIVED BIT SET
- *
- * USES A - 1, 6.
- * X - 1, 6.
- SCR BSS 0 ENTRY
- TA1 B2,VMST READ *VMST*
- MX6 1 SET CONNECTION RESET RECEIVED BIT
- LX6 47-59
- BX6 X1+X6
- SA6 A1 REWRITE *VMST*
- EQ PCSX EXIT
- SIS SPACE 4,30
- ** SIS - SET IMMEDIATE SHUTDOWN.
- *
- * PERFORMS THE FOLLOWING FUNCTIONS TO INITIATE AN
- * IMMEDIATE SHUTDOWN-
- *
- * (1) ISSUES REASON FOR SHUTDOWN DAYFILE MESSAGE.
- * (2) SETS IMMEDIATE SHUTDOWN STATUS IF NOT ALREADY SET.
- * (3) EXITS FROM NETWORK DRIVER. SHUTDOWN WILL
- * BE PROCESSED ON THE NEXT DRIVER CYCLE.
- *
- * ENTRY (X6) = DAYFILE MESSAGE ADDRESS.
- * (SHDF) = CURRENT SHUTDOWN STATUS.
- *
- * EXIT TO *NDRX*.
- * (SHDF) = SET FOR IMMEDIATE SHUTDOWN.
- *
- * USES X - 1, 6, 7.
- * A - 1, 6, 7.
- *
- * CALLS IDM.
- SIS BSS 0 ENTRY
- RJ IDM ISSUE DAYFILE MESSAGE
- SA1 SHDF GET CURRENT SHUTDOWN FLAG
- NG X1,NDRX IF IMMEDIATE SHUTDOWN IN PROGRESS
- MX6 1
- SA6 A1 SET IMMEDIATE SHUTDOWN
- EQ NDRX EXIT FROM NETWORK DRIVER
- TITLE NETWORK INTERFACE ROUTINES.
- SPACE 4,10
- ** THE NETWORK INTERFACE ROUTINES CONSIST OF ALL ROUTINES
- * WHICH EXECUTE NETWORK CALLS. ANY NETWORK CALL MACRO
- * USED BY A NETWORK INTERFACE ROUTINE REQUIRES THE COR-
- * RESPONDING AIP LINKAGE IN ORDER TO LINK TO ITS LOADED
- * RELOCATABLE AIP SUBROUTINE ENTRY POINT.
- CKP SPACE 4,40
- ** CKP - CHECK NETWORK PARALLEL MODE STATUS.
- *
- * CHECKS NETWORK PARALLEL MODE STATUS AND POST PRO-
- * CESSES COMPLETED INPUT OR OUTPUT REQUESTS. IN THE
- * CASE OF AN INPUT REQUEST, *CKP* RETURNS THE MESSAGE
- * HEADER AND BLOCK TYPE; IN THE CASE OF AN OUTPUT RE-
- * QUEST, *CKP* CLEARS THE OUTPUT STATUS POINTERS AND
- * DROPS ANY OUTPUT POTS HELD.
- *
- * IF NAM IS NO LONGER PRESENT, *CKP* WILL CALL *SCF*
- * TO SET IMMEDIATE SHUTDOWN AND EXIT FROM THE NETWORK
- * DRIVER.
- *
- * ENTRY (IBSY) = INPUT REQUEST HEADER ADDRESS.
- * (NGLN) = .GE. 4 IF INPUT REQUESTED FOR SPECIFIC
- * TERMINAL.
- * (OBSY) = NONZERO IF OUTPUT REQUEST.
- * (OTPP) = OUTPUT POT POINTER IF NONZERO.
- * (NCAS) = (A0) TO BE RESTORED.
- * (NCBS) = (B2) TO BE RESTORED.
- * (SSCR) = NEGATIVE IF SCP FAILURE.
- *
- * EXIT (NBSY) = ZERO IF NETWORK CALL COMPLETE
- * (PCRX) = ZERO IF NULL INPUT BLOCK RECEIVED
- * NOT IN CUNJUNCTION WITH A SPECIFIC
- * TERMINAL.
- * (SUPA) = SET IF SUPERVISORY MESSAGE AVAILABLE.
- * (X6) = ZERO IF CALL COMPLETE.
- * (A0) = RESTORED.
- * (B1) = 1.
- * (B2) = RESTORED.
- *
- * IF OUTPUT REQUEST COMPLETE:
- * (OBSY) = 0.
- * (OTPP) = 0, POTS DROPPED.
- *
- * IF INPUT REQUEST COMPLETE:
- * (X1) = MESSAGE HEADER.
- * (X2) = MESSAGE BLOCK TYPE, RIGHT JUSTIFIED.
- * = 0 IF NULL BLOCK.
- * (IBSY) = 0 IF NULL BLOCK.
- *
- * TO SCF IF NAM FAILURE:
- * (SHDF) = COMPLETE SHUTDOWN.
- *
- * CALLS DPT, SCF.
- *
- * MACROS NETCHEK.
- CKP SUBR ENTRY/EXIT
- SA1 VSHD CHECK SCP STATUS
- NG X1,SCF IF SCP FAILURE
- SA2 NSUP
- NG X2,CKP1 IF CHECK UNNECESSARY
- NETCHEK CHECK NETWORK STATUS
- CKP1 SA1 NSUP READ STATUS RESPONSE WORD
- SA3 NCAS RESTORE (A0)
- SA4 NCBS RESTORE (B2)
- SB1 1 RESET CONSTANT B1=1
- SA0 X3+
- SB2 X4+
- BX2 X1
- PL X2,CKP4 IF OPERATION NOT COMPLETE
- LX2 59-57
- PL X2,SCF IF NAM NO LONGER PRESENT
- SX7 B1
- AX1 55-0 SHIFT SUPERVISORY MESSAGE BIT
- BX7 X7*X1 MASK SUPERVISORY MESSAGE BIT
- SA1 OBSY GET OUTPUT POINTER
- BX6 X6-X6
- SA7 SUPA SET SUPERVISORY MESSAGE AVAILABLE
- SA6 NBSY CLEAR BUSY STATUS
- * POSTPROCESS OUTPUT OPERATION.
- ZR X1,CKP2 IF NOT OUTPUT OPERATION
- SA2 OTPP READ POT POINTER
- SA6 A1 CLEAR OUTPUT BUSY STATUS
- ZR X2,CKPX IF NO OUTPUT POTS, RETURN
- SB3 X2 DROP OUTPUT POT CHAIN
- SB4 B0
- RJ DPT
- SX6 B0+ CLEAR OUTPUT POT POINTER
- SA6 OTPP
- EQ CKPX RETURN
- * POSTPROCESS INPUT OPERATION.
- CKP2 SA3 IBSY GET HEADER ADDRESS
- ZR X3,CKPX IF NOT INPUT OPERATION, RETURN
- SA2 X3+ READ HEADER
- AX2 54 SHIFT BLOCK TYPE
- NZ X2,CKPX IF NOT NULL BLOCK
- SA1 NGLN GET REQUEST LIST/ACN NUMBER
- SA6 A3 CLEAR INPUT STATUS
- AX1 2
- NZ X1,CKPX IF FOR SPECIFIC ACN
- SA6 PCRX CLEAR PREVIOUS CYCLE FORCED EXIT
- EQ CKPX RETURN
- * CHECK INCOMPLETE STATUS.
- CKP4 LX1 59-57 CHECK FOR NAM NO LONGER PRESENT
- SX6 =C* NETWORK CONNECTION LOST.*
- PL X1,SIS IF NAM NO LONGER PRESENT
- SX6 B1+
- SA6 NBSY SET BUSY STATUS
- EQ CKPX RETURN
- GLM SPACE 4,30
- ** GLM - GET DATA LIST MESSAGE.
- *
- * ISSUES *NETGTLQ* CALL TO INPUT DATA FROM NETWORK
- * UPON SPECIFIED APPLICATION LIST.
- *
- * ENTRY (X2) = APPLICATION LIST NUMBER (ALN).
- *
- * EXIT (IBSY) = INPUT REQUEST HEADER ADDRESS.
- * (IBSY) = ZERO IF NULL BLOCK RECEIVED.
- * (NGLN) = APPLICATION LIST NUMBER (ALN).
- * (RCVH) = MESSAGE HEADER.
- * (RCVB) = MESSAGE BUFFER.
- * (X6) = NONZERO IF NAM BUSY.
- * (X1) = MESSAGE HEADER.
- * (X2) = BLOCK TYPE, RIGHT JUSTIFIED.
- * = 0 IF NULL BLOCK.
- *
- * USES (NCPA) = APPLICATION LIST NUMBER.
- *
- * CALLS CKP, SCF.
- *
- * MACROS NETGTLQ.
- GLM SUBR ENTRY/EXIT
- SX6 RCVH SET INPUT BUSY
- SX7 X2+ SET APPLICATIONS LIST NUMBER
- SA6 IBSY
- SA1 VSHD CHECK SCP STATUS
- SA7 NCPA
- NG X1,SCF IF SCP FAILURE
- SA7 NGLN
- NETGTLQ NCPA,RCVH,RCVB,GLMA,GTMA ISSUE NETWORK CALL
- RJ CKP CHECK PARALLEL STATUS
- ZR X6,GLMX IF CALL COMPLETE
- * INCREMENT NETGET BUSY COUNT.
- SA1 NGBC GET BUSY COUNT
- SX7 B1 INCREMENT COUNT
- IX7 X7+X1
- SA7 A1+
- EQ GLMX RETURN
- GLMA CON RCVL RECEIVE BUFFER LENGTH
- GTM SPACE 4,20
- ** GTM - GET MESSAGE.
- *
- * REQUESTS MESSAGE ON SPECIFIED ACN.
- *
- * ENTRY (B2) = TERMINAL NUMBER (ACN).
- *
- * EXIT (IBSY) = INPUT REQUEST HEADER ADDRESS.
- * (NBSY) = SET IF NAM BUSY.
- * (NGLN) = TERMINAL NUMBER (ACN).
- * (RCVH) = MESSAGE HEADER.
- * (RCVB) = MESSAGE BUFFER.
- * (X1) = MESSAGE HEADER.
- * (X2) = BLOCK TYPE, RIGHT JUSTIFIED.
- * = 0 IF NULL BLOCK.
- *
- * USES (RCVH) = RECEIVE HEADER.
- * (RCVB) = RECEIVE BUFFER.
- * (NCPA) = ACN (TERMINAL NUMBER).
- *
- * CALLS CKP, SCF.
- *
- * MACROS NETGETQ.
- GTM SUBR ENTRY/EXIT
- SX6 B2 SAVE (B2)
- SX7 A0 SAVE (A0)
- SA6 NCBS
- SA7 NCAS
- SA1 VSHD CHECK SCP STATUS
- SX7 RCVH SET INPUT BUSY
- SA6 NCPA SET ACN
- NG X1,SCF IF SYSTEM CONTROL POINT FAILURE
- SA7 IBSY
- SA6 NGLN
- NETGETQ NCPA,RCVH,RCVB,GLMA,GTMA ISSUE NETWORK CALL
- RJ CKP CHECK PARALLEL STATUS
- ZR X6,GTMX IF CALL COMPLETE, RETURN
- * INCREMENT NETGET BUSY COUNT.
- SA1 NGBC GET BUSY COUNT
- SX7 B1 INCREMENT COUNT
- IX7 X7+X1
- SA7 A1+
- EQ GTMX RETURN
- GTMA VFD 58/0,1/0,1/0 *NETGTLQ/NETGETQ* PROCESSING OPTIONS
- NOF SPACE 4,10
- ** NOF - DISCONNECT FROM NETWORK ACCESS SUBSYSTEM.
- *
- * ISSUE NETWORK *NETOFF* REQUEST.
- *
- * ENTRY (NTON) = ZERO IF NOT CONNECTED TO NETWORK.
- * (ATMC) = MESSAGE COUNT USED TO CONTROL
- * PROCESSING OF TRACE OUTPUT FILE.
- * = ZERO, IF TRACE IS NOT SELECTED.
- * = NEGATIVE, IF PROCESS TRACE FILE AT
- * IAF TERMINATION ONLY.
- *
- * MACROS NETOFF, NETREL.
- NOF SUBR ENTRY/EXIT
- SA2 NTON CHECK NETON STATUS
- ZR X2,NOFX IF NOT CONNECTED
- NETOFF ISSUE *NETOFF* CALL
- SA1 ATMC GET TRACE MESSAGE COUNT
- SB1 1 RESET CONSTANT B1=1
- ZR X1,NOFX IF TRACE IS NOT SELECTED
- NG X1,NOFX IF NO TRACE FILE END PROCESSING
- NETREL JPTO,MXLT,RWTF COMPLETE PROCESSING OF TRACE FILE
- SB1 1
- EQ NOFX RETURN
- NON SPACE 4,30
- ** NON - CONNECT TO NETWORK ACCESS SUBSYSTEM.
- *
- * SET PARALLEL MODE AND ISSUE *NETON* REQUEST.
- *
- * ENTRY (VNTP) = NETWORK TERMINAL POINTER.
- * (STIM) = REAL TIME CLOCK (SECONDS).
- * (NFRT) = REAL TIME (SECONDS) OF LAST NETON
- * ATTEMPT OR OF INITIAL LOAD.
- * (NONB) = NONZERO IF REQUEST ACTIVE.
- *
- * EXIT (NTON) = ON IF SUCCESSFUL *NETON*.
- * (NONB) = NONZERO IF REQUEST ACTIVE.
- * PARALLEL PROCESSING MODE SET.
- * (TMSI) = FIRST NETWORK TERMINAL NUMBER.
- * (HACN) = FIRST NETWORK TERMINAL NUMBER.
- * (IBSY) = 0.
- * (NBSY) = 0.
- * (SHDF) = 0.
- * (PCRX) = 0.
- * (SUPA) = SET IF SUPERVISORY MESSAGE AVAILABLE.
- *
- * USES (NCPA) = LOWER ACN LIMIT.
- * (NCPB) = UPPER ACN LIMIT.
- * (NCPC) = STATUS REPLY WORD.
- *
- * CALLS ABT, IAT, IDM.
- *
- * MACROS NETCHEK, NETON, NETSETP.
- NON SUBR ENTRY/EXIT
- * TEST FOR INCOMPLETED PREVIOUS NETON REQUEST AND CHECK
- * IF DELAY TIME HAS ELAPSED SINCE COMPLETED REQUEST.
- SA3 NONB TEST IF REQUEST STILL ACTIVE
- SA1 STIM GET CURRENT REAL-TIME CLOCK
- NZ X3,NON1 IF REQUEST STILL ACTIVE
- SA2 NFRT TIME OF LAST NETON ATTEMPT
- SX6 NODT DELAY TIME
- BX7 X1
- IX2 X1-X2 ELAPSED TIME
- IX2 X2-X6
- NG X2,NONX IF DELAY TIME NOT ELAPSED, RETURN
- SA7 A2 RESET TIME OF NETON
- * SET ACN LIMIT CALL PARAMETERS.
- TX6 0,VNTP SET LOWER ACN LIMIT
- TX7 0,VNTP,LWA SET UPPER ACN LIMIT
- SA6 NCPA SET NETON CALL PARAMETERS
- SA7 NCPB
- * REQUEST CONNECTION TO NETWORK.
- RJ IAT INITIALIZE AIP TRACE OUTPUT FILE
- NETSETP =0 SELECT PARALLEL MODE
- NETON =3HIAF,NSUP,NCPC,NCPA,NCPB
- SX7 1 FLAG REQUEST ACTIVE
- SA7 NONB
- * CHECK STATUS OF NETON REQUEST.
- NON1 NETCHEK CHECK PARALLEL STATUS
- SA1 NSUP READ RESPONSE
- SB1 1 RESET CONSTANT B1=1
- PL X1,NONX IF CALL NOT COMPLETED
- SX7 B0+ CLEAR REQUEST ACTIVE FLAG
- SA2 NCPC READ NETON STATUS REPLY
- SA7 NONB
- NZ X2,NON2 IF CONNECTION NOT MADE
- SX6 =C* NETWORK CONNECTED.*
- RJ IDM ISSUE DAYFILE MESSAGE
- NETFUNC =2,AIPB SELECT AIP BUFFERING OF INPUT
- SB1 1 RESET CONSTANT B1=1
- NETPUTS HDRS1,DCTRU,NCZP SEND *DC/SFTR* TO NAM
- SB1 1 RESET CONSTANT B1=1
- * INITIALIZE CONTROL FLAGS AND POINTERS.
- SX6 B1 SET NETON STATUS
- BX7 X7-X7
- SA6 NTON
- AX1 55-0 SET SUPERVISORY MESSAGE STATUS
- BX6 X6*X1
- SA6 SUPA
- SA7 IBSY CLEAR STATUS WORDS
- SA7 NBSY
- SA7 NONA
- SA7 OBSY
- SA7 OTPP
- SA7 PCRX
- TX6 B0,VNTP INITIALIZE MANAGER SCAN
- SA6 TMSI
- SA6 HACN
- EQ NONX RETURN
- * CHECK NETWORK NOT-CONNECTED RESPONSE.
- NON2 SB7 X2-1 CHECK REPLY
- NZ B7,NON4 IF NOT *UNAVAILABLE* STATUS
- SA1 NONA CHECK LAST MESSAGE ADDRESS
- SX6 =C* WAITING FOR NETWORK.*
- IX1 X1-X6
- ZR X1,NONX IF MESSAGE ISSUED, RETURN
- SA6 A1 SET MESSAGE ADDRESS
- RJ IDM ISSUE MESSAGE
- EQ NONX RETURN
- * PROCESS REJECT.
- NON4 SA1 NONA GET LAST MESSAGE ADDRESS
- SX6 =C* NETON REJECT.*
- IX1 X1-X6
- ZR X1,NONX IF MESSAGE ISSUED, RETURN
- SA6 A1 SET MESSAGE ADDRESS
- RJ IDM ISSUE DAYFILE MESSAGE
- EQ NONX EXIT
- NONA CON 0 MESSAGE-ISSUED ADDRESS
- NONB CON 0 REQUEST ACTIVE FLAG
- RTF SPACE 4,15
- ** RTF - RELEASE NETWORK TRACE FILE.
- *
- * ENTRY (ATMC) = MESSAGE COUNT USED TO CONTROL
- * PROCESSING OF TRACE OUTPUT FILE.
- * = ZERO, IF TRACE IS NOT SELECTED.
- * = NEGATIVE, IF PROCESS TRACE FILE AT
- * IAF TERMINATION ONLY.
- *
- * EXIT (X6) = NONZERO, IF NAM BUSY.
- *
- * USES X - 1, 2, 3, 4, 6.
- * A - 1, 2.
- *
- * CALLS CKP.
- *
- * MACROS NETREL.
- RTF SUBR ENTRY/EXIT
- SA1 ATMC CHECK TRACE THRESHOLD
- MX3 -30
- BX6 X6-X6
- ZR X1,RTFX IF TRACE IS NOT SELECTED
- NG X1,RTFX IF DO NOT PROCESS TRACE FILE
- SA2 NSUP GET MESSAGE COUNT
- BX2 -X3*X2
- IX4 X2-X1
- NG X4,RTFX IF NOT TIME TO PROCESS TRACE FILE
- NETREL JPTO,MXLT,RWTF PROCESS TRACE FILE
- RJ CKP CHECK NAM STATUS
- EQ RTFX RETURN
- SCS SPACE 4,30
- ** SCS - SEND CANNED SUPERVISORY MESSAGE.
- *
- * TRANSMITS IN-CORE MESSAGE TO THE NETWORK. THE MESSAGE
- * IS TRANSMITTED FROM CORE AS-IS AFTER THE ACN IS PLACED
- * IN THE MESSAGE. ALTHOUGH PRIMARILY INTENDED FOR SUPER-
- * VISORY MESSAGES, MAY BE USED FOR TRANSMISSION OF ANY
- * IN-CORE MESSAGE.
- *
- * ENTRY (A0) = TERMINAL TABLE ADDRESS.
- * (B2) = ACN TO BE PLACED IN MESSAGE:
- * = POSITIVE, THIS IS AN ASYNCHRONOUS
- * SUPERVISORY MESSAGE, SO THE ACN
- * IS PLACED IN THE FIRST WORD OF THE
- * MESSAGE TEXT, BITS 35-24.
- * = NEGATIVE, THIS IS A SYNCHRONOUS
- * SUPERVISORY MESSAGE, SO THE ACN
- * IS PLACED IN BITS 53-42 OF THE
- * MESSAGE HEADER.
- * (X6) = ADDRESS OF HEADER:
- * = ZERO, USE DEFAULT HEADER.
- * (X7) = ADDRESS OF TEXT.
- *
- * EXIT (X6) = NONZERO IF NAM BUSY.
- * (OBSY) = NONZERO IF NAM BUSY.
- *
- * USES (NCPA) = ADDRESS OF HEADER.
- * (NCPB) = ADDRESS OF TEXT.
- * (NCAS) = SAVE (A0).
- * (NCBS) = SAVE (B2).
- *
- * CALLS CKP, SCF.
- *
- * MACROS NETPUTS.
- SCS SUBR ENTRY/EXIT
- NZ X6,SCS1 IF HEADER PROVIDED
- SX6 HDRS1 USE DEFAULT HEADER
- SCS1 SA6 NCPA STORE HEADER ADDRESS
- SA7 NCPB STORE TEXT ADDRESS
- SB6 24 SET TEXT ACN SHIFT COUNT
- PL B2,SCS2 IF ACN IN TEXT WORD 1
- SB2 -B2
- SX7 X6 SET ADDRESS FOR ACN IN HEADER
- SB6 42 SET HEADER ACN SHIFT COUNT
- SCS2 SA1 X7+ READ WORD FOR ACN
- MX4 -12
- SX6 B2
- LX4 X4,B6 SHIFT MASK
- LX6 X6,B6 SHIFT ACN
- BX1 X4*X1 INSERT ACN
- BX6 X1+X6
- SA6 A1 REWRITE WORD WITH ACN
- * TRANSMIT MESSAGE TO NETWORK.
- SX6 B1+ SET OUTPUT BUSY - NO POT POINTER
- BX7 X7-X7
- SA6 OBSY
- SA7 OTPP
- SX6 A0+ SAVE (A0)
- SX7 B2+ SAVE (B2)
- SA6 NCAS
- SA1 VSHD CHECK SCP STATUS
- SA7 NCBS
- NG X1,SCF IF SCP FAILURE
- SX6 NCZP
- SA6 NCPC CLEAR PROCESSING OPTIONS
- NETPUTS (LIST=NCPA) SEND MESSAGE TO NAM
- RJ CKP CHECK STATUS
- ZR X6,SCSX IF NAM NOT BUSY, RETURN
- * INCREMENT NETPUT BUSY COUNT.
- SA1 NPBC GET COUNTER
- SX7 B1 INCREMENT COUNTER
- IX7 X7+X1
- SA7 A1+
- EQ SCSX RETURN
- SSM SPACE 4,30
- ** SSM - SEND SUPERVISORY MESSAGE.
- *
- * SEND MESSAGE CONSISTING OF SINGLE POT TO NETWORK.
- * ALTHOUGH PRIMARILY INTENDED FOR SUPERVISORY MES-
- * SAGES, WHICH NEVER EXCEED ONE POT IN LENGTH, MAY
- * BE USED FOR TRANSMISSION OF ANY SINGLE POT MESSAGE.
- *
- * ENTRY (X1) = MESSAGE POT POINTER.
- *
- * EXIT POT DROPPED IF NAM COMPLETE.
- * (NBSY) = SET IF NAM BUSY.
- * (OTPP) = POT POINTER IF NAM BUSY.
- * (OBSY) = SET IF NAM BUSY.
- * (X6) = (NBSY).
- *
- * USES (NCPA) = HEADER ADDRESS.
- * (NCPB) = TEXT ADDRESS.
- * (NCAS) = SAVE (A0).
- * (NCBS) = SAVE (B2).
- *
- * CALLS CKP, SCF.
- *
- * MACROS NETPUTS.
- SSM SUBR ENTRY/EXIT
- BX7 X1 SET BUSY POINTERS
- SA7 OBSY
- LX1 3
- SA7 OTPP
- TX7 X1,VBMP SET HEADER ADDRESS
- SA7 NCPA
- SX7 X7+B1 SET TEXT ADDRESS
- SA7 A7+B1
- SX6 A0 SAVE (A0)
- SX7 B2 SAVE (B2)
- SA6 NCAS
- SA1 VSHD CHECK SCP STATUS
- SA7 NCBS
- NG X1,SCF IF SCP FAILURE
- SX6 NCZP
- SA6 NCPC CLEAR PROCESSING OPTIONS
- NETPUTS (LIST=NCPA) SEND MESSAGE TO NAM
- RJ CKP GET STATUS
- ZR X6,SSMX IF NAM NOT BUSY
- * INCREMENT NETPUT BUSY COUNT.
- SA1 NPBC GET COUNTER
- SX7 B1 INCREMENT COUNT
- IX7 X7+X1
- SA7 A1+
- EQ SSMX RETURN
- TITLE NETWORK AIP LINKAGES.
- ** NETWORK AIP LINKAGES.
- *
- * THE NETWORK AIP CALL LINKAGES LINK NETWORK AIP
- * CALLS TO THE ACTUAL, LOADED ENTRY POINTS OF THE
- * RELOCATABLE AIP SUBROUTINES. EACH LINKAGE IS REF-
- * ERENCED BY THE NAME OF THE AIP ENTRY POINT TO WHICH
- * IT LINKS. A CALL TO A LINKAGE WILL RESET THE AD-
- * DRESS FIELD OF THE CALLING *RJ* INSTRUCTION TO THE
- * ENTRY POINT OF THE CORRESPONDING AIP SUBROUTINE AND
- * WILL RE-EXECUTE THE *RJ* TO THE NEW ADDRESS. THE
- * AIP RELOCATABLE SUBROUTINE ENTRY POINT ADDRESSES ARE
- * PRESET DURING INITIALIZATION BY THE INITIALIZER OVER-
- * LAY ROUTINE *LNA* AND THE ENTRY POINTS ARE LINKED
- * USING THE *TLCK* OR *TLKT* TABLE AND THE
- * *LDREQ PASSLOC* ENTRIES.
- *
- * THE *EXT* PSEUDO-OP, USED WITHIN MOST NETWORK CALL
- * MACROS, MUST BE DISABLED IN ORDER TO PREVENT ASSEMBLY
- * ERRORS.
- *
- * THE FOLLOWING DOCUMENTATION IS COMMON TO ALL NETWORK AIP
- * LINKAGES:
- *
- * ENTRY:
- *
- * ADR RJ NAM
- * .
- * .
- * .
- * NAM PS 0 ENTRY
- * SA4 NAM READ ENTRY POINT
- * SX5 AIP SET AIP ENTRY POINT ADDRESS
- * EQ XRJ TRANSFER RETURN JUMP
- *
- * AIP = AIP ENTRY POINT ADDRESS. SET BY INI-
- * TIALIZATION ROUTINE *LNA*.
- * ADR = ADDRESS OF *RJ* INSTRUCTION (MUST BE UPPER).
- * NAM = NAME OF AIP ENTRY POINT (I.E., LINKAGE).
- *
- * EXIT *RJ* ADDRESS FIELD MODIFIED.
- * *RJ* RE-EXECUTED.
- *
- * USES A - 4, 5.
- * X - 4, 5.
- *
- * CALLS XRJ.
- ** GENERATE NETWORK AIP CALL LINKAGES USING THE *NETLINK*
- * MACRO:
- NETLINK NETCHEK
- NETLINK NETFUNC
- NETLINK NETGETQ
- NETLINK NETGTLQ
- NETLINK NETOFF
- NETLINK NETON
- NETLINK NETPUTS
- NETLINK NETREL
- NETLINK NETSETP
- TITLE GENERAL SUBROUTINES.
- GENERAL SPACE 4,10
- ** GENERAL SUBROUTINES.
- *
- * IF THE REGISTER USAGE IS NOT SPECIFIED IN THE HEADER
- * INFORMATION, IT SHOULD BE ASSUMED THAT THE SUBROUTINE
- * USES ALL REGISTERS EXCEPT THOSE SPECIFIED BELOW:
- *
- * A - 0.
- * X - 0.
- * B - 1, 2.
- ACD SPACE 4,20
- ** ACD - ASSIGN CANNED DATA MESSAGE.
- *
- * COPY PREPARED IN-CORE MESSAGE TO POT(S) AND ASSIGN
- * TO TERMINAL TABLE.
- *
- * ENTRY (B2) = TERMINAL NUMBER.
- * (B3) = POT POINTER IF POT AVAILABLE.
- * = 0 IF ACD TO GET POTS FOR MESSAGE.
- * (B4) = MESSAGE LENGTH, INCLUDING HEADER, IN CM WORDS.
- * (X6) = FWA OF MESSAGE.
- *
- * EXIT (X6) = NONZERO IF MESSAGE ASSIGNED.
- * = ZERO IF MESSAGE COULD NOT BE ASSIGNED. CALLER
- * MUST TRY AGAIN LATER.
- *
- * CALLS ANM, CFL, CTP.
- ACD SUBR ENTRY/EXIT
- * GET REQUIRED POTS FOR MESSAGE.
- SX5 X6+ SAVE (X6)
- NZ B3,ACD2 IF POTS PROVIDED
- RJ CFL CHECK POT SUPPLY
- SX6 B0+
- NG X2,ACDX IF LOW POT SUPPLY, RETURN
- ACD2 SX6 X5 COPY MESSAGE TO POT(S)
- SB5 B1 SKIP FIRST WORD IN POT
- RJ CTP
- ZR X6,ACDX IF INSUFFICIENT POTS AVAILABLE
- LX6 24 SET POT COUNT
- SA6 B4
- SX7 B3+ SET MESSAGE POT POINTER
- RJ ANM ASSIGN MESSAGE
- SX6 B1 SET EXIT STATUS COMPLETE
- EQ ACDX RETURN
- ADB SPACE 4,30
- ** ADB - ASSEMBLE DISPLAY CODED BUFFER.
- *
- * ASSEMBLES DISPLAY CODED STRING BUFFER INTO POTS.
- * THE STRING BUFFER CONSISTS OF 6 BIT DISPLAY CODE
- * OR 12 BIT EXTENDED DISPLAY CODE CHARACTERS, RIGHT
- * JUSTIFIED, AND IS TERMINATED BY A NEGATIVE WORD.
- * A CHARACTER IS ASSEMBLED AS 12 BITS ONLY IF THE
- * UPPER 6 BITS ARE NONZERO; THE LOWER SIX BITS ARE
- * ALWAYS ASSEMBLED.
- *
- * ENTRY (VDPT) = CURRENT POSITION IN POT.
- * (TBUF) = FIRST CHARACTER TO ASSEMBLE.
- *
- * EXIT DATA ASSEMBLED INTO POT CHAIN.
- * (VDPT) = UPDATED.
- * (X0) AND (X5) UNCHANGED.
- *
- * USES A - 2, 3, 4, 6.
- * B - 3, 4, 5, 6, 7.
- * X - 1, 2, 3, 4, 6.
- *
- * CALLS ADP.
- ADB SUBR ENTRY/EXIT
- SA2 A0+VDPT EXTRACT STARTING POSITION
- LX2 24
- MX3 -12
- BX3 -X3*X2
- SB3 X3+ (B3) = LAST POT POINTER
- LX3 3
- TB4 X3,VBMP (B4) = FWA LAST POT
- SB7 B4+VCPC (B7) = POT LWA+1
- LX2 6
- MX3 -3
- BX3 -X3*X2
- SB6 X3 (B6) = WORD COUNT IN LAST POT
- LX2 6
- MX3 -6
- BX3 -X3*X2
- SB5 X3 (B5) = BIT COUNT IN LAST WORD
- SA4 TBUF GET FIRST CHARACTER
- BX6 X6-X6 CLEAR ASSEMBLY
- SB4 B4+B6 SET POT STORE ADDRESS
- SB6 60
- SB6 B6-B5
- ZR B6,ADB1 IF STARTING AT WORD BOUNDARY
- SA3 B4 GET PARTIAL WORD
- LX6 X3,B6 POSITION ASSEMBLY
- ADB1 SB6 6 (B6) = ASSEMBLY SHIFT BIAS
- SX3 77B (X3) = DISASSEMBLY MASK
- NG X4,ADB4 IF END OF BUFFER
- * SPLIT UP 12-BIT CHARACTER.
- ADB2 BX1 X3*X4 (X1) = LOWER SIX BITS
- AX2 X4,B6 (X2) = UPPER SIX BITS
- ZR X2,ADB3 IF NO UPPER SIX BITS
- * INSERT UPPER SIX BITS.
- LX6 6 SHIFT ASSEMBLY
- BX2 X2*X3 CLEAR FLAG BIT
- SB5 B5-B6 BIAS ASSEMBLY SHIFT
- BX6 X6+X2 MERGE CHARACER
- NZ B5,ADB3 IF NOT END OF ASSEMBLY WORD
- SA6 B4 STORE ASSEMBLY
- SB4 B4+B1 ADVANCE POT ADDRESS
- SX6 B0+ CLEAR ASSEMBLY
- SB5 60
- LT B4,B7,ADB3 IF NOT POT LIMIT
- RJ ADP ADVANCE POT
- SB6 6 RESET ASSEMBLY SHIFT BIAS
- SB7 B4+VCPC
- SX6 B0+ CLEAR ASSEMBLY
- SX3 77B
- * INSERT LOWER SIX BITS.
- ADB3 SA4 A4+B1 READ UP NEXT WORD
- LX6 6 SHIFT ASSEMBLY
- SB5 B5-B6 BIAS ASSEMBLY SHIFT
- BX6 X6+X1 MERGE CHARACTER
- NG X4,ADB4 IF END OF BUFFER
- NZ B5,ADB2 IF NOT END OF ASSEMBLY WORD
- SA6 B4+ STORE ASSEMBLY
- SB5 60
- BX6 X6-X6
- SB4 B4+B1
- LT B4,B7,ADB2 IF NOT END OF POT
- RJ ADP ADVANCE POT
- BX6 X6-X6 CLEAR ASSEMBLY
- SA4 A4 RESTORE NEXT CHARACTER
- SB7 B4+VCPC SET LWA+1 OF NEW POT
- EQ ADB1
- * STORE FINAL WORD OF ASSEMBLY.
- ADB4 LX6 X6,B5 STORE ASSEMBLY
- SA6 B4
- SA3 RCCW
- NZ X3,ADB6 IF NOT FINISHED WITH THIS BLOCK
- SA3 A0+VDPT
- LX3 59-13
- NG X3,ADB6 IF NOT MSG BLOCK
- SB4 B4+B1
- BX6 X6-X6
- LT B4,B7,ADB5 IF NOT END OF POT
- RJ ADP ADVANCE POT
- SB7 B4+VCPC
- SX6 B0+
- * SET TERMINATOR WORD IN POT.
- ADB5 SB6 B5-12
- SB5 B0
- PL B6,ADB7 IF TERMINATOR NOT NEEDED
- SA6 B4 STORE TERMINATOR
- ADB6 NZ B5,ADB7 IF ROOM IN WORD
- SB5 60 RESET TO WORD BOUNDARY
- SB4 B4+B1
- LT B4,B7,ADB7 IF NOT END OF POT
- RJ ADP ADVANCE POT
- SB7 B4+VCPC
- * REPACK VDPT.
- ADB7 SA2 A0+VDPT
- SA3 =77770000700077777777B
- BX6 X2*X3 PRESERVE FP, FW, FLAGS AND CC
- SX3 B3
- LX3 36
- BX6 X6+X3 MERGE NEW LAST POT
- SB6 B4-B7
- SX3 B6+VCPC
- LX3 30
- BX6 X6+X3 MERGE WORD COUNT
- SX3 B5
- LX3 24
- BX6 X6+X3 MERGE BIT COUNT
- SA6 A2 REWRITE VDPT
- EQ ADBX RETURN
- ADP SPACE 4,10
- ** ADP - ADVANCE POT.
- *
- * ENTRY (B3) = FULL POT POINTER.
- *
- * EXIT (B3) = NEW POT POINTER.
- * (B4) = NEW POT ADDRESS.
- * (B5), (X5), (X1) UNCHANGED.
- *
- * USES X - 5, 6.
- * A - 5, 6.
- * B - 3, 7.
- *
- * CALLS GPL, RPT.
- *
- * NOTE IF *RPT* IS CALLED AND NO POT IS AVAILABLE,
- * (B3) WILL BE RETURNED AS 7777B. THEREFORE,
- * THIS ROUTINE SHOULD NOT BE USED UNLESS THE
- * CALLER CAN GUARANTEE THAT A POT WILL BE AVAILABLE
- * IF *RPT* NEEDS TO BE CALLED. THIS CAN BE
- * DONE BY CALLING *CFL* BEFORE CALLING *ADP*.
- ADP SUBR ENTRY/EXIT
- ADP1 SB7 B3 SAVE ORIGINAL POT POINTER
- RJ GPL GET POT LINK
- NZ B3,ADPX IF NOT END OF CHAIN
- SX6 B5 SAVE EXIT REQUIREMENTS
- SA6 ADPA
- BX6 X5
- SA6 A6+B1
- BX6 X1
- SA6 A6+B1
- SX5 B7
- PX5 X5,B1 REQUEST ONE MORE POT
- RJ RPT REQUEST POT
- SB3 X1 SET NEW POT POINTER
- SA5 ADPA RESTORE EXIT REQUIREMENTS
- SB5 X5
- SA5 A5+B1
- SA1 A5+B1
- EQ ADP1 CHECK LINK
- ADPA BSS 3 EXIT REQUIREMENTS
- ANM SPACE 4,10
- ** ANM - ASSIGN MESSAGE TO NETWORK TERMINAL.
- *
- * ADDS A MESSAGE TO THE OUTPUT QUEUE IN VSTT. THE
- * FIRST WORD IN THE FIRST POT OF EACH POT CHAIN IS USED TO
- * LINK THE MESSAGE INTO THE QUEUE, USING THE FORMAT
- *
- *T 30/ 0,6/ NP,12/ LC,12/ NC.
- *
- * NP = NUMBER OF POTS IN THIS MESSAGE.
- * LC = POT POINTER OF LAST CHAIN OF DATA IN QUEUE.
- * NC = POT POINTER OF NEXT CHAIN OF DATA IN QUEUE.
- * THE LC FIELD IS ONLY PRESENT IN THE LINKAGE WORD OF
- * THE FIRST POT CHAIN IN THE QUEUE. SUBSEQUENT POT CHAINS USE
- * LC = 0. THE LAST POT CHAIN IN THE QUEUE WILL
- * ALWAYS HAVE NC = 0. IN THE CASE WHERE EXACTLY ONE MESSAGE IS
- * IN THE QUEUE, THE LC FIELD POINTS TO ITSELF AND
- * NC = 0. THE SECOND WORD IN THE FIRST POT IS EITHER A
- * MESSAGE HEADER OR A SET OF TRANSLATION FLAGS. IF THE TOP
- * 6 BITS OF THE WORD ARE NON-ZERO, THE WORD IS A MESSAGE
- * HEADER, WHICH MEANS THE MESSAGE STARTING IN WORD THREE HAS
- * ALREADY BEEN TRANSLATED TO ASCII8 FOR TRANSMISSION TO NAM.
- * IF THE TOP 6 BITS ARE ZERO, THEN THE WORD CONTAINS
- * TRANSLATION FLAGS IN THE FOLLOWING FORMAT:
- *
- *T 57/ 0,1/ UF,1/ WR,1/ CS.
- *
- * UF = 1 IF USER FORMAT EFFECTOR MODE IS SET.
- * WR = 1 IF THIS CHAIN OF OUTPUT MAY NOT BE COMBINED
- * WITH DATA IN SUBSEQUENT CHAINS.
- * CS = CHARACTER SET AT THE TIME THE OUTPUT WAS SENT TO
- * IAF (1=ASCII 6/12,0=NORMAL).
- *
- * ENTRY (X7) = MESSAGE POT POINTER.
- * (FW OF POT CHAIN) = POT COUNT IN BITS 29-24.
- *
- * CALLS DPT, SAB.
- ANM2 SA2 ANMA COUNT DISCARDED OUTPUT
- IX6 X2+X1
- SA6 A2
- MX6 24
- SA2 A0+VFST GET JSN
- LX6 -6
- LX2 -6
- BX2 X2*X6
- SA1 ANMB PUT JSN IN MESSAGE
- BX1 -X6*X1
- BX6 X1+X2
- SA6 A1
- MESSAGE ANMB,,R
- ANM3 SB3 X7 DROP THE POT CHAIN
- SB4 B0
- RJ DPT DROP POTS
- ANM SUBR ENTRY/EXIT
- SX1 X7 SET POT ADDRESS
- LX1 3
- TA4 X1,VBMP GET POT COUNT
- SA2 A0+VSTT
- BX6 X2
- LX6 59-58 CHECK USER BREAK IN PROGRESS
- TA1 B2,VMST CHECK IF ON LINE
- BX6 -X1+X6
- MX5 -12
- BX3 -X5*X2
- NG X6,ANM3 IF USER BREAK IN PROGRESS
- IX6 X2+X4 ADD IN POT COUNT
- NZ X3,ANM1 IF VSTT BUSY
- BX6 X6+X7
- LX7 12 SET LINKAGE WORD
- BX7 X7+X4
- SA7 A4+ REWRITE FIRST WORD IN POT CHAIN
- SA6 A2
- RJ SAB SET TERMINAL ACTIVITY BIT
- EQ ANMX RETURN
- * ADD CHAIN TO END OF QUEUE IN VSTT.
- ANM1 LX3 3
- MX1 6 CHECK FOR POT COUNT OVERFLOW
- LX1 30
- BX2 X1*X2 OLD POT COUNT
- IX2 X2+X4
- BX2 -X1*X2
- SX1 B1
- LX5 12
- NZ X2,ANM2 IF POT COUNT OVERFLOW
- TA1 X3,VBMP
- SA6 A2 REWRITE VSTT
- BX3 -X5*X1 SAVE PREVIOUS LAST CHAIN
- BX5 X5*X1
- LX7 12
- BX6 X5+X7 ADD NEW LAST CHAIN
- SA6 A1
- AX7 12
- LX3 -9
- TA1 X3,VBMP
- BX7 X1+X7
- SA7 A1
- EQ ANMX EXIT
- ANMA CON 0 DISCARDED OUTPUT COUNT
- ANMB DATA 10L **** LOST
- DATA 10L OUTPUT ME
- DATA 6LSSAGE.
- ASV SPACE 4,30
- ** ASV - ASSIGN SUPERVISORY MESSAGE.
- *
- * TRANSMITS SUPERVISORY MESSAGE. IF NAM IS BUSY, *ASV*
- * COPIES THE MESSAGE INTO A POT AND ASSIGNS IT TO
- * THE NULL SUPERVISORY QUEUE.
- *
- *T NSQP 30/LAST POT ,30/FIRST POT.
- *
- *
- * ENTRY (B2) = ACN TO BE PLACED IN THE FIRST WORD OF
- * THE MESSAGE TEXT.
- * (B4) = TEXT LENGTH; MAXIMUM 7 WORDS.
- * (X6) = ADDRESS OF HEADER:
- * = ZERO, USE DEFAULT HEADER.
- * (X7) = ADDRESS OF TEXT. 7 WORDS ASSUMED.
- *
- * EXIT (X6) = ZERO IF NO POTS AVAILABLE.
- *
- * CALLS CBL, CFL, IBC, RPT, SAB, SCS.
- ASV SUBR ENTRY/EXIT
- SA6 ASVA SAVE (X6)
- SA1 NBSY
- NZ X1,ASV1 IF NAM BUSY
- RJ SCS TRANSMIT MESSAGE
- SX6 B1 FLAG MESSAGE AS SENT
- EQ ASVX EXIT
- * NAM IS BUSY. SEE IF A POT IS AVAILABLE INTO WHICH
- * THE MESSAGE CAN BE STORED.
- ASV1 RJ CFL CHECK POT SUPPLY
- BX6 X6-X6
- NG X2,ASVX IF LOW POT SUPPLY
- SA7 ASVB SAVE (X7)
- SX7 B4 SAVE (B4)
- SA7 ASVC
- * GET POT FOR MESSAGE.
- SA5 NSQP GET NULL QUEUE POINTER
- AX5 30 SET POT TO LINK TO
- PX5 X5,B1 REQUEST ONE POT
- RJ RPT
- SB3 X1 NEW POT POINTER
- LX1 3
- TB4 X1,VBMP NEW POT ADDRESS
- * ASSIGN POT TO NULL SUPERIVISORY MESSAGE QUEUE.
- SA2 NSQP GET QUEUE POINTER
- MX6 -30
- BX2 -X6*X2 CLEAR LAST POT POINTER
- NZ X2,ASV2 IF NOT EMPTY QUEUE
- SX2 B3+
- ASV2 LX1 30-3 SET NEW LAST POT POINTER
- BX7 X1+X2
- SA7 A2+ REWRITE QUEUE POINTER
- * READ HEADER AND FIRST TEXT WORD OF MESSAGE.
- SA1 ASVA GET HEADER ADDRESS
- SA2 ASVB GET TEXT ADDRESS
- SA2 X2+ READ FIRST WORD OF TEXT
- NZ X1,ASV3 IF HEADER PROVIDED BY CALLER
- SX1 HDRS1 USE DEFAULT HEADER
- ASV3 SA1 X1 GET HEADER
- MX3 -12
- LX3 24 SET ACN MASK
- SX6 B2 SET ACN
- * INSERT ACN IN FIRST TEXT WORD, BITS 35-24.
- BX2 X3*X2 CLEAR ACN FIELD
- LX6 24 INSERT ACN
- BX7 X2+X6
- * COPY MESSAGE TO POT.
- BX6 X1 COPY FIRST TWO WORDS
- SA6 B4
- SA7 A6+B1
- SA5 ASVC GET WORD COUNT
- SX6 B1+ SET EXIT STATUS
- SB6 X5-1
- ASV4 ZR B6,ASVX IF COPY COMPLETE
- SA2 A2+B1
- SB6 B6-B1
- BX7 X2 STORE WORD
- SA7 A7+B1
- EQ ASV4 CONTINUE TRANSFER
- ASVA CON 0 SAVE (X6) HEADER ADDRESS
- ASVB CON 0 SAVE (X7) TEXT ADDRESS
- ASVC CON 0 SAVE (B4) TEXT LENGTH
- CBL SPACE 4,10
- ** CBL - CHECK BLOCK LIMIT.
- *
- * CHECKS TERMINAL DOWNSTREAM BLOCK COUNT TO SEE IF
- * TERMINAL IS CURRENTLY AT BLOCK LIMIT.
- *
- * EXIT (X6) = NONZERO IF AT TERMINAL BLOCK LIMIT.
- * (X3) = APPLICATION BLOCK COUNT. (DOWNSTREAM
- * BLOCKS NOT YET ACKNOWLEDGED).
- *
- * USES A - 3.
- * X - 3, 4, 6.
- CBL SUBR ENTRY/EXIT
- TA3 B2,VMST READ VMST ENTRY
- MX6 -3
- AX3 30 SHIFT ABL
- BX4 -X6*X3 SET ABL
- AX3 3 SHIFT ABC
- BX3 -X6*X3 SET ABC
- BX6 X6-X6 ASSUME NOT AT LIMIT
- IX4 X3-X4 ABC - ABL
- NG X4,CBLX IF NOT AT LIMIT
- SX6 B1 SET LIMIT EXIT STATUS
- EQ CBLX RETURN
- CCT SPACE 4,20
- ** CCT - CHECK CYCLE TIME.
- *
- * CHECKS TO SEE IF IT IS TIME TO CYCLE NETWORK.
- *
- * ENTRY (NSCT) = MINIMUM CYCLE TIME (MSECS).
- * (NFRT) = REAL TIME AT LAST CYCLE.
- * (RTIM) = CURRENT REAL TIME.
- *
- * EXIT (X6) = ZERO IF MINIMUM NOT ELAPSED.
- * (NFRT) = (RTIM) IF MINIMUM ELAPSED.
- *
- * USES A - 2, 3, 4, 6.
- * X - 2, 3, 4, 6.
- CCT SUBR ENTRY/EXIT
- SA2 RTIM CURRENT REAL TIME
- SA3 NFRT LAST FUNCTION REAL TIME
- SX4 NSCT SET MINIMUM NETWORK SCAN CYCLE TIME
- MX6 -36 MASK MILLISECONDS
- BX3 -X6*X3
- BX6 -X6*X2
- IX3 X6-X3 ELAPSED MILLISECONDS
- BX6 X6-X6
- IX4 X3-X4
- NG X3,CCT1 IF REAL TIME RESET
- NG X4,CCTX IF LESS THAN MINIMUM, RETURN
- CCT1 BX6 X2 SET FUNCTION TIME
- SA6 A3
- EQ CCTX RETURN
- CFX SPACE 4,20
- ** CFX - CHECK FOR FORCED EXIT.
- *
- * CHECKS MONITOR REQUEST AND OTHER DRIVERS CIRCULAR
- * REQUEST STACKS TO SEE THEY REQUIRE PROCESSING BY
- * MAIN EXECUTIVE. A STACK REQUIRES PROCESSING IF IT
- * IS HALF-FULL.
- *
- * EXIT (X6) = NONZERO IF FORCED EXIT REQUIRED.
- * (DSXC) = UPDATED IF DRIVER STACK EXIT.
- * (MSXC) = UPDATED IF MONITOR STACK EXIT.
- * (CCFC) = COMPLEMENT OF FUNCTION LIMIT (NFCL).
- *
- * USES X - 2, 3, 4, 6, 7.
- * A - 2, 3, 4, 6, 7.
- * B - 4, 5, 6.
- CFX SUBR ENTRY/EXIT
- * SET FUNCTION LIMIT COMPLEMENT. CHECK FOR FULL NETWORK STACK.
- SA3 NDSL
- SX6 -NFCL
- SA6 CCFC
- NZ X3,CFX4.1 IF NETWORK STACK IS FULL
- * CHECK MONITOR REQUEST STACK.
- SB5 VTRP SET STACK FWA
- SB6 VTRP+VTRL STACK LWA+1
- SX2 MSXC INDICATE EXIT COUNTER
- SX4 VTRL/2 STACK LENGTH/2
- CFX1 SA3 B5 READ STACK ENTRY
- SB5 B5+B1
- ZR X3,CFX2 IF NO REQUEST
- SX4 X4-1 COUNT ENTRY
- ZR X4,CFX5 IF STACK HALF FULL
- CFX2 LT B5,B6,CFX1 IF NOT DONE WITH STACK, LOOP
- * CHECK DRIVER REQUEST STACKS.
- SA3 NSPA GET NETWORK STACK POINTER ADDRESS
- SB5 VDRL-1 START OF DRIVER STACK POINTERS
- BX6 X6-X6 ASSUME NO EXIT FORCE
- SB6 X3 (B6) = NETWORK STACK POINTER ADDRESS
- CFX3 SB5 B5+B1 ADVANCE POINTER ADDRESS
- EQ B5,B6,CFX3 IF NETWORK POINTER ADDRESS, IGNORE
- SA3 B5 READ STACK POINTER
- NG X3,CFXX IF END OF STACK
- ZR X3,CFX3 IF NULL STACK, IGNORE
- AX3 24 SHIFT STACK POINTER
- SB4 X3+B1 (B4) = ADDRESS OF FIRST
- SA2 B4+1 READ IN
- SA3 A2+1 READ OUT
- SX2 X2+B1
- IX4 X3-X2 (X4) = OUT-IN-1
- PL X4,CFX4 IF IN .LE. OUT-1
- SA2 B4 READ FIRST
- SA3 A3+B1 READ LIMIT
- SX2 X2
- SX3 X3
- IX4 X4-X2
- IX4 X4+X3 (X4) = (OUT-FIRST)+(LIMIT-IN)-1
- CFX4 SX4 X4-VDSL/2 CHECK LENGTH
- PL X4,CFX3 IF LESS THAN HALF FULL
- CFX4.1 SX2 DSXC
- * UPDATE FORCED EXIT COUNT AND RETURN.
- CFX5 SA2 X2 READ EXIT COUNTER WORD
- SX6 B1 UPDATE EXIT COUNT
- IX7 X6+X2
- SA7 A2
- EQ CFXX RETURN
- SPACE 4,10
- ** COA - CHECK OUTPUT AVAILABLE.
- *
- * DETERMINES IF THERE IS ANY OUTPUT BEING OUTPUT TO
- * THE TERMINAL OR ANY DRIVER REQUESTS PENDING.
- *
- * ENTRY (A0) = TERMINAL TABLE ADDRESS.
- * (X1) = VDCT, LEFT SHIFTED NINE BITS.
- *
- * EXIT (X4) = 0 IF NO OUTPUT PRESENT.
- * (X4) .NE. 0 IF OUTPUT PRESENT.
- *
- * USES A - 1, 6.
- * X - 1, 4, 6.
- COA SUBR ENTRY/EXIT
- LX1 -9 REALIGN VDCT
- SX4 B1
- NG X1,COAX IF DRIVER REQUEST PENDING
- TA1 B2,VMST CHECK FOR OUTPUT FLAG
- LX4 52-0
- BX4 X4*X1
- ZR X4,COA1 IF NO OUTPUT ON *NAM*
- BX6 -X4*X1 CLEAR OUTPUT FLAG
- SA6 A1 REWRITE VMST
- EQ COAX RETURN
- COA1 SA1 A0+VSTT CHECK FOR OUTPUT POT
- MX4 -12
- BX4 -X4*X1
- EQ COAX RETURN
- DBC SPACE 4,10
- ** DBC - DECREMENT BLOCK COUNT.
- *
- * DECREMENT TERMINAL APPLICATION BLOCK COUNT.
- *
- * EXIT (X6) = NEGATIVE IF BLOCK COUNT ZERO ON ENTRY.
- *
- * USES A - 3, 6.
- * X - 3, 6.
- DBC SUBR ENTRY/EXIT
- TA3 B2,VMST READ VMST ENTRY
- MX6 -3 MASK BLOCK COUNT
- LX3 -33
- BX6 -X6*X3
- IX3 X3-X6 CLEAR BLOCK COUNT
- SX6 X6-1 DECREMENT BLOCK COUNT
- NG X6,DBCX IF ZERO ON ENTRY
- BX6 X6+X3 INSERT NEW BLOCK COUNT
- LX6 33
- SA6 A3 REWRITE VMST ENTRY
- BX6 X6-X6 (X6) STATUS = NO ERROR
- EQ DBCX RETURN
- DCI SPACE 4,15
- ** DCI - DISCARD INPUT IF NECESSARY.
- *
- * ENTRY (X1) = MESSAGE HEADER.
- * (X6) = 0, IF OVERFLOW ALREADY DETECTED.
- * = (VMST), IF TESTING FOR DISCARD.
- *
- * EXIT (X0) = NONZERO IF INPUT TO DISCARD.
- *
- * USES A - 1, 2, 3, 6.
- * B - 3, 4, 7.
- * X - ALL.
- *
- * CALLS DPT, ERQ, SRE.
- DCI SUBR ENTRY/EXIT
- SA2 A0+VUIT
- SA3 A0+VSTT
- MX7 -12
- LX3 59-56
- BX2 -X7*X2
- ZR X2,DCI4 IF NO EJT ORDINAL ASSIGNED, DISCARD DATA
- NG X3,DCI4 IF DETACH IN PROGRESS, DISCARD DATA
- ZR X6,DCI4 IF OVERFLOW ALREADY DETECTED
- LX1 59-13 CHECK CANCEL LINE FLAG
- BX5 X1
- SA1 A0+VDCT
- PL X5,DCI0 IF CANCEL BIT NOT SET
- LX1 59-49
- PL X1,DCI0 IF NOT AUTO MODE
- MX4 1
- LX1 59-53-59+49
- BX7 X4+X1 SET CANCEL AUTO LINE
- LX7 53-59
- SA7 A1
- LX7 59-49-59+53
- DCI0 SA1 A0+VDCT
- SA2 A0+VDPT
- LX2 59-12 CHECK DISCARD DATA BIT
- BX2 X5+X2
- NG X2,DCI4 IF EITHER SET
- SA2 A0+VSTT
- LX6 59-57 CHECK FOR BREAK IN PROGRESS
- LX1 59-50 CHECK TEXT MODE IN PROGRESS
- PL X6,DCI1 IF BREAK NOT IN PROGRESS
- PL X1,DCI4 IF NOT TEXT MODE, DISCARD INPUT
- DCI1 LX6 59-55-59+57 CHECK END-CONNECTION FLAG
- LX2 59-48 CHECK LOGOUT IN PROGRESS
- BX7 X6+X2
- NG X7,DCI4 IF ANY OF THE ABOVE SET, DISCARD
- * DISCARD *BGI* REQUEST.
- DCI2 LX1 50-59
- MX5 -12
- BX3 -X5*X1 MASK DRIVER REQUEST
- BX0 X0-X0 SET NORMAL RETURN STATUS
- PL X1,DCIX IF NO DRIVER REQUEST
- SX3 X3-/1TD/BGI
- NZ X3,DCI3 IF NOT *BGI* REQUEST
- MX6 13 CLEAR *BGI* REQUEST
- LX6 12
- BX6 -X6*X1
- SA6 A1 REWRITE VDCT
- EQ DCIX RETURN
- DCI3 SX3 X3-/1TD/IIP+/1TD/BGI
- ZR X3,DCIX IF AN *IIP* REQUEST
- * DISCARD INPUT.
- DCI4 SA1 RCVH READ MESSAGE HEADER
- SA2 A0+VDPT
- AX1 54
- SX4 B0
- SX0 X1-BTMS
- ZR X0,DCI5 IF MSG BLOCK
- SX4 10000B DISCARD DATA BIT
- DCI5 BX6 X4+X2
- SA6 A2 REWRITE *VDPT*
- RJ RIP RESET INPUT POINTERS IN *VDPT*
- DCI6 NZ X0,DCIX IF NOT MSG BLOCK
- RJ SOM SEND OVERFLOW MESSAGE
- SX0 B1 DISCARD INPUT FLAG
- EQ DCIX EXIT
- DLP SPACE 4,20
- ** DLP - DELINK POT.
- *
- * DELINKS POT FROM CHAIN. POT REMAINS RESERVED AND
- * LINK TO FOLLOWING POT IS CLEARED.
- *
- * ENTRY (X1) = POT POINTER.
- *
- * EXIT (X7) = POT POINTER TO WHICH ENTRY POT WAS
- * ORIGINALLY LINKED. ZERO IF ENTRY POT
- * WAS NOT LINKED.
- *
- * USES A - 3, 6.
- * X - 3, 4, 6.
- * B - 7.
- *
- * CALLS ABT.
- DLP SUBR ENTRY/EXIT
- SX4 X1 SET PLT RELATIVE ADDRESS
- ZR X4,DLP1 IF TRYING TO DELINK POT ZERO
- LX4 -2
- TA3 X4,VPLP READ PLT ENTRY
- MX6 2
- BX4 X6*X4 MASK BYTE ORDINAL
- LX4 4 BYTE * 4
- LX6 X4,B1 BYTE * 8
- IX4 X4+X6 BYTE * 12
- SB7 X4+12 SET LINK BYTE SHIFT COUNT
- LX3 X3,B7 SHIFT LINK BYTE
- MX6 -12
- BX7 -X6*X3 MASK LINK BYTE
- SB7 B7-60
- BX3 X6*X3 CLEAR LINK BYTE
- AX6 X3,B7 REWRITE PLT ENTRY
- SA6 A3
- EQ DLPX RETURN
- DLP1 SX6 3RDLP
- RJ ABT
- BX7 X7-X7
- EQ DLPX EXIT
- ECL SPACE 4,20
- ** ECL - ENTER COMMAND INPUT LINE.
- *
- * ENTERS DRIVER REQUEST QUEUE ENTRY TO RELEASE INPUT
- * LINE TO THE EXECUTIVE AS A COMMAND LINE.
- *
- * ENTRY (X1) = (VDPT).
- * (VDPT) = 12/FP, 12/LP, 3/FW, 3/WC, 6/, 12/FLAGS, 12/.
- * FP = FIRST POT OF LINE.
- * LP = LAST POT OF LINE.
- * FW = FIRST WORD OF FIRST POT.
- * WC = LAST POT WORD COUNT.
- * (A1) = ADDRESS OF VDPT.
- *
- * EXIT POTS RELEASED TO EXECUTIVE.
- * (VDPT) = POT POINTERS CLEARED.
- *
- * CALLS ERQ.
- ECL SUBR ENTRY/EXIT
- SX7 1S16 CLEAR INPUT-INITIATED BIT
- BX1 -X7*X1
- MX6 -30 CLEAR POT POINTERS
- BX6 -X6*X1
- MX2 -12
- SA6 A1+ REWRITE VDPT
- LX1 12 SET FIRST POT OF LINE
- MX7 -3
- BX2 -X2*X1
- LX1 15
- SX6 /TLX/CLI SET REQUEST CODE
- BX7 -X7*X1 SET FIRST WORD OF FIRST POT
- SB3 X2
- RJ ERQ ENTER REQUEST
- SA1 A0+VROT SEE IF VROT COMPLETE
- LX1 59-0
- PL X1,ECLX IF CONNECTED TO SMFEX
- LX1 0-59 SET INPUT SATISFIED
- SX7 1S5
- BX7 X1+X7
- SA7 A1 REWRITE VROT
- EQ ECLX EXIT
- EIL SPACE 4,15
- ** EIL - PROCESS END OF INPUT LINE.
- *
- * CALLS COMMAND OR SOURCE INPUT LINE PROCESSOR DEPENDING
- * ON TERMINAL MODE AND DATA FORMAT.
- *
- * ENTRY (A1) = ADDRESS OF VDPT.
- * (X1) = (VDPT).
- *
- * EXIT (VDPT) = UPDATED.
- * (X0) AND (X5) UNCHANGED.
- *
- * CALLS ECL, ESL.
- EIL SUBR ENTRY/EXIT
- * SELECT PROCESSOR ACCORDING TO MODE FLAGS.
- SA2 A0+VDCT READ VDCT
- LX2 59-54 CHECK READ-DATA BIT
- BX5 X1 MOVE (VDPT) FOR TESTING
- NG X2,EIL1 IF READ-DATA SET
- LX2 54-50 CHECK TEXT MODE BIT
- MX3 -12
- NG X2,EIL2 IF TEXT MODE SET
- * SELECT PROCESSOR ACCORDING TO DATA MODE.
- LX5 59-15 CHECK FOR BINARY MODE
- NG X5,EIL2 IF SET
- LX5 60+12-59+15 GET FIRST POT POINTER
- BX2 -X3*X5
- MX4 -3
- LX5 15 GET FIRST POT FIRST WORD ADDRESS
- BX4 -X4*X5 MASK FIRST POT WORD INDEX
- SB3 X2 STORE POT POINTER
- LX2 3 SET POT ADDRESS
- TB4 X2,VBMP
- SA3 B4+X4 READ FIRST WORD OF DATA
- MX2 6
- BX4 X2*X3 CHECK FIRST CHARACTER
- LX4 6
- SX2 X4-1R0
- NG X2,EIL1 IF ALPHA CHARACTER
- SX2 X4-1R9-1
- NG X2,EIL2 IF NUMERIC
- * ENTER COMMAND LINE.
- EIL1 RJ ECL ENTER COMMAND LINE
- EQ EILX RETURN
- * ENTER SOURCE LINE.
- EIL2 RJ ESL ENTER SOURCE LINE
- EQ EILX RETURN
- ERQ SPACE 4,30
- ** ERQ - ENTER CIRCULAR STACK REQUEST.
- *
- * ENTERS DRIVER-TO-EXECUTIVE REQUESTS IN THE DRIVER
- * CIRCULAR STACK. THE STACK LIMIT FLAG WILL BE SET
- * IF THERE ARE LESS THAN THREE WORDS LEFT IN THE
- * STACK TO INHIBIT OPERATIONS WHICH ISSUE MULTIPLE
- * REQUESTS.
- *
- * ENTRY (NDSA) = ADDRESS OF CIRCULAR STACK.
- * (X6) = REQUEST CODE.
- * (X7) = REQUEST BITS 47-24.
- * (B2) = REQUEST BITS 11-0 (TERMINAL NUMBER).
- * (B3) = REQUEST BITS 23-12.
- *
- * EXIT (X6) = NEGATIVE IF ENTRY COULD NOT BE MADE.
- * (X6) = (NDSL) IF ENTRY MADE.
- * (X7) = STACK REMAINING WORD COUNT.
- * REQUEST ENTERED IN CIRCULAR STACK.
- * REQUEST STACK *IN* POINTER UPDATED.
- * (NDSL) = NONZERO IF STACK FULL AFTER ENTRY.
- *
- * USES A - 1, 2, 3, 4, 6, 7.
- * X - 1, 2, 3, 4, 5, 6, 7.
- * B - 6.
- *
- * CALLS ABT.
- ERQ SUBR ENTRY/EXIT
- SB6 X6 SAVE REQUEST CODE FOR PACKING
- MX6 -24
- * FORMAT REQUEST STACK ENTRY.
- SA1 NDSA GET DRIVER STACK ADDRESS
- SX5 B3 SET BITS 23-12
- BX7 -X6*X7 SET BITS 47-24
- SX6 B2 SET BITS 11-0
- LX5 12
- SA1 X1+2 READ IN
- PX6 X6,B6 PACK REQUEST CODE AND BITS 11-0
- LX7 24
- BX6 X6+X5 MERGE BITS 23-12
- IX6 X6+X7 MERGE BITS 47-24
- SA6 X1 STORE REQUEST
- * UPDATE CIRCULAR STACK POINTER.
- SX7 X1+B1 UPDATE IN
- SA3 A1+2 READ LIMIT
- SA4 A1-B1 READ FIRST
- IX1 X3-X7 LIMIT - IN
- SA2 A1+B1 READ OUT
- NZ X1,ERQ1 IF IN .NE. LIMIT
- SX7 X4 SET IN = FIRST
- ERQ1 IX1 X2-X7 LENGTH = OUT-IN
- ZR X1,ERQ4 IF OUT = IN, ERROR
- SA7 A1 STORE NEW IN
- PL X1,ERQ2 IF OUT > IN
- IX1 X1-X4 LENGTH = (LIMIT-IN) + (OUT-FIRST)
- IX1 X1+X3
- ERQ2 SX6 B1+ INITIALIZE STACK LIMIT FLAG
- SX7 X1-3
- NG X7,ERQ3 IF STACK FULL
- SX6 B0+
- ERQ3 SA6 NDSL SET/CLEAR STACK LIMIT FLAG
- EQ ERQX RETURN
- * PROCESS ERROR IF STACK FULL.
- ERQ4 SX6 3RERQ SET ERROR CODE
- RJ ABT
- MX6 59 SET NEGATIVE STATUS
- BX7 X6
- EQ ERQ3 RETURN
- ESL SPACE 4,20
- ** ESL - ENTER SOURCE INPUT LINE.
- *
- * RELEASES INPUT LINE TO EXECUTIVE AS A SOURCE LINE
- * OF DATA IF THE LINE CROSSES A POT BOUNDARY. IF THERE
- * IS NO POT SWITCH INVOLVED, THE INPUT INITIATED BIT
- * IS SET ONLY.
- * IF THE PRIMARY FILE IS NON-EXISTENT OR LOCKED,
- * THIS ROUTINE ISUES AN APPROPRIATE MESSAGE AND
- * CLEARS THE POT POINTERS IN *VDPT*.
- *
- * ENTRY (X1) = (VDPT).
- * (VDPT) = 12/FP, 12/LP, 3/FW, 3/WC, 6/, 12/FLAGS, 12/.
- * FP = FIRST POT OF LINE.
- * LP = LAST POT OF LINE.
- * FW = FIRST WORD OF FIRST POT.
- * WC = LAST POT WORD COUNT.
- * (A1) = ADDRESS OF VDPT.
- * (B2) = TERMINAL NUMBER.
- * (B3) = POT POINTER FOR THE INPUT LINE.
- *
- * EXIT IF PRIMARY FILE IS PRESENT IN WRITE MODE -
- * (VDPT) = FIRST POT RESET TO LAST POT.
- * INPUT INITIATED BIT SET.
- * IF LOCKED OR NO PRIMARY FILE -
- * (VDPT) = POT POINTERS CLEARED.
- * APPROPRIATE MESSAGE ISSUED.
- *
- * USES X - 1, 2, 3, 4, 5, 6, 7.
- * A - 1, 5, 6.
- * B - 3, 4, 5, 7.
- *
- * CALLS ACD, ASV, ERQ, SSP.
- ESL SUBR ENTRY/EXIT
- * CHECK PRIMARY FILE
- SA5 A0+VFNT GET PRIMARY FILE NAME
- MX6 42
- BX6 X6*X5
- NZ X6,ESL1 IF PRIMARY FILE EXISTS
- SX6 DMNP SET MESSAGE ADDRESS
- SB4 DMNPL SET MESSAGE LENGTH
- EQ ESL2 FINISH PROCESSING
- ESL1 LX5 59-12 CHECK WRITE LOCKOUT BIT
- PL X5,ESL3 IF WRITE LOCKOUT NOT SET
- SX6 DMLP SET MESSAGE ADDRESS
- SB4 DMLPL SET MESSAGE LENGTH
- ESL2 RJ ACD ASSIGN MESSAGE
- * CLEAR POT POINTERS IN VDPT
- SA1 A0+VDPT CLEAR POT POINTERS
- MX6 30
- BX6 -X6*X1
- SA6 A1+ REWRITE VDPT
- EQ ESLX RETURN
- * UPDATE POINTERS IN VDCT.
- ESL3 MX5 -3 EXTRACT FIRST WORD
- LX1 -30
- BX7 -X5*X1 (X7) = FIRST WORD
- LX1 -3 RESET FIRST WORD = WORD COUNT
- BX6 X5*X1
- IX6 X6+X7
- MX5 -12 EXTRACT LAST POT
- LX6 -3
- BX1 -X5*X6 (X1) = LAST POT
- LX6 -12 EXTRACT FIRST POT
- BX2 -X5*X6 (X2) = FIRST POT
- LX7 12 SHIFT WORD COUNT FOR *RIN* REQUEST
- BX6 X5*X6 RESET FIRST POT = LAST POT
- IX6 X6+X1
- SX4 1S16 SET INPUT-INITIATED BIT 16
- LX6 48 REWRITE VDPT
- IX3 X1-X2 COMPARE POT POINTERS
- BX6 X6+X4
- SA6 A1
- ZR X3,ESLX IF NO POT CHANGE
- BX7 X7+X1 MERGE LAST POT, WORD COUNT
- SB3 X2 SET FIRST POT
- SX6 /TLX/RIN SET RELEASE-INPUT REQUEST
- RJ ERQ ENTER REQUEST
- EQ ESLX EXIT
- ETX SPACE 4,10
- ** ETX - EXIT FROM TEXT MODE.
- *
- * ENTER *EXIT TEXT MODE* REQUEST.
- *
- * ENTRY (A0) = TERMINAL TABLE ADDRESS.
- *
- * EXIT THE INPUT-INITIATED FLAG IS CLEARED.
- * VDPT CLEARED.
- * *EXIT TEXT MODE* REQUEST ENTERED.
- *
- * CALLS ERQ.
- ETX SUBR ENTRY/EXIT
- SA1 A0+VDCT CLEAR TEXT MODE BIT
- MX6 59
- LX6 50-0
- BX6 X6*X1
- SA6 A1 REWRITE VDCT
- SA1 A0+VDPT GET POT POINTER
- BX6 X6-X6
- SA6 A1 CLEAR VDPT
- MX6 -12
- LX1 60-36 EXTRACT LAST POT OF LINE
- BX6 -X6*X1
- SB3 X6 (B3)=LAST POT OF LINE
- MX7 -3
- LX1 36-30 EXTRACT LAST POT WORD COUNT
- BX7 -X7*X1 (X7)=LAST POT WORD COUNT
- SX6 /TLX/ETX EXIT TEXT MODE REQUEST
- RJ ERQ ENTER REQUEST
- EQ ETXX RETURN
- GAT SPACE 4,10
- ** GAT - GET ACTIVE TERMINAL NUMBER.
- *
- * SEARCHES FOR NEXT TERMINAL WITH ACTIVITY BIT SET.
- *
- * ENTRY (B2) = STARTING TERMINAL NUMBER.
- *
- * EXIT (B2) = NEXT TERMINAL NUMBER WITH ACTIVITY.
- * = ZERO IF NO TERMINAL FOUND.
- * (A0) = (B2) TERMINAL TABLE ADDRESS.
- * (X6) = (B2).
- *
- * MACROS TTADD.
- GAT SUBR ENTRY/EXIT
- SA4 HACN GET HIGHEST ACTIVE ACN
- TX2 B2,-VNTP SET TERMINAL ORDINAL
- MX7 -5
- BX3 -X7*X2 TERMINAL ORDINAL MOD 32
- AX2 5 TERMINAL ORDINAL/32
- SB5 X3
- TA1 X2,VNAT READ STARTING TABLE ENTRY
- SB6 32 (B6) = BIT TEST SHIFT LIMIT
- SB7 X4 (B7) = HIGHEST ACTIVE ACN
- LX1 X1,B5 SHIFT STARTING TERMINAL BIT
- EQ GAT2 ENTER TEST LOOP
- * ADVANCE TO NEXT TABLE ENTRY.
- GAT1 SA1 A1+B1 READ NEXT TABLE ENTRY
- SB5 B0 CLEAR SHIFT COUNT
- NZ X1,GAT2 IF NOT NULL WORD
- SB2 B2+32 ADVANCE TERMINAL NUMBER
- LE B2,B7,GAT1 IF NOT END OF TERMINALS
- EQ GAT4
- * SEARCH ENTRY WORD FOR ACTIVITY BIT.
- GAT2 NG X1,GAT3 IF ACTIVITY BIT SET
- SB2 B2+1 ADVANCE TERMINAL NUMBER
- LX1 1 SHIFT NEXT TERMINAL BIT
- GT B2,B7,GAT4 IF END OF ACTIVE TERMINALS
- SB5 B5+B1 ADVANCE SHIFT COUNT
- LT B5,B6,GAT2 IF NOT END OF ENTRY WORD
- EQ GAT1 PROCESS NEXT TABLE ENTRY
- * RETURN ENTRY FOUND.
- GAT3 TTADD B2,A0,X1,X2 SET TERMINAL TABLE ADDRESS
- SX6 B2 RETURN TERMINAL NUMBER
- EQ GATX RETURN
- * RETURN ENTRY NOT FOUND.
- GAT4 SB2 B0 CLEAR RETURN REGISTERS
- BX6 X6-X6
- EQ GATX RETURN
- IAT SPACE 4,10
- ** IAT - INITIALIZE AIP TRACE OUTPUT FILE.
- *
- * ENTRY (ATMC) = MESSAGE COUNT USED TO CONTROL
- * PROCESSING OF TRACE OUTPUT FILE.
- * = ZERO, IF TRACE IS NOT SELECTED.
- * = NEGATIVE, IF PROCESS TRACE FILE AT
- * IAF TERMINATION ONLY.
- *
- * EXIT TRACE OUTPUT FILE INITIALIZED IF REQUIRED.
- *
- * USES X - 1, 2, 6.
- * A - 1, 2, 6.
- *
- * MACROS NETREL.
- IAT1 NETREL =0,MXLT,=0 INITIALIZE TRACE FILE FOR T=* OPTION
- SB1 1
- IAT SUBR ENTRY/EXIT
- SA1 ATMC GET TRACE MESSAGE COUNT
- SA2 IATA CHECK IF FILE ALREADY INITIALIZED
- ZR X1,IATX IF TRACE IS NOT SELECTED
- NZ X2,IATX IF TRACE FILE ALREADY INITIALIZED
- BX6 X1
- SA6 A2 INDICATE TRACE FILE INITIALIZED
- NG X1,IAT1 IF T=* OPTION IS SELECTED
- NETREL JPTO,MXLT,RWTF INITIALIZE TRACE OUTPUT FILE
- SB1 1
- EQ IATX RETURN
- IATA DATA 0 SET NONZERO WHEN TRACE FILE INITIALIZED
- IBC SPACE 4,10
- ** IBC - INCREMENT BLOCK COUNT.
- *
- * INCREMENT TERMINAL APPLICATION BLOCK COUNT.
- *
- * EXIT (VMST) = BLOCK COUNT INCREMENTED
- *
- * USES A - 3, 6.
- * X - 3, 6.
- IBC SUBR ENTRY/EXIT
- TA3 B2,VMST READ VMST
- SX6 B1 INCREMENT ABC
- LX6 33-0
- IX6 X6+X3
- SA6 A3 REWRITE VMST
- EQ IBCX RETURN
- ILV SPACE 4,10
- ** ILV - INSERT LOAN STATUS VALUE.
- *
- * PUT THE LOAN STATUS VALUE IN BYTE 2 OF VROT.
- *
- * ENTRY (X7) = LOAN STATUS VALUE.
- *
- * EXIT (X7) = UNCHANGED.
- *
- * USES A - 1, 6.
- * X - 0, 1, 6.
- ILV SUBR ENTRY/EXIT
- SA1 A0+VROT INSERT LOAN STATUS VALUE IN VROT
- MX0 -12
- LX0 24-0
- BX6 X0*X1
- LX1 59-0
- PL X1,PCSX IF VROT BUSY
- LX7 24-0
- BX6 X6+X7
- SA6 A1 REWRITE VROT
- LX7 0-24 REALIGN LOAN STATUS VALUE
- EQ ILVX RETURN
- IPM SPACE 4,15
- ** IPM - ISSUE PROMPT MESSAGE.
- *
- * EXIT (X6) .NE. 0, IF PROMPT WAS ASSIGNED TO TERMINAL,
- * OR *MSG* BLOCK ALREADY SENT.
- * .EQ. 0, IF POT WAS NOT AVAILABLE FOR PROMPT.
- *
- * USES X - 1, 2, 3, 6.
- * A - 1, 3.
- * B - 3, 4.
- *
- * CALLS ACD.
- IPM SUBR ENTRY/EXIT
- SA1 A0+VROT CHECK QUEUED INPUT AVAILABLE
- TA3 B2,VMST
- MX2 -12
- BX3 -X2*X3
- LX2 36
- BX1 -X2*X1
- BX6 X1+X3
- NZ X6,IPMX IF INPUT QUEUED, DO NOT SEND PROMPT
- SA1 A0+VDPT CHECK INPUT MODE
- SX2 140000B
- SA3 A0+VSTT CHECK PROMPT MODE
- BX2 X1*X2
- LX3 59-53
- SX6 DMBI SET NULL MESSAGE ADDRESS
- SB4 B1+B1 SET TEXT LENGTH
- SB3 B0
- NG X3,IPM1 IF PROMPT OFF
- NZ X2,IPM1 IF TRANSPARENT OR EXTENDED MODE
- LX3 59-55-6
- NG X3,IPM1 IF USER EFFECT MODE
- SX6 DMIP SET INPUT PROMPT ADDRESS
- RJ ACD ASSIGN CANNED DATA MESSAGE
- EQ IPMX EXIT
- IPM1 TA3 B2,VMST READ VMST ENTRY
- LX3 59-53
- NG X3,IPMX IF *MSG* BLOCK SENT, EXIT
- RJ ACD ASSIGN CANNED DATA MESSAGE
- EQ IPMX EXIT
- ISW SPACE 4,10
- ** ISW - ISSUE SHUTDOWN WARNING MESSAGE.
- *
- * CALLS ACD, CBL.
- ISW SUBR ENTRY/EXIT
- RJ CBL CHECK BLOCK LIMIT
- NZ X6,ISWX IF TERMINAL AT BLOCK LIMIT
- * CHECK FOR BREAK IN PROGRESS, WARNING SENT, OR
- * END CONNECTION.
- TA1 B2,VMST READ VMST ENTRY
- SX6 7B SET BIT MASK
- LX6 55-0
- BX6 X6*X1
- NZ X6,ISWX IF ANY OF THE ABOVE, RETURN
- * CHECK FOR JOB ACTIVE OR OUTPUT ON MASS STORAGE.
- SA1 A0+VROT READ VROT
- SX6 26B
- BX6 X6*X1
- NZ X6,ISWX IF ANY OF THE ABOVE, RETURN
- * CHECK FOR OUTPUT CONTINUATION OR LOGOUT.
- SA2 A0+VSTT READ VSTT
- LX1 59-29
- LX2 59-48
- NG X1,ISWX IF OUTPUT CONTINUATION
- NG X2,ISWX IF LOGOUT
- * CHECK FOR AUTO MODE INPUT.
- SA1 A0+VDCT READ VDCT
- SB3 B0 INDICATE NO POT AVAILABLE FOR MESSAGE
- LX1 59-49
- NG X1,ISWX IF AUTO MODE, RETURN
- * ASSIGN MESSAGE.
- SX6 DMSH MESSAGE ADDRESS
- SB4 DMSHL MESSAGE LENGTH
- RJ ACD ASSIGN MESSAGE
- ZR X6,ISWX IF MESSAGE NOT ASSIGNED, RETURN
- * SET MESSAGE-ISSUED STATUS.
- TA1 B2,VMST READ VMST
- SX6 B1 SET BIT
- LX6 56-0
- BX6 X1+X6
- SA6 A1 REWRITE VMST
- EQ ISWX RETURN
- PDR SPACE 4,10
- ** PDR - PROCESS DRIVER REENTRY.
- *
- * ENTRY (VCHT) = REENTRY PARAMETERS.
- *
- * EXIT REENTRY PROCESSED.
- * (X6) = ZERO IF NO REENTRY PRESENT.
- *
- * CALLS PCS.
- PDR SUBR ENTRY/EXIT
- SA1 A0+VCHT READ VCHT
- BX6 X6-X6 ASSUME NO REENTRY
- MX2 36
- BX3 X2*X1 MASK REENTRY
- ZR X3,PDRX IF NO REENTRY, RETURN
- BX6 -X2*X1 CLEAR REENTRY
- AX3 24
- SA6 A1 REWRITE VCHT
- BX5 -X2*X3 (X5) = X7 AND B3 REENTRY PARAMETERS
- SX1 B2
- LX5 12
- IX5 X5+X1 INSERT (X5) TERMINAL NUMBER
- AX3 24
- MX2 -12
- BX3 -X2*X3
- SB7 X3+NDR SET REENTRY ADDRESS
- RJ PCS EXECUTE REENTRY
- SX6 B1+ INDICATE REENTRY PROCESSED
- EQ PDRX RETURN
- PIN SPACE 4,30
- ** PIN - PROCESS INPUT DATA.
- *
- * TRANSLATES INPUT DATA AND PASSES INPUT TO EXECUTIVE.
- *
- * ENTRY (DIOF) = DIRECT INPUT FLAG.
- * (RCVB) = INPUT DATA.
- * (RCVH) = INPUT MESSAGE HEADER.
- * (VDPT) = CURRENT POSITION IN POT.
- *
- * EXIT (X6) = ZERO IF NOT ENOUGH POTS FOR TRANSLATION.
- * (VDPT) = UPDATED.
- * (X0) = POSITIVE VALUE IF OVERFLOW OCCURRED.
- *
- * CALLS EIL, ETX, IVD, VBX, VDX.
- PIN SUBR ENTRY/EXIT
- * INITIALIZE TRANSLATOR CALL PARAMETERS.
- SA4 RCVH READ MESSAGE HEADER
- SA5 A0+VDPT READ VDPT
- MX6 -12
- BX2 -X6*X4 MASK TEXT LENGTH
- BX3 -X6*X5 OLD CHARACTER COUNT
- SB7 X2 (B7) = TEXT LENGTH IN CHARACTERS
- IX1 X2+X3 CUMULATIVE CHARACTER COUNT
- SX0 X1-VXLL-1
- LX2 18
- PL X0,PINX IF OVERFLOW OCCURRED
- SA3 A0+VDCT
- BX6 X3
- LX6 59-47
- NG X6,PINX IF CONNECTION IS LOANED
- NE B7,B1,PIN1 IF NOT ONE CHARACTER MESSAGE
- LX6 59-50-59+47
- NG X6,PIN8 IF TEXT MODE
- * SET UP RCCW.
- PIN1 SX6 RCVB FWA BUFFER
- BX6 X6+X2 COMBINE FWA AND TEXT LENGTH
- SX0 B1
- LX0 13
- BX2 X0*X5 CHECK BLK BIT
- NZ X2,PIN2 IF NOT FIRST BLOCK
- MX2 1
- BX6 X2+X6 SET FIRST BLOCK BIT
- PIN2 SA6 RCCW
- MX6 -12
- BX6 X5*X6 CLEAR OLD CC
- SA4 RCVH
- BX6 X1+X6 INSERT CUMULATIVE CC
- BX6 -X0*X6 CLEAR BLK RECEIVED
- BX1 X4
- AX1 54
- SX7 X1+
- SX1 X1-BTMS
- SA7 PINA SAVE BLOCK TYPE
- ZR X1,PIN3 IF MSG BLOCK
- BX6 X0+X6 SET BLK RECEIVED
- PIN3 SA6 A5+ REWRITE VDPT
- * PROCESS RESOURCE LIMIT FOR TRANSPARENT MODE
- SA1 A0+VROT CHECK FOR RESOURCE LIMIT
- LX1 59-19
- MX2 2
- BX5 X2*X1
- ZR X5,PIN4 IF NO LIMIT
- MX2 1 CLEAR BINARY DATA BIT IN RCVH
- LX2 14-59
- BX7 -X2*X4
- SA7 A4 REWRITE RCVH
- BX4 X7
- * SELECT TRANSLATION PROCESSOR.
- PIN4 SX0 4000B SET BINARY DATA BIT
- SX2 5 CHARACTERS PER WORD
- SX5 7777B MASK FOR 12 BIT CHARACTERS
- SX7 B7 SET CHARACTER COUNT FOR ENTRY TO *IVD*
- LX4 59-14 CHECK HEADER *XPT* BIT
- LX3 59-52 CHECK ASCII8 MODE
- NG X4,PIN6 IF BINARY DATA
- LX4 X3,B1
- LX6 59-14 CHECK TRANSPARENT MODE
- NG X4,PIN5 IF EXTENDED MODE
- NG X6,PIN5 IF TRANSPARENT MODE
- SX0 B1
- LX0 58-0 SET ASCII8 BIT
- NG X3,PIN6 IF ASCII8
- MX5 7
- LX5 6
- SX2 10D CHARACTERS PER WORD
- PIN5 RJ IVD INITIALIZE VDPT AND POT CHAIN
- ZR X6,PINX IF NO POTS
- RJ VDX TRANSLATE TO 6/12
- EQ PIN7 COMPLETE PROCESSING
- PIN6 RJ IVD INITIALIZE VDPT AND POT CHAIN
- ZR X6,PINX IF NO POTS
- RJ VBX TRANSLATE BINARY DATA
- PIN7 SA1 A0+VDPT
- BX0 X1
- LX0 59-13
- NG X0,PINX IF NOT MSG BLOCK
- SA2 DIOF
- MX0 1
- NZ X2,PINX IF DIRECT I/O REQUEST
- RJ EIL ENTER END-OF-LINE
- * CLEAR MODE BITS AND CHARACTER COUNT.
- SA1 A0+VDPT READ VDPT
- MX6 -16
- MX0 1 SET NO OVERFLOW STATUS
- BX7 X6*X1 CLEAR BITS
- SA2 A0+VROT CHECK FOR RESOURCE LIMIT
- MX5 2
- LX2 59-19
- BX5 X5*X2
- ZR X5,PIN7.1 IF NO LIMIT HAS OCCURRED
- LX1 59-15
- BX2 X0*X1 PRESERVE VALUE OF BINARY BIT
- LX2 15-59
- BX7 X7+X2
- PIN7.1 SA7 A1+ REWRITE VDPT
- EQ PINX RETURN
- * PROCESS TEXT MODE EXIT.
- PIN8 SA4 RCVB READ INPUT DATA
- AX4 52
- SX4 X4-ASC.ETX CHECK FOR *ETX* CODE
- NZ X4,PIN1 IF NOT *ETX*
- SB3 B0+
- RJ ETX EXIT FROM TEXT MODE
- SX6 B1
- MX0 1 SET NORMAL RETURN
- EQ PINX RETURN
- PINA CON 0 BLOCK TYPE
- PQO SPACE 4,20
- ** PQO - PROCESS QUEUED OUTPUT.
- *
- * PROCESS THE NEXT OUTPUT MESSAGE QUEUED IN VSTT.
- * FOR A DESCRIPTION OF HOW POT CHAINS OF DATA ARE LINKED
- * TOGETHER IN THE QUEUE, SEE THE NOTE AT THE BEGINNING
- * OF SUBROUTINE *ANM*.
- *
- * EXIT (X6) = ZERO IF NO OUTPUT PRESENT.
- *
- * CALLS CBL, DQO, ERQ, GPL, IBC, SCS, SRE, TDM, UAC, UOC.
- PQO SUBR ENTRY/EXIT
- TA1 B2,VMST
- NG X1,PQO0 IF TERMINAL IS ON LINE
- RJ DQO DROP QUEUED OUTPUT
- PQO0 RJ CBL CHECK BLOCK LIMIT
- NZ X6,PQOX IF AT BLOCK LIMIT
- SA1 A0+VSTT
- MX6 -12 MASK POT POINTER
- BX6 -X6*X1
- ZR X6,PQOX IF NO OUTPUT
- SA1 A0+VDCT CHECK CONNECTION
- LX1 59-47
- NG X1,PQO8 IF LOANED CONNECTION
- SA3 A0+VDPT READ VDPT
- LX3 59-16
- NG X3,PQOX IF INPUT INITIATED, RETURN
- SB3 X6
- LX6 3
- TA2 X6+1,VBMP
- AX6 3
- MX4 6 CHECK FOR BLOCK TYPE
- BX4 X4*X2
- ZR X4,PQO3 IF MESSAGE NEEDS TO BE TRANSLATED
- BX6 X2
- SA6 SNDH STORE HEADER
- SB5 6
- PQO1 SA2 A2+B1 TRANSFER DATA INTO SEND BUFFER
- SB5 B5-B1
- BX6 X2
- SA6 A6+B1
- NZ B5,PQO1 IF MORE DATA IN POT
- RJ GPL
- SA2 B4-1
- SB5 VCPC
- NZ B3,PQO1 IF MORE POTS CONTAINING DATA
- SA1 SNDH
- EQ PQO6 SEND MESSAGE AND DROP POTS
- * ENTRY POINT TO RESUME TRANSLATION OF DATA WHEN A
- * CHAIN OF OUTPUT HAD TO BE BROKEN INTO MORE THAN ONE
- * DOWNLINE BLOCK. AN EXAMPLE IS WHEN TRANSPARENT AND
- * NORMAL DATA ARE MIXED IN THE SAME OUTPUT CHAIN.
- PQO2 BSS 0
- SA1 A0+VSTT CHECK OUTPUT POT POINTER
- MX6 -12
- BX6 -X6*X1
- ZR X6,PQOX IF POTS HAVE BEEN DROPPED
- SB7 PQO2
- RJ CBL CHECK BLOCK LIMIT
- NZ X6,PCD IF AT BLOCK LIMIT, REENTER
- MX3 -3
- BX2 -X3*X7 SET UP ENTRY CONDITIONS
- AX7 3
- BX7 -X3*X7
- SX6 B3
- SB6 X2
- SB7 X7
- EQ PQO4 RESUME TRANSLATION
- PQO3 SB6 2
- SB7 B0
- PQO4 RJ TDM TRANSLATE DATA INTO BUFFER
- SX7 B0+ CLEAR USER FORMAT EFFECTOR FLAG
- SA7 TDMG
- NG X6,PQO9 IF DATA COULD NOT BE TRANSLATED
- ZR X6,PQO5 IF ENTIRE POT CHAIN TRANSLATED
- BX7 X6
- AX6 6 MAKE REENTRY FOR TRANSLATION CONTINUATION
- SB3 X6
- SB7 PQO2
- RJ SRE
- PQO5 SA1 SNDH CHECK FOR EMBEDDED FUNCTION REQUESTS
- MX3 -12
- BX3 -X3*X1
- ZR X3,PQO8 IF ZERO LENGTH MESSAGE
- * SET MESSAGE BLOCK SENT FLAG IF CURRENT MESSAGE IS A
- * MESSAGE BLOCK.
- PQO6 TA5 B2,VMST
- AX1 54 EXTRACT BLOCK TYPE
- SX3 B1
- SX1 X1-BTMS
- LX3 53-0
- BX7 -X3*X5 CLEAR PREVIOUS VALUE
- NZ X1,PQO7 IF NOT MESSAGE BLOCK
- BX7 X3+X7 SET MESSAGE BLOCK FLAG
- PQO7 SA7 A5
- SX6 SNDH TRANSMIT MESSAGE
- SX7 SNDB
- SB2 -B2
- RJ SCS
- SA1 SNDH UPDATE OUTPUT ACCOUNTING
- SX7 B0+
- RJ UAC
- RJ IBC INCREMENT BLOCK COUNT
- PQO8 SA1 A0+VCHT
- AX1 48
- SX6 B1
- NZ X1,PQOX IF A REENTRY WAS MADE, DO NOT DROP CHAIN
- PQO9 RJ UOC UPDATE OUTPUT CHAINS
- SX7 B0
- SX6 /TLX/RES
- RJ ERQ ENTER RESTART REQUEST
- SX6 B1
- EQ PQOX RETURN
- PRP SPACE 4,15
- ** PRP - PROCESS RETURN TO PRIMARY.
- *
- * UPON RETURNING FROM A SECONDARY APPLICATION, CHECK LOGOUT
- * AND INTERLOCK CONDITIONS, AND INSERT THE LOAN STATUS
- * VALUE IN VROT.
- *
- * ENTRY (X7) = LOAN STATUS VALUE.
- *
- * EXIT (X7) = UNCHANGED.
- *
- * USES A - 1.
- * B - 3.
- * X - 1.
- *
- * CALLS ILV.
- PRP SUBR ENTRY/EXIT
- SB3 B0 CLEAR SUPERVISORY FUNCTION CODE
- SA1 A0+VSTT CHECK LOGOUT BIT
- LX1 59-48
- NG X1,PCSX IF LOGOUT IN PROGRESS
- RJ ILV INSERT LOAN STATUS VALUE IN VROT
- EQ PRPX EXIT
- QTI SPACE 4,10
- ** QTI - QUEUE TYPEAHEAD INTERNALLY.
- *
- * QUEUES INPUT DATA TO A DEPTH OF *TAPC* POTS, THEN
- * INITIATES NAM TYPEAHEAD MODE TO PREVENT OVERFLOW.
- *
- * USES X - 1, 2, 6, 7.
- * A - 1, 2, 6.
- * B - 3, 4, 5, 7.
- *
- * CALLS ASV, CTP, LEP, MVA, SRE.
- QTI SUBR ENTRY/EXIT
- SA1 RCVH CALCULATE BUFFER LENGTH
- SB3 B0 START NEW POT CHAIN
- MX7 -12
- BX2 -X7*X1 CHARACTER COUNT
- LX2 1 TIMES TWO
- SX2 X2+14
- SX1 15
- IX1 X2/X1 NUMBER OF WORDS IN MESSAGE
- SB4 X1+B1 ADD ONE FOR THE HEADER
- TA2 B2,VMST CHECK FOR INPUT QUEUE OVERFLOW
- AX1 3 MESSAGE POT COUNT
- MX7 -6
- SB5 X1-77B
- AX2 12
- BX2 -X7*X2
- SB5 X2+B5 TOTAL POT COUNT - 77B
- GE B5,QTI5 IF THIS MESSAGE WILL OVERFLOW THE QUEUE
- SB5 B1 SKIP FIRST WORD IN POT CHAIN
- SX6 RCVH SET MESSAGE ADDRESS
- RJ CTP COPY MESSAGE TO POTS
- SB5 X6 SET POT COUNT
- PX7 X7,B5
- SA6 QTIA SAVE POT COUNT
- SA7 B4 SET LINK TO LAST POT
- * LINK ONTO INPUT POT CHAIN.
- TA1 B2,VMST GET CURRENT POT POINTER
- MX6 -12
- BX6 -X6*X1
- SX2 B3 TRAILING POT
- NZ X6,QTI2 IF CURRENT CHAIN
- BX6 X1+X2
- SA6 A1 REWRITE VMST OR CHAIN HEADER
- EQ QTI3 CHECK NAM TYPEAHEAD
- QTI2 SB3 X6 LEADING POT
- RJ LEP LINK EXISTING POT CHAINS
- QTI3 TA2 B2,VMST CHECK NAM TYPEAHEAD MODE
- SA1 QTIA
- LX1 12 ADD POT COUNT
- MX6 -6
- IX7 X1+X2
- SB3 B0
- SA7 A2+ REWRITE VMST
- LX2 59-51
- NG X2,QTIX IF NAM TYPEAHEAD ALREADY IN EFFECT
- AX7 12
- BX1 -X6*X7
- BX6 X6-X6 INDICATE DEFAULT MESSAGE HEADER
- SX1 X1-TAPC+1
- NG X1,QTIX IF NAM TYPEAHEAD NOT REQUIRED
- SB4 B1 TEXT LENGTH
- SX7 LSTHDX MESSAGE ADDRESS
- RJ ASV ASSIGN SUPERVISORY MESSAGE
- NZ X6,QTI4 IF ISSUED
- SB3 B0
- BX7 X7-X7
- SB7 ITM
- RJ SRE SET REENTRY
- EQ QTIX EXIT
- QTI4 TA1 B2,VMST SET NAM TYPEAHEAD IN EFFECT
- SX6 B1
- LX6 51-0
- BX6 X6+X1
- SA6 A1 REWRITE VMST
- EQ QTIX EXIT
- * SEND MESSAGE TO TERMINAL AND DISCARD INPUT.
- QTI5 SMA X6,( TYPEAHEAD OVERFLOW, REENTER INPUT.)
- SB4 B0+
- RJ MVA MOVE MESSAGE TO OUTPUT QUEUE
- SA1 QTIB COUNT OVERFLOW OCCURRENCE
- SX6 B1
- IX6 X1+X6
- SA6 A1
- EQ QTIX EXIT
- QTIA CON 0 POT COUNT
- QTIB CON 0 OVERFLOW OCCURRENCE COUNT
- RIP SPACE 4,10
- ** RIP - RESET INPUT POINTERS IN *VDPT*.
- *
- * ENTRY (A0) = TERMINAL TABLE ADDRESS.
- *
- * EXIT (VDPT) RESET TO LAST EOL.
- *
- * USES X - 1, 2, 6.
- * A - 1, 6.
- RIP SUBR ENTRY/EXIT
- SA1 A0+VDPT
- MX2 -9
- LX2 24
- BX6 X2*X1 CLEAR WORD COUNT IN CURRENT POT
- LX2 3
- BX2 -X2*X6 GET FIRST WORD
- AX2 3
- BX6 X6+X2
- MX2 -12
- LX2 36
- BX6 X2*X6 CLEAR LAST POT
- LX2 12
- BX2 -X2*X1
- LX2 48
- BX6 X2+X6 REPLACE WITH FIRST POT
- SA6 A1 REWRITE *VDPT*
- EQ RIPX EXIT
- SAB SPACE 4,10
- ** SAB - SET TERMINAL ACTIVITY BIT.
- *
- * ENTRY (B2) = TERMINAL NUMBER.
- *
- * EXIT (VNAT) = BIT SET.
- * (MGRB) = SET IF NOT TERMINAL BLOCK LIMIT.
- *
- * USES A - 2, 6.
- * X - 2, 6.
- * B - 5.
- *
- * CALLS CBL.
- SAB SUBR ENTRY/EXIT
- TX2 B2,-VNTP RELATIVE TERMINAL ORDINAL
- SX6 37B
- BX6 X6*X2 TERMINAL ORDINAL MOD 32
- AX2 5 TERMINAL ORDINAL/32
- TA2 X2,VNAT READ TABLE ENTRY
- SB5 X6-59
- MX6 -1
- AX6 X6,B5
- BX6 -X6+X2 SET BIT
- SA6 A2 REWRITE TABLE ENTRY
- RJ CBL CHECK BLOCK LIMIT
- NZ X6,SABX IF NO MORE BLOCKS ALLOWED
- SX6 B1+
- SA6 MGRB
- EQ SABX RETURN
- SFE SPACE 4,10
- ** SFE - SUPERVISORY FUNCTION CODE ERROR PROCESSOR.
- *
- * ISSUES SUPERVISORY MESSAGE ERROR DAYFILE MESSAGE.
- *
- * ENTRY (B2) = TERMINAL NUMBER (ACN).
- *
- * CALLS IDM, WOD.
- SFE SUBR ENTRY/EXIT
- SA1 RCVH PUT RCVH INTO MESSAGE
- RJ WOD CONVERT WORD TO OCTAL DISPLAY CODE
- SA6 SFEB
- SA7 A6+1
- SA1 RCVB ADD RCVB TO MESSAGE
- RJ WOD CONVERT WORD TO OCTAL DISPLAY CODE
- SA6 A7+B1
- SA7 A6+B1
- SX6 SFEA SET MESSAGE ADDRESS
- RJ IDM ISSUE DAYFILE MESSAGE
- SA1 ISMC UPDATE INCORRECT SUPERVISORY MESSAGE COUNT
- SX7 B1
- IX7 X1+X7
- SA7 A1
- EQ SFEX RETURN
- SFEA DATA 10L SMP ERR
- SFEB BSSZ 4
- SHA SPACE 4,20
- ** SHA - SET HIGHEST ACTIVE ACN NUMBER.
- *
- * EXIT (HACN) = HIGHEST ACTIVE ACN NUMBER.
- * = 0 IF NO TERMINALS ACTIVE.
- * (X6) = (HACN).
- * = 0 IF NO TERMINALS ACTIVE.
- * (B6) = FIRST NETWORK TERMINAL NUMBER.
- * (B7) = (HACN).
- *
- * USES A - 2, 6.
- * X - 2, 6.
- * B - 6, 7.
- SHA SUBR ENTRY/EXIT
- TB6 B0,VNTP SET SEARCH LIMITS
- TB7 B0,VNTP,LWA
- SHA1 TA2 B7,VMST READ VMST ENTRY
- NZ X2,SHA2 IF TERMINAL ACTIVE
- SB7 B7-B1 DECREMENT TERMINAL NUMBER
- GE B7,B6,SHA1 IF NOT END OF TERMINALS, LOOP
- SB7 B0 ZERO HIGHEST ACTIVE ACN
- SHA2 SX6 B7+ SET HIGHEST ACTIVE ACN
- SA6 HACN
- EQ SHAX RETURN
- SOM SPACE 4,15
- ** SOM - SEND OVERFLOW MESSAGE.
- *
- * SEND EITHER *OVL* OR NULL MESSAGE TO NETWORK
- * DEPENDING ON CHARACTER COUNT IN *VDPT*.
- *
- * ENTRY (VDPT) BITS 11-0 = CHARACTER COUNT.
- *
- * EXIT (VDPT) BITS 23-0 = 0 IF MESSAGE SENT.
- *
- * USES X - 1, 2, 3, 6.
- * A - 1, 2, 6.
- * B - 3, 4, 7.
- *
- * CALLS ACD, SRE.
- SOM2 SX2 40000B PRESERVE ASCII INPUT MODE
- BX3 X3+X2
- SOM3 SA2 A0+VDPT CLEAR FLAGS AND CHARACTER COUNT
- BX6 X3*X2
- SA6 A2 REWRITE *VDPT*
- SOM SUBR ENTRY/EXIT
- TA1 B2,VMST CHECK BREAK IN PROGRESS
- SA2 A0+VSTT CHECK LOGOUT FLAG
- LX1 59-57
- LX2 59-48
- MX3 36
- BX2 X1+X2
- LX1 59-55-59+57
- BX2 X1+X2
- NG X2,SOM3 IF LOGOUT, END CONNECTION, OR BREAK
- SX6 DMBI SET NULL MESSAGE
- SB4 B1+B1
- MX1 -12
- SA2 A0+VDPT CHECK CHARACTER COUNT
- BX1 -X1*X2
- SB3 B0
- SX1 X1-VXLL
- NG X1,SOM1 IF NOT OVERFLOW CONDITION
- SX6 DMOV SET *OVL* MESSAGE
- SB4 DMOVL
- SOM1 RJ ACD ASSIGN MESSAGE
- SA2 A0+VCHT CHECK DRIVER REENTRY
- MX3 36
- BX2 X3*X2
- NZ X6,SOM2 IF MESSAGE ASSIGNED
- NZ X2,SOMX IF REENTRY ALREADY ASSIGNED
- SB7 AOM
- RJ SRE SET REENTRY
- EQ SOMX EXIT
- SRE SPACE 4,20
- ** SRE - SET/CLEAR DRIVER REENTRY.
- *
- * ENTRY (B7) = REENTRY ADDRESS IF NONZERO.
- * (B3) = REENTRY POT POINTER.
- * (X7) = 12 BIT REENTRY PARAMETER.
- *
- * EXIT (VCHT(0)) = REENTRY ADDRESS RELATIVE TO *NDR*.
- * (VCHT(1)) = (X7) PARAMETER.
- * (VCHT(2)) = (B3) POT POINTER.
- *
- * CALLS ABT, DPT, SAB.
- SRE SUBR ENTRY/EXIT
- ZR B7,SRE1 IF NO REENTRY ADDRESS
- RJ SAB SET ACTIVITY BIT
- SRE1 SA2 A0+VCHT READ VCHT
- MX3 36
- BX0 X0-X0
- SX4 B7+ SET REENTRY ADDRESS
- ZR X4,SRE2 IF NO REENTRY TO BE SET
- SX4 X4-NDR BIAS REENTRY ADDRESS
- MX6 -12
- LX4 12
- BX7 -X6*X7 TRUNCATE (X7) TO 12 BITS
- SX6 B3+ SET POT POINTER
- BX4 X4+X7 MERGE PARAMETERS
- LX4 12
- BX4 X4+X6
- LX4 24
- BX0 X3*X2 GET OLD PARAMETERS
- SRE2 BX6 -X3*X2 INSERT NEW PARAMETERS
- MX7 -12
- BX6 X6+X4
- AX2 24
- SA6 A2 REWRITE VCHT
- BX6 -X7*X2 MASK PRIOR REENTRY POT POINTER
- AX2 24
- BX2 -X7*X2 GET REENTRY INDEX
- SB3 X2+NDR-PQO2
- ZR B3,SRE2.1 IF TRANSLATION REENTRY
- SB3 X6
- SB4 B0
- SRE2.1 SA2 A0+VDCT CLEAR INTERRUPT COMPLETE
- MX6 59
- LX6 58-0
- BX6 X2*X6
- SA6 A2 REWRITE VDCT
- MX7 24
- BX6 X7*X4 (X6) = REENTRY ADDRESS AND X7
- SA2 SRE GET RETURN ADDRESS
- MX7 18
- LX7 -12
- BX2 X7*X2
- LX2 -18
- BX6 X6+X2 MERGE RETURN ADDRESS IN X6
- SX2 B2 GET TERMINAL NUMBER
- BX6 X6+X2 MERGE TERMINAL NUMBER IN X6
- SA2 SREC GET BUFFER POINTER
- SA6 X2 STORE REENTRY INFORMATION IN BUFFER
- SX6 X2+B1 INCREMENT BUFFER POINTER
- SB5 X6-SREC
- NG B5,SRE2.2 IF NOT AT END OF BUFFER
- SX6 SREB RESET POINTER TO BEGINNING OF BUFFER
- SRE2.2 SA6 SREC STORE BUFFER POINTER
- ZR X0,SRE3 IF NO ABORT CONDITION
- SX7 B7-HUP
- ZR X7,SRE3 IF LOGOUT REQUEST
- SX7 B7-CNB
- ZR X7,SRE3 IF CONNECTION BROKEN REQUEST
- BX6 X0
- SA6 SREA
- SX6 3RSRE
- RJ ABT PROCESS ABORT
- SRE3 ZR B3,SREX IF NO POTS TO DROP
- RJ DPT
- EQ SREX RETURN
- SREA CON 0 SAVE OLD REENTRY
- * 12/REENTRY ADDR, 12/X7, 6/, 18/RETURN ADDR, 12/TN
- SREB BSSZ 20 REENTRY INFORMATION BUFFER
- SREC CON SREB BUFFER POINTER
- UAC SPACE 4,20
- ** UAC - UPDATE CHARACTER ACCOUNTING.
- *
- * ADDS BLOCK CHARACTER COUNT TO ACCUMULATOR IN VCHT AND
- * ENTERS EXECUTIVE ACCOUNTING REQUEST IF ACCUMLATOR
- * OVERFLOW.
- *
- * ENTRY (X1) = BLOCK HEADER.
- * (X7) = 0 IF OUTPUT ACCOUNTING.
- * = 1 IF INPUT ACCOUNTING.
- * (B2) = TERMINAL NUMBER.
- *
- * EXIT (A0) = (B2) TERMINAL TABLE ADDRESS.
- * (VCHT) = ACCUMULATOR UPDATED.
- *
- * USES A - 1, 2, 6.
- * X - 1, 2, 3, 6.
- * B - 6.
- *
- * CALLS ERQ.
- UAC SUBR ENTRY/EXIT
- * INITIALIZE ACN AND TERMINAL TABLE ADDRESS.
- SB6 X7 (B6) = ACCOUNTING TYPE
- MX7 -12
- TTADD B2,A0,X2,X3 (A0) = TERMINAL TABLE FWA
- SA2 A0+VCHT READ VCHT
- BX3 -X7*X1 (X3) = TEXT LENGTH IN ACT UNITS
- ZR B6,UAC1 IF OUTPUT ACCOUNTING
- LX2 -12 SHIFT INPUT ACCOUNTING ACCUMULATOR
- * ADD CHARACTER COUNT TO ACCUMULATOR.
- UAC1 AX1 20 GET CHARACTER TYPE
- MX6 -4
- BX1 -X6*X1 (X1) = CHARACTER TYPE CODE (ACT)
- SX6 B0
- SX1 X1-TUACL CHECK ACT
- PL X1,UACX IF INCORRECT, RETURN
- SA1 X1+TUAC+TUACL READ CONVERSION FACTOR
- IX3 X3*X1 CONVERT TLC TO CHARACTER COUNT
- BX6 -X7*X2 MASK VCHT ACCUMULATOR
- IX6 X6+X3 ADD CHARACTER COUNT
- BX2 X7*X2 CLEAR VCHT BYTE
- BX3 -X7*X6 TRUNCATE TOTAL TO 12 BITS
- IX7 X3+X2 INSERT UPDATED VALUE
- AX6 12 SHIFT OFF ALL BUT OVERFLOW
- ZR B6,UAC2 IF OUTPUT ACCOUNTING
- LX7 12 RESTORE VCHT POSITION
- UAC2 SA7 A2 REWRITE VCHT
- SX7 B6 RESTORE (X7)
- ZR X6,UACX IF NO OVERFLOW, RETURN
- * CALL EXECUTIVE TO ENTER ACCOUNTING MESSAGE.
- SX6 /TLX/IAM ENTER REQUEST
- SB3 B0+
- RJ ERQ
- EQ UACX RETURN
- * TUAC - TABLE OF ACCOUNTING CONVERSION FACTORS.
- TUAC BSS 0
- LOC 0
- CON 1
- CON 10
- CON 1
- CON 1
- CON 1
- LOC *O
- TUACL EQU *-TUAC
- UNQ SPACE 4,10
- ** UNQ - UNQUEUE INTERNAL TYPEAHEAD INPUT.
- *
- * USES X - 1, 2, 3, 5, 6, 7.
- * A - 1, 2, 5, 6.
- * B - 3, 4, 5, 7.
- *
- * CALLS ABT, ASV, DLP, DPT, GPL, SRE.
- UNQ SUBR ENTRY/EXIT
- TA2 B2,VMST CHECK INTERNAL QUEUE
- MX3 -12
- BX1 -X3*X2
- ZR X1,UNQX IF NO QUEUE
- BX5 X1 SAVE CURRENT CHAIN POINTER
- LX1 3 GET POINTER TO NEXT CHAIN
- TA1 X1,VBMP
- SX3 X1+
- NZ X3,UNQ0 IF LAST POT POINTER PRESENT
- * PROCESS ERROR IN TYPEAHEAD LINKAGE.
- SX6 3RUNQ
- RJ ABT
- TA2 B2,VMST GET INTERNAL TYPEAHEAD
- MX3 -12
- BX3 -X3*X2
- SB3 X3
- SB4 B0
- RJ DPT DROP POT CHAIN
- SA2 A2
- MX3 42
- BX6 X3*X2 CLEAR TYPEAHEAD POT(S) AND COUNT
- SA6 A2
- EQ UNQ2.1 INGNORE TYPEAHEAD AND CONTINUE
- * UNQUEUE FIRST POT CHAIN IN TYPEAHEAD QUEUE.
- UNQ0 RJ DLP DELINK POT CHAIN
- UX1,B5 X1
- MX3 -6
- LX3 12
- BX3 -X3*X2 PREVIOUS POT COUNT
- SX6 B5
- LX6 12
- IX3 X3-X6 NEW POT COUNT
- MX6 42
- BX6 X6*X2
- ZR X7,UNQ1 IF NO POT QUEUED
- BX6 X7+X6 MERGE POT POINTER
- NG X3,UNQ1 IF BAD POT COUNT
- BX6 X3+X6 MERGE POT COUNT
- UNQ1 SA6 A2 REWRITE VMST
- SB3 X5
- BX1 X5 SAVE POT POINTER
- LX5 3
- TB4 X5,VBMP
- SB5 VCPC-2
- SA5 B4+B1
- BX6 X5
- SA6 RCVH
- UNQ2 SA5 A5+B1 TRANSFER FROM POT TO RCVB
- BX6 X5
- SA6 A6+B1
- SB5 B5-B1
- NZ B5,UNQ2 IF MORE DATA IN POT
- RJ GPL GET POT LINK
- SA5 B4-B1
- SB5 VCPC
- NZ B3,UNQ2 IF MORE DATA IN POTS
- * DROP POTS.
- SB3 X1
- SB4 B0
- RJ DPT DROP POT CHAIN
- * CHECK NAM TYPEAHEAD MODE.
- TA1 B2,VMST
- MX6 -6 CHECK POT COUNT
- AX1 12
- BX6 -X6*X1
- LX1 59-51+12
- PL X1,UNQX IF ALREADY OFF
- SX6 X6-TAPT
- PL X6,UNQX IF THRESHOLD NOT REACHED
- UNQ2.1 SB4 B1 SET TEXT LENGTH
- BX6 X6-X6 USE DEFAULT HEADER
- SX7 LSTFDX SET TEXT ADDRESS
- RJ ASV ASSIGN SUPERVISORY MESSAGE
- NZ X6,UNQ3 IF MESSAGE ASSIGNED
- SB3 B0
- BX7 X7-X7
- SB7 CTM SET REENTRY TO CANCEL TYPEAHEAD MODE
- RJ SRE SET REENTRY
- EQ UNQX EXIT
- UNQ3 TA1 B2,VMST CLEAR TYPEAHEAD MODE
- MX6 59
- LX6 51-0
- BX6 X1*X6
- SA6 A1 REWRITE VMST
- EQ UNQX EXIT
- UOC SPACE 4,15
- ** UOC - UPDATE OUTPUT CHAINS.
- *
- * ENTRY (VSTT BYTE 4) = CURRENT OUTPUT POT CHAIN POINTER.
- *
- * EXIT (VSTT BYTE 4) = NEW OUTPUT POT CHAIN POINTER, IF
- * ANY - ZERO MEANS NO MORE OUTPUT.
- *
- * USES X - 1, 2, 3, 4, 6, 7.
- * A - 1, 2, 6, 7.
- * B - 3, 4.
- *
- * CALLS DPT.
- UOC SUBR ENTRY/EXIT
- SA1 A0+VSTT
- MX6 -12
- BX2 -X6*X1
- SB3 X2
- BX7 X1*X6 CLEAR VSTT POT POINTER
- LX2 3
- TA2 X2,VBMP
- MX1 6 UPDATE POT COUNT IN VSTT
- BX3 -X6*X2 GET LINK TO NEXT CHAIN
- LX1 30
- BX4 X1*X7 OLD POT COUNT
- BX7 -X1*X7 CLEAR VSTT COUNT
- BX1 X1*X2 MESSAGE POT COUNT
- ZR X3,UOC2 IF NO NEXT CHAIN
- IX1 X4-X1 NEW POT COUNT
- NG X1,UOC1 IF NEGATIVE POT COUNT
- BX7 X7+X1
- UOC1 LX6 12
- BX6 -X6*X2 GET LINK TO LAST CHAIN
- BX7 X3+X7 STORE NEXT POT CHAIN IN VSTT
- LX3 3
- TA4 X3,VBMP
- BX6 X4+X6
- SA6 A4
- UOC2 SA7 A1 REWRITE VSTT
- NG X2,UOC3 IF *0003* BYTE AUTO MODE
- SB4 B0
- RJ DPT
- EQ UOCX RETURN
- UOC3 SA1 A0+VDCT SAVE AUTO MODE POT POINTER
- LX1 -24
- MX4 -12
- BX5 -X4*X1 GET POT
- BX1 X4*X1 CLEAR FIELD
- SX7 B3
- BX7 -X4*X7
- BX7 X1+X7
- LX7 24
- SX3 102B SET AUTO MODE AND READ DATA BITS
- LX3 48
- BX7 X3+X7
- SA7 A1
- SB3 B0
- ZR X5,UOCX IF NO POT
- SB4 B0
- SB3 X5
- RJ DPT
- EQ UOCX RETURN
- VAC SPACE 4,20
- ** VAC - VALIDATE ACN.
- *
- * CHECK ACN TO SEE IF ON-LINE NETWORK TERMINAL.
- *
- * ENTRY (B2) = ACN.
- *
- * EXIT (X6) = NEGATIVE IF INCORRECT ACN.
- * (X2) = VMST ENTRY.
- * (A2) = ADDRESS OF VMST ENTRY.
- *
- * USES A - 2.
- * X - 2, 6.
- VAC SUBR ENTRY/EXIT
- TX6 B2,-VNTP COMPARE LOWER LIMIT
- NG X6,VACX IF INCORRECT
- SX6 B2-B1 CHECK UPPER LIMIT
- TX6 X6,-VNTP,LWA
- BX6 -X6 COMPLEMENT
- NG X6,VACX IF INCORRECT NUMBER
- TA2 B2,VMST READ VMST
- NZ X2,VACX IF ON-LINE
- SX6 -1
- EQ VACX RETURN
- XRJ SPACE 4,20
- ** XRJ - TRANSFER RETURN JUMP.
- *
- * CHANGE ADDRESS FIELD OF RETURN JUMP INSTRUCTION
- * AND RE-EXECUTE MODIFIED INSTRUCTION. THE RETURN
- * JUMP INSTUCTION MUST BEGIN IN THE FIRST PARCEL OF
- * THE INSTRUCTION WORD.
- *
- * ENTRY (X4) = 12, 18/ADR+1, 30/.
- * (X5) = NAD.
- * ADR = ADRESS OF RETURN JUMP INSTUCTION.
- * NAD = NEW ADDRESS TO BE INSERTED.
- *
- * EXIT TO MODIFIED INSTRUCTION.
- *
- * USES A - 4, 6.
- * X - 4, 6.
- * B - 7.
- XRJ BSS 0 ENTRY
- AX4 30 SET ADDRESS OF RETURN JUMP
- SB7 X4-1
- SA4 B7 READ INSTRUCTION
- MX6 -18
- LX4 30 CLEAR ADDRESS FIELD
- BX6 X6*X4
- BX6 X6+X5 INSERT NEW ADDRESS
- LX6 30 REWRITE INSTRUCTION
- SA6 A4
- JP B7 RE-EXECUTE MODIFIED INSTRUCTION
- ZFN SPACE 4,15
- ** ZFN - ZERO OR BLANK FILL NAME.
- *
- * *ZFN* ZERO FILLS A 42 BIT BLANK PADDED NAME OR BLANK
- * FILLS A ZERO PADDED NAME. THE BOTTOM 18 BITS REMAIN
- * UNCHANGED.
- *
- * ENTRY (X1) = NAME TO BE PROCESSED.
- * (B4) .NE. 0, IF TO PAD NAME WITH BLANKS.
- * .EQ. 0, IF TO REMOVE BLANK PADDING.
- *
- * EXIT (X6) = PROCESSED NAME.
- * (B4) = UNCHANGED.
- *
- * USES X - 1, 2, 3, 4, 5, 6.
- * A - 2.
- ZFN SUBR ENTRY/EXIT
- SA2 =10H
- LX1 42
- MX5 12
- BX3 X1
- NZ B4,ZFN1 IF NAME TO BE BLANK FILLED
- BX3 X1-X2
- ZFN1 AX5 6
- BX4 -X5*X3
- NZ X4,ZFN1 IF MORE CHARACTERS IN NAME
- BX3 X1-X3 RESTORE FILL MASK
- BX2 X2-X3
- BX1 X5*X1 REMOVE OLD PADDING
- BX6 -X5*X2 ADD NEW PADDING
- BX6 X1+X6
- LX6 -42
- EQ ZFNX EXIT
- TITLE TRANSLATION SUBROUTINES.
- BHD SPACE 4,35
- ** BHD - BUILD HEADER FOR DOWNLINE MESSAGE.
- *
- * *BHD* BUILDS THE HEADER WORD FOR THE DOWNLINE BLOCK
- * OF DATA. IF MORE DATA REMAINS TO BE TRANSLATED, *BHD*
- * ASSEMBLES ALL INFORMATION NECESSARY TO CONTINUE THE
- * TRANSLATION LATER.
- *
- * ENTRY (X6) = CURRENT *WRITE* WORD, WITH CHARACTERS
- * RIGHT JUSTIFIED.
- * (B6) = NUMBER OF WHOLE EIGHT-BIT CHARACTERS THAT
- * WILL STILL FIT INTO (X6).
- * (SNDH) = SPECIAL HEADER, IF NEEDED FOR CONTROL BYTE.
- * (BHDB) = ADDRESS TO CONTINUE AT, IF REENTRY NECESSARY.
- * (BHDD) = BYTE TO CONTINUE AT, IF REENTRY NECESSARY.
- * (BHDC) .EQ. 0, IF CURRENT CHARACTER COUNT TO BE USED.
- * .GT. 0, IF TO USE CHARACTER COUNT AT LAST EOL.
- *
- * EXIT (X6) .EQ. 0, IF NO REENTRY REQUIRED.
- * .EQ. 42/0, 12/PP, 3/FB, 3/FW.
- * IF REENTRY REQUIRED, WHERE
- * PP = POT POINTER TO REMAINING DATA.
- * FW = FIRST WORD OF DATA IN POT PP.
- * FB = FIRST BYTE OF DATA IN WORD FW.
- *
- * USES X - 2, 3, 4, 5, 6, 7.
- * A - 3, 4, 5, 6, 7.
- * B - 6, 7.
- BHD SUBR ENTRY/EXIT
- * LEFT JUSTIFY AND STORE THE FINAL *WRITE* WORD.
- SA3 BHDC
- SX4 A6-SNDB+2
- LX4 59-0
- PL X4,BHD1 IF SECOND WORD OF PAIR
- LX6 4 ADJUST FOR 7.5 CHARACTER
- BHD1 SX2 B6
- LX2 3
- SB7 X2
- LX6 X6,B7 LEFT JUSTIFY LAST WORD
- SA6 A6+B1
- * PREPARE CHARACTER COUNT FOR HEADER.
- ZR X3,BHD2 IF CURRENT CHARACTER COUNT TO BE USED
- SA3 CBPA USE COUNT AT LAST EOL
- BX7 X3
- EQ BHD3 ADD COUNT TO HEADER
- BHD2 SA3 TDMC ADD COUNT IN CURRENT WORD TO TOTAL
- SX2 B6-7
- IX7 X3-X2
- BHD3 SA5 SNDH
- NZ X5,BHD4 IF CONTROL BYTE HEADER
- SA5 HDRM USE DEFAULT HEADER FOR MESSAGE
- BHD4 BX7 X7+X5 ADD CHARACTER COUNT TO HEADER
- SA7 SNDH
- SX6 B0
- SA3 BHDB
- ZR X3,BHDX IF REENTRY IS NOT REQUIRED
- * SET UP REENTRY INFORMATION.
- SA4 TDMA FIRST POT OF REMAINING DATA
- LX4 3
- TB6 X4,VBMP
- LX4 3
- SB7 X3
- SA3 BHDA FIRST BYTE OF REMAINING DATA
- LX3 3
- BX4 X3+X4
- SX6 B7-B6 FIRST WORD OF REMAINING DATA
- BX6 X4+X6
- EQ BHDX EXIT
- BHDA CON 0 BYTE AT WHICH TO CONTINUE
- BHDB CON 0 WORD AT WHICH TO CONTINUE
- BHDC CON 0 CHARACTER COUNT TO USE
- CBP SPACE 4,25
- ** CBP - CONTROL BYTE PROCESSOR.
- *
- * ENTRY (X2) = CONTROL BYTE.
- *
- * EXIT (X4) .NE. 0, IF TO IGNORE ANY REMAINING DATA.
- * (X7) .NE. 0 IF SPECIAL CHARACTER IN X2.
- *
- * USES X - 0, 1, 2, 3, 4, 5, 6, 7.
- * A - 1, 2, 3, 4, 5, 6, 7.
- * B - 3, 4, 5, 6, 7.
- *
- * CALLS ABT, CFE, ERQ, GNR, TNT, TTL.
- *
- * DEFINE (A0) = TERMINAL TABLE ADDRESS.
- * (A1) = CURRENT *READ* WORD ADDRESS.
- * (X1) = CURRENT *READ* WORD.
- * (A6) = CURRENT *WRITE* WORD ADDRESS.
- * (X6) = CURRENT *WRITE* WORD.
- * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
- * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
- * (B4) = LWA OF CURRENT *READ* POT.
- CBP SUBR ENTRY/EXIT
- SB7 X2 GET JUMP INDEX
- JP B7+CBP1 PROCESS CONTROL BYTE
- CBP1 BSS 0
- LOC 0
- EQ CB0 *0000* END OF LINE
- EQ CB1 *0001* END OF BLOCK
- EQ CB1 *0002* END OF BLOCK
- EQ CB3 *0003* AUTO INPUT
- EQ CB4 *0004* FORCE LOGOUT
- EQ CB5 *0005* START EXTENDED ASCII INPUT
- EQ CB6 *0006* START NAM TRANSPARENT INPUT
- EQ CB7 *0007* START NAM TRANSPARENT OUTPUT
- EQ CB10 *0010* TRMDEF - NAM/CDNA
- EQ CB11 *0011* START EXTENDED ASCII OUTPUT
- EQ CBP2 *0012* UNUSED
- EQ CB13 *0013* END OF STRING
- EQ CB14 *0014* INTERNAL END OF BLOCK
- EQ CB15 *0015* INTERNAL AUTO INPUT
- EQ CB16 *0016* TRMDEF - NAM/CCP
- LOC *O
- CBP2 SX6 3RCBP INCORRECT CONTROL BYTE
- RJ ABT
- MX6 1 TRANSLATION ERRORS
- EQ TDMX EXIT
- * *0000* - END OF LINE.
- * SAVE THE CHARACTER COUNT (INCLUDING THE UNIT SEPARATOR)
- * AT THE TIME THE EOL IS FOUND. SAVE BOTH THE ADDRESS
- * OF THE WORD IN WHICH THE UNIT SEPARATOR WILL BE STORED
- * AND ITS CHARACTER POSITION. CLEAR EXTENDED ASCII MODE
- * IF IT IS SET AND CLEAR PARTIAL LINE FLAG.
- CB0 SX7 A6+B1 SAVE ADDRESS AND POSITION OF EOL
- PX7 X7,B6
- SA7 CBPB
- SX7 A1 SAVE ADDRESS OF LAST *READ* WORD EOL
- BX5 X1
- SA7 CBPE
- SA3 TDMC SAVE CURRENT CHARACTER COUNT
- SX7 B6-8
- IX7 X3-X7
- SB3 B1+B1
- SA7 CBPA
- SX2 ASC.US RETURN A UNIT SEPARATOR
- SX1 1R. PRESET FORMAT EFFECTOR FOR NEXT LINE
- LX1 54
- SX4 B0 SET TO CONTINUE WITH DATA
- SA3 TDMG CHECK EFFECT MODE
- PL X3,CB0.1 IF NOT USER EFFECT MODE
- SB3 B1 RESET NUMBER OF CHARACTERS IN *READ* WORD
- SX1 B0
- NZ X5,CB0.1 IF NOT POSSIBLE DEGENERATE LINE
- SA3 A1-B1 CHECK FOR *EOL* IN PREVIOUS WORD
- MX5 -12
- BX3 -X5*X3
- NZ X3,CB0.1 IF CURRENT READ WORD IS *EOL*
- SB3 10
- SX2 ASC.SP RETURN A BLANK AS DEFAULT FORMAT EFFECTOR
- SX1 1R
- LX1 59-5
- CB0.1 TA3 B2,VMST CLEAR EXTENDED ASCII AND PARTIAL LINE FLAG
- MX7 58
- LX7 23-0
- BX7 X3*X7
- SA7 A3
- SX7 B0+ SET NO SPECIAL CHARACTER
- EQ CBPX EXIT
- * *0001*, *0002* - END OF BLOCK.
- * ADD UNIT SEPARATOR TO THE *WRITE* WORD IN *X6*. CHANGE
- * THE FORMAT EFFECTOR ON THE CURRENT LINE FROM A PERIOD
- * TO A COMMA SO THAT THE TERMINAL CARRIAGE WILL NOT ADVANCE
- * TO THE NEXT LINE.
- CB1 SX7 B7+ SAVE CONTROL BYTE
- SA7 CBPC
- SX2 ASC.US
- NZ B6,CB1.1 IF NOT THE 7.5 CHARACTER
- LX6 4 ADD TOP HALF OF SEPARATOR TO *X6*
- LX2 -4
- SX7 X2
- BX6 X6+X7
- SA6 A6+B1 STORE FIRST WORD
- MX7 -4
- SX3 A6-SNDB-SNDL
- PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
- LX2 4
- BX6 -X7*X2 PUT REMAINDER OF SEPARATOR IN *X6*
- SB6 7
- SA3 TDMC UPDATE CHARACTER COUNT
- SX7 X3+8
- SA7 A3+
- EQ CB1.2 CHANGE FORMAT EFFECTOR
- CB1.1 BX6 X2+X6 ADD UNIT SEPARATOR
- SB6 B6-B1
- NZ B6,CB1.2 IF WORD NOT FULL
- SX7 A6-SNDB+2
- LX7 59-0
- NG X7,CB1.2 IF IN FIRST WORD
- SA6 A6+B1 STORE SECOND WORD
- SX6 B0
- SB6 7
- SA3 TDMC UPDATE CHARACTER COUNT
- SX7 X3+B6
- SA7 A3
- SX3 A6-SNDB-SNDL
- PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
- CB1.2 RJ CFE CHANGE FORMAT EFFECTOR
- SA3 CBPC
- SX4 B1 SET END OF DATA FLAG
- SX7 X3-2R"IB"
- ZR X7,CBPX IF *0014* BYTE
- EQ CB0.1 CLEAR EXTENDED ASCII MODE
- * *0003* - AUTO INPUT.
- * ANY LINES PRECEEDING THE AUTO INPUT DATA MUST BE
- * TRANSMITTED BEFORE CONTINUING. THE CARRIAGE
- * WILL BE HELD AFTER THE OUTPUT.
- CB3 SA3 CBPA
- NZ X3,CB3.0 IF PREVIOUS DATA NOT YET TRANSMITTED
- SA5 HDRAI USE AUTO INPUT HEADER
- BX7 X5
- SA7 SNDH
- SA5 A0+VSTT GET OUTPUT POT POINTER
- MX2 -12
- BX5 -X2*X5
- LX5 3 CALCULATE POT ADDRESS
- TA2 X5,VBMP
- SX5 A1 SAVE ADDRESS OF *0003* BYTE
- SB5 B3+ SAVE REMAINING CHARACTER COUNT
- SX7 B3-12B
- NZ X7,CB3.4 IF *0003* NOT IN LAST BYTE
- SX5 A1-B1 RESET ADDRESS
- SB5 B0 RESET CHARACTER COUNT
- CB3.4 PX7 X5,B5
- SA7 A2+B1 SAVE IN POT
- MX7 1
- BX7 X2+X7 SET UPPER BIT AS FLAG
- SA7 A2+
- EQ CB1 HOLD CARRIAGE AT THIS POINT
- * BACK UP TO LAST EOL.
- CB3.0 SA1 CBPE GET LAST *READ* WORD EOL ADDRESS
- TX3 X1,-VBMP
- SA1 X1+
- BX7 X3
- AX7 3
- SA7 TDMA SAVE *READ* POT POINTER
- LX7 3
- BX3 X3-X7
- SX3 X3-VCPC+1
- NZ X3,CB3.1 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- CB3.1 SA1 A1+B1 GET NEXT *READ* WORD
- CB3.2 SX7 A1
- SA7 BHDB SET REENTRY POINT
- CB3.3 SX7 B1 TRANSMIT ALL COMPLETE LINES
- SA7 BHDC
- SX4 B1 STOP TRANSLATION
- SX7 B0
- ZR B6,CBPX IF ALREADY RIGHT JUSTIFIED
- LX6 -8
- EQ CBPX EXIT
- * *0004* - FORCE LOGOUT.
- * ISSUE FORCED LOGOUT DRIVER REQUEST AND DROP REMAINING
- * OUTPUT.
- CB4 SX0 A6 SAVE (A6)
- SX3 B6 SAVE (B6)
- SA6 CBPD SAVE (X6)
- LX3 18
- BX0 X0+X3
- SX7 2 SET FORCE LOGOUT VALUE
- SB3 B0
- SX6 /TLX/FLO FORCE LOGOUT
- RJ ERQ ENTER REQUEST
- SA3 X0
- AX0 18
- SB6 X0 RESTORE (B6)
- BX6 X3
- SA5 CBPD
- SA6 A3 RESTORE (A6)
- BX6 X5 RESTORE (X6)
- EQ CB3.3 TRANSMIT ALL COMPLETE LINES
- * *0005* - START ASCII INPUT.
- * SET EXTENDED ASCII INPUT MODE AND DROP REMAINING OUTPUT.
- CB5 SA3 A0+VDPT SET EXTENDED ASCII INPUT MODE
- SX7 1S14
- BX7 X3+X7
- SA7 A3
- EQ CB1 HOLD CARRIAGE AT THIS POINT
- * *0006* - START NAM TRANSPARENT INPUT.
- * ANY LINES PRECEEDING THE *0006* BYTE MUST BE TRANSMITTED
- * BEFORE CONTINUING BECAUSE NAM TRANSPARENT OUTPUT REQUIRES
- * A SPECIAL SUPERVISORY MESSAGE IN THE FOLLOWING FORMAT.
- *
- *T 8/ PFC,8/ SFC,8/ TLF,8/ TLV,8/ INF,8/ INV,8/ C1F,4/ 0
- *T, 4/ C1V,8/ C2F,8/ C2V,8/ TOF,8/ TOV,8/ DAF,8/ DAV,8/ XF
- *T, 8/ XV
- *
- * WHERE PFC = PRIMARY FUNCTION CODE (PFTC)
- * SFC = SECONDARY FUNCTION CODE (SFDM)
- * TLF = TRANSPARENT LINE FUNCTION
- * TLV = 0 = SINGLE LINE TRANSPARENT MODE
- * INF = INPUT FUNCTION
- * INV = 1 = TRANSPARENT MODE
- * C1F = CHARACTER COUNT FUNCTION (UPPER BYTE)
- * C1V = CHARACTER COUNT VALUE (UPPER BYTE)
- * C2F = CHARACTER COUNT FUNCTION (LOWER BYTE)
- * C2V = CHARACTER COUNT VALUE (LOWER BYTE)
- * TOF = TIMEOUT OPTION
- * TOV = 0 IF TIMEOUT NOT SELECTED
- * DAF = CHARACTER DELIMITER ACTIVE FUNCTION
- * DAV = 0, DELIMITER INACTIVE IF NO DELIMITER SPECIFIED
- * = 1, DELIMITER ACTIVE IF DELIMITER SPECIFIED
- * XF = DELIMITER FUNCTION
- * XV = DELIMITER VALUE
- CB6 SA3 CBPA
- NZ X3,CB3.2 IF PREVIOUS DATA NOT YET TRANSMITTED
- SA2 DLTDF STORE MESSAGE HEADER
- SA3 A2+1 STORE FIRST WORD OF TEXT
- SA4 A3+B1
- BX7 X2
- BX6 X3
- MX2 12 EXTRACT CHARACTER COUNT
- SA7 SNDH
- BX5 X1*X2
- MX2 8
- NZ X5,CB6.1 IF CHARACTER COUNT SUPPLIED
- SX5 B1
- LX5 48 SET DEFAULT COUNT OF ONE
- CB6.1 LX2 -4 SPLIT CHARACTER COUNT
- BX7 X2*X5 BOTTOM EIGHT BITS
- BX5 X5-X7 TOP FOUR BITS
- LX7 40-48
- SA6 SNDB
- BX6 X4+X5
- BX6 X6+X7
- SX5 B1
- LX5 8-0
- SX7 14
- LX1 12 CHECK FOR DELIMITER CHARACTER
- MX2 8 GET DELIMITER CHARACTER
- NG X1,CB6.2 IF NO DELIMITER CHARACTER
- LX1 4
- BX6 X5+X6
- SA6 A6+1
- BX3 X1*X2
- BX6 X3
- SX7 16
- CB6.2 SA6 A6+B1
- SA7 CBPA UPDATE LAST EOL CHARACTER COUNT
- LX5 15-8
- SA3 A0+VDPT
- BX7 X3+X5 SET TRANSPARENT INPUT MODE
- SA7 A3 REWRITE VDPT
- SX3 A1-B4
- NZ X3,CB6.3 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- CB6.3 SA1 A1+B1 GET NEXT *READ* WORD
- SX7 2R"IB"
- LX7 48
- BX3 X1-X7
- ZR X3,CB3.3 IF END OF *READ* DATA
- EQ CB3.2 SET REENTRY POINT
- * *0007* - START NAM TRANSPARENT OUTPUT.
- * ANY LINES PRECEEDING THE *0007* BYTE MUST BE TRANSMITTED
- * BEFORE CONTINUING BECAUSE NAM TRANSPARENT OUTPUT REQUIRES
- * A SPECIAL MESSAGE HEADER.
- CB7 SA3 CBPA
- NZ X3,CB3.2 IF PREVIOUS DATA NOT YET TRANSMITTED
- RJ TNT TRANSLATE NAM TRANSPARENT CHARACTERS
- SX4 B1
- SX7 B0
- EQ CBPX EXIT
- * *0010* - DOWNLINE TRMDEF FOR NAM/CDNA TERMINAL.
- * ANY LINES PRECEEDING THE TRMDEF LINE MUST BE
- * TRANSMITTED BEFORE CONTINUING BECAUSE TRMDEF
- * REQUIRES A SPECIAL MESSAGE HEADER.
- CB10 SA3 CBPA
- NZ X3,CB3.2 IF PREVIOUS DATA NOT YET TRANSMITTED
- SX6 B1+
- RJ TTL TRANSFER TRMDEF LINE - NAM/CDNA
- SX4 B1
- SX7 B0
- EQ CBPX EXIT
- * *0011* - START EXTENDED ASCII OUTPUT.
- CB11 TA3 B2,VMST SET EXTENDED ASCII BIT
- SX7 B1+
- LX7 23-0
- BX7 X7+X3
- SA7 A3+
- CB11.1 LX1 6 EXTRACT NEXT *READ* CHARACTER
- MX5 -6
- BX2 -X5*X1
- SA2 X2+TVXD LOOK IT UP IN THE TRANSLATION TABLE
- BX7 X2 SET UP SPECIAL CHARACTER MASK
- AX2 18
- SX2 X2 GET TRANSLATED VERSION
- SX4 B0
- EQ CBPX EXIT
- * *0013* - END OF STRING.
- * TERMINATE LINE WITHOUT CHANGING TERMINAL CARRIAGE.
- * IF FOLLOWED BY ADDITIONAL DATA, THE *0013* BYTE
- * TREATS THAT DATA AS A PART OF THE CURRENT LINE.
- * IF FOLLOWED BY ANOTHER CONTROL BYTE, THE *0013*
- * BYTE HOLDS THE TERMINAL CARRIAGE ON THE CURRENT
- * LINE AND TREATS THE FOLLOWING CONTROL BYTE AS THE
- * BEGINNING OF A NEW LINE.
- CB13 SX3 A1-B4
- SA4 TDMA SAVE CURRENT *READ* WORD POSITION
- SB5 X4
- SB7 B4
- SX0 A1
- NZ X3,CB13.1 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- CB13.1 SA1 A1+B1 GET NEXT *READ* WORD
- SB3 10
- MX7 12
- BX2 X1*X7
- LX2 12
- SX7 X2-17B
- NG X7,CB13.2 IF WITHIN CONTROL BYTE RANGE
- TA3 B2,VMST CLEAR EXTENDED ASCII BIT
- SX7 B1
- LX7 23-0
- BX7 -X7*X3
- SA7 A3
- EQ CB11.1 GET NEXT READ CHARACTER
- CB13.2 SX7 B5+ BACKUP TO PREVIOUS *READ* WORD
- SA7 TDMA
- SA1 X0
- SB4 B7
- SA3 PZDA
- SB7 X2
- LX3 X3,B7
- ZR B6,CB13.3 IF ACCUMULATOR IS RIGHT JUSTIFIED
- LX6 -8
- CB13.3 RJ CFE CHANGE FORMAT EFFECTOR
- ZR B6,CB13.4 IF ACCUMULATOR WAS RIGHT JUSTIFIED
- LX6 8
- CB13.4 SX2 ASC.US
- SX7 A1 SAVE ADDRESS OF LAST *READ* WORD EOL
- SA7 CBPE
- SX7 A6+B1
- PX7 X7,B6
- SA7 CBPB
- SA3 TDMC SAVE CHARACTER COUNT
- SX7 B6-8
- IX7 X3-X7
- SB3 B1+B1
- SA7 CBPA
- SX1 1R.
- LX1 54
- SX4 B0
- SX7 B0
- EQ CBPX EXIT
- * *0014* - INTERNAL END OF BLOCK.
- * ALL PRECEEDING DATA WILL BE TRANSMITTED AND THE
- * CARRIAGE WILL BE HELD AT ITS CURRENT POSITION.
- CB14 SX4 B6-6
- SA5 TDMG CHECK EFFECT MODE
- PL X5,CB14.0 IF NOT USER EFFECT MODE
- SX4 B6-7
- CB14.0 SA5 TDMC
- IX7 X5-X4
- TA4 B2,VMST
- LX4 59-24
- SA5 CBPA
- NZ X5,CB14.1 IF EOL ENCOUNTERED IN THIS POT CHAIN
- NG X4,CB14.2 IF NO EOL PRECEEDING *0014* BYTE
- CB14.1 BX7 X5-X7
- NZ X7,CB14.2 IF NO EOL PRECEEDING *0014* BYTE
- MX7 1 CLEAR PARTIAL LINE FLAG
- BX7 -X7*X4
- LX7 24-59
- SA7 A4
- EQ CB3.3 ALLOW CARRIAGE TO ADVANCE
- CB14.2 MX7 1 SET PARTIAL LINE FLAG
- BX7 X4+X7
- LX7 24-59
- SA7 A4
- EQ CB1 HOLD CARRIAGE
- * *0015* - EXECUTIVE AUTO MODE.
- * THE *AUTO* COMMAND CAUSES A LINE NUMBER TO BE SENT
- * DOWNLINE. ANY OUTPUT LINES PRECEDING THE AUTO LINE
- * NUMBER MUST BE TRANSMITTED BEFORE CONTINUING. THE
- * CARRIAGE WILL BE HELD AFTER THE LINE NUMBER.
- *
- CB15 SA3 CBPA
- NZ X3,CB3.0 IF PREVIOUS DATA NOT YET TRANSMITTED
- SA5 HDRAI USE AUTO INPUT HEADER
- BX7 X5
- SA7 SNDH
- EQ CB1 HOLD CARRIAGE AT THIS POINT
- * *0016* - DOWNLINE TRMDEF FOR NAM/CCP TERMINAL.
- * ANY LINES PRECEEDING THE TRMDEF LINE MUST BE
- * TRANSMITTED BEFORE CONTINUING BECAUSE TRMDEFS
- * REQUIRE A SPECIAL MESSAGE HEADER.
- CB16 SA3 CBPA
- NZ X3,CB3.2 IF PREVIOUS DATA NOT YET TRANSMITTED
- SX6 B0+
- RJ TTL TRANSFER TERMDEF LINE - NAM/CCP
- SX4 B1
- SX7 B0
- EQ CBPX EXIT
- CBPA CON 0 LAST EOL WORD COUNT
- CBPB CON 0 ADDRESS OF LAST EOL
- CBPC CON 0 CONTROL BYTE
- CBPD CON 0 SAVE *X6*
- CBPE CON 0 ADDRESS OF LAST *READ* WORD EOL
- CFE SPACE 4,30
- ** CFE - CHANGE FORMAT EFFECTOR.
- *
- * *CFE* CHANGES THE FORMAT EFFECTOR OF THE MOST RECENT
- * LINE FROM A PERIOD TO A COMMA IN ORDER TO PREVENT THE
- * TERMINAL CARRIAGE FROM ADVANCING AFTER THE LINE IS
- * PRINTED.
- *
- * ENTRY (CBPB) = ADDRESS OF LAST EOL.
- *
- * EXIT FORMAT EFFECTOR OF CURRENT LINE CHANGED FROM
- * A PERIOD TO COMMA UNLESS IN USER EFFECT MODE.
- *
- * USES X - 2, 3, 4, 5, 6, 7.
- * A - 3, 7.
- * B - 3, 4, 7.
- *
- * DEFINE (A0) = TERMINAL TABLE ADDRESS.
- * (A1) = CURRENT *READ* WORD ADDRESS.
- * (X1) = CURRENT *READ* WORD.
- * (A6) = CURRENT *WRITE* WORD ADDRESS.
- * (X6) = CURRENT *WRITE* WORD.
- * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
- * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
- * (B4) = LWA OF CURRENT *READ* POT.
- CFE SUBR ENTRY/EXIT
- SA3 TDMG CHECK EFFECT MODE
- NG X3,CFEX IF USER EFFECT MODE
- SA3 CBPB
- NZ X3,CFE1 IF MORE THAN ONE LINE ALREADY TRANSLATED
- * THE FORMAT EFFECTOR TO BE CHANGED IS THE FIRST CHARACTER
- * IN WORD TWO OF THE FIRST *WRITE* POT.
- SX3 SNDB-1
- SX7 B1+
- EQ CFE3 CHANGE FORMAT EFFECTOR
- * THE POSITION OF THE FORMAT EFFECTOR TO BE CHANGED
- * MUST BE CALCULATED USING THE CONTENTS OF *B6* AT THE
- * TIME THE LAST EOL WAS PROCESSED AND THE ADDRESS OF
- * THE WORD INTO WHICH THE CORRESPONDING UNIT SEPARATOR
- * WAS STORED.
- CFE1 SX7 B1
- UX3,B7 X3
- ZR B7,CFE3 IF UNIT SEPARATOR IS THE 7.5 CHARACTER
- NE B7,B1,CFE4 IF NOT AT THE BOTTOM OF A WORD
- SX5 X3-SNDB+2
- LX5 59-0
- NG X5,CFE3 IF UNIT SEPARATOR IS AT END OF SECOND WORD
- SB7 9 FORMAT EFFECTOR IS THE 7.5 CHARACTER
- SX3 X3+1
- EQ CFE4 COMPARE ADDRESSES
- CFE3 SX3 X3+1
- SB7 8
- * COMPARE ADDRESS AGAINST CURRENT *WRITE* WORD ADDRESS.
- CFE4 SX5 A6+B1
- BX5 X3-X5
- NZ X5,CFE5 IF FORMAT EFFECTOR IN PREVIOUS WORD
- * THE FORMAT EFFECTOR TO BE CHANGED IS IN THE CURRENT
- * *WRITE* WORD BEING BUILT IN *X6*. USING THE CURRENT
- * VALUE OF *B6*, CALCULATE WHERE THE FORMAT EFFECTOR
- * IS POSITIONED AND CHANGE IT FROM A PERIOD TO A COMMA.
- SX5 B7-B6
- LX5 3
- SB7 X5-15
- LX7 X7,B7
- BX6 -X7*X6 CHANGE FORMAT EFFECTOR
- EQ CFEX EXIT
- * THE FORMAT EFFECTOR TO BE CHANGED IS IN A WORD THAT
- * HAS PREVIOUSLY BEEN STORED. LOAD THE WORD, CALCULATE
- * THE POSITION OF THE FORMAT EFFECTOR, AND CHANGE IT FROM
- * A PERIOD TO A COMMA. THEN REWRITE THE WORD IN PLACE.
- CFE5 SX5 B7-B1
- LX5 3
- SB7 X5-3
- SX5 X3-SNDB+2
- LX5 59-0
- PL X5,CFE6 IF IN FIRST WORD OF PAIR
- SB7 B7-4
- CFE6 SA3 X3
- LX7 X7,B7
- BX7 -X7*X3 CHANGE FORMAT EFFECTOR
- SA7 A3
- EQ CFEX EXIT
- COC SPACE 4,10
- ** COC - CHECK OUTPUT CHAINS.
- *
- * ENTRY (A6, X6, B6) = *WRITE* WORD POSITION.
- * (B7) = RETURN ADDRESS FOR XPT OUTPUT PROCESSING.
- *
- * EXIT (B4) = 0, DO NOT CONTINUE TRANSLATION.
- * = LWA *READ* POT, IF TRANSLATION TO CONTINE.
- * TRANSLATION REGISTERS SET UP OR PRESERVED -
- * A6, X6, B6, B7, A1, X1, B3, B4.
- * *TDMA* AND *TDMF* UPDATED.
- *
- * USES X - 1, 2, 3, 4, 6, 7.
- * A - 1, 2, 3, 4, 6, 7.
- * B - 3, 4, 6, 7.
- *
- * CALLS UOC.
- *
- * NOTES THE CONCATENATION FIELD IN THE SECOND WORD OF THE POT
- * CHAIN HEADER IS SET BY *1MI* FOR WRITER OR WRITEF
- * *CIO* FUNCTIONS (SEE *ANM*).
- *
- COC SUBR ENTRY/EXIT
- SB4 B0 SET NOT TO CONTINUE TRANSLATION
- MX7 -12
- SA3 SNDH
- NZ X3,COCX IF HEADER ALREADY SET
- SA3 A0+VSTT GET POINTER TO NEXT OUTPUT CHAIN
- BX3 -X7*X3 CURRENT CHAIN POINTER
- LX3 3
- TA3 X3,VBMP
- BX7 -X7*X3 NEXT CHAIN POINTER
- LX7 3
- ZR X7,COCX IF NO NEXT CHAIN
- SA4 A3+B1 GET SECOND WORD OF POT CHAIN HEADER
- TA3 X7+1,VBMP CHECK IF HEADER PROVIDED
- MX7 6
- BX3 X7*X3
- NZ X3,COCX IF HEADER PROVIDED
- LX4 59-1
- NG X4,COCX IF WRITER OR WRITEF THEN RETURN
- SA3 A3-1
- LX7 30
- BX2 X7*X3 POT COUNT IN THIS MESSAGE
- TA3 B2,VMST GET BLOCKSIZE
- MX7 -5
- AX3 18
- BX3 -X7*X3 NUMBER OF POTS IN BSZ
- AX2 24
- SX2 X2+B1 INSURANCE
- IX3 X3-X2 BSZ-NEXT IN POTS
- SX2 60D
- IX2 X3*X2 BSZ-NEXT IN CHARACTERS
- SA3 TDMC
- IX3 X2-X3
- SX2 2R"IB" RESET CONTROL BYTE
- NG X3,COCX IF NOT ENOUGH ROOM FOR NEXT CHAIN
- SX7 A6 PRESERVE REGISTERS USED FOR CONTINUATION
- SA7 COCA
- SA6 A7+B1
- SX7 B7
- SX6 B6
- LX6 30
- BX7 X6+X7
- SA7 A6+B1
- RJ UOC UPDATE OUTPUT CHAINS
- * SET UP REENTRY TO TRANSLATION LOOP.
- SA1 COCA RESTORE CONTINUATION REGISTERS
- SA2 X1
- BX6 X2
- SA6 A2 (A6) RESTORED
- SA2 A1+B1
- BX6 X2 (X6) RESTORED
- SA2 A2+B1
- SB7 X2 (B7) RESTORED
- AX2 30
- SB6 X2 (B6) RESTORED
- SA1 A0+VSTT GET POSSIBLE NEW CHARACTER SET
- MX7 -12
- BX7 -X7*X1
- SA7 TDMA UPDATE *READ* POT POINTER
- LX7 3
- TA1 X7+1,VBMP GET CHARACTER SET
- SB4 A1+VCPC-2
- BX7 X1
- LX7 59-0
- SA7 TDMF
- TA2 B2,VMST CHECK SPECIAL CONTINUATION
- MX3 57
- LX3 25-0
- BX7 X3*X2 CLEAR POSSIBLE CONTINUATION BITS
- BX3 -X3*X2
- SA7 A2 REWRITE VMST
- ZR X3,COC3 IF NO SPECIAL CONTINUATION
- LX3 59-26
- LX2 X3,B1
- NG X2,COCX IF TRANSPARENT MODE CONTINUATION
- SB3 B1
- SX2 ASC.CF SET 76 ESCAPE CODE
- NG X3,COC1 IF 76 CONTINUATION
- SX2 ASC.AT SET 74 ESCAPE CODE
- COC1 MX7 1 SET UP SPECIAL CONTINUATION
- LX7 59
- EQ COCX RETURN
- COC3 SA2 TDMD GET OLD RETURN ADDRESS
- MX7 -18
- SA3 TRAR
- SB3 TRARL
- COC4 BX4 -X7*X3
- BX4 X4-X2
- ZR X4,COC5 IF ADDRESS FOUND
- SA3 A3+B1
- SB3 B3-B1
- NZ B3,COC4 IF SEARCH NOT COMPLETE
- SB3 11 SET UP PSEUDO CONTINUATION
- SX2 B0
- EQ COCX RETURN
- COC5 AX3 18
- PL X3,COC6 IF (X6) OK
- LX6 -8 REPOSITION *WRITE* WORD
- COC6 MX5 -6 RESET STANDARD CHARACTER MASK
- SB7 X2 RESET OLD RETURN ADDRESS
- SB3 X3+ GET NEW RETURN ADDRESS
- JP B3 RETURN THERE
- COCA BSS 3 CONTINUATION REGISTERS (A6, X6, B6, B7)
- TRAR SPACE 4,10
- ** TRAR - TABLE OF RETURN ADDRESSES TO RESET.
- *
- *T 1/F,23/ 0,18/ NEW ADDRESS,18/ OLD ADDRESS
- * F = SET IF (X6) NEEDS REPOSITIONING.
- TRAR BSS 0
- VFD 1/1,23/0,18/TDM4,18/TDM6
- VFD 1/0,23/0,18/TDM9,18/TDM11
- VFD 1/1,23/0,18/TDM12,18/TDM14
- TRARL EQU *-TRAR
- GNR SPACE 4,30
- ** GNR - GET NEXT *READ* POT.
- *
- * *GNR* DETERMINES THE NEXT *READ* POT IN THE CHAIN AND SETS
- * UP THE *READ* DEFINED REGISTERS. IF NO POT IS FOUND,
- * *GNR* RETURNS A *0014* CONTROL BYTE TO FORCE END OF DATA.
- *
- * ENTRY (TDMA) = CURRENT *READ* POT POINTER.
- *
- * EXIT (A1) = FIRST WORD ADDRESS OF THE POT - 1.
- * (B4) = LWA OF NEW *READ* POT.
- *
- * USES X - 1, 5, 6, 7.
- * A - 1, 7.
- * B - 3, 4.
- *
- * CALLS GPL.
- *
- * DEFINE (A0) = TERMINAL TABLE ADDRESS.
- * (A1) = CURRENT *READ* WORD ADDRESS.
- * (X1) = CURRENT *READ* WORD.
- * (A6) = CURRENT *WRITE* WORD ADDRESS.
- * (X6) = CURRENT *WRITE* WORD.
- * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
- * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
- * (B4) = LWA OF CURRENT *READ* POT.
- * (B7) = RETURN ADDRESS FOR SPECIAL CHARACTER HANDLING.
- GNR SUBR ENTRY/EXIT
- SA1 TDMA CURRENT *READ* POT POINTER
- BX5 X6
- SB3 X1
- RJ GPL GET THE NEXT LINK
- SX7 B3
- SA7 TDMA UPDATE CURRENT *READ* POT POINTER
- SA1 B4-B1
- BX6 X5
- SB4 A1+VCPC
- NZ B3,GNRX IF ANOTHER LINK IS FOUND
- SA1 GNRA-1 RETURN A *0014* BYTE
- EQ GNRX EXIT
- GNRA CON 2L"IB"
- IVD SPACE 4,30
- ** IVD - INITIALIZE VIRTUAL ASCII DISASSEMBLY.
- *
- * GETS POT CHAIN FOR TRANSLATION ROUTINES, AND INITIALIZES
- * VDPT IF NECESSARY.
- *
- * ENTRY (X2) = NUMBER OF DISPLAY CHARACTERS PER WORD.
- * (X7) = ASCII CHARACTER COUNT.
- *
- * EXIT (X6) = ZERO IF INSUFFICIENT POTS AVAILABLE.
- * (X0) AND (X5) UNCHANGED.
- * (VDPT) = INITIALIZED IF FIRST BLOCK OF LOGICAL LINE.
- *
- * CALLS GPC.
- IVD SUBR ENTRY/EXIT
- BX6 X5 SAVE *X5*
- SA6 IVDA
- MX3 -3
- SA1 A0+VDPT
- LX1 30
- BX3 -X3*X1 GET WORD COUNT
- SB6 X3 WORD OFFSET IN POT
- LX1 24-30
- MX6 -12
- BX3 -X6*X1 CURRENT POT
- NZ X3,IVD1 IF CURRENT POT EXISTS
- LX1 -12
- BX3 -X6*X1 FIRST POT
- IVD1 SB3 X3+ POT TO LINK TO
- * GET POT CHAIN.
- IX3 X7+X2 CHARACTERS NEEDED
- IX3 X3/X2 WORDS REQUIRED
- SB6 B6+X3 PLUS OFFSET
- SB6 B6+2 PLUS TWO
- RJ GPC GET POT CHAIN
- SA5 IVDA RESTORE *X5*
- ZR X6,IVDX IF NOT ENOUGH POTS
- SX6 B1 SET EXIT CONDITION
- SA3 RCCW
- PL X3,IVDX IF NOT FIRST TIME THROUGH
- SA2 A0+VDPT
- MX3 6
- LX3 30
- BX6 -X3*X2 CLEAR BIT COUNT
- SX3 60D NEW BIT COUNT
- LX3 24
- BX6 X3+X6
- MX3 30
- BX7 X3*X2 CHECK POT POINTERS
- NZ X7,IVD2 IF POT POINTERS ALREADY SET
- SX3 B3
- LX3 36
- BX6 X3+X6 INSERT LAST POT
- LX3 12
- BX6 X3+X6 INSERT FIRST POT
- IVD2 SA6 A2 REWRITE VDPT
- EQ IVDX RETURN
- IVDA CON 0 SAVE *X5*
- PZD SPACE 4,40
- ** PZD - PROCESS ZERO DISPLAY CHARACTER.
- *
- * *PZD* DETERMINES WHETHER OR NOT A ZERO DISPLAY
- * CHARACTER IS PART OF A CONTROL BYTE OR AN EOL.
- *
- * ENTRY (X1) = CURRENT *READ* WORD, WITH ZERO CHARACTER IN
- * THE BOTTOM SIX BITS.
- * (B3) = NUMBER OF CHARACTERS LEFT TO PROCESS IN X1,
- * INCLUDING THE ZERO CHARACTER.
- *
- * EXIT (X7) .GE. 0,
- * (X2) = COLON, IN ASCII.
- * (X1) = CURRENT *READ* WORD, WITH CHARACTER
- * FOLLOWING THE COLON IN THE TOP SIX
- * BITS.
- * (B3) = NUMBER OF CHARACTERS LEFT TO PROCESS
- * IN X1, INCLUDING THE COLON.
- * (X7) .LT. 0,
- * (X2) = CONTROL BYTE.
- * (X1) = CURRENT *READ* WORD, WITH CHARACTER
- * FOLLOWING THE CONTROL BYTE IN THE TOP
- * SIX BITS.
- * (B3) = NUMBER OF CHARACTERS LEFT TO PROCESS
- * IN X1, NOT COUNTING THE CONTROL BYTE.
- *
- * USES X - 1, 2, 3, 4, 5, 7.
- * A - 1, 3, 4, 5, 7.
- * B - 3, 7.
- *
- * CALLS GNR, COC.
- *
- * DEFINE (A0) = TERMINAL TABLE ADDRESS.
- * (A1) = CURRENT *READ* WORD ADDRESS.
- * (X1) = CURRENT *READ* WORD.
- * (A6) = CURRENT *WRITE* WORD ADDRESS.
- * (X6) = CURRENT *WRITE* WORD.
- * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
- * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
- * (B4) = LWA OF CURRENT *READ* POT.
- PZD SUBR ENTRY/EXIT
- SX7 B0+
- SA7 PZDB
- * CHECK FOR END OF LINE CONTROL BYTE FIRST.
- SB3 B3-B1
- NZ B3,PZD2 IF NOT THE LAST SIX BITS OF WORD
- SX2 A1-B4
- NZ X2,PZD1 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- PZD1 SA1 A1+1 GET NEXT *READ* WORD
- SB3 10
- PZD2 SX3 B3+ BUILD MASK TO CHECK FOR EOL
- SX2 6
- IX2 X2*X3
- MX7 1
- SB7 X2-1
- AX7 X7,B7
- BX2 X7*X1
- ZR X2,PZDX IF END OF LINE
- * IF THE ZERO CHARACTER IS IN THE LOWER HALF OF A BYTE
- * AND IS IMMEDIATELY FOLLOWED BY ONE OF THE CONTROL
- * BYTES *0001*, *0002*, *0003*, *0005* OR *0013*, IT WILL
- * NOT BE PRINTED ON THE TERMINAL.
- LX3 59-0
- NG X3,PZD3 IF ZERO CHARACTER IN TOP HALF OF BYTE
- MX7 12 CHECK IF FOLLOWED BY A CONTROL BYTE
- BX2 X7*X1
- LX2 12
- SX7 X2-17B
- PL X7,PZD16 IF NOT IN CONTROL BYTE RANGE
- SX3 35010B
- SB7 X2+45
- LX3 X3,B7
- PL X3,PZD16 IF NOT A VALID CONTROL BYTE
- * STORE POSITION OF ZERO CHARACTER IN CASE CONTROL BYTE DOES
- * NOT TURN OUT TO BE VALID.
- SX7 A1
- PX7 X7,B3
- SA7 PZDB
- SB3 B3-B1 ADVANCE POINTER TO THE CONTROL BYTE
- LX1 6
- * CHECK IF A CONTROL BYTE EXISTS WITH THIS VALUE.
- PZD3 MX7 6 GET LOWER HALF OF THE CONTROL BYTE
- BX2 X7*X1
- SA3 PZDA
- LX2 6
- SX7 X2-17B
- PL X7,PZD16 IF NOT IN CONTROL BYTE RANGE
- SB7 X2+
- LX3 X3,B7
- PL X3,PZD16 IF NOT A VALID CONTROL BYTE
- * CHECK IF THE POTENTIAL CONTROL BYTE MUST BE THE FIRST
- * BYTE OF A WORD AND MUST BE PRECEEDED BY AN END OF LINE.
- LX3 15
- PL X3,PZD5 IF FIRST BYTE POSITION NOT REQUIRED
- SX5 B3-9
- NZ X5,PZD16 IF NOT THE FIRST BYTE
- SX5 X2-2R"IB"
- ZR X5,PZD5 IF *0014* BYTE, NO PRECEEDING EOL NEEDED
- SX4 B6-6 CALCULATE CURRENT CHARACTER COUNT
- SA5 TDMG CHECK EFFECT MODE
- PL X5,PZD3.1 IF NOT USER EFFECT MODE
- SX4 B6-7
- PZD3.1 SA5 TDMC
- IX7 X5-X4
- TA4 B2,VMST
- LX4 59-24
- SA5 CBPA COMPARE WITH TOTAL AT LAST EOL
- NZ X5,PZD4 IF EOL ENCOUNTERED IN THIS POT CHAIN
- NG X4,PZD16 IF NO EOL PRECEEDING CONTROL BYTE
- PZD4 IX7 X5-X7
- NZ X7,PZD16 IF NO EOL PRECEEDING CONTROL BYTE
- * CHECK IF THE POTENTIAL CONTROL BYTE MUST BE FOLLOWED
- * BY AN END OF LINE.
- PZD5 LX3 15
- PL X3,PZD9 IF TRAILING EOL NOT NECESSARY
- SX5 B3-B1
- ZR X5,PZD6 IF LAST BYTE OF WORD, LOOK ONE WORD AHEAD
- SX4 6 BUILD MASK TO CHECK FOR EOL
- IX5 X5*X4
- MX7 1
- SB7 X5-1
- AX7 B7,X7
- LX7 -6
- BX4 X7*X1
- NZ X4,PZD16 IF NO EOL FOLLOWING, NOT A CONTROL BYTE
- EQ PZD9 CONTROL BYTE IS VALID
- * PROCESS THE CASE WHERE THE CONTROL BYTE IS THE LAST
- * BYTE IN A WORD. CHECK NEXT WORD TO SEE IF IT IS AN
- * EOL. STORE CURRENT POSITION IN CASE CONTROL BYTE
- * IS NOT VALID.
- PZD6 SA4 PZDB STORE CURRENT POSITION
- SX7 A1
- PX7 X7,B3
- NZ X4,PZD7 IF PRECEEDING COLON POSITION SAVED
- SA7 A4+
- PZD7 SX4 A1-B4
- NZ X4,PZD8 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- SA3 PZDA
- SB7 X2+30
- LX3 X3,B7
- PZD8 SA1 A1+1 GET NEXT *READ* WORD
- NZ X1,PZD16 IF CONTROL BYTE NOT FOLLOWED BY AN EOL
- SB3 11
- LX1 -6
- * SOME OF THE CONTROL BYTES HAVE SPECIAL CRITERIA IN
- * ADDITION TO THE ABOVE TESTS WHICH MUST BE MET FOR
- * THE CONTROL BYTE TO BE CONSIDERED VALID. PERFORM ANY
- * SPECIAL CHECKS FOR THE CURRENT CONTROL BYTE.
- PZD9 LX3 15
- PL X3,PZD15 IF NO SPECIAL CHECKING NECESSARY
- * THE BOTTOM TWO BYTES IN THE DISPLAY CODE WORD IN WHICH
- * A *0006* BYTE OCCURS MUST BE ZERO.
- PZD12 SX5 X2-2R"BI"
- NZ X5,PZD13 IF NOT A *0006* BYTE
- SX7 7777B
- LX7 6
- BX7 X1*X7
- NZ X7,PZD16 IF LAST TWO BYTES ARE NOT ZERO
- EQ PZD15 CONTROL BYTE IS VALID
- * BOTH A *0007* AND A *0016* BYTE MUST BE FOLLOWED BY AT
- * LEAST ONE VALID TRANPARENT-TYPE CHARACTER, IE, THE TOP
- * FOUR BITS OF THE BYTE SHOULD BE *1000*.
- PZD13 SX5 X2-2R"BO"
- ZR X5,PZD13.1 IF A *0007* BYTE
- SX5 X2-10B
- ZR X5,PZD13.1 IF A *0010* BYTE
- SX5 X2-16B
- NZ X5,PZD13.2 IF NOT A *0016* BYTE
- PZD13.1 MX7 4
- LX7 -6
- BX7 X7*X1
- LX7 10
- SX7 X7-10B
- NZ X7,PZD16 IF NOT FOLLOWED BY TRANSPARENT CHARACTER
- EQ PZD15 CONTROL BYTE IS VALID
- * A *0014* CONTROL BYTE WILL ONLY BE PROCESSED IF
- * NO MORE OUTPUT DATA CAN BE PROCESSED - IT MUST BE
- * CHAINED IN VSTT AND FIT IN THE SEND BUFFER FOR
- * TRANSLATION TO BE CONTINUED IGNORING THE *0014*.
- PZD13.2 SX5 X2-2R"IB"
- NZ X5,PZD14 IF NOT *0014*
- RJ COC CHECK OUTPUT CHAINS
- ZR B4,PZD15 IF NO CONTINUATION
- EQ PZDX RETURN
- * A *0015* BYTE MAY ONLY BE USED BY IAF FOR INTERNAL
- * AUTO INPUT MODE. IT MUST ALSO HAVE A PRECEEDING END OF LINE
- * IN THE DISPLAY CODE WORD IN WHICH IT APPEARS.
- PZD14 SA5 A0+VDCT CHECK FOR AUTO MODE BIT SET
- LX5 59-49
- PL X5,PZD16 IF NOT IAF INTERNAL AUTO MODE
- SA5 TDMC COMPUTE CHARACTER COUNT AT START OF WORD
- SX4 B6-7+9
- IX7 X5-X4
- TA4 B2,VMST
- LX4 59-24
- SA5 CBPA COMPARE WITH TOTAL AT LAST EOL
- NZ X5,PZD14.1 IF EOL ENCOUNTERED IN THIS POT CHAIN
- NG X4,PZD16 IF NO EOL PRECEEDING CURRENT WORD
- PZD14.1 IX7 X5-X7
- NG X7,PZD16 IF NO EOL PRECEEDING CURRENT WORD
- * A CONTROL BYTE HAS BEEN FOUND WHICH PASSES ALL CRITERIA.
- PZD15 LX1 6
- MX7 1
- SB3 B3-1 GET TO NEXT CHARACTER
- EQ PZDX EXIT
- * THE ZERO CHARACTER WAS NOT PART OF A VALID CONTROL
- * BYTE. SET UP EXIT CONDITIONS, RESTORING ALL *READ*
- * DEFINED REGISTERS IF NECESSARY.
- PZD16 SX2 ASC.CL
- SX7 B0 NOT A CONTROL BYTE
- SB3 B3+B1 BACK UP TO INCLUDE THE COLON
- SA3 PZDB
- ZR X3,PZDX IF COLON IN CURRENT WORD
- UX3,B3 X3 BACK UP TO PREVIOUS WORD
- SA1 X3
- SX5 6
- SX3 B3-10
- IX3 X3*X5
- SB7 X3
- AX1 X1,B7 SHIFT *READ* WORD TO CORRECT POSITION
- SB3 B3+B1
- TX7 A1,-VBMP
- AX7 3
- SA7 TDMA
- LX7 3
- TB4 X7+VCPC-1,VBMP
- SX7 B0 RESTORE EXIT CONDITION
- EQ PZDX EXIT
- PZDA VFD 15/37757B,15/02745B,15/37016B,15/00707B
- PZDB CON 0
- TDM SPACE 4,20
- ** TDM - TRANSLATE DISPLAY CODED MESSAGE.
- *
- * TRANSLATES DISPLAY CODED DATA TO IVT ASCII, PACKING
- * SEVEN AND ONE HALF CHARACTERS PER WORD.
- * CODE IN THIS SUBROUTINE IS MONOLITHIC BECAUSE OF TIMING
- * CONSIDERATIONS.
- *
- * ENTRY (B2) = TERMINAL NUMBER.
- * (X6) = FIRST *READ* POT POINTER.
- * (B6) = FWA IN FIRST DISPLAY CODE POT.
- * (B7) = FIRST BYTE IN WORD.
- *
- * EXIT (X6) .EQ. 0, IF ALL DATA TRANSLATED.
- * .LT. 0, IF TRANSLATION ERROR.
- * .EQ. 42/0, 12/PP, 3/FB, 3/FW.
- * IF REENTRY REQUIRED, WHERE
- * PP = POT POINTER TO REMAINING DATA.
- * FW = FIRST WORD OF DATA IN POT PP.
- * FB = FIRST BYTE OF DATA IN WORD FW.
- *
- * USES X - 1, 2, 3, 4, 5, 6, 7.
- * A - 1, 2, 3, 4, 5, 6, 7.
- * B - 3, 4, 5, 6, 7.
- *
- * CALLS BHD, CPB, GNR, PZD, TNT.
- *
- * DEFINE (A0) = TERMINAL TABLE ADDRESS.
- * (X5) = CHARACTER MASK.
- * (A1) = CURRENT *READ* WORD ADDRESS.
- * (X1) = CURRENT *READ* WORD.
- * (A6) = CURRENT *WRITE* WORD ADDRESS.
- * (X6) = CURRENT *WRITE* WORD.
- * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
- * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
- * (B4) = LWA OF CURRENT *READ* POT.
- * (B7) = RETURN ADDRESS FOR SPECIAL CHARACTER HANDLING.
- TDM SUBR ENTRY/EXIT
- * INITIALIZE DEFINED REGISTERS AND CELLS.
- SA6 TDMA SAVE INITIAL *READ* POT POINTER
- SA3 A0+VSTT
- MX7 -12
- LX6 3
- TX1 X6,VBMP
- SB4 X1+VCPC-1 SET LWA OF CURRENT *READ* POT
- SB6 B6-B1
- SA1 X1+B6 (A1) IS *READ* POT ADDRESS - 1
- BX3 -X7*X3 SAVE OUTPUT CHARACTER SET
- LX3 3
- TA3 X3+1,VBMP
- BX6 X3
- LX6 59-0
- SA6 TDMF
- LX6 0-59+59-2
- SA6 A6+B1 SAVE CURRENT EFFECT MODE
- ERRNZ TDMF-TDMG+1 CODE REQUIRES CONTIGUOUS WORDS
- SX7 B0
- SX6 B0
- SA7 TDMC INITIALIZE TRANSLATED CHARACTER COUNT
- SA6 CBPA INITIALIZE LAST EOL POSITION
- SA7 A6+B1
- SA7 BHDA INITIALIZE REENTRY INFORMATION
- SA6 A7+B1
- SA7 A6+B1
- SA6 SNDH
- SB6 6 INITIAL *WRITE* WORD CHARACTER COUNT
- SX6 ASC.PD INITIAL LINE FORMAT AFFECTOR
- * CHECK IF THIS IS A CONTINUATION OF DATA IN A PREVIOUS
- * DOWNLINE BLOCK.
- TA2 B2,VMST GET CONTINUATION FLAGS
- MX7 -3
- LX2 59-24
- SA3 TDMG CHECK EFFECT MODE
- SX4 B1
- BX4 X2*X4
- NZ X4,TDM1 IF NAM CONTINUATION
- PL X2,TDM3 IF NOT PARTIAL LINE
- PL X3,TDM1 IF NOT USER EFFECT MODE
- SX6 ASC.CM HOLD CARRIAGE FORMAT AFFECTOR
- TDM1 BX5 -X7*X2 74 - 76 NAM CONTINUATION
- ZR X5,TDM3.1 IF NOT CONTINUATION
- MX5 2
- SA4 A0+VROT CHECK FOR RESOURCE LIMIT
- LX4 59-19
- BX5 X5*X4
- ZR X5,TDM1.1 IF NO LIMIT HAS OCCURRED
- MX7 -2 LEAVE NAM TRANSPARENT CONTINUATION SET
- LX7 1
- TDM1.1 BX7 X7*X2 CLEAR CONTINUATION FLAGS
- MX5 -6
- LX7 25
- SA1 A1+B1
- SA7 A2
- SB3 10
- LX2 59-27+25-0
- LX6 8
- SB7 TDM6
- SX4 200B
- NG X2,TDM21 IF 74 ESCAPE CODE CONTINUATION
- LX2 59-26-59+27
- AX4 1
- NG X2,TDM21 IF 76 ESCAPE CODE CONTINUATION
- LX6 -8
- * PROCESS NAM TRANSPARENT DATA CONTINUATION.
- ZR X1,TDM2 IF DATA STARTS WITH AN EOL
- MX7 12
- BX7 X1*X7
- LX7 4
- SX2 X7-10B
- ZR X2,TDM2 IF FIRST CHARACTER IS TRANSPARENT
- LX7 8
- SX7 X7-0007B
- ZR X7,TDM2 IF *0007* CONTROL BYTE
- PL X3,TDM5 IF NOT USER EFFECT MODE
- SB6 7
- SX6 B0
- EQ TDM5 ENTER TRANSLATION LOOP
- TDM2 RJ TNT NAM TRANSPARENT CONTINUATION
- RJ BHD
- EQ TDMX EXIT
- * CHECK IF DATA STARTS AT THE BEGINNING OF THE POT.
- TDM3 PL X3,TDM3.1 IF NOT USER EFFECT MODE
- SB6 7 WORD EMPTY
- SX6 B0 CLEAR *WRITE* WORD
- TDM3.1 SX3 B7+B7 CHARACTER POSITION TO START AT
- SB7 TDM6
- MX5 -6
- ZR X3,TDM4 IF DATA STARTS ON A WORD BOUNDARY
- SX2 -6
- SA1 A1+B1 POSITION FIRST WORD TO BEGINNING OF DATA
- IX7 X2*X3
- SB3 X7+60
- LX1 X1,B3
- SB3 X3
- EQ TDM5 ENTER TRANSLATION LOOP
- * BUILD FIRST WORD OF PAIR.
- TDM4 SA1 A1+1 GET NEXT *READ* WORD
- SB3 10
- TDM5 LX1 6 EXTRACT NEXT *READ* CHARACTER
- BX2 -X5*X1
- SA2 X2+TVXD LOOK IT UP IN THE TRANSLATION TABLE
- LX6 8
- BX7 X2
- AX2 18 GET TRANSLATED VERSION
- LX7 59-58
- SX2 X2+
- NG X7,TDM18 IF CHARACTER NEEDS SPECIAL PROCESSING
- TDM6 SB6 B6-B1
- BX6 X6+X2 ADD CHARACTER TO *WRITE* WORD
- SB3 B3-1
- ZR B6,TDM8 IF SEVENTH CHARACTER COMPLETED
- TDM7 NZ B3,TDM5 IF MORE CHARACTERS IN *READ* WORD
- SX3 A1-B4
- NZ X3,TDM4 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- MX5 -6
- EQ TDM4 GET FIRST WORD OF NEW POT
- * BUILD 7.5 CHARACTER.
- TDM8 NZ B3,TDM10 IF MORE CHARACTERS IN *READ* WORD
- SX3 A1-B4
- NZ X3,TDM9 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- TDM9 SA1 A1+B1 GET NEXT *READ* WORD
- SB3 10
- MX5 -6
- TDM10 LX1 6 EXTRACT NEXT *READ* CHARACTER
- BX2 -X5*X1
- SA2 X2+TVXD LOOK IT UP IN THE TRANSLATION TABLE
- SB7 TDM11
- BX7 X2
- AX2 18 GET TRANSLATED VERSION
- LX7 59-58
- SX2 X2
- NG X7,TDM18 IF CHARACTER NEEDS SPECIAL PROCESSING
- TDM11 LX6 4
- LX2 56
- SX7 X2
- BX6 X6+X7 ADD TOP HALF OF CHARACTER TO *WRITE* WORD
- SA6 A6+B1 STORE FIRST WORD OF *WRITE* PAIR
- MX7 -4
- SX3 A6-SNDB-SNDL
- PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
- LX2 -56
- BX6 -X7*X2
- SB6 7
- SA3 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
- SX7 X3+8
- SB3 B3-B1
- SA7 A3
- SB7 TDM14
- EQ TDM15 ENTER TRANSLATION LOOP
- * BUILD SECOND WORD OF PAIR.
- TDM12 SA1 A1+1 GET NEXT *READ* WORD
- SB3 10
- TDM13 LX1 6 EXTRACT NEXT *READ* CHARACTER
- BX2 -X5*X1
- SA2 X2+TVXD LOOK IT UP IN THE TRANSLATION TABLE
- LX6 8
- BX7 X2
- AX2 18 GET TRANSLATED VERSION
- LX7 59-58
- SX2 X2+
- NG X7,TDM18 IF CHARACTER NEEDS SPECIAL PROCESSING
- TDM14 SB6 B6-B1
- BX6 X6+X2 ADD CHARACTER TO *WRITE* WORD
- SB3 B3-1
- ZR B6,TDM16 IF SECOND WORD IS FULL
- TDM15 NZ B3,TDM13 IF MORE CHARACTERS IN *READ* WORD
- SX3 A1-B4
- NZ X3,TDM12 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- MX5 -6
- EQ TDM12 GET FIRST WORD OF NEW POT
- * STORE SECOND WORD OF *WRITE* PAIR AND THEN LOOP
- * BACK AND BEGIN BUILDING THE NEXT WORD PAIR.
- TDM16 SA6 A6+B1 STORE SECOND WORD OF *WRITE* PAIR
- SB6 7
- SX6 B0 CLEAR CHARACTER ACCUMULATOR
- SA2 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
- SX7 X2+7
- SA7 A2
- SX3 A6-SNDB-SNDL
- PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
- SB7 TDM6
- MX5 -6
- EQ TDM7 START NEXT *WRITE* WORD PAIR
- * PROCESS SPECIAL CHARACTERS, WHICH INCLUDE THE 74 AND 76
- * ESCAPE CODES AND DISPLAY CHARACTER ZERO.
- TDM18 SX3 X2-ASC.CL
- ZR X3,TDM26 IF ZERO DISPLAY CHARACTER
- TA4 B2,VMST
- SA3 TDMF
- LX4 59-23
- BX3 X3+X4
- PL X3,TDM29 IF NOT EXTENDED ASCII, PRINT ESCAPE CODE
- SX7 X2-ASC.AT
- SX4 200B
- ZR X7,TDM19 IF 74 ESCAPE
- SX4 100B MUST BE 76 ESCAPE
- * TRANSLATE NEXT CHARACTER WITH ESCAPE CODE BIAS.
- TDM19 SB3 B3-B1
- NZ B3,TDM21 IF MORE CHARACTERS IN *READ* WORD
- SX7 A1-B4
- NZ X7,TDM20 IF NOT AT THE END OF THE *READ* POT
- BX7 X4
- SA7 TDME
- RJ GNR GET NEXT *READ* POT
- SA4 TDME
- MX5 -6
- TDM20 SA1 A1+1 GET NEXT *READ* WORD
- SB3 10
- TDM21 LX1 6 EXTRACT NEXT *READ* CHARACTER
- BX2 -X5*X1
- BX2 X2+X4 ADD BIAS
- SX3 X2-TVXDL
- PL X3,TDM22 IF VALUE TOO LARGE TO BE A CHARACTER
- SA2 X2+TVXD LOOK IT UP IN THE TRANSLATION TABLE
- BX7 X2
- AX2 18
- SX2 X2 GET TRANSLATED VERSION
- ZR X4,TDM28 IF SECOND TIME THROUGH
- NG X2,TDM22 IF NO SUCH CHARACTER EXISTS
- LX7 59-58
- PL X7,TDM29 IF NOT A 7412 CHARACTER
- * 7412 PROCESSING. A 7412 CHARACTER IS TREATED AS A
- * UNIT SEPARATOR.
- SX3 45B PRESET NEXT LINE FORMAT EFFECTOR
- BX1 X1-X3
- LX1 -6
- SB3 B3+B1
- SX7 A6+B1
- PX7 X7,B6
- SA7 CBPB
- JP B7 RETURN A UNIT SEPARATOR
- * PROCESS INCORRECT TWELVE BIT CHARACTERS. IF THE LAST
- * SIX BITS OF THE CHARACTER ARE NON-ZERO, IT IS THROWN
- * AWAY. IF THE LAST SIX BITS ARE THE BEGINNING OF AN
- * EOL, THEN THE ESCAPE CODE IS PRINTED. IF THE LAST SIX
- * BITS ARE THE START OF A *0014* BYTE, THEN A TWELVE BIT
- * CHARACTER HAS BEEN SPLIT ACROSS DOWNLINE BLOCKS, SO
- * THE APPROPRIATE ESCAPE CODE CONTINUATION FLAG IS SET.
- TDM22 BX5 -X5*X1
- NZ X5,TDM24 IF NOT A ZERO CHARACTER
- MX5 6
- BX5 X1*X5
- ZR X5,TDM25 IF A POSSIBLE EOL
- SX5 B3
- LX5 59-0
- NG X5,TDM24 IF NOT A CONTROL BYTE
- SX3 2R"IB" CHECK FOR A *0014* BYTE
- LX3 54
- BX3 X1-X3
- NZ X3,TDM23 IF NOT 74 NOR 76 CONTINUATION
- TA3 B2,VMST SET CONTINUATION FLAG IN VMST
- LX4 20
- BX7 X3+X4
- SA7 A3+
- TDM23 SB3 B3+1
- LX1 -6
- TDM24 SX4 B0
- MX5 -6
- EQ TDM19 TRANSLATE NEXT CHARACTER
- TDM25 SX4 B7 BUILD AN EOL MASK
- SX3 B3-B1
- SX5 6
- IX5 X3*X5
- MX7 1
- SB7 X5-1
- AX7 X7,B7
- SB7 X4+
- BX7 X1*X7
- ZR X7,TDM23 IF A VALID EOL
- EQ TDM24 THROW INCORRECT CHARACTER AWAY
- * PROCESS ZERO CHARACTER.
- TDM26 SX7 B7 SAVE RETURN ADDRESS
- SA7 TDMD
- RJ PZD PROCESS ZERO DISPLAY CHARACTER
- PL X7,TDM27 IF NOT A CONTROL BYTE
- RJ CBP CONTROL BYTE PROCESSOR
- ZR X4,TDM27 IF NOT END OF THE DATA
- RJ BHD BUILD MESSAGE HEADER
- EQ TDMX EXIT
- TDM27 SA3 TDMD RESTORE RETURN ADDRESS
- SB7 X3+
- TDM28 MX5 -6 RESTORE CHARACTER MASK
- LX7 59-58
- NG X7,TDM18 IF SPECIAL CHARACTER
- TDM29 JP B7 RETURN TO THE CALLING ROUTINE
- TDM30 SX6 3RTDM OVERFLOW OF SEND BUFFER
- RJ ABT
- MX6 1
- EQ TDMX EXIT
- TDMA DATA 0 CURRENT *READ* POT POINTER
- TDMB DATA 0 CURRENT *WRITE* POT POINTER
- TDMC DATA 0 TRANSLATED CHARACTER COUNT
- TDMD DATA 0 RETURN ADDRESS
- TDME DATA 0 74, 76 ESCAPE
- TDMF DATA 0 EXTENDED MODE FLAG
- TDMG DATA 0 USER-SUPPLIED FORMAT EFFECTORS FLAG
- TNT SPACE 4,25
- ** TNT - TRANSLATE NAM TRANSPARENT LINES.
- *
- * *TNT* TRANSFERS TRANSPARENT CHARACTERS TO THE SEND BUFFER,
- * STRIPPING OFF THE TOP FOUR BITS OF EACH CHARACTER.
- * THE TRANSFER CONTINUES UNTIL END OF DATA, OR UNTIL
- * NON-TRANSPARENT DATA IS FOUND IN WHICH CASE *TNT* SETS
- * UP THE REENTRY WORD AND BYTE ADDRESSES TO ALLOW
- * TRANSLATION TO CONTINUE ONCE THE TRANSPARENT DATA HAS
- * BEEN TRANSMITTED.
- *
- * ENTRY (X1) = TRANSPARENT DATA, LEFT ADJUSTED.
- *
- * EXIT TRANSPARENT DATA TRANSFERRED TO SEND BUFFER.
- *
- * USES X - 1, 2, 3, 4, 5, 6, 7.
- * A - 1, 2, 3, 5, 6, 7.
- * B - 3, 6, 7.
- *
- * CALLS GNR, COC.
- *
- * DEFINE (A0) = TERMINAL TABLE ADDRESS.
- * (A1) = CURRENT *READ* WORD ADDRESS.
- * (X1) = CURRENT *READ* WORD.
- * (A6) = CURRENT *WRITE* WORD ADDRESS.
- * (X6) = CURRENT *WRITE* WORD.
- * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
- * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
- * (B4) = LWA OF CURRENT *READ* POT.
- TNT SUBR ENTRY/EXIT
- SB7 TNT3
- SB6 7
- MX5 -8
- SX6 B0 THROW AWAY THE FORMAT EFFECTOR
- EQ TNT2 ENTER TRANSLATION LOOP
- * BUILD FIRST WORD OF PAIR.
- TNT1 SA1 A1+1 GET NEXT *READ* WORD
- SB3 10
- TNT2 MX3 4 CHECK FOR A VALID NEXT CHARACTER
- BX3 X3*X1
- LX3 4
- SX3 X3-10B
- NZ X3,TNT12 IF NOT A NAM TRANSPARENT CHARACTER
- LX6 8
- LX1 12
- BX3 -X5*X1 STRIP OFF TOP FOUR BITS
- BX6 X6+X3 ADD CHARACTER TO *WRITE* WORD
- SB6 B6-B1
- SB3 B3-2
- ZR B6,TNT4 IF SEVENTH CHARACTER COMPLETED
- TNT3 NZ B3,TNT2 IF MORE CHARACTERS IN *READ* WORD
- SX3 A1-B4
- NZ X3,TNT1 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- MX5 -8
- EQ TNT1 GET FIRST WORD OF NEW POT
- * BUILD 7.5 CHARACTER.
- TNT4 NZ B3,TNT6 IF MORE CHARACTERS IN *READ* WORD
- SX3 A1-B4
- NZ X3,TNT5 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- TNT5 SA1 A1+B1 GET NEXT *READ* WORD
- SB3 10
- MX5 -8
- TNT6 MX3 4 CHECK FOR A VALID NEXT CHARACTER
- BX3 X3*X1
- SB7 TNT4
- LX3 4
- SX3 X3-10B
- NZ X3,TNT12 IF NOT A NAM TRANSPARENT CHARACTER
- LX1 12
- LX6 4
- BX2 -X5*X1 STRIP OFF TOP FOUR BITS
- LX2 56
- SX7 X2
- BX6 X6+X7 ADD TOP HALF OF CHARACTER TO *WRITE* WORD
- SA6 A6+B1 STORE FIRST WORD OF *WRITE* PAIR
- MX7 -4
- SX3 A6-SNDB-SNDL
- PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
- LX2 -56
- BX6 -X7*X2
- SB6 7
- SB3 B3-2
- SA3 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
- SX7 X3+8
- SA7 A3
- SB7 TNT9
- EQ TNT9 BEGIN FILLING SECOND WORD OF PAIR
- * BUILD SECOND WORD OF PAIR.
- TNT7 SA1 A1+1 GET NEXT *READ* WORD
- SB3 10
- TNT8 MX3 4 CHECK FOR A VALID NEXT CHARACTER
- BX3 X3*X1
- LX3 4
- SX3 X3-10B
- NZ X3,TNT12 IF NOT A NAM TRANSPARENT CHARACTER
- LX6 8
- LX1 12
- BX3 -X5*X1 STRIP OFF TOP FOUR BITS
- BX6 X3+X6 ADD CHARACTER TO *WRITE* WORD
- SB6 B6-B1
- SB3 B3-2
- ZR B6,TNT10 IF SECOND WORD IS FULL
- TNT9 NZ B3,TNT8 IF MORE CHARACTERS IN *READ* WORD
- SX3 A1-B4
- NZ X3,TNT7 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- MX5 -8
- EQ TNT7 GET FIRST WORD OF NEW POT
- * STORE SECOND WORD OF *WRITE* PAIR AND THEN LOOP
- * BACK AND BEGIN BUILDING THE NEXT WORD PAIR.
- TNT10 SA6 A6+B1 STORE SECOND WORD OF *WRITE* PAIR
- SB6 7
- SX6 B0 CLEAR CHARACTER ACCUMULATOR
- SA2 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
- SX7 X2+7
- SA7 A2
- SX3 A6-SNDB-SNDL
- PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
- SB7 TNT3
- MX5 -8
- EQ TNT3 START NEXT *WRITE* WORD PAIR
- * SPECIAL CHARACTER HANDLING.
- * CHECK FOR A VALID END OF LINE OR A *0007* BYTE.
- * IF EITHER ONE, THEN CONTINUE TRANSLATING TRANSPARENT
- * DATA.
- TNT12 SX3 B3 BUILD AN EOL MASK
- SX2 6
- IX2 X2*X3
- MX7 1
- SX4 B7
- SB7 X2-1
- AX7 X7,B7
- SB7 X4+
- BX2 X7*X1
- NZ X2,TNT13 IF NOT EOL
- SB3 B0+
- JP B7 CONTINUE TRANSLATION
- TNT13 AX2 48
- SX2 X2-0007B
- NZ X2,TNT14 IF NOT *0007* BYTE
- SB3 B3-2
- LX1 12
- JP B7 CONTINUE TRANSLATION
- * END OF NAM TRANSPARENT LINE. A SPECIAL MESSAGE HEADER
- * IS REQUIRED MAKING IT NECESSARY TO TRANSMIT THE
- * TRANSPARENT DATA SEPARATELY FROM ANY DATA FOLLOWING IT.
- * IF MORE DATA DOES EXIST, MARK TRANSLATION CONTINUATION
- * POINT.
- TNT14 SX7 0014B END OF DATA INDICATOR
- LX7 48
- BX3 X7-X1
- NZ X3,TNT15 IF NOT *0014* BYTE
- TA3 B2,VMST SET TRANSPARENT CONTINUATION
- SX4 B1
- LX4 25-0
- BX7 X3+X4
- SA7 A3
- RJ COC CHECK OUTPUT CHAINS
- ZR B4,TNT16 IF NO CONTINUATION
- SA1 A1+B1 SET UP REGISTERS FOR REENTRY
- SB3 10
- MX5 -8
- JP B7 CONTINUE TRANSLATION
- TNT15 SX7 A1+
- SA7 BHDB MARK TRANSLATION CONTINUATION POINT
- SB7 10
- EQ B7,B3,TNT16 IF DATA TO CONTINUE AT WORD BOUNDARY
- SX7 B3 SAVE BYTE POSITION
- AX7 1
- SA7 BHDA
- TNT16 SA5 HDRB USE TRANSPARENT HEADER
- BX7 X5
- SA7 SNDH
- EQ TNTX EXIT
- TTL SPACE 4,30
- ** TTL - TRANSFER TRMDEF LINE.
- *
- * *TTL* TRANSFERS TRMDEF BYTES TO THE SEND BUFFER UNTIL AN EOL
- * OR BYTE WITHOUT BIT 11 SET IS FOUND. SUPERVISORY MESSAGE
- * PRIMARY AND SUBFUNCTIONS ARE ADDED TO THE BEGINNING OF THE
- * DATA, AND IF ANY DATA FOLLOWS THE TRMDEF LINE, *TTL*
- * SETS UP THE REENTRY ADDRESS TO ALLOW TRANSLATION TO
- * CONTINUE ONCE THE TRMDEF MESSAGE IS TRANSMITTED.
- *
- * ENTRY (X1) = TRMDEF DATA, LEFT ADJUSTED.
- * (X6) .EQ. 0 IF CONTROL BYTE 0016B TO BE SENT.
- * .EQ. 1 IF CONTROL BYTE 0010B TO BE SENT.
- *
- * EXIT TRMDEF DATA TRANSFERRED TO SEND BUFFER.
- *
- * USES X - 1, 2, 3, 4, 5, 6, 7.
- * A - 1, 2, 3, 6, 7.
- * B - 3, 5, 6, 7.
- *
- * CALLS GNR.
- *
- * DEFINE (A0) = TERMINAL TABLE ADDRESS.
- * (A1) = CURRENT *READ* WORD ADDRESS.
- * (X1) = CURRENT *READ* WORD.
- * (A6) = CURRENT *WRITE* WORD ADDRESS.
- * (X6) = CURRENT *WRITE* WORD.
- * (B3) = NUMBER OF CHARACTERS LEFT IN *READ* WORD.
- * (B4) = LWA OF CURRENT *READ* POT.
- * (B6) = NUMBER OF CHARACTERS ROOM LEFT IN *WRITE* WORD.
- TTL SUBR ENTRY/EXIT
- SB6 5
- MX5 -8
- SB5 X6 SAVE CONTROL BYTE FLAG
- NZ X6,TTL0 IF CONTROL BYTE 0010B TO BE SENT
- SX6 PFTC*400B+SFDM SET UP PRIMARY AND SUB-FUNCTIONS
- EQ TTL2 ENTER TRANSFER LOOP
- TTL0 SX6 PFTC*400B+SFCC SET UP PRIMARY AND SUB-FUNCTIONS
- EQ TTL2 ENTER TRANSFER LOOP
- * BUILD FIRST WORD OF PAIR.
- TTL1 SA1 A1+1 GET NEXT *READ* WORD
- SB3 10
- TTL2 PL X1,TTL15 IF END OF TRMDEF DATA REACHED
- LX1 12 EXTRACT NEXT *READ* CHARACTER
- BX2 -X5*X1
- LX6 8
- BX6 X6+X2 ADD CHARACTER TO *WRITE* WORD
- SB6 B6-1
- SB3 B3-2
- ZR B6,TTL5 IF SEVENTH CHARACTER COMPLETED
- TTL4 NZ B3,TTL2 IF MORE CHARACTERS IN *READ* WORD
- SX3 A1-B4
- NZ X3,TTL1 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- MX5 -8
- EQ TTL1 GET FIRST WORD OF NEW POT
- * BUILD 7.5 CHARACTER.
- TTL5 NZ B3,TTL7 IF MORE CHARACTERS IN *READ* WORD
- SX3 A1-B4
- NZ X3,TTL6 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- TTL6 SA1 A1+B1 GET NEXT *READ* WORD
- SB3 10
- MX5 -8
- TTL7 PL X1,TTL15 IF END OF TRMDEF DATA REACHED
- LX1 12 EXTRACT NEXT *READ* CHARACTER
- BX2 -X5*X1
- LX6 4
- LX2 56
- SX7 X2
- BX6 X6+X7 ADD TOP HALF OF CHARACTER TO *WRITE* WORD
- SA6 A6+B1 STORE FIRST WORD OF *WRITE* PAIR
- MX7 -4
- SX3 A6-SNDB-SNDL
- PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
- LX2 -56
- BX6 -X7*X2
- SB6 7
- SB3 B3-2
- SA3 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
- SX7 X3+8
- SA7 A3+
- EQ TTL12 BEGIN FILLING SECOND WORD OF PAIR
- * BUILD SECOND WORD OF PAIR.
- TTL9 SA1 A1+1 GET NEXT *READ* WORD
- SB3 10
- TTL10 PL X1,TTL15 IF END OF TRMDEF DATA REACHED
- LX1 12 EXTRACT NEXT *READ* CHARACTER
- BX2 -X5*X1
- LX6 8
- BX6 X2+X6 ADD CHARACTER TO *WRITE* WORD
- SB6 B6-1
- SB3 B3-2
- ZR B6,TTL13 IF SECOND WORD IS FULL
- TTL12 NZ B3,TTL10 IF MORE CHARACTERS IN *READ* WORD
- SX3 A1-B4
- NZ X3,TTL9 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- MX5 -8
- EQ TTL9 GET FIRST WORD OF NEW POT
- * STORE SECOND WORD OF *WRITE* PAIR AND THEN LOOP BACK
- * AND BEGIN BUILDING THE NEXT WORD PAIR.
- TTL13 SA6 A6+B1 STORE SECOND WORD OF *WRITE* PAIR
- SB6 7
- SX6 B0 CLEAR CHARACTER ACCUMULATOR
- SA2 TDMC UPDATE TOTAL TRANSLATED CHARACTER COUNT
- SX7 X2+7
- SA7 A2
- MX5 -8
- SX3 A6-SNDB-SNDL
- PL X3,TDM30 IF MESSAGE HAS OVERFLOWED DATA BUFFER
- EQ TTL4 START NEXT *WRITE* WORD PAIR
- * END OF TRMDEF DATA REACHED. TRMDEFS ARE SENT DOWNLINE
- * AS SUPERVISORY MESSAGES, MAKING IT NECESSARY TO TRANSMIT
- * THE TRMDEF DATA SEPARATELY FROM ANY DATA FOLLOWING IT.
- * IF MORE DATA DOES EXIST, MARK TRANSLATION CONTINUATION
- * WORD AND BYTE.
- TTL15 SA5 DLTDC
- NZ B5,TTL15.1 IF CONTROL BYTE 0010B TO BE SENT
- SA5 DLTDF
- TTL15.1 SX3 6
- BX7 X5
- SA7 SNDH
- SX7 B3 BUILD AN EOL MASK
- IX3 X3*X7
- MX7 1
- SB7 X3-1
- AX7 X7,B7
- BX7 X1*X7
- ZR X7,TTL16 IF END OF LINE
- SX7 A1 SET CONTINUATION WORD
- SA7 BHDB
- SX7 B3 SET CONTINUATION BYTE
- AX7 1
- SA7 BHDA
- EQ TTLX EXIT
- TTL16 SX3 A1-B4
- NZ X3,TTL17 IF NOT AT THE END OF THE *READ* POT
- RJ GNR GET NEXT *READ* POT
- TTL17 SA1 A1+B1 GET NEXT *READ* WORD
- SX7 2R"IB"
- LX7 48
- BX3 X1-X7
- ZR X3,TTLX IF END OF *READ* DATA
- SX7 A1
- SA7 BHDB MARK TRANSLATION CONTINUATION POINT
- EQ TTLX EXIT
- VBX SPACE 4,30
- ** VBX - ASCII TO BINARY CODE CONVERSION.
- *
- * COPIES IVT ASCII CODE TO RECEIVING POTS IN 12 BIT FORMAT,
- * SETTING UPPER BIT OF EACH 12 BIT BYTE AS NOS BINARY FLAG.
- * THE FIRST BYTE IS PRESET TO *0007B* AND THE DATA COPY
- * STARTS AT THE SECOND BYTE OF THE RECEIVING POT.
- *
- * (RCCW) = 1/F,23/,18/TEXT LENGTH,18/RCVB.
- * F = FIRST BLOCK OF LOGICAL LINE IF SET.
- * ENTRY (X0) = ASCII8 OR BINARY BIT.
- *
- * EXIT (X6) = NONZERO IF CONVERSION COMPLETE.
- * = ZERO IF INSUFFICIENT POTS AVAILABLE.
- * (RCCW) = 0.
- *
- * CALLS ADB.
- VBX SUBR ENTRY/EXIT
- SA3 TBUF-1
- BX7 X3
- SA7 A3
- SX7 X0+
- SA3 RCCW
- ZR X7,VBX1 IF ASCII8
- PL X3,VBX1 IF NOT FIRST BLOCK
- SX7 0007B SET CONTROL BYTE
- SX4 B1+
- LX4 58-0
- BX7 X7+X4 ASSEMBLE 12 BITS
- SA7 A7+1
- VBX1 SA2 X3 ADDRESS OF NEXT WORD TO BE CRACKED
- AX3 18
- SB7 X3+ CHARACTER COUNT
- SX1 B7-TBUFL+2
- NG X1,VBX2 IF CHARACTERS WILL FIT IN BUFFER
- SB7 TBUFL-2
- VBX2 BX6 X6-X6
- SB5 X3 CHARACTER COUNT
- SB5 B5-B7
- LE B5,VBX3 IF LAST TIME THROUGH THIS BLOCK
- SX6 B5+ DECREMENT CHARACTER COUNT
- LX6 18
- SX4 A2+TBUFL*2/15 UPDATE ADDRESS IN RCBF
- BX6 X4+X6
- VBX3 SA6 A3 REWRITE *RCCW*
- MX6 1 (X6) = EVEN/ODD WORD FLAG
- SX4 377B (X4) = 8 BIT BYTE MASK
- LE B7,B0,VBX6 IF NULL LINE
- * CRACK ASCII DATA INTO TRANSLATION BUFFER.
- VBX4 BX6 -X6 TOGGLE EVEN/ODD WORD FLAG
- LX1 X2 MOVE NEXT WORD TO DISASSEMBLY
- SB6 7 (B6) = ASCII BYTE COUNT PER WORD
- VBX5 LX1 8 SHIFT NEXT CHARACTER
- SB7 B7-1 DECREMENT TOTAL CHARACTER COUNT
- BX7 X4*X1 MASK CHARACTER
- SB6 B6-B1 DECREMENT WORD BYTE COUNT
- BX7 X7+X0 ADD BINARY OR ASCII8 BIT
- SA7 A7+1 STORE CHARACTER
- LE B7,B0,VBX6 IF ALL CHARACTERS MOVED
- NZ B6,VBX5 IF NOT END OF WORD
- SA2 A2+B1 READ UP NEXT WORD
- NG X6,VBX4 IF PROCESSING ODD WORD
- * PROCESS HALF-BYTES AT EVEN/ODD WORD BOUNDARY.
- LX1 4 SHIFT UPPER HALF-BYTE
- MX7 -4
- LX2 4 SHIFT LOWER HALF-BYTE
- BX1 -X7*X1 MASK HALF-BYTE
- BX7 -X7*X2
- LX1 4 MERGE HALF-BYTES
- BX7 X7+X1
- BX7 X7+X0 ADD BINARY OR ASCII8 BIT
- SA7 A7+B1 STORE ASSEMBLY
- SB7 B7-1 DECREMENT CHARACTER COUNT
- GT B7,B0,VBX4 IF NOT END OF DATA
- * REASSEMBLE CRACKED DATA INTO POT CHAIN.
- VBX6 MX7 1 TERMINATE BUFFER
- SA7 A7+B1
- RJ ADB ASSEMBLE BUFFER TO POTS
- SA3 TBUF-1
- BX7 X3
- SA7 A3 RESET FWA STRING BUFFER
- SA3 RCCW
- NZ X3,VBX1 IF NOT FINISHED WITH THIS BLOCK
- SX6 1
- EQ VBXX RETURN
- VGX SPACE 4,30
- ** VDX - VIRTUAL ASCII TO DISPLAY CODE TRANSLATION.
- *
- * ENTRY (X5) = CHARACTER MASK -
- * = LOWER 6 BITS PLUS BIT 59 IF 6-BIT
- * DISPLAY CODE.
- * = LOWER 12 BITS IF 6/12-BIT
- * EXTENDED DISPLAY CODE.
- * = LOWER 12 BITS IF 6/12-BIT TRANSPARENT
- * DISPLAY CODE.
- * (RCCW) = 1/F,23/,18/TEXT LENGTH,18/RCVB.
- * F = FIRST BLOCK OF LOGICAL LINE IF SET.
- *
- * EXIT (X6) = NONZERO IF CONVERSION COMPLETE.
- * = ZERO IF INSUFFICIENT POTS AVAILABLE.
- * (RCCW) = 0.
- *
- * CALLS ADB.
- VDX SUBR ENTRY/EXIT
- VDX1 SA3 RCCW
- SA2 X3 ADDRESS OF NEXT WORD TO BE PROCESSED
- AX3 18
- SB7 X3 SET CHARACTER COUNT
- SB5 X3
- SX1 B7-TBUFL+2
- NG X1,VDX2 IF CHARACTERS WILL FIT IN BUFFER
- SB7 TBUFL-2
- VDX2 BX6 X6-X6
- SB5 B5-B7
- SB4 TBUF (B4) = STRING BUFFER ADDRESS
- LE B5,B0,VDX3 IF LAST SEGMENT OF THIS BLOCK
- SX6 B5+ UPDATE CHARACTER COUNT
- LX6 18
- SX4 A2+TBUFL*2/15 UPDATE ADDRESS IN RCBF
- BX6 X4+X6
- VDX3 SA6 A3+ REWRITE RCCW
- SB5 7 (B5) = NUMBER OF ASCII BYTES PER WORD
- ZR B7,VDX8 IF NULL LINE
- SX4 177B SET 7-BIT ASCII MASK
- * TRANSLATE ASCII WORD TO STRING BUFFER.
- VDX4 MX7 1 TOGGLE MASK UPPER BIT
- BX1 X2 MOVE NEXT WORD TO DISASSEMBLY
- BX4 X4-X7
- SB6 B5 (B6) = ASCII BYTE COUNT
- VDX5 LX1 8 SHIFT NEXT ASCII BYTE
- BX7 X4*X1 MASK ASCII BYTE
- SA3 TVXD+X7 READ TRANSLATION
- SB7 B7-1 DECREMENT COUNTERS
- SB6 B6-B1
- BX7 X5*X3 MASK TRANSLATION
- NG X7,VDX6 IF IGNORE CHARACTER
- SA7 B4+ STORE TRANSLATION
- SB4 B4+B1
- LX3 59-57 CHECK FOR SPECIAL CHARACTERS
- NG X3,VDX9 IF SPECIAL CHARACTER
- VDX6 LE B7,B0,VDX7 IF END OF DATA
- GT B6,B0,VDX5 IF NOT END OF WORD
- SA2 A2+1 READ NEXT WORD
- PL X4,VDX4 IF NOT CROSSING FROM EVEN TO ODD WORD
- * PROCESS HALF-BYTES AT EVEN/ODD WORD BOUNDARY.
- LX1 4 SHIFT UPPER HALF-BYTE
- SX7 17B
- LX2 4 SHIFT LOWER HALF-BYTE
- BX1 X7*X1 MASK HALF-BYTES
- BX7 X7*X2
- LX1 4
- BX7 X7+X1 MERGE HALF BYTES
- BX7 X4*X7 REMOVE ASCII PARITY BIT
- SA3 TVXD+X7 READ TRANSLATION
- SB7 B7-B1 DECREMENT CHARACTER COUNT
- BX7 X5*X3 MASK TRANSLATION
- NG X7,VDX7 IF IGNORE CHARACTER
- SA7 B4 STORE TRANSLATION
- SB4 B4+B1
- LX3 59-57 CHECK FOR SPECIAL CHARACTERS
- NG X3,VDX10 IF SPECIAL CHARACTER
- VDX7 GT B7,B0,VDX4 IF NOT END OF DATA
- SA3 B4-1 CHECK LAST CHARACTER OF BUFFER
- SX7 1R
- SA2 RCCW
- NZ X3,VDX8 IF NOT COLON (*00*)
- SA3 PINA GET BLOCK TYPE
- NZ X2,VDX8 IF NOT END OF BLOCK
- SX3 X3-BTBK
- ZR X3,VDX8 IF BLK BLOCK TYPE
- SA7 B4 ADD TRAILING BLANK
- SB4 B4+B1 ADVANCE BUFFER POINTER
- VDX8 MX7 1 TERMINATE BUFFER
- SA7 B4
- * REASSEMBLE TRANSLATED CODE INTO POT CHAIN.
- RJ ADB ASSEMBLE DATA
- SA3 RCCW
- NZ X3,VDX1 IF NOT FINISHED WITH THIS BLOCK
- SX6 B1+ SET RETURN STATUS
- EQ VDXX RETURN
- * PROCESS SPECIAL CHARACTERS IF IN NORMAL MODE.
- *
- * ENTRY (X7) = SPECIAL CHARACTER TRANSLATION.
- * (A7) = CURRENT BUFFER ADDRESS.
- VDX9 LX3 12-59+57 POSITION SPECIAL CHARACTER TRANSLATION
- BX7 X5*X3
- SX3 X5 SET LOWER 18 BITS OF MODE MASK
- AX3 6 CHECK IF TRANSPARENT
- NZ X3,VDX6 IF TRANSPARENT OR EXTENDED
- SA7 A7+ REPLACE CHARACTER
- EQ VDX6 CONTINUE
- VDX10 LX3 12-59+57 POSITION LOWER 18 BITS OF MODE MASK
- BX7 X5*X3
- SX3 X5 SET LOWER 18 BITS OF MODE MASK
- AX3 6 CHECK IF TRANSPARENT OR EXTENDED
- NZ X3,VDX7 IF TRANSPARENT OR EXTENDED
- SA7 A7+ REPLACE CHARACTER
- EQ VDX7 CONTINUE
- TITLE CPU COMMON DECKS.
- SPACE 4,10
- ** CPU COMMON DECKS.
- *CALL COMCCIO
- *CALL COMCWOD
- LIST X
- *CALL COMTVDT
- LIST *
- TITLE DATA TRANSFER BUFFERS.
- USE BUFFERS
- RCVB SPACE 4,10
- ** RCVB - NETWORK DATA RECEIVE BUFFER.
- RCVL EQU 1+2*VXPH/15D CALCULATE BUFFER LENGTH
- RCVH CON 0 RECEIVE DATA BLOCK HEADER
- RCVB BSSZ RCVL RECEIVE DATA BLOCK BUFFER
- SNDB SPACE 4,10
- ** SNDB - NETWORK DATA SEND BUFFER.
- SNDH CON 0 SEND DATA BLOCK HEADER
- SNDB BSSZ SNDL SEND DATA BLOCK BUFFER
- ERRNZ SNDH-SNDB+1
- VBUF SPACE 4,10
- ** AIPB - APPLICATION INTERFACE PROCEDURES UPLINE DATA BUFFER.
- AIPB VFD 12/0,12/1,12/1,12/0,12/AIPL
- BSSZ AIPL
- TINST SPACE 4,10
- ** TINST - INSTRUCTION MODIFICATION TABLE.
- TINST BSS 0
- LIST -R
- TINST HERE ASSEMBLE REMOTE CODE
- LIST R
- TINSTL EQU *-TINST
- TTL IAFEX - TTY EXECUTIVE PROCESSOR.
- END SPACE 4,10
- END
cdc/nos2.source/opl871/iafex.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator