IDENT TRMDEF,FETS
ABS
SST
ENTRY TRMDEF
ENTRY ARG=
ENTRY RFL=
SYSCOM B1
BASE DECIMAL
*COMMENT TRMDEF - DEFINE TERMINAL CHARACTERISTICS.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TRMDEF TITLE TRMDEF - DEFINE TERMINAL CHARACTERISTICS.
SPACE 4,10
***** TRMDEF - DEFINE TERMINAL CHARACTERISTICS.
*
* B. M. SLIWINSKI. 79/02/22.
* J. P. LITTLE. 85/07/12.
*
* *TRMDEF* MAKES IT POSSIBLE FOR INTERACTIVE USERS TO CHANGE
* THE CHARACTERISTICS OF THEIR CONNECTED TERMINAL THROUGH THE
* USE OF THE *TRMDEF* COMMAND.
SPACE 4,10
*** *TRMDEF* ACCEPTS AS INPUT A SINGLE COMMAND.
* VALIDATION OF THE SPECIFIED PARAMETERS FOR CORRECT TYPE,
* RANGE, AND TERMINAL TYPE IS DONE IN THE ORDER THEY APPEAR
* ON THE COMMAND. THE CONNECTED TERMINAL TYPE IS USED
* FOR VALIDATIONS OF OTHER PARAMETERS UNTIL A CHANGE OF
* TERMINAL CLASS (*TC*) IS ENCOUNTERED. IF THIS CHANGE IS
* LEGAL, THEN SUBSEQUENT PARAMETERS WILL USE THIS TERMINAL
* CLASS FOR VALIDATION.
*
* IF ALL CHANGES ARE LEGAL, A CONTROL BYTE PARAMETER STRING
* IS BUILT. THERE ARE TWO TYPES OF CONTROL BYTE STRINGS THAT
* ARE BUILT, 0010B AND 0016B, DEPENDING ON THE TYPE OF NETWORK
* THAT THE TERMINAL IS CONNECTED TO. IF THE NETWORK CONNECTION
* IS OF TYPE NAM/CDNA, THEN CONTROL BYTE 0010B IS BUILT (UNLESS
* ALL THE PARAMETERS ENTERED ARE CCP TERMINAL DEFINITIONS).
* IF THE NETWORK CONNECTION IS OF TYPE NAM/CCP, THEN CONTROL
* BYTE 0016 IS BUILT. IF CONTROL BYTE 0016 IS BUILT, IT HAS
* THE FOLLOWING FORM:
*
* 12/CB,12/FN,12/FV,...,12/FN,12/FV,EOL
* CB = CONTROL BYTE 0016B.
* FN = 4000B + FIELD NUMBER.
* FV = 4000B + FIELD VALUE.
*
* IF CONTROL BYTE 0010B IS BUILT, IT HAS THE FOLLOWING FORM
*
* 12/CB,12/AN,12/OC(N),12/AV(0),...,12/AV(N),12/AN,12/AV,EOL
* CB = CONTROL BYTE 0010B.
* AN = 4000B + ATTRIBUTE NUMBER.
* OC(N) = OCTET COUNTER.
* AV(0) = 4000B + ATTRIBUTE VALUE(0).
* AV(N) = 4000B + ATTRIBUTE VALUE(N).
*
* THIS STRING IS WRITTEN TO *OUTPUT* OR THE FILE SPECIFIED
* ON THE COMMAND.
SPACE 4,10
*** COMMAND CALL.
*
* TRMDEF,XX=VALUE,...,XX=VALUE,L=FN.
* OR
* TRMDEF,XX=VALUE/VALUE/...,XX=VALUE,L=FN.
*
* XX = ONE - THREE CHARACTER MNEMONIC FOR THE
* TERMINAL DEFINITION PARAMETER.
* VALUE = LEGAL VALUE FOR A GIVEN TERMINAL DEFINITION
* PARAMETER. SOME PARAMETERS MAY HAVE MULTIPLE
* VALUES WITH THE FORMAT: XX=VALUE/VALUE...
* L = OUTPUT FILE.
* IF FN IS SPECIFIED, WRITE OUTPUT TO FILE *FN*.
* THE DEFAULT IS *OUTPUT*.
*
*
* THE POSSIBLE MNEMONICS FOR *XX* ARE AS FOLLOWS.
*
* XX DESCRIPTION
* -- -----------
* AB ABORT BLOCK
* BR BREAK KEY
* BS BACKSPACE CHARACTER
* B1 USER BREAK 1 (INTERRUPTION CHARACTER)
* B2 USER BREAK 2 (TERMINATION CHARACTER)
* CI CARRIAGE RETURN IDLE COUNT
* CN CANCEL CHARACTER
* CP CURSOR POSITIONING
* CT CONTROL CHARACTER
* DL SINGLE MESSAGE TRANSPARENT
* EB END OF BLOCK
* EL END OF LINE
* EP ECHOPLEX MODE
* FA FULL ASCII
* HD HOST AVAILABILITY DISPLAY
* IC INPUT FLOW CONTROL
* IN INPUT DEVICE
* LI LINE FEED IDLE COUNT
* LK LOCK OUT CONTROL
* OC OUTPUT FLOW CONTROL
* OP OUTPUT DEVICE
* PA PARITY
* PG PAGE WAIT
* PL PAGE LENGTH
* PW PAGE WIDTH
* SE SPECIAL EDITING MODE
* TC TERMINAL CLASS
* XL MULTI MESSAGE
*
* CDCNET TERMINAL DEFINITIONS.
*
* AC ATTENTION CHARACTER
* ACA ATTENTION CHARACTER ACTION
* BC BACKSPACE CHARACTER
* BKA BREAK KEY ACTION
* BLC BEGIN LINE CHARACTER
* CFC CHARACTER FLOW CONTROL
* CLC CANCEL LINE CHARACTER
* CRD CARRIAGE RETURN DELAY
* CRS CARRIAGE RETURN SEQUENCE
* CS CODE SET
* E ECHOPLEX
* ELC END LINE CHARACTER
* ELP END LINE POSITIONING
* EOS END OUTPUT SEQUENCE
* EPA END PAGE ACTION
* EPC END PARTIAL CHARACTER
* EPP END PARTIAL POSITION
* FFD FORM FEED DELAY
* FFS FORM FEED SEQUENCE
* FL FOLD LINE
* HP HOLD PAGE
* HPO HOLD PAGE OVER
* IBS INPUT BLOCK SIZE
* IEM INPUT EDITING MODE
* IOM INPUT OUTPUT MODE
* LFD LINE FEED DELAY
* LFS LINE FEED SEQUENCE
* NCC NETWORK CONTROL CHARACTER
* P PARITY TYPE
* PCF PARTIAL CHARACTER FORWARDING
* PL PAGE LENGTH
* PW PAGE WIDTH
* RA RESPONSE ACTION
* SA STATUS ACTION
* SBC STORE BACKSPACE CHARACTER
* SND STORE NULS DELS
* TCM TRANSPARENT CHARACTER MODE
* TFC TRANSPARENT FORWARD CHARACTER
* TLM TRANSPARENT LENGTH MODE
* TM TERMINAL MODEL
* TML TRANSPARENT MESSAGE LENGTH
* TTC TRANSPARENT TERMINATE CHARACTER
* TTM TRANSPARENT TIMEOUT MODE
*
* UNSUPPORTED STANDARD TERMINAL DEFINITIONS.
*
* AR AUTOMATIC CHARACTER RECOGNITION
* BF BLOCKING FACTOR - 0, 1, 2
* CH DISPLAY TERMINAL CHARACTERISTICS
* HN HOST NODE SELECTION - NUMBER
* HS HOST SELECTION - NAME
* MS MESSAGE TO NETWORK OPERATOR - MESSAGETEXT
* TM TERMINATE TERMINAL - HOST CONNECTION
*
*
* VALUES CAN BE SPECIFIED IN THE FOLLOWING WAYS.
*
* FORM DESCRIPTION
* ---- -----------
* NN DECIMAL VALUE
* Y ALPHANUMERIC CHARACTER WITH DISPLAY CODE LESS THAN 45B
* $Y$ ANY ALPHANUMERIC CHARACTER
* IIIB OCTAL VALUE OF AN *ASCII* CHARACTER
* XHH HEXADECIMAL VALUE OF AN *ASCII* CHARACTER
* T ALPHANUMERIC DISPLAY CODE CHARACTER OR DECIMAL VALUE
SPACE 4,10
*** DAYFILE MESSAGES.
*
* * ATTRIBUTE COMMANDS MUST BE OF ONE NETWORK TYPE.*
* ATTRIBUTES UNIQUE TO BOTH NAM/CCP AND NAM/CDNA
* WERE ENTERED ON ONE *TRMDEF* REQUEST.
*
* * ERROR IN TRMDEF ARGUMENT.*
* THE COMMAND CONTAINED INCORRECT SYNTAX OR AN
* UNKNOWN PARAMETER.
*
* * INCORRECT JOB ORIGIN TYPE FOR TRMDEF.*
* THE JOB ORIGIN TYPE OF THE JOB REQUESTING *TRMDEF*
* WAS NOT TIME-SHARING.
*
* * INCORRECT TERMINAL TYPE FOR TRMDEF.*
* THE *TRMDEF* REQUEST CAME FROM A TERMINAL WHICH WAS
* NOT A NETWORK TERMINAL.
*
* * LITERAL STRING IS NOT ALLOWED FOR THIS PARAMETER.*
* LITERAL STRING PROCESSING HAS BEEN DISABLED FOR
* THE CDCNET PARAMETERS CRS, EOS, FFS, LFS, TFC, AND
* TTC.
*
* * NETWORK TYPE DOES NOT SUPPORT ATTRIBUTE COMMAND.*
* THE *TRMDEF* REQUEST CAME FROM A TERMINAL THAT WAS
* OF A DIFFERENT NETWORK TYPE THAN THE PARAMETERS
* ENTERED.
*
* * TRMDEF COMPLETE.*
* INDICATES COMMAND PROCESSED WITH NO ERRORS.
* OUTPUT WRITTEN TO FILE AS DETERMINED BY *L* PARAMETER.
*
* * TRMDEF ERRORS.*
* AN INCORRECT VALUE WAS ENTERED FOR ONE OR MORE
* PARAMETERS. ADDITIONAL ERROR MESSAGES ARE WRITTEN
* TO THE FILE SPECIFIED BY THE *L* PARAMETER.
TITLE MACRO DEFINITIONS.
** VSS - SET UP FIELD VALUE, WORD COUNT, AND EQUIVALENCE
* CODE FOR ABBREVIATED AND FULL ATTRIBUTE VALUES.
*
* VSS STRINGA,STRINGB,S
*
* ENTRY *STRINGA* = ABBREVIATED CHARACTER STRING.
* *STRINGB* = FULL CHARACTER STRING.
* *S* = FIELD VALUE FLAG.
PURGMAC VSS
VSS MACRO STRINGA,STRINGB,S
V1 MICRO 1,10,*STRINGA*
V2 MICRO 1,10,*STRINGB*
V3 MICRO 11,10,*STRINGB*
LEN SET 1
.A IFC NE,*"V3"**
LEN SET 2
.A ENDIF
.B IFC NE,*S**
VAL SET 0
.B ELSE
VAL SET VAL+1
.B ENDIF
VFD 24/0,18/VAL+4000B,18/1
VFD 60/0L"V1"
.C IFC EQ,*"V2"**
VFD 24/0,18/VAL+4000B,18/2
.C ELSE
VFD 24/0,18/VAL+4000B,18/LEN
VFD 60/0L"V2"
.D IFC NE,*"V3"**
VFD 60/0L"V3"
.D ENDIF
.C ENDIF
ENDM
TITLE ASSEMBLY CONSTANTS AND FETS.
SPACE 4,10
**** ASSEMBLY CONSTANTS.
CBUFL EQU 40 PARAMETER STRING BUFFER LENGTH - CCP
DBUFL EQU 40 PARAMETER STRING BUFFER LENGTH - CDNA
OBUFL EQU 120 OUTPUT BUFFER LENGTH
TTPVL EQU 50D PARAMETER VALUE TABLE LENGTH
LTCN EQU 18D LARGEST TERMINAL CLASS + 1
TCNT EQU 3 TRANSMISSION CODE FOR NETWORK TERMINAL
TTFN EQU 0 INDEX INTO TFLD TABLE--FIRST WORD
TFVR EQU 1 INDEX INTO TFLD TABLE--SECOND WORD
TFLG EQU 2 LENGTH OF TABLE ENTRY
* TERMINAL DEFINITION FIELD NUMBERS.
* CONTROL BYTE 0016B FIELD NUMBERS
ABFN EQU 4051B *AB*
BRFN EQU 4063B *BR*
BSFN EQU 4047B *BS*
B1FN EQU 4052B *B1*
B2FN EQU 4053B *B2*
CBFN EQU 4102B *EB=XX*
CCFN EQU 4056B *CI=CA*
CIFN EQU 4054B *CI*
CLFN EQU 4077B *EL=XX*
CNFN EQU 4046B *CN*
CPFN EQU 4107B *CP*
CTFN EQU 4050B *CT*
C1FN EQU 4071B *DL/XL=CNNNN*
C2FN EQU 4072B *DL/XL=CNNNN*
EBFN EQU 4101B *EB=EB/EL*
ELFN EQU 4076B *EL=EB/EL*
EPFN EQU 4061B *EP*
FAFN EQU 4067B *FA*
HDFN EQU 4041B *HD*
ICFN EQU 4103B *IC*
INFN EQU 4065B *IN*
LIFN EQU 4055B *LI*
LCFN EQU 4057B *LI=CA*
LKFN EQU 4040B *LK*
MXFN EQU 4106B *MMXPT*
OCFN EQU 4104B *OC*
OPFN EQU 4066B *OP*
PAFN EQU 4062B *PA*
PGFN EQU 4045B *PG*
PLFN EQU 4044B *PL*
PWFN EQU 4043B *PW*
SEFN EQU 4060B *SE*
TCFN EQU 4042B *TC*
TOFN EQU 4074B *XL=TO*
XBFN EQU 4100B *EB=XHH*
XHFN EQU 4073B *DL/XL=XHH*
XLFN EQU 4075B *EL=XHH*
XPFN EQU 4064B *XPT*
YHFN EQU 4105B *XL=YHH*
* CONTROL BYTE 0010B ATTRIBUTE NUMBERS
IOMF EQU 4201B *IOM*
IEMF EQU 4202B *IEM*
TCMF EQU 4203B *TCM*
TFCF EQU 4204B *TFC*
TTCF EQU 4205B *TTC*
TTMF EQU 4206B *TTM*
TLMF EQU 4207B *TLM*
TMLF EQU 4210B *TML*
PCFF EQU 4211B *PCF*
ACAF EQU 4212B *ACA*
BKAF EQU 4213B *BKA*
IBSF EQU 4214B *IBS*
SNDF EQU 4215B *SND*
SBCF EQU 4216B *SBC*
NCCF EQU 4300B *NCC*
CLCF EQU 4301B *CLC*
ELCF EQU 4302B *ELC*
BLCF EQU 4303B *BLC*
BCFN EQU 4304B *BC*
EPCF EQU 4305B *EPC*
ACCF EQU 4306B *AC*
PL2F EQU 4307B *PL*
PW2F EQU 4310B *PW*
HPFN EQU 4311B *HP*
HPOF EQU 4312B *HPO*
FLFN EQU 4313B *FL*
EOSF EQU 4314B *EOS*
CRSF EQU 4315B *CRS*
LFSF EQU 4316B *LFS*
FFSF EQU 4317B *FFS*
EPAF EQU 4320B *EPA*
CRDF EQU 4321B *CRD*
LFDF EQU 4322B *LFD*
FFDF EQU 4323B *FFD*
ELPF EQU 4324B *ELP*
EPPF EQU 4325B *EPP*
CFCF EQU 4326B *CFC*
TMFN EQU 4327B *TM*
CSFN EQU 4330B *CS*
PPFN EQU 4331B *P*
EEFN EQU 4332B *E*
SAFN EQU 4333B *SA*
RAFN EQU 4334B *RA*
FKCF EQU 4337B *FKC*
****
SPACE 4
*CALL COMCMAC
*CALL COMSEJT
SPACE 4
ORG 110B
* FETS.
FETS BSS 0
O BSS 0 OUTPUT FILE FET
OUTPUT FILEB OBUF,OBUFL,FET=8
Z BSS 0 TERMINAL FILE FET
ZZZZZG0 FILEB TMES,TMESL+1,DTY=2RTT
TITLE MAIN PROGRAM.
* VALIDATE JOB ORIGIN AND TERMINAL TYPE.
TRMDEF SB1 1
SA1 JOPR GET JOB ORIGIN TYPE
MX0 -12
LX1 -24
BX1 -X0*X1
SX2 X1-TXOT TIME-SHARING ORIGIN CODE
NZ X2,ERR2 IF NOT *TXOT* JOB ORIGIN TYPE
TSTATUS TRMB GET TERMINAL STATUS
SA4 TRMB+1 GET CONNECTION STATUS
MX0 -6
LX4 12
BX6 -X0*X4
SX2 X6-NICS
ZR X2,ERR1 IF NOT INTERACTIVE
SX2 X6-DTCS
NZ X2,TRM0 IF NOT DETACHED
REQUEST Z,U,N ASSIGN FILE TO TERMINAL
WRITEW Z,TMES,TMESL
WRITER Z,R CAUSE SUSPENSION
RETURN Z,R
EQ TRMDEF REISSUE REQUEST
TRM0 LX4 -24 GET TRANSMISSION CODE
BX2 -X0*X4
SX3 X2-TCNT NETWORK TERMINAL CODE
LX4 -24
NZ X3,ERR1 IF NOT A NETWORK TERMINAL
MX0 -8
BX6 -X0*X4
SA6 A4-B1 SAVE TERMINAL CLASS
* PROCESS COMMAND ARGUMENTS.
SB2 CCDR COMMAND
RJ USB UNPACK DATA BLOCK TO STRING BUFFER
TRM0.1 SA1 B6+ SKIP PREFIX $, /, SPACE
SX1 X1-1R9-1
NG X1,TRM0.2 IF ALPHANUMERIC CHARACTER
SB6 B6+1
EQ TRM0.1 CHECK NEXT CHARACTER
TRM0.2 RJ POP PICK OUT PARAMETER
ZR B6,ERR3 IF NO ARGUMENTS
RJ PCS PROCESS COMMAND
NZ X1,ERR3 IF ERROR IN ARGUMENTS
SB6 B0+ INITIALIZE TABLE INDEX
SX6 B0+ TERMINATE PARAMETER TABLE
SA6 X5+B1
* VALIDATE EACH PARAMETER FOR CORRECT ARGUMENT TYPE.
TRM1 SA1 TTPV+B6 GET PARAMETER
ZR X1,TRM9 IF END OF PARAMETERS
SB7 X1+ INDEX
RJ CAS CHECK IF ATTRIBUTE SUPPORTED
NG X2,TRM8 IF ATTRIBUTE UNSUPPORTED
RJ SAF SET ATTRIBUTE FLAGS
SA1 TTPV+B6+1 GET PARAMETER VALUE
MX0 42
BX1 X0*X1 ISOLATE VALUE
SA2 TTFN+B7 GET TABLE ENTRY
SB5 X2
SX6 B0 CLEAR MULTIPLE PARAMETER FLAG
NE B5,B1,TRM2 IF NOT MULTIPLE PARAMETER
RJ PMP PROCESS MULTIPLE PARAMETER
NZ X3,TRM9 IF ERROR IN PARAMETER
TRM2 SA6 PMPA SET MULTIPLE PARAMETER FLAG
ZR B5,TRM6 IF EXPECTING A DECIMAL NUMBER
NG B5,TRM3 IF EXPECTING A CHARACTER
SB2 10B
EQ B2,B5,ERR6.2 IF PARAMETER DISABLED
GT B5,B2,TRM2.2 IF EQUIVALENCE VALUE
SB2 B2-B1
EQ B2,B5,TRM2.1 PROCESS DOUBLE OCTET
SB2 B2-B1
EQ B2,B5,TRM3 IF *TTC* OR *TFC*
RJ VCP VARIABLE CHARACTER PROCESSOR
EQ TRM8 PROCESS NEXT PARAMETER
TRM2.1 RJ PDO PROCESS DOUBLE OCTET
EQ TRM8 PROCESS NEXT PARAMETER
TRM2.2 SX6 B0+ CLEAR VALUE
RJ PEV PROCESS EQUIVALENCE VALUE
ZR X4,ERR4 IF NO EQUIVALENCE FOUND
EQ TRM7 CONTINUE PROCESSING
* PROCESS CHARACTER
TRM3 RJ PCP PROCESS CHARACTER PARAMETER
NZ X4,ERR4 IF ERROR ON PARAMETER
PL B5,TRM8 IF *TTC* OR *TFC*
* SET UP FIELD NUMBER/FIELD VALUE PAIR.
TRM4 SA1 PMPA
SA2 TMPV+B7 GET FIELD NUMBER
LX2 18
NZ X1,TRM5 IF MULTIPLE PARAMETER
SA2 TTFN+B7 GET FIELD NUMBER
LX2 18
PL X2,TRM5 IF NOT *LI* OR *CI* PARAMETER
MX0 -48
BX2 -X0*X2
TRM5 SX4 X6+4000B FIELD VALUE
AX2 36
MX0 -12
BX2 -X0*X2
SB2 B1 INDICATE VALIDATE RANGE
EQ TRM7 ENTER INTO BUFFER
* PROCESS DECIMAL NUMBER
TRM6 BX5 X1 DECIMAL NUMBER TO BE CONVERTED
RJ DXB DISPLAY CODE TO BINARY CONVERSION
ZR X4,TRM4 IF NO ERROR IN CONVERSION
SA2 PMPA
NZ X2,ERR4 IF MULTIPLE PARAMETER
SA2 TTFN+B7 GET TABLE ENTRY
LX2 18
PL X2,ERR4 IF NOT *CI* OR *LI* PARAMETER
SA1 TTPV+B6+1 GET ARGUMENT
MX0 42
BX1 X0*X1
LX1 12
SX6 X1-2RCA
NZ X6,ERR4 IF NOT *CA* ARGUMENT
SX4 4001B FIELD VALUE FOR *CA*
MX0 12
BX2 X0*X2
LX2 11-59 FIELD NUMBER
SB2 -B1 INDICATE DO NOT VALIDATE RANGE
* ENTER FIELD NUMBER/FIELD VALUE PAIR INTO BUFFER.
TRM7 RJ VFT VALIDATE FIELD VALUE
NG X6,ERR4 IF INCORRECT FIELD VALUE
RJ EFP ENTER FN/FV PAIR - CONTROL BYTE 0016B
RJ EFQ ENTER AN/AV PAIR - CONTROL BYTE 0010B
TRM8 SB6 B6+2 INCREMENT TABLE INDEX
EQ TRM1 PROCESS NEXT PARAMETER
* COMPLETE PROCESSING.
TRM9 SA1 TRMC GET ERROR COUNT
NZ X1,ERR7 IF ERROR ON COMMAND
ZR B6,ERR3 IF NO CHANGES ENTERED
RJ CCT CHECK CONNECTION TYPE
NZ X1,ERR1 IF NO NETWORK CONNECTION
RJ CAF CHECK ATTRIBUTE FLAGS
NZ X5,ERR6 IF ATTRIBUTE MIX ERROR
NZ X7,ERR6.1 IF CONNECTION TYPE ERROR
NZ X3,TRM10 IF CONTROL BYTE 0010B SEQUENCE
RJ PPS PACK PARAMETER STRING - CCP
EQ TRM11 IF CONTROL BYTE 0016B SEQUENCE
TRM10 SA1 TRMG GET SPECIAL ERROR COUNT
NZ X1,ERR7 IF *PL* OR *PW* ERROR
RJ PPT PACK PARAMETER STRING - CDNA
TRM11 WRITEW O,OBUF,B7 OUTPUT PARAMETER STRING
* IT IS NECESSARY TO SPECIFY RECALL ON THE FOLLOWING *WRITER*
* IN ORDER TO ASSURE THAT THE DAYFILE MESSAGE FOLLOWING IT
* IS SENT BACK TO THE TERMINAL. USING RECALL PREVENTS THE
* DAYFILE MESSAGE FROM BEING APPENDED TO THE *0016* CONTROL
* BYTE PARAMETER STRING AND THEN LOST DURING PROCESSING BY
* *1TO*.
WRITER O,R
MESSAGE (=C* TRMDEF COMPLETE.*),3
TRM12 ENDRUN
TRMA CON 1 INDEX TO *CBUF*
TRMB BSS 2 TERMINAL CLASS FOR VALIDATION
TRMC CON 0 ERROR COUNT
TRMD CON 1 INDEX TO *DBUF*
TRMF CON 0,0,0 NETWORK ATTRIBUTE FLAGS
TRMG CON 0 SPECIAL ERROR COUNT
* ERROR MESSAGES ISSUED.
ERR1 MESSAGE (=C* INCORRECT TERMINAL TYPE FOR TRMDEF.*)
EQ ERR8 END PROCESSING
ERR2 MESSAGE (=C* INCORRECT JOB ORIGIN TYPE FOR TRMDEF.*)
EQ TRM12 END PROCESSING
ERR3 MESSAGE (=C* ERROR IN TRMDEF ARGUMENT.*)
EQ ERR8 END PROCESSING
ERR4 SA3 PMPA
ZR X3,ERR5 IF NOT MULTIPLE PARAMETER
SA1 TMPV+B7 GET TABLE ENTRY
MX0 6
BX1 X0*X1 GET PARAMETER OPTION
LX1 -12
LX0 -12
SA2 BEMC+BEMCL-1 CREATE MULTI-VALUE ERROR MESSAGE
BX2 -X0*X2
BX6 X1+X2
SA1 PMPC
SB5 X1
SA6 A2
SA2 BEMC
SA1 TTFN+B5 GET TABLE ENTRY
RJ BEM BUILD ERROR MESSAGE
SA2 =4L- RESTORE ERROR MESSAGE
BX2 X6
SA6 BEMC+BEMCL-1
EQ TRM8 PROCESS NEXT PARAMETER
ERR5 SA2 BEMC
SA1 TTFN+B7
RJ BEM BUILD ERROR MESSAGE
EQ TRM8 PROCESS NEXT PARAMETER
ERR6 MESSAGE MSG1
EQ ERR7 END PROCESSING
ERR6.1 MESSAGE MSG2
EQ ERR7 END PROCESSING
ERR6.2 MESSAGE MSG3
ERR7 WRITEW O,OBUF,X1
WRITER O,R
MESSAGE (=C* TRMDEF ERRORS.*)
ERR8 ABORT
MSG1 DATA C* ATTRIBUTE COMMANDS MUST BE OF ONE NETWORK TYPE.*
MSG2 DATA C* NETWORK TYPE DOES NOT SUPPORT ATTRIBUTE COMMAND.*
MSG3 DATA C* LITERAL STRING IS NOT ALLOWED FOR THIS PARAMETER.*
TITLE SUBROUTINES.
BEM SPACE 4,15
** BEM - BUILD ERROR MESSAGE.
*
* ENTRY (X1) = ATTRIBUTE MNEMONIC.
* (A2) = ADDRESS OF ERROR MESSAGE TEXT.
*
* EXIT (TRMC) UPDATED.
*
* USES X - 1, 2, 3, 6, 7.
* A - 2, 3, 6, 7.
* B - 5.
BEM SUBR ENTRY/EXIT
SB5 BEMAL LENGTH OF ERROR MESSAGE
ERRNZ BEMAL-BEMCL MESSAGE NOT SAME LENGTH
MX6 18
BX1 X6*X1 GET ATTRIBUTE
SA3 TRMC GET BUFFER INDEX
BX6 X2 FORM ERROR MESSAGE
SX7 X3+B5 UPDATE BUFFER INDEX
SA6 X3+OBUF ENTER INTO OUTPUT BUFFER
SB5 B5-B1
SA7 A3 RESET INDEX
BEM3 SA2 A2+B1 GET NEXT WORD OF ERROR MESSAGE
SB5 B5-B1
BX6 X2
SA6 A6+B1 ENTER INTO OUTPUT BUFFER
NE B5,B1,BEM3 IF NOT LAST WORD OF ERROR MESSAGE
SA2 A2+B1 PLACE ATTRIBUTE MNEMONIC IN MESSAGE
LX1 36
BX6 X1+X2
SA6 A6+B1
EQ BEMX RETURN BUILT ERROR MESSAGE
BEMA DATA 10LUNSUPPORTE
DATA 10LD ATTRIBUT
DATA 4LE -
BEMAL EQU *-BEMA
BEMC DATA 10LINCORRECT
DATA 10LVALUE FOR
DATA 4L-
BEMCL EQU *-BEMC
CAF SPACE 4,15
** CAF - CHECK ATTRIBUTE FLAGS.
*
* ENTRY (X2) = CONNECTION STATUS.
*
* EXIT IF (X3) = 0 THEN BUILD CONTROL BYTE 0016B.
* = 1 THEN BUILD CONTROL BYTE 0010B.
* IF (X5) = 0 THEN NO ERROR.
* = 1 THEN ATTRIBUTE MIX ERROR.
* IF (X7) = 0 THEN NO ERROR.
* = 1 THEN CONNECTION TYPE ERROR.
*
* USES X - 3, 4, 5, 7.
* A - 4.
*
* DEFINE (TRMF) = CCP FLAG.
* (TRMF+1) = CDNA FLAG.
* (TRMF+2) = COMMON FLAG.
CAF SUBR ENTRY/EXIT
BX3 X3-X3 INITIALIZE FLAGS
BX5 X5-X5
BX7 X7-X7
SA4 TRMF
NZ X4,CAF5 IF CCP ATTRIBUTE ON LIST
SA4 TRMF+1
NZ X4,CAF3 IF CDNA ATTRIBUTE ON LIST
SA4 TRMF+2
NZ X4,CAF1 IF COMMON ATTRIBUTE ON LIST
SX5 B1 SET ATTRIBUTE MIX ERROR FLAG
EQ CAFX RETURN (F,F,F)
CAF1 NZ X2,CAF2 IF NAM/CDNA CONNECTION
EQ CAFX RETURN (F,F,T - CCP)
CAF2 SX3 B1+
EQ CAFX RETURN (F,F,T - CDNA)
CAF3 NZ X2,CAF4 IF NAM/CDNA CONNECTION
SX7 B1+ SET CONNECTION TYPE ERROR FLAG
EQ CAFX RETURN (F,T,TF - CCP)
CAF4 SX3 B1+
EQ CAFX RETURN (F,T,TF - CDNA)
CAF5 SA4 TRMF+1
NZ X4,CAF6 IF CDNA ATTRIBUTE ON LIST
EQ CAFX RETURN (T,F,TF - XOR)
CAF6 SX5 B1+ SET ATTRIBUTE MIX ERROR FLAG
EQ CAFX RETURN (T,T,TF - XOR)
CAS SPACE 4,15
** CAS - CHECK IF ATTRIBUTE IS SUPPORTED.
*
* ENTRY (B7) = INDEX TO *TFLD* TABLE.
*
* EXIT (X2) = .GE. 0 ATTRIBUTE SUPPORTED.
* .LT. 0 ATTRIBUTE UNSUPPORTED.
*
* USES X - 1, 2.
* A - 1, 2.
CAS SUBR ENTRY/EXIT
SA2 TFVR+B7 ATTRIBUTE SUPPORT CHECK
LX2 59-36 ISOLATE FLAG BIT
PL X2,CASX IF ATTRIBUTE SUPPORTED
SA2 BEMA *UNSUPPORTED ATTRIBUTE*
SA1 TTFN+B7
RJ BEM BUILD ERROR MESSAGE
SX2 -1 SET UNSUPPORTED EXIT CONDITION
EQ CASX COMPLETE PROCESSING
CCT SPACE 4,15
** CCT - CHECK CONNECTION TYPE.
*
* ENTRY NONE.
*
* EXIT IF (X1) = 0 THEN NO ERROR.
* IF (X2) = 0 THEN NAM/CCP CONNECTION.
* = 1 THEN NAM/CDNA CONNECTION.
*
* USES X - 0, 1, 2, 4.
* A - 1, 4.
CCT SUBR ENTRY/EXIT
BX1 X1-X1 CLEAR ERROR FLAG
SA4 TRMB+1 GET CONNECTION TYPE
MX0 -3
LX4 6
BX4 -X0*X4
ZR X4,CCT1 IF NO NAM CONNECTION
SX4 X4-1
ZR X4,CCT2 IF NAM/CCP CONNECTION
SX4 X4-1
ZR X4,CCT3 IF NAM/CDNA CONNECTION
CCT1 SX1 B1+ SET ERROR FLAG
EQ CCTX RETURN
CCT2 BX2 X2-X2 NAM/CCP CONNECTION
EQ CCTX RETURN
CCT3 SX2 B1+ NAM/CDNA CONNECTION
EQ CCTX RETURN
EFP SPACE 4,15
** EFP - ENTER FIELD NUMBER/FIELD VALUE PAIR INTO BUFFER.
*
* *EFP* CREATES THE PARAMETER STRING FOR CONTROL BYTE 0016B
* DATA STREAM PROCESSING.
*
* ENTRY (X2) = FIELD NUMBER.
* (X4) = FIELD VALUE.
* (TRMA) = INDEX TO BUFFER.
* (CBUF) = BUFFER OF FIELD NUMBER/FIELD VALUE PAIRS.
*
* EXIT (TRMA) UPDATED.
*
* USES X - 5, 6, 7.
* A - 5, 6, 7.
*
* DEFINE (B6) = POSITION IN PARAMETER LIST.
* (B7) = INDEX INTO TABLES.
EFP SUBR ENTRY/EXIT
SA5 TRMA BUFFER INDEX
BX6 X2
BX7 X4
SA6 X5+CBUF ENTER FIELD NUMBER INTO BUFFER
SX6 X5+2 INCREMENT INDEX
SA7 A6+B1 ENTER FIELD VALUE INTO BUFFER
SA6 A5 RESET BUFFER INDEX
EQ EFPX RETURN
EFQ SPACE 4,15
** EFQ - ENTER ATTRIBUTE NUMBER/ATTRIBUTE VALUE PAIR.
*
* *EFQ* CREATES THE PARAMETER STRING FOR CONTROL BYTE 0010B
* DATA STREAM PROCESSING.
*
* ENTRY (X2) = ATTRIBUTE NUMBER.
* (X4) = ATTRIBUTE VALUE.
* (TRMD) = INDEX TO BUFFER.
* (DBUF) = BUFFER OF ATTRIBUTE NUMBER/ATTRIBUTE VALUE
* PAIRS.
*
* EXIT (TRMD) UPDATED.
*
* USES X - 5, 6, 7.
* A - 5, 6, 7.
*
* DEFINE (B6) = POSITION IN PARAMETER LIST.
* (B7) = INDEX INTO TABLES.
EFQ SUBR ENTRY/EXIT
SA5 TRMD BUFFER INDEX
BX6 X2
RJ SPC SPECIAL PAGE CHECKS FOR CDNA
SA6 X5+DBUF ENTER FIELD NUMBER INTO BUFFER
SX6 X5+3 INCREMENT INDEX
SX7 4001B ENTER DEFAULT OCTET COUNT
SA7 A6+B1 ENTER COUNT INTO BUFFER
BX7 X4
SA7 A6+2 ENTER FIELD VALUE INTO BUFFER
SA6 A5 RESET BUFFER INDEX
EQ EFQX RETURN
HCP SPACE 4,15
** HCP - HEXADECIMAL CHARACTER PROCESSOR.
*
* ENTRY (X1) = PARAMETER FROM COMMAND.
* (X2) = FIELD NUMBER.
* (A1) = PARAMETER FWA.
* (B2) = PARAMETER WORD COUNT.
* (B5) = RANGE IDENTIFIER (SEE VCP).
*
* EXIT CONTROL BYTE 0010 UPDATED.
*
* USES X - ALL.
* A - 1, 3, 5, 6, 7.
* B - 2, 3, 4, 6.
*
* CALLS EFQ, HXB.
HCP SUBR ENTRY/EXIT
MX0 6 DELETE HEX FLAG
BX6 -X0*X1
LX6 6
SA6 A1
EQ B2,B1,HCP2 IF VALUE IS FIVE (HEX) CHARACTERS OR LESS
SA3 A1 ENSURE CHARACTERS NOT SPLIT ACROSS WORDS
SB3 B2-B1
HCP1 SB3 B3-B1
SA5 A3
SA3 A3+B1
BX4 X0*X3
LX4 6
BX6 X5+X4 ADD LOWER HALF OF HEX CHARACTER
SA6 A5
BX7 -X0*X3
LX7 6
SA7 A3
NZ B3,HCP1 IF NOT FINISHED
HCP2 SB3 3
SB4 B1 WORD COUNT TO COMPARE
SA5 A1 RANGE COMPARISON WORD
MX0 48
EQ B5,B3,HCP3 IF RANGE OF 0-4 CHARACTERS
SB3 B3-B1
MX0 24
EQ B5,B3,HCP3 IF RANGE OF 0-2 CHARACTERS
SB3 B3+B3
SB4 B1+B1
SA5 A1+B1
EQ B5,B3,HCP3 IF RANGE OF 0-7 CHARACTERS
SB3 B3+B1 IF RANGE OF 0-25 CHARACTERS
SA5 A1+B3
SB4 B3+B1
MX0 0
HCP3 GT B2,B4,ERR5 IF TOO MANY CHARACTERS
BX4 -X0*X5
MX0 12
LT B2,B4,HCP4 IF FEWER WORDS THAN MAXIMUM
NZ X4,ERR5 IF TOO MANY CHARACTERS
HCP4 SA1 A1 GET WHOLE PARAMETER VALUE
NZ X1,HCP5 IF AT LEAST ONE CHARACTER
BX6 X2 ENTER ATTRIBUTE NUMBER ONLY
SA5 TRMD GET BUFFER INDEX
SX7 4000B
SA6 X5+DBUF
SX6 X5+2
SA7 A6+B1
SA6 A5
EQ HCPX RETURN
HCP5 BX7 X2 PRESERVE X2
BX5 X0*X1
RJ HXB
NZ X4,ERR4 IF ERROR ON PARAMETER
BX2 X7
SA0 B1 SET OCTET COUNTER
SX4 X6+4000B
RJ EFQ
BX1 -X0*X1 CLEAR CHARACTER
LX1 12
ZR X1,HCP7 IF NO MORE CHARACTERS REMAIN
HCP6 BX5 X0*X1
RJ HXB
NZ X4,ERR4 IF ERROR ON PARAMETER
SX7 X6+4000B
SA0 A0+B1 INCREMENT OCTET COUNTER
SA5 TRMD GET BUFFER INDEX
SA7 X5+DBUF ENTER FIELD VALUE INTO BUFFER
SX7 X5+B1 INCREMENT INDEX
SA7 A5
BX1 -X0*X1
LX1 12
NZ X1,HCP6 IF MORE CHARACTERS REMAIN
HCP7 SB2 B2-B1
ZR B2,HCP8 IF PROCESSING COMPLETE
SB6 B6+B1
SA1 TTPV+B6+1
NZ X1,HCP6 IF NOT THROUGH WITH PARAMETER
HCP8 SA5 TRMD GET OCTET COUNT BYTE
SX6 A0+B1
IX5 X5-X6
SX7 A0+4000B
SA7 X5+DBUF ENTER FIELD VALUE INTO BUFFER
EQ HCPX RETURN
PCP SPACE 4,15
** PCP - PROCESS CHARACTER PARAMETER VALUE.
*
* ENTRY (X1) = PARAMETER FROM COMMAND.
* (B7) = INDEX INTO TABLES.
* (B5) = *TTC*/*TFC* FLAG.
*
* EXIT (X4) .NE. 0 IF ERROR IN PARAMETER.
* (X6) = CONVERTED CHARACTER.
* (B7) RESTORED.
* (B5) RESTORED.
*
* USES X - 0, 1, 2, 4, 5, 6, 7.
* A - 0, 1, 2, 5, 6, 7.
* B - 4, 5, 6, 7.
*
* CALLS DXB, HXB.
*
* DEFINE (B6) = POSITION IN PARAMETER LIST.
PCP5 SX6 A0
IX5 X5-X6
SX7 X6+4000B
SA7 X5+DBUF
PCP SUBR ENTRY/EXIT
SX7 B5+
SA7 PCPB
NG B5,PCP0 IF NOT *TTC* OR *TFC*
ZR X1,ERR5 IF NOTHING ENTERED
SA2 TTFN+B7
MX0 -12
AX2 18
BX6 -X0*X2 FIELD NUMBER ISOLATED
SA5 TRMD
SA0 B0 INITIALIZE OCTET COUNTER
SA6 X5+DBUF
SX7 4000B
SA7 A6+B1
SX6 X5+2
SA6 A5
PCP0 MX0 -54
BX4 -X0*X1
SA2 PMPA
NZ X2,PCP1 IF MULTIPLE PARAMETER
ZR X4,PCP3 IF SINGLE CHARACTER ENTERED
BX2 X0*X1
LX2 6
SX4 X2-1RX
ZR X4,PCP2 IF *XHH* ARGUMENT
BX5 X1
SX7 B7
SA7 PCPA SAVE TABLE INDEX
SB7 0 ASSUME OCTAL BASE FOR CONVERSION
RJ DXB DISPLAY CODE TO BINARY CONVERSION
SA2 PCPA RESTORE TABLE INDEX
SB7 X2+
EQ PCP4 CHECK FOR *TTC* OR *TFC*
PCP1 BX2 X0*X1
BX5 -X0*X1
SX4 B1 RETURN AN ERROR
LX2 6
ZR X5,PCPX IF NO CHARACTER WAS SPECIFIED
SX4 X2-1RX
ZR X4,PCP2 IF *XHH* ARGUMENT
SX4 X2-1RY
ZR X4,PCP2 IF *YHH* ARGUMENT
EQ PCPX RETURN
PCP2 MX0 -42
BX4 -X0*X1
NZ X4,PCPX IF TOO MANY CHARACTERS ENTERED
MX0 -54
BX5 -X0*X1
LX5 6
RJ HXB HEX DISPLAY CODE TO BINARY CONVERSION
EQ PCP4 CHECK FOR *TTC* OR *TFC*
PCP3 LX1 6
SA2 X1+TVXD GET OCTAL EQUIVALENT
LX2 0-18
MX0 -12
BX6 -X0*X2 FIELD VALUE
PCP4 SA2 PCPB *TTC*/*TFC* FLAG
SB5 X2
SA0 A0+B1
NG B5,PCPX IF NOT *TTC* OR *TFC*
SB4 A0-4
GT B4,ERR5 IF TOO MANY CHARACTERS
SA5 TRMD
SX6 X6+4000B
SA6 X5+DBUF
SX7 X5+B1
SA7 A5
SA2 TTPV+B6
SA1 A2+2
BX2 X2-X1
NZ X2,PCP5 IF NEXT ENTRY NOT *TTC* OR *TFC*
SA1 A1+B1 GET PARAMETER VALUE
SB6 B6+2
EQ PCP0 CHECK NEXT ENTRY
PCPA BSS 1 TEMPORARY STORAGE FOR TABLE INDEX
PCPB BSS 1 *TTC*/*TFC* FLAG
PCS SPACE 4,20
** PCS - PROCESS COMMAND ARGUMENTS.
*
* ENTRY (B6) = ADDRESS OF STRING BUFFER.
* = 0 IF NO MORE PARAMETERS.
* SET BY *POP*.
*
* EXIT *TTPV* TABLE BUILT.
* OUTPUT FILE NAME SET.
* (X1) .NE. 0 IF ERROR.
* (X5) = ADDRESS OF LAST ENTERED PARAMETER IF NO ERROR.
*
* USES X - 1, 2, 3, 4, 5, 6, 7.
* A - 2, 3, 4, 6, 7.
* B - 3.
*
* CALLS POP.
PCS SUBR ENTRY/EXIT
SX1 B0+ CLEAR ERROR
SX5 TTPV-1 INITIALIZE TABLE ADDRESS
PCS1 ZR B6,PCSX IF NO MORE ARGUMENTS
RJ POP PICK OUT NEXT PARAMETER
MX1 18
NG B5,PCSX IF ERROR
BX2 X2-X2
* SEARCH FOR MATCH IN ARGUMENT TABLE.
ZR X6,PCSX IF BLANK ARGUMENT
SA3 TFLD GET FIRST OPTION
ZR B6,PCS2 IF TERMINATOR ENCOUNTERED
SA2 B6-B1 SEPARATOR
PCS2 BX7 X1*X3
ZR X3,PCSX IF END OF TABLE
BX4 X7-X6
SX7 A3
SA3 A3+TFLG GET NEXT OPTION
NZ X4,PCS2 IF NO MATCH
SX5 X5+B1
SA7 X5 SAVE TABLE ENTRY ADDRESS
* PROCESS EQUIVALENCED VALUE.
SX7 X2-1R=
NZ X7,PCSX IF ARGUMENT NOT EQUIVALENCED
BX4 X6 SAVE ATTRIBUTE
PCS3 RJ POP PICK OUT VALUE
SX1 B1+
NG B5,PCSX IF ERROR
RJ ZCA ZERO CHARACTER ATTRIBUTE CHECKER
SX5 B2 RESTORE *TTPV* POINTER
ZR X3,PCS3.1 IF BLANK ARGUMENT CHECK SKIPPED
SA2 POPA
ZR X2,PCSX IF BLANK ARGUMENT
PCS3.1 BX1 X1-X1 CLEAR ERROR
* ENTER ARGUMENT.
SA2 X5
SX7 X2-TFLD
NZ X7,PCS4 IF NOT *L* PARAMETER
SX5 X5-1 NO ENTRY FOR *L*
SX2 3
BX6 X6+X2
SA6 O SET OUTPUT FILE NAME
EQ PCS1 PROCESS NEXT PARAMETER
PCS4 SB5 B5+B1 GET PARAMETER WORD LENGTH
SX7 B5+ INSERT IN *TTPV* ENTRY
LX7 59-5
BX7 X7+X2 ADD TABLE ADDRESS
SA7 A2
SB2 B0+
PCS5 SA4 POPA+B2 SAVE PARAMETER VALUE
SX5 X5+B1
BX7 X4
SA7 X5
SB2 B2+1
SB5 B5-B1
NZ B5,PCS5 IF NOT THROUGH WITH PARAMETER
ZR B6,PCS1 IF TERMINATOR ENCOUNTERED
SA4 B6-B1 SEPARATOR
SX7 X4-1R/
NZ X7,PCS1 IF NOT A MULTI VALUE PARAMETER
SX5 A2+2 SAVE TABLE ENTRY ADDRESS
BX7 X2
SA7 X5
EQ PCS3 PROCESS MULTI VALUE
PDO SPACE 4,15
** PDO - PROCESS DOUBLE OCTETS.
*
* *PDO* ADDS A PAIR OF OCTETS TO CONTROL BYTE 0010B IF
* THE ATTRIBUTE VALUE IS LARGER THAN WHAT CAN BE CONTAINED
* IN EIGHT BITS. THIS ROUTINE IS APPLICABLE FOR THE
* FOLLOWING ATTRIBUTE NAMES: CRD, FFD, IBS, LFD, TML.
*
* ENTRY (X1) = PARAMETER FROM COMMAND.
* (B7) = INDEX INTO TABLE.
*
* EXIT CONTROL BYTE 0010B UPDATED.
*
* USES X - 0, 2, 3, 4, 5, 6, 7.
* A - 2, 3, 6, 7.
*
* CALLS DXB, EFQ, VFT.
PDO SUBR ENTRY/EXIT
BX5 X1 GET FIELD VALUE
RJ DXB DISPLAY CODE TO BINARY
SA2 TTFN+B7 GET FIELD NUMBER
NZ X4,ERR3 IF ERROR IN TRANSLATION
MX0 -12
AX2 18
BX2 -X0*X2 FIELD NUMBER ISOLATED
RJ VFT VALIDATE FIELD VALUE
NG X6,ERR4 IF INCORRECT FIELD VALUE
MX0 -8
BX4 -X0*X6 ISOLATE SECOND OCTET
SX4 X4+4000B
AX6 8
BX3 -X0*X6 ISOLATE FIRST OCTET
NZ X3,PDO1 IF TWO OCTETS REQUIRED FOR VALUE
RJ EFQ ENTER AN/AV PAIR - CONTROL BYTE 0010B
EQ PDOX RETURN
PDO1 SA5 TRMD GET BUFFER INDEX
BX6 X2 GET FIELD NUMBER
SX7 4002B
SA6 X5+DBUF ENTER FIELD NUMBER INTO BUFFER
SX6 X5+4 INCREMENT INDEX
SA7 A6+B1 ENTER OCTER COUNTER INTO BUFFER
SX7 X3+4000B GET FIRST OCTET
SA7 A6+2 ENTER FIRST OCTET INTO BUFFER
SX7 X4 GET SECOND OCTET
SA7 A6+3 ENTER SECOND OCTET INTO BUFFER
SA6 A5 RESET BUFFER INDEX
EQ PDOX RETURN
PEV SPACE 4,15
** PEV - PROCESS EQUIVALENCED VALUE ARGUMENT TYPE.
*
* ENTRY (X1) = PARAMETER FROM COMMAND.
* (X2) = TABLE ENTRY FROM *TFLD*.
* (B5) = ADDRESS OF FIELD VALUE EQUIVALENCED CODE.
*
* EXIT (X2) = FIELD NUMBER.
* (X4) = FIELD VALUE.
* = 0 IF EQUIVALENCE VALUE NOT FOUND.
* (X6) = NORMALIZED FIELD VALUE TO BE VALIDATED.
* (B2) .GE. 0, VALIDATE FIELD VALUE RANGE.
*
* USES X - 0, 1, 2, 4, 6, 7.
* A - 1, 4.
* B - 2, 3, 4, 5, 6.
*
* DEFINE (B6) = POSITION IN PARAMETER LIST.
* (B7) = INDEX INTO TABLES.
PEV SUBR ENTRY/EXIT
SB4 3777B SET FIELD VALUE
SA1 TTPV+B6 GET PARAMETER WORD COUNT
SX7 B5 PRESERVE TABLE INDEX
AX1 54
SB3 X1
SA1 A1+B1 GET WHOLE PARAMETER VALUE
PEV1 SA4 B5 GET EQUIVALENCE CODE
ZR X4,PEVX IF NO EQUIVALENCE FOUND
SB5 B5+B1
SB2 X4
SB4 B4+B1
MX0 24
BX0 X0*X4
NZ X0,PEV2 IF SHORT PARAMETER
LX4 0-18
SB5 B5+B2
NE B3,B2,PEV1 IF WORD COUNTS DIFFERENT
SB4 X4 SET FIELD VALUE
SA4 A4+B1 GET EQUIVALENCE CODE
PEV2 BX4 X4-X1
NZ X4,PEV1 IF NO MATCH
SB2 B2-B1
LE B2,PEV3 IF DONE COMPARING
SA4 A4+B1
SA1 A1+B1
SB6 B6+1
EQ PEV2 CHECK NEXT WORD
PEV3 SX7 X7-BOOL CHECK FOR TABLE *BOOL*
MX0 -1
SX4 B4
NZ X7,PEV4 IF NOT SEARCHING TABLE *BOOL*
BX4 -X0*X4 NORMALIZE BOOLEAN VALUE
SB4 X4+4000B
SX4 B4
PEV4 SB4 B4-4000B GET VALUE TO VALIDATE
SX6 B4
MX0 -12
LX2 -18
BX2 -X0*X2 FIELD NUMBER
SB2 B1 VALIDATE RANGE
EQ PEVX RETURN
PMP SPACE 4,20
** PMP - PROCESS MULTIPLE VALUE PARAMETER.
*
* ENTRY (X1) = PARAMETER FROM COMMAND.
* (X2) = *TFLD* TABLE ENTRY.
* (X6) = 0.
* (B7) = INDEX TO *TFLD* TABLE.
*
* EXIT (X1) = PARAMETER FROM COMMAND.
* (X2) = *TMPV* TABLE ENTRY.
* (X3) = 0, IF NO ERROR IN PARAMETER FORMAT.
* (X6) = 1, INDICATES A MULTIPLE VALUE PARAMETER.
* (B5) = EQUIVALENCE TABLE ADDRESS.
* (B7) = INDEX INTO *TMPV* TABLE.
*
* USES X - 0, 1, 2, 3, 4, 5, 6, 7.
* A - 2, 3, 6, 7.
* B - 3, 5, 7.
PMP SUBR ENTRY/EXIT
SA3 PMPC GET PREVIOUS INDEX
SB5 X3
EQ B5,B7,PMP1 IF SAME PARAMETER
SX7 B7 SAVE NEW INDEX
SA7 PMPC
PMP1 MX0 -12 GET INDEX TO *TMPV* TABLE
AX2 18
BX2 -X0*X2
SB3 X2
BX3 X1 GET FIRST CHARACTER OF PARAMETER VALUE
MX0 6
BX3 X0*X3
PMP2 SA2 TMPV+B3 FIND MATCH IN TABLE
BX4 X0*X2
BX5 X4-X3
ZR X5,PMP3 IF MATCH
ZR X4,PMP3 IF POSSIBLE MATCH
LX2 24
NG X2,PMP5 IF END OF TABLE
SB3 B3+B1 INCREMENT INDEX
EQ PMP2 CHECK NEXT ENTRY FOR MATCH
PMP3 LX4 6
SX5 X4-1RC
NZ X5,PMP4 IF NOT C FORMAT
MX3 54 STRIP OFF LEADING C
LX1 6
BX1 X3*X1
PMP4 SB7 B3 RETURN INDEX TO *TMPV* TABLE
SX6 B1 SET MULTI-PARAMETER FLAG
MX3 -18 GET TABLE ADDRESS
BX3 -X3*X2
SB5 X3 RETURN EQUIVALENCE TABLE ADDRESS
SX3 B0 CLEAR ERROR FLAG
EQ PMPX RETURN
PMP5 SA3 TRMC INCREMENT ERROR COUNT
SX3 X3+B1
BX6 X3
SA6 A3
EQ PMPX RETURN ERROR
PMPA CON 0 SET IF CURRENT PARAMETER HAS MULTI-VALUES
PMPC CON 0 *TTFN* TABLE INDEX
POP SPACE 4,15
*** POP - PICK OUT TRMDEF PARAMETER FROM STRING BUFFER.
*
* A LITERAL PARAMETER IS DELIMITED BY *$*. IF THE
* LITERAL IS TO CONTAIN A *$*, *$$* MUST BE USED.
* EG. - $A B/C$$E$ YIELDS A B/C$E
*
* THE ASTERISK (*) AND UNDERLINE (_) ARE CONSIDERED TO BE
* VALID PARAMETER CHARACTERS, NOT SEPARATORS.
*
* *POPL* DEFINES THE MAXIMUM PARAMETER LENGTH IN WORDS.
*
* NOTE - THIS ROUTINE IS A MODIFIED VERSION OF *COMCPOP*.
*
* ENTRY (B6) = ADDRESS TO BEGIN ASSEMBLY.
* (USBC) = ADDRESS OF LAST CHARACTER IN STRING BUFFER.
*
* EXIT (X6) = LAST PART OF ASSEMBLED PARAMETER OR PARAMETER
* IF .LT. 10 CHARACTERS.
* (B5) = PARAMETER LENGTH (IN WORDS) - 1.
* = NEGATIVE IF BUFFER EXHAUSTED OR ERROR.
* (B6) = 0 IF *.* OR *)* ENCOUNTERED.
* = POSITIVE, NEXT STRING BUFFER ADDRESS.
* (A1) = ADDRESS OF SEPARATOR.
* (X1) = SEPARATOR.
* (X2) = NEGATIVE IF *.* OR *)* ENCOUNTERED
* AND NO ERRORS.
* = 0 IF CHARACTER ENCOUNTERED WITH
* DISPLAY CODE GREATER THAN 57B (.).
*
*
* USES A - 1, 6, 7.
* X - 1, 2, 3, 6, 7.
* B - 1, 2, 3, 4, 5, 6, 7.
POP13 SB5 -1 SET ERROR FLAG
EQ POPX RETURN
POP14 SX3 4100B CHECK FOR VALID TERMINATOR
BX7 X7-X7
AX2 X3,B2
SA6 POPA+B5 STORE PARAMETER WORD
SB2 B4-60 CHECK FOR EMPTY ASSEMBLE REGISTER
EQ B2,B0,POP15 IF EMPTY ASSEMBLY REGISTER
SB2 B5-POPL CHECK PARAMETER SIZE
PL B2,POP13 IF PARAMETER TOO LONG
SA7 A6+1
POP15 LX2 59 CHECK TERMINATOR
PL X2,POP16 IF NOT *.* OR *)*
SB6 B0 SET TERMINATOR ENCOUNTERED
POP16 SB4 B4-60
NE B4,B0,POPX IF NOT EMPTY ASSEMBLY REGISTER
EQ B5,B0,POPX IF .LT. 11D CHARACTERS
SB5 B5-1
POP SUBR ENTRY/EXIT
SB5 -1 SET PARAMETER LENGTH INDEX
LE B6,POPX IF NO ASSEMBLY POINTER
SA1 USBC GET LAST CHARACTER LOCATION
SB7 X1+1
POP1 SB4 60 POSITION INDEX
BX6 X6-X6 CLEAR ASSEMBLY REGISTER
SB5 B5+B1
POP2 SA1 B6
LT B6,B7,POP3 IF MORE CHARACTERS IN STRING BUFFER
SB3 POPL
GT B5,B3,POP13 IF BUFFER FULL
SA6 POPA+B5
EQ POP13 SET ERROR FLAG - NO TERMINATOR
POP3 SX2 X1-1R
NZ B4,POP4 IF ASSEMBLY REGISTER NOT FULL
SA6 POPA+B5 STORE FULL WORD
SB2 B5-POPL
NG B2,POP1 IF PARAMETER NOT TOO LONG
EQ POP13 SET ERROR FLAG - PARAMETER TOO LONG
POP4 SX3 X1-1R$
SB6 B6+1
SB2 X1-1R9
ZR X3,POP6 IF LITERAL PARAMETER
SX3 X1-1R*
ZR X3,POP5 IF CHARACTER = *
ZR X2,POP2 IF CHARACTER = * *
ZR X1,POP14 IF CHARACTER 00
LE B2,POP5 IF ALPHANUMERIC
SX3 X1-65B
NZ X3,POP14 IF NOT UNDERLINE
POP5 SB4 B4-6
LX7 X1,B4
BX6 X7+X6
EQ POP2 CHECK NEXT CHARACTER
POP6 SX7 B4-60 CHECK FOR DELIMITER AS FIRST CHARACTER
SX3 X7+B5
NZ X3,POP13 IF DELIMITER NOT FIRST CHARACTER
POP7 SA1 B6
SX3 X1-1R$
SB6 B6+B1
GT B6,B7,POP13 IF NO MORE CHARACTERS IN STRING BUFFER
NZ X3,POP11 IF NO DELIMITER
SA1 B6
SX3 X1-1R$
SB6 B6+B1
GT B6,B7,POP10 IF NO MORE CHARACTERS IN STRING BUFFER
ZR X3,POP11 IF DOUBLE DELIMITER
POP8 SX3 X1-1R*
SB2 X1-1R$
ZR X3,POP13 IF ILLEGAL SEPARATOR
ZR B2,POP13 IF ILLEGAL SEPARATOR
ZR X1,POP14 IF 00 CHARACTER
SB2 X1-1R9
SX3 X1-1R
LE B2,POP13 IF ALPHANUMERIC CHARACTER
NZ X3,POP14 IF NOT BLANK
POP9 SA1 B6
SB6 B6+B1
LE B6,B7,POP8 IF MORE CHARACTERS IN STRING BUFFER
POP10 BSS 0
EQ POP13 SET ERROR FLAG - NO TERMINATOR
POP11 NZ B4,POP12 IF ASSEMBLY WORD NOT FULL
SA6 POPA+B5 STORE ASSEMBLY WORD
SB2 B5-POPL
PL B2,POP13 IF PARAMETER TOO LONG
SB4 60
BX6 X6-X6
SB5 B5+B1
POP12 SB4 B4-6
LX7 X1,B4
BX6 X6+X7
EQ POP7 CHECK NEXT CHARACTER
POPL EQU 6 MAXIMUM PARAMETER LENGTH IN WORDS
POPA BSS POPL+1 ASSEMBLY BUFFER
PPS SPACE 4,15
** PPS - PACK PARAMETER STRING - CONTROL BYTE 0016B.
*
* ENTRY (TRMA) = NUMBER OF ENTRIES TO PACK.
* (CBUF) = FIELD NUMBER/FIELD VALUE PAIRS.
*
* EXIT (OBUF) = PACKED CONTROL BYTE PARAMETER STRING.
* (B7) = WORD COUNT OF PACKED STRING.
*
* USES X - 1, 5, 6.
* A - 1, 5, 6.
* B - 5, 7.
PPS SUBR ENTRY/EXIT
SA5 TRMA NUMBER OF ENTRIES TO PACK
SA1 CBUF GET FIRST ENTRY TO PACK
SB7 B0+ INDEX TO *OBUF*
PPS1 BX6 X6-X6
SB5 5 PACKED ENTRIES PER WORD
PPS2 BX6 X6+X1
SB5 B5-B1
SA1 A1+B1 GET NEXT ENTRY TO PACK
LX6 12
NZ B5,PPS2 IF WORD NOT FILLED
LX6 -12
SA6 B7+OBUF ENTER INTO OUTPUT BUFFER
SB7 B7+1 INCREMENT INDEX
SX5 X5-5
PL X5,PPS1 IF NOT END OF ENTRIES TO PACK
EQ PPSX RETURN
PPT SPACE 4,15
** PPT - PACK PARAMETER STRING - CONTROL BYTE 0010B.
*
* ENTRY (TRMD) = NUMBER OF ENTRIES TO PACK.
* (DBUF) = FIELD NUMBER/FIELD VALUE PAIRS.
*
* EXIT (OBUF) = PACKED CONTROL BYTE PARAMETER STRING.
* (B7) = WORD COUNT OF PACKED STRING.
*
* USES X - 1, 5, 6.
* A - 1, 5, 6.
* B - 5, 7.
PPT SUBR ENTRY/EXIT
SA5 TRMD NUMBER OF ENTRIES TO PACK
SA1 DBUF GET FIRST ENTRY TO PACK
SB7 B0+ INDEX TO *OBUF*
PPT1 BX6 X6-X6
SB5 5 PACKED ENTRIES PER WORD
PPT2 BX6 X6+X1
SB5 B5-B1
SA1 A1+B1 GET NEXT ENTRY TO PACK
LX6 12
NZ B5,PPT2 IF WORD NOT FILLED
LX6 -12
SA6 B7+OBUF ENTER INTO OUTPUT BUFFER
SB7 B7+1 INCREMENT INDEX
SX5 X5-5
PL X5,PPT1 IF NOT END OF ENTRIES TO PACK
EQ PPTX RETURN
PTP SPACE 4,15
** PTP - PROCESS *TC* PARAMETER.
*
* ENTRY (X6) = VALUE ENTERED FOR *TC* PARAMETER.
* (TRMB) = CURRENT TERMINAL CLASS FOR VALIDATION.
*
* EXIT (X3) .LT. 0 IF ERROR.
* (TRMB) = NEW TERMINAL CLASS FOR VALIDATION.
*
* USES X - 1, 3, 5, 7.
* A - 1, 6.
*
* DEFINE (B6) = POSITION IN PARAMETER LIST.
* (B7) = INDEX INTO TABLES.
* (X2) = FIELD NUMBER.
* (X4) = FIELD VALUE.
PTP SUBR ENTRY/EXIT
SX3 -1 SET ERROR FLAG
SX5 X6-1
NG X5,PTPX IF INCORRECT TERMINAL CLASS
SX5 X6-LTCN LARGEST TERMINAL CLASS NUMBER
PL X5,PTPX IF INCORRECT TERMINAL CLASS
* VALIDATE FOR LEGAL TERMINAL CLASS CHANGE.
SA1 TRMB GET CONNECTED TERMINAL CLASS
BX3 X1-X6
ZR X3,PTPX IF NO TERMINAL CLASS CHANGE
SA1 X1+TLTC GET ALLOWED CHANGE LIMITS
SX7 X1 LOWER BOUND
LX1 17-35
SX1 X1 UPPER BOUND
IX3 X6-X7
NG X3,PTPX IF INCORRECT TERMINAL CLASS CHANGE
IX3 X1-X6
NG X3,PTPX IF INCORRECT TERMINAL CLASS CHANGE
PTP1 BX3 X3-X3 CLEAR ERROR FLAG
SA6 TRMB SET NEW TERMINAL CLASS
EQ PTPX RETURN
SAF SPACE 4,20
** SAF - SET ATTRIBUTE FLAGS.
*
* ENTRY (B7) = INDEX INTO TABLES.
*
* EXIT (TRMF) POINTERS UPDATED.
*
* USES X - 2, 7.
* A - 2, 7.
SAF SUBR ENTRY/EXIT
SX7 B1
SA2 TFVR+B7 ATTRIBUTE TYPE CHECK
LX2 59-39
NG X2,SAF1 IF COMMON ATTRIBUTE
LX2 1
NG X2,SAF2 IF NAM/CDNA ATTRIBUTE
LX2 1
NG X2,SAF3 IF NAM/CCP ATTRIBUTE
SAF1 SA7 TRMF+2 SET COMMON FLAG
EQ SAFX RETURN
SAF2 SA7 TRMF+1 SET CDNA FLAG
EQ SAFX RETURN
SAF3 SA7 TRMF SET CCP FLAG
EQ SAFX RETURN
SEP SPACE 4,20
** SEP - SEND EXTRA FN/FV PAIR.
*
* ENTRY (X2) = CURRENT FIELD NUMBER.
* (X4) = CURRENT FIELD VALUE.
* (X6) = FIELD VALUE TO BE VALIDATED.
* (A2) = *TMPV* TABLE ENTRY.
* (B5) = 0.
* (B7) = INDEX INTO TABLES.
*
* EXIT (X2) = CURRENT FIELD NUMBER.
* (X4) = CURRENT FIELD VALUE.
* (X6) = FIELD VALUE TO BE VALIDATED.
* (B5) .LT. 0, IF *C* VALUE TOO LARGE.
* .GE. 0, IF *C* VALUE LESS THAN 4096.
* (B7) = INDEX INTO TABLES.
*
* EXIT TO VFT3.
*
* USES X - 0, 1, 2, 3, 4, 5, 6.
* A - 1, 2.
* B - 3, 4, 5.
*
* CALLS EFP.
* SEND *DL*/*XL* FLAG.
SEP SX3 B0 FIELD VALUE
EQ SEP2 CONTINUE
SEP1 SX3 B1 FIELD VALUE
SEP2 SB3 X4 SAVE CURRENT FIELD VALUE
SB4 X2 SAVE CURRENT FIELD NUMBER
SX4 X3+4000B SET UP DL/XL FLAG
SX2 MXFN FIELD NUMBER
SX3 X6 SAVE VALUE TO VERIFY
RJ EFP ENTER FN/FV PAIR - CONTROL BYTE 0016B
RJ EFQ ENTER AN/AV PAIR - CONTROL BYTE 0010B
SX4 B3 RESTORE CURRENT FIELD VALUE
SX2 B4 RESTORE CURRENT FIELD NUMBER
SX6 X3 RESTORE VALUE TO VALIDATE
SA1 TMPV+B7 CHECK FIELD VALUE FORMAT
MX0 6
BX1 X0*X1
LX1 6
SX5 X1-1RC
NZ X5,SEP3 IF NOT *C* FORMAT
SX1 X6-256D
SB7 B7+B1 INCREMENT TABLE INDEX
SX4 4000B CLEAR UPPER BYTE
SB5 -B1 SET ERROR FLAG
NG X1,SEP2.1 IF LESS THAN 8 BITS
AX6 8 GET UPPER 4 BITS
SX1 X6-16D
PL X1,SEP3 IF VALUE TOO LARGE
SX4 X6+4000B FIELD VALUE
SEP2.1 ZR X6,SEP3 IF VALUE TOO SMALL
SB5 B0+ CLEAR ERROR FLAG
RJ EFP ENTER FN/FV PAIR - CONTROL BYTE 0016B
RJ EFQ ENTER AN/AV PAIR - CONTROL BYTE 0010B
SA2 A2+B1
AX2 18
SX2 X2
MX0 -8
SX6 X3
BX6 -X0*X6
SX4 X6+4000B RESTORE FIELD VALUE
SEP3 JP VFT3 RETURN
* TRANSLATE *IN* FIELD VALUE.
SEP4 SB4 X4-4000B GET FIELD VALUE
SA1 SEPA+B4
MX0 -12
SEP5 LX1 12 FIND FN/FV PAIR
BX2 -X0*X1 GET TRUE FIELD NUMBER
LX1 12
BX4 -X0*X1 GET TRUE FIELD VALUE
PL X1,SEP3 IF NOT TWO PAIRS
LX1 6
SX3 X6 SAVE VALUE TO VERIFY
RJ EFP ENTER FN/FV PAIR - CONTROL BYTE 0016B
RJ EFQ ENTER AN/AV PAIR - CONTROL BYTE 0010B
SX6 X3 RESTORE VALUE TO VALIDATE
EQ SEP5 SET UP NEXT PAIR
* SEPA - TABLE OF EXTRA FN/FV PAIRS.
*
*T 12/FN,12/FV,6/FLAG,12/FN,12/FV,6/FLAG.
*
* FN = FIELD NUMBER.
* FV = FIELD VALUE.
* FLAG = .LT. 0, IF ANOTHER FN/FV PAIR.
* .GE. 0, IF NOT ANOTHER FN/FV PAIR.
SEPA BSS 0
VFD 12/XPFN,12/4000B,6/-1,12/INFN,12/4000B,6/0 *IN=KB*
VFD 12/XPFN,12/4000B,6/-1,12/INFN,12/4001B,6/0 *IN=PT*
VFD 12/XPFN,12/4001B,6/-1,12/INFN,12/4001B,6/0 *IN=XP*
VFD 12/XPFN,12/4001B,6/-1,12/INFN,12/4000B,6/0 *IN=XK*
VFD 12/INFN,12/4002B,36/0 *IN=BK*
VFD 12/XPFN,12/4001B,36/0 *IN=X*
CON 0 END OF TABLE
SPC SPACE 4,15
** SPC - SPECIAL PAGE CHECKS FOR CDNA RANGES.
*
* *SPC* CHECKS *PL* AND *PW* FOR SPECIAL RANGE RESTRICTIONS
* THAT ARE PRESENT ONLY IN CDCNET.
*
* ENTRY (X4) = ATTRIBUTE VALUE.
* (X6) = ATTRIBUTE NUMBER.
*
* EXIT (TRMC) .EQ. 0, IF ATTRIBUTE VALUE WITHIN RANGE.
* .NE. 0, IF ERROR.
* (X4) = ATTRIBUTE VALUE.
* (X6) = ATTRIBUTE NUMBER.
*
* USES X - 7.
* A - 7.
SPC SUBR ENTRY/EXIT
SX7 X6-PLFN
ZR X7,SPC1 IF *PL* ATTRIBUTE
SX7 X6-PWFN
ZR X7,SPC2 IF *PW* ATTRIBUTE
EQ SPCX RETURN
SPC1 SX6 PL2F
SX7 X4-4001B
ZR X7,SPC3 IF INCORRECT VALUE FOR *PL*
EQ SPCX RETURN
SPC2 SX6 PW2F
SX7 X4-4000B
ZR X7,SPCX IF CORRECT VALUE FOR *PW*
SX7 X4-4012B
NG X7,SPC3 IF INCORRECT VALUE FOR *PW*
EQ SPCX RETURN
SPC3 SX7 B1
SA7 TRMG SET ERROR FLAG
EQ SPCX RETURN
VCP SPACE 4,20
** VCP - VARIABLE CHARACTER PROCESSOR.
*
* FOR THOSE ATTRIBUTES WITH A VARIABLE NUMBER OF CHARACTERS,
* *VCP* WILL OUTPUT THE CORRECT NUMBER OF ATTRIBUTE VALUE
* OCTETS.
*
* ENTRY (X1) = PARAMETER FROM COMMAND.
* (B7) = INDEX INTO TABLES.
* (B5) = VARIABLE CHARACTER RANGE IDENTIFIER.
* .EQ. 2 THEN RANGE IS 0-2.
* .EQ. 3 THEN RANGE IS 0-4.
* .EQ. 4 THEN RANGE IS 0-7.
* .EQ. 5 THEN RANGE IS 0-25.
*
* EXIT CONTROL BYTE 0010B UPDATED.
*
* USES X - ALL.
* A - 1, 2, 3, 5, 6, 7.
* B - 2, 3, 4, 6.
*
* CALLS EFQ, HCP.
VCP SUBR ENTRY/EXIT
SA1 TTPV+B6 GET PARAMETER WORD COUNT
AX1 54
SB2 X1
SA1 A1+B1 GET WHOLE PARAMETER VALUE
SA2 TTFN+B7 GET FIELD NUMBER
MX0 -12
AX2 18
BX2 -X0*X2 FIELD NUMBER ISOLATED
BX0 X1
AX0 54
SX0 X0-1RX
NZ X0,VCP0 IF NOT HEXADECIMAL FORMAT
RJ HCP HEXADECIMAL CHARACTER PROCESSOR
EQ VCPX RETURN
VCP0 SB3 B1+B1 DETERMINE RANGE SIZE
SB4 B1
SA5 A1
MX0 12
EQ B5,B3,VCP1 IF RANGE OF 0-2 CHARACTERS
SB3 B3+B1
MX0 24
EQ B5,B3,VCP1 IF RANGE OF 0-4 CHARACTERS
SB3 B3+B1
MX0 42
EQ B5,B3,VCP1 IF RANGE OF 0-7 CHARACTERS
MX0 30
SB4 3
SA5 A1+2
VCP1 GT B2,B4,ERR5 IF TOO MANY CHARACTERS
LT B2,B4,VCP2 IF FEWER WORDS THAN MAXIMUM
BX4 -X0*X5
NZ X4,ERR5 IF TOO MANY CHARACTERS
VCP2 ZR X1,VCP6 IF NO CHARACTERS ENTERED
LX1 6
MX0 -6
BX3 -X0*X1
SA3 X3+TVXD GET OCTAL EQUIVALENT
LX3 0-18
SX4 X3+4000B
RJ EFQ ENTER AN/AV PAIR - CONTROL BYTE 0010B
BX1 X0*X1
SB3 B1 SET OCTET COUNTER
SA5 TRMD SET BUFFER INDEX
VCP3 NZ X1,VCP5 IF MORE CHARACTERS REMAIN
SB2 B2-1
ZR B2,VCP4 IF THROUGH WITH PARAMETER
SB6 B6+1 INCREMENT TABLE INDEX
SA1 TTPV+B6+1
NZ X1,VCP5 IF NOT THROUGH WITH PARAMETER
VCP4 BX7 X5 GET OCTET COUNT BYTE
SA7 A5
SX6 B3+B1
IX5 X5-X6 LOCATE COUNT OCTET
SX7 B3+4000B GET OCTET COUNT
SA7 X5+DBUF ENTER FIELD VALUE INTO BUFFER
EQ VCPX RETURN
VCP5 LX1 6
BX3 -X0*X1
SA3 X3+TVXD GET OCTAL EQUIVALENT
SB3 B3+B1 INCREMENT OCTET COUNTER
LX3 0-18
SX7 X3+4000B
SA7 X5+DBUF ENTER FIELD VALUE INTO BUFFER
SX5 X5+B1 RESET BUFFER INDEX
BX1 X0*X1
EQ VCP3 OUTPUT NEXT CHARACTER OCTET
VCP6 SA5 TRMD GET BUFFER INDEX
BX6 X2
SX7 4000B
SA6 X5+DBUF ENTER FIELD NUMBER INTO BUFFER
SX6 X5+2 INCREMENT INDEX
SA7 A6+B1 ENTER OCTET COUNTER INTO BUFFER
SA6 A5 RESET BUFFER INDEX
EQ VCPX RETURN
VFT SPACE 4,20
** VFT - VALIDATE FIELD VALUE ACCORDING TO TERMINAL CLASS.
*
* ENTRY (X6) = CONTENTS TO BE VALIDATED.
* (TRMB) = TERMINAL CLASS TO BE USED FOR VALIDATION.
* (B2) .LT. 0 IF DO NOT VALIDATE RANGE.
*
* EXIT (X6) .LT. 0, IF ERROR.
*
* USES X - 0, 1, 3, 5, 6.
* A - 1, 3, 5.
* B - 3, 4, 5.
*
* CALLS PTP.
*
* DEFINE (B6) = POSITION IN PARAMETER LIST.
* (B7) = ADDRESS OF TABLE ENTRY
* (X2) = FIELD NUMBER.
* (X4) = FIELD VALUE.
VFT SUBR ENTRY/EXIT
SB5 B0 CLEAR ERROR FLAG
SA1 TTFN+B7 GET TABLE ENTRY
MX0 -12
SA5 PMPA
ZR X5,VFT1 IF NOT MULTIPLE PARAMETER
SA3 PMPC GET *TTFN* INDEX
SA1 TTFN+X3 GET TABLE ENTRY
VFT1 MX0 18
SB4 B0+
BX3 X0*X1
VFT2 SA1 VFTA+B4 MATCH TABLE ENTRY
SB4 B4+B1
BX5 X0*X1
ZR X5,VFT3 IF END OF TABLE
BX5 X5-X3
NZ X5,VFT2 IF NO MATCH
MX0 18 GET PROCESSING ROUTINE ADDRESS
BX5 -X0*X1
SB4 X5
SB3 X6 SAVE NUMBER TO BE VALIDATED
JP B4 DO SPECIAL PROCESSING
VFT3 NG B5,VFT5 IF ERROR IN *C* VALUE
SA1 TRMB GET TERMINAL CLASS
SA3 TFVR+B7 GET VALIDATION RANGE
SA5 PMPA
ZR X5,VFT4 IF NOT MULTIPLE PARAMETER
SA3 TFVM+B7 GET RANGE TABLE ENTRY
VFT4 SB4 X1
LX3 B4
NG X3,VFT5 IF PARAMETER INCORRECT FOR TERMINAL CLASS
NG B2,VFTX IF RANGE NOT TO BE CHECKED
LX3 -B4
SX5 X3 LOWER BOUND
LX3 17-35
SX3 X3 UPPER BOUND
IX5 X6-X5
IX3 X3-X6
NG X5,VFT5 IF VALUE TOO LOW
PL X3,VFTX IF NO ERROR
VFT5 SX6 -B1 SET ERROR FLAG
EQ VFTX RETURN
VFT6 RJ PTP PROCESS *TC* PARAMETER
BX6 X3 SET ERROR STATUS
EQ VFTX RETURN
VFTA BSS 0
VFD 18/0LXL,24/0,18/SEP1
VFD 18/0LDL,24/0,18/SEP
VFD 18/0LIN,24/0,18/SEP4
VFD 18/0LTC,24/0,18/VFT6
CON 0 END OF TABLE
ZCA SPACE 4,20
** ZCA - ZERO CHARACTER ATTRIBUTE CHECKER.
*
* *ZCA* SETS A FLAG IF VARIABLE LENGTH ATTRIBUTES HAVE A
* ZERO CHARACTER NAME ENTERED.
*
* ENTRY (X4) = ATTRIBUTE NUMBER.
* (X5) = POINTER TO *TTPV*.
* (X6) = CONTENTS TO BE VALIDATED.
*
* EXIT (X3) .LT. 0, IF ATTRIBUTE NOT OF VARIABLE LENGTH.
* .EQ. 0, IF VALUE LENGTH NOT TO BE CHECKED.
*
* USES X - 0, 2, 3, 5.
* A - 2.
* B - 4.
ZCA SUBR ENTRY/EXIT
MX0 18
SB2 X5 PRESERVE *TTPV* POINTER
SB4 B0+
BX3 X0*X4
ZCA1 SA2 ZCAA+B4 MATCH TABLE ENTRY
SB4 B4+B1
BX5 X0*X2
ZR X5,ZCA2 IF END OF TABLE
BX5 X5-X3
NZ X5,ZCA1 IF NO MATCH
SX3 B0+ BLANK ARGUMENT NOT TO BE CHECKED
EQ ZCAX RETURN
ZCA2 SX3 -1 BLANK ARGUMENT TO BE CHECKED
EQ ZCAX RETURN
ZCAA BSS 0
VFD 18/0LTM,42/0
VFD 18/0LEOS,42/0
VFD 18/0LCRS,42/0
VFD 18/0LLFS,42/0
VFD 18/0LFFS,42/0
CON 0 END OF TABLE
TFVM SPACE 4,10
** TFVM - TABLE OF VALIDATION RANGES FOR MULTI-VALUE.
*
*T 18/VBF,6/0,18/UB,18/LB
* VFB = CORRESPONDING BIT SET IF PARAMETER INCORRECT
* FOR TERMINAL CLASS.
* UB = UPPER BOUND ON PARAMETER VALUE RANGE.
* LB = LOWER BOUND ON PARAMETER VALUE RANGE.
*
* ENTRIES IN *TFVM* AND *TMPV* MUST BE SAME ORDER
TFVM BSS 1
VFD 18/00777B,6/0,18/15D,18/0 *CNXXX* FOR *DL*
VFD 18/00777B,6/0,18/255D,18/0 *CXNNN* FOR *DL
VFD 18/20413B,6/0,18/255D,18/0 *XHH* FOR *DL*
VFD 18/20777B,6/0,18/1,18/0 *T0* FOR *DL*
VFD 18/00777B,6/0,18/15D,18/0 *CNXXX* FOR *XL*
VFD 18/00777B,6/0,18/255D,18/0 *CXNNN* FOR *XL*
VFD 18/20413B,6/0,18/255D,18/0 *XHH* FOR *XL*
VFD 18/20777B,6/0,18/1,18/0 *TO* FOR *XL*
VFD 18/20413B,6/0,18/255D,18/0 *YHH* FOR *XL*
VFD 18/413B,6/0,18/127D,18/0 *XHH* FOR *EL*
VFD 18/20777B,6/0,18/2,18/0 *EB* OR *EL* FOR *EL*
VFD 18/20777B,6/0,18/3,18/0 *NO*,*CR*,*LF* OR *CL*
VFD 18/20413B,6/0,18/127D,18/0 *XHH* FOR *EB*
VFD 18/20777B,6/0,18/2,18/0 *EB* OR *EL* FOR *EB*
VFD 18/20777B,6/0,18/3,18/0 *NO*,*CR*,*LF* OR *CL*
TITLE TABLES.
TFVR SPACE 4,10
** TFLD - TABLE OF FIELD VALUE VALIDATION RANGES
* AND TERMINAL DEFINITION FIELD NUMBERS.
*
*T,TTFN 18/PN,12/SFN,12/FN,18/ADDR
*T,TFVR 18/VBF,6/FLAGS,18/UB,18/LB
* PN = ONE - THREE CHARACTER PARAMETER NAME MNEMONIC
* USED FOR COMMAND PROCESSING AND ERROR MESSAGES.
* SFN = SECOND FIELD NUMBER, IF IT EXISTS.
* FN = FIELD NUMBER FOR SINGLE VALUE PARAMETERS, OR
* INDEX TO *TMPV* TABLE FOR MULTIPLE VALUE
* PARAMETERS.
* ADDR = ADDRESS OF EQUIVALENCE TABLE.
* IF NEGATIVE, EXPECTING A ONE CHARACTER ARGUMENT.
* IF ZERO, EXPECTING A DECIMAL NUMBER.
* IF ONE, PARAMETER HAS MULTIPLE FIELD NUMBERS.
* IF TWO, VALUE HAS A RANGE OF 0-2 CHARACTERS.
* IF THREE, VALUE HAS A RANGE OF 0-4 CHARACTERS.
* IF FOUR, VALUE HAS A RANGE OF 0-7 CHARACTERS.
* IF FIVE, VALUE HAS A RANGE OF 0-25 CHARACTERS.
* IF SIX, VALUE HAS A RANGE OF 1-4 CHARACTERS.
* IF SEVEN, PARAMETER HAS A DOUBLE OCTET VALUE.
* IF TEN (OCTAL), ATTRIBUTE HAS BEEN DISABLED.
* VBF = CORRESPONDING BIT SET IF PARAMETER INCORRECT
* FOR TERMINAL CLASS.
* FLAGS = BITS 41 - 40 UNUSED.
* BIT 39 SET = COMMON ATTRIBUTE.
* BIT 38 SET = CDNA ATTRIBUTE.
* BIT 37 SET = CCP ATTRIBUTE.
* BIT 36 SET = UNSUPPORTED ATTRIBUTE.
* UB = UPPER BOUND ON PARAMETER VALUE RANGE.
* LB = LOWER BOUND ON PARAMETER VALUE RANGE.
*
* THE *L* PARAMETER MUST BE FIRST.
TFLD BSS 0
VFD 18/1LL,12/0,12/0,18/0 OUTPUT FILE
VFD 60/0
VFD 18/2LTC,12/0,12/TCFN,18/0 TERMINAL CLASS
VFD 18/0,6/2,18/17D,18/1
VFD 18/2LAB,12/0,12/ABFN,18/-1 ABORT BLOCK
VFD 18/777B,6/2,18/127D,18/0
VFD 18/2LBR,12/0,12/BRFN,18/NYEC BREAK KEY
VFD 18/20777B,6/2,18/1,18/0
VFD 18/2LBS,12/0,12/BSFN,18/-1 BACKSPACE CHARACTER
VFD 18/777B,6/2,18/127D,18/0
VFD 18/2LB1,12/0,12/B1FN,18/-1 USER BREAK 1
VFD 18/3B,6/2,18/127D,18/0 (INTERRUPT CHAR)
VFD 18/2LB2,12/0,12/B2FN,18/-1 USER BREAK 2
VFD 18/3B,6/2,18/127D,18/0 (TERMINATION CHAR)
VFD 18/2LCI,12/CCFN,12/CIFN,18/0 CARRIAGE RETURN IDLE
VFD 18/777B,6/2,18/99D,18/0 COUNT
VFD 18/2LCN,12/0,12/CNFN,18/-1 CANCEL CHARACTER
VFD 18/3B,6/2,18/127D,18/0
VFD 18/2LCP,12/0,12/CPFN,18/NYEC CURSOR POSITIONING
VFD 18/20003B,6/2,18/1,18/0
VFD 18/2LCT,12/0,12/CTFN,18/-1 CONTROL CHARACTER
VFD 18/0,6/2,18/127D,18/0
VFD 18/2LDL,12/0,12/DLMV-TMPV,18/1B SINGLE MESSAGE
VFD 18/0,6/2,36/0 TRANSPARENT
VFD 18/2LEB,12/0,12/EBMV-TMPV,18/1B END OF BLOCK
VFD 18/0,6/2,36/0
VFD 18/2LEL,12/0,12/ELMV-TMPV,18/1B END OF LINE
VFD 18/0,6/2,36/0
VFD 18/2LEP,12/0,12/EPFN,18/NYEC ECHOPLEX MODE
VFD 18/20777B,6/2,18/1,18/0
VFD 18/2LFA,12/0,12/FAFN,18/NYEC FULL ASCII
VFD 18/413B,6/2,18/1,18/0
VFD 18/2LHD,12/0,12/HDFN,18/NYEC HOST AVAILABILITY
VFD 18/3B,6/2,18/1,18/0
VFD 18/2LIC,12/0,12/ICFN,18/NYEC INPUT FLOW CONTROL
VFD 18/20777B,6/2,18/1,18/0
VFD 18/2LIN,12/0,12/INFN,18/INEC INPUT DEVICE
VFD 18/3B,6/2,18/5,18/0
VFD 18/2LLI,12/LCFN,12/LIFN,18/0 LINE FEED IDLE COUNT
VFD 18/777B,6/2,18/99D,18/0
VFD 18/2LLK,12/0,12/LKFN,18/NYEC LOCK OUT CONTROL
VFD 18/0,6/2,18/1,18/0
VFD 18/2LOC,12/0,12/OCFN,18/NYEC OUTPUT FLOW CONTROL
VFD 18/20777B,6/2,18/1,18/0
VFD 18/2LOP,12/0,12/OPFN,18/OPEC OUTPUT DEVICE
VFD 18/0,6/2,18/2,18/0
VFD 18/2LPA,12/0,12/PAFN,18/PAEC PARITY
VFD 18/000413B,6/2,18/5,18/0
VFD 18/2LPG,12/0,12/PGFN,18/NYEC PAGE WAIT
VFD 18/000413B,6/2,18/1,18/0
VFD 18/2LPL,12/0,12/PLFN,18/0 PAGE LENGTH
VFD 18/0,6/8,18/255D,18/0
VFD 18/2LPW,12/0,12/PWFN,18/0 PAGE WIDTH
VFD 18/0,6/8,18/255D,18/0
VFD 18/2LSE,12/0,12/SEFN,18/NYEC SPECIAL EDITING MODE
VFD 18/000777B,6/2,18/1,18/0
VFD 18/2LXL,12/0,12/XLMV-TMPV,18/1B MULTI MESSAGE
VFD 18/0,6/2,36/0 TRANSPARENT MODE
* CDCNET TERMINAL DEFINITIONS.
VFD 18/2LAC,12/0,12/ACCF,18/-1 ATTENTION CHARACTER
VFD 18/0,6/4,18/127D,18/0
VFD 18/3LACA,12/0,12/ACAF,18/0 ATTENTION CHARACTER
VFD 18/0,6/4,18/9D,18/0 ACTION
VFD 18/2LBC,12/0,12/BCFN,18/-1 BACKSPACE CHARACTER
VFD 18/0,6/4,18/127D,18/0
VFD 18/3LBKA,12/0,12/BKAF,18/0 BREAK KEY ACTION
VFD 18/0,6/4,18/9D,18/0
VFD 18/3LBLC,12/0,12/BLCF,18/-1 BEGIN LINE CHARACTER
VFD 18/0,6/4,18/127D,18/0
VFD 18/3LCFC,12/0,12/CFCF,18/BOOL CHARACTER FLOW CONTROL
VFD 18/0,6/4,18/5,18/0
VFD 18/3LCLC,12/0,12/CLCF,18/-1 CANCEL LINE CHARACTER
VFD 18/0,6/4,18/127D,18/0
VFD 18/3LCRD,12/0,12/CRDF,18/7B CARRIAGE RETURN DELAY
VFD 18/0,6/4,18/1000D,18/0
VFD 18/3LCRS,12/0,12/CRSF,18/2 CARRIAGE RETURN
VFD 18/0,6/4,36/0 SEQUENCE
VFD 18/2LCS,12/0,12/CSFN,18/CSEC CODE SET
VFD 18/0,6/4,18/2,18/0
VFD 18/1LE,12/0,12/EEFN,18/BOOL ECHOPLEX
VFD 18/0,6/4,18/5,18/0
VFD 18/3LELC,12/0,12/ELCF,18/-1 END LINE CHARACTER
VFD 18/0,6/4,18/127D,18/0
VFD 18/3LELP,12/0,12/ELPF,18/EBEC END LINE POSITIONING
VFD 18/0,6/4,18/3,18/0
VFD 18/3LEOS,12/0,12/EOSF,18/3 END OUTPUT SEQUENCE
VFD 18/0,6/4,36/0
VFD 18/3LEPA,12/0,12/EPAF,18/EPEC END PAGE ACTION
VFD 18/0,6/4,18/1,18/0
VFD 18/3LEPC,12/0,12/EPCF,18/-1 END PARTIAL CHARACTER
VFD 18/0,6/4,18/127D,18/0
VFD 18/3LEPP,12/0,12/EPPF,18/EBEC END PARTIAL
VFD 18/0,6/4,18/3,18/0 POSITIONING
VFD 18/3LFFD,12/0,12/FFDF,18/7B FORM FEED DELAY
VFD 18/0,6/4,18/3000D,18/0
VFD 18/3LFFS,12/0,12/FFSF,18/4 FORM FEED SEQUENCE
VFD 18/0,6/4,36/0
VFD 18/3LFKC,12/0,12/FKCF,18/5B FUNCTION KEY CLASS
VFD 18/0,6/4,36/0
VFD 18/2LFL,12/0,12/FLFN,18/BOOL FOLD LINE
VFD 18/0,6/4,18/5,18/0
VFD 18/2LHP,12/0,12/HPFN,18/BOOL HOLD PAGE
VFD 18/0,6/4,18/5,18/0
VFD 18/3LHPO,12/0,12/HPOF,18/BOOL HOLD PAGE OVER
VFD 18/0,6/4,18/5,18/0
VFD 18/3LIBS,12/0,12/IBSF,18/7B INPUT BLOCK SIZE
VFD 18/0,6/4,18/2000D,18/80D
VFD 18/3LIEM,12/0,12/IEMF,18/IEEC INPUT EDITING MODE
VFD 18/0,6/4,18/1,18/0
VFD 18/3LIOM,12/0,12/IOMF,18/IOEC OUTPUT EDITING MODE
VFD 18/0,6/4,18/2,18/0
VFD 18/3LLFD,12/0,12/LFDF,18/7B LINE FEED DELAY
VFD 18/0,6/4,18/1000D,18/0
VFD 18/3LLFS,12/0,12/LFSF,18/2 LINE FEED SEQUENCE
VFD 18/0,6/4,36/0
VFD 18/3LNCC,12/0,12/NCCF,18/-1 NETWORK CONTROL
VFD 18/0,6/4,18/127D,18/0 CHARACTER
VFD 18/1LP,12/0,12/PPFN,18/PEEC PARITY TYPE
VFD 18/0,6/4,18/4,18/0
VFD 18/3LPCF,12/0,12/PCFF,18/BOOL PARTIAL CHARACTER
VFD 18/0,6/4,18/5,18/0 FORWARDING
VFD 18/2LRA,12/0,12/RAFN,18/RAEC RESPONSE ACTION
VFD 18/0,6/4,18/1,18/0
VFD 18/2LSA,12/0,12/SAFN,18/SAEC STATUS ACTION
VFD 18/0,6/4,18/2,18/0
VFD 18/3LSBC,12/0,12/SBCF,18/BOOL STORE BACKSPACE
VFD 18/0,6/4,18/5,18/0 CHARACTER
VFD 18/3LSND,12/0,12/SNDF,18/BOOL STORE NULS DELS
VFD 18/0,6/4,18/5,18/0
VFD 18/3LTCM,12/0,12/TCMF,18/TCEC TRANSPARENT CHARACTER
VFD 18/0,6/4,18/3,18/0 MODE
VFD 18/3LTFC,12/0,12/TFCF,18/6 TRANSPARENT FORWARD
VFD 18/0,6/4,36/0 CHARACTER
VFD 18/3LTLM,12/0,12/TLMF,18/TLEC TRANSPARENT LENGTH
VFD 18/0,6/4,18/3,18/0 MODE
VFD 18/2LTM,12/0,12/TMFN,18/5B TERMINAL MODEL/TERMI-
VFD 18/0,6/4,36/0 NATE TERM-HOST CONN.
VFD 18/3LTML,12/0,12/TMLF,18/7B TRANSPARENT MESSAGE
VFD 18/0,6/4,18/32767,18/1 LENGTH
VFD 18/3LTTC,12/0,12/TTCF,18/6 TRANSPARENT TERMINATE
VFD 18/0,6/4,36/0 CHARACTER
VFD 18/3LTTM,12/0,12/TTMF,18/TMEC TRANSPARENT TIMEOUT
VFD 18/0,6/4,18/2,18/0 MODE
* UNSUPPORTED STANDARD TERMINAL DEFINITIONS.
VFD 18/2LAR,12/0,12/0,18/-1 AUTO CHAR RECOGNITION
VFD 18/0,6/1,36/0
VFD 18/2LBF,12/0,12/0,18/-1 BLOCKING FACTOR
VFD 18/0,6/1,36/0
VFD 18/2LCH,12/0,12/0,18/-1 TERMINAL CHARACTERIS-
VFD 18/0,6/1,36/0 TICS
VFD 18/2LHN,12/0,12/0,18/-1 HOST NODE SELECTION
VFD 18/0,6/1,36/0 - NUMBER
VFD 18/2LHS,12/0,12/0,18/-1 HOST SELECTION - NAME
VFD 18/0,6/1,36/0
VFD 18/2LMS,12/0,12/0,18/-1 MESSAGETEXT
VFD 18/0,6/1,36/0
CON 0
TLTC SPACE 4,10
** TLTC - TABLE OF LEGAL TERMINAL CLASS CHANGES.
*
*T 24/0,18/UB,18/LB
* UB = UPPER BOUND ON RANGE FOR TERMINAL CLASS CHANGE.
* LB = LOWER BOUND ON RANGE FOR TERMINAL CLASS CHANGE.
TLTC BSS 0
LOC 0
VFD 60/0 TC=0 - INCORRECT
VFD 24/0,18/8,18/1 TC=1 - MODEL 33, 35, 37, 38 TTY
VFD 24/0,18/8,18/1 TC=2 - CDC 713-10, 722, 751-1, 756
VFD 24/0,18/8,18/1 TC=3 - CDC 721
VFD 24/0,18/4,18/4 TC=4 - IBM 2741
VFD 24/0,18/8,18/1 TC=5 - MODEL 40 TTY
VFD 24/0,18/8,18/1 TC=6 - HAZELTINE 2000
VFD 24/0,18/8,18/1 TC=7 - DEC VT100
VFD 24/0,18/8,18/1 TC=8 - TEKTRONIX 401X
VFD 24/0,18/9,18/9 TC=9 - HASP (POST PRINT)
VFD 24/0,18/15,18/10 TC=10 - 200 USER TERMINAL
VFD 24/0,18/13,18/11 TC=11 - CDC 714-30
VFD 24/0,18/13,18/11 TC=12 - CDC 711-10
VFD 24/0,18/13,18/11 TC=13 - CDC 714-10/20
VFD 24/0,18/14,18/14 TC=14 - HASP (PRE PRINT)
VFD 24/0,18/15,18/10 TC=15 - CDC 731-12, 732-12, 734
VFD 24/0,18/16,18/16 TC=16 - IBM 2780
VFD 24/0,18/17,18/17 TC=17 - IBM 3780
LOC *O
TMPV SPACE 4,10
** TMPV - TABLE OF TERMINAL DEFINITIONS MULTI VALUE NUMBERS.
*
*T 6/VT,6/VM,12/0,6/ET,12/FN,18/AD
*
* VT = PARAMETER VALUE TYPE.
* VM = VALIDATION MASK.
* ET = END OF TABLE FLAG.
* FN = FIELD NUMBER.
* AD = ADDRESS OF EQUIVALENCE TABLE.
* IF 0, EXPECTING A DECIMAL NUMBER.
* IF -1, EXPECTING A CHARACTER ARGUMENT.
*
* ENTRIES IN THE *TPMV* AND *TFVM* TABLES MUST BE IN THE
* SAME ORDER.
TMPV BSS 1
DLMV VFD 6/1LC,6/1B,12/0,6/0,12/C1FN,18/0 *DL*
VFD 6/1LC,6/2B,12/0,6/0,12/C2FN,18/0
VFD 6/1LX,6/4B,12/0,6/0,12/XHFN,18/-1
VFD 6/1LT,6/10B,12/0,6/-1,12/TOFN,18/TOEC
XLMV VFD 6/1LC,6/1B,12/0,6/0,12/C1FN,18/0 *XL*
VFD 6/1LC,6/2B,12/0,6/0,12/C2FN,18/0
VFD 6/1LX,6/4B,12/0,6/0,12/XHFN,18/-1
VFD 6/1LT,6/10B,12/0,6/0,12/TOFN,18/TOEC
VFD 6/1LY,6/20B,12/0,6/-1,12/YHFN,18/-1
ELMV VFD 6/1LX,6/1B,12/0,6/0,12/XLFN,18/-1 *EL*
VFD 6/1LE,6/1B,12/0,6/0,12/ELFN,18/ELEC
VFD 6/0,6/2B,12/0,6/-1,12/CLFN,18/XXEC
EBMV VFD 6/1LX,6/1B,12/0,6/0,12/XBFN,18/-1 *EB*
VFD 6/1LE,6/1B,12/0,6/0,12/EBFN,18/ELEC
VFD 6/0,6/2B,12/0,6/-1,12/CBFN,18/XXEC
CON 0 END OF TABLE
TMPL EQU *-TMPV
TTFN SPACE 4,10
SPACE 4
* COMMON DECKS.
*CALL COMCCIO
*CALL COMCDXB
*CALL COMCHXB
*CALL COMCLFM
*CALL COMCSYS
*CALL COMCUSB
*CALL COMCWTW
*CALL COMTVDT
SPACE 4
USE BUFFERS
SPACE 4
* BUFFERS.
CBUF DATA 0016B CONTROL BYTE PARAMETER STRING BUFFER
BSSZ CBUFL
DBUF DATA 0010B CONTROL BYTE PARAMETER STRING BUFFER
BSSZ DBUFL
SPACE 4,5
* FIELD VALUE EQUIVALENCED CODES.
* ENTRIES IN THESE TABLES ARE ORDER DEPENDENT.
INEC CON 2LKB INPUT DEVICE CODES
CON 2LPT
CON 2LXP
CON 2LXK
CON 2LBK
CON 1LX
CON 0
OPEC CON 2LPR OUTPUT DEVICE CODES
CON 2LDI
CON 2LPT
CON 0
PAEC CON 1LZ PARITY SELECTION CODES
CON 1LO
CON 1LE
CON 1LN
CON 1LI
VFD 42/1LM,18/1
CON 0
PEEC CON 4LZERO PARITY SELECTION CODES (CDCNET)
CON 4LMARK
CON 4LEVEN
CON 3LODD
CON 4LNONE
CON 0
NYEC CON 1LN EQUIVALENCE CODES FOR XX=N OR XX=Y
CON 1LY
CON 0
BOOL CON 2LNO BOOLEAN VALUE CODES
CON 3LYES
CON 5LFALSE
CON 4LTRUE
CON 3LOFF
CON 2LON
CON 0
IEEC VSS N,NORMAL,S INPUT EDITING MODE CODES
VSS T,TRANSPARENT
CON 0
IOEC VSS U,UNSOLICITED,S OUTPUT EDITING MODE CODES
VSS S,SOLICITED
VSS F,FULLDUPLEX
CON 0
RAEC VSS S,SEND,S RESPONSE ACTION CODES
VSS D,DISCARD
CON 0
SAEC VSS S,SEND,S STATUS ACTION CODES
VSS H,HOLD
VSS D,DISCARD
CON 0
TCEC VSS N,NONE,S TRANSPARENT CHARACTER MODE CODES
VSS T,TERMINATE
VSS F,FORWARD
VSS FT
VFD 42/0LFORWARD,6/65B,12/0LTE
VFD 60/0LRMINATE
CON 0
TLEC VSS N,NONE,S TRANSPARENT LENGTH MODE CODES
VSS T,TERMINATE
VSS F,FORWARD
VSS FE
VFD 42/0LFORWARD,6/65B,12/0LEX
VFD 60/0LACT
CON 0
TMEC VSS N,NONE,S TRANSPARENT TIMEOUT MODE CODES
VSS T,TERMINATE
VSS F,FORWARD
CON 0
ELEC CON 2L NOT *EB* OR *EL*
CON 2LEL *EL*
CON 2LEB *EB*
CON 0
TOEC CON 2L NOT *TO*
CON 2LTO *TO*
CON 0
XXEC CON 2LNO *NO*
CON 2LCR *CR*
CON 2LLF *LF*
CON 2LCL *CL*
CON 0
CSEC CON 5LASCII CODE SET CODES
CON 5LBPAPL
CON 5LTPAPL
CON 0
EBEC VFD 60/4LNONE END BLOCK POSITIONING CODES
VFD 60/3LCRS
VFD 60/3LLFS
VFD 60/6LCRSLFS
VFD 60/0
EPEC CON 4LNONE END PAGE ACTION CODES
CON 3LFFS
CON 0
FLEC VFD 60/3LOFF FOLD LINE CODES
VFD 60/2LON
VFD 60/0
SPACE 4,5
TMES DATA C* TRMDEF REQUIRES JOB TO BE ON-LINE.*
TMESL EQU *-TMES
CON 0
OBUF EQU *
TTPV SPACE 4,10
* TABLE OF TERMINAL DEFINITION PARAMETER VALUES.
*
*T 6/WORD COUNT OF ENTERED VALUE, 36/0, 18/INDEX INTO TABLES.
*T 60/ENTERED VALUE.
*T .
*T .
*T 60/ENTERED VALUE.
*
* ENTRIES ARE IN THE ORDER SPECIFIED ON THE COMMAND.
* NO ENTRY IS MADE FOR THE *L* PARAMETER.
TTPV EQU OBUF+OBUFL
SPACE 4
RFL= EQU TTPV+TTPVL
ARG= EQU 0
END