ibm:vm370-lib:rscs:dmtini.assemble_src
Table of Contents
DMTINI Source
References
- Fixes Applied : 0
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [Unmodified]
Source Listing
- DMTINI.ASSEMBLE.txt
- 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
ibm/vm370-lib/rscs/dmtini.assemble_src.txt ยท Last modified: 2023/08/06 13:39 by Site Administrator