ibm:vm370-lib:cp:dmkmcc.assemble_src
Table of Contents
DMKMCC Source
References
- Fixes Applied : 5
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [R13421DK]
Source Listing
- DMKMCC.ASSEMBLE.txt
- MCC TITLE 'DMKMCC (CP) VM/370 - RELEASE 6' 00001000
- *. 00002000
- * 00003000
- * MODULE NAME - 00004000
- * 00005000
- * DMKMCC 00006000
- * 00007000
- * FUNCTION - 00008000
- * 00009000
- * TO HANDLE MONITOR CONTROL COMMANDS 00010000
- * 00011000
- * ATTRIBUTES - 00012000
- * 00013000
- * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000
- * 00015000
- * ENTRY POINTS - 00016000
- * 00017000
- * DMKMCCCL - TO PROCESS THE 'MONITOR' COMMANDS. 00018000
- * 00019000
- * ENTRY CONDITIONS - 00020000
- * 00021000
- * GPR9 - ADDRESS OF COMMAND LINE BUFFER 00022000
- * GPR11 - ADDRESS OF VMBLOK 00023000
- * GPR12 - ADDRESS OF ENTRY POINT 00024000
- * GPR13 - ADDRESS OF STANDARD SAVEAREA 00025000
- * 00026000
- * EXIT CONDITIONS - 00027000
- * 00028000
- * NONE 00029000
- * 00030000
- * CALLS TO OTHER ROUTINES - 00031000
- * 00032000
- * DMKSCNFD - TO LOCATE NEXT FIELD IN INPUT LINE 00033000
- * DMKQCNWT - TO SEND A MESSAGE TO THE TERMINAL 00034000
- * DMKERMSG - TO SEND CANNED ERROR MESSAGE TO TERMINAL 00035000
- * DMKPTRFR - TO OBTAIN A PAGE OF STORAGE FOR MONITOR DATA 00036000
- * DMKMONSH - MONITOR STOP ROUTINE 00037000
- * DMKCVTHB - TO CONVERT DEVICE ADDRESS TO BINARY 00038000
- * DMKCVTDB - TO CONVERT INTERVAL TO BINARY 00039000
- * DMKSCNRU - TO OBTAIN RDEVBLK ADDRESS FROM DEV. ADDRESS 00040000
- * DMKFREE - TO OBTAIN STORAGE FOR MESSAGES 00041000
- * DMKFRET - TO RELEASE STORAGE USED FOR MESSAGES 00042000
- * DMKSCHST - TO ENQUEUE A TIMER RQST. BLOCK FOR MONITORING 00043000
- * DMKSCHRT - TO REMOVE A TIMER RQST. BLOCK FROM QUEUE 00044000
- * DMKMONTH - TAPE HEADER ROUTINE 00045000
- * 00046000
- * EXTERNAL REFERENCES - 00047000
- * 00048000
- * DMKPRGC8 - STORAGE FOR CONTROL REGISTER 8 00049000
- * DMKPRGMC - ADDRESS OF MONITOR COMMUNICATIONS AREA 00050000
- * DMKPRGTI - INTERVAL BETWEEN TIMER INTERRUPTS 00051000
- * DMKPRGMI - ADDRESS OF THE MONITOR PROGRAM INTERRUPT HANDLER 00052000
- * 00053000
- EJECT 00054000
- * REGISTER USAGE - 00055000
- * 00056000
- * GPR0 - COMMAND ARGUMENT LENGTH, AND OUTPUT MSG LENGTH 00057000
- * GPR1 - COMMAND ARGUMENT ADDRESS, AND OUTPUT MSG ADDRESS 00058000
- * GPR2 - GPR10 - WORK REGISTERS 00059000
- * GPR11 - VMBLOK ADDRESS 00060000
- * GPR12 - BASE REG 00061000
- * GPR13 - SAVE AREA ADDRESS 00062000
- * GPR14 - LINKAGE REG 00063000
- * GPR15 - LINKAGE REG 00064000
- * 00065000
- * COMMAND FORMAT - 00066000
- * 00067000
- * +---------+---------+-------------------------------------+ 00068000
- * | MONITOR | | | 00069000
- * | MON | | | 00070000
- * | | AUTODISK| ON | 00071000
- * | | | OFF | 00072000
- * | | | | 00073000
- * | | CLOSE | | 00074000
- * | | | | 00075000
- * | | DISPLAY | ALL | 00076000
- * | | | TAPE | 00077000
- * | | | SPOOL | 00078000
- * | | | | 00079000
- * | | ENABLE | PERFORM | 00080000
- * | | | RESPONSE | 00081000
- * | | | SCHEDULE | 00082000
- * | | | USER | 00083000
- * | | | INSTSIM | 00084000
- * | | | DASTAP | 00085000
- * | | | SEEKS | 00086000
- * | | | SYSPROF | 00087000
- * | | | | 00088000
- * | | INTERVAL| INT SEC | 00089000
- * | | | MIN | 00090000
- * | | | | 00091000
- * | | LIMIT | NO. | STOP | 00092000
- * | | | | NOSTOP | 00093000
- * | | | * | | 00094000
- * | | | | 00095000
- * | | | | 00096000
- * | | START | CPTRACE | 00097000
- * | | | SPOOL TO USERID BUFFS | 00098000
- * | | | TAPE RADDR MODE 800 BUFFS | 00099000
- * | | | 1600 | 00100000
- * | | | 6250 | 00101000
- * | | | | 00102000
- * | | STOP | CPTRACE | 00103000
- * | | | SPOOL | 00104000
- * | | | TAPE | 00105000
- * | | | | 00106000
- * | | TIME | FROM (HH:SS) TO (HH:SS) | 00107000
- * | | | FOR (HH:SS) | 00108000
- * | | | ALL | 00109000
- * | | | NONE | 00110000
- * +---------+---------+-------------------------------------+ 00111000
- * 00112000
- * OPERATION - 00113000
- * 00114000
- * MONITOR COMMAND PROCESSING 00115000
- * 00116000
- * CALL DMKSCNFD TO LOCATE AN ARGUMENT. IF NONE IS 00117000
- * FOUND THEN EXIT WITH AN APPROPRIATE ERROR MESSAGE. 00118000
- * 00119000
- * IF THE ARGUMENT IS DISPLAY THEN GO TO DISPLAY. 00120000
- * IF THE ARGUMENT IS ENABLE THEN GO TO ENABLE. 00121000
- * IF THE ARGUMENT IS INTERVAL THEN GO TO INTERVAL. 00122000
- * IF THE ARGUMENT IS START THEN GO TO START. 00123000
- * IF THE ARGUMENT IS TIME THEN GO TO TIME 00123100
- * IF THE ARGUMENT IS CLOSE THEN GO TO CLOSE 00123200
- * IF THE ARGUMENT IS STOP THEN GO TO STOP. 00124000
- * IF THE ARGUMENT IS NONE OF THESE THEN EXIT WITH AN 00125000
- * APPROPRIATE ERROR MESSAGE. 00126000
- * 00127000
- * DISPLAY: 00128000
- * 00129000
- * OBTRAIN A REPLY BUFFER FROM FREE STORAGE AND OUTPUT 00130000
- * A REPLY HEADER VIA A CALL TO DMKQCNWT. 00131000
- * 00132000
- * SCAN THE MONITOR CLASS TABLE AND MOVE THE CLASS 00133000
- * NUMBER AND KEYWORD INTO THE REPLY BUFFER. 00134000
- * 00135000
- * IN PARALLEL WITH THE SCAN OF THE CLASS TABLE, SCAN 00136000
- * THE CURRENT CONTROL REGISTER 8 IN DMKPRGC8. IF THE 00137000
- * BIT IN THE MASK IS ONE THEN MOVE 'ENABLED' INTO THE 00138000
- * REPLY BUFFER. IF THE BIT IS ZERO THEN MOVE 00139000
- * 'DISABLED' INTO THE REPLY BUFFER. 00140000
- * 00141000
- * OUTPUT THE MESSAGE VIA A CALL TO DMKQCNWT AND LOOP 00142000
- * BACK UNTIL ALL ENTRIES HAVE BEEN EXAMINED. 00143000
- * 00144000
- * FINALLY, RELEASE THE REPLY BUFFER AND EXIT. 00145000
- * 00146000
- * ENABLE: 00147000
- * 00148000
- * SCAN THE REMAINING ARGUMENTS OF THE COMMAND LINE. 00149000
- * SEARCH THE CLASS TABLE FOR EACH ARGUMENT. IF A 00150000
- * MATCHING ENTRY IS NOT FOUND THEN EXIT WITH AN 00151000
- * APPROPRIATE ERROR MESSAGE. WHEN A MATCHING ENTRY 00152000
- * IS FOUND IN THE CLASS TABLE, SET THE CORRESPONDING 00153000
- * MONITOR CALL CLASS BIT IN THE WORK REG BEING 00154000
- * CONSTRUCTED FOR CR8. 00155000
- * 00156000
- * SAVE THE NEW CR8 VALUE IN DMKPRGC8 AND EXIT. 00157000
- * 00158000
- * INTERVAL: 00159000
- * 00160000
- * 00161000
- * CALL THE COMMAND PROCESSOR EXTENSION, DMKMCD, TO PROCESS 00161100
- * CALL DMKSCNFD TO GET THE INTERVAL VALUE. IF NONE 00162000
- * WAS GIVEN THEN EXIT WITH AN APPROPRIATE ERROR 00163000
- * MESSAGE. IF THE INTERVAL WAS GIVEN THEN CALL 00164000
- * DMKCVTDB TO CONVERT IT TO BINARY. 00165000
- * 00166000
- * CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF IT 00167000
- * IS 'SEC' THEN GO TO STEP 13. IF IT IS 'MIN' THEN 00168000
- * MULTIPLY THE INTERVAL BY 60 TO CONVERT IT TO 00169000
- * SECONDS. 00170000
- * 00171000
- * IF THE SPECIFIED VALUE IS LESS THAN 30 SECONDS OR 00172000
- * MORE THAN 9 HOURS, THEN EXIT WITH AN APPROPRIATE 00173000
- * ERROR MESSAGE. OTHERWISE, STORE THE INTERVAL IN 00174000
- * DMKPRGTI AND EXIT WITH AN ACKNOWLEDGMENT MESSAGE. 00175000
- * 00176000
- * START: 00177000
- * 00178000
- * CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF IT 00179000
- * IS 'CPTRACE' THEN GO TO START CPTRACE. IF IT IS 00180000
- * 'TAPE' THEN GO TO START TAPE. IF IT IS NEITHER OF 00181000
- * THESE THEN EXIT WITH AN APPROPRIATE ERROR MESSAGE. 00182000
- * AS OF RELEASE 5, SPOOL IS ALSO A VALID ARGUMENT 00182100
- * 00183000
- * START CPTRACE: 00184000
- * 00185000
- * IF THE INTERNAL TRACE TABLE IS ACTIVE THEN EXIT 00186000
- * WITH AN APPROPRIATE ERROR MESSAGE. OTHERWISE, 00187000
- * START ALL FLAVORS OF INTERNAL TRACING AND EXIT. 00188000
- * 00189000
- * START TAPE OR SPOOL: 00190100
- * 00191000
- * IF THE MONITOR IS ALREADY ACTIVE THEN EXIT WITH AN 00192000
- * APPROPRIATE ERROR MESSAGE. IF NO CLASSES ARE 00193000
- * ENABLED THEN EXIT WITH AN APPROPRIATE ERROR 00194000
- * MESSAGE. 00195000
- * 00196000
- * CALL DMKSCNFD TO LOCATE THE TAPE DRIVE ADDRESS 00197000
- * FIELD. IF NO ARGUMENT WAS FOUND THEN EXIT WITH AN 00198000
- * APPROPRIATE ERROR MESSAGE. 00199000
- * 00200000
- * CHECK THE VALIDITY OF THE ADDRESS, CONVERT IT TO 00201000
- * BINARY, LOCATE REAL DEVICE BLOCK, AND CHECK THE 00202000
- * AVAILABILITY AND SUITABILITY OF THE DEVICE. IF ANY 00203000
- * OF THESE CHECKS FAIL, THEN EXIT WITH AN APPROPRIATE 00204000
- * ERROR MESSAGE. 00205000
- * 00206000
- * CALL DMKSCNFD TO SEARCH FOR A MODE OR BUFFS 00207000
- * SPECIFICATION. IF EITHER IS FOUND, CHECK VALIDITY. 00208000
- * EXIT WITH APPROPRIATE ERROR MESSAGE IF INVALID INPUT 00209000
- * HAS BEEN SPECIFIED. IF NO MODE IS SPECIFIED, SET THE 00210000
- * DEFAULT TO THE RESET VALUE (X'C3' = 1600 BPI). IF 00211000
- * NO BUFFS VALUE IS SPECIFIED, SET THE DEFAULT BUFFS 00212000
- * VALUE ACCORDING TO THE CPU MODEL (2 FOR 135-145, 3 FOR 00213000
- * 148-158, AND 4 FOR 168). 00214000
- * 00215000
- * IF ALL OF THE CHECKS ARE PASSED, THEN RESERVE THE 00216000
- * DEVICE FOR SYSTEM USE. 00217000
- * 00218000
- * OBTAIN STORAGE FOR THE MONITOR COMMUNICATIONS AREA 00219000
- * (MONCOM) AND SAVE ITS ADDRSS IN DMKPRGMC. 00220000
- * 00221000
- * CALL DMKPTR TO PAGE IN AND LOCK THE DMKMON MODULE. 00222000
- * SAVE ITS ADDRESS IN DMKPRGMI. 00223000
- * 00224000
- * OBTAIN STORAGE FOR AN IOBLOK TO BE USED FOR THE 00225000
- * TAPE I/O REQUESTS. 00226000
- * 00227000
- * FINISH INITIALIZING THE IOBLOK AND BUILD THE 00228000
- * CHANNEL PROGRAMS TO BE USED BY THE MONITOR. 00229000
- * 00230000
- * OBTAIN STORAGE FOR A CPEXBLOK FOR DEFERED CALLS TO 00231000
- * IOS BY DMKMON. OBTAIN TWO PAGES OF FLIP FLOP DATA 00232000
- * COLLECTION BY CALLS TO DMKPTRFR. 00233000
- * 00234000
- * IF ANY TIMER DATA COLLECTION CLASSES ARE ENABLED 00235000
- * THEN OBTAIN, INITIALIZE AND SCHEDULE A TRQBLOK. AT 00236000
- * THE SAME TIME, INITIALIZE DMKPRGTI IF IT ISN'T 00237000
- * ALREADY. 00238000
- * 00239000
- * CALL DMKMNITH TO ISSUE THE INITIAL CCW SEQUENCE. 00240000
- * THE I/O INTERRUPT ASSOCIATED WITH THE INITIAL CCW'S 00241000
- * WILL COMPLETE THE INITIATION OF THE MONITOR, 00242000
- * INCLUDING THE COLLECTION OF THE HEADER RECORDS, 00243000
- * WITHIN DMKMON. 00244000
- * 00245000
- * EXIT AFTER SENDING THE 'COMMAND COMPLETE' MESSAGE. 00246000
- * 00247000
- * STOP: 00248000
- * 00249000
- * CALL THE COMMAND PROCESSOR EXTENSION, DMKMCD, TO PROCESS 00249100
- * CALL DMKSCNFD TO LOCATE THE NEXT ARGUMENT. IF IT 00250000
- * IS 'CPTRACE' THEN GO TO STOP CPTRACE. IF IT IS 00251000
- * 'TAPE' THEN GO TO STOP TAPE. IF IT IS NEITHER OF 00252000
- * THESE THEN EXIT WITH AN APPROPRIATE ERROR MESSAGE. 00253000
- * AS OF RELEASE 5, SPOOL IS ALSO A VALID ARGUMENT 00253100
- * 00254000
- * STOP CPTRACE: 00255000
- * 00256000
- * IF CP INTERNAL TRACING IS NOT ACTIVE THEN EXIT WITH 00257000
- * AN APPROPRIATE ERROR MESSAGE. OTHERWISE, SET THE 00258000
- * TRACE FLAGS TO ZEROES AND EXIT AFTER SENDING THE 00259000
- * 'COMMAND COMPLETE' MESSAGE. 00260000
- * 00261000
- * STOP TAPE OR SPOOL: 00262100
- * 00263000
- * IF MONITORING IS CURRENTLY INACTIVE THEN EXIT WITH 00264000
- * AN APPROPRIATE ERROR MESSAGE. 00265000
- * 00266000
- * IF THE MONITOR IS CURRENTLY IN ERROR RECOVERY OR 00267000
- * PROCESSING A 'MONITOR STOP TAPE' COMMAND THEN EXIT 00268000
- * WITH AN APPROPRIATE ERROR MESSAGE. 00269000
- * 00270000
- * CLEAR CONTROL REGISTER 8 TO INHIBIT FURTHER MONITOR 00271000
- * CALL INTERRUPTS. INDICATE THAT A 'MONITOR STOP 00272000
- * TAPE' COMMAND IS BEING PROCESSED. 00273000
- * 00274000
- * OBTAIN STORAGE FOR AND INITIALIZE A CPEXBLOK. 00275000
- * 'STACK' THE CPEXBLOK ON THE COMMUNICATIONS AREA. 00276000
- * IF THE MONITOR TAPE IS CURRENTLY BUSY THEN SKIP THE 00277000
- * NEXT STEP. 00278000
- * 00279000
- * CALL DMKMNISH TO COMPLETE MONITOR SHUTDOWN 00280000
- * PROCESSING. WHEN CONTROL RETURNS FROM DMKMNI, EXIT 00281000
- * AFTER ISSUING THE 'COMMAND COMPLETE' MESSAGE. 00282000
- * 00283000
- * SET THE RETURN ADDRESS IN THE CPEXBLOK TO THE 00284000
- * 'COMMAND COMPLETE' MESSAGE ROUTINE AND GO TO THE 00285000
- * DISPATCHER. SINCE THE TAPE IS BUSY AND THE CFSTOP 00286000
- * FLAG HAS BEEN SET, THE MONITOR WILL BE SHUT DOWN 00287000
- * WHEN THE NEXT TAPE I/O INTERRUPT OCCURS. FOLLOWING 00288000
- * THAT, THE CPEXBLOK WILL BE 'UNSTACKED' AND RETURN 00289000
- * WILL BE MADE TO THIS ROUTINE TO TYPE OUT THE 00290000
- * 'COMMAND COMPLETE' MESSAGE. 00291000
- * 00292000
- * TIME 00292010
- * 00292020
- * CALL THE COMMAND PROCESSOR EXTENSION, DMKMCD, TO PROCESS 00292030
- * 00292040
- * LIMIT 00292050
- * 00292060
- * CALL THE COMMAND PROCESSOR EXTENSION, DMKMCD, TO PROCESS 00292070
- * 00292080
- * CLOSE 00292090
- * 00292100
- * CALL DMKMIACC TO CLOSE THE CURRENT SPOOL FILE 00292110
- *. 00293000
- EJECT 00294000
- DMKMCC CSECT @V2B2638 00295000
- MODID DC CL8'DMKMCC' @V2B2638 00296000
- SPACE 1 00297000
- USING SAVEAREA,R13 @V2B2638 00298000
- USING PSA,R0 @V2B2638 00299000
- SPACE 1 00300000
- EXTRN DMKSCNFD @V2B2638 00301000
- EXTRN DMKSCNRU @V2B2638 00302000
- EXTRN DMKQCNWT @V2B2638 00303000
- EXTRN DMKPRGC8,DMKPRGMC,DMKPRGTI,DMKPRGMI @V2B2638 00304000
- EXTRN DMKERMSG @V2B2638 00305000
- EXTRN DMKPTRFR @V2B2638 00306000
- EXTRN DMKCVTHB @V2B2638 00307000
- EXTRN DMKCVTDB @V2B2638 00308000
- EXTRN DMKFREE @V2B2638 00309000
- EXTRN DMKFRET @V2B2638 00310000
- EXTRN DMKSCHST @V2B2638 00311000
- EXTRN DMKSCHRT @V2B2638 00312000
- EXTRN DMKMONMI,DMKMONTI 00313000
- EXTRN DMKSYSAT,DMKSYSTS,DMKSYSTE,DMKSYSMX,DMKSYSUR @V50A2B5 00314000
- EXTRN DMKUDRFU,DMKSCNVU,DMKVDSDF,DMKSTKCP,DMKPGTVG @V50A2B5 00315000
- EXTRN DMKMIARO,DMKSYSEN @V50A2B5 00316000
- EXTRN DMKMNIDK,DMKMIA @V50A2B5 00317000
- EXTRN DMKMNISP,DMKMIACC,DMKMNIST,DMKMIAMU @VMD0138 00318000
- EXTRN DMKMIADL,DMKRSPMN @V50A2B5 00319000
- EXTRN DMKMNITH,DMKMNISH 00320000
- EXTRN DMKDSPCH @V2B2638 00321000
- EXTRN DMKCVTAB @VA04301 00322000
- EXTRN DMKMCDIN,DMKMCDLI,DMKMCDTI,DMKMCDST @VA08291 00322100
- EXTRN DMKDSPNP @VA07357 00323000
- EXTRN DMKMCDSE @V60BEBC 00323100
- EJECT 00324000
- COPY OPTIONS @V2B2638 00325000
- COPY LOCAL @V2B2638 00326000
- EJECT 00327000
- *. 00328000
- ********************************************************************** 00329000
- * 00330000
- * MONITOR COMMAND PROCESSING 00331000
- * 00332000
- * LOCATE THE FIRST ARGUMENT. COMPARE IT AGAINST THE OPERAND 00333000
- * TABLE AND GO TO THE APPROPRIATE ROUTINE 00334000
- * 00335000
- ********************************************************************** 00336000
- *. 00337000
- DMKMCCCL RELOC @V2B2638 00338000
- USING VMBLOK,R11 @V2B2638 00339000
- CALL DMKSCNFD LOOK FOR NEXT FIELD @V2B2638 00340000
- BNZ MSG026 ERROR IF NO PARM AT ALL @V2B2638 00341000
- CL R0,F8 IS IT BIGGER THAN 8? @V2B2638 00342000
- BH MSG026 YES, THEN GARBAGE IT IS @V2B2638 00343000
- LR R2,R0 SAVE THE SIZE @V2B2638 00344000
- BCTR R2,0 DECREMENT BY ONE @V2B2638 00345000
- LA R3,OPTABENO GET THE NUMBER OF ENTRIES @V2B2638 00346000
- LA R4,MONOPTAB ADDR OF THE TABLE @V2B2638 00347000
- COMPLEN CH R2,0(R4) COULD THIS POSSIBLY BE IT? @V2B2638 00348000
- BL NEXTARG NOPE, TOO SMALL @V2B2638 00349000
- EX R2,COMPARG CHECK IF THIS IS IT @V2B2638 00350000
- BE 10(R4) YES, BRANCH TO THE RIGHT PLACE @V2B2638 00351000
- NEXTARG LA R4,14(R4) BUMP TO THE NEXT ENTRY @V2B2638 00352000
- BCT R3,COMPLEN GO CHECH THE NEXT ENTRY @V2B2638 00353000
- B MSG002 SORRY, WE DIDN'T FIND IT @V2B2638 00354000
- SPACE 3 00355000
- COMPARG CLC 2(0,R4),0(R1) EXECUTED COMPARE OF OPERANDS @V2B2638 00356000
- EJECT 00357000
- * 00358000
- *********************************************************************** 00359000
- * 00360000
- * MONITOR AUTODISK 00361000
- * 00362000
- * SET THE AUTO SPOOL MONITOR FLAG IN DMKSYS 00363000
- * 00364000
- *********************************************************************** 00365000
- * 00366000
- SPACE 1 00367000
- MONAUTO CALL DMKSCNFD FIND THE NEXT FIELD IN COMMAND @V50A2B5 00368000
- BNZ MSG026 CARRIAGE RETURN OR ENDBUFF @V50A2B5 00369000
- L R4,=A(DMKSYSAT) GET AUTO FLAG @V50A2B5 00370000
- C R0,F3 IS IT ILLEGAL? @V50A2B5 00371000
- BH MSG002 YES @V50A2B5 00372000
- C R0,F2 IS IT EXACTLY TWO? @V50A2B5 00373000
- BNZ NOTTWO NO @V50A2B5 00374000
- CLC =C'ON',0(R1) IS ON SPECIFIED? @V50A2B5 00375000
- BNZ MSG002 NO @V50A2B5 00376000
- TM 0(R4),AUTGO SEE IF ALREADY ON @V50A2B5 00377000
- BO ACK NO USE STACKING ANY BLOCKS @V50A2B5 00378000
- OI 0(R4),AUTGO TURN ON AUTO SPOOL BIT @V50A2B5 00379000
- CALL DMKMNIST TURN ON THE TRQS @VMD0138 00380000
- B ACK AND EXIT @V50A2B5 00381000
- NOTTWO C R0,F3 IS IT EXACTLY THREE @V50A2B5 00382000
- BNZ MSG002 NOTHING GOOD @V50A2B5 00383000
- CLC =C'OFF',0(R1) IS OFF SPECIFIED? @V50A2B5 00384000
- BNZ MSG002 NOT GOOD @V50A2B5 00385000
- NI 0(R4),X'FF'-AUTGO TURN OFF AUTO SPOOL BIT @V50A2B5 00386000
- B ACK ACKNOWLEDGE COMPLETION @V50A2B5 00387000
- EJECT 00388000
- *. 00389000
- ********************************************************************** 00390000
- * 00391000
- * MONITOR DISPLAY 00392000
- * 00393000
- * OBTAIN A BUFFER FOR THE DISPLAY OUTPUT. WRITE OUT A LINE FOR 00394000
- * THE STATUS OF THE INTERNAL TRACE TABLE AND A LINE FOR EACH 00395000
- * CLASS INDICATING ITS KEYWORD AND ENABLED/DISABLED STATUS. 00396000
- * FRET THE BUFFER AND EXIT. 00397000
- * 00398000
- ********************************************************************** 00399000
- *. 00400000
- SPACE 1 00401000
- MONCLDIS EQU * MONITOR DISPLAY FUNCTION @V50A2B5 00402000
- CALL DMKMIADL EXECUTE DISPLACED CODE @V50A2B5 00403000
- EXIT AND EXIT @V50A2B5 00404000
- EJECT @V50A2B5 00405000
- *. 00406000
- *********************************************************************** 00407000
- * 00408000
- * MONITOR ENABLE 00409000
- * 00410000
- * FOR EACH ARGUMENT, SEARCH THE CLASS TABLE AND TURN ON 00411000
- * THE APPROPRIATE MASK BIT IN R3. THE FOLLOWING RULES ARE 00412000
- * CHECKED: 00413000
- * 00414000
- * 1. DASTAP CANNOT BE ENABLED ON THE FLY (BECAUSE OF THE 00415000
- * HEADER AND THE DEVICE LIST). 00416000
- * 2. IF SYSPROF IS SPECIFIED THEN SCHEDULE AND DASTAP MUST 00417000
- * ALSO BE SPECIFIED. 00418000
- * 00419000
- * IF DATA COLLECTION IS ACTIVE: 00420000
- * 00421000
- * IF DASTAP WAS ON BEFORE BUT WILL NOT BE AFTER COMMAND 00422000
- * COMPLETION, THEN SET A FLAG TO FRET THE DEVICE LIST. 00423000
- * IT CANNOT BE FRETTED YET DUE TO POSSIBLE ERROR EXITS. 00424000
- * 00425000
- * IF TIMER DRIVEN EVENTS WERE ACTIVE BUT WON'T BE ANYMORE 00426000
- * THEN DEQUEUE AND FRET THE TRQBLOK. 00427000
- * 00428000
- * IF TIMER DRIVEN EVENTS WERE NOT ACTIVE BEFORE BUT WILL 00429000
- * BE THEN OBTAIN AND ENQUEUE A TRQBLOK. 00430000
- * 00431000
- * SAVE THE ENABLED MASK IN DMKPRGC8. IF THE MONITOR IS ACTIVE 00432000
- * THEN LOAD THE NEW MASK IN CR8. IF NECESSARY FRET THE 00433000
- * DEVICE LIST. 00434000
- * 00435000
- *********************************************************************** 00436000
- *. 00437000
- SPACE 1 00438000
- MONCLEN SR R3,R3 REG FOR BUILDING CR8 MASK @V2B2638 00439000
- NEXTPARM CALL DMKSCNFD OBTAIN NEXT FIELD IN COMMAND @V2B2638 00440000
- BNZ ENDBUFF CARRIAGE RETURN OR ENDBUFF @V2B2638 00441000
- LR R2,R0 BYTE COUNT OF FIELD FOUND @V2B2638 00442000
- C R2,F8 IS IT TOO BIG @V2B2638 00443000
- BH MSG002 YES, GARBAGE IN, GARBAGE OUT @V2B2638 00444000
- BCTR R2,0 LESS 1 FOR EXECUTED COMPARE @V2B2638 00445000
- LA R4,MONTBENO NUMBER OF ENTRIES IN TABLE @V2B2638 00446000
- LA R5,MONCLTBL BEGINNING OF CLASS KEYWORD TABLE @V2B2638 00447000
- L R6,=A(X'00008000') SET FOR CLASS 0 FIRST @V2B2638 00448000
- EXECUTE EX R2,COMPLENG COMPARE LENGTH ENT. W/ MIN. @V2B2638 00449000
- BH NOTTHIS B:A COMPARE, TOO SMALL, NOT THIS @V2B2638 00450000
- EX R2,COMPARE LOOK FOR KEYWORD MATCH @V2B2638 00451000
- BNE NOTTHIS NO MATCH IN THIS CLASS, MOVE ON @V2B2638 00452000
- OR R3,R6 OR IN CORRESPONDING CLASS FLAG @V2B2638 00453000
- B NEXTPARM GO DO SAME WITH NEXT ARGUMENT @V2B2638 00454000
- NOTTHIS BCT R4,NEXTCLAS ANY MORE CLASSES? YES @V2B2638 00455000
- B MSG002 NO, TOO BAD, NOT IMPLEMENTED @V2B2638 00456000
- NEXTCLAS LA R5,9(R5) NEXT CLASS TABLE ENTRY @V2B2638 00457000
- SRL R6,1 SET NEXT CLASS FLAG @V2B2638 00458000
- B EXECUTE TRY THIS ONE @V2B2638 00459000
- EJECT 00460000
- * TOP BYTE OF SAVEWRK1 = FLAGS, LOWER 1/2 = CR8 MASK 00461000
- ENDBUFF LTR R3,R3 DID WE ENABLE ANYTHING? @V2B2638 00462000
- BZ MSG026 NOPE, MUST NOT HAVE SPEC. ANYTH @V2B2638 00463000
- ST R3,SAVEWRK1 SAVE CR8 MASK JUST GENERATED @V2B2638 00464000
- L R7,=A(DMKPRGMC) LOC'N OF COMMUNIC. AREA ADDR @V2B2638 00465000
- L R7,0(R7) ADDRESS OF COMMUNICATIONS AREA @V2B2638 00466000
- LTR R7,R7 IS MONITOR ACTIVE @V2B2638 00467000
- BZ DASDOK NO, NO NEED TO LOAD CNTRL REG 8 @V2B2638 00468000
- USING MONCOM,R7 YES, NEED NEW VALUE & DASD CHECK @V2B2638 00469000
- TM SAVEWRK1+2,DASDCL WAS DASDCL JUST SPECIFIED @V2B2638 00470000
- BZ NODASD NOPE, GO SEE IF ACTIVE BEFORE @V2B2638 00471000
- L R1,MONDVLST YES, WAS IT ON BEFORE? @V2B2638 00472000
- LTR R1,R1 ... @V2B2638 00473000
- BZ MSG215 NOPE, CAN'T ENABLE ON THE FLY @V2B2638 00474000
- B DASDOK YES, NOW AND BEFORE, ALL SET @V2B2638 00475000
- SPACE 3 00476000
- NODASD L R1,MONDVLST WAS IT ACTIVE BEFORE? @V2B2638 00477000
- LTR R1,R1 ... @V2B2638 00478000
- BZ DASDOK NOPE, NOT NOW OR BEFORE, ALL SET @V2B2638 00479000
- OI SAVEWRK1,X'80' FLAG FRET OF DASTAP LIST REQ. @V2B2638 00480000
- * NOTE THAT LEFT HALF OF SAVEWRK1 WAS CLEARED AFTER ENDBUFF 00481000
- SPACE 3 00482000
- DASDOK TM SAVEWRK1+3,SPROFCL SYSPROF JUST SPECIFIED? @V2B2638 00483000
- BZ CHKACTV NOPE, SKIP PREREQ CHECK @V2B2638 00484000
- TM SAVEWRK1+2,SCHEDCL+DASDCL PREREQ'S SPEC TOO? @V2B2638 00485000
- BNO MSG216 NOPE, BAD NEWS. @V2B2638 00486000
- CHKACTV LTR R7,R7 IS MONITOR ACTIVE NOW? @V2B2638 00487000
- BZ SETPRG NOPE, SET UP DMKPRG CR8 VALUE @V2B2638 00488000
- TM SAVEWRK1+2,PERFCL+USERCL+DASDCL ENAB SAMPLING? @V2B2638 00489000
- BNZ PERFEN YES, TRB MAY ALREADY BE ACTIVE @V2B2638 00490000
- L R1,MONATRB NO, GET OLD TRB ADDRESS @V2B2638 00491000
- LTR R1,R1 IS THERE ONE? @V2B2638 00492000
- BZ SETCPCR8 NO, NO CHANGES REQUIRED @V2B2638 00493000
- CALL DMKSCHRT REMOVE OLD TRB FROM CHAIN @V2B2638 00494000
- LA R0,TRQBSIZE @V2B2638 00495000
- CALL DMKFRET AND FRET THE STORAGE @V2B2638 00496000
- SLR R1,R1 TRB NO LONGER EXISTS... @V2B2638 00497000
- ST R1,MONATRB SO INDICATE SUCH IN MONCOM @V2B2638 00498000
- B SETCPCR8 DONE CHECKING @V2B2638 00499000
- EJECT 00500000
- PERFEN L R1,MONATRB IS THERE A TRB? @V2B2638 00501000
- LTR R1,R1 ... @V2B2638 00502000
- BNZ SETCPCR8 YES, NO CHANGE REQUIRED @V2B2638 00503000
- BAL R8,GETTRB NO, GET TRB AND ENQUEUE IT @V2B2638 00504000
- SETCPCR8 ST R3,CPCREG8 SET NEW VALUE FOR CP REG @V2B2638 00505000
- L R8,PREFIXB ADDRESS OTHER PROCESSOR'S PSA 00506000
- ST R3,CPCREG8(R8) PROPAGATE MC MASK TO OTHER PROCESSOR 00507000
- LCTL C8,C8,CPCREG8 AND MAKE IT ACTIVE NOW. @V2B2638 00508000
- SETPRG L R2,=A(DMKPRGC8) SAVE IT IN PRG @V2B2638 00509000
- ST R3,0(R2) ... @V2B2638 00510000
- TM SAVEWRK1,X'80' NEED TO FRET DASTAP LIST? @V2B2638 00511000
- BZ ACK NOPE, ALL DONE NOW @V2B2638 00512000
- L R1,MONUTRB ADDR OF UTILIZATION TRB @V60BEBC 00512010
- LTR R1,R1 IS IT THERE? @V60BEBC 00512020
- BZ NOUTFREE NO, NO NEED TO FREE UP @V60BEBC 00512030
- CALL DMKSCHRT REMOVE TRB FROM CHAIN @V60BEBC 00512040
- LA R0,TRQBSIZE SIZE IN DWORDS @V60BEBC 00512050
- CALL DMKFRET FREE IT UP @V60BEBC 00512060
- SLR R1,R1 INDICATE NO I/O UTILIZATION @V60BEBC 00512070
- ST R1,MONUTRB IN MONCOM @V60BEBC 00512080
- L R1,MONCHPTR FREE UP SPACE FOR CHANNEL @V60BEBC 00512090
- LA R0,MNCHSIZE SAMPLE FIELDS @V60BEBC 00512100
- CALL DMKFRET ... @V60BEBC 00512110
- SLR R1,R1 RESET PTR TO CH SAMPLES TO 0 @V60BEBC 00512120
- ST R1,MONCHPTR ... @V60BEBC 00512130
- NOUTFREE EQU * @V60BEBC 00512140
- LH R0,MONDVNUM GET THE NUMBER OF DEVICES @V2B2638 00513000
- L R1,MONDVLST GET THE LIST ADDRESS @V2B2638 00516000
- CALL DMKFRET AND FRET IT @V2B2638 00517000
- SLR R1,R1 DASD LIST STORAGE AINT NOMORE @V2B2638 00518000
- ST R1,MONDVLST .... @V2B2638 00519000
- STH R1,MONDVNUM ... @V2B2638 00520000
- B ACK DONE. @V2B2638 00521000
- DROP R7 @V2B2638 00522000
- SPACE 4 00523000
- COMPLENG CLI 8(R5),X'00' COMPARE ARG LENGTH W/ MINIMUM @V2B2638 00524000
- COMPARE CLC 0(0,R1),0(R5) INPUT ARG TO KEYWORD TABLE COMP. @V2B2638 00525000
- EJECT 00526000
- *. 00527000
- *********************************************************************** 00528000
- * 00529000
- * MONITOR INTERVAL 00530000
- * 00531000
- * CALCULATE THE INTERVAL IN SECONDS AND STORE IT IN DMKPRGTI. 00532000
- * 00533000
- * THERE IS A 9 HOUR LIMIT ON THE INTERVAL. THE MONITOR SHOULD 00534000
- * NOT BE RUN FOR MORE THAN 9 1/2 HOURS DUE TO THE 5 BYTE TIME 00535000
- * STAMP USED IN THE DATA COLLECTION ROUTINES. 00536000
- * 00537000
- *********************************************************************** 00538000
- *. 00539000
- SPACE 1 00540000
- MONINTVL CALL DMKMCDIN CALL EXTENSION FOR INTERVAL PROC@VA08291 00541000
- B ACK ACKNOWLEDGE & RETURN @V2B2638 00569000
- EJECT 00570000
- * 00571000
- *********************************************************************** 00572000
- * 00573000
- * MONITOR LIMIT 00574000
- * 00575000
- * SETS THE LIMIT ON THE MONITOR SPOOL FILE SIZE 00576000
- * 00577000
- *********************************************************************** 00578000
- * 00579000
- MONMAX CALL DMKMCDLI CALL EXTENSION FOR LIMIT PROCESS@VA08291 00580000
- B ACK ACKNOWLEDGE COMPLETION @V50A2B5 00623000
- EJECT 00624000
- *********************************************************************** 00625000
- * 00626000
- * MONITOR START 00627000
- * 00628000
- *********************************************************************** 00629000
- SPACE 1 00630000
- MONSTART CALL DMKSCNFD GET NEXT PARAMETER @V2B2638 00631000
- BNZ ASMSPL ASSUME SPOOL @V50A2B5 00632000
- MVC SAVEWRK3(8),BLANKS BLANK OUT PARM AREA @V2B2638 00633000
- C R0,F8 IS IT TOO BIG @V2B2638 00634000
- BH MSG002 YES, GARBAGE IN, GARBAGE OUT @V2B2638 00635000
- LR R2,R0 LENGTH OF PARM INTO R2 @V2B2638 00636000
- BCTR R2,0 LESS 1 FOR EXECUTE @V2B2638 00637000
- EX R2,PARMOVE MOVE PARM INTO TEMPORARY AREA @V2B2638 00638000
- CLC =CL8'TAPE',SAVEWRK3 IS IT PERF MONITOR? @V2B2638 00639000
- BE TAPESTRT YES @V2B2638 00640000
- CLC =CL8'SPOOL',SAVEWRK3 IS IT SPOOL MONITOR @V50A2B5 00641000
- BE TAPESTRT CONTINUE WITH INITIALIZATION @V50A2B5 00642000
- AIF (NOT &TRACE(9)).NTR91 @V2B2638 00643000
- CLC =CL8'CPTRACE',SAVEWRK3 IS IT INTERNAL TRACE @V2B2638 00644000
- .NTR91 ANOP 00645000
- BNE MSG002 NO, BAD OPERAND @V2B2638 00646000
- SPACE 5 00649000
- *. 00650000
- *********************************************************************** 00651000
- * 00652000
- * MONITOR START CPTRACE (INTERNAL TRACE TABLE) 00653000
- * 00654000
- * IF IT IS ALREADY ACTIVE, EXIT WITH AN ERROR MESSAGE. 00655000
- * OTHERWISE TURN ON ALL FLAVORS OF INTERNAL TRACING. 00656000
- * 00657000
- *********************************************************************** 00658000
- *. 00659000
- SPACE 1 00660000
- L R2,TRACEFLG GET THE TRACE FLAGS @V2B2638 00661000
- LTR R2,R2 ANYTHING ACTIVE? @V2B2638 00662000
- BNZ MSG213 IF SO, CAN'T START TRACING @V2B2638 00663000
- L R2,FFS SET FLAGS TO ALL ONES @V2B2638 00664000
- ST R2,TRACEFLG TO START TRACING @V2B2638 00665000
- L R8,PREFIXB ADDRESS OTHER PSA, IF ANY 00666000
- ST R2,TRACEFLG(R8) PUT TRACE FLAGS IN OTHER PSA 00667000
- L R2,TRACSTRT GET ADDRESS OF BEGINNING OF TABLE@V2B2638 00668000
- ST R2,TRACCURR SET CURRENT TO BEGINNING OF TABLE@V2B2638 00669000
- B ACK SEND ACKNOWLEDGMENT @V2B2638 00670000
- EJECT 00671000
- *. 00672000
- *********************************************************************** 00673000
- * 00674000
- * MONITOR START TAPE 00675000
- * 00676000
- * INSURE THAT THE MONITOR IS NOT ACTIVE, VALIDITY CHECK 00677000
- * THE TAPE ADDRESS. FLAG THE TAPE AS IN USE BY THE SYSTEM. 00678000
- * 00679000
- * OBTAIN A COMMUNICATINS AREA. TRANS IN AND LOCK DMKMONIN 00680000
- * ALSO OBTAIN VIA A TRANS CALL OTHER NECESSARY DMKMON ADDRESSES. 00681000
- * 00682000
- * GET AND INITIALIZE AN IOBLOK FOR THE TAPE. 00683000
- * OBTAIN A BACK POCKET CPEXBLOK FOR USE BY DMKMON TO CALL IOS 00684000
- * CALL DMKPTRFR FOR 2 4K BUFFER PAGES. 00685000
- * CALL DMKMONTH TO CREATE HEADER RECORDS. EXIT. 00686000
- * 00687000
- *********************************************************************** 00688000
- *. 00689000
- SPACE 1 00690000
- ASMSPL MVC SAVEWRK3(8),=CL8'SPOOL' ASSUME SPOOL @VA08104 00690100
- TAPESTRT L R2,=A(DMKPRGC8) GET CURRENT CREG 8 @V2B2638 00691000
- L R2,0(R2) FROM DMKPRG @V2B2638 00692000
- LTR R2,R2 IS ANY CLASS ENABLED? @V2B2638 00693000
- BNZ OKGO CONTINUE @V50A2B5 00694000
- CLC SAVEWRK3(5),=C'SPOOL' SEE IF SPOOL SPECIF. @V50A2B5 00695000
- BNE MSG217 NO, ERROR @V50A2B5 00696000
- OKGO EQU * @V50A2B5 00697000
- L R2,=A(DMKPRGMC) YES, IS MONITOR ALREADY ACTIVE @V2B2638 00698000
- L R2,0(R2) PICK UP ADDRESS OF MONCOM @V2B2638 00699000
- LTR R2,R2 IS THERE ONE @V2B2638 00700000
- BNZ MSG211 YES, THEN START IS INVALID PARM @V2B2638 00701000
- SR R8,R8 CLEAR OUT REGISTER 8 @V50A2B5 00702000
- CLC SAVEWRK3(5),=CL8'SPOOL' IS IT SPOOLED @V50A2B5 00703000
- BE SPOOLIT YES, DO FURTHER TESTS @V50A2B5 00704000
- CALL DMKSCNFD LOOK FOR TAPE ADDRESS @V2B2638 00705000
- BNZ MSG021 NONE, ERROR @V2B2638 00706000
- C R0,F3 MUST BE 3 CHARS. OR LESS @V2B2638 00707000
- BH MSG021 TOO BIG, TOO BAD. @V2B2638 00708000
- LR R4,R1 SAVE FIELD ADDR IN CASE OF ERROR @V2B2638 00709000
- CALL DMKCVTHB OK, CONVERT TO BINARY @V2B2638 00710000
- BNZ MSG021 UNCONVERTABLE, BAD NEWS. @V2B2638 00711000
- CALL DMKSCNRU GET CORRESPONDING RDEV BLOK ADD. @V2B2638 00712000
- BNZ MSG040 NO SUCH DEVICE, BAD NEWS. @V2B2638 00713000
- USING RDEVBLOK,R8 RDEVBLOK DSECT @V2B2638 00714000
- CLI RDEVTYPC,CLASTAPE MUST BE TAPE DRIVE @V2B2638 00715000
- BNE MSG006 NOPE, TOO BAD. @V2B2638 00716000
- TM RDEVSTAT,RDEVDED IS IT ALREADY DEDICATED @V2B2638 00717000
- BO MSG140 YES, TOO BAD. @V2B2638 00718000
- TM RDEVSTAT,RDEVDISA IS DEVICE OFFLINE @V2B2638 00719000
- BO MSG046 YES, TOO BAD. @V2B2638 00720000
- TM RDEVFLAG,RDEVSYS ALREADY IN USE BY SYS? @V2B2638 00721000
- BO MSG143 MUST BE SYSTEM DUMP TAPE @V2B2638 00722000
- BUFFINIT EQU * @V50A2B5 00723000
- SPACE 00724000
- LA R5,2 SET DEFAULT OF 2 BUFFERS 00725000
- CLC CPUMODEL,TS145A IS CPU BIGGER THAN 145? @VA09802 00726100
- BNH DEFTMODE NO, DEFAULT IS ALL SET 00727000
- LA R5,1(R5) YES, INCREMENT DEFAULT TO 3 00728000
- CLC CPUMODEL,TS158A IS CPU BIGGER THAN 158? @VA09802 00729100
- BNH DEFTMODE NO, DEFAULT IS ALL SET 00730000
- LA R5,1(R5) YES, INCREMENT DEFAULT TO 4 00731000
- DEFTMODE LA R6,X'C3' SET DEFAULT TAPE MODE 00732000
- SPACE 00733000
- ******************************************************************* 00734000
- * * 00735000
- * NOW SCAN INPUT FOR POSSIBLE 'BUFFS' OR 'MODE' PARAMETER * 00736000
- * * 00737000
- ******************************************************************* 00738000
- SPACE 00739000
- SCNBUFMD CALL DMKSCNFD SCAN INPUT BUFFER 00740000
- BNZ NOMODE NONE FOUND, USE DEFAULTS 00741000
- MVC SAVEWRK1(8),BLANKS CLEAR WORK AREA @V50A2B5 00742000
- C R0,F8 IS LENGTH OF PARM > 8? 00743000
- BH MSG002 YES, MUST BE GARBAGE 00744000
- LR R2,R0 COPY LENGTH 00745000
- BCTR R2,0 SUBTRACT 1 FOR MOVE 00746000
- EX R2,PARMOVE1 MOVE INTO PROPER BUFFER @V50A2B5 00747000
- CLC =CL8'BUFFS',SAVEWRK1 IS IT BUFFS? @V50A2B5 00748000
- BE GETBUFFS YES, GO GET NUMBER OF BUFFERS 00749000
- CLC =CL8'MODE ',SAVEWRK1 IS IT BUFFS? @V50A2B5 00750000
- BNE MSG002 NO, IT'S GARBAGE 00751000
- CLC SAVEWRK3(5),=CL8'SPOOL ' ARE WE SPOOLING @V50A2B5 00752000
- BE MSG002 YES, BAD SITUATION @V50A2B5 00753000
- CALL DMKSCNFD FIND THE MODE SPECIFICATION @V2B2638 00754000
- BNE MSG026 OOPS, HE DIDN'T SAY ANYTHING. @V2B2638 00755000
- CL R0,F3 WITHIN ACCEPTABLE LIMITS? @V2B2638 00756000
- BL MSG002 NOPE, TOO BAD @V2B2638 00757000
- CL R0,F4 ... @V2B2638 00758000
- BH MSG002 ... @V2B2638 00759000
- MVC SAVEWRK1(4),BLANKS CLEAR A SPOT @V50A2B5 00760000
- LR R2,R0 SAVE LENGTH IN AN EXECUTABLE REG @V2B2638 00761000
- BCTR R2,0 DECREMENT BY ONE FOR THE EX @V2B2638 00762000
- EX R2,PARMOVE1 MOVE INTO PROPER BUFFER @V50A2B5 00763000
- LA R3,MONMODTB TABLE BEGINNING @VM01003 00764000
- LA R4,5 INCREMENT @VM01003 00765000
- LR R2,R5 SAVE NO. OF BUFFERS @V4M0162 00766000
- LA R5,MONMODTE TABLE END @VM01003 00767000
- TABSRCH CLC SAVEWRK1(4),0(R3) IS THIS THE MODE HE WANTS? @V50A2B5 00768000
- BE FOUNDM YES, BR. @V2B2638 00769000
- BXLE R3,R4,TABSRCH NOPE, KEEP LOOKING @V2B2638 00770000
- B MSG002 DID'NT FIND IT, TOO BAD. @V2B2638 00771000
- * 00772000
- ********************************************************************* 00773000
- * 00774000
- * MONITOR START SPOOL TO USER 00775000
- * 00776000
- * LOGIC TO START THE SPOOLING ACTIVITY TO USER 00777000
- * 00778000
- ********************************************************************* 00779000
- * 00780000
- SPOOLIT EQU * @V50A2B5 00781000
- CALL DMKMNISP VERIFY THE USER @V50A2B5 00782000
- CL R2,F5 IS THIS A FIVE @V50A2B5 00783000
- BE GETBUFFS YES, BUFFS ALREADY PARSED @V50A2B5 00784000
- LTR R2,R2 SEE IF ERROR OCCURRED @V50A2B5 00785000
- BNZ ACK YES, CONTINUE @V50A2B5 00786000
- B BUFFINIT OTHERWISE, CARRY ON @V50A2B5 00787000
- SPACE 2 00788000
- FOUNDM IC R6,4(R3) PICK UP THE MODESET OP CODE @V2B2638 00789000
- LR R5,R2 RESTORE BUFFERS VALUE @V4M0162 00790000
- SPACE 00791000
- B SCNBUFMD GO SCAN FOR THE BUFFS PARAMETER 00792000
- GETBUFFS CALL DMKSCNFD GET VALUE TO BE ASSIGNED TO BUFFS 00793000
- BNZ MSG026 NONE SPECIFIED, ERROR 00794000
- LR R3,R0 SAVE VALUES IN CASE OF ERROR 00795000
- LR R4,R1 00796000
- CALL DMKCVTDB CONVERT NUMBER OF BUFFS TO BINARY 00797000
- BNZ INVBUFFS IF CONVERSION ERROR, REJECT AS INVALID 00798000
- C R1,F10 IS BUFFS VALUE GREATER THAN MAX @VA07357 00799000
- BH INVBUFFS YES, INVALID 00800000
- C R1,F1 IS THIS SPECIAL ONE-BUFFER CASE? 00801000
- BE CHK1BUFF YES, MAKE SURE ONLY PERF IS ENABLED 00802000
- C R1,F0 WAS ZERO SPECIFIED? 00803000
- BE INVBUFFS YES, INVALID 00804000
- LR R5,R1 SAVE # OF BUFFS IN R5 FOR GETPAGE ROUTINE 00805000
- B SCNBUFMD GO SCAN FOR MODE PARAMETER 00806000
- INVBUFFS LR R0,R3 RESTORE VALUES 00807000
- LR R1,R4 FOR ERROR MESSAGE ROUTINE 00808000
- B MSG002 GO TO SEND ERROR MESSAGE 00809000
- SPACE 00810000
- CHK1BUFF L R2,=A(DMKPRGC8) GET ADDRESS OF MC MASK 00811000
- TM 2(R2),X'FF'-PERFCL ARE ANY CLASSES EXCEPT PERF 00812000
- BNZ INVBUFFS ENABLED? IF SO, INVALID 00813000
- TM 3(R2),X'FF' 00814000
- BNZ INVBUFFS 00815000
- L R2,0(R2) LOAD IN NUMBER @V50A2B5 00816000
- LTR R2,R2 SEE IF ANYTHING THERE @V50A2B5 00817000
- BNZ NOCHKE YES, THEN DON'T BOTHER @V50A2B5 00818000
- CLC SAVEWRK3(5),=C'SPOOL' SEE IF SPOOLING IS ON @V50A2B5 00819000
- BNE NOCHKE NO @V50A2B5 00820000
- L R2,=A(DMKSYSEN) GET THE DEFAULT ENABLE CLASSE@V50A2B5 00821000
- TM 0(R2),X'FF'-PERFCL ARE ANY CLASSES EXCEPT PERF@V50A2B5 00822000
- BNZ INVBUFFS ENABLED? IF SO, INVALAD @V50A2B5 00823000
- TM 1(R2),X'FF' OTHER CLASSES ENABLED? @V50A2B5 00824000
- BNZ INVBUFFS YES @V50A2B5 00825000
- NOCHKE EQU * @V50A2B5 00826000
- LR R5,R1 SAVE # OF BUFFS IN R5 FOR GETPAGE ROUTINE 00827000
- B SCNBUFMD GO SCAN FOR MODE PARAMETER 00828000
- NOMODE EQU * @V50A2B5 00829000
- CLC SAVEWRK3(5),=C'SPOOL' SEE IF SPOOLING @V50A2B5 00830000
- BE SKIPPARS YES, SKIP FOLLOWING @V50A2B5 00831000
- OI RDEVFLAG,RDEVSYS WE HAVE IT, MARK AS SYSTEM'S @V50A2B5 00832000
- L R1,ASYSVM I/O WILL BE CHARGED TO SYSTEM @V2B2638 00833000
- ST R1,RDEVUSER STORE IN RDEVBLOK @V2B2638 00834000
- SKIPPARS DS 0H @V50A2B5 00835000
- LA R0,MONSIZE SIZE OF MONITOR COMM. AREA @V2B2638 00836000
- LR R15,R5 NO. OF BUFFERS TO WORK REGISTER @VA07357 00837000
- SLL R15,3 2 * BUFFS * 4 = NO. OF MONCOM SLOTS @V50A2B5 00838000
- LA R15,7(R15) ENSURE DOUBLEWORD IS OBTAINED @VA07357 00839000
- AR R0,R15 MONSIZE + MONBUF1 AREA @VA07357 00840000
- SRL R0,3 CONVERT TO NUMBER OF DOUBLEWORDS @VA07357 00841000
- CALL DMKFREE GET THE STORAGE SPACE FOR IT @V2B2638 00842000
- L R2,=A(DMKPRGMC) SAVE ADDR IN DMKPRG @V2B2638 00843000
- ST R1,0(R2) POINTER TO MONITOR COMM. AREA @V2B2638 00844000
- USING MONCOM,R7 @V2B2638 00845000
- LR R7,R1 COMM. DSECT COVER REG. @V2B2638 00846000
- XC MONCOM(256),MONCOM CLEAR MONCOM @V60BEBC 00847000
- XC 256(MONSIZE-256,R1),256(R1) BASIC SECTION @V60BEBC 00847100
- ST R8,MONARDB SAVE TAPE RDEVBLOK ADDR @V2B2638 00848000
- DROP R8 DONE WITH RDEVBLOK @V2B2638 00849000
- LA R1,1 NON-ZERO VALUE IN MONIOBF 00850000
- ST R1,MONIOBF INDICATES TAPE BUSY 00851000
- L R1,=A(DMKRSPMN) BLANK OUT THE MONITOR @V50A2B5 00852000
- XC 0(4,R1),0(R1) FILE HOLDER FOR FILE RECOV @V50A2B5 00853000
- CLC =CL8'SPOOL',SAVEWRK3 SEE IF SPOOL IS INDICATED @V50A2B5 00854000
- BNE ARND NO, BRANCH @V50A2B5 00855000
- OI MONFLAG3,SPOOLED INDICATE SPOOL @V50A2B5 00856000
- L R1,=A(DMKPRGC8) SET THE MONITOR CLASSES @V50A2B5 00857000
- L R1,0(R1) LOAD THEM IN @V50A2B5 00858000
- LTR R1,R1 SEE IF ANYTHING THERE @V50A2B5 00859000
- BNE ARND NO NEED TO PUT IN DEFAULT @V50A2B5 00860000
- L R14,=A(DMKSYSEN) PUT IN THE DEFAULT @V50A2B5 00861000
- SR R15,R15 PREPARE REGISTER @V50A2B5 00862000
- O R15,0(R14) PUT IN STRING @V50A2B5 00863000
- SRL R15,16 SHIFT @V50A2B5 00864000
- L R1,=A(DMKPRGC8) GET ADDR OF CLASSES @V50A2B5 00865000
- ST R15,0(R1) FINALLY, STORE THERE @V50A2B5 00866000
- ARND EQU * @V50A2B5 00867000
- MVC MONUSER(8),VMUSER GET USER STARTING MON @V2B2638 00868000
- L R1,=A(DMKMONMI) ADDRESS OF DMKMON PROGRAM @V2B2638 00869000
- * CHECK HANDLER 00870000
- TRANS 2,1,OPT=(SYSTEM,BRING,DEFER,LOCK) PAGE IT IN, @V2B2638 00871000
- * LOCK IT AND GET ITS ADDRESS 00872000
- L R1,=A(DMKPRGMI) GET ADDR OF DMKMON IN PRG @V2B2638 00873000
- ST R2,0(R1) AND SET IT UP FOR PRG TO USE @V2B2638 00874000
- L R14,=A(DMKDSPNP) ADDR OF PAGEABLE PAGE COUNT @VA07357 00875000
- L R15,0(R14) TOTAL PAGEABLE PAGES @VA07357 00876000
- BCTR R15,0 LESS 1 FOR LOCK OF DMKMON @VA07357 00877000
- ST R15,0(R14) SAVE NEW TOTAL @VA07357 00878000
- LA R0,IOBSIZE+CCWSIZE IOB + CCW'S @V2B2638 00879000
- CALL DMKFREE GET THE STORAGE SPACE @V2B2638 00880000
- ST R1,MONAIOB SAVE ADDR IN COMM. AREA @V2B2638 00881000
- LR R10,R1 @V2B2638 00882000
- USING IOBLOK,R10 IOBLOK DSECT @V2B2638 00883000
- XC IOBLOK(IOBSIZE*8+CCWSIZE*8),IOBLOK CLEAR BLOCKS @V2B2638 00884000
- TM MONFLAG3,SPOOLED IS THIS SPOOLING AROUND @V50A2B5 00885000
- BO NOCONT YES @V50A2B5 00886000
- L R2,ASYSVM GET ADDRESS OF SYSTEM VMBLOK @V2B2638 00887000
- ST R2,IOBUSER CHARGE I/O TO THE SYSTEM @V2B2638 00888000
- LA R9,IOBSIZE*8+16(R10) ADDRESS OF INIT CCW'S @V2B2638 00889000
- ST R9,IOBCAW START OF CHANNEL PROGRAM @V2B2638 00890000
- MVC IOBSIZE*8(CCWSIZE*8,R10),CCWS GET MODEL CCWS @V2B2638 00891000
- NOCONT EQU * @V50A2B5 00892000
- STC R6,IOBSIZE*8+24(R10) PLUG IN CORRECT MODE @V2B2638 00893000
- LA R0,CPEXSIZE GET A CPEXBLOK FOR DMKMON... @V2B2638 00894000
- CALL DMKFREE ... TO USE IN CALLS TO IOS. @V2B2638 00895000
- XC 0(8*CPEXSIZE,R1),0(R1) CLEAR IT OUT. @V2B2638 00896000
- ST R1,IOBMISC SAVE ITS ADDRESS IN THE IOB. @V2B2638 00897000
- DROP R7,R10 SWITCH MONCOM TO R9, DROP IOB @V2B2638 00898000
- USING CORTABLE,R7 ... AND USE R7 FOR CORTABLE @V2B2638 00899000
- USING MONCOM,R9 @V2B2638 00900000
- LR R9,R7 SAVE MONCOM ADDRESS @V2B2638 00901000
- C R5,F1 IS THIS SPECIAL 1-BUFFER CASE? 00902000
- BNE INITREGS NO, NO SPECIAL FLAG NEEDED 00903000
- OI MONFLAG1,MON1BUF YES, INDICATE 1-BUFFER CASE 00904000
- INITREGS EQU * @VA07357 00905000
- LA R3,MONBUF1 POINT TO BEGINNING OF BUFF ADDR ENTRIES 00906000
- ST R3,MONCRSLT MAKE FIRST BUFFER THE CURRENT COLLECTOR 00907000
- GETPAGE SR R2,R2 CLEAR PARM REG FOR CALL TO PTRFR 00908000
- CALL DMKPGTVG OBTAIN SYSTEM VIRTUAL PAGE @V50A2B5 00909000
- ST R1,4(R3) STORE ITS VIRTUAL ADDRESS @V50A2B5 00910000
- TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM) @V50A2B5 00911000
- ST R2,0(R3) STORE ITS REAL ADDRESS @V50A2B5 00912000
- XC 0(20,R2),0(R2) NULL OUT LINE (NOTE 17 IN) @V50A2B5 00913000
- TM MONFLAG3,SPOOLED ARE WE SPOOLING @V50A2B5 00914000
- BNO *+12 NO @V50A2B5 00915000
- OI 8(R2),MONBUFAV YES, SET AT BYTE 8 IN @V50A2B5 00916000
- B *+8 FINISHED @V50A2B5 00917000
- OI 2(R2),MONBUFAV ELSE SET BYTE 2 IN @V50A2B5 00918000
- LR R7,R2 COMPUTE FOR CORETABLE @V50A2B5 00919000
- SRL R7,12-4 ADDRESS * 16 @V50A2B5 00920000
- A R7,ACORETBL ADDRESS OF CORETABLE @V50A2B5 00921000
- OI CORFLAG,CORCP SET FOR SYSTEM DUMPS @V50A2B5 00922000
- LA R3,8(R3) BUMP FOR NEXT SETTING @V50A2B5 00923000
- L R14,=A(DMKDSPNP) GET PAGEABLE COUNT @V50A2B5 00924000
- L R15,0(R14) BUMP IT DOWN @V50A2B5 00925000
- BCTR R15,0 HERE @V50A2B5 00926000
- ST R15,0(R14) AND STORE IT @V50A2B5 00927000
- BCT R5,GETPAGE GO GET ANOTHER PAGE, IF NECESSARY 00928000
- MVC 0(4,R3),=X'FFFFFFFF' INDICATE END OF TABLE 00929000
- L R2,MONBUF1 INDICATE THAT 1ST BUFF IS CURR COLLECTOR 00930000
- ST R2,MONCURBF SET POINTER TO CURRENT COLLECTOR 00931000
- SR R2,R2 @VA08803 00932000
- CLC SAVEWRK3(5),=C'SPOOL' IS THIS DISK? @VA08803 00932300
- BNE MONTP NO - MUST BE TAPE @VA08803 00932600
- ST R2,MONIOBF ZERO I/O BUFFER PTRS @VA08605 00933100
- MONTP EQU * @VA08803 00933200
- ST R2,MONIOSLT 00934000
- L R5,PREFIXA GET ADDRESS OF ABSOLUTE PSA 00935000
- L R4,MONBUF1 ADDRESS OF FIRST SLOT @V50A2B5 00936000
- TM MONFLAG3,SPOOLED ARE WE SPOOLED @V50A2B5 00937000
- BNO *+12 NO @V50A2B5 00938000
- OI 8(R4),MONBUFAC SET BYTE 8 IN @V50A2B5 00939000
- B *+8 CONTINUE @V50A2B5 00940000
- OI 2(R4),MONBUFAC SET BYTE 2 IN @V50A2B5 00941000
- ST R4,PAGECUR(R5) SET POINTER IN ABS PSA TO CURR COLLECTOR 00942000
- LA R4,MNBHDLEN(R4) POINT PAST BLOCK HDR TO FIRST RECORD 00943000
- ST R4,MONNEXT(R5) SAVE POINTER TO NEXT RECORD IN ABS PSA 00944000
- O R4,=F'4088' CREATE ADDRESS OF LAST BYTE @V50A2B5 00945000
- ST R4,PAGEND(R5) SAVE IT IN ABS PSA 00946000
- LR R7,R9 R7 = MONCOM, R9 = MONCOM FOR HDR @V2B2638 00947000
- DROP R7,R9 DROP CORTABLE AND MONCOM @V2B2638 00948000
- USING MONCOM,R7 RE-ESTABLISH MONCOM @V2B2638 00949000
- L R2,=A(DMKPRGC8) GET CURRENT CR8 VALUE @V2B2638 00950000
- TM 2(R2),PERFCL+USERCL+DASDCL SAMPLING CLASSES TOO?@V2B2638 00951000
- BZ HEADER NO, NO TRB REQUIRED @V2B2638 00952000
- BAL R8,GETTRB YES, GET TRB AND ENQUEUE IT @V2B2638 00953000
- * R9=MONCOM FOR DMKMON 00954000
- HEADER EQU * @V50A2B5 00955000
- TM MONFLAG3,SPOOLED ARE WE SPOOLED @V50A2B5 00956000
- BNO TOHDR NO, GO DO THE HEADER @V50A2B5 00957000
- L R2,SAVER12 SEE IF MANUAL COMMAND @V50A2B5 00958000
- CLC 0(8,R2),=C'DMKMIA ' BY NOTING PROGRAM HEADER @V50A2B5 00959000
- BE AUTONOMG THIS IS AUTOMATIC @V50A2B5 00960000
- LR R2,R0 SAVE REGISTER 0 @V50A2B5 00961000
- LR R3,R1 SAVE REGISTER 1 @V50A2B5 00962000
- LA R0,L'STARTMSG LENGTH OF START MESSAGE @V50A2B5 00963000
- LA R1,STARTMSG ADDRESS OF START MESSAGE @V50A2B5 00964000
- CALL DMKMIAMU GIVE THE START MESSAGE @V50A2B5 00965000
- LR R0,R2 RESTORE REGISTER 0 @V50A2B5 00966000
- LR R1,R3 RESTORE REGISTER ONE @V50A2B5 00967000
- AUTONOMG EQU * @V50A2B5 00968000
- CALL DMKMIARO INITIALIZE SPOOL FILE @V50A2B5 00969000
- LTR R1,R1 WAS DMKMIARO SUCCESSFUL @VA13421 00969100
- BNE ACK NO, EXIT @VA13421 00969200
- USING CPEXBLOK,R1 CPEXBLOK IN REGISTER 1 @V50A2B5 00970000
- LA R0,CPEXSIZE SIZE OF CPEXBLOCK @V50A2B5 00971000
- CALL DMKFREE ACQUIRE STORAGE @V50A2B5 00972000
- STM R0,R15,CPEXR0 SAVE THE REGISTERS @V50A2B5 00973000
- LR R3,R1 SAVE REGISTER 1 @V50A2B5 00974000
- L R1,=A(DMKMNIDK) ADDRESS OF HEADER RTNE @V50A2B5 00975000
- TRANS R2,R1,OPT=(SYSTEM,BRING,DEFER,LOCK) PAGE IT IN @V50A2B5 00976000
- L R14,=A(DMKDSPNP) GET PAGEABLE COUNT @V50A2B5 00977000
- L R15,0(R14) LOAD IT IN @V50A2B5 00978000
- BCTR R15,0 BUMP IT DOWN @V50A2B5 00979000
- ST R15,0(R14) AND STORE IT @V50A2B5 00980000
- LR R1,R3 RESTORE REGISTER ONE @V50A2B5 00981000
- ST R2,CPEXR12 SET UP REGISTER 12 @V50A2B5 00982000
- ST R2,CPEXADD AND INTERRUPT ADDRESS @V50A2B5 00983000
- L R0,ASYSVM POINT TO SYSTEM VMBLOK @V50A2B5 00984000
- ST R0,CPEXR11 CHARGE TO SYSTEM @V50A2B5 00985000
- CALL DMKSTKCP STACK THE BLOCK @V50A2B5 00986000
- B ACK AND LEAVE @V50A2B5 00987000
- DROP R1 @V50A2B5 00988000
- TOHDR CALL DMKMNITH DO TAPE HEADER @V50A2B5 00989000
- ACK EQU * @V50A2B5 00990000
- L R1,SAVER12 IF THIS WAS CALLED BY MIA @V50A2B5 00991000
- CLC 0(8,R1),=C'DMKMIA ' IF MIA CALL, SKIP THIS @V50A2B5 00992000
- BE NOMSG SEND NO MESSAGE @V50A2B5 00993000
- LA R0,L'STAMSG1 GET MESSAGE LENGTH @V50A2B5 00994000
- LA R1,STAMSG1 AND LOCATION @V2B2638 00995000
- CALL DMKQCNWT,PARM=NORET @V2B2638 00996000
- NOMSG EQU * @V50A2B5 00997000
- EXIT COMMAND COMPLETE @V2B2638 00998000
- EJECT 00999000
- * 01000000
- ********************************************************************** 01001000
- * 01002000
- * MONITOR TIME 01003000
- * 01004000
- * CHANGES THE TIME OPTIONS FOR AUTOMATIC SPOOLING 01005000
- * 01006000
- ********************************************************************** 01007000
- * 01008000
- MONTIME CALL DMKMCDTI CALL EXTENSION FOR TIME PROCESS.@VA08291 01009000
- B ACK RETURN @V50A2B5 01167000
- EJECT 01168000
- MONCLOSE EQU * @V50A2B5 01169000
- CALL DMKMIACC THE CLOSE ROUTINE @V50A2B5 01170000
- B ACK EXIT @V50A2B5 01171000
- *********************************************************************** 01172000
- * 01173000
- * MONITOR STOP 01174000
- * 01175000
- ********************************************************************** 01176000
- SPACE 1 01177000
- MONSTOP CALL DMKMCDST CALL EXTENSION FOR STOP PROCESS.@VA08291 01178000
- B ACK RETURN @VA08291 01179000
- ***************************************************************@V60BEBC 01179100
- * @V60BEBC 01179110
- * MONITOR SEEKS PROCESSOR @V60BEBC 01179120
- * INCLUDE, EXCLUDE, DELETE, DISPLAY OPTIONS HANDLED BY @V60BEBC 01179130
- * COMMAND PROCESSOR EXTENSION @V60BEBC 01179140
- * @V60BEBC 01179150
- ***************************************************************@V60BEBC 01179160
- SPACE 1 @V60BEBC 01179170
- MONSEEKS CALL DMKMCDSE CALL EXTENSION FOR SEEKS HANDLIN@V60BEBC 01179180
- B ACK ACKNOWLEDGE COMMAND COMPLETE @V60BEBC 01179190
- SPACE 4 01213000
- PARMOVE MVC SAVEWRK3(0),0(R1) MOVE ARG TO TEMP AREA @V2B2638 01214000
- PARMOVE1 MVC SAVEWRK1(0),0(R1) MOVE ARG TO TEMP AREA @V50A2B5 01215000
- EJECT 01216000
- EJECT 01291000
- *. 01292000
- *********************************************************************** 01293000
- * 01294000
- * SUBROUTINES: 01295000
- * 01296000
- * GETTRB WILL OBTAIN, INITIALIZE AND ENQUEUE A TRQBLOK. 01297000
- * IT ALSO INITIALIZES THE VALUE IN DMKPRGTI IF IT WASN'T 01298000
- * SET BY A 'MONITOR INTERVAL' COMMAND. 01299000
- * THE DMKPRGTI VALUE IS USED BY DMKMONTI TO SET UP THE 01300000
- * NEXT TIMER REQUEST WHEN ONE OCCURS. 01301000
- * 01302000
- *********************************************************************** 01303000
- *. 01304000
- SPACE 1 01305000
- GETTRB LA R0,TRQBSIZE @V2B2638 01306000
- CALL DMKFREE GET SPACE FOR A TRQBLOK @V2B2638 01307000
- USING TRQBLOK,R6 @V2B2638 01308000
- LR R6,R1 ADDRESS IT VIA R6 @V2B2638 01309000
- ST R6,MONATRB SAVE IN COMMUNICATIONS AREA @V2B2638 01310000
- L R2,ASYSVM CHARGE HANDLING TO SYSTEM @V2B2638 01311000
- ST R2,TRQBUSER @V2B2638 01312000
- STCK TRQBTOD TIME OF DAY FOR REQUEST @V2B2638 01313000
- BC 12,CLOCKOK IS CLOCK FUNCTIONING? @VA04301 01314000
- GOTO DMKCVTAB CLOCK DAMAGED...ABEND CVT001 @VA04301 01315000
- CLOCKOK EQU * @VA04301 01316000
- L R4,=A(DMKPRGTI) ADDRESS OF THE INTERVAL @V2B2638 01317000
- SLR R5,R5 CLEAR FOR ICM @V2B2638 01318000
- ICM R5,B'0011',0(R4) GET THE INTERVAL IN SEC @V2B2638 01319000
- BNZ INTSPEC INTERVAL ALREADY SPECIFIED @V2B2638 01320000
- LA R5,MONTINT SET TO DEFAULT INTERVAL @V2B2638 01321000
- STH R5,0(R4) AND PUT BACK IN PRGTI @V2B2638 01322000
- INTSPEC SR R4,R4 CLEAR FOR MULT. @V2B2638 01323000
- M R4,=F'1000000' IN UNITS OF MICRO SECONDS @V2B2638 01324000
- SLDL R4,12 ALIGN WITH TOD FORMAT @V2B2638 01325000
- AL R5,TRQBTOD+4 ADD IN TOD LOW ORDER BITS @V2B2638 01326000
- BC 12,*+8 SKIP IF NO OVERFLOW @V2B2638 01327000
- AL R4,F1 ADD 1 SEC TO HIGH ORDER TOD @V2B2638 01328000
- AL R4,TRQBTOD ADD IN HIGH ORDER TOD BITS @V2B2638 01329000
- STM R4,R5,TRQBVAL NEXT INTERRUPT DUE AT THIS TIME @V2B2638 01330000
- L R1,=A(DMKMONTI) GET ADDR OF MON TIMER RTN @V2B2638 01331000
- TRANS 2,1,OPT=(SYSTEM,BRING,DEFER) GO GET IT @V2B2638 01332000
- ST R2,TRQBIRA AND PUT IT IN THE TRQBLOK @V2B2638 01333000
- LR R1,R6 FOR CALL TO SCH @V2B2638 01334000
- CALL DMKSCHST INSERT TRB IN REQUEST BLOCK CHAIN@V2B2638 01335000
- BR R8 GO AND COMPLETE COMMAND @V2B2638 01336000
- DROP R6 @V2B2638 01337000
- EJECT 01338000
- *********************************************************************** 01339000
- * 01340000
- * ALL ERROR MESSAGES ARE SENT FROM HERE. 01341000
- * DMKERM RETURNS DIRECTLY TO DMKCFM. 01342000
- * 01343000
- *********************************************************************** 01344000
- SPACE 01345000
- MSG002 LA R2,2 INVALID OPERAND MESSAGE @V2B2638 01346000
- B BADARG @V2B2638 01347000
- SPACE 1 01348000
- MSG003 LA R2,3 INVALID OPTION @V2B2638 01349000
- B BADARG @V2B2638 01350000
- SPACE 01351000
- MSG006 LA R2,6 INVALID DEVICE TYPE XXX @V2B2638 01352000
- LR R1,R4 FIELD ADDRESS @V2B2638 01353000
- LA R0,3 3 BYTES FO SUBSTITUTABLE @V2B2638 01354000
- B BADARG @V2B2638 01355000
- SPACE 01356000
- MSG021 LA R2,21 RADDR MISSING OR INVALID @V2B2638 01357000
- B ZIPR1 @V2B2638 01358000
- SPACE 01359000
- MSG026 LA R2,26 OPERAND MISSING OR INVALID @V2B2638 01360000
- B ZIPR1 @V2B2638 01361000
- SPACE 01362000
- MSG040 LA R2,40 DEV XXX DOES NOT EXIST @V2B2638 01363000
- LR R1,R4 ADDR OF FIELD @V2B2638 01364000
- LA R0,3 3 BYTES OF SUBSTITUTABLE @V2B2638 01365000
- B BADARG @V2B2638 01366000
- SPACE 01367000
- MSG046 LA R2,46 TAPE XXX OFFLINE @V2B2638 01368000
- B MSG143A GO PROCESS SAME AS MSG143 @V2B2638 01369000
- SPACE 01370000
- USING RDEVBLOK,R8 ADDRESSABILITY FROM BEFORE @V2B2638 01371000
- MSG140 LA R0,3 TAPE CCU ATTACHED TO USERID @V2B2638 01372000
- CALL DMKFREE @V2B2638 01373000
- MVC 0(4,R1),=C'TAPE' @V2B2638 01374000
- MVI 4(R1),X'00' SEPARATOR @V2B2638 01375000
- MVC 5(3,R1),0(R4) 3 CHAR. DEV. ADD. @V2B2638 01376000
- MVI 8(R1),X'00' SEPARATOR @V2B2638 01377000
- L R2,RDEVUSER VMBLOCK ADD. OF USER OF TAPE @V2B2638 01378000
- MVC 9(8,R1),VMUSER-VMBLOK(R2) ADD USERID TO MSG @V2B2638 01379000
- LA R2,140 'TAPE ATTACHED' MSG. @V2B2638 01380000
- O R2,=X'40000000' SET 'FRET STG WHEN DONE' FLAG @V2B2638 01381000
- LR R3,R1 ADDRESS OF STORAGE TO BE FRETTED @V2B2638 01382000
- O R3,=X'03000000' 3 DOUBLE WORDS OF IT @V2B2638 01383000
- LA R0,17 17 BYTES OF MESSAGE DATA @V2B2638 01384000
- B BADARG @V2B2638 01385000
- DROP R8 @V2B2638 01386000
- SPACE 01387000
- MSG143 LA R2,143 TAPE CCU IN USE BY SYSTEM @V2B2638 01388000
- MSG143A LA R0,1 @V2B2638 01389000
- CALL DMKFREE @V2B2638 01390000
- MVC 0(4,R1),=C'TAPE' 1ST SUBST. = DEV TYPE @V2B2638 01391000
- MVI 4(R1),X'00' SEPARATOR @V2B2638 01392000
- MVC 5(3,R1),0(R4) 3 CHARACTER DEVICE ADDRESS @V2B2638 01393000
- O R2,=X'40000000' SET 'STG TO BE FRETTED' FLAG @V2B2638 01394000
- LR R3,R1 ADDRESS OF THE STORAGE @V2B2638 01395000
- O R3,=X'01000000' 1 DOUBLE WORD OF IT @V2B2638 01396000
- LA R0,8 8 BYTES OF MSG SUBSTITUTE DATA @V2B2638 01397000
- B BADARG @V2B2638 01398000
- SPACE 01399000
- MSG210 LA R2,210 PERF/USER ACTIVE, CANT CHANGE INT@V2B2638 01400000
- B ZIPR1 @V2B2638 01401000
- SPACE 01402000
- MSG211 EQU * @V50A2B5 01403000
- DROP R7 @V50A2B5 01404000
- USING MONCOM,R2 @V50A2B5 01405000
- LA R1,211 ASSUME MON IS TO TAPE @V50A2B5 01406000
- TM MONFLAG3,SPOOLED ARE WE SPOOLING @V50A2B5 01407000
- BNO *+8 NO @V50A2B5 01408000
- LA R1,221 TELL THAT SPOOL IS ON @V50A2B5 01409000
- LR R2,R1 SET UP REG 2 @V50A2B5 01410000
- DROP R2 @V50A2B5 01411000
- USING MONCOM,R7 @V50A2B5 01412000
- B ZIPR1 @V2B2638 01413000
- SPACE 01414000
- SPACE 01417000
- MSG213 LA R2,213 CP TRACE TABLE IS ALREADY ACTIVE @V2B2638 01418000
- B ZIPR1 @V2B2638 01419000
- SPACE 01420000
- SPACE 01423000
- MSG215 LA R2,215 CANT ENABLE DASD ON THE FLY @V2B2638 01424000
- B ZIPR1 @V2B2638 01425000
- SPACE 01426000
- MSG216 LA R2,216 SYSPROF REQUIRES SCHED AND DASD @V2B2638 01427000
- B ZIPR1 @V2B2638 01428000
- SPACE 01429000
- MSG217 LA R2,217 MON NOT STARTED, NO CLASS ENABLED@V2B2638 01430000
- B ZIPR1 @V2B2638 01431000
- SPACE 01432000
- SPACE 1 01453000
- MSG219 EQU * MSG NO 219 ISSUED FROM DMKMON @V2B2638 01454000
- SPACE 01455000
- MSG220 EQU * MSG NO 220 ISSUED FROM DMKMON @V2B2638 01456000
- SPACE 01457000
- ZIPR1 SLR R1,R1 NO SUBSTITUTABLES FOR ERM @V2B2638 01458000
- SPACE 01459000
- BADARG ICM R0,B'1110',MODID+3 MODULE ID FOR MSG @V2B2638 01460000
- CALL DMKERMSG SEND ERROR MESSAGE @V2B2638 01461000
- SPACE 01462000
- * 01463000
- * AFTER ALL MESSAGES DMKERMSG RETURNS TO DMKCFM DIRECTLY. 01464000
- * 01465000
- EJECT 01466000
- *********************************************************************** 01467000
- * 01468000
- * CONSTANTS, WORK AREAS, EQUATES 01469000
- * 01470000
- *********************************************************************** 01471000
- SPACE 1 01472000
- MONOPTAB DS 0F MONITOR COMMAND OPTION 1 TABLE @V2B2638 01473000
- DC H'2',C'START ' 3 CHAR MIN @V2B2638 01474000
- B MONSTART ROUTINE ADDRESS @V2B2638 01475000
- DC H'3',C'STOP ' 4 CHAR MIN @V2B2638 01476000
- B MONSTOP ROUTINE ADDRESS @V2B2638 01477000
- DC H'0',C'DISPLAY ' 1 CHAR MIN @V2B2638 01478000
- B MONCLDIS ROUTINE ADDRESS @V2B2638 01479000
- DC H'1',C'ENABLE ' 2 CHAR MIN @V2B2638 01480000
- B MONCLEN ROUTINE ADDRESS @V2B2638 01481000
- DC H'2',C'INTERVAL' 3 CHAR MIN @V2B2638 01482000
- B MONINTVL ROUTINE ADDRESS @V2B2638 01483000
- DC H'3',C'AUTODISK' 4 CHARACTER MIN @V50A2B5 01484000
- B MONAUTO ROUTINE ADDRESS @V50A2B5 01485000
- DC H'2',C'LIMIT ' 3 CHARACTER MIN @V50A2B5 01486000
- B MONMAX ROUTINE ADDRESS @V50A2B5 01487000
- DC H'3',C'TIME ' 4 CHARACTER MIN @V50A2B5 01488000
- B MONTIME ROUTINE ADDRESS @V50A2B5 01489000
- DC H'1',C'CLOSE ' 2 CHARACTER MIN @V50A2B5 01490000
- B MONCLOSE @V50A2B5 01491000
- DC H'1',C'SEEKS ' @V60BEBC 01491100
- B MONSEEKS DO SEEKS PROCESSING @V60BEBC 01491200
- OPTABENO EQU (*-MONOPTAB)/14 NUMBER OF ENTRIES @V2B2638 01492000
- SPACE 5 01493000
- * 01494000
- * THE FOLLOWING ENTRIES ARE THE IMPLEMENTED CLASSES OF 01495000
- * THE MONITOR. THIS TABLE MUST BE KEPT IN ORDER 01496000
- * FOLLOWING EACH KEYWORD IS ITS MINIMUM SPECIFIABLE LENGTH -1. 01497000
- * 01498000
- SPACE 01499000
- MONCLTBL DS 0F TABLE OF MC CLASS KEYWORDS @V2B2638 01500000
- DC CL8'PERFORM ',X'03' @V2B2638 01501000
- AIF (&TRACE(1)).TR1ON @V2B2638 01502000
- DC CL8' ',X'09' RESERVED @V2B2638 01503000
- AGO .TR1OFF @V2B2638 01504000
- .TR1ON ANOP 01505000
- DC CL8'RESPONSE',X'03' @V2B2638 01506000
- .TR1OFF ANOP 01507000
- DC CL8'SCHEDULE',X'02' @V2B2638 01508000
- DC CL8' ',X'09' RESERVED @V2B2638 01509000
- DC CL8'USER ',X'03' @V2B2638 01510000
- DC CL8'INSTSIM ',X'03' @V2B2638 01511000
- DC CL8'DASTAP ',X'02' @V2B2638 01512000
- DC CL8'SEEKS ',X'03' @V2B2638 01513000
- DC CL8'SYSPROF ',X'02' @V2B2638 01514000
- MONTBENO EQU (*-MONCLTBL)/9 NUMBER OF ENTRIES IN THE TABLE @V2B2638 01515000
- SPACE 3 01516000
- MONMODTB DC CL4'800',X'CB' MODE = 800, MODE SET = CB @V2B2638 01517000
- DC CL4'1600',X'C3' MODE = 1600, MODE SET = C3 @V2B2638 01518000
- MONMODTE DC CL4'6250',X'D3' MODE = 6250, MODE SET = D3 @V2B2638 01519000
- SPACE 3 01520000
- CLASNOS DC C'00010203040506070809101112131415' LIST OF @V2B2638 01521000
- * CLASS NUMBERS FOR MONITOR DISPLAY 01522000
- TS145A DC X'0145' @VA09802 01522050
- TS158A DC X'0158' @VA09802 01522100
- EJECT 01523000
- CCWS CCW X'01',*,SILI,1 WRITE DATA @V2B2638 01524000
- CCW X'1F',*,CC+SILI,1 WRITE TAPE MARK @V2B2638 01525000
- CCW X'07',*,CC+SILI,1 REWIND CHANGED TO WTM @V2B2638 01526000
- CCW X'C3',*,SILI,1 SET MODE CHANGED TO RUN @V2B2638 01527000
- CCWSIZE EQU (*-CCWS)/8 DBL WD SIZE OF CCW'S @V2B2638 01528000
- SPACE 01529000
- DISPMSG1 DC C'CLS KEYWORD STATUS' @V2B2638 01530000
- ENAB DC CL8'ENABLED ' @V2B2638 01531000
- DISAB DC CL8'DISABLED' @V2B2638 01532000
- STAMSG1 DC C'COMMAND COMPLETE' @V2B2638 01533000
- TIMVAL DS 0D @V50A2B5 01534000
- DC CL8' ' @V50A2B5 01535000
- TEMPSTRT DC CL8' ' @V50A2B5 01536000
- TEMPEND DC CL8' ' @V50A2B5 01537000
- SET24 DC XL8'000141DD76000000' @V50A2B5 01538000
- DS 0F @V50A2B5 01539000
- TIMEFROM DS 4H @V50A2B5 01540000
- TIMETO DS 4H @V50A2B5 01541000
- STARTMSG DC C'MONITOR HAS BEEN MANUALLY STARTED' @V50A2B5 01542000
- STOPMSG DC C'MONITOR HAS BEEN MANUALLY STOPPED' @V50A2B5 01543000
- LENMSG EQU 21 LENGTH OF DISPLAY MESSAGE @V2B2638 01544000
- MONTINT EQU 60 DEFAULT INTERVAL = 60 SEC @V2B2638 01545000
- EJECT 01546000
- LTORG @V2B2638 01547000
- EJECT 01548000
- COPY EQU @V2B2638 01549000
- PSA @V2B2638 01550000
- COPY MONBLOKS @V2B2638 01551000
- COPY VMBLOK @V2B2638 01552000
- COPY SAVE @V2B2638 01553000
- COPY IOBLOKS @V2B2638 01554000
- COPY CORE @V2B2638 01555000
- COPY DEVTYPES @V2B2638 01556000
- COPY RBLOKS @V2B2638 01557000
- COPY TIMER @V2B2638 01558000
- COPY UDIRECT @V50A2B5 01559000
- END 01560000
ibm/vm370-lib/cp/dmkmcc.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator