|
|
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: 13970 (0x3692)
Types: s3xseg
Names: »S$E100«
└─⟦4498c64f7⟧ Bits:30009191 5704-sc2.V05.ccp
└─⟦95ee7795b⟧
└─⟦this⟧ »S$E100«
MACRO 00010000
$E100 00020000
GBLA &C#NL 00030000
.********************************************************************* 00040000
.* * 00050000
.* GBLA &C#NL * NUMBER * OF BSCC LINES * 00060000
.* * VALUE OF 1 OR 2 * 00070000
.********************************************************************* 00080000
GBLB &CSIO 0=SUPPORTED 1=NOT SUPPORTED 00085000
GBLB &NCPOR 0=SUPPORTED 1=NOT SUPPORTED 00087000
TEXT 00090000
TITLE '$E100 - M A I N L I N E C S ' 00100000
*********************************************************************** 00110000
* * 00120000
* * 00130000
* TITLE: $CC4#M-RESIDENT MAINLINE COMMUNICATIONS SCHEDULER (CS) * 00140000
* * 00150000
* STATUS: V2M0 * 00160000
* * 00170000
* FUNCTION/OPERATION: RESIDENT CS CONSISTS OF MACROS $E100, * 00180000
* $E110, $E120, $E140, AND $E180. * 00190000
* * 00200000
* THIS MACRO ($E100) DETERMINES WHY CS WAS * 00210000
* POSTED; CLEARS CS'S ECB'S; CHECKS FOR * 00220000
* WORK IN THE FOLLOWING ORDER--OP ENDS, * 00230000
* NEW PUT REQUESTS, ANY PL'S WAITING FOR TP * 00240000
* BUFFER, ANY NEW REQUESTS, INTERVAL POLLING * 00250000
* RESTART - AND ROUTES CONTROL TO THE PROPER * 00260000
* MACRO; THIS MACRO THEN (WHEN NO MORE WORK * 00270000
* TO DO) PERFORMS A WAIT. * 00280000
* * 00290000
* ENTRY POINTS: CSSTRT - INITIAL ENTRY POINT * 00300000
* CSFREE - FREE MAIN ROUTINE FOR RESIDENT CODE * 00310000
* AND CS'S TRANSIENTS * 00320000
* CSPSTE - POST AND FREE ROUTINE FOR RESIDENT * 00330000
* CODE AND CS'S TRANSIENTS * 00340000
* * 00350000
* INPUT: @CSNRQ - QUEUE OF PL'S REQUESTING I/O ON LINES 3 OR 4 * 00360000
* @CLB#1 - POINTER TO FIRST BSCC CLB * 00370000
* * 00380000
* OUTPUT: REQUESTED FUNCTION PERFORMED ON THE BSCC LINE * 00390000
* * 00400000
* EXTERNAL ROUTINES: $$BSYM - BSCC DATA MANAGEMENT * 00410000
* YMWAIT - BSCC WAIT ROUTINES * 00420000
* $CC4FM - GETMAIN FREEMAIN ROUTINE * 00430000
* $CC4MX - MOVE ROUTINE * 00440000
* $CC4U0 - RESIDENT MSG FORMAT ROUTINE * 00450000
* $CC4UC - INTERRUPT APPENDAGE (LEVEL 3) * 00460000
* * 00470000
* EXITS: WAIT ON LIST OF ECB'S ($CSFM, $CSECB, $CSTEB, CLBECB) * 00480000
* * 00490000
* TABLES/WORK AREAS: TP PARM LIST * 00500000
* LINE 3 AND 4 COM.LINE BLOCK (CLB) * 00510000
* TERMINAL UNIT BLOCK (TUB) * 00520000
* WORK AREA ($CSCOM) IN $CC4U0 * 00530000
* * 00540000
* CHANGE ACTIVITY - $CC4#M * 00550000
* * 00551000
* RELEASE 3 * 00552000
* @01 - APAR/S311205 - INTERVAL POLLING PROBLEM. @01 00553000
* @02 - APAR/S311320 - 'E32' MESSAGE ON PRUF AFTER CLEAR KEY. @02 00554000
* @03 - APAR/S311484 - U-FE ON '44' COMPLETION CODE. @03 00555000
* @04 - APAR/S311998 - LOOP IN $CC4#M WITH SIOC-SIOC PRESENT. @04 00556000
* @05 - INCR/OS0330 - TRANSLATE PROGRAM NAME ONLY ON PF1 KEY. @05 00557000
* @06 - INCR/OS0313 - AUTOMATIC ERROR RECOVERY OPTION. @06 00558000
* @07 - INCR/OS0309 - BUSY PRINTER SUPPORT FOR 328X PRINTERS. @07 00561000
* @08 - PTR /D3TP034 - GETMAIN FAILED ON A SYSTEM PUT-NO-WAIT. @08 00562000
* @09 - APAR/S311988 - TRANSLATE TO UPPER CASE ON STATUS MSG. @09 00563000
* @10 - APAR/S311659 - ATTEMPT TO OUTBOARD POLL EVEN THOUGH @10 00564000
* THERE IS INSUFFICIENT BLOCK LENGTH. @10 00565000
* @11 - APAR/S311542 - U-CR PURGE AND POLL/STATUS. @11 00566000
* @12 - APAR/S312550 - LOST TPBUFFER ON RECORD MODE PUT OP. @12 00567000
* RELEASE 04 * 00567200
* @13/INCR/OS4301 - TP BUFFER IMPROVEMENTS. @13 00567400
* @14/INCR/OS4102 - BSCC PORTLINE ENHANCEMENT. @14 00567600
* RELEASE 05 00567700
* @15 - APAR/S315990 - P.L. CHAIN BREAKS ON STOP INVITE @15 00567800
* @16 - APAR/S316100 - BSCC GOES TO WAIT STATE AFTER STOP INVITE@16 00567900
* AND CLEAR DATA @16 00568000
* @17 - APAR/S315190 - BUSY PRINT PROBLEM @17 00568200
* - A -14 RETURN CODE IS PASSED TO THE USER @17 00568400
* WHEN A PUT-WAIT OP IS ISSUED TO A PRT @17 00568600
* @18 - APAR/S316106 - U-PC IN CS TASK @18 00568800
* @19 - APAR/S315510/S315563 - CM AND CS USING SAME MOVE/TRAN @19 00569000
* WORK AREA @19 00569200
* @20 - APAR/S315664 - TASK TO TASK GENERATION ERROR @20 00569400
* @21 - APAR/S315667 - FIX FOR ICF @21 00569600
*********************************************************************** 00570000
EJECT 00580000
* SET UP TO WAIT ON LIST OF ECB'S 00590000
CSSTRT EQU * ENTRY POINT TO WAIT 00600000
SBF CSSWIT,CSNDCR SET OFF INTERNAL FREEMAIN IND 00610000
SBN $CSFM,SKIP SET TO SKIP A FREEMAIN POST 00620000
L @CLB#1,CLB XR2 --> FIRST BSCC CLB 00630000
CSCKAG EQU * * 00640000
CLI CLBWCQ-1(,CLB),NOBIT ANY PL'S WAITING FOR TPBUF? 00650000
JE CSNOWT NO - JUMP 00660000
SBF $CSFM,SKIP YES - SET SKIP BIT OFF IN ECB 00670000
CSNOWT EQU * * 00680000
AIF (&C#NL EQ '1').L0100 ONLY ONE LINE? 00690000
CLI CLBCHN-1(,CLB),NOBIT ANY MORE CLB'S? 00700000
L CLBCHN(,CLB),CLB XR2 --> NEXT CLB 00710000
BNE CSCKAG YES - LOOK AT IT 00720000
.L0100 ANOP * 00730000
SPACE 2 00740000
* CS WILL WAIT ON THE FOLLOWING ECB'S: 00750000
* $CSECB - POSTED FOR NEW REQUESTS 00760000
* $CSFM - POSTED FOR FREEMAINS 00770000
* $CSTEB - POSTED FOR TIME EXPIRED 00780000
* CLBE3 - POSTED FOR OP END ON BSCC LINE 3(4) 00790000
* CLBE4 - POSTED FOR OP END ON BSCC LINE 4 00800000
AIF (&CSIO EQ '1').NP010 00801000
* CLBES - POSTED FOR OP END ON SIOC LINE 00804000
.NP010 ANOP 00807000
CSWAIT EQU * * 00810000
LA CSLIST,XR1 XR1 --> ECB LIST 00820000
SVC 0 SPVR CALL 00830000
DC XL1'04' WAIT ON ECB LIST RIB 00840000
SPACE 3 00850000
* ZIP THE ECB'S SO A POST WON'T DISPATCH CS AT AN INOPPERTUNE TIME 00860000
SPACE 1 00870000
CCP MASK,PMR MASK INTERRUPTS 00880000
TBN $CSFM,BIT1 POSTED FOR A FREEMAIN - 00890000
TBF $CSFM,SKIP AND NEED TP BUFF? 00900000
JF CSNFRE NO - JUMP 00910000
SBN CSSWIT,CSNDCR YES - SET INTERNAL IND 00920000
CSNFRE EQU * 00930000
MVI $CSECB,NOBIT ZIP THE GENERAL ECB 00940000
MVI $CSFM,SKIP MARK FREEMAIN ECB AS SKIPPED 00950000
MVI CSTECB,SKIP MARK TIMER ECB AS SKIPPED 00960000
L @CLB#1,CLB XR2 --> FIRST CLB 00970000
CSZECB MVI CLBECB(,CLB),NOBIT ZIP THE ECB FOR THIS LINE 00980000
AIF (&C#NL EQ '1').L0200 ONLY ONE LINE? 00990000
CLI CLBCHN-1(,CLB),NOBIT ANY MORE CLB'S? 01000000
JE CSNMOR NO - JUMP 01010000
L CLBCHN(,CLB),CLB XR2 --> NEXT CLB 01020000
B CSZECB CHECK THIS ONE 01030000
.L0200 ANOP * 01040000
SPACE 1 01050000
* CHECK FOR ANY OP-END'S FIRST 01060000
SPACE 1 01070000
CSNMOR EQU * * 01080000
CCP UNMASK,PMR ENABLE INTERRUPTS 01090000
CLI #CSOND,NOBIT ANY OP ENDS? 01100000
JE CSNOPE NO - GO CHECK FREEMAIN WAITERS 01110000
L @CLB#1,CLB XR2 --> FIRST CLB 01120000
CSLKAG EQU * 01130000
CLI CLBOPE(,CLB),NOBIT OP END FOR THIS LINE? 01140000
AIF (&C#NL EQ '1').L0300 ONLY ONE LINE? 01150000
JNE CSNOEN YES-GO HANDLE THIS LINE'S OP-END 01160000
CLI CLBCHN-1(,CLB),NOBIT ANY MORE? 01170000
JE CSNOPE NO - JUMP 01180000
L CLBCHN(,CLB),CLB XR2 --> NEXT CLB 01190000
B CSLKAG CHECK THIS ONE 01200000
AGO .L0400 ONE LINE 01210000
.L0300 ANOP * 01220000
JE CSNOPE NO - JUMP 01230000
.L0400 ANOP * 01240000
CSNOEN EQU * * 01250000
TBN CLBBA2(,CLB),BA2ABT ABORT OP? 01260000
JF CSPLRM NO - CHECK FOR PL REMOVED 01270000
SPACE 2 01280000
* HAVE AN ABORT OP - GO TO BSCC WAIT ROUTINE TO SEE IF IT IS COMPLETE 01290000
SPACE 1 01300000
AIF (&CSIO EQ '1').NP020 01300700
******************************************************************* @14 01301400
******** 01302100
CLI CLBDEV(,CLB),DEVSIO SIOC ONLY DEVICE ? 01302800
JNE CSNCHK NO 01303500
L CLBPL@(,CLB),PL XR1 --> PL 01304200
MVI CLBOPC(,CLB),OPCFAB PUT ABORT OPCODE IN CLB 01304900
CSNCHK EQU * * 01305600
B CSWATE GO TO PORT OR BSCC WAIT ROUTINE 01306300
******** 01307000
******************************************************************* @14 01307200
SPACE 1 01307400
AGO .YP020 01308400
.NP020 ANOP 01309100
B YMWAIT GO TO WAIT ROUTINE 01310000
.YP020 ANOP 01315000
B CC4TT GO TRACE THE OP END 01320000
DC AL1(TTMOPN) OP END TRACE 01330000
* TRACE ROUTINE RETURNS WITH INTERRUPTS MASKED 01340000
CCP UNMASK,PMR ALLOW INTERRUPTS 01350000
SPACE 1 01360000
* IF ABORT IS NOT COMPLETE, THEN CHECK FOR MORE WORK 01370000
SLC CLBOPE(1,CLB),X$0001 DECREMENT OP END COUNT 01380000
SLC #CSOND(1),X$0001 DECREMENT COMMON OP END COUNT 01390000
AIF (&CSIO EQ '1').NP030 01390400
SPACE 1 01390500
******************************************************************* @14 01390600
******** 01390800
CLI CLBDEV(,CLB),DEVSIO SIOC ONLY DEVICE ? 01391600
JNE CSNPTF NO 01392000
CLI CLBCMP(,CLB),CMPFAC ABORT SUCCESSFUL? 01392400
JE CSNCHS YES 01392800
CLI CLBCMP(,CLB),CMPEOF ERROR COMPLETION CODE? 01393200
JNH CSNCHS NO - CHECK FOR STOP REQUESTED 01393600
B CC4TA CALL TRANSIENT AREA HANDLER 01394000
DC AL1(CC4UE) ERROR TRANSIENT ID - $CC4UE 01394400
CSNCHS EQU * * 01394800
TBN CLBBA1(,CLB),BA1CRI STOP INVITE PREVIOUSLY REQUESTED 01395200
JF CSNPTF NO 01395600
* CALL THE STOP INVITE TRANSIENT TO CLEAN UP ANY OUTSTANDING STOPS 01396000
* $CC4UT WILL RETURN TO ARR+0 01396400
B CC4TA CALL TRANSIENT AREA HANDLER 01396800
DC AL1(CC4UT) TRANSIENT ID - $CC4UT 01397200
B CSNPTF RETURN TO ARR+0 01397600
DC XL1'00' IF UT TRIES TO RETURN ARR+4 01398000
CSNPTF EQU * * 01398400
******** 01399200
******************************************************************* @14 01399300
SPACE 1 01399400
.NP030 ANOP 01399600
CLI CLBCMP(,CLB),CMPFAC ABORT SUCCESSFUL? 01400000
BNE CSNMOR NO - CHECK FOR MORE WORK 01410000
SPACE 1 01420000
* ABORT IS COMPLETE - GO SCHEDULE THIS LINE 01430000
SLC CLBBA2(2,CLB),CLBBA2(,CLB) ZIP THE CLB ATTRIBUTES 01440000
AIF (&CSIO EQ '1').NP040 01440700
SPACE 1 01441400
******************************************************************* @14 01441700
******** 01442100
CLI CLBDEV(,CLB),DEVSIO SIOC ONLY DEVICE ? 01442800
JNE CSNPTN NO 01443500
L CLBPL@(,CLB),PL XR1 --> PL 01444200
L PLTUBA(,PL),XR1 XR1 --> TUB 01444900
SBF TUBAT2(,XR1),TUBOWN SET OFF OWNERSHIP INDICATOR 01445600
CSNPTN EQU * * 01446300
******** 01447000
******************************************************************* @14 01447300
SPACE 1 01447700
.NP040 ANOP 01448400
B CSCHED GO START THIS LINE 01450000
SPACE 2 01460000
* SEE IF THE OP END OCCURRED WHILE NO PL IS QUEUED FOR THE LINE OWNER 01470000
SPACE 2 01480000
CSPLRM EQU * * 01490000
TBN CLBBA1(,CLB),BA1NTQ PL BEEN REMOVED FROM THE QUEUE? 01500000
JF CSCKIN NO - SEE IF INPUT OR OUTPUT 01510000
SPACE 2 01520000
* HAVE AN OP END AND NO PL FOR IT 01530000
SPACE 1 01540000
SBN CLBBA1(,CLB),BA1INT SET IND-OP END AND NO PL Q'ED 01550000
SLC #CSOND(1),X$0001 DECREMENT COMMON OP END COUNT 01560000
SLC CLBOPE(1,CLB),X$0001 DECREMENT LINE OP END COUNT 01570000
SPACE 1 01580000
* GO CHECK FOR ANY MORE WORK TO DO 01590000
SPACE 1 01600000
B CSNMOR GO CHECK FOR MORE WORK 01610000
SPACE 3 01620000
* CHECK TO SEE IF OP END WAS FOR INPUT OR OUTPUT 01630000
CSCKIN EQU * 01640000
TBN CLBOPC(,CLB),OPCGET INPUT OP ON THE LINE? 01650000
BT CSREAD YES - GO HANDLE INPUT OP END 01660000
B CSWRTE GO HANDLE OUTPUT OP END 01670000
EJECT 01680000
* CHECK FOR ANY NEW PUT REQUESTS ON THE LINE 01690000
CSNOPE EQU * * 01700000
CLI @CSNRQ-1,NOBIT ANY NEW REQUESTS? 01710000
JE CSCKCR NO-CHECK FOR PL'S NEEDING TP BUF 01720000
B CSSRCH YES - SEARCH THE QUEUE 01730000
AIF (&CSIO EQ '1').PT010 01731000
AGO .PT020 01731200
.PT010 ANOP 01731400
AIF (&NCPOR).PT030 01731600
.PT020 ANOP 01731800
SPACE 1 01732000
******************************************************************* @14 01732500
******** 01733000
TBN CSSWIT,CSSPRM FIND A GET PARM LIST 01734000
JF CSCKCR NO, CHECK PL WAIT FOR TPBUFF 01735000
******** 01736000
******************************************************************* @14 01736500
SPACE 1 01737000
.PT030 ANOP 01738000
TBN PLOPC(,PL),OPPUT NEW REQUEST A PUT? 01740000
JT CSNWRQ YES--GO HANDLE IT NOW 01750000
SPACE 2 01760000
* BEFORE PROCESSING ANY NEW GETS OR STOPS--SEE IF THERE ARE ANY PL'S 01770000
* THAT HAVE BEEN WAITING FOR TP BUFFER 01780000
CSCKCR EQU * * 01790000
TBN CSSWIT,CSNDCR ANY PL'S WAITING ON TP BUF? 01800000
JF CSUHUH NO - HANDLE ANY NEW REQUESTS 01810000
SBF CSSWIT,CSNDCR SET TO SKIP UG UNLESS WE 01820000
* PERFORM ANOTHER WAIT 01830000
B CC4TA CALL TRANSIENT SCHEDULER 01840000
DC AL1(CC4UG) TRANSIENT ID 01850000
SPACE 1 01860000
* RETURN HERE TO RESCHEDULE THE LINE 01870000
B CSCHED GO SCHEDULE THIS LINE 01880000
SPACE 1 01890000
* TRANSIENT RETURNS HERE WHEN NONE FOUND TO SCHEDULE 01900000
B CSNMOR GO CHECK FOR MORE WORK 01910000
* CHECK FOR ANY NEW REQUESTS (WILL NOW HANDLE GET'S OR PUT'S) 01920000
CSUHUH EQU * * 01930000
CLI @CSNRQ-1,NOBIT ANY NEW REQUESTS? 01940000
JE CSCKTM NO - CHECK TIMER RESTART 01950000
SPACE 1 01960000
* FIND THE NEXT NEW REQUEST AND GO PROCESS IT 01970000
SPACE 1 01980000
B CSSRCH SEARCH NEW REQUEST QUEUE 01990000
AIF (&CSIO EQ '1').PT040 01991000
AGO .PT050 01991200
.PT040 ANOP 01991400
AIF (&NCPOR).PT060 01991600
.PT050 ANOP 01991800
SPACE 1 01992000
******************************************************************* @14 01992500
******** 01993000
TBN CSSWIT,CSSPRM FIND A GET PARM LIST 01994000
JF CSCKTM NO, CHECK TIMER RESTART 01995000
******** 01996000
******************************************************************* @14 01996500
SPACE 1 01997000
.PT060 ANOP 01998000
J CSNWRQ GO HANDLE THE NEW REQUEST 02000000
SPACE 2 02010000
* START ANY CLB THAT WAS IN AN INTERVAL POLLING WAIT STATE OR THAT 02020000
* EXITED RESCHEDULE TO CHECK FOR NEW REQUESTS/WAITERS ON TP BUFF 02030000
SPACE 1 02040000
CSCKTM EQU * * 02050000
L @CLB#1,CLB XR2 --> FIRST CLB 02060000
CSTAGN EQU * * 02070000
TBF CLBBA2(,CLB),BA2ACT LINE NOT ACTIVE? 02080000
TBN CLBATB(,CLB),ATBTIM THIS CLB NEED SCHEDULING? 02090000
JF CSNOSC NO - WAIT FOR MORE WORK @01 02100000
LA CSTIMR,XR1 XR1 --> TIMER IOB @01 02102000
MVC TIMTIM(4,XR1),POLTIM PUT TIME IN IOB @01 02104000
B CSCHED START THE LINE @01 02106000
CSNOSC EQU * @01 02108000
AIF (&C#NL EQ '1').L0500 ONLY ONE LINE? 02110000
CLI CLBCHN-1(,CLB),NOBIT ANY MORE CLB'S? 02120000
L CLBCHN(,CLB),CLB XR2 --> NEXT CLB 02130000
BNE CSTAGN YES - CHECK IT 02140000
.L0500 ANOP * 02150000
B CSSTRT GO WAIT FOR WORK TO DO 02160000
MEND 02170000
02180000
02190000
02200000
02210000
02220000