|
|
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: 23368 (0x5b48)
Types: s3xseg
Names: »S$E087«
└─⟦d0bc1a931⟧ Bits:30009189 5704-sc1.V08.ccp
└─⟦64693a1c9⟧
└─⟦this⟧ »S$E087«
MACRO 00010000
.********************************************************************** 00020000
.* NAME: $E087 * 00030000
.********************************************************************** 00040000
$E087 00050000
GBLB &ONE,&NOB,&NOM,&MIN,&NDME 00060000
GBLB &NSW,&N1050,&N2741,&NMOVE,&NSCTL,&NBFR 00070000
TEXT 00080000
* R-05,C-00 CHANGE LEVEL 00100000
AIF (&NOM).M1400 00110000
TITLE '$E087/CMMSCH---RESCHEDULE-A-MLTA-LINE' 00120000
*********************************************************************** 00130000
* * 00140000
* NAME--CMMSCH * 00150000
* * 00160000
* TITLE--RESCHEDULE A MLTA LINE * 00170000
* * 00180000
* FUNCTION--TO SCHEDULE WORK ON LINES THAT NOT BUSY, OR TO STOP * 00190000
* POLLING ON A LINE AND SCHEDULE OF PUT OPERATION IF PUT * 00200000
* OPERATIONS ARE PENDING IN THE LINE QUEUE. * 00210000
* * 00220000
* OPERATION-- * 00230000
* * 00240000
* . IF MLTA OLT IS IN PROCESS CALL IN TRANSIENT TO CONTINUE* 00250000
* THE OLT OPERATION. * 00260000
* * 00270000
* . IF QUEUE FOR LINE IS EMPTY THEN POST THE REQUESTOR IF * 00280000
* TP WAS JUST SCHEDULED, CHECK FOR OTHER FUNCTION THAT * 00290000
* CAN BE PERFORMED BY 'CM'. * 00300000
* * 00310000
* . IF A PUT OPERATION CAN BE STARTED, PERFORM IT NEXT. * 00320000
* * 00330000
* . IF NEITHER OF ABOVE TWO, THEN TRY TO SCHEDULE AN INPUT * 00340000
* OPERATION. IF NO INPUT TO SCHEDULE THEN POST THE * 00350000
* REQUESTOR IF TP WAS JUST SCHEDULED. THEN CHECK FOR * 00360000
* OTHER 'CM' FUNCTION THAT CAN BE PERFORMED NOW. * 00370000
* * 00380000
* . IF A WRITE OPERATION CAN BE STARTED, THEN SET UP THE * 00390000
* OUTPUT DATA BUFFER FOR THE LINE. TRANSLATE THE DATA * 00400000
* AS REQUIRED OR SPECIFIED. ADD DEVICE DEPENDENT * 00410000
* CONTROL CHARACTERS. * 00420000
* * 00430000
* . IF MLTA OPERATION SET UP TO DO THE READ, WRITE WITH * 00440000
* THE APPROPRIATE DISCONNECT, CONTINUE OR CONVERSATIONAL * 00450000
* OPTION AS REQUIRED BY THE TERMINAL AND/OR CURRENT * 00460000
* LINE CIRCUMSTANCE. (SUBROUTINE: CMFORM). * 00470000
* * 00480000
* . ISSUE OF IOCS CALL AFTER THE DTF IS SET-UP. * 00490000
* CALL MLTIO1. * 00500000
* * 00510000
* . AFTER ISSUING THE IOCS CALL, TRACE IT. * 00520000
* * 00540000
* . IF MLTA START OPERATION CODE INDICATES A START * 00550000
* FAILURE THE CAM IN A TRANSIENT TO DETERMINE THE * 00560000
* PROBLEM. OTHERWISE, POST THE REQUESTOR IF TP WAS * 00570000
* JUST SCHEDULED. * 00580000
* * 00590000
* ENTRY POINTS * 00600000
* CMMSCH - SCHEDULE WORK ON A MLTA LINE * 00610000
* * 00620000
* INPUT-- * 00630000
* CMSDTF - ADDRESS OF DTF TO BE SCHEDULED. * 00640000
* CMSPL - ADDRESS OF TP PARAMETER LIST TO BE SCHEDULED. * 00650000
* * 00660000
* OUTPUT-- * 00670000
* CMSDTF - ADDRESS OF DTF FOR LINE SCHEDULED. * 00680000
* CMSPL - ADDRESS OF TP REQUEST SCHEDULED. * 00690000
* DTF(LCB),TUB - SET UP FOR THE OPERATION PERFORMED. * 00700000
* * 00710000
* EXTERNAL REFERENCES-- * 00720000
* $CC4MT - HANDLE MLTA OLT CONTINUATION. * 00730000
* $CC4JX - X IS THE APPROPRIATE LINE TRANSLATE TRANSIENT. * 00740000
* $CC4WR - HANDLE TRANSLATE ERRORS IN OUTPUT. * 00750000
* $CC4WC - CONNECT SWITCHED LINE WTO. * 00760000
* MLTIO1 - MLTA IOCS. * 00770000
* $TRACE - CCP TRACE ROUTINE. * 00780000
* $CC4SC - MLTA START CODE FAILURE TRANSIENT. * 00790000
* CMSRPL - SEARCH FOR NEXT OP TO SCHEDULE ON THE LINE. * 00810000
* CMCRID - ADD CARRIAGE RETURN AND IDLES. * 00820000
* CMMVRT - INTERFACE TO CCP MOVE ROUTINE. * 00830000
* * 00840000
* EXIT, NORMAL-- * 00850000
* - TO CMPAII - CHECK FOR POSTING OF THE REQUESTER. * 00860000
* - TO CMRQBF - CHECK FOR MORE WORK TO DO. * 00870000
* - TO CMREQ - IF NEW TP REQUEST IS FOUND IN THE QUEUE. * 00880000
* * 00890000
*********************************************************************** 00900000
EJECT 00910000
CMMSCH EQU * * < ENTRY POINT > M 00920000
L CMSDTF,DTF POINT XR2 TO DTF M 00930000
SPACE 00940000
* SET DEFAULT TO RESCHEDULE NEEDED - FREE ANY INPUT HOLD BUFFER M 00941400
SBN LCBATR(,DTF),LCBTIM SET RESCHEDULE NEEDED M 00942100
CLI LCBIBA-1(,DTF),NOBIT ANY HOLD BUFFER? M 00942800
JE CMMSNF NO - NO FREE NEEDED M 00943500
* FREE THE HOLD BUFFER M 00944200
L LCBIBA(,DTF),XR2 XR2--> AREA TO FREE M 00944900
B CMFMRT GO FREE IT M 00945600
L CMSDTF,DTF XR2--> DTF M 00946300
MVI LCBIBA-1(,DTF),NOBIT ZERO HOLD BUFFER ADDRESS M 00947000
B CMFRMN GO CHECK FOR PL NEEDING CORE M 00947700
CMMSNF EQU * * M 00948400
CLI LCBNW#(,DTF),NOBIT ANY NEW TP REQUESTS ? M 00950000
BNE CMPAII YES - GO HANDLE NOW M 00952000
SBF LCBATR(,DTF),LCBTIM SET OFF RESCHEDULE NEEDED M 00954000
SPACE 00970000
CLI LCBOLT(,DTF),NOBIT IS ONLINE TEST COUNT ZERO M 00980000
JE CMLKPL JUMP IF YES TO LOOK AT PL M 00990000
SPACE 01000000
*********************************************************************** 01010000
* ON-LINE TEST REQUEST TO BE STARTED M 01020000
******************************************************************** M 01030000
SPACE 01040000
SVC 0 ###### TRANSIENT CALL ###### M 01050000
DC AL1(CCPRIB) CCP SVC RIB. M 01060000
DC AL1(CC4MT) START ONLINE TEST M 01070000
SPACE 01080000
* RETURN TO NSI - ONLINE TEST NOT STARTED. M 01090000
* NSI+4 - ONLINE TEST STARTED. M 01100000
SPACE 01110000
*--> NSI. M 01120000
SBN CMSWIT,CMNOST INDICATE LINE I/O NOT STARTED M 01130000
SPACE 01140000
*--> NSI+4. M 01150000
B CMPAII JUMP TO SEE IF POST NEEDED M 01160000
SPACE 01170000
CMLKPL EQU * * LOCAL M 01180000
SPACE 01190000
**********************************************************************M 01200000
* SEARCH LINE QUEUE FOR NEXT REQUEST TO BE SCHEDULED. M 01210000
**********************************************************************M 01220000
SPACE 01230000
B CMSRPL LCB PL QUEUE SEARCH ROUTINE M 01240000
* XR1-> PL, XR2-> TUB. M 01250000
SPACE 01260000
MVC CMTCHR(1),TUBCHR(,XR2) MOVE TUB CHAR TO SAVE AREA M 01270000
AIF (&NBFR).H4467 01280000
MVC TUBVHR(1,XR2),TUBCHR(,XR2) SAVE TUBCHR FIELD BM 01290000
.H4467 ANOP 01300000
AIF (&NSCTL).S5400 01310000
MVC CMSTMA(2),TUBTMA(,XR2) SAVE TERMINAL ADDRESS CM 01320000
.S5400 ANOP 01330000
MVC SAVTA2(2),TUBTA2(,XR2) SAVE TERMINAL ATTRIBUTES M 01340000
SPACE 01350000
L TUBDTF(,XR2),DTF XR2--> DTF FOR THIS LINE. M 01360000
SPACE 01370000
* DETERMINE IF OPERATION IS READ OR WRITE M 01380000
SPACE 01390000
TBN PL$OPM(,XR1),OPGET IS IT READ ? M 01400000
JF CMMPUT NO - GO HANDLE THE PUT. M 01410000
B CMIVGM GO DETERMINE INPUT OP TO START.M 01420000
SPACE 1 01430000
L CMLPL,PL LAST READ PL SCHEDULED - WILL M 01434000
* * GO INTO TRACE FROM CMSPL M 01436000
B CMMSIO GO ISSUE SIO FOR THE INPUT. M 01440000
TITLE '$E087/CMMSCH----START-A-WRITE-OPERATION' 01450000
******************************************************************** M 01460000
* WRITE REQUEST TO START ON MLTA LINE * M 01470000
******************************************************************** M 01480000
SPACE 01490000
CMMPUT EQU * * LOCAL 01500000
AIF (&NSW).A5300 01510000
* IF THIS IS PUT DISCONNECT - THEN THERE IS NO DATA TO BE TRANSMITED SM 01520000
SPACE 01530000
TBN PLOPM(,XR1),OPDISC IS THIS PUT DISCONNECT SM 01540000
BT CMMSIO JUMP IF PUT DISCONNECT SM 01550000
SPACE 01560000
.A5300 ANOP 01570000
SPACE 01580000
******************************************************************* M 01590000
* SETUP PARAMETER LIST FOR MOVE OR TRANSLATE * M 01600000
******************************************************************* M 01610000
SPACE 01620000
MVC #CMTRL+TLFRMA(2),PLRECA(,XR1) MOVE FROM ADDR TO TRAN LST M 01630000
MVC #CMTRL+TLTOA(2),$MDCRA(,DTF) MOVE TO ADDR TO TL/MV LIST M 01640000
SPACE 01650000
MVC #CMTRL+TLTOL(2),LCBBFL(,DTF) MOVE SIZE OF LINE BUFFER TO M 01660000
* THE TRANS/MOVE LIST M 01670000
SPACE 01680000
MVI $MDCRL(,DTF),NOBIT SET DTF RECORD LENGTH TO ZERO M 01690000
TBN CMTCHR,TUBTYP IS IT TYPEWRITER TERMINAL M 01700000
JF CMPWLN JUMP IF NOT TYPEWRITER M 01710000
SPACE 01720000
******************************************************************* M 01730000
* TYPEWRITER TERMINAL * M 01740000
******************************************************************* M 01750000
SPACE 01760000
AIF (&N1050).C5000 01770000
* IF MULTI COMPONENT (MCT) 1050 TERMINAL, CHECK TO SEE IF 1M 01780000
* THE COMPONENT BEING WRITTEN TO IS A TYPEWRITER. 1M 01790000
SPACE 01800000
TBN CMTCHR,TUBMCT IS IT MCT 1M 01810000
TBF PL$MCT(,XR1),BIT5 IF BIT OFF; NOT 1050 PRINTER 1M 01820000
TBN PL$MCT(,XR1),BIT6 IF BIT ON, NOT A 1050 PRINTER 1M 01830000
JT CMPWLN JUMP IF MCT AND NON-PRINTER 1M 01840000
.C5000 ANOP 01850000
EJECT 01860000
* HAVE TYPEWRITER DEVICE - DETERMINE WHETHER TO ADD START OF LINE M 01870000
* AND/OR END OF LINE TYPEWRITER CONTROL CHARACTERS TO THE OUTPUT LINEM 01880000
SPACE 01890000
AIF (&NBFR).R5200 01900000
******************************************************************* BM 01910000
* IF NON-BUFFERED TERMINAL,SET CONTROL CHAR LENGTH TO INCLUDE IDLES M 01920000
******************************************************************* BM 01930000
SPACE 01940000
MVI CMTYPZ,CMTYPL SET LENGTH TO INCLUDE IDLES. BM 01950000
TBN $MDTFR(,DTF),$MTBFR IS IT BUFFERRED RECEIVE TERM BM 01960000
JF CMTYTS JUMP IF NOT BUFFERRED RECEIVE BM 01970000
SPACE 01980000
******************************************************************** BM 01990000
* BUFFERED RECEIVE TERMINAL - NEED NO IDLES AFTER CARRIAGE RETURN. BM 02000000
******************************************************************** BM 02010000
SPACE 1 02020000
MVI CMTYPZ,CMTYBF SET LENGTH TO EXCLUDE IDLES. BM 02030000
SPACE 02040000
.R5200 ANOP 02050000
CMTYTS EQU * * LOCAL M 02060000
TBF PLOPM(,XR1),OPSOL START OF LINE CHARS WANTED ? M 02070000
JF CMTSEL JUMP IF NOT WANTED. M 02080000
SPACE 02090000
TBN CMTCHR,TUB@SL START OF LINE ISSUED, BUT M 02100000
TBF CMTCHR,TUBNID IDLES NOT NEEDED ? M 02110000
JT CMTSEL JUMP IF AT START OF LINE AND M 02120000
* NO IDLES ARE NEEDED. M 02130000
SPACE 02140000
******************************************************************* M 02150000
* ADD # OF START-OF-LINE CHARACTERS TO MESSAGE LENGTH * M 02160000
******************************************************************* M 02170000
SPACE 02180000
ALC $MDCRL(1,DTF),CMTYPZ ADD # CHARS TO DTF LENGTH M 02190000
SLC #CMTRL+TLTOL(2),CMTYPZ REMOVE #CHAR FROM LINE BUF CNT.M 02200000
SBN CMSLSW+1,NOOP SET SWITCH: SOL CHARS WANTED. M 02210000
SPACE 02220000
CMTSEL EQU * * LOCAL M 02230000
SBF CMTCHR,TUB@SL SET NOT AT START OF LINE BIT. M 02240000
TBF PLOPM(,XR1),OPEOL ARE END OF LINE CHARS REQ'D ? M 02250000
JF CMPWLN JUMP IF NOT TO BE ADDED. M 02260000
SPACE 02270000
******************************************************************* M 02280000
* ADD # OF END-OF-LINE CHARACTERS TO MESSAGE LENGTH * M 02290000
******************************************************************* M 02300000
SPACE 02310000
SBN CMTCHR,TUB@SL SET TERM AT START OF LINE BIT. M 02320000
ALC $MDCRL(1,DTF),CMTYPZ ADD # CHARS TO DTF RECORD LGTH M 02330000
SLC #CMTRL+TLTOL(2),CMTYPZ REMOVE #CHAR FROM LINE BUF CNT.M 02340000
SBN CMELSW+1,NOOP SET SWITCH: EOL CHARS WANTED. M 02350000
EJECT 02360000
******************************************************************* M 02370000
* DETERMINE LENGTH OF MOVE OR TRANSLATE * M 02380000
******************************************************************* M 02390000
SPACE 02400000
CMPWLN EQU * * LOCAL M 02410000
SPACE 02420000
* COMPARE REQUESTED LENGTH IN PARM LIST VS AVAILBALE LENGTH IN M 02430000
* TRANSLATED LIST M 02440000
* AVAILABLE LENGTH ALREADY IN PARM LIST M 02450000
SPACE 02460000
CLC PLOUTL(2,XR1),#CMTRL+TLTOL REQ'D VS AVAILABLE LENGTH ?M 02470000
JH CMTYSW JUMP IF AVAILABLE MUST BE USED.M 02480000
MVC #CMTRL+TLTOL,PLOUTL(2,XR1) USE REQUESTED LENGTH. M 02490000
J CMSLSW SKIP SETTING OF TRUNCATED BIT. M 02500000
SPACE 02510000
CMTYSW EQU * * LOCAL M 02520000
SPACE 02530000
SBN PL$RTC(,XR1),RCXDTR SET RET CODE TO DATA TRUNCATED M 02540000
EJECT 02550000
* TYPEWRITER SWITCHES M 02560000
* ON (NO JUMP) MOVE CONTROL CHARACTERS TO START/END OF LINE. M 02570000
* OFF (JUMP) JUMP AROUND ADDING OF CONTROL CHAR. M 02580000
SPACE 02590000
* START OF LINE SWITCH. 02600000
SPACE 02610000
CMSLSW EQU * * LOCAL M 02620000
JC CMELSW,X'00' JUMP IF NO START OF LINE CHARS.M 02630000
SPACE 02640000
******************************************************************* M 02650000
* ADD START-OF-LINE CONTROL CHARACTERS * M 02660000
******************************************************************* M 02670000
SPACE 02680000
L #CMTRL+TLTOA,XR1 POINT XR1 AT TARGET ADDR M 02690000
B CMCRID MOVE CARRIAGE RETURN AND IDLES.M 02700000
SPACE 02710000
* DETERINE WHETHER FIRST CHARACTER IS TO BE CARRIAGE RETURN OR M 02720000
* IDLE CHARACTER M 02730000
SPACE 02740000
TBN CMTCHR,TUBNID ARE IDLES NEEDED M 02750000
JF CMADDT JUMP IF IDLES NOT NEEDED M 02760000
MVI 0(,XR1),CMIDLE PLUG IDLE INTO FIRST POSITION M 02770000
SPACE 02780000
CMADDT EQU * * LOCAL M 02790000
ALC #CMTRL+TLTOA(2),CMTYPZ ADD # CHARS TO TARGET ADDR IN M 02800000
* TRANSLATE/MOVE LIST M 02810000
SBF CMSLSW+1,NOOP RESET SOL SWITCH. M 02820000
SPACE 02830000
* END OF LINE SWITCH. M 02840000
SPACE 02850000
CMELSW EQU * * LOCAL. M 02860000
JC CMTSTR,X'00' JUMP IF NO END OF LINE CHARS. M 02870000
SPACE 02880000
******************************************************************* M 02890000
* ADD END-OF-LINE CONTROL CHARACTERS * M 02900000
******************************************************************* M 02910000
SPACE 02920000
L #CMTRL+TLTOA,XR1 POINT XR1 AT 'TO' ADDR M 02930000
A #CMTRL+TLTOL,XR1 ADD LENGTH OF MOVE SO XR1 PTS M 02940000
* AT 1ST BYTE PAST DATA IN LINE. M 02950000
B CMCRID ADD CARRIAGE RETURN AND IDLES. M 02960000
SPACE 02970000
CMTSTR EQU * * LOCAL M 02980000
SBF CMTCHR,TUBNID SET OFF INDICATION FOR IDLES M 02990000
SBF CMELSW+1,NOOP RESET EOL SWITCH. M 03000000
SPACE 03010000
* ADD DATA LENGTH TO DTF LENGTH WHICH NOW SITS AT THE NUMBER M 03020000
* OF TYPEWRITER CONTROL CHARACTERS NEEDED. M 03030000
SPACE 03040000
ALC $MDCRL(,DTF),#CMTRL+TLTOL(1) ADD DATA LENGTH TO DTF M 03050000
L CMSPL,XR1 POINT XR1 AT PARM LIST M 03060000
EJECT 03070000
AIF (&NMOVE).M5300 03080000
* TEST FOR DATA TRANSLATION. (SYSTEM ALWAYS TRANSLATES) VM 03090000
SPACE 03100000
TBN SAVTA1,TASTRN DO WE TRANSLATE VM 03110000
TBF PLOPM(,XR1),OP$SYS IS IT USER REQUEST VM 03120000
JT CMMOVE JUMP IF NO TRANSLATE VM 03130000
SPACE 03140000
.M5300 ANOP 03150000
******************************************************************* M 03160000
* TRANSLATE DATA FROM REQUESTOR RECORD AREA TO LINE BUFFER * M 03170000
******************************************************************* M 03180000
SPACE 03190000
LA #CMTRL,XR1 POINT XR1 AT TRANSLATE TABLE M 03200000
MVC CMTWR(1),LCBELC(,DTF) MOVE TRANS TRANSIENT ID M 03210000
SVC 0 ##### TRANSIENT CALL ##### M 03220000
DC AL1(CCPRIB) CCP SVC RIB. M 03230000
CMTWR DC AL1(0) TRANSLATE TRANSIENT ID M 03240000
SPACE 03250000
* XR1 NOW POINTS TO TRANSLATE TABLE AND NOT PARAMETER LIST M 03260000
* PLUG TRANSLATE RETURN CODE INTO RETURN CODE WORK AREA M 03270000
SPACE 03280000
TBN TLRTC(,XR1),TLERR WAS THERE ERROR IN TRANSLATION M 03290000
L CMSPL,XR1 POINT XR1 AT PARM LIST M 03300000
JF CMDOWR JUMP IF NO ERROR M 03310000
SPACE 03320000
* HAD TRANSLATE ERROR - CALL IN TRANSIENT TO HANDLE M 03330000
SPACE 03340000
SVC 0 ###### TRANSIENT CALL ###### M 03350000
DC AL1(CCPRIB) CCP SVC RIB. M 03360000
DC AL1(CC4WR) TRANLSATE ERROR TRANSIENT. M 03370000
SPACE 03380000
B CMPAII GO POST PUT NO-WAIT. M 03390000
SPACE 03400000
AIF (&NMOVE).M5400 03410000
******************************************************************* VM 03420000
* MOVE DATA WITHOUT TRANSLATE FROM REQUESTER RECORD AREA TO LINE BUF VM 03430000
******************************************************************* VM 03440000
SPACE 03450000
CMMOVE EQU * * LOCAL VM 03460000
MVI #CMMVL+MVLTYP,NOBIT SET TYPE FOR NO ATR SWAP. VM 03470000
B CMMVRT BR TO MOVE ROUTINE VM 03480000
SPACE 03490000
.M5400 ANOP 03500000
CMDOWR EQU * * LOCAL M 03510000
L PLTUBA(,XR1),XR2 POINT XR2 AT THE TUB M 03520000
MVC TUBCHR(1,XR2),CMTCHR RESET TERMINAL CHARACTERISTICS M 03530000
L CMSDTF,DTF POINT XR2 AT DTF M 03540000
TITLE '$E087/CMMSCH---START MLTA READ OR WRITE' 03550000
******************************************************************** M 03560000
* MLTA IOCS START I/O FOR READ OR WRITE * M 03570000
******************************************************************** M 03580000
SPACE 03590000
* THE OP CODE IS PLUGGED IN THE DTF - BEING FORMED BASED ON M 03600000
* THE PREVIOUS OPERATIONS ON THE LINE M 03610000
SPACE 03620000
* XR1 POINTS TO THE REQUEST WHICH IS BEING SCHEDULED M 03630000
SPACE 03640000
CMMSIO EQU * * WITHIN CMMSCH. M 03650000
SPACE 03660000
* AT THIS POINT MAKE SURE NEW OP NOT YET MOVED INTO DTF M 03670000
* ALSO LEAVE TERMINAL ADDR OF DTF ALONE SINCE THE PREVIOUS OP AND M 03680000
* TERM ADDR ARE USED IN THIS OP CODE DETERMINATION M 03690000
SPACE 03700000
AIF (&NSW).A5400 03710000
*------FOR SWITCHED LINES ONLY-----------------------------------* SM 03720000
SPACE 03730000
TBN PLOPM(,XR1),OPDISC IS THIS PUT DISCONNECT OP SM 03740000
JF CMFO10 JUMP IF NOT PUT DISCONNECT SM 03750000
SPACE 03760000
SBF LCBATR(,XR2),LCBNIT SET BIT TO INDICATE INITAL OP SM 03770000
* IS NEEDED ON THIS LINE SM 03780000
SPACE 03790000
* IF THIS IS PUT ONLY - THEN PLUG WRITE DISCONNECT OP CODE SM 03800000
* IF THIS IS PUT THEN INVITE - CONTINUE THROUGH THE CODE TO FORM THE SM 03810000
* PROPER READ INITIAL OP CODE SM 03820000
SPACE 03830000
TBN PL$OPM(,XR1),OPINV IS THIS PUT DISC/INVITE SM 03840000
JT CMFO10 JUMP IF PUT DISC/INVITE INPUT SM 03850000
SPACE 03860000
* HAVE PUT DISCONNECT OP SM 03870000
SPACE 03880000
MVI CMOPWK+1,$MWTDS PLUG WITH WRITE DISCONNECT SM 03890000
J CMOPWK JUMP TO PLUG DTF WITH OP SM 03900000
SPACE 03910000
*------END OF FOR SWITCHED LINES ONLY --------------------------* SM 03920000
.A5400 ANOP 03930000
SPACE 03940000
CMFO10 EQU * * LOCAL. M 03950000
MVI CMOPWK+1,MLREAD MOVE READ OP TO WORK AREA M 03960000
TBN PL$OPM(,XR1),OPGET IS THIS READ OPERATION M 03970000
JT CMTBFR JUMP IF READ OPERATION M 03980000
MVI CMOPWK+1,MLWRIT MOVE WRITE OP TO WORK AREA M 03990000
SPACE 04000000
CMTBFR EQU * * LOCAL. M 04010000
MVC CMPOP+1(1),CMOPWK+1 MOVE CURRENT OP TO TBN INSTR M 04020000
EJECT 04030000
*********************************************************************** 04040000
* DETERMINE IF RESET OPERATION IS NEEDED. * 04050000
*********************************************************************** 04060000
SPACE 04070000
AIF (&NBFR).R5400 04080000
* ALWAYS RESET IF BUFFERRED RECEIVE TERMINAL BM 04090000
* IF BUFFERRED RECEIVE - THEN MUST BE STATION CONTROL BM 04100000
SPACE 04110000
TBN $MDTFR(,XR2),$MTBFR IS THIS BUFFERRED RECV TERM BM 04120000
JT CMREST JUMP IF BUFFERRED RECEIVE BM 04130000
.R5400 ANOP 04140000
SPACE 04150000
AIF (&NSCTL).S5900 04160000
* IF THIS IS 2740 WITH STATION CONTROL AND NO CHECKING - ISSUE RESET CM 04170000
SPACE 04180000
TBN $MDTFT(,XR2),$MTPLT IS IT STATION CONTROL CM 04190000
TBF $MDTFT(,XR2),$MTLRC IS IT NON-CHECKING CM 04200000
JT CMREST JUMP IF STAT CTL AND NON-CHKG CM 04210000
SPACE 04220000
.S5900 ANOP 04230000
* IF CHECKING TERMINAL, DON'T RESET. (RESET ALLOWS OPERATOR INPUT). M 04240000
SPACE 04250000
TBN $MDTFT(,XR2),$MTLRC IS IT CHECKING TERMINAL ? M 04260000
JT CMINIT JUMP IF CHECKING TERMINAL. M 04270000
CMREST EQU * * LOCAL. 04280000
SBN CMOPWK+1,MLRSET SET RESET BIT IN OP CODE ON M 04290000
EJECT 04300000
*********************************************************************** 04310000
* DETERMINE IF INITIAL OPERATION IS NEEDED. * 04320000
*********************************************************************** 04330000
SPACE 04340000
CMINIT EQU * TEST FOR INITIAL OP M 04350000
TBF LCBATR(,XR2),LCBNIT TEST INITIAL OP BIT IN LCB M 04360000
JF CMTRST JUMP IF INITIAL NOT NEEDED M 04370000
SPACE 04380000
**********************************************************************M 04390000
* NEED INITIAL OPERATION ON THIS LINE M 04400000
**********************************************************************M 04410000
SPACE 04420000
AIF (&NSW).A5500 04430000
* IF IT IS A SWITCHED LINE AND IT IS A USER OP SM 04440000
* THEN ISSUE MESSAGE TO SYSTEM OPERATOR INFORMING HIM OF THE STATUS SM 04450000
* OF THE LINE SM 04460000
SPACE 04470000
TBN $MDTFT(,XR2),$MMDNT IS IT SWITCHED LINE SM 04480000
TBF PLOPM(,XR1),OP$SYS IS IT USER REQUEST SM 04490000
JF CMNMSO JUMP IF NOT USER OP- SWC LINE SM 04500000
SPACE 04510000
* HAVE USER REQUEST TO SWITCHED LINE WHICH REQUIRES CONNECTION SM 04520000
* BRING IN TRANSIENT TO ISSUE MESSAGE SM 04530000
SPACE 04540000
SVC 0 ##### TRANSIENT CALL ##### SM 04550000
DC AL1(CCPRIB) CCP SVC RIB. SM 04560000
DC AL1(CC4WC) TRANSIENT ID SM 04570000
SPACE 04580000
CMNMSO EQU * * LOCAL. SM 04590000
SPACE 04600000
.A5500 ANOP 04610000
AIF (&N2741).B5200 04620000
* DETERMINE IF THIS IS PUT TO 2741 4M 04630000
* IF YES - CANNOT ISSUE WRITE INITIAL TO 2741 SO MUST ISSUE READ INIT4M 04640000
* AND BIT BUCKET THE DATA FROM THE READ BEFORE ISSUEING THE WRITE 4M 04650000
* TO THE 2741 4M 04660000
SPACE 04670000
TBN PL$OPM(,XR1),OPPUT IS IT PUT 4M 04680000
CLI $MDTTP(,XR2),ML2741 IS IT 2741 4M 04690000
JC CMOPFM,ANY+LO+HI+FALSE JUMP IF NOT INITL PUT TO 2741 4M 04700000
SPACE 04710000
* HAVE WRITE INITIAL TO 2741 SO ISSUE READ INITIAL 4M 04720000
SPACE 04730000
SBN LCBATR(,XR2),LCBTBK SET ON LCB BIT TO BIT 4M 04740000
* BUCKET DATA FROM DUMMY READ 4M 04750000
MVI CMOPWK+1,MLREAD PLUG READ INITL INTO OP WORK 4M 04760000
J CMOPWK JUMP TO PLUG OP INTO DTF 4M 04770000
AGO .B5250 04780000
.B5200 ANOP 04790000
J CMOPFM JUMP TO PLUG INITL OP INTO DTF M 04800000
.B5250 ANOP 04810000
EJECT 04820000
*********************************************************************** 04830000
* DETERMINE WHETHER TO ISSUE CONVERSATION OR CONTINUE OP CODE. * 04840000
*********************************************************************** 04850000
SPACE 04860000
CMTRST EQU * * LOCAL. M 04870000
TBN CMOPWK+1,MLRSET HAS RESET BEEN SET M 04880000
JT CMCONV JUMP TO ISSUE CONVERSATIONAL M 04890000
SPACE 04900000
* FOR CONTINUE TO BE USED THE FOLLOWING CONDITIONS MUST BE MET M 04910000
* 1/ LAST OP ON LINE WAS OF SAME TYPE M 04920000
* 2/ LAST TERMINAL SCHEDULED ON LINE WAS SAME M 04930000
* 3/ READ TO STATION CONTROL TERMINAL WILL NEVER BE CONTINUE M 04940000
* 4/ READ CONTINUE VALID ONLY FOR A CHECKING TERM. OR A 2741. M 04950000
SPACE 04960000
CMPOP TBN $MDOPC(,XR2),# DO THE OP CODES MATCH ? M 04970000
JF CMCONV JUMP TO ISSUE CONVERSATIONAL M 04980000
SPACE 04990000
AIF (&NSCTL).S5910 05000000
CLC $MDTMA(2,XR2),CMSTMA OPS TO THE SAME TERMINAL ? CM 05010000
JNE CMCONV IF NO-JUMP TO ISSUE CONVERS. CM 05020000
SPACE 05030000
.S5910 ANOP 05040000
* IF OPERATION IS A WRITE ISSUE A CONTINUE OP M 05050000
SPACE 05060000
TBN $MDOPC(,XR2),MLWRIT WAS IT WRITE M 05070000
JT CMCONT IF YES JUMP TO FORM CONTINUE M 05080000
SPACE 05090000
AIF (&NSCTL).S5920 05100000
* IF STATION CONTROL; THEN ISSUE CONVERSATIONAL OPERATION. CM 05110000
SPACE 05120000
TBN $MDTFT(,XR2),$MTPLT STATION CONTROL ? CM 05130000
JT CMCONV YES-GO ISSUE CONVERSATIONAL. CM 05140000
.S5920 SPACE 05150000
* CONTINUE OP VALID TO ALL CHECKING TERMINALS. 05160000
SPACE 05170000
TBN $MDTFT(,XR2),$MTLRC CHECKING TERMINAL ? M 05180000
JT CMCONT YES-CONTINUE OP IS OK. M 05190000
SPACE 05200000
AIF (&N2741).B5300 05210000
* SINCE OPERATION IS A READ TO NON-STATION CONTROL TERMINAL 4M 05220000
* THE TERMINAL MUST BE A 2741 FOR CONTINUE TO BE VALID 4M 05230000
SPACE 05240000
CLI $MDTTP(,XR2),ML2741 IS IT 2741 ? 4M 05250000
JE CMCONT JUMP IF 2741 4M 05260000
SPACE 05270000
.B5300 ANOP 05280000
* ISSUE CONVERSATIONAL OPERATION CODE. M 05290000
SPACE 05300000
CMCONV EQU * * LOCAL. M 05310000
SBN CMOPWK+1,MLCONV SET CONVERSATIONAL BIT ON M 05320000
J CMOPFM JUMP TO PLUG DTF M 05330000
SPACE 05340000
* ISSUE CONTINUE OPERATION CODE. M 05350000
SPACE 05360000
CMCONT EQU * * LOCAL. M 05370000
SBN CMOPWK+1,MLCONT SET CONTINUE BIT ON M 05380000
SPACE 05390000
CMOPFM EQU * * LOCAL. M 05400000
AIF (&NSCTL).S5930 05410000
MVC $MDTMA(2,XR2),CMSTMA MOVE TMA TO DTF CM 05420000
.S5930 ANOP 05430000
CMOPWK MVI $MDOPC(,XR2),# MOVE OP CODE TO DTF M 05440000
AIF (&N1050).C5200 05450000
B CMMCT BRANCH TO PLUG BYTE 2 OF TMA 1M 05460000
SPACE 05470000
.C5200 ANOP 05480000
SPACE 2 05490000
**********************************************************************M 05492000
* GO TO MLTA IOCS, TO START AN OPERATION. M 05494000
**********************************************************************M 05496000
SPACE 1 05498000
B MLTIO1 BR TO IOCS M 05500000
SPACE 05510000
SVC 0 CALL M 05520000
DC AL1(CCPRIB) * CCP M 05530000
DC AL1(TRRIB) * TRACE M 05540000
DC AL1(TTMSIO) * FOR MLTA SIO. M 05550000
SPACE 05560000
CLI $MDOSC(,DTF),NOBIT WAS START SUCCESSFUL M 05570000
BE CMPAII BRANCH IF GOOD START M 05580000
SPACE 05590000
* BRING IN TRANSIENT TO ANALYZE THE NON-ZERO MLTA START CODE M 05600000
SPACE 05610000
SVC 0 ###### TRANSIENT CALL ##### M 05620000
DC AL1(CCPRIB) CCP SVC RIB. M 05630000
DC AL1(CC4SC) MLTA START CODE ERROR. M 05640000
SPACE 05650000
B CMPAII JUMP TO POST REQUESTOR M 05660000
.M1400 ANOP 05670000
MEND 05680000