IDENT 1MI,HST
PERIPH
BASE MIXED
SST
SYSCOM
*COMMENT 1MI - TERMINAL I/O DRIVER.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
HST TITLE 1MI - TERMINAL I/O DRIVER.
HST SPACE 4,10
*** 1MI - TERMINAL I/O DRIVER.
*
* R. V. SAMORA. 82/05/30.
HST SPACE 4,10
*** *1MI* HIGH SPEED TERMINAL SUPPORT (HSTS) IMPROVES THE
* INTERACTIVE I/O PERFORMANCE OF IAF BY REMOVING QUEUING DELAYS
* AND ALLOWING INTERACTIVE I/O TO PROCEED WITHOUT MANDATORY
* ROLLOUT OF THE INTERACTIVE USER PROGRAM. THIS FEATURE,
* ALTHOUGH INTENDED FOR HIGH SPEED TERMINALS PRIMARILY,
* IMPROVES SYSTEM PERFORMANCE NOT ONLY IN THE AREA OF CHARACTER
* THROUGHPUT BUT REDUCES SYSTEM OVERHEAD BY KEEPING INTERACTIVE
* JOB MOVEMENT AT A MINIMUM.
HST SPACE 4,10
*** CALL.
*
*
*T IR 18/*1MI*, 1/A, 5/CP, 1/T, 17/, 18/FET
* A SET IF AUTO RECALL DESIRED.
* CP CONTROL POINT OF REQUESTOR.
* T ZERO IF THIS PP HAS THE TINW/TIOW INTERLOCK.
* FET FET ADDRESS.
*
*T MB 1/S, 5/, 6/CP, 6/RC, 18/, 12/FP, 1/A, 1/, 4/IF, 3/, 3/RT
* S SET BY *CPUMTR* IF *1MI* STARTED FROM RECALL STACK.
* CP UNUSED (WARNING - SOMETIMES SET BY *CPUMTR*).
* RC REASON CODE WHY *1MI* ENTERED RECALL.
* FP FIRST POT IN CHAIN PRIOR TO RECALL.
* A SET IF MONITOR FUNCTION REJECTED BECAUSE IAF ABORTED.
* IF *CIO* INTERNAL FUNCTION CODE (SEE *COMSCIO*).
* RT MONITOR FUNCTION REJECTION COUNT.
*
*T MB+1 12/0, 24/IN, 24/OUT
*T MB+2 6/0, 6/FETL, 24/FIRST, 24/LIMIT
* FETL FET LENGTH IN CM WORDS.
* FET POINTERS ARE TRANSFERED ONLY ON INITIAL *1MI* CALL.
HST SPACE 4,10
*** DAYFILE MESSAGES.
*
* * FET ADDRESS OUT OF RANGE AT NNN.*
* FET ADDRESS .LE. 1 OR FET EXCEEDS FIELD LENGTH.
*
* * BUFFER ARGUMENT ERROR ON FFF AT NNN.*
* A BUFFER POINTER DOES NOT CONFORM TO CONSTRAINTS-
* - FIRST POINTER .LE. IN POINTER.
* - FIRST POINTER .LE. OUT POINTER.
* - OUT POINTER .LT. BUFFER LIMIT.
* - IN POINTER .LT. BUFFER LIMIT.
* - BUFFER LENGTH .LE. FIELD LENGTH.
*
* * INCORRECT I/O REQUEST ON FILE FFF AT NNN.*
* I/O WAS REQUESTED ON A DETACHED INTERACTIVE
* JOB WITH JOB TERMINATION OPTION SET TO COMPLETION.
*
* FFF REPRESENTS FILE NAME AS GIVEN IN THE FET.
* NNN REPRESENTS THE FILE FET ADDRESS.
HST SPACE 4,10
*** HANG CONDITIONS.
*
* *1MI* WILL HANG WITH THE *HNGM* MONITOR FUNCTION IF-
* - INCORRECT ERROR CODE IS DETECTED DURING ERROR
* PROCESSING.
* - AN INCORRECT NETWORK BLOCKSIZE IS DETECTED FROM IAF.
*
* HANG CONDITIONS ARE SOFT IN THAT BY CLEARING THE APPROPRIATE
* PPU OUTPUT REGISTER, *1MI* WILL ATTEMPT TO RECOVER ITS
* CURRENT PROCESS AS GRACEFULLY AS POSSIBLE.
HST SPACE 4,10
*** PROGRAMMING CONSIDERATIONS-
*
* *1MI* IN THE PROCESS OF HANDLING TERMINAL I/O WILL-
*
* 1) READ PROCESS-
*
* - ATTEMPT TO FLUSH *LOFW* OR RA+2 LIST OF FILE
* ENTRIES BEFORE PROCESSING THE READ REQUEST.
*
* 2) WRITE PROCESS-
*
* - *1MI* WILL TRANSFER THE MAXIMUM AMOUNT OF OUTPUT
* DATA SPECIFIC TO EACH TERMINALS DOWNLINE BLOCK
* LIMIT WHICH IS CHARACTERISTIC OF ITS LINE SPEED.
* - PPU RECALL IS USED BETWEEN *VADO* OUTPUT DOWNLINE
* *TSEM* FUNCTION REQUESTS TO IAF.
* - IN THE EVENT THE USER JOB SHOULD ROLL FROM THE
* CONTROL POINT WHILE *1MI* IS IN PPU RECALL,
* ROUTINE *1RO* WILL CONTINUE THE OUTPUT PROCESS
* STARTED BY *1MI* WHETHER EXPLICIT OR IMPLICIT
* OUTPUT REQUEST VIA LIST OF FILES PROCESSING.
* - BUFFERED WRITE ON A FULL OUTPUT BUFFER
* WITH NO *EOL* BYTE RESULTS IN A ROLL OF
* THE USER JOB TO ALLOW *1RO* TO ASSURE
* OUTPUT BUFFER FLUSH COMPLETION.
*
* 3) MONITOR FUNCTION REJECTION PROCESSING-
*
* - IF A *TGPM* OR *TSEM* MONITOR FUNCTION IS
* REJECTED BECAUSE IAF IS BUSY, *1MI* WILL GO INTO
* PP RECALL. WHEN RESTARTED, *1MI* WILL THEN
* DROP ANY POTS CURRENTLY HELD AND START OVER.
* - IAF INACCESSIBILITY DETECTED THROUGH EITHER
* FUNCTION REJECTION OR *1MI* PRESET FORCES
* SUSPENSION ROLLOUT OF THE USER JOB CAUSING
* JOB DETACHMENT TO ALLOW SUBSEQUENT USER
* RECOVERY.
*
* 4) MULTIPLEXOR TERMINAL CHARACTERISTICS-
*
* - BECAUSE OF THE LACK OF TYPEAHEAD FOR MULTIPLEXOR
* TERMINALS, THE USER JOB STEMMING FROM TERMINALS
* OF THIS TYPE WILL ALWAYS ROLL FROM THE CONTROL
* POINT ON I/O REQUESTS.
HST SPACE 4,10
** RECALL TIME PERIODS (MILLISECONDS)
RECMS1 EQU 10D JOB ACTIVE WITH NO READY DATA
RECMS2 EQU 100D IAF REQUEST QUEUE REJECTION
** REASON CODES FOR WHY *1MI* MIGHT GO INTO RECALL.
LOC 0
TALR BSS 1 IAF BUSY, TRY AGAIN LATER
TDOR BSS 1 *VADO* *TSEM* MONITOR FUNCTION REJECTED
TPOR BSS 1 *VDPO* *TSEM* MONITOR FUNCTION REJECTED
LOC *O
** ASSEMBLY CONSTANTS.
IAFF EQU 4000 FUNCTION REJECTED BECAUSE IAF ABORTED
TTB EQU 4000 TIOW/TINW BUSY, FROM *CPUMTR* IN IR+2
EJT$ EQU 1 ASSEMBLE EJT ADDRESSING (*COMPGFP*)
HST SPACE 4,10
** COMMON DECKS.
*CALL,COMPMAC
*CALL,COMSACC
*CALL,COMSCIO
*CALL,COMSCPS
*CALL,COMSEJT
*CALL COMSJCE
*CALL,COMSPIM
QUAL REM
*CALL,COMSREM
QUAL
*CALL,COMSSSJ
*CALL,COMSTCM
HST SPACE 4,10
** DIRECT LOCATION ASSIGNMENTS.
TT EQU T6 - T7 TERMINAL TABLE ADDRESS
NF EQU 15 NFL/100B
T8 EQU 16 SCRATCH
T9 EQU 17 SCRATCH
PA EQU T8 - T9 IAF POT MEMORY ADDRESS
MB EQU 20 - 24 MESSAGE BUFFER PARAMETERS FROM *PPR*
MB1 EQU 25 - 31 MESSAGE BUFFER + 1
MB2 EQU 32 - 36 MESSAGE BUFFER + 2
CD EQU MB1 SCRATCH BUFFER.
CN EQU MB2 SCRATCH BUFFER
BS EQU 37 - 43 BUFFER STATUS
FN EQU BS FILE NAME
FC EQU 44 *1MI* FUNCTION CODE
TN EQU 45 INTERACTIVE TERMINAL NUMBER
TA EQU 46 INTERACTIVE REFERENCE ADDRESS
PP EQU 47 CURRENT POT POINTER
WC EQU 57 CM TRANSFER WORD COUNT
FT EQU 60 - 61 BUFFER FIRST WORD ADDRESS
LM EQU 62 - 63 BUFFER LAST WORD ADDRESS
IN EQU 64 - 65 BUFFER IN POINTER
OT EQU 66 - 67 BUFFER OUT POINTER
ERRNZ OT-FT-6 FET DIRECT CELLS MUST BE CONTIGUOUS
ERRNZ /CIO/RDF CODE DEPENDS ON INTERNAL READ FUNCTION
ERRNZ /CIO/WTF-1 CODE DEPENDS ON INTERNAL WRITE FUNCTION
HST TITLE MACRO DEFINITIONS.
** MACRO DEFINITIONS.
HST SPACE 4,10
** CFET - COMPUTE FET ADDRESS.
* CFET N
*
* ENTRY *N* = FET CM WORD OFFSET.
*
* COMPUTES ABSOLUTE FET ADDRESS USING (IR+3 - IR+4)
*
* CALLS CAF.
PURGMAC CFET
CFET MACRO W
RJM CAF GET ABSOLUTE ADDRESS
IFC NE,$W$$,1
ADK W OFFSET IF REQUESTED
ENDM
HST SPACE 4,10
** ERROR - PROCESS *1MI* ERROR CODE.
*
* ERROR EC
*
* *EC* = *1MI* ERROR CODE.
PURGMAC ERROR
ERROR MACRO EC
LDK /CIOERR/EC
LJM ERR PROCESS ERROR
ENDM
HST SPACE 4,10
** MSG - DEFINE ERROR OPTIONS AND DAYFILE MESSAGES.
*
*ERR MSG (TEXT),EF,FETD
*
* ENTRY *ERR* = *COMSCIO* ERROR CODE.
* *TEXT* = DAYFILE ERROR MESSAGE.
* *EF* = CONTROL POINT ERROR FLAG TO SET.
* *FETD* = FET DUMP OPTION.
*
* EXIT ERROR PROCESSING OPTIONS AND DAYFILE MESSAGE
* ADDRESSES GENERATED PER FORMAT OF *TEPO* TABLE
* DESCRIPTION.
PURGMAC MSG
MACRO MSG,ERR,TEXT,EF,FETD
LOCAL A
VFD 6/EF,5//CIOERR/ERR,1/FETD
CON =Z*_TEXT_*
A MICRO 1,,$TEXT$
A MICCNT A
ERRNG 32D-A TEXT OVERFLOW CONDITION
ENDM
HST TITLE *1MI* MAIN PROGRAM.
ORG PPFW
HST RJM PRS PRESET *1MI*
LDD FC *1MI* FUNCTION CODE
LMN /CIO/WTF
ZJP HST5 IF *1MI* WRITE FUNCTION
AOM ANRA ANY OUTPUT SHOULD BE ENTIRELY FLUSHED
UJN HST5 FLUSH ANY LIST OF FILE OUTPUT
* PROCESS *1MI* READ FUNCTION.
HST1 RJM CTI CHECK FOR TERMINAL INPUT
ZJN HST1.1 IF NO INPUT FOUND
RJM PTI PROCESS TERMINAL INPUT
ZJN HST2 IF INPUT QUEUING WITHIN IAF IN PROCESS
LJM DPP DROP PP
* PROCESS NO INPUT ON A READ OPERATION.
HST1.1 RJM GMX
ZJN HST3 IF MULTIPLEXOR TERMINAL
HST2 RJM CJA CHECK JOB ACTIVITY
ZJN HST3 IF USER JOB INACTIVE
LMK ICPS
ZJN HST3 IF JOB IN *I* STATUS
LMK ICPS&XCPS
NJN HST4 IF JOB NOT IN RECALL
HST3 LDK ROSR ROLL OUT JOB
STD T0
RJM ROJ ROLL USER JOB
HST4 LDK TALR
LJM ERS ENTER RECALL STACK
* PROCESS *1MI* WRITE FUNCTION.
HST5 RJM CTO CHECK FOR TERMINAL OUTPUT
ZJN HST10 IF NO OUTPUT
RJM PTO PROCESS TERMINAL OUTPUT
MJN HST2 IF IAF OUTPUT THRESHOLD REACHED
HST10 LDD FC INITIAL *1MI* FUNCTION CODE
LMK /CIO/RDF
ZJP HST1 IF OUTSTANDING READ FUNCTION
RJM CFN COMPLETE OUTPUT FET
* UJN DPP DROP PPU
HST SPACE 4,10
** DPP - DROP PPU.
DPP BSS 0 ENTRY
MONITOR DPPM DROP PPU
LJM PPR EXIT TO PP RESIDENT
HST TITLE GENERAL SUBROUTINES.
ANR SPACE 4,10
** ANR - ASSURE NETWORK REQUIREMENTS.
*
* ENTRY (IR+3 - IR+4) = OUTPUT FET ADDRESS.
* (CD+3 - CD+4) = MAXIMUM OUTPUT BUFFER CONTENT.
* (BS - BS+4) = OUTPUT BUFFER STATUS.
* (FT - FT+1) = BUFFER FIRST WORD ADDRESS.
* (IN - IN+1) = BUFFER IN POINTER.
* (OT - OT+1) = BUFFER OUT POINTER.
* (LM - LM+1) = BUFFER LAST WORD ADDRESS.
* (CD) = NETWORK BLOCK LIMIT CM WORD COUNT.
*
* EXIT (CD+2) = ACCEPTABLE CM WORD COUNT ENCOMPASSING
* COMPLETE LOGICAL LINES.
* (A) = LESS THAN ZERO IF NO COMPLETE LINES ARE
* ENCOUNTERED WITHIN THE OUTPUT BUFFER.
*
* USES CM - CM+4, T2 - T4, CD+1 - CD+4.
*
* CALLS RBS.
ANR SUBR ENTRY/EXIT
* BEGINNING BUFFER SCAN IS FROM NETWORK BLOCK SIZE.
LDD CD+3 COMPARE BUFFER CONTENT TO BLOCKSIZE
SHN 14
LMD CD+4
SBD CD
SBN 1
PJN ANR1 IF CONTENT GREATER THAN BLOCKSIZE
* OUTPUT BUFFER IS SEARCHED FOR THE LAST *EOL* BYTE WHICH
* MARKS THE ACCEPTABLE CM WORD TRANSFER COUNT SATISFYING
* NETWORK REQUIREMENTS.
LDD CD+3 PRESET BUFFER SEARCH PARAMETERS
STD CD+1
LDD CD+4
STD CD+2
* BUFFER IS TRANSFERED AS IS IF FLUSH CONDITIONS PREVAIL.
LDC ** BUFFER FLUSH PASS NETWORK REQUIREMENTS
* LDC 1
ANRA EQU *-1
NJN ANRX IF WRITER,WRITEF,FLUSH OR READ FUNCTION
* PRESET RUNNING *IN* POINTER PRIOR TO BUFFER SCAN.
LDD IN CURRENT BUFFER *IN* POINTER
STD T3
LDD IN+1
STD T4
RJM RBS SCAN BUFFER FOR *EOL* WITHIN BLOCKSIZE
PJN ANRX IF EOL FOUND
LDM PTOA
LPN 77
NJN ANR0 IF BUFFER FULL
LDM ANRB
SBN 1
MJN ANRX IF SYNCHRONOUS TERMINAL AND NO EOL
ANR0 LDD CD+4 SET WORD COUNT TO BUFFER CONTENTS - 1
SBN 1
STD CD+2
STM CODE SET NO RECALL
SBN 1
LJM ANRX RETURN
* ADJUST BUFFER SCAN PARAMETERS TO BEGIN AT BLOCKSIZE.
ANR1 LDD CD NETWORK BLOCKSIZE CM WORD COUNT
STD CD+2
SHN -14
STD CD+1
LDD OT BUFFER *IN* IS SET TO *OUT* PLUS BLOCKSIZE
SHN 14
LMD OT+1
ADD CD+2
STD T3+1 RUNNING *IN* POINTER
SHN -14
STD T3
SBD LM
SHN 14
LMD T3+1
SBD LM+1
MJN ANR2 IF RUNNING *IN* IS LESS THAN *LIMIT*
ADD FT+1 BUFFER WRAP RUNNING *IN* POINTER
STD T3+1
SHN -14
ADD FT
STD T3
ANR2 RJM RBS SCAN BLOCKSIZE PORTION OF BUFFER
PJP ANRX IF *EOL* BYTE WITHIN BLOCKSIZE
* AT LEAST BLOCKSIZE-1 CM WORDS NEED BE TRANSFERED IF FLUSH
* CONDITIONS PREVAIL DUE TO WRITER,WRITEF,FLUSH OR READ
* FUNCTION IS OUTSTANDING.
LDC 0
* LDC 1 (IF TC .LE. 8, ASYNC LINE)
ANRB EQU *-1
ADM ANRA BUFFER FLUSH CONDITIONS
NJN ANR3 IF FLUSH REQUIRED
* BUFFERED WRITE FUNCTION REQUIRES TOTAL SCAN FOR *EOL*.
LDD IN PRESET REST OF BUFFER SCAN
STD T3
LDD IN+1
STD T3+1
LDD CD+3 INCLUDE TOTAL BUFFER CONTENT
STD CD+1
LDD CD+4
STD CD+2
RJM RBS SCAN MAXIMUM BUFFER CONTENT FOR *EOL*
MJP ANRX IF NO *EOL* BYTE WITHIN TOTAL BUFFER
* NETWORK BLOCKSIZE-1 CM WORDS ARE TRANSMITTED TO
* FACILITATE MAXIMUM NETWORK TRANSFER WHILE ALLOWING FOR
* CONTROL BYTE PROCESSING DURING CHARACTER CONVERSION
* WITHIN IAF.
ANR3 LDD CD NETWORK BLOCKSIZE CM WORD COUNT
SBN 1
STD CD+2 BLOCKSIZE-1 CM TRANSFER
UJP ANRX RETURN
CAF SPACE 4,10
** CAF - COMPUTE ABSOLUTE FET ADDRESS.
*
* ENTRY (IR+3 - IR+4) = RELATIVE FET ADDRESS.
*
* EXIT (A) = ABSOLUTE FET ADDRESS.
CAF SUBR ENTRY/EXIT
LDD IR+3 RELATIVE ADDRESS
LPN 37
SHN 6
ADD RA
SHN 6
ADD IR+4 ABSOLUTE ADDRESS
UJN CAFX RETURN
CEF SPACE 4,10
** CEF - CHECK FOR ERROR FLAG.
*
* EXIT (A) = ERROR FLAG, IF ONE EXISTS.
* (CM+2) = 1, IF USER BREAK ERROR FLAG AND JOB HAS
* EXTENDED REPRIEVE SELECTED.
* 0, OTHERWISE.
*
* USES CM - CM+4, T0.
CEF2 LDD T0 RETURN ERROR FLAG
CEF SUBR ENTRY/EXIT
LDD CP
ADK STSW CHECK FOR ERROR FLAG
CRD CM
LDN 0
STD CM+2
LDD CM+1
ZJN CEFX IF NO ERROR FLAG PRESENT
STD T0
LMK TIET
ZJN CEF1 IF USER BREAK ONE
LMK TAET&TIET
NJN CEF2 IF NOT A USER BREAK TWO
CEF1 LDD CP
ADK EECW CHECK FOR EXTENDED REPRIEVE
CRD CM
LDD CM
SHN 0-12
LPN 1
STD CM+2
UJN CEF2 RETURN
CFN SPACE 4,10
** CFN - COMPLETE FUNCTION.
*
* ENTRY (IR+3 - IR+4) = FET ADDRESS NEEDING COMPLETION.
* (BS - BS+4) = FET BUFFER STATUS.
*
* EXIT FET SET TO COMPLETION STATUS.
* CONTROL POINT AREA FET POINTER REMOVED FROM
* *TINW* OR *TIOW*.
*
* USES CM - CM+4.
*
* CALLS VAD.
*
* MACROS MONITOR.
CFN SUBR ENTRY/EXIT
LDD FC
LMK /CIO/RDF
NJN CFN1 IF NOT A READ FUNCTION
LDN TINW TERMINAL INPUT POINTER
STM CFNC+1 *UADM* REPLACEMENT FIELD
LDN 18D FIELD POSITION
SHN 6
RAM CFNC+2
* UPDATE CONTROL POINT AREA *TIOW* OR *TINW*.
CFN1 LDN ZERL PRESET *UADM* REQUEST WORD
CRD CM
LDD MA
CWM CFNC,ON WRITE REQUEST
LDN 1 ONE *UADM* REQUEST WITH NO DROP OF PP
STD CM+1
STD CM+2
MONITOR UADM UPDATE CONTROL POINT AREA
* SET FET COMPLETION STATUS.
LDD BS+4
SCN 1
LMN 1
STD BS+4
* REVALIDATE FET+0 ADDRESS.
LDD IR+3 FET ADDRESS
LPN 37
SHN 14
LMD IR+4
RJM VAD VALIDATE FET+0 PRIOR TO WRITE
ZJN CFN2 IF ADDRESS NOT WITHIN FL
CFNB CWD BS REWRITE FET+0
* PSN INHIBIT WRITE OF FET+0 (*ERX*)
CFN2 UJP CFNX RETURN
CFNC VFD 12/CSFS,12/TIOW,6/0,6/18D,24/**
CHG SPACE 4,10
** CHG - CONDITIONALLY HANG PP.
*
* ENTRY (A) = ERROR FLAG.
*
* EXIT (A) = ZERO.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
CHG SUBR ENTRY/EXIT
STD CM+2 SET ERROR FLAG
LDM CHG GET ADDRESS WHERE ERROR DETECTED
STD CM+1
MONITOR CHGM CONDITIONALLY HANG PP
UJN CHGX RETURN
CID SPACE 4,10
** CID - COPY INPUT DATA.
*
* ENTRY (IR+3 - IR+4) = INPUT FET ADDRESS.
* (BS - BS+4) = BUFFER STATUS.
* (PP) = INPUT AHEAD POT CHAIN POINTER.
* (TN) = TERMINAL CONNECTION NUMBER.
*
* EXIT INPUT AHEAD TRANSFERED TO FET.
* INPUT AHEAD POT CHAIN RELEASED.
*
* USES BS+3 - BS+4, CM - CM+4, T1 - T4, PP, WC.
*
* CALLS CFN, CIB, MRJ, RRR, SPA, SRR, UPP, WBB.
*
* MACROS CFET, MONITOR.
CID SUBR ENTRY/EXIT
LDK ZERL RESET *TSEM* REQUEST
CRM WDPO,ON
LDD PP BEGINNING POT CHAIN POINTER
STD T2 POT CHAIN TRAILER
STM WDPO+3 SET TO DROP ENTIRE POT CHAIN
LDD TN
STM WDPO+4
LDN /REM/VCPC TRANSFER CM WORD COUNT
STD WC
LDN 0 SET CM TRANSFER TALLY
STD T3
* EOR/EOF STATUS DEPENDS ON BUFFER CONTENT.
CID1 RJM SRR SET R-REGISTER TO IAF RA
RJM UPP UPDATE INPUT AHEAD POT POINTER
STM CIDB
* SCAN THIS POSSIBLE LAST POT MEMORY FOR EOL BYTE.
LDD T2 RESTORE PREVIOUS POT POINTER
STD PP
RJM SPA SET POT MEMORY ADDRESS
CRM BUFF,WC
RJM RRR RESTORE R-REGISTER
LDN 0
STD WC
STD T4
CID2 LDM BUFF+4,T4
ZJN CID3 IF EOL BYTE ENCOUNTERED
LDD T4 SCAN NEXT CM WORD
ADN 5
STD T4
AOD WC ACCEPT NEXT CM WORD
SBN /REM/VCPC+1
MJN CID2 IF NOT FULL POT MEMORY SCAN
SOD WC
UJN CID5 TRANSFER THIS FULL POT MEMORY
* ASSURE EOF CONDITION DETECTION.
CID3 LDD WC LAST POT MEMORY CM WORD COUNT
NJN CID4 IF AT LEAST TWO CM WORDS
LDD T3 CHECK EOF CONDITION
ADM BUFF
ADM BUFF+1
ADM BUFF+2
ADM BUFF+3
ZJP CID8 IF EOF CONDITION
CID4 AOD WC
AOM CIDA LAST POT MEMORY WRITTEN
* ENTER WRITE LOOP TO TRANSFER TO INPUT FET BUFFER.
CID5 LDD T2 PREVIOUS POT CHAIN POINTER
STD PP
RJM CIB CHECK INPUT BUFFER THRESHOLD
SBD WC
PJN CID6 IF ROOM FOR COMPLETE TRANSFER
ADD WC BIAS CM WORD TRANSFER COUNT
ZJN CID7 IF BUFFER THRESHOLD
STD WC TRANSFER MAXIMUM
CID6 LDD WC
STD T1 TRANSFER WORD COUNT FOR *WBB*
RAD T3 COMPLETE TRANSFER TALLY
LDC BUFF BEGINNING READ ADDRESS
RJM WBB WRITE BINARY BUFFER
LDN 0
CIDA EQU *-1
NJN CID7 IF LAST POT MEMORY WRITTEN
LDC ** UPDATE POT MEMORY POINTER
CIDB EQU *-1
STD T2
STD PP
NJP CID1 IF NOT EOR/EOF
* FORCE EOR/EOF ON INPUT FET.
LDN 0
STD T3
* COMPLETE READ OPERATIONS.
CID7 LDN ZERL RESET ENDING *IN* POINTER
CRD CM
LDD IN
STD CM+3
LDD IN+1
STD CM+4
CFET 2 *IN* POINTER OFFSET
CWD CM REWRITE *IN* POINTER
* COMPLETE EOR/EOF BUFFER STATUS.
LDD BS+3 RESET APPROPRIATE EOR/EOF LEVEL
SCN 74
STD BS+3
LDD T3 TRANSFER TALLY
ZJN CID8 IF EOF
LDN 4 INPUT LEVEL STATUS IS EOR
RAD BS+3
LDN 20 SET EOR
STM CIDC
CID8 LDD BS+4 RESET BUFFER STATUS
LPC 6002
LMC 30 (SET EOF TERMINATION)
* LMC 20 (SET EOR TERMINATION)
CIDC EQU *-1
STD BS+4
* *TINW* MUST BE CLEARED BEFORE ISSUING THE *VDPO* *TSEM*
* REQUEST, BECAUSE IF THE *VDPO* IS REJECTED AND THE JOB ROLLS,
* IAF WOULD MISTAKENLY THINK THE JOB WAS REQUESTING INPUT.
RJM CFN COMPLETE INPUT OPERATION
* RELEASE INPUT AHEAD POT CHAIN.
LDC /REM/VDPO
STM WDPO
LDD MA
CWM WDPO,ON
LDK ZERL
CRD CM
MONITOR TSEM DROP POTS
LDK TPOR CHECK FOR POSSIBLE *TSEM* REJECT
RJM MRJ
LJM CIDX RETURN
CJA SPACE 4,10
** CJA - CHECK USER JOB ACTIVITY.
*
* EXIT (A) = *STSW* CPU STATUS.
*
* USES CM - CM+4.
CJA SUBR ENTRY/EXIT
LDD CP CONTROL POINT ADDRESS
ADN STSW STATUS CONTROL WORD
CRD CM
LDD CM
SHN -11 CP STATUS ONLY
UJN CJAX RETURN
COD SPACE 4,10
** COD - COPY OUTPUT DATA.
*
* ENTRY (IR+3 - IR+4) = OUTPUT FET ADDRESS.
* (CD+2) = ACCEPTABLE CM WORD TRANSFER COUNT.
* (PP) = DIRECT OUTPUT POT MEMORY CHAIN POINTER.
*
* EXIT DIRECT OUTPUT ASSIGNED TO OUTPUT POT MEMORY CHAIN.
* (WC) = LAST POT MEMORY WORD COUNT.
*
* USES CD+2, PP, WC, CN - CN+4, T2 - T3.
*
* CALLS COB, RBB, RRR, SPA, SRR, UPP.
COD SUBR ENTRY/EXIT
* DUE TO IAF INTERNAL OUTPUT QUEUING, IT IS NECESSARY TO
* BYPASS THE FIRST TWO POT MEMORY CM WORDS IN EVERY POT
* MEMORY CHAIN ALLOCATED FOR OUTPUT TO ALLOW FOR IAF
* INTERNAL QUEUE LINKAGE CONTROL.
LDN /REM/VCPC-2 IAF POT MEMORY LENGTH-2
STD WC INITIAL CM WORD TRANSFER
* TRANSFER DIRECT OUTPUT.
COD1 LDD CD+2 CHECK ACCEPTABLE CM TRANSFER COUNT
SBN /REM/VCPC-2
CODA EQU *-1
PJN COD2 IF AT LEAST ONE POT MEMORY TO TRANSFER
ADN /REM/VCPC-2 BIAS FOR MAXIMUM TRANSFER
CODB EQU *-1
STD WC
COD2 LDD WC SET BUFFER TRANSFER COUNT *RBB*
STD T3
LDC BUFF BEGINNING WRITE BUFFER ADDRESS *RBB*
RJM RBB READ BINARY BUFFER
RJM SRR SET R-REGISTER TO IAF RA
RJM SPA SET POT MEMORY ADDRESS FOR THIS TRANSFER
ADN 2 ALLOW FOR LINKAGE FIRST POT ONLY
* PSN IF FIRST POT MEMORY PASSED
CODC EQU *-1
CWM BUFF,WC TRANSFER OUTPUT
RJM RRR RESTORE R-REGISTER
LDD PP UPDATE LAST POT MEMORY WRITTEN
STM WADO+2
AOM WADO+1 INCREMENT POT COUNT
* UPDATE ACCEPTABLE TRANSFER COUNT.
LDD CD+2 ACCEPTABLE CM WORD TRANSFER COUNT
SBD WC CURRENT TRANSFER
STD CD+2
LDN 0 INHIBIT SUCCESSIVE POT MEMORY OFFSET
CODD EQU *-1
NJN COD3 IF FIRST POT MEMORY PASSED
LDN 2
RAM CODA
LDN 2
RAM CODB
LDN PSNI
STM CODC
AOM CODD
AOD WC NEGATE LINKAGE CONTROL OFFSET COUNT
AOD WC
* CONTINUE UNTIL NETWORK REQUIREMENT OR FLUSH COMPLETION.
COD3 LDD CD+2 REMAINING ACCEPTABLE CM WORD COUNT
ZJN COD4 IF NETWORK REQUIREMENT MADE
RJM SRR SET R-REGISTER TO IAF RA
RJM UPP UPDATE POT MEMORY
RJM RRR RESTORE R-REGISTER
LDD PP
NJP COD1 IF POT MEMORY AVAILABLE
* NETWORK REQUIREMENT MADE OR POT MEMORY EXHAUSTION.
COD4 LDN ZERL COMPLETE TRANSFER PROCESS
CRD CN
LDN 2R"IB" *0014* BYTE
STD CN END OF TRANSFER PRESET
LDD WC ALLOW FOR POSSIBLE TERMINATOR
SBN /REM/VCPC
ZJN COD5 IF COMPLETE POT MEMORY WRITTEN
RJM SRR SET R-REGISTER TO IAF RA
RJM SPA SET POT MEMORY ADDRESS
ADD WC LAST POT WORD COUNT
CWD CN WRITE TRANSFER TERMINATOR
RJM RRR RESTORE R-REGISTER
* PRESET OUTPUT COMPLETION.
COD5 LDK ZERL
CRD CN
RJM COB CHECK FOR REMAINING OUTPUT
NJN COD6 IF BUFFER IS NOT EMPTY
LDM ANRA
ZJN COD7 IF NOT EOR OR EOF
LDN 2
STD CN+4
UJN COD7 PLACE FLAG IN WORD TWO OF THE POT HEADER
COD6 LDC 0 CHECK NO RECALL FLAG
* LDC WC (IF NO RECALL - ONE WORD LEFT IN BUFFER)
CODE EQU *-1 SET BY *ANR*
NJN COD7 IF NO RECALL REQUIRED
AOM PTOB ADDITIONAL OUTPUT REMAINS
COD7 LDM WADO+3 GET ADDRESS OF FIRST POT
STD PP
RJM SRR SET R-REGISTER TO IAF RA
RJM SPA
ADN 1
CWD CN
RJM RRR RESTORE R-REGISTER
LJM CODX RETURN
CTI SPACE 4,15
** CTI - CHECK FOR TERMINAL INPUT.
*
* ENTRY (TT - TT+1) = TERMINAL TABLE ADDRESS.
* (TN) = TERMINAL CONNECTION NUMBER.
*
* EXIT (IR+3 - IR+4) = INPUT FET ADDRESS.
* (A) = TYPEAHEAD QUEUE POINTER.
* (A) = ZERO IF NO INPUT AHEAD.
*
* USES CM - CM+4, IR - IR+4.
*
* CALLS GMX, RRR, SRR.
CTI SUBR ENTRY/EXIT
LDD IA REREAD ORIGINAL INPUT REGISTER
CRD IR
LDD IR+3
LPN 37
ADD IR+4
ZJN CTIX IF NO INPUT FET
* CHECK FOR INPUT AHEAD QUEUE PREPROCESSED.
RJM SRR SET R-REGISTER TO IAF RA
LDD TT
SHN 14
LMD TT+1
ADN /REM/VROT *VADI* REQUEST WORD
CRD CM
RJM RRR RESTORE R-REGISTER
LDD CM+1
ZJN CTI1 IF QUEUE NOT PREPROCESSED
STM PTIA INHIBIT UNECESSARY *VADI* FUNCTION
UJP CTIX RETURN
* READ TERMINAL INPUT TYPEAHEAD QUEUE FROM IAF.
CTI1 RJM GMX MULTIPLEXOR TERMINALS REQUIRE PREPROCESS
ZJP CTIX IF MULTIPLEXOR TERMINAL
RJM SRR SET R-REGISTER TO IAF RA
LDD TA IAF REFERENCE ADDRESS
SHN 6
ADN /REM/VMST TERMINAL STATUS MESSAGE WORD
CRD CM
LDD CM+1
SHN 6
ADD TA
SHN 6
ADD CM+2
ADD TN
CRD CM READ TERMINAL MESSAGE WORD
RJM RRR RESTORE R-REGISTER
LDD CM+4 INPUT TYPEAHEAD QUEUE POINTER
UJP CTIX RETURN
CTO SPACE 4,15
** CTO - CHECK FOR TERMINAL OUTPUT.
*
* ENTRY (TT - TT+1) = TERMINAL TABLE ADDRESS.
*
* EXIT (IR+3 - IR+4) = OUTPUT FET ADDRESS.
* (CD+3 - CD+4) = MAXIMUM OUTPUT BUFFER CONTENT.
* (A) = NONZERO IF TERMINAL OUTPUT.
*
* USES IR+3, IR+4, CM - CM+4, CD - CD+4.
*
* CALLS COB, RRR, SLF, SRR, STA, VFP.
CTO SUBR ENTRY/EXIT
LDN ZERL
CRD CD
* *TIOW* IS OUTPUT FET ADDRESS.
LDD CP READ TERMINAL OUTPUT POINTER
ADN TIOW
CRD CM
LDD CM+3
LPN 37
SHN 14
LMD CM+4
ZJN CTO1 IF NO OUTPUT POINTER
STD IR+4
SHN -14
STD IR+3
UJN CTO2 CHECK OUTPUT BUFFER CONTENT
CTO1 RJM SLF SEARCH LIST OF FILES
ZJN CTO3 IF NO *LOFW* OR RA+2 LIST ENTRIES
* RETURN OUTPUT BUFFER COUNT.
CTO2 RJM VFP VERIFY FET PARAMETERS
RJM COB CHECK OUTPUT BUFFER CONTENT
STD CD+4
SHN -14
STD CD+3
ADD CD+4
CTO3 STM CTOA SAVE EXIT CONDITION
RJM SRR SET R-REGISTER TO IAF RA
RJM STA RESTORE TERMINAL TABLE ADDRESS
RJM RRR RESTORE R-REGISTER
LDM CTOA
UJP CTOX RETURN
CTOA CON 0 EXIT CONDITION
DFS SPACE 4,10
** DFS - DETERMINE FLUSH STATUS.
*
* THE REQUIREMENTS FOR A FILE TO BE FLUSHED ARE-
* - FET MUST BE WITHIN FL.
* - BUFFER MUST HAVE DATA IN IT.
* - FET MUST NOT BE BUSY.
* - CODE IN FET MUST BE A VALID *CIO* REQUEST.
* - FILE MUST BE *OUTPUT* AND UNASSIGNED OR IT MUST BE
* ASSIGNED TO TERMINAL EQUIPMENT.
*
* NOTE- ROUTINES *1RO*, *1AJ* AND *1MI* OBSERVE THE ABOVE
* CONVENTIONS.
*
* ENTRY (T8 - T9) = FET ADDRESS.
*
* EXIT (A) = ZERO, IF ENTRY NOT A FLUSH CANDIDATE.
* (CN - CN+4) = FIRST WORD OF FET.
*
* USES T1 - T7, CM - CM+4, CN - CN+4.
*
* CALLS VAD.
DFS7 LDN 0 NOT A FLUSH CANDIDATE STATUS
DFS SUBR ENTRY/EXIT
LDD T8 READ FET PARAMETERS
LPN 37
SHN 14
LMD T9
ADN 3
RJM VAD
ZJN DFSX IF FET OUTSIDE FL
CRD T3 READ OUT
SBN 1
CRD T1 READ IN
SBN 2
CRD CN READ FET+0
LDD CN+4
LPN 1
ZJN DFSX IF FET BUSY
LDD T6
SBD T4
SHN 14
ADD T7
SBD T5
ZJN DFSX IF BUFFER EMPTY
LDN DFSAL CHECK ACCEPTABLE *CIO* CALLS
STD T1
LDD CN+3
LPN 77
NJP DFS7 IF FET ERRORS
* SCAN ACCEPTABLE *CIO* CODES.
DFS1 SOD T1
MJP DFS7 IF FET CODE NOT IN LIST
LDM DFSA,T1
LMD CN+4
SCN 2 IGNORE BINARY BIT
NJP DFS1 IF NOT VALID FET CODE
LDD NF SET NFL SIZE + 1
SHN 6
ADN 1
STD T7
* SEARCH FNT ENTRIES FOR ASSIGNED FILE.
LDC FNTN+LENF
STD T6
DFS2 NFA T6,R READ FNT ENTRY
CRD CM
LDD CM COMPARE FILE NAMES
ZJN DFS3 IF NO ENTRY
LMD CN
NJN DFS3 IF NO MATCH
LDD CM+1
LMD CN+1
NJN DFS3 IF NO MATCH
LDD CM+2
LMD CN+2
NJN DFS3 IF NO MATCH
LDD CM+3
LMD CN+3
SCN 77
ZJN DFS5 IF MATCH
DFS3 LDN LENF INCREMENT TO NEXT ENTRY
RAD T6
SBD T7
MJN DFS2 IF NOT END OF FNT
LDD CN CHECK FOR *OUTPUT*
LMC 2ROU
NJN DFS4 IF NOT *OUTPUT*
LDD CN+1
LMC 2RTP
NJN DFS4 IF NOT *OUTPUT*
LDD CN+2
LMC 2RUT
NJN DFS4 IF NOT *OUTPUT*
LDD CN+3
SCN 77
ZJN DFS6 IF *OUTPUT*
DFS4 UJP DFS7 FILE IS NOT A FLUSH CANDIDATE
* EQUIPMENT ASSIGNMENT MUST BE *TTEQ*.
DFS5 NFA T6,R CHECK EQUIPMENT ASSIGNMENT
ADN FSTL
CRD CM
LDD CM
LPC 777
LMN TTEQ
NJN DFS4 IF NOT ASSIGNED TO *TT*
DFS6 LDN 1 INDICATE OUTPUT AVAILABLE
UJP DFSX RETURN
HST SPACE 4,10
** DFSA - TABLE OF CIO CODES TO FLUSH ON.
*
* ENTRY ONE WORD.
*
*T 12/*CIO* FUNCTION CODE.
DFSA BSS 0
LOC 0
CON 1 FET COMPLETE STATUS
CON 5 WRITE PRU
CON 15 BUFFERED WRITE
CON 25 WRITE EOR
CON 35 WRITE EOF
CON 105 WRITE NO REWIND
CON 121 OPEN ALTER
CON 145 OPEN WRITE REWIND
CON 161 OPEN ALTER REWIND
LOC *O
DFSAL EQU *-DFSA *DFSA* TABLE LENGTH
ERR SPACE 4,10
** ERR - PROCESS ERROR.
*
* ENTRY (A) = ERROR CODE - *COMSCIO*.
*
* EXIT TO *ERX* TO PROCESS ERROR RESPONSE.
* (ERRA) = ERROR CODE ON ENTRY.
*
* USES CM - CM+4.
*
* CALLS CFN, ERX.
ERR BSS 0 ENTRY
STM ERRA SAVE ERROR CODE
RJM ERX PROCESS *1MI* ERROR
RJM CFN COMPLETE FUNCTION
LJM DPP DROP PP
ERRA CON 0 *1MI* ERROR CODE
ERS SPACE 4,10
** ERS - ENTER RECALL STACK.
*
* ENTRY (A) = RECALL REASON CODE.
* ALL OTHER PARAMETERS PRESET IN RCPW - RCPW+4.
*
* EXIT TO *PPR*.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
ERS BSS 0 ENTRY
SHN 6
RAM RCPW+1 SAVE RECALL REASON CODE
LDK ZERL
CRD CM
LDC RECMS1 DEFAULT TIME PERIOD FOR RECALL
* LDC RECMS2 MONITOR FUNCTION REJECT RECALL TIME PERIOD
ERSA EQU *-1
SHN 0 BIAS RECALL PERIOD REJECTION COUNT TIMES
ERSE EQU *-1
STD CM+4
LDD IA STORE INPUT REGISTER
CRD IR
LDD MA
CWM IR,ON REWRITE INPUT REGISTER TO MESSAGE BUFFER
CWM RCPW,ON STORE RECALL PARAMETERS
LDN PTMF TIMED RECALL CRITERIA
STD CM+1
MONITOR RECM RECALL PPU
LJM PPR EXIT TO *PPR*
ERX SPACE 4,10
** ERX - ERROR EXIT PROCESSOR.
*
* ENTRY (IR+3 - IR+4) = INPUT OR OUTPUT FET ADDRESS.
* (BS - BS+4) = BUFFER STATUS.
* (ERRA) = *CIOERR* ERROR CODE INDEX.
* (FC) = *1MI* FUNCTION CODE.
*
* EXIT TO *DPP* IF INCORRECT ERROR CODE DETECTION.
* ERROR FLAG SET IN CONTROL POINT PER ERROR OPTION.
* DAYFILE ERROR MESSAGE RESPONSE ISSUED.
*
* USES T1, CM - CM+4, CN - CN+4.
*
* CALLS CHG, IDM, VAD.
*
* MACROS CFET, MONITOR.
ERX SUBR ENTRY/EXIT
LDC 22S9 FET ERROR STATUS = 22B
RAD BS+4
SHN -14
RAD BS+3
LDN ZERL
CRD CM
LDN 0 PRESET *TEPO* TABLE SEARCH
STD T1
* SEARCH *TEPO* TABLE FOR PROCESSING PARAMETERS.
ERX1 LDN TEPOL *TEPO* TABLE LENGTH
SBD T1
ZJN ERX2 IF TABLE LENGTH EXCEEDED
LDM TEPO,T1 PROCESSING PARAMETERS
SHN -1
LPN 37
SBM ERRA
ZJN ERX3 IF SELECTION FOUND
PJN ERX2 IF SELECTION PASSED
AOD T1 ADVANCE TABLE SEARCH
AOD T1
UJN ERX1 CONTINUE *TEPO* SCAN
* HANG *1MI* ON INCORRECT ERROR DETECTION.
ERX2 LDK PPET SET ERROR FLAG
RJM CHG CONDITIONALLY HANG PP
LJM DPP DROP PP
* ISSUE APPROPRIATE DAYFILE RESPONSE AND SET ERROR OPTIONS.
ERX3 LDM ERRA *CIOERR* ERROR CODE
LMK /CIOERR/ARG
NJN ERX4 IF NOT AN ARGUMENT ERROR
LDN PSNI INHIBIT WRITE OF FET+0
STM CFNB
ERX4 AOD T1 MESSAGE RESPONSE ADDRESS OFFSET
LDM TEPO,T1
STM IDMA
SOD T1
LDM TEPO,T1 READ ERROR PROCESSING OPTIONS
SHN -6
ZJN ERX5 IF NO ERROR FLAG OPTION
* SET CONTROL POINT ERROR FLAG.
STD CM+1
MONITOR CEFM SET CONTROL POINT ERROR FLAG
* SET FET DUMP OPTIONS.
ERX5 LDM TEPO,T1
LPN 1
ZJN ERX6 IF NO FET DUMP OPTION
LDD CP
ADC PPDW PPU DUMP CONTROL WORD
STD T1
CRD CM
CFET 1 GET CURRENT FET LENGTH AND VALIDATE
CRD CN
LDD CN+3
SHN -6
ADN 5 INITIAL FET LENGTH
STD CN+3
LDD IR+3
SHN 14
LMD IR+4
ADD CN+3 CURRENT FET LENGTH
RJM VAD VALIDATE FET DUMP LENGTH
ZJN ERX6 IF FET DUMP EXCEEDS FIELD LENGTH
* SET FET ADDRESS AND DUMP WORD COUNT TO *PPDW*.
LDD IR+3
LPN 77
SHN 14
LMD CN+3 WORD COUNT OF DUMP
SHN 6
STD CM+3
LDD IR+4
STD CM+4
LDD T1 REWRITE *PPDW*
CWD CM
* SET UP DAYFILE ERROR MESSAGE RESPONSE.
ERX6 RJM IDM ISSUE DAYFILE MESSAGE
UJP ERXX RETURN
HST SPACE 4,10
** TEPO - TABLE OF ERROR PROCESSING OPTIONS AND DAYFILE
* ERROR MESSAGES.
*
* ENTRY TWO WORDS ASCENDING ORDER PER *ERR* ERROR
* CODE VALUE.
*
*T 6/EF, 5/ERR, 1/FETD
*T, 12/ADDR
*
* EF = CONTROL POINT ERROR FLAG OPTION.
* ERR = *CIOERR* ERROR CODE.
* FETD = SET IF FET DUMP DESIRED ON ERROR TERMINATION.
* ADDR = ADDRESS OF CORRESPONDING DAYFILE MESSAGE.
TEPO BSS 0
LOC 0
ARG MSG (FET ADDRESS OUT OF RANGE),PPET,0
BUF MSG (BUFFER ARGUMENT ERROR ON ),PPET,1
IRQ MSG (INCORRECT I/O REQUEST ON FILE ),PPET,1
LOC *O
TEPOL EQU *-TEPO
GMX SPACE 4,10
** GMX - GET MULTIPLEXOR STATUS.
*
* ENTRY (TA) = INTERACTIVE REFERENCE ADDRESS.
* (TN) = TERMINAL CONNECTION NUMBER.
*
* EXIT (A) = ZERO IF MULTIPLEXOR TERMINAL TYPE.
*
* USES CM - CM+4.
*
* CALLS RRR, SRR.
GMX0 LDN 0 MULTIPLEXOR TERMINAL TYPE
GMX SUBR ENTRY/EXIT
RJM SRR SET R-REGISTER TO IAF RA
LDD TA INTERACTIVE REFERENCE ADDRESS
SHN 6
ADN /REM/VNTP TERMINAL TABLE POINTER
CRD CM
RJM RRR RESTORE R-REGISTER
LDD CM+2
ZJN GMXX IF NO NETWORK TERMINALS DEFINED
SBN 1 (A) = HIGHEST MUX TERMINAL NUMBER
SBD TN
PJN GMX0 IF A MUX TERMINAL
UJN GMXX RETURN
IDM SPACE 4,10
** IDM - SET UP AND ISSUE DAYFILE MESSAGE.
*
* ENTRY (BS - BS+4) = BUFFER STATUS.
* (IDMA) = DAYFILE MESSAGE ADDRESS.
*
* EXIT DAYFILE MESSAGE ISSUED.
*
* USES T1, CM.
*
* CALLS ACS, ANS, DFM.
IDM SUBR ENTRY/EXIT
LDC BUFF SET BUFFER ADDRESS FOR *ACS*, *ANS*
STD T1
LDC 1R *100
STI T1
LDC ** MOVE MESSAGE TO CHARACTER BUFFER
IDMA EQU *-1 MESSAGE ADDRESS (*ERX*)
RJM ACS ASSEMBLE CHARACTER STRING
LDD BS+3
STD CM PRESERVE BUFFER STATUS
SCN 77
STD BS+3
LDN BS MOVE FILE NAME
RJM ACS ASSEMBLE NAME
LDD CM RESTORE BUFFER STATUS FIELD
STD BS+3
LDC =Z* AT * ADD * AT *
RJM ACS ASSEMBLE STRING
LDD IR+3 ADD FET ADDRESS
LPN 77
SHN 14
LMD IR+4
RJM ANS ASSEMBLE NUMERIC STRING
LDC =Z*.* ADD TERMINATOR
RJM ACS ASSEMBLE TERMINATOR
* ISSUE DAYFILE MESSAGE.
LDC BUFF MESSAGE BUFFER ADDRESS FOR *DFM*
RJM DFM ISSUE MESSAGE
UJP IDMX RETURN
ITA SPACE 4,15
** ITA - INITIALIZE INTERACTIVE ACCESS.
*
* ENTRY SUBSYSTEM CONTROL TABLE TO BE SCANNED FOR
* IAF ACCESSIBILITY.
*
* EXIT (TA) = IAF REFERENCE ADDRESS.
* (A) = NONZERO IF IAF ACCESSIBLE.
*
* USES CM - CM+4, T1 - T5.
*
* CALLS PIR.
ITA0 LDN 0 IAF INACESSIBLE STATUS
ITA SUBR ENTRY/EXIT
LDC SSCP SUBSYSTEM TABLE POINTER
CRD CM
LDD CM+2 TABLE ADDRESS
LPN 37
SHN 14
LMD CM+3
CRD CM READ TABLE ENTRY
LDD CM IAF ENTRY
SHN 21-13 ACCESSIBILITY BIT
PJN ITA0 IF IAF INACCESSIBLE
* IF NO ERROR FLAGS, RETURN WITH IAF REFERENCE ADDRESS.
SHN 14
LPC 3777 MASK OFF ACCESSIBILITY BIT
SHN 7 BIAS CONTROL POINT ASSIGNMENT 200B
ADN STSW STATUS CONTROL WORD
CRD T1
ADN FLSW-STSW FIELD LENGTH CONTROL WORD
CRD CM
LDD T1+1 ERROR FLAG FIELD
NJN ITA0 IF IAF INACCESSIBLE
LDD CM+3
ZJN ITAX IF NO REFERENCE ADDRESS
RJM PIR PRESET WITH IAF R-REGISTER
UJN ITAX RETURN
MRJ SPACE 4,10
** MRJ - CHECK FOR MONITOR FUNCTION REJECTION.
*
* *MRJ* CHECKS TO SEE IF A *TSEM* OR *TGPM* MONITOR FUNCTION
* WAS REJECTED. IF NOT, *MRJ* RETURNS TO THE CALLER. IF A
* FUNCTION WAS REJECTED, *MRJ* SAVES ALL NECESSARY RECALL
* INFORMATION AND THEN CAUSES *1MI* TO ENTER PP RECALL.
*
* ENTRY (A) = RECALL REASON CODE, IF FUNCTION REJECTED.
* (CM+1) = *CPUMTR* REPLY FROM MONITOR FUNCTION.
* (BS - BS+4) = CURRENT BUFFER STATUS.
*
* EXIT TO *ERS* IF FUNCTION WAS REJECTED.
*
* USES T0.
*
* CALLS ROJ.
MRJ SUBR ENTRY/EXIT
STM MRJA SAVE RECALL REASON CODE
LDD CM+1
ZJN MRJ1 IF IAF IS INACCESSIBLE
LMC 7777
ZJN MRJ2 IF THE MONITOR FUNCTION WAS REJECTED
UJN MRJX RETURN
* ROLLOUT WITH SUSPENSION IF IAF IS INACTIVE ONLY.
MRJ1 LDK ROSU SUSPEND ON JOB ROLLOUT
STD T0
RJM ROJ ROLLOUT USER JOB
LDK IAFF SET FUNCTION REJECTED BECAUSE IAF ABORTED
RAM RCPW+4
* RECALL PPU ON MONITOR REJECTION FOR 100 MILLISECONDS.
MRJ2 LDK RECMS2 100 MS RECALL PERIOD
STM ERSA
LDM RCRF+4 BIAS RECALL TIME PERIOD
LPN 7
RAM ERSE
LPN 7
RAM RCPW+4
LPN 7
SBN 4
PJN MRJ3 IF MAXIMUM TIME PERIOD REACHED
AOM RCPW+4 INCREMENT FUNCTION REJECT COUNT
MRJ3 LDM WIAF+3 FIRST POT
STM RCPW+3
LDM MRJA
LJM ERS ENTER PP RECALL
MRJA CON 0 RECALL REASON CODE
PTI SPACE 4,10
** PTI - PROCESS TERMINAL INPUT.
*
* ENTRY (PTIA) = PREPROCESSED INPUT AHEAD QUEUE.
* (TN) = TERMINAL NUMBER.
*
* EXIT INPUT AHEAD TRANSFERED TO INPUT FET.
* (IR+3- IR+4) = INPUT FET ADDRESS.
* (TT - TT+1) = TERMINAL TABLE ADDRESS.
* (A) = NONZERO IF TRANSFER COMPLETE.
*
* USES CM - CM+4, IR - IR+4, PP, T2, T8 - T9.
*
* CALLS CID, ITA, MRJ, RRR, SRR, STA, VFP.
*
* MACROS DELAY, MONITOR, PAUSE.
PTI SUBR ENTRY/EXIT
* ASSURE INPUT FET ADDRESS FOLLOWING POSSIBLE OUTPUT FLUSH.
LDD IA REREAD ORIGINAL INPUT REGISTER
CRD IR
RJM VFP VERIFY FET PARAMETERS
RJM SRR SET R-REGISTER TO IAF RA
RJM STA SET TERMINAL TABLE ADDRESS
RJM RRR RESTORE R-REGISTER
LDC ** PREPROCESSED INPUT QUEUE POINTER (*CTI*)
PTIA EQU *-1
NJN PTI1 IF QUEUE PREPROCESSED
* FUNCTION IAF FOR DIRECT INPUT ASSIGNMENT.
PTI0 SOM PTIC DECREMENT *TSEM* REQUEST COUNT
LDK ZERL RESET *TSEM* REQUEST
CRD CM
CRM WADI,ON
LDC /REM/VADI
STM WADI
LDD TN TERMINAL NUMBER TO FUNCTION REQUEST
STM WADI+4
LDD MA
CWM WADI,ON
MONITOR TSEM
LDK TALR PRESET POSSIBLE VADI REJECTION
RJM MRJ
* STATUS PREVIOUS *VADI* REQUEST.
PTI1 LDD RA SAVE REFERENCE ADDRESS
STD T9
* DELAY THE INPUT PROCESS TO ALLOW *VADI* COMPLETION.
PTI2 RJM SRR SET R-REGISTER TO IAF RA
LDD TT *VADI* FUNCTION REQUEST RESPONSE
SHN 14
LMD TT+1
ADN /REM/VROT
CRD CM
RJM RRR RESTORE R-REGISTER
LDD CM+1
NJP PTI6 IF DIRECT INPUT ASSIGNED
LDD CM+3
LPC 6000
NJP PTI5 IF *TSEM* RESPONSE
* LDN 0 DEFINE DELAY TYPE
STM PTIB
* DELAY APPROXIMATLY 10 MILLISECONDS.
PTI2.1 LDN 77 DELAY CYCLE INCREMENT
STD T8
PTI3 SOD T8
NJN PTI3.1 IF DELAY CYCLE NOT EXHAUSTED
LDC 0 (TYPE OF DELAY)
PTIB EQU *-1
ZJP PTI2 IF *TSEM* NOT COMPLETE
LJM PTI0 REISSUE *TSEM*
PTI3.1 DELAY
PAUSE ALLOW STORAGE RELOCATION
LDD CM+1 ASSURE ERROR CONDITION THIS JOB
ZJN PTI4 IF NO ERROR FLAG AT THIS CP
LDN 0
UJP PTIX DISCONTINUE READ REQUEST
* ASSURE IAF ACCESSILILITY.
PTI4 RJM ITA GET IAF CURRENT STATUS
NJP PTI3 IF IAF STILL ACCESSIBLE
LDK ZERL
CRD CM
LDK TALR TREAT AS A *VADI* REJECTION
RJM MRJ THIS WILL ALWAYS EXIT VIA *ERS*
* *VADI* FUNCTION REJECTION IS POSSIBLE DUE TO LOW POT
* MEMORY WITHIN IAF, NO INPUT AHEAD IN IAF, THE IAF
* RECEIVE BUFFER BUSY, OR OVERFLOW OCCURRED. IF THE
* RECEIVE BUFFER IS BUSY BUT THERE IS TYPEAHEAD DATA
* IN IAF, DELAY AND REISSUE THE *VADI* *TSEM* REQUEST
* (A MAXIMUM OF EIGHT TIMES). IN THE THREE OTHER REJECT
* CASES, ROLL THE JOB.
PTI5 STD T2 SAVE REJECT TYPE
LMD CM+3
STD CM+3
AOM PTIB SET DELAY TYPE
RJM SRR SET R-REGISTER TO IAF RA
LDD TT TERMINAL TABLE ADDRESS
SHN 14
LMD TT+1
ADN /REM/VROT
CWD CM CLEAR REQUEST WORD
RJM RRR RESTORE R-REGISTER
LDD T2 CHECK REJECT TYPE
SHN 21-13
PJN PTI5.1 IF REJECT RESPONSE
LDM PTIC CHECK *TSEM* REQUEST COUNT
SHN 6
PJP PTI2.1 IF NOT AT LIMIT
PTI5.1 LDN 0 INCOMPLETION STATUS
UJP PTIX RETURN
* SATISFY READ FUNCTION REQUEST ON ACTIVE INPUT.
PTI6 STD PP SET INPUT AHEAD POT POINTER
* RESET INPUT FET POINTERS IF STORAGE RELOCATION OCCURRED.
LDD RA CURRENT REFERENCE ADDRESS
LMD T9 RA PRIOR TO POSSIBLE STORAGE RELOCATION
ZJN PTI7 IF NO STORAGE MOVEMENT OCCURRED
RJM VFP VERIFY FET PARAMETERS
RJM SRR SET R-REGISTER TO IAF RA
LDD TT REREAD *VROT*
SHN 14
LMD TT+1
ADN /REM/VROT
CRD CM
RJM RRR RESTORE R-REGISTER
PTI7 LDN 0 CLEAR POT POINTER
STD CM+1
LDD CM+4 CLEAR INPUT REQUESTED
SCN 10
STD CM+4
RJM SRR SET R-REGISTER TO IAF RA
LDD TT
SHN 14
LMD TT+1
ADN /REM/VROT
CWD CM REWRITE *VROT*
RJM RRR RESTORE R-REGISTER
RJM CID COPY INPUT DATA
LDN 1
LJM PTIX EXIT
PTIC CON 10 *TSEM* REQUEST LIMIT
PTO SPACE 4,20
** PTO - PROCESS TERMINAL OUTPUT.
*
* ENTRY (IR+3 - IR+4) = OUTPUT FET ADDRESS.
* (CD+3 - CD+4) = MAXIMUM OUTPUT BUFFER CONTENT.
* (BS - BS+4) = OUTPUT BUFFER STATUS.
* (TN) = TERMINAL CONNECTION NUMBER.
*
* EXIT TERMINAL OUTPUT ASSIGNED.
* (A) .LT. 0, IF IAF OUTPUT THRESHOLD REACHED.
* (TT - TT+1) = TERMINAL TABLE ADDRESS.
* TO *ERS* IF NOT ALL OUTPUT FLUSHED.
* TO *DPP* IF FULL OUTPUT BUFFER AND NO EOL.
*
* USES CD, PP, CM - CM+4, CN - CN+4, T2 - T3.
*
* CALLS ANR, CHG, CIB, COD, GMX, MRJ, ROJ, RRR, SRR, STA.
*
* MACROS CFET, MONITOR.
PTO SUBR ENTRY/EXIT
RJM SRR SET R-REGISTER TO IAF RA
RJM STA SET TERMINAL TABLE ADDRESS
RJM RRR RESTORE R-REGISTER
LDD BS+4 BUFFER STATUS
LPN 20
NJN PTO1 IF AN EOR/EOF FUNCTION
RJM CIB CHECK BUFFER INPUT STATUS
NJN PTO2 IF NOT A FULL BUFFER
* IN THE EVENT NETWORK REQUIREMENTS ARE NOT MET FOR
* A BUFFERED WRITE ON A FULL BUFFER, IT IS NECESSARY
* TO ROLLOUT THE USER JOB TO ASSURE BUFFER FLUSH
* COMPLETION.
AOM PTOA SIGNAL FULL BUFFERED WRITE
UJN PTO2 ATTEMPT OUTPUT TRANSFER
* IGNORE NETWORK REQUIREMENTS ON EOR/EOF FUNCTION.
PTO1 AOM ANRA PASS NETWORK OUTPUT REQUIREMENTS
* SET NETWORK TERMINAL DOWNLINE BLOCK LIMIT.
PTO2 RJM GMX
ZJN PTO2.2 IF MUX
RJM SRR SET R-REGISTER TO IAF RA
LDD TA
SHN 6
ADN /REM/VMST
CRD CM READ TERMINAL MESSAGE BUFFER POINTER
LDD CM+1
SHN 6
ADD TA
SHN 6
ADD CM+2
ADD TN
CRD CM READ TERMINAL *VMST*
RJM RRR RESTORE R-REGISTER
LDD CM+1 CHECK TERMINAL CLASS
LPC 377
SBN 10+1
PJN PTO2.1 IF SYNCHRONOUS TERMINAL
AOM ANRB
PTO2.1 LDD CM+3
SHN -6
LPN 37
NJN PTO3 IF NETWORK BLOCKSIZE DEFINED
* HANG *1MI* ON INCORRECT NETWORK BLOCKSIZE.
* LDN 0 SET NO ERROR FLAG
RJM CHG CONDITIONALLY HANG PP
PTO2.2 LDN /REM/VOPL DEFAULT BLOCKSIZE
* REQUIREMENTS DEPEND ON BLOCKSIZE.
PTO3 SHN 3 CONVERT BLOCKSIZE TO CM WORD COUNT
STD CD
RJM ANR ASSURE TERMINAL REQUIREMENTS
MJP PTO6 IF REQUIREMENTS NOT ASSURED
RJM GMX
ZJP PTO6.1 IF MUX TERMINAL
LDN 0 CLEAR *TSEM* POT COUNT
STD T2
LDK /REM/VTRP *TSEM* QUEUE POINTER
STD T3
SOD T3
RJM SRR SET R-REGISTER TO IAF RA
PTO3.5 AOD T3 INCREMENT POINTER
SBK /REM/VTSP END OF QUEUE
PJN PTO4 IF END OF *TSEM* QUEUE
LDD TA IAF REFERENCE ADDRESS
SHN 6
ADD T3 ADD IN POINTER
CRD CM READ IN QUEUE ENTRY
LDD CM+4 CHECK TERMINAL NUMBER
LMD TN
NJN PTO3.5 IF NOT CURRENT TERMINAL
LDD CM CHECK TYPE OF *TSEM* REQUEST
SBK /REM/VADO
NJN PTO3.5 IF NOT *VADO* *TSEM* REQUEST
LDD CM+1 GET POT COUNT
RAD T2 ADD TO PREVIOUS POT COUNT
UJN PTO3.5 CONTINUE SEARCH
PTO4 RJM STA
ADN /REM/VSTT CHECK MESSAGES QUEUED IN IAF
CRD CM
RJM RRR RESTORE R-REGISTER
LDD CM+2
LPN 77
ADD T2 ADD *TSEM* QUEUE POT COUNT
STD CM+2
LDK /REM/VNCP COMPARE WITH MAXIMUM ALLOWED
SBD CM+2
MJP PTOX IF IAF OUTPUT THRESHOLD REACHED
* SET *TSEM* POT MEMORY REQUEST.
LDK ZERL PRESET *TGPM* SUBFUNCTION
CRD CM
CRM WADO,ON
LDD CD+2 CURRENT ACCEPTABLE TRANSFER
ADN /REM/VCPC-1+2 ROUND UP AND ALLOW FOR HEADER
SHN -3 CM WORD COUNT TO POT COUNT
STD CM+1 IAF POT COUNT REQUEST
MONITOR TGPM GET POT MEMORY
LDK TALR
RJM MRJ
* SET IAF *VADO* REQUEST FOR OUTPUT BUFFER FLUSH.
LDD CM+1 GET POT POINTER
STD PP CURRENT IAF POT MEMORY POINTER
STM WADO+3 FIRST POT IN ASSIGN OUTPUT *VADO*
STM WADO+2 LAST POT IN ASSIGN OUTPUT
LDC /REM/VADO PRESET ASSIGN DIRECT OUTPUT REQUEST
STM WADO
LDD TN
STM WADO+4 SET TERMINAL CONNECTION IN *VADO* REQUEST
* ASSIGN TERMINAL OUTPUT.
RJM COD COPY OUTPUT DATA
LDD MA MESSAGE BUFFER
CWM WADO,ON
LDK ZERL
CRD CM
MONITOR TSEM ASSIGN DIRECT OUTPUT *VADO*
* THE OUTPUT POINTER SHOULD NOT BE UPDATED UNTIL AFTER THE
* *VADO* *TSEM* REQUEST HAS BEEN HONORED. OTHERWISE, IF THE
* *VADO* WAS REJECTED AND THE JOB ROLLED, THEN *1RO* WOULD NOT
* BE ABLE TO FLUSH THAT OUTPUT WHICH *1MI* PUT INTO POTS.
LDK TDOR PRESET POSSIBLE *VADO* REJECTION
RJM MRJ
LDN ZERL REQUEST ACCEPTED, SO UPDATE OUTPUT POINTER
CRD CN
LDD OT
STD CN+3
LDD OT+1
STD CN+4
CFET 3
CWD CN
LDN 0
* LDN 1
PTOB EQU *-1
ZJN PTO7 IF ALL OUTPUT FLUSHED
LDC RECMS2
STM ERSA
PTO5 LDK TALR
LJM ERS ENTER RECALL STACK
* ROLLOUT JOB ON BUFFERED WRITE, FULL CONDITION NO *EOL*
PTO6 LDN 0 FULL BUFFERED WRITE CONDITION
* LDN 1
PTOA EQU *-1
ZJN PTO7 IF NOT FULL OUTPUT BUFFER AND NO *EOL*
* ALLOW ROUTINE *1RO* TO COMPLETE OUTPUT REQUEST.
PTO6.1 LDK ROSR
STD T0
RJM ROJ ROLLOUT USER JOB
UJN PTO5 ENTER RECALL
PTO7 LJM PTOX RETURN
RBS SPACE 4,10
** RBS - REVERSE BUFFER SCAN.
*
* ENTRY (CD+1 - CD+2) = BEGINNING BUFFER SCAN CONTENT.
* (FT - FT+1) = BUFFER FIRST WORD ADDRESS.
* (LM - LM+1) = BUFFER LAST WORD ADDRESS.
* (T3 - T3+1) = RUNNING BUFFER *IN* POINTER.
*
* EXIT (CD+1 - CD+2) = ACCEPTABLE BUFFER CM WORD COUNT
* ENCOMPASSING COMPLETE LOGICAL LINES.
* (A) = LESS THAN ZERO IF NO *EOL* ENCOUNTERED.
*
* USES CM - CM+4.
* ENTER SEARCH LOOP FOR AN EXISTING *EOL* BYTE.
RBS2 LDD T3 BEGIN BUFFER SCAN
SHN 6
ADD RA
SHN 6
ADD T3+1
SBN 1 BACK OFF RUNNING *IN* POINTER
CRD CM READ BUFFER ENTRY
SHN 14
SBD RA
SHN 6
STD T3+1
SHN -14
STD T3
LDD CM+4
ZJN RBSX IF AN *EOL* BYTE ENCOUNTERED
LDD CD+1 DECREMENT ACCEPTABLE CM WORD TRANSFER
SHN 14
LMD CD+2
SBN 1
STD CD+2
SHN -14
STD CD+1
ADD CD+2
NJN RBS1 IF NOT A COMPLETE BUFFER SCAN
LCN 0 LINE FRAGMENT STATUS
RBS SUBR ENTRY/EXIT
RBS1 LDD T3 ASSURE BUFFER WRAP
SBD FT BUFFER FIRST WORD ADDRESS
SHN 14
LMD T3+1
SBD FT+1
NJP RBS2 IF *FIRST* NOT REACHED
LDD LM
STD T3 SET *IN = LIMIT*
LDD LM+1
STD T3+1
LJM RBS2 CONTINUE BUFFER SCAN
ROJ SPACE 4,10
** ROJ - ROLL USER JOB.
*
* ENTRY (T0) = *COMSCPS* ROLLOUT OPTION REQUEST.
*
* EXIT CONTROL POINT ROLLOUT REQUESTED.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
ROJ SUBR ENTRY/EXIT
LDN ZERL
CRD CM
LDD T0 REQUESTED OPTION
STD CM+1
MONITOR ROCM
UJN ROJX RETURN
SLF SPACE 4,10
** SLF - SEARCH LIST OF FILE ENTRIES.
*
* ENTRY SCAN LIST OF FILE *LOFW* OR RA+2 ENTRIES
* FOR POSSIBLE OUTPUT BUFFER FLUSH CANDIDATES.
*
* EXIT (IR+3 - IR+4) = BUFFER OUTPUT FET ADDRESS.
* (A) = NONZERO IF FILE ENTRY TO BE FLUSHED.
*
* USES T1 - T5, CM - T9.
*
* CALLS DFS, VAD.
SLF SUBR ENTRY/EXIT
LDD FL
ZJN SLFX IF NO FIELD LENGTH
* PROCESS LIST OF FILE ENTRIES *LOFW*.
LDD CP LIST OF FILES POINTER
ADC LOFW
CRD CM
LDD CM+1
LPN 37
SHN 14
LMD CM+2
ZJN SLF1 IF *LOFW* NOT IN USE
ADN 1 OFFSET INTO *LOFW* TABLE
RJM VAD VALIDATE ENTRY ADDRESS
ZJN SLFX IF INCORRECT ADDRESS
CRD T8-3 READ *LOFW* ENTRY
RJM DFS DETERMINE FLUSH STATUS
NJP SLF3 SET UP FLUSH CANDIDATE
UJN SLFX IF NOT A FLUSH CANDIDATE
* PROCESS RA+2 LIST IF NO *LOFW*.
SLF1 AOM SLFA RA+2 INDEX
LPN 77
LMN PGNR MAXIMUM RA+2 LIST LENGTH
ZJN SLFX IF END OF LIST
LDD RA REFERENCE ADDRESS
SHN 6
SLFA ADN 1 INCREMENT RA+2 INDEX
CRD T8-3 READ RA+2 ENTRY
LDD T8-3
ZJP SLFX IF END OF LIST
* VALIDATE FET/FIT ADDRESS.
LDD T8
LPN 37
SHN 14
LMD T8+1
ADN 5 BIAS FET/FIT LENGTH
RJM VAD VALIDATE LIST ENTRY
ZJN SLF1 IF FET/FIT OUTSIDE FL
SBN 5
CRD T1 DETERMINE IF FET/FIT
LDD T1+3
LPN 37
ADD T1+4
NJN SLF2 IF NOT A POSSIBLE FIT
* VALIDATE FET POINTER WITHIN FIT TABLE.
* NOTE. FIT+0 RESERVED BITS (17-0) DISTINGUISH
* FIT TABLE DESCRIPTION.
LDD T8
LPN 37
SHN 14
LMD T8+1
ADN 1
RJM VAD VALIDATE FIT ADDRESS
ZJP SLF1 IF FIT ADDRESS OUTSIDE FL
CRD T8-3 READ FET ADDRESS WITHIN FIT
LDD T8
LPN 37
ADD T8+1
ZJP SLF1 IF NO FET ADDRESS WITHIN FIT
* DETERMINE FET/FIT FLUSH STATUS.
SLF2 RJM DFS DETERMINE FLUSH STATUS
ZJP SLF1 IF NOT A FLUSH CANDIDATE
* SET UP FET ADDRESS EXIT CONDITIONS.
SLF3 LDD T8
LPN 37
STD IR+3 SET UP FET ADDRESS
LDD T8+1
STD IR+4
LJM SLFX RETURN
VAD SPACE 4,10
** VAD - VALIDATE ADDRESS WITHIN FL.
*
* ENTRY (A) = ADDRESS NEEDING VALIDATION.
*
* EXIT (A) = ABSOLUTE ADDRESS WITHIN FL.
* (A) = ZERO IF INCORRECT ADDRESS.
VAD1 LDN 0 INCORRECT ADDRESS STATUS
VAD SUBR ENTRY/EXIT
SHN 14
SBD FL FIELD LENGTH
SHN 6
PJN VAD1 IF INCORRECT ADDRESS PASSED
SHN 14
ADD FL
ADD RA REFERENCE ADDRESS
SHN 6 ABSOLUTE ADDRESS
UJN VADX RETURN
VFP SPACE 4,10
** VFP - VERIFY FET PARAMETERS.
*
* ENTRY (IR+3 - IR+4) = FET ADDRESS.
*
* EXIT (FT - FT+1) = BUFFER FIRST WORD ADDRESS.
* (IN - IN+1) = BUFFER IN POINTER.
* (OT - OT+1) = BUFFER OUT POINTER.
* (LM - LM+1) = BUFFER LAST WORD ADDRESS.
* (BS - BS+4) = BUFFER FET STATUS.
*
* USES CM - CM+4.
*
* MACROS CFET, ERROR, MONITOR.
VFP SUBR ENTRY/EXIT
* RESET FET BUFFER STATUS.
CFET GET BUFFER STATUS
CRD BS
LDN 3 VALIDATE ALL FET PARAMETERS
STD CM+1
LDD IR+3 FET ADDRESS
LPN 77
STD CM+3
LDD IR+4
STD CM+4
MONITOR VFPM VERIFY FET PARAMETERS
LDD CM+1 VALIDATION RESPONSE
ZJN VFP2 IF VALID FET
LPN 1
ZJN VFP1 IF VALID FET ADDRESS
ERROR ARG *FET ADDRESS OUT OF RANGE*
VFP1 LDD CM+1
LPN 2
ZJN VFP2 IF NO BUFFER ERROR
ERROR BUF *BUFFER ARGUMENT ERROR*
* RESET VALID FET PARAMETERS.
VFP2 LDD MA CM MESSAGE BUFFER
ADN 2
CRD IN-1 *IN* AND *OUT*
ADN 1
CRD FT-1 *FIRST* AND *LIMIT*
LDD BS+3 CLEAR ERROR, LEVEL AND COMPLETION
SCN 77
STD BS+3
LDD BS+4
LPC 776
STD BS+4
UJP VFPX RETURN
** COMMON DECKS.
*CALL,COMPACS
*CALL,COMPANS
*CALL,COMPCIB
*CALL,COMPCOB
PIR$ EQU 1 SELECT ASSEMBLY OF *PIR* FOR IAF R-REG
*CALL,COMPSRR
*CALL,COMPCRS
*CALL,COMPRBB
*CALL,COMPSPA
*CALL,COMPSTA
*CALL,COMPUPP
*CALL,COMPWBB
HST TITLE FUNCTION REQUEST AND BUFFER STORAGE.
** PREVIOUS PP RECALL PARAMETER WORD.
* IF *1MI* IS STARTED FROM THE RECALL STACK, THIS WORD WILL
* CONTAIN INFORMATION SAVED BY THE PREVIOUS COPY OF *1MI*
* IN THE FOLLOWING FORMAT -
*
* 1/S, 5/, 6/CP, 6/RC, 18/, 12/FP, 1/A, 1/, 4/IF, 3/, 3/RT
*
* S SET BY *CPUMTR* TO SHOW *1MI* STARTED FROM RECALL.
* CP UNUSED (WARNING - SOMETIMES SET BY *CPUMTR*).
* RC REASON CODE WHY *1MI* ENTERED RECALL.
* FP FIRST POT IN CHAIN PRIOR TO RECALL.
* A SET IF MONITOR FUNCTION REJECTED BECAUSE IAF ABORTED.
* IF *CIO* INTERNAL FUNCTION CODE (SEE *COMSCIO*).
* RT MONITOR FUNCTION REJECTION COUNT.
RCRF CON 0,0,0,0,0
** NEW PP RECALL PARAMETER WORD.
* USED IF *1MI* MUST ENTER RECALL. IT HAS THE SAME FORMAT AS
* THE PREVIOUS PP RECALL PARAMETER WORD.
RCPW CON 0,0,0,0,0
HST SPACE 4,10
** TIAF - TABLE OF *TSEM* FUNCTION REQUEST DEFINITIONS.
*
* ENTRY FIVE WORDS. CONTENTS VARY PER *TSEM* REQUEST.
*
* WADO - ASSIGN DIRECT OUTPUT TO IAF.
*
*T 12//REM/VADO, 6/0, 6/PC, 12/LP, 12/FP, 12/TN
*
* WADI - ASSIGN DIRECT INPUT FROM IAF.
*
*T, 12//REM/VADI, 36/0, 12/TN
*
* WDPO - IAF DROP POT MEMORY REQUEST.
*
*T, 12//REM/VDPO, 12/0, 12/LP, 12/FP, 12/TN
*
* PC = POT MEMORY CHAIN COUNT PER CURRENT REQUEST.
* FP = FIRST POT MEMORY POINTER PER CURRENT REQUEST.
* LP = LAST POT MEMORY POINTER PER CURRENT REQUEST.
* TN = TERMINAL CONNECTION NUMBER.
TIAF BSS 0
WADO BSS 0 ASSIGN DIRECT OUTPUT
WADI BSS 0 ASSIGN DIRECT INPUT
WDPO BSS 0 DROP POT MEMORY REQUEST
WIAF CON 0,0,0,0,0 *TSEM* FUNCTION REQUEST PARMAETERS
* DATA TRANSFER BUFFER OVERLAYS PRESET.
USE BUFFERS
BUFF EQU *
BUFFL EQU /REM/VCPC*2*5
ERRNG 100000-BUFF-BUFFL
PRS TITLE *1MI* INITIALIZATION.
** PRS - PRESET *1MI*.
*
* ENTRY (IR - IR+4) = *1MI* CALL.
* (MB - MB+4) = *1MI* MESSAGE BUFFER PARAMETERS (*PPR*)
* (MB1 - MB1+4) = MESSAGE BUFFER + 1 PARAMETERS.
* (MB2 - MB2+4) = MESSAGE BUFFER + 2 PARAMETERS.
*
* EXIT (FC) = INTERNAL *CIO* FUNCTION CODE.
* (BS - BS+4) = BUFFER STATUS = (FET+0)
* (FT - FT+1) = BUFFER FIRST WORD ADDRESS.
* (IN - IN+1) = BUFFER IN POINTER.
* (OT - OT+1) = BUFFER OUT POINTER.
* (LM - LM+1) = BUFFER LAST WORD ADDRESS.
* (TT - TT+1) = TERMINAL TABLE ADDRESS.
* (RCRF - RCRF+4) = PARAMETER WORD FROM PREVIOUS IAF.
* TO *DPP* IF USER BREAK PROCESS WITH EXTENDED REPRIEVE.
* TO *ERS* IF IAF INACCESSIBLE TO ALLOW USER RECOVERY.
*
* USES CM - CM+4, CN - CN+4, FT-1 - FT+3, IN-1 - IN+3,
* BS - BS+4, FC, NF, TN, T0.
*
* CALLS CFN, CJA, CTT, ITA, REC, ROJ, STA.
*
* MACROS CFET, ERROR, SFA.
PRS SUBR ENTRY/EXIT
* MOVE PP RECALL PARAMETER WORDS TO LOCATIONS WHICH ARE NOT
* DESTROYED BY COMMON DECKS.
LDD MA RESET FET PARAMETERS IN MESSAGE BUFFER
CWD MB
ADN 1 PRESET BUFFER POINTERS
CWD MB1
CRD IN-1 *IN* AND *OUT*
ADN 1
CWD MB2
CRD FT-1 *FIRST* AND *LIMIT*
LDD MB+4 INTERNAL *CIO* FUNCTION CODE
LPC 1700
STM RCPW+4 SAVE IN CASE *1MI* GOES INTO RECALL
SHN -6
STD FC
CFET READ FET+0
CRD BS
LDD MB
SHN 21-13
PJN PRS1 IF INITIAL *1MI* CALL
LDD MA
CRM RCRF,ON READ IN PREVIOUS RECALL PARAMETER WORD
RJM REC RECOVER *TSEM* REJECT
PRS1 RJM CTT CHECK TERMINAL I/O INTERLOCK
LDD CP
ADK TFSW
CRD CM
LDD CM
ZJN PRS2 IF NO EJT ORDINAL
SFA EJT
ADK JSNE CHECK JOB CONNECTION STATUS
CRD CM
LDD CM+4
SHN -7
LPN 17
STM PRSA
LMK NICS
ZJN PRS2 IF NON-INTERACTIVE
RJM CEF
ZJN PRS6 IF NO ERROR FLAG ON JOB
LDD FC *1MI* FUNCTION CODE
LMK /CIO/WTF
ZJN PRS6 IF A WRITE FUNCTION
LDD CM+2
NJN PRS3 IF USER BREAK AND EXTENDED REPRIEVE
LDD BS+4 SET EOR STATUS
LPC 6002
LMN 20
STD BS+4
PRS2 RJM CFN COMPLETE FUNCTION
PRS3 LJM DPP DROP PP
PRS6 RJM ITA
ZJN PRS7 IF IAF NOT AVAILABLE
LDC 0 CHECK CONNECTION STATUS
PRSA EQU *-1
LMK DTCS
NJN PRS9 IF NOT DETACHED
* A DETACHED JOB IS EITHER SUSPENDED OR TERMINATED BASED ON ITS
* END-OF-JOB OPTIONS.
LDD CP CHECK END-OF-JOB TERMINATION OPTIONS
ADN EOJW
CRD CM
LDD CM
SHN 0-11 ISOLATE JOB TERMINATION OPTION
LMN SUJT
ZJN PRS7 IF DETACHED JOB IS TO BE SUSPENDED
ERROR IRQ *INCORRECT I/O REQUEST ON FILE*
PRS7 LDK IAFF
RAM RCPW+4
LDK ROSU SUSPEND USER JOB
PRS8 STD T0
RJM ROJ ROLL USER JOB
LDK TALR TERMINAL I/O BUSY RECALL CODE
LJM ERS ENTER RECALL STACK
* CONTINUE PROCESS FOR ONLINE CONNECTIONS ONLY.
PRS9 LDD CP
ADN TTNW TERMINAL TABLE POINTER
CRD CM
LDD CM+1
STD TN
RJM SRR SET R-REGISTER TO IAF RA
RJM STA SET TERMINAL TABLE ADDRESS (TT - TT+1)
* ROLL A USER OUT DURING LOGIN PROCESSING AND DURING DETACH
* PROCESSING IF THE TERMINAL TABLE IS NOT COMPLETELY SET UP.
* THIS AVOIDS *VADO* AND *VADI* *TSEM* REQUESTS BEING SENT TO
* *IAF* BEFORE THE USER IS COMPLETELY LOGGED IN.
ADK /REM/VDCT CHECK IF USER FINISHED LOGGING IN
CRD CM
ADK /REM/VSTT-/REM/VDCT
CRD CN READ *VSTT*
RJM RRR RESTORE R-REGISTER
LDD CM
SHN 21-11
PJN PRS9.1 IF USER NOT COMPLETELY LOGGED IN
LDD CN CHECK FOR DETACH IN PROGRESS
SHN 21-10
PJN PRS10 IF DETACH NOT IN PROGRESS
PRS9.1 LDK ROSR
UJP PRS8 ROLLOUT USER JOB UNTIL COMPLETE RECOVERY
PRS10 LDD CP GET NEGATIVE FIELD LENGTH
ADN FLSW
CRD CM
LDD CM
STD NF NFL/100B
UJP PRSX RETURN
CTT SPACE 4,10
** CTT - CHECK TIOW/TINW BUSY.
*
* *CTT* CHECKS THE *TINW/TIOW* INTERLOCK FLAG FROM *CPUMTR* TO
* DETERMINE WHETHER OR NOT THIS COPY OF *1MI* HAS THE TERMINAL
* I/O INTERLOCK. IF NOT, *CTT* ATTEMPTS TO GET THE INTERLOCK
* VIA A *UTEM* FUNCTION. IF UNSUCCESSFUL, *1MI* MUST GO INTO
* RECALL AND TRY TO OBTAIN THE INTERLOCK AT A LATER TIME.
*
* ENTRY (IR+2) = TIOW/TINW BUSY FLAG FROM *CPUMTR*.
*
* EXIT IF RECALL NECESSARY, TO *ERS*.
*
* USES CM - CM+4, IR+2.
*
* MACROS MONITOR.
CTT4 LDD IR+2 CLEAR FLAG FROM INPUT REGISTER
LMK TTB
STD IR+2
LDD IA REWRITE INPUT REGISTER
CWD IR
CTT SUBR ENTRY/EXIT
LDD IR+2 CHECK FLAG FROM *CPUMTR*
LPK TTB
ZJN CTTX IF TIOW/TINW GOES WITH THIS PP
LDK ZERL TEST AND SET TIOW/TINW
CRD CM
LDD CP SET WORD ADDRESS
ADK TIOW
STD CM+4
ERRNG TINW-TIOW CODE DEPENDS ON ORDER OF WORDS
LDN 3 TEST TWO FIELDS, SET ONE
STD CM+1
LDD FC
LMK /CIO/WTF
ZJN CTT1 IF WRITE FUNCTION
LDC 18D*100B SET TINW ADDRESS OFFSET AND FIELD
RAM CTTB+1
LDK TINW-TIOW SET TINW FIELD
SHN 6
RAM CTTB
CTT1 LDD IR+4 MOVE FET ADDRESS
STM CTTB+4
LDD IR+3
LPN 77
STM CTTB+3
LDD MA
CWM CTTA,TR
MONITOR UTEM
LDD CM+1
ZJP CTT4 IF TEST AND SET SUCCESSFUL
RJM CEF
LDD CM+2
NJN CTT2 IF USER BREAK WITH EXTENDED REPRIEVE
* ENTER RECALL WITH TIOW/TINW BUSY FLAG STILL SET IN THE INPUT
* REGISTER, SO THAT WHEN *1MI* IS RESTARTED IT WILL
* AGAIN ATTEMPT TO GET THE *TIOW/TINW* INTERLOCK.
LDK TALR
LJM ERS ENTER RECALL STACK
* IF BOTH A USER BREAK ERROR FLAG IS PRESENT AND EXTENDED
* REPRIEVE HAS BEEN SELECTED BY THE JOB, *1MI* CANNOT WAIT
* FOR THE TERMINAL I/O INTERLOCK TO BECOME AVAILABLE. THIS IS
* BECAUSE THE PP WITH THE INTERLOCK MAY BE A READ REQUEST, IN
* WHICH CASE IT WILL DROP WITHOUT CLEARING *TINW*.
* IF A WRITE REQUEST, *1MI* WILL COMPLETE THE FET AND DROP.
* IF A READ REQUEST, *1MI* WILL ATTEMPT TO SET *TINW* BEFORE
* DROPPING SO THAT *1AJ* KNOWS THAT AN INPUT REQUEST IS
* OUTSTANDING.
CTT2 LDD FC
LMK /CIO/WTF
ZJN CTT3 IF WRITE FUNCTION
LDK ZERL
CRD CM
LDD CP
ADK TIOW
STD CM+4
LDN 2
STD CM+1
LDD MA
CWM CTTA+5,CM+1
MONITOR UTEM
LJM DPP DROP PP
CTT3 LDD BS+4 COMPLETE FET
SCN 1
LMN 1
STD BS+4
CFET REWRITE FIRST WORD OF FET
CWD BS
LJM DPP DROP PP
CTTA VFD 1/1,5/0,6/18D,6/0,42/0 VERIFY 0 CLEAR
VFD 1/1,5/TINW-TIOW,6/18D,6/18D,42/0 VERIFY TINW CLEAR
CTTB VFD 1/0,5/0,6/18D,6/0,42/0 SET NEW FET ADDRESS
REC SPACE 4,10
** REC - RECOVER FROM MONITOR REJECTION.
*
* ENTRY (RCRF+1) = RECALL REASON CODE.
* (RCRF+3) = FIRST POT CHAIN POINTER.
* (FC) = INITIAL *1MI* FUNCTION CODE.
*
* EXIT TO *DPP* IF *TINW/TIOW* INTERLOCK NO LONGER HELD.
* ANY POTS FROM A PREVIOUSLY REJECTED MONITOR FUNCTION
* ARE DROPPED.
*
* USES CM - CM+4, CN - CN+4.
*
* CALLS MRJ.
*
* MACROS MONITOR.
REC SUBR ENTRY/EXIT
LDM RCRF+1 GET REJECTED FUNCTION
SHN -6
LMK TDOR
ZJN REC2 IF *VADO* REJECTION
LMK TPOR&TDOR
NJP RECX IF NOT *VDPO* REJECTION
AOM RECA
* DROP PREVIOUS FUNCTION-S POTS UNLESS THE FUNCTION WAS
* REJECTED BECAUSE IAF WAS NOT AVAILABLE.
REC2 LDM RCRF+4
LPK IAFF
NJN REC3 IF NEW COPY OF IAF
LDK ZERL BUILD *VDPO* *TSEM* REQUEST
CRD CN
LDK /REM/VDPO
STD CN
LDM RCRF+3 SET POT NUMBER OF FIRST POT IN CHAIN
STD CN+3
LDD CP SET TERMINAL NUMBER
ADK TTNW
CRD CM
LDD CM+1
STD CN+4
LDN ZERL
CRD CM
LDD MA
CWD CN REWRITE REJECTED REQUEST
CRM WIAF,ON PRESET POSSIBLE FUNCTION REJECTION
MONITOR TSEM
LDM RCRF+1
SHN -6
RJM MRJ
REC3 LDN 0
* LDN 1
RECA EQU *-1
ZJP RECX IF INTERLOCK STILL HELD
LJM DPP DROP PP
** COMMON DECKS NECESSARY FOR PRESET.
*CALL,COMPGFP
ERRNG 7777-*+1 AVOID PPU MEMORY WRAP
END