INI TITLE 'DMTINI (RSCS) VM/370 - RELEASE 6' 00001000 *. 00002000 * MODULE NAME - 00003000 * 00004000 * DMTINI 00005000 * 00006000 * FUNCTION - 00007000 * 00008000 * DMTINI RECEIVES CONTROL AFTER INITIAL LOADING OF RSCS, 00009000 * AND PERFORMS INITIALIZATION FUNCTIONS WHICH ARE GENERAL 00010000 * AND COMMON TO ALL PARTS OF THE SUBSYSTEM. DMTINI 00011000 * OPTIONALLY WRITES A COPY OF THE INITIAL LOAD TO DASD 00012000 * ACCORDING TO OPERATOR INSTRUCTIONS WHEN THE SUBSYSTEM 00013000 * IS FIRST LOADED FROM THE GENERATION IPL DECK. 00014000 * WHEN IPL'ED FROM DISK, DMTINI COMPLETES READING 00015000 * OF THE SAVED SUBSYSTEM LOAD. WHEN IPL DISK WRITING 00016000 * OR READING IS COMPLETE, DMTINI PERFORMS ITS RSCS 00017000 * INITIALIZATION FUNCTIONS. 00018000 * 00019000 * ATTRIBUTES - 00020000 * 00021000 * RESUABLE 00022000 * 00023000 * ENTRY POINTS - 00024000 * 00025000 * DMTINI - READ A NUCLEUS INTO MAIN STORAGE 00026000 * DMTINIW - WRITE A NUCLEUS ONTO A DASD DEVICE 00027000 * 00028000 * ENTRY CONDITIONS - 00029000 * 00030000 * DMTINI IS ENTERED AT DMTINI FROM THE DASD IPL LOADER, 00031000 * AND AT DMTINIW FROM THE GENERATION LOAD DECK LOADER. 00032000 * 00033000 * EXIT CONDITIONS - 00034000 * 00035000 * NORMAL - 00036000 * AFTER THE RSCS STORAGE AREAS ARE INITIALIZED, DMTINI 00037000 * EXITS TO THE MSUP DISPATCHER BY MEANS OF BALR R14,R15. 00038000 * 00039000 * ERROR - 00040000 * WHEN ERROR CONDITIONS ARE ENCOUNTERED, DMTINI CEASES 00041000 * PROCESSING AND TYPES A DIAGNOSTIC MESSAGE ON THE 00042000 * OPERATOR CONSOLE. 00043000 * 00044000 * CALLS TO OTHER ROUTINES - 00045000 * 00046000 * DMTQRQ - TO REQUEST A FREE SUPERVISOR QUEUE ELEMENT 00047000 * DMTDSP - TO BEGIN RSCS DISPATCHING 00048000 * 00049000 * EXTERNAL REFERENCES - 00050000 * 00051000 * DMTEXT - EXTERNAL INTERRUPT HANDLER ENTRY POINT 00052000 * DMTSVC - SVC INTERRUPT HANDLER ENTRY POINT 00053000 * DMTIOMIN - I/O INTERRUPT HANDLER ENTRY POINT 00054000 * DMTMAPME - ADDR OF END OF MAIN (VIRTUAL) STORAGE MAP 00055000 * DMTCREDA - ADDR OF DMTCRE DASD I/O REQUEST TABLE 00056000 * DMTREXVL - RSCS LOAD DATE AND TIME BUFFER 00057000 * DMTMAPQE - END OF SUPERVISOR QUEUE 00058000 * 00059000 * 00060000 * TABLES / WORKAREAS - 00061000 * 00062000 * TASKE - MSUP TASK ELEMENT (FOR INITIAL TASK, REX) 00063000 * FREEE - MSUP FREE ELEMENT (FOR SUPQUEUE INITIALIZATION) 00064000 * DEVTAB - DEVICE TABLE (FOR CONSOLE AND SYSTEM DASD ADDRS) 00065000 * 00066000 * REGISTER USAGE - 00067000 * 00068000 * GPR 0 = IPL DISK DEVICE ADDRESS 00069000 * GPR 1 = CCW STRING STARTING ADDRESS 00070000 * GPR 2 = CURRENT CYLINDER NUMBER 00071000 * GPR 3 = CURRENT TRACK NUMBER 00072000 * GPR 4 = DASD RECORD LENGTH = 800 00073000 * GPR 5 = CURRENT STORAGE RANGE END 00074000 * GPR 6 = CURRENT STORAGE RANGE START 00075000 * GPR 7 = POINTER TO NEXT RANGE VALUES 00076000 * GPR 8 = CHANNEL COMMAND WORD LENGTH = 8 00077000 * GPR 9 = CCW STRING ENDING ADDRESS 00078000 * GPR 10 = CURRENT CCW ADDRESS 00079000 * GPR 11 = MODULE BASE REGISTER 00080000 * GPR 12 = SEARCH ADDRESS POINTER 00081000 * GPR 13 = CONSOLE DEVICE ADDRESS 00082000 * GPR 14 = LINKAGE REGISTER 00083000 * GPR 15 = SCRATCH REGISTER 00084000 * 00085000 * NOTES - 00086000 * 00087000 * IF AN I/O ERROR OCCURS WHILE WRITING A NUCLEUS, THE FIRST TWO 00088000 * SENSE BYTES ARE STORED AT LOCATIONS 2 AND 3, THE SECOND HALF 00089000 * OF THE PSW IS STORED IN LOCATIONS 4 TO 7, AND THE CSW IS SAVED 00090000 * IN LOCATIONS 8 TO 15 IN MEMORY. IF AN I/O ERROR OCCURS WHILE 00091000 * READING A NUCLEUS, THE WAIT STATE IS ENTERED AND THE INSTRUC- 00092000 * TION ADDRESS FIELD OF THE PSW CONTAINS THE CHARACTERS ' INI'. 00093000 * 00094000 * OPERATION - 00095000 * 00096000 * DMTINIR - READ A NUCLEUS INTO MAIN STORAGE 00097000 * 00098000 * 1. STORE THE DATA ADDRESS IN THE READ CCWS. 00099000 * 00100000 * 2. READ ONE TRACK OF THE NUCLEUS FROM THE IPL DEVICE. 00101000 * 00102000 * 3. IF THE NUCLEUS IS NOT COMPLETELY READ, GO TO STEP 1. 00103000 * 00104000 * 4. GO TO LABEL INIEXIT TO CONTINUE WITH THE INITIALIZATION. 00105000 * 00106000 * DMTINIW - WRITE A NUCLEUS ONTO A DASD DEVICE 00107000 * 00108000 * 1. SEE IF A CONSOLE EXISTS AT ADDRESS 009. IF NOT, WAIT FOR 00109000 * AN INTERRUPT FROM A CONSOLE DEVICE. 00110000 * 00111000 * 2. ASK THE USER TO ENTER THE SYSTEM DISK ADDRESS. 00112000 * 00113000 * 3. ASK THE USER IF HE WANTS TO WRITE THE NUCLEUS ONTO A DASD 00114000 * DEVICE. IF HE DOES NOT, GO TO LABEL INIEXIT. 00115000 * 00116000 * 4. ASK THE USER FOR THE IPL DEVICE ADDRESS AND VERIFY THAT 00117000 * IS A SUPPORTED DASD TYPE DEVICE. 00118000 * 00119000 * 5. INITIALIZE THE DEVICE TYPE DEPENDENT VALUES. 00120000 * 00121000 * 6. ASK THE USER FOR THE CYLINDER NUMBER ON WHICH TO WRITE 00122000 * THE NUCLEUS AND VERIFY THAT THE NUCLEUS WILL NOT OVERLAY 00123000 * ANY CMS FILES ON THE DISK. 00124000 * 00125000 * 7. ASK THE USER IF THE IPL TEXT IS ALSO TO BE WRITTEN ON 00126000 * CYLINDER 0 AND SET THE SWITCH ACCORDINGLY. 00127000 * 00128000 * 8. WRITE THE IPL TEXT ON THE NUCLEUS CYLINDER AND ON 00129000 * CYLINDER 0 IF REQUESTED. 00130000 * 00131000 * 9. STORE THE DATA ADDRESS IN THE WRITE CCWS AND THE CYLINDER 00132000 * NUMBER IN THE SEEK AND SEARCH ADDRESSES. 00133000 * 00134000 * 10. WRITE ONE TRACK OF THE NUCLEUS ONTO THE IPL DEVICE. 00135000 * 00136000 * 11. IF THE NUCLEUS IS NOT COMPLETELY WRITTEN, GO TO STEP 10. 00137000 * 00138000 * 12. GO TO LABEL INIEXIT TO CONTINUE WITH THE INITIALIZATION. 00139000 * 00140000 * INIEXIT - COMPLETE INITIALIZATION AND BEGIN PROCESSING 00141000 * 00142000 * 1. ACQUIRE THE DASD DEVICE TYPE FROM VM/370, AND SET 00143000 * THE DASD CUU ADDR, TYPE CODE, AND DEVICE DEPENDENT 00144000 * VARIABLE TABLE IN THE DMTCRE DASD ACCESS CONTROL AREA. 00145000 * 00146000 * 2. CLEAR THE FIRST 88 BYTES OF LOW VIRTUAL STORAGE, 00147000 * CLEAR THE GENERAL REGISTERS, SET THE TIMER WORD TO 00148000 * X'FFFFFFFF', AND SET THE RSCS NEW PSW VALUES. 00149000 * 00150000 * 3. INITIALIZE THE MAIN STORAGE MAP AND MAIN STORAGE 00151000 * SIZE WORD. 00152000 * 00153000 * 4. INITIALIZE THE SUPERVISOR QUEUE AND SET ALL ELEMENTS 00154000 * FREE TO START. 00155000 * 00156000 * 5. REQUEST A FREE SUPERVISOR QUEUE ELEMENT, BUILD AND 00157000 * ENQUEUE THE REX TASK ELEMENT. 00158000 * 00159000 * 6. RESERVE REX TASK STORAGE IN THE MAIN STORAGE MAP. 00160000 * 00161000 * 7. EXIT TO THE RSCS DISPATCHER TO BEGIN PROCESSING. 00162000 *. 00163000 EJECT 00164000 PUNCH 'SPB ' 00165000 DMTINI CSECT 00166000 DMTINIR EQU * ENTERED HERE FROM CP IPL SIMULATOR 00167000 BALR R11,0 LOAD BASE FOR COMMON ADDRESSABILITY 00168000 BCTR R11,0 ... 00169000 BCTR R11,0 ... 00170000 USING DMTINIR,R11 00171000 USING TASKE,R1 GET TASK ELEMENT ADDRESSABILITY 00172000 USING SVECTORS,0 GET SVECTORS ADDRESSABILITY 00173000 SSM DISABLED RUN DISABLED FOR ALL I/O INTERUPTS 00174000 LH R0,IPLPSW+2 LOAD THE IPL DEVICE ADDRESS 00175000 L R1,CCWBGNR POINT TO CCW STRING TO READ IN NUCLEUS 00176000 LH R2,RDCYLNO LOAD THE NUCLEUS STARTING CYLINDER NUMBER 00177000 SR R3,R3 SET THE HEAD NUMBER TO ZERO 00178000 LA R4,800 SET THE RECORD LENGTH TO 800 00179000 LM R5,R7,RANGE1 LOAD LIMITS OF 1ST RANGE TO BE READ 00180000 LA R8,8 LOAD THE CCW LENGTH 00181000 L R9,CCWENDR LOAD ADDRESS OF LAST CCW TO BE BUILT 00182000 LA R10,RDCCW3 START READING AT RECORD 3 00183000 B STORESA BUILD THE REST OF THE CCW CHAIN 00184000 SPACE 00185000 ENDRANGE LTR R7,R7 DID WE READ THE LAST RANGE? 00186000 BZ FLAGEND YES, STOP BUILDING THE CCW CHAIN 00187000 LM R5,R7,0(R7) LOAD LIMITS NEXT RANGE TO BE READ 00188000 B STORESA 00189000 SPACE 00190000 FLAGEND BCTR R7,0 MAKE POINTER TO NEXT RANGE NEGATIVE 00191000 SR R10,R8 BACKUP TO THE PREVIOUS CCW 00192000 CLI 0(R10),RDDATA IS THIS A READ DATA CCW ? 00193000 BNE INIRDONE NO, NO MORE TO READ 00194000 MVI 4(R10),SILI TURN THE COMMAND CHAINING FLAG OFF 00195000 B DIAGRD READ IN THE REMAINDER OF THE NUCLEUS 00196000 SPACE 00197000 READLOOP AH R3,TRKINC ADD TRACK INCREMENT TO THE TRACK NUMBER 00198000 CH R3,TRKMAX IS THIS THE END OF A CYLINDER 00199000 BL STTRKAD NO, CONTINUE BUILDING CCWS 00200000 SR R3,R3 YES, ZERO THE TRACK NUMBER AND 00201000 LA R2,1(,R2) ADD ONE TO THE CYLINDER NUMBER 00202000 STH R2,RDCYLNO UPDATE THE CURRENT SEEK ADDRESS 00203000 STTRKAD STH R3,RDTRKNO ... 00204000 LA R10,RDCCW1 POINT TO THE 1ST READ DATA CCW 00205000 ADDRLOOP BXH R6,R4,ENDRANGE ADD 800 TO DATA ADDR & GO IF END OF RANGE 00206000 STORESA ST R6,0(,R10) STORE THE DATA ADDRESS IN THE CCW 00207000 MVI 0(R10),RDDATA MOVE IN A READ DATA COMMAND CODE 00208000 BXLE R10,R8,ADDRLOOP POINT TO NEXT CCW AND LOOP IF MORE 00209000 DIAGRD DC X'83010020' READ THE NUCLEUS INTO MAIN STORAGE 00210000 BNZ RDERROR BRANCH IF ANY ERROR OCCURS 00211000 LTR R7,R7 IS THE NUCLEUS COMPLETELY IN ? 00212000 BNM READLOOP NO, READ IN ANOTHER TRACK WORTH 00213000 INIRDONE EQU * 00214000 INIEXIT EQU * 00215000 LR R2,R0 DASD DEV ADDR 00216000 DIAG R2,R3,X'24' GET DEVICE TYPE 00217000 BC 7,RDERROR QUIT IF DEVTYPE FAILS 00218000 L R1,=V(DMTCREDA) GET LOADER I/O TABLE ADDR 00219000 STCM R3,B'0100',DEVCODE-IOTABLE(R1) TYPE TO LOADER 00220000 STH R0,DEVCUU-IOTABLE(R1) GIVE DISK ADDR TO LOADER 00221000 LA R4,RSCS2314 ASSUME TYPE = 2314 00222000 CLI DEVCODE-IOTABLE(R1),TYP2314 CORRECT? 00223000 BE INITMOVE YES - MOVE TABLE 00224000 LA R4,RSCS3330 ASSUME TYPE = 3330 00225000 CLI DEVCODE-IOTABLE(R1),TYP3330 CORRECT? 00226000 BE INITMOVE YES - MOVE TABLE 00227000 LA R4,RSCS3350 ASSUME TYPE = 3350 @V304498 00227100 CLI DEVCODE-IOTABLE(R1),TYP3350 CORRECT? @V304498 00227200 BE INITMOVE YES - MOVE TABLE @V304498 00227300 LA R4,RSCS3340 ASSUME TYPE = 3340 00228000 CLI DEVCODE-IOTABLE(R1),TYP3340 CORRECT? 00229000 BNE RDERROR QUIT IF UNSUPPORTED DEVICE 00230000 INITMOVE EQU * 00231000 MVC 44(32,R1),0(R4) GIVE DASD TYPE INFO - LOADER @V304498 00232100 XC IPLPSW(88),IPLPSW CLEAR LOW CORE TO START OF NEW 00233000 LM R0,R10,IPLPSW AND CLEAR ALL THE REGISTERS 00234000 LM R12,R15,IPLPSW AND CLEAR ALL THE REGISTERS 00235000 SR R1,R1 CLEAR REG.R1 00236000 BCTR R1,0 REG.1 = -1 00237000 ST R1,TIMER SET TIMER WORD TO X'FFFFFFFF' 00238000 SCKC FFS SET HI VALUE FOR CLOCK COMPARATOR@VA03349 00238100 LCTL C0,C0,RSCSCR0 ENAB. CLOCK COMP UNDER CTL OF PSW@VA03349 00238200 MVC NEWEXT(40),LOWCORE INITIALIZE THE NEW PSW'S 00239000 SPACE 00240000 L R1,MAINMAP REG.1 = ADDRESS OF MAIN STORAGE MAP 00241000 L R2,MAPEND REG.2 = ADDRESS OF END OF STORAGE MAP 00242000 SLR R2,R1 REG.2 = LENGTH OF MAP IN BYTES 00243000 ST R2,MAINSIZE SET MAIN STORAGE SIZE IN VECTOR AREA 00244000 BCTR R2,0 DECREMENT FOR CLEAR MVC 00245000 EX R2,MAPCLEAR SET ALL PAGES FREE TO START 00246000 * NOTE THAT THIS LIMITS FREE STORAGE SIZE TO 256 PAGES (1 MEG) 00247000 MVI 0(R1),X'FF' SET PAGE ZERO TO SYSTEM ID 00248000 MVI 1(R1),X'FF' AND PAGE ONE TOO 00249000 SPACE 00250000 MVI 2(R1),X'FF' AND PAGE TWO TOO @VA03349 00251100 LA R3,3 SET FIRST FREE PAGE NUMBER @VA03349 00251200 SLL R3,12 FIRST FREE STORAGE ADDRESS 00252000 L R1,=V(DMTMAPQE) ADDR OF END OF SUP QUEUE 00253000 SL R1,=F'16' ADDR OF LAST SUP QUEUE ELEMENT 00254000 LA R2,2 SET SUP QUEUE EXTRN PAGE NUM @VA03349 00255100 SLL R2,12 SUP QUEUE EXTN ADDR 00256000 ST R2,FREENEXT-FREEE(R1) CHAIN TO EXTN 00257000 LR R1,R2 SET FIRST EXTN ELEM ADDR 00258000 INIQFREE EQU * 00259000 LA R2,16(R1) NEXT PIECE TO BE FREE ELEMENT 00260000 CLR R2,R3 PAST LIMIT YET? 00261000 BNL INIQDONE YES - SET CHAIN TERMINATOR 00262000 ST R2,FREENEXT-FREEE(R1) CHAIN CURRENT TO NEXT 00263000 LR R1,R2 MAKE NEXT CURRENT 00264000 B INIQFREE AND DO ANOTHER ELEMENT 00265000 INIQDONE EQU * 00266000 SR R2,R2 CLEAR NEXT POINTER 00267000 ST R2,FREENEXT-FREEE(R1) TERMINATE FREE CHAIN 00268000 MVC FREEQ(4),QUEUE SET ALL ELEMENTS FREE TO START 00269000 SPACE 00270000 SR R1,R1 CLEAR REG.R1 FOR QUEUE ELEMENT GET 00271000 L R15,QREQ REG.15 = ADDRESS OF SYSTEM QUEUE GET ROUTINE 00272000 BALR R14,R15 GET A QUEUE ELEMENT 00273000 ST R1,TASKQ INITIALIZE TASK QUEUE POINTER 00274000 XC TASKNEXT(4),TASKNEXT CLEAR FIRST TASK ELEMENT LIN 00275000 MVC TASKSAVE(4),FIRSTSAV INITIALIZE FIRST TASK SAVE AREA 00276000 MVI TASKID,X'01' INITIALIZE THE FIRST TASK ID 00277000 MVI TASKSTAT,X'00' INITIALIZE THE FIRST TASK FLAGS 00278000 MVC TASKNAME(4),FIRSTNAM INITIALIZE FIRST TASK NAME 00279000 SPACE 00280000 L R2,TASKSAVE REG.2 = ADDR OF FIRST TASK SAVE AREA 00281000 SRL R2,12 REG.2 = FIRST TASK SAVE AREA PAGE NUMBER 00282000 L R3,MAINMAP REG.3 = ADDRESS OF START OF MAIN STORAGE MAP 00283000 LA R3,0(2,R3) REG.1 = ADDRESS OF FIRST TASK S/A PAGE ENTRY 00284000 MVC 0(1,R3),TASKID SET TASK ID IN STORAGE MAP 00285000 SPACE 00286000 L R15,DISPATCH REG.15 = DISPATCHER ENTRY ADDRESS 00287000 BALR R14,R15 START UP THE FIRST TASK 00288000 SPACE 00289000 MAPCLEAR XC 1(0,R1),1(R1) TO BE EXECUTED BY ABOVE CODE 00290000 RSCSCR0 DC A(X'000008E0') CR0 MASK = CLOCK COMPARATOR @VA03349 00290100 DS 0D 00290200 FFS DC 8X'FF' ALSO A MINUS ONE @VA03349 00290300 EJECT 00291000 RDERROR EQU * 00292000 SR R13,R13 CLEAR DEVICE REG 00293000 BCTR R13,0 -1 TO REQUEST CONS ADDR 00294000 DIAG R13,R14,X'24' GET CONS ADDR FROM VM/370 00295000 LA R15,RDERR1 STORE ERROR MESSAGE CCW ADDRESS IN CAW 00296000 ST R15,CAW ... 00297000 TIO 0(R13) CLEAR ANY PENDING INTERRUPTS 00298000 BNZ *-4 ... 00299000 SIO 0(R13) SEND THE ERROR MESSAGE 00300000 BNZ *-4 ... 00301000 TIO 0(R13) AND WAIT FOR IT TO COMPLETE 00302000 BNZ *-4 ... 00303000 LPSW RDERRPSW CAN NOT CONTINUE - ENTER CP 00304000 SPACE 3 00305000 DS 0D 00306000 RDERRPSW DC AL2(WAIT,0),A(X'011') @VM01136 00307010 SPACE 00308000 RDERR1 CCW WRITE1,RDMSG1,CC+SILI,L'RDMSG1 00309000 CCW NOP,0,SILI,1 00310000 SPACE 00311000 RDMSG1 DC C'DMTINI402T IPL DEVICE READ I/O ERROR' @VM01137 00312010 EJECT 00313000 * DEVICE TYPE 00314000 * DEVICE DEPENDENT VALUES 2311 2314 3330 2305 2305 3340 3350 00315100 * 2319 M1 M2 00315200 CCWBGNR DC A(RDCCWS+0) +8 +8 +0 +0 +0 +0 +0 @V304498 00315300 CCWENDR DC A(RDCCWF) CCW4 CCWF CCWE CCWB CCWE CCW8 @V304498 00315400 * CCW13 00315500 TRKINC DC H'0' 1 2 1 1 1 1 1 @V304498 00315600 TRKMAX DC H'0' 10 20 19 8 8 12 30 @V304498 00315700 SPACE 00321000 RANGE1 DC A(DMTINIW) NUCLEUS SEGMENT 0 @VM01108 00322010 DC A(0) 00323000 DC A(0) 00324000 SPACE 00325000 RDCCWS DS 0D 00326000 CCW SEEK,RDSEEKA,CC+SILI,6 00327000 CCW SETSEC,RDSECNO,CC+SILI,1 00328000 CCW SEARCH,RDCYLNO,CC+SILI,5 00329000 CCW TIC,*-8,0,0 00330000 RDCCW1 CCW RDDATA,0,CC+SILI,800 00331000 RDCCW2 CCW RDDATA,0,CC+SILI,800 00332000 RDCCW3 CCW RDDATA,0,CC+SILI,800 00333000 RDCCW4 CCW RDDATA,0,CC+SILI,800 00334000 RDCCW5 CCW RDDATA,0,CC+SILI,800 00335000 RDCCW6 CCW RDDATA,0,CC+SILI,800 00336000 RDCCW7 CCW RDDATA,0,CC+SILI,800 00337000 RDCCW8 CCW RDDATA,0,CC+SILI,800 00338000 RDCCW9 CCW RDDATA,0,CC+SILI,800 00339000 RDCCWA CCW RDDATA,0,CC+SILI,800 00340000 RDCCWB CCW RDDATA,0,CC+SILI,800 00341000 RDCCWC CCW RDDATA,0,CC+SILI,800 00342000 RDCCWD CCW RDDATA,0,CC+SILI,800 00343000 RDCCWE CCW RDDATA,0,CC+SILI,800 00344000 RDCCWF CCW RDDATA,0,CC+SILI,800 @V304498 00345100 RDCCW10 CCW RDDATA,0,CC+SILI,800 @V304498 00345200 RDCCW11 CCW RDDATA,0,CC+SILI,800 @V304498 00345300 RDCCW12 CCW RDDATA,0,CC+SILI,800 @V304498 00345400 RDCCW13 CCW RDDATA,0,SILI,800 @V304498 00345500 SPACE 00346000 RDSEEKA DC H'0' 00347000 RDCYLNO DC H'0' 00348000 RDTRKNO DC H'0' 00349000 RDRECNO DC X'01' 00350000 RDSECNO DC X'02' 00351000 SPACE 00352000 LOWCORE DS 0D 00353000 DC X'00040000',V(DMTEXT) 00354000 DC X'00040000',V(DMTSVC) 00355000 DC X'00020000',A(X'007') @VM01136 00356010 DC X'00020000',A(OLDMACH-SVECTORS) 00357000 DC X'00040000',V(DMTIOMIN) 00358000 SPACE 00359000 MAPEND DC V(DMTMAPME) ADDRESS OF END OF STORAGE MAP 00360000 FIRSTSAV DC A(X'10000') FIRST TASK SAVE AREA IN PAGE 16 00361000 FIRSTNAM DC C'INIT' DEFAULT NAME FOR FIRST TASK 00362000 DISABLED DC X'00' 00363000 ENABLED DC X'FF' 00364000 EJECT 00365000 RSCS2314 DC F'150' CMS RECORDS/CYL 00366000 DC F'15' CMS RECORDS/X (TRACK OR PAIR) 00367000 DC F'8' OVERFLOW RECORD NUMBER 00368000 DC 20X'00' SECTOR MAP @V304498 00369100 SPACE 00370000 RSCS3330 DC F'266' CMS RECORDS/CYL 00371000 DC F'14' CMS RECORDS/X (TRACK OR PAIR) 00372000 DC F'0' OVERFLOW RECORD NUMBER 00373000 DC X'00020B141D252E374049525B646D7500' SECTOR MAP 00374000 DC 4X'00' EXTENSION OF SECTOR MAP @V304498 00374100 SPACE 00375000 RSCS3340 DC F'96' CMS RECORDS/CYL 00376000 DC F'8' CMS RECORDS/X (TRACK OR PAIR) 00377000 DC F'0' OVERFLOW RECORD NUMBER 00378000 DC X'00020910171E252C3200000000000000' SECTOR MAP 00379000 DC 4X'00' EXTENSION OF SECTOR MAP @V304498 00379100 SPACE 1 00379200 RSCS3350 DC F'570' CMS RECORDS/CYL @V304498 00379300 DC F'19' CMS RECORDS/X (TRACK OR PAIR @V304498 00379400 DC F'0' OVERFLOW RECORD NUMBER @V304498 00379500 DC XL1'00' SECTOR MAP @V304498 00379600 DC AL1(2,8,15,21,27,34,40,46,53,59,65,71,78,84,90) @V304498 00379700 DC AL1(97,103,109,116) @V304498 00379800 SPACE 1 00379900 SPACE 3 00380000 LTORG 00381000 SPACE 00382000 INIREND DS 0D 00383000 EJECT 00384000 DC 0D'0' 00385000 ENTRY DMTINIW 00386000 DMTINIW DC 0H'0' ENTERED HERE FROM NUCLEUS LOADER 00387000 BALR R11,0 LOAD THE BASE REGISTER TEMPORARILY 00388000 USING *,R11 00389000 L R11,ADMTINI NOW PROVIDE FOR COMMON ADDRESSABILITY 00390000 USING DMTINIR,R11 00391000 SSM DISABLED RUN DISABLED FOR ALL I/O INTERRUPTS NOW 00392000 LA R1,REPLY GET CURRENT DATE AND TIME FROM CP 00393000 DC X'8312000C' ... 00394000 L R13,=V(DMTREXVL) GET THE REX TITLE AREA ADDR 00395000 MVC 16(8,R13),REPLY MOVE IN THE GEN DATE 00396000 LH R13,CONSOLE LOAD THE STANDARD CONSOLE ADDRESS 00397000 CHECKCON DC X'83DE0024' IS IT ATTACHED ? 00398000 BC 1,INVALCON NO, WAIT FOR AN INTERRUPT 00399000 CLM R14,12,CONSTYPE IS IT A CONSOLE ? 00400000 BE ASKQUEST YES, START THE QUESTIONS 00401000 MVC NEWIO,WAKEPSW SET I/O NEW PSW TO POINT BACK HERE 00402000 INVALCON LPSW WAITPSW WAIT FOR THE USER TO CAUSE AN INTERRUPT 00403000 WAKEHERE LH R13,OLDIO+2 GET THE INTERRUPTING DEVICE ADDRESS 00404000 MVC NEWIO,NIOPSW RESTORE THE I/O NEW PSW 00405000 B CHECKCON SEE WHAT THE INTERRUPTING DEVICE IS 00406000 SPACE 00407000 ASKQUEST EQU * 00408000 LH R0,DASD SET DEFAULT DASD ADDR 00409000 RDORWRT LA R1,Q2CCWS POINT TO THE CCW STRING FOR QUESTION 2 00410000 BAL R14,DOCONSIO ASK THE QUESTION AND WAIT FOR A REPLY 00411000 OI REPLY,X'40' MAKE SURE THE REPLY IS IN CAPITAL LETTERS 00412000 CLI REPLY,C'N' IS THE REPLY 'NO' ? 00413000 BE INIEXIT YES, CONTINUE WITH THE IPL SEQUENCE 00414000 CLI REPLY,C'Y' IS THE REPLY 'YES' ? 00415000 BE IPLDISK YES, ASK FOR THE IPL DEVICE ADDRESS 00416000 LA R1,WRERR4 POINT TO CCW STRING FOR YES OR NO ERROR 00417000 BAL R14,DOCONSIO TYPE THE ERROR MESSAGE TO THE USER 00418000 B RDORWRT ASK THE QUESTION AGAIN 00419000 SPACE 00420000 IPLDISK LA R1,Q3CCWS POINT TO THE CCW STRING FOR QUESTION 3 00421000 BAL R14,DOCONSIO ASK THE QUESTION AND WAIT FOR A REPLY 00422000 CLI REPLY,X'00' DID THE USER JUST PRESS RETURN ? 00423000 BE CHECKIPL YES, ASSUME THE DEFAULT IPL DEVICE 00424000 BAL R14,HEXTOBIN NO,CONVERT ADDRESS TO BINARY 00425000 BNZ IPLDISK ASK QUESTION AGAIN IF AN ERROR OCCURRED 00426000 LR R0,R1 SAVE THE IPL DEVICE ADDRESS 00427000 CHECKIPL DC X'83010024' IS THE DEVICE ATTACHED AND DASD ? 00428000 BNZ BADIPLD ERROR IF NONEXISTENT UNIT 00429000 STCM R1,12,DISKTYPE SAVE THE DEVICE TYPE AND CLASS 00430000 CLI DISKTYPE,CLASDASD IS IT A DASD CLASS DEVICE ? 00431000 BNE BADIPLD NO, SEND AN ERROR MESSAGE 00432000 MVI MFDCCW1,RDDATA MOVE IN A READ OP-CODE. 00433000 LA R1,MFDCCWS LOAD ADDRESS OF READ MFD CCW CHAIN 00434000 DC X'83010020' READ IN THE MFD FROM THE IPL DEVICE 00435000 BNZ BADIPLD SEND MESSAGE IF ANY ERRORS 00436000 MVI MFDCCW1,WRDATA MOVE WRITE COMMAND CODE TO CCW 00437000 DC X'83010020' WRITE THE MFD BACK OUT AGAIN 00438000 BNZ BADIPLD SEND MESSAGE IF ANY ERRORS 00439000 CLI DISKTYPE+1,TYP2314 IS THIS A 2314 OR 2319 ? 00440000 BE DEV2314 BRANCH IF YES 00441000 CLI DISKTYPE+1,TYP3330 IS THIS A 3330 ? 00442000 BE DEV3330 BRANCH IF YES 00443000 CLI DISKTYPE+1,TYP3350 IS THIS A 3350 ? @V304498 00443100 BE DEV3350 BR...IF YES @V304498 00443200 CLI DISKTYPE+1,TYP3340 IS IT A 3340? 00444000 BE DEV3340 BR...IF YES 00445000 BADIPLD LA R1,WRERR5 POINT TO CCW STRING FOR IPL DEVICE ERROR 00446000 BAL R14,DOCONSIO TYPE THE ERROR MESSAGE TO THE USER 00447000 B IPLDISK ASK THE QUESTION AGAIN 00448000 SPACE 00449000 DEV2314 MVI TRKINC+1,2 READ 2 TRACKS AT A TIME 00450000 MVI TRKMAX+1,20 20 TRACKS PER CYLINDER 00451000 LA R1,RDCCWS+8 SAVE SEEK CCW ADDRESS FOR READING 00452000 ST R1,CCWBGNR ... 00453000 LA R1,WRCCWS+8 SAVE SEEK CCW ADDRESS FOR WRITING 00454000 ST R1,CCWBGNW ... 00455000 LA R1,RDCCWF SAVE LAST READ CCW ADDRESS 00456000 ST R1,CCWENDR ... 00457000 LA R1,WRCCWF SAVE LAST WRITE CCW ADDRESS 00458000 ST R1,CCWENDW ... 00459000 MVC RDCCWS+8,RDCCWS OVERLAY SET SECTOR WITH SEEK CCW 00460000 MVC WRCCWS+8,WRCCWS ... 00461000 MVI RDCCWF+4,SILI TURN OFF 2314 CMD CHAINING READ @V304498 00461100 MVI WRCCWF+4,SILI TURN OFF 2314 CMD CHAINING WRITE @V304498 00461200 B NUCCYLN CONTINUE WITH QUESTIONING 00462000 DEV3350 MVI TRKINC+1,1 READ 1 TRACK AT A TIME @V304498 00462100 MVI TRKMAX+1,30 30 TRACKS PER CYLINDER @V304498 00462200 LA R1,RDCCW13 SAVE LAST READ CCW ADDRESS @V304498 00462300 ST R1,CCWENDR .... @V304498 00462400 LA R1,WRCCW13 SAVE LAST WRITE CCW ADDRESS @V304498 00462500 ST R1,CCWENDW .... @V304498 00462600 B NUCCYLN CONTINUE WITH QUESTIONING @V304498 00462700 SPACE 1 00462800 SPACE 00463000 DEV3330 MVI TRKINC+1,1 READ 1 TRACK AT A TIME 00464000 MVI TRKMAX+1,19 19 TRACKS PER CYLINDER 00465000 LA R1,RDCCWE SAVE LAST READ CCW ADDRESS 00466000 ST R1,CCWENDR ... 00467000 LA R1,WRCCWE SAVE LAST WRITE CCW ADDRESS 00468000 ST R1,CCWENDW ... 00469000 MVI RDCCWE+4,SILI TURN OFF COMMAND CHAINING 00470000 MVI WRCCWE+4,SILI ... 00471000 B NUCCYLN CONTINUE WITH QUESTIONING 00472000 SPACE 00473000 DEV3340 MVI TRKINC+1,1 READ 1 TRACK AT A TIME 00474000 MVI TRKMAX+1,12 12 TRACKS PER CYLINDER 00475000 LA R1,RDCCW8 SAVE LAST READ CCW ADDRESS 00476000 ST R1,CCWENDR .... 00477000 LA R1,WRCCW8 SAVE LAST WRITE CCW ADDRESS 00478000 ST R1,CCWENDW .... 00479000 MVI RDCCW8+4,SILI TURN OFF 00480000 MVI WRCCW8+4,SILI COMMAND CHAINING 00481000 SPACE 00482000 NUCCYLN LA R1,Q4CCWS POINT TO THE CCW STRING FOR QUESTION 4 00483000 BAL R14,DOCONSIO ASK THE QUESTION AND WAIT FOR A REPLY 00484000 BAL R14,DECTOBIN CONVERT NUMBER TO BINARY 00485000 BNZ NUCCYLN ASK QUESTION AGAIN IF AN ERROR OCCURED 00486000 STH R1,RDCYLNO STORE THE CYLINDER ADDRESS OF THE NUCLEUS 00487000 LA R9,MFDBUF OBTAIN POINTER FOR LIMIT TEST @V304498 00488100 CH R1,382(R9) IS IT BEYOND THE ALLOCATED SPACE?@V304498 00488200 BNL IPLZERO YES, ASK THE NEXT QUESTION 00489000 LA R1,WRERR6 POINT TO CCW STRING FOR OVERLAY ERROR 00490000 BAL R14,DOCONSIO TYPE THE ERROR MESSAGE TO THE USER 00491000 B NUCCYLN ASK THE QUESTION AGAIN 00492000 SPACE 00493000 IPLZERO LA R1,Q5CCWS POINT TO THE CCW STRING FOR QUESTION 5 00494000 BAL R14,DOCONSIO ASK THE QUESTION AND WAIT FOR A REPLY 00495000 OI REPLY,X'40' MAKE SURE REPLY IS IN CAPITAL LETTERS 00496000 MVI IPLSWTCH,C'Y' INDICATE IPL TEXT ALSO WRITTEN ON CYL 0 00497000 CLI REPLY,C'Y' IS THE REPLY 'YES' ? 00498000 BE VERSONID YES, CONTINUE WITH QUESTIONS 00499000 MVI IPLSWTCH,C'N' INDICATE NO IPL TEXT ON CYLINDER 0 00500000 CLI REPLY,C'N' IS THE REPLY 'NO' ? 00501000 BE VERSONID YES, CONTINUE WITH QUESTIONS 00502000 LA R1,WRERR4 POINT TO CCW STRING FOR YES OR NO ERROR 00503000 BAL R14,DOCONSIO TYPE THE ERROR MESAGE TO THE USER 00504000 B IPLZERO ASK THE QUESTION AGAIN 00505000 SPACE 00506000 VERSONID EQU * 00507000 SPACE 00508000 QUESTEND LA R1,IPLCCWS POINT TO IPL TEXT CCWS 00509000 CLI IPLSWTCH,C'Y' IS IPL TEXT TO BE WRITTEN ON CYLINDER 0 00510000 BNE NOTZERO NO,ONLY ON THE NUCLEUS CYLINDER 00511000 DC X'83010020' WRITE OUT IPL TEXT AND DMTINIR 00512000 BALR R15,0 SAVE ADDRESS AND CONDITION CODE 00513000 BNZ WRERROR BRANCH IF ANY ERROR OCCURS 00514000 NOTZERO LH R2,RDCYLNO LOAD THE CYLINDER NUMBER FOR THE NUCLEUS 00515000 STH R2,WRCYLNO INITIALIZE THE SEEK AND SEARCH ADDRESSES 00516000 STH R2,REC1 ... 00517000 STH R2,REC2 ... 00518000 DC X'83010020' WRITE OUT IPL TEXT AND DMTINIR 00519000 BALR R15,0 SAVE ADDRESS AND CONDITION CODE 00520000 BNZ WRERROR BRANCH IF ANY ERROR OCCURS 00521000 L R1,CCWBGNW POINT TO CCWS TO WRITE OUT THE NUCLEUS 00522000 SR R3,R3 ZERO THE TRACK NUMBER 00523000 LA R4,800 LOAD THE RECORD LENGTH 00524000 LM R5,R7,RANGE1 LOAD POINTER TO 1ST RANGE TO BE WRITTEN 00525000 LA R8,24 LOAD THE CCW CHAIN INCREMENT 00526000 L R9,CCWENDW LOAD A POINTER TO THE LAST WRITE CCW 00527000 LA R10,WRCCW3 POINT TO THE CCW TO START WITH 00528000 LA R12,REC3 POINT TO THE SEARCH ADDRESS TO START WITH 00529000 B STOREDA CONTINUE BUILDING THE WRITE CCW CHAIN 00530000 SPACE 00531000 NXTRANGE LTR R7,R7 IS THIS THE LAST RANGE ? 00532000 BZ SETLAST YES, WRITE OUT THE LAST TRACK WORTH 00533000 LM R5,R7,0(R7) NO, LOAD THE POINTERS FOR THE NEXT RANGE 00534000 B CHECKREC CONTINUE BUILDING THE WRITE CCW CHAIN 00535000 SPACE 00536000 SETLAST BCTR R7,0 MAKE POINTER TO NEXT RANGE NEGATIVE 00537000 SR R10,R8 BACKUP TO THE PREVIOUS CCW PACKAGE 00538000 CLI 0(R10),WRDATA IS THIS A WRITE DATA CCW ? 00539000 BNE INIEXIT NO, NO MORE TO WRITE 00540000 MVI 4(R10),SILI TURN OFF COMMAND CHAINING 00541000 B DIAGWR WRITE OUT THE REMAINDER OF THE NUCLEUS 00542000 SPACE 00543000 NEXTTRK LA R3,1(,R3) ADD 1 TO THE TRACK NUMBER 00544000 CH R3,TRKMAX IS THIS THE END OF THE CYLINDER 00545000 BL STTRKNO NO, CONTINUE BUILDING CCWS 00546000 SR R3,R3 YES, ZERO THE TRACK NUMBER AND 00547000 LA R2,1(,R2) ADD ONE TO THE CYLINDER NUMBER 00548000 STH R2,WRCYLNO UPDATE THE CURRENT SEEK ADDRESS 00549000 STTRKNO STH R3,WRTRKNO ... 00550000 LA R10,WRCCW1 POINT TO THE 1ST WRITE CCW 00551000 LA R12,REC1 POINT TO THE 1ST SEARCH ADDRESS 00552000 DATALOOP BXH R6,R4,NXTRANGE ADD 800 TO DATA ADDR & GO IF END OF RANGE 00553000 CHECKREC CLI DISKTYPE+1,TYP2314 IS THIS A 2314 DISK ? 00554000 BNE STOREDA NO, CONTINUE 00555000 CLI 4(R12),X'09' YES, ARE WE AT RECORD 9 ? 00556000 BNE STOREDA NO, CONTINUE 00557000 LA R3,1(,R3) YES, ADD 1 TO THE TRACK NUMBER 00558000 STOREDA ST R6,0(,R10) STORE THE DATA ADDRESS INTO THE CCW 00559000 MVI 0(R10),WRDATA MOVE WRITE DATA COMMAND CODE TO THE CCW 00560000 STH R2,0(,R12) STORE CYLINDER NUMBER IN SEARCH ADDRESS 00561000 STH R3,2(,R12) STORE TRACK NUMBER IN SEARCH ADDRESS 00562000 LA R12,6(,R12) POINT TO THE NEXT SEARCH ADDRESS 00563000 BXLE R10,R8,DATALOOP POINT TO NEXT CCW AND LOOP IF MORE 00564000 DIAGWR DC X'83010020' WRITE THE NUCLEUS ONTO THE DISK 00565000 BALR R15,0 SAVE ADDRESS AND CONDITION CODE 00566000 BNZ WRERROR BRANCH IF ANY ERROR OCCURS 00567000 LTR R7,R7 IS THE NUCLEUS ALL ON DISK ? 00568000 BNM NEXTTRK NO, WRITE OUT ANOTHER TRACK WORTH 00569000 B INIEXIT CONTINUE WITH SYSTEM INITIALIZATION 00570000 EJECT 00571000 HEXTOBIN DS 0H HEX TO BINARY CONVERSION ROUTINE 00572000 LA R1,REPLY-1 POINT TO START OF REPLY - 1 00573000 L R2,ZEROES INITIALIZE VALUE TO ZERO 00574000 OC REPLY(8),BLANKS MAKE SURE REPLY IS IN UPPER CASE 00575000 HEXLOOP LA R1,1(,R1) POINT TO NEXT CHARACTER OF REPLY 00576000 CLI 0(R1),C' ' IS IT THE END OF THE REPLY ? 00577000 BE HEXPACK YES, CONTINUE CONVERSION 00578000 SLL R2,8 MAKE ROOM FOR ANOTHER CHARACTER 00579000 IC R2,0(,R1) SAVE THE NEXT CHARACTER 00580000 CLI 0(R1),C'9' IS IT LESS THAN OR EQUAL TO 9 ? 00581000 BH BINERR1 ERROR IF NO 00582000 CLI 0(R1),C'0' IS IT LESS THAN 0 ? 00583000 BNL HEXLOOP NO, LOOK AT THE NEXT CHARACTER 00584000 CLI 0(R1),C'F' IS IT LESS THAN OR EQUAL TO F ? 00585000 BH BINERR1 ERROR IF NO 00586000 CLI 0(R1),C'A' IS IT GREATER THAN OR EQUAL TO A ? 00587000 BL BINERR1 ERROR IF NO 00588000 AL R2,=F'9' CONVERT NUMBER TO CORRECT RANGE 00589000 B HEXLOOP LOOK AT THE NEXT CHARACTER 00590000 SPACE 00591000 HEXPACK C R2,ZEROES IS NUMBER STILL 0 ? 00592000 BE BINERR1 YES, ASK HIM AGAIN 00593000 ST R2,HEXWORD CONVERT THE NUMBER TO BINARY 00594000 PACK HEXDBLW(4),HEXWORD ... 00595000 L R1,HEXDBLW LOAD THE NUMBER 00596000 SRL R1,4 AND REMOVE THE SIGN 00597000 SR R2,R2 SET CONDITION CODE = 0 00598000 BR R14 RETURN TO THE CALLER 00599000 SPACE 00600000 BINERR1 LA R1,WRERR2 POINT TO CCW STRING FOR ADDRESS ERROR 00601000 HEXERR LR R2,R14 SAVE THE RETURN ADDRESS 00602000 BAL R14,DOCONSIO START THE I/O AND WAIT 00603000 LTR R14,R2 SET CONDITION CODE NOT = 0 00604000 BR R14 AND RETURN TO THE CALLER 00605000 EJECT 00606000 DECTOBIN DS 0H HEX TO DECIMAL CONVERSION ROUTINE 00607000 LA R1,REPLY POINT TO START OF THE REPLY 00608000 L R2,ZEROES INITIALIZE VALUE TO ZERO 00609000 DECLOOP CLI 0(R1),X'00' IS THIS THE END OF THE REPLY ? 00610000 BE DECPACK YES, CONTINUE CONVERSION 00611000 CLI 0(R1),C'0' IS IT EQUAL TO OR GREATER THAN 0 ? 00612000 BL DECERR1 ERROR IF NO 00613000 CLI 0(R1),C'9' IS IT LESS THAN OR EQUAL TO 9 ? 00614000 BH DECERR1 ERROR IF NO 00615000 SLL R2,8 MAKE ROOM FOR ANOTHER CHARACTER 00616000 IC R2,0(,R1) SAVE THE CURRENT CHARACTER 00617000 LA R1,1(,R1) POINT TO THE NEXT CHARACTER 00618000 B DECLOOP LOOK AT THE NEXT CHARACTER 00619000 SPACE 00620000 DECPACK C R2,ZEROES IS NUMBER STILL 0 ? 00621000 BE DECERR1 YES, ASK HIM AGAIN 00622000 ST R2,HEXWORD CONVERT THE NUMBER TO BINARY 00623000 PACK HEXDBLW,HEXWORD ... 00624000 CVB R1,HEXDBLW ... 00625000 SR R2,R2 SET CONDITION CODE = 0 00626000 BR R14 RETURN TO THE CALLER 00627000 SPACE 00628000 DECERR1 LA R1,WRERR3 POINT TO CCWSTRING FOR NUMBER ERROR 00629000 B HEXERR SEND THE ERROR MESSAGE AND CONTINUE 00630000 EJECT 00631000 DOCONSIO DS 0H CONSOLE I/O SUBROUTINE 00632000 MVI REPLY,X'00' CLEAR THE REPLY BUFFER 00633000 MVC REPLY+1(L'REPLY-1),REPLY 00634000 ST R1,CAW STORE CCW ADDRESS IN CAW 00635000 TIO 0(R13) CLEAR ANY PENDING INTERRUPTS 00636000 BNZ *-4 ... 00637000 SIO 0(R13) START THE I/O TO THE CONSOLE 00638000 BNZ *-4 ... 00639000 TIO 0(R13) WAIT FOR THE I/O TO COMPLETE 00640000 BC 2,*-4 ... 00641000 CLI CSW+4,CE+DE NORMAL STATUS RECEIVED ? 00642000 BNE DOCONSIO NO, TRY THE I/O AGAIN 00643000 BR R14 YES, RETURN TO THE CALLER 00644000 SPACE 3 00645000 WRERROR DS 0H ERROR WHILE WRITING THE NUCLEUS 00646000 ST R1,0 SAVE THE INDICATORS OF THE ERROR 00647000 ST R15,4 ... 00648000 MVC IPLCCW1+4(4),CAW ... 00649000 LA R1,WRERR1 POINT TO CCW STRINT FOR WRITE ERROR 00650000 BAL R14,DOCONSIO PERFORM THE I/O AND WAIT 00651000 B INIEXIT CONTINUE SYSTEM INITIALIZATION 00652000 EJECT 00653000 SPACE 00654000 DS 0D 00655000 REPLY DC CL128' ' 00656000 SPACE 2 00657000 DS 0D 00658000 NIOPSW DC AL2(MCHEK,0),V(DMTIOMIN) 00659000 WAITPSW DC AL1(CHAN0,MCHEK+WAIT,0,0),A(WAKEHERE) 00660000 WAKEPSW DC AL1(0,MCHEK,0,0),A(WAKEHERE) 00661000 SPACE 2 00662000 CHAN0 EQU X'80' 00663000 HEXDBLW DC D'0' 00664000 HEXWORD DC F'0' 00665000 ZEROES DC C'0000' 00666000 BLANKS DC CL8' ' 00667000 SPACE 2 00668000 ADMTINI DC A(DMTINIR) 00669000 CCWBGNW DC A(WRCCWS+0) 00670000 CCWENDW DC A(WRCCWF) 00671000 DISKTYPE DC H'0' 00672000 CONSTYPE DC AL1(CLASTERM,TYP3210) 00673000 IPLSWTCH DC C'N' 00674000 SPACE 00675000 DS 0H 00676000 CONSOLE DC X'0009' DEFAULT CONSOLE ADDR 00677000 DASD DC X'0191' DEFAULT DASD ADDR 00678000 EJECT 00679000 DS 0D 00680000 Q2CCWS CCW WRITE,Q2,CC+SILI,L'Q2 00681000 CCW TIC,QREAD,0,0 00682000 SPACE 00683000 Q3CCWS CCW WRITE,Q3,CC+SILI,L'Q3 00684000 CCW TIC,QREAD,0,0 00685000 SPACE 00686000 Q4CCWS CCW WRITE,Q4,CC+SILI,L'Q4 00687000 CCW TIC,QREAD,0,0 00688000 SPACE 00689000 Q5CCWS CCW WRITE,Q5,CC+SILI,L'Q5 00690000 CCW TIC,QREAD,0,0 00691000 SPACE 00692000 QREAD CCW RDCONS,REPLY,CC+SILI,128 00693000 CCW NOP,0,SILI,1 00694000 SPACE 00695000 WRERR1 CCW WRITE1,WRMSG1,CC+SILI,L'WRMSG1 00696000 CCW NOP,0,SILI,1 00697000 SPACE 00698000 WRERR2 CCW WRITE1,WRMSG2,CC+SILI,L'WRMSG2 00699000 CCW NOP,0,SILI,1 00700000 SPACE 00701000 WRERR3 CCW WRITE1,WRMSG3,CC+SILI,L'WRMSG3 00702000 CCW NOP,0,SILI,1 00703000 SPACE 00704000 WRERR4 CCW WRITE1,WRMSG4,CC+SILI,L'WRMSG4 00705000 CCW NOP,0,SILI,1 00706000 SPACE 00707000 WRERR5 CCW WRITE1,WRMSG5,CC+SILI,L'WRMSG5 00708000 CCW NOP,0,SILI,1 00709000 SPACE 00710000 WRERR6 CCW WRITE1,WRMSG6,CC+SILI,L'WRMSG6 00711000 CCW NOP,0,SILI,1 00712000 EJECT 00713000 Q2 DC C'DMTINI407R REWRITE THE NUCLEUS ? ' Y OR N @VM01137 00714010 Q3 DC C'DMTINI408R IPL DEVICE ADDRESS = ' CCU @VM01137 00715010 Q4 DC C'DMTINI409R NUCLEUS CYL ADDRESS = ' NNN @VM01137 00716010 Q5 DC C'DMTINI410R ALSO IPL CYLINDER 0 ? ' Y OR N @VM01137 00717010 SPACE 00718000 WRMSG1 DC C'DMTINI431S IPL DEVICE WRITE I/O ERROR' @VM01137 00719500 WRMSG2 DC C'DMTINI479E INVALID DEVICE ADDRESS - REENTER' @VM01137 00720000 WRMSG3 DC C'DMTINI480E INVALID CYLINDER NUMBER - REENTER' @VM01137 00720500 WRMSG4 DC C'DMTINI481E INVALID REPLY - ANSWER "YES" OR ' @VM01137 00721000 DC C'"NO"' @VM01137 00721500 WRMSG5 DC C'DMTINI482E IPL DEVICE ERROR - REENTER' @VM01137 00722000 WRMSG6 DC C'DMTINI483E NUCLEUS WILL OVERLAY CMS FILES -' @VM01137 00722500 DC C' RECOMPUTE' @VM01137 00723000 SPACE 3 00725000 MFDCCWS DS 0D 00726000 CCW SEEK,ZERO,CC+SILI,6 00727000 CCW SEARCH,REC4,CC+SILI,5 00728000 CCW TIC,*-8,0,0 00729000 MFDCCW1 CCW RDDATA,MFDBUF,SILI,800 00730000 SPACE 3 00731000 IPLCCWS DS 0D 00732000 CCW SEEK,WRSEEKA,CC+SILI,6 00733000 CCW SEARCH,REC1,CC+SILI,5 00734000 CCW TIC,*-8,0,0 00735000 CCW WRDATA,IPLTEXT,CC+SILI,24 00736000 CCW SEARCH,REC2,CC+SILI,5 00737000 CCW TIC,*+8,0,0 00738000 CCW WRDATA,DMTINIR,SILI,800 00739000 SPACE 2 00740000 IPLTEXT DS 0D 00741000 DC AL2(MCHEK,0),A(DMTINIR) 00742000 CCW RDDATA,DMTINIR,CC+SILI,800 00743000 CCW NOP,0,SILI,1 00744000 EJECT 00745000 WRCCWS DS 0D 00746000 CCW SEEK,WRSEEKA,CC+SILI,6 00747000 CCW SETSEC,WRSECNO,CC+SILI,1 00748000 CCW SEARCH,REC1,CC+SILI,5 00749000 CCW TIC,*-8,0,0 00750000 WRCCW1 CCW NOP,0,CC+SILI,800 00751000 CCW SEARCH,REC2,CC+SILI,5 00752000 CCW TIC,*-8,0,0 00753000 WRCCW2 CCW NOP,0,CC+SILI,800 00754000 CCW SEARCH,REC3,CC+SILI,5 00755000 CCW TIC,*-8,0,0 00756000 WRCCW3 CCW WRDATA,0,CC+SILI,800 00757000 CCW SEARCH,REC4,CC+SILI,5 00758000 CCW TIC,*-8,0,0 00759000 WRCCW4 CCW WRDATA,0,CC+SILI,800 00760000 CCW SEARCH,REC5,CC+SILI,5 00761000 CCW TIC,*-8,0,0 00762000 WRCCW5 CCW WRDATA,0,CC+SILI,800 00763000 CCW SEARCH,REC6,CC+SILI,5 00764000 CCW TIC,*-8,0,0 00765000 WRCCW6 CCW WRDATA,0,CC+SILI,800 00766000 CCW SEARCH,REC7,CC+SILI,5 00767000 CCW TIC,*-8,0,0 00768000 WRCCW7 CCW WRDATA,0,CC+SILI,800 00769000 CCW SEARCH,REC8,CC+SILI,5 00770000 CCW TIC,*-8,0,0 00771000 WRCCW8 CCW WRDATA,0,CC+SILI,800 00772000 CCW SEARCH,REC9,CC+SILI,5 00773000 CCW TIC,*-8,0,0 00774000 WRCCW9 CCW WRDATA,0,CC+SILI,800 00775000 CCW SEARCH,RECA,CC+SILI,5 00776000 CCW TIC,*-8,0,0 00777000 WRCCWA CCW WRDATA,0,CC+SILI,800 00778000 CCW SEARCH,RECB,CC+SILI,5 00779000 CCW TIC,*-8,0,0 00780000 WRCCWB CCW WRDATA,0,CC+SILI,800 00781000 CCW SEARCH,RECC,CC+SILI,5 00782000 CCW TIC,*-8,0,0 00783000 WRCCWC CCW WRDATA,0,CC+SILI,800 00784000 CCW SEARCH,RECD,CC+SILI,5 00785000 CCW TIC,*-8,0,0 00786000 WRCCWD CCW WRDATA,0,CC+SILI,800 00787000 CCW SEARCH,RECE,CC+SILI,5 00788000 CCW TIC,*-8,0,0 00789000 WRCCWE CCW WRDATA,0,CC+SILI,800 00790000 CCW SEARCH,RECF,CC+SILI,5 00791000 CCW TIC,*-8,0,0 00792000 WRCCWF CCW WRDATA,0,CC+SILI,800 @V304498 00793100 CCW SEARCH,REC10,CC+SILI,5 @V304498 00793125 CCW TIC,*-8,0,0 @V304498 00793150 WRCCW10 CCW WRDATA,0,CC+SILI,800 @V304498 00793175 CCW SEARCH,REC11,CC+SILI,5 @V304498 00793200 CCW TIC,*-8,0,0 @V304498 00793225 WRCCW11 CCW WRDATA,0,CC+SILI,800 @V304498 00793250 CCW SEARCH,REC12,CC+SILI,5 @V304498 00793275 CCW TIC,*-8,0,0 @V304498 00793300 WRCCW12 CCW WRDATA,0,CC+SILI,800 @V304498 00793325 CCW SEARCH,REC13,CC+SILI,5 @V304498 00793350 CCW TIC,*-8,0,0 @V304498 00793375 WRCCW13 CCW WRDATA,0,SILI,800 @V304498 00793400 EJECT 00794000 WRSEEKA DC H'0' 00795000 WRCYLNO DC H'0' 00796000 WRTRKNO DC H'0' 00797000 WRRECNO DC X'01' 00798000 WRSECNO DC X'02' 00799000 SPACE 3 00800000 DS 0D 00801000 ZERO DC 8X'00' 00802000 REC1 DC 4X'00',X'01',X'00' 00803000 REC2 DC 4X'00',X'02',X'00' 00804000 REC3 DC 4X'00',X'03',X'00' 00805000 REC4 DC 4X'00',X'04',X'00' 00806000 REC5 DC 4X'00',X'05',X'00' 00807000 REC6 DC 4X'00',X'06',X'00' 00808000 REC7 DC 4X'00',X'07',X'00' 00809000 REC8 DC 4X'00',X'08',X'00' 00810000 REC9 DC 4X'00',X'09',X'00' 00811000 RECA DC 4X'00',X'0A',X'00' 00812000 RECB DC 4X'00',X'0B',X'00' 00813000 RECC DC 4X'00',X'0C',X'00' 00814000 RECD DC 4X'00',X'0D',X'00' 00815000 RECE DC 4X'00',X'0E',X'00' 00816000 RECF DC 4X'00',X'0F',X'00' 00817000 REC10 DC 4X'00',X'10',X'00' @V304498 00817100 REC11 DC 4X'00',X'11',X'00' @V304498 00817200 REC12 DC 4X'00',X'12',X'00' @V304498 00817300 REC13 DC 4X'00',X'13',X'00' @V304498 00817400 SPACE 3 00818000 LTORG 00819000 SPACE 3 00820000 DS 0D 00821000 MFDBUF DS 800X 00822000 EJECT 00823000 SPACE 00824000 WRITE EQU X'01' WRITE 00825000 READ EQU X'02' READ 00826000 NOP EQU X'03' NO OPERATION 00827000 SENSE EQU X'04' SENSE 00828000 WRDATA EQU X'05' WRITE DATA 00829000 RDDATA EQU X'06' READ DATA 00830000 SEEK EQU X'07' SEEK 00831000 TIC EQU X'08' TRANSFER IN CHANNEL 00832000 WRITE1 EQU X'09' WRITE AND SPACE 1 00833000 RDCONS EQU X'0A' READ FROM CONSOLE 00834000 SETSEC EQU X'23' SET SECTOR 00835000 SEARCH EQU X'31' SEARCH ID EQUAL 00836000 EJECT 00837000 COPY RSSEQU 00838000 * 00838100 C0 EQU 0 CONTROL REGISTER ZERO 00838200 EJECT 00839000 COPY DEVTYPES 00840000 EJECT 00841000 COPY SVECTORS 00842000 EJECT 00843000 COPY IOTABLE 00844000 EJECT 00845000 COPY TASKE 00846000 COPY FREEE 00847000 END DMTINIW 00848000