|
|
DataMuseum.dkPresents historical artifacts from the history of: IBM System/3 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about IBM System/3 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 95504 (0x17510)
Types: s3xseg
Names: »S$E060«
└─⟦4498c64f7⟧ Bits:30009191 5704-sc2.V05.ccp
└─⟦95ee7795b⟧
└─⟦this⟧ »S$E060«
MACRO 00010000
.********************************************************************** 00020000
.* * 00030000
.* NAME: $E060 * 00040000
.* * 00050000
.* MODIFICATION LEVEL: RELEASE 04 * 00060000
.* * 00070000
.* FUNCTION: * 00080000
.* * 00090000
.* . CCP GENERATION SECOND PASS MACRO INSTRUCTION -- GENERATE * 00100000
.* COMMUNICATIONS I/O INTERFACE ROUTINE * 00110000
.* * 00120000
.* INPUT OPERANDS: * 00130000
.* * 00140000
.* . NONE * 00150000
.* * 00160000
.********************************************************************** 00170000
$E060 00180000
.* 00190000
.*--------- GLOBAL VARIABLES REFERENCED ----------------------------* 00200000
.* 00210000
GBLB &MLTA . 1=MLTA SUPPORTED / 0=NOT 00220000
GBLB &NOM . 1=MLTA *NOT* SUPPORTED / 0=IS 00230000
.* 00240000
GBLB &NOB . 1=BSCA *NOT* SUPPORTED / 0=IS 00260000
.* 00263000
GBLA &C#NL . NUMBER OF BSCC LINES / 0=NONE. 00266000
.* 00270000
GBLB &DFF . 1=DFF SUPPORTED / 0=NOT 00280000
GBLB &NDF . 1=DFF *NOT* SUPPORTED / 0=IS 00290000
.* 00300000
GBLB &N1050 . 1=1050 *NOT* SUPPORTED / 0=IS 00310000
.* 00320000
GBLB &NDME . *NO* DATA MODE ESCAPE 00330000
.* . 1=*NO* DME / 0=DME SUPPORTED 00340000
.* 00350000
GBLB &MIN . MAKE FUNCTIONS TRANSIENT/0=NO 00360000
.* 00370000
GBLB &RAI . 1=RESIDENT ACCEPT INPUT 00372000
GBLB &NRAI . 0=TRANSIENT ACCEPT INPUT 00374000
.* 00374100
GBLB &CSIO . 0=SIOC SUPPORTED. 00374200
.* . 1=SIOC NOT SUPPORTED. 00374300
.* 00374400
GBLB &NAPOR . 0=BSCA PORTS SUPPORTED @21 00374410
.* . 1=BSCA PORTS NOT SUPPORTD@21 00374420
.* @21 00374430
GBLB &NCPOR . 0=BSCC PORTS SUPPORTED @21 00374440
.* . 1=BSCC PORTS NOT SUPPORTD@21 00374450
.* @21 00374460
GBLB &NTTSK . 0=TASK-TASK PORTS SUPPORT@21 00374470
.* . 1=TASK-TASK PORTS NOT SPT@21 00374480
.* @21 00374490
GBLB &NPBY . 0=BUSY PRINTER SUPPORTED 00374500
.* . 1=BUSY PRINTER NOT SUPPORTED 00374600
.* 00374700
GBLB &MTNT . 1=TNT MOVEOUT SUPPORTED 00374800
.* . 0=TNT MOVEOUT NOT SUPPORTED 00374900
.* 00375000
GBLB &NCPUM . 0=CPU MESSAGES XMITTED @21 00375100
.* . 1=CPU MESSAGES SUPPRESSED 00375200
.* 00375300
.* 00376000
.*--------- LOCAL VARIABLES USED -----------------------------------* 00380000
.* 00390000
LCLC &# . USED FOR SINGLE BLANK 00400000
LCLB &NBS . NO BSCA, TASK-TASK, OR BSCC@21 00401000
LCLB &SIOC . 1=SIOC SUPPORTED/ 0=NOT @O8 00402000
LCLA &NSIDM . 2=NOT( PORTS OR DME) @21 00403000
LCLA &YBCSI . 0=NOT( BSCC OR SIOC) @O8 00404000
LCLB &NSIMS . 1=CPU MESSAGES AND NO PORTS@21 00405000
LCLB &PORT . 1=NO PORTS SUPPORTED @21 00406000
LCLB &NNONS . 1=NO NON-SIOC PORTS SUPPTD @21 00407000
.* 00410000
TEXT 00420000
&# SETC ' ' . SINGLE BLANK 00440000
&NBS SETB 0 . ASSUME BSCA OR BSCC GEN'D @14 00440700
AIF (&NTTSK EQ '0').NBS1 . SKIP IF TASK-TASK PORTS @21 00441000
AIF (&NOB NE '1').NBS1 . SKIP IF BSCA OPTION GIVEN @14 00441400
AIF (&C#NL NE '0').NBS1 . SKIP IF BSCC OPTION GIVEN @14 00442100
&NBS SETB 1 . NO BSCA, TASK-TASK, OR BSCC@21 00442800
.NBS1 ANOP . @14 00443500
&PORT SETB 0 . ASSUME PORTS SUPPORTED @21 00443550
AIF (&CSIO EQ '0').YPORT . JUMP IF SIOC PORTS @21 00443600
AIF (&NAPOR EQ '0').YPORT . JUMP IF BSCA PORTS @21 00443650
AIF (&NCPOR EQ '0').YPORT . JUMP IF BSCC PORTS @21 00443700
AIF (&NTTSK EQ '0').YPORT . JUMP IT TASK-TASK PORTS @21 00443750
&PORT SETB 1 . SET PORTS NOT SUPPORTED @21 00443800
.YPORT ANOP @21 00443850
&NNONS SETB 0 . ASSUME NON-SIOC PORTS SUPPD@21 00443900
AIF (&NAPOR EQ '0').YNSPO . JUMP IF BSCA PORTS @21 00443950
AIF (&NCPOR EQ '0').YNSPO . JUMP IF BSCC PORTS @21 00444000
AIF (&NTTSK EQ '0').YNSPO . JUMP IT TASK-TASK PORTS @21 00444050
&NNONS SETB 1 . SET NON-SIOC PORTS NOT SUPP@21 00444100
.YNSPO ANOP @21 00444150
.* @O8 00444200
&SIOC SETB 0 . ASSUME SIOC NOT SUPPORTED @O8 00444900
AIF (&CSIO).NSIXX . JUMP IF SIOC NOT SUPPORTED @O8 00445600
&SIOC SETB 1 . INDICATE SIOC LINE SUPPORT @O8 00446300
.NSIXX ANOP . @O8 00447000
.* 00447700
&NSIDM SETA &PORT+&NDME . 2 = NO PORTS OR DME @21 00448400
&YBCSI SETA &SIOC+&C#NL . 0 = NO BSCC OR SIOC SUPPORT 00449100
.* 00450000
AIF (&PORT EQ '0').NSIX1 . SKIP IF PORTS @21 00451000
AIF (&NCPUM).NSIX1 . SKIP IF CPU MSG SUPPRESSED @18 00452000
&NSIMS SETB 1 . CPU MSG. AND NO PORTS @21 00453000
.NSIX1 ANOP . @18 00454000
.* 00455000
TITLE 'COMMUNICATIONS&#.I/O&#.INTERFACE&#.--&#.USER&#.I/O' 00460000
*********************************************************************** 00470000
* * 00480000
* TITLE: '$CC4II' - I/O INTERFACE ROUTINE. * 00490000
* * 00500000
* FUNCTION/OPERATION: THE FUNCTION OF THIS RESIDENT ROUTINE IS TO * 00510000
* PROCESS BOTH USER AND SYSTEM I/O REQUESTS. EXTENSIVE DIAGNOSTICS * 00520000
* ARE PERFORMED ON EACH REQUEST PRIOR TO SCHEDULING THE REQUEST. * 00530000
* USER REQUESTS ARE PROCESSED IN THE FOLLOWING MANNER: * 00540000
* * 00550000
* 1. GET/PUT/PUT-NO-WAIT/INVITE/STOP INVITE - FOLLOWING THE * 00560000
* DIAGNOSTICS, AN INPUT OPERATION CAUSES THE RECORD AREA TO BE* 00570000
* BLANKED, AND TUBIIS IS SET ON FOR 'CM'. THE USER'S PARAME- * 00580000
* TER LIST IS MOVED TO THE TCB FOR ADDRESSABILITY BY 'CM'. * 00590000
* THE PARAMETER LIST IS QUEUED ON @PRLQ, AND 'CM' IS POSTED * 00600000
* WITH WORK TO DO AND A WAIT ON THE ECB OCCURS. WHEN CONTROL * 00610000
* RETURNS, THE COPY OF THE PARAMETER LIST IS MOVED BACK TO THE* 00620000
* USER'S PARAMETER LIST AREA. CONTROL NOW RETURNS TO THE USER* 00630000
* VIA THE DSM DISPATCHER. NOTE: IF THE PARAMETER LIST OPER-@21 00640000
* ATION IS TO A BSCC LINE TUB THEN THE LIST IS QUEUED ON * 00643000
* @CSNRQ AND $CC4#M IS GIVEN CONTROL INSTEAD OF $CC4CM. * 00646000
* * 00646400
* IF BUSY PRINTER SUPPORTED THEN BEFORE AN OPERATION IS GIVEN * 00646800
* TO CM OR CS A TEST IS MADE FOR A POSSIBLE BUSY PRINTER. IF * 00647200
* TUBBSY IS NOT ON THEN THE OPERATION IS EXECUTED. IF TUBBSY * 00647600
* IS ON THEN AN INVITE WITH TUBWAT ON IS ISSUED TO ASK IF * 00648000
* DEVICE IS STILL BUSY. IF IT IS THEN $CC4II LOOP IN THE * 00648400
* USERS TASK UNTILL THE DEVICE BECOMES NOT BUSY BEFORE * 00648800
* GIVING THE USERS OPERATION TO CM OR CS. * 00649200
* * 00649600
* 2. ACCEPT INPUT - WHEN AN ACCEPT INPUT REQUEST IS ISSUED, TRAN-* 00660000
* SIENT $CC4AB IS CALLED TO FIND A COMPLETED INVITE INPUT FOR * 00670000
* THIS TASK. IF NO COMPLETED INVITES ARE FOUND ON THE TCBINQ * 00680000
* CHAIN, CONTROL RETURNS TO $CC4II TO ISSUE A WAIT FOR AN IN- * 00690000
* VITE TO COMPLETE OR SHUTDOWN TO BE REQUESTED BY THE SYSTEM * 00700000
* OPERATOR. IF CONTROL RETURNS DUE TO A SHUTDOWN REQUEST, THE * 00710000
* RETURN CODE OF THE ACCEPT PARAMETER LIST IS SET TO REFLECT * 00720000
* THIS. IF CONTROL RETURNS BECAUSE OF THE COMPLETION OF AN * 00730000
* INVITE INPUT, $CC4AB IS AGAIN INVOKED TO FIND THE COMPLETED * 00740000
* INVITE REQUEST ON THE 'TCBINQ' CHAIN. WHEN $CC4AB RETURNS * 00750000
* TO THE RESIDENT CODE, THE TUB IS DEQUEUED FROM THE @21 00760000
* TCBINQ CHAIN, AND 'CM/CS' IS POSTED TO MOVE @21 00770000
* THE DATA TO THE USER'S RECORD AREA AND FREEMAIN THE INVITE * 00780000
* INPUT HOLD BUFFER AND THE INVITE PARAMETER LIST COPY. * 00790000
* * 00800000
* 3. STATUS REQUESTS (ACQUIRE TERMINAL, RELEASE TERMINAL, OR GET * 00810000
* TERMINAL ATTRIBUTES) - AFTER THESE REQUESTS ARE DIAGNOSED, * 00820000
* TRANSIENT $CC4GA IS INVOKED TO EITHER PROCESS THE REQUEST * 00830000
* (GET ATTRIBUTES) OR TO ROUTE THE REQUEST TO THE APPROPRIATE * 00840000
* ACQUIRE OR RELEASE TRANSIENT ($CC4AQ OR $CC4RL). * 00850000
* * 00860000
* 4. CONSOLE REQUESTS - FOR USER REQUESTS TO THE CONSOLE, A GET- * 00870000
* MAIN IS DONE FOR A CONSOLE WRITE TO OPERATOR (WTO) OR WRITE * 00880000
* TO OPERATOR WITH REPLY (WTOR) REQUEST. THE PARAMETER LIST * 00890000
* IS BUILT IN THE GETMAINED AREA FROM THE USER'S PARAMETER * 00900000
* LIST AND THE REQUEST IS ISSUED VIA CONSOLE DATA MANAGEMENT * 00910000
* CONTROL RETURNS TO $CC4II AFTER THE OPERATION IS COMPLETED, * 00920000
* AND A FREEMAIN OCCURS TO FREE THE PARAMETER LIST AREA AND * 00930000
* CONTROL RETURNS TO THE USER PROGRAM. * 00940000
* * 00950000
* 5. DFF REQUESTS - IF THE REQUEST IS FOR A DFF TERMINAL, THE * 00960000
* FOLLOWING ACTION TAKES PLACE: * 00970000
* * 00980000
* - RELEASE TERMINAL - DFF PROCESSING OCCURS FOLLOWING * 00990000
* THE RETURN FROM THE RELEASE TRANSIENTS. * 01000000
* * 01010000
* - GET ATTRIBUTES/ACQUIRE TERMINAL - DFF IS NOT INVOLVED* 01020000
* * 01030000
* - ACCEPT INPUT - THE DFF TASK IS INVOKED BY 'CM/CS' @21 01040000
* * 01050000
* - OTHERS - DFF PROCESSING OCCURS IMMEDIATELY PRIOR TO * 01060000
* POSTING 'CM' THAT HE HAS WORK TO DO. THE DFF TASK IS* 01070000
* THEN INVOKED BY COMMUNICATIONS MANAGEMENT DURING HIS * 01080000
* PROCESSING. * 01090000
* * 01100000
* 6. SYSTEM REQUESTS ($CC4IS) - FOR SYSTEM TP REQUESTS, THE RE- * 01110000
* QUEST IS MERELY PASSED ON TO $CC4CM OR $CC4#M, IF BSCC, BY * 01120000
* MEANS OF QUEUING IT ON ITS PARM CHAIN AND POSTING HIM. IF * 01122000
* THE OPERATION IS AN INVITE INPUT, THE PARMETER LIST IS * 01124000
* MOVED TO THE TUB. * 01126000
* * 01150000
* INPUT: INPUT TO $CC4II IS A PARAMETER LIST POINTED TO BY XR2. * 01160000
* * 01170000
* OUTPUT: OUTPUT FROM $CC4II WILL BE A SCHEDULED PUT OPERATION, * 01180000
* DATA ON AN INPUT OPERATION, OR TERMINATION DUE TO ERROR WITH ONE * 01190000
* OF THE FOLLOWING TERMINATION CODES: * 01200000
* 01 - INVALID OP CODE/MODIFIERS * 01210000
* 02 - INVALID OPERATION FOR CONSOLE * 01220000
* 03 - UNDEFINED SYMBOLIC TERMINAL NAME * 01230000
* 04 - TERMINAL NOT ALLOCATED TO PROGRAM * 01240000
* 05 - TERMINAL REFERENCED BY OTHER THAN ALLOCATED NAME * 01250000
* 06 - BLANK TERMINAL NAME FOR MRTS PROGRAM * 01260000
* 07 - BLANK STN AND REQUESTOR RELEASED * 01270000
* 08 - BLANK STN INVALID FOR THIS OPERATION * 01280000
* 0A - STN NOT ASSIGNED TO TERMINAL * 01290000
* 0C - TERMINAL I/O CAPABILITY DOES NOT MATCH OPERATION * 01300000
* 0D - INVALID OUTPUT LENGTH * 01310000
* 0E - INVALID INPUT LENGTH * 01320000
* 0F - INPUT LENGTH GREATER THAN TP BUFFER LIZE * 01330000
* 10 - INVALID OP WITH DATA FROM PROG. REQ. OUTSTANDING * 01340000
* 11 - INVALID OP WITH INVITE INPUT OUTSTANDING * 01350000
* 12 - ACCEPT WITH NO OUTSTANDING INVITES @21 01353000
* 13 - ACCEPT BY NEP WITH MAX # OF TERMS AND NO INVITES @21 01356000
* 14 - INVALID OP WITH NO INVITES OUTSTANDING * 01360000
* 16 - COPY REQUESTED TO TERMINAL WITHOUT MAPPING * 01380000
* 17 - COPY TO TERMINAL NAME NOT FOUND * 01390000
* 18 - COPY INVALID WITH 3275 * 01400000
* 19 - ERASE REQUESTED TO TERMINAL WITHOUT MAPPING * 01410000
* 1A - PUT OVERRIDE TO TERMINAL WITHOUT MAPPING * 01420000
* 1B - INVALID PUT WITH MAPPING - NO EOT * 01430000
* 1C - RECORD AREA TOO SMALL FOR BSCA GET WITH ITB * 01440000
* 1D - ACCEPT WHILE WAITING ON EOT @21 01445000
* 1E - OUTPUT LENGTH TO CONSOLE TOO LARGE * 01450000
* 1F - OUTPUT LENGTH GREATER THAN TP BUFFER LENGTH * 01460000
* 35 - DFF TERMINAL REFERENCED BY NON-DFF TASK * 01470000
* 36 - WRONG DATA LENGTH FOR WAIT OPERATION @21 01471000
* 37 - REQUIRED PORT NOT DEFINED TO THE CALLING TASK. * 01473000
* 38 - INVALID USE OF PORT COMMAND REQUEST OPCODE. * 01476000
* 48 - NON-MSG MODE PUT TO BSCA, BSCC, OR TTASK PORT @21 01478000
* * 01480000
* ENTRY POINTS: * 01490000
* $CC4II - ENTRY FOR USER REQUESTS * 01500000
* $CC4IS - ENTRY POINT FOR SYSTEM REQUESTS * 01510000
* * 01520000
* EXTERNAL REFERENCES: * 01530000
* $CC4TT - TRACE ENTRY * 01540000
* $CC4PI - TRANSIENT INTERFACE TO CALL $CC4NC AND $CC4AB * 01550000
* $CC4NC - CANCEL TRANSIENT * 01560000
* $CC4AB - TRANSIENT TO CHECK ACCEPT INPUT POSSIBILITIES * 01570000
* $CC4GA - GET TERMINAL ATTRIBUTES TRANSIENT * 01580000
* CC4TI2 - TERMINATION ENTRY WITH TCB COMPLETION CODE * 01590000
* * 01600000
* EXITS-NORMAL: A NORMAL EXIT BACK TO THE USER PROGRAM VIA THE DIS- * 01610000
* PATCHER TAKES PLACE IF NO ERRORS OCCUR. * 01620000
* -ERROR: AN ERROR EXIT TO TERMINATION WITH THE APPROPRIATE * 01630000
* TCB COMPLETION CODE OCCURS IN CASE OF ERROR. * 01640000
* * 01650000
* TABLES/WORK AREAS: A TABLE OF OPERATION CODES IS USED TO CHECK * 01660000
* VALIDITY OF OP CODES. * 01670000
* * 01680000
* NOTES: RESIDENT CODE, REENTRANT. * 01690000
* * 01700000
* CHANGE ACTIVITY - $CC4II * 01710000
* @01/INCR/OS.0211 - ACCEPT-NO-WAIT INPUT OPCODE. * 01716000
* @02/APAR/S309335 - INCORRECT MOVE OF PARM-LIST ON RESCHEDUAL. * 01722000
* @03/APAR/S309195 - SUPPRESS 'S' MESSAGE TO CPU FREEMAIN. * 01728000
* @04/APAR/S309336 - SHUTDOWN AND SYSTEM INVITE OPCODE. * 01734000
* @05/APAR/S30X999 - DISABLE INTERUPT AFTER $CC4IS WAIT. * 01740000
* @06/INCR/OS.0206 - BSCA VS BSCC LOGIC. * 01746000
* @07/INCR/OS.X299 - VAR. INVITE LENGTH ON PRUF SCREENS. * 01752000
* @08/INCR/OS.0321 - SUPPORT SIOC PRPQ OPTION. * 01752500
* @09/APAR/S311109 - TUBPIL LENGTH FOR NON-DFF PRUF PUT. * 01753000
* @10/INCR/OS.0309 - BUSY PRINTER SUPPORT. * 01753500
* @11/INCR/OS.0315 - TNT MOVEOUT SUPPORT. * 01754000
* @12/APAR/S312039 - INVALID RECA RETURNED AFTER WAIT OP. * 01754500
* @13/INCR/OS.0347 - SUPPORT FOR COMMAND RELEASE OPCODE * 01755000
* @14/APAR/S312209 - INCLUDE CODE FOR BSCC CHECKING. * 01755500
* @15/APAR/S312155 - VALIDATE GET LENGTH FOR WROR ON CONSOLE * 01756000
* @16/INCR/OS-0361 - RETURN SHUTDOWN PINDING RETURN CODE * 01756500
* @17/APAR/S311871 - CODE MISSING ON BSCC ONLY GEN (NO BSCA) * 01757000
* @18/INCR/OS-0367 - ALLOW CPU MESSAGES (S TYPE) * 01757500
* RELEASE 04 @19 01757600
* @19/APAR-S313287 - LOOP POSSIBLE IF PUT WITH LARGE RECORD LEN @19 01757700
* @20/APAR-S314559 - CHECK FOR TUB ADDR IS ERRONEOUS @20 01757800
* @21/INCR-OS4101 - BSC MULTIPORT @21 01757900
* RELEASE 05 * 01757930
* @22/APAR/S315752 - NON PUT OPERATIONS CHANGED TO SYS INVITES. @22 01757960
* * 01758000
*********************************************************************** 01770000
EJECT 01780000
SPACE 01790000
*********************************************************************** 01800000
* ENTRY POINT FOR I/O INTERFACE FOR USER REUESTS * 01810000
* UPON ENTRY FROM USER RELOCATABLE MODULE - XR2 POINTS AT PARM LIST * 01815000
*********************************************************************** 01820000
SPACE 01830000
ENTRY $CC4II 01850000
$CC4II EQU * 01860000
SPACE 01870000
CCP DISABL,PMRQ DISABLE ALL INTERRUPTS 01880000
ST II@PRL,XR2 SAVE PARAMETER LIST ADDRESS 01890000
SPACE 01900000
*********************************************************************** 01910000
* VALIDATE THE OPERATION CODE PASSED BY THE USER * 01920000
* OBTAIN VALIDITY BYTE FROM OP CODE VALIDTY TABLE * 01930000
*********************************************************************** 01940000
SPACE 01950000
LA IIVTBL,XR1 POINT TO OPCODE VALIDITY TABLE 01980000
MNN IIMVBY+4,PLOPC(,XR2) MOVE OP CODE TO DISPLACMENT 01985000
IIMVBY MVC IIVBYT(1),*-*(,XR1) GET VALIDITY BYTE FROM TABLE 01990000
SPACE 02000000
CLI PLOPC(,XR2),OPAQG+OPSTA IS THE OP IN THE VALID RANGE @08 02020000
JH IIIVLD BRANCH TO TERMINATE IF NOT 02040000
CLI IIVBYT,IIZERO IS VALIDITY BYTE ZERO 02050000
JNE IIVLD JUMP IF NOT 02060000
SPACE 02070000
* VALIDITY BYTE ZERO SO OPERATION IS INVALID 02080000
IIIVLD B C4TI2 BRANCH TO TERMINATION 02100000
DC AL1(TCCIOP) INVALID OP COMPLETION CODE 02110000
SPACE 02120000
IIVLD EQU * OP CODE IS ONE OF CCP VALID OPS 02130000
SLC PLCHN(2,XR2),PLCHN(,XR2) CLEAR CHAIN/RETURN CODE IN PL. 02140000
SLC PL$RTC(4,XR2),PL$RTC(,XR2) CLEAR INTERNAL RETURN CODE 02150000
* AND INTERNAL OP CODE. 02160000
SPACE 02161000
CLI PLOPC(,XR2),OPTCHN THIS A CHAIN TASK REQUEST? 02162000
BE IICTSK YES, GO EXIT TO TRANSIENT 02164000
SPACE 1 02164500
TBN PLOPC(,XR2),OPAQG TEST IF GENERIC ACQ OPCODE. @08 02165000
BT IIGTA YES, GO CALL TRANSCIENT. @08 02165500
SPACE 02166000
CLI PLOPC(,XR2),OPWAIT IS OP WAIT REQUEST 02180000
JE IIFOND JUMP TO ISSUE WAIT 02190000
SPACE 02200000
* SHUTDOWN INQURITY OP CODE @01 02205000
CLI PLOPC(,XR2),OPSHQ IS OP SHUTDOWN INQUIRY @01 02210000
JNE IICKAI JUMP IF NOT SHUTDOWN INQUIRY @01 02220000
TBN $FLGA,CPSHUT HAS SHUTDOWN BEEN REQUESTED @01 02250000
BT IIPGSH YES THEN SET RETURN CODE. @01 02260000
TBN PLOPM(,XR2),OPDLY TEST IF INQ SHUTDOWN DELAY @16 02262000
TBN $FLGB,CPSHDP AND SHUTDOWN DELAY ENTERED? @16 02264000
BF IINTSH NO, THEN JUST RETURN INV CNT @16 02266000
MVI PLRTC(,XR2),RCXSHP YES, INDICATE SHUTDOWN PEND. @16 02268000
B IINTSH THEN SET INVITE CNT IN EFFL. @16 02270000
SPACE 02320000
* CHECK OP CODE TO SEE IF IT'S AN ACCEPT INPUT 02330000
IICKAI EQU * CHECK FOR ACCEPT INPUT 02350000
TBN PLOPC(,XR2),OPACI IS THIS AN ACCEPT INPUT 02360000
TBF PLOPC(,XR2),BIT4+BIT6+BIT7 AND ONLY ACCEPT INPUT? 02370000
BT IIACI .BRANCH IF ACCEPT INPUT 02380000
SPACE 02390000
* NOT ACCEPT INPUT SO MUST VALIDATE THE SYMBOLIC TERMINAL NAME 02400000
* PROVIDED BY USER ALONG WITH THE OPERATION @21 02410000
EJECT 02420000
*********************************************************************** 02430000
* LOCATE SYMBOLIC TERMINAL NAME IN THE TERMINAL NAME TABLE * 02440000
*********************************************************************** 02450000
SPACE 02460000
* CHECK FOR END OF TNT 02480000
* XR1 POINTS AT TNT 02490000
SPACE 02500000
L @TNT,XR1 POINT XR1 AT FIRST TNT ENTRY 02505000
L PLRECA(,XR2),XR2 POINT XR2 AT RECORD AREA 02510000
.* @11 02511000
AIF (&MTNT NE '1').NTNT1 .SKIP IF TNT REMAP NOT SUPP. @11 02512000
MVC IITNAM(IISTNL),IISTNL-1(,XR2) SAVE TERMINAL NAME REFF @11 02513000
B IIMTNT GO MAP TNT MOVEOUT AREA. @11 02514000
.NTNT1 ANOP @11 02515000
.* @11 02516000
SPACE 02520000
IITNTN CLI TNTCCP(,XR1),TNTSTP ARE WE AT END OF TNT? 02530000
JE IINFND JUMP IF AT END TO NOT FOUND 02540000
SPACE 02550000
* CHECK THIS ENTRY IN THE TNT 02560000
AIF (&MTNT EQ '1').ATNT2 .SKIP IF TNT REMAP IS SUPP. @11 02570000
CLC IISTNL-1(IISTNL,XR2),TNTNAM(,XR1) COMPARE TNT STN. @11 02580000
AGO .NTNT2 @11 02582000
.ATNT2 ANOP @11 02584000
CLC IITNAM(IISTNL),TNTNAM(,XR1) COMPARE TNT STN. @11 02586000
.NTNT2 ANOP @11 02588000
JH IILOOK JUMP HIGH TO LOOK AGAIN 02590000
AIF (&PORT).NSIO1 . SKIP IF NO PORTS SUPPORTED @21 02591000
JE IIPFND JUMP IF FOUND IN TNT. @08 02592000
AGO .NSIO2 @08 02593000
.NSIO1 ANOP @08 02594000
JE IIFOND JUMP IF FOUND IN TNT. @08 02595000
.NSIO2 ANOP @08 02596000
SPACE 02610000
* NOT FOUND - HAVE PROGRAM ERROR 02620000
IINFND EQU * STN NOT FOUND IN TNT 02640000
AIF (&MTNT NE '1').NTN2A .SKIP IF TNT REMAP NOT SUPP @11 02642000
B IIUTNT UNMAP THE TNT MOVEOUT AREA. @11 02644000
.NTN2A ANOP @11 02646000
L II@PRL,XR2 POINT TO PARAMETER LIST 02650000
SLC PLTUBA(2,XR2),PLTUBA(,XR2) CLEAR TUB POINTER TO ZEROS 02660000
CLI PLOPC(,XR2),OPGTA WAS THIS A GET ATTRIBUTES OP? 02670000
BE IIGTA SKIP TERMINATION IF YES 02680000
B C4TI2 BRANCH TO TERMINATION 02690000
DC AL1(TCCNNF) TERMINAL NAME NOT FOUND 02700000
SPACE 02710000
* SCAN UNTIL A MATCH IS FOUND IF POSSIBLE. 02720000
* DETERMINE HOW MUCH TO BUMP TNT REGITER POINTER. 02730000
IILOOK EQU * LOOK AT ANOTHER ENTRY 02750000
IIBUMP LA TNTLN(,XR1),XR1 BUMP POINTER BY TNT FIXED SIZE 02760000
B IITNTN BRANCH TO COMPARE AGAIN 02770000
AIF (&PORT).NSIO3 . SKIP IF NO PORTS SUPPORTED @21 02770400
SPACE 1 @08 02770800
* FOUND THE TNT ENTRY. TEST IF RESERVED PORT NAME. @11 02771200
* USE THE REQUIRED GENERAL PORT TNT FOUND DURING ALLOCATION. @11 02771600
IIPFND EQU * FOUND TNT FOR TERM NAME. @08 02772000
TBN TNTFLG(,XR1),TNTRPT TEST IF THIS DUMMY PORT. @08 02772400
JF IIFOND JUMP IF NOT DUMMY PORT. @08 02772800
AIF (&MTNT NE '1').NTN2B .SKIP IF TNT REMAP NOT SUPP @11 02773200
B IIUTNT UNMAP THE TNT MOVEOUT AREA. @11 02773600
.NTN2B ANOP @11 02774000
L NCTCB@,XR1 POINT TO TASK'S TCB. @08 02774400
CLI TCBPCB-1(,XR1),NOBIT WAS REQUIRED PORT DEFINED @08 02774800
L TCBPCB(,XR1),XR1 POINT TO REQUIRED PORT @08 02775200
JNZ IIFOND CONTINUE IF FOUND. @08 02775600
CLI PLOPC(,XR2),OPGTA WAS THIS A GET ATTRIBUTES OP @08 02776000
JE IIGTA SKIP TERMINATION IF YES @08 02776400
SPACE 1 @08 02776800
* ERROR - REQUIRED PORT WAS NOT DEFINED OR WAS RELEASED. @08 02777200
B C4TI2 IF ZERO THEN ERROR. @08 02777600
DC AL1(TCCNRP) REQUIRED PORT NOT DEFINED. @08 02778000
.NSIO3 ANOP @08 02778400
EJECT 02780000
*********************************************************************** 02790000
* A WAIT OPERATION WAS ISSUED OR A @21 02795000
* SYMBOLIC TERMINAL NAME WAS FOUND IN TNT. DETERMINE IF * 02800000
* OPERATION IS VALID FOR THE TYPE TNT ENTRY FOUND. * 02810000
* XR1 POINTS AT PROPER TNT ENTRY * 02815000
*********************************************************************** 02820000
SPACE 02830000
IIFOND EQU * STN FOUND IN TNT 02860000
AIF (&MTNT NE '1').NTN2C .SKIP IF TNT REMAP NOT SUPP @11 02862000
B IIUTNT UNMAP THE TNT MOVEOUT AREA. @11 02864000
.NTN2C ANOP @11 02866000
L II@PRL,XR2 RESTORE PARM LIST POINTER 02870000
B CC4TT BRANCH TO TRACE ROUTINE 02880000
DC AL1(TTII) TRACE FOR $CC4II 02890000
SPACE 1 02900000
CLI PLOPC(,XR2),OPWAIT IS OP WAIT REQUEST 02910000
JNE IICKNM JUMP IF NOT WAIT REQUEST 02920000
SPACE 1 02923000
*********************************************************************** 02926000
* HAVE WAIT OPERATION. * 02929000
* WAIT DATA AREA MUST BE AT LEAST 10 BYTES LONG. * 02932000
* BUILD WAIT IOB IN USERS RECORD AREA THEN ISSUE SVC. * 02935000
*********************************************************************** 02938000
SPACE 1 02941000
CLC PLOUTL(2,XR2),IILN10 WAIT DATA AREA 10 BYTES LONG 02950000
JNL IIWAT1 JUMP TO ISSUE WAIT 02960000
* ERROR - WAIT OPERATION DATA LENGTH IS TOO SHORT 02970000
B C4TI2 BRANCH TO TERMINATION 02980000
DC AL1(TCCWAT) INVALID WAIT DATA LENGTH 02990000
SPACE 1 02995000
IIWAT1 EQU * 03000000
L PLRECA(,XR2),XR2 LOAD WAIT DATA AREA POINTER @12 03010000
LA IISTNL(,XR2),XR2 BUMP POINTER TO TIMER IOB. @12 03020000
MVI IIZERO(,XR2),IITIMR+IITMWT SET TIMER IOB TO WAIT ON HHMMSS 03030000
MVI IIWFLG(,XR2),IIZERO INITIALIZE THE WAIT FLAG 03050000
CCP ENABLE,PMRQ ENABLE ALL INTERRUPTS 03060000
SVC 0 SUPERVISOR CALL 03070000
DC XL1'15' RIB FOR TIMER WAIT 03080000
B IITEND BR TO RETURN TO USER 03090000
SPACE 3 @11 03095000
*********************************************************************** 03096000
* SYMBOLIC TERMINAL NAME FOUND. TEST IF BLANK STN. * 03097000
*********************************************************************** 03098000
SPACE 1 03099000
IICKNM EQU * 03100000
L PLRECA(,XR2),XR2 RESTORE RECORD AREA POINTER 03120000
AIF (&MTNT NE '1').NTN2D .SKIP IF TNT REMAP NOT SUPP @11 03124000
B IIMTNT MAP THE TNT MOVEOUT AREA. @21 03128000
MVC IITNTX+TNTLN-1(TNTLN),TNTLN-1(,XR1) SAVE TNT FOUND. @11 03132000
.NTN2D ANOP @11 03136000
TBN TNTFLG(,XR1),TNTBLK IS STN ALL BLANKS? 03140000
JF IINBLK JUMP IF NOT. 03150000
EJECT 03156000
SPACE 03160000
*********************************************************************** 03165000
* HAVE SYMBOLIC TERMINAL NAME OF ALL BLANKS. * 03170000
* THUS THE TERMINAL TO WHICH THE OPERATION IS DIRECTED IS * 03190000
* THE ONE AND ONLY REQUESTOR OF A SINGLE REQUESTOR PROGRAM. * 03200000
* DETERMINE IF OPERATION IS VALID FOR STN OF ALL BLANKS. * 03220000
*********************************************************************** 03225000
SPACE 03230000
IIBLK EQU * BLANK TERMINAL NAME GIVEN. 03235000
TBN IIVBYT,IIVBLK IS IT VALID OP FOR STN-BLANKS 03240000
JT IICKBK JUMP IF VALID OP 03250000
SPACE 03260000
* HAVE ERROR** INVALID OPERATION FOR STN OF BLANKS 03270000
B C4TI2 BRANCH TO TERMINATION 03290000
DC AL1(TCCIBL) INVALID BLANK NAME 03300000
SPACE 03313000
* FIRST CHECK TO SEE IF PROGRAM IS NON-MRTS PROGRAM 03316000
IICKBK EQU * CHECK VALIDITY OF BLANK NAME 03320000
L NCTCB@,XR1 POINT TO USER'S TCB 03360000
TBF TCBDMG(,XR1),TCBMTS IS IT NON-MRTS PROGRAM? 03370000
JT IISR JUMP IF NON-MRTS PROGRAM 03380000
SPACE 03390000
* HAVE USE OF BLANK NAME FOR MRTS PROGRAM 03400000
B C4TI2 BRANCH TO TERMINATION 03420000
DC AL1(TCCMBL) BLANK NAME FOR MRTS PROGRAM 03430000
SPACE 03440000
IISR EQU * 03450000
TBN TCBDMG(,XR1),TCBKRQ IS THIS A CONSOLE REQUESTOR TASK 03460000
JF IINKRQ BRANCH IF NOT 03470000
L @KNTUB,XR1 LOAD POINTER TO CONSOLE TUB 03480000
J IIKRQ BRANCH TO MOVE IN NAME 03490000
SPACE 1 03495000
IINKRQ EQU * 03500000
CLI TCBTUB-1(,XR1),NOBIT IS TUB POINTER NULL 03510000
L TCBTUB(,XR1),XR1 POINT XR1 AT REQUESTOR TUB 03520000
TBN TUBAT1(,XR1),TUBREQ IS TUB REQUESTING TERMINAL 03530000
JC IIRBL,ANY+FALSE+EQ JUMP IF NULL TUB POINTER OR 03540000
* TUB IS NOT REQUESTING 03550000
* BLANK NAME COMPLETELY VALID 03570000
IIKRQ EQU * 03590000
L TUBTNT(,XR1),XR1 POINT XR1 AT THIS TUBS TNT ENTRY 03600000
AIF (&MTNT EQ '1').ATNT3 .SKIP IF TNT REMAP IS SUPP @11 03605000
MVC IISTNL-1(IISTNL,XR2),TNTNAM(,XR1) MOVE STN TO RECORD AREA 03610000
AGO .NTNT3 @11 03611000
.ATNT3 ANOP @11 03612000
MVC IITNTX+TNTLN-1(TNTLN),TNTLN-1(,XR1) SAVE TNT FOUND. @11 03613000
B IIUTNT . UNMAP TNT MOVEOUT AREA. @11 03614000
MVC IISTNL-1(IISTNL,XR2),IITNAM MOVE STN TO RECORD AREA @11 03615000
B IIMTNT . REMAP TNT MOVEOUT AREA. @11 03616000
.NTNT3 ANOP @11 03617000
J IINBLK JUMP TO HANDLE FURTHER 03620000
SPACE 03630000
* ERROR - BLANK NAME TO NON-MRTS WITH REQUESTOR RELEASED ALREADY 03640000
IIRBL EQU * 03660000
B C4TI2 BRANCH TO TERMINATION 03670000
DC AL1(TCCRBL) BLANK NAME WITH REQUESTOR REL. 03680000
EJECT 03690000
*********************************************************************** 03700000
* HAVE REQUEST TO A SPECIFIC TUB AT THIS POINT. * 03710000
* ASSURE THAT THIS TNT HAS BEEN ASSIGNED TO A TUB. * 03713000
* REGISTER XR1 POINTS TO TNT ENTRY. * 03716000
*********************************************************************** 03720000
SPACE 03730000
IINBLK EQU * HAVE TERMINAL REQUEWT TO HANDLE 03770000
CLI TNTTUB-1(,XR1),NOBIT IS TNTTUB POINTER NULL 03780000
JNE IINNUL JUMP IF POINTER NOT NULL 03790000
SPACE 03800000
* ERROR - TNT NOT ASSIGNED TO A TUB. 03810000
B C4TI2 BRANCH TO TERMINATION 03830000
DC AL1(TCCNAT) TNT NOT ASSIGNED TO TUB 03840000
SPACE 03850000
IINNUL EQU * HAVE VALID TNT TUB POINTER 03860000
AIF (&MTNT NE '1').NTNT4 .SKIP IF TNT REMAP NOT SUPP @11 03862000
B IIUTNT UNMAP THE TNT MOVEOUT AREA. @11 03864000
.NTNT4 ANOP @11 03866000
L II@PRL,XR2 POINT XR2 AT PARM LIST 03870000
SPACE 03875000
.* 03880000
AIF (&N1050).NML1 . SKIP IF *NO* 1050 03890000
.* 03900000
*********************************************************************** 03910000
* FOR 1050 ONLY * 03920000
*********************************************************************** 03930000
SPACE 03940000
* DETERMINE IF THIS IS SUB-TERMINAL NAME 03950000
AIF (&MTNT NE '1').NTN4A .SKIP IF TNT REMAP NOT SUPP @11 03954000
MVC PL$MCT(1,XR2),IITNTX+TNTMCT MOVE MCT IND. TO P-LIST. @11 03958000
AGO .ATN4A @11 03962000
.NTN4A ANOP @11 03966000
MVC PL$MCT(1,XR2),TNTMCT(,XR1) MOVE MCT INDICES TO PL. @11 03970000
.ATN4A ANOP @11 03975000
CLI PL$MCT(,XR2),NOBIT IS THIS SUB-TERMINAL NAME @11 03980000
JE IISTNT JUMP IF NOT SUB-TERMINAL NAME 03990000
SPACE 04000000
* HAVE SUB-TERMINAL NAME SO MUST GET ADDRESS OF 04010000
* MASTER TNT FROM TNTTNT FIELD. 04020000
AIF (&MTNT NE '1').NTN4B .SKIP IF TNT REMAP NOT SUPP @11 04025000
B IIMTNT MAP TNT MOVE OUT AREA. @11 04030000
.NTN4B ANOP @11 04035000
L TNTTNT(,XR1),XR1 POINT XR1 AT MASTER TNT 04040000
AIF (&MTNT NE '1').NTN4C .SKIP IF TNT REMAP NOT SUPP @11 04042000
MVC IITNTX+TNTLN-1(TNTLN),TNTLN-1(,XR1) SAVE TNT FOUND. @11 04044000
B IIUTNT UNMAP TNT MOVE OUT AREA. @11 04046000
.NTN4C ANOP @11 04048000
SPACE 04050000
.NML1 ANOP 04060000
ENTRY IISTNT 04070000
IISTNT EQU * SAVE TNT ADDR 04080000
ST IIVTNT,XR1 SAVE TNT ENTRY ADDRESS 04100000
AIF (&MTNT NE '1').NTN4D .SKIP IF TNT REMAP NOT SUPP @11 04102000
MVC PLTUBA(2,XR2),IITNTX+TNTTUB MOVE TUB @ TO PLIST. @11 04104000
AGO .ATN4D @11 04106000
.NTN4D ANOP @11 04108000
MVC PLTUBA(2,XR2),TNTTUB(,XR1) .MOVE TUB @ TO PARM LIST @11 04110000
.ATN4D ANOP @11 04111000
SPACE 3 04113000
*********************************************************************** 04113400
* CHECK REQUEST TYPE - DETERMINE IF IT IS STATUS REQUEST. * 04113800
* STATUS OPERATION.... RELEASE, ACQUIRE, GET TERMINAL * 04114200
* ATTRIBUTES OR TASK CHAINING. * 04114600
*********************************************************************** 04115000
SPACE 1 04115400
IIGTA EQU * ADD STN LENGTH TO BUMP RECORD 04116000
ALC PLRECA(2,XR2),CC0006 ADDRESS TO DATA ADDRESS. 04120000
TBN PLOPC(,XR2),OPSTAT IS IT STATUS OPERATION 04180000
JF IITKNS JUMP IF NOT NOT STATUS OPERATION 04190000
SPACE 1 04210000
ST PL$TNT(,XR2),XR1 PLUG TNT ADDR INTO PARM LIST 04230000
AIF (&PORT).NSIO4 SKIP IF PORTS NOT SUPPORTED @21 04230600
CLI PLOPC(,XR2),OPPCR TEST IF PORT COMMAND REQUEST.@08 04231200
JNE IICTSK SKIP IF NOT COMMAND REQUEST. @08 04231800
L PLTUBA(,XR2),XR1 POINT TO PORT TUB. @11 04232400
CLI TUBPHY(,XR1),TUBAPT TEST IF COMMAND REQUEST PORT.@08 04233000
L PL$TNT(,XR2),XR1 RESTORE XR1 TO TNT ENTRY. @08 04233600
SLC PL$TNT(2,XR2),PL$TNT(,XR2) ZERO THE TNT FIELD IN PL @08 04233900
JE IITKNS SKIP TRANSIENT CALL IF TRUE. @08 04234200
SPACE 1 @08 04234800
* ERROR - PORT COMMAND REQUEST ISSUED TO NON-COMMAND PORT. @21 04235400
B C4TI2 CALL ERROR ROUTINE WITH @08 04236000
DC AL1(TCCPNC) PCR ISSUED TO NON-CMD PORT. @08 04236600
.NSIO4 ANOP 04237200
SPACE 1 04237800
IICTSK EQU * . @11 04238400
B CC4PI BRANCH TO BRING IN TRANSIENT @11 04240000
DC AL1(CC4GA) GET ATTRIBUTES TRANSIENT ID 04250000
SPACE 1 04260000
CCP DISABL,PMRQ STOP INTERRUPTS 04310000
SPACE 3 04316100
*********************************************************************** 04316200
* BAD TCB COMPLETION CODE * 04316300
*********************************************************************** 04316400
SPACE 1 04316500
L NCTCB@,XR1 POINT XR1 AT CURRENT TCB 04316600
CLI TCBCMP(,XR1),NOBIT IS TCB COMPLETION CODE ZERO 04316700
JZ IINCMP JUMP IF ZERO (OKAY) @08 04316800
SPACE 1 @08 04316900
ENTRY IIBTCB * @08 04317000
IIBTCB EQU * MOVE TCB COMP CODE SUCH @08 04317100
MVC IITCMP(1),TCBCMP(,XR1) THAT THE ARR POINTS TO IT. @08 04317200
B C4TI2 BRANCH TO TERMINATE THIS TASK@08 04317300
IITCMP DS CL1 TCB COMPLETION CODE @08 04317400
IINCMP EQU * * @08 04317500
SPACE 3 @08 04318000
*********************************************************************** 04318200
* IF CHAIN TASK REQUEST GO STRAIGHT TO EXIT * 04318400
*********************************************************************** 04318600
SPACE 1 04318800
L PLTUBA(,XR2),XR1 POINT TO POSSIBLE DUMMY TUB. @08 04319000
CLI PLOPC(,XR2),OPTCHN THIS A CHAIN TASK REQUEST? @08 04319200
BE IITEND YES SKIP SET-UP AND EXIT. @08 04319400
.* 04380000
AIF (&NDF).NMAP1 . SKIP IF *NO* DFF SUPPORT @08 04390000
.* 04400000
SPACE 3 04410000
*********************************************************************** 04430000
* CHECK FOR MAPPING IF GOOD COMPLETION CODE * 04440000
*********************************************************************** 04450000
SPACE 1 04460000
TBF PLRTC(,XR2),ALLBIT WAS RETURN CODE GOOD AND @13 04465000
TBN PLOPC(,XR2),OPREL IS THIS A RELEASE REQUEST? @13 04470000
BT IIMAPP BRANCH TO MAPPING IF TRUE @13 04480000
.NMAP1 ANOP @08 04485000
B IISEND 04490000
EJECT 04493000
SPACE 1 04496000
*********************************************************************** 04640000
* DETERMINE IF THIS TUB IS THE CONSOLE * 04650000
*********************************************************************** 04660000
SPACE 04670000
IITKNS EQU * TEST FOR CONSOLE TUB 04680000
AIF (&MTNT NE '1').NTNT5 .SKIP IF TNT REMAP NOT SUPP @11 04681000
TBN IITNTX+TNTFLG,TNTKNS TEST IS THIS THE CONSOLE? @11 04682000
L IITNTX+TNTTUB,XR1 .ADDRESS THE TEMINALS TUB. @11 04683000
AGO .ATNT5 @11 04684000
.NTNT5 ANOP @11 04685000
TBN TNTFLG(,XR1),TNTKNS TEST IS THIS THE CONSOLE TNT?@11 04690000
L TNTTUB(,XR1),XR1 ADDRESS THE TEMINALS TUB. @11 04700000
.ATNT5 ANOP @11 04705000
JT IIKNSL JUMP IF CONSOLE. 04710000
SPACE 04720000
*********************************************************************** 04750000
* HAVE REQUEST TO TERMINAL - VALIDATE IT * 04755000
* PREPARE FOR PHYSICAL TP IO - MUST VALIDATE REQUEST FIRST * 04760000
* VALIDATE THAT THIS TUB BEONGS TO TCB REQUESTING IT * 04765000
*********************************************************************** 04770000
SPACE 04780000
CLC TUBTCB(2,XR1),NCTCB@ DOES CURRENT TCB = TUBTCB? 04810000
TBF TUBAT3(,XR1),TUBALC IS TUB PHYSICALLY ALLOCATED ? 04820000
JC IIPHYS,NONE+FALSE+HI+LO JUMP IF OKAY 04830000
SPACE 04840000
* CURRRENT TCB DOES NOT MATCH TUB TCB SO PROGRAM ERROR 04850000
* TERMINAL NOT ALLOCATED TO THIS PROGRAM 04860000
B C4TI2 BRANCH TO TERMINATION 04880000
DC AL1(TCCNAP) TERMINAL NOT ALLOCATED TO PROG 04890000
SPACE 04895000
IIPHYS EQU * 04900000
TBN TUBAT1(,XR1),TUBONL IS TUB ONLINE? 04910000
JT IITCBK BRANCH IF YES 04920000
MVI PLRTC(,XR2),RCXOFF SET COMPLETION CODE TO OFFLINE 04930000
B IIREND BRANCH TO RETURN 04940000
SPACE 04950000
IITCBK EQU * CHECK THAT TUB POINTS TO 04960000
CLC TUBTNT(2,XR1),IIVTNT CORRECT TNT ENTRY? 04980000
JE IITNTK JUMP IF YES 04990000
SPACE 05000000
* ERROR TNT POINTS TO TUB BUT TUB DOES NOT POINT TO TNT 05010000
* TERMIANL NOT REFERECNED BY NAME BY WHICH IT WAS ALLOCATED 05020000
B C4TI2 BRANCH TO TERMINATION 05040000
DC AL1(TCCNAN) NOT ALLOCATED BY THIS NAME 05050000
EJECT 05060000
SPACE 05063000
*********************************************************************** 05066000
* ASSURE TERMINAL DOES NOT HAVE OUTSTANDING IMPLICIT INVITE INPUT * 05070000
* ONLY ACCEPT INPUT CAN BE ISSUED TO TERMINAL WITH IMPLICIT INVITE * 05080000
* INPUT WHICH HAS NOT BEEN SATISFIED. * 05090000
*********************************************************************** 05095000
SPACE 05100000
IITNTK EQU * 05110000
TBN TUBAT2(,XR1),TUBIMI IS IMPLICIT INVITE UNSATISFIED 05120000
JF IICKIS JUMP IF NO IMPLICIT INVITE INPUT 05130000
SPACE 05140000
* ERROR - HAVE NON ACCEPT INPUT REQUEST TO TUB WITH IMPLICIT INVITE 05150000
* INPUT UNSATISFIED. DATA FROM PROGRAM REQUEST OUTSTANDING. 05160000
B C4TI2 BRANCH TO TERMINATION 05190000
DC AL1(TCCIMO) IMPLICIT INVITE OUTSTANDING 05200000
SPACE 05210000
* DETERMINE IF INVITE INPUT IS OUTSTANIDNG TO THIS TERMINAL 05220000
* ERROR IF SO UNLESS THIS IS STOP INVITE INPUT 05230000
SPACE 05240000
IICKIS EQU * CHECK FOR OUTSTANDING INVITES. 05250000
TBN TUBAT2(,XR1),TUBDTA+TUBCMD IS TUB IN COMMAND INTERRUPT 05300000
JT IIVSCH MODE? JUMP INVITE SCHEDULED. 05310000
TBN TUBAT2(,XR1),TUBIIS IS INVITE INPUT SCHEDULED ON 05320000
JF IINIIS TUB? NO THEN SKIP BELOW. 05330000
SPACE 05340000
* HAVE INVITE INPUT SCHEDULED - THIS OP IS VALID 05360000
* ONLY IF IT IS A STOP INVITE INPUT. 05370000
IIVSCH EQU * INVITE INPUT SCHEDULED 05390000
TBN PLOPM(,XR2),OPSTOP IS THIS STOP INVITE INPUT 05400000
JT IIIOCP JUMP IF STOP SINCE OPERATION OK 05410000
SPACE 05420000
* ERROR - INVALID OPERATION WITH INVITE INPUT OUTSTANDING. 05430000
B C4TI2 BRANCH TO TERMINATION 05450000
DC AL1(TCCIIO) INVITE INPUT OUTSTANDING 05460000
SPACE 05470000
* NO INVITE SCHEDULED SO THIS MUST NOT BE A STOP INVITE INPUT 05480000
IINIIS EQU * NO INVITE SCHEDULED 05500000
TBN PLOPM(,XR2),OPSTOP IS THIS STOP INVITE INPUT 05510000
JF IIIOCP JUMP IF NOT STOP INVITE 05520000
SPACE 05530000
* ERROR - HAVE STOP INVITE WITH NO INVITE OUTSTANDING. 05540000
B C4TI2 BRANCH TO TERMINATION 05560000
DC AL1(TCCNIO) NO INVITES OUTSTANDING 05570000
EJECT 05580000
SPACE 05581000
*********************************************************************** 05582000
* TEST TERMINAL CHARACTERISTICS VS REQUESTED IO. * 05583000
*********************************************************************** 05584000
SPACE 05585000
IIIOCP EQU * CHECK FOR PROPER IO CAPABILITY 05590000
MNN IIIOTS+1,PLOPC(,XR2) MOVE RIGHTMOST 4 BITS OF OP CODE 05610000
SBF IIIOTS+1,X'FC' SET OFF ALL BUT RIGHTMOST 2 BITS 05630000
SPACE 05640000
IIIOTS TBN TUBCHR(,XR1),*-* TEST TUB FOR PROPER I/O. 05670000
JT IIRQTY JUMP IF I/O OKAY 05680000
SPACE 05690000
*I/O CAPABILTY DOES NOT MATCH REQUEST 05700000
B C4TI2 BRANCH TO TERMINATION 05720000
DC AL1(TCCIOC) I/O CAPABILITY DOES NOT MATCH 05730000
SPACE 3 05742000
*********************************************************************** 05744000
* CONSOLE IS USED AS THE TERMINAL. * 05746000
* CHECK THAT OP CODE IS VALID FOR CONSOLE AS TERMINAL NAME * 05748000
* DETERMINE REQUEST TYPE. VALIDATE OP CODE AND MODIFIER TO EXTENT * 05750000
* THAT THOSE BITS MUST BE OFF FOR A USER REQUEST ARE OFF. * 05760000
*********************************************************************** 05765000
SPACE 05800000
IIKNSL EQU * CONSOLE REQUEST HANDLER 05810000
TBN IIVBYT,IIVKNS IS OP VALID FOR CONSOLE 05820000
CLI PLOPC(,XR2),OPPUT+OPRUF AND NOT A RUF PUT MESSAGE ? 05840000
JC IIKLEN,TANDNE JUMP IF VALID 05850000
SPACE 05870000
* ERROR - HAVE OP CODE WHICH IS VALID OP BUT NOT FOR CONSOLE 05880000
B C4TI2 BRANCH TO TERMINATION 05900000
DC AL1(TCCIOK) INVALID OP FOR CONSOLE 05910000
SPACE 05930000
* CHECK FOR OUTPUT LENGTH TO CONSOLE TOO LARGE 05940000
IIKLEN EQU * TEST CONSOLE LENGTH FOR > 71/107 05960000
TBN PLOPC(,XR2),OPPUT IS THIS AN OUTPUT OPERATION? 05970000
CLC PLOUTL(2,XR2),IIMAXK LENGTH GREATER THAN 71? 05990000
JC IIRQTY,ANY+FALSE+NHIGH BRANCH IF NOT 06000000
TBN PLOPC(,XR2),OPGET IS THIS A WTOR? 06010000
JT IITOLG BRANCH TO ERROR IF YES 06020000
CLC PLOUTL(2,XR2),IIMAXC IS LENGTH GREATER THAN 107? 06030000
JNH IIRQTY BRANCH OUT IF NOT 06040000
SPACE 06045000
IITOLG EQU * 06050000
* ERROR - OUTPUT LENGTH TO CONSOLE GREATER THAN 71 FOR 06070000
* WTOR OR IS GREATER THAN 117 FOR WTO. 06080000
B C4TI2 BRANCH TO TERMINATION 06100000
DC AL1(TCCIKL) INVALID CONSOLE LENGTH 06110000
EJECT 06120000
********************************************************************** 06122000
* CONTINUE TO VALIDATE PARM LIST. * 06124000
********************************************************************** 06126000
SPACE 1 06128000
IIRQTY EQU * CHECK OP MOD BITS TO ASSURE 06130000
TBF PLOPM(,XR2),OP$SYS+OPOLT+OPDISC VALIDITY SET. @21 06140000
JT IIVLNO JUMP IF OKAY 06160000
SPACE 06170000
* ERROR - OP MODIFER HAS INVALID BITS FOR USER REQUEST 06180000
B C4TI2 BRANCH TO TERMINATION 06200000
DC AL1(TCCIOP) INVALID OP OR MODIFIER 06210000
SPACE 06220000
* VALIDATE RECORD LENGTHS PASSED IN THE PARM LIST FROM THE USER 06230000
IIVLNO EQU * VALIDATE OUTPUT LENGTH 06250000
.* 06270000
AIF (&N1050).NML2 . SKIP IF *NO* 1050 SUPPORT 06280000
.* 06290000
B IIMCT BRN TO SEE IF MCT AND VALID 06300000
SPACE 1 06320000
.NML2 ANOP 06325000
IIVLNN EQU * 06330000
ENTRY IIVLNN 06340000
TBN PLOPC(,XR2),OPPUT DOES OP INVOLVE OUTPUT 06350000
JF IIVLNI JUMP IF NO OUTPUT 06360000
SPACE 06370000
* CHECK OUTPUT LENGTH FOR GREATER THAN ZERO 06380000
CLC PLOUTL(2,XR2),X$0000 COMPARE LENGTH VS ZERO 06400000
JH IIFUTH JUMP IF GREATER THAN ZERO 06410000
TBN TUBAT1(,XR1),TUBKNM IS THIS THE CONSOLE? 06420000
JT IIIOL YES. THEN ERROR. 06430000
SPACE 06440000
.* 06450000
AIF (&NOM).NYET . SKIP IF *NO* MLTA SUPPORT 06460000
.* 06470000
* ZERO LENGTH IS OK IF THIS IS MLTA PUT EOT/EOB 06480000
TBF TUBCHR(,XR1),TUBLNE IS THIS AN MLTA REEQUEST? 06500000
TBN PLOPC(,XR2),OPBLK IS IT PUT EOT/EOB? 06510000
BT IIREND BRNACH IF YES TO RETURN 06520000
SPACE 06530000
.NYET ANOP 06540000
.* 06550000
AIF (&NBS).NBSC1 . SKIP IF NO BSC OR TASK-TASK@21 06560000
.* 06570000
* ZERO LENGTH IS OK IF THIS IS PUT-EOT/EOB AND HE OWNS THE BSCA LINE 06580000
IIVLNP EQU * 06600000
ENTRY IIVLNP 06610000
TBN PLOPC(,XR2),OPBLK IS THIS PUT EOT/EOB? 06620000
TBN TUBAT2(,XR1),TUBOWN DOES HE OWN THE BSCA LINE? 06630000
JT IIVLNI BRANCH PAST ERROR IF YES 06640000
SPACE 06650000
.* 06660000
AIF (&NDF).BEEP . SKIP IF *NO* DFF SUPPORT 06670000
.* 06680000
TBN PLOPC(,XR2),OPEAU IS THIS AN ERASE OPERATION? 06690000
TBF PLOPC(,XR2),OPRUF-OPEAU AND NOT A RUF PUT ? 06710000
JT IIVLNI BRANCH IF YES - LENGTH OK 06720000
SPACE 06730000
.BEEP ANOP 06740000
.NBSC1 ANOP 06750000
* ERROR HAVE OUTPUT LENGTH NOT GREATER THAN ZERO 06760000
IIIOL EQU * 06780000
ENTRY IIIOL 06790000
B C4TI2 BRANCH TO TERMINATION 06800000
DC AL1(TCCIOL) INVALID OUTPUT LENGTH 06810000
EJECT 06820000
SPACE 1 06830000
********************************************************************** 06835000
* CHECK FOR OUTPUT LENGTH GREATER THAN TP BUFFER LENGTH * 06840000
********************************************************************** 06845000
SPACE 06850000
IIFUTH EQU * 06860000
AIF (&NBS).NBTH . SKIP IF NO BSC OR TASK-TASK@21 06870000
TBN TUBTA2(,XR1),TASITB IS THIS PUT WITH ITB? 06880000
CLC PLOUTL(2,XR2),TUBRCL(,XR1) OUTPUT LENGTH < RECORD LENGTH? 06900000
JC IINITB,ANY+FALSE+NLOW BRANCH PAST TERMINATION IF NOT 06910000
SPACE 06920000
* ERROR - OUTPUT LENGTH LESS THAT RECORD LENGTH FOR PUT ITB 06930000
B C4TI2 BRANCH TO TERMINATION 06950000
DC AL1(TCCITB) 06960000
SPACE 06965000
IINITB EQU * 06970000
AIF (&PORT).NSIO5 . SKIP IF NO PORTS SUPPORTED @21 06982000
TBN TUBPHY(,XR1),TUBAPT PORT TUB? @21 06984000
JT IIVLNI YES-BRANCH OUT @21 06985000
.NSIO5 ANOP @08 06986000
TBF TUBTA1(,XR1),TASDFF AND NOT MAPPING? 06990000
TBN TUBCHR(,XR1),TUBLNE BSCA? 07000000
JF IIVLNI BRANCH OUT IF NOT ALL 07010000
* BSC, NON DFF, AND NOT A PORT @21 07012000
MVC TUBPIL(2,XR1),#RUFCL MOVE NON-DFF PRUF INPUT LNG. @09 07015000
MVC IIWORK,PLOUTL(2,XR2) MOVE LENGTH TO WORK AREA 07020000
TBN PLOPC(,XR2),OPNOW IS THIS A PUT-NO-WAIT? 07030000
JF IILTER BRANCH OUT IF NOT 07040000
ALC IIWORK(2),II19 ADD LENGTH OF PARAMETER LIST 07050000
IILTER EQU * 07060000
CLC IIWORK(2),#TPPUT IS OUTPUT LENGTH GREATER? 07080000
JNH IIVLNI BRANCH PAST TERMINATION IF NOT 07100000
SPACE 07110000
* ERROR - OUTPUT LENGTH IS GREATER THAN TP BUFFER LENGTH 07120000
B C4TI2 BRNACH TO TERMINATION 07140000
DC AL1(TCCLRG) 07150000
EJECT 07160000
.NBTH ANOP 07200000
SPACE 07201000
********************************************************************** 07202000
* CHECK INPUT LENGTH FOR GREATER THAN ZERO IF APPROPRIATE * 07203000
********************************************************************** 07204000
SPACE 07205000
IIVLNI EQU * 07210000
ENTRY IIVLNI CHECK INPUT LENGTH IF NECESSARY 07220000
TBN PLOPC(,XR2),OPGET DOES OP INVOLVE GET 07230000
JF IIIREQ JUMP IF NOT 07240000
SPACE 07250000
IISETS EQU * CHECK INPUT LENGTH 07260000
CLC PLINL(2,XR2),X$0000 COMPARE INPUT LENGTH VS ZERO 07280000
JH II#TPB JUMP IF GREATER THAN ZERO 07290000
SPACE 07300000
*ERROR - INPUT LENGTH NOT GREATER THAN ZERO 07310000
B C4TI2 BRANCH TO TERMINATION 07330000
DC AL1(TCCIIL) INVALID INPUT LENGTH 07340000
EJECT 07350000
II#TPB EQU * IF INVITE-CHECK INPUT LENGTH VS 07360000
.* 07370000
AIF (&NBS).NBS3 . SKIP IF NO BSC OR TASK-TASK@21 07380000
.* 07390000
*********************************************************************** 07400000
* IF BSCA TERMINAL - CHECK IF RECORD AREA LARGE ENOUGN IF ITB * 07410000
*********************************************************************** 07420000
SPACE 07430000
TBN TUBCHR(,XR1),TUBLNE IS THIS A BSCA LINE? 07440000
TBN TUBTA2(,XR1),TASITB IS ITB SPECIFIED? 07450000
CLC PLINL(2,XR2),TUBRCL(,XR1) IS RECORD AREA LARGE ENOUGH? 07470000
JC IIINRT,ANY+FALSE+NLOW BRANCH OUT IF YES 07480000
SPACE 07490000
* ERROR - RECORD AREA NOT LARGE ENOUGH FOR BSCA ITB 07500000
B C4TI2 BRANCH TO TERMINATION 07520000
DC AL1(TCCITB) RECORD AREA TOO SMALL FOR ITB 07530000
SPACE 07540000
* CHECK FOR DATA PENDING ON A BSCA LINE 07550000
SPACE 07560000
.NBS3 ANOP 07570000
ENTRY IIINRT 07580000
IIINRT EQU * 07590000
TBN PLOPC(,XR2),OPINV DOES OP INVOLVE INVITE INPUT 07600000
JF IIOUTR JUMP IF NOT INVITE INPUT 07610000
.* 07620000
AIF (&NBS).NBS31 . SKIP IF NO BSC OR TASK-TASK@21 07630000
.* 07640000
SPACE 07650000
* CHECK FOR DATA PENDING ON THE BSCA LINE 07660000
SPACE 07670000
TBN TUBAT2(,XR1),TUBOWN DOES HE OWN A BSCA LINE? 07680000
L TUBLCB(,XR1),XR1 POINT TO HIS DTF 07690000
TBN IIBOPC(,XR1),IIBPUT WAS LAST OPERATION A PUT? @14 07700000
TBN LCBAT1(,XR1),LCBNTQ WAS LAST OPERATION PUT-MESSAGE? 07710000
JF IINDPD BRANCH IF NEITHER - INVITE OK 07720000
MVI PLRTC(,XR2),RCXDPD SET DATA PENDING RETURN CODE 07730000
B IIREND GO RETURN TO USER 07740000
.* 07750000
.NBS31 ANOP 07760000
.* 07770000
ENTRY IINDPD 07780000
IINDPD EQU * 07790000
SPACE 07800000
* HAVE INVITE INPUT SO INPUT LENGTH MUST NOT BE LARGER THAN THE 07810000
* SIZE FOR THE ENTIRE TP BUFFER 07820000
SPACE 07830000
L NCTCB@,XR1 POINT XR1 AT CURRENT TCB 07840000
ALC TCBIIC(1,XR1),X$0001 ADD 1 TO TCB INVITE INPUT COUNT 07850000
L PLTUBA(,XR2),XR1 --> TUB @19 07857000
TBN TUBTA1(,XR1),TASDFF TUB SUPPORT DFF? @19 07864000
JT IIIREQ YES-SKIP LENGTH CHECK @19 07871000
CLC PLINL(2,XR2),#TPANY COMPARE INPUT LENGTH VS TP BUFF 07880000
JNH IIIREQ JUMP IF INPUT LENGTH NOT HIGH 07900000
SPACE 07910000
* ERROR - FOR INVITE INPUT - THE INPUT LENGTH IS GT TP BUFFER SIZE 07920000
B C4TI2 BRANCH TO TERMINATION 07940000
DC AL1(TCCTPB) TP BUFFER LENGTH PROBLEM 07950000
EJECT 07960000
SPACE 5 07970000
IIOUTR EQU * 07973000
SPACE 07976000
*********************************************************************** 07980000
* DETERMINE WHETHER TUB IS CONSOLE OR NOT. IF NOT, POST CM/CS AND @21 07990000
* ISSUE WAIT. FOR CONSOLE REQUEST, ISSUE WTO/WTOR. @21 08000000
*********************************************************************** 08010000
SPACE 08040000
ENTRY IIIREQ 08050000
IIIREQ EQU * I/O INTERFACE REQUEST 08060000
* DETERMINE IF REQUEST IS FOR CONSOLE OR $CC4CM 08080000
L PLTUBA(,XR2),XR1 POINT XR1 AT TUB 08100000
TBF TUBAT1(,XR1),TUBKNM IS THIS CONSOLE TUB? 08110000
.* 08120000
AIF (&DFF).NM2RT SKIP IF MAPPING @10 08130000
AIF (&NPBY).NBSY1 SKIP IF NOT BUSY PRINTER @10 08132000
JT IIBUSY NOT CONSOLE, TEST BUSY PRNT. @10 08134000
AGO .NM2RT @1O 08136000
.NBSY1 ANOP @10 08138000
JT IIUPST NOT CONSOLE, GO TO POST 08140000
.NM2RT ANOP . @1O 08153000
AIF (&NDF).SK1RT . SKIP IF NOT MAPPING @1O 08156000
JT IICKMP NOT CONSOLE, CHECK FOR MAPPIN 08160000
.SK1RT ANOP SET UP CONSOLE STUFF 08170000
EJECT 08180000
SPACE 2 08190000
*********************************************************************** 08200000
*** HAVE A CONSOLE REQUEST - ISSUE THE WTO OR WTOR AS APPROPRIATE *** 08210000
*********************************************************************** 08220000
SPACE 3 08230000
* FIRST MUST BUILD A CONSOLE PARAMETER LIST IN THE TCB 08240000
SPACE 08250000
L NCTCB@,XR2 POINT TO THE TCB 08260000
LA TCBPL(,XR2),XR2 POINT XR2 AT PARM LIST AREA 08270000
MVC $LGO@@(15,XR2),IICNPM MOVE PARM LIST TO THE ECB 08280000
L II@PRL,XR1 POINT XR1 AT PARAMETER LIST 08290000
SPACE 08300000
* NOW FILL IN THE NECESSARY LENGTHS AND ADDRESSES IN PARM LIST 08310000
SPACE 08320000
TBN PLOPC(,XR1),OPGET IS THIS A WTOR? @15 08320900
JF IINWTR SKIP IF NOT. @15 08321800
MVI $LGOTY(,XR2),IIWTOR INDICATE WTOR MODE. @15 08322700
CLI PLOUTL(,XR1),36 IF THE PUT LENGTH IS LESS @15 08323600
JL IIMX80 THAN 36 THEN MAX INPUT 80, @15 08324500
IIMX40 MVI $LGON(,XR2),40 ELSE THE MAX INPUT IS 40. @15 08325400
IIMX80 CLC $LGON(,XR2),PLINL(2,XR1) TEST IF PLINL LESS THAN @15 08326300
JNH IINWTR MAX INPUT? IF IT IT THE @15 08327200
MVC $LGON(,XR2),PLINL(1,XR1) SET INPUT ON WTOR TO PLINL. @15 08328100
SPACE 1 @15 08329000
IINWTR MVC $LGOL(1,XR2),PLOUTL(,XR1) .MOVE IN OUTPUT LENGTH @15 08330000
MVC $LGOAA(2,XR2),PLRECA(,XR1) MOVE IN RECORD AREA ADDRESS 08340000
MVC $LGO@@(2,XR2),PLRECA(,XR1) MOVE IN RECORD AREA ADDRESS 08360000
SPACE 08410000
* PARAMETER LIST IS NOW BUILT - ISSUE SVC TO DO WTO OR WTOR 08420000
SPACE 08430000
IIDOIT EQU * 08440000
CCP ENABLE,PMRQ ENABLE ALL INTERRUPTS 08450000
SVC 0 ISSUE THE SVC 08460000
DC XL1'85' RIB FOR LOG 08470000
SPACE 08480000
* MESSAGE IS SENT OUT - RETURN TO THE USER 08490000
SPACE 08500000
CCP DISABL,PMRQ DISABLE ALL INTERRUPTS 08510000
ST II@PRL,XR1 RESTORE PARAMETER LIST POINTER 08520000
TBN PLOPC(,XR1),OPGET WAS THIS A PUT-THEN-GET OP @15 08523000
JF IICDNE NO THEN PARM-LIST IS ALL SET @15 08526000
SLC PLEFFL(2,XR1),PLEFFL(,XR1) ZERO THE EFFL IN PARM-LIST @15 08530000
CLI 0(,XR2),IINODA WAS ANY DATA ENTERED? (X20) @15 08550000
JE IICDNE BRANCH OUT IF YES, EFFL=0 @15 08560000
MVC PLEFFL(1,XR1),$LGON(,XR2) SAVE MAXIMUM INPUT LENGTH @15 08570000
L PLRECA(,XR1),XR2 POINT TO THE RECORD AREA @15 08575000
A PLEFFL(,XR1),XR2 POINT TO THE END-OF-DATA @15 08580000
IICLOP A X$FFFF,XR2 DECREMENT DATA POINTER. @21 08590000
CLI 0(,XR2),IIBLNK IS THE CHARACTER A BLANK? 08600000
JNE IICDNE BRANCH OUT IF NOT A BLANK @15 08610000
SLC PLEFFL(2,XR1),X$0001 DECREMENT EFFL BY ONE 08620000
BH IICLOP LOOP TO KEEP TESTING 08630000
IICDNE LA 0(,XR1),XR2 RESTORE PARAMETER LIST POINTER 08640000
B IIFINI GO TO EXIT TO USER 08650000
EJECT 08660000
AIF (&NDF).NMAP2 SKIP IF *NO* DFF 08670000
SPACE 2 08680000
*********************************************************************** 08690000
* CHECK VALIDITY OF MAPPING REQUESTS * 08700000
*********************************************************************** 08710000
SPACE 08720000
ENTRY IICKMP 08730000
IICKMP EQU * 08740000
TBN PLOPC(,XR2),OPCOPY IS THIS A COPY COMMAND? 08750000
TBF PLOPC(,XR2),OPKPL AND NOT AN ERASE OR RUF PUT ? 08760000
JF IINCPY BRANCH IF NOT 08770000
TBN TUBTA1(,XR1),TASDFF IS MAPPING SPECIFIED FOR TERM? 08780000
JT IICKTN BRANCH IF YES 08790000
SPACE 08800000
* ERROR - COPY TO 3270 REQUESTED BUT NO MAPPING FOR THIS TERMINAL * 08810000
B C4TI2 BRANCH TO TERMINATION 08830000
DC AL1(TCCICA) INVALID COPY - ATTRIBUTES 08840000
SPACE 08850000
IICKTN EQU * 08860000
L @TNT,XR1 POINT TO FIRST TNT 08870000
L PLRECA(,XR2),XR2 POINT TO RECORD AREA 08880000
.* @11 08881000
AIF (&MTNT NE '1').NTNT6 .SKIP IF TNT REMAP NOT SUPP @11 08882000
MVC IITNAM(IISTNL),IISTNL-1(,XR2) MOVE STN TO HOLD AREA. @11 08883000
B IIMTNT GO MAP IN TNT MOVEOUT AREA @11 08884000
SPACE 1 @11 08885000
.NTNT6 ANOP @11 08886000
.* @11 08887000
IIAGIN CLI 0(,XR1),TNTSTP IS THIS END OF TNT'S? 08890000
JNE IINSTP BRANCH IF NOT 08900000
SPACE 08910000
* ERROR - SYMBOLIC TERMINAL NAME FOR COPY NOT FOUND IN TNT'S * 08920000
B C4TI2 BRANCH TO TERMINATION 08940000
DC AL1(TCCICN) INVALID COPY DUE TO NAME NF 08950000
SPACE 08960000
.* @11 08963000
AIF (&MTNT EQ '1').ATNT7 .SKIP IF TNT REMAP IS SUPP. @11 08966000
IINSTP CLC IISTNL-1(IISTNL,XR2),TNTNAM(,XR1) IS THIS TNT FOR COPY?@11 08970000
AGO .NTNT7 @11 08971000
.ATNT7 ANOP .TNT REMAP IS SUPPORTED HERE @11 08972000
IINSTP CLC IITNAM(IISTNL),TNTNAM(,XR1) IS THIS TNT FOR COPY? @11 08973000
.NTNT7 ANOP @11 08974000
.* @11 08975000
JE IITNT BRANCH IF YES 08980000
LA TNTLN(,XR1),XR1 POINT TO NEXT TNT 08990000
B IIAGIN GO CHECK THIS ONE 09000000
SPACE 1 09010000
IITNT CLI TNTTUB-1(,XR1),NOBIT DOES TERMINAL HAVE A TUB? @20 09013000
L TNTTUB(,XR1),XR1 POINT TO COPY TUB. 09016000
JE IIINCP ERROR NO TUB. 09020000
.* @11 09021000
AIF (&MTNT NE '1').NTNT8 .SKIP IF TNT REMAP NOT SUPP @11 09022000
B IIUTNT UNMAP TNT MOVEOUT AREA. @11 09023000
.NTNT8 ANOP @11 09024000
.* @11 09025000
L II@PRL,XR2 POINT TO PARAMETER LIST 09030000
ST PL$RTC(,XR2),XR1 PUT SECOND TUB @ IN PARM LIST 09040000
CLI TUBPHY(,XR1),TUB5M1 IS THIE A 3275 MODEL 1? 09050000
JE IIINCP BRANCH IF YES 09060000
CLI TUBPHY(,XR1),TUB5M2 IS THIS A 3275 MODEL 2? 09070000
JE IIINCP BRANCH TO HALT IF YES 09080000
L PLTUBA(,XR2),XR1 POINT TO OTHER TUB 09090000
CLI TUBPHY(,XR1),TUB5M1 IS THIE A 3275 MODEL 1? 09100000
JE IIINCP BRANCH IF YES 09110000
CLI TUBPHY(,XR1),TUB5M2 IS THIS A 3275 MODEL 2? 09120000
JNE IICMAP BRANCH IF YES 09130000
SPACE 09135000
IIINCP EQU * INVALID DEVICE FOR COPY 09140000
* ERROR - COPY REQUEST INVALID WITH 3275 * 09160000
B C4TI2 BRANCH TO TERMINALTION 09180000
DC AL1(TCCICT) COPY INVALID TO TERMINAL TYPE 09190000
SPACE 09200000
IINCPY EQU * 09210000
TBN TUBTA1(,XR1),TASDFF IS MAPPING SPECIFIED? 09220000
JT IICMAP BRANCH IF YES 09230000
CLI PLOPC(,XR2),OPPUT+OPEAU IS THIS AN ERASE 09240000
JNE IINEAU BRANCH IF NOT 09250000
SPACE 09260000
* ERROR - EAU REQUESTED BUT NO MAPPING SPECIFIED FOR THIS TERMINAL 09270000
B C4TI2 BRANCH TO TERMINATION 09290000
DC AL1(TCCIEA) INVALID ERASE REQUEST 09300000
SPACE 09310000
IINEAU TBN PLOPC(,XR2),OPPUT+OPMSG IS THIS A PUT EOT? 09320000
TBN PLOPM(,XR2),OPLIST IS THIS PUT OVERRIDES? 09330000
AIF (&NNONS).NPOR1 SKIP IF NO NON-SIOC PORTS @21 09330400
JF IINPOV BRANCH IF NOT @21 09330800
AGO .BSY1 @21 09331200
.NPOR1 ANOP @21 09331600
AIF (&NPBY).NBSY2 SKIP IF NO BUSY PRINTER @10 09332000
JF IIBUSY BRANCH IF NOT. @10 09334000
AGO .BSY1 @10 09336000
.NBSY2 ANOP @10 09338000
JF IIUPST BRANCH IF NOT 09340000
.BSY1 ANOP @10 09345000
SPACE 09350000
* ERROR - PUT OVERRIDES REQUESTED BUT NO MAPPING ON TERMINAL * 09360000
B C4TI2 BRANCH TO TERMINATION 09380000
DC AL1(TCCIPA) INVALID PUT OVERRIDES 09390000
SPACE 2 09400000
AIF (&NNONS).NPOR2 SKIP IF NO NON-SIOC PORTS @21 09400400
IINPOV TBN PLOPC(,XR2),OPPUT IS THIS A PUT TO A @21 09400800
TBN TUBPHY(,XR1),TUBAPT *BSCA, BSCC, OR TTASK @21 09401200
TBF TUBAT4(,XR1),TUBPCB *PORT? @21 09401600
CLI PLOPC(,XR2),OPPCR IS OP A PORT COMMAND REQUEST?@21 09402000
AIF (&NPBY).NBSYA SKIP IF NO BUSY PRINTER SUPPO@21 09402400
JC IIBUSY,ANY+FALSE+EQ BRANCH-FALSE OR EQUAL @21 09402800
TBN PLOPC(,XR2),OPPUT+OPMSG IS PUT MESSAGE MODE? @21 09403200
JT IIBUSY YES-BRANCH @21 09403600
AGO .BSYA @21 09404000
.NBSYA ANOP @21 09404400
JC IIUPST,ANY+FALSE+EQ BRANCH-FALSE OR EQUAL @21 09404800
TBN PLOPC(,XR2),OPPUT+OPMSG IS PUT MESSAGE MODE? @21 09405200
JT IIUPST YES-BRANCH @21 09405600
.BSYA ANOP @21 09406000
* ERROR - NON-MSG MODE PUT TO A BSCA, BSCC, OR TTASK PORT @21 09406400
B C4TI2 BRANCH TO TERMINATION @21 09406800
DC AL2(TCCNMM) NON-MESSAGE MODE PUT @21 09407200
SPACE 2 @21 09407600
.NPOR2 ANOP @21 09408000
IICMAP EQU * 09410000
TBN PLOPC(,XR2),OPPUT IS THE OP A PUT? 09420000
JF IICLMP BRANCH IF NOT 09430000
TBN PLOPC(,XR2),OPMSG IS IT A PUT-EOT? 09440000
JT IICLMP BRANCH IF YES 09450000
TBF PLOPC(,XR2),OPCOPY IS THIS A COPY OR ERASE? 09460000
JF IICLMP BRANCH PAST ERROR IF YES 09470000
SPACE 09480000
* ERROR - PUT REQUESTED TO MAPPING WITHOUT THE EOT MODIFIER 09490000
B C4TI2 BRANCH TO TERMINATION 09510000
DC AL1(TCCIPM) INVALID PUT TO MAPPING 09520000
SPACE 09530000
IICLMP EQU * 09540000
B IIMAPP BRANCH TO MAPPING INTERFACE 09550000
CLI PLRTC(,XR2),RCOK WAS MAPPING SUCCESSFUL? 09570000
BNE IISEND BRANCH PAST CM CALL IF NOT 09580000
.NMAP2 ANOP 09590000
AIF (&NPBY).NBSY3 SKIP IF NO BUSY PRINTER. @10 09590300
EJECT @10 09590600
SPACE 1 @10 09590900
******************************************************************* @10 09591200
* BUSY PRINTER SUPPORT. * @10 09591500
* TEST IF DEVICE IS BUSY, IF IT IS THEN DO A SYSTEM INVITE * @10 09591800
* TO TEST WETHER THE DEVICE IS STILL BUSY. * @10 09592100
******************************************************************* @10 09592400
SPACE 1 @10 09592700
ENTRY IIBUSY @10 09593000
IIBUSY EQU * BUSY PRINTER TEST. @10 09593300
L II@PRL,XR2 RELOAD USERS PARM-LIST. @10 09593600
TBN TUBAT4(,XR1),TUBBSY IS DEVICE BUSY? @10 09593900
TBN PLOPC(,XR2),OPPUT AND OP A PUT ? @22 09594000
JF IIUPST NO. GO TO POST. @10 09594200
SPACE 1 @10 09594500
L NCTCB@,XR2 POINT TO USERS TCB @10 09594800
SBN TUBAT2(,XR1),TUBIIS SET ON INVITE BIT IN TUB. @10 09595100
SBN TUBAT4(,XR1),TUBWAT INDICATE WAITING FOR STATUS @10 09595400
SLC TCBPL+PLLEN-1(PLLEN,XR2),TCBPL+PLLEN-1(,XR2) BLANK IT @10 09595700
MVI TCBPL+PLOPM(,XR2),OP$SYS INDICATE A SYSTEM OPERATION. @10 09596000
MVI TCBPL+PLOPC(,XR2),OPINV INDICATE AN INVITE OPERATION @10 09596300
ST TCBPL+PLTUBA(,XR2),XR1 PUT TUB ADDRESS IN PARM-LIST @10 09596600
LA TCBPL(,XR2),XR2 POINT TO PARM-LIST @10 09596900
J IIPRBQ GO QUEUE REQUEST. @10 09597200
.NBSY3 ANOP @10 09597500
SPACE 09600000
ENTRY IIUPST 09610000
IIUPST EQU * PERFORM POST FOR USER TCB 09620000
TBN PLOPC(,XR2),OPGET DID OP INVOLVE A GET OPERATION? 09630000
JF IINOI1 BRANCH OUT IF NOT 09640000
SBN TUBAT2(,XR1),TUBIIS SET ON READ BIT SCHEDULED 09650000
TBN PLOPC(,XR2),OPPUT DOES OPERATION INVOLVE PUT? 09660000
JT IINOI1 BRANCH IF YES 09670000
SLC PLEFFL(2,XR2),PLEFFL(,XR2) CLEAR INPUT LENGTH FIELD 09680000
IINOI1 EQU * 09690000
EJECT 09700000
SPACE 1 09710000
*********************************************************************** 09715000
* NOW MOVE THE PARAMETER LIST TO THE TCB FOR CM TO REFERENCE * 09720000
*********************************************************************** 09725000
SPACE 1 09730000
L NCTCB@,XR1 POINT TO THE TCB 09740000
MVC TCBPL+PL$RTC(16,XR1),PL$RTC(,XR2) MOVE THE PARM LIST IN 09750000
SLC TCBPL+PLECB+2(3,XR1),TCBPL+PLECB+2(,XR1) CLEAR THE ECB 09760000
MVC TCBWK(2,XR1),PLRECA(,XR2) SAVE RECORD AREA ADDRESS IN TCB 09770000
SLC TCBPL+PLRECA(2,XR1),TCBPL+PLRECA(,XR1) CLEAR RECA POINTER 09780000
LA TCBPL(,XR1),XR2 POINT XR2 AT PARAMETER LIST 09781000
SPACE 2 09782000
*********************************************************************** 09783000
* QUEUE THE REQUEST ON CM'S OR CS'S QUEUE WHICHEVER IS APPROPRIATE.@21 09784000
* THEN POST $CC4CM OR $CC4CS THAT HE HAS WORK TO DO. * 09786000
*********************************************************************** 09787000
SPACE 1 09788000
IIPRBQ EQU * XR2 POINTS TO PARM-LIST 09790000
B IIQSUB GO QUEUE THE LIST.(XR1=ECB) 09800000
L II@PRL,XR2 POINT TO PARM LIST TO SAVE IT 09810000
SBF $FLGC,#NTRAC ENABLE TRACE BEFORE CM POST 09820000
CCP ENABLE,PMRQ REENABLE INTERRUPTS 09840000
SPACE 09870000
SVC 0 SUPERVISOR CALL 09890000
DC XL1'05' POST 09900000
SPACE 09910000
* NOW ISSUE A WAIT FOR COMPLETION OF THE TP REQUEST 09920000
SPACE 09930000
L NCTCB@,XR1 POINT TO THE TCB 09950000
LA TCBPL+PLECB(,XR1),XR1 LOAD POINTER TO THE ECB 09960000
SVC 0 SUPERVISOR CALL 09970000
DC XL1'03' WAIT FOR CM'S POST 09980000
SPACE 09985000
CCP DISABL,PMRQ DISABLE ALL INTERRUPTS 09990000
ST II@PRL,XR2 RESTORE PARAMETER LIST POINTER 10000000
L NCTCB@,XR2 POINT TO THE TCB 10010000
LA TCBPL(,XR2),XR2 POINT TO THE PARAMETER LIST 10020000
AIF (&NPBY).NBSY4 SKIP IF NO BUSY PRINTER @10 10021000
SPACE 1 @10 10022000
L PLTUBA(,XR2),XR1 POINT TO TUB. @10 10023000
CLI PLOPM(,XR2),OP$SYS IF SYSTEM OPERATION MUST BE @10 10024000
BE IIBUSY FOR BUSY PRINTER SO LOOP. @10 10025000
.NBSY4 ANOP @10 10026000
SPACE 10030000
.* 10040000
AIF (&NDF).REND . SKIP IF *NO* DFF SUPPORT 10050000
.* 10060000
LA DFQ030,XR1 POINT TO ACCEPT MAPPING ENTRY 10070000
ST IIIIII+3,XR1 SET IN BRANCH ADDRESS 10080000
B IIMAPP GO TO MAPPING INTERFACE 10090000
LA DFA000,XR1 POINT TO NORMAL ENTRY POINT 10100000
ST IIIIII+3,XR1 RESET MAPPING BRANCH ADDRESS 10110000
.REND ANOP 10120000
EJECT 10130000
SPACE 5 10210000
*********************************************************************** 10220000
* REENTER $CC4II AT THIS POINT AFTER USER REQUEST SCHEDULED * 10225000
* NOW MOVE THE PARAMETER LIST BACK TO USER PROGRAM AREA * 10230000
*********************************************************************** 10240000
SPACE 2 10242000
ENTRY IIREND 10244000
IIREND EQU * RETURN TO USER PROGRAM 10246000
L II@PRL,XR1 POINT TO USER'S PARAMETER LIST 10260000
MVC PL$RTC(6,XR1),PL$RTC(,XR2) MOVE THE PARAMETER LIST 10270000
MVC PLINL(8,XR1),PLINL(,XR2) BACK TO THE USER PROGRAM 10280000
LA 0(,XR1),XR2 RESTORE PARM LIST IN XR2 10290000
SPACE 2 10300000
IIFINI L PLTUBA(,XR2),XR1 POINT XR1 AT TUB 10310000
SBF TUBAT3(,XR1),TUBSPF+TUBSWL ASSURE STOP FAILED AND SWALLOW 10320000
* BITS IN TUB ARE OFF 10330000
SPACE 5 10341000
*********************************************************************** 10342000
* PREPARE TO EXIT $CC4II TO USER. * 10343000
*********************************************************************** 10344000
SPACE 2 10345000
IISEND EQU * RETURN 10350000
SLC PLRECA(2,XR2),CC0006 RESTORE CORRECT PLRECA 10360000
SPACE 3 10365000
IIAEND EQU * 10370000
.* 10380000
AIF (&PORT).NSIO6 . SKIP IF NO PORTS SUPPORTED @21 10380700
SPACE 1 10381400
*********************************************************************** 10382100
* TERMINATE TASK IF TERMINATION WAS GIVEN IN RETURN CODE * 10382800
*********************************************************************** 10383500
SPACE 1 10384200
CLI PLRTC-1(,XR2),RCRTRM DID SIOC TERMINATE TASK? @08 10384900
JNE IIANTR NO THEN SKIP TERMINATION @08 10385600
MVC IIATRM,PLRTC(1,XR2) MOVE TERMINATION CODE. @08 10386300
B C4TI2 CALL TERMINATION. @08 10387000
IIATRM DC XL1'00' TERM CODE. @08 10387700
IIANTR EQU * *NEXT* @08 10388400
.NSIO6 ANOP @08 10389100
AIF (&NSIDM EQ '2').NDME1 . SKIP IF NO PORTS OR DME @21 10390000
SPACE 1 10410000
*********************************************************************** 10420000
* CANCEL REQUEST ANALYSIS * 10430000
*********************************************************************** 10440000
SPACE 1 10450000
* XR2 WILL POINT AT THE PARM LIST (GET OR INVITE INPUT) @21 10460000
* IF CANCEL HAS BEEN REQUESTED BY THE TERMINAL OPERATOR - CALL IN 10470000
* TRANSIENT TO DO HIS THING 10480000
SPACE 10490000
L PLTUBA(,XR2),XR1 POINT XR1 AT THE TUB 10500000
TBN TUBAT3(,XR1),TUBCNC HAS CANCEL BEEN REQUESTED 10510000
JF IITEND JUMP IF NO CANCEL 10520000
SPACE 10530000
* CANCEL HAS BEEN REQUESTED - BRING IN TRANSIENT 10540000
SPACE 10550000
B CC4PI 10560000
DC AL1(CC4NC) CANCEL TRANSIENT FOR $CC4II 10570000
.* 10580000
.NDME1 ANOP 10590000
.* 10600000
SPACE 6 10610000
ENTRY IITEND 10620000
IITEND EQU * LEAVING SOON 10630000
B CC4TT BRANCH TO TRACE RETURN TO USER 10640000
DC AL1(TTIIRT) TRACE ID - 'EE' 10650000
CCP ENABLE,PMRQ REENABLE ALL INTERRUPTS 10660000
SPACE 10670000
* NOW RETURN TO THE USER PROGRAM VIA A SUPERVISOR EXIT 10680000
SPACE 10690000
SVC 0 SUPERVISOR CALL 10700000
DC XL1'08' RIB TO EXIT 10710000
EJECT 10720000
SPACE 2 10725000
*********************************************************************** 10730000
* HAVE ACCEPT INPUT REQUEST * 10740000
*********************************************************************** 10750000
SPACE 10760000
IIACI EQU * HAVE ACCEPT INPUT 10770000
B CC4TT BRANCH TO TRACE THE ACCEPT INPUT 10780000
DC AL1(TTII) 'EC' TRACE ID @21 10790000
SPACE 2 10800000
AIF (&NRAI).NRES 10800080
*********************************************************************** 10800160
* RESIDENT ACCEPT INPUT IS BEING USED * 10800240
*********************************************************************** 10800280
SPACE 1 10800320
L NCTCB@,XR1 CURRENT TASK 10800400
CLI PLOPM(,XR2),NOBIT NO OP-MODIFIER BITS ALLOWED 10800480
TBF PLOPC(,XR2),BIT0+BIT2+BIT3 AND ONLY ACCEPT OPCODES 10800560
JC IIAC01,NONE+FALSE+HI+LO OK CONTINUE 10800640
SPACE 10800720
* ERROR - INVALID ACCEPT OP CODE. MUST BE X'04' OR X'44' 10800800
B C4TI2 ERROR IN OP CODE 10800960
DC AL1(TCCIOP) TERMINATE USER 10801040
SPACE 10801045
*------ACCEPT-NO-WAIT OPCODE CHECK ----* @01 10801050
IIAC01 CLI PLOPC(,XR2),OPANW TEST IF ACCEPT-NO-WAIT OPCOD @01 10801055
JNE IIVINL NO! PREFORM ACCEPT INPUT @01 10801060
CLI TCBINQ-1(,XR1),NOBIT ANY TUB WITH INVITE DATA @01 10801065
JNE IIVINL YES. GO PROSSESS DATA. @01 10801070
IIAC02 TBN $FLGA,CPSHUT HAS SHUTDOWN BEEN REQUESTED? @01 10801075
MVI PLRTC(,XR2),RCXNAC SET RETURN CODE FOR NO DATA @01 10801080
JF IIAC03 NO THEN SET EFFL AND RETURN. @01 10801085
TBN TCBDMG(,XR1),TCBSHQ DOES USER KNOW ABOUT SHD? @01 10801090
SBN TCBDMG(,XR1),TCBSHQ MARK THAT HE WILL KNOW. @01 10801095
BF IIPGSH THEN GO TELL HIM. ELSE @01 10801100
IIAC03 B IINTSH SET EFFL AND RETURN. @01 10801105
SPACE 10801110
*------ACCEPT (WAIT) LOGIC ------------* 10801120
IIVINL EQU * TEST INPUT LENGTH 10801160
CLC PLINL(2,XR2),X$0000 INPUT LENGTH > 0 10801200
JH IITSCT YES CONTINUE 10801280
B C4TI2 NO 10801360
DC AL1(TCCIIL) TERMINATION CODE 10801440
SPACE 10801480
IITSCT CLI TCBIIC(,XR1),0 ANY INVITES 10801520
JH IICTOK YES CONTINUE 10801600
TBN TCBDMG(,XR1),TCBNEP ELSE MUST BE A NEP PROGRAM 10801680
JT IINEP OK 10801760
SPACE 1 10801840
*------NO INVITES TERMINATE------------* 10801920
B C4TI2 TERMINATION 10802000
DC AL1(TCCIAN) ERROR TYPE 10802080
SPACE 1 10802120
IINEP CLC TCBMAX(1,XR1),TCBATR(,XR1) MAX TERMINAL COUNT 10802160
JH IIOK GT CURRENTLY ACTIVE COUNT 10802240
SPACE 1 10802320
*--ALREADY AT MAXIMUM TERMINALS -------* 10802480
B C4TI2 TERMINATION 10802560
DC AL1(TCCIAC) ERROR TYPE 10802640
SPACE 3 10802960
*------RE-ENTRY POINT AFTER ACCEPT COMPLETE -------* 10803040
*------HAS BEEN POSTED CHECK FOR TUBS ON QUEUE-----* 10803120
SPACE 2 10803200
IICTOK LA TCBINQ(,XR1),XR2 START OF TERMINAL CHAIN 10803280
ST IITPRV,XR2 SAVE TERMINAL ADDR FOR DEQUE 10803360
CLI TCBINQ-1(,XR1),0 ANY TUBS OP-ENDED YET 10803440
JE IIGGWT NO GO WAIT ON ACCEPT 10803520
L TCBINQ(,XR1),XR2 FIRST TUB 10803600
IITSTG TBN TUBAT2(,XR2),TUBIMI IMPLICIT INVITE 10803680
JF IIHERD CHECK DFF ON ACCEPT INPUT 10803760
TBF TCBDMG(,XR1),TCBMTS MULTIPLE REQUESTOR 10803840
JT IIHERE NO USE TUB 10803920
CLC TCBMAX(1,XR1),TCBATR(,XR1) YES CAN WE USE IT 10804000
JNH IINXTB ONLY IF MAX GREATER 10804080
TBN TUBAT1(,XR2),TUBKNM CONSOLE REQUEST 10804160
JT IIHERE YES 10804240
TBN TUBAT4(,XR2),TUBCHN CHAIN REQUEST DUMMY TUB? 10804260
JT IIHERE YES, SKIP COUNT INCREMENT 10804280
ALC TCBATR(1,XR1),X$0001 NO BUMP ACTIVE TERMINAL COUNT 10804320
SPACE 2 10804400
*------HAVE A TUB CHECK DFF AND RUF USE------* 10804480
IIHERE TBN TUBSCS(,XR2),TUBRUF RUF ACTIVE ON REQUEST 10804560
IIHERD CLI TCB@AS-1(,XR1),0 DFF ACTIVE FOR REQUEST 10804640
L II@PRL,XR1 PARM LIST ADDRESS 10804720
MVI PL$OPC(,XR1),BRNOP NO-OP BRANCH TO MAPPING 10804800
JC IIGISF,X'91' NO DFF OR RUF INPUT 10804880
MVI PL$OPC(,XR1),BR97 SET FOR DFF MAPPING 10804960
J IIGISF GO EXIT ACCEPT 10805040
SPACE 1 10805080
IINXTB CLI TUBINQ-1(,XR2),0 MORE TUBS 10805120
JE IIGGWT NO GO WAIT ON ACCEPT 10805200
LA TUBINQ(,XR2),XR1 TUB POINTER 10805280
ST IITPRV,XR1 SAVE FOR DEQUE 10805360
L TUBINQ(,XR2),XR2 NEXT TUB 10805440
L NCTCB@,XR1 OUR USER 10805520
B IITSTG TRY NEXT TUB 10805600
SPACE 2 10805680
*------SET UP FOR ACCEPT INPUT WAIT-------* 10805760
IIGGWT L II@PRL,XR2 RESTORE PARM LIST ADDRESS 10805840
MVC PL$RTC(2,XR2),IITPRV PRIOR TUB ADDRESS 10805920
IITUBS L TCBTUB(,XR1),XR1 FIRST USER TUB 10806000
IILOOP TBN TUBAT2(,XR1),TUBIIS INVITE 10806080
JF IINSAV NO SKIP IT 10806160
TBN TUBCHR(,XR1),TUBLNE BSCA TUB 10806240
JF IIOK NO IT'S OK 10806320
TBN TUBAT2(,XR1),TUBOWN DOES IT OWN A LLINE 10806400
JT IIOK YES OK 10806480
L TUBDTF(,XR1),XR2 DTF ADDRESS 10806560
MVC IILINE,0(1,XR2) SAVE LINE NUMBER 10806640
ST IISAVE+3,XR1 SAVE TUB POINTER 10806720
L NCTCB@,XR1 CURRENT TCB 10806800
L TCBTUB(,XR1),XR1 FIRST TUB 10806880
IIIGIN TBN TUBAT2(,XR1),TUBOWN OWN A LINE 10806960
JF IIANTH NO DO NEXT 10807040
TBN TUBAT2(,XR1),TUBCMD+TUBDTA TEST IF TUB IN DATA MODE @99 10807060
JT IIANTH ESCAPE? YES THEN OKAY. @99 10807080
L TUBDTF(,XR1),XR2 DTF 10807120
CLC 0(1,XR2),IILINE OWN OUR LINE 10807200
JE IINEXT YES 10807280
IIANTH CLI TUBTUB-1(,XR1),0 MORE TUBS 10807360
JE IIOK NO 10807440
L TUBTUB(,XR1),XR1 NEXT TUB POINTER 10807520
B IIIGIN GO CHECK IT 10807600
SPACE 1 10807640
IINEXT EQU * CHECK OTHER TUBS 10807680
IISAVE LA *-*,XR1 RELOAD TUB POINTER 10807760
IINSAV CLI TUBTUB-1(,XR1),0 MORE TUBS 10807840
JNE IIMORE YES CHECK THEM 10807920
B C4TI2 TERMINATION 10808000
DC AL1(TCCIAI) USER ERROR CODE @01 10808080
SPACE 1 10808120
IIMORE L TUBTUB(,XR1),XR1 NEXT TUB 10808160
B IILOOP CHECK NEXT TUB 10808240
SPACE 1 10808260
*------ACCEPT INPUT IS SATISFIED. 10808280
IIGISF L II@PRL,XR1 RESTORE PARM LIST ADDRESS 10808320
MVC PL$RTC(2,XR1),IITPRV SET TO DEQUE TUB 10808400
ST PLTUBA(,XR1),XR2 SET TUB ADDRESS IN PARM LIST 10808480
LA 0(,XR1),XR2 SET PARM LIST ADDRESS 10808560
J IIGGSF ACCEPT SATISFIED 10808640
SPACE 2 10808720
*------SET UP FOR ACCEPT INPUT WAIT FOR USER-------* 10808800
IIOK L NCTCB@,XR1 CURR USER 10808880
L II@PRL,XR2 RELOAD PARM LIST ADDRESS. 10808960
CLI PLOPC(,XR2),OPANW WAS THIS AN ACCEPT-NO-WAIT? @01 10808980
BE IIAC02 YES THE RESPOND WITH NO-DATA @01 10809000
MVI TCBECB(,XR1),TCBACW ELSE SET ACCEPT WAIT FOR C.M. 10809040
AGO .RESA 10809120
.NRES ANOP 10809200
MVI PL$OPC(,XR2),NOBIT SETP OP TO SHOW INITIAL REQUEST 10810000
SPACE 10812000
*********************************************************************** 10814000
* CALL ACCEPT TRANSIENT - RETURN IS TO ANY (RETURN) BELOW * 10816000
*********************************************************************** 10818000
IICALL EQU * 10820000
B CC4PI BRANCH TO TRANSIENT HANDLER 10830000
DC AL1(CC4AB) ID FOR ACCEPT TRANSIENT 10840000
B C4TI2 +0 (RETURN) BRANCH TO TERMINATION ON ERROR 10850000
DC AL1(*-*) ACCEPT IMPOSSIBLE TO SATISFY 10860000
B IINTSH +5 (RETURN) ACCEPT-NO-WAIT NOT SATISFIED @01 10875000
J IIGGSF +9 (RETURN) JUMP IF ACCEPT SATISFIED 10880000
* +12 (RETURN) CONTINUE IF TO PREFORM WAIT 10885000
SPACE 5 10890000
.RESA ANOP 10896000
EJECT 10897000
SPACE 1 10898000
*********************************************************************** 10920000
* --- CHECK FOR SHUTDOWN --- * 10930000
* DETERMINE NOW WHETHER USER SHOULD BE TOLD ABOUT SHUTDOWN REQUEST * 10935000
*********************************************************************** 10940000
SPACE 10950000
* DETERMINE IF SYSTEM OPERATOR REQUESTED SHUTDOWN AND 10960000
* ALSO WHETHER USER HAS BEEN TOLD YET WITH NON-SHUTDOWN INQUIRY OP 10970000
SPACE 10980000
TBN $FLGA,CPSHUT HAS SHUTDOWN BEEN REQUESTED 10990000
JF IIAIWT JUMP IF NOT 11000000
SPACE 11010000
* SHUTDOWN HAS BEEN REQUESTED - DETERMINE IF USER TOLD ALREADY 11020000
IITELL L NCTCB@,XR1 POINT XR1 AT CURRENT TCB 11040000
TBN TCBDMG(,XR1),TCBSHQ HAS USER BEEN TOLD 11050000
SBN TCBDMG(,XR1),TCBSHQ SET BIT THAT USER TOLD 11060000
JF IIPGSH JUMP IF SHUTDOWN REQUESTED 11070000
EJECT 11080000
SPACE 11085000
*********************************************************************** 11090000
* WAIT FOR AN INVITE COMPLETION OR A SHUTDOWN REQUEST * 11100000
*********************************************************************** 11110000
SPACE 3 11120000
IIAIWT EQU * ISSUE WAIT 11130000
CCP DISABL,PMRQ DISABLE ALL INTERRUPTS 11140000
LA 0(,XR2),XR1 POINT XR1 AT PARMLIST 11145000
SPACE 11150000
* MUST DO A WAIT FOR AN INVITE OR A SHUTDOWN REQUEST 11280000
SPACE 11290000
IINODG LA 0(,XR1),XR2 POINT XR2 AT PARM LIST 11300000
L NCTCB@,XR1 POINT TO THE TCB 11310000
LA TCBECB(,XR1),XR1 POINT TO THE ECB 11320000
SPACE 11330000
CCP ENABLE,PMRQ REENABLE ALL INTERRUPTS 11340000
SVC 0 ISSUE WAIT FOR INVITE COMPLETE 11350000
* OR SHUTDOWN REQUEST 11360000
DC XL1'03' RIB TO WAIT ON ECB LIST 11370000
SPACE 11380000
* WAIT HAS COMPLETED - TEST IF SHUTDOWN OR INVITE COMPLETE 11390000
SPACE 11400000
CCP DISABL,PMRQ DISABLE INTERRUPTS 11410000
ST II@PRL,XR2 SAVE PARAMETER LIST POINTER 11430000
EJECT 11440000
SPACE 3 11450000
*********************************************************************** 11460000
* RETURN AFTER BEING POSTED THAT A TUB HAS BEEN PUT IN THE TCB INVITE * 11470000
* INPUT TUB QUEUE OR SHUTDOWN HAS BEEN REQUESTED BY SYSTEM OPERATOR * 11480000
*********************************************************************** 11500000
SPACE 3 11510000
* DETERMINE IF POST WAS FOR INVITE INPUT COMPLETE 11520000
* IF NOT MUST HAVE BEEN SHUTDOWN REQUESTED 11530000
* XR1 POINT TO TCBECB. 11535000
SPACE 11540000
SBF 0(,XR1),TCBACW RESET ACCEPT WAIT BIT 11555000
CLI 2(,XR1),IIPOST WAS POST FOR INVITE COMPLETE? 11560000
BNE IITELL JUMP IF NOT INVITE POST 11570000
SPACE 1 11571000
* HAD POST OF INVITE INPUT COMPLETE 11590000
AIF (&NRAI).NRS1 RESIDENT ACCEPT 11601000
L NCTCB@,XR1 LOCATE THE TCB. 11602000
B IICTOK GO HANDLE OP-ENDED TUB 11603000
IITPRV DC XL2'00' PRIOR TUB SAVE AREA 11604000
IILINE DC XL1'00' BSCA LINE NUMBER SAVE AREA 11605000
AGO .NRS2 11606000
.NRS1 ANOP 11607000
MVI PL$OPC(,XR2),ALLBIT SET OP TO SHOW SECONDARY ENTRY 11610000
B IICALL BRANCH TO RECALL TRANSIENT 11620000
.NRS2 ANOP 11625000
SPACE 3 11630000
*********************************************************************** 11635000
* TELL USER ABOUT SHUTDOWN REQUEST AND * 11640000
* SET PLEFFL IN PARMATER LIST TO OUTSTANDING INVITES. * 11643000
*********************************************************************** 11646000
SPACE 11650000
IIPGSH EQU * TELL USER ABOUT SHUTDOWN. @01 11655000
MVI PLRTC(,XR2),RCXSHD PLUG SHUTDOWN RETURN CODE. @01 11670000
SPACE 11671000
IINTSH EQU * SET PLEFFL TO OUTSTANDING @01 11672000
L NCTCB@,XR1 INVITES. XR1 POINTS TO TCB. @01 11673000
MVI PLEFFL-1(,XR2),NOBIT HIGH ORDER BYTE IS ZERO AND @01 11674000
MVC PLEFFL-0(,XR2),TCBIIC(1,XR1) MOVE OUTSTANDING INVITES. @01 11675000
B IITEND BRANCH TO RETURN TO USER. @01 11680000
EJECT 11690000
SPACE 2 11700000
*********************************************************************** 11710000
* ACCEPT INPUT SATISFIED * 11720000
*********************************************************************** 11730000
SPACE 2 11740000
IIGGSF EQU * GET GENERAL SATIFIED 11750000
CCP DISABL,PMRQ DISABLE ALL INTERRUPTS 11760000
ST II@PRL,XR2 STORE PARAMETER LIST ADDRESS 11770000
L PLTUBA(,XR2),XR2 POINT AT TUB 11780000
L NCTCB@,XR1 POINT XR1 AT CURRENT TCB 11790000
SLC TCBIIC(1,XR1),X$0001 SUBTRACT 1 FROM INVITE COUNT 11800000
SBF TUBAT2(,XR2),TUBIIS+TUBIIQ SET OFF TUB INVITE STATUS BITS 11810000
SPACE 2 11820000
* DEQUEUE THE TUB FROM INVITE INPUTE TUB QUEUE 11830000
L II@PRL,XR1 POINT TO PARAMETER LIST 11840000
L PL$RTC(,XR1),XR1 POINT TO PREVIOUS TUB 11850000
MVC 0(2,XR1),TUBINQ(,XR2) DEQUEUE THE TUB 11860000
SPACE 1 @11 11870000
L NCTCB@,XR1 POINT TO THE TCB 11880000
TBN TCBOFG(,XR1),TCBCHN TASK CHAIN REQUEST? 11884000
JT IIYTC YES, DONT CHANGE THE NAME 11886000
.* @11 11886500
AIF (&MTNT NE '1').NTNT9 .SKIP IF TNT REMAP NOT SUPP @11 11887000
B IIMTNT . MAP IN TNT MOVEOUT AREA @11 11887500
.NTNT9 ANOP @11 11888000
.* @11 11888500
L TUBTNT(,XR2),XR2 . POINT TO THE TUB'S TNT 11889000
MVC NPJOB-2(6,XR1),TNTNAM(,XR2) MOVE TERM NAME TO TCB 11890000
.* @11 11891000
AIF (&MTNT NE '1').NTN9A .SKIP IF TNT REMAP NOT SUPP @11 11892000
B IIUTNT . UNMAP TNT MOVEOUT AREA @11 11893000
.NTN9A ANOP @11 11894000
.* @11 11895000
EJECT 11900000
SPACE 2 11910000
*********************************************************************** 11920000
* NOW POST CM TASK TO PROCESS THE ACCEPT INPUT DATA * 11930000
*********************************************************************** 11940000
SPACE 2 11950000
* MOVE THE PARAMETER LIST TO THE TCB 11960000
SPACE 11970000
IIYTC L II@PRL,XR2 POINT XR2 AT PARAMETER LIST 11980000
AIF (&PORT).NSIO7 . SKIP IF NO PORTS SUPPORTED @21 11981000
L PLTUBA(,XR2),XR1 POINT XR1 TO THE TUB. @08 11982000
TBN TUBPHY(,XR1),TUBAPT TEST IF PORT @21 11983000
TBF TUBAT4(,XR1),TUBCHN TUB AND @21 11983500
TBN TUBAT3(,XR1),TUBCNC IF TUB WAS CANCELED. @08 11984000
JT IINTCN YES, SKIP POST OF CM. @08 11985000
SPACE 1 @08 11986000
L NCTCB@,XR1 POINT XR1 TO USERS TCB. @08 11987000
.NSIO7 ANOP @08 11988000
MVC TCBWK(2,XR1),PLRECA(,XR2) SAVE PLRECA IN TCBWK THEN 11990000
LA TCBPL(,XR1),XR1 POINT TO PARM LIST AREA IN TCB 12000000
MVC PL$RTC(16,XR1),PL$RTC(,XR2) MOVE THE PARM LIST TO THE TCB 12010000
SBF PLOPC(,XR1),BIT1 . CHANCE ANW TO ACI OPCODE. @01 12015000
L PLTUBA(,XR1),XR2 . POINT TO THE TUB SELECTED. 12020000
L PLRECA(,XR1),XR1 . POINT TO THE USER'S REC. AREA 12021000
TBN TUBAT4(,XR2),TUBCHN . CHAIN TASK TUB ON ACCEPT? 12022000
JF IINTCH . NO, GO INSERT SYMB TERM NAME. 12023000
MVC 5(6,XR1),TUBPNM(,XR2) . MOVE NAME OF REQUESTING TASK 12024000
J IITCHH . SKIP TNT NAME INSERT. 12025000
SPACE 1 12026000
IINTCH EQU * 12027000
.* @11 12027500
AIF (&MTNT NE '1').NTNTA .SKIP IF TNT REMAP NOT SUPP @11 12028000
B IIMTNT . MAP IN TNT MOVEOUT AREA @11 12028500
.NTNTA ANOP @11 12029000
.* @11 12029500
L TUBTNT(,XR2),XR2 POINT TO THE TNT ENTRY 12030000
AIF (&MTNT EQ '1').ATNAA .SKIP IF TNT REMAP IS SUPPP @11 12040000
MVC IISTNL-1(IISTNL,XR1),TNTNAM(,XR2) MOVE STN TO RECORD AREA 12050000
AGO .NTNAA @11 12051000
.ATNAA ANOP .BELOW INCLUDEDED IF TNTMOVE @11 12052000
MVC IITNAM(IISTNL),TNTNAM(,XR2) SAVE TERMINAL NAME FOR MOVE@11 12053000
B IIUTNT . UNMAP THE TNT MOVEOUT AREA @11 12054000
MVC IISTNL-1(IISTNL,XR1),IITNAM MOVE IN SYMB TERMINAL NAME @11 12055000
.NTNAA ANOP @11 12056000
.* @11 12057000
SPACE 12060000
IITCHH EQU * 12065000
L II@PRL,XR2 RESTORE PARAMETER LIST POINTER 12070000
AIF (&NDF).PONK SKIP IF MAPPING *NOT* SUPPORTED 12080000
MVC IIDFF,PL$OPC(1,XR2) MOVE IN BRANCH CONDITION CODE 12090000
IIDFF EQU *+1 12100000
BC IIMAPP,BR97 BRANCH TO MAPPING 12110000
.PONK ANOP 12120000
SPACE 12125000
ENTRY IINDFF 12130000
IINDFF EQU * 12140000
L NCTCB@,XR2 POINT TO THE TCB 12150000
SLC TCBPL+PLECB+2(3,XR2),TCBPL+PLECB+2(,XR2) CLEAR THE ECB 12160000
LA TCBPL(,XR2),XR2 POINT TO THE PARAMETER LIST 12170000
SLC PLRECA(2,XR2),PLRECA(,XR2) CLEAR PLRECA 12180000
SPACE 12190000
* QUEUE THE ACCEPT INPUT REQUEST ON CM'S REQUEST QUEUE 12200000
SPACE 12210000
B IIQSUB GO QUEUE THE REQUEST. 12220000
L II@PRL,XR2 RESTORE PARAMETER LIST POINTER 12230000
SBF $FLGC,#NTRAC REENABLE TRACE BEFORE CM POST 12240000
SPACE 12250000
* NOW POST THE CM WITH A REQUEST TO PROCESS 12260000
* XR1 SET TO CM'S ECB IN IIQSUB ABOVE. @06 12270000
SPACE 1 12280000
CCP ENABLE,PMRQ REENABLE ALL INTERRUPTS 12290000
SVC 0 POST DFF WITH THE REQUEST 12300000
DC XL1'05' RIB FOR POST 12310000
SPACE 2 12320000
* CM IS NOW POSTED - WAIT ON COMPLETION OF THE ACCEPT INPUT 12330000
SPACE 12340000
L NCTCB@,XR1 POINT TO THE TCB 12350000
LA TCBPL+PLECB(,XR1),XR1 POINT AT THE ECB IN THE TCB PL 12360000
SVC 0 NOW WAIT ON THE POST OF THE ECB 12370000
DC XL1'03' RIB FOR EXPLICIT WAIT 12380000
EJECT 12390000
SPACE 2 12400000
* WE ARE POSTED COMPLETE - MOVE THE PARM LIST BACK AND RETURN 12410000
SPACE 2 12420000
CCP DISABL,PMRQ DISABLE INTERRUPTS 12430000
L NCTCB@,XR1 POINT XR1 AT THE TCB 12440000
MVC PL$RTC(6,XR2),TCBPL+PL$RTC(,XR1) MOVE THE PARM LIST 12450000
MVC PLINL(8,XR2),TCBPL+PLINL(,XR1) BACK TO THE UPA 12460000
SPACE 12470000
L PLTUBA(,XR2),XR1 LOCATE TUB AGAIN 12470700
TBN TUBAT4(,XR1),TUBCHN THIS A CHAIN REQUEST TUB? 12471400
JF IINTCN NO, SKIP DEQUEUEING IT 12472100
CLC PLRTC(2,XR2),X$0001 RETURN CODE=00 OR 01? 12472800
JH IITCNG NO,DONT SET CHAIN RETURN CODE 12473500
SBN PLRTC(,XR2),X'0E' INDICATE CHAIN REQUEST 12474200
SPACE 12474500
IITCNG EQU * 12474900
MVC TUBTUB(2,XR1),@DTUBQ INSERT THIS TUB INTO DUMMY 12475600
ST @DTUBQ,XR1 TUB FREE CHAIN. 12476300
SBF TUBAT2(,XR1),TUBIMI+TUBDTA RESET FOR NEXT CHAIN REQUEST 12477000
SBN TUBAT2(,XR1),TUBCMD RESET FOR NEXT CHAIN REQUEST 12477700
IINTCN EQU * 12478400
B IIAEND BRANCH TO RETURN TO REQUESTOR 12480000
.* 12490000
.NORS AIF (&N1050).MAPP . SKIP IF *NO* 1050 SUPPORT 12500000
.* 12510000
EJECT 12520000
*********************************************************************** 12530000
* MCT CHECK FOR INPUT AND OUTPUT CAPABILITY * 12540000
*********************************************************************** 12550000
SPACE 12560000
* XR1 POINTS AT TUB 12570000
* XR2 POINTS AT PARM LIST 12580000
SPACE 12590000
ENTRY IIMCT 12600000
IIMCT EQU * 1050 CHECK 12610000
ST IIMCTR+3,ARR SAVE ARR 12620000
SPACE 12630000
* DOES THIS OP INVOLVE MULTI-COMPONENT TERMINAL 12640000
SPACE 12650000
TBN TUBCHR(,XR1),TUBMCT IS THIS MCT 12660000
JF IIMCTR JUMP IF NOT TO RETURN NOW 12670000
SPACE 12680000
* HAVE MCT - SO CHECK COMPONENT INDICES 12690000
SPACE 12700000
CLI PL$MCT(,XR2),NOBIT ARE COMPONENT INDICES IN PL? 12710000
JNE IIMCTC JUMP IF INDICES ALREADY THERE. 12720000
MVC PL$MCT(1,XR2),TUBPCS(,XR1) PLUB MCT INDICES INTO PARM LIST 12730000
SPACE 12740000
IIMCTC EQU * CHECK MCT INDICES 12750000
TBF PLOPM(,XR2),OP$SYS SYSTEM OPERATION AND 12754000
TBN PLOPC(,XR2),OPPUT DOES OP INVOLVE PUT 12760000
TBF PL$MCT(,XR2),MCTOUT IS MCT OUTPUT CAPABLE 12770000
JF IIMCTG JUMP IF OUTPUT CAPABLE OR NO PUT 12780000
SPACE 12790000
* ERROR - SUB TERMINAL NAME SPECIFIED FOR OUTPUT BUT NO 12800000
* OUTPUT DEVICES ASSOCIATED WITH THIS NAME 12810000
SPACE 12820000
B C4TI2 BRANCH TO TERMINATION 12830000
DC AL1(TCCIOC) I/O CAPABILITY - NO MATCH 12840000
SPACE 12850000
IIMCTG EQU * CHECK INPUT 12860000
TBF PLOPM(,XR2),OP$SYS SYSTEM OPERATION AND 12864000
TBN PLOPC(,XR2),OPGET DOES OP INVOLVE GET 12870000
TBF PL$MCT(,XR2),MCTIN IS MCT INPUT CAPABLE 12880000
JF IIMCTR JUMP IF INPUT CAPABLE OR NO GET 12890000
SPACE 12900000
* ERROR - SUB TERMINAL NAME SPECIFIED FOR INPUT OPERATION BUT NO 12910000
* INPUT DEVICE ASSOCIATED WITH THIS NAME 12920000
SPACE 12930000
B C4TI2 BRANCH TO TERMINATION 12940000
DC AL1(TCCIOC) I/O CAPABILITY - NO MATCH 12950000
SPACE 12960000
IIMCTR B #### RETURN 12970000
.* 12990000
.MAPP ANOP 13000000
AIF (&NDF).CKIN . SKIP IF *NO* DFF SUPPORT 13010000
.* 13020000
EJECT 13023000
SPACE 13026000
*********************************************************************** 13030000
* INTERFACE TO MAPPING MODULE - XR2 POINTS AT PARAMETER LIST * 13040000
*********************************************************************** 13050000
SPACE 13060000
ENTRY IIMAPP 13070000
IIMAPP EQU * INTERFACE TO MAPPING 13080000
ST IIRTRN+3,ARR SAVE RETURN ADDRESS 13090000
L PLTUBA(,XR2),XR1 POINT TO TUB 13100000
TBN TUBTA1(,XR1),TASDFF IS MAPPING FOR THIS TERMINAL 13110000
JF IIRTRN BRANCH IF NOT MAPPING 13120000
L NCTCB@,XR1 POINT TO CURRENT TCB 13130000
CLI TCB@AS-1(,XR1),NOBIT IS MAPPING FOR THIS TASK? 13140000
L PLTUBA(,XR2),XR1 RESTORE TUB POINTER 13150000
JNE IIXXXX BRANCH IF YES 13160000
TBN PLOPC(,XR2),OPSTAT IS THIS A STATUS REQUEST? 13170000
JT IIRTRN BRANCH TO RETURN IF YES 13180000
SPACE 1 13190000
*----ERROR----DFF TERMINAL REFERENCED BY NON-DFF TASK 13200000
IIDFER EQU * 13220000
B C4TI2 BRANCH TO TERMINATION 13230000
DC AL1(TCCNDF) 13240000
SPACE 2 13245000
IIXXXX EQU * 13250000
L IIRTRN+3,XR1 SAVE ARR IN XR1 13260000
IIIIII B DFA000 BRANCH TO MAPPING MODULE 13270000
ST IIRTRN+3,XR1 STORE RETURN ADDRESS IN BRANCH 13280000
L NCTCB@,XR1 POINT TO THE TCB 13290000
L TCB@AS(,XR1),XR1 POINT TO THE PAS 13300000
MVC II@PRL,PASPL@(2,XR1) RESTORE PARM LIST SAVE AREA 13310000
L PLTUBA(,XR2),XR1 RESTORE TUB POINTER 13320000
IIRTRN B *-* 13330000
.CKIN ANOP 13350000
AIF (&MTNT NE '1').NTNTX .SKIP IF NO TNT MOVEOUT SUPP 13350200
EJECT 13350400
SPACE 2 13350600
*********************************************************************** 13350800
* MAP/UNMAP TNT MOVEOUT AREA. * 13351000
* IIMTNT - MAPES THE TNT MOVEOUT AREA INTO X'E000' SLOT. * 13351200
* IIUTNT - UNMAPS WHAT IIMTNT MAPPED. * 13351400
*********************************************************************** 13351600
SPACE 2 13351800
ENTRY IIMTNT @11 13352000
IIMTNT EQU * MAP TNT MOVEOUT AREA. @11 13352200
MVI IIMJMP+1,BRNOP SET INDICATOR FOR MAPPING @11 13352400
J IIMENT GO PROCESS REQUEST. @11 13352600
SPACE 1 @11 13352800
ENTRY IIUTNT @11 13353000
IIUTNT EQU * UNMAP TNT MOVEOUT AREA @11 13353200
MVI IIMJMP+1,BR SET INDICATOR FOR UNMAPPING @11 13353400
SPACE 1 @11 13353600
IIMENT ST IIMRTN+3,ARR SAVE RETURN ADDRESS @11 13353800
ST IIMXR2+3,XR2 SAVE INDEX REGISTER TWO @11 13354000
L NCTCB@,XR2 POINT TO USERS TCB. @11 13354200
CLC TCBATT-28(,XR2),TNTATT(2) ARE TNT ALREADY MAPED? @11 13354400
SPACE 1 @11 13354600
IIMJMP JC IIUMPT,# MAP/UNMAP INDICATOR. @11 13354800
SPACE 1 @11 13355000
IIMMPT JE IIMXR2 RETURN ALREADY MAPPED. @11 13355200
MVC IIMSAV(2),TCBATT-28(,XR2) SAVE ORIGINAL USERS ATRS @11 13355400
MVC TCBATT-28(,XR2),TNTATT(2) MOVE TNT ATRS TO USERS TCB @11 13355600
J IIMLCP LOAD THE ATRS MOVED. @11 13355800
SPACE 1 @11 13356000
IIUMPT JNE IIMXR2 RETUNED TNT ARE NOT MAPPED. @11 13356200
MVC TCBATT-28(,XR2),IIMSAV(2) RESTORE ORIGINAL USERS ATRS @11 13356400
SPACE 1 @11 13356600
IIMLCP LCP TCBATT-28(,XR2),AT1C1D LOAD WHAT EVER TCB ATRS @11 13356800
IIMXR2 LA #,XR2 RESTORE CALLERS XR2 @11 13357000
IIMRTN B # RETURN TO CALLER @11 13357200
SPACE 2 @11 13357400
AT1C1D EQU X'5E' 1C/1D ATR SLOTS (E000-E800) @11 13357600
IIMSAV DC XL2'0000' SAVE AREA FOR USERS ATRS @11 13357800
SPACE 1 @11 13358000
IITNTX EQU * SAVE AREA FOR TNT ENTRY FOUND@11 13358200
IITNAM DC CL6'TRMNAL' TERMINAL NAME SAVE AREA. @11 13358400
ORG IITNTX+TNTLN ROOM FOR TNT. @11 13358600
.NTNTX ANOP @11 13358800
EJECT @11 13359000
SPACE 2 13360000
*********************************************************************** 13370000
* QUEUE THE REQUEST ON THE @PRLQ OR @CSNRQ IN CCP COMMON * 13380000
* AREA WHICHEVER OWNS THE TUB. POINT XR1 TO CM'S OR CS'S * 13390000
* ECB BEFORE RETURNING TO CALLER. * 13393000
*********************************************************************** 13396000
SPACE 2 13400000
ENTRY IIQSUB 13410000
IIQSUB ST IIQRET+3,ARR SAVE RETURN ADDRESS 13420000
L PLTUBA(,XR2),XR1 POINT TO THE TUB 13430000
TBF TUBAT1(,XR1),TUBKNM THIS THE CONSOLE TUB OR 13432000
TBF TUBAT4(,XR1),TUBCHN * A DUMMY TASKCHAIN TUB ? 13433000
JF IIQBSC SKIP UPDATING REQUEST COUNTER 13434000
.* 13434100
AIF (&YBCSI EQ '0').NYUK0 . SKIP IF NO BSCC LINES. @O8 13434200
TBN PLOPC(,XR2),OPACI IS THIS AN ACCEPT OPCODE @06 13434300
TBF PLOPC(,XR2),ALLBIT-OPANW AND ONLY AN ACCEPT OPCODE? @06 13434400
JF IIQNRC NO, GO POST WHO EVER. @06 13434500
TBN TUBAT4(,XR1),TUBYUK IS THIS A BSCC TUB? @06 13434600
JT IIQBSC GO QUEUE AND POST $CC4CM. @06 13434700
L TUBLCB(,XR1),XR1 POINT TO THE LCB @06 13440000
ALC LCBNW#(1,XR1),X$0001 UPDATE THE NEW REQUEST COUNT @06 13450000
J IIQBSC GO QUEUE AND POST $CC4CM. @06 13450600
.NYUK0 ANOP 13451200
SPACE 1 13451800
IIQNRC L TUBLCB(,XR1),XR1 POINT TO THE LCB 13452400
ALC LCBNW#(1,XR1),X$0001 UPDATE THE NEW REQUEST COUNTER 13453000
.* 13453600
AIF (&YBCSI EQ '0').NYUK1 . SKIP IF NO BSCC LINES. @O8 13454200
L PLTUBA(,XR2),XR1 POINT TO THE TUB. @06 13454800
TBN TUBAT4(,XR1),TUBYUK IS THIS A BSCC TUB? @06 13455400
MVI IIQTST+1,BRNOP ASSUME IT TO BE BSCC TUB @06 13456000
LA @CSNRQ-PLCHN,XR1 AND QUEUE FOR $CC4CS. @06 13456600
JT IIQLOP GO QUEUE IF YES. @06 13457200
.NYUK1 ANOP 13457800
SPACE 1 13458400
IIQBSC LA @PRLQ-PLCHN,XR1 POINT $CC4CM'S QUEUE FIELD. 13460000
AIF (&YBCSI EQ '0').NYUK2 . SKIP IF NO BSCC LINES. @O8 13462000
MVI IIQTST+1,BR SET TO POST CM'S ECB. @06 13464000
SPACE 1 @06 13466000
.NYUK2 ANOP 13468000
IIQLOP CLI PLCHN-1(,XR1),NOBIT IS THIS THE END OF THE CHAIN? 13470000
JE IIQIT BRANCH TO QUEUE IF YES 13480000
L PLCHN(,XR1),XR1 POINT TO THE NEXT LIST IN CHAIN 13490000
B IIQLOP LOOP TO LOOK FOR LAST ONE 13500000
SPACE 13510000
* HAVE FOUND THE END OF THE CHAIN - QUEUE THIS REQUEST ON THE END 13520000
SPACE 13530000
IIQIT ST PLCHN(,XR1),XR2 ADD THE REQUEST ON THE END 13540000
SLC PLCHN(2,XR2),PLCHN(,XR2) CLEAR THE CHAIN POINTER 13550000
LA $CMECB,XR1 POINT TO $CC4CM'S ECB. 13551000
SPACE 1 @08 13552000
.* @08 13553000
AIF (&YBCSI EQ '0').NYUK3 . SKIP IF NO BSCC LINES. @O8 13554000
IIQTST JC IIQRET,#+BR BSCC/BSCA SWITCH. @06 13555000
LA $CSECB,XR1 POINT TO $CC4CS'S ECB. @06 13556000
SPACE 1 @06 13557000
.NYUK3 ANOP 13558000
IIQRET B *-* RETURN 13560000
TITLE 'COMMUNICATIONS&#.I/O&#.INTERFACE&#.--&#.SYSTEM&#.I/O' 13570000
SPACE 13575000
*********************************************************************** 13580000
* ENTRY POINT FOR I/O INTERFACE FOR THE SYSTEM * 13590000
*********************************************************************** 13600000
SPACE 13610000
ENTRY $CC4IS 13620000
$CC4IS EQU * I/O INTERFACE FOR SYSTEM 13630000
CCP DISABL,PMRQ DISABLE ALL INTERRUPTS 13640000
A X$0001,ARR POINT TO RIGHT END OF PARM LIST@ 13650000
ST MOVE+5,ARR STORE ADDR OF PARM LIST ADDR 13670000
A X$0001,ARR BUMP ARR TO NSI 13690000
SPACE 13700000
* MOVE PARM LIST ADDR TO II@PRL 13710000
MOVE MVC II@PRL(2),*-* MOVE PARM LIST ADDR TO II@PRL 13730000
SPACE 13740000
* SAVE THE REGISTERS 13750000
ST IICARR,XR2 SAVE XR2 13770000
L NCTCB@,XR2 POINT TO THE TCB 13780000
ST IIIX1(,XR2),XR1 SAVE XR1 IN THE TCB. 13790000
ST IIIIR(,XR2),ARR SAVE ARR IN THE TCB. 13800000
MVC IIIX2(2,XR2),IICARR SAVE XR2 THERE ALSO. 13810000
SPACE 13820000
*********************************************************************** 13830000
* POST CM/CS WITH TP IO REQUEST @21 13840000
* WAIT ON RESPONSE FROM CM/CS @21 13850000
* RETURN TO INVOKER * 13860000
*********************************************************************** 13870000
SPACE 2 13880000
L II@PRL,XR2 POINT XR2 AT PARM LIST 13890000
SLC PLCHN(2,XR2),PLCHN(,XR2) CLEAR CHAIN POINTER IN PARM LIST 13910000
SLC PL$RTC(4,XR2),PL$RTC(,XR2) ZERO INTERNAL RETURN CODE 13920000
* .AND INTERNAL OP-CODE 13930000
TBN PLOPC(,XR2),OPPUT .OPERATION INVOLVE PUT ? @08 13940000
JT IS0010 .YES, BRANCH @08 13950000
MVI PLRECA-1(,XR2),NOBIT .ZERO OUT RECORD ADDRESS 13960000
SPACE 13963000
* TAKE A TRACE AT THIS POINT 13966000
IS0010 EQU * 13970000
L PLTUBA(,XR2),XR1 POINT XR1 AT TUB 13990000
B CC4TT BRANCH TO TRACE ROUTINE 14000000
DC AL1(TTIS) TRACE FOR $CC4IS 14010000
EJECT 14020000
SPACE 14040000
*********************************************************************** 14050000
* HAVE TPIO REQUEST FOR A TERMINAL * 14060000
* POST CM/CS AND ISSUE WAIT @21 14070000
*********************************************************************** 14080000
SPACE 14090000
*POST CM FOR TP REQUEST 14100000
ISREQ EQU * HAVE TP REQUEST FOR $CC4CM 14120000
SPACE 14130000
* IF THIS IS AN INVITE OPERATION, MOVE PARM LIST TO THE TUB 14140000
TBN PLOPM(,XR2),OP$SYS IS THIS A SYSTEM REQUEST, AND 14160000
TBN PLOPC(,XR2),OPINV IS THIS AN INVITE OPERATION? 14170000
TBF PLOPC(,XR2),OPJRSH AND NOT JUST RESCHEDULED? @02 14175000
JF ISWTOP BRANCH IF NOT ALL TRUE. @02 14180000
SPACE 14181000
TBF TUBAT2(,XR1),TUBDTA TERMINAL IN DME? 14182000
TBN $FLGA,CPSHUT AND IS SHUTDOWN PENDING? 14183000
JF ISNDQI IF BOTH ARN'T TRUE SKIP RESET 14185000
SBF PLOPC(,XR2),OPINV DESCHEDULE THE SYSTEM INVITE 14186000
TBF PLOPC(,XR2),OPPUT TEST IF NOT A SYSTEM PUT @04 14186300
JT ISREGS EGNORE REQUEST ALL TOGETHER. @04 14186600
J ISWTOP GO RESTORE TUB POINTER 14187000
SPACE 14188000
ISNDQI MVC TUBPL+PL$RTC(16,XR1),PL$RTC(,XR2) MOVE PARM LIST TO TUB 14190000
LA TUBPL(,XR1),XR2 POINT XR2 AT TUB PARM LIST 14200000
SPACE 14210000
ISWTOP L PLTUBA(,XR2),XR1 RESTORE TUB POINTER IN XR1 14220000
.* 14230000
AIF (&N1050).NMCT9 . SKIP IF *NO* 1050 SUPPORT 14240000
.* 14250000
SPACE 14260000
* FIRST PLUG PL$MCT IS THIS IS MULTI-COMPONENT TERMINAL 14270000
B IIMCT FOR MCT (1050) ONLY 14290000
.* 14300000
.NMCT9 ANOP . CONTINUE HERE 14310000
.* 14320000
SPACE 14330000
ENTRY ISREQ1 14340000
ISREQ1 EQU * 14350000
TBF PLOPC(,XR2),OPJRSH RESCHEDULE ONLY REQUEST AND 14354000
TBN PLOPC(,XR2),OPGET DOES OP INVOLVE GET 14360000
TBF PLOPM(,XR2),OPSTOP BUT NOT STOP OP 14370000
JF ISMVPS JUMP IF GET NOT INVOLVED 14380000
SPACE 14390000
* OPERATION TO TERMINAL INVOLVES GET SO SET ON TUBIIS BIT 14400000
SPACE 14410000
SBN TUBAT2(,XR1),TUBIIS SET ON READ SCHEDULED BIT 14420000
SPACE 14430000
ISMVPS EQU * SET UP POST FIELD 14440000
AIF (&NSIMS).NMSG3 . SKIP IF CPU MSG & NO PORTS @21 14440700
TBF PLOPM(,XR2),OPSTOP+OPDISC STOP INVITE OR DISCONNECT? @08 14441400
TBN PLOPC(,XR2),OPPUT OR NOT A PUT OPERATION. @08 14442100
JF ISPOST JUMP IF EITHER. @08 14442800
AIF (&PORT).NSIO9 . SKIP IF NO PORTS SUPPORTED @21 14443500
TBN TUBPHY(,XR1),TUBAPT IS THIS A PORT TUB? @21 14444200
JT ISCNPT YES, THEN GO CANCEL THE PUT. @08 14444900
.NSIO9 ANOP @08 14445600
AIF (&NCPUM).NMSG1 . SKIP IF CPU MSG SUPPRESSED @18 14446300
J ISPOST SKIP TO POST @18 14447000
AGO .NMSG2 . SKIP TO SUPPRESS CODE @18 14447700
.NMSG1 ANOP @18 14448400
CLI TUBPHY(,XR1),TUBCPU IS THE IO TO A CPU? 14450000
JNE ISPOST GO TO POST CM IF NOT 14460000
L PLRECA(,XR2),XR1 POINT TO RECORD AREA 14490000
CLI 0(,XR1),SMESG IS THIS AN 'S' MESSAGE TO A CPU? 14500000
JNE ISPOST BRANCH TO POST IF NOT 14510000
.NMSG2 ANOP @18 14512000
ISCNPT MVI PLRECA-1(,XR2),NOBIT ZERO RECORD ADDRESS @08 14515000
SBF PLOPC(,XR2),OPPUT SET TO IGNORE THE PUT 14520000
TBN PLOPC(,XR2),OPGET IS A GET TO BE DONE? 14530000
JF ISREGS SKIP POST AND WAIT IF YES 14540000
.NMSG3 ANOP @18 14545000
EJECT 14550000
SPACE 2 14560000
*********************************************************************** 14570000
* QUEUE THE PARAMETER LIST ON THE APPROPRIATE LCB CHAIN * 14580000
*********************************************************************** 14590000
SPACE 2 14600000
ISPOST EQU * 14610000
B IIQSUB BRANCH TO QUEUE THE LCB 14620000
* XR1 POINTS TO CM OR CS ECB. 14625000
SPACE 1 14630000
*********************************************************************** 14640000
* BRANCH TO POST ROUTINE * 14650000
*********************************************************************** 14660000
SPACE 14670000
MVI PLECB(,XR2),NOBIT CLEAR ECB FLAG BYTE 14680000
CCP ENABLE,PMRQ REENABLE INTERRUPTS 14690000
SBF $FLGC,#NTRAC ALLOW TRACE 14700000
SVC 0 SUPERVISOR CALL 14720000
DC XL1'05' RIB FOR POST 14730000
SPACE 3 14740000
*********************************************************************** 14770000
* W A I T * 14780000
*********************************************************************** 14790000
SPACE 2 14800000
TBN PLOPM(,XR2),OP$SYS IS THIS REQUST TO BE WAITED ON? 14810000
JF ISREGS BRANCH IF NOT 14820000
LA PLECB(,XR2),XR1 POINT TO THE ECB 14830000
ISWAIT SVC 0 SUPERVISOR CALL 14840000
DC XL1'03' RIB FOR WAIT 14850000
TBN 0(,XR1),IIPOST WAS MY ECB POSTED? 14860000
BF ISWAIT LOOP BACK TO WAIT IF NOT 14870000
SPACE 3 14880000
*********************************************************************** 14890000
* RETURN HERE AFTER WAIT SATISFIED WITH POST * 14900000
*********************************************************************** 14910000
SPACE 14920000
ISREGS EQU * RESTORE THE REGISTERS 14930000
B CC4TT BRANCH TO TRACE 14940000
DC AL1(TTIIRT) TRACE ID 14950000
L NCTCB@,XR1 POINT TO THE TCB 14960000
CCP DISABL,PMRQ DISABLE ALL INTERUPTS. @05 14965000
MVC IICARR,IIIIR(2,XR1) SAVE THE RETURN ADDRESS 14970000
L IIIX2(,XR1),XR2 RESTORE XR2 14980000
L IIIX1(,XR1),XR1 RESTORE XR1 14990000
L IICARR,IAR RETURN TO CALLER 15000000
EJECT 15010000
*********************************************************************** 15020000
* CONSTANTS AND WORK AREAS * 15030000
*********************************************************************** 15040000
SPACE 15050000
IIVTNT DS AL2 SAVE AREA FOR TNT ENTRY ADDRESS 15060000
SMESG EQU C'S' IDENTIFIER FOR AN 'S' MESSAGE 15070000
IISTNL EQU 6 LENGHT OF SYMBOLIC TERMINAL NAME 15090000
CC0006 DC IL2'6' 2-BYTE BINARY 6 15100000
IIZERO EQU 0 15120000
MCTIN EQU X'F0' INPUT COMPONENT BITS 15130000
MCTOUT EQU X'0F' OUTPUT COMPONENT BITS 15140000
IIMAXK DC AL2(0071) MAX OUTPUT LENGTH FOR CONSOLE 15150000
IIMAXC DC AL2(0107) MAX LENGTH FOR WTO 15160000
ENABLE EQU X'78' INTERRUPTS ENABLED 15170000
DISABL EQU X'79' INTERRUPTS DISABLED 15180000
PMRQ EQU X'30' Q-CODE TO LOAD PMR 15190000
IIWTO EQU X'10' FUNCTION CODE FOR WTO 15200000
IIWTOR EQU X'20' FUNCTION CODE FOR WTOR 15210000
II@PRL DC XL2'00' SAVE AREA FOR PARAMETER LIST @ 15220000
IIPOST EQU X'40' ECB POST BIT 15230000
IIWAIT EQU X'80' ECB WAIT BIT 15240000
IISKIP EQU X'20' ECB SKIP BIT 15250000
IICARR DC XL2'00' ARR SAVE AREA 15260000
IIIIR EQU TCBPL+1 ARR SAVE AREA IN TCB 15270000
IIIX1 EQU TCBPL+3 XR1 SAVE AREA IN TCB 15280000
IIIX2 EQU TCBPL+5 XR2 SAVE AREA IN TCB 15290000
IINODA EQU X'20' CHARACTER FOR ZERO DATA - WTOR 15300000
IIBLNK EQU X'40' CHARACTER BLANK 15310000
DSFLAG EQU X'002F' FLAG BYTE FOR ENVIRONMENT INDS. 15322000
ENVSAV EQU X'80' SAVE ENVIRONMENT. 15324000
N2G0 EQU X'0015' DISPATCHER ADDRESS. 15326000
IITIMR EQU X'00' TIMER HOURS/MINUTES/SECONDS 15340000
IITMWT EQU X'10' TIMER WAIT FLAG 15350000
IIWFLG EQU X'07' WAIT FLAG DISPLACEMENT 15360000
IILN10 DC XL2'000A' WAIT DATA AREA LENGTH 15370000
SPACE 1 15374000
NHIGH EQU LO+EQ NOT HIGH TEST @10 15378000
NLOW EQU HI+EQ NOT LOW TEST @10 15382000
NEQ EQU HI+LO NOT EQUAL TEST. @10 15386000
EJECT 15390000
* WTO OR WTOR PARAMETER LIST 15400000
SPACE 15410000
DC XL1'FF' TYPE AND FORMAT OF WTO 15420000
DC AL1(X'00') SYSTEM OPTIONS 15430000
DC CL2'CP' COMPONENT IDENTIFICATION (CCP) 15440000
DC CL2'U-' MESSAGE ID - PART 1 15450000
DC AL1(IIWTO) FUNCTION AND OPTIONS @15 15460000
DC CL2' ' MESSAGE ID - PART 2 15470000
DC AL1(00) TEXT LENGTH @15 15480000
DC AL2(##) TEXT ADDRESS @15 15490000
DC AL1(80) REPLY LENGTH @15 15500000
IICNPM DC AL2(##) REPLY ADDRESS @15 15510000
SPACE 15520000
.* 15530000
AIF (&NBS).TAB . SKIP IF NO BSC OR PORTS @21 15570000
.* 15580000
IIBOPC EQU X'0F' DISPLACEMENT TO DTFOPC @14 15583000
IIBPUT EQU X'40' DTFOPC BYTE FOR A PUT @14 15586000
IIWORK DC XL2'00' WORK AREA FOR BLOCK LENGTH 15590000
II19 DC IL2'19' ADD LENGTH OF PARM LIST GETMAIN 15600000
.TAB ANOP 15610000
EJECT 15620000
*********************************************************************** 15630000
* OP CODE VALIDITY TABLE * 15640000
*********************************************************************** 15650000
SPACE 15660000
IIINVD EQU 0 INVALID OPERATION 15670000
IIVKNS EQU BIT5 BIT IN VALIDITY BYTE FOR VALID 15680000
* OPERATION WITH CONSOLE 15690000
IIVBLK EQU BIT6 BIT IN VALIDITY BYTE FOR VALID 15700000
* OPERATION WITH BLANK STN 15710000
IIVSTN EQU BIT7 BIT IN VALIDITY BYTE FOR VALID 15720000
* OPERATION WITH STN 15730000
TANDNE EQU X'11' TRUE AND NOT EQUAL CONDITION 15740000
SPACE 3 15750000
* OP CODE VALIDITY TABLE 15760000
SPACE 15770000
ENTRY IIVTBL 15780000
IIVTBL EQU * USER OP STN BLANKS CONSOLE 15790000
DC AL1(IIVSTN+IIVBLK+IIVKNS) 00 X X X 15800000
DC AL1(IIVSTN+IIVBLK) 01 X X 15810000
DC AL1(IIVSTN+IIVBLK+IIVKNS) 02 X X X 15820000
DC AL1(IIVSTN+IIVBLK+IIVKNS) 03 X X X 15830000
DC AL1(IIVSTN+IIVBLK+IIVKNS) 04 X X X 15840000
DC AL1(IIVSTN+IIVBLK) 05 X X 15850000
DC AL1(IIVSTN+IIVBLK+IIVKNS) 06 X X X 15860000
DC AL1(IIINVD) 07 15870000
DC AL1(IIVSTN+IIVBLK+IIVKNS) 08 X X X 15880000
DC AL1(IIVSTN) 09 X 15890000
DC AL1(IIVSTN+IIVBLK) 10 X X 15900000
DC AL1(IIINVD) 11 15910000
DC AL1(IIINVD) 12 15920000
DC AL1(IIINVD) 13 15930000
DC AL1(IIINVD) 14 15940000
DC AL1(IIINVD) 15 15950000
SPACE 2 15960000
* BIT 5 ON - VALID OP FOR CONSOLE 15970000
* BIT 6 ON - VALID OP FOR BLANKS 15980000
* BIT 7 ON - VALID OP FOR SYMBOLIC 15990000
* TERMINAL NAME 16000000
SPACE 4 16010000
IIVBYT DS CL1 VALIDITY BYTE - BIT SIGNIFICANT 16020000
* *** END OF MACRO '$E060 ******** 16030000
MEND 16040000