|
|
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: 60452 (0xec24)
Types: s3xseg
Names: »S$E093«
└─⟦4498c64f7⟧ Bits:30009191 5704-sc2.V05.ccp
└─⟦95ee7795b⟧
└─⟦this⟧ »S$E093«
MACRO 00010000
.***************************************************************** 00020000
.* NAME $E093 * 00030000
.***************************************************************** 00040000
$E093 00050000
GBLB &ONE,&NOB,&N37,&MIN,&NDME,&NMSG,&N41,&NAPOR,&NTTSK 00070000
GBLB &NPP,&NMP,&NSWL,&NCS,&NITB,&NTSP,&N32,&NDF,&NCPU,&NRUF 00080000
GBLA &BSC,&MLA,&YK 00110000
LCLA &MIX 00130000
TEXT 00140000
* R-03,C-00 CHANGE LEVEL 00150000
AIF (&YK EQ '2').YK013 00155000
AIF (&NOB).C0580 00160000
&MIX SETA &NSWL+&NCS 00280000
AIF (&MIX EQ '2').S0700 00290000
TITLE '$E093/CMBSKP---BSCA-POLL-SKIP-BIT-ROUTINE' 00300000
***************************************************************** C/SB 00310000
* * C/SB 00320000
* NAME--CMBSKP * C/SB 00330000
* * C/SB 00340000
* TITLE--BSCA POLL SKIP BIT ROUTINE * C/SB 00350000
* * C/SB 00360000
* FUNCTION--SET THE SKIP ENTRY INDICATOR ON/OFF IN THE BSCA * C/SB 00370000
* POLLING LIST OR THE BSCA SWITCHED LINE ID * C/SB 00380000
* VERIFICATION LIST. * C/SB 00390000
* * C/SB 00400000
* OPERATION-- * C/SB 00410000
* . IF THIS DTF OR THIS PARTICULAR OPERATION DOES * C/SB 00420000
* NOT INVOLVE ONE OF THE BSCA LIST THEN RETURN * C/SB 00430000
* WITHOUT SETTING SKIP BIT. * C/SB 00440000
* . OTHERWISE, FIND THE ENTRY IN THE APPROP LIST. * C/SB 00450000
* . SET THE SKIP BIT AS SPECIFIED FOR ALL ENTRIES * C/SB 00460000
* FOR THE SAME TERMINAL. * C/SB 00470000
* * C/SB 00480000
* ENTRY POINTS--CMBSKP-ALL FUNCTIONS ABOVE. * C/SB 00490000
* * C/SB 00530000
* INPUT-- * C/SB 00540000
* XR1--ADDRESS OF THE TP PARAMETER LIST. * C/SB 00550000
* XR2--SAVED AD RESTORED. * C/SB 00560000
* CMB#SB--SBN2(X'7A') SET THE SKIP BIT ON, OR * C/SB 00570000
* SBF2(X'7B') SET THE SKIP BIT OFF. * C/SB 00580000
* TUBSID--ID OF THE ENTRY(S) TO PERFORM THE OPERATION * C/SB 00590000
* FOR. * C/SB 00600000
* OUTPUT-- * C/SB 00610000
* XR1-ADDRESS OF THE TP PARAMETER LIST. * C/SB 00620000
* XR2-RESTORED TO ENTRY VALUE. * C/SB 00630000
* POLLING/SWITCHED ID LIST-SKIP BIT FOR APPROPRIATE * C/SB 00640000
* ID SET AS SPECIFIED. * C/SB 00650000
* * C/SB 00660000
* EXIT, NORMAL--TO NSI OF CALLER. * C/SB 00670000
* * C/SB 00710000
***************************************************************** C/SB 00720000
SPACE 00730000
CMBSKP EQU * * C/SB 00740000
SPACE 00750000
ST CMBXIT+3,ARR SAVE THE ARR C/SB 00760000
ST CMON1B+3,PL SAVE XR1 C/SB 00770000
ST CMBXR2+3,XR2 SAVE XR2 C/SB 00780000
L PLTUBA(,PL),TUB POINT XR1 AT TUB C/SB 00790000
L TUBDTF(,TUB),DTF POINT XR2 AT DTF C/SB 00800000
&MIX SETA &NPP+&NMP+&NSWL 00810000
AIF (&MIX EQ '3').S0600 00820000
TBN $BDATR(,DTF),$BCSWI MULTI-TERMINAL LINE ? C/SLB 00830000
JF CMOEXT NO-GO EXIT. C/SLB 00840000
AIF (&NSWL).S0600 00850000
TBF $BDATR(,DTF),$BCMPT SWITCHED SB 00860000
TBN TUBTA1(,TUB),TASCNC * CALL ? SB 00870000
JT CMOEXT YES-DON'T SET SKIP BITS. SB 00880000
.S0600 ANOP 00890000
MVC LCBID#(1,DTF),TUBSID(,TUB) MOVE POLL LIST ID TO SAVE. C/SB 00900000
AIF (&NSWL).S0640 00910000
TBN $BDATR(,DTF),$BCMCN CONTROL STATION LINE ? SB 00913000
JT CMONSD YES SKIP SWITCHED CHECKING SB 00916000
TBF $BDATR(,DTF),$BCMPT SWITCHED, SB 00920000
TBN TUBTA2(,TUB),TASVFY * NO ID VERIFY ? SB 00930000
JF CMONSD YES - GO PROCESS LIST. SB 00933000
TBF $BDATR(,DTF),$BCMPT SWITCHED AND SB 00936000
CLI CMB#SB,SBF1 * ACTIVATE ENTRY ? SB 00940000
JC CMONO#,TRUAEQ YES-GO BUILD SWITCHED ENTRY. SB 00950000
L LCBNO#(,DTF),POL POINT TO SWITCHED LIST. SB 00952000
CLC LCBID#(1,DTF),POLID(,POL) THIS ENTRY IN LIST NOW ? SB 00954000
JNE CMOEXT NO - SKIP THIS ENTRY. SB 00956000
CMONSD EQU * * LOCAL SB 00958000
.S0640 ANOP 00960000
L LCBPOL(,DTF),POL LOAD PTR TO POLLING LIST C/SB 00970000
CMOCHK EQU * * C/SB 00980000
CLI POLID(,POL),POLEND END OF LIST ? C/SB 00990000
JNL CMOEXT YES-GO EXIT. C/SB 01000000
MVC CMOSTS+2,POLCNT(1,POL) SET UP LA TO STATUS BYTE C/SB 01010000
CLC POLID(1,POL),LCBID#(,DTF) THIS ENTRY SAME AS REQ D? C/SB 01020000
CMOSTS LA #(,POL),POL UP PTR TO STATUS BYTE C/SB 01030000
JNE CMONXT NO-IGNORE IT, GOTO NXT ENT. C/SB 01040000
CMB#SB EQU * * C/SB 01050000
SBN POLCNT+1(,POL),POLSKP SET POLL SKIP BIT ON / OFF. C/SB 01060000
CMONXT EQU * * C/SB 01070000
LA POLNXT(,POL),POL UP PTR TO NEXT POLL LIST ENTC/SB 01080000
B CMOCHK GO CHECK THIS NEXT ENTRY. C/SB 01090000
SPACE 01100000
AIF (&NSWL).S0660 01110000
CMONO# EQU * * SB 01120000
L LCBNO#(,DTF),POL XR1-> NO VERIFY ID ENTRY. SB 01130000
TBN POLCNT+1(,POL),POLSKP SKIP IND ALREADY OFF ? SB 01140000
JF CMOEXT YES-NAME OF NON-VERIFY AS SET.SB 01150000
MVC POLID(,POL),LCBID#(1,DTF) SET ID/NAME OF NON-VERIFY. SB 01160000
SBF POLCNT+1(,POL),POLSKP SET OFF THE SKIP BIT. SB 01170000
.S0660 ANOP 01180000
CMOEXT EQU * * C/SB 01190000
CMON1B EQU * * C/SB 01200000
LA *-*,PL RESTORE PARM LIST REG. C/SB 01210000
CMBXR2 EQU * * C/SB 01220000
LA #,XR2 RELOAD CALLER'S XR2. C/SB 01230000
CMBXIT EQU * * C/SB 01240000
B # RETURN TO CALLER. C/SB 01250000
EJECT 01260000
***************************************************************** C/SB 01270000
* * C/SB 01280000
* ENTRY POINT- CMASCH - ADDRESS LIST SEARCH * C/SB 01290000
* CMPSCH - POLL LIST SEARCH * C/SB 01300000
* * C/SB 01310000
* FUNCTION : GIVEN ID ENTRY BYTE IN DTF SAVE AREA, FIND THE * C/SB 01320000
* CORRESPONDING ENTRY IN THE POLL LIST AND RETURN A * C/SB 01330000
* POINTER TO THE PHYSICAL TERMINAL ADDRESS. * C/SB 01340000
* * C/SB 01350000
* INPUT: XR1-> DON'T CARE, XR2-> DTF. * C/SB 01350001
* * C/SB 01350002
* OUTPUT: XR1-> POLL LIST ENTRY, XR2-> DTF. * C/SB 01350003
* * C/SB 01350004
* EXITS-NORMAL: TO NSI OF CALLER. * C/SB 01350005
* -ERROR: CMASCH/CMPSCH WILL RETURN TO NSI+3 IF THE * C/SB 01350006
* ENTRY IS NOT FOUND. * C/SB 01350007
* * C/SB 01350008
***************************************************************** C/SB 01380000
SPACE 01390000
CMASCH EQU * ADDRESS LIST ENTRY POINT. C/SB 01400000
L LCBSEL(,DTF),POL LOAD ADDR LIST REGISTER. C/SB 01410000
J CMPNXT GO ENTER MAINLINE CODE. C/SB 01420000
SPACE 01430000
CMPSCH EQU * FIRST LEVEL SUBROUTINE. C/SB 01440000
L LCBPOL(,DTF),POL LOAD POLL LIST REGISTER. C/SB 01450000
CMPNXT EQU * * C/SB 01460000
ST LCBWRK(,DTF),ARR SAVE RETURN NSI. C/SB 01470000
CMPCHK EQU * * C/SB 01480000
CLC POLID(1,POL),LCBID#(,DTF) THIS WANTED TERMINAL ENTRY? C/SB 01490000
JE CMPFND YES-GO SET UP RETURN REG. C/SB 01500000
MVC CMPLA+2,POLCNT(1,POL) USE COUNT TO GET NEXT ENTRY C/SB 01510000
CMPLA EQU * * C/SB 01520000
LA #(,POL),POL UP REG PAST PHYSICAL ADDR C/SB 01530000
LA POLNXT(,POL),POL UP REG PAST ID/COUNT/STATUS C/SB 01540000
AIF (&NSWL).S0680 01550000
CLI POLID(,POL),POLEND END OF LIST ? SB 01560000
BL CMPCHK NO-CONTINUE THE SEARCH. SB 01570000
ALC LCBWRK(2,DTF),X$0003 ADD 3 TO NSI ADDR FOR RETURN. SB 01580000
* RETURN TO NSI +3 ONLY FOR SWITCHED ID LIST. EITHER BOTH USER , SB 01590000
* AND CMASCH ARE IN CORE, OR BOTH ARE IN THE SAME TRANSIENT. SB 01600000
SPACE 1 01610000
AGO .S0690 01620000
.S0680 ANOP 01630000
B CMPCHK GO TO CHECK NEXT ENTRY. CB 01640000
.S0690 ANOP 01650000
SPACE 01660000
CMPFND EQU * * C/SB 01670000
L LCBWRK(,DTF),IAR RETURN TO CALLER. C/SB 01680000
.S0700 ANOP 01690000
&MIX SETA (&BSC+&MLA) 01700000
AIF (&MIX LE '1').Y0050 01710000
TITLE '$E093/CMCSKP--SET-BSCA-CHECK-LIST-BIT-ON/OFF' 01720000
******************************************************************** YB 01730000
* * YB 01740000
* ENTRY POINT- CMCSKP - SET CHECK LIST SKIP BIT * YB 01750000
* * YB 01760000
* FUNCTION : * YB 01770000
* SET SKIP BIT ON OR OFF IN CHECK LIST FOR BSCA DTF'S. * YB 01780000
* TO SET THE SKIP BIT ON, MOVE SBN2 INTO CMC#SB. * YB 01790000
* TO SET THE SKIP BIT OFF, MOVE SBF2 INTO CMC#SB. * YB 01800000
* * YB 01810000
* ON ENTRY: XR1 -> IOB * YB 01820000
* ON EXIT: XR1=IOB, XR2=DTF. * YB 01830000
******************************************************************** YB 01840000
SPACE 01850000
CMCSKP EQU * * YB 01860000
ST CMCSXT+3,ARR SAVE RETURN @. YB 01870000
L @CKLST,XR2 LOAD CHECK LIST @ IN XR2. YB 01880000
CMCSCK EQU * * YB 01890000
CLC CKLDTF(2,XR2),IOBDTF(,IOB) THIS LIST ENTRY FOR THIS DTF?YB 01900000
JE CMC#SB YES-GO SET SKIP BIT. YB 01910000
LA CKLEN(,XR2),XR2 LOAD @ OF NEXT ENTRY. YB 01920000
B CMCSCK GO AND CHECK THIS NEXT ENTRY. YB 01930000
SPACE 01940000
CMC#SB EQU * * YB 01950000
SBN CKLSTS(,XR2),CKLSKP SET SKIP AS SET BY CALLER. YB 01960000
L CKLDTF(,XR2),DTF RESTORE DTF REGISTER. YB 01970000
CMCSXT EQU * * YB 01980000
B # RETURN TO CALLER. YB 01990000
.Y0050 ANOP 02000000
AIF (&MIN).N0400 02010000
TITLE '$E093/CMBTAS--SET-DTF-AND-IOB-FROM-TAS' 02020000
******************************************************************** RB 02030000
* * RB 02040000
* NAME--CMBTAS * RB 02050000
* * RB 02060000
* TITLE--BSCA SET DTF AND IOB FROM TAS * RB 02070000
* * RB 02080000
* FUNCTION--SET DTF AND IOB ATTRIBUTES AND OWNERSHIP STATUS. * RB 02090000
* * RB 02100000
* ENTRY REGS: XR2=DTF * RB 02110000
* EXIT REGS: XR1=TUB, XR2=DTF. * RB 02120000
* * RB 02130000
******************************************************************** RB 02140000
SPACE 02150000
CMBTAS EQU * * RB 02160000
ST CMBTXT+3,ARR SAVE RETURN @. RB 02170000
* ------------------------------------------- START ------------- @17 02170700
MVC CMBTS1+1(1),SAVTA2 MOVE IN TAS ATTR 2. RB 02171400
L LCBPL@(,DTF),PL LOAD PARM LIST REG. RB 02172100
TBN PL$OPC(,PL),OPGET GET OPERATION IN PROCESS ? RB 02172800
JF CMBTST NO-HANDLE ITB / TRANSPARENCY RB 02173500
SBF $BDATT(,DTF),$BCITB SET OFF ITB INDICATOR. RB 02174200
SBF CMBTS1+1,ALLBIT-TASITB LEAVE ITB INDICATOR SET. RB 02174900
J CMBTTT GO TO SET ITB OPERATION. RB 02175600
CMBTST EQU * * LOCAL RB 02176300
SBF $BDATT(,DTF),$BCRAN+$BCITB SET OF CURRENT TRANSP AND ITBRB 02177000
SBF CMBTS1+1,ALLBIT-TASITB-TASTSP LEAVE TRANSP AND ITB SET RB 02177700
CMBTTT EQU * * LOCAL RB 02178400
* ------------------------------------------- END --------------- @17 02179100
ALC CMBTS1+1(1),CMBTS1+1 CORRECT TO DTF BIT DEFINITION.RB 02210000
CMBTS1 EQU * * RB 02220000
SBN $BDATT(,DTF),# SET TAS TRANSP AND ITB RB 02230000
MNN $BDAT1(,DTF),SAVTA2 MOVE IN SPAN AND RECSEP IND'S.RB 02240000
SBF $BDAT1(,DTF),ALLBIT-$BCSEP-$BCSPN-$BCPLR SET OTHERS OFF.RB 02250000
L LCBPL@(,DTF),PL LOAD PARM LIST REG. RB 02260000
TBN PL$OPC(,PL),OPUSER SYSTEM FUNCTION ? RB 02270000
L PLTUBA(,PL),TUB LOAD REG TO POINT TO TUB. RB 02280000
JT CMBSYS YES-GO SET SYSTEM BLOCK LEN. RB 02290000
SPACE 02300000
* DETERMINE THE BLOCK LENGTH GIVEN THE TAS RECORD LENGTH AND RB 02310000
* BLOCKING FACTOR. RB 02320000
SPACE 02330000
MVC LCBKLC(2,DTF),TUBRCL(,TUB) MOVE IN CURRENT RECORD LGTH. RB 02340000
MVC LCBOWN(1,DTF),TUBBKF(,TUB) PUT BLOCK FACTOR IN WRK AREA.RB 02350000
CMBLAD EQU * * RB 02360000
AIF (&NTTSK).TT120 02360500
AGO .TT130 02361000
.TT120 ANOP 02361500
AIF (&NAPOR).PT070 02362000
.TT130 ANOP 02362500
SPACE 1 02363000
******************************************************************* @18 02363500
************* 02364000
************* 02364500
TBN LCBAT3(,DTF),LCBPOR IS THIS A PORTLINE OPERATION ? 02365000
JT CMBOWN YES - THERE IS NO BLOCKING 02365500
************* 02366000
************* 02366500
******************************************************************* @18 02367000
SPACE 1 02367500
.PT070 ANOP 02368000
SLC LCBOWN(1,DTF),X$0001 DECREMENT BLOCKING FACTOR. 0 ?RB 02370000
JE CMBOWN YES-GO SET OWNERSHIP STATUS.B RB 02380000
ALC LCBKLC(2,DTF),TUBRCL(,TUB) ADD ANOTHER RECORD LENGTH. RB 02390000
B CMBLAD GO TO CHECK FOR MORE RECORDS. RB 02400000
SPACE 02410000
CMBSYS EQU * SET SYSTEM BLOCK LENGTH. RB 02420000
MVC LCBKLC(2,DTF),#CCMCL MOVE IN MAX COMMAND LENGTH. RB 02430000
SPACE 02440000
* SET OWNERSHIP STATUS IN THE TUB AND THE LCB. RB 02450000
SPACE 02460000
CMBOWN EQU * SET OWNERSHIP. RB 02470000
* DON'T SET TUB OWNERSHIP IF ERROR COMP CODE 02471000
SPACE 1 02472000
L $BDIOB(,DTF),XR1 XR1--> CURRENT IOB 02473000
CLI IOBCMP(,XR1),$BCEOT HIGHER THAN X'42' AND ------| 02474000
TBF IOBCMP(,XR1),BIT0 * LESS THAN X'80'----| 02475000
TBN LCBAT2(,DTF),LCBACT * AND LINE ACTIVE ?--| 02475500
L LCBPL@(,DTF),PL XR1--> PARM LIST | 02476000
L PLTUBA(,PL),TUB XR1 --> TUB | 02477000
JC CMNOWN,TRUAHI JUMP IF ERROR RETURN CODE<--| 02478000
SBN TUBAT2(,TUB),TUBOWN SET TUB OWNERSHIP. RB 02480000
CMNOWN EQU * * 02485000
MVC LCBOWN(2,DTF),TUBTCB(,TUB) SAVE TCB @ OF OWNER IN LCB. RB 02490000
AIF (&NSWL).S0900 02500000
&MIX SETA &NPP+&NMP+&NCS 02510000
AIF (&MIX EQ '3').S0800 02520000
TBN TUBAT1(,TUB),TUBSWC SWITCHED LINE ? RSLB 02530000
JF CMBTXT NO-GO EXIT. RSLB 02540000
.S0800 ANOP 02550000
ST LCBOWN(,DTF),TUB SET ADDRESS OF OWNING TUB. RSB 02560000
.S0900 ANOP 02570000
J CMBTXT GO TO RETURN. RB 02580000
AGO .N0500 02590000
.N0400 ANOP 02600000
TITLE '$E093/CMTASV--INTERFACE TO $CC4B1' 02610000
************************************************************** MIN B 02620000
* CALL IN TRANSIENT FORM OF 'CMTASV', 'CMBTAS' AND 'CMFORB'* MIN B 02630000
************************************************************** MIN B 02640000
SPACE 1 02650000
CMTASV EQU * CALL $CC4B1 FOR TASV MIN B 02660000
MVI CMTID1,CTTASV MOVE IN ID MIN B 02670000
J CMCAL1 CALL THE TRANSIENT MIN B 02680000
SPACE 02690000
CMREJT MVI CMTID1,CTREJC MOVE IN ID MIN B 02700000
J CMCAL1 CALL THE TRANSIENT MIN B 02710000
CMBTAS EQU * * MIN B 02720000
MVI CMTID1,CTBTAS MOVE IN ID FOR 'CMBTAS'. MIN B 02730000
CMCAL1 EQU * * MIN B 02740000
ST CMRTN1+3,ARR SAVE THE RETURN ADDRESS. MIN B 02750000
SPACE 1 02760000
SVC 0 ##### TRANSIENT CALL ##### MIN B 02770000
DC AL1(CCPRIB) CCP SVC RIB MIN B 02780000
DC AL1(CC4B1) CALL IN MIN XIENT #2. MIN B 02790000
CMTID1 DC AL1(0) ID OF MIN SYST FUNCTION MIN B 02800000
SAVTA1 DC XL1'0' TERMINAL ATTRIB BYTE 1. MIN B 02810000
SAVTA2 DC XL1'0' TERMINAL ATTRIB BYTE 2. MIN B 02820000
SAVRCL DC XL2'00' TERM ATTR SET RECORD LGTH. MIN B 02830000
CMSPHY DC AL1(0) SAVE ARE FOR TUBPHY. MIN B 02840000
SPACE 1 02850000
CMRTN1 EQU * * MIN B 02860000
B # RETURN TO CALLER. MIN B 02870000
.N0500 ANOP 02880000
AIF (&MIN).N0600 02890000
TITLE '$E093/CMTASV--SET-AND-SAVE-TAS-VALUE-IN-CORE' 02900000
******************************************************************** RB 02910000
* * RB 02920000
* NAME--CMTASV * RB 02930000
* * RB 02940000
* TITLE--SET AND SAVE TERMINAL ATTRIBUTES * RB 02950000
* * RB 02960000
* FUNCTION--SET AND SAVE TAS BYTES 1 AND 2 , TUBPHY AND TUBRCL.* RB 02970000
* * RB 02980000
* ENTRY REGS: XR1-> PL. * RB 02990000
* EXIT REGS: SAME AS ENTRY. * RB 03000000
******************************************************************** RB 03010000
SPACE 03020000
CMTASV EQU * RB 03030000
ST CMBTXT+3,ARR SAVE THE RETURN ADDRESS. RB 03040000
ST CMTSX1+3,PL SAVE THE PL REG. RB 03050000
SBF PL$OPC(,PL),OPUSER RESET FUNCTION INDICATOR. RB 03060000
TBF PLOPM(,PL),OP$SYS USER REQUEST, AND RB 03070000
TBF PL$OPC(,PL),OPRFSH+OPLSNS * NOT POLL STATUS OR REFRESH ?RB 03080000
L PLTUBA(,PL),TUB LOAD THE TUB REG. RB 03090000
MVC CMSPHY,TUBPHY(1,TUB) SAVE THE TUBPHY BYTE IN CORE. RB 03100000
JF CMTSYS NO-GO SET SYSTEM TAS VALUES. RB 03110000
MVC SAVRCL,TUBRCL(4,TUB) SAVE THE USER TAS VALUES. RB 03120000
J CMTSX1 GO TO EXIT. RB 03130000
SPACE 03140000
CMTSYS EQU * FILL SYSTEM TAS VALUE. RB 03150000
MVI SAVTA1,TASAUT SET SET AUTO CONNECT VALUE RB 03160000
MVI SAVTA2,TASMSG SET MESSAGE MODE IN TAS 2. RB 03170000
L CMTSX1+3,PL RELOAD THE PL REG. RB 03180000
SBN PL$OPC(,PL),OPUSER INDICATE SYSTEM FUNCTION. RB 03190000
CMTSX1 EQU * * RB 03200000
LA #,PL RELOAD THE USER PL REG. RB 03210000
CMBTXT EQU * * RB 03220000
B # RETURN. RB 03230000
.N0600 ANOP 03240000
TITLE '$E093/CMGINL--DETERMINE-THE-OPERATION-INPUT-LENGTH' 03250000
******************************************************************** B 03260000
* * B 03270000
* NAME--CMGINL * B 03280000
* * B 03290000
* TITLE--DETERMINE THE OPERATION INPUT LENGTH * B 03300000
* * B 03310000
* FUNCTION-- * B 03320000
* DETERMINE THE INPUT RECORD LENGTH. SET TRUNCATED * B 03330000
* INDICATOR IF INPUT LENGTH IS LESS THAN ACTUAL DATA * B 03340000
* LENGTH. * B 03350000
* * B 03360000
* OPERATION-- * B 03370000
* . SET THE INPUT LENGTH FOR THE OPERATION. * B 03380000
* - POLL FOR STATUS, USE 20. * B 03390000
* - RECORD MODE INPUT - USE PLINL IF PLINL LESS THAN * B 03400000
* TUBRCL * B 03410000
* - USE TUBRCL IF PLINL GREATER * B 03420000
* THAN TUBRCL. * B 03430000
* * B 03440000
* . IF NOT MLMP VARIABLE LENGTH RECORD SUPPORT ADJUST * B 03450000
* INPUT LENGTH IF LESS DATA IS AVAILABLE IN THE ACTUAL* B 03460000
* LINE BUFFER THAN IS REQUESTED. * B 03470000
* * B 03480000
* . IF MORE DATA IS AVAILABLE IN LINE BUFFER THAN * B 03490000
* REQUESTED, THEN SET THE TRUNCATED DATA INDICATOR. * B 03500000
* * B 03510000
* . IF PURE GET REQUEST OR A MESSAGE MODE INPUT AT * B 03520000
* OTHER THAN RECEIVE INITIAL TIME RETURN TO USER * B 03530000
* AFTER PERFORMING THE ABOVE FUNCTIONS. * B 03540000
* * B 03550000
* . OTHERWISE, ADD 4 BYTES FOR GETMAIN PARAMETER LIST. * B 03560000
* * B 03570000
* . FREE THE CURRENT LCB HOLD BUFFER IF IT IS LARGER THAN B 03580000
* NEEDED, AND GETMAIN THE EXACT HOLD AREA NEEDED. * B 03590000
* * B 03600000
* . IF GETMAIN AREA NOT AVAILABLE, WAIT FOR IT TO BE * B 03610000
* AVAILABLE. * B 03620000
* * B 03630000
* . OTHERWISE, SET UP THE ACQUIRED AREA FOR THE INVITE * B 03640000
* INPUT OPERATION. * B 03650000
* * B 03660000
* ENTRY POINT--CMGINL * B 03670000
* * B 03680000
* INPUT-- * B 03690000
* XR2 - ADDRESS OF THE DTF * B 03700000
* * B 03710000
* OUTPUT-- * B 03720000
* XR1 - NOT RESTORED. * B 03730000
* XR2 - ADDRESS OF THE DTF. * B 03740000
* $BDREL - SET UP FOR INPUT LENGTH OF THE NEXT RECORD. * B 03750000
* * B 03760000
* EXTERNAL REFERENCES-- * B 03770000
* CMFMRT - FREEMAIN CURRENT HOLD BUFFER IF LARGER * B 03780000
* THAN IS NEEDED. * B 03790000
* CMGMRT - GETMAIN EXACT BUFFER NEEDED. * B 03800000
* * B 03810000
* EXIT, NORMAL--TO NSI OF CALLER. * B 03820000
* * B 03830000
* EXIT, ERROR--IF SPACE IS NOT AVAILABLE, EXIT TO CMPAII AND WAIT * B 03840000
* UNTIL THE REQUIRED SPACE IS AVAILABLE. * B 03850000
* * B 03860000
******************************************************************** B 03870000
SPACE 03880000
CMGINL EQU * * B 03890000
ST CMGIXT+3,ARR SAVE RETURN @. B 03900000
L LCBPL@(,DTF),PL LOAD PARM LIST PTR TO GET THE B 03910000
TBF $BDAT1(,DTF),$BCRES SPANNING RECORD IN PROCESS ? B 03920000
TBF LCBAT1(,DTF),LCBEOT OR SENDING EOT ? B 03930000
BF CMGIXT YES-GO EXIT EVERYTING'S DONE. B 03940000
SPACE 1 03950000
*------------------------------------------------------------------* B 03960000
* NOT PROCESSING SPANNED RECORD * B 03970000
*------------------------------------------------------------------* B 03980000
SPACE 1 03990000
MVC $BDREL(2,DTF),PLINL(,PL) MOVE INL TO DTF RECL AREA. B 04000000
MVC $BDWKB(2,DTF),PLRECA(,PL) MOVE CURRENT RECORD ADDR TO DTFB 04010000
&MIX SETA &N32+&N37+&N41 04020000
AIF (&MIX EQ '3').T1500 04030000
TBN PL$OPC(,PL),OPLSNS POLL FOR STATUS OP ? 7/0/5B 04040000
JF CMGIUT NOGO CHECK UNIT TYPE OF OP7/0/5B 04050000
SPACE 1 04060000
*----------------------------------------------------------------7/0/5B 04070000
* POLL FOR STATUS 7/0/5B 04080000
*----------------------------------------------------------------7/0/5B 04090000
SPACE 1 04100000
MVC $BDREL(2,DTF),RELSNS USE STANDARD STATUS RECL. 7/0/5B 04110000
J CMGIRL GO USE THIS LENGTH FOR GET7/0/5B 04120000
.T1500 ANOP 04130000
SPACE 1 04140000
*------------------------------------------------------------------* B 04150000
* NOT POLL FOR STATUS * B 04160000
*------------------------------------------------------------------* B 04170000
SPACE 1 04180000
CMGIUT EQU * * B 04190000
TBN SAVTA2,TASREC RECORD MODE ? B 04200000
JF CMGIBK NO-GO CHECK DATA LEFT IN BLOCK.B 04210000
MVC $BDWKB(2,DTF),LCBIBA(,DTF) USE INVITE BUF AREA FOR MLMP. B 04215000
L PLTUBA(,PL),TUB LOAD THE TUB REG. B 04220000
CLC $BDREL(2,DTF),TUBRCL(,TUB) INL LT TAS RECL ? B 04230000
JL CMGIMX YES-GO FILL MAX RECL ACCEPTABLEB 04240000
MVC $BDREL(2,DTF),TUBRCL(,TUB) OTHERWISE USE TAS RECORD LEN. B 04250000
CMGIMX EQU * * B 04260000
MVC $BDMRL(2,DTF),$BDREL(,DTF) FILL MAX REC LEN ACCEPTABLE. B 04270000
SPACE 04280000
CMGIBK EQU * * B 04290000
TBF SAVTA2,TASITB+TASVRL+TASPAN MLMP VARIABLE RECORD SUPPORT?B 04300000
JF CMGII@ YES-GO GET II RECORD @. B 04310000
L $BDIOB(,DTF),IOB POINT TO THE IOB. B 04320000
CLI IOBCMP(,IOB),PROCES IOB BEING PROCESSED ? B 04330000
JE CMGIDX YES-IOB READY, GO CK DATA LEN. B 04340000
CLI IOBCMP(,IOB),$BCEOT EOT OR IOB COMPLETE ? B 04350000
TBF SAVTA2,TASMSG AND NOT MESSAGE MODE INPUT ? B 04360000
JC CMGI00,TRUAEQ EOT TO RECORD/BLOCK, 0 IN-LEN. B 04370000
TBF SAVTA2,TASMSG MESSAGE MODE? B 04373000
JC CMGIRL,TRUAHI REC OR BLK AND MSG MODE--JUMP B 04376000
JNL CMGIXT NOT COMPLETE, WAIT FOR OP END. B 04380000
MVC $BDBKX(2,DTF),IOBTAR(,IOB) SET UP BKX LIKE MLMP WILL. B 04390000
ALC $BDBKX(2,DTF),X$0001 UPDATE FOR -STX-. B 04400000
AIF (&NTSP).I0600 04410000
* ------------------------------------------- START ------------- @17 04412000
TBN IOBFLG(,IOB),$BCRAN TRANSPARENCY ? IXB 04414000
* ------------------------------------------- END --------------- @17 04416000
JF CMGIDX NOT TRANSP, GO CK DATA LEGTH. XB 04430000
ALC $BDBKX(2,DTF),X$0001 UPDATE FOR -DLE-. XB 04440000
.I0600 ANOP 04450000
CMGIDX EQU * * B 04460000
CLC $BDBKX(2,DTF),IOBCAR(,IOB) DATA LEFT IN BUFFER ? B 04470000
JNL CMGIXT NO-GO EXIT, WAIT FOR OP END. B 04480000
MVC LCBWRK(2,DTF),IOBCAR(,IOB) FIND THE NUMBER OF DATA B 04490000
SLC LCBWRK(2,DTF),$BDBKX(,DTF) * CHARACTERS LEFT IN BUFFER. B 04500000
CLC $BDREL(2,DTF),LCBWRK(,DTF) INL LT MAX LINE DATA LEFT. B 04510000
JNL CMGIAL NO-GO SET TO GET ALL DATA. B 04520000
SBN LCBAT2(,DTF),LCBTRC SET BLOCK TRUNCATED IND. B 04530000
J CMGII@ GO CHECK INVITE RECORD @. B 04540000
SPACE 04550000
CMGI00 EQU * * 04560000
SLC $BDREL(2,DTF),$BDREL(,DTF) ZERO OUT INPUT RECORD LENGTH. B 04570000
J CMGII@ GO CHECK INVITE RECORD LENGTH. B 04580000
SPACE 04590000
CMGIAL EQU * * B 04600000
* ACTUAL AMOUNT OF DATA FOR MLMP TO MOVE, MAY BE LESS THAN PLINL B 04610000
MVC $BDREL(2,DTF),LCBWRK(,DTF) MOVE MAX LINE LEN TO RECL. B 04620000
SPACE 1 04630000
*------------------------------------------------------------------* B 04640000
* DETERMINE SIZE OF HOLD BUFFER NEEDED * B 04650000
*------------------------------------------------------------------* B 04660000
SPACE 1 04670000
CMGII@ EQU * * B 04680000
L LCBPL@(,DTF),PL LOAD @ OF CURRENT PARM LIST. B 04690000
TBN PLOPM(,PL),OP$SYS SYSTEM REQUEST ? B 04700000
AIF (&NRUF).F0100 04701000
L PLTUBA(,PL),XR2 XR2-> TUB. WB 04703000
TBF TUBSCS(,XR2),TUBRUF AND NOT A RUF ? WB 04704000
L TUBDTF(,XR2),DTF XR2-> LCB (DTF). WB 04705000
.F0100 ANOP 04707000
JT CMGISR YES-GO SET UP SYSTEM RECORD LENB 04710000
AIF (&NMSG).E0100 04720000
TBN SAVTA2,TASMSG GET-MSG MODE ? GB 04730000
JT CMGIMG YES-GO CHECK RECEIVE INIT IND.GB 04740000
.E0100 ANOP 04750000
CMGIRL EQU * * B 04760000
MVC #BUFND,$BDREL(2,DTF) USE CURRENT RECORD LEN AND ADD B 04770000
J CMGICB GO ADD GETMAIN CONTROL BYTES. B 04780000
SPACE 1 04790000
AIF (&NMSG).E0110 04800000
*------------------------------------------------------------------* GB 04810000
* USER GET MESSAGE * GB 04820000
*------------------------------------------------------------------* GB 04830000
SPACE 1 04840000
CMGIMG EQU * * GB 04850000
TBN LCBAT2(,DTF),LCBRCI RECEIVE INITIAL TIME ? GB 04860000
JF CMGIXT NO-GO EXIT, BUFFERS ARE SET. GB 04870000
SPACE 1 04880000
.E0110 ANOP 04890000
*------------------------------------------------------------------* B 04900000
* SYSTEM REQUEST OR USER GET MESSAGE * B 04910000
*------------------------------------------------------------------* B 04920000
SPACE 1 04930000
CMGISR EQU * * B 04940000
MVC #BUFND,PLINL(2,PL) USE PARM LIST INL FOR SYST. B 04950000
SPACE 1 04960000
*------------------------------------------------------------------* B 04970000
* ANY CALL EXCEPT USER GET MESSAGE PRIOR TO 1ST OP END. * B 04980000
*------------------------------------------------------------------* B 04990000
SPACE 1 05000000
CMGICB EQU * * B 05010000
ALC #BUFND(2),X$0004 * GETMAIN PARM LIST REQ'MTS. B 05020000
SPACE 05030000
B CMGBUF GETMAIN RIGHT SIZE BUFFER B 05040000
* IF SPACE NOT AVAILABLE, CMGBUF B 05040100
* *DOES NOT RETRUN, B CMPAII. B 05040200
SPACE 05050000
MVC $BDWKB(2,DTF),LCBIBA(,DTF) USE INVITE BUF AREA FOR MLMP. B 05060000
L LCBPL@(,DTF),PL LOAD PARM LIST REG. B 05070000
&MIX SETA &N32+&N37+&N41 05073000
AIF (&MIX EQ '3').T1700 05076000
TBN PL$OPC(,PL),OPLSNS POLLING FOR STATUS ? 0/5/7B 05080000
JF CMGMOV NO-GO DO MOVE OF RECORD @.0/5/7B 05090000
TBN PL$OPC(,PL),OPGET IF OP WAS INPUT , PLRECA 0/5/7B 05100000
* * MUST BE SET TO GET 0/5/7B 05110000
* * DATA RATHER THAN STATUS.0/5/7B 05120000
JF CMGIXT NO-NOT INVITE, SKIP MOVE. 0/5/7B 05130000
* (PUT MUST PRESERVE REC @) 0/5/7B 05140000
CMGMOV EQU * * LOCAL 0/5/7B 05150000
.T1700 ANOP 05155000
MVC PLRECA(2,PL),$BDWKB(,DTF) PUT INVITE @ INTO PARM LIST. B 05160000
CMGIXT EQU * * B 05170000
B ## RETURN B 05180000
.YK013 ANOP 05185000
AIF (&NDF).F0200 05190000
TITLE '$E093/CMDFFQ---QUEUE REQUEST FOR DFF TASK' 05200000
******************************************************************** FB 05210000
* * FB 05220000
* NAME: CMDFFQ * FB 05230000
* * FB 05240000
* TITLE: QUEUE REQUEST FOR DFF TASK AND POST. * FB 05250000
* * FB 05260000
* INPUT: XR1-> PL * FB 05260100
* * FB 05260200
* OUTPUT: XR1- UNCHANGED * FB 05260300
* XR2- DESTROYED * FB 05260400
* * FB 05260500
* EXIT-NORMAL: TO NSI OF CALLER. * FB 05260600
* * FB 05260700
******************************************************************** FB 05270000
SPACE 1 05280000
CMDFFQ EQU * * FB 05290000
ST CMDFRT+3,ARR RETURN ADDRESS FB 05300000
ST CMDFR1+3,XR1 SAVE XR1 FB 05310000
L PLTUBA(,PL),XR2 LOAD POINTER TO THE TUB. FB 05312000
L TUBTCB(,XR2),XR2 XR2-> TCB OWNING THIS TUB. FB 05313000
TBF TCBFG2(,XR2),TCBTRC TASK IN TERMINATION OR - FB 05314000
CLI TCBID(,XR2),X'E3' IS THIS TERMINATION TASK ? 05314500
JC CMDFNT,TRUNEQ NO - GO TO POST DFF. FB 05315000
SPACE 1 05315200
* THIS TASK IS IN TERMINATION - DO NOT POST DFF. TERMINATION WILL 05315400
* PURGE THIS TERMINAL SHORTLY. 05315600
SPACE 1 05315800
B $CC4FR GO TO FREEMAIN RECORD AREA. FB 05316000
J CMDFR1 RETURN WITHOUT POSTING DFF. FB 05317000
SPACE 1 05317500
CMDFNT EQU * * LOCAL FB 05318000
MVI PLCHN-1(,PL),NOBIT ZERO CHAIN FIELD OF PL FB 05320000
LA @DFFQ-1,XR2 ADDRESS OF QUEUE FB 05330000
CMDFEN EQU * * LOCAL FB 05340000
CLI PLCHN-1(,XR2),NOBIT IS CHAIN PTR NULL FB 05350000
JE CMDFAD YES - ADD TO DFF QUEUE END FB 05360000
L PLCHN(,XR2),XR2 POINT TO NEXT QUEUE ENTRY FB 05370000
B CMDFEN TEST FOR END FB 05380000
SPACE 1 05390000
CMDFAD EQU * * LOCAL FB 05400000
ST PLCHN(,XR2),PL ADD PARM LIST TO END OF QUEUE FB 05410000
SPACE 1 05420000
* POST DFF FB 05430000
SPACE 1 05440000
LA $DFECB,XR1 ADDRESS OF DFF ECB FB 05450000
SVC 0 FB 05460000
DC AL1(POSTRB) POST DFF FB 05470000
SPACE 1 05480000
CMDFR1 LA *-*,XR1 RESTORE XR1 FB 05490000
CMDFRT B *-* RETURN FB 05500000
.F0200 ANOP 05510000
AIF (&YK EQ '2').YK015 05515000
TITLE '$E093/CMDTFS---BSCA DTF SETUP FOR CHECK' 05520000
******************************************************************** B 05530000
* * B 05540000
* NAME : CMDTFS * B 05550000
* * B 05560000
* FUNCTION : SET UP DTF FOR BSCA LINE PRIOR TO GOING TO IOCS CHECK* B 05570000
* ROUTINE. * B 05580000
* * B 05590000
* OPERATION : * B 05600000
* CHECK FOR BSCA DTF'S WITH OPERATION COMPLETE, WHEN FIND ONE * B 05610000
* DO 1 OF THE FOLLOWING: * B 05620000
* 1. IF ABORTING THE LINE, GO TO CHECK WITH NO DTF SETTING UP. * B 05630000
* 2 .IF OLT RUNNING/OUTPUT SELECT/OR DATA MOVED, NO DTF SETUP * B 05640000
* NEEDED PRIOR TO CALLING CHECK. * B 05650000
* 3. IF RECEIVE INITIAL, SET UP DTF AND IOB FOR TERMINAL READING* B 05660000
* UNLESS EOT RECEIVED TO RECEIVE INITIAL, IF SO CALL CHECK* B 05670000
* 4. IF NOT RECEIVE INITIAL, VALIDATE INPUT LINE BUFFER SIZE. * B 05680000
* * B 05680100
* EXTERNAL SUBROUTINES USED: * B 05680200
* CMCSKP - SET CHECK LIST SKIP BITS. * B 05680300
* CMTASV - SAVE TERMINAL ATTRIBUTES. * B 05680400
* CMBTAS - FILL DTF/IOB OWNERSHIP. * B 05680500
* CMGINL - GETMAIN BUFFER FOR AMOUNT OF DATA RECEIVED. * B 05680600
* $CC4BI - CHECK FOR DATA MODE ESCAPE. * B 05680700
* * B 05680800
* INPUT: * B 05680900
* LCB#1 - ADDRESS LCB CHAIN. * B 05681000
* @CKLST - ADDRESS OF CHECK LIST. * B 05681100
* * B 05681200
* OUTPUT: * B 05681300
* CHECK LIST - SKIP BITS SET SO CMBMCH WILL HANDLE OP END. * B 05681400
* DTF - THE OP ENDING DTF IS SETUP FOR MLMP. * B 05681500
* XR1, XR2 - DESTROYED. * B 05681600
* * B 05681700
* EXITS-NORMAL: 1- TO NSI OF CALLER. * B 05681800
* 2 - IF OP END WHILE PARAMETER LIST HAS TEMPORARILY BEEN * B 05681900
* RETURNED TO USER PROGRAM (BLOCK/RECORD MODE), EXIT * B 05682000
* TO CMOPND. * B 05682100
* * B 05682200
******************************************************************** B 05690000
SPACE 05700000
CMDTFS EQU * * ENTRY POINT B 05710000
ST CMDTFX+3,ARR SAVE RETURN ADDRESS B 05720000
SPACE 05730000
* LOCATE ANY BSCA DTF'S. B 05740000
SPACE 05750000
SBF CMSWIT,CMBSCK RESET BSCA DTF CHECK SCDEDULED.B 05760000
AIF (&NTTSK).TT010 05760600
SPACE 1 05761200
******************************************************************* @18 05761800
************* 05762400
************* 05763000
L CMSDTF,DTF XR2 --> THE CURRENT DTF 05763600
TBN PLSWIT,CMSOPE DID TTASK PASS CONTROL TO CMDTFS 05764200
JT CMERCL YES - THIS IS A TTASK OPERATION 05765400
************* 05766000
************* 05766600
******************************************************************* @18 05767200
SPACE 1 05767800
.TT010 ANOP 05768400
L @LCB#1,DTF LOAD @ 1ST LCB. B 05770000
CMENTR EQU * * B 05780000
&MIX SETA (&ONE+&NTTSK) 05783000
AIF (&MIX EQ '2').C0305 05786000
TBN $BDDEV(,DTF),BSCA BSCA DTF ? 2 05800000
JF CMEANR NO-GO CHECK FOR ANOTHER LCB. 2 05810000
SPACE 1 05820000
******************************************************************** 2 05830000
* BSCA DTF FOUND - CHECK FOR OP END * 2 05840000
******************************************************************** 2 05850000
SPACE 1 05860000
.C0305 ANOP 05870000
SPACE 05880000
ST CMSDTF,DTF SAVE THE DTF ADDRESS. B 05890000
&MIX SETA (&BSC+&MLA) 05900000
AIF (&MIX LE '1').Y0100 05910000
* SET CHECK LIST TO IGNORE DTF IF DATA IS NOT READY TO GO. YB 05920000
L $BDIOB(,DTF),IOB LOAD PTR TO 1ST IOB. YB 05930000
MVI CMC#SB,SBN2 SET OP TO SET SKIP ON. YB 05940000
SPACE 05950000
B CMCSKP GO TO CHECK LIST SKIP BIT RTN.YB 05960000
SPACE 05970000
* IF THERE IS ALREADY A BSCA DTF SET UP FOR CHECK, THEN DONT SET YB 05980000
* UP ANOTHER BSCA DTF FOR CHECK. SOME INTERNAL FIELDS WILL BE YB 05990000
* LOST IF ANOTHER DTF WHERE SET UP. YB 06000000
SPACE 06010000
TBN CMSWIT,CMBSCK BSCA DTF SET FOR CHECK ? YB 06020000
JT CMEANR YES-DON'T SET UP ANOTHER ONE. YB 06030000
TBF LCBOPE(,DTF),ALLBIT ANY OP ENDS FOR THIS LINE ? YB 06040000
JF CMEXPM YES-GO EXAMINE PARM LIST STAT YB 06050000
CMEANR EQU * * (LOOP BACK FOR ANOTHER DTF)YB 06060000
CLI LCBCHN-1(,DTF),NOBIT ANOTHER DTF ? YB 06070000
BE CMECHK NO-GO TO CALL CHECK. YB 06080000
L LCBCHN(,DTF),DTF POINT TO NEXT DTF. YB 06090000
B CMENTR GO TEST FOR BSCA DTF. YB 06100000
.Y0100 ANOP 06110000
SPACE 1 06120000
******************************************************************** B 06130000
* BSCA DTF WITH OP END FOUND - CHECK FOR PARAMETER LIST * B 06140000
******************************************************************** B 06150000
SPACE 1 06160000
* EXAMINE THE PARM LIST, IGNORE OP END INTERRUPT IF PARM LIST NOT B 06170000
* QUEUED. B 06180000
SPACE 06190000
CMEXPM EQU * * LOCAL B 06200000
TBN LCBAT1(,DTF),LCBNTQ PARM LIST REMOVED FROM QUEUE ? B 06210000
JF CMBDTF NO-GO SETUP DTF FOR $$BMCH B 06220000
* * WILL RETURN TO CMEANR B 06230000
SBN LCBAT1(,DTF),LCBINT SET OP END W/ NO PARM LIST Q'D.B 06240000
SLC LCBOPE(1,DTF),X$0001 DECREMENT LINE OP END COUNT. B 06250000
SLC #OPEND,X$0001(1) SUBTRACT 1 FROM OP END COUNT. B 06260000
B CMOPND GO CHECK FOR OTHER OP END'S. B 06270000
SPACE 3 06280000
******************************************************************** B 06290000
* SET UP DTF FOR THIS LINE * B 06300000
******************************************************************** B 06310000
SPACE 1 06320000
CMBDTF EQU * * B 06330000
SBN CMSWIT,CMBSCK SET DTF SCHEDULED FOR CHECK B 06340000
&MIX SETA (&BSC+&MLA) 06350000
AIF (&MIX LE '1').Y0150 06360000
MVI CMC#SB,SBF2 SET OP TO SET SKIP OFF. YB 06370000
SPACE 06380000
B CMCSKP GO TO CHECK LIST SET SKIP RTN.YB 06390000
.Y0150 ANOP 06400000
SPACE 06410000
******************************************************************* B 06420000
* IF LINE IS BEING ABORTED, THEN GO TO CHECK WITH NO SETTING UP.* B 06430000
******************************************************************* B 06440000
SPACE 06450000
TBN LCBAT2(,DTF),LCBABT LINE ABORT IN PROCESS ? B 06460000
BT CMEBCK YES-NO DTF SETTING UP,NEXT DTF B 06470000
SPACE 06480000
* SAVE THE TAS ATTRIBUTES FROM THE TUB IN SAVE AREA. B 06490000
SPACE 06500000
L LCBPL@(,DTF),PL LOAD PARM LIST OF ACTIVE TERM, B 06540000
SPACE 06550000
B CMTASV GO TO TAS SAVE SUBROUTINE. B 06560000
SPACE 06570000
AIF (&NSWL).S1060 06580000
SPACE 06590000
* SET ON LINE CONNECTED INDICATOR FOR SWITCHED LINES. SLB 06600000
SPACE 06610000
&MIX SETA &NCS+&NPP+&NMP 06620000
AIF (&MIX EQ '3').S1050 06630000
TBN $BDATR(,DTF),$BCSWI SWITCHED SLB 06640000
TBF $BDATR(,DTF),$BCMPT * LINE ? SLB 06650000
JF CMEXCK NO-DON'T SET CONNECTED. SLB 06660000
.S1050 ANOP 06670000
SBN LCBATR(,DTF),LCBNIT SET SWITCHED LINE CONNECTED. SB 06680000
CMEXCK EQU * * LOCAL SB 06690000
.S1060 ANOP 06700000
SPACE 06710000
******************************************************************** B 06720000
* IF OUTPUT OPERATION - NO DTF SETUP NEEDED PRIOR TO CHECK * B 06730000
******************************************************************** B 06740000
SPACE 06750000
TBF LCBOPC(,DTF),LCBMVD DATA MOVED OR B 06760000
TBF PL$OPM(,PL),OPPUT OUTPUT (SELECTION) OPERATION ? B 06770000
SBF LCBOPC(,DTF),LCBMVD SET OFF DATA MOVED IND. B 06780000
BF CMEBCK YES-GO CHECK FOR ANOTHER DTF. B 06790000
SPACE 06810000
TBN LCBAT2(,DTF),LCBRCI RECEIVE INITIAL ON LINE ? B 06820000
BF CMEREC NO-GO HANDLE DATA REC LENGTH @18 06830000
SPACE 1 06840000
******************************************************************** B 06850000
* RECEIVE INITIAL ON THE LINE * B 06860000
* IF LINE INIT OR ONLINE TEST STILL IN PROGRESS - DTF SETUP * B 06870000
* IS ALREADY DONE. * B 06880000
******************************************************************** B 06890000
SPACE 1 06900000
L $BDIOB(,DTF),IOB POINT TO THE IOB B 06910000
TBN IOBFLA(,IOB),FIRST LINE INIT STILL IN PROCESS ? B 06920000
BT CMEBCK YES-GO TO CHECK OTHER DTF'S. B 06930000
L $BDWKA(,DTF),$BWK POINT TO BSCA WORK AREA. B 06940000
TBN LCBAT2(,DTF),LCBRFT WAS DTF SETUP FOR OLT ON PRIOR B 06950000
* * PASS ? B 06960000
JF CMERFF NO-CHECK FOR RFT COMING IN. B 06970000
TBN $BWFG3(,$BWK),$BWRFT OLT STILL RUNNING OR STATUS MSGB 06980000
BT CMEBCK YES-GO CHECK FOR OTHER DTF'S. B 06990000
SBF LCBAT2(,DTF),LCBRFT OLT NO LONGER RUNNING, SET OFF.B 07000000
J CMERCI GO HANDLE THE RECEIVE INITIAL. B 07010000
SPACE 1 07020000
CMERFF EQU * * LOCAL B 07030000
TBN $BWFG3(,$BWK),$BWRFT OLT RUNNING OR STATUS MESSAGE B 07040000
JF CMERCI NO-GO HANDLE RECEIVE INITIAL. B 07050000
SBN LCBAT2(,DTF),LCBRFT SET RFT STARTED AND RUNNING. B 07060000
CMERCI EQU * * LOCAL B 07070000
SPACE 07080000
*----------------------------------------------------------------* B 07090000
* IF CANCEL SUCCESSFUL (NO DATA) -- NO DTF SETUP PRIOR TO CHECK * B 07100000
*----------------------------------------------------------------* B 07110000
SPACE 07120000
L $BDIOB(,DTF),IOB LOAD THE IOB REG. B 07130000
CLI IOBCMP(,IOB),$BCNEG NEGATIVE RESPONSE ? B 07140000
BE CMEBCK YES-GO CHECK OTHER DTFS @18 07150000
TBF LCBAT1(,DTF),LCBCRI+LCBPRI CANCEL PENDING ON THE LINE ? B 07160000
JT CMERCL NO - SET UP FOR RECEIVE B 07170000
CLI IOBCMP(,IOB),$BCEOT CANCEL OK ? B 07180000
BE CMEBCK YES-GO CHECK FOR OTHER DTF'S. B 07190000
SPACE 07200000
*----------------------------------------------------------------* B 07210000
* DATA RECEIVED -- SET UP DTF * B 07220000
*----------------------------------------------------------------* B 07230000
SPACE 07240000
CMERCL EQU * * LOCAL B 07250000
AIF (&NTTSK).TT020 07250300
AGO .TT030 07250600
.TT020 ANOP 07250900
AIF (&NAPOR).PT005 07251200
.TT030 ANOP 07251500
SPACE 1 07251800
******************************************************************* @18 07252100
************* 07252400
************* 07252700
TBN LCBAT3(,DTF),LCBPOR IS THIS A PORTLINE DTF ? 07253000
JF CMENPR NO - CONTINUE 07253300
CLI $BDDEV(,DTF),X'60' IS THIS A TTASK OPERATION ? 07253600
JNE CMERC1 NO - CONTINUE 07253900
SLC $BDWKB(2,DTF),X$0002 DECREMENT THE DATA POINTER BY 2 07254200
L $BDWKB(,DTF),XR1 XR1 --> TTASK DATA IN TPBUFFER 07254500
J CMERC2 CONTINUE 07254800
CMERC1 EQU * 07255100
L $BDIOB(,DTF),IOB XR1 --> DTF'S IOB 07255400
L IOBTAR(,IOB),XR1 XR1 --> TRANSITION (INPUT DATA) 07255700
CMERC2 EQU * 07256000
MVC LCBID#(1,DTF),2(,XR1) SAVE THE TERMINAL ID 07256300
MVC CMENP2-2(1),2(,XR1) SAVE THE TERMINAL ID TO RESTORE 07256600
SBF LCBID#(,DTF),TPXCMD SET OFF THE COMMAND BIT 07256900
MVC $BDREL(2,DTF),4(,XR1) SAVE THE RECORD LENGTH 07257200
MVI CMEPRT-2,TUBID-1 ALTER THE CLC FOR PORTLINE 07257500
J CMECTL CONTINUE TO FIND THE PORT 07257800
CMENPR EQU * 07258100
************* 07258400
************* 07258700
******************************************************************* @18 07259000
SPACE 1 07259300
.PT005 ANOP 07259600
AIF (&NPP).P0100 07260000
AGO .P0150 07270000
.P0100 AIF (&NMP).P0200 07280000
.P0150 ANOP 07290000
TBF $BDATR(,DTF),$BCSWI MULTI-TERM IND OFF ? P/TB 07300000
JT CMEOWN YES-PARM @ IN DTF, GO LOAD P/TB 07310000
.P0200 ANOP 07320000
AIF (&NCS).S1100 07330000
MVC LCBID#(1,DTF),$BDIND(,DTF) MOVE IN CONTROL STATION ID. CB 07340000
TBN $BDATR(,DTF),$BCMCN CONTROL STATION ? CB 07350000
JT CMECTL YES-GO FIND PARM LIST FOR CS. CB 07360000
.S1100 ANOP 07370000
AIF (&NSWL).S1200 07380000
SPACE 07390000
* FILL TERM ID FOR SWITCHED LINE IF SWITCHED ID LIST WAS USED. SB 07400000
SPACE 1 07410000
TBN $BDADD(,DTF),$BCSWD SWITCHED ID LIST USED ? SB 07420000
JF CMEOWN NO-TERM ADDRESS IN 'LCBPL@'. SB 07430000
MVC LCBID#(1,DTF),$BDRLN(,DTF) MOVE IN SWITCHED TERM ID. SB 07440000
.S1200 ANOP 07450000
&MIX SETA &NCS+&NSWL+&NAPOR+&NTTSK 07460000
AIF (&MIX EQ '4').S1300 07470000
SPACE 1 07480000
* FIND PARM LIST FOR MULTI-TERMINAL LINE. C/SB 07490000
SPACE 1 07500000
CMECTL EQU * * LOCAL C/SB 07510000
L LCBPLQ(,DTF),PL LOAD PTR TO FIRST PARM LIST.C/SB 07520000
CMEXID EQU * * LOCAL C/SB 07530000
ST LCBPL@(,DTF),PL SAVE @ OF CURRENT PARM LIST.C/SB 07540000
TBN PL$OPC(,PL),OPSTCM IS STOP INVITE TURNED GET C/SB 07550000
* * STILL RECVING DATA. C/SB 07560000
JT CMESIJ YES - HANDLE IT LIKE GET. C/SB 07570000
TBN PL$OPM(,PL),OPGET THIS A GET PARM LIST ? C/SB 07580000
TBF PLOPM(,PL),OPSTOP * AND NOT A STOP C/SB 07590000
JF CMENXT NO-GO TO GET NEXT PARM LIST.C/SB 07600000
CMESIJ EQU * * LOCAL C/SB 07610000
L PLTUBA(,PL),TUB LOAD @ OF THIS TERMS TUB. C/SB 07620000
CLC TUBSID(1,TUB),LCBID#(,DTF) THIS RESPONDING TERM'S TUB C/SB 07630000
CMEPRT EQU * 07635000
L LCBPL@(,DTF),PL RELOAD PARM LIST @. C/SB 07640000
JE CMESKP YES-GO SET SKIP BIT ON. C/SB 07650000
CMENXT EQU * * LOCAL C/SB 07660000
CLI PLCHN-1(,PL),NOBIT IS THIS THE END OF THE CHAIN @25 07660100
JNE CMESLP NO - THEN CONTINUE NORMALLY @25 07660200
AIF (&NTTSK).TT040 07660500
AGO .TT050 07661000
.TT040 ANOP 07661500
AIF (&NAPOR).PT010 07662000
.TT050 ANOP 07662500
SPACE 1 07663000
******************************************************************* @18 07663500
************* 07664000
************* 07664500
B CMZDMY YES - CHECK IF PORTLINE GET 07666000
J CMESKP CONTINUE NORMALLY 07666500
************* 07667500
************* 07668000
******************************************************************* @18 07668500
SPACE 1 07669000
AGO .PT025 07669200
.PT010 ANOP 07669500
DC XL1'00' NO PARM LIST - U-PC @25 07669600
.PT025 ANOP 07669700
CMESLP EQU * @25 07669800
L PLCHN(,PL),PL LOAD REG TO NEXT PARM LIST @C/SB 07670000
B CMEXID GO BACK TO EXAMINE THIS ID. C/SB 07680000
SPACE 07690000
CMESKP EQU * * LOCAL C/SB 07700000
SPACE 1 07700100
AIF (&NTTSK).TT060 07700200
AGO .TT070 07700300
.TT060 ANOP 07700400
AIF (&NAPOR).PT060 07700500
.TT070 ANOP 07700600
******************************************************************* @18 07700700
************* 07700800
************* 07700900
TBN LCBAT3(,DTF),LCBPOR IS THIS A PORTLINE DTF ? 07701000
JF CMENP3 NO - CONTINUE 07701100
MVI LCBID#(,DTF),# MOVE THE PORT ID BACK INTO DTF 07701200
CMENP2 EQU * 07701300
MVI CMEPRT-2,TUBSID RESTORE THE CLC BACK FOR BSCA 07701400
CLI $BDDEV(,DTF),X'60' IS THIS A TTASK OPERATION ? 07701500
JNE CMENP3 NO - CONTINUE 07701600
ALC $BDWKB(2,DTF),X$0002 BUMP THE RECORD POINTER BY 2 07701700
MVC PLRECA(2,PL),$BDWKB(,DTF) MOVE THIS VALUE INTO RECORD ADDR 07701800
ST CMSPL,PL STORE THE CURRENT P.L. ADDRESS 07701900
J CMECHK RETURN ON ARR 07702000
CMENP3 EQU * 07702100
************* 07702200
************* 07702300
******************************************************************* @18 07702400
SPACE 1 07702500
.PT060 ANOP 07702600
MVC LCBLID(1,DTF),LCBID#(,DTF) SAVE LAST TERMINAL ID C/SB 07704000
SPACE 07710000
* SAVE THE TAS ATTRIBUTTES FOR NEW TERMINAL. 07720000
SPACE 07730000
B CMTASV GO TO TAS SAVE SUBROUTINE. B 07740000
SPACE 07750000
.S1300 ANOP 07760000
* SET DTF AND IOB ATTRIBUTES, OWN, RECEIVE IND'S, AND BLOCK LENGTH. B 07770000
* ALSO SET LINE OWNERSHIP STATUS. 07780000
SPACE 07790000
CMEOWN EQU * * LOCAL B 07800000
SPACE 07810000
B CMBTAS RTN TO FILL DTF/IOB/OWNERSHIP. B 07820000
SPACE 07830000
AIF (&NITB).I0800 07840000
TBN SAVTA2,TASREC+TASITB RECORD MODE AND ITB ? IB 07850000
JF CMEIOB NO-GO CORRECT THE IOB'S. IB 07860000
MVC $BDITB(1,DTF),TUBBKF(,TUB) PUT BLOCK FACTOR IN TEMP WORKIB 07870000
AIF (&NTSP).I0700 07880000
* ------------------------------------------- START ------------- @17 07883000
L $BDIOB(,DTF),IOB LOAD THE IOB POINTER. B 07886000
TBN IOBFLG(,IOB),$BCRAN TRANSPARENCY ? IXB 07890000
* ------------------------------------------- END --------------- @17 07895000
JF CMEITB NO-GO SET FOR ITB ONLY. IXB 07900000
ALC LCBKLC(2,DTF),$BDITB(,DTF) ADD 3 TIMES BLOCKING FACTOR IXB 07910000
ALC LCBKLC(2,DTF),$BDITB(,DTF) * BUFFER LENGTH FOR ITB IXB 07920000
ALC LCBKLC(2,DTF),$BDITB(,DTF) * TRANSPARENT GET. IXB 07930000
MVI $BDITB(,DTF),3 SET ITB LENGTH TO 3. IXB 07940000
J CMEIOB GO CORRECT IOB ATTRIBUTTES. IXB 07950000
SPACE 07960000
.I0700 ANOP 07970000
CMEITB EQU * * LOCAL IXB 07980000
ALC LCBKLC(2,DTF),$BDITB(,DTF) ADD BLK FACTOR FOR ITB ONLY. IB 07990000
MVI $BDITB(,DTF),1 SET ITB LENGTH TO 1. IB 08000000
.I0800 ANOP 08010000
SPACE 08020000
* CORRECT ALL IOB'S IN THE CHAIN FOR ANY NEW ATTRIBUTTES SET. 08030000
SPACE 08040000
CMEIOB EQU * * LOCAL B 08050000
L $BDIOB(,DTF),IOB LOAD THE IOB POINTER. B 08060000
CMBTIB EQU * * LOCAL B 08070000
MVC IOBFLG(1,IOB),$BDATT(,DTF) MOVE ATTR. BYTE TO IOB. B 08080000
CLC IOBNXT(2,IOB),$BDIOB(,DTF) ANOTHER IOB IN THE CHAIN ? B 08090000
L IOBNXT(,IOB),IOB LOAD @ OF NEXT IOB. B 08100000
BNE CMBTIB YES-GO FILL THE NEXT IOB. B 08110000
SPACE 1 08120000
* IF NOT A GOOD DATA BLOCK, DON'T CHECK DME, RECORD LENGTH, ETC. B 08130000
SPACE 1 08140000
TBF IOBCMP(,IOB),ALLBIT-$BCEOT GOOD DATA BLOCK? B 08150000
JF CMEBCK NO-GO CHECK OTHER DTF'S. B 08160000
SPACE 08170000
*----------------------------------------------------------------* B 08180000
* GOOD DATA RECEIVED * B 08190000
*----------------------------------------------------------------* B 08200000
SPACE 08210000
AIF (&NDME).D0300 08220000
SPACE 1 08230000
L LCBPL@(,DTF),PL POINT TO THE PARM LIST. DB 08240000
L PLTUBA(,PL),TUB POINT TO THE TUB. DB 08250000
TBF TUBAT2(,TUB),TUBCMD NOT COMMAND MODE, DB 08260000
TBN TUBAT2(,TUB),TUBDTA , IS IN DATA MODE, AND DB 08270000
TBN TUBAT1(,TUB),TUBREQ * IS THE REQUESTOR ? DB 08280000
JF CMEREC NO-GO CHECK RECORD LENGTH. DB 08290000
AIF (&N32).D0100 08300000
TBN TUBSCS(,TUB),TUBCLR CLEAR KEY HIT ? 0DB 08310000
AIF (&NCPU).D0050 08320000
JT CMEBIC YES-GO TO INQUIRY XIENT. 0DB 08330000
AGO .D0100 08340000
.D0050 ANOP 08350000
JF CMEREC NO-GO CHECK RECORD LENGTH. 0DB 08360000
AGO .D0200 08370000
.D0100 AIF (&NCPU).D0200 08380000
CLI TUBPHY(,TUB),TUBCPU CPU TERMINAL ? UDB 08390000
JNE CMEREC NO-GO CHECK RECORD LENGTH. UDB 08400000
.D0200 ANOP 08410000
SPACE 08420000
*----------------------------------------------------------------* DB 08430000
* CLEAR KEY ON DATA MODE 3270 OR CPU -- CHECK FOR DME * DB 08440000
*----------------------------------------------------------------* DB 08450000
SPACE 08460000
CMEBIC EQU * * LOCAL DB 08470000
LA CMDME,XR1 POINT XR1 TO DME STRING. DB 08480000
SVC 0 ##### TRANSIENT CALL ##### DB 08490000
DC AL1(CCPRIB) CCP SVC RIB DB 08500000
DC AL1(CC4BI) BSCA DME INQUIRY. DB 08510000
.D0300 ANOP 08520000
SPACE 08530000
******************************************************************** B 08540000
* ALL READS --- DETERMINE BUFFER SIZE NEEDED - ADJUST HOLD BUFFER* B 08550000
******************************************************************** B 08560000
SPACE 08570000
CMEREC EQU * * B 08580000
AIF (&NTTSK).TT080 08582000
AGO .TT090 08584000
.TT080 ANOP 08586000
AIF (&NAPOR).PT020 08590500
.TT090 ANOP 08591000
SPACE 1 08591500
******************************************************************* @18 08592000
************* 08592500
************* 08593000
TBN LCBAT3(,DTF),LCBPOR IS THIS A PORTLINE DTF ? 08593500
JF CMERMS NO - CONTINUE 08594000
B CMZINL YES - GO TO THE PORTLINE ROUTINE 08594500
J CMEBCK CONTINUE 08595000
CMERMS EQU * 08595500
************* 08596000
************* 08596500
******************************************************************* @18 08597000
SPACE 1 08597500
.PT020 ANOP 08598000
B CMGINL COMPUTE AMOUNT OF DATA TO MOVE B 08600000
* GETMAIN RIGHT SIZE BUFFER B 08610000
* * NOW THAT WE KNOW HOW MUCH B 08620000
* * DATA CAME IN. B 08630000
SPACE 08640000
CMEBCK EQU * * (WITHIN CMBDTF) B 08650000
&MIX SETA (&BSC+&MLA) 08660000
AIF (&MIX LE '1').Y0250 08670000
B CMEANR GO CHECK FOR ANOTHER DTF. YB 08680000
SPACE 2 08690000
.Y0250 ANOP 08700000
CMECHK EQU * * EXIT B 08710000
CMDTFX B *-* RETURN B 08720000
.C0580 ANOP 08730000
.YK015 ANOP 08735000
AIF (&NTTSK).TT100 08735010
AGO .TT110 08735020
.TT100 ANOP 08735030
AIF (&NAPOR).PT030 08735040
.TT110 ANOP 08735050
TITLE '$E093/PORTLINE SUBROUTINES' 08735060
SPACE 10 08735070
********************************************************************@18 08735080
* @18 08735090
* THE FOLLOWING SUBROUTINES ARE FOR THE PORTLINE FUNCTIONS @18 08735100
* @18 08735110
********************************************************************@18 08735120
EJECT 08735130
*********************************************************************** 08735140
* * 08735150
* NAME : CMZDMY * 08735160
* * 08735170
* FUNCTION : ADD A DUMMY PARAMETER LIST TO LCBPLQ CHAIN TO BRING IN * 08735180
* DATA WHEN THERE IS NOT A GET AVAILABLE FOR THAT PORT * 08735190
* * 08735200
* OPERATION : * 08735210
* 1. IF NOT A PORT TUB, THEN PROC CHECK * 08735220
* 2. SET UP THE DUMMY PARAMETER LIST FOR A PORTLINE GET * 08735230
* 3. PUT THIS PARAMTER LIST ON LCBPLQ * 08735240
* 4. IF NOT PORT TUB WAS FOUND THEN U- * 08735250
* * 08735260
* EXTERNAL SUBROUTINES USED: * 08735270
* * 08735280
* INPUT: * 08735290
* XR1 --> THE LAST PARAMETER LIST IN LCBPLQ * 08735300
* XR2 --> THE LCB * 08735310
* * 08735320
* OUTPUT: * 08735330
* THE DUMMY PARAMETER LIST WILL BE ON LCBPLQ TO ACCEPT THE * 08735340
* INPUT DATA * 08735350
* * 08735360
* EXITS-NORMAL: * 08735370
* RETURN ON ARR * 08735380
* * 08735390
*********************************************************************** 08735400
SPACE 1 08735410
CMZDMY EQU * 08735420
ST CMZD70+3,ARR SAVE ARR FOR RETURN 08735430
TBN LCBAT3(,DTF),LCBPOR IS THIS A PORTLINE OPERATION ? 08735440
JT CMZD05 YES - CONTINUE 08735450
DC XL1'00' NO - INVALID OP END, PROC CHECK 08735460
CMZD05 EQU * 08735470
TBN 0(,DTF),X'88' IS THE A LINE 2 DTF ? 08735480
JT CMZD10 YES - USE THE LINE 2 DUMMY P.L. 08735490
MVC PLCHN(2,PL),@PRMD1 NO - USE THE LINE 1 DUMMY P.L. 08735500
J CMZD20 CONTINUE 08735510
CMZD10 EQU * 08735520
MVC PLCHN(2,PL),@PRMD2 USE THE LINE 2 DUMMY P.L. 08735530
CMZD20 EQU * 08735540
L PLCHN(,PL),PL XR1 --> DUMMMY PARAMETER LIST 08735550
MVI PLCHN-1(,PL),NOBIT ASSURE THIS IS THE END OF CHAIN 08735560
ST LCBPL@(,DTF),PL SAVE THE CURRENT P.L. ADDRESS 08735570
MVC PLINL(2,PL),LCBIBL(,DTF) MAX MESSAGE LENGTH 08735580
L @TUBQ,XR1 XR1 --> FIRST TUB 08735590
CMZD30 EQU * 08735600
CLI TUBCCP(,XR1),TUBSTP THIS THE END OF THE TUBS ? 08735610
JE CMZD60 YES - U- 08735620
TBN TUBPHY(,XR1),TUBAPT IS THIS A PORT TUB ? 08735630
JF CMZD40 NO - CONTINUE LOOKING 08735640
CLC LCBID#(1,DTF),TUBID-1(,XR1) THIS THE CORRECT PORT ? 08735650
JNE CMZD40 NO - CONTINUE LOOKING 08735660
CLC CMSDTF(2),TUBDTF(,XR1) IS THIS THE CORRECT DTF ? 08735670
JE CMZD50 YES - THIS IS THE RIGHT PORT 08735680
CMZD40 EQU * 08735690
TBN TUBCHR(,XR1),TUBCMN IS THIS A COMMAND MODE TUB ? 08735700
JF CMZD45 NO - THIS IS A SHORT TUB 08735710
LA TUBLNC-TUBLN(,XR1),XR1 YES - THIS IS A LONG TUB 08735720
CMZD45 EQU * 08735730
LA TUBLN(,XR1),XR1 BUMP TO THE NEXT PORT TUB 08735740
B CMZD30 TRY THE NEXT PORT 08735750
CMZD50 EQU * 08735760
L LCBPL@(,DTF),XR2 XR2 --> DUMMY PARAMETER LIST 08735770
ST PLTUBA(,XR2),XR1 SAVE TUB ADDRESS IN PL 08735780
L CMSDTF,DTF XR2 --> DTF 08735790
L LCBPL@(,DTF),PL XR1 --> PL 08735800
J CMZD70 RETURN ON ARR 08735810
CMZD60 EQU * 08735820
MVI $BDCMP(,DTF),$BCCAL SET CANCEL CODE FOR $CC4UF 08735830
L LCBPL@(,DTF),PL XR1 --> PL 08735840
SVC 0 #### TRANSIENT CALL #### 08735850
DC AL1(CCPRIB) CCP SVC RIB 08735860
DC AL1(CC4BE) ERROR TRANSIENT ID ($CC4BE) 08735870
CMZD70 EQU * 08735880
B # RETURN ON ARR 08735890
EJECT 08735900
*********************************************************************** 08735910
* * 08735920
* NAME : CMZINL * 08735930
* * 08735940
* FUNCTION : COMPUTE AMOUNT OF DATA TO MOVE FOR A PORTLINE OPERATION * 08735950
* AND GETMAIN TPBUFFER FOR THAT AMOUNT * 08735960
* * 08735970
* OPERATION : * 08735980
* * 08735990
* EXTERNAL SUBROUTINES USED: * 08736000
* * 08736010
* INPUT: * 08736020
* XR1 --> NO MATTER * 08736030
* XR2 --> LCB FOR THE ACTIVE LINE * 08736040
* * 08736050
* OUTPUT: * 08736060
* THE CORRECT TPBUFFER WILL BE GETMAINED TO PERFORM THE INPUT * 08736070
* OPERATION * 08736080
* * 08736090
* EXITS-NORMAL: * 08736100
* RETURN ON ARR * 08736110
* * 08736120
*********************************************************************** 08736130
SPACE 1 08736140
CMZINL EQU * 08736150
ST CMZI20+3,ARR SAVE THE ARR TO RESTORE 08736160
TBN LCBAT2(,DTF),LCBRCI IS THE LINE AT RECEIVE INIT ? 08736170
JF CMZI20 NO - DATA WAS ALREADY RECEIVED 08736180
SLC #BUFND(2),#BUFND ZERO THE STORAGE AREA 08736190
L LCBPL@(,DTF),PL XR1 --> PARAMETER LIST 08736200
TBN LCBID#(,DTF),TPXCMD COMMAND DATA ? 08736210
JF CMZI10 NO - DON'T ADD THE PCT LENGTH 08736220
MVC #BUFND(1),#PCTLN YES - MOVE IN THE PCT LENGTH 08736230
CMZI10 EQU * 08736240
ALC #BUFND(2),$BDREL(,DTF) ADD LENGTH FROM OTHER SYSTEM 08736250
ALC #BUFND(2),LNTHCC ADD LENGTH FOR CONTROL INFO 08736260
ALC #BUFND(2),X$0004 ADD FOUR BYTES FOR TPBUFFER P.L 08736270
B CMGBUF GETMAIN THE TPBUFFER 08736280
MVC $BDWKB(2,DTF),LCBIBA(,DTF) MOVE IN THE BUFFER POINTER 08736290
ALC $BDWKB(2,DTF),LNTHCC INCREMENT THE POINTER BY 13 08736300
MVC PLRECA(2,PL),$BDWKB(,DTF) INPUT BUFFER TO PLRECA 08736310
ALC PLRECA(2,PL),X$0003 ADD 3 TO PLRECA 08736320
CMZI20 EQU * 08736330
B # RETURN ON ARR 08736340
EJECT 08736350
*********************************************************************** 08736360
* * 08736370
* NAME : CMZNWR * 08736380
* * 08736390
* FUNCTION : ACCEPT NEW TP PARAMETER LIST FOR PORTLINE TUBS. * 08736400
* PERFORM THE FUNCTION REQUESTED IF IT CAN BE HANDLED * 08736410
* IMMEDIATELY. OTHERWISE PLACE THE PARAMETER LIST INTO * 08736420
* THE LCB LINE QUEUE OF WORK TO BE DONE. * 08736430
* * 08736440
* OPERATION : * 08736450
* * 08736460
* EXTERNAL SUBROUTINES USED: * 08736470
* * 08736480
* INPUT: * 08736490
* XR1 --> ADDRESS OF THE CURRENT PARAMETER LIST * 08736500
* XR2 --> LCB FOR THE ACTIVE LINE * 08736510
* * 08736520
* OUTPUT: * 08736530
* LCBPLQ - NEW REQUEST ADDED TO THIS QUEUE * 08736540
* DATA IS REMOVED FROM TUBDCH AND USER IS POSTED * 08736550
* * 08736560
* EXITS-NORMAL: * 08736570
* TO CMPAII - TO POST THE USER. * 08736580
* * 08736590
*********************************************************************** 08736600
SPACE 1 08736610
CMZNWR EQU * 08736620
ST CMZNAR+3,ARR SAVE THE ARR TO RETURN 08736630
SLC PL$RTC(2,PL),PL$RTC(,PL) ZERO THE RETURN CODE AREA 08736640
L PLTUBA(,PL),XR2 XR2 --> TUB 08736650
CLI TUBDCH-1(,XR2),NOBIT DATA ALREADY IN TPBUFFER 08736660
JE CMZNPT NO - CONTINUE 08736670
TBN PL$OPM(,PL),OPPUT NEW REQUEST A PUT ? 08736680
JF CMZDAT NO - GET DATA FROM TPBUFFER 08736690
MVI PLRTC(,PL),RCXDPD DATA PENDING RETURN CODE 08736700
MVI PL$RTC(,PL),RCXDPD DATA PENDING RETURN CODE 08736710
L TUBDTF(,XR2),DTF XR2 --> DTF @23 08736712
CLI $BDDEV(,DTF),X'60' IS THIS TASK-TO-TASK ? @23 08736714
JNE CMZPST NO - CONTINUE NORMALLY @23 08736716
SLC PLRECA(2,PL),LNTHCC DECREMENT PLRECA FOR FREMAIN @23 08736718
J CMZPST POST PARM LIST OWNER 08736720
CMZDAT EQU * 08736730
MVC PLRECA(2,PL),TUBDCH(,XR2) MOVE DATA ADDRESS INTO PARM LIST 08736740
L TUBDCH(,XR2),XR2 XR2 --> FIRST DATA BLOCK 08736750
A BCKREG,XR2 BACK UP 1 BYTE 08736760
MVC PL$RTC(2,PL),TPXRTC(,XR2) USER RETURN CODE TO PARM LIST 08736770
MVC PLEFFL(2,PL),TPXDLN(,XR2) EFFECTIVE INPUT LENGTH TO PL 08736780
TBN PLOPM(,PL),OP$SYS SYSTEM PARAMETER LIST 08736790
JF CMZUSR NO - CONTINUE 08736800
MVC PLINL(2,PL),TPXFRL(,XR2) SYSTEM GETMAIN LENGTH 08736810
SLC PLINL(2,PL),X$0004 -4 FOR GETMAIN PARM LIST 08736820
J CMZPFR GO SET CHAIN ADDRESS 08736830
CMZUSR EQU * 08736840
TBN TPXPID(,XR2),TPXCMD COMMAND DATA 08736850
JF CMZCHK NO - CONTINUE 08736860
SBN PLSWIT,CMSCMD INDICATE COMMAND DATA TO USER 08736870
J CMZPFR CONTINUE 08736880
CMZCHK EQU * 08736890
CLC PLEFFL(2,PL),PLINL(,PL) CHECK IF TOO MUCH DATA 08736900
JNH CMZPFR NO - CONTINUE 08736910
SBN PL$RTC(,PL),RCXDTR SET DATA TRUNCATED RETURN CODE 08736920
MVC PLEFFL(2,PL),PLINL(,PL) MAX INPUT FOR THIS USER 08736930
CMZPFR EQU * 08736940
L PLTUBA(,PL),XR1 XR1 --> PORT 08736950
MVC TUBDCH(2,XR1),TPXCHN(,XR2) REMOVE THE DATA FROM THE CHAIN 08736960
SBF TUBAT2(,XR1),TUBIIS SET OFF THE INPUT SCHEDULED BIT 08736970
L CMSPL,PL RESTORE XR1 TO THE PARM LIST 08736980
J CMZPST GO POST AND FREE THE DATA 08736990
CMZNPT EQU * 08737000
L CMSDTF,DTF XR2 --> DTF 08737010
SBN LCBAT3(,DTF),LCBPOR SET ON THE PORTLINE DTF BIT 08737020
AIF (&NTTSK).TT140 08737030
CLI $BDDEV(,DTF),X'60' IS THIS A TTASK OPERATION ? 08737040
BE CMZTNW YES - GO TO THE TTASK SUBROUTINE 08737050
.TT140 ANOP 08737060
TBN LCBAT2(,DTF),LCBACT+LCBRCI IS THE LINE ACTIVE AND POLLING? 08737070
TBN PL$OPM(,PL),OPPUT IS THIS A PUT OPERATION ? 08737080
JF CMZNAR NO - RETURN TO MAINLINE CODE 08737090
TBF LCBAT1(,DTF),LCBCRI+LCBPRI ALREADY REQUEST A STOP ? 08737100
SBN LCBAT1(,DTF),LCBPRI SET 'PRIORITY CANCEL' INDICATOR 08737110
JF CMZAII YES - POST THE PARAMETER LIST 08737120
CMZNP2 EQU * 08737130
LA 0(,PL),XR2 XR2 --> P.L. FOR $CC4BP 08737140
SVC 0 TRANSIENT CALL 08737150
DC AL1(CCPRIB) CCP SVC RIB 08737160
DC AL1(CC4BP) STOP INVITE TRANSIENT 08737170
J CMZAII POST THE PARAMETER LIST 08737180
CMZPST EQU * 08737190
B CMPOST 08737200
CMZAII EQU * 08737210
B CMPAII 08737220
CMZNAR EQU * 08737230
B # RETURN ON THE ARR 08737240
EJECT 08737250
AIF (&NTTSK).TT150 08737260
*********************************************************************** 08737270
* * 08737280
* NAME : CMZTNW * 08737290
* * 08737300
* FUNCTION : PERFORM THE NEW REQUEST OPERATIONS FOR THE TASK-TO-TASK * 08737310
* FUNCTION. IF AN OPERATION CANNOT GET TPBUFFER, THEN * 08737320
* PUT THE REQUEST BACK ON @PRLQ * 08737330
* * 08737340
* OPERATION : * 08737350
* * 08737360
* EXTERNAL SUBROUTINES USED: * 08737370
* * 08737380
* INPUT: * 08737390
* XR1 --> CURRENT PARAMETER LIST * 08737400
* XR2 --> LCB FOR THE ACTIVE LINE * 08737410
* * 08737420
* OUTPUT: * 08737430
* THE PARAMETER LIST IS POSTED, NEW REQUESTS ARE HANDLED. * 08737440
* * 08737450
* EXITS-NORMAL: * 08737460
* CMOPNT - FAKED OP END FOR ALL USER PUT OPERATIONS * 08737470
* CMOPND - CHECK FOR MORE WORK TO DO * 08737480
* CMPAII - POST THE USER AND RETURN * 08737490
* CMZNP2 - CALL TO $CC4BP-$CC4ZS TRANSIENTS * 08737500
* * 08737510
*********************************************************************** 08737520
SPACE 1 08737530
CMZTNW EQU * 08737540
SBN 03(,DTF),X'47' SET ON THE LINE ACTIVE BITS 08737550
SBN LCBAT2(,DTF),LCBACT SET THE LINE AS BEING ACTIVE 08737560
MVI $BDCMP(,DTF),$BCDNE MOVE IN 40 COMP CODE SO THE 08737570
* IOS WAIT ROUTINE IS NOT CALLED 08737580
TBN PL$OPM(,PL),OPGETM DID WE RUN OUT OF TPBUFFER ? 08737590
JF CMZT30 NO - CONTINUE 08737600
LA @PRLQ-1,XR2 XR2 --> NEW REQUEST QUEUE 08737610
CMZT10 EQU * 08737620
CLI 0(,XR2),NOBIT IS THIS THE END OF THE CHAIN ? 08737630
JE CMZT20 YES - PUT THE P.L. ON THE CHAIN 08737640
L PLCHN(,XR2),XR2 XR2 --> NEXT PARM LIST ON CHAIN 08737650
B CMZT10 LOOP 08737660
CMZT20 EQU * 08737670
ST PLCHN(,XR2),PL ADD THE PARM LIST TO THE CHAIN 08737680
LA @PRLQ-1,XR2 XR2 --> START OF NEW REQUEST Q 08737690
CMZT40 EQU * 08737700
L PLCHN(,XR2),XR2 XR2 --> NEXT PARM LIST IN CHAIN 08737710
TBF PL$OPM(,XR2),OPGETM DID GETMAIN FAIL FOR THIS P.L.? 08737720
BT CMOPND NO - GO HANDLE THE NEW REQUEST 08737730
CLI PLCHN-1(,PL),NOBIT ARE THERE ANY MORE ON THE CHAIN? 08737740
BNE CMZT40 YES - CHECK THEM OUT 08737750
TBN CMSWIT,CMFMPS WAS THE POST FOR A FREEMAIN ? 08737760
BT CMFRPS YES - BETTER CHECK IT OUT 08737770
B CMNWRK NO - CONTINUE NORMALLY 08737780
CMZT30 EQU * 08737790
TBN PLOPM(,PL),OPSTOP IS THIS A STOP INVITE ? 08737800
BT CMZNP2 YES - CALL $CC4BP-$CC4ZS 08737810
B CMSTOR MOVE IN THE COMMAND LENGTH 08737820
TBN PLOPC(,PL),OPPUT USER PUT OPERATION ? 08737830
TBF PLOPM(,PL),OP$SYS USER ? 08737840
BF CMPAII NO - POST THE P.L. AND CONTINUE 08737850
LA PLECB(,PL),XR1 POST THE USER PUT SUCCESSFUL 08737860
SVC 0 08737870
DC AL1(POSTRB) POST RIB 08737880
SBN PLSWIT,CMSOPE SET ON THE TTASK BIT 08737890
B CMOPNT HANDLE THE PUT AS AN OP END 08737900
EJECT 08737910
.TT150 ANOP 08737920
*********************************************************************** 08737930
* * 08737940
* NAME : CMZSSA * 08737950
* * 08737960
* FUNCTION : MOVE THE PORTLINE INFORMATION INTO THE TPBUFFER AREA * 08737970
* FOR EACH INPUT OPERATION. * 08737980
* * 08737990
* OPERATION : * 08738000
* * 08738010
* EXTERNAL SUBROUTINES USED: * 08738020
* * 08738030
* INPUT: * 08738040
* XR1 --> NO MATTER * 08738050
* XR2 --> LCB FOR THE ACTIVE LINE * 08738060
* * 08738070
* OUTPUT: * 08738080
* THE 17 BYTES PRECEEDING THE DATA IN TPBUFFER WILL HAVE THE * 08738090
* REQUIRED INFORMATION. * 08738100
* * 08738110
* EXITS-NORMAL: * 08738120
* RETURN ON THE ARR * 08738130
* * 08738140
*********************************************************************** 08738150
SPACE 1 08738160
CMZSSA EQU * 08738170
ST CMZS10+3,ARR SAVE THE ARR TO RETURN 08738180
L LCBIBA(,DTF),XR1 XR2 --> INPUT BUFFER AREA 08738190
SLC TPXRTC(4,XR1),TPXRTC(,XR1) CLEAR RETURN/DATA ADDRESS 08738200
MVC 7(1,XR1),13(,XR1) PORT ID INTO TPBUFFER 08738210
MVC $BDIND(1,DTF),13(,XR1) PORT ID INTO THE LCB 08738220
MVC 9(2,XR1),15(,XR1) LENGTH OF TEXT INTO TPBUFFER 08738230
SLC 9(2,XR1),X$0003 DECREMENT THE LENGTH BY THREE 08738240
SLC LCBIBA(2,DTF),X$0001 DECREMENT IBA TO GET TPBUFFER PL 08738250
L LCBIBA(,DTF),XR1 XR2 --> INPUT BUFFER AREA 08738260
ALC LCBIBA(2,DTF),X$0001 INCREMENT IBA BACK TO NORMAL 08738270
MVC 16(4,XR1),0(,XR1) MOVE GETMAIN/FREEMAIN PARMS 08738280
L LCBPL@(,DTF),PL RESTORE XR1 TO THE PARM LIST 08738290
CMZS10 EQU * 08738300
B # 08738310
EJECT 08738320
*********************************************************************** 08738330
* * 08738340
* NAME : CMZQUE * 08738350
* * 08738360
* FUNCTION : QUEUE THE PORTLINE DATA ON TUBDCH CHAIN. * 08738370
* * 08738380
* OPERATION : * 08738390
* * 08738400
* EXTERNAL SUBROUTINES USED: * 08738410
* * 08738420
* INPUT: * 08738430
* XR1 --> ADDRESS OF THE CURRENT PARAMETER LIST * 08738440
* XR2 --> LCB FOR THE ACTIVE LINE * 08738450
* * 08738460
* OUTPUT: * 08738470
* THE ADDRESS TO THE DATA IN TPBUFFER WILL BE IN THE TUBDCH * 08738480
* CHAIN. * 08738490
* * 08738500
* EXITS-NORMAL: * 08738510
* RETURN ON THE ARR * 08738520
* * 08738530
*********************************************************************** 08738540
SPACE 1 08738550
CMZQUE EQU * 08738560
ST CMZQ40+3,ARR SAVE THE ARR TO RETURN 08738570
L CMSDTF,DTF XR2 --> DTF 08738580
TBN PLOPC(,PL),OPDMY IS THIS A DUMMY PARAMETER LIST ? 08738590
JT CMZQ10 YES - QUEUE THE DATA 08738600
TBF PLOPM(,PL),OP$SYS IS THIS A USER OPERATION ? 08738610
TBF PL$OPM(,PL),OPPUT IS THIS A GET OPERATION ? 08738620
TBN $BDIND(,DTF),TPXCMD IS THE DATA COMMAND DATA ? 08738630
JF CMZQ40 IF NOT BOTH, DO NOT QUEUE DATA 08738640
SBN PLSWIT,CMSCMD INDICATE COMMAND DATA TO USER 08738650
CMZQ10 EQU * 08738660
L PLTUBA(,PL),XR2 XR2 --> PORT TUB 08738670
LA TUBDCH-TPXCHN(,XR2),XR2 XR2 --> DATA QUEUE IN THE TUB 08738680
CMZQ20 EQU * 08738690
CLI TPXCHN-1(,XR2),NOBIT END OF THE QUEUE ? 08738700
JE CMZQ30 YES - PUT NEW ENTRY ON THE QUEUE 08738710
L TPXCHN(,XR2),XR2 XR2 --> NEXT ENTRY ON THE QUEUE 08738720
A BCKREG,XR2 BACK UP ONE BYTE 08738730
B CMZQ20 TRY FOR THE END OF THE QUEUE 08738740
CMZQ30 EQU * 08738750
MVC TPXCHN(2,XR2),PLRECA(,PL) CHAIN IN TPBUFFER DATA 08738760
L TPXCHN(,XR2),XR2 XR2 --> NEW DATA IN TPBUFFER 08738770
A BCKREG,XR2 BACK UP ONE BYTE 08738780
MVC TPXRTC(2,XR2),PL$RTC(,PL) RETURN CODE TO TPBUFFER 08738790
MVI TPXCHN-1(,XR2),NOBIT MAKE THIS THE END OF THE CHAIN 08738800
CMZQ40 EQU * 08738810
B # RETURN ON ARR 08738820
.PT030 ANOP 08738830
MEND 08740000