TITLE 'IEDQNW, 3705 CHECKPOINT/RESTART I/O *00001000 ' 00002000 IEDQNW CSECT , 01S0001 00003000 @PROLOG DS 0H 01S0002 00004000 * STM(REG14,REG12,SAVEREGS); /* SAVE REGISTERS IN CALLER SAVE 00005000 * AREA */ 00006000 STM REG14,REG12,SAVEREGS(REG13) 02S0120 00007000 * RBASE=REG15; /* SET BASE ADDRESS FROM ENTRY 00008000 * REGISTER */ 00009000 LR RBASE,REG15 02S0121 00010000 * GEN NOREFS NOSETS; 02S0122 00011000 * /* 00012000 USING IEDQNW,RBASE ESTABLISH ADDRESSABILITY 00013000 IEDQNW IEDHJN AFTERHJN,HJN MODULE IDENTIFICATION MACRO 00014000 * RSAVE=REG13; /* SAVE ADDRESS OF CALLERS SAVE 00015000 * AREA */ 00016000 LR RSAVE,REG13 02S0123 00017000 * RFY 02S0124 00018000 * REG13 UNRSTD; 02S0124 00019000 * 02S0125 00020000 * /*****************************************************************/ 00021000 * /* */ 00022000 * /* PROCESS: THIS SEGMENT DOES THE PROCESSING THAT IS NECESSARY TO*/ 00023000 * /* PERFORM THE FUNCTION OF THE MODULE. IF THE I/O IS TO THE 3705 */ 00024000 * /* CONTROL RECORD, THEN USE THE FIRST RELATIVE RECORD IN THE DATA*/ 00025000 * /* SET. OTHERWISE, FIND THE ADDRESS VIA A CONVERSION OF THE TTRN.*/ 00026000 * /* ISSUE EXCP TO START THE I/O AND SET UP THE WAIT LIST TO WAIT */ 00027000 * /* FOR THE I/O TO COMPLETE. */ 00028000 * /* */ 00029000 * /*****************************************************************/ 00030000 * 02S0125 00031000 * RSTATE=0; /* INITIALIZE TO INDICATE 02S0125 00032000 * SUCCESSFUL OPERATION */ 00033000 SLR RSTATE,RSTATE 02S0125 00034000 * IF CKPRWADD=ADDR(CKPNCNTL) /* TEST FOR REQUEST TYPE */ 00035000 * THEN /* REQUEST TO START I/O TO THE 00036000 * CONTROL RECORD */ 00037000 LA @14,CKPNCNTL(,RCKPT) 02S0126 00038000 L @12,CKPRWADD-1(,RCKPT) 02S0126 00039000 LA @12,0(,@12) 02S0126 00040000 CR @14,@12 02S0126 00041000 BNE @RF00126 02S0126 00042000 * DO; 02S0127 00043000 * RDEB=IEDQDPTR-PREFDEB; /* GET ADDRESS OF THE DEB PREFIX */ 00044000 L RDEB,IEDQDPTR(,RCKPT) 02S0128 00045000 SH RDEB,PREFDEB 02S0128 00046000 * CKPIOM=0; /* SET TO WRITE TO FIRST EXTENT */ 00047000 MVI CKPIOM(RCKPT),X'00' 02S0129 00048000 * CKPIOSK(2:7)=EXSADDR; /* GET BIN, CYLINDER, AND TRACK 00049000 * NUMBERS FROM THE DEB EXTENT 00050000 * DATA */ 00051000 MVC CKPIOSK+1(6,RCKPT),EXSADDR(RDEB) 02S0130 00052000 * CKPIOR=1; /* WRITE TO FIRST RECORD */ 00053000 MVI CKPIOR(RCKPT),X'01' 02S0131 00054000 * CKPSECTR=0; /* CLEAR SECTOR ID */ 00055000 MVI CKPSECTR(RCKPT),X'00' 02S0132 00056000 * END; 02S0133 00057000 * ELSE /* I/O NOT FOR CONTROL RECORD */ 00058000 * 03S0134 00059000 * /***************************************************************/ 00060000 * /* */ 00061000 * /* PROCESS.FINDADDR: THIS SEGMENT DOES THE CALCULATIONS TO FIND*/ 00062000 * /* THE TRACK ADDRESS FOR A GIVEN RESOURCE. */ 00063000 * /* */ 00064000 * /***************************************************************/ 00065000 * 03S0134 00066000 * DO; 03S0134 00067000 B @RC00126 03S0134 00068000 @RF00126 DS 0H 03S0135 00069000 * IF CKPNRSID