ibm:vm370-lib:cp:dmkwrm.assemble_src
Table of Contents
DMKWRM Source
References
- Fixes Applied : 8
- This Source Date : Saturday, December 9, 1978
- Last Fix ID : [HRC075DK]
Source Listing
- DMKWRM.ASSEMBLE.txt
- WRM TITLE 'DMKWRM (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
- *. 00003000
- * 00004000
- * MODULE NAME - 00005000
- * 00006000
- * DMKWRM 00007000
- * 00008000
- * FUNCTION - 00009000
- * 00010000
- * DMKWRM CALLED BY DMKCPINT TO RETRIEVE THE SYSTEM 00011000
- * LOG MESSAGES, ACCOUNTING CARDS, SPOOL FILE BLOCKS 00012000
- * AND SPOOLING ALLOCATION RECORDS FROM THE WARMSTART 00013000
- * CYLINDER ON THE I.P.L. PACK. 00014000
- * 00015000
- * ATTRIBUTES - 00016000
- * 00017000
- * NON-REENTRANT, NON-RESIDENT, AND CALLED BY DMKCPINT 00018000
- * 00019000
- * ENTRY POINTS - 00020000
- * 00021000
- * DMKWRMST - WARM START 00022000
- * 00023000
- * ENTRY CONDITIONS - 00024000
- * 00025000
- * GPR2 = COLD, WARM AND/OR DRAIN START CODE (1,2 OR 4) 00026000
- * ALSO CKPT AND FORCE (20 OR 40) 00027000
- * GPR8 = ADDRESS OF RDEVBLOK FOR WARMSTART DASD VOLUME 00028000
- * GPR12 = BASE REGISTER 00029000
- * GPR13 = ADDRESS OF STANDARD SAVEAREA 00030000
- * 00031000
- * EXIT CONDITIONS - 00032000
- * 00033000
- * NORMAL - 00034000
- * 00035000
- * GPR2 = 0 00036000
- * 00039000
- * ERROR - 00040000
- * 00041000
- * GPR2 = 4 WARM START DATA INVALID; COLD START ASSUMED 00042000
- * 00044000
- * 00045000
- * CALLS TO OTHER ROUTINES - 00046000
- * 00047000
- * DMKSCNRU - TO LOCATE THE RDEVBLOK FOR A SPOOLING DEVICE 00048000
- * DMKSCNVS - TO LOCATE THE RDEVBLOK OF WRM AREA VOLUME HRC075DK 00048500
- * DMKFREE - TO GET FREE STORAGE 00049000
- * DMKPGTVG - TO GET VIRTUAL PAGE FOR A BUFFER. 00050000
- * DMKRPAGT - TO READ PAGE FROM DASD. 00051000
- * DMKPGTVR - TO RELEASE A VIRTUAL PAGE. 00052000
- * DMKERMSG - TO SEND ERROR MESSAGES TO THE OPERATOR. 00053000
- * DMKRPAPT - TO WRITE A PAGE TO DASD. 00054000
- * DMKQCNWT - WRITE RESPONSE 00055000
- * DMKCKSIN - INITIALIZE THE CHECKPOINT CYLINDER 00056000
- * DMKCKSWM - PERFORM THE DYNAMIC CHECKPOINT START 00057000
- * DMKPTRAN - GET THE PAGE OF 3800 NAMED SYSTEMS 00057500
- * 00058000
- EJECT 00059000
- * EXTERNAL REFERENCES - 00060000
- * 00061000
- * DMKRSPAC - ACCOUNTING CHAIN ANCHOR 00062000
- * DMKRSPHQ - SPOOL HOLD QUEUE CHAIN ANCHOR 00063000
- * DMKRSPRD - READER FILE CHAIN ANCHOR 00064000
- * DMKRSPPR - PRINTER FILE CHAIN ANCHOR 00065000
- * DMKRSPPU - PUNCH FILE CHAIN ANCHOR 00066000
- * DMKRSPID - SYSTEM SPOOLID COUNTER 00067000
- * DMKRSPDL - SYSTEM DELETE CHAIN ANCHOR 00068000
- * DMKRSPCV - TIME DAY CLOCK VALUE USED IN CHECKPOINT 00069000
- * DMKQNTBL - ANCHOR FOR 3800 NAMED SYSTEMS 00069500
- * 00070000
- * TABLES / WORKAREAS - 00071000
- * 00072000
- * 00073000
- * REGISTER USAGE - 00074000
- * 00075000
- * GPRS 0,1 AND 2 = PARAMETER PASSING REGISTERS 00076000
- * GPRS 3,4,5,6 AND 7 = SCRATCH 00077000
- * GPR9 = ADDRESS OF NEXT LOGICAL CHECKPOINT RECORD 00078000
- * 00079000
- * 00080000
- * FLAG BYTE SAVEWRK1+3 00081000
- * X'80' - ONE SPOOL FILE PROCESSED 00082000
- * X'40' - WARM START DATA PRESENT 00083000
- * X'01' - EE RCORD NEXT 00084000
- * 00085000
- * NOTES - 00086000
- * 00087000
- * NONE 00088000
- * 00089000
- * OPERATION - 00090000
- * 00091000
- * 1. IF COLD START REQUESTED; GO TO STEP 12. 00092000
- * LOCATE THE WARMSTART AREA, STARTING AND ENDING CYLINDER 00093000
- * ADDRESSES LOCATED AT DMKSYSWM. THE WARM START AREA MAY 00094000
- * RANGE FROM 1 TO 9 CYLINDERS IN SIZE. READ THE FIRST DISK 00095000
- * AND IF THE FIRST 8 BYTES ARE NOT X'FF'S; GIVE 00096000
- * MESSAGE DMKWRM920I AND EXIT GIVING RETURN CODE 00097000
- * EQUAL TO 4. (NO WARM START DATA; COLD START ASSUMED) 00098000
- * 2. READ ACCOUNTING INFORMATION FROM WARMSTART CYLINDER 00099000
- * 3. CHAIN ACCOUNTING CARDS TO DMKRSPAC 00100000
- * 4. READ SYSTEM LOG MESSAGES FROM WARMSTART CYLINDER 00101000
- * 5. CHAIN LOG MESSAGES TO DMKSYSLG 00102000
- * 6. READ SPOOL FILE CONTROL BLOCKS FROM WARMSTART CYLINDER 00103000
- * 7. CHAIN SPOOL FILE CONTROL BLOCKS TO DMKRSPRD,DMKRSPPR 00104000
- * DMKRSPPU AND DMKRSPDL. MOVE THE SPOOLID COUNTER CONTAINED 00105000
- * IN THE DELIMITER RECORD FOR SPOOL FILES TO DMKRSPID 00106000
- * SAVE THE STATE OF ALL UNIT RECORD DEVICES AND FOR 00106150
- * A 3800 PRINTER, RESTORE THE IMAGE LIBRARY AND 00106300
- * CONTROL FILES FOR THE SEPARATOR PAGE AND UPDATE THE 00106450
- * ACTIVITY COUNT FOR THE NAMED IMAGE LIBRARY IF THE 00106600
- * 3800 IS NOT DRAINED. 00106750
- * 8. READ RECORD ALLOCATION BLOCKS FROM WARMSTART CYLINDER 00107000
- * 9. CHAIN RECORD ALLOCATION BLOCK TO THE READ DEVICE BLOKS 00108000
- * AND UPDATE CYLINDER ALLOCATION RECORD SET UP BY DMKCPI. 00109000
- * IF SPOOL VOLUME NOT MOUNTED; GIVE MESSAGE 00110000
- * DMKWRM909W AND GO TO STEP 14. 00111000
- * IF TRYING TO ALLOCATE ON A NON-TEMPORARY CYLINDER; 00112000
- * GIVE MESSAGE DMKWRM903W AND GO TO STEP 14. 00113000
- * 10. READ SYSTEM HOLD QUEUE BLOKS FROM WARMSTART CYLINDER 00114000
- * 11. CHAIN SYSTEM HOLD QUEUE BLOCKS TO DMKRSPHQ. 00115000
- * 12. IF NO ERRORS; SET THE FIRST 8 BYTES TO BINARY ZEROES, 00116000
- * AND MOVE IN 8 BYTE START TIME VALUE (STARTIME PSA) TO 00117000
- * X'18' OF FIRST WARMSTART CYLINDER RECORD, 00118000
- * AND EXIT TO DMKCPI. IF I/O ERRORS; GIVE ERROR MESSAGE 00119000
- * DMKWRM902W AND GO TO STEP 14. 00120000
- * 13. IF HASH AND RECORD COUNT IN WARMSTART RECORDS ARE 00121000
- * INCORRECT; GIVE MESSAGE DMKWRM904W 00122000
- * 14. ENTER DISABLE WAIT STATE. (WAIT STATE CODE 009) 00123000
- * 00124000
- * 00125000
- * RESPONSE - 00126000
- * 00127000
- * DMKWRM920I NO WARM START DATA; CKPT START FOR RETRY 00128000
- * 00129000
- * 00130000
- * ERROR MESSAGES - 00131000
- * 00132000
- * DMKWRM921W SYSTEM RECOVERY FAILURE; UNRECOVERABLE I/O ERROR 00133000
- * DMKWRM903W SYSTEM RECOVERY FAILURE; VOLID "VOLID" ALLOCATION 00134000
- * ERROR CYLINDER "CYLINDER" 00135000
- * DMKWRM904W SYSTEM RECOVERY FAILURE; INVALID WARM START DATA 00136000
- * DMKWRM912W SYSTEM RECOVERY FAILURE; VOLID 'VOLID' NOT MOUNTED 00137000
- * 00138000
- * DISABLE WAIT START CODE 009 00139000
- * 00140000
- * 00141000
- * 00142000
- *. 00143000
- EJECT 00144000
- COPY OPTIONS 00145000
- COPY LOCAL OPTIONS 00146000
- SPACE 3 00147000
- SPACE 00148000
- EJECT 00149000
- DMKWRM CSECT 00150000
- SPACE 3 00151000
- EXTRN DMKSYSOW,DMKSYSWM 00152000
- EXTRN DMKRSPAC,DMKSYSLG,DMKRSPDL,DMKRSPPU,DMKRSPRD 00153000
- EXTRN DMKCKSIN,DMKCKSWM,DMKCKSPL @V304298 00154000
- EXTRN DMKERMSG,DMKPGTVR 00155000
- EXTRN DMKSCNRU,DMKRSPID,DMKRSPPR 00156000
- EXTRN DMKSCNVS HRC075DK 00156500
- EXTRN DMKRSPHQ,DMKSYSDT 00157000
- EXTRN DMKRPAGT,DMKRPAPT,DMKPGTVG 00158000
- EXTRN DMKRSPCV 00159000
- EXTRN DMKCVTBD @V2A2029 00160000
- EXTRN DMKRIODV,DMKRIOPR,DMKRIOPU @VA11687 00160250
- EXTRN DMKQNTBL 3800 IMAGE LIBRARY ANCHOR @V60B9BA 00160500
- SPACE 3 00161000
- USING PSA,R0 00162000
- USING RDEVBLOK,R8 00163000
- USING SAVEAREA,R13 00164000
- USING *,R12 00165000
- SPACE 00166000
- ID DC CL8'DMKWRM' MODULE NAME 00167000
- SPACE 3 00168000
- DMKWRMST RELOC 00169000
- XC SAVEWRK1(4),SAVEWRK1 CLEAR WORK AREA 00170000
- STCM R2,B'0001',SAVEWRK1 SAVE START TYPE CODE HRC028DK 00171290
- STCM R2,B'0010',SAVEWRK1+1 SAVE OTHER DMKCPI FLG HRC028DK 00171580
- * 00172000
- * X'01' = COLD START OR CLEAR WARMSTART CYL RECORD 1 00173000
- * X'02' = WARM START REQUESTED 00174000
- * X'02' = DRAIN OPTION SPECIFIED IN FLAG BYTE HRC028DK 00175490
- SPACE 00176000
- MVI WRECSIZE+1,X'50' SET LOGICAL RECORD SIZE TO 80 00177000
- MVI WRMP,X'01' RESET PAGE NUMBER 00178000
- L R1,=A(DMKSYSWM) GET POINTER TO WARM START CYLINDER 00179000
- MVC WARMCYL(2),0(R1) AND SAVE IN SEEK ADDRESS FIELD 00180000
- MVC WRMCC(2),0(R1) MOVE CYLINDER TO WORK AREA 00181000
- LA R0,6 Length of volume name HRC075DK 00182000
- LA R1,8(,R1) -> name of WRM volume HRC075DK 00182200
- CALL DMKSCNVS Get the RDEVBLOK HRC075DK 00182400
- LR R8,R1 RDEVBLOK to R8 HRC075DK 00182600
- MVI PAGECYL,24 24 PAGES/CYL 2305 AND 3340 @V2A2029 00184000
- TM RDEVTYPE,TYP2305+TYP3340 IS IT 2305 OR 3340 ? @V2A2029 00185000
- BNZ MVCTYPE YES - BRANCH @V2A2029 00186000
- MVI PAGECYL,57 57 PAGES/CYL 3330 @V2A2029 00187000
- TM RDEVTYPE,TYP3330 IS IT A 3330 ? @V2A2029 00188000
- BO MVCTYPE YES - @V2A2029 00189000
- MVI PAGECYL,120 120 PAGES/CYL 3350 @V304498 00190000
- TM RDEVTYPE,TYP3350 IS DEVICE A 3350 ? @V304498 00191000
- BO MVCTYPE YES - @V304498 00192000
- MVI PAGECYL,96 96 pages/cyl 3375 HRC106DK 00192100
- TM RDEVTYPE,TYP3375 Is device a 3375 ? HRC106DK 00192200
- BO MVCTYPE Yes - HRC106DK 00192300
- MVI PAGECYL,150 150 pages/cyl 3380 HRC106DK 00192400
- TM RDEVTYPE,TYP3380 Is device a 3380 ? HRC106DK 00192500
- BO MVCTYPE Yes - HRC106DK 00192600
- MVI PAGECYL,32 32 PAGES/CYL 2314/2319 @V2A2029 00193000
- MVCTYPE MVC TYPE(1),RDEVTYPE GET DEVICE TYPE @V2A2029 00194000
- MVC WRMD(1),RDEVCODE+1 MOVE IN DEVICE CODE 00195000
- SPACE 00196000
- CALL DMKPGTVG GET VIRTUAL ADDRESS 00197000
- ST R1,VPAGE SAVE ADDRESS 00198000
- TRANS 2,1,OPT=(BRING,DEFER,LOCK,SYSTEM) 00199000
- SPACE 00200000
- ST R2,BUFFER SAVE REAL ADDRESS OF BUFFER 00201000
- LA R2,4 INDICATE COLD START (RETURN CODE) 00202000
- TM SAVEWRK1,X'01' COLD START ?? 00203000
- BO SETCPID YES, CLEAR WRM CYL AND RETURN @VA05227 00204100
- TM SAVEWRK1,CKPT+FORCE CKPT OR FORCE SPECIFIED? @V304298 00205000
- BNZ SETCPID XFER IF SO @VA05227 00206100
- BAL R10,GETDISK GO READ FIRST DISK RECORD 00207000
- SPACE 2 00208000
- * 00209000
- * UPON RETURN FROM GETDISK, R9 WILL POINT TO THE NEXT 00210000
- * LOGICAL RECORD 00211000
- * 00212000
- ********************************* 00213000
- * 00214000
- * FIRST DELIMITER RECORD 00215000
- * 00216000
- ********************************* 00217000
- SPACE 00218000
- * 00219000
- * +--------+--------+--------+--------+---------+--------+ @VA12228 00220000
- * | 4X'FF' | 4X'FF' | HASH | REC NO | VERSION | FFS....| @VA12228 00221000
- * +--------+--------+--------+--------+---------+--------+ @VA12228 00222000
- * 00223000
- CLC 0(8,R9),FFS IS THE FIRST RECORD A DELIMITER ?? 00224000
- BNE MSG920I NO - NO WARM START DATA - COLD START 00225000
- * ASSUMED 00226000
- MVC WRMVER,WRMVERD(R9) COPY VERSION CODE FOR DATA @VA12228 00226500
- EJECT 00227000
- * 00228000
- * GET LINE ADDRESSES TO BE ENABLED 00229000
- * 00230000
- SPACE 00231000
- ENABLERT BAL R10,GETDISK GET NEXT RECORD OF LINE ADDRESSES@V200829 00232000
- CLC 0(8,R9),FFS IS IT DELIMITER FOR LINE @V200829 00233000
- * ADDRESS RECORD 00234000
- BE ACNTRT YES -- PROCESS ACCOUNTING CARDS @V200829 00235000
- TM SAVEWRK1+1,X'01' DISABLE ? HRC032DK 00235300
- BNO ENABWARM YES, SET ENABLE DEVICES HRC032DK 00235600
- CLC =C'WRM ',CPID RESTART CONDITION @V200829 00236000
- BNE ENABLERT NO -- SKIP ENABLE RECORDS @V200829 00237000
- ENABWARM EQU * HRC032DK 00237500
- LA R5,40 NUMBER OF LINE ADDRESSES PER @V200829 00238000
- * RECORD 00239000
- ENABLOOP LH R1,0(R9) GET LINE DEVICE ADDRESS @V200829 00240000
- LTR R1,R1 VALID ADDRESS @V200829 00241000
- BM ENABLERT NO -- GET NEXT RECORD @V200829 00242000
- CALL DMKSCNRU LOCATE RDEVBLOK @V200829 00243000
- BNZ ENABCNT NOT FOUND - TRY NEXT ADDRSS @V200829 00244000
- TM RDEVSTAT,RDEVDISA LINE OFFLINE @V200829 00245000
- BO ENABCNT YES -- DO NOT ENABLE @V200829 00246000
- TM RDEVTYPC,CLASSPEC SPECIAL CLASS @V200829 00247000
- BO EN3705 YES -- @V200829 00248000
- OI RDEVFLAG,RDEVENAB FORCE DMKCPVAE TO ENABLE @V200829 00249000
- TM RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS @V2D3931 00250000
- BZ ENABCNT NO, CONTINUE @V2D3931 00251000
- OI RDEVFLAG,RDEVENAB DMKCPVAE & DMKNETAE TO ENABLE @V2D3931 00252000
- TM RDEVTYPE,TYPBSC IS THIS A BISYNC LINE ? @V2D3931 00253000
- BO ENR3270 YES, ENABLE STATIONS ON THE LINE @V2D3931 00254000
- ENABCNT LA R9,2(R9) POINT TO NEXT LINE ADDRESS @V200829 00255000
- BCT R5,ENABLOOP PROCESS NEXT ADDRESS @V200829 00256000
- B ENABLERT READ NEXT RECORD @V200829 00257000
- SPACE 00258000
- EN3705 CLI RDEVTYPE,TYP3705 3705 OR 3704 @V200829 00259000
- BNE ENABCNT NO -- GET NEXT ADDRESS @V200829 00260000
- * 00261000
- * RECORD FORMAT FOR 3705 TYPE DEVICE 00262000
- * REAL DEVICE ADDDRESS = 2 BYTES 00263000
- * NUMBER OF NICBLOKS = 2 BYTES 00264000
- * NCP LOAD NAME = 8 BYTES 00265000
- * BIT MAP = 1 BIT FOR EACH NICBLOK 00266000
- * 8 NICBLOKS EACH BYTE 00267000
- * 4096 NICBLOKS MAX. 00268000
- * 00269000
- * RECORD FORMAT FOR CKPBLOK 00270000
- * CKPBLOK LENGTH = 2 BYTES (DOUBLE WORDS) 00271000
- * NUMBER OF NICBLOKS = 2 BYTES 00272000
- * SPARE = 4 BYTES 00273000
- * NCP LOAD NAME = 8 BYTES 00274000
- * BIT MAP = 1 BIT FOR EACH NICBLOK 00275000
- * 8 NICBLOKS EACH BYTE 00276000
- * 4096 NICBLOKS MAX. 00277000
- * 00278000
- BAL R4,GET2 UPDATE BUFFER ADDRESS BY TWO @V200829 00279000
- LH R4,0(R9) GET NUMBER OF NICBLOKS @V200829 00280000
- LA R6,7(R4) ROUND TO NEXT BYTE @V200829 00281000
- SRL R6,3 NUMBER OF BYTES FOR BIT MASK @V200829 00282000
- LA R7,23(R6) ADD HEADER COUNT AND ROUND @V200829 00283000
- SRL R7,3 LENGTH OF CKPBLOK IN DOUBLE WORDS@V200829 00284000
- LR R0,R7 GET STORAGE FOR CKPBLOK @V200829 00285000
- CALL DMKFREE .. @V200829 00286000
- ST R1,RDEVCKPT SAVE ADDRESS OF CKPBLOK @V200829 00287000
- LR R3,R1 .. @V200829 00288000
- USING CKPBLOK,R3 @V200829 00289000
- LR R0,R1 SET UP TO CLEAR CKPBLOK @V200829 00290000
- LR R1,R7 .. @V200829 00291000
- SLL R1,3 LENGTH OF CKPBLOK (BYTES) @V200829 00292000
- SLR R14,R14 .. @V200829 00293000
- SLR R15,R15 .. @V200829 00294000
- MVCL R0,R14 CLEAR CKPBLOK @V200829 00295000
- LA R6,9(R6) MAP COUNT PLUS NAME COUNT @V200829 00296000
- SRL R6,1 NUMBER OF PAIRS TO MOVE @V200829 00297000
- STH R7,CKPSIZE SAVE SIZE OF CKPBLOK @V200829 00299000
- STH R4,CKPRMAX NUMBER OF RESOURCES CHECKPOINTED @V200829 00300000
- LA R3,8(,R3) POINT TO NAME FIELD IN CKPBLOK @V200829 00301000
- CKPLP BAL R4,GET2 UPDATE BUFFER ADDRESS BY TWO @V200829 00302000
- MVC 0(2,R3),0(R9) MOVE NAME AND MASK BYTES @V200829 00303000
- LA R3,2(R3) UPDATE CKPBLOK ADDRESS BY 2 @V200829 00304000
- BCT R6,CKPLP BRANCH IF NOT LAST BYTE @V200829 00305000
- L R3,RDEVCKPT RESTORE ADDRESS OF CKPBLOK @V200829 00306000
- TM RDEVFLAG,RDEVAUTO AUTOLOAD GENERATED ? @VA06451 00306100
- BNO NOTAUTO NO , DON'T PERFORM IT @VA06451 00306200
- MVC RDEVNCP(8),CKPNAME MOVE NCPNAME TO RDEVBLOK @V200820 00307000
- NOTAUTO LA R4,ENABLOOP PROCESS NEXT DEVICE @VA06451 00309100
- SPACE 00310000
- GET2 LA R9,2(R9) UPDATE BUFFER ADDRESS BY TWO @V200829 00311000
- BCT R5,GETRET BUFFER BYTE COUNT -1 @V200829 00312000
- BAL R10,GETDISK GET NEXT WARMSTART BUFFER @V200829 00313000
- LA R5,40 NUMBER OF PAIRS PER BUFFER @V200829 00314000
- GETRET BR R4 RETURN TO CALLER @V200829 00315000
- SPACE 1 00316000
- USING NICBLOK,R9 SET UP ADDRESSABILITY FOR NICBLOK@V2D3931 00317000
- ENR3270 EQU * HANDLE RESOURCES ON BISYNC LINE @V2D3931 00318000
- BAL R4,GET2 GET POINTER TO NEXT LOCATION @V2D3931 00319000
- XC SAVEWRK3(6*4),SAVEWRK3 CLEAR WORK AREA @V2D3931 00320000
- LH R7,0(R9) GET NUMBER OF NICBLOKS @V2D3931 00321000
- LA R6,15(,R7) ROUND TO FULL BYTE AND HALF WORD @VA04088 00322000
- SRL R6,4 NUMBER OF HALF WORDS IN MASK @VA04088 00323000
- STH R6,SAVEWRK3 SAVE NUMBER OF HALF WORDS (MASK) @VA04088 00324000
- LA R6,4 GET LOOP COUNT @V2D3931 00326000
- LA R3,RDEVNCP GET ADDRESS OF POLLDLAY INTERVAL @V2D3931 00327000
- BAL R4,GET2 UPDATE BUFFER ADDRESS BY TWO 00328000
- CKPPA EQU * BYPASS NO. OF NICBLOKS & DATA @V2D3931 00329000
- MVC 0(2,R3),0(R9) GET THE POLLDLAY INTERVAL @VM01087 00330000
- BAL R4,GET2 UPDATE BUFFER ADDRESS BY TWO @VM01087 00331000
- LA R3,2(R3) GET NEXT TO BYTES @V2D3931 00332000
- BCT R6,CKPPA GO UPDATE BUFFER ADDRESS @V2D3931 00333000
- SR R3,R3 CLEAR REGISTER 3 @V2D3931 00334000
- ST R3,RDEVNCP CLEAR TIMER REQUEST BLOCK ADDRESS@V2D3931 00335000
- LH R6,RDEVMAX GET MAXIMUN NUMBER OF NICBLOKS @V2D3931 00336000
- LA R6,1(R6) UPDATE COUNT BY ONE @V2D3931 00337000
- CR R6,R7 IS ORIGINAL LOWER THAN CHKPT NO. @V2D3931 00338000
- BNL *+6 NO, BYPASS CHANGING COUNT @V2D3931 00339000
- LR R7,R6 GET THE SMALLEST COUNT @V2D3931 00340000
- MH R7,=AL2(NICSIZE*8) GET THE ENDING NICBLOK @V2D3931 00341000
- A R7,RDEVNICL ADDRESS .... @V2D3931 00342000
- LA R6,NICSIZE*8 GET SIZE OF NICBLOK @V2D3931 00343000
- STM R5,R9,SAVEWRK4 SAVE REGISTERS @V2D3931 00344000
- LR R10,R9 @V2D3931 00345000
- L R9,RDEVNICL GET THE FIRST NICBLOK ADDRESS @V2D3931 00346000
- LA R3,1(0,0) SET UP THE INDEX VALUE @V2D3931 00347000
- LR R4,R3 .... @V2D3931 00348000
- LA R5,8 8 BITS PER BYTE @VA04088 00349500
- CHECKEM EQU * @V2D3931 00350000
- L R1,F256 @V2D3931 00351000
- SRL R1,0(R3) SET UP TO TEST FOR ENABLE FLAG @V2D3931 00352000
- EX R1,TESTBIT TEST ENABLE FLAG IN BIT MAP @V2D3931 00353000
- BZ CHECKNX NO, GET NEXT NICBLOK ADDRESS @V2D3931 00354000
- TM NICTYPE,NICLGRP IS THIS A CONTROL UNIT NICBLOK @V2D3931 00355000
- BZ CHECKDV NO, TEST FOR GRAPHIC OR PRINTER @V2D3931 00356000
- NI NICSTAT,X'FF'-NICDISA CLEAR THE OFFLINE FLAG @V2D3931 00357000
- B CHECKNX GO GET NEXT NICBLOK @V2D3931 00358000
- CHECKDV EQU * HANDLE REMOTE DISPLAY & PRINTER @V2D3931 00359000
- TM NICTYPE,NICTERM IS THIS A DISPLAY OR PRINTER @V2D3931 00360000
- BZ CHECKNX NO, GET NEXT NICBLOK @V2D3931 00361000
- OI NICFLAG,NICENAB SET ENABLE FLAG IN NICBLOK @V2D3931 00362000
- NI NICSTAT,X'FF'-NICDISA CLEAR OFFLINE FLAG @V2D3931 00363000
- CHECKNX EQU * PROCESS NEXT NICBLOK @V2D3931 00364000
- BXLE R3,R4,CHECKNC GET NEXT BIT IN BIT MAP @VA04088 00365500
- CL R10,SAVEWRK8 FIRST BYTE OF THE TWO ? @VA04088 00366000
- BNE NXTPAIR NO, GET NEXT PAIR @VA04088 00366500
- LA R10,1(,R10) UPDATE MASK ADDRESS TO ODD BYTE @VA04088 00367000
- B CHCKINIT AND SET COUNTERS @VA04088 00367500
- NXTPAIR ST R9,SAVEWRK2 SAVE ADDRESS OF CURRENT NICBLOK @VA04088 00368000
- LM R5,R9,SAVEWRK4 RESTORE REGISTERS @VA04088 00368500
- BAL R4,GET2 UPDATE BUFFER ADDRESS @VA04088 00369000
- LH R4,SAVEWRK3 GET NUMBER OF MASK HALF WORDS @VA04088 00369500
- BCTR R4,0 REDUCE BY ONE @VA04088 00370000
- STH R4,SAVEWRK3 AND SAVE @VA04088 00370500
- STM R5,R9,SAVEWRK4 SAVE REGISTERS @VA04088 00371000
- LR R10,R9 GET CURRENT MASK ADDRESS @VA04088 00371500
- L R9,SAVEWRK2 RESTORE CURRENT NICBLOK ADDRESS @VA04088 00372000
- CHCKINIT LA R4,1 SET BXLE REGISTERS @VA04088 00372500
- LR R3,R4 ... @VA04088 00373000
- LA R5,8 LOOP VALUE - 8 BITS PER BYTE @VA04088 00373500
- CHECKNC EQU * PROCESS NEXT NICBLOK POINTER @VA04088 00374000
- BXLE R9,R6,CHECKEM GET NEXT NICBLOK POINTER @VA04088 00374500
- LM R5,R9,SAVEWRK4 RESTORE REGISTERS @VA04088 00375000
- LH R6,SAVEWRK3 GET NUMBER OF HALF WORDS LEFT @VA04088 00375500
- LTR R6,R6 ANY LEFT ? @VA04088 00376000
- BNP ENABLOOP NO, PROCESS NEXT DEVICE @VA04088 00376500
- NEXTSP EQU * @VA04088 00377000
- BAL R4,GET2 UPDATE THE BUFFER ADDRESS @VA04088 00377500
- BCT R6,NEXTSP BYPASS BIT MAP @VA04088 00378000
- B ENABLOOP PROCESS NEXT DEVICE @VA04088 00378500
- TESTBIT TM 0(R10),*-* TEST BIT MAP @V2D3931 00394000
- SPACE 00395000
- EJECT 00396000
- ********************************* 00397000
- * 00398000
- * READ ACCOUNTING CARDS 00399000
- * 00400000
- ********************************* 00401000
- SPACE 00402000
- ACNTRT L R5,=A(DMKRSPAC) POINT TO ACCOUNT CARD CHAIN ANCHOR 00403000
- LR R6,R5 00404000
- S R5,F8 ADJUST ADDRESS FOR FORWARD POINTER 00405000
- GETACNT BAL R10,GETDISK GET NEXT ACCOUNT CARD RECORD 00406000
- OI SAVEWRK1+3,X'40' INDICATE WARMSTART DATA PRESENT@V2A2029 00407000
- CLC 0(8,R9),FFS IS IT DELIMITER FOR ACNT BLOKS 00408000
- BE WARMLOG YES -- GO RETRIEVE LOGMSG 00409000
- SPACE 00410000
- LA R0,ACNTSIZE SIZE OF ACNTBLOK 00411000
- CALL DMKFREE GET CORE FOR AN ACNTBLOK 00412000
- USING ACNTBLOK,R1 TEMPORARY ADDRESSABILITY 00413000
- ST R1,8(,R5) CHAIN THE BUFFER TO PREVIOUS BUFFERS 00414000
- XC ACNTBLOK(ACNTSIZE*8),ACNTBLOK CLEAR ACNTBLOK 00415000
- MVI 8(R5),8 SET TIC OPCODE IN CHAIN 00416000
- MVC ACNTDATA,0(R9) MOVE ACCOUNT CARD DATA TO ACNTBLOK 00417000
- LM R3,R4,PUNCHCCW GET MODEL PUNCH CCW 00418000
- AR R3,R1 ADJUST DATA ADDRESS IN CCW 00419000
- STM R3,R4,ACNTCCW AND STORE IN ACNTBLOK 00420000
- LR R2,R1 SET NEW BACKCHAIN POINTER 00421000
- SR R3,R3 CLEAR FORWARD POINTER 00422000
- ST R3,ACNTNEXT IN CURRENT BUFFER 00423000
- LR R5,R1 SAVE ADDRESS OF CURRENT ACNTBLOK 00424000
- MVI 0(R6),0 CLEAR HIGH ORDER BYTE IN POINTER 00425000
- B GETACNT AND GO GET NEXT RECORD 00426000
- EJECT 00427000
- SPACE 3 00428000
- ********************************* 00429000
- * 00430000
- * READ LOG MESSAGES 00431000
- * 00432000
- ********************************* 00433000
- SPACE 00434000
- WARMLOG EQU * HERE TO RESTORE LOGMESSAGES 00435000
- L R5,=A(DMKSYSLG) GET POINTER TO LOGMSG ANCHOR 00436000
- GETLOG BAL R10,GETDISK GET NEXT LOGMSG RECORD 00437000
- CLC 0(8,R9),FFS IS IT DELIMITER FOR THE LOGMSG ? 00438000
- BE LOGEND YES - GO RETRIEVE DATE,TIME AND DAY 00439000
- SPACE 00440000
- LA R0,11 SIZE OF LOGMSG BUFFER 00441000
- CALL DMKFREE GET CORE FOR THE LOGMSG BUFFER 00442000
- ST R1,0(,R5) CHAIN THE NEW BUFFER TO THE 00443000
- * PREVIOUS ONE 00444000
- MVC 4(80,R1),0(R9) MOVE LOGMSG DATA TO BUFFER 00445000
- LR R5,R1 SAVE POINTER TO NEW BUFFER 00446000
- SR R1,R1 CLEAR FORWARD POINTER 00447000
- ST R1,0(,R5) FROM NEW BUFFER 00448000
- B GETLOG AND GO GET NEXT MESSAGE SEGMENT 00449000
- SPACE 00450000
- LOGEND EQU * HERE TO RETRIEVE DATE, TIME AND DAY 00451000
- L R15,=A(DMKSYSDT) ADDRESS OF DATA 00452000
- MVC 0(28,R15),16(R9) DATA IS IN DELIMITER RECORD 00453000
- EJECT 00454000
- ********************************* 00455000
- * 00456000
- * READ SPOOL FILE BLOCKS 00457000
- * 00458000
- ********************************* 00459000
- SPACE 00460000
- WARMSPL EQU * HERE TO PROCESS SPOOL FILES @V2A2029 00461000
- LA R5,ANCHRTBL INITIALIZE SPOOL ANCHOR TABLE INDEX 00462000
- L R6,0(R5) GET ADDRESS OF PRINTER CHAIN ANCHOR 00463000
- GETSPOOL BAL R10,GETDISK GET NEXT LOGICAL RECORD 00464000
- MVI WRECSIZE+1,SFBSIZE*8 LENGTH FOR NULL VERSION@VA12228 00465000
- CLI WRMVER,VERNULL IS IT NULL VERSION? @VA12228 00465100
- BE GETSPLXX YES, SKIP @VA12228 00465200
- MVI WRECSIZE+1,SPSFBSZ*8 SET NEW LOGICAL RECORD LEN @VA12228 00465300
- * FOR VERSIONS 1 AND 2 @VA12228 00465400
- GETSPLXX DS 0H @VA12228 00465500
- CLC 0(8,R9),FFS IS IT A DELIMITER ?? 00466000
- BNE NEXTBLOK NO -- GO CHAIN SFBLOK 00467000
- LA R5,4(,R5) POINT TO NEXT CHAIN ANCHOR ADDRESS 00468000
- L R6,0(,R5) GET ADDRESS OF ANCHOR 00469000
- LTR R6,R6 END OF LIST ?? 00470000
- BNZ GETSPOOL NO -- CONTINUAL 00471000
- L R15,=A(DMKRSPID) ADDRESS OF SYSTEM SPOOL ID COUNTER 00472000
- LH R14,16(R9) GET SPOOL ID COUNTER 00473000
- TM SAVEWRK1+3,X'80' ANY SPOOL FILES PRESENT ?? 00474000
- BO STOREID YES -- STORE SPOOL ID 00475000
- CH R14,=H'1000' SPOOL ID OVER 1000 ?? 00476000
- BNL WARMRECA YES -- DEFAULT TO 0001 00477000
- STOREID CLC SPOOLID(2),=H'1999' SPOOLID < 2000 ? @VM01054 00478000
- BH WARMRECA N0, --DEFAULT TO 0001 @VM01054 00479000
- STH R14,0(R15) STORE SPOOLID IN DMKRSPID 00480000
- B WARMRECA END OF LIST--DO ALLOCATION RECORDS 00481000
- SPACE 2 00482000
- USING SFBLOK,R9 ADDRESSABILITY FOR SFBLOK 00483000
- NEXTBLOK L R3,SFBRECS GET DEVICE CLASSES 00484000
- LTR R3,R3 IS THERE ANY ?? 00485000
- BNZ ACTSFB1 YES - ACTIVE OR DUMMY @V304298 00486000
- CLC SFBDATE(8),=C'DUMMY BK' IS THIS A DUMMY SFBLOK BLOK 00487000
- BNE CHAINSPL NO -- GO CHAIN BLOK 00488000
- ACTSFB1 LH R1,SFBPNT+2 GET DEVICE ADDRESS OF @V304298 00489000
- * PRINTER/PUNCH FOR 00490000
- * WHICH THE CLASSES WERE SAVED 00491000
- LR R2,R6 SAVE POINTER IN R6 00492000
- CALL DMKSCNRU AND LOCATE ITS RDEVBLOK 00493000
- LR R6,R2 RESTORE POINTER 00494000
- BZ STCLAS DEVICE FOUND - 00495000
- CLC SFBDATE(8),=C'DUMMY BK' DUMMY BLOK ? @V2A2029 00496000
- BE GETSPOOL GET NEXT SPOOL FILE @V2A2029 00497000
- B CHAINSPL CHAIN FILE - DEVICE NOT FOUND @V2A2029 00498000
- STCLAS TM SFBPNT+1,X'10' SPECIAL 3800 DUMMY BLOCK ? @V60B9BA 00498250
- BZ STCLAS2 XFER IF NOT @V60B9BA 00498500
- CLI RDEVTYPE,TYP3800 3800 PRINTER? @VA12228 00498580
- BNE GETSPOOL NO, SKIP 3800 STUFF @VA12228 00498660
- MVC RDEVIMAG,SFBFNAME MOVE IN THE IMAGE LIBR NAME @V60B9BA 00498750
- MVC RDEVXSEP,SFBFTYPE AND THE CHAR ARR TBL FOR SEP @V60B9BA 00499000
- MVC RDEVFSEP,SFBFLAG AND THE FCB FOR SEP PAGE @V60B9BA 00499250
- B GETSPOOL GET NEXT 3800 RECORD @V60B9BA 00499500
- STCLAS2 ST R3,RDEVCLAS SAVE SPOOLING CLASSES IN RDEVBLOK @V60B9BA 00499750
- TM SFBPNT+1,X'20' PUNCH OR PRINT SEPARATOR ?? 00500000
- BO *+8 YES -- (SAVED BY DMKCKP) 00501000
- * DEFAULT IS SEP - DMKRIO 00502000
- NI RDEVFLAG,X'FF'-RDEVSEP INDICATE NOSEP 00503000
- TM SFBPNT+1,X'80' DEVICE OFFLINE ? (SAVED BY DMKCKP) 00504000
- BZ *+12 NO -- 00505000
- OI RDEVSTAT,RDEVDISA MARK DEVICE OFFLINE 00506000
- B TSTDMY AND LEAVE DEVICE DRAINED 00507000
- TM SAVEWRK1+1,X'02' DRAIN REQUIRED BY OPERATOR ?HRC028DK 00508490
- BO TSTDMY YES -- TEST FOR DUMMY BK 00509000
- * DEFAULT IS DRAIN -- DMKRIO 00510000
- TM SFBPNT+1,X'40' DEVICE DRAINED ? (SAVED BY DMKCKP) 00511000
- BO TSTDMY XFER IF SO @V60B9BA 00512000
- NI RDEVFLAG,X'FF'-RDEVDRAN RESET DRAIN FLAG 00513000
- CLI RDEVTYPE,TYP3800 IS IT A 3800? @VMI0069 00513040
- BNE TSTDMY NO @VMI0069 00513080
- L R1,=A(DMKQNTBL) START OF 3800 IMAGE LIBS @V60B9BA 00513120
- LTR R1,R1 ANY IMAGE LIBRARIES ? @V60B9BA 00513160
- BZ ST38A2 DRAIN THE DEVICE IF NOT @V60B9BA 00513200
- TRANS 2,1,OPT=(BRING,DEFER,SYSTEM) GET IT IN @V60B9BA 00513240
- LR R14,R2 POINT TO EACH SYSTEM ENTRY @V60B9BA 00513280
- USING NPRTBL,R14 ADDRESSIBILITY @V60B9BA 00513320
- ST38A0 CLC RDEVIMAG,NPRNAME IS THIS THE ONE ? @V60B9BA 00513360
- BNE ST38A1 XFER IF NOT @V60B9BA 00513400
- LTR R15,R15 ZERO IT @V60B9BA 00513440
- IC R15,NPRCNT CURRENT COUNT @V60B9BA 00513480
- LA R15,1(R15) PLUS ONE @V60B9BA 00513520
- STC R15,NPRCNT SAVE THE NEW COUNT @V60B9BA 00513560
- B TSTDMY CONTINUE ONWARD @V60B9BA 00513600
- ST38A1 AL R14,NPRPNT NEXT ONE @V60B9BA 00513640
- CLC NPRPNT,ZEROES IS THIS DUMMY LAST ENTRY ? @V60B9BA 00513680
- BNE ST38A0 XFER IF NOT @V60B9BA 00513720
- ST38A2 OI RDEVFLAG,RDEVDRAN MARK DEVICE DRAINED SINCE @V60B9BA 00513760
- * WE CAN'T FIND THE IMG LIB @V60B9BA 00513800
- DROP R14 NO LONGER NEEDED @V60B9BA 00513840
- SPACE 00513880
- TSTDMY CLC SFBDATE(8),=C'DUMMY BK' IS IT A DUMMY SFBLOK ?? 00514000
- BE GETSPOOL YES -- GO GET NEXT BLOK 00515000
- OI SAVEWRK1+3,X'80' INDICATE ONE SFBLOK 00516000
- OI SFBFLAG-SFBLOK(R9),SFBRECER INDICATE ALLOC INCOMPLETE 00517000
- OI SFBFLAG2-SFBLOK(R9),SFBRSTRT INDICATE RESTARTED 00518000
- TM RDEVSTAT,RDEVDISA IS THIS DEVICE OFFLINE ?? 00519000
- BO CHAINSPL YES - BETTER CHAIN IT 00520000
- TM RDEVFLAG,RDEVDRAN IS THE DEVICE BEING DRAINED ?? 00521000
- BO CHAINSPL YES - BETTER CHAIN IT 00522000
- LA R0,SFBSIZE SIZE OF SFBLOK 00523000
- CALL DMKFREE 00524000
- MVC 0(SFBSIZE*8,R1),0(R9) MOVE SFBLOK TO NEW AREA 00525000
- ST R1,RDEVSPL STORE THE ADDRESS IN RDEV 00526000
- MVI 0(R1),X'FF' INDICATE THAT THIS IS SFBLOK 00527000
- CLRREC SR R14,R14 00528000
- ST R14,SFBRECS-SFBLOK(,R1) CLEAR ALLOCATION FIELD 00529000
- CLC SFBFILID(2),SPOOLID IS THIS THE LOWEST SO FAR ? 00530000
- BNL *+10 NO - 00531000
- MVC SPOOLID(2),SFBFILID YES - SAVE IT 00532000
- B GETSPOOL GET NEXT BLOK 00533000
- SPACE 2 00534000
- CHAINSPL NI SFBFLAG,X'FF'-(SFBINUSE+SFBEOF+SFBOPEN) 00535000
- * RESET FILE STATUS 00536000
- TM SAVEWRK1+3,X'80' ANY FILES PRESENT OTHER THAN DELETE 00537000
- BO SETFILE YES -- 00538000
- CLC 4(4,R5),ZEROES PROCESSING DELETE CHAIN ?? 00539000
- BE GETSPOOL YES -- SKIP DELETE FILES 00540000
- SETFILE OI SAVEWRK1+3,X'80' INDICATE SPOOL FILES PRESENT 00541000
- TM SFBRSVD,X'E0' IS IT A VM/SP UNIQUE FILE? @VA12228 00541100
- * (LIKE VIRTUAL 3800, OR 3211 WITH IMBEDDED FCBS) @VA12228 00541200
- BZ FILEOK NO, WE MAY CONTINUE @VA12228 00541300
- OI SFBFLAG,SFBSHOLD PUT IN SYSTEM HOLD @VA12228 00541400
- FILEOK DS 0H @VA12228 00541500
- LA R0,SFBSIZE SIZE OF SFBLOK 00542000
- CALL DMKFREE GET CORE FOR THE SFBLOK 00543000
- MVC 0(SFBSIZE*8,R1),0(R9) MOVE SFBLOK TO STORAGE 00544000
- ST R1,0(,R6) CHAIN NEW BLOK TO PREVIOUS 00545000
- LR R6,R1 SAVE ADDRESS OF NEW BLOK 00546000
- SR R14,R14 CLEAR FORWARD POINTER 00547000
- ST R14,0(,R6) IN NEW BLOK 00548000
- B CLRREC AND GO GET NEXT BLOK 00549000
- SPACE 2 00550000
- EJECT 00551000
- ********************************* 00552000
- * 00553000
- * READ SPOOL ALLOCATION BLOCKS 00554000
- * 00555000
- ********************************* 00556000
- SPACE 00557000
- WARMRECA EQU * PROCESS SPOOL ALLOCATION BLOCKS @V2A2029 00558000
- GETREC BAL R10,GETDISK GET NEXT LOGICAL RECORD 00559000
- MVI WRECSIZE+1,RECSIZE*8 LENGTH FOR NULL VERSION@VA12228 00560000
- CLI WRMVER,VERNULL IS IT NULL VERSION? @VA12228 00560100
- BE GETRECXX YES, SKIP @VA12228 00560200
- MVI WRECSIZE+1,SPRCSZ*8 SET LENGTH OF RECBLOK @VA12228 00560300
- * FOR VERSIONS 1 AND 2 @VA12228 00560400
- GETRECXX DS 0H @VA12228 00560500
- CLC 0(8,R9),FFS IS IT END OF ALLOCATION BLOKS ?? 00561000
- BE WARMHOLD YES -- FINISHED RETRIEVING RECORDS 00562000
- SPACE 00563000
- TM SAVEWRK1+3,X'80' ANY SPOOL FILES PRESENT ???? 00564000
- BZ GETREC NO -- FORGET ALLOCATION RECORDS 00565000
- SPACE 00566000
- USING RECBLOK,R9 TEMPORARY ADDRESSABILITY 00567000
- L R5,RECPNT GET DISPLACEMENT TO OWNDLIST ENTRY 00568000
- A R5,=A(DMKSYSOW) POINT TO ENTRY IN OWNED LIST 00569000
- USING OWNDLIST,R5 ADDRESSABILITY FOR OWNED LIST ENTRY 00570000
- LH R8,OWNDRDEV GET POINTER TO RDEVBLOK 00571000
- LTR R8,R8 VOLUME MOUNTED ????? 00572000
- BM MSG912W @V305435 00573000
- SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00574000
- A R8,ARIODV ADDRESS OF RDEVBLOK 00575000
- SPACE 00576000
- L R4,RDEVALLN ADDRESS OF SPOOL ALLOCATION RECORD 00577000
- LTR R4,R4 IS THERE ONE ?? 00578000
- BZ MSG912W NOT MOUNTED OR NO ALLLOCATION. @V305435 00579000
- * RECORD 00580000
- * 00581000
- * GPR4 = ADDRESS OF ALLOCATION RECORD CREATED BY DMKCPI 00582000
- * +----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 00583000
- * |CYLS|00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|- |- |FF| 00584000
- * +----+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ 00585000
- * 00586000
- LH R2,RECCYL GET CYLINDER NUMBER OF FIRST 00587000
- * CYLINDER 00588000
- LA R1,2(R2,R4) POINT TO CORRECT CYLINDER BYTE 00589000
- CLI 0(R1),0 IS ALLOCATED CYLINDER TEMPORARY 00590000
- * SPACE ?? 00591000
- BE TMPALLOC IF NOT IN USE, TEMP ALLOC @VM00019 00592000
- CLI 0(R1),TEMP IS IT ALREADY ALLOCATED? @VM00019 00592200
- BNE MSG903W ALLOCATED @VM00019 00592400
- * 00592600
- TMPALLOC CLI RECUSED,0 ANY RECORDS IN USE? 00592800
- BE GETREC NO-CYL NOT REALLY IN USE @VA05007 00593200
- MVI 0(R1),ALLOC MARK TEMP CYL IN USE @VM00019 00594000
- LA R0,RECSIZE SIZE OF RECBLOK 00595000
- CALL DMKFREE 00596000
- CLI WRMVER,VERNULL IS IT NULL VERSION? @VA12228 00597000
- BNE GETRECYY NO, SKIP @VA12228 00597100
- MVC 0(RECSIZE*8,R1),0(R9) MOVE NULL-VERSION BLOK @VA12228 00597200
- B GETRECZZ AND SKIP VERSION 1/2 CODE @VA12228 00597300
- GETRECYY DS 0H @VA12228 00597400
- MVC 0(8,R1),0(R9) MOVE VERSION 1/2 HEADER @VA12228 00597500
- MVC RECMAP-RECBLOK(L'RECMAP,R1),16(R9) AND DATA @VA12228 00597600
- GETRECZZ DS 0H @VA12228 00597700
- XC RECPNT-RECBLOK(4,R1),0(R1) CLEAR FORWARD POINTER@VA03516 00598000
- LR R9,R1 GET ADDRESSABILITY @VA03516 00599000
- CHAINIT L R1,RDEVALLN GET ALOCBLOC @VA03516 00600000
- LH R0,0(,R1) NUMBER OF CYLINDERS @VA03516 00601000
- SRL R0,1 GET MIDDLE CYLINDER @VA03516 00602000
- STH R0,MIDCYL SAVE IT @VA03516 00603000
- SH R0,RECCYL GET CURRENT DISPLACEMENT @VA03516 00604000
- LPR R0,R0 MAKE IT POSITIVE @VA03516 00605000
- STH R0,CURDISP SAVE IT @VA03516 00606000
- LA R1,RDEVRECS PREVIOUS RECBLOK @VA03516 00607000
- L R15,RDEVRECS POINT TO FIRST RECBLOK @VA03516 00608000
- B LOOPIT6 MAKE THE TEST @VA03516 00609000
- LOOPIT5 LH R0,RECCYL-RECBLOK(,R15) GET DISPLACEMENT THIS @VA03516 00610000
- * RECBLOK 00611000
- SH R0,MIDCYL SUBTRACT MIDDLE CYLINDER @VA03516 00612000
- LPR R0,R0 MAKE IT POSITIVE @VA03516 00613000
- CH R0,CURDISP IS IT BIGGER THAN OURS? @VA03516 00614000
- BH CHAINT IF SO, GO CHAIN IT @VA03516 00615000
- LR R1,R15 NEW PREVIOUS RECBLOK @VA03516 00616000
- L R15,RECPNT-RECBLOK(,R15) NEXT RECBLOK ON CHAIN @VA03516 00617000
- LOOPIT6 LTR R15,R15 ARE WE AT THE END YET? @VA03516 00618000
- BNZ LOOPIT5 XFER IF NOT @VA03516 00619000
- CHAINT ST R15,RECPNT POINT TO NEXT RECBLOK @VA03516 00620000
- ST R9,RECPNT-RECBLOK(,R1) PREVIOUS POINTS TO US @VA03516 00621000
- B GETREC @VA03516 00622000
- SPACE 2 00623000
- EJECT 00624000
- ********************************* 00625000
- * 00626000
- * READ SPOOL HOLD QUEUE BLOCKS 00627000
- * 00628000
- ********************************* 00629000
- SPACE 00630000
- WARMHOLD EQU * PROCESS HOLD QUEUE BLOCKS @V2A2029 00631000
- L R6,=A(DMKRSPHQ) ADDRESS OF HOLD QUEUE CHAIN 00632000
- SPACE 00633000
- GETHQ BAL R10,GETDISK GET NEXT LOGICAL RECORD 00634000
- MVI WRECSIZE+1,SHQBSIZE*8 SET NEW RECORD SIZE 00635000
- CLC 0(8,R9),FFS IS IT END OF RECORD ?? 00636000
- BE DONE YES -- DONE 00637000
- USING SHQBLOK,R9 00638000
- LA R0,SHQBSIZE SIZE OF BLOK 00639000
- CALL DMKFREE 00640000
- MVC 0(SHQBSIZE*8,R1),0(R9) MOVE DATA TO NEW AREA 00641000
- ST R1,0(R6) CHAIN TO PREVIOUS BLOCK 00642000
- LR R6,R1 UPDATE PREVIOUS REG POINTER 00643000
- SR R14,R14 00644000
- ST R14,0(R1) CLEAR FORWARD POINTER 00645000
- B GETHQ GET NEXT BLOK 00646000
- SPACE 00647000
- ******************************************** 00648000
- * 00649000
- * CLEAR WARMSTART CYLINDER RECORD ONE 00650000
- * 00651000
- ******************************************** 00652000
- SPACE 00653000
- DONE EQU * HERE WHEN ALL IS DONE @V2A2029 00654000
- SR R2,R2 ZERO RETURN CODE (WARM START) 00655000
- SETCPID EQU * @VA05227 00656100
- ST R2,SAVER2 STORE RETURN CODE 00658000
- MVC WRMCC(2),WARMCYL RESET WARMSTART CYL AND 00659000
- MVI WRMP,X'01' SET PAGE NUMBER TO ONE 00660000
- LM R0,R1,CCPDVPG RESTORE CCPD AND VIRTUAL PAGE 00661000
- * ADDRESS 00662000
- L R3,BUFFER GET REAL ADDRESS OF BUFFER 00663000
- TM SAVEWRK1,CKPT+FORCE WERE THESE SPECIFIED? @VA05227 00664100
- BZ ENDER2 XFER IF NOT @VA05227 00664200
- ENDER1 SR R2,R2 GET THE PARM REG SET @VA05227 00664300
- ST R2,SAVER2 ZERO RTN CODE (WARM START) @VA05227 00664400
- IC R2,SAVEWRK1 FOR CALL TO CKSWM @VA05227 00664500
- CALL DMKCKSWM GO TO IT @VA05227 00664600
- CH R2,=H'8' RETRY MESSAGE HRC032DK 00664710
- BNE WARMCLR HRC032DK 00664720
- ST R2,SAVER2 PUSH TO NEXT LEVEL HRC032DK 00664730
- EXIT , GET OUT OF HERE HRC032DK 00664740
- ENDER2 EQU * @VA05227 00664800
- CALL DMKCKSIN INITIALIZE CKPT CYLINDER @VA05227 00664900
- L R1,=A(DMKRSPHQ) CKPT THE SHQBLOKS @VA05227 00665000
- EN2LOOP L R1,0(,R1) NEXT SHQBLOK @VA05227 00665100
- LTR R1,R1 ANY MORE? @VA05227 00665200
- BZ ENDER3 NOW CHECKPOINT SFBLOKS @VA05227 00665300
- CALL DMKCKSPL,PARM=ADDSFB+CHGSHQ @VA05227 00665400
- B EN2LOOP @VA05227 00665500
- ENDER3 SR R2,R2 CLEAR PARM REG @VA05227 00665600
- LA R3,ANCHRCKS POINT TO SPOOL FILE CHAIN TBL @VA05227 00665700
- B CKSLOOP2 CONTINUE @VA05227 00665800
- CKSLOOP1 LA R3,4(,R3) GET NEXT TABLE ENTRY @VA05227 00665900
- CKSLOOP2 CLC 0(4,R3),F0 END OF TABLE ? @VA05227 00666000
- BE CKPTRDVS IF SO,CKPT SFBLOKS CHAINED TO @VA11687 00666100
- * RDEVBLOK 00666150
- L R7,0(,R3) POINT TO NEW CHAIN @VA05227 00666200
- LA R7,0(,R7) STRIP OFF ALL FLAG BYTES @VA05227 00666300
- IC R2,0(R3) GET CORRECT CKSPL PARM @VA05227 00666400
- CKSLOOP3 L R7,0(,R7) END OF CHAIN ? @VA05227 00666500
- LTR R7,R7 IF SO, GET NEXT CHAIN ADDRESS @VA05227 00666600
- BZ CKSLOOP1 ........... @VA05227 00666700
- CALL DMKCKSPL CHECKPOINT THIS SFBLOK @VA05227 00666800
- B CKSLOOP3 AND CONTINUE .... @VA05227 00666900
- SPACE 3 00666903
- * 00666906
- * THE NEXT SECTION OF CODE CHECKPOINTS SFBLOKS WHICH 00666909
- * WERE HUNG OFF OF RDEVBLOKS.FAILURE TO DO THIS COULD 00666912
- * RESULT IN TWO FILES HAVING THE SAME SPOOL FILE ID AND 00666915
- * COULD LEAD TO THE LOSS OF ONE OF THEM DURING A 00666918
- * CHECKPOINT START. 00666921
- * 00666924
- CKPTRDVS EQU * @VA11687 00666927
- LA R3,RDVANCHR ADDRESS OF FIRST RDEV LIST @VA11687 00666930
- RDVCHNLP EQU * @VA11687 00666933
- SLR R2,R2 SET PARM REG FOR THAT TYPE @VA11687 00666936
- IC R2,0(,R3) OF DEVICE @VA11687 00666939
- SLR R4,R4 POINT TO FIRST LIST ENTRY @VA11687 00666942
- ICM R4,7,1(R3) @VA11687 00666945
- ICM R5,15,0(R4) COUNT OF ENTRIES IS FIRST @VA11687 00666948
- BZ ENDRDVCH NEXT LIST IF THIS ONE EMPTY @VA11687 00666951
- NEXTRDV EQU * @VA11687 00666954
- LA R4,4(,R4) ADDRESS OF NEXT LIST ENTRY @VA11687 00666957
- SLR R8,R8 LOCATE ASSOCIATED RDEVBLOK @VA11687 00666960
- ICM R8,3,0(R4) @VA11687 00666963
- SLL R8,3 @VA11687 00666966
- AL R8,=A(DMKRIODV) @VA11687 00666969
- ICM R7,15,RDEVSPL ADDRESS OF ACTIVE SFBLOK (IF ANY)@VA11687 00666972
- BZ ENDRDV NOTHING TO CHECKPOINT @VA11687 00666975
- CALL DMKCKSPL CHKPT SFBLOK ON THIS RDEVBLOK @VA11687 00666978
- ENDRDV EQU * @VA11687 00666981
- BCT R5,NEXTRDV NEXT RDEVBLOK ON THE LIST @VA11687 00666984
- ENDRDVCH EQU * @VA11687 00666987
- LA R3,4(,R3) ADDRESS OF NEXT LIST @VA11687 00666990
- CLC 0(4,R3),F0 END MARKER ? @VA11687 00666993
- BNE RDVCHNLP NO...PROCESS NEW LIST @VA11687 00666996
- SPACE 3 00666999
- WARMCLR EQU * HERE TO ZERO THE FIRST 8 BYTES OF@VA05227 00667000
- MVC WRMCC(2),WARMCYL RESET WARMSTART CYL AND @VA05227 00667100
- MVI WRMP,X'01' SET PAGE NUMBER TO ONE @VA05227 00667200
- LM R0,R1,CCPDVPG RESTORE CCPD AND VIRTUAL PAGE @VA05227 00667300
- * ADDRESS 00667400
- L R3,BUFFER GET REAL ADDRESS OF BUFFER @VA05227 00667500
- XC 0(8,R3),0(R3) ZERO FIRST 8 BYTES OF BUFFER @VA05227 00667600
- L R15,=A(DMKRSPCV) ADDRESS OF AREA TO SAVE @VA05227 00667700
- MVC 24(8,R3),STARTIME STORE START TIME VALUE IN @VA05227 00667800
- * FIRST REC 00667900
- MVC 0(8,R15),24(R3) AND INTO DMKRSPCV - @VA05227 00668000
- * DMKCKP WILL COMPARE THESE TWO FIELDS TO VALIDATE THAT 00668100
- * CORRECT VOLUME IS MOUNTED FOR CHECK POINTING THE SYSTEM 00668200
- LA R4,5 RETRY COUNT OF 5 @VA05227 00668300
- WRPAGE1 CALL DMKRPAPT,PARM=(SYSTEM) WRITE OUT FIRST PAGE @VA05227 00668400
- BZ ALLDONE BRANCH IF COMPLETE @VA05227 00668500
- BCT R4,WRPAGE1 ERROR- RETRY @VA05227 00668600
- B MSG921W I/O ERROR - NUCLEUS CYLINDER @VA05227 00668700
- ALLDONE DS 0H @V304298 00694000
- SR R0,R0 CLEAR PARM REG @VA05227 00694100
- CALL DMKRPAGT,PARM=SYSTEM RELEASE STORAGE PAGE @VA05227 00694200
- CALL DMKPGTVR RELEASE VIRTUAL PAGE @VA05227 00694300
- EXIT 00695000
- EJECT 00696000
- ********************************************* 00697000
- * 00698000
- GETDISK EQU * HERE TO LOCATE THE NEXT LOGICAL WARMSTART RECORD 00699000
- * AND PASS ITS ADDRESS TO THE CALLER IN GPR9 00700000
- * 00701000
- ********************************************* 00702000
- SPACE 00703000
- L R9,POINTER GET POINTER TO LAST RECORD PASSED 00704000
- LTR R9,R9 1ST TIME THRU 00705000
- BZ FIRSTBUF YES - 00706000
- AH R9,WRECSIZE AND ADD LENGTH OF RECORD 00707000
- CLC 0(8,R9),=8X'FE' LAST RECORD IN BUFFER ?? 00708000
- BNE VALIDATE NO - GO VALIDATE RECORD 00709000
- SPACE 00710000
- LH R1,RECCNT GET RECORD COUNT 00711000
- LA R1,1(R1) UPDATE BY ONE 00712000
- STH R1,RECCNT AND STORE 00713000
- OI SAVEWRK1+3,X'01' INDICATE EE RECORD NEXT 00714000
- SPACE 00715000
- SPACE 00716000
- FIRSTBUF LM R0,R1,CCPDVPG GET CCPD AND VIRTUAL ADDRESS 00717000
- CALL DMKRPAGT,PARM=(BRING+SYSTEM+LOCK) 00718000
- BNZ MSG921W I/O ERROR - NUCLEUS CYLINDER @V305435 00719000
- ST R2,POINTER SAVE REAL ADDRESS 00720000
- ST R2,BUFFER 00721000
- LR R9,R2 00722000
- IC R1,WRMP GET PAGE NUMBER 00723000
- CLM R1,B'0001',PAGECYL REACH END OF CYLINDER ? @V2A2029 00724000
- BL SAMECYL NO - SAME CYLINDER @V2A2029 00725000
- LH R14,WRMCC GET CURRENT CYLINDER @V2A2029 00726000
- LA R14,1(,R14) UPDATE TO NEXT CYLINDER @V2A2029 00727000
- STH R14,WRMCC AND STORE IN CCPD @V2A2029 00728000
- SR R1,R1 RESET PAGE COUNT @V2A2029 00729000
- SAMECYL LA R1,1(,R1) UPDATE PAGE NUMBER @V2A2029 00730000
- STC R1,WRMP ONE AND SAVE 00731000
- SPACE 00732000
- VALIDATE EQU * HERE TO VALIDATE HASH NUMBER AND RECORD NUMBER 00733000
- ST R9,POINTER SAVE ADDRESS OF CURRENT RECORD 00734000
- LH R1,RECCNT GET WARMSTART RECORD COUNT 00735000
- LA R1,1(R1) UPDATE BY ONE 00736000
- STH R1,RECCNT AND SAVE 00737000
- CLC 0(8,R9),=8X'EE' FIRST RECORD OF A BUFFER 00738000
- BE EEREC YES - VERIFY HASH AND COUNT 00739000
- TM SAVEWRK1+3,X'01' SHOULD THIS BE A EE RECORD ?? 00740000
- BO ERRTYPE YES -- DMKWRM920I OR DMKWRM904I 00741000
- CLC 0(8,R9),FFS DELIMITER RECORD ?? 00742000
- BCR 7,R10 NO - MUST BE DATA RECORD 00743000
- EEREC NI SAVEWRK1+3,X'FE' RESET EE RECORD SWITCH 00744000
- CLC HASH(6),ZEROES HASH NUMBER FILLED IN ?? 00745000
- BNE CMPHASH YES - 00746000
- MVC HASH(6),8(R9) MOVE HASH NUMBER TO SAVE AREA 00747000
- BR R10 RETURN TO CALLER 00748000
- SPACE 00749000
- CMPHASH CLC 8(8,R9),HASH HASH NUMBER AND RECORD NUMBER 00750000
- * CORRECT ?? 00751000
- BE HASHOK YES -- VALID DATA 00752000
- ERRTYPE TM SAVEWRK1+3,X'40' STARTED PROCESSING DATA ?? @V2A2029 00753000
- BZ MSG920I NO--NO WARM START DATA - COLD @V2A2029 00754000
- * START ASSUMED 00755000
- B MSG904W YES -- PROCESSING STARTED -- @V2A2029 00756000
- * INVALID WARMSTART DATA 00757000
- HASHOK CLC 0(8,R9),=8X'EE' FIRST RECORD OF A BUFFER 00758000
- BE GETDISK YES - GET NEXT RECORD 00759000
- BR R10 RECORD GOOD - RETURN TO CALLER 00760000
- SPACE 00761000
- EJECT 00762000
- ******************************************* 00763000
- * 00764000
- * ERROR MESSAGES 00765000
- * 00766000
- ******************************************* 00767000
- SPACE 00768000
- MSG921W EQU * UNCOVERABLE I/O ERROR ON WARM @V305435 00769000
- * START CYLINDER. 00770000
- LA R2,921 ERROR MESSAGE DMKWRM921W @V305435 00771000
- B PUTMSG WRITE MESSAGE 00772000
- SPACE 00773000
- MSG903W EQU * HERE IF ALLOCATION ERROR @V2A2029 00774000
- XC SAVEWRK6(10),SAVEWRK6 CLEAR MSG PARM AREA @V2A2029 00775000
- MVC SAVEWRK6(6),RDEVSER SET UP VOLID FOR MSG @V2A2029 00776000
- LR R1,R2 GET CYLINDER ADDRESS @V2A2029 00777000
- CALL DMKCVTBD AND CONVERT FOR MSG @V2A2029 00778000
- STCM R1,B'0111',SAVEWRK7+3 STORE IN PARM AREA @V2A2029 00779000
- LA R2,903 ERROR MESSAGE DMKWRM903W @V2A2029 00780000
- LA R0,10 LENGTH OF PARM AREA @V2A2029 00781000
- LA R1,SAVEWRK6 ADDRESS OF PARM AREA @V2A2029 00782000
- B PUTMSG1 GO WRITE ERROR MESSAGE @V2A2029 00783000
- SPACE 00784000
- MSG904W EQU * HERE FOR INVALID WARM START DATA @V2A2029 00785000
- LA R2,904 ERROR MESSAGE DMKWRM904W @V2A2029 00786000
- B PUTMSG WRITE ERROR MSG HRC032DK 00787490
- SPACE 00788000
- MSG912W EQU * HERE IF VOLUME NOT MOUNTED @V305435 00789000
- LA R2,912 MESSAGE DMKWRM912W @V305435 00790000
- LA R0,6 LENGTH OF LABEL 00791000
- LR R1,R5 ADDRESS OF VOLUME LABEL 00792000
- B PUTMSG1 GO WRITE ERROR MESSAGE @V2A2029 00793000
- SPACE 00794000
- MSG920I EQU * HERE IF NO WARM START DATA @V304298 00795000
- LA R0,MSG920L GET LENGTH OF MESSAGE 00796000
- LA R1,MSG920 ADDRESS OF MESSAGE 00797000
- CALL DMKQCNWT,PARM=OPERATOR+ALARM WRITE MESSAGE @V304298 00798000
- B PUTMSG2 HRC032DK 00799490
- SPACE 00800000
- PUTMSG EQU * HERE TO CALL DMKERMSG TO @V2A2029 00801000
- * DISPLAY ERROR MSG 00802000
- SR R0,R0 CLEAR PARM REGS @V2A2029 00803000
- SR R1,R1 .. @V2A2029 00804000
- PUTMSG1 ICM R0,B'1110',ID+3 INSERT MODULE ID (WRM) @V2A2029 00805000
- O R2,=X'A8E60000' INDICATE RETURN, W MSG AND @V2A2029 00806000
- * OPERATOR 00807000
- CALL DMKERMSG CALL ERROR MESSAGE MOUDLE @V2A2029 00808000
- PUTMSG2 EQU * HERE TO CALL DMKERMSG TO HRC032DK 00808500
- LA R0,1 WRITE BLANK TO INSURE PREVIOUS @V2A2029 00809000
- * MESSAGE 00810000
- LA R1,BLK IS DISPLAYED @V2A2029 00811000
- CALL DMKQCNWT,PARM=(ALARM+OPERATOR) @V2A2029 00812000
- SPACE 00813000
- LA R2,8 RETURN TO DMKCPI FOR HELP HRC032DK 00814490
- ST R2,SAVER2 HRC032DK 00814980
- EXIT , HRC032DK 00815470
- EJECT 00816000
- ******************************************* 00817000
- * 00818000
- * CONSTANTS 00819000
- * 00820000
- ******************************************* 00821000
- * 00822000
- PUNCHCCW CCW X'41',12,CC+SILI,80 MODEL PUNCH CCW 00823000
- SPACE 00824000
- WAIT9 DC X'000A000000000009' WAIT STATE CODE 009 00825000
- SPACE 00826000
- HASH DC F'0' HASH NUMBER SAVE AREA 00827000
- DC H'0' 00828000
- SPACE 00829000
- RECCNT DC H'0' WARMSTART RECORD COUNTER 00830000
- SPACE 00831000
- SPACE 00832000
- TYPE DC X'00' 00833000
- SPACE 00834000
- WRMVERD EQU 16 DISPLACEMENT OF VERSION IN REC @VA12228 00834100
- WRMVER DC X'00' WARM START DATA VERSION NUMBER @VA12228 00834200
- VERNULL EQU X'FF' NULL VERSION NUMBER @VA12228 00834300
- VERR6 EQU X'01' RELEASE 6 VERSION OF WARM START @VA12228 00834400
- VERSP1 EQU X'02' VM/SP VERSION OF WARM START @VA12228 00834500
- SPOOLID DC H'2000' RE-CYCLE POINT @V2A2029 00835000
- SPACE 00836000
- DS 0F 00837000
- CCPDVPG EQU * 00838000
- WRMCCPD EQU * 00839000
- WRMCC DC H'0' CC CYLINDER NUMBER 00840000
- WRMP DC X'01' P PAGE NUMBER 00841000
- WRMD DC X'00' D DEVICE CODE 00842000
- VPAGE DC F'0' ADDRESS OF VIRTUAL BUFFER 00843000
- POINTER DC F'0' ADDRESS OF CURRENT LOGICAL RECORD 00844000
- BUFFER DC F'0' START OF THE CURRENT BUFFER 00845000
- WRECSIZE DC H'80' LOGICAL RECORD LENGTH FOR ACCOUNTING 00846000
- WARMCYL DC H'0' CYLINDER ADDRESS OF WARM START CYL 00847000
- PAGECYL DC X'00' NUMBER OF PAGES PER CYLINDER @V2A2029 00848000
- BLK DC C' ' BLANK @V2A2029 00849000
- CURDISP DC H'0' SAVE DURRENT DIST FOR ALOCIT @VA03516 00850000
- MIDCYL DC H'0' SAVE MIDDLE CYLINDER @VA03516 00851000
- SPACE 2 00852000
- * FLAGS FOR PARAMETER FROM DMKCPI 00853000
- COLD EQU X'01' @V304298 00854000
- WARM EQU X'02' @V304298 00855000
- DRAIN EQU X'04' @V304298 00856000
- SHUTDOWN EQU X'08' @V304298 00857000
- WARMAUTO EQU X'10' @V304298 00858000
- CKPT EQU X'20' @V304298 00859000
- FORCE EQU X'40' @V304298 00860000
- ALLOC EQU X'80' IN-USE INDICATOR @VM00019 00860350
- TEMP EQU X'08' TEMP SPACE INDICATOR @VM00019 00860700
- EJECT 00861100
- DS 0F @VA04443 00861200
- ANCHRCKS EQU * POINTER TABLE FOR CHECKPOINTING SPOOL FILES @VA04443 00861300
- DC AL1(PRTCHN+ADDSFB),AL3(DMKRSPPR) @VA04443 00861400
- DC AL1(PCHCHN+ADDSFB),AL3(DMKRSPPU) @VA04443 00861500
- DC AL1(RDRCHN+ADDSFB),AL3(DMKRSPRD) @VA04443 00861600
- DC A(0) END OF LIST @VA04443 00861700
- SPACE 2 00861705
- RDVANCHR DS 0F @VA11687 00861710
- DC AL1(ADDSFB+ACTSFB+PRTCHN),AL3(DMKRIOPR) @VA11687 00861715
- DC AL1(ADDSFB+ACTSFB+PCHCHN),AL3(DMKRIOPU) @VA11687 00861720
- DC A(0) END OF LIST @VA11687 00861725
- SPACE 2 00861800
- ANCHRTBL EQU * POINTER TABLE FOR RESTORING SPOOL FILE CHAINS 00863000
- DC A(DMKRSPPR) 00864000
- DC A(DMKRSPPU) 00865000
- DC A(DMKRSPRD) 00866000
- DC A(DMKRSPDL) 00867000
- DC A(0) END OF LIST 00868000
- SPACE 2 00869000
- SPACE 2 00870000
- MSG920 DC X'1515' TWO CARRIAGE RETURNS 00871000
- DC C'DMKWRM920I NO WARM START DATA; ' @V304298 00872000
- DC C'CKPT START FOR RETRY' @V304298 00873000
- DC X'1515' 00874000
- MSG920L EQU *-MSG920 LENGTH OF MESSAGE 00875000
- DS 0F 00876000
- EJECT 00877000
- LTORG 00878000
- EJECT 00879000
- COPY EQU 00880000
- COPY ALLOC 00881000
- COPY ACCOUNT 00882000
- COPY RBLOKS 00883000
- COPY SAVE 00884000
- COPY VMBLOK 00885000
- PSA 00886000
- COPY IOBLOKS 00887000
- COPY DEVTYPES 00888000
- COPY SPOOL 00889000
- SFBLOK DSECT , CONTINUATION OF SFBLOK @VA12228 00889070
- ORG , WITH VM/SP SFBLOK DEFINITIONS @VA12228 00889140
- SFBUFORM DS D USER FORM @VA12228 00889210
- SFBOFORM DS D OPERATOR FORM @VA12228 00889280
- SPSFBSZ EQU (*-SFBLOK+7)/8 VM/SP SFBLOK IS 2 DWRDS LONGER @VA12228 00889350
- SPRCSZ EQU 8 VM/SP RECBLOK SIZE @VA12228 00889420
- COPY NPRTBL @V60B9BA 00889500
- COPY VBLOKS 00890000
- COPY NETWORK @V200829 00891000
- END 00892000
ibm/vm370-lib/cp/dmkwrm.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator