|
|
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: 74422 (0x122b6)
Types: s3xseg
Names: »S$E060«
└─⟦d0bc1a931⟧ Bits:30009189 5704-sc1.V08.ccp
└─⟦64693a1c9⟧
└─⟦this⟧ »S$E060«
MACRO 00010000
.********************************************************************** 00020000
.* * 00030000
.* NAME: $E060 * 00040000
.* * 00050000
.* MODIFICATION LEVEL: VERSION 7, MODIFICATION LEVEL 0 * 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 &BSCA . 1=BSCA SUPPORTED / 0=NOT 00250000
GBLB &NOB . 1=BSCA *NOT* SUPPORTED / 0=IS 00260000
.* 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 &NPBY . 0=BUSY PRINTER SUPPORTED 00352000
.* . 1=BUSY PRINTER NOT SUPPORTED 00354000
.* 00356000
GBLB &MIN . MAKE FUNCTIONS TRANSIENT/0=NO 00360000
.* 00370000
GBLB &RAI . 1=RESIDENT ACCEPT INPUT 00372000
GBLB &NRAI . 0=TRANSIENT ACCEPT INPUT 00374000
.* 00376000
GBLB &NCPUM . *NO* CPU S MESSAGES 00377000
.* . 1=*NO* MSGS / 0=SEND MSGS 00378000
.* 00379000
.*--------- LOCAL VARIABLES USED -----------------------------------* 00380000
.* 00390000
LCLC &# . USED FOR SINGLE BLANK 00400000
.* 00410000
TEXT 00420000
.* 00430000
&# SETC ' ' . SINGLE BLANK 00440000
.* 00450000
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. * 00640000
* * 00650000
* 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 INVITE INPUT PARAMETER LIST IS * 00760000
* DEQUEUED FROM THE TCBINQ CHAIN, AND 'CM' IS POSTED TO MOVE * 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'. * 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 BY MEANS OF QUEUING IT * 01120000
* ON THE PARM CHAIN AND POSTING HIM. IF THE OPERATION IS AN * 01130000
* INVITE INPUT, THE PARAMETER LIST IS MOVED TO THE TUB. * 01140000
* * 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
* 14 - INVALID OP WITH NO INVITES OUTSTANDING * 01360000
* 15 - INPUT AREA NOT LARGE ENOUGH FOR BSCA GET BLOCK * 01370000
* 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
* 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
* * 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
* RELEASE 3 * 01720000
* @01/INCR/0ES0327 - WAIT OPERATION CODE FROM USER. * 01730000
* @02/INCR/ - PROGRAM REQUEST UNDER FORMAT SUPPORT. * 01740000
* @03/APAR/ - DEADLY EMBRACE FIX. * 01750000
* @04/INCR/ES0418 - RESIDENT ACCEPT OPTION * 01760000
* @05/APAR/S306386 - NEXT DOWN SEARCH IF ACQUIRE FAILED * 01765000
* RELEASE 5 * 01765800
* @06/APAR/S307603 - CORRECTS AN ABNORMAL TERMINATION OF MLTA. * 01766600
* @07/APAR/S307609 - CORRECTS ID VERIFICATION ON A 3275 SW LINE. * 01767400
* @08/APAR/S307694 - INCORRECT ADDITIONAL INVITES AFTER SHUTDOWN. * 01768200
* @09/INCR/ - IOS PROC CHECK ON ALTERED SAVED Q BYTE. * 01769000
* RELEASE 6 * 01769100
* @10/APAR/S309195 - SUPRESS FREEMAIN OF 'S' MSG TO CPU RECORD AREA* 01769200
* @11/APAR/S309333 - INCORECT MOVE OF PARM LIST ON RESCHEDUAL * 01769300
* @12/APAR/S309332 - SHUTDOWN AND REINVITE ONLY - INVALID OPCODE. * 01769400
* @13/APAR/S308295 - MRTNEP ACCEPT WITH NO INVITED OWNED TUBS. * 01769500
* @14/APAR/S308397 - GET ATTRIBUTES PC-HALT IF BAD TNT GIVEN. * 01769600
* RELEASE 7 * 01769620
* @15/APAR/S310771 - CONVERT TO USE SCP $DLOG MACRO. * 01769640
* @16/INCR/ES0705 - BUSY PRINTER SUPPORT * 01769660
* @17/INCR/ES0708 - ALLOW S TYPE MESSAGES TO CPU TERMINALS * 01769680
* * 01769700
*********************************************************************** 01770000
EJECT 01780000
SPACE 01790000
*********************************************************************** 01800000
* ENTRY POINT FOR I/O INTERFACE FOR USER REUESTS 01810000
*********************************************************************** 01820000
SPACE 01830000
* UPON ENTRY FROM USER RELOCATABLE MODULE - XR2 POINTS AT PARM LIST 01840000
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
* XR2 POINTS AT THE PARM LIST 01960000
MNN IIMVBY+4,PLOPC(,XR2) MOVE OP CODE TO DISPLACMENT 01970000
LA IIVTBL,XR1 POINT XR1 AT OP CODE VALID. TBL. 01980000
IIMVBY MVC IIVBYT(1),*-*(,XR1) GET VALIDITY BYTE FROM TABLE 01990000
SPACE 02000000
* ------START----------------------@02 02010000
CLI PLOPC(,XR2),OPPNW+OPRUF IS THE OP IN THE VALID RANGE? 02020000
* -------END-----------------------@02 02030000
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
SPACE 02090000
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 P. L. 02140000
SLC PL$RTC(4,XR2),PL$RTC(,XR2) CLEAR INTERNAL RETURN CODE 02150000
* AND INTERNAL OP CODE 02160000
* ---------------------------- START -@01 02170000
CLI PLOPC(,XR2),OPWAIT IS OP WAIT REQUEST 02180000
JE IIFOND JUMP TO ISSUE WAIT 02190000
* ---------------------------- END ---@01 02200000
CLI PLOPC(,XR2),OPSHQ IS OP SHUTDOWN INQUIRY 02210000
JNE IICKAI JUMP IF NOT SHUTDOWN INQUIRY 02220000
SPACE 02230000
* SHUTDOWN INQURITY OP CODE 02240000
TBN $FLGA,CPSHUT HAS SHUTDOWN BEEN REQUESTED 02250000
JF IIBBCK JUMP IF NOT 02260000
SPACE 02270000
* SHUTDOWN REQUESTED SO PLUG IN PROPER RETURN CODE 02280000
MVI PLRTC(,XR2),RCXSHD PLUG SHUTDOWN REQUESTED RTN CODE 02290000
IIBBCK EQU * BRACN TO GO BACK 02300000
B IITEND BR TO RETURN TO USER 02310000
SPACE 02320000
* CHECK OP CODE TO SEE IF IT'S AN ACCEPT INPUT 02330000
SPACE 02340000
IICKAI EQU * CHECK FOR ACCEPT INPUT 02350000
TBN PLOPC(,XR2),OPACI IS THIS AN ACCEPT INPUT? 02360000
TBF PLOPC(,XR2),BIT4+BIT6+BIT7 AND NOTHING ELSE? 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 OPERTAION 02410000
EJECT 02420000
*********************************************************************** 02430000
* LOCATE SYMBOLIC TERMINAL NAME IN THE TERMINAL NAME TABLE 02440000
*********************************************************************** 02450000
SPACE 02460000
L @TNT,XR1 POINT XR1 AT FIRST TNT ENTRY 02470000
* CHECK FOR END OF TNT 02480000
* XR1 POINTS AT TNT 02490000
SPACE 02500000
L PLRECA(,XR2),XR2 POINT XR2 AT RECORD AREA 02510000
SPACE 02520000
IITNTN CLI TNTCCP(,XR1),STOPER 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
SPACE 02570000
CLC IISTNL-1(IISTNL,XR2),TNTNAM(,XR1) COMPARE TNT STN 02580000
JH IILOOK JUMP HIGH TO LOOK AGAIN 02590000
JE IIFOND JUMP IF FOUND IN TNT 02600000
SPACE 02610000
* NOT FOUND - HAVE PROGRAM ERROR 02620000
SPACE 02630000
IINFND EQU * STN NOT FOUND IN TNT 02640000
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
JE IIGTA SKIP TERMINATION IF YES 02680000
B C4TI2 BRANCH TO TERMINATION 02690000
DC AL1(TCCNNF) TERMINAL NAME NOT FOUND 02700000
SPACE 02710000
* LOOK SOME MORE 02720000
* DETERMINE HOW MUCH TO BUMP TNT REGITER POINTER 02730000
SPACE 02740000
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
EJECT 02780000
*********************************************************************** 02790000
* SYMBOLIC TERMINAL NAME WAS FOUND IN TNT * 02800000
* DETERMINE IF OPERATION IS VALID FOR THE TYPE TNT ENTRY FOUND * 02810000
*********************************************************************** 02820000
SPACE 02830000
* XR1 POINTS AT PROPER TNT ENTRY 02840000
SPACE 02850000
IIFOND EQU * STN FOUND IN TNT 02860000
L II@PRL,XR2 RESTORE PARM LIST POINTER 02870000
B CC4TT BRANCH TO TRACE ROUTINE 02880000
DC AL1(TTII) TRACE FOR $CC4II 02890000
* ---------------------------- START -@01 02900000
CLI PLOPC(,XR2),OPWAIT IS OP WAIT REQUEST 02910000
JNE IICKNM JUMP IF NOT WAIT REQUEST 02920000
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
IIWAT1 EQU * 03000000
ALC PLRECA(2,XR2),CC0006 BUMP POINTER TO DATA AREA 03010000
L PLRECA(,XR2),XR2 LOAD WAIT DATA AREA POINTER 03020000
MVI IIZERO(,XR2),IITIMR SET TIME INDICATOR FOR HHMMSS 03030000
SBN IIZERO(,XR2),IITMWT SET THE WAIT FLAG 03040000
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
IICKNM EQU * 03100000
* ---------------------------- END ---@01 03110000
L PLRECA(,XR2),XR2 RESTORE RECORD AREA POINTER 03120000
SPACE 03130000
TBN TNTFLG(,XR1),TNTBLK IS STN ALL BLANKS 03140000
JF IINBLK JUMP IF NOT ALL BLNAKS 03150000
SPACE 03160000
* HAVE SYMBOLIC TERMINAL NAME OF ALL BLANKS 03170000
SPACE 03180000
* THUS THE TERMINAL TO WHICH THE OPERATION IS DIRECTED IS 03190000
* THE ONE AND ONLY REQUESTOR OF A SINGLE REQUESTOR PROGRAM 03200000
SPACE 03210000
* DETERMINE IF OPERATION IS VALID FOR STN OF ALL BLANKS 03220000
SPACE 03230000
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
SPACE 03280000
B C4TI2 BRANCH TO TERMINATION 03290000
DC AL1(TCCIBL) INVALID BLANK NAME 03300000
EJECT 03310000
IICKBK EQU * CHECK VALIDITY OF BLANK NAME 03320000
SPACE 03330000
* FIRST CHECK TO SEE IF PROGRAM IS NON-MRTS PROGRAM 03340000
SPACE 03350000
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
SPACE 03410000
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
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
SPACE 03560000
* BLANK NAME COMPLETELY VALID 03570000
SPACE 03580000
IIKRQ EQU * 03590000
L TUBTNT(,XR1),XR1 POINT XR1 AT THIS TUBS TNT ENTRY 03600000
MVC IISTNL-1(IISTNL,XR2),TNTNAM(,XR1) MOVE STN TO RECORD AREA 03610000
J IINBLK JUMP TO HANDLE FURTHER 03620000
SPACE 03630000
* ERROR - BLANK NAME TO NON-MRTS WITH REQUESTOR RELEASED ALREADY 03640000
SPACE 03650000
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
*********************************************************************** 03720000
SPACE 03730000
* XR1 POINTS TO TNT ENTRY 03740000
* ASSURE THAT THIS TNT HAS BEEN ASSIGNED TO A TUB 03750000
SPACE 03760000
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 ASSINGED TO A TUB 03810000
SPACE 03820000
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
L II@PRL,XR2 POINT XR2 AT PARM LIST 03870000
.* 03880000
AIF (&NOM).NML1 . SKIP IF *NO* MLTA 03890000
.* 03900000
*********************************************************************** 03910000
* FOR 1050 ONLY 03920000
*********************************************************************** 03930000
SPACE 03940000
* DETERMINE IF THIS IS SUB-TERMINAL NAME 03950000
SPACE 03960000
MVC PL$MCT(1,XR2),TNTMCT(,XR1) MOVE MCT INDICES INTO PARM LIST 03970000
CLI TNTMCT(,XR1),NOBIT IS THIS SUB-TERMINAL NAME 03980000
JE IISTNT JUMP IF NOT SUB-TERMINAL NAME 03990000
SPACE 04000000
* HAVE SUB-TERMINAL NAME SO MUST GET ADDR OF MASTER TNT FROM 04010000
* TNTTNT FIELD 04020000
SPACE 04030000
L TNTTNT(,XR1),XR1 POINT XR1 AT MASTER TNT 04040000
SPACE 04050000
.NML1 ANOP 04060000
ENTRY IISTNT 04070000
IISTNT EQU * SAVE TNT ADDR 04080000
*********************************************************************** 04090000
ST IIVTNT,XR1 SAVE TNT ENTRY ADDRESS 04100000
MVC PLTUBA(2,XR2),TNTTUB(,XR1) MOVE TUB @ TO PARM LIST 04110000
IIGTA ALC PLRECA(2,XR2),CC0006 ADD STN LENGTH TO BUMP RECORD 04120000
* ADDRESS TO DATA ADDRESS 04130000
EJECT 04140000
SPACE 04150000
* CHECK REQUEST TYPE - DETERMINE IF IT IS STATUS REQUEST 04160000
SPACE 04170000
TBN PLOPC(,XR2),OPSTAT IS IT STATUS OPERATION 04180000
JF IITKNS JUMP IF NOT NOT STATUS OPERATION 04190000
SPACE 04200000
* HAVE STATUS OPERATION (RELEASE OR GET ATTRIBUTES) 04210000
SPACE 04220000
ST PL$TNT(,XR2),XR1 PLUG TNT ADDR INTO PARM LIST 04230000
B CC4PI BRACNH TO BRING IN TRANSIENT 04240000
DC AL1(CC4GA) GET ATTRIBUTES TRANSIENT ID 04250000
SPACE 04260000
CCP DISABL,PMRQ DISABLE INTERUPTS. 04310000
CLI PLTUBA-1(,XR2),NOBIT TEST IF TUB WAS FOUND? @14 04312000
BE IITEND NO THEN EXIT II. @14 04314000
SPACE 04316000
L NCTCB@,XR1 POINT XR1 AT CURRENT TCB 04320000
CLI TCBCMP(,XR1),NOBIT IS TCB COMPLETION CODE ZERO 04330000
.* 04340000
AIF (&DFF).MAP1 . SKIP IF DFF SUPPORTED 04350000
.* 04360000
BE IISEND BRANCHOUT IF ZERO (OK) 04370000
.* 04380000
.MAP1 AIF (&NDF).NMAP1 . SKIP IF *NO* DFF SUPPORT 04390000
.* 04400000
JNE IIBTCB BRANCH TO HALT IF NON-ZERO 04410000
SPACE 04420000
*********************************************************************** 04430000
* CHECK FOR MAPPING IF GOOD COMPLETION CODE * 04440000
*********************************************************************** 04450000
SPACE 04460000
TBN PLOPC(,XR2),OPREL IS THIS A RELEASE REQUEST? 04470000
BT IIMAPP BRANCH TO MAPPING IF YES 04480000
B IISEND 04490000
.NMAP1 ANOP 04500000
EJECT 04510000
*********************************************************************** 04520000
* BAD TCB COMPLETION CODE * 04530000
*********************************************************************** 04540000
SPACE 04550000
ENTRY IIBTCB 04560000
IIBTCB EQU * 04570000
MVC IITCMP(1),TCBCMP(,XR1) MOVE TCB COMP CODE SUCH THAT ARR 04580000
* POINTS TO IT 04590000
SPACE 04600000
B C4TI2 BRANCH TO TERMINATE THIS TASK 04610000
IITCMP DS CL1 TCB COMPLETION CODE 04620000
SPACE 04630000
*********************************************************************** 04640000
* DETERMINE IF THIS TUB IS THE CONSOLE 04650000
*********************************************************************** 04660000
SPACE 04670000
IITKNS EQU * TEST FOR CONSOLE TUB 04680000
TBN TNTFLG(,XR1),TNTKNS IS IT CONSOLE 04690000
L TNTTUB(,XR1),XR1 POINT XR1 AT TUB 04700000
JT IIKNSL JUMP IF CONSOLE TO CONSOLE HNDLR 04710000
SPACE 04720000
* HAVE REQUEST TO TERMINAL - VALIDATE IT 04730000
EJECT 04740000
*********************************************************************** 04750000
* PREPARE FOR PHYSICAL TP IO - MUST VALIDATE REQUEST FIRST 04760000
*********************************************************************** 04770000
SPACE 04780000
* VALIDATE THAT THIS TUB BEONGS TO TCB REQUESTING IT 04790000
SPACE 04800000
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
SPACE 04870000
B C4TI2 BRANCH TO TERMINATION 04880000
DC AL1(TCCNAP) TERMINAL NOT ALLOCATED TO PROG 04890000
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 CORRECT 04960000
* TNT ENTRY 04970000
CLC TUBTNT(2,XR1),IIVTNT DOES TUB PT TO PROPER TNT 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
SPACE 05030000
B C4TI2 BRANCH TO TERMINATION 05040000
DC AL1(TCCNAN) NOT ALLOCATED BY THIS NAME 05050000
EJECT 05060000
* ASSURE TERMINAL DOES NOT HAVE OUTSTANDING IMPLICIT INVITE INPUT 05070000
* ONLY ACCEPT INPUT CAN BE ISSUED TO TERMINAL WITH IMPLICIT INVITE INPT 05080000
* WHICH HAS NOT BEEN SATISFIED 05090000
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 INV. INPUT 05150000
* UNSATISFIED 05160000
* DATA FROM PROGRAM REQUEST OUTSTANDING 05170000
SPACE 05180000
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 INVITE INP 05250000
SPACE 05260000
* TEST FOR TUB IN COMMAND INTERRUPT MODE 05270000
* IF YES, THEN MUST HAVE INVITE OUTSTANDING TO TERMINAL 05280000
SPACE 05290000
TBN TUBAT2(,XR1),TUBDTA+TUBCMD IS TUB IN COM'ND INTERRUPT MODE 05300000
JT IIVSCH JUMP IF CMD INT SINCE INV SCHED. 05310000
TBN TUBAT2(,XR1),TUBIIS IS INVITE INPUT SCHEDULED ON TUB 05320000
JF IINIIS JUMP IF NO INVITE SCHEDULED 05330000
SPACE 05340000
EJECT 05350000
* HAVE INVITE INPUT SCHEDULED - THIS OP IS VALID ONLY IF IT IS 05360000
* A STOP INVITE INPUT 05370000
SPACE 05380000
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
* INVALID OPERATION WITH INVITE INPUT OUTSTANDING 05430000
SPACE 05440000
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
SPACE 05490000
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
SPACE 05550000
B C4TI2 BRANCH TO TERMINATION 05560000
DC AL1(TCCNIO) NO INVITES OUTSTANDING 05570000
EJECT 05580000
IIIOCP EQU * CHECK FOR PROPER IO CAPABILITY 05590000
*********************************************************************** 05600000
MNN IIIOTS+1,PLOPC(,XR2) MOVE RIGHTMOST 4 BITS OF OP CODE 05610000
* TO TBN INSTURCTION 05620000
SBF IIIOTS+1,X'FC' SET OFF ALL BUT RIGHTMOST 2 BITS 05630000
SPACE 05640000
* NOW READY TO TEST TERMINAL CHARACTERISTICS VS REQUEST IO 05650000
SPACE 05660000
IIIOTS TBN TUBCHR(,XR1),*-* TEST TUB FOR IO CAPABILITY 05670000
JT IIRQTY JUMP IF I/O OKAY 05680000
SPACE 05690000
*I/O CAPABILTY DOES NOT MATCH REQUEST 05700000
SPACE 05710000
B C4TI2 BRANCH TO TERMINATION 05720000
DC AL1(TCCIOC) I/O CAPABILITY DOES NOT MATCH 05730000
* DETERMINE REQUEST TYPE 05740000
SPACE 05750000
* VALIDATE OP CODE AND MODIFIER TO EXTENT THAT THOSE BITS THAT MUST 05760000
* BE OFF FOR A USER REQUEST ARE OFF 05770000
SPACE 05780000
* CHECK THAT OP CODE IS VALID FOR CONSOLE AS TERMINAL NAME 05790000
SPACE 05800000
IIKNSL EQU * CONSOLE REQUEST HANDLER 05810000
TBN IIVBYT,IIVKNS IS OP VALID FOR CONSOLE 05820000
* ------START----------------------@02 05830000
CLI PLOPC(,XR2),OPPUT+OPRUF AND NOT A RUF PUT MESSAGE ? 05840000
JC IIKLEN,TANDNE JUMP IF VALID 05850000
* ------END------------------------@02 05860000
SPACE 05870000
* ERROR - HAVE OP CODE WHICH IS VALID OP BUT NOT FOR CONSOLE 05880000
SPACE 05890000
B C4TI2 BRANCH TO TERMINATION 05900000
DC AL1(TCCIOK) INVALID OP FOR CONSOLE 05910000
EJECT 05920000
SPACE 05930000
* CHECK FOR OUTPUT LENGTH TO CONSOLE TOO LARGE 05940000
SPACE 05950000
IIKLEN EQU * TEST CONSOLE LENGTH FOR > 71/107 05960000
TBN PLOPC(,XR2),OPPUT IS THIS AN OUTPUT OPERATION? 05970000
JF IIRQTY BRANCH IF NOT 05980000
CLC PLOUTL(2,XR2),IIMAXK LENGTH GREATER THAN 71? 05990000
JNH IIRQTY 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
IITOLG EQU * 06050000
SPACE 06060000
* ERROR - OUTPUT LENGTH TO CONSOLE GREATER THAN 71 FOR WTOR OR 06070000
* GREATER THAN 117 FOR A WTO. 06080000
SPACE 06090000
B C4TI2 BRANCH TO TERMINATION 06100000
DC AL1(TCCIKL) INVALID CONSOLE LENGTH 06110000
SPACE 06120000
IIRQTY EQU * 06130000
TBF PLOPM(,XR2),OP$SYS+OPOLT+OPDISC+OPUNAM CHECK OP MOD BITS 06140000
* TO ASSURE VALIDITY SET 06150000
JT IIVLNO JUMP IF OKAY 06160000
SPACE 06170000
* ERROR - OP MODIFER HAS INVALID BITS FOR USER REQUEST 06180000
SPACE 06190000
B C4TI2 BRANCH TO TERMINATION 06200000
DC AL1(TCCIOP) INVALID OP OR MODIFIER 06210000
EJECT 06220000
* VALIDATE RECORD LENGTHS PASSED IN THE PARM LIST FROM THE USER 06230000
SPACE 06240000
IIVLNO EQU * VALIDATE OUTPUT LENGTH 06250000
SPACE 06260000
.* 06270000
AIF (&NOM).NML2 . SKIP IF *NO* MLTA SUPPORT 06280000
.* 06290000
B IIMCT BRN TO SEE IF MCT AND VALID 06300000
SPACE 06310000
.NML2 ANOP 06320000
ENTRY IIVLNN 06330000
IIVLNN EQU * 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
SPACE 06390000
CLC PLOUTL(2,XR2),X$0000 COMPARE LENGTH VS ZERO 06400000
JH IIFUTH JUMP IF GREATER THAN ZERO 06410000
TBF TUBAT1(,XR1),TUBKNM IS THIS THE CONSOLE? 06420000
JF IIIOL BRANCH TO ERROR IF YES 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
SPACE 06490000
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 (&NOB).NBSC1 . SKIP IF *NO* BSCA SUPPORT 06560000
.* 06570000
* ZERO LENGTH IS OK IF THIS IS PUT-EOT/EOB AND HE OWNS THE BSCA LINE 06580000
SPACE 06590000
ENTRY IIVLNP 06600000
IIVLNP EQU * 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
* -----START-----------------------@02 06700000
TBF PLOPC(,XR2),OPRUF-OPEAU AND NOT A RUF PUT ? 06710000
JT IIVLNI BRANCH IF YES - LENGTH OK 06720000
* ------END------------------------@02 06730000
.BEEP ANOP 06740000
.NBSC1 ANOP 06750000
* ERROR HAVE OUTPUT LENGTH NOT GREATER THAN ZERO 06760000
SPACE 06770000
ENTRY IIIOL 06780000
IIIOL EQU * 06790000
B C4TI2 BRANCH TO TERMINATION 06800000
DC AL1(TCCIOL) INVALID OUTPUT LENGTH 06810000
EJECT 06820000
SPACE 2 06830000
* CHECK FOR OUTPUT LENGTH GREATER THAN TP BUFFER LENGTH 06840000
SPACE 06850000
IIFUTH EQU * 06860000
AIF (&NOB).NBTH 06870000
TBN TUBTA2(,XR1),TASITB IS THIS PUT WITH ITB? 06880000
JF IINITB BRANCH IF NOT 06890000
CLC PLOUTL(2,XR2),TUBRCL(,XR1) OUTPUT LENGTH < RECORD LENGTH? 06900000
JNL IINITB BRANCH PAST TERMINATION IF NOT 06910000
SPACE 06920000
* *ERROR* OUTPUT LENGTH LESS THAT RECORD LENGTH FOR PUT ITB 06930000
SPACE 06940000
B C4TI2 BRANCH TO TERMINATION 06950000
DC AL1(TCCITB) 06960000
IINITB EQU * 06970000
TBN PLOPC(,XR2),OPBLK IS THIS PUT EOT/EOB? 06980000
TBF TUBTA1(,XR1),TASDFF AND NOT MAPPING? 06990000
TBN TUBCHR(,XR1),TUBLNE BSCA? 07000000
JF IIVLNI BRANCH OUT IF NOT ALL 07010000
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
* ------START----------------------@03 07070000
CLC IIWORK(2),#TPPUT IS OUTPUT LENGTH GREATER? 07080000
* ----END--------------------------@03 07090000
JNH IIVLNI BRANCH PAST TERMINATION IF NOT 07100000
SPACE 07110000
* *ERROR* OUTPUT LENGTH IS GREATER THAN TP BUFFER LENGTH 07120000
SPACE 07130000
B C4TI2 BRNACH TO TERMINATION 07140000
DC AL1(TCCLRG) 07150000
EJECT 07160000
SPACE 07170000
* CHECK INPUT LENGTH FOR GREATER THAN ZERO IF APPROPRIATE 07180000
SPACE 07190000
.NBTH ANOP 07200000
ENTRY IIVLNI 07210000
IIVLNI EQU * 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
* OPERATION IS SCHEDULED ON TERMIN 07270000
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
SPACE 07320000
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 (&NOB).NBS3 . SKIP IF *NO* BSCA SUPPORT 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
JF IIINRT BRANCH OUT IF NOT 07460000
CLC PLINL(2,XR2),TUBRCL(,XR1) IS RECORD AREA LARGE ENOUGH? 07470000
JNL IIINRT BRANCH OUT IF YES 07480000
SPACE 07490000
* ERROR - RECORD AREA NOT LARGE ENOUGH FOR BSCA ITB * 07500000
SPACE 07510000
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 (&NOB).NBS31 . SKIP IF *NO* BSCA SUPPORT 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 $BDOPC(,XR1),$BOPUT WAS LAST OPERATION A PUT? 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
SPACE 07860000
* -----START-----------------------@03 07870000
CLC PLINL(2,XR2),#TPANY COMPARE INPUT LENGTH VS TP BUF 07880000
* -----END-------------------------@03 07890000
JNH IIIREQ JUMP IF INPUT LENGTH NOT HIGH 07900000
SPACE 07910000
* ERROR - FOR INVITE INPUT - THE INPUT LENGTH IS GT TP BUFFER SIZE 07920000
SPACE 07930000
B C4TI2 BRANCH TO TERMINATION 07940000
DC AL1(TCCTPB) TP BUFFER LENGTH PROBLEM 07950000
EJECT 07960000
SPACE 5 07970000
*********************************************************************** 07980000
* POST $CC4CM AND ISSUE WAIT * 07990000
* OR ISSUE WTO/WTOR FOR CONSOLE REQUEST * 08000000
*********************************************************************** 08010000
SPACE 08020000
IIOUTR EQU * 08030000
SPACE 08040000
ENTRY IIIREQ 08050000
IIIREQ EQU * I/O INTERFACE REQUEST 08060000
SPACE 08070000
* DETERMINE IF REQUEST IS FOR CONSOLE OR $CC4CM 08080000
SPACE 08090000
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 08130000
AIF (&NPBY).NBSY1 SKIP IF NOT BUSY PRINTER 08132000
JT IIBUSY NOT CONSOLE,TEST BUSY PRNT 08134000
AGO .NM2RT 08136000
.NBSY1 ANOP 08138000
JT IIUPST NOT CONSOLE, GO TO POST 08140000
.NM2RT ANOP 08143000
AIF (&NDF).SK1RT SKIP IF NOT MAPPING 08146000
JT IICKMP NOT CONSOLE, CHECK FOR MAPPING 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 @15 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
MVC $LGOL(1,XR2),PLOUTL(,XR1) MOVE IN OUTPUT LENGTH @15 08330000
MVC $LGOAA(2,XR2),PLRECA(,XR1) MOVE IN RECORD AREA ADDRESS@15 08340000
MVC $LGON(1,XR2),PLINL(,XR1) MOVE IN INPUT LENGTH @15 08350000
MVC $LGO@@(2,XR2),PLRECA(,XR1) MOVE IN RECORD AREA ADDRESS@15 08360000
MVI $LGOTY(,XR2),IIWTO SET OP CODE TO WTO @15 08370000
TBN PLOPC(,XR1),OPGET IS THIS A WTOR? 08380000
JF IIDOIT BRANCH IF YES 08390000
MVI $LGOTY(,XR2),IIWTOR SET OP CODE TO WTOR @15 08400000
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
SLC PLEFFL(2,XR1),PLEFFL(,XR1) SET EFFEL TO ZERO 08530000
L PLRECA(,XR1),XR2 POINT TO THE RECORD AREA 08540000
CLI 0(,XR2),IINODA WAS ANY DATA ENTERED? 08550000
JE IICDNE BRANCH OUT IF YES-EFFL = 0 08560000
MVC PLEFFL(2,XR1),PLINL(,XR1) SAVE MAXIMUM INPUT LENGTH 08570000
A PLINL(,XR1),XR2 POINT TO THE 08580000
IICLOP A IIMIN1,XR2 END OF THE AREA 08590000
CLI 0(,XR2),IIBLNK IS THE CHARACTER A BLANK? 08600000
JNE IICDNE BRANCH OUT IF YES 08610000
SLC PLEFFL(2,XR1),X$0001 DECREMENT EFFL BY ONE 08620000
B 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
SPACE 08820000
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
IIAGIN CLI 0(,XR1),STOPER 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
SPACE 08930000
B C4TI2 BRANCH TO TERMINATION 08940000
DC AL1(TCCICN) INVALID COPY DUE TO NAME NF 08950000
SPACE 08960000
IINSTP CLC IISTNL-1(IISTNL,XR2),IISTNL-1(,XR1) IS THIS TNT FOR COPY? 08970000
JE IITNT BRANCH IF YES 08980000
LA TNTLN(,XR1),XR1 POINT TO NEXT TNT 08990000
B IIAGIN GO CHECK THIS ONE 09000000
EJECT 09010000
IITNT L TNTTUB(,XR1),XR1 POINT TO COPY TUB 09020000
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
IIINCP EQU * INVALID DEVICE FOR COPY 09140000
SPACE 09150000
* ERROR - COPY REQUEST INVALID WITH 3275 * 09160000
SPACE 09170000
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
SPACE 09280000
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 (&NPBY).NBSY2 SKIP IF NO BUSY PRINTER 09332000
JF IIBUSY BRANCH IF NOT 09334000
AGO .BSY1 09336000
.NBSY2 ANOP 09338000
JF IIUPST BRANCH IF NOT 09340000
.BSY1 ANOP 09345000
SPACE 09350000
* ERROR - PUT OVERRIDES REQUESTED BUT NO MAPPING ON TERMINAL * 09360000
SPACE 09370000
B C4TI2 BRANCH TO TERMINATION 09380000
DC AL1(TCCIPA) INVALID PUT OVERRIDES 09390000
EJECT 09400000
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
SPACE 09500000
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
SPACE 09560000
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 @16 09590300
EJECT @16 09590600
SPACE 1 @16 09590900
****************************************************************** @16 09591200
* BUSY PRINTER SUPPORT * @16 09591500
* TEST IF DEVICE IS BUSY, IF IT IS THEN DO A SYSTEM INVITE * @16 09591800
* TO TEST WHETHER THE DEVICE IS STILL BUSY. * @16 09592100
****************************************************************** @16 09592400
SPACE 1 @16 09592700
ENTRY IIBUSY @16 09593000
IIBUSY EQU * BUSY PRINTER TEST. @16 09593300
L II@PRL,XR2 RELOAD USERS PARM LIST. @16 09593600
TBN TUBAT4(,XR1),TUBBSY IS DEVICE BUSY? @16 09593900
JF IIUPST NO, GO TO POST @16 09594200
SPACE 1 @16 09594500
L NCTCB@,XR2 POINT TO USERS TCB @16 09594800
SBN TUBAT2(,XR1),TUBIIS SET ON INVITE BIT IN TUB @16 09595100
SBN TUBAT4(,XR1),TUBWAT INDICATE WAITING FOR STATUS @16 09595400
SLC TCBPL+PLLEN-1(PLLEN,XR2),TCBPL+PLLEN-1(,XR2) BLANK IT @16 09595700
MVI TCBPL+PLOPM(,XR2),OP$SYS INDICATE A SYSTEM OPERATION @16 09596000
MVI TCBPL+PLOPC(,XR2),OPINV INDICATE AN INVITE OPERATION @16 09596300
ST TCBPL+PLTUBA(,XR2),XR1 PUT TUB ADDRESS IN PARM LIST @16 09596600
LA TCBPL(,XR2),XR2 POINT TO PARM LIST @16 09596900
J IIPRBQ GO QUEUE REQUEST. @16 09597200
.NBSY3 ANOP @16 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 2 09710000
** NOW MOVE THE PARAMETER LIST TO THE TCB FOR CM TO REFERENCE 09720000
SPACE 2 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 09790000
IIPRBQ EQU * @16 09795000
B IIQSUB GO QUEUE THE LIST ON @PRLQ 09800000
L II@PRL,XR2 POINT TO PARM LIST TO SAVE IT 09810000
SBF $FLGC,#NTRAC ENABLE TRACE BEFORE CM POST 09820000
SPACE 3 09830000
CCP ENABLE,PMRQ REENABLE INTERRUPTS 09840000
SPACE 09850000
* NOW POST $CC4CM THAT HE HAS A TP REQUEST TO HANDLE 09860000
SPACE 09870000
LA $CMECB,XR1 POINT TO CM'S ECB 09880000
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
IIDOWT EQU * ISSUE THE WAIT 09940000
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
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 @16 10021000
SPACE 1 @16 10022000
L PLTUBA(,XR2),XR1 POINT TO TUB @16 10023000
CLI PLOPM(,XR2),OP$SYS IF SYSTEM OPERATION, MUST BE @16 10024000
BE IIBUSY FOR BUSY PRINTER, SO LOOP @16 10025000
.NBSY4 ANOP @16 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 10140000
*********************************************************************** 10150000
* REENTER $CC4II AT THIS POINT AFTER USER REQUEST SCHEDULED 10160000
*********************************************************************** 10170000
SPACE 5 10180000
ENTRY IIREND 10190000
IIREND EQU * RETURN TO USER PROGRAM 10200000
SPACE 2 10210000
*********************************************************************** 10220000
* NOW MOVE THE PARAMETER LIST BACK TO USER PROGRAM AREA * 10230000
*********************************************************************** 10240000
SPACE 2 10250000
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
IIUT 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
EJECT 10340000
IISEND EQU * RETURN 10350000
SLC PLRECA(2,XR2),CC0006 RESTORE CORRECT PLRECA 10360000
IIAEND EQU * 10370000
.* 10380000
AIF (&NDME).NDME1 . SKIP IF *NO* DME SUPPORT 10390000
.* 10400000
SPACE 10410000
*********************************************************************** 10420000
* CANCEL REQUEST ANALYSIS * 10430000
*********************************************************************** 10440000
SPACE 10450000
* XR2 WILL POINT XT THE PARM LIST (GET OR INVITE INPUT) 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
*********************************************************************** 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) '0C' TRACE ID 10790000
SPACE 10800000
AIF (&NRAI).NRES 10800080
************************************************* 10800160
*------RESIDENT ACCEPT INPUT IS BEING USED------* 10800240
SPACE 2 10800320
L NCTCB@,XR1 CURRENT TASK 10800400
CLI PLOPM(,XR2),NOBIT NO OP-MODIFIER BITS ALLOWED 10800480
TBF PLOPC(,XR2),BIT0+BIT1+BIT2+BIT3 HIGH FOUR BITS OFF 10800560
JC IIVINL,X'16' OK CONTINUE 10800640
**************************************** 10800720
*OP-CODE ERROR MUST BE X'04' ONLY * 10800800
**************************************** 10800880
B C4TI2 ERROR IN OP CODE 10800960
DC AL1(TCCIOP) TERMINATE USER 10801040
*------OP IS VALID CHECK LENGTH--------* 10801120
IIVINL 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
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 2 10801840
*------NO INVITES TERMINATE------------* 10801920
B C4TI2 TERMINATION 10802000
DC AL1(TCCIAN) ERROR TYPE 10802080
IINEP CLC TCBMAX(1,XR1),TCBATR(,XR1) MAX TERMINAL COUNT @13 10802160
JH IIOK NO. GO WAIT FOR ACCEPT. @13 10802240
**************************************** 10802320
*ALREADY AT MAXIMUM TERMINAL COUNT * 10802400
**************************************** 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
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
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
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
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(TCCIAC) USER ERROR CODE 10808080
IIMORE L TUBTUB(,XR1),XR1 NEXT TUB 10808160
B IILOOP CHECK NEXT TUB 10808240
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 TUB ADDRESS 10808960
MVI TCBECB(,XR1),TCBACW ACCEPT WAIT INDICATOR FOR C.M. 10809040
AGO .RESA 10809120
.NRES ANOP 10809200
MVI PL$OPC(,XR2),NOBIT SETP OP TO SHOW INITIAL REQUEST 10810000
IICALL EQU * 10820000
B CC4PI BRANCH TO TRANSIENT HANDLER 10830000
DC AL1(CC4AB) ID FOR ACCEPT TRANSIENT 10840000
B C4TI2 BRANCH TO TERMINATION ON ERROR 10850000
DC AL1(*-*) ACCEPT IMPOSSIBLE TO SATISFY 10860000
SPACE 10870000
J IIGGSF JUMP IF ACCEPT SATISFIED 10880000
SPACE 5 10890000
AGO .RESA 10893000
.RESA ANOP 10896000
* DETERMINE NOW WHETHER USER SHOULD BE TOLD ABOUT SHUTDOWN REQUEST 10900000
SPACE 10910000
*********************************************************************** 10920000
* CHECK FOR SHUTDOWN * 10930000
*********************************************************************** 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
SPACE 11030000
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
*********************************************************************** 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
SPACE 11150000
* IF A NEP MRT WAITING - DO FILE SHARE DEQUEUE THING 11160000
SPACE 11170000
LA 0(,XR2),XR1 POINT XR1 AT PARM LIST 11180000
L NCTCB@,XR2 POINT TO THE TCB 11190000
CLI TCBIIC(,XR2),NOBIT ANY INVITES OUTSTANDING? 11200000
JNE IINODG BRANCH IF YES 11210000
TBN TCBDMG(,XR2),TCBNEP+TCBMTS IS THIS A NEP MRT? 11220000
JF IINODG BRANCH IF NOT 11230000
SPACE 11240000
B CC4PI CALL TRANSIENT HANDLER FOR CC4DG 11250000
DC AL1(CC4DG) ID FOR $CC4DG 11260000
SPACE 11270000
* 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 11480000
* OR SHUTDOWN HAS BEEN REQUESTED BY THE SYSTEM OPERATOR * 11490000
*********************************************************************** 11500000
SPACE 3 11510000
* DETERMINE IF POST WAS FOR INVITE INPUT COMPLETE 11520000
* IF NOT MUST HAVE BEEN SHUTDOWN REQUESTED 11530000
SPACE 11540000
* GET CORRECT POST AND SET SKIP BITS IN SHUTDOWN ENTRY 11550000
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 11580000
* HAD POST OF INVITE INPUT COMPLETE 11590000
AIF (&NRAI).NRS1 RESIDENT ACCEPT 11601000
L NCTCB@,XR1 SET TO CURRENT TASK 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 11630000
* TELL USER SHUTDOWN REQUESTED NOW 11640000
SPACE 11650000
IIPGSH EQU * SHUTDOWN HAS BEEN REQUESTED 11660000
MVI PLRTC(,XR2),RCXSHD PLUG SHUTDOWN REQUESTED RTN CODE 11670000
B IITEND BR TO RETURN TO USER 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
L TUBTNT(,XR2),XR2 POINT TO THE TNT 11870000
L NCTCB@,XR1 POINT TO THE TCB 11880000
MVC NPJOB-2(6,XR1),TNTNAM(,XR2) MOVE TERM NAME TO TCB 11890000
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
L II@PRL,XR2 POINT XR2 AT PARAMETER LIST 11980000
MVC TCBWK(2,XR1),PLRECA(,XR2) SET PLRECA IN TCBWK 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
L PLTUBA(,XR1),XR2 POINT TO THE TUB 12020000
L TUBTNT(,XR2),XR2 POINT TO THE TNT ENTRY 12030000
L PLRECA(,XR1),XR1 POINT TO THE USER'S REC. AREA 12040000
MVC 5(6,XR1),5(,XR2) MOVE IN THE SYMB. TERM. NAME 12050000
SPACE 12060000
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
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 ON @PRLQ 12220000
L II@PRL,XR2 RESTORE PARAMETER LIST POINTER 12230000
SBF $FLGC,#NTRAC REENABLE TRACE BEFORE CM POST 12240000
SPACE 2 12250000
* NOW POST THE CM WITH A REQUEST TO PROCESS 12260000
SPACE 2 12270000
LA $CMECB,XR1 POINT XR1 AT CM'S ECB 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
B IIAEND BRANCH TO RETURN TO REQUESTOR 12480000
.* 12490000
.NORS AIF (&NOM).MAPP . SKIP IF *NO* MLTA 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 PARM L. 12710000
JNE IIMCTC JUMP IF ALREADY IN PARM L. 12720000
MVC PL$MCT(1,XR2),TUBPCS(,XR1) PLUB MCT INDICES INTO PARM LIST 12730000
SPACE 12740000
IIMCTC EQU * CHECK MCT INDICES 12750000
* ------START----------------------@06 12752000
TBF PLOPM(,XR2),OP$SYS SYSTEM OPERATION AND 12754000
* -------END-----------------------@06 12756000
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
* ------START----------------------@06 12862000
TBF PLOPM(,XR2),OP$SYS SYSTEM OPERATION AND 12864000
* -------END-----------------------@06 12866000
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
EJECT 12980000
.* 12990000
.MAPP ANOP 13000000
AIF (&NDF).CKIN . SKIP IF *NO* DFF SUPPORT 13010000
.* 13020000
*********************************************************************** 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 2 13190000
*----ERROR----DFF TERMINAL REFERENCED BY NON-DFF TASK 13200000
SPACE 2 13210000
IIDFER EQU * 13220000
B C4TI2 BRANCH TO TERMINATION 13230000
DC AL1(TCCNDF) 13240000
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
EJECT 13340000
.CKIN ANOP 13350000
SPACE 2 13360000
*********************************************************************** 13370000
* QUEUE THE REQUEST ON THE @PRLQ IN CCP COMMON AREA * 13380000
*********************************************************************** 13390000
SPACE 2 13400000
ENTRY IIQSUB 13410000
IIQSUB ST IIQRET+3,ARR SAVE RETURN ADDRESS 13420000
L PLTUBA(,XR2),XR1 POINT TO THE TUB 13430000
* ------START----------------------@09 13432000
TBN TUBAT1(,XR1),TUBKNM THIS THE CONSOLE TUB? 13434000
JT IICNCK SKIP UPDATING REQUEST COUNTER 13436000
* -------END-----------------------@09 13438000
L TUBLCB(,XR1),XR1 POINT TO THE LCB 13440000
ALC LCBNW#(1,XR1),X$0001 UPDATE THE NEW REQUEST COUNTER 13450000
IICNCK LA @PRLQ-1,XR1 POINT TO THE QUEUE CHAIN FIELD 13460000
IIRECK 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 IIRECK 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
IIQRET B *-* RETURN 13560000
TITLE 'COMMUNICATIONS&#.I/O&#.INTERFACE&#.--&#.SYSTEM&#.I/O' 13570000
*********************************************************************** 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 ADD 1 TO ARR TO POINT AT RIGHT 13650000
* END OF PARM LIST ADDR OF ADDR 13660000
ST MOVE+5,ARR STORE ADDR OF PARM LIST ADDR IN 13670000
* MVC INSTRUCTION 13680000
A X$0001,ARR BUMP ARR TO NSI 13690000
SPACE 13700000
* MOVE PARM LIST ADDR TO II@PRL 13710000
SPACE 13720000
MOVE MVC II@PRL(2),*-* MOVE PARM LIST ADDR TO II@PRL 13730000
SPACE 13740000
* SAVE THE REGISTERS 13750000
SPACE 13760000
ST IICARR,XR2 SAVE XR2 13770000
L NCTCB@,XR2 POINT TO THE TCB 13780000
ST IIIX1(,XR2),XR1 SAVE XR1 13790000
ST IIIIR(,XR2),ARR SAVE THE ARR 13800000
MVC IIIX2(2,XR2),IICARR SAVE XR2 13810000
SPACE 13820000
*********************************************************************** 13830000
* POST CM WITH TP IO REQUEST 13840000
* WAIT 13850000
* RETURN TO INVOKER 13860000
*********************************************************************** 13870000
SPACE 2 13880000
L II@PRL,XR2 POINT XR2 AT PARM LIST 13890000
SPACE 13900000
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
TBF PLOPC(,XR2),OPPUT OPERATION INVOLVE PUT ? 13940000
JF IS0010 YES, BRANCH 13950000
MVI PLRECA-1(,XR2),NOBIT ZERO OUT RECORD ADDRESS 13960000
IS0010 EQU * 13970000
SPACE 13980000
L PLTUBA(,XR2),XR1 POINT XR1 AT TUB 13990000
B CC4TT BRANCH TO TRACE ROUTINE 14000000
DC AL1(TTIS) TRACE FOR $CC4IS 14010000
SPACE 14020000
* TAKE A TRACE AT THIS POINT 14030000
EJECT 14040000
*********************************************************************** 14050000
* HAVE TPIO REQUEST FOR A TERMINAL 14060000
* POST $CC4CM AND ISSUE WAIT * 14070000
*********************************************************************** 14080000
SPACE 14090000
*POST CM FOR TP REQUEST 14100000
SPACE 14110000
ISREQ EQU * HAVE TP REQUEST FOR $CC4CM 14120000
SPACE 14130000
* IF THIS IS AN INVITE OPERATION, MOVE PARM LIST TO THE TUB 14140000
SPACE 14150000
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? @11 14175000
JF ISWTOP BRANCH IF NOT BOTH TRUE 14180000
* ------START----------------------@08 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 14184000
SBF PLOPC(,XR2),OPINV DESCHEDULE THE SYSTEM INVITE 14185000
TBF PLOPC(,XR2),OPPUT TEST IF INVITE ONLY OPERATION@12 14185300
JT ISREGS NO-OPP INVITE IF TRUE. @12 14185600
J ISWTOP GO RESTORE TUB POINTER 14186000
* -------END-----------------------@08 14187000
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
SPACE 14280000
B IIMCT FOR MCT (1050) ONLY 14290000
.* 14300000
.NMCT9 ANOP . CONTINUE HERE 14310000
.* 14320000
SPACE 14330000
ENTRY ISREQ1 14340000
ISREQ1 EQU * 14350000
* ------START----------------------@07 14352000
TBF PLOPC(,XR2),OPJRSH RESCHEDULE ONLY REQUEST AND 14354000
* -------END-----------------------@07 14356000
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 (&NCPUM EQ '0').MSG1 SKIP IF CPU S MSGS. ALLOWED @1714445000
CLI TUBPHY(,XR1),TUBCPU IS THE IO TO A CPU? 14450000
JNE ISPOST GO TO POST CM IF NOT 14460000
TBF PLOPM(,XR2),OPSTOP+OPDISC STOP INVITE OR DISCONNECT? 14470000
JF ISPOST JUMP IF EITHER 14480000
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
SBF PLOPC(,XR2),OPPUT SET TO IGNORE THE PUT 14520000
MVI PLRECA-1(,XR2),NOBIT DO NOT LET CM FREEMAIN AREA @10 14525000
TBN PLOPC(,XR2),OPGET IS A GET TO BE DONE? 14530000
JF ISREGS SKIP POST AND WAIT IF YES 14540000
.MSG1 ANOP @17 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
SPACE 2 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
LA $CMECB,XR1 POINT TO CM'S ECB 14710000
SVC 0 SUPERVISOR CALL 14720000
DC XL1'05' RIB FOR POST 14730000
SPACE 3 14740000
* ISSUE WAIT 14750000
SPACE 3 14760000
*********************************************************************** 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 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
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
STOPER EQU X'00' STOPPR BYTE-INDICATES END OF TNT 15080000
IISTNL EQU 6 LENGHT OF SYMBOLIC TERMINAL NAME 15090000
CC0006 DC IL2'6' 2-BYTE BINARY 6 15100000
CC0003 DC IL2'3' 2-BYTE BINARY 3 15110000
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
IIMIN1 DC XL2'FFFF' CONSTANT OF MINUS 1 15320000
DSFLAG EQU X'002F' FLAG BYTE FOR ENVIRONMENT INDS. 15322000
ENVSAV EQU X'80' SAVE ENVIRONMENT. 15324000
N2G0 EQU X'0015' DISPATCHER ADDRESS. 15326000
* ---------------------------- START -@01 15330000
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
* ---------------------------- END ---@01 15380000
NHIGH EQU LO+EQ NOT HIGH TEST @16 15382000
NLOW EQU HI+EQ NOT LOW TEST @16 15384000
NEQ EQU HI+LO NOT EQUAL TEST @16 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(X'10') FUNCTION AND OPTIONS 15460000
DC CL2' ' MESSAGE ID - PART 2 15470000
DC AL1(0) TEXT LENGTH 15480000
DC AL2(0) TEXT ADDRESS 15490000
DC AL1(0) REPLY LENGTH 15500000
IICNPM DC AL2(0) REPLY ADDRESS 15510000
SPACE 15520000
.* 15530000
AIF (&NDF).C75 . SKIP IF *NO* DFF SUPPORT 15540000
.* 15550000
.* 15560000
.C75 AIF (&NOB).TAB . SKIP IF *NO* BSCA SUPPORT 15570000
.* 15580000
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