ibm:vm370-lib:cp:dmkrnh.assemble_src
Table of Contents
DMKRNH Source
References
- Fixes Applied : 4
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC101DK]
Source Listing
- DMKRNH.ASSEMBLE.txt
- RNH TITLE 'DMKRNH (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT @V200820 00002000
- COPY OPTIONS @V200820 00003000
- COPY LOCAL OPTIONS @V200820 00004000
- SPACE 2 00005000
- *. 00006000
- * MODULE NAME - 00007000
- * 00008000
- * DMKRNH 00009000
- * 00010000
- * CONTENTS - 00011000
- * 00012000
- * DMKRNHIN - SECOND LEVEL INTERRUPT HANDLER FOR 3704, 3705 00013000
- * DMKRNHIC - CONTASK INITIALIZATION AND SCHEDULING 00014000
- * DMKRNHND - SCHEDULE CONTROL AND/OR RESET FUNCTIONS 00015000
- *. 00016000
- SPACE 2 00017000
- DMKRNH START 00018000
- SPACE 00019000
- USING PSA,0 @V200820 00020000
- USING CONTASK,R6 @V200820 00021000
- USING RDEVBLOK,R8 @V200820 00022000
- USING NICBLOK,R9 @V200820 00023000
- USING IOBLOK,R10 @V200820 00024000
- USING VMBLOK,R11 @V200820 00025000
- SPACE 00026000
- EXTRN DMKIOSQR,DMKSTKCP,DMKCVTBH @V200820 00027000
- EXTRN DMKQCNCL,DMKQCNET,DMKQCNTO @V200820 00028000
- EXTRN DMKCNSED,DMKSCNRU,DMKERMSG @V200820 00029000
- EXTRN DMKSCNAU,DMKVSPRT,DMKCVTDT @V200820 00030000
- EXTRN DMKCFMBK,DMKCFMAT,DMKBLDVM @V200820 00031000
- EXTRN DMKIOERN,DMKNLEMP,DMKNLDR @V407508 00032100
- EXTRN DMKCPVAE,DMKRIORN @VM01040 00033000
- EXTRN DMKQCNWT @V407508 00033100
- SPACE 00034000
- ENTRY DMKRNHIC,DMKRNHIN,DMKRNHND @V200820 00035000
- ENTRY DMKRNHTG REQUEST TAG SOURCE FIELD @V200820 00036000
- ENTRY DMKRNHTR USERID FOR BTU TRACE OUTPUT @V200820 00037000
- ENTRY DMKRNHCT STATISTICAL COUNTER BLOCK @V200820 00038000
- EJECT 00039000
- *. 00040000
- * SUBROUTINE NAME - 00041000
- * 00042000
- * DMKRNHIC 00043000
- * 00044000
- * FUNCTION - 00045000
- * 00046000
- * TO INITIALIZE THE CONTASK FIELDS WHICH COMPRISE THE 00047000
- * 370X NETWORK CONTROL PROGRAM BASIC TRANSMISSION HEADER 00048000
- * 00049000
- * ATTRIBUTES - 00050000
- * 00051000
- * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA GOTO 00052000
- * 00053000
- * ENTRY CONDITIONS - 00054000
- * 00055000
- * GR 12 = ADDRESS OF DMKRNHIC 00056000
- * GR 11 = ADDRESS OF A VALID VMBLOK 00057000
- * GR 8 = ADDRESS OF THE 370X RDEVBLOK 00058000
- * 00059000
- * EXIT CONDITIONS - 00060000
- * 00061000
- * EXIT IS MADE VIA GOTO DMKDSPCH 00062000
- * 00063000
- * CALLS TO OTHER ROUTINES - 00064000
- * 00065000
- * DMKFREE - TO ALLOCATE FREE STORAGE FOR CONTASK'S 00066000
- * 00067000
- * EXTERNAL REFERENCES - NONE 00068000
- * 00069000
- * TABLES / WORK AREAS - NONE 00070000
- * 00071000
- * NOTES - 00072000
- * 00073000
- * DMKRNHIC IS ENTERED VIA CPEXBLOK OR GOTO WHENEVER 00074000
- * DMKQCN HAS STACKED A CONTASK ON THE 370X RDEVBLOK, 00075000
- * AND THE CONTASK CHAIN WAS PREVIOUSLY EMPTY, OR IF 00076000
- * THE CONTASK HAD THE 'PRIORITY' FLAG SET. 00077000
- * 00078000
- * REGISTER USAGE - 00079000
- * 00080000
- * GR14,15 LINKAGE REGISTERS 00081000
- * GR12,13 MODULE BASE REGISTERS 00082000
- * GR11 = VMBLOK ADDRESSABILITY 00083000
- * GR10 = IOBLOK ADDRESSABILITY 00084000
- * GR 9 = NICBLOK ADDRESSABILITY 00085000
- * GR 8 = RDEVBLOK ADDRESSABILITY 00086000
- * GR 7 = INTERNAL LINKAGE REGISTER 00087000
- * GR 6 = CONTASK ADDRESSABILITY 00088000
- * GR0-5= WORK REGISTERS 00089000
- * 00090000
- EJECT 00091000
- * OPERATION - 00092000
- * 00093000
- * 1. IF THE 370X IS NOT AVAILABLE, EXIT. 00094000
- * 00095000
- * 2. IF THERE ARE NO MORE CONTASK'S TO BE PROCESSED, 00096000
- * ATTEMPT TO START OUTPUT TO THE 370X VIA RNSTART. 00097000
- * 00098000
- * 3. IF THE RESOURCE SPECIFIED BY THE VMTRMID FIELD IN 00099000
- * THE VMBLOK (FROM 'CONUSER') IS NOT AVAILABLE, SET 00100000
- * RETURN CODE 12 IN THE RESPONSE SAVEAREA (IF ANY), 00101000
- * AND RETURN THE CONTASK VIA CALL DMKQCNET. 00102000
- * 00103000
- * 4. WRITE TASK - SET CONTCMD TO WRITNRM, SET WRTSTPR 00104000
- * IN CONDFLG. IF LOGDROP OR LOGHOLD SPECIFIED, OR IF 00105000
- * CONRESP OR CONSPLT IS SET, TURN OFF WRTSTPR. IF 00106000
- * LOGDROP IS SET, CHANGE COMMAND TO WRITEOT. FOR 00107000
- * LOGHOLD, SET COMMAND TO WRITDSC. 00108000
- * 00109000
- * 5. READ TASK - SET CONTCMD TO READNRM. IF INHIBIT 00110000
- * WAS SPECIFIED, AND NICPSUP IS NOT SET, OR NICTYPE 00111000
- * IS NICTELE, BUILD A CONTASK TO WRITE A MASKING 00112000
- * STRING PRIOR TO ISSUING THE READ. INITIALIZE BOTH 00113000
- * THE READ TASK AND THE WRITE MASK TASK. 00114000
- * IF NICPSUP IS SET, BUILD A CONTASK TO SEND BYPASS 00115000
- * CHARACTER (X'24'), THEN READ, THEN SEND RESTORE 00116000
- * CHARACTER (X'14'). INITIALIZE ALL THREE TASKS. 00117000
- * 00118000
- * 6. ATTEMPT TO START OUTPUT TO THE 370X. IF THE 370X 00119000
- * IS EITHER NOT READY OR ALREADY BUSY, EXIT. 00120000
- * OTHERWISE, SCAN THE ENTIRE NICLIST LOOKING FOR 00121000
- * CONTASK'S TO BE SENT TO THE 370X. AS MANY CONTASK'S 00122000
- * AS POSSIBLE ARE SENT WITH A SINGLE CALL TO DMKIOSQR. 00123000
- *. 00124000
- EJECT 00125000
- USING DMKRNHIC,R12 @V200820 00126000
- DMKRNHIC DS 0D WAKE-UP ENTRY FROM DMKQCN @V200820 00127000
- LM R12,R13,RNHBASE SETUP MODULE ADDRESSABILITY @V200820 00128000
- USING DMKRNH,R12,R13 @V200820 00129000
- SPACE 00130000
- TM RDEVSTAT,RDEVDED+RDEVDISA+RDEVNRDY AVAILABLE ?@V200820 00131000
- BNZ GODSPCH NO -- JUST GO AWAY FOR NOW @V200820 00132000
- SLR R10,R10 CLEAR IOBLOK REGISTER (NO IOBLOK)@V200820 00133000
- NEXTASK EQU * PROCESS ONE OR MORE CONTASK'S @V200820 00134000
- L R6,RDEVCON PICK UP POINTER TO CONTASK @V200820 00135000
- LTR R6,R6 ANYTHING THERE ? @V200820 00136000
- BZ RNSTART NO -- TRY TO START THE DEVICE @V200820 00137000
- L R1,CONPNT REMOVE FIRST CONTASK FROM CHAIN @V200820 00138000
- ST R1,RDEVCON ... @V200820 00139000
- SPACE 00140000
- L R1,CONUSER GET ADDRESS OF CONTASK OWNER @V407508 00141100
- BAL R7,SWITCHVM SWITCH TO THIS VMBLOK @V407508 00142100
- SPACE 00144000
- LA R7,NEXTASK RETURN ADDRESS IF LINE BREAK @V200820 00145000
- LH R9,VMTRMID GET RESOURCE ID OF USER TERMINAL @V200820 00146000
- N R9,F4095 CLEAR THE DEVICE CODE PORTION @V200820 00147000
- CH R9,RDEVMAX VALIDATE IT FOR SAFETY @V200820 00148000
- BH LINEBRK ASSUME HIS TERMINAL DIED @V200820 00149000
- LTR R9,R9 CHECK THE LOWER BOUND ALSO @V200820 00150000
- BNP LINEBRK RESOURCE ZERO IS SPECIAL @V200820 00151000
- SPACE 00152000
- MH R9,=AL2(NICSIZE*8) COMPUTE NICBLOK LIST INDEX @V200820 00153000
- AL R9,RDEVNICL INDEX TO THE ACTUAL NICBLOK @V200820 00154000
- TM NICSTAT,NICDISA+NICDED+NICEPMD AVAILABLE ? @V200820 00155000
- BNZ LINEBRK NO -- LINE BREAK @V200820 00156000
- L R1,NCONTSK NUMBER OF TASKS FROM DMKQCN @V200820 00157000
- AL R1,F1 INCREMENT . . . @V200820 00158000
- ST R1,NCONTSK . . . @V200820 00159000
- TM CONSTAT,CONCNTL IS THIS A CONTROL TASK ? @V200820 00160000
- BO RNCNTRL YES - SHOULD BE ALL SET @V200820 00161000
- TM CONSTAT,CONOUTPT IS THIS AN OUTPUT CONTASK ? @V200820 00162000
- BO RNWRITE YES - GO FIGURE OUT COMMAND @V200820 00163000
- SLR R0,R0 @V200820 00164000
- STH R0,CONDCNT NO DATA SENT WITH READ REQUEST @V200820 00165000
- LA R1,READNRM NORMAL READ COMMAND + MODIFIER @V200820 00166000
- TM CONPARM,INHIBIT SUPPRESS TYPEOUT ? @V200820 00167000
- BZ RNCOMND NO -- JUST LET IT GO AS IS @V200820 00168000
- STH R1,CONTCMD SET THE COMMAND FOR THIS TASK @V200820 00169000
- LA R5,NEXTASK BRANCH ADDRESS AFTER MASK SETUP @VM08679 00170000
- MASKING EQU * HERE TO RETRY AN INHIBIT READ @VM08679 00171000
- BAL R7,TAGTASK FILL IN OTHER BTU FIELDS @V200820 00172000
- LR R4,R6 CONTASK ADDRESS TO GR4 @V200820 00173000
- TM NICTYPE,NICTELE TELEGRAPH TERMINAL ? @V200820 00174000
- BO MASKTTY YES - TYPE A MASK FIRST @V200820 00175000
- TM NICFLAG,NICPSUP PRINT SUPPRESS AVAILABLE ? @V200820 00176000
- BZ MASKIBM NO -- TYPE 1050, 2741 MASK @V200820 00177000
- EJECT 00178000
- BYPREST EQU * SEND BYPASS, READ, SEND RESTORE @V200820 00179000
- LA R0,CONTSIZE+1 GET ANOTHER CONTASK @V200820 00180000
- BAL R3,INHTASK ...WITHOUT CHAINING IT @V200820 00181000
- MVI CONDCNT+1,1 DATA COUNT = ONE @V200820 00182000
- MVC CONDATA(8),ZEROES CLEAR THE BUFFER @V200820 00183000
- MVI CONDATA,X'24' BYPASS CHARACTER @V200820 00184000
- BAL R7,TAGTASK FILL IN THE BTU @V200820 00185000
- BAL R7,TASKENQ CHAIN THE WRITE BYPASS TASK @V200820 00186000
- LR R6,R4 ORIGINAL READ CONTASK TO GR6 @V200820 00187000
- BAL R7,TASKENQ CHAIN IN THE READ SECOND @V200820 00188000
- LA R0,CONTSIZE+1 GET A THIRD CONTASK @V200820 00189000
- BAL R3,INHTASK . . . @V200820 00190000
- MVI CONDCNT+1,1 DATA COUNT = ONE @V200820 00191000
- MVC CONDATA(8),ZEROES CLEAR THE BUFFER @V200820 00192000
- MVI CONDATA,X'14' RESTORE CHARACTER @V200820 00193000
- LA R1,WRITNRM WRITE COMMAND @V200820 00194000
- B RNCOMND USE THE NORMAL PATH NOW @V200820 00195000
- SPACE 00196000
- MASKTTY EQU * TYPE READ MASK FOR TELETYPE @V200820 00197000
- LA R0,CONTSIZE+(TTYMASL+7)/8 TASK SIZE NEEDED @V200820 00198000
- BAL R3,INHTASK GET AN ISOLATED CONTASK @V200820 00199000
- MVI CONDCNT+1,TTYMASL DATA LENGTH @V200820 00200000
- MVC CONDATA(TTYMASL),TTYMASK MOVE IN THE MASK @V200820 00201000
- B MASKWRT GO QUEUE THE TASKS FOR EXECUTION @V200820 00202000
- SPACE 00203000
- MASKIBM EQU * TYPE MASK FOR 1050, 2741 @V200820 00204000
- LA R0,CONTSIZE+(IBMMASL+7)/8 CONTASK SIZE @V200820 00205000
- BAL R3,INHTASK GET AN ISOLATED CONTASK @V200820 00206000
- MVI CONDCNT+1,IBMMASL DATA LENGTH @V200820 00207000
- MVC CONDATA(IBMMASL),IBMMASK MOVE IN THE MASK @V200820 00208000
- MASKWRT EQU * QUEUE THE TASKS FOR EXECUTION @V200820 00209000
- BAL R7,TAGTASK FILL IN THE BTU @V200820 00210000
- TM CONSTAT-CONTASK(R4),CONRTRY RETRY OPERATION ? @VM08679 00211000
- BZ *+8 NO -- O.K. AS IS @VM08679 00212000
- OI CONSTAT,CONRTRY SET RETRY IN MASK WRITE @VM08679 00213000
- BAL R7,TASKENQ QUEUE THE MASK WRITE FIRST @V200820 00214000
- LR R6,R4 @V200820 00215000
- BAL R7,TASKENQ THEN QUEUE IN THE READ @V200820 00216000
- L R4,CONRETN RESPONSE SAVEAREA ADDRESS @VM08679 00217000
- SLR R0,R0 @VM08679 00218000
- ST R0,SAVER2-SAVEAREA(,R4) SET RETURN CODE ZERO @VM08679 00219000
- BR R5 RETURN AND CONTINUE @VM08679 00220000
- EJECT 00221000
- INHTASK EQU * ALLOCATE CONTASK FOR READ INHIBIT@V200820 00222000
- BAL R7,CTLTASZ GET A CONTROL CONTASK @V200820 00223000
- L R1,CONPNT PULL IT BACK OFF THE CHAIN @V200820 00224000
- ST R1,NICQPNT . . . @V200820 00225000
- MVI CONSTAT,CONOUTPT THIS IS REALLY OUTPUT @V200820 00226000
- MVI CONPARM,NOAUTO+INHIBIT SET IDENTITY FLAGS @V200820 00227000
- LA R0,WRITNRM NORMAL WRITE COMMAND @V200820 00228000
- STH R0,CONTCMD SET FOR THE NCP @V200820 00229000
- BR R3 RETURN @V200820 00230000
- SPACE 2 00231000
- RNWRITE EQU * FIGURE OUT COMMAND FOR OUTPUT @V200820 00232000
- LH R1,CONCNT MESSAGE DATA LENGTH @V200820 00233000
- LA R14,CONDATA(R1) POINT PAST LAST CHARACTER @VM08816 00234000
- TM CONPARM,NOAUTO AUTO CARRIAGE RETURN ? @VM08816 00235000
- BZ RNWRTAU YES - INSERT CORRECT CHARS @VM08816 00236000
- TM NICTYPE,NICTELE TELEGRAPH TERMINAL ? @VM08816 00237000
- BO RNTBELL YES - CHECK FOR ALARM @VM08816 00238000
- B RNWRTNA WRITE WITHOUT CARRIAGE RETURN @VM08816 00239000
- RNWRTAU EQU * INSERT CHARS FOR NEW-LINE @VM08816 00240000
- MVI 0(R14),X'15' MOVE IN NEW-LINE CHARACTER @V200820 00241000
- LA R1,1(0,R1) INCLUDE 'CR' IN DATA COUNT @V200820 00242000
- TM NICTYPE,NICTELE TELEGRAPH TERMINAL ? @VM08772 00243000
- BZ RNWRTNA NO -- ALL SET @VM08772 00244000
- MVC 0(2,R14),=X'0D25' SEPARATE 'CR,LF' FOR TWX @VM08772 00245000
- LA R1,1(0,R1) ADD ONE MORE TO THE COUNT @VM08772 00246000
- LA R14,2(0,R14) POINT PAST NEW LAST CHARACTER @VM08816 00247000
- RNTBELL EQU * CHECK FOR TELEGRAPH ALARM @VM08816 00248000
- TM CONPARM,ALARM SHOULD WE RING THE BELL ? @VM08816 00249000
- BZ RNWRTNA NO -- O.K. AS IS @VM08816 00250000
- LA R1,4(0,R1) ADD FOUR TO THE COUNT @VM08816 00251000
- MVC 0(4,R14),=X'2F2F2F2F' FOUR RINGS ON THE BELL @VM08816 00252000
- RNWRTNA EQU * @V200820 00253000
- STH R1,CONDCNT SET IN BTU TEXT LENGTH FIELD @V200820 00254000
- LA R1,WRITNRM NORMAL WRITE COMMAND @V200820 00255000
- TM CONPARM,LOGHOLD+LOGDROP IF EITHER IS ON... @V200820 00256000
- BZ RNCOMND ...WE NEED A DISCONNECT@V200820 00257000
- LA R1,WRITEOT WRITE END OF TRANSMISSION @V200820 00258000
- RNCOMND EQU * @V200820 00259000
- STH R1,CONTCMD SET BTU COMMAND AND MODIFIER @V200820 00260000
- BAL R7,TAGTASK FINISH SETTING UP CONTASK BTU @V200820 00261000
- RNCNTRL EQU * ENQUEUE CONTROL CONTASK @V200820 00262000
- BAL R7,TASKENQ QUEUE CONTASK ON THE NICBLOK @V200820 00263000
- B NEXTASK PROCESS NEXT CONTASK, IF ANY @V200820 00264000
- EJECT 00265000
- *. 00266000
- * SUBROUTINE NAME - 00267000
- * 00268000
- * DMKRNHND 00269000
- * 00270000
- * FUNCTION - 00271000
- * 00272000
- * TO EXECUTE CONTROL FUNCTIONS FOR THE 370X NCP. 00273000
- * 00274000
- * ATTRIBUTES - 00275000
- * 00276000
- * SERIALLY REUSEABLE, RESIDENT, CALLED VIA SVC 00277000
- * 00278000
- * ENTRY CONDITIONS - 00279000
- * 00280000
- * GR13 = ADDRESS OF A STANDARD SAVEAREA 00281000
- * GR12 = ADDRESS OF DMKRNHND 00282000
- * GR11 = ADDRESS OF A USER VMBLOK 00283000
- * GR 9 = ADDRESS OF THE NICBLOK 00284000
- * GR 8 = ADDRESS OF THE 370X RDEVBLOK 00285000
- * GR 2 = BTU DATA FIELD LENGTH, AND 'NORET' PARAMETER 00286000
- * GR 1 = ADDRESS OF DATA ASSOCIATED WITH THE BTU (IF ANY) 00287000
- * GR 0 = COMMAND AND MODIFIER TO BE EXECUTED 00288000
- * 00289000
- * EXIT CONDITIONS - 00290000
- * 00291000
- * CC = 0 -> REQUEST WAS SUCCESSFUL 00292000
- * 00293000
- * IF NORET NOT SPECIFIED, GR1 CONTAINS THE ADDRESS OF 00294000
- * A MINI-CONTASK CONTAINING THE RESPONSE BTU RETURNED 00295000
- * BY THE 370X NCP. THIS BLOCK IS IN THE FORMAT OF THE 00296000
- * CONTASK FIELDS CONCCW3 THRU CONDATA. THE FIRST HALFWORD 00297000
- * (CONCCW3) CONTAINS THE SIZE OF THE BLOCK IN DOUBLE-WORDS. 00298000
- * 00299000
- * CC = 2 -> EITHER THE SPECIFIED RESOURCE WAS INVALID, 00300000
- * THE 370X WAS NOT AVAILABLE, THE RESOURCE WAS 00301000
- * NOT AVAILABLE, OR A 370X FAILURE OCCURRED. 00302000
- * 00303000
- * CALLS TO OTHER ROUTINES - 00304000
- * 00305000
- * DMKSTKCP - TO STACK A CPEXBLOK FOR A LATER EXIT. 00306000
- * DMKFREE - TO ALLOCATE STORAGE FOR THE CONTASK. 00307000
- * DMKRNHIC - TO INITIATE I/O TO THE 370X. 00308000
- * 00309000
- * EXTERNAL REFERENCES - NONE 00310000
- * 00311000
- * TABLES / WORK AREAS - NONE 00312000
- * 00313000
- * NOTES - NONE 00314000
- * 00315000
- EJECT 00316000
- * REGISTER USAGE - 00317000
- * 00318000
- * GR14,15 LINKAGE REGISTERS 00319000
- * GR13 = SAVEAREA ADDRESSABILITY 00320000
- * GR12 = DMKRNH BASE REGISTER (HALF-MODULE LIMIT) 00321000
- * GR11 = VMBLOK ADDRESSABILITY 00322000
- * GR10 = IOBLOK ADDRESSABILITY (NOT USED) 00323000
- * GR 9 = NICBLOK ADDRESSABILITY 00324000
- * GR 8 = RDEVBLOK ADDRESSABILITY 00325000
- * GR 7 = INTERNAL LINKAGE REGISTER 00326000
- * GR 6 = CONTASK ADDRESSABILITY 00327000
- * GR0-5= WORK REGISTERS 00328000
- * 00329000
- * OPERATION - 00330000
- * 00331000
- * 1. IF THE 370X IS NOT AVAILABLE, OR IF THE RESOURCE 00332000
- * SPECIFIED IS NOT VALID, SET R2 = 12, CC = 2, EXIT. 00333000
- * 00334000
- * 2. IF THE COMMAND IS CDISPLY, ALLOCATE A CONTASK WITH 00335000
- * ONE EXTRA DBL-WD FOR DATA, STORE CALLER'S GR3 AS 00336000
- * THE DATA, SET THE DATA LENGTH TO FOUR. 00337000
- * 00338000
- * 3. BUILD A CONTROL CONTASK, FILL IN THE BTU FIELDS, 00339000
- * USING CALLER'S COMMAND, MODIFIER, AND DESTINATION 00340000
- * RESOURCE I.D. 00341000
- * 00342000
- * 4. IF NORET WAS NOT SPECIFIED, SET CONRESP AND PUT THE 00343000
- * ADDRESS OF THE SAVEAREA IN CONRETN FOR A LATER EXIT. 00344000
- * 00345000
- * 5. IF NORET WAS SPECIFIED, AND THE 370X IS ALREADY 00346000
- * ACTIVE, EXIT. IF THE 370X IS NOT ACTIVE, BUILD AND 00347000
- * STACK A CPEXBLOK TO RETURN TO CALLER AS SOON AS 00348000
- * POSSIBLE, AND THEN ATTEMPT TO START THE 370X. 00349000
- *. 00350000
- EJECT 00351000
- USING SAVEAREA,R13 @V200820 00352000
- USING DMKRNHND,R12 @V200820 00353000
- DMKRNHND DS 0D ENTRY TO SCHEDULE A CONTROL CONTASK @V200820 00354000
- ENTER , @V200820 00355000
- L R12,RNHBASE USE HALF-STANDARD ADDRESSABILITY @V200820 00356000
- USING DMKRNH,R12 ... @V200820 00357000
- SPACE 00358000
- USING RDEVBLOK,R8 @V200820 00359000
- LA R2,12(0) RETURN CODE IF INVALID CALL @V200820 00360000
- TM RDEVSTAT,RDEVDED+RDEVDISA+RDEVNRDY O.K. TO USE ?@V200820 00361000
- BNZ RNDEXIT NO -- SET CC = 2 @V200820 00362000
- TM RDEVFLAG,RDEVLNCP IS THERE AN ACTIVE NCP ? @V200820 00363000
- BZ RNDEXIT NO -- CALLER MADE AN ERROR @V200820 00364000
- SWITCH CONTINUE ON THE I/O PROCESSOR @V407593 00364500
- OI RDEVSTAT,RDEVRSVD 370X IN USE BY THE SYSTEM @V200820 00365000
- SPACE 00366000
- SLR R10,R10 CLEAR IOBLOK REGISTER (NO IOBLOK)@V200820 00367000
- SLR R2,R2 @V240820 00368000
- IC R2,SAVER2+3 GR2 = BTU DATA LENGTH (IF ANY) @V240820 00369000
- LA R0,CONTSIZE*8+7(0,R2) CONTASK SIZE IN BYTES @V240820 00370000
- SRL R0,3(0) CONVERT TO DOUBLE-WORDS @V240820 00371000
- BAL R7,CTLTASZ ALLOCATE AND INITIALIZE CONTASK @V240820 00372000
- STH R2,CONDCNT SET BTU DATA LENGTH IN CONTASK @V240820 00373000
- LTR R2,R2 WAS ANY DATA PROVIDED ? @V240820 00374000
- BNP RNHNDTK NO -- ALL SET AS IS @V240820 00375000
- BCTR R2,0 DECREMENT LENGTH FOR MOVE @V240820 00376000
- L R1,SAVER1 POINTER TO CALLER'S DATA FIELD @V240820 00377000
- EX R2,MOVECTL MOVE DATA INTO THE CONTASK @V240820 00378000
- SPACE 00379000
- RNHNDTK EQU * COMPLETE CONTASK INITIALIZATION @V240820 00380000
- NI NICSTAT,255-NICNTRL LET THIS TASK EXECUTE @V240820 00381000
- L R1,SAVER0 CALLER'S COMMAND, MODIFIER @V200820 00382000
- STH R1,CONTCMD SET IN THE CONTASK BTU @V200820 00383000
- L R1,NTSKCTL NUMBER OF CALLS TO DMKRNHND @V200820 00384000
- AL R1,F1 INCREMENT . . . @V200820 00385000
- ST R1,NTSKCTL . . . @V200820 00386000
- TM SAVER2+2,NORET/256 IS A RESPONSE DESIRED ? @V200820 00387000
- BO RNHNDST NO -- SCHEDULE TASK AND EXIT@V200820 00388000
- SLR R2,R2 CLEAR RETURN CODE IN SAVE-AREA @V200820 00389000
- ST R2,SAVER2 ... @V200820 00390000
- OI CONSTAT,CONRESP RESPONSE IS REQUESTED @V200820 00391000
- ST R13,CONRETN ...VIA A LATER EXIT @V200820 00392000
- BAL R7,TAGTASK COMPLETE FILLING IN THE BTU @V200820 00393000
- B RNSTART START UP THE NCP WITH A BTU @VM01034 00394000
- SPACE 2 00395000
- MOVECTL MVC CONDATA(*-*),0(R1) EXECUTED MOVE @V240820 00396000
- EJECT 00397000
- RNHNDST EQU * EXIT IS REQUIRED AFTER START @V200820 00398000
- BAL R7,TAGTASK FILL IN BTU FIELDS FOR LATER @V200820 00399000
- SLR R2,R2 SET RETURN CODE ZERO @V200820 00400000
- TM RDEVFLAG,RDEVWAIT+RDEVSLOW ALREADY BUSY ? @V200820 00401000
- BNZ RNDEXIT YES - JUST EXIT @V200820 00402000
- LA R4,RNDEXIT EXECUTION ADDRESS @V200820 00403000
- BAL R7,STKCPEX STACK A CPEXBLOK TO DO THE 'EXIT'@V200820 00404000
- B RNSTART START UP THE NCP @VM01034 00405000
- SPACE 2 00406000
- RNDEXIT EQU * @V200820 00407000
- ST R2,SAVER2 PASS BACK RETURN CODE IN GR2 @V200820 00408000
- LTR R2,R2 SET CONDITION CODE ACCORDINGLY @V200820 00409000
- EXIT , RETURN TO CALLER @V200820 00410000
- DROP R13 @V200820 00411000
- SPACE 3 00412000
- *---------------------------------------------------------------------* 00413000
- * THE THREE SUBROUTINES 'CTLTASK', 'STKCPEX', AND 'TAGTASK' * 00414000
- * MUST NOT ADDRESS ANY FIELDS IN THE SECOND 4096 BYTES OF * 00415000
- * DMKRNH. THESE ARE USED BY 'DMKRNHND' WHICH HAS LIMITED * 00416000
- * ADDRESSABILITY RANGE DUE TO THE SAVEAREA REGISTER, GR13. * 00417000
- *---------------------------------------------------------------------* 00418000
- SPACE 00419000
- CTLTASK EQU * ALLOCATE AND QUEUE CONTROL TASK @V200820 00420000
- LA R0,CONTSIZE SIZE OF A BASIC CONTASK @V200820 00421000
- CTLTASZ EQU * ENTER HERE FOR A LARGER TASK @V200820 00422000
- CALL DMKFREE GET SOME FREE STORAGE @V200820 00423000
- XC 0(CONTSIZE*8,R1),0(R1) CLEAR THE HEADER @V200820 00424000
- LR R6,R1 ADDRESS VIA GR6 @V200820 00425000
- STH R0,CONTSKSZ SET THE TASK SIZE FOR LATER FRET @V200820 00426000
- L R1,NICUSER VMBLOK OF RESOURCE OWNER @V200820 00427000
- ST R1,CONUSER . . . @V200820 00428000
- MVI CONSTAT,CONCNTL THIS IS A CONTROL TASK @V200820 00429000
- L R1,NICQPNT CURRENT CONTASK CHAIN @V200820 00430000
- ST R6,NICQPNT PUT THIS TASK FIRST @V200820 00431000
- ST R1,CONPNT . . . @V200820 00432000
- BR R7 RETURN @V200820 00433000
- EJECT 00434000
- TAGTASK EQU * FILL IN CONRTAG, CONSRID FIELDS @V200820 00435000
- LH R1,CONSTAT PICK UP STATUS AND PARM FLAGS @V200820 00436000
- STH R1,CONSRID RECORD THEM IN THE BTU ITSELF @V200820 00437000
- LA R1,CONSRID START FOR DATA TRANSFER @V200820 00438000
- ST R1,CONADDR SET FOR CCW BUILD @V200820 00439000
- LH R1,NICNAME RESOURCE I.D. FROM NICBLOK @V200820 00440000
- STH R1,CONDEST ...SET FOR THE NCP @V200820 00441000
- LH R1,CONDCNT DATA LENGTH . . . @V200820 00442000
- LA R1,CONDATA-CONSRID(,R1) ADD LENGTH OF THE BTU @V200820 00443000
- STH R1,CONCNT SET FOR CCW BUILD @V200820 00444000
- L R1,DMKRNHTG REQUEST TAG FOR RESPONSE BTU'S @V200820 00445000
- LA R1,1(0,R1) @V200820 00446000
- N R1,XRIGHT16 USE ONLY 16 BITS @V200820 00447000
- BNZ *+8 NEVER LET THE TAG BE ZERO @V200820 00448000
- LA R1,1(0,0) ... @V200820 00449000
- ST R1,DMKRNHTG @V200820 00450000
- STH R1,CONRTAG TAG CONTASK FOR LATER RETRIEVAL @V200820 00451000
- BR R7 @V200820 00452000
- SPACE 2 00453000
- STKCPEX EQU * BUILD AND STACK A CPEXBLOK @V200820 00454000
- LA R0,CPEXSIZE @V200820 00455000
- CALL DMKFREE GET SOME FREE STORAGE @V200820 00456000
- USING CPEXBLOK,R1 @V200820 00457000
- XC CPEXBLOK(16),CPEXBLOK CLEAR THE HEADER @V200820 00458000
- LR R15,R4 EXECUTION ADDRESS TO GR15 @V200820 00459000
- STM R15,R14,CPEXADD SET CPEXADD, REGISTERS @V200820 00460000
- CALL DMKSTKCP STACK THE BLOCK FOR LATER @V200820 00461000
- BR R7 RETURN @V200820 00462000
- ********************************************************************* 00463100
- * SUBROUTINE TO SWITCH FROM VMBLOK(R11) TO VMBLOK(R1) 00463200
- * INCLUDES VMTTIME AND VMBLOK-LOCK MANIPULATION FOR APU-SUPPORT 00463300
- * CALLED BY BAL R7 AND MODIFIES R-0,14, AND 15 00463400
- ********************************************************************* 00463500
- SWITCHVM EQU * @V407593 00463600
- SWTCHVM @V407593 00463700
- BR R7 AND RETURN TO CALLER. @V407593 00463800
- SWITCH2 DS 0H @V407508 00463900
- SWTCHVM OPT=UNLOCK @V407508 00464000
- BR R7 RETURN TO CALLER @V407508 00464100
- DMKRNHTG DC F'0' BTU REQUEST TAG SOURCE FIELD @V200820 00466000
- LTORG LOCAL LITERAL POOL FOR DMKRNHND @V200820 00467000
- EJECT 00468000
- USING DMKRNH,R12,R13 RE-ESTABLISH ADDRESSABILITY @V200820 00469000
- RNSTART DS 0H SEND REQUESTS TO THE 370X NCP @VM01034 00470000
- LM R12,R13,RNHBASE GET FULL ADDRESSABILITY @VM01034 00471000
- TM RDEVSTAT,RDEVNRDY+RDEVBUSY+RDEVSCED O.K. ? @VM01034 00472000
- BNZ STARTED NO -- @VM01034 00473000
- TM RDEVFLAG,RDEVWAIT+RDEVSLOW ACTIVE OR SLOW ? @VM01034 00474000
- BNZ STARTED YES -- EXIT NOW @VM01034 00475000
- L R9,RDEVNICL START OF NICBLOK LIST @V200820 00476000
- LA R2,NICSIZE*8 INCREMENT @V200820 00477000
- LH R3,RDEVMAX HIGHEST VALID RESOURCE I.D. @V200820 00478000
- MH R3,=AL2(NICSIZE*8) HIGHEST INDEX @V200820 00479000
- ALR R3,R9 GR3 = END ADDRESS LIMIT @V200820 00480000
- RNICLST EQU * SEARCH FOR WAITING CONTASK'S @V200820 00481000
- L R6,NICQPNT POINTER TO CONTASK CHAIN @V200820 00482000
- LTR R6,R6 ARE THERE ANY ? @V200820 00483000
- BNP RNEXLST NO -- @V200820 00484000
- TM NICSTAT,NICNTRL CONTROL OPERATION ACTIVE ? @V200820 00485000
- BZ RNCHAIN NO -- CHECK ACTIVE CONTASK @V200820 00486000
- RNEXLST EQU * ADVANCE THROUGH THE NICLIST @V200820 00487000
- BXLE R9,R2,RNICLST . . . @V200820 00488000
- SPACE 00489000
- LTR R10,R10 DO WE HAVE AN IOBLOK ? @V200820 00490000
- BZ STARTED NO -- OBVIOUSLY NOTHING TO DO @VM01034 00491000
- LH R1,IOBRCNT COUNT OF TASKS ON THIS IOBLOK @V200820 00492000
- AL R1,NTSKOUT ADD TO NUMBER OF TASKS SENT @V200820 00493000
- ST R1,NTSKOUT . . . @V200820 00494000
- SLR R9,R9 NO IOBLOK AFTER THE START @V200820 00495000
- STH R9,IOBRCNT CLEAR THE RETRY COUNT FOR I/O @V200820 00496000
- BAL R7,RNGORED START I/O VIA DMKIOSQR @VM01034 00497000
- STARTED EQU * EXIT TO THE DISPATCHER @VM01034 00498000
- GOTO DMKDSPCH . . . @VM01034 00499000
- SPACE 00500000
- RNGORED EQU * @V200820 00501000
- LR R2,R7 SAVE RETURN ACROSS NEXT CALL @V200820 00502000
- BAL R7,FRETIOER RELEASE ANY EXISTING IOERBLOK @V200820 00503000
- LR R7,R2 RECOVER RETURN ADDRESS @V200820 00504000
- LA R2,DMKRNHIN INTERRUPT RETURN ADDRESS @V200820 00505000
- ST R2,IOBIRA SET IN IOBLOK @V200820 00506000
- L R2,ASYSVM SYSTEM VMBLOK IS THE USER @V200820 00507000
- ST R2,IOBUSER ... @V200820 00508000
- MVI IOBSTAT,X'00' CLEAR OUT IOBLOK STATUS BYTE @V200820 00509000
- MVI IOBSPEC,X'00' NO SPECIAL REQUESTS @V240820 00510000
- NI IOBFLAG,IOBCP+IOBRSTRT LEAVE ONLY THESE BITS @V200820 00511000
- SWITCH CONTINUE ON I/O PROCESSOR @V407508 00511100
- OI RDEVFLAG,RDEVWAIT DEVICE IS NOW ACTIVE @V200820 00512000
- CALL DMKIOSQR QUEUE REAL I/O FOR SYSTEM @V200820 00513000
- LR R10,R9 SET IOBLOK REG FROM GR9 @V200820 00514000
- BR R7 RETURN @V200820 00515000
- EJECT 00516000
- RNCHAIN EQU * CHECK FOR ACTIVE TASKS @V200820 00517000
- TM NICSTAT,NICERLK IS THE ERROR LOCK SET ? @V200820 00518000
- BZ RNICHN0 NO -- CHECK FOR ACTIVE TASKS@V200820 00519000
- NI NICSTAT,255-NICERLK ERROR LOCK WILL BE RESET @VA01914 00520000
- TM NICTYPE,NICTERM IS THIS A DEVICE RESOURCE ? @VA01914 00521000
- BZ RNICHN0 NO -- NO BTU IS REQUIRED @VA01914 00522000
- BAL R7,CTLTASK GET A CONTASK @V200820 00523000
- LA R0,CRESERL ...TO RESET THE ERROR LOCK @V200820 00524000
- STH R0,CONTCMD . . . @V200820 00525000
- BAL R7,TAGTASK FILL IT IN. . . @V200820 00526000
- B RNICHN1 CHAIN IT IN RIGHT NOW @V200820 00527000
- SPACE 00528000
- RNICHN0 EQU * @V200820 00529000
- TM CONSTAT,CONACTV IS THE TOP TASK ACTIVE ? @V200820 00530000
- BZ RNICHN1 NO -- SEND IT OVER NOW @V200820 00531000
- TM CONSTAT,CONOUTPT+CONCNTL INPUT TASK ACTIVE ? @V200820 00532000
- BNZ RNEXLST NO -- SKIP THIS LINE @V200820 00533000
- L R1,CONPNT CHECK THE NEXT TASK @V200820 00534000
- LTR R1,R1 MAKE SURE THERE IS ONE @V200820 00535000
- BNP RNEXLST NO -- CONTINUE @V200820 00536000
- TM CONPARM-CONTASK(R1),PRIORITY BREAK NEEDED ? @V200820 00537000
- BZ RNEXLST NO -- SKIP @V200820 00538000
- BAL R7,CTLTASK GET A CONTROL TASK @V200820 00539000
- LA R0,CRESCND RESET CONDITIONAL @V200820 00540000
- STH R0,CONTCMD ...TO FORCE TERMINAL BREAK @V200820 00541000
- BAL R7,TAGTASK ...SEND IT OVER NOW @V200820 00542000
- B RNICHN2 ... @V200820 00543000
- SPACE 00544000
- RNICHN1 EQU * CHAIN CONTASK'S VIA CCW STRING @V200820 00545000
- TM CONSTAT,CONSYNC SYNCHRONIZATION CONTASK ? @V200820 00546000
- BZ RNICHN2 NO -- @V200820 00547000
- L R1,CONPNT REMOVE IT FROM THE CHAIN @V200820 00548000
- ST R1,NICQPNT . . . @V200820 00549000
- XC CONPNT(4),CONPNT CLEAR THE FORWARD POINTER @V200820 00550000
- CALL DMKQCNET RETURN IT TO DMKQCN @V200820 00551000
- B RNICLST RETRY FROM THE TOP @V200820 00552000
- SPACE 00553000
- RNICHN2 EQU * @V200820 00554000
- LTR R10,R10 DO WE ALREADY HAVE AN IOBLOK ? @V200820 00555000
- BP RNICHN3 YES -- @V200820 00556000
- LA R0,IOBSIZE @V200820 00557000
- CALL DMKFREE GET FREE STORAGE FOR AN IOBLOK @V200820 00558000
- LR R10,R1 @V200820 00559000
- XC 0(IOBSIZE*8,R10),0(R10) CLEAR IT @V200820 00560000
- L R1,NWRITES NUMBER OF WRITE IOBLOK'S BUILT @V200820 00561000
- AL R1,F1 INCREMENT . . . @V200820 00562000
- ST R1,NWRITES . . . @V200820 00563000
- * B RNICHN3 @V200820 00564000
- EJECT 00565000
- RNICHN3 EQU * BUILD CCW STRING FOR WRITE @V200820 00566000
- MVI IOBMISC2,X'01' FLAG IOBLOK AS WRITE STRING @V200820 00567000
- MVI CONCOMND,WRITBRK USE WRITBRK FOR LAST TASK @V200820 00568000
- MVI CONFLAG,CC+SILI CHAIN, NO IL @V200820 00569000
- MVC CONCCW2(8),NOPCCW END WITH A NO-OP @V200820 00570000
- OI CONSTAT,CONACTV THIS TASK IS ACTIVE @V200820 00571000
- LA R1,CONCCW1 START OF CCW STRING @V200820 00572000
- L R4,IOBMISC POINTER TO LAST TASK, IF ANY @V200820 00573000
- LTR R4,R4 ARE THERE ANY ? @V200820 00574000
- BP RNICHN4 YES -- ADD TO THE STRING @V200820 00575000
- ST R1,IOBCAW SET THE CAW @V200820 00576000
- MVI IOBRCNT+1,1 ...AND THE TASK COUNT @V200820 00577000
- B RNICHN5 CONTINUE WITH THIS NICBLOK @V200820 00578000
- SPACE 2 00579000
- RNICHN4 EQU * ADD TO EXISTING CCW STRING @V200820 00580000
- MVI CONCOMND-CONTASK(R4),X'01' WRITBRK TO WRITE @V200820 00581000
- ST R1,CONCCW2-CONTASK(,R4) DATA ADDRESS TO NO-OP @V200820 00582000
- MVI CONCCW2-CONTASK(R4),X'08' MAKE IT A 'TIC' @V200820 00583000
- LH R1,IOBRCNT ADJUST THE TASK COUNT @V200820 00584000
- LA R1,1(0,R1) . . . @V200820 00585000
- STH R1,IOBRCNT RESET TASK COUNTER @V200820 00586000
- SPACE 00587000
- RNICHN5 EQU * CHECK FOR OTHERS ON THIS BLOCK @V200820 00588000
- ST R6,IOBMISC THIS IS NOW THE LAST TASK @V200820 00589000
- B RNEXLST . . . @VM08791 00590000
- EJECT 00591000
- *. 00592000
- * SUBROUTINE NAME - 00593000
- * 00594000
- * DMKRNHIN 00595000
- * 00596000
- * FUNCTION - 00597000
- * 00598000
- * DMKRNHIN IS THE SECONDARY INTERRUPT HANDLER FOR THE 00599000
- * 3704 AND 3705 COMMUNICATIONS CONTROLLERS, PRIMARILY 00600000
- * WHEN THEY ARE OPERATING IN NETWORK CONTROL PROGRAM 00601000
- * OR PARTITIONED EMULATION PROGRAM MODE. 00602000
- * 00603000
- * ATTRIBUTES - 00604000
- * 00605000
- * RE-ENTRANT, RESIDENT, ENTERED VIA IOBLOK UNSTACK 00606000
- * 00607000
- * ENTRY CONDITIONS - 00608000
- * 00609000
- * GR12 = ADDRESS OF DMKRNHIN 00610000
- * GR11 = ADDRESS OF THE SYSTEM VMBLOK 00611000
- * GR10 = ADDRESS OF THE UNSTACKED IOBLOK 00612000
- * 00613000
- * EXIT CONDITIONS - 00614000
- * 00615000
- * EXIT IS MADE VIA GOTO DMKDSPCH 00616000
- * 00617000
- * CALLS TO OTHER ROUTINES - 00618000
- * 00619000
- * DMKFREE - TO ALLOCATE FREE STORAGE FOR CONTASK'S 00620000
- * DMKFRET - TO RETURN PREVIOUSLY ALLOCATED STORAGE 00621000
- * DMKIOSQR - TO INITIATE I/O TO THE 370X 00622000
- * DMKCVTBH - TO CONVERT REAL ADDRESSES FOR MESSAGES 00623000
- * DMKSCNRU - TO LOCATE RCHBLOK, RCUBLOK, RDEVBLOK 00624000
- * DMKQCNCL - TO FLUSH CONTASK STACK IN CASE OF ERROR 00625000
- * DMKQCNET - TO RETURN COMPLETED CONTASK'S TO DMKQCN 00626000
- * DMKQCNTO - TO FORCE A DISCONNECT IN CASE OF LINE ERROR 00627000
- * DMKQCNWT - TO WRITE ERROR MESSAGES TO THE OPERATOR 00628000
- * DMKCNSED - TO PERFORM EDITING AND TRANSLATION ON INPUT 00629000
- * DMKERMSG - TO SEND ERROR MESSAGES TO THE OPERATOR 00630000
- * DMKCVTDT - TO TIME-STAMP TRACE OUTPUT 00631000
- * DMKVSPRT - TO SPOOL TRACE OUTPUT TO A VIRTUAL PRINTER 00632000
- * DMKSCNAU - TO INSURE THAT THE TRACING USER IS CORRECT 00633000
- * DMKCFMBK - TO PLACE A V.M. IN CONSOLE FUNCTION MODE 00634000
- * DMKCFMAT - TO SIMULATE A VIRTUAL CONSOLE STTENTION 00635000
- * DMKBLDVM - TO BUILD A VMBLOK FOR A NEW USER 00636000
- * DMKNLEMP - TO TAKE A STORAGE DUMP OF THE 370X 00637100
- * DMKNLDR - TO RE-LOAD THE 370X FOLLOWING THE DUMP 00638000
- * DMKIOERN - TO RECORD ERROR RECORDS FROM THE 370X NCP 00639000
- * DMKSTKCP - TO STACK CPEXBLOK'S FOR SERIALIZING REQUESTS 00640000
- * 00641000
- * EXTERNAL REFERENCES - 00642000
- * 00643000
- * DMKSYSVM - ADDRESS OF THE SYSTEM VMBLOK 00644000
- * DMKRIORN - TABLE OF 370X CONTROLLER'S 00645000
- * 00646000
- * TABLES / WORK AREAS - NONE 00647000
- * 00648000
- * NOTES - 00649000
- * 00650000
- * THIS MODULE HAS BEEN CREATED TO SUPPORT THE NETWORK 00651000
- * CONTROL PROGRAM FOR OS/VS, RELEASE 2.1, AS WELL AS 00652000
- * THE NETWORK CONTROL PROGRAM INTERFACE OF THE PARTITIONED 00653000
- * EMULATION PROGRAM OF THE SAME LEVEL. ANY OTHER LEVEL 00654000
- * OF THE 370X CONTROL PROGRAM WILL NOT OPERATE CORRECTLY. 00655000
- * 00656000
- * REGISTER USAGE - 00657000
- * 00658000
- * GR14,15 LINKAGE REGISTERS 00659000
- * GR12,13 MODULE BASE REGISTERS 00660000
- * GR11 = ADDRESS OF THE SYSTEM VMBLOK (DMKSYSVM) 00661000
- * GR10 = ADDRESS OF THE ACTIVE IOBLOK 00662000
- * GR 9 = ADDRESS OF THE AFFECTED NICBLOK (IF ANY) 00663000
- * GR 8 = RDEVBLOK ADDRESSABILITY 00664000
- * GR 7 = INTERNAL LINKAGE REGISTER 00665000
- * GR 6 = CONTASK ADDRESSABILITY 00666000
- * GR0-5= WORK REGISTERS 00667000
- * 00668000
- * OPERATION - 00669000
- * 00670000
- * 1. IF THE INTERRUPTING DEVICE IS NOT A 370X, EXIT. 00671000
- * 00672000
- * 2. IF ANY CHANNEL-LEVEL ERRORS WERE INCLUDED IN THE 00673000
- * STATUS, DO THE FOLLOWING: 00674000
- * PCI, IL, PRGC, PRTC, CHC -> RNH001 ABEND 00675000
- * CDC - READ - RETRY SIXTEEN TIMES, THEN: 00676000
- * ALL OTHERS - ATTEMPT TO DUMP AND RE-LOAD THE 370X 00677000
- * 00678000
- * 3. IF A UNIT CHECK WAS PRESENTED, AND IPLREQ OR INTREQ 00679000
- * WAS INCLUDED IN THE STATUS, ATTEMPT TO DUMP AND/OR 00680000
- * RE-LOAD THE 370X CONTROL PROGRAM. 00681000
- * 00682000
- * 4. IF THE 370X WAS NOT LOADED BY VM/370 (I.E. IF 00683000
- * 'RDEVRSVD' IS NOT SET), IGNORE THE INTERRUPT AND EXIT. 00684000
- * 00685000
- * 5. IF ATTENTION WAS INCLUDED IN THE STATUS, SCHEDULE 00686000
- * AND START A READ CHANNEL PROGRAM. 00687000
- * 00688000
- * 6. WRITE ENDING - IF UNIT EXCEPTION, RE-QUEUE REJECTED 00689000
- * CONTASK'S FOR LATER RE-SEND, SET RDEVSLOW (BUFFER 00690000
- * SLOWDOWN MODE), AND RETURN AND FINISHED TASKS TO 00691000
- * DMKQCNET, AS BELOW. 00692000
- * 00693000
- * IF WRITE COMPLETED O.K., RETURN TO DMKQCNET ALL 00694000
- * CONTASK'S WHICH DO NOT HAVE LOGDROP, LOGHOLD, 00695000
- * CONSPLT, OR CONRESP SET. RETAIN OTHERS ON THE NICBLOK. 00696000
- * 00697000
- EJECT 00698000
- * 7. READ ENDING - IF NO BTU RESPONSES WERE RECEIVED, 00699000
- * RELEASE THE BUFFERS AND EXIT. 00700000
- * 00701000
- * FOR EACH RESPONSE BTU, DECODE ACCORDING TO THE 00702000
- * COMMAND VALUE, AS FOLLOWS: 00703000
- * 00704000
- * READ - X'01' - FINAL RESPONSE, MOVE DATA FROM THE INPUT 00705000
- * BUFFERS TO CALLER'S BUFFER (SPECIFIED IN SAVER0, 00706000
- * SAVER1 OF THE RESPONSE SAVEAREA). IF ATTENTION HIT 00707000
- * DURING READ, PERFORM ATTENTION HANDLING BEFORE 00708000
- * RETURNING THE TASK TO DMKQCNET. CALL DMKCNSED TO 00709000
- * PERFORM ANY EDITING OR TRANSLATION ON THE INPUT DATA. 00710000
- * IF EDITING REDUCES THE INPUT COUNT TO ZERO, RETRY 00711000
- * THE READ OPERATION. IF A NULL LINE IS ENTERED IN 00712000
- * RESPONSE TO AN INHIBIT READ, TURN OFF NICPSUP, TYPE 00713000
- * A MASKING STRING, AND RE-ISSUE THE READ TASK. 00714000
- * 00715000
- * WRITE - X'02' - FINAL RESPONSE, RETURN THE TASK TO 00716000
- * DMKQCNET. IF ATTENTION WAS HIT DURING THE WRITE, 00717000
- * PERFORM ATTENTION HANDLING FIRST, SETTING THE 00718000
- * APPROPRIATE RETURN CODE IN THE SAVEAREA (IN ANY). 00719000
- * IF THE COMMAND MODIFIER WAS WRITEOT, BUILD A CONTROL 00720000
- * CONTASK TO ISSUE DISCEOC COMMAND. IF THE MODIFIER 00721000
- * WAS WRITDSC, BUILD A CONTROL TASK TO RE-ENABLE THE 00722000
- * TERMINAL. 00723000
- * 00724000
- * TEST, RESTART, INVITE - NOT USED -> RNH002 ABEND 00725000
- * 00726000
- * CONTACT - X'06' - INITIAL RESPONSE (MTA DEVICE IDEN- 00727000
- * TIFIED), SET NICTYPE ACCORDING TO FLAG RETURNED, 00728000
- * WAIT FOR FINAL RESPONSE. FINAL RESPONSE, BUILD A 00729000
- * CONTROL CONTASK TO WRITE 'VM/370 ONLINE' MESSAGE. 00730000
- * BUILD ANOTHER CONTROL TASK AHEAD OF THE WRITE TO 00731000
- * ISSUE CCDESMD COMMAND. 00732000
- * 00733000
- * DISCONNECT - X'07' - FINAL RESPONSE, RE-ENABLE THE 00734000
- * DEVICE UNLESS NICDISB IS SET. 00735000
- * 00736000
- * CONTROL - X'08' - DECODE ACCORDING TO MODIFIER: 00737000
- * CRESERL - TURN OFF NICERLK, CONTINUE. 00738000
- * CCDESMD - BUILD CONTASK TO ISSUE CSETDSM TO ENABLE 00739000
- * MONITOR MODE HANDLING (ATTENTIONS). 00740000
- * CACTDEV - IF NICENAB IS SET, ISSUE RE-ENABLE. 00741000
- * ALL OTHERS - ASSUME COMMAND IS COMPLETE. 00742000
- * 00743000
- EJECT 00744000
- * UNSOLICITED RESPONSES - COMMAND = X'77': 00745000
- * 00746000
- * ENTER SLOWDOWN MODE - TURN ON RDEVSLOW. 00747000
- * EXIT SLOWDOWN MODE - TURN OFF RDEVSLOW. 00748000
- * DEVICE ASSOCIATION - IGNORE 00749000
- * HOST LOGGING - IGNORE 00750000
- * MISC. DATA RECORD - STACK CPEXBLOK TO CALL DMKIOERN. 00751000
- * IPL COMPLETE - TURN OFF RDEVRSVD, RDEVNRDY, RDEVRCVY, 00752000
- * RDEVSLOW, RDEVWAIT. IF A CKPBLOK EXISTS, RE-ENABLE 00753000
- * ALL DEVICES WHICH WERE PREVIOUSLY ENABLED. 00754000
- * ATTENTION - EITHER CALL DMKCFMBK, DMKCFMAT, OR DMKBLDVM 00755000
- * ACCORDING TO SETTINGS IN VMMLEVEL OR NICUSER. 00756000
- * TERMINAL POWER-OFF - CLEAN UP CONTASK CHAIN, CALL 00757000
- * DMKQCNTO TO DISCONNECT ANY ACTIVE USER, RE-ENABLE. 00758000
- * ALL OTHERS - CONSIDERED FATAL - DUMP AND RE-LOAD 370X. 00759000
- * 00760000
- * ERROR MESSAGES - 00761000
- * 00762000
- * DMKRNH454I DEV XXXX DISABLED 00763000
- * DMKRNH462I CTLR XXX UNIT CHECK; IPL REQUIRED 00764000
- * DMKRNH463I CTLR XXX UNIT CHECK; RESTART IN PROGRESS 00765000
- * DMKRNH464I CTLR XXX CC = 3; DEPRESS 370X "LOAD" BUTTON 00766000
- * DMKRNH465I LINE TRACE TERMINATED DUE TO ERROR 00767000
- * DMKRNH468I CTLR XXX COMMUNICATIONS SCANNER FAILURE 00768000
- *. 00769000
- EJECT 00770000
- DROP R13 @V200820 00771000
- USING DMKRNHIN,R12 @V200820 00772000
- DMKRNHIN DS 0D INTERRUPT ENTRY FOR 3704/3705 I/O@V200820 00773000
- LM R12,R13,RNHBASE SETUP MODULE ADDRESSABILITY @V200820 00774000
- USING DMKRNH,R12,R13 @V200820 00775000
- SPACE 00776000
- LH R1,IOBRADD REAL DEVICE ADDRESS OF 3705 @V200820 00777000
- CALL DMKSCNRU GET THE RDEVBLOK ADDRESS @V200820 00778000
- LA R1,CLASSPEC*256+TYP3705 DEVICE CLASS, TYPE @V200820 00779000
- CH R1,RDEVTYPC IS THIS A 3705 ? @V200820 00780000
- BNE RNIGNOR NO -- THROW AWAY INTERRUPT @V200820 00781000
- SPACE 00782000
- SWITCH CONTINUE ON I/O PROCESSOR @V407508 00782100
- CLI IOBCSW+5,X'00' ANY CHANNEL STATUS PRESENT ?@V200820 00783000
- BNE RNIOERR YES - THAT IS UNUSUAL @V200820 00784000
- TM IOBCSW+4,UC WAS THERE A UNIT CHECK ? @V200820 00785000
- BZ RNOUNIT NO -- THAT'S JUST AS WELL @V200820 00786000
- L R1,IOBIOER PICK UP THE IOERBLOK ADDRESS @V200820 00787000
- USING IOERBLOK,R1 @V200820 00788000
- TM IOERDATA,INTREQ+IPLREQ IS NCP STILL ALIVE ? @V200820 00789000
- BNZ RNFATAL NO -- CONVULSE A BIT @V200820 00790000
- TM IOERDATA,ABORT THIS SHOULD BE IT @V200820 00791000
- BZ RNIOEUC OOPS -- GO TAKE ANOTHER LOOK@V200820 00792000
- CLI IOBMISC2,X'01' WAS THIS A WRITE STRING ? @V200820 00793000
- BNE RNFATAL NO -- FATAL FOR A READ @V200820 00794000
- TM IOBCSW+4,ATTN ATTENTION INCLUDED WITH WRITE ? @V200820 00795000
- BZ RNSLOWDN NO -- JUST ENTER SLOWDOWN MODE @VM01040 00796000
- BAL R7,SCHREAD SCHEDULE A READ SEQUENCE FIRST @V200820 00797000
- B RNSLOWDN THEN ENTER BUFFER SLOWDOWN MODE @V200820 00798000
- DROP R1 @V200820 00799000
- EJECT 00800000
- RNOUNIT EQU * NO UNIT CHECK PRESENT @V200820 00801000
- TM RDEVSTAT,RDEVRSVD 370X IN USE BY VM/370 ? @VM08593 00802000
- BZ RNCLEAN NO -- CLEAN UP AND EXIT @VM08593 00803000
- TM IOBCSW+4,ATTN READ REQUESTED BY THE NCP ? @V200820 00804000
- BZ RNOREAD NO -- JUST CONTINUE @V200820 00805000
- LA R7,GODSPCH RETURN FROM READ IF UNSOLICITED @V200820 00806000
- TM IOBSPEC,IOBUNSL UNSOLICITED ATTENTION ? @V200820 00807000
- BO SCHRCCW YES - RE-USE THIS IOBLOK @V200820 00808000
- BAL R7,SCHREAD BUILD SEPARATE IOBLOK FOR READ @V200820 00809000
- SPACE 2 00810000
- RNOREAD EQU * INTERPRET INTERRUPT STATUS @V200820 00811000
- CL R10,IOBLINK IS THIS A COPIED IOBLOK ? @VM08788 00812000
- BNE RNIGNOR YES - WAIT FOR FINAL INTERRUPT @VM08788 00813000
- TM IOBSPEC,IOBUNSL UNSOLICITED INTERRUPT ? @V240820 00814000
- BO RNIGNOR YES - FORGET IT @V240820 00815000
- CLI IOBMISC2,X'02' IS THIS A READ CCW STRING ? @V200820 00816000
- BE PROCREAD YES - PROCESS FINAL STATUS @V200820 00817000
- TM IOBCSW+4,UE HAS 3705 ENTERED SLOWDOWN MODE ? @V200820 00818000
- BO RNSLOWDN YES - REQUEUE CONTASK'S FOR LATER@V200820 00819000
- TM IOBSTAT,IOBCC1 CC = 1 ON THE START I/O ? @V200820 00820000
- BZ RNWRTOK NO -- SHOULD BE NORMAL END @V200820 00821000
- CLI IOBCSW+4,ATTN+BUSY ATTN CLEARED BY START I/O ? @V200820 00822000
- BNE RNIOERR NO -- I DON'T UNDERSTAND @V200820 00823000
- B RNABORT RE-QUEUE CONTASKS FOR LATER @VM08809 00824000
- EJECT 00825000
- RNSLOWDN EQU * RE-QUEUE CONTASK'S FOR RETRY @V200820 00826000
- OI RDEVFLAG,RDEVSLOW NOW IN SLOWDOWN MODE @V200820 00827000
- RNABORT EQU * @VM08809 00828000
- L R2,IOBCAW INITIALIZE JUST IN CASE @V200820 00829000
- SLR R6,R6 . . . @V200820 00830000
- TM IOBSTAT,IOBCC1 STATUS ON THE START I/O ? @V200820 00831000
- BO RNRETRY YES - REQUEUE ALL OF THEM @V200820 00832000
- L R1,IOBCSW CCW ADDRESS FROM CSW @V200820 00833000
- SL R1,F8 BACK UP ONE CCW (KEY IS ZERO) @V200820 00834000
- CL R1,IOBCAW STOP ON THE FIRST TASK ? @V200820 00835000
- BE RNRETRY YES - RESET ALL OF THE TASKS @V200820 00836000
- * NOTE: CSW WILL ALWAYS POINT TO EITHER 'TIC' OR 'NO-OP' CCW 00837000
- LA R6,IOBCAW-(CONCCW2-CONCCW1) SEARCH START @V200820 00838000
- RNPARTL EQU * CHECK FOR SOME ACCEPTED, SOME NOT@V200820 00839000
- CLM R1,B'0111',CONCCW2+1-CONCCW1(R6) NEXT REJECTED ?@V200820 00840000
- BE RNPARTS YES --- @V200820 00841000
- ICM R6,B'0111',CONCCW2+1-CONCCW1(R6) NEXT TASK @V200820 00842000
- B RNPARTL CHAIN VIA THE TIC CCW'S @VM08809 00843000
- RNPARTS EQU * FOUND THE END OF ACCEPTED TASKS @V200820 00844000
- SH R6,=AL2(CONCCW1-CONTASK) BACK UP TO TASK START @V200820 00845000
- L R2,CONCCW2 POINTER TO NEXT CONTASK CCW @V200820 00846000
- MVC CONCCW2(8),NOPCCW MAKE THIS THE END @V200820 00847000
- LA R2,0(0,R2) STRIP OFF THE OP-CODE @V200820 00848000
- RNRETRY EQU * ALLOW RE-SCHEDULE FOR REJECTED TASKS @V200820 00849000
- L R0,NTSKREJ NUMBER OF TASKS REJECTED @V200820 00850000
- AL R0,F1 INCREMENT . . . @V200820 00851000
- ST R0,NTSKREJ . . . @V200820 00852000
- SH R2,=AL2(CONCCW1-CONTASK) BACK UP TO START @V200820 00853000
- NI CONSTAT-CONTASK(R2),255-CONACTV NOT ACTIVE @V200820 00854000
- ICM R2,B'0111',CONCCW2+1-CONTASK(R2) NEXT TASK @V200820 00855000
- BNZ RNRETRY CONTINUE UNTIL WE HIT 'NO-OP' CCW@V200820 00856000
- LTR R6,R6 WERE ANY ACCEPTED ? @V200820 00857000
- BP RNWRTOK YES - PROCESS FINISHED WRITE @VM08788 00858000
- SPACE 2 00859000
- RNIGNOR EQU * HERE TO IGNORE AN INTERRUPT @V200820 00860000
- BAL R7,FRETIOB RELEASE IOBLOK, IOERBLOK @V200820 00861000
- SPACE 00862000
- GODSPCH EQU * EXIT TO THE VM/370 DISPATCHER @V200820 00863000
- GOTO DMKDSPCH GO AWAY @V200820 00864000
- SPACE 2 00865000
- RNHBASE DS 0F MODULE BASE REGISTER VALUES @V200820 00866000
- DC A(DMKRNH,DMKRNH+4096) @V200820 00867000
- EJECT 00868000
- RNWRTOK EQU * WRITE HAS BEEN ACCEPTED BY 3705 @V200820 00869000
- NI RDEVFLAG,255-RDEVWAIT LET 370X START UP AGAIN@V200820 00870000
- SLR R0,R0 @V200820 00871000
- ST R0,IOBMISC USE IOBMISC FOR CHAIN ANCHOR @VM08809 00872000
- LA R7,IOBMISC-(CONPNT-CONTASK) . . . @VM08809 00873000
- L R6,IOBCAW START FOR CONTASK CHAIN SEARCH @V200820 00874000
- RNOUTPT EQU * PROCESS HALF-DONE CONTASK'S @V200820 00875000
- SH R6,=AL2(CONCCW1-CONTASK) BACK UP TO TASK START @V200820 00876000
- LH R9,CONDEST RESOURCE I.D. FOR THIS TASK @V200820 00877000
- MH R9,=AL2(NICSIZE*8) NICLIST INDEX @V200820 00878000
- AL R9,RDEVNICL GR9 = NICBLOK ADDRESS @V200820 00879000
- BAL R14,RNTRACE CHECK TRACING STATUS FOR THE BTU @VM01040 00880000
- TM CONSTAT,CONCNTL CONTROL CONTASK ? @VM08791 00881000
- BZ RNREQUE NO -- HANG ONTO ORIGINAL @VM08791 00882000
- OI NICSTAT,NICNTRL CONTROL TASK IS ACTIVE @VM01000 00883000
- TM CONSTAT,CONRESP+CONSPLT LEAVE IT ON NICBLOK ? @V200820 00884000
- BNZ RNREQUE YES --- @V200820 00885000
- L R1,CONPNT NEXT CONTASK FOR THIS INTERFACE @V200820 00886000
- ST R1,NICQPNT TAKE FIRST ONE OFF CHAIN @V200820 00887000
- ST R0,CONPNT CLEAR THE FORWARD TASK POINTER @V200820 00888000
- ST R6,CONPNT-CONTASK(,R7) CHAIN FOR RETURN @V200820 00889000
- LR R7,R6 . . . @V200820 00890000
- RNREQUE EQU * FOLLOW 'TIC' CHAIN FROM IOBCAW @V200820 00891000
- ICM R6,B'0111',CONCCW2+1 ADDRESS OF NEXT TASK @V200820 00892000
- BNZ RNOUTPT CONTINUE UNTIL WE HIT 'NO-OP' @V200820 00893000
- L R6,IOBMISC START OF RETURN CHAIN @VM08809 00894000
- RNRETRN EQU * RETURN FINISHED TASKS TO DMKQCN @V200820 00895000
- LTR R6,R6 WERE THERE ANY AT ALL ? @V200820 00896000
- BZ RNRESTR NO -- JUST TRY RESTART @V200820 00897000
- CALL DMKQCNET PROCESS FINISHED CONTASK'S @V200820 00898000
- RNRESTR EQU * RESTART WITH NEXT BATCH @V200820 00899000
- BAL R7,FRETIOB RELEASE THE CURRENT IOBLOK @VM01020 00900000
- B RNSTART START UP THE NCP AND EXIT @VM01034 00901000
- EJECT 00902000
- SCHREAD EQU * BUILD A READ PROGRAM AND START IT UP @V200820 00903000
- LR R9,R10 SAVE CURRENT GR10 VALUE @V200820 00904000
- LA R0,IOBSIZE @V200820 00905000
- CALL DMKFREE GET FREE STORAGE FOR AN IOBLOK @V200820 00906000
- LR R10,R1 @V200820 00907000
- SCHRCCW EQU * BUILD CCW BUFFER AND STRING @V200820 00908000
- XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IT @V200820 00909000
- LA R0,RDBUFNO+1 GET SPACE FOR READS + NO-OP @V200820 00910000
- CALL DMKFREE ... @V200820 00911000
- ST R1,IOBCAW SET CCW STRING START IN IOBLOK @V200820 00912000
- LA R0,(RDBUFLN/8)*RDBUFNO SIZE OF BUFFER BLOCK @VM08790 00913000
- CALL DMKFREE GET CONTIGUOUS BUFFER SPACE @VM08790 00914000
- L R2,IOBCAW START OF CCW BUFFER TO GR2 @VM08790 00915000
- L R3,=AL1(SILI+CC,0,0,RDBUFLN) SECOND CCW WORD @V200820 00916000
- LA R4,RDBUFNO GET THE RIGHT NO. OF BUFFERS @V200820 00917000
- SCHRBUF EQU * GET BUFFERS AND CONNECT TO CCW'S @V200820 00918000
- ST R1,0(0,R2) SET FIRST CCW DATA ADDRESS @V200820 00919000
- ST R3,4(0,R2) SET FLAGS, COUNT @V200820 00920000
- MVI 0(R2),X'02' SET OP-CODE @V200820 00921000
- LA R2,8(0,R2) NEXT CCW POSITION @V200820 00922000
- LA R1,RDBUFLN(0,R1) POINT TO NEXT BUFFER SLOT @VM08790 00923000
- BCT R4,SCHRBUF DO IT FOR SIX BUFFERS TOTAL @V200820 00924000
- MVC 0(8,R2),NOPCCW MOVE IN THE NO-OP CCW @V200820 00925000
- MVI IOBMISC2,X'02' FLAG THIS AS A READ IOBLOK @V200820 00926000
- L R1,NMREADS NUMBER OF READ IOBLOK'S BUILT @V200820 00927000
- AL R1,F1 INCREMENT . . . @V200820 00928000
- ST R1,NMREADS . . . @V200820 00929000
- B RNGORED SET IOBIRA, IOBUSER, START I/O @V200820 00930000
- EJECT 00931000
- PROCREAD EQU * PROCESS INCOMING BTU'S @V200820 00932000
- L R7,IOBCAW PICK UP POINTER TO CCW PACKAGE @V200820 00933000
- ST R7,IOBRCAW ...SET FOR LOOP PROCESSING @V200820 00934000
- LA R9,RNFATAL VECTOR IN CASE OF ERROR @V200820 00935000
- TM IOBSTAT,IOBCC3 IF THIS IS INITIAL STATUS...@V200820 00936000
- BNZ READFRT ...WE DID SOMETHING WRONG @V200820 00937000
- TM IOBCSW+4,UE+DE END OF READ SEQUENCE ? @V200820 00938000
- BO PROCRFIN YES - PROCESS INCOMING BTU'S@V200820 00939000
- TM IOBCSW+4,ATTN IF NOT THOSE, MUST BE AN ATTN @V200820 00940000
- BZ RNIOERR NO -- I DON'T UNDERSTAND @V200820 00941000
- PROCRFIN EQU * @V200820 00942000
- ICM R2,15,IOBCSW LOAD AND TEST FOR CCW ADDRESS @VM01034 00943000
- BZ RNIGNOR NO -- IGNORE THIS INTERRUPT @V200820 00944000
- SLR R2,R2 CLEAR COMPLETED TASK POINTER @V200820 00945000
- ST R2,IOBMISC ... @V200820 00946000
- LA R1,IOBMISC-(CONPNT-CONTASK) MAKE CHAINING EASY@V200820 00947000
- ST R1,IOBMISC2 ... @V200820 00948000
- SPACE 00949000
- READBUF EQU * HANDLE BTU'S INDIVIDUALLY @V200820 00950000
- LA R9,RNRETRN RETURN FROM 'READFRT' @V200820 00951000
- L R7,IOBRCAW PTR TO NEXT CCW FOR PROCESSING @V200820 00952000
- CLM R7,B'0111',IOBCSW+1 REACHED END OF CHAIN ? @V200820 00953000
- BNL READFRT YES - RELEASE BUFFERS @V200820 00954000
- L R1,NTASKRD NUMBER OF RESPONSES RECEIVED @V200820 00955000
- AL R1,F1 INCREMENT . . . @V200820 00956000
- ST R1,NTASKRD . . . @V200820 00957000
- L R6,0(0,R7) LOAD POINTER TO DUMMY CONTASK @V200820 00958000
- LA R6,0(0,R6) STRIP OFF THE CCW OP-CODE @VM01034 00959000
- LH R9,CONDEST RESOURCE ID FROM RETURNED BTU @V200820 00960000
- MH R9,=AL2(NICSIZE*8) COMPUTE NICLIST INDEX @V200820 00961000
- AL R9,RDEVNICL INDEX TO THE NICBLOK ITSELF @V200820 00962000
- TM CONSYSR,ERROR IS THIS AN ERROR RESPONSE ? @VM01040 00963000
- BZ *+8 NO -- CONTINUE @VM01040 00964000
- OI NICSTAT,NICERLK ERROR LOCK IS NOW SET @VM01040 00965000
- TM CONSRID,CONCNTL CONTROL TASK RESPONSE ? @VM01040 00966000
- BZ *+8 NO -- CONTINUE @VM01040 00967000
- NI NICSTAT,255-NICNTRL ASSUME TASK IS COMPLETE@VM01040 00968000
- BAL R14,RNTRACE CHECK TRACING STATUS FOR THE BTU @VM01040 00969000
- SPACE 00970000
- SLR R5,R5 CLEAR ORIGINAL CONTASK POINTER @VM01040 00971000
- CLI CONTCMD,X'77' UNSOLICITED RESPONSE FROM NCP ? @V200820 00972000
- BE UNSOLIT YES - PROCESS IT DIRECTLY @V200820 00973000
- LH R0,CONRTAG GET REQUEST TAG OF RETURNED TASK @V200820 00974000
- LA R2,NICQPNT-(CONPNT-CONTASK) SETUP FOR SEARCH @V200820 00975000
- L R5,NICQPNT FOR ORIGINAL TASK @V200820 00976000
- SPACE 00977000
- READRCV EQU * SEARCH NICBLOK LIST FOR MATCHING TASK @V200820 00978000
- LTR R5,R5 HAVE WE REACHED THE END ? @V200820 00979000
- BZ READNOM YES - THERE IS NO MATCH @V200820 00980000
- CH R0,CONRTAG-CONTASK(,R5) IS THIS THE ONE ? @V200820 00981000
- BE READCHN YES - PROCESS @V200820 00982000
- LR R2,R5 SAVE A BACK POINTER @V200820 00983000
- L R5,CONPNT-CONTASK(,R2) PICK UP NEXT TASK @V200820 00984000
- B READRCV @V200820 00985000
- EJECT 00986000
- READCHN EQU * @V200820 00987000
- L R1,CONPNT-CONTASK(,R5) REMOVE IT FROM CHAIN @V200820 00988000
- ST R1,CONPNT-CONTASK(,R2) ... @V200820 00989000
- NI CONSTAT-CONTASK(R5),255-(CONACTV+CONRTRY) @V200820 00990000
- SPACE 00991000
- *---------------------------------------------------------------------* 00992000
- * AT THIS POINT IN TIME: * 00993000
- * GR5 = ORIGINAL CONTASK BLOCK (IF AVAILABLE) * 00994000
- * GR6 = DUMMY CONTASK CONTAINING RESPONSE BTU * 00995000
- * GR7 = READ CCW FOR THIS BUFFER * 00996000
- * GR8 = RDEVBLOK ADDRESS * 00997000
- * GR9 = NICBLOK ADDRESS * 00998000
- *---------------------------------------------------------------------* 00999000
- SPACE 01000000
- READNOM EQU * PROCESS BTU ACCORDING TO COMMAND @V200820 01001000
- SLR R1,R1 @V200820 01002000
- IC R1,CONTCMD PICK UP BTU COMMAND FIELD @V200820 01003000
- SLL R1,2(0) CONVERT TO FULL-WORD INDEX @V200820 01004000
- ACTIONS B ACTIONS(R1) PROCESS ACCORDING TO COMMAND TYPE@V200820 01005000
- B CMPREAD '01' -- READ @V200820 01006000
- B CMPWRIT '02' -- WRITE @V200820 01007000
- B RNH2 '03' -- TEST - NOT USED @V200820 01008000
- B RNH2 '04' -- RESTART - NOT USED @V200820 01009000
- B RNH2 '05' -- INVITE - NOT USED @V200820 01010000
- B CMPCONT '06' -- CONTACT @V200820 01011000
- B DVCENAB '07' -- DISCONNECT @VM01040 01012000
- B CMPCNTL '08' -- CONTROL @V200820 01013000
- SPACE 3 01014000
- DMKRNHCT DS 0D STATISTICAL COUNTER BLOCK @V200820 01015000
- NWRITES DC F'0' NUMBER OF WRITE IOBLOK'S BUILT @V200820 01016000
- NTSKOUT DC F'0' NUMBER OF CONTASKS SENT TO 370X @V200820 01017000
- NTSKREJ DC F'0' NUMBER OF CONTASKS REJECTED @V200820 01018000
- NCONTSK DC F'0' NUMBER OF CONTASKS FROM DMKQCN @V200820 01019000
- NMREADS DC F'0' NUMBER OF READ IOBLOK'S BUILT @V200820 01020000
- NTASKRD DC F'0' NUMBER OF BTU RESPONSES READ @V200820 01021000
- NTSKCTL DC F'0' NUMBER OF CALLS TO DMKRNHND @V200820 01022000
- NMDRCRD DC F'0' NUMBER OF MDR RECORDS RECEIVED @V200820 01023000
- EJECT 01024000
- READFRT EQU * RELEASE READ BUFFERS, CCW'S @V200820 01025000
- L R7,IOBCAW FIRST CCW IN STRING @V200820 01026000
- L R1,0(0,R7) ADDRESS OF BUFFER BLOCK @VM08790 01027000
- LA R1,0(0,R1) ...MINUS THE OP-CODE @VM08790 01028000
- LA R0,(RDBUFLN/8)*RDBUFNO SIZE OF THE BLOCK @VM08790 01029000
- CALL DMKFRET RELEASE THE BUFFERS @VM08790 01030000
- LA R0,RDBUFNO+1 SIZE OF CCW PACKAGE @V200820 01031000
- LR R1,R7 START OF CCW PACKAGE FOR FRET @VM08790 01032000
- CALL DMKFRET @V200820 01033000
- L R6,IOBMISC PICK UP COMPLETED TASK POINTER @V200820 01034000
- NI RDEVFLAG,255-RDEVWAIT LET THE 3705 START NOW @V200820 01035000
- BR R9 GO WHERE INDICATED @V200820 01036000
- SPACE 2 01037000
- *>>>>>>>> INVALID I/O STATUS RECEIVED FROM THE 3705 01038000
- ABEND 1 DIVE ! DIVE ! DIVE ! @V200820 01039000
- *>>>>>>>> 01040000
- SPACE 2 01041000
- *>>>>>>>> INVALID OR IMPOSSIBLE BTU RESPONSE 01042000
- ABEND 2 YOU HAVE BEEN ASSESSED FOR STREET REPAIRS @V200820 01043000
- *>>>>>>>> 01044000
- SPACE 2 01045000
- BTUFRET EQU * IGNORE THIS BTU ENTIRELY @V200820 01046000
- L R7,IOBRCAW POINTER TO CURRENT CCW @V200820 01047000
- L R6,0(0,R7) ADDRESS OF FIRST BUFFER @V200820 01048000
- LA R7,8(0,R7) SKIP AT LEAST ONE CCW @V200820 01049000
- ST R7,IOBRCAW . . . @V200820 01050000
- LA R3,RDBUFLN-(CONDATA-CONTASK) FIRST DATA LENGTH @V200820 01051000
- BTUFREE EQU * @V200820 01052000
- CH R3,CONDCNT WAS MORE THAN ONE BUFFER USED ? @V200820 01053000
- BNL READBUF NO -- THIS ONE WILL BE FRET'ED LATER@V200820 01054000
- LA R3,RDBUFLN(0,R3) KEEP ADDING UNTIL WE HIT IT @V200820 01055000
- LA R7,8(0,R7) KEEP SKIPPING, ALSO @V200820 01056000
- ST R7,IOBRCAW . . . @V200820 01057000
- B BTUFREE @V200820 01058000
- EJECT 01059000
- CMPREAD EQU * PROCESS READ RESPONSES @V200820 01060000
- TM CONSRID,CONCNTL CONTROL READ (2741 BYPASS) ?@VM01034 01061000
- BO CTLREAD YES - SPECIAL HANDLING @VM01034 01062000
- LTR R5,R5 IS THERE AN ORIGINAL CONTASK ? @VA01977 01063000
- BNP BTUFRET NO -- IGNORE INVALID RESPONSE @VA01977 01064000
- TM CONSYSR,ERROR ERROR RESPONSE INDICATED ? @V200820 01065000
- BO READERR YES - CHECK IT OUT @V200820 01066000
- SLR R4,R4 SET ATTENTION COUNT TO ZERO @V200820 01067000
- BAL R14,CMPMOVE MOVE DATA, SET RETURN CODE @V200820 01068000
- OI CONSTAT,CONACTV+CONESCP SET FLAGS FOR CR,LF @VM08772 01069000
- LTR R0,R0 WERE ANY CHARACTERS RECEIVED ? @VM08772 01070000
- BNP CMPRD06A NO -- SEND NEW-LINE SEQUENCE @VM08809 01071000
- CLI 0(R1),X'15' LAST CHARACTER = NEW-LINE ? @VM08772 01072000
- BNE CMPRD04 NO -- CHECK FOR TWX ENDING CHARS @VM08772 01073000
- MVI 0(R1),X'00' CLEAR OUT THE NEW-LINE CHAR @VM08772 01074000
- BCTR R0,0 DECREMENT THE COUNT @VM08772 01075000
- NI CONSTAT,255-(CONACTV+CONESCP) CR,LF BOTH SEEN @VM08772 01076000
- B CMPRD06A GO SETUP FOR EDITING, ETC. @VM08772 01077000
- SPACE 01078000
- CMPRD04 EQU * CHECK FOR CR OR LF (CPT-TWX) @VM08772 01079000
- CLI 0(R1),X'25' LAST CHARACTER = LINE FEED ? @VM08772 01080000
- BNE CMPRD05 NO -- CHECK FOR 'CR' @VM08772 01081000
- NI CONSTAT,255-CONESCP LINE FEED PRESENT @VM08772 01082000
- MVI 0(R1),X'00' CLEAR IT FROM THE BUFFER @VM08772 01083000
- BCTR R1,0 BACK UP IN THE BUFFER @VM08772 01084000
- BCT R0,CMPRD05 DECREMENT AND TEST COUNT @VM08772 01085000
- B CMPRD06A ALL DONE IF COUNT = ZERO @VM08772 01086000
- SPACE 01087000
- CMPRD05 EQU * CHECK FOR STAND-ALONE 'CR' @VM08772 01088000
- CLI 0(R1),X'0D' LAST CHARACTER = CARRIER RETURN @VM08772 01089000
- BNE CMPRD06 NO -- GO SEE WHERE WE STAND @VM08772 01090000
- NI CONSTAT,255-CONACTV CARRIER RETURN DONE @VM08772 01091000
- MVI 0(R1),X'00' CLEAR IT FROM THE BUFFER @VM08772 01092000
- BCTR R1,0 BACK UP IN THE BUFFER @VM08772 01093000
- BCT R0,CMPRD04 SEARCH FOR 'CR,LF' OR 'LF,CR' @VM08772 01094000
- B CMPRD06A ALL DONE IF ZERO COUNT @VM08772 01095000
- SPACE 01096000
- CMPRD06 EQU * SEND ENDING CHARS IF NEEDED @VM08772 01097000
- CLI 0(R1),X'3C' TRANSLATED 'XOFF' CHARACTER ? @VM08772 01098000
- BNE CMPRD06A NO -- @VM08772 01099000
- MVI 0(R1),X'00' REMOVE CHARACTER FROM BUFFER @VM08772 01100000
- BCTR R1,0 BACK UP ONE IN THE BUFFER @VM08772 01101000
- BCT R0,CMPRD04 DECREMENT AND TEST COUNT @VM08772 01102000
- EJECT 01103000
- CMPRD06A EQU * FINAL SUMMARY OF ENDING CHARS @VM08772 01104000
- STH R0,CONCNT RESET INPUT DATA COUNT @VM08772 01105000
- TM CONSTAT,CONACTV+CONESCP ANYTHING EXTRA TO DO ? @VM08772 01106000
- BZ CMPEDIT NO -- JUST DO EDITING @VM08772 01107000
- LR R5,R6 SAVE READ CONTASK ADDRESS @VM08772 01108000
- LA R0,CONTSIZE+1 CONTROL CONTASK WITH DATA @VM08772 01109000
- BAL R7,CTLTASZ . . . @VM08772 01110000
- MVI CONSTAT,CONOUTPT+CONRTRY FIXED ORDER OUTPUT@VM08772 01111000
- LA R0,WRITNRM NORMAL WRITE COMMAND @VM08772 01112000
- STH R0,CONTCMD . . . @VM08772 01113000
- MVI CONDCNT+1,2 ASSUME BOTH CR,LF NEEDED @VM08772 01114000
- MVC CONDATA(2),=X'0D25' CPT-TWX 'CR', 'LF' @VM08772 01115000
- TM CONSTAT-CONTASK(R5),CONACTV+CONESCP BOTH ? @VM08772 01116000
- BO CMPRD07 YES - O.K. @VM08772 01117000
- MVI CONDCNT+1,1 ONLY ONE IS REQUIRED @VM08772 01118000
- TM CONSTAT-CONTASK(R5),CONACTV 'CR' NEEDED ? @VM08772 01119000
- BO CMPRD08 YES - IT'S FIRST @VM08772 01120000
- MVI CONDATA,X'25' SEND ONLY A LINE-FEED @VM08772 01121000
- B CMPRD08 @VM08772 01122000
- SPACE 01123000
- CMPRD07 EQU * @VM08772 01124000
- TM NICTYPE,NICTELE TELEGRAPH TERMINAL ? @VM08772 01125000
- BO CMPRD08 YES - CORRECT AS IS @VM08772 01126000
- MVI CONDCNT+1,1 ONLY ONE CHARACTER NEEDED @VM08772 01127000
- MVI CONDATA,X'15' SELECTRIC CARRIAGE RETURN @VM08772 01128000
- SPACE 01129000
- CMPRD08 EQU * SETUP FOR EDITING, ETC. @VM08772 01130000
- BAL R7,TAGTASK FILL IN BTU FIELDS, CCW DATA @VM08772 01131000
- LR R6,R5 READ TASK TO GR6 AGAIN @VM08772 01132000
- NI CONSTAT,255-(CONACTV+CONESCP) RESET FLAG BITS @VM08772 01133000
- B CMPEDIT GO HANDLE EDITING & TRANSLATION @VM08772 01134000
- SPACE 2 01135000
- CTLREAD EQU * CONTROL READ FOR NON-MTA LINES @VM01034 01136000
- CLI CONSYSR,X'F3' ATTENTION HIT ON INPUT ? @VM01034 01137000
- BE CMPCON2 YES - THAT'S FINE BY ME @VM01034 01138000
- TM CONSYSR,ERROR ANY OTHER ERROR RESPONSE ? @VM01034 01139000
- BO PWROFFS YES - DISCONNECT AND TRY AGAIN @VM01034 01140000
- TM CONSYSR,PHASE3 IS THIS THE LAST RESPONSE ? @VM01034 01141000
- BO CMPCON2 YES - CONTINUE WITH 'VM/370' MSG @VM01034 01142000
- B BTUFRET WAIT FOR THE FINAL RESPONSE @VM01034 01143000
- EJECT 01144000
- CMPMOVE EQU * MOVE READ DATA TO CALLER'S BUFFER@V200820 01145000
- * SINCE IT IS A READ, THERE IS A SAVE-AREA @V200820 01146000
- L R15,CONRETN-CONTASK(,R5) SAVEAREA ADDRESS @VM08790 01147000
- USING SAVEAREA,R15 @VM08790 01148000
- L R0,SAVER1 CALLER'S BUFFER ADDRESS @VM08790 01149000
- L R1,SAVER0 CALLER'S BUFFER LENGTH @VM08790 01150000
- ST R4,SAVER2 PASS BACK RETURN CODE @VM08790 01151000
- LA R2,CONDATA START OF RECEIVED DATA @VM08790 01152000
- LH R3,CONDCNT COUNT OF RECEIVED DATA @VM08790 01153000
- TM CONSTAT-CONTASK(R5),CONSPLT SUB-BLOCKED READ? @VM08790 01154000
- BZ CMPMOVA NO -- O.K. @VM01040 01155000
- L R0,CONADDR-CONTASK(,R5) LOAD RESIDUAL POINTER @VA04714 01156100
- LH R1,CONCNT-CONTASK(,R5) LOAD RESIDUAL LENGTH @VA04714 01156200
- CMPMOVA EQU * @VM01040 01158000
- LR R7,R1 SAVE DESTINATION COUNT @VM08790 01159000
- CR R1,R3 SOURCE OR DESTINATION CONTROL ? @VM08790 01160000
- BNH *+6 DESTINATION -- O.K. @VM08790 01161000
- LR R1,R3 USE THE SMALLER COUNT @VM08790 01162000
- MVCL R0,R2 MOVE DATA TO CALLER'S BUFFER @VM08790 01163000
- TM CONSYSR,PHASE3 WAS THAT THE LAST RESPONSE? @VM08790 01164000
- BO CMPMOVR YES - FILL IN CONTASK @VM08790 01165000
- SH R7,CONDCNT COMPUTE RESIDUAL COUNT @VM08790 01166000
- BP *+6 O.K. IF NOT NEGATIVE @VM08790 01167000
- SLR R7,R7 FORCE RESIDUAL COUNT TO ZERO @VM08790 01168000
- LR R6,R5 ORIGINAL CONTASK TO GR6 @VM08790 01169000
- STH R7,CONCNT SAVE THE RESIDUAL BUFFER COUNT @VM08790 01170000
- ST R0,CONADDR SAVE NEXT BUFFER POSITION @VM08790 01171000
- OI CONSTAT,CONACTV+CONRTRY+CONSPLT SUB-BLOCKING @VM08790 01172000
- BAL R7,TASKENQ RE-QUEUE THE ORIGINAL CONTASK @VM08790 01173000
- B BTUFRET WAIT FOR FINAL RESPONSE @VM08790 01174000
- SPACE 01175000
- CMPMOVR EQU * FINAL RESPONSE RECEIVED @VM08790 01176000
- LR R6,R5 ORIGINAL CONTASK TO GR6 @VM08790 01177000
- NI CONSTAT,255-CONSPLT TURN OFF SUB-BLOCKING @VM08790 01178000
- L R2,SAVER1 START OF USER'S BUFFER @VM08790 01179000
- ST R2,CONADDR PASS BACK FOR EDITING AND DMKQCN @VM08790 01180000
- LR R1,R0 GR1 = RESIDUAL BUFFER POINTER @VM08790 01181000
- SR R0,R2 GR0 = TOTAL COUNT RECEIVED @VM08790 01182000
- STH R0,CONCNT RETURN INPUT COUNT IN CONTASK @VM08790 01183000
- BNPR R14 RETURN IF NO DATA RECEIVED @VM08790 01184000
- BCTR R1,0 BACK UP TO LAST CHARACTER READ @VM08790 01185000
- BR R14 RETURN @V200820 01186000
- DROP R15 @VM08790 01187000
- EJECT 01188000
- CMPEDIT EQU * EDIT AND TRANSLATE IF DESIRED @V200820 01189000
- TM CONPARM,EDIT+UCASE ANY EDIT-TYPE STUFF TO DO ? @V200820 01190000
- BZ CMPRETN NO -- JUST RETURN TO DMKQCN @V200820 01191000
- LH R1,CONCNT CHECK FOR ZERO COUNT @V200820 01192000
- LTR R1,R1 ? ? ? @V200820 01193000
- BNP CMPEDIN YES - CHECK SPECIAL HANDLING @VM08679 01194000
- L R1,CONUSER SWITCH TO CONTASK OWNER VMBLOK @V407593 01195500
- BAL R7,SWITCH2 GO SWITCH IT @V407593 01196500
- CALL DMKCNSED EDIT THE TASK, AND/OR TRANSLATE @V200820 01198000
- CHARGE SWITCH,ASYSVM SWITCH TO THE SYSTEM VMBLOK @V407508 01199500
- TM CONSTAT,CONACTV ATTENTION HIT ON READ ? @VM08679 01202000
- BO CMPRETN YES - JUST RETURN THE TASK @VM08679 01203000
- LTR R3,R3 ZERO COUNT AFTER EDITING ? @VM08679 01204000
- BNZ CMPRETN NO -- RETURN TASK TO DMKQCN @V200820 01205000
- SPACE 01206000
- REPETRD EQU * REPEAT THE READ OPERATION @V200820 01207000
- BAL R7,TAGTASK REFRESH BTU FIELDS IN CONTASK @V200820 01208000
- OI CONSTAT,CONRTRY THIS IS A RETRY OPERATION @V200820 01209000
- BAL R7,TASKENQ RE-QUEUE THE CONTASK @V200820 01210000
- B BTUFRET PROCESS NEXT BTU, IF ANY @VM08790 01211000
- SPACE 2 01212000
- CMPEDIN EQU * TEST FOR INHIBIT MASK REQUEST @VM08679 01213000
- TM CONPARM,INHIBIT READ WITH INHIBIT ? @VM08679 01214000
- BZ CMPRETN NO -- JUST RETURN THE TASK @VM08679 01215000
- NI NICFLAG,255-NICPSUP PRINT SUPPRESS UNAVAILABLE @VM08679 01216000
- BAL R5,MASKING REBUILD TASKS FOR MASK WRITE @VM08679 01217000
- B BTUFRET CONTINUE . . . @VM08790 01218000
- SPACE 2 01219000
- READERR EQU * ERROR RESPONSE FROM READ COMMAND @V200820 01220000
- CLI CONSYSR,X'F3' ATTENTION ON THE READ ? @V200820 01221000
- BE READATN YES - SAVE THE INPUT DATA @V240820 01222000
- NI CONSTAT-CONTASK(R5),255-CONSPLT RESET FLAG @VA01913 01223000
- B BTUERRS CHECK OUT ERROR RESPONSE CODES @V240820 01224000
- SPACE 01225000
- READATN EQU * PROCESS ATTENTION ON INPUT @V240820 01226000
- BAL R14,TESTENV SET GR4 FOR ATTN HANDLING @V200820 01227000
- BAL R14,CMPMOVE MOVE ANY DATA TO CALLER'S BUFFER @V200820 01228000
- * B NCPATTN GO TYPE EXCLAMATION POINT, ETC. @V200820 01229000
- EJECT 01230000
- NCPATTN EQU * GENERAL ATTENTION PROCESSING @V200820 01231000
- OI NICFLAG,NICATTN NOW IN ATTENTION HANDLING @V200820 01232000
- LA R4,WRITNRM ASSUME NORMAL WRITE COMMAND @VM01015 01233000
- LTR R6,R5 IS THERE AN ORIGINAL TASK ? @V200820 01234000
- BNP NCPATTL NO -- JUST CONTINUE @V200820 01235000
- L R1,NICQPNT PUT THE ORIGINAL ON THE TOP @V200820 01236000
- ST R6,NICQPNT . . . @V200820 01237000
- ST R1,CONPNT WE WILL NEED THE TASK LATER @V200820 01238000
- OI CONSTAT,CONACTV IDENTIFY IT AS INTERRUPTED @V200820 01239000
- TM CONPARM,LOGDROP+LOGHOLD ATTN ON LAST WRITE ? @VM08673 01240000
- BZ NCPATTL NO -- O.K. @VM08673 01241000
- LA R4,WRITEOT WRITE END OF TRANSMISSION @VM01015 01242000
- NCPATTL EQU * BUILD TASK TO WRITE EXCLAMATION @V200820 01243000
- LA R0,CONTSIZE+1 SIZE NEEDED FOR CONTASK @VM01040 01244000
- BAL R7,CTLTASZ GET A CONTASK @V200820 01245000
- OI CONSTAT,CONSPLT HANG ONTO THE ORIGINAL @V200820 01246000
- STH R4,CONTCMD SET APPROPRIATE COMMAND @VM01015 01247000
- BAL R14,TESTENV SET ATTENTION CODE IN GR4 @VM08844 01248000
- STH R4,CONCCW3 SAVE THE ATTENTION CODE @V200820 01249000
- MVI CONDCNT+1,6 LENGTH FOR IDLES ONLY @V200820 01250000
- MVC CONDATA(6),=X'171717171717' SIX IDLES @V200820 01251000
- TM NICFLAG,NICATOF IS THIS STRING CORRECT ? @V200820 01252000
- BO NCPATTM YES - SET IT UP @V200820 01253000
- TM NICFLAG,NICSESN IS USER LOGGED ON YET ? @VM08593 01254000
- BZ NCPATTM NO -- SUPPRESS EXCLAMATION @VM08593 01255000
- MVI CONDCNT+1,8 LONGER STRING NEEDED @VM01040 01256000
- MVC CONDATA(8),=X'145A171717171517' @VM01040 01257000
- TM NICTYPE,NICTELE TELEGRAPH TERMINAL ? @V200820 01258000
- BZ NCPATTM NO -- O.K. AS IS @V200820 01259000
- MVC CONDATA(8),=X'5A171717170D2517' @VM01040 01260000
- NCPATTM EQU * @V200820 01261000
- BAL R7,TAGTASK FILL OUT THE TASK FOR LATER @V200820 01262000
- B BTUFRET CONTINUE FOR NOW @VM08790 01263000
- EJECT 01264000
- CMPWRIT EQU * OUTPUT TASK HAS COMPLETED @V200820 01265000
- TM CONSYSR,ERROR ERROR RESPONSE INDICATED ? @V200820 01266000
- BO WRITERR YES - CHECK IT OUT @V200820 01267000
- LTR R6,R5 WAS THERE AN ORIGINAL TASK ? @VM08790 01268000
- BNP BTUFRET NO -- @VM08790 01269000
- TM NICFLAG,NICATTN ATTENTION HANDLING NOW ? @V200820 01270000
- BZ CMPWRT1 NO -- CHECK FOR LOGDROP @VM08673 01271000
- NI NICFLAG,255-NICATTN ATTN HANDLING COMPLETE @V200820 01272000
- LH R4,CONCCW3 PICK UP ATTENTION CODE (4 OR 8) @V200820 01273000
- BAL R14,RETTASK DISPOSE OF THE ATTENTION TASK @V200820 01274000
- L R6,NICQPNT NEXT TASK ON THE CHAIN @V200820 01275000
- TM CONSTAT,CONACTV WAS A TASK INTERRUPTED ? @V200820 01276000
- BZ CNSATTN NO -- CHECK PROCEDURE @V200820 01277000
- L R1,CONPNT NEXT TASK AFTER INTERRUPTED ONE @V200820 01278000
- ST R1,NICQPNT REMOVE THE FINISHED TASK @V200820 01279000
- L R1,CONRETN THERE WILL BE A SAVEAREA @V200820 01280000
- ST R4,SAVER2-SAVEAREA(,R1) SET RETURN CODE @V200820 01281000
- TM CONSTAT,CONOUTPT+CONCNTL INPUT CONTASK ? @VM08679 01282000
- BZ CMPEDIT YES - CHECK FOR EDITING @VM08679 01283000
- LR R5,R6 MAKE SURE GR5 IS CORRECT @VM08809 01284000
- SPACE 01285000
- CMPWRT1 EQU * SCHEDULE DISCONNECT FOR LOGOFF @VM08673 01286000
- TM CONPARM,LOGDROP+LOGHOLD LAST WRITE MESSAGE ? @VM08673 01287000
- BZ CMPRETN NO -- JUST COMPLETE @VM08673 01288000
- LA R4,DISCEOC DISCON, END OF CALL (LOGDROP) @VM08673 01289000
- TM CONPARM,LOGDROP DROP THE PHONE LINE ? @VM08673 01290000
- BO CMPWRT2 YES - ALL SET @VM08673 01291000
- TM NICFLAG,NICDISB DROP THE LINE ANYWAY ? @VM08673 01292000
- BO CMPWRT2 YES -- @VM08673 01293000
- LA R4,DISCNCT SIMPLE DISCONNECT (LOGHOLD) @VM08673 01294000
- CMPWRT2 EQU * USER IS LOGGING OFF @VM08673 01295000
- L R7,RDEVCON GET CURRENT STACK POINTER @VA04253 01295100
- ST R5,RDEVCON LOGOFF CONTASK @VA04253 01295200
- L R1,NICQPNT ... REMAINING CONTASKS @VA04253 01295300
- ST R1,CONPNT-CONTASK(,R5) @VA04253 01295400
- SLR R1,R1 @VA04253 01295500
- ST R1,NICQPNT CLEAR NICBLOK STACK @VA04253 01295600
- CALL DMKQCNCL CLEAR CONTASKS @VA04253 01295700
- ST R7,RDEVCON RESTORE OLD STACK @VA04253 01295800
- ST R11,NICUSER RESET NICUSER TO SYSTEM VMBLOK @VM08673 01296000
- NI NICFLAG,255-(NICSESN+NICATOF+NICATTN) RESET @VA04272 01297500
- BAL R7,CTLTASK GET A CONTROL CONTASK @VM08673 01298000
- STH R4,CONTCMD SET DISCONNECT COMMAND @VM08673 01299000
- BAL R7,TAGTASK SETUP FOR EXECUTION @VM08673 01300000
- B BTUFRET @VA04253 01301500
- SPACE 01302000
- CMPRETN EQU * RETURN FINISHED TASK, CONTINUE @V200820 01303000
- BAL R14,RETTASK DISPOSE OF THE TASK @V200820 01304000
- XC NICRCNT(2),NICRCNT CLEAR NICBLOK RETRY COUNT @VM01003 01305000
- B BTUFRET @VM08790 01306000
- EJECT 01307000
- WRITERR EQU * ERROR RESPONSE ON OUTPUT @V200820 01308000
- CLI CONSYSR,X'F3' ATTENTION ? @V200820 01309000
- BNE BTUERRS NO -- FIGURE OUT THE OTHERS @V200820 01310000
- TM NICFLAG,NICATTN IN ATTENTION HANDLING NOW ? @V200820 01311000
- BO WRITATN YES -- PROCESS DIFFERENTLY @V200820 01312000
- LTR R6,R5 IS THERE AN ORIGINAL TASK ? @V200820 01313000
- BNP NCPATTN NO -- JUST DO ATTENTION LOGIC @V200820 01314000
- TM CONSTAT,CONRESP IS A RESPONSE EXPECTED ? @VM08809 01315000
- BO NCPATTN YES - PROCESS ATTENTION @VM01015 01316000
- BAL R14,RETTASK RETURN THE FIRST TASK @V200820 01317000
- SLR R5,R5 ASSUME NO INTERRUPTED TASK @VM08809 01318000
- TM CONSTAT,CONSPLT SPLIT TASKS TO FLUSH ? @VM08809 01319000
- BZ NCPATTN NO -- GO HANDLE ATTENTION @VM08809 01320000
- WRITER1 EQU * FLUSH ALL SPLIT TASKS @V200820 01321000
- L R6,NICQPNT NEXT TASK ON CHAIN @V200820 01322000
- LTR R5,R6 KEEP R5 CORRECT, STILL HAVE ONE? @VA04487 01322700
- BNP NCPATTN NOPE, BR. @VA04487 01323400
- L R2,CONPNT . . . @V200820 01324000
- ST R2,NICQPNT REMOVE THE NEXT TASK @V200820 01325000
- TM CONSTAT,CONRESP RESPONSE EXPECTED ? @V200820 01326000
- BO NCPATTN YES - STOP FLUSHING HERE @VM01015 01327000
- BAL R14,RETTASK RETURN THE SPLIT TASK @V200820 01328000
- SLR R5,R5 DONT PUT THIS BACK ON CHAIN @VA03582 01329000
- TM CONSTAT,CONSPLT WAS THAT THE LAST ONE ? @V200820 01330000
- BO WRITER1 NO -- KEEP FLUSHING @V200820 01331000
- B NCPATTN GO HANDLE ATTENTIONS @V200820 01332000
- SPACE 01333000
- WRITATN EQU * MULTIPLE ATTENTIONS @V200820 01334000
- LR R6,R5 RECOVER ORIGINAL TASK @V200820 01335000
- MVI CONCCW3+1,X'08' CODE FOR MULTIPLE ATTN'S @V200820 01336000
- B BTUEREQ RE-QUEUE FOR ANOTHER GO @V200820 01337000
- EJECT 01338000
- BTUERRS EQU * ERROR RESPONSE FROM I/O CONTASK @V200820 01339000
- TM CONSYSR,PHASE3 PHASE ZERO ERROR ? @V200820 01340000
- BNZ BTUERR5 NO -- CHECK FOR OTHERS @V200820 01341000
- NI CONSYSR,255-ERROR TURN OFF ERROR BIT @V200820 01342000
- CLI CONSYSR,X'05' INACTIVE DEVICE ? @V200820 01343000
- BNE BTUERR3 NO -- @V200820 01344000
- BAL R7,CTLTASK GET A CONTROL TASK @V200820 01345000
- LA R0,CACTDEV ACTIVATE THE DEVICE @V200820 01346000
- STH R0,CONTCMD . . . @V200820 01347000
- BAL R7,TAGTASK @V200820 01348000
- B BTUEREQ GO RE-QUEUE ERROR TASK FOR LATER @V200820 01349000
- SPACE 01350000
- BTUERR3 EQU * @V200820 01351000
- CLI CONSYSR,X'1A' BUFFER DEPLETION CONDITION ? @V200820 01352000
- BNE BTUERR4 NO -- @V200820 01353000
- OI RDEVFLAG,RDEVSLOW GO TO SLOWDOWN MODE @V200820 01354000
- SPACE 01355000
- BTUEREQ EQU * RE-QUEUE FAILING CONTASK @V200820 01356000
- LTR R6,R5 WAS THERE AN ORIGINAL TASK ? @V200820 01357000
- BNP BTUFRET NO -- DON'T WORRY ABOUT IT @V200820 01358000
- LH R1,NICRCNT RETRY COUNT FOR ERRORS @VM01003 01359000
- LA R1,1(0,R1) . . . @VM01003 01360000
- STH R1,NICRCNT . . . @VM01003 01361000
- CL R1,F16 HAVE WE RETRIED ENOUGH ? @VM01003 01362000
- BH PWROFFL YES - DROP THE CONNECTION @VM01034 01363000
- B REPETRD SETUP TO RETRY THE CONTASK @VM01040 01364000
- SPACE 01365000
- BTUERR4 EQU * @V200820 01366000
- CLI CONSYSR,X'1E' COMMAND RESET ? @V200820 01367000
- BNE PWROFFL NO - ALL OTHERS => DROP THE LINE @VM01034 01368000
- CLI CONTCMD,READNRM/256 INPUT REQUEST ? @VM01034 01369000
- BE BTUERR7 YES - CHECK FOR 'WNG', ETC. @VM01034 01370000
- LTR R6,R5 ORIGINAL STILL AROUND @VM08513 01371000
- BNZ CMPRETN YES - CALL IT COMPLETE @VM08513 01372000
- B BTUFRET NO - IGNORE RESPONSE @VM08513 01373000
- SPACE 01374000
- BTUERR7 EQU * CHECK FOR PRIORITY WRITE @VM08513 01375000
- ICM R1,15,NICQPNT IS THERE ANOTHER CONTASK ? @VM01040 01376000
- BZ PWROFFL NO -- NOT BREAK - DROP THE LINE @VM01034 01377000
- TM CONPARM-CONTASK(R1),PRIORITY BREAK-IN ? @VM01040 01378000
- BZ PWROFFL NO -- LINE DROP @VM01034 01379000
- LTR R6,R5 MAKE SURE WE HAVE THE ORIGINAL @VM01034 01380000
- BNP RNH2 THEORETICALLY IMPOSSIBLE (SIC) @VM01034 01381000
- BAL R7,TAGTASK REFRESH BTU FIELDS IN CONTASK @VM01040 01382000
- BAL R7,TASKENQ LET QUEUEING SORT THIS OUT @V200820 01383000
- B BTUFRET . . . @V200820 01384000
- EJECT 01385000
- BTUERR5 EQU * PHASE 1, 2, OR 3 ERRORS @V200820 01386000
- NI CONSYSR,255-(ERROR+PHASE3) TURN OFF BITS @V200820 01387000
- CLI CONSYSR,X'01' DATA CHECK OR POSSIBLE INTREQ ? @V240820 01388000
- BH BTUERR6 NO -- CHECK OTHER RESPONSES @V240820 01389000
- TM CONSRID,CONOUTPT OUTPUT CONTASK ? @V200820 01390000
- BO BTUEREQ YES - JUST RETRY @V200820 01391000
- LA R0,CONTSIZE+(DATCHKL+7)/8 TASK SIZE @VM08772 01392000
- BAL R7,CTLTASZ @V200820 01393000
- MVI CONSTAT,CONOUTPT+CONRTRY OUTPUT, FIXED ORDER @VM01034 01394000
- MVC CONDATA(DATCHKL),DATCHKM 'READ ERROR' MSG @VM08772 01395000
- MVI CONDCNT+1,DATCHKL SET BTU DATA COUNT @VM08772 01396000
- LA R0,WRITNRM NORMAL WRITE COMMAND @VM08737 01397000
- STH R0,CONTCMD ... @V200820 01398000
- BAL R7,TAGTASK FILL IN THE CONTASK @V200820 01399000
- TM NICTYPE,NICTELE TELEGRAPH TERMINAL ? @VM08772 01400000
- BZ BTUEREQ NO -- ALL READY TO GO @VM01034 01401000
- MVC CONDATA(DATCHKL),DATCHKT TWX 'READ ERROR' MSG @VM08772 01402000
- B BTUEREQ RE-QUEUE THE READ CONTASK @VM01034 01403000
- SPACE 01404000
- BTUERR6 EQU * CHECK FOR LINE FAILURE @V200820 01405000
- CLI CONSYSR,X'02' INTERVENTION REQUIRED ? @V200820 01406000
- BNE BTUERR3 NO -- CONTINUE CHECKING @V240820 01407000
- CLI CONEXTR,X'8A' LOST DATA ? 01408000
- BE BTUEREQ YES..RETRY OR IGNORE... 01409000
- B PWROFFL DROP THE CONNECTION @VM01034 01410000
- EJECT 01411000
- CNSATTN EQU * ATTENTION HANDLING LOGIC @V200820 01412000
- OI NICSTAT,NICNTRL DO NOT START THIS INTERFACE @V200820 01413000
- TM NICFLAG,NICSESN ANYONE LOGGED ON? @VA07851 01414250
- BO CNSATN2 YES - CHECK HIM OUT @VA07851 01414500
- CALL DMKBLDVM CREATE A VMBLOK FOR THIS LINE @V200820 01416000
- OI NICFLAG,NICSESN USER IS NOW LOGGED ON @VM08593 01417000
- B CNSATN3 GO PUT HIM IN C.F. MODE @V200820 01418000
- SPACE 01419000
- CNSATN2 EQU * FIGURE OUT CORRECT APPROACH @V200820 01420000
- L R1,NICUSER SWITCH TO NICUSERS VM-BLOK @V407593 01421500
- BAL R7,SWITCHVM GO SWITCH IT @V407593 01422500
- TM VMRSTAT,VMCFWAIT+VMLOGON IN LOGON OR SLEEPING ? @V240820 01424000
- BNZ CNSATN3 YES - MUST CALL BREAK @V240820 01425000
- CL R4,F4 SINGLE OR MULTIPLE CODE ? @V200820 01426000
- BH CNSATN3 MULTIPLE -- @V200820 01427000
- CALL DMKCFMAT ATTENTION TO THE VIRTUAL MACHINE @V200820 01428000
- BZ CNSATNR TOOK O.K. - CONTINUE @V200820 01429000
- SPACE 01430000
- CNSATN3 EQU * PUT VIRTUAL MACHINE IN C.F. MODE @V200820 01431000
- TM VMOSTAT,VMSLEEP+VMVIRCF COMING OUT OF SLEEP? @VA04784 01431100
- BNO CNSATN3A NO, NORMAL PROCESSING @VA04784 01431200
- CL R4,F4 SINGLE OR MULT. ATTN ?? @VA04784 01431300
- BH CNSATN3A MULTIPLE, DON'T DISPATCH @VA04784 01431400
- LA R4,GODSPCH CPEXBLOK RETURN ADDRESS @VA04784 01431500
- BAL R7,STKCPEX BUILD AND STACK CPEXBLOK @VA04784 01431600
- CNSATN3A EQU * @VA04784 01431700
- L R4,NICQPNT PICK UP THE CONTASK CHAIN @V200820 01432000
- SLR R0,R0 @V200820 01433000
- ST R0,NICQPNT CLEAR THE CHAIN FOR A MOMENT @V200820 01434000
- CALL DMKCFMBK LET CFM GET HIS TASKS IN FIRST @V200820 01435000
- LA R1,NICQPNT-(CONPNT-CONTASK) CHAIN START @V200820 01436000
- CNSATN4 EQU * FIND THE END OF THE CHAIN @V200820 01437000
- L R2,CONPNT-CONTASK(,R1) NEXT CONTASK @V200820 01438000
- LTR R2,R2 IS THERE ONE ? @V200820 01439000
- BNP CNSATN5 NO -- PUT OLD CHAIN HERE @V200820 01440000
- LR R1,R2 CONTINUE UNTIL WE FIND THE END @V200820 01441000
- B CNSATN4 . . . @V200820 01442000
- SPACE 01443000
- CNSATN5 EQU * RE-CONNECT OLD CONTASK CHAIN @V200820 01444000
- ST R4,CONPNT-CONTASK(,R1) . . . @V200820 01445000
- CNSATNR EQU * RESET TO SYSTEM VMBLOK, CONTINUE @V200820 01446000
- L R1,ASYSVM SWITCH BACK TO SYSTEM VM-0BLOCK @V407593 01447500
- BAL R7,SWITCH2 GO SWITCH IT @V407593 01448500
- SWITCH CONTINUE ON THE I/O PROCESSOR @V407508 01449500
- NI NICFLAG,255-NICATTN ATTN HANDLING COMPLETE @V200820 01450000
- NI NICSTAT,255-NICNTRL CONTROL TASK COMPLETE @V200820 01451000
- B BTUFRET @VM08790 01452000
- EJECT 01453000
- CMPCONT EQU * PROCESS RESPONSE FROM 'CONTACT' COMMAN@V200820 01454000
- CLI CONSYSR,X'04' MTA DEVICE IDENTIFIED ? @V200820 01455000
- BNE CMPCON1 NO -- CHECK FOR COMPLETION @V200820 01456000
- OI NICSTAT,NICNTRL CONTROL TASK STILL ACTIVE @VM01040 01457000
- MVI NICTYPE,NICTERM+NICCIBM ASSUME NOT TELETYPE @V200820 01458000
- OI NICFLAG,NICPSUP+NICMTA MTA LINE, PRT INHIBIT @VM01034 01459000
- CLI CONDATA,MTA1050 1050 TERMINAL ? @VM08830 01460000
- BNE *+8 NO -- O.K. @VM08830 01461000
- NI NICFLAG,255-NICPSUP MASK REQUIRED FOR 1050 @VM08830 01462000
- CLI CONDATA,MTATELE TELEGRAPH TERMINAL ? @V200820 01463000
- BNE BTUFRET NO -- ALL SET AS IS @V200820 01464000
- MVI NICTYPE,NICTERM+NICTELE SET TYPE ACCORDINGLY @V200820 01465000
- NI NICFLAG,255-NICPSUP NO PRINT SUPPRESS @V200820 01466000
- B BTUFRET CONTINUE @V200820 01467000
- SPACE 01468000
- CMPCON1 EQU * WRITE 'VM/370 ONLINE' MESSAGE @V200820 01469000
- CLI CONSYSR,X'A9' SESSION NOT STARTED (HDW) ? @VM01040 01470000
- BE DVCENAB THAT'S RIGHT - RETRY THE CONTACT @VM01040 01471000
- CLI CONSYSR,X'9E' WAS THE CONTACT COMMAND RESET ? @VM01034 01472000
- BE DVCENAB YES - GO AND CLEAN UP @VM01034 01473000
- TM CONSYSR,ERROR IS THIS AN ERROR RESPONSE ? @VM01040 01474000
- BO PWROFFS YES - DISCONNECT AND RETRY IT @VM01040 01475000
- TM NICFLAG,NICMTA IS THIS AN MTA TERMINAL ? @VM01034 01476000
- BO CMPCON2 YES - PROCEED IMMEDIATELY @VM01034 01477000
- BAL R7,CTLTASK BUILD A CONTROL CONTASK @VM01034 01478000
- LA R0,READNRM CONTROL READ FOR 2741 BYPASS @VM01034 01479000
- STH R0,CONTCMD . . . @VM01034 01480000
- BAL R7,TAGTASK . . . @VM01034 01481000
- B BTUFRET LET THE READ EXECUTE FIRST @VM01034 01482000
- SPACE 01483000
- CMPCON2 EQU * WRITE 'VM/370 ONLINE' MESSAGE @VM01034 01484000
- XC NICRCNT(2),NICRCNT CLEAR THE RETRY COUNT @VM01034 01485000
- LA R0,CONTSIZE+(ONLINEL+7)/8 SIZE NEEDED FOR TASK @V200820 01486000
- BAL R7,CTLTASZ GET A LARGE 'CONTROL' CONTASK @V200820 01487000
- MVI CONSTAT,CONOUTPT MAKE IT LOOK LIKE OUTPUT @V200820 01488000
- MVI CONPARM,PRIORITY FORCE CHAINING ORDER @VM01040 01489000
- MVC CONDATA(ONLINEL),ONLINEM MOVE IN MSG @V200820 01490000
- MVI CONDCNT+1,ONLINEL SET BTU DATA COUNT @VM08772 01491000
- TM NICTYPE,NICTELE TELEGRAPH TERMINAL ? @VM08772 01492000
- BZ CMPCON3 NO -- ALL SET @VM08772 01493000
- MVC CONDATA(ONLINEL),ONLINET TWX VM/370 ONLINE @VM08772 01494000
- CMPCON3 EQU * @VM08772 01495000
- LA R1,WRITNRM COMMAND = WRITE @V200820 01496000
- STH R1,CONTCMD ... @V200820 01497000
- BAL R7,TAGTASK FILL OUT THE CONTASK @V200820 01498000
- BAL R7,CTLTASK STICK A CONTROL TASK ON TOP @V200820 01499000
- LA R0,CCDESMD COPY DESTINATION MODE COMMAND @V200820 01500000
- STH R0,CONTCMD . . . @V200820 01501000
- BAL R7,TAGTASK FILL OUT THIS TASK @V200820 01502000
- B BTUFRET CONTINUE - WILL WORK OUT @V200820 01503000
- EJECT 01504000
- CMPCNTL EQU * PROCESS FINISHED CONTROL TASKS @V200820 01505000
- TM CONSRID,CONRESP IS A RESPONSE EXPECTED ? @V200820 01506000
- BZ CMPCTL1 NO -- CHECK COMMAND MODIFIER@V200820 01507000
- LTR R5,R5 WAS ORIGINAL TASK RECOVERED ? @V200820 01508000
- BNP RNH2 NO -- THEORETICALLY IMPOSSIBLE @V200820 01509000
- BAL R7,PASSBTU BUILD SMALL BUFFER AND MOVE DATA @V200820 01510000
- L R2,CONRETN-CONTASK(,R5) SAVEAREA POINTER @V200820 01511000
- ST R1,SAVER1-SAVEAREA(,R2) PASS BTU VIA GR1 @V200820 01512000
- LR R6,R5 ORIGINAL TASK TO GR6 @V200820 01513000
- BAL R14,RETTASK CHAIN IT FOR RETURN TO DMKQCN @V200820 01514000
- B BTUFRET SKIP OVER BUFFER FOR THIS TASK @V200820 01515000
- SPACE 01516000
- CMPCTL1 EQU * CONTROL TASK - NO RESPONSE @V200820 01517000
- CLI CONTCMD+1,CRESERL-CNTLBTU RESET ERROR LOCK ?@V200820 01518000
- BE CMPCTLK YES -- RESET NICBLOK FLAGS @V200820 01519000
- CLI CONTCMD+1,CCDESMD-CNTLBTU COPY DEST MODE ? @V200820 01520000
- BE CMPCDES YES - SETUP FOR 'ATTN' @V200820 01521000
- CLI CONTCMD+1,CRESIMD-CNTLBTU RESET IMMEDIATE ? @VM01016 01522000
- BE CMPCRIM YES -- @VM01016 01523000
- CLI CONTCMD+1,CACTLTR-CNTLBTU ACTIVATE TRACE ? @VM01016 01524000
- BNE *+8 IF YES, IT MUST HAVE FAILED @VM01016 01525000
- NI NICSTAT,255-NICLTRC TURN OFF TRACING FLAG @VM01016 01526000
- CLI CONTCMD+1,CACTDEV-CNTLBTU ACTIVATE DEVICE ? @V200820 01527000
- BNE BTUFRET NO -- JUST IGNORE OTHERS @V200820 01528000
- TM NICFLAG,NICENAB IS THE INTERFACE ENABLED ? @V200820 01529000
- BZ BTUFRET NO -- JUST IGNORE RESPONSE @V200820 01530000
- B DVCENAB GO ISSUE THE 'CONTACT' @V200820 01531000
- EJECT 01532000
- CMPCRIM EQU * NETWORK HALT COMMAND WAS ISSUED @VM08788 01533000
- NI NICSTAT,255-(NICNTRL+NICERLK+NICDISA+NICLTRC) @VM08788 01534000
- NI NICFLAG,255-NICATTN RESET INTERFACE FLAGS @VM08788 01535000
- L R1,NICQPNT CHECK THE FIRST CONTASK @VM08788 01536000
- LTR R1,R1 . . .IF THERE IS ONE @VM08788 01537000
- BNP BTUFRET . . .NONE - CONTINUE @VM08788 01538000
- NI CONSTAT-CONTASK(R1),CONACTV NOT ACTIVE @VM08788 01539000
- B BTUFRET CONTINUE PROCESSING @VM08788 01540000
- SPACE 2 01541000
- CMPCDES EQU * COPY DESTINATION MODE FOR 'ATTN' @V200820 01542000
- L R4,CONDATA PICK UP THREE BYTES OF FLAGS @V200820 01543000
- LA R0,CONTSIZE+1 GET A CONTROL CONTASK @V200820 01544000
- BAL R7,CTLTASZ ...WITH ROOM FOR DATA @V200820 01545000
- STCM R4,B'1110',CONDATA DESTINATION MODE IN NEW TASK @V200820 01546000
- OI CONDATA+1,X'02' SET BIT 14 FOR MONITOR @V200820 01547000
- MVI CONDCNT+1,3 DATA COUNT = THREE @V200820 01548000
- LA R1,CSETDSM SET DESTINATION MODE @V200820 01549000
- STH R1,CONTCMD . . . @V200820 01550000
- BAL R7,TAGTASK FILL OUT THE TASK FIELDS @V200820 01551000
- B BTUFRET WILL BE EXECUTED WHEN POSSIBLE @V200820 01552000
- EJECT 01553000
- CMPCTLK EQU * RESET DEVICE ERROR LOCK @V200820 01554000
- CLI CONSYSR,X'EC' POWER OFF AFTER ATTENTION ? @V200820 01555000
- BNE BTUFRET NO -- ASSUME EVERYTHING IS O.K. @V200820 01556000
- PWROFFL EQU * TERMINAL HAS DIED - CLEAN UP @V200820 01557000
- LTR R6,R5 IS THERE AN ORIGINAL CONTASK ? @VM01034 01558000
- BNP PWROFFT NO -- NOTHING EXTRA TO DO @VM01034 01559000
- MVC CONPNT(4),NICQPNT RE-CHAIN THE ORIGINAL TASK @VM01034 01560000
- ST R6,NICQPNT . . .SO WE DON'T LOSE IT @VM01034 01561000
- PWROFFT EQU * FLUSH ANY PENDING CONTASK'S @VM01034 01562000
- L R5,RDEVCON CURRENT RDEVBLOK CONTASK CHAIN @V200820 01563000
- L R2,NICQPNT CONTASK CHAIN FROM THE NICBLOK @V200820 01564000
- ST R2,RDEVCON MOVE IT TO THE RDEVBLOK @V200820 01565000
- SLR R0,R0 @V200820 01566000
- ST R0,NICQPNT CLEAR THE NICBLOK CHAIN @V200820 01567000
- L R1,NICUSER SWITCH TO NICUSERS VMBLOK @V407593 01568050
- SWTCHVM OPT=STAY SWITCH TO THIS VMBLOK @V407508 01569050
- CALL DMKQCNCL CLEAR THE CONTASK CHAIN @V200820 01571000
- ST R5,RDEVCON RESTORE PREVIOUS CHAIN, IF ANY @V200820 01572000
- CL R11,ASYSVM IS THERE AN ACTIVE USER ? @V200820 01573000
- BE PWROFFS NO -- JUST RE-CONTACT TERMINAL @VM01040 01574000
- CALL DMKQCNTO,AFFINITY FORCE DISC. FOR THIS USER @V407593 01575050
- PWROFFS EQU * CLEAN UP AND DISCONNECT @VM01040 01576000
- L R1,ASYSVM SWITCH BACK TO SYSTEM VM-BLOK @V407593 01577050
- BAL R7,SWITCH2 GO SWITCH IT @V407593 01578050
- ST R11,NICUSER MAKE SYSTEM EQUAL OWNER @VA07851 01579400
- NI NICSTAT,255-(NICNTRL+NICLTRC+NICDISA) RESET @V200820 01581000
- NI NICFLAG,255-(NICSESN+NICATOF+NICATTN) FLAGS @V200820 01582000
- BAL R7,CTLTASK BUILD A CONTROL TASK @VM01040 01583000
- LA R0,DISCEOC DISCONNECT END OF CALL @VM01040 01584000
- STH R0,CONTCMD . . . @VM01040 01585000
- BAL R7,TAGTASK . . . @VM01040 01586000
- B BTUFRET GO LET IT HAPPEN @VM01040 01587000
- EJECT 01588000
- DVCENAB EQU * RE-ESTABLISH TERMINAL SESSION @VM01040 01589000
- TM NICFLAG,NICDISB DISABLE THIS INTERFACE ? @V200820 01590000
- BZ DVCENB1 NO -- SETUP TO ISSUE CONTACT@V200820 01591000
- NI NICFLAG,255-(NICENAB+NICDISB) LEAVE IT IDLE @V200820 01592000
- XC NICRCNT(2),NICRCNT CLEAR THE RETRY COUNT @VM01040 01593000
- B BTUFRET @V200820 01594000
- SPACE 2 01595000
- DVCENB1 EQU * RE-ENABLE THE LINE @V200820 01596000
- TM NICFLAG,NICENAB IS IT ENABLED NOW ? @V200820 01597000
- BZ BTUFRET NO -- LEAVE IT IDLE @V200820 01598000
- LH R1,NICRCNT PICK UP ENABLE RETRY COUNT @VM01040 01599000
- LA R1,1(0,R1) INCREMENT . . . @VM01040 01600000
- STH R1,NICRCNT . . . @VM01040 01601000
- CL R1,F16 ARE WE READY TO LOOP ON IT ? @VM01040 01602000
- BH DVCDISA YES -- BUT DON'T @VM01040 01603000
- BAL R7,CTLTASK GET A CONTROL CONTASK @V200820 01604000
- LA R0,CONTACT @V200820 01605000
- STH R0,CONTCMD @V200820 01606000
- BAL R7,TAGTASK SETUP FOR LATER EXECUTION @V200820 01607000
- B BTUFRET @V200820 01608000
- EJECT 01609000
- DVCDISA EQU * DMKRNH454I DEV XXXX DISABLED @VM01040 01610000
- NI NICFLAG,255-(NICENAB+NICDISB) LEAVE IT IDLE @VM01040 01611000
- XC NICRCNT(2),NICRCNT CLEAR FOR THE NEXT TIME @VM01040 01612000
- LH R1,IOBRADD REAL ADDRESS OF THE 370X @VM01040 01613000
- L R2,=A(DMKRIORN) ADDRESS OF THE CTLR TABLE @VM01040 01614000
- L R3,0(0,R2) NUMBER OF TABLE ENTRIES @VM01040 01615000
- DVCDISB EQU * FIND THIS CTLR IN THE TABLE @VM01040 01616000
- CH R1,6(0,R2) IS THIS THE RIGHT ENTRY ? @VM01040 01617000
- BE DVCDISC YES -- @VM01040 01618000
- LA R2,4(0,R2) NEXT ENTRY @VM01040 01619000
- BCT R3,DVCDISB CONTINUE @VM01040 01620000
- DVCDISC EQU * COMPUTE RESOURCE REFERENCE @VM01040 01621000
- S R2,=A(DMKRIORN) ZERO-BASED DISPLACEMENT @VM01040 01622000
- SLL R2,10(0) ENTRY NUMBER TIMES 4096 @VM01040 01623000
- LH R1,NICNAME RESOURCE I.D. FROM THE NICBLOK @VM01040 01624000
- OR R2,R1 GR2 = RESOURCE REF. IN BINARY @VM01040 01625000
- LA R0,4(0) GET A MESSAGE BUFFER @VM01040 01626000
- CALL DMKFREE . . . @VM01040 01627000
- MVC 24(8,R1),BLANKS CLEAR THE TAIL END OF IT @VM01040 01628000
- MVC 0(28,R1),=C'DMKRNH454I DEV .... DISABLED' @VM01040 01629000
- LR R3,R1 SAVE THE BUFFER ADDRESS @VM01040 01630000
- LR R1,R2 RESOURCE REFERENCE TO GR1 @VM01040 01631000
- CALL DMKCVTBH CONVERT IT FOR OUTPUT @VM01040 01632000
- STCM R1,15,15(R3) STUFF IT INTO THE MESSAGE @VM01040 01633000
- LR R1,R3 BUFFER BACK INTO GR1 FOR QCNWT @VM01040 01634000
- LA R0,28(0) MESSAGE LENGTH @VM01040 01635000
- LA R3,4(0) NO. DBL-WDS FOR 'DFRET' @VM01040 01636000
- CALL DMKQCNWT,PARM=NORET+DFRET+OPERATOR+ALARM,AFFINITY 01637050
- B BTUFRET CONTINUE PROCESSING @VM01040 01638000
- EJECT 01639000
- UNSOLIT EQU * UNSOLICITED RESPONSE FROM NCP @V200820 01640000
- CLI CONSYSR,X'03' DEVICE ASSOCIATION RESPONSE ? @V200820 01641000
- BL RNFATAL NO -- FATAL SITUATION @V200820 01642000
- BE BTUFRET YES - IGNORE IT @V200820 01643000
- CLI CONSYSR,X'07' ENTERING SLOWDOWN MODE ? @V200820 01644000
- BL RNFATAL NO -- FATAL SITUATION @V200820 01645000
- BE BTUSLOW YES - DO IT @V200820 01646000
- CLI CONSYSR,X'09' INITIALIZATION COMPLETE RESPONSE @V200820 01647000
- BE IPLCOMP YES - CHECK SCANNER BITS @V200820 01648000
- BL BTUFAST NO -- EXIT FROM SLOWDOWN MODE @V200820 01649000
- CLI CONSYSR,X'0A' MISC DATA RECORDING RECORD ? @V200820 01650000
- BE MDRECRD YES - PASS IT TO ERROR RECORDING @V200820 01651000
- CLI CONSYSR,X'1E' HOST LOGGING RESPONSE ? @V200820 01652000
- BE BTUFRET YES - ****** TEMPORARILY IGNORE @V200820 01653000
- TM CONSYSR,ERROR IS THIS AN ERROR RESPONSE ? @VM01013 01654000
- BZ RNH2 NO -- OTHERS ARE FATAL @VM01013 01655000
- CLI CONSYSR,X'F3' ATTENTION TO IDLE TERMINAL ? @VM01013 01656000
- BNE BTUERRS NO -- SORT OUT THE OTHERS @VM01013 01657000
- B NCPATTN PROCESS UNSOLICITED ATTENTION @V200820 01658000
- SPACE 2 01659000
- BTUSLOW EQU * ENTER NCP BUFFER SLOWDOWN MODE @V200820 01660000
- OI RDEVFLAG,RDEVSLOW ENTER BUFFER SLOWDOWN MODE @V200820 01661000
- B BTUFRET RELEASE THIS BTU, CONTINUE @V200820 01662000
- SPACE 01663000
- BTUFAST EQU * EXIT FROM NCP BUFFER SLOWDOWN @V200820 01664000
- NI RDEVFLAG,255-RDEVSLOW EXIT BUFFER SLOWDOWN @V200820 01665000
- B BTUFRET RELEASE THIS BTU, CONTINUE @V200820 01666000
- SPACE 01667000
- IPLCOMP EQU * NCP INITIALIZATION COMPLETE @V200820 01668000
- TM CONDATA,X'F8' DID THE SCANNERS ENABLE O.K. ? @V200820 01669000
- BNZ SCNFAIL NO -- WARN THE OPERATOR @V200820 01670000
- NI RDEVSTAT,255-(RDEVNRDY+RDEVRSVD) 370X IS READY@V200820 01671000
- NI RDEVFLAG,255-(RDEVSLOW+RDEVRCVY+RDEVWAIT) @V200820 01672000
- B CHECKPT GO TRY TO RE-ENABLE DEVICES @V200820 01673000
- SPACE 2 01674000
- SCNFAIL EQU * COMMUNICATIONS SCANNER FAILURE @V200820 01675000
- LA R2,468(0) MSG= DMKRNH468I SCANNER FAILURE @V200820 01676000
- BAL R7,CALLERM GO SETUP AND TYPE ERROR MESSAGE @V200820 01677000
- B BTUFRET LEAVE THE DEVICE NOT READY @V200820 01678000
- EJECT 01679000
- RNIOERR EQU * STANDARD 370X ERROR RECOVERY @V200820 01680000
- TM IOBCSW+5,PCI+IL+PRGC+PRTC+CHC PROGRAM ERROR? @V200820 01681000
- BNZ RNH1 YES - CRASH CP @V200820 01682000
- TM IOBCSW+5,CDC CHANNEL DATA CHECK ? @V200820 01683000
- BZ RNIOERD NO -- CHECK DEVICE STATUS @V200820 01684000
- CLI IOBMISC2,X'02' IS THIS A READ ? @V200820 01685000
- BNE RNFATAL NO -- CDC IS FATAL FOR WRITE @V200820 01686000
- RNIOERT EQU * RETRY THE OPERATION 16 TIMES @V200820 01687000
- LH R1,IOBRCNT COUNT OF PREVIOUS RETRIES @V200820 01688000
- LA R1,1(0,R1) INCREMENT @V200820 01689000
- STH R1,IOBRCNT . . . @V200820 01690000
- CL R1,F16 CHECK FOR A RESONABLE LIMIT @V200820 01691000
- BH RNFATAL NOPE - BOUNCE THE NCP @V200820 01692000
- BAL R7,RNGORED RESTART THIS IOBLOK @V200820 01693000
- B GODSPCH EXIT TO DMKDSPCH @V200820 01694000
- SPACE 01695000
- RNIOERD EQU * CHECK FOR DEVICE-LEVEL ERRORS @V200820 01696000
- TM IOBCSW+4,UC WAS IT A UNIT CHECK ? @V200820 01697000
- BZ RNFATAL NO -- BOUNCE IT @V200820 01698000
- RNIOEUC EQU * @V200820 01699000
- L R1,IOBIOER ADDRESS OF THE IOERBLOK @V200820 01700000
- USING IOERBLOK,R1 @V200820 01701000
- TM IOERDATA,CMDREJ WAS IT MY FAULT ? @V200820 01702000
- BO RNH1 APPARENTLY - DIE @V200820 01703000
- TM IOERDATA,BUSOUT BUS-OUT CHECK ? @V200820 01704000
- BZ RNFATAL NO -- OTHERS = BOUNCE NCP @V200820 01705000
- CLI IOBMISC2,X'02' WAS THIS A READ STRING ? @V200820 01706000
- BE RNIOERT YES - RETRY FROM THE BEGINNING @V200820 01707000
- CLI IOBMISC2,X'01' WAS THIS A WRITE STRING ? @V200820 01708000
- BNE RNFATAL NO -- VERY STRANGE STATUS @V200820 01709000
- L R1,IOBCSW BACK UP TO FAILING CCW @V200820 01710000
- S R1,F8 (KEY IS ZERO) @V200820 01711000
- BNP RNIOERT RETRY FROM THE BEGINNING @V200820 01712000
- ST R1,IOBRCAW SET THE IOBLOK RESTART CAW @V200820 01713000
- OI IOBFLAG,IOBRSTRT RESTART IN THE MIDDLE @V200820 01714000
- B RNIOERT . . . @V200820 01715000
- EJECT 01716000
- MDRECRD EQU * MISCELLANEOUS DATA RECORDING BTU @V200820 01717000
- L R1,NMDRCRD NUMBER OF MDR RECORDS RECEIVED @V200820 01718000
- AL R1,F1 INCREMENT . . . @V200820 01719000
- ST R1,NMDRCRD . . . @V200820 01720000
- LH R2,CONDCNT LENGTH OF THE MDR DATA @V240820 01721000
- LA R2,12(0,R2) ALLOW FOR ACCESS METHOD DATA @V240820 01722000
- BAL R7,PASTBTU BUILD A MINI-CONTASK FOR DMKIOE @V240820 01723000
- LR R5,R1 MINI-CONTASK ADDRESS TO GR5 @V240820 01724000
- DROP R6 TEMPORARILY @V240820 01725000
- USING CONCCW3,R5 . . . @V240820 01726000
- LH R1,IOBRADD 370X NATIVE SUBCHANNEL ADDRESS @V240820 01727000
- STH R1,CONDATA PASS IT ALONG FOR CPEREP @V240820 01728000
- L R1,NICUSER VMBLOK POINTER FOR THIS RESOURCE @V240820 01729000
- MVC CONDATA+2(8),VMUSER-VMBLOK(R1) USERID @V240820 01730000
- LH R1,CONDEST FAILING RESOURCE I.D. @V240820 01731000
- STH R1,CONDATA+10 PASS IT ALONG IN THE RECORD @V240820 01732000
- LA R1,CONDATA+12 POINT TO LOCATION OF MDR DATA @V240820 01733000
- DROP R5 @V240820 01734000
- USING CONTASK,R6 NORMAL ADDRESSABILITY @V240820 01735000
- LH R2,CONDCNT ORIGINAL MDR DATA LENGTH @V240820 01736000
- BCTR R2,0 DECREMENT FOR EXECUTE @V240820 01737000
- LA R3,CONDATA POINT TO SOURCE OF THE DATA @V240820 01738000
- EX R2,MVCR1R3 MOVE MDR DATA INTO THE BUFFER @V240820 01739000
- LA R2,13(0,R2) RESTORE LENGTH + ADD HEADER @V240820 01740000
- STH R2,CONDCNT-CONCCW3(,R5) . . . @V240820 01741000
- LR R6,R5 PASS BTU ADDRESS IN GR6 @V240820 01742000
- LA R4,CALLIOER CPEXADD FOR LATER CALL TO DMKIOE @V200820 01743000
- BAL R7,STKCPEX STACK CPEXBLOK FOR LATER @V200820 01744000
- B BTUFRET CONTINUE NORMALLY FOR NOW @V200820 01745000
- EJECT 01746000
- CHECKPT EQU * RE-ENABLE LINES AFTER 370X BOUNCE@V200820 01747000
- BAL R9,READFRT RELEASE READ BUFFERS, CCW STRING @V200820 01748000
- ICM R5,15,RDEVCKPT LOAD AND TEST FOR CKPBLOK @VM01034 01749000
- BZ RNIGNOR NOT THERE - JUST EXIT @VM01034 01750000
- BAL R7,FRETIOB RELEASE THE IOBLOK ANYWAY @V200820 01751000
- USING CKPBLOK,R5 @V200820 01752000
- CLC CKPNAME(8),RDEVNCP SAME CONTROL PROGRAM NOW ? @V200820 01753000
- BNE CHEKFRT NO -- EXIT GRACEFULLY @V200820 01754000
- L R9,RDEVNICL START OF THE NICBLOK LIST @V200820 01755000
- LH R7,RDEVMAX SETUP TO BXLE THROUGH IT @V200820 01756000
- MH R7,=AL2(NICSIZE*8) . . . @V200820 01757000
- ALR R7,R9 . . . @V200820 01758000
- LA R6,NICSIZE*8 . . . @V200820 01759000
- LA R10,CKPBITS START OF THE CKPBLOK BIT MAP @V200820 01760000
- LA R3,1(0,0) START WITH A SINGLE SHIFT @V200820 01761000
- LR R4,R3 ...INCREMENT @V200820 01762000
- LA R5,8(0,0) ...LIMIT @V200820 01763000
- DROP R5 @V200820 01764000
- SPACE 2 01765000
- CHECKEM EQU * CHECK FOR ACTIVE OR ENABLED @V200820 01766000
- L R1,F256 GET A SINGLE BIT @V200820 01767000
- SRL R1,0(R3) SHIFT APPROPRIATELY @V200820 01768000
- EX R1,TESTBIT SEE IF THE BIT IS SET @V200820 01769000
- BZ CHECKNX NO -- SKIP THIS NICBLOK ENTIRELY @V200820 01770000
- TM NICTYPE,NICLINE IS THIS A LINE ? @V200820 01771000
- BZ CHECKDV NO -- CHECK FOR TERMINALS @V200820 01772000
- TM NICSTAT,NICDISA IS IT ALREADY ACTIVE ? @V200820 01773000
- BZ CHECKNX YES - NOTHING MORE TO DO @V200820 01774000
- NI NICSTAT,255-NICDISA WILL BE ACTIVE SOON @V200820 01775000
- LH R1,NICNAME RESOURCE I.D. @V200820 01776000
- LA R0,CACTLIN ACTIVATE LINE @V200820 01777000
- CALL DMKRNHND,PARM=0 *** WAIT FOR THE RESPONSE **@V200820 01778000
- BNZ GODSPCH EXIT IMMEDIATELY IF BAD RETURN @VM01034 01779000
- LH R0,0(0,R1) NO. OF DBL-WDS FOR FRET @V200820 01780000
- CALL DMKFRET RELEASE THE "MINI-CONTASK" @V200820 01781000
- B CHECKNX ADVANCE THRU THE BLOCKS @V200820 01782000
- EJECT 01783000
- CHECKDV EQU * TEST FOR ENABLED TERMINALS @V200820 01784000
- TM NICTYPE,NICTERM IS THIS A TERMINAL ? @V200820 01785000
- BZ CHECKNX NO -- IGNORE THE ONE BIT @V200820 01786000
- TM NICFLAG,NICENAB ALREADY ENABLED ? @V200820 01787000
- BO CHECKNX YES - SKIP IT @V200820 01788000
- OI NICFLAG,NICENAB WILL BE ENABLED @V200820 01789000
- LH R1,NICNAME RESOURCE I.D. @V200820 01790000
- LA R0,CONTACT CONTACT COMMAND @V200820 01791000
- CALL DMKRNHND,PARM=NORET DON'T WAIT FOR THIS ONE@V200820 01792000
- BNZ GODSPCH QUIT FAST IF BAD RETURN CODE @VM01034 01793000
- CHECKNX EQU * @V200820 01794000
- BXLE R3,R4,CHECKNC BUMP THE SHIFT COUNT @V200820 01795000
- LR R3,R4 RESTART AT ONE @V200820 01796000
- LA R10,1(0,R10) NEXT BYTE IN THE BIT MAP @V200820 01797000
- CHECKNC EQU * ADVANCE THROUGH THE NICBLOK'S @V200820 01798000
- BXLE R9,R6,CHECKEM . . . @V200820 01799000
- SPACE 01800000
- CHEKFRT EQU * RELEASE THE CKPBLOK ITSELF @V200820 01801000
- L R1,RDEVCKPT @V200820 01802000
- LH R0,CKPSIZE-CKPBLOK(,R1) SIZE IN DBL-WDS @V200820 01803000
- CALL DMKFRET RETURN CKPBLOK TO FREE STORAGE @V200820 01804000
- SLR R1,R1 @V200820 01805000
- ST R1,RDEVCKPT CLEAR OUT THE RDEVBLOK @V200820 01806000
- B GODSPCH EXIT @V200820 01807000
- SPACE 2 01808000
- RNCLEAN EQU * CLEAN UP IOBLOK, EXIT @VM08593 01809000
- TM IOBSPEC,IOBUNSL UNSOLICITED INTERRUPT ? @VM08593 01810000
- BO RNIGNOR YES - FRET IOBLOK + EXIT @VM08593 01811000
- CLI IOBMISC2,X'02' IS THIS A READ CHANNEL PROGRAM @VM08593 01812000
- BNE RNIGNOR NO --- @VM08593 01813000
- BAL R9,READFRT RELEASE BUFFERS, CCW STRING @VM08593 01814000
- B RNIGNOR FRET IOBLOK + EXIT @VM08593 01815000
- EJECT 01816000
- RNFATAL EQU * THE 3705 IS GOING TO BOUNCE @V200820 01817000
- TM RDEVFLAG,RDEVRCVY ALREADY IN RECOVERY ? @V200820 01818000
- BO RNIGNOR YES - GET OUT OF HERE @V200820 01819000
- TM RDEVFLAG,RDEVLNCP IS THERE AN NCP ACTIVE ? @VM08838 01820000
- BZ RNRDUMP NO -- JUST DUMP + RE-LOAD @VM08838 01821000
- TM RDEVFLAG,RDEVWAIT WAS I BUSY JUST NOW ? @V200820 01822000
- BZ RNFDISC NO -- @V200820 01823000
- CLI IOBMISC2,X'02' READ CCW STRING ? @V200820 01824000
- BNE RNFDISC NO -- NOTHING TO CLEAN UP @V200820 01825000
- BAL R9,READFRT RELEASE READ BUFFERS, ETC. @V200820 01826000
- RNFDISC EQU * @V200820 01827000
- TM RDEVSTAT,RDEVNRDY WAS THE DEVICE BUSY YET ? @V200820 01828000
- BO RNRDUMP NO -- JUST TRY THE RE-LOAD @V200820 01829000
- OI RDEVSTAT,RDEVNRDY SET THE DEVICE NOT READY @V200820 01830000
- L R9,RDEVNICL START OF THE NICBLOK LIST @V200820 01831000
- LH R7,RDEVMAX SETUP TO BXLE THROUGH IT @V200820 01832000
- MH R7,=AL2(NICSIZE*8) . . . @V200820 01833000
- ALR R7,R9 . . . @V200820 01834000
- LA R6,NICSIZE*8 . . . @V200820 01835000
- ICM R1,15,RDEVCKPT DO WE ALREADY HAVE A CKPBLOK ? @VM01034 01836000
- BNZ RNFNICS YES - DON'T BUILD ANOTHER ONE @V200820 01837000
- LH R2,RDEVMAX MAX RESOURCE I.D. AGAIN @V200820 01838000
- LA R2,1(0,R2) BUMP ONE FOR RESOURCE COUNT @V200820 01839000
- LA R3,7(0,R2) ROUND UP TO EIGHT-BIT BOUNDARY @V200820 01840000
- SRL R3,3(0) . . . @V200820 01841000
- LA R3,7(0,R3) ROUND UP TO EIGHT-BYTE BOUNDARY @V200820 01842000
- SRL R3,3(0) . . . @V200820 01843000
- LA R0,CKPBKSZ(0,R3) ADD LENGTH OF CKPBLOK HEADER@V200820 01844000
- CALL DMKFREE ALLOCATE CKPBLOK @V200820 01845000
- ST R1,RDEVCKPT CONNECT IT TO THE RDEVBLOK @V200820 01846000
- USING CKPBLOK,R1 @V200820 01847000
- STH R0,CKPSIZE SAVE BLOCK SIZE IN DBL-WDS @V200820 01848000
- STH R2,CKPRMAX SAVE NUMBER OF RESOURCES @V200820 01849000
- LA R2,CKPBITS POINT TO START OF BIT MAP @V200820 01850000
- SLL R3,3(0) GR3 = LENGTH OF BIT MAP @V200820 01851000
- SR R15,R15 ZERO LENGTH, ZERO PAD @V200820 01852000
- MVCL R2,R14 CLEAR THE BIT MAP @V200820 01853000
- MVC CKPNAME(8),RDEVNCP SAVE THE CONTROL PROGRAM NAM@V200820 01854000
- LA R2,CKPBITS START OF BIT MAP AGAIN @V200820 01855000
- DROP R1 @V200820 01856000
- LA R3,1(0,0) SHIFT COUNT START @V200820 01857000
- LR R4,R3 . . .AND INCREMENT @V200820 01858000
- LA R5,8(0,0) . . .AND LIMIT @V200820 01859000
- EJECT 01860000
- RNFBITS EQU * SETUP TO REMEMBER STATUS @V200820 01861000
- TM NICTYPE,NICLINE IS THIS A LINE ? @V200820 01862000
- BZ RNLBITS NO -- CHECK ENABLED @V200820 01863000
- TM NICSTAT,NICDISA IS THE LINE ACTIVE ? @V200820 01864000
- BZ RNSBITS YES - SET THE BIT @V200820 01865000
- B RNDBITS MOVE TO NEXT BIT + NICBLOK @V200820 01866000
- RNLBITS EQU * @V200820 01867000
- TM NICFLAG,NICENAB IS THE DEVICE ENABLED ? @V200820 01868000
- BZ RNDBITS NO -- NEXT BIT + NICBLOK @V200820 01869000
- RNSBITS EQU * SET A BIT IN THE MAP @V200820 01870000
- L R1,F256 GET A SINGLE BIT @V200820 01871000
- SRL R1,0(R3) SHIFT APPROPRIATELY @V200820 01872000
- EX R1,SETCBIT OR IT INTO THE MAP @V200820 01873000
- RNDBITS EQU * @V200820 01874000
- BXLE R3,R4,RNNBITS BUMP THE SHIFT COUNT @V200820 01875000
- LR R3,R4 RESTART AT ONE @V200820 01876000
- LA R2,1(0,R2) NEXT BYTE IN THE BIT MAP @V200820 01877000
- RNNBITS EQU * @V200820 01878000
- BXLE R9,R6,RNFBITS CONTINUE @V200820 01879000
- L R9,RDEVNICL RESET TO START OF NICBLOK LIST @V200820 01880000
- RNFNICS EQU * START FORCED DISCONNECTS @V200820 01881000
- CALL DMKQCNCL CLEAR ANY 'RDEVCON' STACK @V200820 01882000
- L R5,ASYSVM SYSTEM VMBLOK WILL BE NEEDED @V200820 01883000
- RNFNICB EQU * @V200820 01884000
- L R1,NICQPNT CONTASK CHAIN @V200820 01885000
- LTR R1,R1 ANYTHING THERE ? @V200820 01886000
- BNP RNFNICC NO -- @V200820 01887000
- ST R1,RDEVCON PUT IT ON THE RDEVBLOK @V200820 01888000
- CALL DMKQCNCL GET RID OF THE CONTASK'S @V200820 01889000
- SLR R1,R1 @V200820 01890000
- ST R1,NICQPNT CLEAR NICBLOK CHAIN ANCHOR @V200820 01891000
- RNFNICC EQU * @V200820 01892000
- CL R5,NICUSER IS THERE AN ACTIVE USER ? @V200820 01893000
- BE RNFNNIC NO -- @V200820 01894000
- L R1,NICUSER SWITCH TO HIS VMBLOK @V407593 01895050
- SWTCHVM OPT=STAY @V407508 01896050
- CALL DMKQCNTO,AFFINITY FORCE DISCONNECT @V407593 01897050
- CALL DMKQCNTO FORCED DISCONNECT @V200820 01898000
- ST R5,NICUSER SET NICUSER = A(DMKSYSVM) @V200820 01899000
- RNFNNIC EQU * @V200820 01900000
- BXLE R9,R6,RNFNICB DO THEM ALL @V200820 01901000
- LR R1,R5 BACK TO THE SYSTEM VMBLOK @V407593 01902050
- BAL R7,SWITCH2 GO SWITCH IT @V407593 01903050
- EJECT 01905000
- RNRDUMP EQU * START RECOVERY PROCESS @V200820 01906000
- NI RDEVSTAT,255-RDEVRSVD NO LONGER IN USE @VM08809 01907000
- TM IOBSTAT,IOBCC3 WAS THAT A HARD-STOP ? @V200820 01908000
- BO HARDSTP YES - OPERATOR MESSAGE @V200820 01909000
- TM RDEVFLAG,RDEVAUTO AUTOMATIC DUMP/LOAD ? @V200820 01910000
- BZ OPMSGAC NO -- GIVE ACTION MESSAGE @V200820 01911000
- LA R2,463(0) DMKRNH463I RESTART IN PROGRESS @V200820 01912000
- BAL R7,CALLERM SETUP AND TYPE ERROR MESSAGE @V200820 01913000
- TM RDEVFLAG,RDEVLNCP+RDEVLCEP LOADED NOW ? @VM08809 01914000
- BZ RNRLOAD NO -- JUST RE-LOAD IT @V200820 01915000
- CALL DMKNLEMP,PARM=SYSTEM DUMP THE 370X @V407508 01916100
- LTR R2,R2 WAS THE DUMP SUCCESSFUL ? @VM01005 01917000
- BNZ RNIGNOR NO -- DON'T TRY TO RE-LOAD @VM01005 01918000
- RNRLOAD EQU * RE-LOAD AFTER SUCCESSFUL DUMP @V200820 01919000
- CALL DMKNLDR,PARM=SYSTEM RE-LOAD @V200820 01920000
- TM RDEVFLAG,RDEVLCEP EMULATOR LINES DEFINED ? @VM08809 01921000
- BZ RNIGNOR NO -- CLEAN UP & EXIT @VM08809 01922000
- CALL DMKCPVAE AUTOMATIC RE-ENABLE OF LINES @VM08809 01923000
- B RNIGNOR CLEAN UP AND EXIT @VM08838 01924000
- SPACE 2 01925000
- HARDSTP EQU * SEND OPERATOR PANIC MESSAGE @V200820 01926000
- LA R2,464(0) DMKRNH464I MUST HIT 370X "LOAD" @V200820 01927000
- BAL R7,CALLERM FORMAT AND TYPE MESSAGE @V200820 01928000
- B RNIGNOR WAIT FOR SOMETHING TO HAPPEN @V200820 01929000
- SPACE 2 01930000
- OPMSGAC EQU * SEND OPERATOR ACTION MESSAGE @V200820 01931000
- LA R2,462(0) DMKRNH462I IPL REQUIRED @V200820 01932000
- BAL R7,CALLERM SETUP AND TYPE ERROR MESSAGE @V200820 01933000
- B RNIGNOR FRET THE IOBLOK, EXIT @V200820 01934000
- EJECT 01935000
- RNTRACE EQU * TRACE FILTER FOR 370X ACTIVITY @VM01040 01936000
- AIF (NOT &TRACE(9)).RNOTRAC **AIF** 01937000
- TM TRACFLG2,TRAC11 TRACING ACTIVE FOR BTU'S ? @VA01914 01938000
- BZ RNOTRAC NO -- CHECK NETWORK TRACE @VA01914 01939000
- TRACE CODE=TRCNCP,R15,R1,R2 GET CURRENT TRACE ENTRY @V407508 01940100
- MVI 1(R15),X'00' CLEAR THE SECOND BYTE @VA01914 01942000
- MVC 2(14,R15),CONSRID MOVE IN THE ENTIRE BTU @VA01914 01943000
- RNOTRAC EQU * TEST FOR NETWORK TRACE @VA01914 01949000
- .RNOTRAC ANOP **ANOP** 01950000
- TM RDEVFLAG,RDEVTBTU BTU TRACING ACTIVE ? @VM01040 01951000
- BO RNTRAC1 YES - SAVE THE BTU @VM01040 01952000
- TM NICSTAT,NICLTRC RESOURCE TRACING ACTIVE ? @VM01040 01953000
- BZR R14 NO -- JUST RETURN @VM01040 01954000
- RNTRAC1 EQU * COPY THE BTU FOR LATER TRACING @VM01040 01955000
- STM R0,R15,BALRSAVE SAVE THE CURRENT REGISTERS @VM01040 01956000
- LH R2,CONDCNT DATA COUNT ON THE RESPONSE @VM01040 01957000
- CLI CONTCMD,X'77' UNSOLICITED BTU RESPONSE ? @VM01040 01958000
- BE RNTRAC2 YES - PASS ALL THE DATA @VM01040 01959000
- TM CONSYSR,X'07' LINE TRACE RESPONSE ? @VM01040 01960000
- BO RNTRAC2 YES - PASS ALL THE DATA @VM01040 01961000
- LA R2,4(0,0) PASS A MAXIMUM OF FOUR BYTES @VM01040 01962000
- RNTRAC2 EQU * BUILD SMALL BTU BUFFER @VM01040 01963000
- LA R0,6+7+CONDATA-CONSRID(,R2) PTR+SIZE+BTU+DATA @VM01040 01964000
- SRL R0,3(0) CONVERT TO DOUBLE-WORDS @VM01040 01965000
- CALL DMKFREE GET SOME FREE STORAGE @VM01040 01966000
- LR R3,R1 SAVE THE BUFFER ADDRESS @VM01040 01967000
- STH R0,4(0,R3) SAVE THE BUFFER SIZE FOR LATER @VM01040 01968000
- XC 0(4,R3),0(R3) CLEAR THE POINTER WORD @VM01040 01969000
- LA R2,CONDATA-CONSRID-1(0,R2) SIZE OF MOVE @VM01040 01970000
- LA R1,4(0,R3) POINT TO 'MINI-CONTASK' START @VM01040 01971000
- EX R2,MVCNTRL MOVE THE BTU AND DATA @VM01040 01972000
- LA R2,TRACENQ POINT TO QUEUE OF TRACE REQUESTS @VM01040 01973000
- RNTRAC3 EQU * QUEUE FOR LATER TRACING @VM01040 01974000
- ICM R1,15,0(R2) NEXT ONE ON THE CHAIN @VM01040 01975000
- BZ RNTRAC4 FOUND THE END @VM01040 01976000
- LR R2,R1 CONTINUE SEARCH @VM01040 01977000
- B RNTRAC3 . . . @VM01040 01978000
- RNTRAC4 EQU * @VM01040 01979000
- ST R3,0(0,R2) ENQUEUE FOR TRACING LATER ON @VM01040 01980000
- CL R3,TRACENQ WAS THE QUEUE EMPTY ? @VM01040 01981000
- BNE RNTRAC5 NO -- TRACER IS ALREADY ACTIVE @VM01040 01982000
- LA R4,TRACERS TRACER SUBROUTINE ENTRY @VM01040 01983000
- BAL R7,STKCPEX BUILD + STACK A CPEXBLOK @VM01040 01984000
- RNTRAC5 EQU * RESTORE REGS AND CONTINUE @VM01040 01985000
- LM R0,R15,BALRSAVE . . . @VM01040 01986000
- CLI CONTCMD,X'77' UNSOLICITED BTU RESPONSE ? @VM01040 01987000
- BER R14 YES - CONTINUE NORMALLY @VM01040 01988000
- TM CONSYSR,X'07' LINE TRACE RESPONSE ? @VM01040 01989000
- BO BTUFRET YES - PROCESSING COMPLETE @VM01040 01990000
- BR R14 RETURN @VM01040 01991000
- SPACE 2 01992000
- CALLIOER EQU * INDEPENDENT ERROR RECORDING CALL @V200820 01993000
- * POINTER TO "MINI-CONTASK" IS GR6 @V200820 01994000
- LR R1,R6 PASS MDR RECORD TO DMKIOERN @V200820 01995000
- CALL DMKIOERN RECORD THE DATA FROM THE NCP @V200820 01996000
- GOTO DMKDSPCH EXIT TO THE DISPATCHER @V200820 01997000
- EJECT 01998000
- TRACERS EQU * INDEPENDENT TRACING SUBROUTINE @V200820 01999000
- USING CONCCW2+4,R6 ADDRESSABILITY FOR BTU BUFFER @VM01040 02000000
- ICM R6,15,TRACENQ PICK UP NEXT BUFFER ADDRESS @VM01040 02001000
- BZ TRACEXT ALL DONE - EXIT TO DMKDSPCH @VM01040 02002000
- MVC TRACENQ(4),0(R6) DEQUEUE THE FIRST BUFFER @VM01040 02003000
- CLC DMKRNHTR(8),BLANKS IS TRACING STILL ACTIVE ? @V200820 02004000
- BE TRACFIN NO -- CLEAN UP AND EXIT @V200820 02005000
- LA R1,DMKRNHTR POINT TO THE RECEVIER'S USERID @V200820 02006000
- LA R0,8 . . . LENGTH @V200820 02007000
- CALL DMKSCNAU MAKE SURE HE'S STILL AROUND @V200820 02008000
- BNZ TRACFIN NOPE - FORCED TRACE END @V200820 02009000
- BAL R7,SWITCHVM @V407508 02010050
- LA R0,TRBUFSZ SIZE OF MY OUTPUT BUFFER @V200820 02013000
- CALL DMKFREE . . . @V200820 02014000
- LR R7,R1 ADDRESS THE BUFFER BY GR7 @V200820 02015000
- MVC 0(8,R7),BLANKS @V200820 02016000
- MVC 8((TRBUFSZ-1)*8,R7),0(R7) CLEAR THE BUFFER @V200820 02017000
- LR R2,R7 POINT TO LOCATION FOR TIME-STAMP @V200820 02018000
- SLR R1,R1 WE DON'T WANT THE DATE @V200820 02019000
- CALL DMKCVTDT TIME-STAMP THIS OUTPUT LINE @V200820 02020000
- MVC 9(4,R7),=C'READ' ASSUME IT'S A RESPONSE @VM01040 02021000
- CLI CONSYSR,X'00' IS THIS AN OUTPUT TRACE ? @VM01040 02022000
- BNE *+10 NO -- ALL SET @VM01040 02023000
- MVC 9(4,R7),=C'SENT' THIS WAS SENT TO THE NCP @VM01040 02024000
- MVI 13(R7),C'=' MINOR FRILL CHARACTER @V200820 02025000
- LA R4,15(0,R7) LOCATION FOR FIRST HALFWORD @V200820 02026000
- LA R3,7(0,0) NUMBER OF HALFWORDS IN BTU HDR @V200820 02027000
- LA R2,CONSRID FIRST HEADER HALFWORD @V200820 02028000
- EJECT 02029000
- TRACEHD EQU * FORMAT BTU HEADER FOR OUTPUT@V200820 02030000
- SLR R1,R1 @V200820 02031000
- ICM R1,2+1,0(R2) LOAD TWO BYTES OF DATA @V200820 02032000
- CALL DMKCVTBH CONVERT @V200820 02033000
- STCM R1,15,0(R4) MOVE INTO THE OUTPUT BUFFER @V200820 02034000
- LA R2,2(0,R2) NEXT DATA HALFWORD @V200820 02035000
- LA R4,5(0,R4) NEXT OUTPUT SLOT @V200820 02036000
- BCT R3,TRACEHD FORMAT THE ENTIRE HEADER @VA04487 02036100
- LH R2,CONDCNT DATA COUNT FROM THE BTU @V200820 02037000
- LTR R2,R2 IS THERE ANY ? @VA04487 02037100
- BNP TRACECK NO -- LEAVE DATA FIELD BLANK @VM01040 02038000
- TM CONSRID+1,INHIBIT PROTECTED READ DATA ? @VA04487 02038100
- BO TRACEIT YES - DO NOT TRACE THE DATA @V240820 02039000
- L R1,CONDATA FIRST WORD OF BTU DATA @VA04487 02039100
- CALL DMKCVTBH CONVERT @V200820 02040000
- STCM R0,15,51(R7) FIXED PLACE IN THE BUFFER @VA04487 02040100
- STCM R1,15,55(R7) . . . @V200820 02041000
- S R2,F4 FORMATTED THIS MUCH SO FAR @VA04487 02041100
- BNP TRACEIT NO MORE TO DO - PRINT THE LINE @V200820 02042000
- TM CONSYSR,X'07' LINE TRACE RESPONSE BTU ? @VA04487 02042100
- BNO TRACEIT NO -- ONLY FOUR BYTES AVAILABLE @V200820 02043000
- SRL R2,2(0) CONVERT DATA COUNT TO WORD COUNT @VA04487 02043100
- CH R2,TRACMAX MORE THAN ONE LINE WORTH ? @V200820 02044000
- BNH *+8 NO -- FORMAT ALL OF IT @VA04487 02044100
- LH R2,TRACMAX YES - FORMAT ONLY EIGHT WORDS @V200820 02045000
- LA R4,61(0,R7) START FOR SECOND DATA WORD @VA04487 02045100
- LA R3,CONDATA+4 . . . @V200820 02046000
- TRACELN EQU * FORMAT LINE TRACE RESPONSE DATA @V200820 02047000
- L R1,0(0,R3) NEXT DATA WORD @V200820 02048000
- CALL DMKCVTBH CONVERT @V200820 02049000
- STCM R0,15,0(R4) . . . @V200820 02050000
- STCM R1,15,4(R4) . . . @V200820 02051000
- LA R3,4(0,R3) NEXT DATA WORD @V200820 02052000
- LA R4,10(0,R4) NEXT OUTPUT SLOT @V200820 02053000
- BCT R2,TRACELN CONTINUE . . . @V200820 02054000
- B TRACEIT GO PRINT THE OUTPUT LINE @VM01040 02055000
- EJECT 02056000
- TRACECK EQU * NO DATA RETURNED WITH THE BTU @VM01040 02057000
- TM CONSYSR,X'47' LINE TRACE RESPONSE ? @VM01040 02058000
- BO TRACEFT YES - DON'T TRACE EMPTY ONES @VM01040 02059000
- TRACEIT EQU * PRINT TRACE DATA FOR CLASS F USER@V200820 02060000
- SR R0,R0 @V200820 02061000
- LH R2,TRCLNCT LINE COUNT FOR PAGE-EJECT @V200820 02062000
- LA R2,1(0,R2) . . . @V200820 02063000
- STH R2,TRCLNCT SAVE COUNT FOR NEXT TIME THROUGH @V200820 02064000
- C R2,F60 DO WE SKIP A PAGE ? @V200820 02065000
- BNH TRACEWR NO -- @V200820 02066000
- STH R0,TRCLNCT RESET LINE COUNT TO ZERO @V200820 02067000
- CALL DMKVSPRT GR0 = 0 MEANS PAGE EJECT @V200820 02068000
- TRACEWR EQU * @V200820 02069000
- LR R1,R7 BUFFER ADDRESS TO GR1 @V200820 02070000
- LA R0,TRACLLN LINE LENGTH FOR PRINT @V200820 02071000
- CALL DMKVSPRT PRINT THE TRACE OUTPUT @V200820 02072000
- TRACEFT EQU * @VM01040 02073000
- LR R1,R7 BUFFER AGAIN @V200820 02074000
- LA R0,TRBUFSZ SIZE FOR DMKFRET @V200820 02075000
- CALL DMKFRET RETURN BUFFER TO FREE STORAGE @V200820 02076000
- NI CONSYSR,255-PHASE3 TURN OFF PHASE BITS @V200820 02077000
- CLI CONSYSR,X'87' LINE TRACE TERMINATED ? @V200820 02078000
- BNE TRACEPR NO -- O.K. AS IS @V200820 02079000
- NI NICSTAT,255-NICLTRC TURN OFF LINE TRACE FLAG @V200820 02080000
- MSG 'DMKRNH465I LINE TRACE TERMINATED DUE TO ERROR' @V200820 02081000
- CALL DMKQCNWT,PARM=NORET+ERRMSG TELL THE USER @V200820 02082000
- B TRACFIN DISABLE TRACING @V200820 02083000
- EJECT 02084000
- TRACEPR EQU * @V200820 02085000
- CL R2,F8 FATAL ERROR FROM DMKVSPRT ? @V200820 02086000
- BNE TRACEFR NO -- FRET MINI-CONTASK + EXIT @V200820 02087000
- TRACFIN EQU * TRACE HAS BEEN TERMINATED @V200820 02088000
- SWITCH SWITCH CONTROL TO I/O PROCESSOR @V407593 02088500
- NI RDEVFLAG,255-RDEVTBTU TURN OFF BTU TRACE @V200820 02089000
- MVC DMKRNHTR(8),BLANKS CLEAR OUT USERID @V200820 02090000
- MVC TRACEAD(4),ZEROES CLEAR OUT ADDRESS FIELDS @VM01040 02091000
- L R0,F60 RESET LINE COUNT FOR NEXT TIME @V200820 02092000
- STH R0,TRCLNCT . . .(PAGE EJECT FIRST TIME) @V200820 02093000
- TM NICSTAT,NICLTRC LINE TRACE ACTIVE ? @V200820 02094000
- BZ TRACEFR NO -- JUST FRET MIN-CONTASK @V200820 02095000
- NI NICSTAT,255-NICLTRC TURN OFF TRACING FLAG @V200820 02096000
- TM NICTYPE,NICLINE IS THIS A LINE RESOURCE ? @VM01040 02097000
- BZ TRACEFR NO -- NO NEED TO RESET IT @VM01040 02098000
- LH R1,NICNAME RESOURCE I.D. @V200820 02099000
- LA R0,CTRMLTR TERMINATE LINE TRACE @V200820 02100000
- CALL DMKRNHND,PARM=NORET TURN OFF NCP TRACE @V200820 02101000
- TRACEFR EQU * @V200820 02102000
- LH R0,CONCCW3 SIZE OF "MINI-CONTASK" @V200820 02103000
- LR R1,R6 . . . @V200820 02104000
- CALL DMKFRET RETURN BUFFER TO FREE STORAGE @V200820 02105000
- B TRACERS LOOP BACK FOR ANOTHER BUFFER @VM01040 02106000
- SPACE 02107000
- TRACEXT EQU * RETURN TO THE DISPATCHER @VM01040 02108000
- GOTO DMKDSPCH EXIT TO THE DISPATCHER @V200820 02109000
- SPACE 2 02110000
- TRBUFSZ EQU 17 BUFFER = 136 BYTES TOTAL @V200820 02111000
- TRACLLN EQU 132 OUTPUT LENGTH = 132 BYTES @V200820 02112000
- SPACE 02113000
- TRACMAX DC H'7' MAX = 32 BYTES LINE TRACE OUTPUT @V200820 02114000
- TRCLNCT DC H'60' LINE COUNT ACCUMULATION @V200820 02115000
- TRACENQ DC F'0' QUEUE OF TRACE BUFFERS @VM01040 02116000
- DS 0D @V200820 02117000
- DMKRNHTR DC CL8' ' USERID RECEIVING TRACE OUTPUT @V200820 02118000
- TRACEAD DC H'0' ADDRESS OF 370X BEING TRACED @VM01040 02119000
- TRACRID DC H'0' RESOURCE I.D. BEING TRACED @VM01040 02120000
- USING CONTASK,R6 RESET NORMAL ADDRESSABILITY @V200820 02121000
- EJECT 02122000
- PASSBTU EQU * MOVE BTU RESPONSE TO FREE STORAGE@V200820 02123000
- LH R2,CONDCNT NUMBER OF BYTES OF DATA @V200820 02124000
- PASTBTU EQU * MOVE BTU WITH FIXED DATA LENGTH @V200820 02125000
- LA R0,CONDATA-CONCCW3+7(,R2) ALLOW FOR BTU, ALSO @V200820 02126000
- SRL R0,3(0) SHIFT FOR DOUBLE-WORD COUNT @V200820 02127000
- CALL DMKFREE GET A SMALL BUFFER FOR CALLER @V200820 02128000
- STH R0,0(0,R1) INCLUDE THE BUFFER SIZE FOR FRET @V200820 02129000
- LA R2,CONDATA-CONSRID-1(,R2) LENGTH FOR MOVE @V200820 02130000
- EX R2,MVCNTRL MOVE BTU AND DATA TO SMALL BUFFER@V200820 02131000
- BR R7 RETURN @V200820 02132000
- SPACE 2 02133000
- CALLERM EQU * SETUP FOR OPERATOR MESSAGE @V200820 02134000
- LH R1,IOBRADD REAL ADDRESS FROM IOBLOK @V200820 02135000
- CALL DMKCVTBH GET EBCDIC DATA IN GR1 @V200820 02136000
- ICM R1,8,BLANKS . . .PLUS A HIGH-ORDER BLANK @V200820 02137000
- L R0,MSGHEAD MODULE I.D., LENGTH = ZERO @V200820 02138000
- O R2,=X'B8C90000' OPERATOR, ALARM, RETURN @V200820 02139000
- CALL DMKERMSG,AFFINITY SEND MSG. WITH THE HEADER @V407593 02140100
- BR R7 RETURN @V200820 02141000
- EJECT 02142000
- LINEBRK EQU * LINE CONNECTION FAILURE @V200820 02143000
- TM CONSTAT,CONRESP IS THERE A SAVE-AREA ? @V200820 02144000
- BZ LINERTN NO -- RETURN TASK TO DMKQCN @V200820 02145000
- L R1,CONRETN PICK UP SAVE-AREA ADDRESS @V200820 02146000
- LA R2,12(0) LINE BREAK RETURN CODE @V200820 02147000
- ST R2,SAVER2-SAVEAREA(0,R1) SET IN CALLER'S GR2 @V200820 02148000
- LINERTN EQU * RETURN FINISHED CONTASK TO DMKQCN@V200820 02149000
- SLR R1,R1 CLEAR CONTASK FORWARD POINTER @V200820 02150000
- ST R1,CONPNT ...TO AVOID TROUBLE WITH DMKQCN @V200820 02151000
- CALL DMKQCNET RETURN TASK FOR PROCESSING @V200820 02152000
- BR R7 RETURN @V200820 02153000
- SPACE 1 02154000
- FRETIOER EQU * FRET AN IOERBLOK FROM AN IOBLOK @V200820 02155000
- L R1,IOBIOER PICK UP IOERBLOK @V200820 02156000
- LTR R1,R1 MAKE SURE THERE IS ONE @V200820 02157000
- BCR 8,R7 NOPE - JUST RETURN @V200820 02158000
- LA R0,IOERSIZE @V200820 02159000
- AH R0,IOEREXT-IOERBLOK(,R1) EXTENSION, IF ANY @V200820 02160000
- CALL DMKFRET RETURN THE BLOCK TO FREE STORAGE @V200820 02161000
- SLR R1,R1 @V200820 02162000
- ST R1,IOBIOER CLEAR OUT THE IOBLOK FIELD @V200820 02163000
- BR R7 ...AND RETURN @V200820 02164000
- SPACE 02165000
- FRETIOB EQU * FRET AN IOBLOK @V200820 02166000
- LTR R10,R10 DO WE HAVE AN IOBLOK NOW ? @V200820 02167000
- BCR 8,R7 NO -- JUST RETURN @V200820 02168000
- ST R7,TEMPSAVE SAVE THIS FOR A MOMENT @V200820 02169000
- BAL R7,FRETIOER RELEASE IOERBLOK, IF ANY @V200820 02170000
- L R7,TEMPSAVE ... @V200820 02171000
- LR R1,R10 @V200820 02172000
- LA R0,IOBSIZE @V200820 02173000
- CALL DMKFRET RETURN IOBLOK TO FREE STORAGE @V200820 02174000
- SLR R10,R10 CLEAR FOR LATER TESTS @VM08513 02175000
- BR R7 RETURN @V200820 02176000
- EJECT 02177000
- TASKENQ EQU * QUEUE CONTASK FOR LATER EXECUTION@V200820 02178000
- LA R1,NICQPNT-(CONPNT-CONTASK) INITIAL BACK PTR @V200820 02179000
- TASKCHN EQU * FIND WHERE TO PUT THIS CONTASK @V200820 02180000
- LR R2,R1 SAVE A BACK POINTER @V200820 02181000
- L R1,CONPNT-CONTASK(,R2) NEXT CONTASK, IF ANY @V200820 02182000
- LTR R1,R1 HIT THE END OF THE CHAIN ? @V200820 02183000
- BNP TASKINS YES - INSERT HERE @V200820 02184000
- TM CONSTAT-CONTASK(R1),CONRTRY FIXED TASK ? @V200820 02185000
- BNZ TASKCHN YES - CANNOT INSERT HER@V200820 02186000
- TM CONSTAT,CONRTRY NEW TASK = RETRY ? @V200820 02187000
- BO TASKINS YES - PUT IT HERE @V200820 02188000
- TM CONSTAT-CONTASK(R1),CONSPLT SPLIT TASK ? @V200820 02189000
- BO TASKCHN YES - CANNOT INSERT HER@V200820 02190000
- TM CONPARM-CONTASK(R1),PRIORITY+INHIBIT FIXED ? @V200820 02191000
- BNZ TASKCHN YES -- @V240820 02192000
- TM CONPARM,PRIORITY NEW TASK = PRIORITY ? @V200820 02193000
- BZ TASKCHN NO -- CONTINUE SEARCH @V200820 02194000
- CL R1,NICQPNT AT THE BEGINNING NOW ? @V200820 02195000
- BE TASKCHN YES - DO NOT PREEMPT FIRST TASK @V200820 02196000
- TASKINS EQU * INSERT NEW TASK IN CHAIN @V200820 02197000
- ST R6,CONPNT-CONTASK(,R2) PATCH INTO THE CHAIN @V200820 02198000
- ST R1,CONPNT . . . @V200820 02199000
- BR R7 RETURN @V200820 02200000
- SPACE 2 02201000
- TESTENV EQU * SET GR4 FOR ATTENTION HANDLING @V200820 02202000
- LA R4,4(0,0) ASSUME SINGLE-ATTENTION CODE @V200820 02203000
- L R1,NICUSER VMBLOK OF INTERFACE OWNER @V200820 02204000
- TM VMMLEVEL-VMBLOK(R1),VMMCPENV CP MODE ? @V200820 02205000
- BCR 8,R14 NO -- ALL SET AS IS @V200820 02206000
- LA R4,8(0,0) MULTIPLE ATTENTION CODE @V200820 02207000
- BR R14 ...RETURN @V200820 02208000
- SPACE 2 02209000
- RETTASK EQU * CHAIN TASK FOR RETURN TO DMKQCN @V200820 02210000
- L R1,IOBMISC2 LAST TASK ON RETURN CHAIN NOW @V200820 02211000
- ST R6,CONPNT-CONTASK(,R1) ADD THIS ONE TO CHAIN @V200820 02212000
- ST R6,IOBMISC2 THIS IS NOW THE LAST ONE @V200820 02213000
- SLR R1,R1 @V200820 02214000
- ST R1,CONPNT CLEAR THE FORWARD POINTER @V200820 02215000
- BR R14 RETURN @V200820 02216000
- EJECT 02217000
- * EQUATES USED FOR RESPONSE CHECKING FROM THE NCP: 02218000
- * 02219000
- ERROR EQU B'10000000' ERROR RESPONSE INDICATION @V200820 02220000
- PHASE3 EQU B'01100000' PHASE 3 (FINAL) RESPONSE @V200820 02221000
- MTA2741 EQU X'00' MTA RESPONSE FOR 2741 @V200820 02222000
- MTATELE EQU X'22' MTA RESPONSE FOR CPT-TWX @VM08772 02223000
- MTA2740T EQU X'06' MTA RESPONSE FOR 2740 XMIT CTL @VM08772 02224000
- MTA1050 EQU X'1C' MTA RESPONSE FOR 1050 @VM08772 02225000
- MTA2740B EQU X'02' MTA RESPONSE FOR 2740 BASIC @VM08772 02226000
- SPACE 02227000
- MVCNTRL MVC 2(*-*,R1),CONSRID EXECUTED FOR CONTROL DATA @V200820 02228000
- MVCR1R3 MVC 0(*-*,R1),0(R3) EXECUTED MOVE CHARACTERS @V200820 02229000
- SETCBIT OI 0(R2),*-* EXECUTED FOR BUILDING CKPBLOK @V200820 02230000
- TESTBIT TM 0(R10),*-* EXECUTED FOR READING CKPBLOK @V200820 02231000
- DS 0F @V200820 02232000
- MSGHEAD DC C'RNH',X'00' GR0 HEADER INFO FOR DMKERMSG @V200820 02233000
- SPACE 02234000
- NOPCCW DC X'0300000020000001' UTILITY NO-OP CCW @V200820 02235000
- SPACE 02236000
- TTYMASK DC C'HHHHHHHH',X'0D' @V200820 02237000
- DC C'SSSSSSSS',X'0D' @V200820 02238000
- DC C'********',X'0D' @V200820 02239000
- TTYMASL EQU *-TTYMASK LENGTH OF MASKING STRING @V200820 02240000
- SPACE 02241000
- IBMMASK DC X'14',C'HHHHHHHH',8X'16' @VM08679 02242000
- DC C'SSSSSSSS',4X'1616' @V200820 02243000
- DC C'********',4X'1616' @V200820 02244000
- IBMMASL EQU *-IBMMASK LENGTH OF MASKING STRING @V200820 02245000
- SPACE 02246000
- ONLINET DC X'0D25E5D461F3F7F040D6D5D3C9D5C5400D2517' @VM08772 02247000
- ONLINEM DC X'1517A59461F3F7F04096959389958540151717' @V200820 02248000
- ONLINEL EQU *-ONLINEM MESSAGE LENGTH @V200820 02249000
- SPACE 02250000
- DATCHKT DC X'0D2517D9C5C1C440C5D9D9D6D90D2517' @VM08772 02251000
- DATCHKM DC X'15171799858184408599999699151717' @VM08772 02252000
- DATCHKL EQU *-DATCHKM LENGTH OF READ ERROR MESSAGE @VM08772 02253000
- EJECT 02254000
- LTORG @V200820 02255000
- COPY NETWORK @V200820 02257000
- COPY IOBLOKS @V200820 02259000
- COPY IOER @V200820 02261000
- COPY RBLOKS @V200820 02263000
- COPY VMBLOK @V200820 02265000
- COPY SAVE @V200820 02267000
- COPY BTUCMD @V200820 02269000
- COPY EQU @V200820 02271000
- COPY DEVTYPES @V200820 02273000
- PSA @V200820 02275000
- SPACE 2 02276000
- END DMKRNH @V200820 02277000
ibm/vm370-lib/cp/dmkrnh.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator