CPS TITLE 'DMKCPR (CP) VM/370 - RELEASE 6' 00001000 *. 00002000 * MODULE NAME - 00003000 * 00004000 * DMKCPR 00005000 * 00006000 * FUNCTION - 00007000 * 00008000 * BRING THE SYSTEM TO AN ORDERLY SHUTDOWN, SAVING SPOOL FILES 00009000 * AND ACCOUNTING INFORMATION. 00010000 * 00011000 * ATTRIBUTES - 00012000 * 00013000 * REENTRANT, PAGEABLE, CALLED VIA SVC 00014000 * 00015000 * ENTRY POINTS 00016000 * 00017000 * DMKCPRSH - BRING THE SYSTEM TO AN ORDERLY SHUTDOWN, SAVING 00018000 * SPOOL FILE AND ACCOUNTING INFORMATION 00019000 * 00020000 * ENTRY CONDITIONS - 00021000 * 00022000 * GPR11 = ADDRESS OF CALLER'S VMBLOK 00023000 * GPR12 = ADDRESS OF ENTRY POINT 00024000 * GPR13 = ADDRESS OF SAVEAREA 00025000 * 00026000 * EXIT CONDITIONS - 00027000 * 00028000 * NONE 00029000 * 00030000 * CALLS TO OTHER ROUTINES - 00031000 * 00032000 * DMKFREE - TO OBTAIN STORAGE 00033000 * DMKFRET - TO RETURN A BLOCK OF STORAGE 00034000 * DMKDSBSD - RECORD 3330/3340/3350/2305 STATISTICAL DATA 00035000 * DMKRSESD - RECORD 3800 STATISTICAL DATA 00036000 * DMKIOESR - SYNCHRONOUS OBR PROCESSING 00037000 * DMKDMPRS - RE-IPL SYSTEM 00038000 * DMKVSPCO - CLOSE FUNCTIONS FOR SPOOLED PRT/PCH 00039000 * DMKPRGMC - ADDR OF MONCOM 00040000 * DMKSPLDL - DELETE SPOOL FILES ON THE 3800 DELAY QUEUE 00041000 * 00042000 * EXTERNAL REFERENCES - 00043000 * 00044000 * NONE 00045000 * 00046000 * TABLES / WORKAREAS - 00047000 * 00048000 * 00049000 * 00050000 * REGISTER USAGE - 00051000 * 00052000 * GPR0 = PARMS PASSED TO CALLED ROUTINES, PSA BASE REG 00053000 * GPR1 = WORK REGESTER 00054000 * GPR2 = PARMS PASSED TO CALLED ROUTINES 00055000 * GPR3 = LENGTH FOR EXECUTED MOVES AND COMPARES 00056000 * GPR4 = INTERNAL LINKAGE (2ND LEVEL) 00057000 * GPR5 = INTERNAL LINKAGE (2ND LEVEL) 00058000 * GPR6 = RCHBLOK BASE 00059000 * GPR7 = RCUBLOK BASE 00060000 * GPR8 = RDEVBLOK BASE 00061000 * GPR9 = WORK REGISTER 00062000 * GPR10 = IOBLOK BASE 00063000 * GPR11 = VMBLOK BASE 00064000 * GPR12 = MODULE BASE 00065000 * GPR13 = SAVEAREA BASE 00066000 * GPR14 = EXTERNAL LINKAGE 00067000 * GPR15 = EXTERNAL LINKAGE 00068000 * 00069000 * OPERATION - 00070000 * 00071000 * THE COMMAND HANDLING ROUTINES IN DMKCPR ARE CALLED FROM DMKCFM 00072000 * AFTER THEIR PRIVILEGE CLASS HAS BEEN VERIFIED 00073000 *. 00074000 EJECT 00075000 *. 00076000 * 00077000 * SUBROUTINE NAME - 00078000 * 00079000 * DMKCPRSH 00080000 * 00081000 * FUNCTION - 00082000 * 00083000 * TO TERMINATE ALL SYSTEM ACTIVITY AND SAVE SYSTEM STATUS FOR A 00084000 * FUTURE WARM START 00085000 * 00086000 * COMMAND LINE FORMAT - 00087000 * 00088000 * +------------+--------------+ 00089000 * | SHUTDOWN | NO OPERAND | 00090000 * | SHUTDOWN | | 00091000 * +------------+--------------+ 00092000 * 00093000 * OPERATION - 00094000 * 00095000 * 1. LOCATE THE CONSOLE VDEVBLOK FOR THE CALLER AND THE 00096000 * OPERATOR, IF AN ACTIVE CONSOLE SPOOL FILE EXIST; CALL 00097000 * DMKVSPCO TO CLOSE AND CHAIN THE SPOOL FILE BLOK. 00098000 * 2. LOCATE RDEVBLOK 00099000 * A. CALL DMKIOESR IF STATISTICAL DATA (OUTBOARD) EXISTS 00100000 * FOR THIS DEVICE,TO PROCESS OBR SYCHRONOUSLY. 00101000 * B. CALL DMKDSBSD TO RECORD STATISTICAL DATA FOR 00102000 * EACH TYPE OF DASD. 00103000 * EACH DASD DEVICE OR DMKRSESD FOR A 3800 PRINTER. 00104000 * C. FOR EACH 3800, DELETE EACH FILE ON ITS 00105000 * DELAYED PURGE QUEUE. 00106000 * IF THE MONITOR IS ACTIVE THEN STOP IT. 00107000 * 3. PLACE THE CHARACTER STRING 'CPCP' IN THE CPID WORD IN PSA. 00108000 * 4. GO TO THE 'RESTART' FUNCTION (DMKDMPRS) IN DMKDMPDK TO 00109000 * RE-IPL THE SYSTEM. CHECKPOINT (DMKCKP) WILL SAVE ALL 00110000 * SPOOLING AND ACCOUNTING INFORMATION, AND PLACE THE 00111000 * STRING 'SHUT' IN CPID TO INDICATE SHUTDOWN COMPLETE. 00112000 * 00113000 * MESSAGES - 00114000 * 00115000 * NONE 00116000 * 00117000 *. 00118000 EJECT 00119000 COPY OPTIONS @VA03757 00120000 COPY LOCAL @VA03757 00121000 EJECT 00122000 PUNCH 'SPB' @VA03757 00123000 DMKCPR CSECT 00124000 MODID DC CL8'DMKCPR' 00125000 SPACE 3 00126000 USING PSA,R0 @VA03757 00127000 USING VMBLOK,R11 @VA03757 00128000 USING SAVEAREA,R13 @VA03757 00129000 SPACE 00130000 ************************************************************** 00131000 * * 00132000 * EXTERNAL SYMBOL TABLE * 00133000 * * 00134000 ************************************************************** 00135000 SPACE 00136000 EXTRN DMKDMPRS @VA03757 00137000 EXTRN DMKSTKCP @V407466 00138000 EXTRN DMKTAPRL TAPE RELEASE EPA @V407466 00139000 EXTRN DMKCVTBD @VA03757 00140000 EXTRN DMKVSPCO @VA03757 00141000 EXTRN DMKDSBSD UNLOAD DASD STAT DATA @VA08187 00142000 EXTRN DMKPRGMC,DMKMNISH @V407595 00143000 EXTRN DMKIOESR SYCHRONOUS OBR PROCESSING @VA03757 00144000 EXTRN DMKSPLDL,DMKCVTAB,DMKSCHST,DMKRSESD 3800 SUPPORT@V60B9BA 00145000 EXTRN DMKSSSDE TO DEMOUNT VOLUME @VA10877 00146000 EXTRN DMKSCNFD Word Scanner HRC002DK 00146300 EXTRN DMKERMSG ERROR MESSAGE ROUTINE HRC002DK 00146600 EJECT 00147000 ************************************************************** 00148000 * * 00149000 * ENTRY POINT FOR DMKCPRSH * 00150000 * * 00151000 ************************************************************** 00152000 SPACE 00153000 DMKCPRSH RELOC SHUTDOWN THE SYSTEM 00154000 L R6,PREFIXA GET ABSOLUTE PSA @VA12314 00154100 TM CPSTAT4-PSA(R6),CPSHUT IS SHUTDOWN IN PROGRESS? @VA12314 00154200 BO EXIT YES...IT'S TOO LATE FOR 2ND CMD @VA12314 00154300 CALL DMKSCNFD HRC002DK 00154306 BNZ NOSHTPRM HRC002DK 00154312 LR R2,R0 HRC002DK 00154318 BCTR R2,0 HRC002DK 00154324 CL R2,F3 HRC002DK 00154330 BL ERRMSG3 HRC002DK 00154336 EX R2,CMPREIPL HRC002DK 00154342 BNZ CHKPOFF HRC002DK 00154348 OI CPSTAT4-PSA(R6),CPREIPL HRC002DK 00154354 B NOSHTPRM HRC002DK 00154360 CHKPOFF EQU * HRC002DK 00154366 EX R2,CMPPOFF HRC002DK 00154372 BNZ ERRMSG3 HRC002DK 00154378 OI CPSTAT4-PSA(R6),CPPWROFF HRC002DK 00154384 NOSHTPRM EQU * HRC002DK 00154390 OI CPSTAT4-PSA(R6),CPSHUT INDICATE SHUTDOWN IN @VA12314 00154400 * PROGRESS 00154500 XC SAVEWRK1(L4),SAVEWRK1 CLEAR FLAG BITS @V407595 00155000 TM APSTAT1,APUOPER IS THE APU OPERATIONAL ? @V407595 00156000 BNO NOAP NO - BYPASS APU PROCESSING @V407595 00157000 OI CPSBITS,APUOPER INDICATE THE APU WAS @V407595 00158000 * OPERATIONAL. 00159000 SWITCH ENSURE RUNNING ON MAIN PROC @V407595 00160000 SIGNAL QUIESCE QUIESCE THE APU @V407595 00161000 SIGNAL SHUTDOWN SET THE APU NOT OPERATIONAL @V407595 00162000 NOAP EQU * @V407595 00163000 SPACE 00164000 ************************************************************** 00165000 * * 00166000 * IF THE MONITOR IS ACTIVE, STOP IT. * 00167000 * * 00168000 ************************************************************** 00169000 SPACE 00170000 L R9,=A(DMKPRGMC) SOME KEY FIELDS IN DMKPRG @VA03757 00171000 L R9,0(R9) PICK UP COMM. AREA ADDRESS @VA03757 00172000 LTR R9,R9 IS THERE ONE @VA03757 00173000 BZ CLOSECON NO, THEN MONITOR IS NOT ACTIVE @VA03757 00174000 SPACE 1 00175000 USING MONCOM,R9 @VA03757 00176000 MVC CPCREG8,ZEROES SHUT OFF EVENT TRACE IMMED. @VA03757 00177000 LCTL C8,C8,ZEROES ... @VA03757 00178000 OI MONFLAG1,CFSTOP INDICATE CONSOLE FUNCTION STOP @VA03757 00179000 TM MONFLAG3,SPOOLED SEE IF SPOOLING @V50A2B5 00180000 BO NOSETUR YES, SKIP NEXT @V50A2B5 00181000 MVC MONUSER,=CL8'SHUTDOWN' SHUTDOWN DID IT @VA03757 00182000 NOSETUR EQU * @V50A2B5 00183000 L R8,MONARDB ADDRESS OF THE RDEVBLOK @VA03757 00184000 USING RDEVBLOK,R8 @VA03757 00185000 L R10,MONAIOB GET THE IOB ADDRESS @VA03757 00186000 USING IOBLOK,R10 @VA03757 00187000 TM MONFLAG3,SPOOLED SEE IF SPOOLING @V50A2B5 00188000 BO NOCHKDV YES, SKIP NEXT @V50A2B5 00189000 TM RDEVSTAT,RDEVNRDY IS THE DEVICE INT REQ? @VA03757 00190000 BO CLOSECON YES, THEN SKIP THE TRAILER @VA03757 00191000 NOCHKDV EQU * @V50A2B5 00192000 LA R0,CPEXSIZE SIZE OF A CPEXBLOK @VA03757 00193000 CALL DMKFREE GET THE BLOCK @VA03757 00194000 USING CPEXBLOK,R1 ADDRESS THE BLOCK @VA03757 00195000 LA R14,CLOSECON ADDRESS OF RETURN POINT @VA03757 00196000 STM R0,R15,CPEXR0 SAVE REGS FOR RETURN FROM MON @VA03757 00197000 ST R1,IOBMISC2 SAVE CPEXBLOK ADDRESS FOR MON @VA03757 00198000 TM MONFLAG3,SPOOLED SEE IF WE ARE SPOOLED @V50A2B5 00199000 BNO CONTIN NO, SKIP NEXT @V50A2B5 00200000 ST R14,CPEXADD STORE AS CPEX ADDR @V50A2B5 00201000 L R2,MONIOBF GET CURRENT IOBUF @V50A2B5 00202000 LTR R2,R2 ANY IO @V50A2B5 00203000 BNZ SENDCP IO ACTIVE, SYSTEM WILL @VA07888 00204000 * SHUTDOWN USING CFSTOP FLAG WHEN I/O COMPLETE 00205000 CALL DMKMNISH YES, CALL SHUTDOWN @V50A2B5 00206000 SENDCP CALL DMKSTKCP STACK CPEXBLOK @V50A2B5 00207000 B GOTODSP GO TO DISPATCHER @V50A2B5 00208000 CONTIN EQU * @V50A2B5 00209000 DROP R1 DEADDRESS THE CPEXBLOK @VA03757 00210000 L R1,MONIOBF GET TAPE BUSY INDICATOR @V407595 00211000 LTR R1,R1 IS TAPE BUSY ? @V407595 00212000 BNZ GOTODSP YES, SKIP MNISH CALL @V407595 00213000 CALL DMKMNISH CALL MNISH TO INITIATE TRAILER @V407595 00214000 GOTODSP GOTO DMKDSPCH MON INT HANDLER WILL RETURN @VA03757 00215000 DROP R8,R9,R10 @VA03757 00216000 EJECT 00217000 ************************************************************** 00218000 * * 00219000 * CLOSE CONSOLE SPOOL FILES FOR OPERATOR AND USER * 00220000 * WHO ISSUED SHUTDOWN. * 00221000 * * 00222000 ************************************************************** 00223000 SPACE 00224000 USING VDEVBLOK,R8 @VA03757 00225000 CLOSECON EQU * SAVE CONSOLE SPOOL FILES @VA03757 00226000 LH R8,VMVTERM CHECK FOR VIRTUAL CONSOLE @VA03757 00227000 LTR R8,R8 IS THERE ONE AT THE MOMENT ? @VA03757 00228000 BM CKOPER NO -- SKIP SPOOL CHECK @VA03757 00229000 AL R8,VMDVSTRT POINT TO THE VDEVBLOK ITSELF @VA03757 00230000 ICM R2,B'1111',VDEVSPL OPEN SPOOL FILE ? @VA03757 00231000 BZ CKOPER NO - @VA03757 00232000 NI VDEVFLAG,255-VDEVCSPL TURN OFF SPOOLING FLAG @VA05613 00233000 SL R8,VMDVSTRT VDEVBLOK DISPLACEMENT @VA03757 00234000 CALL DMKVSPCO,PARM=0 CLOSE FILE @VA03757 00235000 AL R8,VMDVSTRT VDEVBLOK ADDRESS @VA03757 00236000 CKOPER L R2,ASYSOP GET VMBLOK ADDRESS OF OPERATOR @VA03757 00237000 CR R2,R11 IS THIS THE OPERATOR ? @VA03757 00238000 BE RESTVM YES -- RESTORE CALLER VMBLOK @VA03757 00239000 * ADDRESS 00240000 CHARGE SWITCH,(R2) STORE USERS VMTTIME AND SET @V407595 00241000 * OPERATOR'S TO CPU TIMER. 00242000 B CLOSECON CLOSE OPERATOR'S CONSOLE @VA03757 00243000 RESTVM EQU * @V407595 00244000 CHARGE SWITCH,SAVER11 RESUME CHARGING CALLER. @V407595 00245000 DROP R8 @VA03757 00246000 SPACE 00247000 ************************************************************** 00248000 * * 00249000 * RECORD STATISTICAL DATA FOR DASD AND 3800 PRINTER * 00250000 * * 00251000 ************************************************************** 00252000 SPACE 00253000 LA R0,IOBSIZE SIZE OF ONE (1) IOBLOK @VA03757 00254000 CALL DMKFREE @VA03757 00255000 LR R10,R1 IOBLOK ADDRESS INTO R10 @VA03757 00256000 USING IOBLOK,R10 @VA03757 00257000 LA R4,2 INCREMENT FOR BXLE LOOP @VA03757 00258000 SR R1,R1 ZERO CHANNEL INDEX @VA03757 00259000 LA R5,30 END OF INDEX TABLE @VA03757 00260000 DASDCH L R9,ARIOCT ADDRESS OF CHANNEL INDICES @VA03757 00261000 LH R6,0(R1,R9) LOAD INDEX OF NEXT CHANNEL @VA03757 00262000 LTR R6,R6 IS CHANNEL THERE @VA03757 00263000 BM DASDCHI NO, GET NEXT CHANNEL @VA03757 00264000 A R6,ARIOCH ADDRESS OF RCHBLOK IN R6 @VA03757 00265000 USING RCHBLOK,R6 @VA03757 00266000 SR R2,R2 ZERO CONTROL UNIT INDEX COUNT @VA03757 00267000 LA R5,62 END OF CONTROL UNIT INDEX TABLE @VA03757 00268000 DASDCU LH R7,RCHCUTBL(R2) PICK UP INDEX @VA03757 00269000 LTR R7,R7 IS CONTROL UNIT THERE @VA03757 00270000 BM DASDCUI NO, TRY NEXT CU @VA03757 00271000 A R7,ARIOCU ADDRESS OF RCUBLOK TO R7 @VA03757 00272000 USING RCUBLOK,R7 @VA03757 00273000 SR R3,R3 ZERO INDEX FOR DEVICE INDEX @VA03757 00274000 LA R5,30 SET R5 TO END OF DEVICE INDEX @VA03757 00275000 * TABLE 00276000 DASDDEV LH R8,RCUDVTBL(R3) PICK UP INDEX @VA03757 00277000 LTR R8,R8 IS DEVICE THERE @VA03757 00278000 BM DASDDEVI NO, TRY NEXT DEVICE @VA03757 00279000 SLL R8,3(0) CONVERT TO BYTE INDEX @VA03757 00280000 A R8,ARIODV ADDRESS OF RDEVBLOK TO R8 @VA03757 00281000 USING RDEVBLOK,R8 @VA03757 00282000 LR R14,R7 RELOCATE CU ADDR @VA10349 00283000 TM RCUTYPE,RCUSUB SUBORDINATE CU ? @VA10349 00284000 BNO JODEL NO ...CONTINUE @VA10349 00285000 L R14,RCUPRIME YES ..GET THE PRIME CU @VA10349 00286000 JODEL DS 0H 00287000 CL R6,RCUCHA-RCUBLOK(R14) IS THIS PRIME CH - CU @VA10349 00288000 BNE DASDDEVI NO DONT RECORD THIS ONE EITHER @VA10349 00289000 CL R7,RDEVCUA IS THIS THE PRIME DEV - CU @VA10349 00290000 BNE DASDDEVI NO FORGET IT @VA10349 00291000 TESTSDR ICM R15,15,RDEVCTRS PICK UP ADDRESS OF SDRBLOK @VA03757 00292000 * FOR POSSIBLE STATISTICAL DATA RECORDING 00293000 BNP NOCALL NO SDRBLOK, CONTINUE DEVICE LOOP @VA03757 00294000 CALL DMKIOESR GO RECORD OBR SYNCHRONOUSLY @VA03757 00295000 NOCALL EQU * @VA03757 00296000 CLC RDEVTYPC(2),P3800 IS THIS A 3800 ? @V60B9BA 00297000 BE NOCALL3 XFER IF SO @V60B9BA 00298000 NOCALL2 CLI RDEVTYPC,CLASDASD IS DEVICE CLASS DASDI @V60B9BA 00299000 BNE DASDDEVI NO, TRY NEXT DEVICE @VA03757 00300000 NOCALL3 XC IOBLOK(IOBSIZE*8),IOBLOK ZERO OUT IOBLOK @V60B9BA 00301000 ST R10,IOBLINK IOBLOK POINTS TO ITSELF (= @VA03757 00302000 * ORIGINAL COPY) 00303000 OI IOBSPEC,IOBIMSTK INDICATE SHUTDOWN @VA05361 00304000 CLC RDEVTYPC(2),P3800 IS THIS A 3800 ? @V60B9BA 00305000 BE NOCALL3A XFER IF SO @V60B9BA 00306000 CALL DMKDSBSD RECORD STATISTICAL DATA FOR DASD @VA08187 00307000 B DASDDEVI TRY NEXT DEVICE @V60B9BA 00308000 NOCALL3A CALL DMKRSESD RECORD STATISTICAL DATA FOR 3800@V60B9BA 00309000 SPACE 1 00310000 * THE DELAY PURGE QUEUE MUST NOW FINALLY BE PURGED @V60B9BA 00311000 SPACE 1 00312000 LR R9,R7 SAVE R7 FOR NOW @V60B9BA 00313000 TM RDEVSTAT,RDEVDED DEDICATED 3800? @VA10546 00314000 BO NOCALL5 YES, GO TO NEXT DEVICE @VA10546 00315000 NOCALL4 L R7,RDEVDELP GET THE DELAYED PURGE ANCHOR @V60B9BA 00316000 LTR R7,R7 ANYTHING THERE? @VA10546 00317000 BZ NOCALL5 XFER IF NOTHING THERE @V60B9BA 00318000 MVC RDEVDELP,0(R7) NEXT ONE IS NOW FIRST @V60B9BA 00319000 CALL DMKSPLDL GO AND DELETE IT @V60B9BA 00320000 B NOCALL4 DO FOR NEXT ONE ALSO @V60B9BA 00321000 NOCALL5 LR R7,R9 RESTORE R7 @V60B9BA 00322000 DASDDEVI BXLE R3,R4,DASDDEV @VA03757 00323000 LA R5,62 @VA03757 00324000 DASDCUI BXLE R2,R4,DASDCU @VA03757 00325000 LA R5,30 @VA03757 00326000 DASDCHI BXLE R1,R4,DASDCH @VA03757 00327000 EJECT 00328000 ************************************************************** 00329000 * * 00330000 * WHEN HERE - ALL DEVICES HAVE BEEN CHECKED * 00331000 * INDICATE 'CPCP' SHUTDOWN AND GOTO DMKDMPRS * 00332000 * * 00333000 ************************************************************** 00334000 SPACE 00335000 LA R0,IOBSIZE SIZE OF IOBLOK TO FRET @VA03757 00336000 LR R1,R10 FRET THE IOBLOK @VA03757 00337000 CALL DMKFRET @VA03757 00338000 DROP R6,R7,R8,R10 @VA03757 00339000 TM CPSBITS,APUOPER WAS THE APU OPERATIONAL ? @V407595 00340000 BNO NOAP2 NO- BYPASS SET PREFIX @V407595 00341000 SPX ZEROES END OF PREFIXING @V407595 00342000 NOAP2 EQU * @V407595 00343000 MVC CPID(4),=C'CPCP' INDICATE SHUTDOWN TO DMKCKP @VA03757 00344000 GOTO DMKDMPRS GOT TO IT @VA03757 00345000 SPACE 00345100 ERRMSG3 DS 0H HRC002DK 00345110 LA R2,3 HRC002DK 00345120 B ERRRET HRC002DK 00345130 ERRRET DS 0H HRC002DK 00345140 ICM R0,B'1110',DMKCPR+3 HRC002DK 00345150 ICM R2,B'1000',F0 HRC002DK 00345160 CALL DMKERMSG HRC002DK 00345170 EXIT DS 0H @VA12314 00345200 EXIT RETURN TO CALLER @VA12314 00345300 EJECT 00346000 ************************************************************** 00347000 * * 00348000 * DEFINE CONSTANT AND EQUATE POOL * 00349000 * * 00350000 ************************************************************** 00351000 SPACE 00352000 CMPPOFF CLC 0(0,R1),=C'POWEROFF ' HRC002DK 00352300 CMPREIPL CLC 0(0,R1),=C'REIPL ' HRC002DK 00352600 P3800 DC AL1(CLASURO,TYP3800) FOR COMPARISONS @V60B9BA 00353000 L4 EQU 4 LENGTH INDICATOR @V407595 00354000 EJECT 00355000 ************************************************************** 00356000 * * 00357000 * BEGIN LITERAL POOL * 00358000 * * 00359000 ************************************************************** 00360000 SPACE 00361000 LTORG @VA03757 00362000 EJECT 00363000 ************************************************************** 00364000 * * 00365000 * COPY PREDEFINED SOURCE CODING * 00366000 * * 00367000 ************************************************************** 00368000 SPACE 00369000 PSA @VA03757 00370000 COPY DEVTYPES @VA03757 00371000 COPY EQU @VA03757 00372000 COPY IOBLOKS @VA03757 00373000 COPY MONBLOKS @VA03757 00374000 COPY RBLOKS @VA03757 00375000 COPY SAVE @VA03757 00376000 SPACE 2 00377000 CPSBITS EQU SAVEWRK1 @V407466 00378000 SPACE 2 00379000 COPY VBLOKS @VA03757 00380000 COPY VMBLOK @VA03757 00381000 END 00382000