ibm:vm370-lib:cp:dmknle.assemble_src
Table of Contents
DMKNLE Source
References
- Fixes Applied : 6
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [HRC106DK]
Source Listing
- DMKNLE.ASSEMBLE.txt
- NLE TITLE 'DMKNLE (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCEING OF INPUT 00002000
- *. 00003000
- * MODULE NAME - 00004000
- * 00005000
- * DMKNLE 00006000
- * 00007000
- * FUNCTION - 00008000
- * 00009000
- * TO PERFORM THE DUMP FUNCTION ON THE 3705 INDICATED. 00010000
- * 00011000
- * ATTRIBUTES - 00012000
- * 00013000
- * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000
- * 00015000
- * ENTRY POINTS - 00016000
- * DMKNLEMP - ENTRY TO DUMP 3705 NETWORK CONTROL PROGRAM. 00018000
- * 00019000
- * NOTE: THIS ROUTINE MAY BE CALLED VIA CONSOLE COMMAND FROM DMKNET 00020000
- * OR INTERNALLY BY DMKRNH. 00021000
- * 00022000
- * ENTRY CONDITIONS - 00023000
- * 00024000
- * FROM DMKNET 00025000
- * 00026000
- * GPR2 - ZEROES 00027000
- * GPR9 - ADDRESS OF COMMAND LINE BUFFER 00028000
- * GPR11 - ADDRESS OF VMBLOK 00029000
- * GPR12 - ADDRESS OF ENTRY POINT 00030000
- * GPR13 - ADDRESS OF SAVEAREA 00031000
- * 00032000
- * FROM DMKRNH - 00033000
- * 00034000
- * GPR2 - NON-ZERO 00035000
- * GPR8 - ADDRESS OF REAL DEVICE BLOK FOR 3705 00036000
- * GPR11 - ADDRESS OF VMBLOK 00037000
- * GPR12 - ADDRESS OF ENTRY POINT 00038000
- * GPR13 - ADDRESS OF SAVEAREA 00039000
- * 00040000
- * EXIT CONDITIONS - 00041000
- * 00042000
- * NORMAL - 00043000
- * GPR2 = 0 00044000
- * 00045000
- * ERROR - 00046000
- * GPR2 = ERROR MESSAGE CODE NUMBER 00047000
- * 00048000
- * NOTE: RETURN IS DIRECTLY TO DMKCFM IF CALLED FROM DMKNET - TO CALLER 00049000
- * OTHERWISE. 00050000
- * 00051000
- * CALLS TO OTHER ROUTINES - 00052000
- * 00053000
- * DMKSCNFD - TO LOCATE NEXT ARGUMENT IN THE COMMAND LINE 00054000
- * DMKCVTHB - CONVERT HEXADECIMAL ADDRESSES TO BINARY 00055000
- * DMKSCNRU - TO LOCATE ADDRESSES OF THE REAL DEVICE BLOKS 00057000
- * DMKQCNWT - TO OUTPUT MESSAGES TO THE TERMINAL 00058000
- * DMKFREE - TO OBTAIN STORAGE FROM FREE STORAGE 00059000
- * DMKFRET - TO RETURN STORAGE TO FREE STORAGE 00060000
- * DMKPGTVG - TO GET A BUFFER OF PAGEABLE CP CORE. 00061000
- * DMKPGTVR - TO RELEASE A BUFFER OF PAGEABLE CP CORE. 00062000
- * DMKPTRUL - TO UNLOCK A PAGE IN VIRTUAL MACHINE 00063000
- * DMKERMSG - TO SEND ERROR MESSAGES TO THE TERMINAL. 00064000
- * DMKPTRAN - TO BRING A PAGE IN CORE 00065000
- * DMKCVTBH - CONVERT BINARY DATA TO HEXADECMAL 00066000
- * DMKSTKIO - TO STACK AN I/O BLOCK FOR PROCESSING 00067000
- * DMKRPAPT - TO WRITE A PAGE IN CORE TO DASD 00068000
- * DMKIOSQR - TO PERFORM I/O OPERATIONS ON 3705 00071000
- * DMKCKSPL - TO CHECKPOINT DUMP SPOOL FILE BLOCK 00073000
- * 00074000
- * EXTERNAL REFERENCES - 00075000
- * 00076000
- * CXZNPH1 - 370X CHANNEL ADAPTER TYPE1 DUMP BOOTSTRAP PHASE1 00081000
- * CXZNPH2 - 370X CHANNEL ADAPTER TYPE1 DUMP BOOTSTRAP PHASE2 00082000
- * CXZXPH1 - 370X CHANNEL ADAPTER TYPE2 DUMP BOOTSTRAP PHASE1 00083000
- * CXZXPH2 - 370X CHANNEL ADAPTER TYPE2 DUMP BOOTSTRAP PHASE2 00084000
- * DMKRSPID - LOCATION OF NEXT SPOOL FILE I.D. 00085000
- * DMKRNHIN - LOCATION OF 370X TERMINAL INTERRUPT HANDLER 00086000
- * 00088000
- * 00089000
- * TABLES/WORKAREAS - NONE 00090000
- * 00091000
- * REGISTER USAGE - 00092000
- * 00093000
- * GPR0 - ARGUMENT LENGTH (PASSED BACK FROM DMKSCNFD) 00094000
- * GPR1 - ARGUMENT ADDRESS (PASSED BACK FROM DMKSCNFD) 00095000
- * GPR2 - PASS PARAMETERS TO CALLED ROUTINES 00096000
- * GPR3 - WORK REG 00097000
- * GPR4 - WORK REG 00098000
- * GPR5 - WORK REG 00099000
- * GPR6 - WORK REG 00100000
- * GPR7 - INTERNAL LINKAGE REG 00101000
- * GPR8 - RDEVBLOK ADDRESS (FROM SYSTEM ROUTINES) 00102000
- * GPR9 - COMMAND LINE BUFFER (FROM DMKNET) AND LINKAGE REG 00103000
- * GPR10 - IOBLOK ADDRESS 00104000
- * GPR11 - VMBLOK ADDRESS 00105000
- * GPR12 - BASE REG 00106000
- * GPR13 - SAVEAREA ADDRESS 00107000
- * GPR14 - LINKAGE REG 00108000
- * GPR15 - LINKAGE REG 00109000
- *. 00110000
- EJECT 00111000
- COPY OPTIONS @V200899 00112000
- COPY LOCAL @V200899 00113000
- SPACE 2 00114000
- DMKNLE START , @V200899 00115000
- SPACE 00116000
- MODID DC CL8'DMKNLE' @V200899 00117000
- SPACE 00118000
- USING PSA,R0 @V200899 00119000
- USING RDEVBLOK,R8 @V200899 00120000
- USING IOBLOK,R10 @V200899 00121000
- USING VMBLOK,R11 @V200899 00122000
- USING SAVEAREA,R13 @V200899 00123000
- SPACE 00124000
- EXTRN DMKPGTVG,DMKPGTVR,DMKPGTCG,DMKPGTSD @V200899 00125000
- EXTRN DMKSCNFD,DMKSCNRU,DMKSCNRD @V200899 00126000
- EXTRN DMKCVTBH,DMKCVTHB,DMKCVTDT @V200899 00127000
- EXTRN DMKIOSQR,DMKQCNRD,DMKERMSG @V200899 00128000
- EXTRN DMKRPAPT,DMKSTKIO,DMKPTRUL @V200899 00129000
- EXTRN DMKQCNWT,DMKPTRAN @V407508 00129100
- SPACE 00132000
- EXTRN DMKRNHIN,DMKRSPID,DMKSYSDU @V200820 00133000
- EXTRN CXZXPH1,CXZXPH2,CXZNPH1,CXZNPH2 DUMP @V200899 00135000
- EXTRN DMKCKSPL @V304298 00136000
- EJECT 00137000
- *. 00138000
- * COMMAND LINE FORMAT - 00139000
- * 00140000
- * +---------+-----------------------------------+ 00146000
- * | | ** ** | 00147000
- * | NETWORK | DUMP RADDR * IMMED | OFF | AUTO * | 00148000
- * | NET | * ----- * | 00149000
- * | | ** ** | 00150000
- * +---------+-----------------------------------+ 00151000
- * 00152000
- * OPERATION - 00153000
- * 00154000
- * 1. DETERMINE WHETHER ENTRY WAS FROM SYSTEM OR VIA NETWORK 00155000
- * CONSOLE COMMAND. IF ENTERED FROM SYSTEM, GO TO STEP 11. 00156000
- * OTHERWISE SET NETWORK CALL FLAG AND CONTINUE. 00157000
- * 2. CALL DMKSCNFD TO GET 'RADDR' OPERAND FROM COMMAND LINE. 00159000
- * IF NO OPERAND, CALL DMKERMSG TO SEND MESSAGE DMKNLE021E. 00160000
- * 3. CALL DMKCVTHB TO CONVERT 'RADDR' TO BINARY. IF ERROR ON 00161000
- * CONVERSION, CALL DMKERMSG TO SEND MESSAGE DMKNLE021E. 00162000
- * 4. CALL DMKSCNRU TO GET REAL DEVICE (RDEVBLOK) FOR 'RADDR' 00163000
- * DEVICE. IF DEVICE DOES NOT EXIST, CALL DMKERMSG TO SEND 00164000
- * MESSAGE DMKNLE040E. 00165000
- * 5. DETERMINE WHETHER 'RADDR' DEVICE IS A 370X. IF NOT, CALL 00166000
- * DMKERMSG TO SEND DMKNLE006E MESSAGE. 00167000
- * 6. CHECK IF 370X IS CURRENTLY OFFLINE. IF SO, CALL DMKERMSG 00168000
- * TO SEND MESSAGE DMKNLE046E. 00169000
- * 7. DETERMINE IF 370X IS DEDICATED TO A USER. IF YES, CALL 00170000
- * DMKERMSG TO SEND MESSAGE DMKNLE140. 00171000
- * 8. CALL DMKSCNFD TO GET DUMP OPTIONS (IF ANY). 00229000
- * 9. IF NO OPTIONS, DEFAULT TO 'IMMED' AND GO TO STEP 11. 00230000
- * 10. IF OPTION IS 'OFF' OR 'AUTO' , REFLECT STATUS IN 00231000
- * APPROPRIATE BIT (RDEVAUTO) OF RDEVBLOK OF 370X AND EXIT. 00232000
- * IF OPTION IS 'IMMED' GO TO STEP 28. IF ANY OTHER OPTION 00233000
- * SPECIFIED, CALL DMKERMSG TO SEND MESSAGE DMKNLE003E. 00234000
- * 11. CALCULATE THE NUMBER OF SPOOL RECORDS ( IE. 1 RECORD 00235000
- * PER 4K OF 370X STORAGE + 1) NEEDED FOR DUMP. 00236000
- * 12. CALL DMKPGTCG TO GET NECESSARY SPOOL SPACE. IF SPACE 00237000
- * UNAVAILABLE, SEND MESSAGE; 00238000
- * 00239000
- * DMKNLE460E CTLR 'RADDR' DUMP FAILED: TEMP SPACE UNAVAILABLE 00240000
- * 00241000
- * AND EXIT TO CALLER. 00242000
- * 13. CALCULATE MAXIMUM NUMBER OF PAGES / CYL FOR THE 00243000
- * ALLOCATED SPOOL DEVICE. 00244000
- * 14. GO TO IOBINIT SUBROUTINE TO GET AND INITIALIZE AN 00245000
- * IOBLOK AND ADDITIONAL SAVE AREA FOR USE BY THE 370X 00246000
- * I/O ROUTINE. 00247000
- * 15. IF DUMP FUNCTION WAS REQUESTED VIA CONSOLE COMMAND, 00248000
- * ISSUE A TIO TO THE 370X TO DETERMINE ITS STATUS (THIS 00249000
- * IS UN-NECESSARY IF THE CALLER WAS A SYSTEM ROUTINE). 00250000
- * 16. GO TO SNDBOOTS SUB-ROUTINE TO TRANSMIT THE OS/360 DUMP 00251000
- * BOOTSTRAP PROGRAM TO THE 370X. ANY ERRORS THAT OCCUR 00252000
- * DURING THE BOOTSTRAP ROUTINE WILL RESULT IN MESSAGE: 00253000
- * 00254000
- * DMKNLE460E CTLR 'RADDR' DUMP FAILED; PROGRAM CHECK 00255000
- * 00256000
- * 17. CALL DMKPGTVG TO GET A PAGE OF CP PAGEABLE CORE FOR USE 00257000
- * AS A BUFFER. 00258000
- * 18. TRANS IN BUFFER PAGE TO GET REAL ADDRESS. 00259000
- * 19. BUILD CCWS TO READ IN RECORD CONTAING 370X LOCAL 00260000
- * STORE CONTENTS AND END OF CORE ADDRESS AND GO TO 370X 00261000
- * I/O ROUTINE. 00262000
- * 20. INSURE VALIDITY OF 370X END OF CORE ADDRESS AND CORRECT 00263000
- * DATA IN GROUP 0 REGISTERS IF 370X IS 48K OR LESS. 00264000
- * ( THIS CODE IS EXTRACTED FROM THE OS/360 NCP DUMP UTILITY) 00265000
- * 21. WRITE 370X REGISTER DATA AND END OF CORE ADDRESS TO SPOOL 00266000
- * FILE. 00267000
- * 22. READ SUCCESSIVE 512 BYTE RECORDS FROM 370X, BLOCK INTO 00268000
- * PAGE SIZE (4K) SPOOL RECORDS AND WRITE TO SPOOL FILE. 00269000
- * 23. WHEN END OF 370X CORE ADDRESS IS REACHED, CALL DMKFREE TO 00270000
- * GET CORE FOR A SPOOL FILE CONTROL BLOCK. 00271000
- * 24. FILL IN SFBLOK, AND QUEUE ON RDR SPOOL CHAIN FOR SYSTEM 00272000
- * DUMP ID. 00273000
- * 25. IF ANY SPOOL RECORDS REMAIN, CALL DMKPGTCR TO RELEASE THEM 00274000
- * 26. UNLOCK AND RELEASE BUFFER, FREE IOBLOK AND SAVE AREA, 00275000
- * AND EXIT TO CALLER. 00276000
- * 00277000
- * RESPONSES - 00278000
- * CTLR (RADDR) DUMP COMPLETE 00280000
- * 00281000
- * ERROR MESSAGES - 00282000
- * DMKNLE003E INVALID OPTION - (OPTION) 00284000
- * DMKNLE006E INVALID DEVICE TYPE (ADDR) 00285000
- * DMKNLE021E RADDR MISSING OR INVALID 00286000
- * DMKNLE040E DEV (ADDR) DOES NOT EXIST 00288000
- * DMKNLE046E CTLR 'RADDR' OFFLINE 00293000
- * DMKNLE140E CTLR 'RADDR' ATTACHED TO 'USERID' 00294000
- * DMKNLE143E CTLR 'RADDR' IN USE BY SYSTEM 00295000
- * DMKNLE460E CTRL 'RADDR' DUMP FAILED; PROGRAM CHECK 00296000
- * DMKNLE469E CTLR 'RADDR' DUMP FAILED; TEMP SPACE NOT AVAILABLE 00297000
- * DMKNLE470E CTRL 'RADDR' DUMP FAILED; PAGING I/O ERROR 00298000
- * DMKNLE471E CTRL 'RADDR' DUMP FAILED; UNRECOVERABLE I/O 00299000
- * ERROR 00300000
- * DMKNLE464E CTLR 'RADDR' CC = 3; DEPRESS 370X "LOAD" BUTTON 00301000
- * DMKNLE461R CTLR 'RADDR' IPL NOT REQUIRED; ENTER "YES" TO CONTINUE 00302000
- *. 00303000
- SPACE 2 00304000
- *--------------------------------------------------------------------* 00305000
- * EQUATES USED IN FLAG BYTE IN SAVEWRK1 * 00306000
- *--------------------------------------------------------------------* 00307000
- SPACE 00308000
- FROMNET EQU X'80' CALL WAS FROM NETWK CMD (DMKNET) @V200899 00309000
- BOOTSFLG EQU X'10' BOOTSTRAP REC PROC'NG INDICATOR @V200899 00312000
- UNLKBUF EQU X'08' UNLOCK REQUIRED FOR PAGE BUFFER @V200899 00313000
- PGTVREL EQU X'04' RELEASE REQD FOR VIRT BUFF ADDR @V200899 00314000
- QSPFLAG EQU X'02' QUEUE OF SFBLOK & REL OF REMAINS @V200899 00315000
- * SPOOL PAGES REQUIRED 00316000
- RNSAVREL EQU X'01' IOBLOK & RNIOSAV AREAS MUSTBE FREED@V200899 00317000
- SPACE 2 00318000
- DMKNLEMP RELOC ENTRY POINT FOR 370X DUMP PROCESS@V200899 00325000
- SWITCH CONTINUE ON THE I/O PROCESSOR @V407508 00325100
- MVI SAVEWRK1,NONE INITIALIZE FLAG BYTE @V407508 00326000
- BAL R10,CHKENTY CHECK ENTRY CONDITIONS @VM08949 00327000
- B DMPIMMED PROCESS SYSTEM DUMP REQUEST @VM08949 00328000
- SPACE 2 00329000
- CHKENTY EQU * CHECK FOR SYSTEM OR C.F. ENTRY @VM08949 00330000
- TM SAVER2+3,SYSTEM ENTRY VIA CONSOLE FUNCTION ?@V200899 00331000
- BZ NETCALL YES - SETUP FOR PARM SCAN @V200899 00332000
- ST R8,SAVEWRK9 SAVE RDEVBLOK POINTER @V200899 00333000
- CALL DMKSCNRD GET 'CCU' ADDRESS IN GR1 @V200899 00334000
- STH R1,SAVEWRK1+2 SAVE IT FOR LATER MESSAGES @V200899 00335000
- BR R10 RETURN FOR IMMEDIATE COMMAND @VM08949 00336000
- EJECT 00337000
- NETCALL EQU * CONSOLE FUNCTION 'NETWORK DUMP' @V200899 00338000
- IC R2,SAVEWRK1 PICK UP FLAG BYTE @V200899 00339000
- SVC 16 RETURN DIRECTLY TO DMKCFM ON EXIT@V200899 00340000
- STC R2,SAVEWRK1 RESET LOAD/DUMP FLAG BIT @V200899 00341000
- OI SAVEWRK1,FROMNET ENTERED FROM DMKNETWK @V200899 00342000
- CALL DMKSCNFD LOCATE REAL DEVICE ADDRESS @V200899 00343000
- BNZ NLE021 BRANCH IF NOTHING FOUND @V200899 00344000
- CALL DMKCVTHB TRY TO CONVERT TO BINARY @V200899 00345000
- BNZ NLE021 BRANCH IF CONVERT FAILED @V200899 00346000
- STH R1,SAVEWRK1+2 SAVE REAL ADDRESS @V200899 00347000
- CALL DMKSCNRU GET REAL DEVICE BLOKS @V200899 00348000
- BNZ NLE040 RADDR DOES NOT EXIST @V200899 00349000
- ST R8,SAVEWRK9 SAVE RDEVBLOK ADDRESS @V200899 00350000
- USING RDEVBLOK,R8 @V200899 00351000
- LA R0,CLASSPEC*256+TYP3705 DEVICE CLASS, TYPE @V200899 00352000
- CH R0,RDEVTYPC IS THIS DEVICE REALLY A 370X ? @V200899 00353000
- BNE NLE006 NO -- INVALID DEVICE TYPE @V200899 00354000
- TM RDEVSTAT,RDEVDISA IS DEVICE CURRENTLY OFFLINE @V200899 00355000
- BNZ NLE046 YEP, GIVE THE MSG AND QUIT @V200899 00356000
- TM RDEVSTAT,RDEVDED 3705 ATTACHED TO A USER NOW @V200899 00357000
- BNZ NLE140 YES, TELL CALLER AND QUIT @V200899 00358000
- B DMPOPTS ELSE SCAN FOR DUMP OPTIONS @V407508 00360000
- USING RNIOSAV,R4 GENERAL ADDRESSABILITY @V200899 00459000
- SPACE 00799000
- CMDCOMP EQU * SEND COMPLETE MESSAGE TO USER @V200820 00800000
- LH R1,SAVEWRK1+2 GET RADDR OF 370X FOR MESSAGE@V200820 00801000
- CALL DMKCVTBH GO CONVERT TO HEX @V200820 00802000
- STCM R1,B'0111',RNIOSAV+COMPRADD PUT RADDR IN MSG @V200820 00803000
- SLR R2,R2 PARMS BASE FOR DMKQCNWT @V200820 00804000
- TM SAVEWRK1,FROMNET CALL VIA CONSOLE FUNCTION ? @V200820 00805000
- BO *+8 YES - RESPONSE TO CALLER @V200820 00806000
- LA R2,OPERATOR SEND MESSAGE TO SYSTEM OPERATOR @V200820 00807000
- LA R1,RNIOSAV START OF MESSAGE DATA @V200820 00808000
- LA R0,DMPMSGLN LENGTH OF MSG TO R0 @V407508 00809000
- CALL DMKQCNWT,PARM=NORET(,R2),AFFINITY @V407508 00810100
- B NLEEXIT @V200820 00811000
- EJECT 00812000
- *--------------------------------------------------------------------* 00813000
- * CHECK FOR AUTO,OFF, OR IMMED OPERANDS OF DUMP COMMAND - ELSE ERROR * 00814000
- *--------------------------------------------------------------------* 00815000
- DMPOPTS EQU * @V200899 00816000
- CALL DMKSCNFD GET OPTION OPERAND @V200899 00817000
- BNZ DMPIMMED NO OPERAND - IMMED ASSUMED @V200899 00818000
- CL R0,F3 CORRECT LENGTH FOR 'OFF' ? @V200899 00819000
- BNE CHKAUTO NO -- CHECK FOR AUTOMATIC @V200899 00820000
- CLC 0(3,R1),=C'OFF' IS DUMP OPTION= 'OFF' ? @V200899 00821000
- BNE NLE003 NOPE - INVALID OPERAND @VM08570 00822000
- NI RDEVFLAG,X'FF'-RDEVAUTO TURN OFF AUTODUMP FL@V200899 00823000
- B NLEEXIT AND EXIT @V200899 00824000
- CHKAUTO EQU * @V200899 00825000
- CL R0,F4 CORRECT LENGTH FOR 'AUTO' ? @V200899 00826000
- BNE CHKIMM NO -- CHECK FOR IMMEDIATE @V200899 00827000
- CLC 0(4,R1),=C'AUTO' IS OPTION = AUTO @V200899 00828000
- BNE NLE003 NOPE - INVALID OPERAND @VM08570 00829000
- OI RDEVFLAG,RDEVAUTO TURN ON AUTODUMP FLAG @V200899 00830000
- B NLEEXIT AND EXIT @V200899 00831000
- CHKIMM EQU * @V200899 00832000
- CL R0,F5 CORRECT LENGTH @V200899 00833000
- BNE NLE003 NO -- ERROR @V200899 00834000
- CLC 0(5,R1),=C'IMMED' DID USER SAY IMMED ? @V200899 00835000
- BNE NLE003 UNRECOGNIZABLE OPTION @VM08570 00836000
- DMPIMMED EQU * @V200899 00837000
- TM RDEVFLAG,RDEVRCVY LOAD OR DUMP ACTIVE ? @V200820 00838000
- BO NLEEXIT YES - GET OUT OF HERE @V200820 00839000
- TM RDEVSTAT,RDEVRSVD IN USE BY THE SYSTEM ? @VM08809 00840000
- BO NLE143 YES - CAN'T DUMP ON THE FLY @VM08809 00841000
- SR R1,R1 CLEAR WORK REG. @V200820 00842000
- IC R1,RDEVMDL GET 370X MODEL NUMBER @V200899 00843000
- SLL R1,2(0) (MDL*16K)/4K = NUMBER OF PAGES @VM08625 00844000
- STC R1,SAVEWRK1+1 SAVE NUMBER OF SPOOL RECS REQUEST@V200899 00845000
- LR R0,R1 NUMBER INTO GR0 FOR DMKPGT @V200899 00846000
- CALL DMKPGTCG GO GET SPOOL SPACE @V200899 00847000
- LTR R1,R1 SEE IF WE FOUND THE SPACE NEEDED @V200899 00848000
- BZ NLE469 SPOOL SPACE UNAVAILABLE @V305435 00849000
- OI SAVEWRK1,QSPFLAG SET QUEUE SFBLOK FLAG @V200899 00850000
- ST R1,SAVEWRK8 SAVE STARTING CCPD @V200899 00851000
- ST R8,SAVEWRK2 SAVE RDEVBLOK OF SPOOL DEVICE @V200899 00852000
- SR R1,R1 ZERO FIELD FOR USE AS @V200899 00853000
- ST R1,SAVEWRK5 SPOOL FILE RECORD COUNTER @V200899 00854000
- EJECT 00855000
- *--------------------------------------------------------------------* 00856000
- * NOTE: R8 NOW CONTAINS RDEVBLOK ADDRESS OF SPOOL DISK ALLOCATED * 00857000
- * SO MAX PAGES / CYL FOR THIS DEVICE CAN NOW BE CALCULATED * 00858000
- *--------------------------------------------------------------------* 00859000
- SPACE 00860000
- LA R0,32 PGS/CYL FOR 2314 @V200899 00861000
- CLI RDEVTYPE,TYP2314 IS THIS DEVICE A 2314 ? @V200899 00862000
- BE GOTMAXPG YES . . . @V200899 00863000
- LA R0,57 PGS/CYL FOR 3330 @V200899 00864000
- CLI RDEVTYPE,TYP3330 IS IT A 3330 ? @V200899 00865000
- BE GOTMAXPG YEP . . . @V200899 00866000
- LA R0,120 PGS/CYL FOR 3350 @V304498 00867000
- CLI RDEVTYPE,TYP3350 IS IT A 3350 @V304498 00868000
- BE GOTMAXPG YES . . . @V304498 00869000
- LA R0,96 Pgs/Cyl for 3375 HRC106DK 00869100
- CLI RDEVTYPE,TYP3375 Is it a 3375 HRC106DK 00869200
- BE GOTMAXPG Yes . . . HRC106DK 00869300
- LA R0,150 Pgs/Cyl for 3380 HRC106DK 00869400
- CLI RDEVTYPE,TYP3380 Is it a 3380 HRC106DK 00869500
- BE GOTMAXPG Yes . . . HRC106DK 00869600
- LA R0,24 MUST BE 2305 OR 3340 @V2A2029 00870000
- GOTMAXPG EQU * @V200899 00871000
- L R8,SAVEWRK9 370X RDEVBLOK TO GR8 @VM08570 00872000
- STC R0,SAVEWRK9 AND PUT IT AWAY @V200899 00873000
- BAL R7,IOBINIT ALLOCATE AND SETUP WORK AREAS @V200899 00874000
- DMPTIO EQU * @V200899 00875000
- TM SAVEWRK1,FROMNET DID CONSOLE COMMAND CALL ME @V200899 00876000
- BZ NODMPTIO NO - TEST I/O NOT REQUIRED @V200899 00877000
- TM RDEVSTAT,RDEVNRDY IS THE 370X READY ? @V200899 00878000
- BO NODMPTIO NO -- SKIP THE TEST I/O @V200899 00879000
- OI IOBSPEC,IOBTIO SCHEDULE TIO @V200899 00880000
- BAL R9,DORNIO AND GO TO 370X I/O ROUTINE @V200899 00881000
- NI IOBSPEC,255-IOBTIO RESET TIO FLAG IN IOBLOK @V200899 00882000
- NODMPTIO EQU * SEND BOOTSTRAPS TO THE 370X @V200899 00883000
- OI RDEVFLAG,RDEVRCVY RECOVERY PROCESS INITIATED @V200899 00884000
- OI RDEVSTAT,RDEVNRDY NOT READY UNTIL LOADED @V200820 00885000
- L R1,=A(CXZNPH1) ENTRY OF CA1 PHASE1 @V200899 00886000
- L R3,=A(CXZNPH2) ENTRY OF CA1 PHASE2 @V200899 00887000
- TM RDEVFTR,FTRTYP1 DOES 370X HAVE A TYPE 1 CA ? @V200899 00888000
- BO XMITDMP YES, GO TO BOOTSTRAP SUBROUTINE @V200899 00889000
- L R1,=A(CXZXPH1) ENTRY OF CA2 PHASE1 @V200899 00890000
- L R3,=A(CXZXPH2) ENTRY OF CA2 PHASE2 @V200899 00891000
- XMITDMP EQU * @V200899 00892000
- BAL R7,SNDBOOTS GO TO BOOTSTRAP SUBROUTINE @V200899 00893000
- CALL DMKPGTVG GO GET PAGE BUFFER @V200899 00894000
- ST R1,SAVEWRK7 SAVE VADDR OF BUFFER FOR LATER @V200899 00895000
- OI SAVEWRK1,PGTVREL REMEMBER TO RELEASE BUFFER @V200899 00896000
- BAL R9,TRNLOCK BRING AND LOCK BUFFER PAGE @VM08692 00897000
- ST R2,SAVEWRK6 SAVE RADDR OF BUFFER @V200899 00898000
- OI SAVEWRK1,UNLKBUF WE HAVE TO UNLOCK BUFF @V200899 00899000
- EJECT 00900000
- *--------------------------------------------------------------------* 00901000
- * SET UP TO READ 370X LOCAL STORE CONTENTS AND END OF CORE ADDRESS * 00902000
- * INTO BUFFER AND WRITE TO SPOOL FILE RECORD 1 * 00903000
- *--------------------------------------------------------------------* 00904000
- SPACE 00905000
- READREG EQU * @V200899 00906000
- LA R1,RNCCWS POINT TO FIRST CCW SLOT @V200899 00907000
- ST R2,0(0,R1) RADDR OF BUFFER TO CCW @V200899 00908000
- MVI 0(R1),READOP SET CCW OP CODE TO READ @V200899 00909000
- REGDATCT EQU X'10C' @V200899 00910000
- LA R3,REGDATCT REGISTER DATA COUNT TO R3 @V200899 00911000
- ST R3,4(0,R1) AND PUT INTO CCW @V200899 00912000
- MVI 4(R1),CC+SILI SET COMM CHAIN AND SILI FLAGS @V200899 00913000
- MVC 8(8,R1),NOPCCW MOVE IN A NO-OP @V200899 00914000
- BAL R9,DORNIO GO READ RECORD @V200899 00915000
- SPACE 00916000
- *--------------------------------------------------------------------* 00917000
- * THE FOLLOWING CODE IS EXTRACTED FROM THE OS 370X DUMP PROGRAM - * 00918000
- * (IFLD1RRN) . ITS PURPOSE IS TO INSURE THE VALIDITY OF THE 370X * 00919000
- * END OF CORE ADDRESS AND TO CORRECTLY REFLECT THE CONTENTS OF * 00920000
- * THE GROUP 0 REGISTERS IN THE DUMP IF THE 370X IS 48K OR LESS. * 00921000
- *--------------------------------------------------------------------* 00922000
- SPACE 00923000
- SR R1,R1 CLEAR WORK REG @VA10383 00924200
- IC R1,RDEVMDL GET 370X MODEL NUMBER @VA10383 00924300
- SLL R1,14 MODEL # TIMES 16K = STORAGE @VA10383 00924400
- ST R1,0(,R2) STORE SIZE INTO BUFFER @VA11559 00924510
- ST R1,SAVEWRK3 SAVE ADDR FOR LOOP CTL @V200899 00926000
- C R1,=F'49152' IS 370X GREATER THAN 48K ? @V200899 00927000
- BH RNGT48K YES, NO PROBLEM @V200899 00928000
- LA R1,5(0,R2) IF 370X IS LESS THAN 48K THERE MAY @V200899 00929000
- LA R3,8 SOME BITS ON IN GROUP 0 REGS THAT @V200899 00930000
- FIXGR0LP EQU * @V200899 00931000
- MVI 0(R1),X'00' HAVE TO BE ZEROED OUT @V200899 00932000
- LA R1,4(0,R1) BUMP TO NEXT REG LOCATION @V200899 00933000
- BCT R3,FIXGR0LP AND LOOP TILL ALL ARE FIXED @V200899 00934000
- RNGT48K EQU * @V200899 00935000
- L R5,SAVEWRK8 STARTING CCPD TO R5 @V200899 00936000
- LA R1,512(0) LENGTH FOR READ FROM 370X @VM08584 00937000
- STH R1,NEXTLNTH . . .SET FOR CCW CONSTRUCTION @VM08584 00938000
- ST R1,NEXTADDR . . .AND FOR FIRST DATA ADDRESS @VM08584 00939000
- ALR R2,R1 START FOR FIRST DATA RECORD @VM08584 00940000
- LA R3,7 LOOP CONTROL, FIRST PAGE ONLY @VM08584 00941000
- B DMPRECNT GO FILL IN THE FIRST PAGE @V240820 00942000
- EJECT 00943000
- *--------------------------------------------------------------------* 00944000
- * THIS ROUTINE READS SUCCESSIVE 512 BYTE RECORDS FROM THE 370X, * 00945000
- * BLOCKS THEM INTO 4096-BYTE RECORDS, AND WRITES THE RECORDS * 00946000
- * TO THE SPOOL FILE. THIS SEQUENCE IS REPEATED UNTIL ALL DATA IS * 00947000
- * RETRIEVED FROM THE 370X (I.E. END OF CORE ADDRESS IS REACHED). * 00948000
- *--------------------------------------------------------------------* 00949000
- SPACE 00950000
- DMPWRTLP EQU * @V200899 00951000
- L R2,SAVEWRK6 RADDR OF BUFFER TO R2 @V200899 00952000
- LA R3,8 SET UP LOOP CONTROL @V200899 00953000
- DMPRECNT EQU * @V240820 00954000
- L R1,SAVEWRK5 COUNT OF SPOOL RECORDS @V240820 00955000
- LA R1,1(0,R1) WE'RE STARTING TO USE ONE NOW @V240820 00956000
- ST R1,SAVEWRK5 . . . @V240820 00957000
- DMPCCWLP EQU * @V200899 00958000
- LA R1,RNCCWS FIRST CCW SLOT TO GR1 @V200899 00959000
- LA R6,NEXTADDR 370X READ START ADDR TO R6 @V200899 00960000
- ST R6,0(0,R1) AND PUT IN WRITE CCW @V200899 00961000
- MVI 0(R1),WRITEOP SET WRITE OP CODE IN CCW @V200899 00962000
- MVC 4(4,R1),F8 SET COUNT FOR WRITE CCW @V200899 00963000
- MVI 4(R1),CC+SILI SET UP CHAINING @V200899 00964000
- ST R2,8(0,R1) STORE RECORD ADDRESS IN CCW@V200899 00965000
- MVI 8(R1),READOP SET UP READ IN CCW @V200899 00966000
- MVC 14(2,R1),NEXTLNTH SET UP CCW COUNT @V200899 00967000
- MVI 12(R1),CC+SILI SET UP CHAINING FLAGS @V200899 00968000
- MVC 16(8,R1),NOPCCW MOVE IN A NO-OP @V200899 00969000
- BAL R9,DORNIO @V200899 00970000
- L R6,NEXTADDR GET 370X READ START ADDR @V200899 00971000
- AH R6,NEXTLNTH BUMP BY READ DATA LENGTH @V200899 00972000
- ST R6,NEXTADDR AND PUT BACK @V200899 00973000
- LA R2,512(0,R2) POINT TO NEXT BUFFER SLOT @V200899 00974000
- BCT R3,DMPCCWLP LOOP TIL ALL REC SLOTS ARE FULL @V200899 00975000
- SPACE 00976000
- LR R0,R5 CCPD TO R0 FOR RPAPT @V200899 00977000
- L R1,SAVEWRK7 VADDR TO R1 FOR RPAPT @V200899 00978000
- CALL DMKRPAPT,PARM=SYSTEM+IOERETN,AFFINITY PUT PAGE @V407508 00979100
- BNZ NLE470 PAGING ERROR @V305435 00980000
- CLC NEXTADDR(4),SAVEWRK3 REACHED END OF CORE ? @VM08738 00981000
- BNL DMPCOMP YES - DUMP COMPLETE @VM08738 00982000
- L R1,SAVEWRK5 NO. OF SPOOL RECORDS WRITTEN @VA02292 00983000
- CLM R1,1,SAVEWRK1+1 HAVE WE RUN OUT OF DASD PAGE@VM08949 00984000
- BNL NLE1 YES -- TAKE A NOSEDIVE @VM08949 00985000
- A R5,F256 BUMP PAGE NUMBER BY ONE @VM08584 00986000
- CLM R5,2,SAVEWRK9 SHOULD WE SWITCH CYLINDERS ? @VM08584 00987000
- BNH DMPWRTLP NO -- FILL IN THE NEXT PAGE @VM08738 00988000
- A R5,=X'00010000' ADD ONE TO CYLINDER NUMBER @VM08584 00989000
- ICM R5,2,F1+3 RESET PAGE NUMBER TO ONE @VM08584 00990000
- B DMPWRTLP GO FILL UP THIS PAGE WITH DATA @VM08738 00991000
- EJECT 00992000
- DMPCOMP EQU * NETWORK DUMP FUNCTION COMPLETE @VM08738 00993000
- BAL R9,QSPFILE CLOSE AND QUEUE DUMP SPOOL FILE @VM08671 00994000
- L R4,IOBMISC SETUP TO SEND COMPLETE MESSAGE @V200899 00995000
- MVC RNIOSAV(DMPMSGLN),DUMPMSG MSG SKELETON @V200899 00996000
- MVC RNIOSAV+DMPMSGLN(8),BLANKS CLEAR REST OF BUFF@V200899 00997000
- B CMDCOMP GO FILL IN CONTROLLER ADDRESS @V200899 00998000
- SPACE 00999000
- BUFUNLK EQU * UNLOCK THE REAL PAGE BUFFER @VM08949 01015000
- L R2,SAVEWRK6 REAL PAGE ADDRESS FROM LOCK @VM08949 01016000
- CALL DMKPTRUL UNLOCK THE REAL PAGE @VM08949 01017000
- NI SAVEWRK1,255-UNLKBUF ERASE CLEANUP FLAG @VM08949 01018000
- BR R9 @VM08949 01019000
- EJECT 01020000
- *--------------------------------------------------------------------* 01021000
- * SURROUTINE TO GET AND FILL A SFBLOK FOR 370X DUMP SPOOL FILE * 01022000
- * AND CHAIN THE SFBLOK INTO THE READER SPOOL FILE FOR CP DUMP. * 01023000
- *--------------------------------------------------------------------* 01024000
- QSPFILE EQU * @V200899 01025000
- CLC SAVEWRK5(4),F0 HAVE ANY RECORDS BEEN WRITTEN TO @V200899 01026000
- * SPOOL FILE 01027000
- BE QSPFREL NO, FORGET ABOUT QUEUEING SPFBLOK@V200899 01028000
- LA R0,SFBSIZE SIZE OF SFBLOK TO R0 @V200899 01029000
- CALL DMKFREE GET CORE FOR SFBLOK @V200899 01030000
- XC 0((SFBSIZE*8),R1),0(R1) CLEAR SFBLOK @V200899 01031000
- LR R6,R1 ADDRESS OF SFBLOK TO R6 @V200899 01032000
- USING SFBLOK,R6 @V200899 01033000
- ST R5,SFBLAST STORE CCPD OF LAST SPOOL RECO@V200899 01034000
- MVC SFBRECSZ(2),F4096+2 LRECL = 4096 BYTES @VM08775 01035000
- MVI SFBFLAG,SFBDUMP INDICATE THAT FILE IS A DUMP @V200899 01036000
- MVI SFBCLAS,C'E' SET SPOOL CLASS TO 'E' @V200899 01037000
- MVC SFBRECNO(4),SAVEWRK5 MOVE NUMBER OF RECORDS @V200899 01038000
- MVC SFBFNAME(12),=CL12'NCPDUMP' FILENAME @V200820 01039000
- MVC SFBFTYPE(12),=CL12'FILE' FILETYPE @V200820 01040000
- MVC SFBORIG(8),=C'SYSTEM ' BUILT BY THE SYSTEM @V200820 01041000
- MVC SFBDIST(8),=C'SYSTEM ' ...FOR THE SYSTEM @VM08570 01042000
- L R1,=A(DMKSYSDU) USER RECEIVING DUMPS @V200820 01043000
- MVC SFBUSER(8),0(R1) . . .SO BE IT @V200820 01044000
- MVI SFBTYPE,TYPPRT CALL IT PRINT (WHY NOT ?) @V200820 01045000
- MVI SFBCOPY+1,1 ONLY ONE COPY @V200820 01046000
- LA R1,SFBDATE ADDRESS OF SFBDATE FIELD TO R1 @V200899 01047000
- LA R2,SFBTIME ADDRESS OF SFBTIME FIELD TO R2 @V200899 01048000
- CALL DMKCVTDT GO GET CURRENT DATE AND TIME @V200899 01049000
- MVC SFBSTART(4),SAVEWRK8 STARTING CCPD TO SFBLOK @V200899 01050000
- L R3,=A(DMKRSPID) POINT TO SPOOL FILE ID @V200899 01051000
- LH R1,0(0,R3) SPOOL FILE ID TO R1 @V200899 01052000
- STH R1,SFBFILID AND INTO SFBLOK @V200899 01053000
- LA R1,1(0,R1) INCREMENT FOR NEXT SPOOL FILE... @V200899 01054000
- CH R1,=H'9900' MAX SPOOL ID ? @VA07575 01054100
- BNH *+8 NO - OK @VA07575 01054200
- LA R1,1 RESET TO ONE @VA07575 01054300
- STH R1,0(0,R3) RESET... @V200899 01055000
- L R1,ARSPRD GET RDR SFBLOK CHAIN PTR @V200899 01056000
- L R3,0(0,R1) RDR SFBLOK CHAIN TO R3 @V200899 01057000
- ST R6,0(0,R1) INSERT DUMP FILE SFBLOK @V200899 01058000
- ST R3,SFBPNT IN RDR SFBLOK CHAIN @V200899 01059000
- LR R3,R7 SAVE R7 VALUE @V304298 01060000
- LR R7,R6 SFBLOK IN REG 7 @V304298 01061000
- CALL DMKCKSPL,PARM=ADDSFB+RDRCHN,AFFINITY @V407508 01062100
- LR R7,R3 RESTORE REG 7 @V304298 01063000
- DROP R6 @V200899 01064000
- EJECT 01065000
- QSPFREL EQU * @V200899 01066000
- SR R6,R6 CLEAR WORK REG @V200820 01067000
- IC R6,SAVEWRK1+1 GET NUMBER OF SPOOL RECS REQUESTD@V200820 01068000
- L R3,SAVEWRK5 GET NUMBER OF SPOOL RECS WRITTEN @V200820 01069000
- CR R3,R6 WERE ALL SPOOL RECORDS USED ? @V200820 01070000
- BNL QSPFXIT YES, NO NEED TO RELEASE ANY @V200820 01071000
- SR R6,R3 SUBTRACT NUMBER WRITTEN FROM TOTA@V200820 01072000
- LR R0,R5 GET 'CCPD' OF LAST SPOOL RECORD @V200820 01073000
- LTR R3,R3 HAVE WE WRITTEN ANY RECORDS ? @V200820 01074000
- BP QSPXREL YES - GR5 IS CORRECT @V200820 01075000
- L R0,SAVEWRK8 START WITH THE FIRST RECORD @V200820 01076000
- B QSPCCOK ...AND RELEASE IT FIRST @V200820 01077000
- SPACE 01078000
- QSPXREL EQU * RELEASE UNUSED SPOOL RECORDS @V200820 01079000
- A R0,F256 BUMP 'P' BY 1 @V200820 01080000
- CLM R0,2,SAVEWRK9 NEED TO BUMP 'CC' ? @V200820 01081000
- BNH QSPCCOK NO, . . . @V200820 01082000
- A R0,=X'00010000' BUMP 'CC' BY 1 @V200820 01083000
- ICM R0,2,F1+3 RESET 'P' TO 1 @V200820 01084000
- QSPCCOK EQU * RELEASE ONE RECORD @V200820 01085000
- ST R0,SAVEWRK5 PUT 'CCPD' INTO DUMMY SWAP-TABLE @V200820 01086000
- LA R5,SAVEWRK4 POINT TO START OF DUMMY SWPENT @V200820 01087000
- CALL DMKPGTSD RELEASE A SINGLE DASD SPOOL PAGE @V200820 01088000
- BCT R6,QSPXREL RELEASE ALL OF THEM @V200820 01089000
- QSPFXIT EQU * @V200820 01090000
- NI SAVEWRK1,X'FF'-QSPFLAG RESET SPOOL FILE QUEUE @V200820 01091000
- * RELEASE FLAG 01092000
- BR R9 RETURN @VM08671 01093000
- SPACE 3 01094000
- *>>>>>>>>> INSUFFICIENT SPOOL SPACE TO PERFORM 370X DUMP 01095000
- ABEND 1 I QUIT! -- SOMEONE LIED TO ME @VM08949 01096000
- *>>>>>>>>> 01097000
- EJECT 01098000
- *--------------------------------------------------------------------* 01099000
- * SUBROUTINE TO TRANSMIT 370X BOOTSTRAP RECORDS TO CCU * 01100000
- *--------------------------------------------------------------------* 01101000
- SNDBOOTS EQU * @V200899 01102000
- BAL R9,TRNLOCK BRING AND LOCK PHASE ONE @VM08692 01103000
- OI SAVEWRK1,BOOTSFLG REMEMBER TO UNLOCK IT @VM08692 01104000
- L R1,IOBMISC POINT R1 TO FIRST CCW SLOT @V200899 01105000
- ST R2,0(0,R1) PUT REAL ADDRESS IN WRITE IPL @V200899 01106000
- MVI 0(R1),WIPLOP SET WRITE IPL OP CODE @V200899 01107000
- MVI 4(R1),CC+SILI SET CMD CHAINING AND SILI ON @V200899 01108000
- MVC 6(2,R1),2(R2) MOVE LENGTH OF PHASE 1 TO CCW @V200899 01109000
- MVC 8(8,R1),NOPCCW MOVE IN A NO-OP @V200899 01110000
- BAL R9,DORNIO GO TO RN SIO ROUTINE @V200899 01111000
- CALL DMKPTRUL UNLOCK PHASE ONE PAGE (R2 OK) @VM08692 01112000
- NI SAVEWRK1,255-BOOTSFLG TURN OFF FLAG FOR NOW @VM08692 01113000
- SPACE 01114000
- LR R1,R3 GR1 = ADDRESS OF BOOTSTRAP TWO @VM08692 01115000
- BAL R9,TRNLOCK BRING AND LOCK PHASE TWO @VM08692 01116000
- OI SAVEWRK1,BOOTSFLG REMEMBER TO UNLOCK IT @VM08692 01117000
- L R1,IOBMISC POINT R1 TO FIRST CCW SLOT @V200899 01118000
- ST R2,0(0,R1) PUT REAL ADDRESS IN WRITE IPL @V200899 01119000
- MVI 0(R1),WRITEOP CHANGE CCW OP CODE TO WRITE @V200899 01123000
- CMDOK EQU * @V200899 01124000
- MVI 4(R1),CC+SILI SET CMD CHAINING AND SILI ON @V200899 01125000
- MVC 6(2,R1),2(R2) MOVE LENGTH OF PHASE 1 TO CCW C@V200899 01126000
- MVC 8(8,R1),NOPCCW MOVE IN A NO-OP @V200899 01127000
- BAL R9,DORNIO GO TO RN SIO ROUTINE @V200899 01128000
- CALL DMKPTRUL UNLOCK PHASE TWO PAGE (R2 OK) @VM08692 01129000
- NI SAVEWRK1,X'FF'-BOOTSFLG RESET BOOTSTRAP PROCESS @V200899 01130000
- BR R7 RETURN TO MAIN LINE CODE @V200899 01131000
- SPACE 01132000
- TRNLOCK EQU * BRING IN AND LOCK SYSTEM PAGE @VM08692 01133000
- * BRING IN AND LOCK SYSTEM PAGE @V407508 01134100
- TRANS 2,1,OPT=(BRING,DEFER,SYSTEM,LOCK),IOER=NLE470,AFFINITY 01134200
- BR R9 @VM08692 01135000
- EJECT 01136000
- *--------------------------------------------------------------------* 01137000
- * GET AND CLEAR STORAGE FOR USE AS AN IOBLOK * 01138000
- *--------------------------------------------------------------------* 01139000
- SPACE 01140000
- IOBLGET EQU * @V200820 01141000
- LA R0,IOBSIZE SIZE OF IOBLOK TO R0 @V200820 01142000
- CALL DMKFREE CALL DMKFREE TO GET STORAGE @V200820 01143000
- LR R10,R1 IOBLOK ADDRESS TO R10 @V200820 01144000
- XC IOBRADD(IOBSIZE*8),IOBRADD CLEAR IOBLOK @V200820 01145000
- ST R11,IOBUSER USER'S VMBLOK ADDRESS TO IOBLOK @V200820 01146000
- LA R1,RNIOINT PUT ADDRESS OF 3705 INT. HANDLER @V200820 01147000
- ST R1,IOBIRA INTO IOBLOK @V200820 01148000
- BR R9 RETURN @V200820 01149000
- SPACE 2 01150000
- *--------------------------------------------------------------------* 01151000
- * GET STORAGE FOR USE AS CCW AREA AND I/O REG SAVE AREA AND CLEAR IT * 01152000
- *--------------------------------------------------------------------* 01153000
- SPACE 01154000
- IOBINIT EQU * @V200820 01155000
- BAL R9,IOBLGET ALLOCATE AND INITIALIZE AN IOBLOK@V200820 01156000
- LA R0,RNWKSIZE SIZE OF AREA TO R0 @V200820 01157000
- CALL DMKFREE GO GET STORAGE @V200820 01158000
- LR R4,R1 ADDRESS OF RNIOSAV TO R4 @V200820 01159000
- ST R1,IOBMISC SAVE ADDRESS OF STORAGE IN IOBLOK @V200820 01160000
- XC 0(RNWKSIZE*8,R4),0(R4) CLEAR THE AREA @V200820 01161000
- OI SAVEWRK1,RNSAVREL RELEASE WORK AREAS @V200820 01162000
- BR R7 RETURN TO MAIN LINE CODE @V200820 01163000
- EJECT 01164000
- *--------------------------------------------------------------------* 01165000
- * THIS IS THE SIO INTERFACE CODE FOR 3705 I/O OF LOAD/DUMP PROGRAMS * 01166000
- *--------------------------------------------------------------------* 01167000
- SPACE 01168000
- DORNIO EQU * @V200820 01169000
- STM R0,R9,RNSVREGS SAVE CALLERS REGS @V200899 01170000
- LA R1,5(0,0) RETRY COUNT IN CASE OF ERROR @VM08672 01171000
- STH R1,IOBRCNT . . . @VM08672 01172000
- MVC IOBCAW(4),IOBMISC SAVE CCW BUFFER POINTER @V2D3931 01173000
- MVI IOBFLAG,IOBCP CP-GENERATED CHANNEL PROGRAM @VM08672 01174000
- RESTRNIO EQU * @V200899 01175000
- MVI IOBSTAT,X'00' CLEAR IOBLOK STATUS BYTE @VM08672 01176000
- NI IOBFLAG,IOBCP+IOBRSTRT LEAVE ONLY THESE FLAGS @VM08672 01177000
- ST R13,IOBMISC2 SAVE POINTER TO CALLERS SAVE AREA@V200899 01178000
- XC IOBCSW(8),IOBCSW CLEAR OUT THE CSW @VM08775 01179000
- CALL DMKIOSQR CALL IOS @V200899 01180000
- GOTO DMKDSPCH GO TO DISPACTH TO WAIT FOR I/O @V200899 01181000
- EJECT 01182000
- *--------------------------------------------------------------------* 01183000
- * THIS IS THE 3705 I/O INTERRUPT HANDLER FOR DMKNLE * 01184000
- *--------------------------------------------------------------------* 01185000
- SPACE 01186000
- RNIOINT EQU * @V200899 01187000
- USING *,R12 RE-ESTABLISH @V200899 01188000
- SL R12,=A(RNIOINT-DMKNLE) ADDRESSABILITY TO BASE @V200899 01189000
- USING DMKNLE,R12 @V200899 01190000
- L R13,IOBMISC2 RESTORE SAVEAREA POINTER @V200899 01191000
- L R4,IOBMISC RESTORE RNIOSAV POINTER @V200899 01192000
- L R8,SAVEWRK9 RESTORE RDEVBLOK @VA09160 01192500
- TM IOBSPEC,IOBTIO IS INTERRUPT FOR A TIO @V200899 01193000
- BO TIORETN YES,GO HANDLE SPECIAL @V200899 01194000
- TM IOBSTAT,IOBCC3 ANY CONDITION CODE FROM I/O @V200899 01195000
- BO VANISH CC=3 - SOMETHING IS VERY WRONG @VM08775 01196000
- BZ CHKSTAT CC=0 - EVERYTHING IS O.K. ---SO F@V200899 01197000
- * CC=1 OR 2 HAVE TO CHECK FURTHER 01198000
- TM IOBSTAT,IOBCC1 IS IT CC=1 ? @V200899 01199000
- BZ IORETRY NO, RETRY I/O @V200899 01200000
- CHKSTAT EQU * @V200899 01201000
- CLC IOBCSW+4(2),=X'0C00' IS STATUS NORMAL? (CE+DE)@V200899 01202000
- BE RNIOXIT YES, I/O WENT O.K. @V200899 01203000
- CLC IOBCSW+4(2),=AL1(ATTN+DE,0) ATTN + DEVICE END? @VM05005 01203080
- BNE RNIOERR NOPE, MUST BE SOMETING WRONG, BR.@VM05005 01203160
- LA R0,IOBSIZE USING NEW STUFF, GET AN IOB... @VM05005 01203240
- CALL DMKFREE ... AND DUMMY IT UP FOR DMKRNH...@VM05005 01203320
- ST R10,0(R1) (SWITCH IOBLOKS) @VM05005 01203400
- LR R10,R1 TO MAKE IT LOOK LIKE THE OLD @VM05005 01203480
- L R1,0(R1) SUPPORT WHERE ATTN CAME IN AFTER @VM05005 01203560
- XC IOBLOK(IOBSIZE*8),IOBLOK LOAD WAS COMPLETE @VM05005 01203640
- MVI IOBCSW+4,ATTN MAKE IT LOOK LIKE ATTN ALONE @VM05005 01203720
- OI IOBFLAG,IOBCP CP GENERATED @VM05005 01203800
- OI IOBSPEC,IOBUNSL UNSOLICITED I/O INT. @VM05005 01203880
- MVC IOBRADD(2),IOBRADD-IOBLOK(R1) SAME ADDRESS @VM05005 01203960
- ST R10,IOBLINK ENDING STATUS @VM05005 01204040
- L R0,ASYSVM SYSTEM OWNS THIS ONE @VM05005 01204120
- ST R0,IOBUSER ... @VM05005 01204200
- L R0,=A(DMKRNHIN) SEND THE INTERRUPT TO RNH @VM05005 01204280
- ST R0,IOBIRA ... @VM05005 01204360
- CALL DMKSTKIO SEND IT OFF... @VM05005 01204440
- LR R10,R1 AND RESTORE THE OLD IOB ADDR. @VM05005 01204520
- B RNIOXIT RETURN TO CALLER @VM05005 01204600
- SPACE 01204680
- RNIOERR TM IOBCSW+5,X'FF'-(CDC+IL) ANY HARD ERRORS? @VM05005 01204760
- BNZ RNIOER YES,DISASTER @V200899 01205000
- TM IOBCSW+4,CUE+SM HARD DEVICE ERRORS ? @V200899 01206000
- BNZ RNIOER YES, QUIT NOW @V200899 01207000
- TM IOBCSW+4,UC UNIT CHECK ??? @V200899 01208000
- BZ IORETRY NO, RETRY I/O @V200899 01209000
- L R1,IOBIOER GET ADDR OF IOERBLOK @V200899 01210000
- USING IOERBLOK,R1 @V200899 01211000
- TM IOERDATA,IPLREQ+INTREQ+ABORT RETRY O.K. ? @V200899 01212000
- DROP R1 @V200899 01213000
- BZ IORETRY YES -- JUST RETRY THE I/O @V200899 01214000
- BAL R7,FRERBLOK RELEASE THE IOERBLOK @VM08692 01215000
- LM R0,R9,RNSVREGS RESTORE REGISTERS @V200899 01216000
- B NLE460 PROGRAM CHECK IN BOOTSTRAP @V305435 01217000
- * ROUTINE 01218000
- SPACE 2 01219000
- VANISH EQU * CC = 3 DURING LOAD OR DUMP @VM08775 01220000
- BAL R7,FRERBLOK RELEASE IOERBLOK, IF ANY @VM08775 01221000
- LM R0,R9,RNSVREGS RESTORE REGISTERS @VM08775 01222000
- B NLE464E GIVE CC = 3 MESSAGE @VM08775 01223000
- EJECT 01224000
- TIORETN EQU * @V200899 01225000
- TM IOBSTAT,IOBCC3 CHECK CC FROM TIO @V200899 01226000
- BO NLE040 CC=3 DEVICE NOT THERE - ERROR@V200899 01227000
- BZ OPMSG IF CC=0 TREAT AS IF IPL REQ'D@V200899 01228000
- * WASN'T ON 01229000
- TM IOBSTAT,IOBCC1 IS IT CC=1 @V200899 01230000
- BZ IORETRY NO -- RETRY @V200899 01231000
- TM IOBCSW+4,UC WAS IT A UNIT CHECK ? @V200899 01232000
- BO CKTIOSNS YES - THAT'S WHAT WE EXPECT @V200899 01233000
- L R1,=A(DMKRNHIN) SET UP IOBIRA FOR DMKRNH @V200899 01234000
- ST R1,IOBIRA . . . @V200899 01235000
- MVC IOBUSER(4),ASYSVM SET UP SYSTEM VMBLOK POINTER @V2D3931 01236000
- CALL DMKSTKIO AND RESTACK I/O @V200899 01237000
- BAL R9,IOBLGET GET ANOTHER IOBLOK FOR US @V200899 01238000
- ST R13,IOBMISC2 RESET THESE VALUES ... @V200899 01239000
- ST R4,IOBMISC ... @V200899 01240000
- B OPMSG GO TALK TO THE OPERATOR @V200899 01241000
- SPACE 2 01242000
- CKTIOSNS EQU * TEST SENSE DATA RECEIVED @V200899 01243000
- L R1,IOBIOER GET ADDRESS OF IOERBLOK @V200899 01244000
- USING IOERBLOK,R1 @V200899 01245000
- TM IOERDATA,IPLREQ+INTREQ IS SENSE IPL REQUIRED OR@V200899 01246000
- * INTERVENTION REQUIRED ? 01247000
- BNZ RNIOXIT YES, NO NEED TO SEND MSG @V200899 01248000
- DROP R1 @V200899 01249000
- EJECT 01250000
- *---------------------------------------------------------------------* 01251000
- *HAVE TO SEND FOLLOWING MSG: * 01252000
- * * 01253000
- * DMKNLE461R CTLR (RADDR) IPL NOT REQUIRED; ENTER 'YES' TO CONTINUE: * 01254000
- * * 01255000
- *IN ORDER TO GET CONCURRENCE OF OPERATOR TO LOAD OR DUMP 370X * 01256000
- * THAT DOES NOT HAVE IPL REQUIRED BIT ON IN SENSE. * 01257000
- *---------------------------------------------------------------------* 01258000
- SPACE 01259000
- OPMSG EQU * @V200899 01260000
- MVC 0(M461RLN,R4),M461SKEL MOVE 461R SKELETON MSG @V200899 01261000
- LH R1,SAVEWRK1+2 PICK UP RADDR OF 370X @V200899 01262000
- CALL DMKCVTBH AND CONVERT TO HEX @V200899 01263000
- STCM R1,B'0111',M461RADD(R4) MOVE RADDR INTO MESSAGE@V200899 01264000
- LR R1,R4 ADDRESS OF MSG TO R1 @V200899 01265000
- LA R0,M461RLN MSG LENGHT TO R0 @V200899 01266000
- CALL DMKQCNWT,PARM=NORET+ERRMSG+NOAUTO GO SEND @V200899 01267000
- LA R0,16 LENGTH OF REPLY TO R0 @V200899 01268000
- LA R1,OPMREPLY REPLY BUFFER ADDRESS TO R1 @V200899 01269000
- CALL DMKQCNRD,PARM=UCASE+EDIT @V200899 01270000
- BNZ NOCHANG SOMETHING WENT WRONG DURING REPLY@V200899 01271000
- CL R0,F3 CORRECT REPLY LENGTH ? @VM08851 01272000
- BNE NOCHANG NO -- ABORT THE COMMAND @VM08851 01273000
- CLC OPMREPLY(3),=C'YES' IS REPLY 'YES' @V200899 01274000
- BE RNIOXIT UH HUH - GO DO THE FUNCTION @V200899 01275000
- NOCHANG EQU * @V200899 01276000
- LA R2,461 SET RETURN CODE FOR CALLER @V200899 01277000
- B NLEERXIT NO, EXIT WITHOUT DOING IT @V200899 01278000
- EJECT 01279000
- IORETRY EQU * @V200899 01280000
- BAL R7,FRERBLOK GO FREE IOERBLOK (IF ANY) @V200899 01281000
- MVI IOBFLAG,X'00' CLEAR IOBLOK FLAG BYTE @VM08672 01282000
- L R1,IOBCSW GET CSW FROM IOBLOK @V200899 01283000
- S R1,F8 BACK UP TO POINT AT CCW IN ERROR @V200899 01284000
- BNP IORSTRT RETRY FROM THE BEGINNING @VM08672 01285000
- ST R1,IOBRCAW RETRY FROM THE FAILING CCW @VM08672 01286000
- OI IOBFLAG,IOBRSTRT . . .VIA RESTART CAW @VM08672 01287000
- IORSTRT EQU * CHECK RETRY COUNT @VM08672 01288000
- LH R1,IOBRCNT GET RETRY COUNTER @V200899 01289000
- S R1,F1 SUBTRACT 1 @V200899 01290000
- STH R1,IOBRCNT AND PUT BACK @V200899 01291000
- BP RESTRNIO CONTINUE UNTIL COUNT IS ZERO @V200899 01292000
- TM IOBSPEC,IOBTIO WAS ERROR ON TIO ? @V200899 01293000
- BO NLE040 YES, TREAT AS IF DEVICE NON-EXIST@V200899 01294000
- RNIOER EQU * @V200899 01295000
- BAL R7,FRERBLOK GO FREE IOERBLOK (IF ANY) @V200899 01296000
- LM R0,R9,RNSVREGS RESTORE REGS AT TIME OF I/O CALL @V200899 01297000
- B NLE471 FATAL I/O ERROR @V305435 01298000
- RNIOXIT EQU * @V200899 01299000
- BAL R7,FRERBLOK GO FREE IOERBLOK (IF ANY) @V200899 01300000
- SWITCH CONTINUE ON THE I/O PROCESSOR @V407508 01300100
- LM R0,R9,RNSVREGS RESTORE REGS FOR CALLER @V200899 01301000
- BR R9 I/O WAS OK - RETURN TO CALLER @V200899 01302000
- SPACE 3 01303000
- *---------------------------------------------------------------------* 01304000
- * THIS SUBROUTINE WILL FREE THE IOERBLOK IF ANY EXISTS 01305000
- *---------------------------------------------------------------------* 01306000
- SPACE 01307000
- FRERBLOK EQU * @V200899 01308000
- L R1,IOBIOER GET IOERBLOK ADDR @V200899 01309000
- LTR R1,R1 DOES ONE EXIST @V200899 01310000
- BZ NOERBLOK NO, SKIP FREE CODE @V200899 01311000
- LA R0,IOERSIZE SIZE OF IOERBLOK TO R0 @V200899 01312000
- AH R0,IOEREXT-IOERBLOK(R1) ADD LENGTH OF EXT. @V200899 01313000
- CALL DMKFRET GO FREE IT @V200899 01314000
- XC IOBIOER(4),IOBIOER ZERO IOERBLOK PTR IN IOBLOK @V200899 01315000
- NOERBLOK EQU * @V200899 01316000
- BR R7 RETURN TO MAIN LINE CODE @V200899 01317000
- EJECT 01318000
- *---------------------------------------------------------------------* 01319000
- * THIS SUBROUTINE WILL DISPOSE OF ALL RESOURCES THAT STILL ARE HELD * 01320000
- * AT EXIT FROM DMKNLE. THIS IS TO AVOID THE POSSIBILITY OF * 01321000
- * ANYTHING REMAINING IN CORE OR IN A STATUS (IE. LOCKED) THAT DID * 01322000
- * NOT EXIST AT ENTRY TO DMKNLE. IT IS DRIVEN BY FLAG BITS SET IN * 01323000
- * THE HIGH ORDER BYTE OF SAVEWRK1 (SEE EQUATES AT START OF MODULE * 01324000
- * FOR APPROPRIATE MEANINGS OF BITS). * 01325000
- *---------------------------------------------------------------------* 01326000
- SPACE 01327000
- CLEANUP EQU * @V200899 01328000
- TM SAVEWRK1,BOOTSFLG NEED TO UNLOCK BOOTSTRAPS @VM08692 01329000
- BZ CHKRBUF NO -- SEE ABOUT PAGE BUFFER @VM08692 01330000
- CALL DMKPTRUL UNLOCK BOOTSTRAP (GR2 IS O.K.) @VM08692 01331000
- NI SAVEWRK1,255-BOOTSFLG TIDINESS PAYS OFF @VM08692 01332000
- CHKRBUF EQU * @VM08692 01333000
- TM SAVEWRK1,UNLKBUF BUFFER TO BE UNLOCKED ? @V200899 01334000
- BZ CHKRELSE NO, SEE IF BUFFER TO BE RELEASED @V200899 01335000
- BAL R9,BUFUNLK UNLOCK THE BUFFER PAGE @VM08949 01336000
- CHKRELSE EQU * @V200899 01337000
- TM SAVEWRK1,PGTVREL BUFFER TO BE RELEASED? @V200899 01338000
- BZ CHKQSPF NO, CHECK FOR SPOOL FILE QUEUE@V200899 01339000
- L R1,SAVEWRK7 GET VADDR OF BUFFER @V200899 01340000
- CALL DMKPGTVR GO RELEASE IT @V200899 01341000
- NI SAVEWRK1,255-PGTVREL ADDRESS RELEASED @VM08692 01342000
- CHKQSPF EQU * @V200899 01343000
- TM SAVEWRK1,QSPFLAG DO WE HAVE TO QUEUE SPOOL @V200899 01344000
- BZ CHKRNREL NO, CHECK FOR WORK AREAS @V200899 01345000
- BAL R9,QSPFILE CLOSE AND QUEUE DUMP SPOOL FILE @VM08671 01346000
- NI SAVEWRK1,255-QSPFLAG SFBLOK HAS BEEN QUEUED @VM08692 01347000
- CHKRNREL EQU * @V200899 01348000
- TM SAVEWRK1,RNSAVREL WORK AREAS TO BE FREED ? @VM08692 01349000
- BCR 8,R7 NO - ALL DONE @V200899 01350000
- L R1,IOBMISC GET ADDR OF RNIOSAV @V200899 01351000
- LA R0,RNWKSIZE LENGTH OF RNIOSAV TO R0 @V200899 01352000
- CALL DMKFRET GO FREE IT @V200899 01353000
- LR R1,R10 IOBLOK ADDR TO R1 @V200899 01354000
- LA R0,IOBSIZE SIZE OF IOBLOK FOR FREE @V200899 01355000
- CALL DMKFRET GO FREE IOBLOK @V200899 01356000
- L R8,SAVEWRK9 370X REAL DEVICE BLOCK @V200899 01357000
- NI RDEVFLAG,255-RDEVRCVY RECOVERY NOT ACTIVE @V200899 01358000
- NI SAVEWRK1,255-RNSAVREL ALL CLEANED UP @VM08692 01359000
- BR R7 RETURN TO MAIN LINE CODE @V200899 01360000
- EJECT 01361000
- NLE003 LA R2,3 LOAD ERROR CODE @V200899 01364000
- B CALLERM . . . @V200899 01365000
- NLE006 EQU * @V200899 01366000
- LA R2,6 SET ERROR CODE @V200899 01367000
- B NLERADD GO SETUP FOR DMKERMSG @V200899 01368000
- NLE021 EQU * @V200899 01369000
- LA R2,21 SET ERROR CODE @V200899 01370000
- B NOVAR @V200899 01371000
- NLE040 EQU * @V200899 01374000
- BAL R7,CLEANUP UNLOCK, FRET, ETC. @V200899 01375000
- LA R2,040(0) MSG= DMKNLE040E @V200899 01376000
- NLERADD EQU * SETUP RADDR PARM FOR DMKERMSG @V200899 01377000
- LH R1,SAVEWRK1+2 GET RADDR OF 370X @V200899 01378000
- CALL DMKCVTBH CONVERT TO PRINTABLE FORM @V200899 01379000
- N R1,X40FFS BLANK HIGH BYTE @V200899 01380000
- SLR R0,R0 ZERO LENGTH REGISTER @V200899 01381000
- B CALLERM . . . @V200899 01382000
- NLE046 EQU * @V200899 01390000
- BAL R7,TYPRADD SETUP TYPE, RADDR FOR DMKERM @V200899 01391000
- LA R2,046(0) MSG= DMKNLE046E @V200899 01392000
- B CALLERM GO PUT OUT ERROR MSG @V200899 01393000
- NLE140 EQU * CTLR XXX ATTACHED TO USERID @V200899 01394000
- BAL R7,TYPRADD SETUP TYPE, RADDR FOR DMKERM @V200899 01395000
- L R2,RDEVUSER ADDRESS OF USER'S VMBLOK @VA01880 01396000
- MVC SAVEWRK4+1(8),VMUSER-VMBLOK(R2) USERID @VA01880 01397000
- MVI SAVEWRK4,X'00' FIELD DELIMITER FOR DMKERM @VA01880 01398000
- LA R0,17 LENGTH OF PARMS TO R0 @V200899 01399000
- LA R2,140(0) MSG= DMKNLE140E @VA01880 01400000
- B CALLERM GO PUT OUT ERROR MSG @V200899 01401000
- NLE143 EQU * CTLR XXX IN USE BY SYSTEM @V200899 01402000
- BAL R7,TYPRADD SETUP TYPE, RADDR FOR DMKERM @V200899 01403000
- LA R2,143(0) MSG= DMKNLE143E @V200899 01404000
- B CALLERM . . . @V200899 01405000
- SPACE 01425000
- NLE469 LA R15,469 TEMP SPACE UNAVAILABLE @VM03030 01426000
- B NLEMSG ISSUE MESSAGE @V305435 01427000
- SPACE 1 01428000
- NLE470 LA R15,470 PAGING I/O ERROR @VM03030 01429000
- B NLEMSG ISSUE MESSAGE @V305435 01430000
- SPACE 1 01431000
- NLE471 LA R15,471 UNRECOVERABLE I/O ERROR @VM03030 01432000
- B NLEMSG ISSUE MESSAGE @V305435 01433000
- SPACE 1 01434000
- NLE460 LA R15,460 PROGRAM CHECK IN BOOTSTRAP @VM03030 01435000
- B NLEMSG ISSUE MESSAGE @V305435 01436000
- EJECT 01437000
- NLEMSG ST R15,SAVER2 SAVE ERROR RETURN CODE FOR CALLER@VM03030 01438000
- BAL R7,CLEANUP CLEAN UP AS REQUIRED @VM03030 01439000
- XC SAVEWRK2(L'SAVEWRK2*2),SAVEWRK2 AREA FOR MESSAGE@V305435 01440000
- L R2,SAVER2 ERROR CODE NEEDED FOR DMKERM @VM03030 01441000
- LH R1,SAVEWRK1+2 'RADDR' TO CONVERT @V305435 01442000
- CALL DMKCVTBH CONVERT IT TO HEX @V305435 01443000
- STCM R1,B'0111',SAVEWRK2 SAVE 'RADDR' IN MESSAGE @V305435 01444000
- MVC SAVEWRK3,=C'DUMP' CHANGE IT TO 'DUMPING' @V305435 01448000
- NLEMSGOK LA R1,SAVEWRK2 ADDRESS OF MESSAGE TEXT @V305435 01449000
- LA R0,L'SAVEWRK2*2 AND LENGTH OF THE TEXT @V305435 01450000
- B CALLERM CALL THE MESSAGE WRITTER @V305435 01451000
- EJECT 01452000
- NLE464E EQU * CC = 3 DURING LOAD OR DUMP I/O @VM08775 01453000
- BAL R7,CLEANUP CLEAN UP AS NECESSARY @VM08775 01454000
- LH R1,SAVEWRK1+2 370X DEVICE ADDRESS @VM08775 01455000
- CALL DMKCVTBH CONVERT FOR OUTPUT @VM08775 01456000
- ICM R1,8,BLANKS HIGH-ORDER BLANK FOR DMKERMSG @VM08775 01457000
- SLR R0,R0 DATA IS IN GR1 @VM08775 01458000
- LA R2,464(0) MSG= DMKNLE464E @VM08775 01459000
- B CALLERM @VM08775 01460000
- SPACE 01461000
- TYPRADD EQU * BUILD TYPE, RADDR PARMS FOR DMKERMSG @V200820 01462000
- MVC SAVEWRK2(4),=C'CTLR' MOVE IN DEVICE NAME @V200820 01463000
- LH R1,SAVEWRK1+2 REAL DEVICE ADDRESS @V200820 01464000
- CALL DMKCVTBH CONVERT DEVICE ADDR (R8 IS ALL SE@V200820 01465000
- ST R1,SAVEWRK3 PUT DEV ADDR IN ERMSG PARM LIST @V200820 01466000
- MVI SAVEWRK3,X'00' MOVE IN SEPARATER @V200820 01467000
- LA R0,8 LENGTH OF PARMS TO R0 @V200820 01468000
- LA R1,SAVEWRK2 ADDRESS OF PARMS TO R1 @V200820 01469000
- BR R7 RETURN @V200820 01470000
- SPACE 01471000
- NOVAR SR R1,R1 ZERO ARG REG @V200899 01472000
- CALLERM ICM R0,14,MODID+3 INSERT MODULE ID @V200899 01473000
- TM SAVEWRK1,FROMNET ENTER VIA CONSOLE FUNCTION ?@V200820 01474000
- BO *+8 YES - O.K. TO SEND AS IS @V200820 01475000
- O R2,=X'20000000' SEND MSG TO SYSTEM OPERATOR @V200820 01476000
- CALL DMKERMSG CALL MESSAGE MODULE @V200820 01477000
- *--------------------------------------------------------------------* 01478000
- * MESSAGE MODULE RETURNS DIRECTLY TO CALLER 01479000
- *--------------------------------------------------------------------* 01480000
- NLEEXIT EQU * @V200899 01481000
- SR R2,R2 ZERO RETURN CODE REG @V200899 01482000
- NLEERXIT EQU * @V200899 01483000
- ST R2,SAVER2 STORE RETURN CODE FOR USER @V200899 01484000
- BAL R7,CLEANUP GO RELEASE AND UNLOCK ANY AREAS @V200899 01485000
- * THAT WERE OBTAINED BY DMKNLE 01486000
- EXIT AND EXIT @V200899 01487000
- EJECT 01488000
- *---------------------------------------------------------------------* 01489000
- * INTERNAL MESSAGES AND RESPONSES GENERATED AND USED BY DMKNLE * 01490000
- *---------------------------------------------------------------------* 01491000
- SPACE 01492000
- DUMPMSG DC C'CTLR XXX DUMP COMPLETE ' @V200820 01493000
- DMPMSGLN EQU *-DUMPMSG @V200820 01494000
- COMPRADD EQU 5 RADDR LOCATION IN DUMPMSG @V407508 01497000
- * 01499000
- M461SKEL DC C'DMKNLE461R CTLR XXX IPL NOT REQUIRED; ' @V200899 01500000
- DC C'ENTER ''YES'' TO CONTINUE: ' @V200899 01501000
- M461RLN EQU (*-M461SKEL) LENGTH OF DMKNLE461R MESSAGE @V200899 01502000
- M461RADD EQU 16 LOC OF RADDR FIELD IN DMKNLE461R MS@V200899 01503000
- SPACE 01504000
- NOPCCW DC X'0300000020000001' UTILITY NO-OP CCW @V200899 01505000
- EJECT 01506000
- LTORG @V200899 01507000
- EJECT 01508000
- *--------------------------------------------------------------------* 01509000
- * THE FOLLOWING DSECT IS USED BY THE 3705 LOAD/DUMP PROGRAMS TO MAP * 01510000
- * THE 3705 I/O CCWS AND REGISTER SAVE AREA FOR I/O ROUTINES * 01511000
- *--------------------------------------------------------------------* 01512000
- SPACE 01513000
- RNIOSAV DSECT @V200899 01514000
- RNCCWS DS 9D CCW AREA ( 9 DOUBLEWORDS ) @V200899 01515000
- OPMREPLY EQU RNCCWS AREA FOR OPERATOR REPLY TO '461R'@V200899 01516000
- RNSVREGS DS 10F I/O REG SAVE AREA (REGS 0 - 9) @V200899 01517000
- OVFLOSIZ DS 1F SAVE AREA FOR SIZE OF LAST LOAD IMAGE@V200899 01518000
- NEXTADDR EQU OVFLOSIZ NEXT ADDR FOR 370X DUMP PROGRAM @V200899 01519000
- NEXTLNTH DS 1H SIZE OF NEXT RECORD FOR DUMP @V200899 01520000
- DS 1H UNUSED @V200899 01521000
- RNWKSIZE EQU (*-RNIOSAV)/8 SIZE IN DOUBLE WORDS @V200899 01522000
- SPACE 3 01523000
- *--------------------------------------------------------------------* 01524000
- * THE FOLLOWING EQUATES ARE USED BY THE 3705 LOAD/DUMP I/O ROUTINES * 01525000
- *--------------------------------------------------------------------* 01526000
- SPACE 01527000
- WIPLOP EQU X'05' WRITE IPL CCW OP CODE @V200899 01528000
- WRTBRKOP EQU X'09' WRITE BREAK CCW OP CODE @V200899 01529000
- WRITEOP EQU X'01' WRITE CCW OP CODE @V200899 01530000
- READOP EQU X'02' READ CCW OP CODE @V200899 01531000
- SPACE 01531100
- NONE EQU X'00' USED TO INITIALIZE FLAG BYTE @V407508 01531200
- EJECT 01532000
- COPY NETWORK @V200899 01535000
- COPY EQU @V200899 01536000
- COPY DEVTYPES @V200899 01537000
- PSA @V200899 01538000
- COPY SAVE @V200899 01539000
- COPY VMBLOK @V200899 01540000
- COPY RBLOKS @V200899 01541000
- EJECT 01542000
- COPY VBLOKS @V240820 01543000
- COPY IOBLOKS @V306638 01544000
- COPY IOER @V200899 01545000
- COPY SPOOL @V200899 01546000
- END DMKNLE 01547000
ibm/vm370-lib/cp/dmknle.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator