ibm:vm370-lib:cms:dmscit.assemble_src
Table of Contents
DMSCIT Source
References
- Fixes Applied : 2
- This Source Date : Tuesday, December 12, 1978
- Last Fix ID : [HRC002DS]
Source Listing
- DMSCIT.ASSEMBLE.txt
- CIT TITLE 'DMSCIT (CMS) VM/370 - RELEASE 6' 00001000
- SPACE 2 00002000
- * 00020000
- * MODULE: 00021000
- * 00022000
- * DMSCIT 00023000
- * 00024000
- * FUNCTION: 00025000
- * 00026000
- * TO PROCESS THE INTERRUPTIONS FOR ALL CMS TERMINAL 00027000
- * INPUT/OUTPUT OPERATIONS AND START THE NEXT I/O 00028000
- * OPERATION UPON COMPLETION OF THE CURRENT I/O 00029000
- * OPERATION. 00030000
- * 00031000
- * ENTRY POINTS: 00032000
- * 00033000
- * DMSCITA,CONSI - PROCESS TERMINAL INTERRUPTS 00034000
- * DMSCITB - START NEXT I/O OPERATION 00035000
- * DMSCITDB - TO FREE I/O BUFFERS FROM STACKS 00036000
- * 00037000
- * ATTRIBUTES: 00038000
- * 00039000
- * REENTRANT, NUCLEUS RESIDENT, CALLED BY BALR 00040000
- * 00041000
- * SUBROUTINE 00042000
- * 00043000
- * DMSCITA 00044000
- * 00045000
- * FUNCTION: 00046000
- * 00047000
- * TO PROCESS CMS TERMINAL I/O INTERRUPTS. 00048000
- * 00049000
- * ENTRY POINT 00050000
- * 00051000
- * DMSCITA 00052000
- * 00053000
- * ENTRY REQUIREMENTS: 00054000
- * 00055000
- * GPR 5 = ADDRESS OF DEVICE TABLE EENTRY FOR CONSOLE. 00056000
- * 00057000
- * EXIT CONDITIONS: 00058000
- * 00059000
- * GPR 15 = 0 INDICATES DE INTERRUPT RECEIVED, NO LONGER 00060000
- * WAITING. 00061000
- * 00062000
- * GPR 15 = 4 INDICATES STILL WAITING FOR DE INTERRUPT. 00063000
- * 00064000
- * ERROR- 00065000
- * GOTO DMSERR ON PERMANENT CONSOLE ERROR 00066000
- * 00067000
- * CALLS TO OTHER ROUTINES: 00068000
- * 00069000
- * DMSCITB, DMSFREB, DMSERR 00070000
- * 00071000
- * EXTERNAL REFERENCES: 00072000
- * 00073000
- * DMSNUC 00074000
- * 00075000
- * TABLES / WORKAREAS: 00076000
- * 00077000
- * NONE 00078000
- * 00079000
- * REGISTER USAGE: 00080000
- * 00081000
- * GPR0-9, 11, 12 - WORK REGISTERS 00082000
- * GPR5 - DEVICE TABLE ENTRY 00083000
- * GPR10 - NOT USED 00084000
- * GPR13 - BASE REGISTER 00085000
- * GPR14 - LINKAGE 00086000
- * 00087000
- * OPERATION: 00088000
- * 00089000
- * UPON RECEIVING CONTROL DMSCITA DETERMINES THE TYPE OF 00090000
- * INTERRUPTION. IF THE STATUS BYTES INDICATE NEITHER 00091000
- * DEVICE END, UNIT EXCEPTION NOR ATTENTION, DMSCITA 00092000
- * RETURNS TO DMSITI 00093000
- * WITH REGISTER 15 SET TO 4 INDICATING THAT THE I/O IS 00094000
- * STILL IN PROCESS. 00095000
- * 00096000
- * IF DEVICE END STATUS IS PRESENT, INDICATING THE 00097000
- * COMPLETION OF AN I/O OPERATION, DMSCITA TESTS WHETHER 00098000
- * THE FINISHED OPERATION WAS A READ OR A WRITE. IF IT 00099000
- * WAS A WRITE, DMSCITA DELETES THE FIRST WRITE BUFFER 00100000
- * FROM THE OUTPUT STACK AREA AND MOVES THE REMAINING 00101000
- * WRITE BUFFERS TO THE BEGINNING OF THE OUTPUT STACK 00102000
- * AREA. IF THERE ARE ANY MORE WRITE OPERATIONS 00103000
- * PENDING, DMSCITA BALR'S TO DMSCITB TO START THE FIRST 00104000
- * OPERATION IN THE OUTPUT STACK. IF THE OPERATION IS 00105000
- * STARTED SUCCESSFULLY, DMSCITA RETURNS TO DMSITI WITH 00106000
- * REGISTER 15 SET TO ZERO. IF THE OPERATION WAS 00107000
- * STARTED UNSUCCESSFULLY, BECAUSE THE USER PUSHED THE 00108000
- * ATTENTION KEY, IT IS TREATED THE SAME AS ANY 00109000
- * ATTENTION INTERRUPT. ANY OTHER ERRORS CAUSE 00110000
- * TERMINATION. 00111000
- * 00112000
- * IF THE DEVICE END STATUS INDICATES THAT A READ 00113000
- * OPERATION COMPLETED, DMSCITA TESTS WHETHER THE READ 00114000
- * WAS GENERATED BY AN ATTENTION INTERRUPT. IF IT WAS A 00115000
- * NORMAL READ, THE INPUT BUFFER IS CHAINED TO THE END 00116000
- * OF THE FINISH READ STACK. IF ANY WRITES ARE PENDING, 00117000
- * THE FIRST ONE IS STARTED AS THOUGH A WRITE OPERATION 00118000
- * HAD JUST COMPLETED. IF THE READ WAS GENERATED BY AN 00119000
- * ATTENTION, THE INPUT BUFFER IS CHECKED TO SEE IF IT 00120000
- * CONTAINS THE HO, HT, RT, RO, HX, SO, OR HB 00121000
- * IMMEDIATE COMMANDS. IF NOT, IT IS TREATED 00122000
- * THE SAME AS A NORMAL READ. IF HO IS FOUND, 00123000
- * THE HALT OVERRIDE FLAG IS SET. IF HT IS FOUND, 00124000
- * THE HALT TYPING FLAG IS SET. IF RT IS FOUND, 00125000
- * THE HALT TYPING FLAG IS SET OFF. IF HX IS FOUND, 00126000
- * THE HALT EXECUTION FLAG IS SET. IF SO IS 00126400
- * FOUND, THE SUSPEND OVERRIDES FLAG IS SET. 00126800
- * IF RO IS FOUND, THE OVERRIDES FLAG IS SET AND 00127200
- * THE SUSPEND OVERRIDES FLAG IS TURNED OFF. 00127600
- * IF HB IS FOUND, THE BATSTOP FLAG IS SET. 00128000
- * IF ONE OF THE IMMEDIATE COMMANDS IS FOUND, THE INPUT 00128400
- * BUFFER IS RETURNED TO FREE STORAGE BY BALRING TO 00129000
- * ROUTINE DMSFREB. ANY PENDING WRITE OPERATIONS ARE 00130000
- * THEN STARTED. 00131000
- * 00132000
- * IF THE I/O INTERRUPT WAS CAUSED BY AN ATTENTION, 00133000
- * THE ATTENTION EXIT QUEUE IS SEARCHED FOR AN 00134000
- * ELIGIBLE EXIT. IF ONE IS FOUND CONTROL IS PASSED 00135000
- * TO IT. ON RETURN DMSCITA RETURNS TO DMSITI. 00136000
- * IF NO EXIT IS FOUND 00137000
- * DMSCITA GETS 17 DOUBLE WORDS FROM FREE STORAGE BY 00138000
- * BALRING TO ROUTINE DMSFREB. THE ADDRESS OF THE BUFFER 00139000
- * IS PLACED IN THE PENDING READ POINTER AND DMSCITB IS 00140000
- * BALR'ED TO START THE I/O. RETURN IS THEN MADE TO 00141000
- * DMSITI. 00142000
- * IF UNIT EXCEPTION THE COMPLETED OPERATION TYPE 00143000
- * IS CHECKED. IF IT IS AN ATTENTION READ THE READ 00144000
- * START I/O IS REISSUED. OTHERWISE THE RESIDUAL 00145000
- * CSW BYTE COUNT IS COMPARED TO THE CCW BYTE COUNT. 00146000
- * IF NOT EQUAL THE READ SIO IS REISSUED (USER 00147000
- * CANCELLED INPUT LINE) . IF EQUAL, THE READ TER- 00148000
- * MINATED FLAG IS SET AND THE INTERRUPT IS TREATED 00149000
- * AS AN ATTENTION (ABOVE). 00150000
- * 00151000
- * SUBROUTINE 00152000
- * 00153000
- * DMSCITB 00154000
- * 00155000
- * FUNCTION: 00156000
- * 00157000
- * TO START THE NEXT TERMINAL INPUT/OUTPUT OPERATION. 00158000
- * 00159000
- * ENTRY POINT 00160000
- * 00161000
- * DMSCITB 00162000
- * 00163000
- * ENTRY REQUIREMENTS: 00164000
- * 00165000
- * GPR 1 = ADDRESS OF INPUT OR OUTPUT BUFFER. 00166000
- * 00167000
- * EXIT CONDITIONS: 00168000
- * 00169000
- * GPR 15 = 0 IF I/O WAS SUCCESSFULLY STARTED. 00170000
- * GPR 15 = 4 IF CSW WAS STORED. 00171000
- * GPR 15 = 5 IF ATTENTION READ ISSUED WITH A READ OUTSTANDING 00171500
- * 00172000
- * ERROR- 00173000
- * 00174000
- * GOTO DMSERR V1A DMSCITA ON PERMANENT CONSOLE ERROR 00175000
- * 00176000
- * CALLS TO OTHER ROUTINES: 00177000
- * 00178000
- * DMSERR 00179000
- * 00180000
- * EXTERNAL REFERENCES: 00181000
- * 00182000
- * DMSNUC 00183000
- * 00184000
- * TABLES / WORKAREAS: 00185000
- * 00186000
- * NONE. 00187000
- * 00188000
- * REGISTER USAGE: 00189000
- * 00190000
- * GPR1, GPR8 - WORK REG. 00191000
- * GPR9 - DEVICE ADDRESS 00192000
- * GPR14 - RETURN 00193000
- * GPR15 - BASE 00194000
- * 00195000
- * OPERATION: 00196000
- * 00197000
- * DMSCITB BUILDS A CCW STRING AND STARTS THE I/O 00198000
- * OPERATION. IF THE I/O STARTED SUCCESSFULLY RETURN IS 00199000
- * MADE TO THE CALLER WITH REGISTER 15 SET TO ZERO. IF 00200000
- * THE CSW WAS STORED BY THE START I/O INSTRUCTION, 00201000
- * REGISTER 15 IS SET TO 4 BEFORE RETURNING. IF THE 00202000
- * CHANNEL IS BUSY, A TEST I/O INSTRUCTION IS EXECUTED 00203000
- * UNTIL THE CHANNEL IS FREE. AT WHICH TIME, THE I/O 00204000
- * OPERATION IS RETRYED. 00205000
- * 00206000
- * SUBROUTINE 00207000
- * 00208000
- * DMSCITDB 00209000
- * 00210000
- * FUNCTION 00211000
- * 00212000
- * CLEAR READ AND WRITE STACKS. 00213000
- * 00214000
- * ENTRY CONDITIONS 00215000
- * 00216000
- * R14=RETURN, R15=ADDRESSABILITY 00217000
- * 00218000
- * CALLS TO OTHER ROUTINES 00219000
- * 00220000
- * DMSFREB 00221000
- * 00222000
- * EXTERNAL REFERENCES 00223000
- * 00224000
- * DMSNUC 00225000
- * 00226000
- * TABLES/WORKAREAS 00227000
- * 00228000
- * NONE 00229000
- * 00230000
- * REGISTER USAGE 00231000
- * 00232000
- * R13 BASE 00233000
- * 0,1,3-6,14,15 WORK 00234000
- * 00235000
- * OPERATION 00236000
- * RESET THE WRITE STACK POINTER TO ELIMINATE ALL 00237000
- * STACKED WRITES. CLEAR FINISHED AND PENDING READ 00238000
- * POINTERS, RETURN ANY ATTENTION READ BUFFERS TO 00239000
- * FREE STORAGE. RETURN TO CALLER 00240000
- *. 00241000
- EJECT 00242000
- DMSCITA START 00243000
- CONSI EQU * 00244000
- ENTRY CONSI 00245000
- ENTRY DMSCITB,DMSCITDB 00246000
- USING *,13 00247000
- LR 13,15 RESET BASE 00248000
- USING NUCON,R0 00249000
- USING NUCDSECT,5 00250000
- LH 9,NCDEVAD SET R9 TO 1052 ADDRESS 00251000
- LR 12,14 SAVE RETURN REGISTER 00252000
- NI TSOFLAGS,255-TSOATCNL RESET READ CANCELLED FLAG 00253000
- CKSTAT TM CSW+5,X'FF' ANY SEVERE ERRORS 00254000
- BZ CKSTAT1 NO 00255000
- CITERR1 DMSERR TEXT='PERMANENT CONSOLE ERROR, RE-IPL CMS', X00256000
- TYPCALL=BALR,HALT=YES,DISP=SIO,LET=T,NUM=171 00257000
- BAL R14,CITERR1 00258000
- CKSTAT1 CLI CSW+4,CE+DE CHANNEL END DEVICE END P3108 00259000
- BE CEDE YES, LOOK FOR POSSIBLE ATTENTION P3108 00260000
- TM CSW+4,DE DEVICE END WO/CE P3108 00261000
- BO HNDLDE YES, GO HANDLE IT 00262000
- TM CSW+4,ATTN NO, WAS IT FOR ATTENTION?" 00263000
- BO SETWAIT BRANCH IF SO @VA05051 00264500
- TM CSW+4,UE WAS LINE CANCELLED 00265000
- BO HNDLUE YES 00266000
- TM CSW+4,CE NO, WAS IT CHANNEL END? 00267000
- BO CEONLY YES, GO WAIT FOR DE 00268000
- BAL R14,CITERR1 00269000
- CEONLY LA 15,CE SET R15 FOR IOINT 00270000
- BR 14 AND RETURN TO IT 00271000
- CEDE L R2,CSW FIND CHANNEL PROGRAM P3108 00272000
- SH R2,=H'16' P3108 00273000
- TM 0(R2),X'0A' WAS IT A READ P3108 00274000
- BNO HNDLDE NO P3108 00275000
- L R2,0(R2) GET READ BUFFER ADDRESS P3108 00276000
- CLI 0(R2),0 WAS IT A NULL LINE P3108 00277000
- BNE HNDLDE NO P3108 00278000
- TIO 0(R9) CHECK CONSOLE P3108 00279000
- BZ HNDLDE CLEAR, GO HANDLE DEVICE END P3108 00280000
- BC 4,CSWSTORD BRANCH IF CSW STORED P3108 00281000
- BAL R14,CITERR1 SOMETHING WRONG P3108 00282000
- CSWSTORD OI TSOFLAGS,TSOATCNL ASSUME READ CANCELLED BY ATTENTP3108 00283000
- XC PENDREAD(4),PENDREAD CLEAR PENDING READ POINTERP3108 00284000
- B HNDLATTN HANDLE ATTENTION P3108 00285000
- EJECT 00285500
- HNDLUE L R1,CURRIOOP GET READ PARAMETERS 00286000
- TM 0(R1),LONGOP+NOATTN @V2D4598 00286250
- BZ HNDLUE2 NORMAL, CLEAR & RESTART @V2D4598 00286500
- BM HNDLUE3 LONG, CLEAR & RESTART @V2D4598 00286750
- OI 0(R1),RDATTNZ LONG, NO ATTN RESTART @V2D4598 00287000
- L R2,CSW ASSUMING IT'S OUR CCW, @V2D4598 00287250
- LA R2,8(,R2) THAT IS... @V2D4598 00287500
- B HNDLDE2 RETURN WHAT WE GOT @V2D4598 00287750
- HNDLUE2 EQU * @V2D4598 00288000
- LA R14,LNNORMOP(,R1) POINT CLEAR-SINK TO BUFFER @V2D4598 00288250
- SR R15,R15 AND GET BUFFER LENGTH @V2D4598 00288500
- IC R15,TONRMLEN(,R1) INTO MVCL SINK-LENGTH @V2D4598 00288750
- B HNDLUE4 GO CLEAR BUFFER @V2D4598 00289000
- HNDLUE3 EQU * @V2D4598 00289250
- L R14,0(,R1) POINT CLEAR-SINK AT USER BUFFER @V2D4598 00289500
- LH R15,TOLNGLEN(,R1) AND ITS LENGTH IN MVCL REG @V2D4598 00289750
- HNDLUE4 EQU * @V2D4598 00290000
- SR R3,R3 ZERO MVCL SOURCE-LENGTH, @V2D4598 00290250
- MVCL R14,R2 AND CLEAR BUFFER 00290500
- TM DBGFLAGS,DBGEXEC+DBGEXINT ARE WE IN DEBUG ? @VA00770 00291100
- BO NORMRD YES..HOLD ON THE READ @VA00770 00291200
- B STRTCON1 REISSUE READ 00292000
- EJECT 00294000
- HNDLDE L 2,CSW GET LAST COMMAND ADDRESS+8 00295000
- LA 2,0(,2) 00296000
- HNDLDE2 LA R3,CONCCWS+16 @V2D4598 00297000
- CR 2,3 IS IT MY CCW STRING? 00298000
- BE CSWOK YES, GO ON 00299000
- CLC NUMPNDWR,=H'0' NO, ARE THERE ANY WRITES PENDING ? 00300000
- BE CLR15 NO, IGNORE THE 'DE' 00301000
- LTR 2,2 WAS THERE ANY COMMAND ADDRESS? 00302000
- BZ CSWOK NO, WE'LL HOPE IT'S OK 00303000
- BAL R14,CITERR1 00304000
- * 00305000
- CSWOK L 2,CURRIOOP GET ADDRESS OF LAST I/O WORK AREA 00306000
- TM 0(2),X'0A' WAS IT A READ OPERATION? 00307000
- BO READFIN YES, GO PROCESS IT 00308000
- * 00309000
- WRITFIN LA R3,LNLONGOP-LNNORMOP OFFSET TO NEXT WRITE (?) @V2D4598 00309600
- TM 0(R2),LONGOP WAS IT A LONG OPERATION? @V2D4598 00310200
- BO WRITFIN2 YES, CONTINUE @V2D4598 00310800
- IC R3,TONRMLEN(,R2) NO, GET SIZE OF DATA @V2D4598 00311400
- WRITFIN2 LA R3,LNNORMOP(R3,R2) R3 PTS TO NEXT WRITE IN STK @V2D4598 00312000
- C R3,PENDWRIT IS THERE ONE ? 00313000
- BNL STKEMPTY BRANCH IF HIGH OR EQUAL, IE., EMPTY NOW 00314000
- LH R8,NUMPNDWR GET NUMBER OF ENTRIES IN STACK 00315000
- LTR 8,8 CHECK ITS VALUE 00316000
- BNP STKEMPTY IF ZERO OR INVALID, FORCE EMPTY STACK 00317000
- LR 1,2 MORE ENTRIES TO COME, DELETE CURRENT FROM 00318000
- BAL 14,PACK THE STACK AND PACK REMAINING IN FRONT 00319000
- BCT 8,STKRESET REDUCE STACK ENTRY COUNT 00320000
- STKEMPTY LA R3,CONSTACK SET R3 TO START OF STACK BUFFER 00321000
- ST R3,PENDWRIT RESETSTACK POINTER 00322000
- SR 8,8 CLEAR COUNTER OF ENTRIES 00323000
- STKRESET STH R8,NUMPNDWR AND SET REMAINING ENTRY COUNT IN STACK 00324000
- LTR R8,R8 ANY PENDING WRITES 00325000
- BZ CLR15 NO, RETURN 00326000
- TRYWRT LA R1,CONSTACK YES, TRY STARTING FIRST IN STACK 00327000
- LA R15,DMSCITB 00328000
- BALR 14,15 00329000
- LTR 15,15 DID SIO GET STARTED? 00330000
- BZ EXIT YEP, GO AWAY 00331000
- CLI CSW+4,X'90' PENDING ATTENTION 00332000
- BE HNDLATTN YES 00333000
- BAL R14,CITERR1 00334000
- EJECT 00335000
- READFIN EQU * @VA05051 00335400
- NI MISFLAGS,255-ATTNHIT REMOVE ATTENTION BIT @VA05051 00335900
- TM 0(R2),FROMATTN WAS READ GENERATED BY 'ATTN'?@VA05051 00336400
- BZ NORMRD NO, BRANCH 00337000
- TM DBGFLAGS,DBGEXEC+DBGEXINT ARE WE IN DEBUG? @VA04109 00337400
- BO NORMRD YES--BRANCH @VA04109 00337800
- CLI 4(R2),X'0' IF NOT A TWO CHARACTER CMD @VA02167 00338200
- BNE NORMRD SKIP THE FANCY STUFF @VA02167 00338400
- LH R8,2(R2) GET A WORKABLE COPY @VA02167 00338600
- O R8,=CL4' ' CONVERT TO UPPER CASE @VA02167 00338800
- CH R8,=CL2'HT' HALT TYPING? @VA02167 00339000
- BE KILTYP @VA02167 00339200
- CH R8,=CL2'RT' RESUME TYPING? @VA02167 00339400
- BE ENBTYP @VA02167 00339600
- CH R8,=CL2'HX' HALT EXECUTION? @VA02167 00339800
- BE KILLX @VA02167 00340000
- CH R8,=CL2'HO' HALT OVERRIDE? @VA02167 00340200
- BE HLTOVR @VA02167 00340400
- CH R8,=CL2'SO' SUSPEND OVERRIDE? @VA02167 00340600
- BE SUSOVR @VA02167 00340800
- CH R8,=CL2'RO' RESUME OVERRIDE? @VA02167 00341000
- BE RESOVR BRANCH IF YES @VM01080 00341700
- CH R8,=CL2'HB' HALT BATCH ? @V2D2721 00342400
- BE HLTBAT @V2D2721 00343100
- NORMRD EQU * 00344000
- LH 3,NUMFINRD UPDATE FINISHED READ COUNT 00345000
- LA 3,1(,3) 00346000
- STH 3,NUMFINRD 00347000
- L R2,PENDREAD GET ADDRESS OF START OF READ WORK AREA 00348000
- XC PENDREAD,PENDREAD ZERO PENDING READ POINTER 00349000
- L 3,LSTFINRD ADD CURRENT FINISHED READ TO CHAIN 00350000
- LTR 3,3 00351000
- BZ FSTATTRD 00352000
- ST 2,0(,3) 00353000
- B SETLSTRD 00354000
- FSTATTRD ST 2,FSTFINRD IF FIRST FINISHED READ, SET IT 00355000
- SETLSTRD ST 2,LSTFINRD ALWAYS SET LAST FINISHED READ POINTER 00356000
- CKWRTSTK EQU * 00357000
- CLC NUMPNDWR,=H'0' ANY WRITES PENDING ? 00358000
- L R9,=V(CONSOLE) GET CONSOLE DEVICE ADDRESS 00359000
- LH R9,0(,R9) ... 00360000
- BNE TRYWRT YES, GO DO IT 00361000
- CLR15 SR 15,15 NO, TIME TO RETURN TO 'IOINT' 00362000
- EXIT LR 14,12 RESTORE RETURN REGISTER 00363000
- BR 14 00364000
- * 00365000
- ENBTYP NI MSGFLAGS,255-NOTYPING RESET NO TYPING FLAG 00370000
- B FRETX 00371000
- SPACE 00372000
- USING SVCSECT,R15 00373000
- HLTOVR EQU * 00374000
- L R15,ASVCSECT POINT TO SVCSECT 00375000
- OI OVSTAT,OVSHO TURN ON 'HALT OVERRIDES' FLAG 00376000
- NI OVSTAT,X'FF'-OVSSO TURN OFF 'SUSPEND' FLAG 00377000
- B FRETX GO RELEASE BUFFER 00378000
- SPACE 00379000
- SUSOVR EQU * 00380000
- L R15,ASVCSECT POINT TO SVCSECT 00381000
- OI OVSTAT,OVSSO TURN ON 'SUSPEND OVERRIDES' FLAG 00382000
- B FRETX GO RELEASE BUFFER 00383000
- SPACE 00384000
- RESOVR EQU * 00385000
- L R15,ASVCSECT POINT TO SVCSECT 00386000
- OI OVSTAT,OVSON TURN ON OVERRIDES 00387000
- NI OVSTAT,X'FF'-OVSSO TURN OFF 'SUSPEND OVERRIDES' FLG 00388000
- B FRETX GO RELEASE BUFFER 00389000
- DROP R15 00390000
- SPACE 00391000
- * 00392000
- KILLX EQU * 00393000
- L R15,AFVS POINT TO FVSECT @VA07100 00393100
- USING FVSECT,R15 FOR ADDRESSABILITY @VA07100 00393200
- CLI UFDBUSY,X'02' IS ABEND IN PROCESS ? @VA07100 00393300
- BE NORMRD GO BACK TO ABEND PROCESSING @VA07100 00393400
- CLC DATIPCMS(4),=F'0' IPL STORAGE SET? @VA14055 00393430
- BE NORMRD NO - SO SKIP THE MESS @VA14055 00393460
- OI TSOFLAGS,TSOATCNL INDICATE ATTN DURING READ @VA02650 00393500
- OI KXFLAG,KXWANT INDICATE KX HAS OCCURRED 00396000
- DROP R15 00397000
- B FRETX GO RELEASE THE 'ATTN' BUFFER 00398000
- * @V2D2721 00398250
- HLTBAT OI BATFLAG2,BATSTOP STOP BATCH AFTER CURRENT JOB@V2D2721 00398500
- B FRETX GO RELEASE THE LINE BUFFER @V2D2721 00398750
- * 00399000
- KILTYP OI MSGFLAGS,NOTYPING SET "KT" FLAG-BIT 00400000
- LA R9,CONSTACK 00401000
- SR 8,8 00402000
- DELETE C R9,PENDWRIT YES, ARE WE AT END OF ENTRIES? 00403000
- BNL ENDELETE YES, GO AWAY 00404000
- TM 0(9),X'80' IS ENTRY A PRIORITY TYPE? 00405000
- BO SKPDELET YES, DON'T DELETE IT FROM STACK 00406000
- LR 1,9 NO, GO OVERLAY THIS ENTRY WITH ALL ABOVE 00407000
- BAL 14,PACK 00408000
- B DELETE 00409000
- ENDELETE STH R8,NUMPNDWR RESET NUMBER OF WRITES IN STACK 00410000
- FRETX L R1,PENDREAD GET ADDRESS OF READ WORK AREA 00411000
- XC PENDREAD,PENDREAD ZERO PENDING READ POINTER 00412000
- LA 0,17 00413000
- DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR 00414000
- B CKWRTSTK GO LOOK FOR SOME TYPING TO DO 00415000
- * 00416000
- SKPDELET SR 1,1 00417000
- IC 1,1(,9) GET LENGTH OF PRIORITY ENTRY 00418000
- LA 9,2(1,9) UPDATE R9 TO BYPASS IT 00419000
- LA 8,1(,8) 00420000
- B DELETE 00421000
- EJECT 00422000
- SETWAIT EQU * @VA05051 00422100
- OI MISFLAGS,ATTNHIT SET ATTENTION BIT @VA05051 00422200
- USING CMSTAXE,R1 @V1D1709 00422500
- HNDLATTN L R1,TAXEADDR GET EXIT QUEUE ADDR 00423000
- LTR R1,R1 DOES ONE EXIST 00424000
- BZ ATTNREAD NO, START AN ATTENTION READ 00425000
- NC PENDREAD(4),PENDREAD IS THERE A PENDING READ? @VA01844 00425200
- BZ TESTEXC IF SO, CANCEL IT @VA01844 00425400
- OI TSOFLAGS,TSOATCNL ... AND INDICATE SO @VA01844 00425600
- XC PENDREAD(4),PENDREAD ........... @VA01844 00425800
- TESTEXC EQU * @V1D1709 00426000
- TM TAXESTAT,TAXEFREQ HAS EXIT BEEN TAKEN @V1D1709 00426500
- BNO ACTIVE NO, IT WILL BE NEXT 00427000
- L R1,TAXELNK YES, LOOK AT NEXT @V1D1709 00428000
- LA R1,0(0,R1) CLEAR HI BYTE 00429000
- LTR R1,R1 IS THERE ANOTHER 00430000
- BNP ATTNREAD NO MORE EXITS, ISSUE READ 00431000
- B TESTEXC GO CHK THIS EXIT BLOCK 00432000
- ACTIVE L R14,AIOSECT ADR OF I/O SAVE AREA 00433000
- MVC TAIERSAV(64),0(R14) SAVE ATTN TIME REGS IN TAIE @V1D1709 00434000
- TM IOOPSW+1,WAIT WAS CMS WAITING? @VA05024 00434100
- BZ MVPSW BRANCH IF NOT @VA05024 00434200
- L R14,WAITSAVE+4 GET WAITD PLIST POINTER @VA05024 00434300
- LA R14,CON8(,R14) POINT TO SYMBOLIC NAMES @VA05024 00434400
- SR R15,R15 CLEAR A REGISTER @VA05024 00434500
- CHKSYM EQU * @VA05024 00434600
- CLC CONSOLE,0(R14) WAITING ON CONSOLE? @VA05024 00434700
- BE NIPSW BRANCH IF SO @VA05024 00434800
- LA R14,CON4(,R14) POINT TO NEXT NAME @VA05024 00434900
- C R15,0(,R14) IS THERE ONE? @VA05024 00435000
- BNE CHKSYM BRANCH IF YES @VA05024 00435100
- TM OSSFLAGS,OSWAIT SLEEPING ON OS ECB? @V305665 00435440
- BZ MVPSW BRANCH IF NOT @V305665 00435460
- NIPSW NI IOOPSW+1,255-WAIT WAKE UP SLEEPING PRINCESS @V2D4598 00435540
- MVPSW EQU * @V1D1709 00435600
- MVC TAXEIOL(4),IOOPSW SAVE LEFT HALF IO OLD PSW @V1D1709 00436000
- MVC TAIEIAD(4),IOOPSW+4 SAVE RIGHT HALH IO OLD PSW @V1D1709 00436400
- MVC TAXETSOF(1),TSOFLAGS SAVE CANCELLED READ @V1D1709 00436800
- NI TSOFLAGS,255-TSOATCNL RESET CANCEL READ FLAG P3108 00437000
- ST R12,TAXERTNA SAVE RETURN ADDR. @V1D1709 00438000
- LA R14,STAXRET SET RETURN LOCATION 00439000
- LA R13,TAXEEXTS SET UP SAVE AREA @V1D1709 00440000
- MVC TAXEIOWS(44),WAITSAVE SAVE DMSIOW REGS. @V1D1709 00441000
- XC NUMPNDWR(2),NUMPNDWR CLEAR WRITE STACK V0001 00441100
- LA R15,CONSTACK V0001 00441200
- ST R15,PENDWRIT V0001 00441300
- L R15,TAXEEXIT LOAD EXIT ADDR. @V1D1709 00442000
- OI TAXESTAT,TAXEFREQ INDICATE EXIT TAKEN @V1D1709 00442300
- DROP R1 @V1D1709 00442600
- USING CMSTAXE,R2 @V1D1709 00442900
- LR R2,R1 PUT ARRD TAXE INTO R2 @V1D1709 00443200
- LA R1,TAIEMSGL GET ADDR. OF TAIE @V1D1709 00443500
- ST R1,TAXETAIE PUT IT IN PARAMETER LIST @V1D1709 00443800
- LA R1,TAXETAIE SET R1 TO ATTN EXIT PARA LIST@V1D1709 00444100
- LPSW 0(R2) GO TO EXIT ROUTINE @V1D1709 00444400
- DROP R2 @V1D1709 00444700
- STAXRET BALR R13,0 REESTABLISH ADDR. 00445000
- USING *,R13 00446000
- L R13,BASELOC 00447000
- USING DMSCITA,R13 00448000
- SSM *+1 GO DISABLED 00449000
- L R1,TAXEADDR GET EXIT QUEUE 00450000
- USING CMSTAXE,R1 @V1D1709 00451000
- STAXRET2 EQU * @V1D1709 00451300
- L R2,TAXELNK POINTER TO NEXT TAXE @V1D1709 00451600
- LA R2,0(0,R2) CLEAR HI BYTE P3108 00452000
- LTR R2,R2 ANY MORE 00453000
- BZ STAXRET1 NO, R1 HAS RIGHT CMSTAXE 00454000
- TM 8(R2),TAXEFREQ WAS THIS EXIT TAKEN @V1D1709 00455000
- BNO STAXRET1 NO, MUST BE RET FROM PREVIOUS EXIT 00456000
- LR R1,R2 YES, LOOK AT NEXT EXIT 00457000
- B STAXRET2 00458000
- STAXRET1 EQU * @V1D1709 00459000
- NI TAXESTAT,255-TAXEFREQ RESET 'TAKEN' INDICATOR @V1D1709 00459500
- L R12,TAXERTNA RESTORE RETURN ADDR. @V1D1709 00460000
- NI MISFLAGS,255-ATTNHIT REMOVE ATTENTION BIT @VA05051 00460500
- L R6,AIOSECT ADDRESS OF IO SAVE AREA 00461000
- MVC 0(64,R6),TAIERSAV RESTORE REGS FROM ATTN RTN. @V1D1709 00462000
- MVC IOOPSW(4),TAXEIOL RESTORE LEFT HALF IO OLD PSW @V1D1709 00462500
- MVC IOOPSW+4(4),TAIEIAD RESTORE RT HALF IO OLD @V1D1709 00463000
- MVC WAITSAVE(44),TAXEIOWS RESTORE DMSIOW REGS. @V1D1709 00463500
- TM TAXETSOF,TSOATCNL WAS READ CANCELLED? @V1D1709 00464000
- BNO CLR15 @VA05885 00466100
- OI TSOFLAGS,TSOATCNL YES, SET FLAG P3108 00467000
- B CLR15 @VA05885 00469100
- DROP R1 @V1D1709 00469500
- ATTNREAD LA R0,17 17 DBL WORDS READ WORK AREA 00470000
- DMSFREE DWORDS=(0),TYPCALL=BALR 00471000
- MVI 0(1),0 ZERO OUT THE AREA 00472000
- MVC 1(135,1),0(1) 00473000
- ST R1,PENDREAD SAVE ADDRESS OF AREA 00474000
- MVI 4(1),X'4A' SET FLAG FOR ATTENTION READ 00475000
- MVI 5(1),130 SET DESIRED LENGTH TO 130 00476000
- LA 1,4(,1) SET R1 FOR 'STNEWCON' 00477000
- STRTCON1 LA R15,DMSCITB START CONSOLE 00481000
- BALR 14,15 00482000
- LTR 15,15 GOOD SIO? 00483000
- BNZ ATTNPEND NO, CHECK FOR ATTENTION PENDING @VA02650 00484300
- TM TSOFLAGS,TSOATCNL WAS READ TERMINATED BY ATTN? @VA02650 00484600
- BZ EXIT NO, GO AWAY @VA02650 00484900
- LA R15,5 INDICATE THAT READ TERM. BY ATTN @VA02650 00485200
- B EXIT GET OUT @VA02650 00485500
- ATTNPEND CLI CSW+4,X'90' ATTENTION PENDING? @VA02650 00485800
- BE STRTCON1 YES, IGNORE AT THIS TIME 00486000
- BAL R14,CITERR1 00487000
- EJECT 00488000
- USING DMSCITB,R15 00489000
- DMSCITB DS 0H @V2D4598 00489500
- SR R8,R8 @V2D4598 00490000
- MVN CONCCWS(1),0(R1) MOVE CCW OPCODE '1' OR 'A' @V2D4598 00490500
- LA R7,LNNORMOP(,R1) DATADDR (ASSUMING SHORT OP) @V2D4598 00491000
- IC R8,TONRMLEN(,R1) LENGTH (DITTO) @V2D4598 00491500
- TM 0(R1),LONGOP IS IT SHORT? @V2D4598 00492000
- BNO BUILD YES, CONTINUE @V2D4598 00492500
- ICM R7,B'0111',TOLNGADR(R1) NO, R7 GETS ADDRESS, @V2D4598 00493000
- ICM R8,B'0011',TOLNGLEN(R1) AND R8 GETS LENGTH @V2D4598 00493500
- BUILD STCM R7,B'0111',CONCCWS+1 STORE BUFFER ADDRESS @V2D4598 00494000
- STH R8,CONCCWS+6 AND LENGTH @V2D4598 00494500
- LA 8,CONCCWS GET ADDRESS OF CCW CHAIN 00495000
- TRYAGAIN ST 8,CAW SET CAW 00496000
- SIO 0(9) ISSUE SIO 00497000
- BC 7,CKCC START OK? 00498000
- ST R1,CURRIOOP YES, SAVE WORKAREA ADDRESS 00499000
- SR R7,R7 CLEAR R7 FOR RETURN CODE @VA04854 00499125
- RETURN TM 0(R1),X'01' WAS THIS A WRITE? @VA04854 00499250
- BNO RETURN1 NO; NOTHING TO FREE @VA04854 00499375
- TM 0(R1),LONGOP YES; WAS IT A "LONG" ONE? @VA04854 00499500
- BNO RETURN1 NO; NOTHING TO FREE @VA04854 00499625
- LH R8,TOLNGLEN(,R1) YES; GET LENGTH OF LINE, @VA04854 00499750
- ICM R1,B'0111',TOLNGADR(R1) AND ITS ADDRESS @VA04854 00499875
- LA R0,7(,R8) ROUND UP THE LENGTH, @VA04854 00500000
- SRL R0,3 AND EXPRESS IT IN DOUBLEWORDS @VA04854 00500125
- LR R8,R14 SAVE RETURN ADDRESS @VA04854 00500250
- DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @VA04854 00500375
- LR R14,R8 RESTORE RETURN ADDRESS @VA04854 00500500
- RETURN1 LR R15,R7 RESTORE RETURN CODE @VA04854 00500625
- BR R14 RETURN TO CALLER @VA04854 00500750
- * 00502000
- CKCC BC 3,CCERR BRANCH IF NOT CSW STORED 00503000
- CLI CSW+4,X'14' WAS IT NOT-READY TO READY PENDING 00504000
- BE TRYAGAIN YES, REISSUE START I/O 00505000
- LA R7,4 SET ERROR RETURN CODE @VA04854 00506000
- B RETURN1 @VA05913 00507100
- * 00508000
- CCERR BC 1,CC3 BAD ERROR, BREAKIT TO 2 OR 3 00509000
- TIO 0(9) UNIT BUSY, WAIT FOR END 00510000
- BC 7,CCERR 00511000
- B TRYAGAIN 00512000
- * 00513000
- CC3 EQU * @VA06123 00513500
- L R13,=A(DMSCITA) @VA06123 00514000
- DROP R15 @VA06123 00514500
- USING DMSCITA,R13 @VA06123 00515000
- BAL R14,CITERR1 TERMINATE @VA06123 00515500
- EJECT 00517000
- * ROUTINE TO PACK NEWER ENTRIES IN 'STKBUF' DOWN OVER 00518000
- * SPECIFIED ENTRY TO BE DELETED. ON ENTRY, R1 HAS 00519000
- * THE ADDRESS OF ENTRY TO BE OVERLAYED. 00520000
- * ROUTINE DOES NOT SAVE REGISTERS, AND USES THE FOLLOWING 00521000
- * REGISTERS: R4,R5,R6,R7. @V2D4598 00522000
- * @V2D4598 00523000
- PACK DS 0H @V2D4598 00524000
- LA R4,LNLONGOP ASSUME R1 PTS TO LONG WRITE @V2D4598 00525000
- TM 0(R1),LONGOP IS IT ONE? @V2D4598 00526000
- BO PACK2 -YES, NEXT OP AT R1+LNLONGOP @V2D4598 00527000
- IC R4,TONRMLEN(,R1) NO, NEXT WRITE AT R1 + ... @V2D4598 00528000
- LA R4,LNNORMOP(,R4) ...LNNORMOP+DATASIZE @V2D4598 00529000
- * @V2D4598 00530000
- PACK2 ALR R4,R1 R4 POINTS TO NEXT WRITE @V2D4598 00531000
- L R5,PENDWRIT R5 POINTS TO END OF STACK @V2D4598 00532000
- CR R4,R5 ARE THERE MORE? @V2D4598 00533000
- ST R1,PENDWRIT (ASSUME NOT) @V2D4598 00534000
- BNLR R14 EXIT IF NOTHING TO MOVE @V2D4598 00535000
- * @V2D4598 00536000
- SLR R5,R4 R5 IS LENGTH OF STACKED WRITES @V2D4598 00537000
- LR R7,R5 SO IS R7, FOR MVCL @V2D4598 00538000
- LR R6,R1 R6 IS SINK, R4 IS SOURCE @V2D4598 00539000
- MVCL R6,R4 PACK THE WRITE-STACK DOWN @V2D4598 00540000
- ST R6,PENDWRIT CORRECT END-OF-STACK PTR @V2D4598 00541000
- BR R14 AND EXIT @V2D4598 00542000
- EJECT 00548000
- USING *,13 00549000
- DMSCITDB EQU * @VA06123 00550000
- LR R13,R15 @VA06123 00550100
- LR 6,14 SAVE RETURN-ADDRESS 00551000
- LA R14,CONSTACK RESET WRITE-STACK POINTER 00552000
- ST R14,PENDWRIT ... 00553000
- SR 3,3 00554000
- STH R3,NUMPNDWR 00555000
- LH R4,NUMFINRD ANY READ BUFFERS TO RELEASE 00556000
- LTR 4,4 00557000
- BZ CKPENRD NO, MAYBE NOT 00558000
- L 5,FSTFINRD MAYBE YES 00559000
- CKFINRD LTR 1,5 00560000
- BZ CKPENRD NO ADDRESS, IGNORE CHAIN 00561000
- L R5,0(,R1) GET NEXT AREA ADDRESS 00562000
- TM 4(1),X'40' IS IT AN 'ATTN' BUFFER? 00563000
- BZ CKR4 NO, DON'T FREE IT 00564000
- LA 0,17 YES, FREE IT UP 00565000
- DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR 00566000
- CKR4 BCT 4,CKFINRD LOOP IF MORE 00567000
- CKPENRD ST 3,FSTFINRD INSURE CONSTANTS ARE SET TO ZERO 00568000
- ST 3,LSTFINRD 00569000
- STH 3,NUMFINRD 00570000
- L R5,PENDREAD IS THERE A PENDING READ ? 00571000
- LTR 1,5 00572000
- BZ ENDES NO ADDRESS, SO IGNORE IT 00573000
- TM 4(1),X'40' IS IT AN ATTENTION READ? 00574000
- BZ ENDES NO, DON'T RELEASE IT 00575000
- LA 0,17 YES 00576000
- DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR 00577000
- ENDES ST R3,PENDREAD INSURE ZERO CONSTANTS 00578000
- LR 14,6 RESTORE RETURN-ADDRESS 00579000
- SR 15,15 00580000
- BR 14 00581000
- DS 0D 00582000
- BASELOC DC A(DMSCITA) 00584000
- CONSOLE DC CL4'CON1' @VA06165 00584100
- CON4 EQU 4 @VA06165 00584110
- CON8 EQU 8 @VA06165 00584120
- SPACE 2 00585000
- LTORG 00586000
- SPACE 00587000
- NUCDSECT DSECT 00588000
- NCDEVAD DS H 00589000
- NCSTATS DS H 00590000
- NCWAITB EQU NCSTATS 00591000
- NCDEVTP EQU NCSTATS+1 00592000
- NCNAME DS CL4 00593000
- NCINTRTN DS A 00594000
- NUCNSIZE EQU *-NUCDSECT 00595000
- * @V2D4598 00595040
- * EQUATES TO DESCRIBE CONSOLE OP-STRINGS @V2D4598 00595080
- * @V2D4598 00595120
- LNNORMOP EQU 2 LENGTH OF A NORMAL CONSOP @V2D4598 00595160
- LNLONGOP EQU 6 '' '' LONG '' @V2D4598 00595200
- TONRMLEN EQU 1 OFFSET TO NORMAL LENGTH-BYTE @V2D4598 00595240
- TOLNGLEN EQU 4 '' '' LONG LENGTH-HLFWD @V2D4598 00595280
- TOLNGADR EQU 1 '' '' LONG BUFFADDR @V2D4598 00595320
- * @V2D4598 00595360
- * BITS IN THE HIGH HALF OF WRITE CONSOP OPCODE @V2D4598 00595400
- * @V2D4598 00595440
- PRTYWRIT EQU X'80' PRIORITY WRITE OPERATION @V2D4598 00595480
- * @V2D4598 00595520
- * BITS IN THE HIGH HALF OF A READ OPCODE @V2D4598 00595560
- * @V2D4598 00595600
- RDATTNZ EQU X'80' READ TERMINATED BY ATTENTION @V2D4598 00595640
- FROMATTN EQU X'40' READ IN RESPONSE TO ATTENTION @V2D4598 00595680
- NOATTN EQU X'20' READ TO NOT BE RETRIED IF @V2D4598 00595720
- * * ENDED BY ATTENTION @V2D4598 00595760
- * @V2D4598 00595800
- * BITS IN HIGH HALF OF EITHER OPCODE @V2D4598 00595840
- * @V2D4598 00595880
- LONGOP EQU X'10' OPERATION TO/FROM USER BUFFER @V2D4598 00595920
- * @V2D4598 00595960
- EJECT 00596000
- NUCON 00597000
- FVS 00598000
- TSOBLKS @V1D1709 00598500
- SVCSECT 00599000
- EQUATES 00600000
- REGEQU 00601000
- END 00602000
ibm/vm370-lib/cms/dmscit.assemble_src.txt ยท Last modified: 2023/08/06 13:35 by Site Administrator