CKP TITLE 'DMKCKP (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000 *. 00003000 * REMEMBER TO RE-ASSEMBLE THIS MODULE. ACO COPY FILE HAS BEEN CHANGED 00004000 * 00005000 * MODULE NAME - 00006000 * 00007000 * DMKCKP 00008000 * 00009000 * FUNCTION - 00010000 * 00011000 * DMKCKP RETRIEVES ACCOUNTING DATA FROM VMBLOK, VDEVBLOK AND 00012000 * UNPUNCHED ACCOUNTING CARDS, ACCOUNTING INFORMATION FOR 00013000 * DEDICATED DEVICES, SAVE THE SYSTEM LOG MESSAGES, SAVE ALL 00014000 * CONTROL BLOCKS FOR SPOOL FILES FOR ACTIVE AND CLOSED. THE 00015000 * DATA IS WRITTEN ON THE SYSWARM CYLINDER OF THE I.P.L. PACK 00016000 * 00017000 * ATTRIBUTES - 00018000 * 00019000 * NON-REENTRANT, NON-RESIDENT, LOADED AND EXECUTED BY 00020000 * MODULE DMKDMP OR BY INIT PROGRAM LOAD 00021000 * 00022000 * ENTRY POINT - 00023000 * 00024000 * DMKCKPT - CHECK POINT 00025000 * 00026000 * ENTRY CONDITIONS - 00027000 * 00028000 * CPID = 'CPCP' OR 'WARM' OR 'XXXX' 00029000 * 00030000 * CPCP = WARM MACHINE AND SHUTDOWN ASSUMED 00031000 * WARM = WARM MACHINE AND AUTOMATIC RESTART REQUESTED 00032000 * XXXX = COLD MACHINE; NO CHECK POINT TAKEN 00033000 * 00034000 * EXIT CONDITIONS - 00035000 * 00036000 * CPID = 'SHUT' OR 'WRM' 00037000 * 00038000 * SHUT = CHECK POINT TAKEN AND SHUTDOWN COMPLETE 00039000 * WRM = CHECK POINT TAKEN AND AUTOMATIC RESTART REQUESTED 00040000 * 00041000 * CALLS TO OTHER ROUTINES - 00042000 * 00043000 * DMKSAVRS - RESTORE PROGRAM 00044000 * 00045000 EJECT 00046000 * EXTERNAL REFERENCES - 00047000 * 00048000 * DMKRSPAC - ACCOUNTING CHAIN ANCHOR 00049000 * DMKRSPHQ - SPOOL HOLD QUEUE CHAIN ANCHOR 00050000 * DMKRSPRD - READER FILE CHAIN ANCHOR 00051000 * DMKRSPPU - PUNCH FILE CHAIN ANCHOR 00052000 * DMKRSPPR - PRINTER FILE CHAIN ANCHOR 00053000 * DMKRSPID - SYSTEM SPOOL ID COUNTER 00054000 * DMKRSPDL - SYSTEM DELETE CHAIN ANCHOR 00055000 * DMKGRAWT - ADDRESS OF CONSOLE WRITE ROUTINE 00056000 * DMKSYSOW - ADDRESS OF SYSTEM OWNLIST 00057000 * DMKSYSOC - POINTER TO NUMBER OF ENTRIES 00058000 * DMKSYSTP - POINTER TO SYSRES DEVICE TYPE 00059000 * DMKSYSWM - ADDRESS OF WARMSTART CYLINDER 00060000 * DMKTMRPT - ADDRESS OF VMVTIME CONVERT ROUTINE 00061000 * DMKRSPCV - CHECK POINT-WARMSTART CYLINDER ID 00062000 * DMKSYSRM - ADDRESS OF REAL STORAGE SIZE 00063000 * 00064000 * TABLES / WORKAREAS - 00065000 * 00066000 * 00067000 * REGISTER USAGE - 00068000 * 00069000 * GPR5 = DMKRSPAC BASE 00070000 * GPR6 = RCHBLOK BASE 00071000 * GPR7 = RCUBLOK BASE 00072000 * GPR8 = RDEVBLOK BASE 00073000 * GPR11 = VMBLOK BASE 00074000 * GPR12 = BASE REGISTER 00075000 * GPR13 = BASE REGISTER FOR CKPBUFF DSECT 00076000 * 00077000 * NOTES - 00078000 * 00079000 * NONE 00080000 * 00081000 * OPERATION - 00082000 * 00083000 * 1. IF CPID = 'CPCP' OR 'WARM', GO TO STEP 2; 00084000 * OTHERWISE, MOVE 'COLD' TO CPID, GO TO STEP 10 00085000 * 2. HALT AND DRAIN ALL REAL DEVICES, SAVE THE REAL DEVICE 00086000 * ADDRESS OF ALL ENABLED TERMINALS. 00087000 * 2A.READ RECORD ONE OF WARMSTART CYLINDER AND 00088000 * COMPARE THE CLOCK VALUE WRITTEN BY DMKWRM 00089000 * (COLD OR WARM START) TO THE IN STORAGE VALUE 00090000 * SAVE BY DMKWRM AT DMKRSPCV; IF EQUAL GO TO STEP 00091000 * 3. OTHERWISE, GIVE MSG904W AND ENTER WAIT STATE 00092000 * CODE 007. 00093000 * 2B.WRITE OUT THE SAVED REAL DEVICE ADDRESSES OF ENABLED 00094000 * TERMINALS. 00095000 * 3. CALULATE AND SAVE ACCOUNTING INFORMATION FOR ALL 00096000 * CURRENT LOGGED ON USERS. SAVE CURRENT UNPUNCHED 00097000 * ACCOUNTING CARDS. (STARTING WITH DISK RECORD NUMBER TWO) 00098000 * 4. SAVE SYSTEM LOG MESSAGES, DATE AND TIME 00099000 * 5. SAVE SPOOL FILES CONTROL BLOCKS, ACTIVE AND CLOSED. 00100000 * SAVE THE FOLLOWING STATUS OF SPOOL DEVICES; (A) OFFLINE 00101000 * STATUS. (B) SEPARATOR OR NO-SEPARATOR STATUS. 00102000 * (C) DRAINED STATUS. SAVE THE CURRENT SYSTEM 00103000 * SPOOL ID COUNTER. 00104000 * IF THE SPOOL DEVICE HAPPENS TO BE A 3800 PRINTER, 00105000 * WRITE A SPECIAL DUMMY BLOCK ON THE WARM START CYLINDER 00106000 * WHICH CONTAINS THE CURRENT VALUE OF THE IMAGE LIBRARY 00107000 * TO USE AND THE CONTROL TABLES TO USE FOR THE 00108000 * SEPARATOR PAGE. IN ADDITION, IF TRANSFER ALL SPOOL 00109000 * FILES FROM THE 3800'S DELAYED PURGE QUEUE ONTO THE 00110000 * SPOOL FILE DELETE QUEUE WHICH GETS CHECKPOINTED LATER. 00111000 * 6. SAVE SPOOL RECORD ALLOCATION BLOCKS 00112000 * 7. SAVE SPOOL HOLD QUEUE BLOCKS AND WRITE DISK RECORD 00113000 * NUMBER ONE - CONTAINING A DELIMITER RECORD FOLLOWED 00114000 * BY A 'FE' RECORD 00115000 * 8. IF CPID = 'CPCP', ISSUE MESSAGES DMKCKP960I AND 00116000 * DMKCKP961W TO THE SYSTEM OPERATOR AND ENTER DISABLED 00117000 * WAIT STATE. CODE 008 00118000 EJECT 00119000 * 9. MOVE 'WRM' TO CPID 00120000 * 10. LOAD DMKSAVRS AND EXIT TO DMKSAVRS. 00121000 * 11. IF PROGRAM CHECK OR MACHINE CHECK OR FATAL I/O ERROR OR 00122000 * INVALID WARM START DATA OR INVALID WARM START CYL OR 00123000 * WARM START AREA FULL, SEND MESSAGE DMKCKP900W OR 00124000 * DMKCKP901W OR DMKCKP902W OR DMKCKP904 OR DMKCKP910W OR 00125000 * DMKCKP911W RESPECTIVELY AND ENTER DISABLE WAIT STATE. 00126000 * (WAIT STATE CODE 009) 00127000 * 12. CHECK POINT RECORDS ARE 4K IN LENGTH AND CONTAIN 00128000 * VARIABLE LENGTH LOGICAL RECORDS. A DELIMITER 00129000 * RECORD SEPARATES RECORD TYPES AND SIZES. 00130000 * A DELIMITER RECORD IS THE SAME SIZE AS DATA RECORDS 00131000 * AND CONTAINS ALL X'FF' EXCEPT FOR BYTES 9 TO 16. 00132000 * THESE 8 BYTES CONTAIN A UNIQUE NUMBER AND RECORD COUNT. 00133000 * THE FIRST CKECK POINT LOGICAL RECORD IS A DELIMITER 00134000 * RECORD. THE LAST LOGICAL RECORD IN A BUFFER 00135000 * IS A 8 BYTE RECORD (X'FE'). THE FIRST LOGICAL 00136000 * OF EACH BUFFER EXCEPT THE FIRST IS A DELIMITER RECORD 00137000 * WITH THE FIRST 8 BYTES X'EE'. 00138000 * 00139000 * RESPONSE - 00140000 * 00141000 * DMKCKP960I SYSTEM WARM START DATA SAVED 00142000 * DMKCKP961W SYSTEM SHUTDOWN COMPLETE 00143000 * 00144000 * DISABLE WAIT STATE (CODE 008) 00145000 * 00146000 * ERROR MESSAGES - 00147000 * 00148000 * DMKCKP900W SYSTEM RECOVERY FAILURE; PROGRAM CHECK 00149000 * DMKCKP901W SYSTEM RECOVERY FAILURE; MACHINE CHECK, RUN SEREP 00150000 * DMKCKP902W SYSTEM RECOVERY FAILURE; FATAL I/O ERROR-NUCL CYL 00151000 * DMKCKP902W SYSTEM RECOVERY FAILURE; FATAL I/O ERROR-WARM CYL 00152000 * DMKCKP922W SYSTEM RECOVERY FAILURE; INVALID SPOOLING DATA 00153000 * DMKCKP910W SYSTEM RECOVERY FAILURE; INVALID WARM START CYL 00154000 * DMKCKP911W SYSTEM RECOVERY FAILURE; WARM START AREA FULL 00155000 * 00156000 * DISABLE WAIT STATE (CODE 007) 00157000 * 00158000 *. 00159000 SPACE 3 00160000 EJECT 00161000 COPY OPTIONS 00162000 SPACE 3 00163000 COPY LOCAL OPTIONS 00164000 SPACE 2 00165000 PUNCH 'SPB' TELL LOADER TO START AT NEXT PAGE 00166000 * BOUNDARY 00167000 DMKCKP CSECT 00168000 SPACE 00169000 ENTRY DMKCKPT,DMKCKPST,DMKCKPRS @V200820 00170000 ENTRY DMKCKPLD @V407429 00171000 SPACE 00172000 EXTRN DMKSAV,DMKSAVRS 00173000 SPACE 3 00174000 USING PSA,R0 00175000 USING ACNTBLOK,R4 00176000 USING RCHBLOK,R6 00177000 USING RCUBLOK,R7 00178000 USING RDEVBLOK,R8 00179000 USING SYSLOCS,R10 00180000 USING VMBLOK,R11 00181000 USING DMKCKPT,R12,R13 @V407429 00182000 SPACE 3 00183000 EJECT 00184000 DMKCKPT DS 0H 00185000 LM R12,R13,CKPBASE LOAD BASE REGS @V407429 00186000 B CKP001 00187000 ERRORMSG DC A(MSG900-DMKCKP+X'800') ERROR MESSAGE ADDRESS @V2A2029 00188000 ORG DMKCKPT+14 ORIGIN NAME ADDRESS FOR DMKDDR @V2A2029 00189000 ID DC CL8'DMKCKP' MODULE NAME 00190000 SPACE 00191000 ORG DMKCKPT+22 ORIGIN NUC CYL ADDRESS FOR DMKDDR@V2A2029 00192000 DMKCKPST DC XL2'00' CYLINDER ADDRESS OF THE FIRST NUCLEUS CYL 00193000 DC XL2'00' CYLINDER ADDRESS OF THE LAST NUCLEUS CYL 00194000 SPACE 00195000 DS 0F @V2A2029 00196000 DMKCKPRS DC XL8'00' BBCCHHR OF THE DMKSAV ON DISK @V2A2029 00197000 DMKCKPLD DC XL8'00' BBCCHRR OF DMKCKP PAGE 2 @V407429 00198000 SEEK DC H'0' BB CURRENT SEEK ADDRESS @V2A2029 00199000 DC H'0' CC CYLINDER @V2A2029 00200000 HEAD DC H'0' HH HEAD @V2A2029 00201000 REC DC X'0100' R RECORD @V2A2029 00202000 BASEREGS DC A(X'800') DMKCKP BASE ADDRESS @V2A2029 00203000 DC A(X'1800') 2ND BASE REG ADDRESS @V407429 00204000 TERMBUFF DC A(RECBUFF-DMKCKP+X'1800') TERMBUFF ADDRESS @V407429 00205000 SPACE 00206000 CKP001 DS 0H 00207000 LH R0,INTTIO GET SYS IPL ADDRESS 00208000 ST R0,SYSRES SAVE 00209000 MVC PRNPSW(8),WAIT17 SET PROGRAM NEW PSW @VA09017 00210100 MVC MCNPSW(8),WAIT7 SET UP MACHINE NEW PSW @V407429 00211000 SLR R1,R1 .. @V2A2029 00212000 ST R1,IPLPSW+4 CLEAR RESTART PSW @V2A2029 00213000 LA R0,LDCCW GET ADDRESS OF CCWS @V407429 00214000 LA R3,DMKCKPLD DMKCKP PAGE 2 SEEK ADDR @V56BDA8 00215000 STCM R3,B'0111',READHAR0+1 STORE IN CASE TCC @V56BDA8 00216000 LA R3,LDSRCH SEARCH CCW IN CASE OF @V56BDA8 00217000 STCM R3,B'0111',ALTTIC+1 ALTERNATE TRACK @V56BDA8 00218000 B CKPLDRT GO LOAD PAGE 2 @V407429 00219000 DONE BAL R14,CLOSE WRITE OUT BUFFER TO WRM CYL @V407429 00220000 MVC SEEK+2(2),CYLSTART FIRST WARMSTART CYLINDER @V407429 00221000 MVC HEAD(4),=X'00000100' SET HEAD ZERO AND RECORD @V407429 00222000 * ONE 00223000 MVI DSK05,X'06' SET CCW TO READ DATA @V407429 00224000 BAL R14,RDWR READ RECORD ONE FROM 1ST WRM CYL @V407429 00225000 MVI DSK05,X'05' SET CCW TO WRITE DATA @V407429 00226000 MVC BUFFCV(8),DMKRSPCV SET CLOCK VALUE IN CASE OF @V407429 00227000 * ERROR 00228000 MVC BUFFDLM(8),X8FF INDICATE CHECK POINT VALID @V407429 00229000 MVI BUFFVER,VERR6 MAKE IT TO BE RELEASE 6 VERSION @VA12228 00229500 BAL R14,RDWR WRITE RECORD ONE TO INDICATE @V407429 00230000 * VALID WARM START DATA 00231000 SPACE 00232000 CLC CPID(4),=C'CPCP' SHUTDOWN ??? @V407429 00233000 BE SHUTSYS YES - GO DO IT @VA09276 00234200 MVC CPID(4),=C'WRM ' INDICATE AUTOMATIC WARM START @VA09276 00234400 MVC IPLPSW(8),WAIT16 LOAD RESTART PSW - WARM START @VA09276 00234600 * DATA SAVED 00234800 B WARM GO WARM START @VA09276 00235000 ************************************** 00236000 * 00237000 * SYSTEM SHUTDOWN 00238000 * 00239000 **************************************** 00240000 SPACE 00241000 SHUTSYS LA R3,SHUTCCW SHUDOWN COMPLETE MESSAGE @V407429 00242000 MVC CPID(4),CSHUT INDICATE SHUTDOWN COMPLETE @V407429 00243000 MVI SWAITSW+1,X'00' INDICATE SHUT @V407429 00244000 CHKCNSL LA R2,ALARM ALARM OPTION FOR MESSAGE @V407429 00245000 LA R1,OPRPROG PROGRAM RETURN ADDRESS @V407429 00246000 ST R1,PRNPSW+4 SET UP NEW PROGRAM PSW @V407429 00247000 CONSLP EQU * WRITE MESSAGES TO THE OPERATOR @V407429 00248000 SR R0,R0 CLEAR MESSAGE LENGTH REG @V407429 00249000 SR R1,R1 CLEAR MESSAGE ADDRESS REG @V407429 00250000 * REG 3 POINTS MESSAGE ADDRESS LIST 00251000 ICM R1,B'0111',1(R3) GET ADDRESS OF MESSAGE @V407429 00252000 BZ SWAITSW BRANCH IF END OF LIST @V407429 00253000 IC R0,0(R3) GET MESSAGE LENGTH @V407429 00254000 L R15,DMKOPRWT ENTRY TO CONSOLE WRITE ROUTINE @V407429 00255000 BALR R14,R15 ... @V407429 00256000 BC 1,SWAITSW BRANCH IF DEVICE NOT FOUND @V407429 00257000 SR R2,R2 CLEAR PARM REG @V407429 00258000 LA R3,4(R3) POINT TO NEXT MESSAGE IN LIST @V407429 00259000 ICM R4,B'1111',4(R3) IS THIS THE LAST MESSAGE ? @V407429 00260000 BZ CHKCNSL YES -- ADD ALARM TO PARM REG @V407429 00261000 B CONSLP GO SET UP REGS FOR NEXT MESSAGE @V407429 00262000 SPACE 00263000 OPRPROG LM R12,R13,CKPBASE RELOAD BASE REGS @V407429 00264000 SWAITSW B ERRWAIT BRANCH IF ERROR @V407429 00265000 TM CPSTAT4,CPREIPL Was SHUTDOWN REIPL in prog? HRC076DK 00265010 BO REIPL Yes HRC076DK 00265020 TM CPSTAT4,CPPWROFF HRC002DK 00265100 BZ WAITNOW HRC002DK 00265200 NI CPSTAT4,255-CPPWROFF HRC002DK 00265300 MVC PRNPSW(8),WAIT8 HRC002DK 00265400 LM R2,R3,POWEROFF HRC002DK 00265500 DC X'8323001F' HRC002DK 00265600 WAITNOW EQU * HRC002DK 00265700 LPSW WAIT8 DISABLE WAIT (CODE 008) @V407429 00266000 POWEROFF DS 0D HRC002DK 00266300 DC C'POWEROFF' HRC002DK 00266600 * SHUTDOWN COMPLETE 00267000 ERRWAIT LM R0,R15,CKPSAVE RESTORE GPRS TO TIME OF TROUBLE @V407429 00268000 MVC 184(4),SAVEDEV RESTORE DEVICE INTERRUPT ADDRESS @V407429 00269000 MVC CSW(12),SAVECSW RESTORE CSW AND CAW @V407429 00270000 MVC 16(24,R0),SENSDATA SENSE DATA TO LOW STORAGE @V407429 00271000 MVC 136(8),SAVECODE RESTORE INTERRUPT CODES @V407429 00272000 LPSW WAIT7 DISABLE WAIT STATE (CODE 007) @V407429 00273000 * ERROR CONDITION 00274000 * HRC076DK 00274100 REIPL EQU * Here for SHUTDOWN REIPL HRC076DK 00274130 NI CPSTAT4,255-CPREIPL Turn off REIPL flag HRC076DK 00274160 MVC CPID,=C'WARM' Indicate warm start HRC076DK 00274190 XC CSW,CSW Clear prior CSW HRC076DK 00274220 LA R2,WAIT8 -> shutdown complete PSW HRC076DK 00274250 LA R1,READIPL -> IPL CCW string HRC076DK 00274280 ST R1,CAW Set its address in the CAW HRC076DK 00274310 LH R1,SYSIPLDV Get the IPL device address HRC076DK 00274340 STH R1,INTTIO Place as i/o interrupt code HRC076DK 00274370 SIO 0(R1) Issue the read ipl CCW HRC076DK 00274400 BC 4,LOADCK CSW stored; check status HRC076DK 00274430 BC 7,IPLLOAD Error on SIO, load wait PSW HRC076DK 00274460 TIO 0(R1) Loop for i/o completion HRC076DK 00274490 BC 7,*-4 Keep trying HRC076DK 00274520 * HRC076DK 00274550 LOADCK EQU * HRC076DK 00274580 CLI CSW+4,X'0C' CE+DE from i/o operation? HRC076DK 00274610 BNE IPLLOAD No, error. Load WAIT8 PSW HRC076DK 00274640 LA R2,IPLPSW Good read; -> IPL PSW HRC076DK 00274670 * HRC076DK 00274700 IPLLOAD EQU * HRC076DK 00274730 LPSW 0(R2) Load WAIT8 PSW or IPL PSW HRC076DK 00274760 * HRC076DK 00274790 READIPL CCW X'02',X'000000',X'60',24 READ IPL HRC076DK 00274820 CCW X'08',X'000008',0,0 TIC to IPL record CCWs HRC076DK 00274850 * 00275000 DS 0F @V407429 00276000 SHUTCCW DC AL1(1),AL3(MSGBLK-DMKCKP+X'800') @V407429 00277000 DC AL1(1),AL3(MSGBLK-DMKCKP+X'800') @V407429 00278000 DC AL1(MSG960L),AL3(MSG960-DMKCKP+X'800') @V407429 00279000 DC AL1(1),AL3(MSGBLK-DMKCKP+X'800') @V407429 00280000 DC AL1(MSG961L),AL3(MSG961-DMKCKP+X'800') @V407429 00281000 DC AL1(1),AL3(MSGBLK-DMKCKP+X'800') @V407429 00282000 DC A(0) @V407429 00283000 * 00284000 MSG960 DC C'DMKCKP960I System' HRC028DK 00285490 MSGBLK DC C' ' @V407429 00286000 CWARM DC C'WARM START ' @V407429 00287000 CDATA DC C'data saved' HRC028DK 00288490 MSG960L EQU *-MSG960 @V407429 00289000 * 00290000 MSG961 DC C'DMKCKP961W System ' HRC028DK 00291590 CSHUT DC C'Shutdown Complete' HRC028DK 00292180 MSG961L EQU *-MSG961 @V407429 00293000 * 00294000 * READ DMKSAVCP DMKSAVRS PROGRAM INTO CORE 00295000 * THEN GO TO DMKSAVRS 00296000 COLD MVC CPID(4),=C'COLD' INDICATE COLD START @V407429 00297000 WARM LA R0,RESTCCW ADDRESS OF DISK CCW @V407429 00298000 LA R3,DMKCKPRS DMKSAV SEEK ADDRESS @V56BDA8 00299000 STCM R3,B'0111',READHAR0+1 STORE IN CASE TCC @V56BDA8 00300000 LA R3,RESTSRCH SEARCH CCW @V56BDA8 00301000 STCM R3,B'0111',ALTTIC+1 IN CASE OF ALTERNATE TRACK @V56BDA8 00302000 CKPLDRT LA R14,100 RETRY COUNT @V56BDA8 00303000 L R2,SYSRES GET IPL DEVICE ADDRESS @V407429 00304000 TIOSYS ST R0,CAW SET UP CAW @V407429 00305000 TIOSYS1 EQU * @V56BDA8 00306000 TIO 0(R2) CLEAR DEVICE @V407429 00307000 BNZ *-4 @V407429 00308000 SIO 0(R2) START @V407429 00309000 BNZ TIOSYS CLEAR DEVICE AGAIN @V407429 00310000 TIO 0(R2) TEST @V407429 00311000 BC 6,*-4 LOOP IF BUSY OR STATUS STORED @V407429 00312000 CLC CSW+4(2),=AL1(CE+DE,0) SUCCESSFULL READ @V407429 00313000 BNE SAVESTAT NO - SAVE STATUS @V407429 00314000 TM FLAG,CKPLD CKP PAGE 2 LOADED ? @V407429 00315000 BO SAVERD YES - @V407429 00316000 OI FLAG,CKPLD INDICATE CKP PAGE 2 LOADED @V407429 00317000 B CKP002 GO CHECKPOINT ROUTNINE @V407429 00318000 SAVESTAT MVC SAVEDEV(4),184 SAVE DEVICE ADDRESS @V407429 00319000 MVC SAVECSW(12),CSW SAVE CSW AND CAW @V407429 00320000 LA R3,SNSECCW ADDRESS OF SENSE CCW @V407429 00321000 ST R3,CAW SET UP CAW @V407429 00322000 TIO 0(R2) CLEAR IT @V407429 00323000 BC 6,*-4 LOOP IF BUSY OR STATUS STORED @V407429 00324000 SIO 0(R2) START IO (SENSE) @V407429 00325000 TIO 0(R2) TEST IO @V407429 00326000 BC 6,*-4 LOOP IF BUSY OR STATUS STORED @V407429 00327000 TM SENSDATA,TRKCONCK TRACK CONDITION CHECK? @V56BDA8 00328000 BZ COUNTERR NO, RETRY @V56BDA8 00329000 MVC CAW+1(3),=AL3(READHAR0-DMKCKP+X'800') @V56BDA8 00330000 TIO 0(R2) DRAIN ANYTHING PENDING @V56BDA8 00331000 BC 7,*-4 KEEP TRYING @V56BDA8 00332000 SIO 0(R2) READ R0 @V56BDA8 00333000 BC 7,*-4 TAKE ERROR PATH @V56BDA8 00334000 TIO 0(R2) TEST FOR COMPLETION @V56BDA8 00335000 BC 7,*-4 TRY AGAIN @V56BDA8 00336000 CLC CSW+4(2),=AL1(CE+DE,0) CLEAN END? @V56BDA8 00337000 BNE COUNTERR NO, ERROR @V56BDA8 00338000 MVC CAW+1(3),=AL3(ALTSEEK-DMKCKP+X'800') @V56BDA8 00339000 BCT R14,TIOSYS1 RESTART ON ALTERNATE TRACK @V56BDA8 00340000 B TESTP2 CHECK FOR PAGE 2 LOADED @V56BDA8 00341000 SPACE 1 00342000 COUNTERR EQU * @V56BDA8 00343000 BCT R14,TIOSYS RETRY 100 TIMES @V56BDA8 00344000 TESTP2 EQU * @V56BDA8 00345000 TM FLAG,CKPLD LOADING CKP PAGE2 OR SAV ? @V407429 00346000 BO RESTAUT BRANCH - LOADING DMKSAV @V407429 00347000 * 00348000 LPSW WAIT17 WAIT - ERROR READING CKP PAGE 2 @VA09017 00349100 * 00350000 RESTAUT MVC CPID(4),CSHUT OVERRIDE WARM IF AUTO RESTART @V407429 00351000 B MSG902N FATAL IO ERROR ON NUCLEUS CYL @V407429 00352000 SAVERD EQU * HRC075DK 00353000 L R10,SYSRES Get addr of the IPL devive HRC075DK 00353500 GOTO DMKSAVRS START SYSTEM RE-IPL @V407429 00354000 EJECT 00355000 ******************************************** 00356000 * 00357000 * ERROR RECOVERY ROUTINE 00358000 * 00359000 ******************************************** 00360000 SPACE 00361000 MSG902N EQU * HERE ON NUCLEUS CYLINDER ERROR @V407429 00362000 MVC MSGDATA+16(9),=C'NUCL CYL' @V407429 00363000 B MSG902 .. @V407429 00364000 SPACE 00365000 DSKBWAIT MVC IONPSW(8),SIOINTP SET UP INT PSW @V407429 00366000 BCT R0,WAITI WAIT FOR CHANNEL TO CLEAR @V407429 00367000 SPACE 00368000 MSG902W EQU * HERE ON I/O ERROR-WARM START CYL @V407429 00369000 MVC MSGDATA+16(9),=C'WARM CYL' @V407429 00370000 MSG902 MVC MSGDATA(16),=C'FATAL I/O ERROR-' @V407429 00371000 MVI MSGNUM2,C'2' SET MSG 902W @V407429 00372000 * 00373000 B CHKERR PRINT ERROR MESSAGE @V407429 00374000 * 00375000 DSKSTOR TM CSW+4,BUSY DE PENDING IN DEVICE ? @V407429 00376000 BZ DSKSNS NO - @V407429 00377000 TM CSW+4,CE+DE+ATTN+CUE ENDING STATUS ? @V407429 00378000 BNZ DSKSIO BRANCH IF ENDING STATUS @V407429 00379000 B DSKBWAIT INTERRUPT PENDING - WAIT FOR IT @V407429 00380000 * 00381000 *** RECOVERY FAILURE 00382000 * 00383000 MSG900W EQU * HERE ON PROGRAM CHECK @V407429 00384000 LM R12,R13,CKPBASE RESTORE BASE REGS @V407429 00385000 TM ACNTSW,X'20' DOING ACNT CALCULATIONS ? @V407429 00386000 BZ CHKERR NO -- REAL PROGRAM CHECK @V407429 00387000 CLI INTPR+1,X'09' FIXED POINT DIVIDE ? @V407429 00388000 BE 8(R5) YES - RETURN ON R5 PLUS 8 @V407429 00389000 CHKERR EQU * HERE IF RECOVERY ERROR FAILURE @V407429 00390000 MVC SAVECODE(8),136 LAST PROGRAM CHECK INT CODE @V407429 00391000 MVC SAVEPSW(8),PROPSW SAVE PROGRAM OLD PSW @V407429 00392000 STM R0,R15,CKPSAVE SAVE ALL REGISTERS @V407429 00393000 LA R3,OPRPROG ADDRESS OF PROGRAM CHECK RETURN @V407429 00394000 ST R3,PRNPSW+4 SET NEW PROGRAM PSW ADDRESS @V407429 00395000 LA R3,ERRCCW ERROR MSG LIST ADDRESS @V407429 00396000 CLC CPID(4),=C'CPCP' WARM MACHINE ?? @V407429 00397000 BE WARMMCH YES - @V407429 00398000 CLC CPID(4),CWARM WARM MACHINE ?? @V407429 00399000 BNE CHKCNSL NO - WRITE ERROR MESSAGE @V407429 00400000 MVC CPID(4),=C'CPID' FORCE SHUTDOWN MODE @V407429 00401000 WARMMCH L R4,ARSPPR ADDRESSS OF DMKRSPPR LIST @V407429 00402000 SL R4,=F'4' ADJUST TO START OF LIST @V407429 00403000 MVC 0(LISTSIZE,R4),RSPLIST MOVE IN MODIFIED LIST @V407429 00404000 B CHKCNSL OUTPUT @V407429 00405000 * 00406000 MSG901W EQU * HERE ON MACHINE CHECK @V407429 00407000 MVC MSGDATA(24),=C'MACHINE CHECK, RUN SEREP' @V407429 00408000 MVI MSGNUM2,C'1' SET MSG NUMBER 901W @V407429 00409000 B CHKERR OUTPUT MSG @V407429 00410000 SPACE 00411000 MSG922W EQU * HERE IF IVVALID WARM START DATA @V407429 00412000 MVC MSGNUM1(2),=C'22' SET MSG 922W @V407429 00413000 MVC MSGDATA(24),=C'INVALID SPOOLING DATA ' @V407429 00414000 B CHKERR OUTPUT MESSAGE @V407429 00415000 SPACE 00416000 MSG910W EQU * INVALID WARM START CYLINDER @V407429 00417000 MVC MSGDATA(22),CINVAL @V407429 00418000 SETNUM1 MVI MSGNUM1,C'1' SET MSG 910W @V407429 00419000 B CHKERR OUTPUT MESSAGE @V407429 00420000 SPACE 00421000 MSG911W EQU * WARM START AREA FULL @V407429 00422000 MVI MSGNUM2,C'1' SET MSG 911W @V407429 00423000 MVC MSGDATA(11),CWRMCYL .. @V407429 00424000 MVC MSGDATA+11(9),CAREA @V407429 00425000 B SETNUM1 FINISH 911 MESSAGE @V407429 00426000 SPACE 00427000 EJECT 00428000 ******************************************************************** 00429000 * 00430000 * CONSTANTS 00431000 * 00432000 ******************************************************************** 00433000 SPACE 00434000 DS 0F @V407429 00435000 ERRCCW DC AL1(1),AL3(MSGBLK-DMKCKP+X'800') @V407429 00436000 DC AL1(1),AL3(MSGBLK-DMKCKP+X'800') @V407429 00437000 DC AL1(1),AL3(MSGBLK-DMKCKP+X'800') @V407429 00438000 DC AL1(MSG900L),AL3(MSG900-DMKCKP+X'800') @V407429 00439000 DC AL1(1),AL3(MSGBLK-DMKCKP+X'800') @V407429 00440000 DC AL1(1),AL3(MSGBLK-DMKCKP+X'800') @V407429 00441000 DC A(0) @V407429 00442000 * 00443000 MSG900 DC C'DMKCKP9' @V407429 00444000 MSGNUM1 DC C'0' @V407429 00445000 MSGNUM2 DC C'0W System Recovery failure; ' HRC028DK 00446590 MSGDATA DC CL24'Program Check' HRC028DK 00447180 MSG900L EQU *-MSG900 @V407429 00448000 * 00449000 CINVAL DC C'Invalid ' HRC028DK 00450490 CWRMCYL DC C'WARM START ' @V407429 00451000 CCYL DC C'CYL' @V407429 00452000 CAREA DC C'area full' HRC028DK 00453490 * 00454000 CKPBASE EQU BASEREGS-DMKCKP+X'800' @V407429 00455000 * 00456000 DSKCCW CCW X'07',SEEK-DMKCKP+X'800',CC,6 @V407429 00457000 DISKSRCH EQU * RESUME POINT AFTER ALTERNATE SEEK@V56BDA8 00458000 CCW X'31',SEEK+2-DMKCKP+X'800',CC,5 @V407429 00459000 CCW X'08',*-8-DMKCKP+X'800',0,0 @V407429 00460000 DSK05 CCW X'06',RECBUFF-DMKCKP+X'800',SILI+CC,4096 @V407429 00461000 CCW 4,0,SILI+SKIP,1 @V407429 00462000 * 00463000 RESTCCW CCW 7,DMKCKPRS-DMKCKP+X'800',CC,6 @V407429 00464000 RESTSRCH EQU * RESUME POINT AFTER ALTERNATE SEEK@V56BDA8 00465000 CCW 49,DMKCKPRS+2-DMKCKP+X'800',CC,5 @V407429 00466000 CCW 8,*-8-DMKCKP+X'800',0,0 @V407429 00467000 CCW 6,DMKSAV,CC+SILI,4096 @V407429 00468000 CCW 4,0,SILI+SKIP,1 @V407429 00469000 SPACE 00470000 * 00471000 LDCCW CCW 7,DMKCKPLD-DMKCKP+X'800',CC,6 @V407429 00472000 LDSRCH EQU * RESUME POINT AFTER ALTERNATE SEEK@V56BDA8 00473000 CCW 49,DMKCKPLD+2-DMKCKP+X'800',CC,5 @V407429 00474000 CCW 8,*-8-DMKCKP+X'800',0,0 @V407429 00475000 CCW 6,0+X'1800',CC+SILI,4096 @V407429 00476000 CCW 4,0,SILI+SKIP,1 @V407429 00477000 SPACE 00478000 SNSECCW CCW 4,SENSDATA-DMKCKP+X'800',SILI,24 SENSE CCW @V407429 00479000 SPACE 1 00480000 READHAR0 CCW 07,0,CC,6 @V56BDA8 00481000 CCW 26,0,CC+SILI+SKIP,5 VALTERN @V56BDA8 00482000 CCW 22,ALTR0ADD-DMKCKP+X'800',SILI,4 @V56BDA8 00483000 ALTSEEK CCW 07,ALTSKADD-DMKCKP+X'800',CC+SILI,6 @V56BDA8 00484000 ALTTIC CCW 08,DISKSRCH-DMKCKP+X'800',0,0 @V56BDA8 00485000 ALTSKADD DC XL2'0' BB @V56BDA8 00486000 ALTR0ADD DS XL4 CCHH FROM RECORD 0 COUNT @V56BDA8 00487000 SUSPEND CCW X'87',SUSPORD-DMKCKP+X'800',CC,4 EXEC MSC ORDER @V407438 00488000 CCW X'03',0,SILI,1 MUST BE CHAINED TO A NOP @V407438 00489000 SUSPORD DC AL1(X'22',0,B'10000000',0) SUSPEND, IMMEDIATE @V407438 00490000 DS 0D @V407429 00491000 SIOINTP DC X'000C0000' @V407429 00492000 DC A(DSKSIO-DMKCKP+X'800') @V407429 00493000 * 00494000 CHKPINT DC X'000C0000' @V407429 00495000 DC A(MSG900W-DMKCKP+X'800') @V407429 00496000 * 00497000 CHKPMCK DC X'000C0000' @V407429 00498000 DC A(MSG901W-DMKCKP+X'800') @V407429 00499000 * 00500000 DC X'000C0000' NEW IO PSW @V407429 00501000 DC A(CHKIOINT-DMKCKP+X'800') @V407429 00502000 * 00503000 ENABLE EQU * @V407429 00504000 IWAIT DC X'020E0000' @V407429 00505000 DC A(0) @V407429 00506000 * 00507000 DISABLE EQU * @V407429 00508000 IOINTP DC X'000C0000' @V407429 00509000 DC A(IOINT-DMKCKP+X'800') @V407429 00510000 * 00511000 WAIT7 DC X'000A0000' PROGRAM OR DISK ERROR @V407429 00512000 DC X'00000007' DISABLE WAIT STATE (CODE 007) @V407429 00513000 * 00514000 WAIT8 DC X'000A0000' SHUTDOWN COMPLETE @V407429 00515000 DC X'00000008' DISABLE WAIT STATE (CODE 008) @V407429 00516000 * 00517000 WAIT16 DC X'000A0000' WARM START DATA SAVED-RESTART @VA09276 00517500 DC X'00000016' DISABLE WAIT STATE ( CODE 16 ) @VA09276 00517600 WAIT17 DC X'000A0000' ERROR LOADING CKP PAGE 2 @VA09017 00518100 DC X'00000017' DISABLE WAIT STATE (CODE 17) @VA09017 00519100 * 00520000 SYSRES DC F'0' ADDRESS OF SYSRES DEVICE @V407429 00521000 FLAG DC X'00' FLAG BYTE @V407429 00522000 CKPLD EQU X'80' DMKCKP PAGE 2 LOADED @V407429 00523000 CKPMDL EQU X'40' INDICATE MONITOR FILE COPY EXISTS @V50A2B5 00524000 TRKCONCK EQU X'02' TRACK CONDITION CHECK @V56BDA8 00525000 SPACE 00526000 HDTABLE DS 0H TABLE OF HEAD NUMBERS FOR @V407429 00527000 * 2314,2319 00528000 * FOR PAGE TO HEAD CONVERSION 00529000 PRINT DATA @V407429 00530000 DC AL1(00,00,01,01,02,03,03,04) @V407429 00531000 DC AL1(05,05,06,06,07,08,08,09) @V407429 00532000 DC AL1(10,10,11,11,12,13,13,14) @V407429 00533000 DC AL1(15,15,16,16,17,18,18,19) @V407429 00534000 PRINT NODATA @V407429 00535000 SPACE 00536000 LTORG @V407429 00537000 EJECT 00538000 DS 0H @V407429 00539000 CKP002 EQU * @V407429 00540000 XC CLR1(CLR1SIZE),CLR1 CLEAR SAVE AND WORK AREA @V407429 00541000 MVC PRNPSW(24),CHKPINT PROG,MACHINE,I/O PSWS @V407429 00542000 L R14,TERMBUFF GET ADDRESS OF TERM BUFFER @V407429 00543000 MVI DLMREC,X'FF' SET DLMREC TO FFS @V2A2029 00544000 MVC DLMREC+1(CLRFSIZE-1),DLMREC .. @V2A2029 00545000 LCTL C2,C3,X8FF ENABLE ALL CHANNELS @V2A2029 00546000 LCTL C0,C0,CPCREG0 RESET CONTROL REG 0 @VA03413 00547000 CLC CPID(4),=C'CPCP' SHUTDOWN REQUESTED ?? 00548000 BE GETLIST YES - GET RSP LIST @V2A2029 00549000 CLC CPID(4),CWARM WARM MACHINE ?? @V2A2029 00550000 BNE COLD NO, COLD MACHINE ... GET OUT 00551000 GETLIST L R1,ARSPPR ADDRESS OF LIST IN DMKRSP @V2A2029 00552000 S R1,=F'4' ADJUST TO START OF DMKRSPPR LIST 00553000 MVC RSPLIST(LISTSIZE),0(R1) MOVE LIST OF POINTERS TO DMKCKP 00554000 L R1,DMKSYSRM GET POINTER TO REAL STORAGE SIZE @VA02884 00555000 MVC STORSIZE,0(R1) SAVE SIZE OF REAL MACHINE @VA02884 00556000 L R1,DMKSYSWM -> WRM area cyls info HRC075DK 00557000 MVC TYPE(1),7(R1) Save device type of WRM HRC075DK 00558000 LA R1,1 SET RECORD COUNTER 00559000 STH R1,RECCNT .. 00560000 SPACE 00561000 * DRAIN ALL INTERRUPTS SO THAT ANY PENDING UC STATUS 00562000 * WILL GET SENSED. ENABLING FOR INTS CAUSES THE CHKIOINT 00563000 * ROUTINE TO GAIN CONTROL. IF UC STATUS IS PRESENT, A 00564000 * SENSE WILL BE ISSUED FOR IT. IN ANY CASE THE SYSTEM 00565000 * IS EVENTUALLY RETURNED TO ITS PRE-INTERRUPT STATE VIA 00566000 * LPSW FROM I/O OLD PSW, WHICH IS ENABLED, THUS CAUSING 00567000 * THE NEXT PENDING INTERRUPT TO BE TAKEN. THIS CONTINUES 00568000 * UNTIL THERE ARE NO MORE PENDING INTERRUPTS AND WE RETURN 00569000 * BELOW TO DO THE DISABLE. 00570000 SPACE 00571000 SSM ENABLE DRAIN PENDING INTS, ENABLE SYS @V407438 00572000 SSM DISABLE ALL INTS DRAINED, DISABLE @V407438 00573000 LA R4,2 LENGTH OF ONE INDEX ENTRY 00574000 LA R5,30 DISPLACEMENT OF LAST INDEX ENTRY 00575000 * IN BLOK 00576000 L R9,ARIOCT POINT TO START OF CHANNEL INDEX 00577000 L R1,ARIOCC POINT TO REAL CHANNEL COUNT 00578000 LH R10,0(R1) GET NUMBER OF REAL CHANNELS ON 00579000 * SYSTEM 00580000 CHINDEX LH R6,0(R9) GET NEXT CHANNEL INDEX 00581000 A R6,ARIOCH POINT TO RCHBLOK 00582000 SR R3,R3 CLEAR RCUBLOK INDEX 00583000 CUINDEX LH R7,RCHCUTBL(R3) GET NEXT RCUBLOK INDEX ENTRY 00584000 LTR R7,R7 IS THERE ONE ?? 00585000 BM NEXTCU NO -- 00586000 A R7,ARIOCU POINT TO REAL CONTROL UNIT 00587000 SR R2,R2 CLEAR RDEVBLOK INDEX 00588000 DEVINDEX LH R8,RCUDVTBL(R2) GET NEXT RCUBLOK INDEX ENTRY 00589000 LTR R8,R8 IS THERE ONE ?? 00590000 BM NEXTDEV NO -- 00591000 SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00592000 A R8,ARIODV POINT TO RDEVBLOK 00593000 ST R8,SAVERDEV SAVE RDEVBLOK ADDRESS @V200829 00594000 SPACE 00595000 LA R1,SNSECCW SENSE CCW 00596000 ST R1,CAW SET UP CAW FOR SENSE OPERATION 00597000 LH R1,RDEVADD GET DEVICE ADDRESS 00598000 LH R0,RCUADD AND CONTROL UNIT ADDRESS 00599000 OR R1,R0 COMBINE 00600000 AH R1,RCHADD AND ADD TO CHANNEL ADDRESS 00601000 SPACE 2 HRC032DK 00602990 TM RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS @V2D3931 00604000 BZ CHSPEC NO, CHECK FOR SPECIAL CLASS @V2D3931 00605000 CLI RDEVTYPE,TYPBSC IS THIS A BISYNC LINE @V2D3931 00606000 BE NETWORK YES, ... @V2D3931 00607000 CHSPEC EQU * @V2D3931 00608000 TM RDEVTYPC,CLASSPEC IS THIS A SPECIAL CLASS @V2D3931 00609000 BZ TESTTERM NO, .... @V2D3931 00610000 CLI RDEVTYPE,TYP3705 3704 OR 3705 TYPE @V200829 00611000 BNE TESTMSC NOPE, GO TRY 3851 @V407438 00612000 * 00613000 * RECORD FORMAT FOR 3705 TYPE DEVICE 00614000 * 00615000 * REAL DEVICE ADDRESS = 2 BYTES 00616000 * NUMBER OF NICBLOKS = 2 BYTES 00617000 * NCP LOAD NAME = 8 BYTES 00618000 * BIT MAP = 1 BIT FOR EACH NICBLOK 00619000 * 8 NICBLOKS EACH BYTE 00620000 * 4096 NICBLOKS MAX. 00621000 * 00622000 NETWORK EQU * @V2D3931 00623000 * CLC CPID(4),CWARM SYSTEM RESTARTING ? HRC032DK 00624590 * BNE TERMHIO NO - SKIP ENABLED ADDRESSES HRC032DK 00625180 TM RDEVSTAT,RDEVDED DEDICATED DEVICE ? @VM08748 00626000 BO TERMHIO YES, DO HALT I/O @V2D3931 00627000 TM RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS @V2D3931 00628000 BO RGFCKP1 YES, SAVE LINE ADDRESS @V2D3931 00629000 TM RDEVFLAG,RDEVLNCP+RDEVLCEP+RDEVAUTO O.K. ? @VM08833 00630000 BZ TERMHIO NO -- DON'T CHECKPT IT @VM08833 00631000 RGFCKP1 EQU * @V2D3931 00632000 MVC 4(8,R14),RDEVNCP SAVE NCP LOAD NAME @V2D3931 00633000 STH R1,0(R14) SAVE DEVICE ADDRESS @V2D3931 00634000 SLR R5,R5 .. @V200829 00635000 STH R5,2(R14) ZERO NUMBER OF NICBLOKS @V200829 00636000 LR R15,R14 SAVE START ADDRESS @V200829 00637000 LA R14,12(R14) UPDATE BUFFER ADDRESS @V200829 00638000 TM RDEVTYPC,CLASTERM IS THIS A TERMINAL CLASS @V2D3931 00639000 BO *+12 YES, BYPASS @V2D3931 00640000 TM RDEVFLAG,RDEVLNCP IS THERE A NICBLOK LIST ? @V200829 00641000 BZ TERMHIO NO -- @VM08748 00642000 LH R5,RDEVMAX MAXIMUM RESOURCE ID. @V200829 00643000 LA R5,1(,R5) NUMBER OF NICBLOKS @V200829 00644000 ICM R8,B'1111',RDEVNICL ANY NETWORK CONTROL BLOKS @V200829 00645000 BZ TERMHIO NO -- @VM08748 00646000 STH R5,2(R15) SAVE NICBLOK NUMBER IN BUFFER @V200829 00647000 NICLOOP MVI 0(R14),X'00' ZERO BYTE FOR THIS NICBLOK @V200829 00648000 LA R15,256 SET MASK BIT FOR EXEC OI @V200829 00649000 NICLP SRL R15,1 SHIFT RIGHT ONE BIT @V200829 00650000 USING NICBLOK,R8 @V200829 00651000 TM NICTYPE,NICLGRP IS THIS A CONTROL UNIT NICBLOK @V2D3931 00652000 BO *+12 YES, CHECK STATUS @V2D3931 00653000 TM NICTYPE,NICLINE IS THIS A LINE ? @V2D3931 00654000 BZ CHKTERM NO, CHECK FOR TERMINAL LINE @V2D3931 00655000 TM NICSTAT,NICDISA IS THE LINE ACTIVE ? @V2D3931 00656000 BZ SETBIT YES, SET BIT IN MAP @V2D3931 00657000 B NICNEXT CHECK NEXT NICBLOK @V2D3931 00658000 CHKTERM TM NICTYPE,NICTERM IS THIS A TERMINAL ? @V200829 00659000 BZ NICNEXT NO -- CHECK NEXT NICBLOK @V200829 00660000 TM NICFLAG,NICDISB TERMINAL DISABLED ? @V200829 00661000 BO NICNEXT YES - TRY NEXT NICBLOK @V200829 00662000 TM NICFLAG,NICENAB TERMINAL ENABLED ? @V200829 00663000 BZ NICNEXT NO -- @V200829 00664000 SETBIT EX R15,EXOI SET BIT FOR THIS NICBLOK @V200829 00665000 NICNEXT LA R8,NICSIZE*8(,R8) POINT TO NEXT NICBLOK @V200829 00666000 BCT R5,*+8 BRANCH IF NOT THE LAST NICBLOK @V200829 00667000 B NICEND END OF NICBLOK LIST @V200829 00668000 CL R15,=F'1' BYTE FULL @V200829 00669000 BNE NICLP NO -- @V200829 00670000 LA R14,1(R14) POINT TO NEXT BYTE IN BUFFER @V200829 00671000 B NICLOOP PROCESS NEXT NICBLOK @V200829 00672000 SPACE 00673000 NICEND ST R5,1(R14) ZERO ODD BYTE @V200829 00674000 LA R14,2(R14) UPDATE BUFFER ADDRESS @V200829 00675000 N R14,=X'00FFFFFE' ROUND OFF TO HALF WORD @V200829 00676000 B TERMHIO GO HALT DEVICE @VM08748 00677000 SPACE 00678000 USING RDEVBLOK,R8 @V200829 00679000 TESTMSC CLI RDEVTYPE,TYP3851 IS THIS AN MSC? @V407438 00680000 BNE TESTTERM NOPE, GO TRY GRAF/TERM @V407438 00681000 LA R15,SUSPEND ADDR OF EXECUTE-SUSPEND CCW @V407438 00682000 ST R15,CAW SET UP THE CAW @V407438 00683000 SIO 0(R1) SLAM IT TO THE MSC @V407438 00684000 BC 2,*-4 BUSY, KEEP TRYING... @V407438 00685000 LA R15,SNSECCW RESTORE THE SENSE CCW TO CAW @V407438 00686000 ST R15,CAW ... @V407438 00687000 BC 1,NEXTDEV CC=3, FORGET IT. @V407438 00688000 BC 4,TSTUC CC=1, GO CHECK UC STATUS @V407438 00689000 TIO 0(R1) CHECK OUT STATUS @V407438 00690000 BC 2,*-4 BUSY, KEEP TRYING. @V407438 00691000 BC 8+1,NEXTDEV CLEAN OR NOT THERE, CONTINUE @V407438 00692000 B TSTUC CC=1, GO CHECK STATUS & CONT. @V407438 00693000 SPACE 00694000 TESTTERM TM RDEVTYPC,CLASGRAF+CLASTERM GRAPHICS OR TERM ?? @V200829 00695000 BZ NONTERM NO -- @V200829 00696000 TM RDEVSTAT,RDEVDED DEDICATED DEVICE ? @VM08748 00697000 BO TERMHIO YES - GO HALT IT @VM08748 00698000 TM RDEVFLAG,RDEVDISB LINE DISABLED @V200829 00699000 BO TERMHIO YES -- GO HALT IT @VM08748 00700000 TM RDEVFLAG,RDEVENAB LINE ENABLED @V200829 00701000 BZ TERMHIO NO -- HALT IT @VM08748 00702000 STH R1,0(R14) SAVE ENABLED DEVICE ADDRESS @V200829 00703000 A R14,=F'2' ADJUST BUFFER ADDRESS @V200829 00704000 SPACE 00705000 CLI RDEVTYPC,CLASTERM TERMINAL CLASS ? @VM08748 00706000 BNE TERMHIO NO -- @VM08748 00707000 CLI RDEVTYPE,TYP3210 3210 TYPE ? @VM08748 00708000 BE NONTERM YES -- HALT AND DRAIN IO @VM08748 00709000 SPACE 00710000 TERMHIO EQU * HERE TO HALT TERMINAL DEVICES @VM08748 00711000 L R8,SAVERDEV RESTORE RDEVBLOK ADDRESS @VM08748 00712000 HIO 0(R1) HALT IO @VM08748 00713000 B NEXTDEV GO PROCESS NEXT DEVICE @VM08748 00714000 SPACE 00715000 NONTERM EQU * NON-TERMINAL HALT IO @V2A2029 00716000 LA R15,1000 MAX LOOP VALUE @V2A2029 00717000 HIOLP BCT R15,*+8 BRANCH IF COUNT NOT ZERO @V2A2029 00718000 B NEXTDEV GO PROCESS NEXT DEVICE @V2A2029 00719000 SSM ENABLE ALLOW INTERRUPTS @V2A2029 00720000 L R8,SAVERDEV RESTORE RDEVBLOK ADDRESS @V2A2029 00721000 SSM DISABLE DO NOT ALLOW INTERRUPTS @V2A2029 00722000 L R5,RDEVAIOB GET ACTIVE IOB.... @VA03547 00723000 LTR R5,R5 ...IF ANY. @VA03547 00724000 BZ NEXTDEV IF NONE, SKIP HIO. @VA03547 00725000 HIO 0(R1) HALT IO @V2A2029 00726000 BC 2,HIOLP CC=2, BURST OR HALTED @V2A2029 00727000 BC 1,NEXTDEV CC=3, NOT OPERATIONAL @V2A2029 00728000 NONTIO CLI RDEVTYPC,CLASGRAF IS THIS A GRAPHIC DEVICE. 00729000 BNE NONGRAF NO - CLEAR ANY INTERRUPTS THAT MAY BE PENDING 00730000 TM RDEVTYPE,TYP3277+TYP3278+TYP3284 3270 FAMILY? @V60A6B6 00731000 BNZ NEXTDEV YES - BYPASS HANG CONDITION IN TIO LOOP 00732000 NONGRAF TIO 0(R1) CLEAR ANY OUTSTANDING STATUS 00733000 BC 2,HIOLP CC=2, CHANNEL OR SUBCHANNEL BUSY @V2A2029 00734000 BC 1,NEXTDEV NOT OPER. @VA03547 00735000 BC 4,TSTUC CSW STORED @VA03547 00736000 TM RDEVTYPC,CLASTAPE+CLASDASD IS IT TAPE OR DASD? @VA03547 00737000 BNZ SNSIO YES, DO A SENSE THEN. @VA03547 00738000 B NEXTDEV NO, TRY THE NEXT ONE. @VA03547 00739000 TSTUC TM CSW+4,UC UNIT CHECK? @VA03547 00740000 BZ NEXTDEV NO - @VA03547 00741000 SNSIO SIO 0(R1) START I/O SENSE OPERATION. @VA03547 00742000 SSM ENABLE @V2A2029 00743000 SPACE 00744000 NEXTDEV LA R5,30 LENGTH OF TABLE 00745000 SSM DISABLE @V2A2029 00746000 BXLE R2,R4,DEVINDEX CONTINUE WITH NEXT DEVICE ON CU 00747000 NEXTCU LA R5,62 LENGTH OF TABLE 00748000 BXLE R3,R4,CUINDEX CONTINUE WITH NEXT CU ON CHANNEL 00749000 NEXTCH LA R5,30 RESET TABLE LENGTH 00750000 NEXTCHNL AR R9,R4 POINT TO NEXT CHANNEL INDEX ENTRY@VA03683 00751000 LH R6,0(,R9) GET NEXT CHANNEL INDEX @VA03683 00752000 LTR R6,R6 IS THERE ONE ? @VA03683 00753000 BM NEXTCHNL NO IF MINUS, CHECK NEXT @VA03683 00754000 BCT R10,CHINDEX AND CONTINUE WITH NEXT CHANNEL ON 00755000 * SYSTEM 00756000 MVC 0(4,R14),X8FF END THE BUFFER WITH FFS @V2A2029 00757000 ST R14,TERMEND SAVE ADDRESS OF BUFFER END @V200829 00758000 B RDWRMCLK CONTINUE... @V407438 00759000 SPACE 3 00760000 * HANDLE ALL I/O INTERRUPTS FROM ENABLE/DISBABLE 00761000 * SEQUENCES. EXAMINE CSW FOR UC. IF PRESENT ISSUE 00762000 * A SENSE, OTHERWISE CONTINUE BY LOADING FROM I/O OLD 00763000 * PSW, THUS RE-ENABLING AND DRAINING ALL PENDING INTS. 00764000 SPACE 00765000 CHKIOINT TM CSW+4,UC DID INT COME WITH UC? @V407438 00766000 BO *+8 YES, MUST ISSUE SENSE @V407438 00767000 LPSW IOOPSW NOPE, RETURN TO PRE-INT STATE @V407438 00768000 ST R3,CHKIOSAV SAVE REG @VA08695 00769000 LA R3,SNSECCW GET THE SENSE CCW @VA08169 00770000 ST R3,CAW INSURE CCW IS SET UP @VA08169 00771000 LH R3,INTTIO GET THE INTERRUPTING DEV ADDR @VA08169 00772000 SIO 0(R3) ISSUE SENSE TO IT @VA08169 00773000 BC 2,*-4 BETTER NOT BE BUSY @V407438 00774000 L R3,CHKIOSAV RESTORE REG @VA08695 00775000 LPSW IOOPSW RETURN TO PRE-INT STATE @V407438 00776000 CHKIOSAV DS F SAVEAREA @VA08695 00777000 EJECT 00778000 ************************************************* 00779000 * 00780000 * READ RECORD ONE OF WARM-START CYLINDER OF THE IPL VOLUME AND 00781000 * COMPARE THE CLOCK VALUE WRITTEN BY PREVIOUS COLD OR 00782000 * WARM START AGAINST THE IN STORAGE CLOCK VALUE SAVED IN 00783000 * DMKRSPCV. IF THE CLOCK VALUES DO NOT AGREE; (1) THE 00784000 * IPL VOLUME IS NOT THE CORRECT VOLUME TO CHECKPOINT 00785000 * THE IN STORAGE SYSTEM. (2) THE WARM-START CYLINDER HAS 00786000 * BEEN ALTERED SINCE LAST COLD OR WARM START. 00787000 * 00788000 ************************************************* 00789000 SPACE 00790000 RDWRMCLK L R10,DMKSYSWM POINTER TO WARM-START CYL @V407438 00791000 MVC CYLSTART(4),0(R10) GET START AND END CYLINDER @V2A2029 00792000 MVC SEEK+2(2),0(R10) PUT CYL ADDRESS IN SEARCH CCW @V2A2029 00793000 MVI PAGECYL,57 PAGES/CYL FOR 3330 @V2A2029 00794000 CLI TYPE,TYP3330 SYSRES A 3330 ? @V2A2029 00795000 BE SETSIZE YES - @V2A2029 00796000 MVI PAGECYL,120 PAGES/CYL FOR 3350 @V304498 00797000 CLI TYPE,TYP3350 SYSRES A 3350 ? @V304498 00798000 BE SETSIZE YES - @V304498 00799000 MVI PAGECYL,96 Pages/cyl for 3375 HRC106DK 00799100 CLI TYPE,TYP3375 Sysres a 3375 HRC106DK 00799200 BE SETSIZE Yes - HRC106DK 00799300 MVI PAGECYL,150 Pages/cyl for 3380 HRC106DK 00799400 CLI TYPE,TYP3380 Sysres a 3380 HRC106DK 00799500 BE SETSIZE Yes - HRC106DK 00799600 MVI PAGECYL,32 PAGES/CYL FOR 2314 TYPE @V2A2029 00800000 CLI TYPE,TYP2314 IS IT A 2314 TYPE ? @V2A2029 00801000 BE SETSIZE YES - @V2A2029 00802000 MVI PAGECYL,24 PAGES/CYL FOR 2305 AND 3340 @V2A2029 00803000 SETSIZE MVI SIZE+1,80 SET RECORD SIZE TO 80 @V2A2029 00804000 BAL R14,RDWR READ RECORD ONE OF WRM-CYL @V2A2029 00805000 CLC DMKRSPCV(8),BUFFCV IS THIS THE CORRECT VOLUME AND CYL ? 00806000 BNE MSG910W NO -- MIGHT BE WRONG VOLUME @V2A2029 00807000 MVI DSK05,X'05' CHANGE CCWS TO WRITE STATUS 00808000 LA R0,RECBUFF SET BUFFER TO FFS @V2A2029 00809000 L R1,=F'4096' .. LENGTH @V2A2029 00810000 SR R2,R2 .. @V2A2029 00811000 SR R3,R3 .. @V2A2029 00812000 ICM R3,B'1000',X8FF .. @V2A2029 00813000 MVCL R0,R2 MOVE LONG @V2A2029 00814000 SPACE 00815000 EJECT 00816000 **************************************** 00817000 * 00818000 * WRITE DISK RECORD ONE - ZERO-FIRST 8 BYTES 00819000 * 00820000 **************************************** 00821000 SPACE 00822000 MVC HASH(6),STARTIME INSERT UNIQUE NUMBER 00823000 BAL R14,PUTDLM OUTPUT DELIMITER RECORD @V2A2029 00824000 XC RECBUFF(8),RECBUFF ZERO FIRST 8 BYTES OF RECORD ONE 00825000 MVC BUFFCV(8),DMKRSPCV PUT CLOCK VALUE BACK IN RECORD ONE 00826000 SPACE 00827000 *************************************** 00828000 * 00829000 * SAVE REAL DEVICE ADDRESS OF ENABLED TERMINAL DEVICES 00830000 * 00831000 *************************************** 00832000 SPACE 00833000 * CLC CPID(4),CWARM SYSTEM RESTARTING ?? HRC032DK 00834590 * BNE TERMCLOS NO -- DO NOT RECORD HRC032DK 00835180 L R3,TERMBUFF ADDRESS OF TERMINAL BUFFER @V200829 00836000 B CMPEND ANY DATA IN BUFFER @V200829 00837000 TERMPUT BAL R14,PUTREC INSERT 40 ADDRESSES (80BYTES) @V200829 00838000 LA R3,80(,R3) UPDATE TERM BUFFER ADDRESS @V2A2029 00839000 CMPEND CL R3,TERMEND ARE WE DONE ? @V200829 00840000 BNH TERMPUT NO -- KEEP GOING @V200829 00841000 TERMCLOS BAL R14,PUTDLM INSERT DELIMITER RECORD @V2A2029 00842000 SPACE 00843000 **************************************** 00844000 * 00845000 * SAVE ACCOUNTING INFORMATION FOR ACTIVE USERS 00846000 * 00847000 **************************************** 00848000 SPACE 00849000 USING VDEVBLOK,R8 00850000 SPACE 00851000 L R15,DMKTMRPT MAKE SURE V(DMKTMRPT) IS THE 00852000 L R15,=V(DMKTMRPT) ADDRESS OF THE IN STORAGE SYSTEM 00853000 ORG *-4 00854000 DC X'50' ST R15,=V(DMKTMRPT) 00855000 ORG 00856000 SPACE 00857000 L R10,ASYSLC POINT TO SYSLOCS INFORMATION 00858000 L R3,ARIOPU POINT TO LIST OF SYSTEM PUNCHES 00859000 ICM R3,B'1111',0(R3) NUMBER OF PUNCHES EQUAL ZERO ??? 00860000 BNZ *+8 NO -- 00861000 OI ACNTSW,X'80' INDICATE ZERO SYSTEM PUNCHES 00862000 ICM R11,B'1111',DMKSYSCK CLOCK VALUE ZERO ?? 00863000 BNZ CLOCKOK NO -- CLOCK GOOD 00864000 STCK DMKSYSCK SET DMKSYSCK TO CURRENT VALUE 00865000 BZ *+8 CLOCK SET - GOOD 00866000 OI ACNTSW,X'40' INDICATE CLOCK SET ERROR 00867000 CLOCKOK L R11,ASYSVM ADDRESS OF SYSTEM VMBLOK 00868000 ICM R11,B'1111',VMPNT ADDRESS VMBLOK IN CYCLIC CHAIN 00869000 BZ ACTCHAIN NO USERS ON SYSTEM 00870000 ST R11,STUSER SAVE ADDRESS OF FIRST USER 00871000 NXTLOOP TM VMRSTAT,VMLOGON IS USER LOGGING ON ?? 00872000 BO UNXT YES, DONT SAVE 00873000 SR R1,R1 ZERO INDEX FOR CHANNEL 00874000 LA R4,2 LOAD INCREMENT REG 00875000 LA R5,30 LOAD END OF TABLES 00876000 CKPANCH LH R6,VMCHTBL(R1) NEXT CHANNEL INDEX 00877000 LTR R6,R6 DOES THIS CHAN. EXIST ? 00878000 BM CKPACHI NO - TRY NEXT CHAN. 00879000 A R6,VMCHSTRT ADDRESS OF VCHBLOK TO R6 00880000 USING VCHBLOK,R6 00881000 SR R2,R2 ZERO INDEX FOR CONTROL UNITS 00882000 CKPANCU LH R7,VCHCUTBL(R2) LOAD NEXT CONTROL UNIT 00883000 LTR R7,R7 DOES IT EXIST ? 00884000 BM CKPACUI NO - GO TRY NEXT 00885000 A R7,VMCUSTRT ADDRESS OF VMCUBLOK 00886000 USING VCUBLOK,R7 00887000 SR R3,R3 ZERO INDEX FOR DEVICES 00888000 CKPANDEV LH R8,VCUDVTBL(R3) GET NEXT DEVICE 00889000 LTR R8,R8 DOES IT EXIST ? 00890000 BM CKPADEVI NO - GO TRY NEXT 00891000 A R8,VMDVSTRT ADDRESS OF VMDEVBLOK 00892000 USING VDEVBLOK,R8 00893000 TM VDEVSTAT,VDEVDED IS THIS A DEDICATED DEVICE ? 00894000 BO CKPACALL BRANCH IF IT IS 00895000 CLI VDEVTYPC,CLASDASD IS THIS A DASD DEVICE ?? 00896000 BE TSTTDSK YES -- TEST FOR T DISK 00897000 CLI VDEVTYPC,CLASTERM CONSOLE CLASS TYPE 00898000 BNE CKURO NO -- CHECK OUTPUT UNIT RECORD 00899000 CLI VDEVTYPE,TYP3210 CONSOLE TYPE ? 00900000 BNE CKPADEVI NO -- GET NEXT DEVICE 00901000 B SAVEFILE YES-CHECK FOR ACTIVE SPOOL FILE 00902000 CKURO CLI VDEVTYPC,CLASURO OUTPUT UNIT RECORD TYPE ? 00903000 BNE CKPADEVI NO -- GET NEXT DEVICE 00904000 TM VDEVTYPE,TYPPUN+TYPPRT PUNCH OR PRINTER ?? 00905000 BZ CKPADEVI NO -- GET NEXT DEVICE 00906000 SAVEFILE ICM R14,B'1111',VDEVSPL OPEN SPOOL FILE ? 00907000 BZ CKPADEVI NO -- GET NEXT DEVICE 00908000 XC VDEVSPL(4),VDEVSPL CLEAR ACTIVE POINTER 00909000 ICM R14,B'1111',VSPSFBLK-VSPLCTL(R14) SFBLOK PRESENT ?? 00910000 BZ CKPADEVI NO -- GET NEXT DEVICE 00911000 CLC SFBORIG-SFBLOK(8,R14),VMUSER VALID SFBLOK ? @V2A2029 00912000 BNE CKPADEVI NO, GET NEXT DEVICE @V2A2029 00913000 CLC SFBPNT-SFBLOK(4,R14),=X'00000000' ANY BUFFERS WRITTEN ? 00914000 BE DELFILE NO -- START AND LAST CORRECT 00915000 OI SFBFLAG2-SFBLOK(R14),SFBFIRST INDICATE 1ST @VA03437 00916000 * PAGE WRITTEN 00917000 MVC SFBLAST-SFBLOK(4,R14),SFBPNT-SFBLOK(R14) LAST BUFFER 00918000 * WRITTEN 00919000 CLI VDEVTYPE,TYP3210 SPOOLED CONSOLE DEVICE @VA11232 00919100 BE CONFILE YES @VA11232 00919600 DELFILE DS 0H @VA07846 00922000 OI SFBFLAG2-SFBLOK(R14),SFBPURGE OPEN FILE @VA07159 00923000 MVC SFBPNT-SFBLOK(4,R14),DMKRSPDL CHAIN TO DELETE CHAIN 00924000 ST R14,DMKRSPDL .. 00925000 B CKPADEVI GET NEXT DEVICE 00926000 CONFILE MVC SFBCLAS-SFBLOK(1,R14),VDEVCLAS SET UP FILE CLASS 00927000 CLI SFBDIST-SFBLOK(R14),C' ' DIST CODE IN SFBLOK ?? 00928000 BH *+10 YES -- 00929000 MVC SFBDIST-SFBLOK(8,R14),VMDIST MOVE IN DISTRIBUTION CODE 00930000 MVC SFBCOPY-SFBLOK(2,R14),VDEVCOPY MOVE IN NUMBER OF COPIES 00931000 LA R15,DMKRSPPR ADDRESS OF PRINTER FILE CHAIN 00935000 TM VDEVSFLG,VDEVXFER SPOOL TO USERID ?? 00936000 BZ CHAINSFB NO - CHAIN SPOOL FILE ON PRT CHAIN 00937000 LA R15,DMKRSPRD ADDRESS OF READER CHAIN 00938000 L R9,VDEVEXTN XBLOK ADDRESS @V293598 00939000 * XFER USERID 00940000 MVC SFBUSER-SFBLOK(8,R14),VSPXXUSR-VSPXBLOK(R9) @V293598 00941000 CHAINSFB MVC SFBPNT-SFBLOK(4,R14),0(R15) CHAIN FIRST 00942000 ST R14,0(R15) ON SPOOL FILE CHAIN 00943000 B CKPADEVI GET NEXT DEVICE 00944000 TSTTDSK TM VDEVFLAG,VDEVTDSK 'T' DISK ??? 00945000 BZ CKPADEVI NO - GO GET NEXT DEVICE 00946000 SPACE 00947000 CKPACALL EQU * 00948000 TM ACNTSW,X'C0' ZERO PUNCHES AND/OR CLOCK ERROR 00949000 BNZ CKPADEVI YES -- 00950000 STM R1,R8,CKPSAVE SAVE THE POINTERS FOR V DEV LOOP 00951000 OI ACNTSW,X'20' INDICATE ACNT CALULATING @V2A2029 00952000 MVI ACBUFF,C' ' * BLANK THE ACCOUNTING BUFFER 00953000 MVC ACBUFF+1(79),ACBUFF * 00954000 LA R4,ACBUFF-(ACNTDATA-ACNTBLOK) POINT TO DATA AREA 00955000 BAL R5,DEVCARD GO FILL IN THE DEVICE CARD 00956000 LA R3,ACBUFF POINT TO THE BUFFER JUST BUILT 00957000 BAL R14,PUTREC GO PUT IT 00958000 LM R1,R8,CKPSAVE LOOK AT THE REST OF THE VDEVBLOK 00959000 NI ACNTSW,X'FF'-X'20' RESET ACNT CAL SWITCH @V2A2029 00960000 CKPADEVI BXLE R3,R4,CKPANDEV 00961000 CKPACUI BXLE R2,R4,CKPANCU 00962000 CKPACHI BXLE R1,R4,CKPANCH 00963000 SPACE 00964000 * WHEN FALL THRU - HAVE SCANNED ALL DEVICES FOR THIS USER 00965000 SPACE 00966000 TM ACNTSW,X'C0' ZERO PUNCHES AND/OR CLOCK ERROR 00967000 BNZ UNXT YES -- GET NEXT USER 00968000 STM R1,R8,CKPSAVE SAVE REGS FOR V DEV LOOP @V2A2029 00969000 OI ACNTSW,X'20' INDICATE ACNT CALULATING @V2A2029 00970000 MVI ACBUFF,C' ' * CLEAR THE BUFFER 00971000 MVC ACBUFF+1(79),ACBUFF * 00972000 LA R4,ACBUFF-(ACNTDATA-ACNTBLOK) POINT TO THE DATA AREA 00973000 BAL R5,USERCARD GO FILL IN THE USER ACCOUNTING CARD 00974000 LA R3,ACBUFF POINT TO THE DATA AREA 00975000 BAL R14,PUTREC RECORD 00976000 LM R1,R8,CKPSAVE RESTORE REGS FOR V DEV LOOP @V2A2029 00977000 UNXT NI ACNTSW,X'FF'-X'20' RESET ACNT CAL SWITCH @V2A2029 00978000 L R11,VMPNT POINT TO NEXT VMBLOK @V2A2029 00979000 C R11,STUSER IS THIS THE FIRST ONE ?? 00980000 BNE NXTLOOP DO NEXT 00981000 SPACE 2 00982000 **************************************** 00983000 * 00984000 * SAVE CHAIN ACCOUNTING CARDS 00985000 * 00986000 **************************************** 00987000 SPACE 00988000 ACTCHAIN L R4,DMKRSPAC POINT TO FIRST ACCOUNTING CARD 00989000 TM ACNTSW,X'80' ANY SYSTEM PUNCHES ?? 00990000 BO DLM2 NO -- SKIP ACCOUNTING DATA 00991000 ACTNEXT LTR R4,R4 ANY CARDS 00992000 BZ ACTACNT NO- BRANCH 00993000 CL R4,STORSIZE ADDRESS WITHIN REAL STORAGE ? @VA02884 00994000 BNL ACTACNT NO - GO TO NEXT ROUTINE @VA02884 00995000 LA R3,ACNTDATA POINT TO THE ACCOUNTING DATA 00996000 BAL R14,PUTREC AND PUT IT OUT 00997000 LR R15,R4 SAVE ADDRESS OF LAST BLOK 00998000 ICM R4,7,ACNTNEXT+1 GET ADD FRON THE TIC OF NEXT REC 00999000 B ACTNEXT GET NEXT ACNTBLOK 01000000 EJECT 01001000 *************************************** 01002000 * 01003000 * INPUT FROM THE ACCTOFF COPY FILE 01004000 * 01005000 *************************************** 01006000 SPACE 01007000 COPY ACCTOFF 01008000 DROP R4,R8 01009000 USING ACNTBLOK,R4 @VM08853 01010000 USING RDEVBLOK,R8 01011000 SPACE 01012000 **************************************** 01013000 * 01014000 * SAVE ACTIVE ACCOUNTING CARDS NOT PUNCH 01015000 * 01016000 **************************************** 01017000 SPACE 01018000 ACTACNT EQU * HERE TO SAVE ANY ACTIVE ACCOUNTING CHAINS 01019000 L R5,ARIOPU GET ADDRESS OF SYSTEM PUNCH TABLE 01020000 L R6,0(,R5) GET NUMBER OF ENTIES IN THE TABLE 01021000 LTR R6,R6 ANY PUNCHES PRESENT ?? 01022000 BZ DLM2 NO -- 01023000 ACTINDEX LA R5,4(,R5) POINT TO NEXT TABLE ENTRY 01024000 LH R8,0(,R5) GET INDEX TO RDEVBLOK FOR PUNCH 01025000 SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 01026000 A R8,ARIODV POINT TO RDEVBLOK FOR PUNCH 01027000 TM RDEVFLAG,RDEVACNT WAS PUNCH BUSY WITH ACCOUNTING 01028000 BZ ACTNXT2 NO -- 01029000 ICM R4,B'1111',RDEVSPL ACCOUNTING INFO PRESENT ? @V2A2029 01030000 BZ ACTNXT2 NO -- 01031000 CL R4,STORSIZE ADDRESS WITHIN REAL STORAGE ? @VA02884 01032000 BNL ACTNXT2 NO - DO NEXT DEVICE @VA02884 01033000 PUTACNT LA R3,ACNTDATA POINT TO DATA TO BE SAVED 01034000 L R4,ACNTNEXT POINT TO NEXT ACNTBLOK ON CHAIN @VM08853 01035000 LA R4,0(,R4) CLEAR TIC OP-CODE @VA02884 01036000 CL R4,STORSIZE ADDRESS WITHIN REAL STORAGE ? @VA02884 01037000 BNL ACTNXT2 NO - DO NEXT DEVICE @VA02884 01038000 CLI ACNTCCW,4 IS NEXT CCW A SENSE ?? 01039000 BE ACTNXT2 @VA01578 01040000 BAL R14,PUTREC WRITE RECORD TO DASD @VA01578 01041000 B PUTACNT CONTINUE SAVING CARD @VA01578 01042000 SPACE 01043000 ACTNXT2 BCT R6,ACTINDEX POINT TO NEXT PUNCH IN SYSTEM 01044000 SPACE 01045000 **************************************** 01046000 * 01047000 * WRITE SECOND DELIMITER RECORD 01048000 * 01049000 **************************************** 01050000 DLM2 BAL R14,PUTDLM INSERT DELIMITER RECORD @V2A2029 01051000 SPACE 01052000 **************************************** 01053000 * 01054000 * SAVE SYSTEM LOG MESSAGES 01055000 * 01056000 **************************************** 01057000 SPACE 01058000 L R3,DMKSYSLG GET THE PTR TO THE SYSTEM LOG MSG 01059000 LOGNXT LTR R5,R3 IS THERE ONE ?? 01060000 BZ LOGEND NO @VA02884 01061000 CL R5,STORSIZE ADDRESS WITHIN REAL STORAGE ? @VA02884 01062000 BNL LOGEND NO - DO NEXT ROUTINE @VA02884 01063000 LH R2,6(R5) PICK UP SEQ NUMBER @VA09139 01063100 CH R2,SEQNO GET SAVED SEQUENCE NUMBER @VA09139 01063200 BNE LOGEND NO - BAD LOG MSG CHAIN @VA09139 01063300 LA R2,1(,R2) BUMP SEQ NUMBER @VA09139 01063400 STH R2,SEQNO AND SAVE FOR NEXT TIME THROUGH @VA09139 01063500 LA R3,4(,R3) POINT TO MESSAGE TEXT 01064000 BAL R14,PUTREC SAVE LOGMSG 01065000 L R3,0(R5) POINT TO NEXT LOG MSG 01066000 B LOGNXT GET NEXT LOG MESSAGE 01067000 SEQNO DC H'1' INITIALIZE SEQ NUMBER TO ONE @VA09139 01067500 EJECT 01068000 **************************************** 01069000 * 01070000 * WRITE THIRD DELIMITER RECORD 01071000 * 01072000 **************************************** 01073000 SPACE 01074000 LOGEND MVC DLMREC+16(28),DMKSYSDT MOVE DATE,TIME AND DAY @V2A2029 01075000 * DMKSYSDT, DMKSYSTM AND DMKSYSLW 01076000 BAL R14,PUTDLM INSERT DELIMITER RECORD @V2A2029 01077000 MVC 16(28,R3),45(R3) RESET AREA TO FFS 01078000 CLC INDEX,=AL2(4096-8-SPSFBSZ*8) WILL FIRST SFBLOK @VA12228 01079000 * FIT (EXPANDED FOR VM/SP) @VA12228 01080000 BNH *+8 YES - @V2A2029 01081000 BAL R14,CLOSE .. 01082000 SPACE 2 01083000 *********************************************************************** 01084000 * 01085000 * SAVE SPOOLING BLOCKS 01086000 * 01087000 *********************************************************************** 01088000 SPACE 01089000 USING SFBLOK,R3 01090000 MVI SIZE+1,SPSFBSZ*8 SIZE OF ONE SFBLOK (VM/SP) @VA12228 01091000 SPACE 01092000 **************************************** 01093000 * 01094000 * SAVE SYSTEM PRINTER ACTIVE FILES 01095000 * 01096000 **************************************** 01097000 SPACE 01098000 L R5,ARIOPR POINT TO LIST OF SYSTEM PRINTERS 01099000 BAL R10,CHACT SAVE ACTIVE FILES 01100000 SPACE 01101000 **************************************** 01102000 * 01103000 * SAVE PRINTER CLOSED FILES 01104000 * 01105000 **************************************** 01106000 SPACE 01107000 SR R15,R15 INIT BRANCH INDEX @V2A2029 01108000 LA R3,DMKRSPPR POINT TO CHAIN OF CLOSED PRINTER 01109000 * FILES 01110000 SPACE 01111000 **************************************** 01112000 * 01113000 * CHAIN SCAN, MOVE AND PUT LOOP 01114000 * 01115000 **************************************** 01116000 SPACE 01117000 CHK01 ICM R3,B'1111',0(R3) FIRST OR NEXT FILE ADDRESS @V2A2029 01118000 BZ NXTFILE BRANCH IF END OF CHAIN @V2A2029 01119000 SR R14,R14 CLEAR REG 01120000 RECCLR STCM R14,B'1111',SFBRECS CLEAR SFBRECS POINTER @V2A2029 01121000 BAL R14,PUTREC OUTPUT 01122000 B CHK01 LOOP 01123000 SPACE 2 01124000 **************************************** 01125000 * 01126000 * SAVE ACTIVE PUNCH FILES 01127000 * 01128000 **************************************** 01129000 SPACE 01130000 CHK02 L R5,ARIOPU POINT TO LIST OF SYSTEM PUNCHES 01131000 BAL R10,CHACT SAVE ACTIVE FILES 01132000 SPACE 01133000 **************************************** 01134000 * 01135000 * SAVE CLOSED PUNCH FILES 01136000 * 01137000 **************************************** 01138000 SPACE 01139000 LA R3,DMKRSPPU POINT TO CHAIN OF CLOSED PUNCH FILES 01140000 B CHK01 SAVE ENTRIES 01141000 SPACE 01142000 **************************************** 01143000 * 01144000 * SAVE READER STATUS 01145000 * 01146000 **************************************** 01147000 SPACE 01148000 CHK03 L R5,ARIORD POINT TO LIST OF SYSTEM READERS 01149000 BAL R10,CHACT SAVE READER STATUS 01150000 SPACE 01151000 **************************************** 01152000 * 01153000 * SAVE CLOSED READER FILES 01154000 * 01155000 **************************************** 01156000 SPACE 01157000 LA R3,DMKRSPRD POINT TO CHAIN OF CLOSED READER 01158000 * FILES 01159000 LABXXX ICM R3,B'1111',0(R3) FIRST OR NEXT FILE ADDRESS @V50A2B5 01160000 BZ LABXX FINISHED @V50A2B5 01161000 SR R14,R14 CLEAR REGISTER @V50A2B5 01162000 STCM R14,B'1111',SFBRECS CLEAR SFBRECS POINTER @V50A2B5 01163000 BAL R14,PUTREC OUTPUT @V50A2B5 01164000 B LABXXX @V50A2B5 01165000 SPACE 01166000 **************************************** 01167000 * 01168000 * SAVE MONITOR SPOOL FILE IF OPEN 01169000 * 01170000 **************************************** 01171000 SPACE 01172000 LABXX L R3,DMKRSPMN GET OPEN MONITOR FILE @V50A2B5 01173000 LTR R3,R3 IF IT EXISTS @V50A2B5 01174000 BZ NXTFILE @V50A2B5 01175000 CLC SFBDIST,=C' ' FILE ALREADY CLEANED UP @VA07888 01176000 BE YESGOOD YES DON'T TRY IT AGAIN @VA07888 01177000 L R1,TERMBUFF MAKE A COPY OF SFBLOK @V50A2B5 01178000 MVC 0(8*SFBSIZE,R1),0(R3) DO THE COPY @V50A2B5 01179000 OI SFBFLAG2-SFBLOK(R1),SFBPURGE TURN ON PURGE BIT @V50A2B5 01180000 CLC SFBSTART(4),=X'00000000' IS THE START 0 @V50A2B5 01181000 BE NXTFILE YES, DO NOT BOTHER WITH IT @V50A2B5 01182000 OI FLAG,CKPMDL SHOW WE USE COPY @V50A2B5 01183000 CLC SFBPNT(4),=X'00000000' NULL FILE? @V50A2B5 01184000 BE NXTFILE YES, DO NOT BOTHER WITH IT @V50A2B5 01185000 CLC SFBPNT(4),SFBLAST IS THIS A GOOD FILE? @V50A2B5 01186000 BE YESGOOD YES IT IS @V50A2B5 01187000 MVC SFBFILID-SFBLOK(2,R1),=H'9999' COPY'S OWN ID @VA07888 01188000 MVC SFBLAST(4),SFBPNT SET LAST CORRECTLY @V50A2B5 01189000 CLC SFBLAST(4),SFBDIST ONE OR TWO BAD BUFFERS @V50A2B5 01190000 BNE TWOBAD @V50A2B5 01191000 DROP R3 01192000 USING SFBLOK,R1 01193000 MVC SFBSTART(4),SFBDIST+4 SET DUMMY SFB @VA07888 01194000 * TO POINT TO THE ONLY SLOT TO BE RELEASED BY DMKSPLDL 01195000 B ONEBAD @V50A2B5 01196000 TWOBAD MVC SFBSTART(4),SFBDIST SET DUMMY SFB PT @VA07888 01197000 * TO THE FIRST OF TWO SLOTS TO BE RELEASED BY SPLDL 01198000 DROP R1 01199000 USING SFBLOK,R3 01200000 ONEBAD MVC SFBDIST(8),=C' ' BLANK OUT DIST FIELD @V50A2B5 01201000 BAL R14,PUTREC PUT OUT THE FILE @V50A2B5 01202000 B NXTFILE AND CONTINUE @V50A2B5 01203000 YESGOOD NI FLAG,X'FF'-CKPMDL TURN OFF FLAG @V50A2B5 01204000 B ONEBAD CONTINUE @V50A2B5 01205000 SPACE 1 01206000 **************************************** 01207000 * 01208000 * SAVE DELETE FILES 01209000 * 01210000 **************************************** 01211000 SPACE 01212000 * ROUTINE TO MOVE ENTRIES ON 'INCOMPLETE DUMP' CHAIN TO DELETE 01212100 CHK04 DS 0H @V67CAH7 01212200 ICM R3,B'1111',DMKRSPDP POINTER TO DUMPS IN PRC @V67CAH7 01212300 BZ CHK041 NO DUMPS..SKIP LOGIC @V67CAH7 01212400 * NOW ADD DUMPS IN PROCESS TO DELETE CHAIN 01212500 GETNEXT DS 0H @V67CAH7 01212600 LR R14,R3 SAVE LAST POINTER @V67CAH7 01212700 ICM R3,B'1111',SFBPNT-SFBLOK(R14) FORWARD POINTER @V67CAH7 01212800 BNZ GETNEXT MORE SFBLOKS...BRANCH @V67CAH7 01212900 * R14 NOW HAS LAST SFBLOK POINTER ON DUMP CHAIN 01213000 L R3,DMKRSPDL ADDRESS OF DELETE @V67CAH7 01213100 * CHAINS FIRST SFBLOK POINTER 01213200 ST R3,SFBPNT-SFBLOK(,R14) PUT FULL DUMP CHAIN IN @V67CAH7 01213300 * FRONT OF DELETE CHAIN 01213400 * THE DUMP CHAIN NOW HAS IT'S DUMP SFBLOKS FOLLOWED BY 01213500 * THE DELETE CHAIN'S SFBLOK 01213600 * *** NOW ATTACH FULL CHAIN TO DELETE ANCHOR 01213700 L R14,DMKRSPDP GET POINTER TO DUMP @V67CAH7 01213800 * CHAINS FIRST SFBLOK 01213900 ST R14,DMKRSPDL MOVE TO DELETE ANCHOR @V67CAH7 01214000 * NOW BOTH DUMP AND DELETE SFBLOKS ARE ON DELETE CHAIN 01214100 CHK041 DS 0H @V67CAH7 01214200 MVC DLMREC+16(2),DMKRSPID SAVE ID COUNTER IN @V67CAH7 01214300 * DELIMITER RECORD 01214400 TM FLAG,CKPMDL SEE IF VALID COPY EXISTS@V50A2B5 01215000 BNO CHK04A FILE EXISTS @V50A2B5 01216000 L R3,TERMBUFF YES, THEN PUT IT @V50A2B5 01217000 BAL R14,PUTREC ON WARM CYLINDER @V50A2B5 01218000 CHK04A EQU * @V50A2B5 01219000 LA R3,DMKRSPDL CHAIN OF SYSTEM DELETE FILES@VA07888 01220000 B CHK01 SAVE ENTRIES 01221000 SPACE 01222000 **************************************** 01223000 * 01224000 * SAVE ALLOCATION RECORDS 01225000 * 01226000 **************************************** 01227000 SPACE 01228000 CHK05 CLC INDEX,=AL2(4096-8-SPRCSZ*8) WILL FIRST VM/SP @VA12228 01229000 * RECBLOK FIT 01230000 BNH *+8 YES -- @V2A2029 01231000 BAL R14,CLOSE .. 01232000 * RECORDS 01233000 MVC DLMREC+16(8),X8FF RESTORE AREA USED @V2A2029 01234000 MVI SIZE+1,SPRCSZ*8 SIZE OF ONE VM/SP RECBLOK @VA12228 01235000 SPACE 01236000 SPACE 01237000 USING OWNDLIST,R5 01238000 L R5,DMKSYSOW GET ADDRESS OF OWNLIST 01239000 L R4,DMKSYSOC POINTER TO NUMBER OF ENTRIES 01240000 L R4,0(R4) GET NUMBER OF ENTRIES IN LIST 01241000 OWNLP LH R8,OWNDRDEV DISPLACEMENT TO RDEVBLOK 01242000 LTR R8,R8 VOLUME MOUNTED ?? 01243000 BM NXTREC NO - NO NEED TO SAVE ALLOCATION 01244000 SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 01245000 A R8,ARIODV POINT TO RDEVBLOK 01246000 USING RECBLOK,R7 01247000 L R7,RDEVRECS GET ADDRESS OF RECBLOK 01248000 RECLP LTR R7,R7 IS THERE ONE ?? 01249000 BNZ RECGOOD YES - 01250000 NXTREC EQU * 01251000 LA R5,8(R5) UPDATE TO NEXT OWNLIST 01252000 BCT R4,OWNLP DO NEXT BLOK 01253000 B NXTFILE 01254000 SPACE 01255000 RECGOOD L R6,RECPNT SAVE ADDRESS OF NEXT BLOK 01256000 LA R3,ALLOCBUF ADDRESS OF ALLOCATION OUTPUT BUFFER 01257000 MVC ALLOCBUF(8),RECPNT MOVE RECBLOK HEADER TO BUFFE@VA12228 01258000 MVC ALLOCBUF+8(8),ZEROES ZERO FLAG BYTE @VA12228 01258200 MVC ALLOCBUF+16(L'RECMAP),RECMAP Move RECBLOK map HRC106DK 01258500 LR R14,R5 ADDRESS OF CURRENT OWNDLIST ENTRY 01259000 S R14,DMKSYSOW GET DISPLACEMENT INTO OWNLIST 01260000 ST R14,ALLOCBUF SAVE FOR WARM START 01261000 LA R14,95 MAX CYLINDERS FOR 2305 01262000 TM RDEVTYPE,TYP2305 2305 ?? 01263000 BNO TST2319 NO- GO TEST FOR 2319-2314 01264000 CLI RDEVMDL,1 IS THIS A MOD 1 01265000 BNE CYLCMP NO- MUST BE A MOD 2 01266000 LA R14,47 SET UP FOR A 2305-1 01267000 B CYLCMP 01268000 TST2319 LA R14,202 MAX CYLINDERS FOR 2314,2319 01269000 TM RDEVTYPE,TYP2314 2314 ?? 01270000 BO CYLCMP YES -- 01271000 CLI RDEVTYPE,TYP3380 3380 device ? HRC106DK 01271100 BNE TST3375 No - check for 3375 HRC106DK 01271150 LA R14,2654 Max cylinder for 3380 (K) HRC106DK 01271200 TM RDEVMDL,RDEVMD83 Triple density 3380? HRC106DK 01271250 BO CYLCMP Check max cyl HRC106DK 01271300 LA R14,1769 Max cylinder for 3380 (E) HRC106DK 01271350 TM RDEVMDL,RDEVMD82 Double density 3380? HRC106DK 01271400 BO CYLCMP Check max cyl HRC106DK 01271450 LA R14,884 Max cylinder for 3380 (A/D/J) HRC106DK 01271500 B CYLCMP Check max cyl HRC106DK 01271550 TST3375 LA R14,958 Max cylinder for 3375 HRC106DK 01271600 CLI RDEVTYPE,TYP3375 3375 device ? HRC106DK 01271650 BE CYLCMP Check max cyl HRC106DK 01271700 LA R14,554 MAX CYLINDERS FOR 3350 @V304498 01272000 CLI RDEVTYPE,TYP3350 3350 DEVICE ? @V304498 01273000 BE CYLCMP CHECK MAX CYL @V304498 01274000 LA R14,403 MAX CYLINDERS FOR 3330 01275000 CLI RDEVTYPE,TYP3340 3340 DEVICE ? @V2A2029 01276000 BNE TST3330 NO - CHECK FOR 3330 @V2A2029 01277000 LA R14,348 SET MAX CYL FOR 35MB (3340) @V2A2029 01278000 TM RDEVFTR,FTR35MB IS IT A 35MB DATA MODULE ? @V2A2029 01279000 BO CYLCMP BRANCH IF YES @V2A2029 01280000 LA R14,697 SET MAX CYL FOR 70MB (3340) @V2A2029 01281000 B CYLCMP CHECK MAX CYL @V2A2029 01282000 TST3330 EQU * HERE TO TEST FOR 3330 @V2A2029 01283000 TM RDEVTYPE,TYP3330 3330 TYPE @V200528 01284000 BZ MSG922W NO - INVALID DEVICE TYPE (DATA) @V305435 01285000 CLI RDEVMDL,11 IS THIS A MOD 11 @V200528 01286000 BNE CYLCMP NO- MUST BE A STANDARD 3330 @V200528 01287000 LA R14,807 SET UP MAX CYL FOR MOD 11 @V200528 01288000 CYLCMP CH R14,RECCYL RECCYL LARGER THAN MAX ?? 01289000 BL MSG922W YES - ALLOCATION BLOK ERROR @V305435 01290000 CLC RECUSED(1),RECMAX PAGES ALLOCATED LARGER THAN MAX ?? 01291000 BH MSG922W YES - ALLOCATION BLOK ERROR @V305435 01292000 BAL R14,PUTREC OUTPUT 01293000 LR R7,R6 UPDATE TO NEXT RECBLOK 01294000 B RECLP DO NEXT 01295000 SPACE 01296000 **************************************** 01297000 * 01298000 * SAVE SPOOL HOLD BLOCKS 01299000 * 01300000 **************************************** 01301000 SPACE 01302000 CHK06 DS 0H @VA05548 01303000 CLC INDEX,=AL2(4096-8-SHQBSIZE*8) WILL FIRST @VA05548 01304000 * SHQBLOK FIT 01305000 BNH *+8 YES - CONTINUE @VA05548 01306000 BAL R14,CLOSE WRITE BLOCK TO DASD FIELD @VA05548 01307000 MVI RECCLR+1,X'00' NOP STORE IN SFBRECS @VA05548 01308000 MVI SIZE+1,SHQBSIZE*8 SIZE OF ONE SHQBLOK @V2A2029 01309000 SPACE 01310000 LA R3,DMKRSPHQ POINTER TO CHAIN OF SYSTEM HOLD 01311000 * QUEUE 01312000 B CHK01 SAVE ENTRIES 01313000 SPACE 2 01314000 EJECT 01315000 ***************************************************************** 01316000 * 01317000 * SUBROUTINES 01318000 * 01319000 ***************************************************************** 01320000 SPACE 01321000 NXTFILE BAL R14,PUTDLM INSERT DELIMITER RECORD @V2A2029 01322000 LA R15,4(,R15) INDEX 01323000 NXTSP B NXTSP(R15) BRANCH ON TABLE 01324000 B CHK02 PUNCH 01325000 B CHK03 READERS 01326000 B CHK04 DELETE CHAIN 01327000 B CHK05 SPOOL RECORD ALLOCATION 01328000 B CHK06 SPOOL HOLD QUEUE BLOKS 01329000 B DONE ALL DONE 01330000 * 01331000 **************************************** 01332000 * 01333000 CHACT EQU * HERE TO PICK UP ACTIVE FILES CHAINED TO PRINTER/PUNCH 01334000 * 01335000 **************************************** 01336000 SPACE 01337000 SPACE 01338000 DROP R7 01339000 DROP R6 01340000 L R6,0(,R5) GET COUNT OF SYSTEM PRINTERS/PUNCHES 01341000 LTR R6,R6 ANY DEVICES PRESENT ?? 01342000 BCR 8,R10 NO -- RETURN TO CALLER 01343000 CHACTNDX LA R5,4(,R5) POINT TO NEXT INDEX ENTRY 01344000 XC ACBUFF(SFBSIZE*8),ACBUFF CLEAR WORK AREA TO ZEROES 01345000 LH R8,0(,R5) GET NEXT INDEX ENTRY 01346000 SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 01347000 A R8,ARIODV POINT TO RDEVBLOK 01348000 CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER ? @V60B9BA 01349000 BNE CHACT3 XFER IF NOT @V60B9BA 01350000 LA R3,ACBUFF USE ACCTING BUFFER TO BUILD @V60B9BA 01351000 * DUMMY SFBLOK @V60B9BA 01352000 MVC SFBDATE(8),=C'DUMMY BK' INDICATE DUMMY BLOK @V60B9BA 01353000 LH R0,RDEVADD GET REAL DEV ADDRESS @V60B9BA 01354000 L R14,RDEVCUA CONTROL BLOK ADDRESS @V60B9BA 01355000 USING RCUBLOK,R14 @V60B9BA 01356000 LH R2,RCUADD CONTROL UNIT ADDRESS @V60B9BA 01357000 OR R0,R2 COMBINE CTL AND DEV ADDR @V60B9BA 01358000 TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE CU @V60B9BA 01359000 BZ *+8 NO- BRANCH @V60B9BA 01360000 L R14,RCUPRIME YES- POINT TO THE PRIME CU @V60B9BA 01361000 L R14,RCUCHA ADDRESS OF CHANNEL BLOK @V60B9BA 01362000 USING RCHBLOK,R14 @V60B9BA 01363000 AH R0,RCHADD ADD CHANNEL AND DEVICE ADDR @V60B9BA 01364000 TM RDEVTYPE,TYPPUN IS IT A PUNCH FILE @V60B9BA 01365000 BZ *+10 NO - @V60B9BA 01366000 MVC SFBSTART(4),SFBPNT MOVE IN FILE STARTING ADDR @V60B9BA 01367000 ST R0,SFBPNT SAVE IN SFBLOK FOR WARMSTART@V60B9BA 01368000 DROP R14 @V60B9BA 01369000 OI SFBPNT+1,X'10' SIGNIFY THE 3800 DUMMY BLK @V60B9BA 01370000 MVC SFBFNAME(8),RDEVIMAG GET THE IMAGE LIBR NAME @V60B9BA 01371000 MVC SFBFTYPE(4),RDEVXSEP CHAR ARR TBL FOR SEP PAGE @V60B9BA 01372000 MVC SFBFLAG,RDEVFSEP FCB FOR SEPARATOR PAGE @V60B9BA 01373000 MVC SFBUFORM,=C'STANDARD' DEFAULT FORM @VA12228 01373500 BAL R14,PUTREC WRITE IT TO WARM START CYL @V60B9BA 01374000 XC ACBUFF(SFBSIZE*8),ACBUFF CLEAR THE BUFFER @V60B9BA 01375000 SPACE 1 @V60B9BA 01376000 * NOW PUT ANY FILES IN THE DELAY PURGE QUEUE INTO THE DELETE Q @V60B9BA 01377000 TM RDEVSTAT,RDEVDED DEDICATED 3800? @VA10546 01377100 BO NXTDEV YES,GO ON TO NEXT DEVICE @VA10546 01377200 SPACE 1 @V60B9BA 01378000 CHACT2 L R3,RDEVDELP ANCHOR FOR THE DELAY PURGE Q @V60B9BA 01379000 LTR R3,R3 ANY FILES IN THE QUEUE ? @V60B9BA 01380000 BZ CHACT3 XFER IF NOT @V60B9BA 01381000 MVC RDEVDELP,SFBPNT DEQUEUE FIRST FILE @V60B9BA 01382000 MVC SFBPNT,DMKRSPDL ENQUEUE IT ON DELETE QUEUE @V60B9BA 01383000 ST R3,DMKRSPDL MAKE IT THE FIRST ONE @V60B9BA 01384000 B CHACT2 DO SAME FOR NEXT FILE @V60B9BA 01385000 CHACT3 DS 0H @V60B9BA 01386000 L R3,RDEVSPL GET ACTIVE FILE POINTER 01387000 LTR R3,R3 IS THERE ONE ?? 01388000 BZ DUMMYBUF NO -- GO USE DUMMY BLOK 01389000 TM RDEVFLAG,RDEVACNT PUNCH WORKING WITH ACCOUNTING 01390000 BO DUMMYBUF YES- ALLREADY SAVED THE FILES 01391000 CLI 0(R3),X'FF' IS THIS THE ADDRESS OF SFBLOK 01392000 BE *+8 YES -- ACTIVE FROM WARM START 01393000 L R3,RSPSFBLK-RSPLCTL(,R3) YES -- GET ADDRESS OF SFBLOK 01394000 LTR R3,R3 IS THERE ONE ?? 01395000 BZ DUMMYBUF NO -- BUILD DUMMY BUFFER 01396000 TM RDEVTYPC,CLASURI INPUT TYPE UNIT RECORD ?? 01397000 BZ GETCLASS NO -- 01398000 XC RDEVSPL(4),RDEVSPL CLEAR ACTIVE DEVICE POINTER 01399000 CLC SFBPNT-SFBLOK(4,R3),=X'00000000' ANY BUFFERS WRITTEN ? 01400000 BE *+10 NO -- 01401000 MVC SFBLAST-SFBLOK(4,R3),SFBPNT-SFBLOK(R3) LAST BUFFER 01402000 * WRITTEN 01403000 OI SFBFLAG2-SFBLOK(R3),SFBPURGE INDICATE OPEN SFBLOK 01404000 MVC SFBPNT-SFBLOK(4,R3),DMKRSPDL CHAIN SFBLOK FIRST ON 01405000 ST R3,DMKRSPDL DELETE CHAIN 01406000 DUMMYBUF LA R3,ACBUFF USE ACCOUNTING BUFFER TO BUILD 01407000 * DUMMY SFBLOK 01408000 MVC SFBDATE(8),=C'DUMMY BK' INDICATE DUMMY BLOK 01409000 GETCLASS L R0,RDEVCLAS GET OUTPUT CLASSES FROM RDEVBLOK 01410000 ST R0,SFBRECS AND SAVE IN SFBLOK (FOR WARM START) 01411000 LH R0,RDEVADD GET REAL DEV ADDRESS 01412000 L R14,RDEVCUA CONTROL BLOK ADDRESS 01413000 USING RCUBLOK,R14 01414000 LH R2,RCUADD CONTROL UNIT ADDRESS 01415000 OR R0,R2 COMBINE CONTROL AND DEVICE ADDRESS 01416000 TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE CU @VA01081 01417000 BZ *+8 NO- BRANCH @VA01081 01418000 L R14,RCUPRIME YES- POINT TO THE PRIME CU @VA01081 01419000 L R14,RCUCHA ADDRESS OF CHANNEL BLOK 01420000 USING RCHBLOK,R14 01421000 AH R0,RCHADD ADD CHANNEL AND DEVICE ADDRESS 01422000 TM RDEVTYPE,TYPPUN IS IT A PUNCH FILE 01423000 BZ *+10 NO - 01424000 MVC SFBSTART(4),SFBPNT MOVE IN FILE STARTING ADDRESS 01425000 ST R0,SFBPNT SAVE IN SFBLOK FOR WARMSTART 01426000 DROP R14 01427000 SPACE 01428000 * 01429000 * X'80' DEVICE OFFLINE 01430000 * X'40' DEVICE DRAINED 01431000 * X'20' SEPARATOR FLAG ON 01432000 * X'10' THIS IS A SPECIAL BLOCK FOR THE 3800 PRINTER 01433000 * 01434000 TM RDEVSTAT,RDEVDISA DEVICE OFFLINE ?? 01435000 BZ *+8 NO -- 01436000 OI SFBPNT+1,X'80' INDICATE OFFLINE 01437000 TM RDEVFLAG,RDEVDRAN DEVICE DRAINED ?? 01438000 BZ *+8 NO -- 01439000 OI SFBPNT+1,X'40' INDICATE DEVICE DRAINED 01440000 TM RDEVFLAG,RDEVSEP SEPARATOR FLAG SET ?? 01441000 BZ *+8 NO -- (NOSEP) 01442000 OI SFBPNT+1,X'20' INDICATE SEP - YES 01443000 OI SFBFLAG,SFBRECER SET SFBRECS IN-COMPLETE 01444000 BAL R14,PUTREC WRITE THE RECORD 01445000 MVC SFBPNT(4),SFBSTART RESET ACTIVE START ADDRESS 01446000 XC SFBRECS(4),SFBRECS CLEAR REC POINTER 01447000 NXTDEV BCT R6,CHACTNDX GO LOOK AT NEXT DEVICE 01448000 BR R10 WHEN FINISHED, RETURN TO CALLER 01449000 DROP R3 @VA12228 01449500 * 01450000 * 01451000 EJECT 01452000 ******************************************* 01453000 * 01454000 * MOVE RECORD TO OUTPUT AREA AND IF FULL WRITE OUT BUFFER TO 01455000 * WARM START CYLINDER 01456000 * 01457000 ******************************************* 01458000 SPACE 01459000 PUTDLM LA R3,DLMREC ADDRESS OF DELIMITER RECORD @V2A2029 01460000 PUTREC LH R2,SIZE GET NUMBER OF BYTES TO BE MOVED 01461000 AH R2,INDEX ADD INDEX TO CURRENT DISPLACEMENT@V2A2029 01462000 C R2,=F'4088' WILL IT OVERFLOW THE BUFFER ?? 01463000 BNH MOVREC NO - MOVE IN RECORD @VA13748 01464100 B *+6 SKIP CLOSE ENTRY @V2A2029 01465000 CLOSE SR R3,R3 INDICATE CLOSE REQUEST @V2A2029 01466000 SPACE 01467000 LH R1,INDEX REFRESH RECORD DISPLACEMENT @V2A2029 01468000 LA R1,RECBUFF(R1) ADD INDEX TO NEXT POSITION 01469000 MVC 0(8,R1),=8X'FE' LAST RECORD IN THIS BUFFER 01470000 B *+8 .. @V2A2029 01471000 RDWR L R3,X8FF INDICATE READ OR WRITE ONLY @V2A2029 01472000 ST R3,MVCADD SAVE MOVE DATA ADDRESS @V2A2029 01473000 CLC SEEK+2(2),CYLEND WARMSTART CYLINDERS FULL ? @V2A2029 01474000 BH MSG911W YES-LOOP OR LOT OF SPOOL FILES @V2A2029 01475000 SR R2,R2 .. @V2A2029 01476000 CH R2,SEEK+2 SEEK TO CYLINDER ZERO ?? @V2A2029 01477000 BE MSG910W YES - INVALID WARM START CYL @V2A2029 01478000 LA R2,SEEK WARMSTRT CYL SEEK ADDRESS @V56BDA8 01479000 STCM R2,B'0111',READHAR0+1 STORE IN CASE TCC @V56BDA8 01480000 LA R2,DISKSRCH SEARCH CCW @V56BDA8 01481000 STCM R2,B'0111',ALTTIC+1 IN CASE OF ALTERNATE TRACK @V56BDA8 01482000 LA R0,100 RETRY COUNT @V2A2029 01483000 DSKSIO LA R2,DSKCCW ADDRESS OF CCWS @V2A2029 01484000 ST R2,CAW SET UP CAW @V2A2029 01485000 DSKSIO1 EQU * @V56BDA8 01486000 L R2,DMKSYSWM -> WRM area cyls info HRC075DK 01487000 LH R2,4(,R2) Get CUU of WRM area volume HRC075DK 01487500 SIO 0(R2) START IO @V2A2029 01488000 BC 1,MSG902W CC=3, NOT OPERATIONAL @V2A2029 01489000 BC 2,DSKBWAIT CC=2, CHANNEL OR SUBCANNEL BUSY 01490000 BC 4,DSKSTOR CC=1, CSW STORED 01491000 MVC IONPSW(8),IOINTP SET FOR INTERRUPT 01492000 WAITI LPSW IWAIT WAIT FOR INTERRUPT 01493000 * 01494000 IOINT EQU * HRC075DK 01495000 CH R2,INTTIO RIGHT DEVICE ? HRC075DK 01495500 BNE CHKIOINT NO, CHECK UC & WAIT FOR OURS @V407438 01496000 MVC SAVECSW(12),CSW SAVE CSW AND CAW 01497000 MVC SAVEDEV(4),184 SAVE DEVICE ADDRESS 01498000 CLC CSW+4(2),=AL1(CE+DE,0) ANY ERRORS ?? 01499000 BE DSKOK NO-RECORD WRITTEN SUCCESSFULL 01500000 DSKSNS LA R3,SNSECCW GET ADDRESS OF SENSE CCW @V2A2029 01501000 ST R3,CAW AND STORE IN CAW @V2A2029 01502000 TIO 0(R2) CLEAR IT 01503000 BC 6,*-4 LOOP IF BUSY OR STATUS STORED 01504000 SIO 0(R2) START IO 01505000 TIO 0(R2) TEST IO 01506000 BC 6,*-4 LOOP IF BUSY OR STATUS STORED 01507000 TM SENSDATA,TRKCONCK TRACK CONDITION CHECK? @V56BDA8 01508000 BZ CKPCNT NO, RETRY @V56BDA8 01509000 MVC CAW+1(3),=AL3(READHAR0-DMKCKP+X'800') @V56BDA8 01510000 TIO 0(R2) DRAIN ANYTHING PENDING @V56BDA8 01511000 BC 7,*-4 KEEP TRYING @V56BDA8 01512000 SIO 0(R2) READ R0 @V56BDA8 01513000 BC 7,*-4 TAKE ERROR PATH @V56BDA8 01514000 TIO 0(R2) TEST FOR COMPLETION @V56BDA8 01515000 BC 7,*-4 TRY AGAIN @V56BDA8 01516000 CLC CSW+4(2),=AL1(CE+DE,0) CLEAN END? @V56BDA8 01517000 BNE CKPCNT NO, ERROR @V56BDA8 01518000 MVC CAW+1(3),=AL3(ALTSEEK-DMKCKP+X'800') @V56BDA8 01519000 BCT R0,DSKSIO1 RESTART ON ALTERNATE TRACK @V56BDA8 01520000 B MSG902W FATAL I/O ERROR - WARM CYLINDER @V56BDA8 01521000 SPACE 1 01522000 CKPCNT EQU * @V56BDA8 01523000 BCT R0,DSKSIO BRANCH IF COUNT NOT ZERO @V2A2029 01524000 B MSG902W FATAL I/O ERROR-WARM CYL @V2A2029 01525000 SPACE 01526000 DSKOK ICM R3,B'1111',MVCADD ENTRY POINT RDWR ?? @V2A2029 01527000 BMR R14 YES - RETURN TO CALLER @V2A2029 01528000 SR R3,R3 01529000 IC R3,REC GET RECORD WRITTEN 01530000 CLM R3,B'0001',PAGECYL REACH END OF CYLINDER ? @V2A2029 01531000 BL NXTRCD NO -- UPDATE RECORD COUNT @V2A2029 01532000 LH R2,SEEK+2 GET SEEK ADDRESS @V2A2029 01533000 LA R2,1(,R2) UPDATE TO NEXT CYLINDER @V2A2029 01534000 STH R2,SEEK+2 AND STORE IN SEEK FIELD @V2A2029 01535000 SR R3,R3 START WITH RECORD ONE @V2A2029 01536000 NXTRCD LA R3,1(,R3) UPDATE RECORD NUMBER @V2A2029 01537000 STC R3,REC NEXT RECORD 01538000 BCTR R3,0 -1 AND FIND HEAD 01539000 CLI TYPE,TYP2314 IS IT 2314, 2319 TYPE ?? 01540000 BE HD2314 YES 01541000 SR R2,R2 CLEAR WORK REG @V2A2029 01542000 CLI TYPE,TYP3340 3340 ? @V2A2029 01543000 BE HD3340 YES -- @V2A2029 01544000 CLI TYPE,TYP3350 3350 ? @V304498 01545000 BE HD3350 YES -- @V304498 01546000 CLI TYPE,TYP3375 3375 ? HRC106DK 01546100 BE HD3375 Yes -- HRC106DK 01546200 CLI TYPE,TYP3380 3380 ? HRC106DK 01546300 BE HD3380 Yes -- HRC106DK 01546400 D R2,=F'3' FOR 3330 DIVIDE BY 3 PAGES PER TRACK 01547000 B STOREHD 01548000 SPACE 01549000 HD3340 D R2,=F'2' DIVIDE BY 2 PAGES PER TRACK @V2A2029 01550000 B STOREHD AND STORE HEAD @V2A2029 01551000 SPACE 01552000 HD3350 D R2,=F'4' DIVIDE BY 4 PAGES PER TRACK @V304498 01553000 B STOREHD AND STORE HEAD @V304498 01554000 SPACE 01555000 HD3375 D R2,=F'8' Divide by 8 Pages per track HRC106DK 01555100 B STOREHD And store head HRC106DK 01555200 SPACE 1 HRC106DK 01555300 HD3380 D R2,=F'10' Divide by 10 Pages per track HRC106DK 01555400 B STOREHD And store head HRC106DK 01555500 SPACE 1 HRC106DK 01555600 HD2314 IC R3,HDTABLE(R3) INDEX INTO TABLE AND GET HEAD NUMBER 01556000 STOREHD STC R3,HEAD+1 STORE HEAD IN SEARCH AREA 01557000 SPACE 01558000 LA R0,RECBUFF CLEAR OUTPUT BUFFER 01559000 L R1,=F'4096' TO X'FF' @V2A2029 01560000 SR R2,2 .. 01561000 STH R2,INDEX ZERO INDEX VALUE @V2A2029 01562000 SR R3,R3 .. 01563000 ICM R3,B'1000',X8FF .. @V2A2029 01564000 MVCL R0,R2 MOVE FF TO BUFFER 01565000 LA R3,DLMREC SET UP TO MOVE IN FIRST RECORD 01566000 LR R0,R14 SAVE RETURN ADDRESS @V2A2029 01567000 LH R14,RECCNT GET CURRENT RECORD COUNT 01568000 LA R14,1(R14) UPDATE BY ONE 01569000 STH R14,RECCNT AND STORE 01570000 BAL R14,MOVREC MOVE RECORD TO BUFFER AREA 01571000 LR R14,R0 RESTORE RETURN ADDRESS @V2A2029 01572000 SPACE 01573000 MVC RECBUFF(8),=8X'EE' MOVE IF EES ALL BUFFERS EXCEPT FIRST 01574000 ICM R3,B'1111',MVCADD ANY DATA TO BE MOVED ? @V2A2029 01575000 BNPR R14 BRANCH IF MINUS OR ZERO @V2A2029 01576000 MOVREC LH R1,INDEX DISPLACEMENT INTO BUFFER 01577000 LA R1,RECBUFF(R1) INDEX TO NEXT POSITION 01578000 LH R2,SIZE SIZE OF RECORD 01579000 BCTR R2,0 -1 01580000 EX R2,MOVBUF AND MOVING RECORD 01581000 CLI SIZE+1,SPSFBSZ*8 WRITING SFBLOK FOR VM/SP? @VA12228 01581100 BNE NOTSPSFB SKIP IF NOT @VA12228 01581200 USING SFBLOK,R1 @VA12228 01581300 MVC SFBUFORM,=C'STANDARD' STANDARD FORM NUMBER @VA12228 01581400 MVC SFBOFORM,=C'STANDARD' FOR USER AND OPER @VA12228 01581500 DROP R1 @VA12228 01581600 NOTSPSFB DS 0H @VA12228 01581700 LH R1,INDEX GET COUNT 01582000 AH R1,SIZE INCREMENT 01583000 STH R1,INDEX SAVE 01584000 LH R1,RECCNT GET RECORD COUNT 01585000 LA R1,1(R1) UPDATE BY ONE 01586000 STH R1,RECCNT AND STORE 01587000 BR R14 RETURN 01588000 * 01589000 MOVBUF MVC 0(*-*,R1),0(R3) EXECUTED MOVE 01590000 * 01591000 EXOI OI 0(R14),X'00' SET MASK FOR RESOURCE @V200829 01592000 EJECT 01593000 SPACE 01594000 LTORG 01595000 EJECT 01596000 DS 0F @V407429 01597000 CKPBUFF EQU * @V407429 01598000 SPACE 01599000 ************************************************** 01600000 * 01601000 * CHAIN POINTERS AND EXTERNAL ADDRESSES NEEDED BY 01602000 * DMKCKP TO SAVE SYSTEM STATUS FOR WARM START. 01603000 * THE FOLLOWING LIST IS MOVED FROM DMKRSP 01604000 * POINTED TO BY ARSPPR ADDRESS IN PSA 01605000 * 01606000 ************************************************** 01607000 * 01608000 RSPLIST DS CL4 CL4'PRT' 01609000 DMKRSPPR DS 1F PRINTER FILE CHAIN 01610000 DS CL4 CL4'PUN' 01611000 DMKRSPPU DS 1F PUNCH FILE CHAIN 01612000 DS CL4 CL4'RDR' 01613000 DMKRSPRD DS 1F READER FILE CHAIN 01614000 DS CL4 CL4'DEL' 01615000 DMKRSPDL DS 1F DELETE FILE CHAIN 01616000 DS CL4 CL4'ACNT' 01617000 DMKRSPAC DS 1F ACCOUNT FILE CHAIN 01618000 DS CL4 CL4'DUMP' @V67CAH7 01618300 DMKRSPDP DS 1F DUMP IN PROGRESS CHAIN @V67CAH7 01618600 DS CL4 CL4'HOLD' 01619000 DMKRSPHQ DS 1F HOLD QUEUE CHAIN 01620000 DS CL4 CL4'ID' 01621000 DMKRSPID DS 1H SYSTEM SPOOL ID COUNTER 01622000 DS 1H X'FFFF' FILLER 01623000 DMKOPRWT DS 1F V(DMKOPRWT) ADDRESS OF CONSOLE WRITE ROUTINE @V200820 01624000 DMKSYSOW DS 1F V(DMKSYSOW) ADDRESS OF SYSTEM OWNLIST 01625000 DMKSYSOC DS 1F V(DMKSYSOC) POINTER TO NUMBER OF ENTRIES 01626000 DMKSYSTP DS 1F V(DMKSYSTP) POINTER TO SYSRES TYPE 01627000 DMKSYSWM DS 1F V(DMKSYSWM) ADDRESS OF WARMSTART CYLINDER 01628000 DMKTMRPT DS 1F V(DMKTMRPT) VMVTIME CONVERT ROUTINE 01629000 DMKRSPCV DS 2F CHECK POINT-WARMSTART CYLINDER ID 01630000 DMKSYSRM DS 1F V(DMKSYSRM) ADDRESS OF REAL @VA02884 01631000 * STORAGE SIZE 01632000 DMKRSPMN DS 1F OPEN MONITOR FILE @V50A2B5 01633000 SPACE 01634000 LISTSIZE EQU *-RSPLIST SIZE OF LIST IN DMKRSP 01635000 SPACE 01636000 ************************************************* 01637000 * 01638000 * PROGRAM CHECK SAVE AREA 01639000 * 01640000 ************************************************* 01641000 SPACE 01642000 DS 0F 01643000 CLR1 EQU * 01644000 SAVECSW DS 2F ERROR CSW 01645000 DS 1F ERROR CAW 01646000 SAVEDEV DS 1F ERROR DEVICE ADDRESS 01647000 SAVEPSW DS 2F PSW AT TIME OF ERROR 01648000 SAVECODE DS 2F SVC AND PROGRAM INT CODE 01649000 CKPSAVE DS 16F R0-R15 REGISTER SAVE 01650000 SAVERDEV DS 1F RDEVBLOK SAVE AREA @V200829 01651000 EJECT 01652000 SPACE 01653000 ************************************************* 01654000 * 01655000 * SAVE AND WORK AREA 01656000 * 01657000 ************************************************* 01658000 DS 0D 01659000 SAVEWRK2 DS 1D WORK AREA FOR ACCOUNTING 01660000 CYLSTART DS 1H FIRST WARMSTART CYLINDER ADDRESS @V2A2029 01661000 CYLEND DS 1H LAST WARMSTART CYLINDER ADDRESS @V2A2029 01662000 INDEX DS 1H DISPLACEMENT INTO BUFFER @V2A2029 01663000 SIZE DS 1H LOGICAL RECORD SIZE @V2A2029 01664000 SENSDATA DS CL24 SENSE DATA AREA @V2A2029 01665000 STUSER DS 1F FIRST VMBLOK (ACCOUNTING) 01666000 MVCADD DS 1F DATA ADDRESS SAVE AREA 01667000 STORSIZE DS 1F SIZE OF REAL STORAGE @VA02884 01668000 TERMEND DS 1F ADDRESS OF TERMINAL BUFFER END @V200829 01669000 ACNTSW DS 1X ACNT SWITCH 01670000 TYPE DS 1X SYSRES DEVICE TYPE CODE 01671000 PAGECYL DS 1X PAGES PER CYLINDER @V2A2029 01672000 SPACE 01673000 CLR1SIZE EQU *-CLR1 01674000 SPACE 01675000 ************************************************* 01676000 * 01677000 * WORK BUFFER AREA 01678000 * 01679000 ************************************************* 01680000 SPACE 01681000 DS 0F 01682000 ALLOCBUF EQU * ALLOCATE BUFFER AREA 01683000 ACBUFF EQU * ACCOUNTING BUFFER AREA 01684000 DS CL128 BUFFER AREA 01685000 DS 0F 01686000 X8FF EQU * @V2A2029 01687000 DLMREC DS 8X DELIMITER DATA RECORDS 01688000 HASH DS 6X PLACE FOR HASH NUMBER 01689000 RECCNT DS 1H NUMBER OF RECORDS PROCESSED 01690000 DATETIME DS 8X DMKSYS DATE TIME 01691000 DS 99X REST OF DELIMITER BUFFER 01692000 DS 0F 01693000 CLRFSIZE EQU *-DLMREC SIZE OF BUFFER AREA 01694000 SPACE 01695000 ************************************************* 01696000 * 01697000 * START OF CHECKPOINT OUTPUT BUFFER (4096 BYTES) 01698000 * 01699000 ************************************************* 01700000 SPACE 01701000 RECBUFF EQU * 01702000 BUFFDLM DS 8X FIRST 8 BYTES OF BUFFER 01703000 BUFFHASH DS 6X HASH COUNT 01704000 BUFFCNT DS 1H RECORD COUNT 01705000 BUFFVER DS X VERSION OF WARM START DATA @VA12228 01706000 VERNULL EQU X'FF' NULL VERSION NUMBER @VA12228 01706200 VERR6 EQU X'01' RELEASE 6 VERSION OF WARM START @VA12228 01706400 VERSP EQU X'02' VM/SP VERSION OF WARM START @VA12228 01706600 DS 7X @VA12228 01706800 BUFFCV DS 8X CKP WARMSTART CYL CLOCK VALUED 01707000 BUFFID DS 8X BUFFER ID @V200829 01708000 SPACE 01709000 EJECT 01710000 PSA , @V306638 01711000 COPY ACCOUNT @V306638 01712000 COPY ALLOC @V306638 01713000 COPY CORE @V306638 01714000 COPY DEVTYPES @V306638 01715000 COPY EQU @V306638 01716000 COPY IOBLOKS @V306638 01717000 COPY NETWORK @V306638 01718000 COPY RBLOKS @V306638 01719000 COPY SPOOL @V306638 01720000 SFBLOK DSECT , CONTINUATION OF SFBLOK @VA12228 01720100 ORG , WITH VM/SP SFBLOK DEFINITIONS @VA12228 01720200 SFBUFORM DS D USER FORM @VA12228 01720300 SFBOFORM DS D OPERATOR FORM @VA12228 01720400 SPSFBSZ EQU (*-SFBLOK+7)/8 VM/SP SFBLOK IS 2 DWRDS LONGER @VA12228 01720500 SPRCSZ EQU 8 VM/SP RECBLOK IS 8 DOUBLEWORDS @VA12228 01720600 SYSLOCS , @V306638 01721000 COPY VBLOKS @V306638 01722000 COPY VMBLOK @V306638 01723000 END 01724000