ibm:vm370-lib:cp:dmkckp.assemble_src
Table of Contents
DMKCKP Source
References
- Fixes Applied : 17
- This Source Date : Wednesday, December 13, 1978
- Last Fix ID : [HRC076DK]
Source Listing
- DMKCKP.ASSEMBLE.txt
- 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
ibm/vm370-lib/cp/dmkckp.assemble_src.txt ยท Last modified: 2023/08/06 13:36 by Site Administrator