FMT TITLE 'DMKFMT (CP) VM/370 - RELEASE 6' 00001000 *. 00002000 * MODULE NAME - 00003000 * 00004000 * DMKFMT 00005000 * 00006000 * FUNCTION - 00007000 * 00008000 * TO ACCEPT PARAMETERS FROM THE 1052 CONSOLE OR IPL 00009000 * DEVICE (CARD READER) AND PERFORM PARTIAL OR COMPLETE 00010000 * FORMATTING,ALLOCATION AND LABELING OF 2314,2319,3330, 00011000 * 3340, 3350 AND 2305 DASD TYPE DEVICES. 00012000 * THE FORMAT PROGRAM WILL ALSO DO WRITE CHECKING 00013000 * TO VERIFY PAGES ARE FORMATTED CORRECTLY. A COUNT OF "ERROR" 00014000 * PAGES WILL BE MAINTAINED. NO ALTERNATES WILL BE ASSIGNED. 00015000 * OS LABELS WILL WRITTEN TO BE COMPATIABLE WITH OS 00016000 * SYSTEM BUT LABELS WILL INDICATE TO OS THAT THERE IS 00017000 * NO SPACE LEFT ON DASD STORAGE DEVICE. 00018000 * ALL PARAMETER INPUT WILL BE VERIFIED FOR CORRECTNESS 00019000 * 00020000 * ATTRIBUTES - 00021000 * 00022000 * STAND-ALONE PROGRAM 00023000 * 00024000 * ENTRY POINTS - 00025000 * 00026000 * DMKFMT 00027000 * 00028000 * ENTRY CONDITIONS - 00029000 * 00030000 * NONE 00031000 * 00032000 * EXIT CONDITONS - 00033000 * 00034000 * NONE 00035000 * 00036000 * CALLS TO OTHER ROUTINES - 00037000 * 00038000 * NONE 00039000 * 00040000 * EXTERNAL REFERENCES - 00041000 * 00042000 * NONE 00043000 * 00044000 * TABLES/WORKAREAS - 00045000 * 00046000 * NONE 00047000 * 00048000 * REGISTER USAGE - 00049000 * 00050000 * GPR 0 TO 10 -SCRATCH 00051000 * GPR 11 -3RD BASE 00052000 * GPR 12 -2ND BASE 00053000 * GPR 13 -4TH BASE 00054000 * GPR 14 -LINK REG 00055000 * GPR 15 -1ST BASE 00056000 * 00057000 * NOTES - NONE 00058000 * 00059000 * OPERATION -DMKFMT 00060000 * 00061000 * 1. AFTER IPL SAVE IPL DEVICE ADDRESS. 00062000 * 00063000 * 2. ASSUME CONSOLE ADDRESS 009 OR 01F. 00064000 * 00065000 * 3. IF ASSUMED CONSOLES ARE NOT THERE GO TO 00066000 * WAIT STATE AND WAIT FOR ATTENTION INTERRUPT. 00067000 * 00068000 * 4. AFTER CONSOLE IS FOUND CHECK TO SEE IF 00069000 * THERE IS ANY PARAMETER INPUT ON IPL DEVICE 00070000 * 00071000 * 5. IF PARAMETER INPUT IS IN IPL DEVICE,READ IN 00072000 * ONE FUNCTION TO BE DONE AND USE CONSOLE TO 00073000 * PRINT FUNCTIONS TO BE EXECUTED. 00074000 * 00075000 * 6. IF NO IPL DEVICE INPUT,USE CONSOLE TO PROMPT 00076000 * FOR FUNCTION TO BE PERFORMED AND ALLOW 00077000 * OPERATOR TO RETYPE INPUT IF FOUND INVALID 00078000 * BY THE PROGRAM. 00079000 * 00080000 * 7. IF IPL DEVICE INPUT IS USED, SCAN CARD FOR PROPER 00081000 * FORMAT, IF FOUND INVALID ISSUE A MESSAGE TO THE 00082000 * OPERATOR AND FLUSH TO NEXT FORMAT OR ALLOCATE CARD. 00083000 * 00084000 * 8. ALLOW ABBREVIATIONS OF WORDS;FORMAT;ALLOCATE; & LABEL 00085000 * ALLOW DEFAULTS FOR STARTING AND ENDING CYLINDERS UNDER 00086000 * FORMAT FROM CONSOLE OR IPL DEVICE INPUT. 00087000 * 00088000 * 9. REPEAT PROMPTING FOR NEW FUNCTION TO 00089000 * PERFORM WHEN USING CONSOLE AS INPUT 00090000 * OR READ NEXT FUNCTION FROM THE IPL 00091000 * DEVICE. 00092000 * 00093000 * 10.START 'FORMAT','ALLOCATION',OR 'LABEL ONLY' OPERATION 00094000 * AS REQUESTED. 00095000 * 00096000 * **FORMAT** 00097000 * 00098000 * FORMAT FROM THE STARTING CYLINDER UP TO AND 00099000 * INCLUDING THE ENDING CYLINDER OF THE DASD DEVICE 00100000 * AS REQUESTED BY CONSOLE OR IPL DEVICE INPUT. 00101000 * 00102000 * FORMATTED RECORDS ARE (PAGE SIZE) IN 4096 BYTES. 00103000 * 00104000 * FORMAT CYLINDER 0 AS FOLLOWS: 00105000 * 00106000 * R0 PAGE BIT MAP - FLAGS BAD OR INUSE PAGES. 00107000 * R1 IPL REC. - PUTS STSTEM INTO WAIT STATE, CODE = 00C. 00108000 * R2 CHECK POINT RECORD - USED BY CHECK POINT ROUTINE. 00109000 * R3 OS VOL1 LABEL - CONTAINS CP VOLUME LABEL 00110000 * R4 ALLOCATION BIT MAP - ALLOCATION TYPE FOR EACH CYL. 00111000 * R5 OS FORMAT 4 LABEL 00112000 * R6 OS FORMAT 5 LABEL. 00113000 * RF3 PAGE SIZE FILLER RECORD FOR FUTURE CP USE. 00114000 * RF4 FILLER RECORD FOR 2314 AND 2319 DEVICE. 00115000 * 00116000 * WRITE CP VOLUME LABEL WHEN CYLINDER 0 IS FORMATTED, 00117000 * OTHER WISE READ AND COMPARE CP VOLUME LABEL TO INPUT. 00118000 * 00119000 * WRITE PAGE SIZE RECORDS ON THE REST OF CYLINDER 0 00120000 * AND ALL OTHER CYLINDERS REQUESTED. 00121000 * 00122000 * WRITE VERIFY THAT EACH PAGE RECORD WAS WRITTEN 00123000 * CORRECTLY. 00124000 * 00125000 * RECORD ANY BAD PAGE RECORD IN THE "PAGE BIT MAP" 00126000 * LOCATED ON TRACK 0 RECORD 0 OF EACH CYLINDER. 00127000 * 00128000 * PRINT BAD PAGE ADDRESSES AS THEY FOUND. 00129000 * 00130000 * PRINT TOTAL OF BAD PAGES WHEN FORMAT IS COMPLETE. 00131000 * 00132000 * GET ANOTHER TASK FROM CONSOLE OR IPL DEVICE WHEN 00133000 * FORMAT IS COMPLETE. 00134000 * 00135000 * **ALLOCATION** 00136000 * 00137000 * READ AND VERIFY THE CP VOLUME LABEL. 00138000 * 00139000 * UPDATE ALLOCATION TABLE IN CORE FROM CONSOLE 00140000 * OR IPL DEVICE INPUT. 00141000 * 00142000 * WRITE CYLINDER ALLOCATION INTO "CYL BYTE MAP" 00143000 * LOCATED IN RECORD 4 OF CYL 0 HEAD 0. 00144000 * 00145000 * SCAN "CYL BYTE MAP" AFTER ALLOCATION IS COMPLETE 00146000 * AND PRINT VOLUME ALLOCATE ON CONSOLE. 00147000 * 00148000 * GET ANOTHER TASK FROM CONSOLE OR IPL DEVICE WHEN 00149000 * ALLOCATION IS COMPLETE. 00150000 * 00151000 * **LABEL ONLY OPERATION** 00152000 * 00153000 * CHECK FOR SIX CHARACTERS ENTERED FOR LABEL. 00154000 * 00155000 * WRITE NEW CP VOLUME LABEL IN CYLINDER 0 HD 0 RECORD 3 00156000 * 00157000 * GET ANOTHER TASK FROM CONSOLE OR IPL DEVICE WHEN 00158000 * LABELING IS COMPLETE. 00159000 * 00160000 * 11.DEPRESSING THE REQUEST KEY ON THE CONSOLE 00161000 * WILL CAUSE AN ATTENTION INTERRUPT TO THE PROGRAM 00162000 * AND PROCESSING WILL STOP AND PROGRAM RESTARTED AT 00163000 * BEGINNING. 00164000 * 00165000 * 12.MACHINE CHECKS AND PROGRAM CHECKS WILL PRINT 00166000 * MESSAGE AND PUT SYSTEM INTO WAIT STATE. 00167000 * 00168000 * 13.FATAL DASD ERRORS WILL PRINT A MESSAGE WITH SENSE 00169000 * DATA. 00170000 * 00171000 * 14.CARD FORMATS. 00172000 * 00173000 * FORMAT EXAMPLES: 00174000 * 00175000 * FORMAT,ADDRESS,TYPE,VOLUME LABEL,START CYL,END CYL, 00176000 * 00177000 * FORMAT,232,3330,MYDISK,000,006, 00178000 * OR 00179000 * FORMAT,232,3330,MYDISK,000,006 LAST , MAY BE DROPPED 00180000 * F,232,3330,MYDISK,,, DEFAULTS START & END CYL 00181000 * F,232,3330,MYDISK,,007 DEFAULTS START CYL 00182000 * F,232,3330,MYDISK,001,, DEFAULTS END CYL 00183000 * 00184000 * ALLOCATE EXAMPLES: 00185000 * 00186000 * ALLOCATE,232,3330,MYDISK 00187000 * TEMP,000,050 ALLOCATE CYL 0 TO 50 AS TEMPORARY 00188000 * PERM,055,060 00189000 * TDSK,100,108 00190000 * DRCT,110,120 00191000 * END 00192000 * 00193000 * A,232,3330,MYDISK 00194000 * ALLO,232,3330,MYDISK ABBEVIATE ALLOCATE 00195000 * 00196000 * LABEL ONLY EXAMPLES: 00197000 * 00198000 * FO,232,3330,MYDISK,LABEL WORD LABEL IN PLACE OF CYL 00199000 * F,232,3330,MYDISK,LA WORD LABEL ABBEVIATED. 00200000 * 00201000 * 15.DETECT IPL DEVICE ERRORS AND ALLOW RESTARTING 00202000 * CONSOLE OR IPL DEVICE. 00203000 * 00204000 * 16.ALLOW CONSOLE TO BE USED WHEN IPL DEVICE IS 00205000 * NOT READY OR HAS NO MORE INPUT 00206000 * 00207000 * MESSAGES 00208000 * 00209000 * DMKFMT730E DEV XXX NOT OPERATIONAL OR NOT READY. 00210000 * 00211000 * DMKFMT732E MACHINE CHECK RUN SEREP AND SAVE OUTPUT FOR CE 00212000 * 00213000 * DMKFMT733E VOLID READ IS VOLID1 NOT VOLID2 00214000 * VOLID1 = THE VOLUNE SERIAL NUMBER FROM THE 00215000 * DASD DEVICE. 00216000 * VOLID2 = THE VOLUME SERIAL NUMBER FROM THE 00217000 * CONTROL STATEMENT. 00218000 * 00219000 * DMKFMT734E TYPE OR CYL INVALID 00220000 * 00221000 * DMKFMT735E FATAL DASD IO ERROR. CSW=XXXXXXXXXXXXXXXX 00222000 * 00223000 * DMKFMT736E IO ERROR CCU CCHHR = XXXXXXXXXX SENSE = XXXXXXXXXXX 00224000 * XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 00225000 * 00226000 * DMKFMT737E INVALID OPERAND 00227000 * 00228000 * DMKFMT738A DEV CCU INTERVENTION REQUIRED 00229000 * 00230000 * DMKFMT739E FLAGGED PRIMARY TRACK HAS NO ALTERNATE ASSIGNED, 00231000 * IO ERROR FOLLOWS. 00232000 * 00233000 * DMKFMT740E PACK MOUNTED IS 3340-35, NOT 3340-70. MOUNT 00234000 * ANOTHER OR RESPECIFY. 00235000 * 00236000 * DMKFMT756E PROGRAM CHECK PSW = XXXXXXXXXXXXXXXX 00237000 * 00238000 * VM/370 FORMAT/ALLOCATE PROGRAM RELEASE 6 00239000 * 00240000 * ENTER FORMAT OR ALLOCATE: 00241000 * 00242000 * FORMAT FUNCTION SELECTED 00243000 * 00244000 * ALLOCATE FUNCTION SELECTED 00245000 * 00246000 * ENTER DEVICE ADDRESS (CCU): 00247000 * 00248000 * ENTER DEVICE TYPE: 00249000 * 00250000 * ENTER ALLOCATION DATA FOR VOLUME XXXXXX 00251000 * TYPE CYL CYL 00252000 * .... ... ... 00253000 * 00254000 * DEVICE XXX VOLUME XXXXXX ALLOCATION ENDED 00255000 * 00256000 * ENTER START CYLINDER (XXX) OR LABEL: 00257000 * 00258000 * ENTER END CYLINDER (XXX): 00259000 * 00260000 * FORMAT STARTED 00261000 * 00262000 * ENTER DEVICE LABEL: 00263000 * 00264000 * FORMAT DONE 00265000 * 00266000 * XXX PAGE RECORDS FLAGGED 00267000 * 00268000 * ALLOCATION RESULTS 00269000 * 00270000 * TEMP XXX XXX 00271000 * 00272000 * PERM XXX XXX 00273000 * 00274000 * TDSK XXX XXX 00275000 * 00276000 * DRCT XXX XXX 00277000 * 00278000 * 00279000 *. 00280000 *********************************************************************** 00281000 *THIS PROGRAM WILL FORMAT (FULL OR PARTIAL);ALLOCATE;AND LABEL;2314 * 00282000 *2319,3330,3340,3350 AND 2305 DASD UNITS, USING CONSOLE OR CARD INPUT.* 00283000 *THE DEVICES WILL BE FORMATTED WITH 4096 BYTE SIZE RECORDS. * 00284000 *THE CARD DEVICE WILL BE SELECTED IF INPUT FOLLOWS THE IPL DECK AT IPL* 00285000 *TIME. IF NO INPUT FOLLOWS IPL DECK THE CONSOLE WILL BE SELECTED * 00286000 *VOLUME LABEL WILL BE CHECKED FOR ALL OPERATIONS EXCEPT, FORMAT OF * 00287000 *CYLINDER ZERO AND LABEL OPERATIONS ONLY. * 00288000 *CERTAIN ERRORS DURING I/O ARE CONSIDERED FATAL AND * 00289000 *THE FORMAT FUNCTION IS ABORTED. OTHER I/O ERRORS ARE TREATED AS SOFT * 00290000 *ERRORS; AT THE END OF A RUN THE NUMBER OF "SOFT ERROR" RECORDS 00291000 *IS PRINTED OUT. 00292000 *FOR LABELLING VOLUME LABELS MUST BE SIX CHARACTERS IN LENGTH. * 00293000 *THE ALLOCATION FUNCTION OF THIS PROGRAM SIMPLY PROMPTS FOR THE TYPE * 00294000 *OF ALLOCATION AND UPDATES RECORD FOUR ON CYL 0 HEAD 0. * 00295000 *********************************************************************** 00296000 DMKFMT START 1536 00297000 BALR R15,0 FIRST BASE REG 15 00298000 USING PSA,R0 00299000 USING *,R15,R12,R11,R13 @V2A2029 00300000 LA R12,2048(R15) LOAD R12 00301000 LA R12,2048(R12) 00302000 LA R11,2048(R12) 00303000 LA R11,2048(R11) 00304000 LA R13,2048(R11) @V2A2029 00305000 LA R13,2048(R13) @V2A2029 00306000 MVC 120(8),=A(0,IRA) SET UP IO NEW PSW 00307000 LH R14,2 GET IPL DEVICE FROM I/O OLD PSW 00308000 TIO 0(R14) CLEAR PENDING STATUS 00309000 BC 2,*-4 LOOP IF BUSY @VA03149 00310000 STH R14,IPLDEV SAVE IPL DEVICE 00311000 MVC 104(8),PRNUPSW PROG NEW PSW 00312000 MVC 112(8),MCNUPSW MACH CK NEW PSW 00313000 MVC SAVEVOL1(96),OSLABEL SAVE OSLABEL INFORMATION D 00314000 MVC SAVEFMT4(96),FMT4DATA SAVE CP'S FMT4 CONTENTS @V56BDA8 00315000 MVC WKSEEK(118),SEEKA SAVE SEEK FIELDS @V2A2029 00316000 MVC RNSTUF(96),R1STUF SAVE 2314 RECORD FIELDS 00317000 MVC RNDATA(184),REC1 SAVE DASD RECORD FIELDS @V304498 00318000 STMSG EQU * @V200731 00319000 XC SAVE14(4),SAVE14 ZERO OUT FIELD @VA08188 00320000 LA R4,TITLE PRINT TITLE 00321000 BAL R14,WMSG PRINT TITLE MSG 00322000 GETCARD MVC CAW(4),=A(CARDCCW) SET CAW 00323000 MVC 120(8),CONSIRA SET UP NEW IO PSW 00324000 TM CDSW2,X'FF' CARD SWITCH ON 00325000 BZ NOCARD NO- BRANCH 00326000 LH R10,IPLDEV IPL ADDRESS IN R10 @V2A2029 00327000 TIO 0(R10) CLEAR STATUS @V2A2029 00328000 BC 2,*-4 BRANCH BACK IF BUSY 00329000 SIO 0(R10) START IPL DEVICE @V2A2029 00330000 BC 8,XWAIT IF STARTED WAIT 00331000 NOCARD MVC CDSW(2),=X'0000' CLEAR CARD SWITCHES 00332000 XC ALLOSW,ALLOSW CLEAR ALLOCATION SW USED IN CARD MOD 00333000 XC ALLOERR,ALLOERR CLEAR ALLOCATION ERROR SW -CARD MODE 00334000 B SELECT NO, USE CONSOLE 00335000 IRA EQU * @V200731 00336000 TM PARM2,X'80' IS NOT OPERATIONAL INDICATED @V200731 00337000 BO CONPARM YES, GO TEST FOR CORRECT DEVICE @V200731 00338000 TM CSW+4,UC IS UNIT CHECK INDICATED ? @V200731 00339000 BZ CONSINT NO, GO TO ERROR HANDLER @V200731 00340000 CONPARM EQU * @V200731 00341000 NI PARM2,X'FF'-X'80' MASK OFF DEVICE NOT @V200731 00342000 * OPERATIONAL 00343000 TM PARM,PARM321 IS THIS A 3215/3210/1052 @V200731 00344000 BO DDRLPSW YES, GO WAIT FOR I/O INTERRUPT @V200731 00345000 TM PARM,PARM01F IS THIS ADDRESS 01F ? @V200731 00346000 BO TESTGRAP YES, GO CHECK FOR GRAPHIC @V200731 00347000 * DEVICE ? 00348000 OI PARM,PARM01F SET INDICATOR FOR 01F @V200731 00349000 MVI CONSOL+1,X'1F' SET THE ADDRESS TO 01F @V200731 00350000 B STMSG GO TRY THIS ADDRESS - 01F @V200731 00351000 TESTGRAP EQU * @V200731 00352000 TM PARM,PARMGRP IS THIS A GRAPHIC DEVICE ? @V200731 00353000 BO TES3270T YES, GO TEST FOR 3270 DEVICE @V200731 00354000 OI PARM,PARMGRP+PARMCLE SET GRAPHIC & ERASE @V200731 00355000 * INDICATORS 00356000 MVC 120(8),=A(0,CONRET) CHANGE THE I/O NEW PSW @V200731 00357000 DDRLPSW EQU * @V200731 00358000 LPSW WAITCON WAIT FOR I/O INTERRUPT @V200731 00359000 TES3270T EQU * @V200731 00360000 TM PARM,PARMGRP+PARM327 IS THIS A 3270 DEVICE ? @V200731 00361000 BO TEST3278 YES, GO CHECK IF 3278 @V60A6B6 00362000 OI PARM,PARM327 SET THE 3270 INDICATOR @V60A6B6 00363000 *********************************************************************** 00364000 * THE FOLLOWING WILL ENSURE THE CORRECT LINE/COL LOCATIONS FOR 3277 * 00365000 * DATA STREAMS. THIS IS A 24 LINE OPERATOR CONSOLE SCREEN. * 00366000 *********************************************************************** 00367000 MVC LAB3270A+2(2),ADDR1 @V60A6B6 00368000 MVC LAB3270A+8(2),ADDR2 @V60A6B6 00369000 MVC LAB3270B+2(2),ADDR1 @V60A6B6 00370000 MVC LAB3270B+8(2),ADDR2 @V60A6B6 00371000 MVC LAB3270C+2(2),ADDR2 @V60A6B6 00372000 MVC LAB3270D+2(2),ADDR1 @V60A6B6 00373000 MVC LAB3270E+5(2),ADDR1 @V60A6B6 00374000 MVC LAB3270E+12(2),ADDR2 @V60A6B6 00375000 MVC ADDR5,ADDR6 @V60A6B6 00376000 MVC MAXLEN,LEN3270 @V60A6B6 00377000 B STMSG GO TRY THIS ADDRESS WITH @V60A6B6 00378000 * GRAPHIC SUPPORT 00379000 TEST3278 EQU * @V60A6B6 00380000 CLC LAB3270A+2(2),ADDR3 HAVE WE TRIED 3278 LOGIC @V60A6B6 00381000 BE TEST3215 MUST BE 3210-3215-1052 @V60A6B6 00382000 *********************************************************************** 00383000 * THE FOLLOWING WILL ENSURE THE CORRECT LINE/COL LOCATIONS FOR 3278 * 00384000 * MOD2A DATA STREAMS. THIS IS A 20 LINE OPERATOR CONSOLE SCREEN. * 00385000 *********************************************************************** 00386000 MVC LAB3270A+2(2),ADDR3 @V60A6B6 00387000 MVC LAB3270A+8(2),ADDR4 @V60A6B6 00388000 MVC LAB3270B+2(2),ADDR3 @V60A6B6 00389000 MVC LAB3270B+8(2),ADDR4 @V60A6B6 00390000 MVC LAB3270C+2(2),ADDR4 @V60A6B6 00391000 MVC LAB3270D+2(2),ADDR3 @V60A6B6 00392000 MVC LAB3270E+5(2),ADDR3 @V60A6B6 00393000 MVC LAB3270E+12(2),ADDR4 @V60A6B6 00394000 MVC ADDR5,ADDR7 @V60A6B6 00395000 MVC MAXLEN,LEN3278 @V60A6B6 00396000 B STMSG GO TRY THIS ADDRESS WITH @V200731 00397000 * GRAPHIC SUPPORT 00398000 TEST3215 EQU * @V200731 00399000 MVI PARM,PARM321 SET THE 3210-3215-1052 FLAG @V200731 00400000 B STMSG GO TRY THIS ADDRESS WITH 3215 @V200731 00401000 * SUPPORT 00402000 CONRET EQU * @V200731 00403000 MVC CONSOL(2),58 GET THE DEVICE ADDRESS @V200731 00404000 MVC 120(8),=A(0,IRA) CHANGE THE I/O NEW PSW @V200731 00405000 B STMSG GO TRY THIS ADDRESS @V200731 00406000 EJECT 00407000 *********************************************************************** 00408000 * * * 00409000 * * START PROMPTING HERE * 00410000 * * * 00411000 *********************************************************************** 00412000 SPACE 1 00413000 SPACE 1 00414000 *********************************************************************** 00415000 * * FORMAT OR ALLOCATE ? * 00416000 *********************************************************************** 00417000 SPACE 1 00418000 SELECT LA R4,FORA SET UP TO PRINT FORMAT OR ALLO 00419000 BAL R14,WMSG FORMAT OR ALLOCATE MSG 00420000 MVI FLAG,X'00' CLEAR FLAG BTYE 00421000 BAL R14,RMSG GO READ RESPONSE 00422000 TM CSW+4,UE UNIT EXCEPTION OR UNIT CK 00423000 BO SELECT YES,BRANCH 00424000 XC FIELDA,FIELDA CLEAR FIELDA 00425000 XC FIELDB,FIELDB CLEAR FIELDB 00426000 BAL R14,LNGCALC GET WORD LENGTH @VA05542 00427000 BNZ SELECT BR IF LENGTH = 0 OR GT 8 @VA05542 00428000 EX R4,TSTALLOC HOW ABOUT ALLOCATE ? @VA05542 00429000 BE ALLOC IF SO, HANDLE IT .... @VA05542 00430000 EX R4,TSTFRMT IS IT FORMAT ? @VA05542 00431000 BNE SELECT IF NOT, TRY AGAIN @VA05542 00432000 FORM MVC FLAG(1),COMWOK SET FLAG TO 'F' 00433000 LA R4,FMTMSG SET UP MESSAGE 00434000 BAL R14,WMSG WRITE MESSAGE 00435000 B DEVICEAD GO GET DEVICE ADDRESS 00436000 ALLOC MVC FLAG(1),COMWOK SET FLAG TO 'A' 00437000 LA R4,ALLOCMSG SET UP ALLOCATE MESSAGE 00438000 BAL R14,WMSG WRITE MESSAGE 00439000 EJECT 00440000 *********************************************************************** 00441000 * * GET DEVICE ADDRESS * 00442000 *********************************************************************** 00443000 SPACE 1 00444000 DEVICEAD LA R4,ADDRESS REQUEST DEVICE ADDRESS 00445000 BAL R14,WMSG WRITE MESSAGE 00446000 BAL R14,RMSG READ RESPONSE 00447000 TM CSW+4,UE CANCEL KEY OR UNIT CHECK 00448000 *********************************************************************** 00449000 * NOTE-UNIT EXCEPTION WAS OR'ED ON IF UNIT CK OCCURRED DURING RD 00450000 *********************************************************************** 00451000 BO DEVICEAD TRY AGAN IF CANCEL 00452000 OC INDATA(4),BLANKS8 CONVERT TO UPPER CASE @VM08604 00453000 CLI INDATA+3,X'40' ANYTHING EXTRA ? @VM08604 00454000 BNE DEVICEAD YES, GO ISSUE DEVICE MESSAGE @VM08604 00455000 MVC WR1+16(3),INDATA MOVE IN THE DEV ADD 00456000 MVC ALLEND+8(3),INDATA MOVE DEVICE ADD INTO MESSAGES 00457000 MVC IOERR+21(3),INDATA MOVE DEVICE ADD INTO MESSAGES 00458000 MVC IPLERROR+17(3),INDATA MOVE DEVICE ADD INTO MESSAGE 00459000 LA R9,3 PUT MESSAGE LENGTH IN REG9 00460000 LA R8,INDATA ADDRESS OF INPUT IN R8 00461000 BAL R7,XBIN GO TO HEX CONVERTION RTN 00462000 LTR R10,R10 WAS IT BAD HEX ADDRESS 00463000 BM DEVICEAD YES, TRY AGAN 00464000 STH R10,DSKADD SAVE HEX DEVICE ADDRESS 00465000 MVC CAW(4),=A(CCWSENSE) SET THE CAW. @VM08604 00466000 SIO 0(R10) IS IT THERE?? @VM08604 00467000 BC 1,NOTHERE NOPE - ARGH. @VM08604 00468000 TIO 0(R10) YES - DRAIN THE INT. @VM08604 00469000 BC 2,*-4 . . . @VM08604 00470000 TM SENSE,X'40' INTERVENTION REQD (DISK NOT @V56BDA8 00471000 * READY OR PACK NOT MOUNTED)? 00472000 BZ DEVTYPE NO, IT'S READY. @V56BDA8 00473000 NOTHERE EQU * @VM08604 00474000 LA R4,WR1 NO,SET UP NOT AVAILABLE MESSAGE 00475000 BAL R14,WMSG WRITE MESSAGE 00476000 DVCAGAIN TM CDSW2,X'FF' IS SW ON? @V56BDA8 00477000 BO BADINPUT IF ON BRANCH 00478000 B DEVICEAD GIVE HIM A CHANCE TO ENTER @V56BDA8 00479000 * CORRECTED ADDRESS OR TO READY THE 00480000 * DEVICE AND RE-ENTER SAME ADDRESS. 00481000 EJECT 00482000 *********************************************************************** 00483000 * * GET DEVICE TYPE * 00484000 *********************************************************************** 00485000 SPACE 1 00486000 DEVTYPE LA R4,TYPMSG SET UP TO TYPE MESSAGE 00487000 BAL R14,WMSG WRITE MESSAGE 00488000 BAL R14,RMSG READ RESPONSE 00489000 TM CSW+4,UE CANCEL KEY OR UNIT CHECK? 00490000 BO DEVTYPE YES, TRY AGAN 00491000 OC INDATA(8),BLANKS8 CONVERT TO UPPERCASE @VM08604 00492000 CLC INDATA(5),=C'2314 ' WAS DEVICE 2314 ? @VM08604 00493000 BE SAME YES,GO TO DISK 00494000 CLC INDATA(5),=C'2319 ' IS THIS A 2319 ? @VM08604 00495000 SAME MVC HIVALUE,=H'202' HI CYL ADDRESS 00496000 MVI RECVALUE,X'20' HIGHER RECORD 00497000 MVC GO(8),OFF3330 CHANGE CCW'S FOR 2314 00498000 MVI TYPE,X'14' SAVE TYPE 00499000 BE DISK YES, GO DISK 00500000 CLC INDATA(5),=C'3350 ' IS THIS A 3350 ? @V304498 00501000 MVC HIVALUE,=H'554' HI CYL ADDRESS @V304498 00502000 MVI RECVALUE,X'78' HIGHEST RECORD NUMBER @V304498 00503000 MVI TYPE,TYP3350 ASSIGN 3350 TYPE CODE @V304498 00504000 BE DISK YES, FORMAT 3350 @V304498 00505000 CLC INDATA(8),=C'3330-11 ' IS IT A 3330 MOD 11 ? @VM08604 00506000 MVC HIVALUE,=H'807' HIGH CYLINDER ADD FOR A 3330 @V200528 00507000 * MOD 11 00508000 MVI RECVALUE,X'3C' HIGHEST RECORD IS 60 FOR TEST 00509000 MVC WR57,OFF57WRT SET WRITE CCW'S TO READ 12 RECORDS 00510000 MVC RD57,OFF57RD SET READ CCW'S 12 RECORD 00511000 MVC GO(8),ON3330 CHANGE CCW FOR 3330 2305 00512000 MVI TYPE,X'30' SAVE TYPE 00513000 BE DISK YES,GO DISK 00514000 CLC INDATA(5),=C'3330 ' @VM08604 00515000 MVC HIVALUE,=H'403' HI CYL ADDRESS @V200528 00516000 BE DISK YES,GO TO DISK @V200528 00517000 MVI RECVALUE,X'18' HIGHEST RECORD NUMBER @V2A2029 00518000 MVC GO(8),ON3340 CHANGE CCW'S FOR 3340 @V2A2029 00519000 MVI TYPE,TYP334X SAVE TYPE FOR 3340/3344. @V56BDA8 00520000 CLC INDATA(L8),=C'3340-35 ' IS IT 3340 (35MB) PACK? @V56BDA8 00521000 MVC HIVALUE,=H'347' HIGH ADDRESS FOR 35MB. @V56BDA8 00522000 BE DISK YES, 3340-35. @V56BDA8 00523000 CLC INDATA(L8),=C'3340-70 ' 3340 (70MB) OR 3344? @V56BDA8 00524000 BNE NOT3340 NOT 3340/3344. TRY SOMETHING ELSE@V56BDA8 00525000 * 00526000 * USER SAYS 70MB PACK. SEE IF SENSE AGREES; WE WOULD NOT WANT 00527000 * TO STUMBLE INTO THE ALTERNATE CYLINDER OF A 35MB PACK WHILE 00528000 * THINKING WE ARE ON A 70MB PACK. WE WOULD ALSO NOT WANT TO 00529000 * WRITE A 70MB ALLOCATION RECORD ON A 35MB PACK. 00530000 * 00531000 MVC HIVALUE,=H'695' HIGH ADDRESS FOR 70MB. @V56BDA8 00532000 TM SENSE+2,X'01' IS IT A 35MB? @V56BDA8 00533000 BZ DISK NO, SO IT MUST BE 70MB. @V56BDA8 00534000 LA R4,MSG35MB SET UP FOR WRONG PACK MESSAGE. @V56BDA8 00535000 BAL R14,WMSG WRITE MESSAGE. @V56BDA8 00536000 B DVCAGAIN GO ASK HIM TO ENTER UNIT ADDRESS @V56BDA8 00537000 * AGAIN, MAYBE HE GOOFED THERE. THAT 00538000 * ALSO GIVES HIM A CHANCE TO SWITCH PACKS. 00539000 * THEN WE RE-READ THE SENSE, THEN COME 00540000 * HERE TO READ DEVTYPE AGAIN. 00541000 SPACE 00542000 NOT3340 DS 0H @V56BDA8 00543000 MVC GO(8),ON3330 CHANGE CCW'S FOR 2305 @V2A2029 00544000 CLC INDATA(7),=C'2305-1 ' IS IT 2305 MODEL 1 ? @VM08604 00545000 MVC HIVALUE,=H'47' HI CYL ADDRESS 00546000 MVI RECVALUE,X'18' HIGHEST RECORD 00547000 MVI TYPE,X'51' MAKE TYPE 2305 M1 00548000 BE DISK YES, BRANCH 00549000 CLC INDATA(7),=C'2305-2 ' IS IT 2305 MODEL 2 ? @VM08604 00550000 MVC HIVALUE,=H'95' HI CYL ADDRESS 00551000 MVI RECVALUE,X'18' HIGHEST RECORD 00552000 MVI TYPE,X'52' MAKE TYPE 2305 MODEL 2 00553000 BNE DEVTYPE NONE-GET TYPE AGAN 00554000 DISK CLI FLAG,C'F' IS IT FORMAT 00555000 BE FORMALL YES,GET STARTING CYLINDER 00556000 B LAB 00557000 EJECT 00558000 *********************************************************************** 00559000 * * * 00560000 * * PROGRAM CHECK ROUTINE * 00561000 * * * 00562000 *********************************************************************** 00563000 SPACE 1 00564000 PRCHK STM R0,R15,PCREGS SAVE REGRISTERS 0 TO 15 00565000 UNPK WORK(9),PROPSW(5) * FILL IN THE PROGRAM 00566000 UNPK WORK+8(9),PROPSW+4(5) * OLD PSW. 00567000 TR WORK(16),TTAB-240 * 00568000 MVC PCMSG+32(16),WORK * 00569000 LA R4,PCMSG SET PROG CK MESSAGE 00570000 BAL R14,WMSG WRITE MESSAGE 00571000 LPSW WTPSW HARD WAIT 00572000 SPACE 1 00573000 *********************************************************************** 00574000 * * * 00575000 * * MACHINE CHECK ROUTINE * 00576000 * * * 00577000 *********************************************************************** 00578000 SPACE 1 00579000 MCRTN LA R4,MCMSG SET UP MACH CK MESSAGE 00580000 BAL R14,WMSG WRITE MESSAGE 00581000 LPSW WTPSW HARD WAIT 00582000 SPACE 2 00583000 LTORG 00584000 EJECT 00585000 * LNGCALC - CALCULATES LENGTH OF WORD IN FIELD "INDATA" 00586000 * CC SET TO 0 IF 0< L'WORD <= 8 00587000 * AND R4 = LENGTH -1 00588000 * 00589000 * ELSE CC ¬=0 AND R4 IS UNPREDICTABLE 00590000 SPACE 00591000 LNGCALC EQU * @VA05542 00592000 ST R14,REGSAV SAVE CALLERS RETURN ADDRESS @VA05542 00593000 OC INDATA(8),BLANKS8 SET TO UPPER CASE OR BLANKS @VA05542 00594000 OC INDATA+8(2),BLANKS8 ..... @VA05542 00595000 LA R14,INDATA SCAN FOR L'INPUT-DATA @VA05542 00596000 LA R4,9 MAX LENGTH +1 @VA05542 00597000 SCNWRD CLI 0(R14),X'40' BLANK ? @VA05542 00598000 BE ENDSCN IF SO, END OF WORD @VA05542 00599000 LA R14,1(,R14) NEXT BYTE PLEASE ..... @VA05542 00600000 BCT R4,SCNWRD CONTINUE SCAN ..... @VA05542 00601000 B EXCC1 GT 8, EXIT CC ¬= 0 @VA05542 00602000 ENDSCN LR R14,R4 SAVE RESIDUAL LENGTH @VA05542 00603000 LA R4,8 CALC LENGTH (-1) @VA05542 00604000 SR R4,R14 LENGTH (-1) @VA05542 00605000 BM EXCC1 BR IF NOTHING THERE @VA05542 00606000 EX R4,MVCCOMW MOVE TO WORK AREA @VA05542 00607000 TM *,X'00' SET CC = 0 @VA05542 00608000 B LNGEXIT AND RETURN TO CALLER @VA05542 00609000 EXCC1 TM *,X'FF' SET CC ¬= 0 @VA05542 00610000 LNGEXIT L R14,REGSAV RESTORE CALLERS REGS @VA05542 00611000 BR R14 AND RETURN ........... @VA05542 00612000 EJECT 00613000 *********************************************************************** 00614000 * * * 00615000 * * WRITE TO CONSOLE ROUTINE -R4 IS COUNT AND DATA POINTER * 00616000 * * * 00617000 *********************************************************************** 00618000 SPACE 1 00619000 WMSG CLI CDSW2,X'00' CARD SWITCH OFF? 00620000 BE WMSG2 YES,BRANCH 00621000 LA R14,0(,R14) CLEAR HIGH ORDER BYTE ....... @VA05542 00622000 CL R14,SAVE14 IS R14 THE SAME? 00623000 BE BADINPUT THE SAME BRANCH 00624000 ST R14,SAVE14 STORE NEW R14 00625000 ST R4,SAVE4 SAVE R4 00626000 WMSG2 LH R10,CONSOL WRITE MESSAGE @V2A2029 00627000 MVC WCCW+7(1),0(R4) SET DATA LENGTH IN CCW 00628000 SR R9,R9 ZERO IT 00629000 IC R9,0(,R4) PICK UP THE LENGTH 00630000 LA R9,0(R9,R4) AND ADD IT TO THE MSG POINTER 00631000 LA R4,1(R4) R4 NOW POINTS TO CCW DATA AREA 00632000 ST R4,WCCW PUT ADDRESS OF DATA AREA IN CCW 00633000 MVI WCCW,X'09' SET UP TO WRITE WITH CARR RETURN 00634000 CLI 0(R9),C':' DO I WANT A REPLY 00635000 BNE *+8 NO- WRITE WITH CARR RETURN 00636000 MVI WCCW,X'01' SET UP TO WRITE WITHOUT CARR RETURN 00637000 LA R9,WCCW R9 CONTAINS CCW ADDRESS 00638000 STARTIO EQU * @V200731 00639000 BAL R1,GRAPHID GO CHECK FOR GRAPHIC SUPPORT @V200731 00640000 STARTIO1 EQU * @VM08604 00641000 XC CSW,CSW CLEAR CSW FIELD @V200731 00642000 ST R9,CAW SAVE CCW STRING ADDRESS IN CAW @V200731 00643000 SIO 0(R10) START DEVICE @V2A2029 00644000 BC 2,WAITIN GO START LOOP AGAIN @V200731 00645000 BC 4,CSWSTOR GO TEST STATUS @V200731 00646000 BC 1,NOTOPER GO INDICATE NOT OPERATIONAL @V200731 00647000 WAITIN EQU * @V200731 00648000 LPSW WAITCON WAIT FOR CONSOLE TO GIVE @V200731 00649000 * INTERRUPT 00650000 NOTOPER EQU * @V200731 00651000 OI PARM2,X'80' SET NOT OPERATIONAL INDICATOR @V200731 00652000 B IRA GO GET DEVICE ADDRESS @V200731 00653000 CSWSTOR EQU * @V200731 00654000 TM CSW+4,BUSY IS THE UNIT BUSY @V200731 00655000 BZ LOOKATCE NO, GO LOOK AT CE @V200731 00656000 TM CSW+4,DE+ATTN+CUE+CE IS THIS ENDING STATUS @V200731 00657000 BNZ STUADD YES, GO STORE ADDRESS @V200731 00658000 LPSW WAITCON WAIT FOR I/O INTERRUPT @V200731 00659000 LOOKATCE EQU * @V200731 00660000 TM CSW+4,CE IS THIS CHANNEL END @V200731 00661000 BZ STUADD NO, GO STORE ADDRESS @V200731 00662000 LA R1,8(,R9) GET THE ADDRESS OF THE FIRST @V200731 00663000 * CCW +8 00664000 ST R1,CSW SAVE ADDRESS IN CSW @V200731 00665000 STUADD EQU * @V200731 00666000 TM CSW+4,CUE IS THIS A CONTROL UNIT END ? @VM08604 00667000 BO STARTIO1 YES, GO RESTART I/O OPERATION @VM08604 00668000 STH R10,58 SAVE THE INTERRUPT DEVICE @V2A2029 00669000 B IRA GO TO INTERRUPT HANDLER @V200731 00670000 WCCW CCW 1,TITLE,CC+SILI,1 CCW FOR WRITING TO CONSOLE 00671000 CCW 3,0,SILI,1 NOP TO ASSURE COMPLETION 00672000 EJECT 00673000 *********************************************************************** 00674000 * * * 00675000 * * READ CONSOLE INPUT R5 CONTAINS COUNT * 00676000 * * * 00677000 *********************************************************************** 00678000 SPACE 1 00679000 RMSG TM CDSW2,X'FF' IS CARD SWITCH ON ? 00680000 BO GETDATA YES, BRANCH 00681000 LH R10,CONSOL R10 CONTAINS CONSOLE ADDRESS @V2A2029 00682000 XC INDATA(80),INDATA CLEAR ROOM ENOUGH TO WORK @VM08604 00683000 LA R9,RCCW PUT CCW ADDRESS INTO CAW 00684000 B STARTIO GO ISSUE SIO @V200731 00685000 GETDATA XC INDATA+1(12),INDATA+1 CLEAR BUT 1ST POSITION 00686000 CLC SAVE4,=A(FORA) IS IT FORMAT OR ALLOCATE? 00687000 MVC INDATA(8),CDFORA MOVE IN FORMAT OR ALLOCATE 00688000 BE GETBACK YES,BRANCH 00689000 CLC SAVE4,=A(ADDRESS) DEVICE ADDRESS 00690000 MVC INDATA(8),CDADD PASS DATA CONSOLE READ 00691000 BE GETBACK YES,BRANCH 00692000 CLC SAVE4,=A(TYPMSG) IS IT DEV TYPE 00693000 MVC INDATA(8),CDTYPE PASS DATA CONSOLE READ 00694000 BE GETBACK YES,BRANCH 00695000 CLC SAVE4,=A(RDLAB) IS IT LABEL 00696000 MVC INDATA(8),CDLABEL PASS DATA CONSOLE READ 00697000 BE GETBACK YES,BRANCH 00698000 CLC SAVE4,=A(STCYL) IS IT START CYL? 00699000 MVC INDATA(8),CDSTART PASS DATA CONSOLE READ 00700000 BE GETBACK YES,BRANCH 00701000 CLC SAVE4,=A(ENDCYL) IS IT END CYL? 00702000 MVC INDATA(8),CDLAST PASS DATA CONSOLE READ 00703000 BE GETBACK YES,BRANCH 00704000 CLC SAVE4,=A(ALMSG1) IS IT ALLOCATION? 00705000 MVC INDATA(4),CDFORA MOVE ALLOCATION TYPE 00706000 MVC INDATA+5(3),CDADD MOVE IN ALLO START CYL 00707000 MVC INDATA+9(3),CDTYPE MOVE IN ALLOCATION END CYL 00708000 BE GETBACK YES,BRANCH 00709000 B BY NO RESPONSE NEEDED 00710000 GETBACK ST R14,REGSAV SAVE R14 00711000 MVC ANSWER,INDATA SET UP INDATA TO PRINT 00712000 LA R4,RESPONSE ADDRESS OF MESSAGE INTO R4 00713000 BAL R14,WMSG2 WRITE MESSAGE 00714000 L R14,REGSAV RESTORE R14 00715000 BY LA R14,8(R14) UP R14 TO BYPASS TEST FOR UE 00716000 BR R14 BRANCH BACK 00717000 EJECT 00718000 ******************************************************************** 00719000 GRAPHID EQU * @V200731 00720000 TM PARM,PARMGRP IS THE GRAPHIC INDICATOR ACTIVE ?@V200731 00721000 BCR 8,R1 NO, GO START THE I/O REQUEST @V200731 00722000 STM R14,R5,GRAPHSAV SAVE THE REGISTERS @V200731 00723000 LR R4,R9 GET THE ADDRESS OF THE CCW STRING@V200731 00724000 GETCCW EQU * @V200731 00725000 LH R3,6(R4) GET THE DATA COUNT FROM THE CCW @V200731 00726000 STM R3,R4,SAVEAREA SAVE THE DATA REGISTERS @V200731 00727000 NI PARM,X'FF'-(PARMREA+PARMNDA) CLEAR THE READ @V200731 00728000 * REQUEST 00729000 * AND NO DATA INDICATOR 00730000 LA R2,5 SET THE LOOP COUNT @V200731 00731000 LA R14,TABLGRAP GET THE ADDRESS OF THE COMMAND @V200731 00732000 * OP TABLE 00733000 ICM R5,1,0(R4) GET THE OP CODE @V200731 00734000 CCWEXEC EQU * @V200731 00735000 EX R5,CLIP TEST THE COMMAND OP CODE WITH @V200731 00736000 * TABLE CODE 00737000 BE GRAPHADD YES, FOUND THE COMMAND OP CODE @V200731 00738000 LA R14,4(R14) UPDATE THE ADDRESS IN THE TABLE @V200731 00739000 BCT R2,CCWEXEC GO TEST THE NEXT OP CODE @V200731 00740000 B STMSG INVALID OP CODE - GO EXIT @V200731 00741000 CLIP CLI 0(R14),X'00' TEST THE OP CODE IN THE TABLE @V200731 00742000 GRAPHADD EQU * @V200731 00743000 ICM R2,7,1(R14) GET THE ADDRESS OF THE OP CODE @V200731 00744000 * ROUTINE 00745000 BR R2 GO TO THE ROUTINE @V200731 00746000 SPACE 2 00747000 READ66 EQU * @V200731 00748000 OI PARM,PARMREA+PARMATT INDICATE READ AND ATTENTION@V200731 00749000 * REQUESTS 00750000 LA R14,GRAPHIC0 RETURN ADDRESS FROM I/O HANDLER @V200731 00751000 XC BLNKLINE(140),BLNKLINE CLEAR THE READ AREA @VM08604 00752000 MVI CSW+4,X'00' CLEAR THE CSW STATUS @V200731 00753000 XC RDMIDATA(6),RDMIDATA CLEAR THE READ DATA FIELD @V200731 00754000 MVC CPXYSTAT(20),REALABEL @V200731 00755000 LA R9,REQREAD GET THE ADDRESS OF THE CHANNEL @V200731 00756000 * PROGRAM 00757000 TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00758000 BCR 8,R1 NO, GO ISSUE SIO @V200731 00759000 LA R9,REQREAD1 GET THE ADDRESS OF THE CHANNEL @V200731 00760000 * PROGRAM 00761000 BR R1 GO TO THE I/O HANDLER @V200731 00762000 SPACE 2 00763000 WRT66 EQU * @V200731 00764000 MVC CPXYSTAT(20),RUNLABEL @V200731 00765000 TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00766000 BO YES3270 YES, GO TO 3270 SUPPORT @V200731 00767000 MVC WRT3066+1(3),1(R4) GET THE MESSAGE ADDRESS @V200731 00768000 STH R3,WRT3066+6 SAVE THE DATA COUNT IN THE CCW @V200731 00769000 LA R9,WRTCRTXY GET THE ADDRESS OF THE CHANNEL @V200731 00770000 * PROGRAM 00771000 TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 00772000 BZ GRAPWRT NO, GO TO SIO SECTION @V200731 00773000 LA R9,ERSE3066 GET THE ADDRESS OF THE CHANNEL @V200731 00774000 * PROGRAM 00775000 MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 00776000 GRAPWRT EQU * @V200731 00777000 LA R14,GRAPHIC1 RETURN ADDRESS FROM I/O HANDLER @V200731 00778000 BR R1 GO TO THE I/O HANDLER @V200731 00779000 YES3270 EQU * @V200731 00780000 SR R14,R14 CLEAR REGISTER 14 @V200731 00781000 LA R9,WRTCRT70 GET THE ADDRESS OF THE CHANNEL @V200731 00782000 * PROGRAM 00783000 TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 00784000 BZ NOCL3270 NO, DON'T CLEAR SCREEN @V200731 00785000 MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 00786000 LA R9,ERSE3270 GET THE ADDRESS OF THE CHANNEL @V200731 00787000 * PROGRAM 00788000 NOCL3270 EQU * @V200731 00789000 IC R14,SBADDR GET THE CURRENT LINE POINTER @V200731 00790000 SLL R14,1 SETUP THE INDEX INTO THE TABLE @V200731 00791000 LH R14,TABLE70(R14) GET THE LINE ADDRESS @V200731 00792000 STCM R14,3,LAB3270+2 SAVE THE CURRENT LINE POINTER @V200731 00793000 MVC WRTCR70+1(3),1(R4) GET THE MESSAGE ADDRESS @V200731 00794000 STH R3,WRTCR70+6 SAVE THE BYTE COUNT IN THE CCW @V200731 00795000 B GRAPWRT GO GET THE RETURN ADDRESS @V200731 00796000 SPACE 2 00797000 GRAPHIC1 EQU * @V200731 00798000 LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 00799000 NI PARM,X'FF'-PARMCLE CLEAR THE ERASE INDICATOR @V200731 00800000 SR R2,R2 CLEAR REGISTER 2 @V200731 00801000 IC R2,SBADDR GET THE Y COORDINATE @V200731 00802000 LA R2,1(R2) UPDATE THE Y COORDINATE @V200731 00803000 CH R3,=H'80' IS THE DATA COUNT LONGER THAN 1 @V200731 00804000 * LINE 00805000 BNH *+8 NO, GO SAVE Y COORDINATE @V200731 00806000 LA R2,1(R2) UPDATE THE Y COORDINATE AGAIN @V200731 00807000 STC R2,SBADDR SAVE THE Y COORDINATE @V200731 00808000 MH R2,=H'80' GET THE BYTE LENGTH @V200731 00809000 L R14,=F'2640' GET THE MAX. LENGTH @V200731 00810000 TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00811000 BZ TEST3066 NO, GO TEST FOR END OF CRT @V200731 00812000 L R14,MAXLEN GET THE MAX. LEN FOR 3270/3278 @V60A6B6 00813000 TEST3066 EQU * @V200731 00814000 CR R2,R14 IS THE Y COORDINATE AT THE END @V200731 00815000 * OF THE 00816000 * CRT 00817000 BL RETWORD NO, CHECK FOR CMD CHAINING @VA08599 00818000 OI PARM,PARMATT SET THE ATTENTION REQUEST @V200731 00819000 MVI CSW+4,X'00' CLEAR THE CSW STATUS @V200731 00820000 MVC CPXYSTAT(20),MORLABEL @V200731 00821000 LA R14,GRAPHIC3 RETURN ADDRESS FROM I/O HANDLER @V200731 00822000 LA R9,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 00823000 * PROGRAM 00824000 TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00825000 BCR 8,R1 NO, GO ISSUE SIO @V200731 00826000 LA R9,MORECCW1 GET THE ADDRESS OF THE CHANNEL @V200731 00827000 * PROGRAM 00828000 BR R1 GO ISSUE SIO @V200731 00829000 GRAPHIC3 EQU * @V200731 00830000 TM STAT,ATTN IS THE ATTENTION FLAG ACTIVE ? @VM08604 00831000 BZ GRAPPSW NO, GO WAIT FOR AN ATTENTION @V200731 00832000 * INTERRUPT 00833000 NI PARM,X'FF'-PARMATT CLEAR THE ATTENTION INDICATOR@V200731 00834000 CANCEL1 EQU * @V200731 00835000 LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 00836000 MVI SBADDR,X'00' SET THE Y COORDINATE TO ZERO @V200731 00837000 MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 00838000 LA R9,CNCL3066 GET THE ADDRESS OF THE CHANNEL @V200731 00839000 * PROGRAM 00840000 TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00841000 BZ RETURNCN NO, GO GET RETURN ADDRESS @V200731 00842000 LA R9,CNCL3270 GET THE ADDRESS OF THE CHANNEL @V200731 00843000 * PROGRAM 00844000 RETURNCN EQU * @V200731 00845000 LA R14,READ66 GET THE ADDRESS OF THE READ @V200731 00846000 * SECTION 00847000 TM PARM,PARMREA IS THIS A READ REQUEST ? @V200731 00848000 BCR 1,R1 YES, GO TO THE I/O HANDLER @V200731 00849000 LA R14,RETWORD RETURN ADDRESS FROM I/O HANDLER @V200731 00850000 BR R1 GO TO THE I/O HANDLER @V200731 00851000 SPACE 1 00852000 GRAPHIC0 EQU * @V200731 00853000 TM STAT,ATTN IS THE ATTENTION FLAG ACTIVE ? @VM08604 00854000 BO GRAPATTN YES, GO SETUP CCW FOR READ @V200731 00855000 * MANUAL INPUT 00856000 GRAPPSW EQU * @V200731 00857000 LPSW WAITCON GO WAIT FOR INTERRUPT @V200731 00858000 SPACE 1 00859000 GRAPATTN EQU * @V200731 00860000 LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 00861000 NI PARM,X'FF'-PARMATT CLEAR ATTENTION REQUEST @V200731 00862000 TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00863000 BO YES3270A YES, GO TO 3270 SUPPORT @V200731 00864000 STH R3,RD3066DA+6 STORE THE COUNT IN THE CCW @V200731 00865000 MVC RD3066DA+1(3),1(R4) MOVE THE ADDRESS OF THE READ@V200731 00866000 * BUFFER INTO THE CCW 00867000 LA R9,RDMI3066 GET THE ADDRESS OF THE CHANNEL @V200731 00868000 * PROGRAM 00869000 RETURNAD EQU * @V200731 00870000 LA R14,RET66MI RETURN ADDRESS FROM I/O HANDLER @V200731 00871000 BR R1 GO TO THE I/O HANDLER @V200731 00872000 YES3270A EQU * @V200731 00873000 LA R14,6(R3) ADD 6 T0 THE TOTAL COUNT @V200731 00874000 STH R14,RD3270DA+6 STORE THE COUNT IN THE CCW @V200731 00875000 LA R14,BLNKLINE GET THE ADDRESS OF THE BUFFER @V200731 00876000 STCM R14,7,RD3270DA+1 MOVE THE ADDRESS OF THE READ @V200731 00877000 * BUFFER INTO THE CCW 00878000 LA R9,RDMI3270 GET THE ADDRESS OF THE CHANNEL @V200731 00879000 * PROGRAM 00880000 B RETURNAD GO GET THE RETURN ADDRESS @V200731 00881000 SPACE 2 00882000 RET66MI EQU * @V200731 00883000 LM R3,R4,SAVEAREA GET THE DATA REGISTERS @V200731 00884000 MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 00885000 LA R9,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 00886000 * PROGRAM 00887000 LA R14,RETINPUT RETURN ADDRESS FROM I/O HANDLER @V200731 00888000 TM PARM,PARM327 IS THIS A 3270 GRAPHIC ? @V200731 00889000 BO YES3270B YES, GO CHECK 3270 SUPPORT @V200731 00890000 TM RDMIDATA+2,X'40' DID THE OPERATOR HIT THE @V200731 00891000 * CANCEL KEY 00892000 BO CANCEL1 YES, GO CLEAR SCREEN @V200731 00893000 CLC RDMIDATA(2),SBAREAD DID THE CURSOR MOVE ? @V200731 00894000 BCR 7,R1 YES, GO WRITE STATUS @V200731 00895000 OI PARM,PARMNDA SET INDICATOR FOR NO DATA @V200731 00896000 BR R1 GO WRITE OUT STATUS @V200731 00897000 YES3270B EQU * @V200731 00898000 CLI BLNKLINE,X'6E' DID THE OPERATOR HIT THE CANCEL @V200731 00899000 * KEY 00900000 BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00901000 CLI BLNKLINE,X'6D' DID THE OPERATOR HIT THE CLEAR @V200731 00902000 * KEY 00903000 BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00904000 CLI BLNKLINE,X'6C' DID OPERATOR HIT PA1 KEY @V200731 00905000 BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00906000 OI PARM,PARMNDA SET INDICATOR FOR NO DATA @V200731 00907000 CLI BLNKLINE,X'01' DID OPERATOR HIT TEST REQ. KEY @VM08604 00908000 BE ENT3270 YES, GO WRITE STATUS @VM08604 00909000 CLI BLNKLINE,X'E6' IS THIS THE CARD READER @VM08604 00910000 BE ENT3270 YES, GO WRITE STATUS @VM08604 00911000 CLI BLNKLINE+6,X'00' DATA IN INPUT AREA ? @VM08604 00912000 BNE DATA3270 YES, GO DISPLAY DATA @VM08604 00913000 CLC BLNKLINE+1(2),ADDR5 DID CURSOR MOVE? @V60A6B6 00914000 BE ENT3270 NO @V60A6B6 00915000 DATA3270 EQU * @VM08604 00916000 NI PARM,X'FF'-PARMNDA SET INDICATOR FOR NO DATA @V200731 00917000 ICM R9,7,1(R4) GET ADDRESS OF USER'S BUFFER @V200731 00918000 BCTR R3,R0 SUBTRACT ONE FROM COUNT (EX @V200731 00919000 * INSTR.) 00920000 EX R3,MOV3270 MOVE DATA INTO USER'S BUFFER @V200731 00921000 ENT3270 EQU * @V200731 00922000 LA R9,CRTWORD1 GET THE ADDRESS OF THE CHANNEL @V200731 00923000 * PROGRAM 00924000 BR R1 GO ISSUE SIO @V200731 00925000 SPACE 2 00926000 ********************************************************************* 00927000 MOV3270 MVC 0(0,R9),BLNKLINE+6 MOVE THE DATA INTO THE @V200731 00928000 * USER'S BUFFER 00929000 ********************************************************************* 00930000 SPACE 2 00931000 RETINPUT EQU * @V200731 00932000 LM R3,R4,SAVEAREA GET THE DATA REGISTERS @VM08531 00933000 TM PARM,PARMNDA IS NO DATA INDICATED ? @VM08531 00934000 BZ WRT66 NO, GO DISPLAY INPUT ON CRT @VM08531 00935000 RETWORD EQU * @VM08531 00936000 TM 4(R4),CC IS COMMAND CHAINING ON ? @VM08531 00937000 LA R4,8(R4) UPDATE THE CCW ADDRESS TO NEXT @VM08531 00938000 * CCW 00939000 BO GETCCW YES, GET DATA COUNT FROM CCW @VM08531 00940000 LM R14,R5,GRAPHSAV GET CALLER'S REGISTERS @VM08531 00941000 BR R14 RETURN TO CALLER @VM08531 00942000 EJECT 00943000 *********************************************************************** 00944000 * * * 00945000 * * CARD AND CONSOLE I/O INTERRUPT ROUTINE 00946000 * * * 00947000 *********************************************************************** 00948000 SPACE 1 00949000 CONSINT CLC CONSOL(2),58 WAS A CONSOLE DEVICE 00950000 BNE SELREAD IF NOT CONSOLE BRANCH 00951000 MVC STAT(2),CSW+4 SAVE STATUS 00952000 TIO 0(R10) CLEAR PENDING STATUS @V2A2029 00953000 BC 2,*-4 LOOP IF BUSY @VA03149 00954000 OC STAT(2),CSW+4 SAVE ANY STATUS 00955000 TM STAT,ATTN IS THIS AN ATTENTION INTERRUPT ? @V200731 00956000 BNO CONUNITE NO, GO CHECK FOR UNIT EXECPTION @V200731 00957000 TM PARM,PARMGRP IS THE GRAPHIC SUPPORT ACTIVE ? @V200731 00958000 BZ STMSG NO, GO CLEAR CARD FLAG @V200731 00959000 TM PARM,PARMATT IS THIS A ATTENTION REQUEST ? @V200731 00960000 BCR 1,R14 YES, GO CHECK FOR ATTENTION @V200731 00961000 * INTERRUPT 00962000 CONUNITE EQU * @V200731 00963000 TM STAT,UC WAS THERE A UNIT CHECK 00964000 BNO GOODSTA NO,BRANCH REG 14 00965000 OI STAT,UE OR IN UNIT EXCEPTION TOO 00966000 GOODSTA TIO 0(R10) WAIT FOR DEVICE END @V2A2029 00967000 BC 7,*-4 LOOP UNTIL CLEAR 00968000 OC CSW+4(2),STAT PUT BACK ALL THE STATUS 00969000 TM CSW+4,CUE IS THIS CONTROL UNIT END @VM08604 00970000 BO STARTIO1 GO RESTART I/O OPERATION @VM08604 00971000 BR R14 BRANCH BACK 00972000 SELREAD CLC IPLDEV(2),58 IS IT IPL DEV 00973000 BNE XWAIT NO,WAIT 00974000 TM CSW+5,X'BF' CHANNEL ERROR? 00975000 BNZ ERRORMSG PRINT ERROR MSG 00976000 TM CSW+4,UC IS IT UNIT CHECK? 00977000 BO DETEST GO CHECK FOR CHAN END 00978000 TM CSW+4,UE UNIT EXCEPTION? 00979000 BO TESTDEV YES,BRANCH 00980000 CLI CSW+4,CE+DE CH END DEV END? 00981000 BE VALIDATE YES VALIDATE CARD 00982000 TM CSW+4,CE IS IT CHANNEL END ONLY? 00983000 BO DRAINDE GO DRAIN DEV END 00984000 TM CSW+4,DE DEVICE END ONLY? 00985000 BO GETCARD YES MUST BE DEV MADE READY 00986000 B ERRORMSG PRINT ERROR MESSAGE 00987000 DETEST TM CSW+4,CE IS IT CHAN END 00988000 BO DRAINDE DRAIN DEVICE END 00989000 B ERRORMSG PRINT ERROR MESSAGE 00990000 DRAINDE TIO 0(R10) CLEAR DEVICE END @V2A2029 00991000 BC 7,*-4 LOOP UNTIL CLEAR 00992000 B ERRORMSG PRINT ERROR MESSAGE 00993000 EJECT 00994000 *********************************************************************** 00995000 * * 00996000 * VALIDATE CARD INPUT ROUTINE * 00997000 * * 00998000 *********************************************************************** 00999000 SPACE 1 01000000 VALIDATE MVI CDSW2,X'FF' TURN ON CARD SW 01001000 CLI CDINPUT,C'F' FORMAT? 01002000 BE ALLSCAN YES BRANCH 01003000 CLI CDINPUT,C'A' ALLOCATE? 01004000 BE ALLSCAN YES,BRANCH 01005000 CLI ALLOERR,X'FF' ALLOCATE ERROR? 01006000 BE GETCARD YES,GET NEXT CARD 01007000 CLI ALLOSW,X'FF' IS ALLOCATE SW ON? 01008000 BE ALLSCAN1 YES,BRANCH 01009000 B BADINPUT BAD INPUT 01010000 ALLSCAN CLI ALLOSW,X'FF' ALLOCATE OPERATION 01011000 BNE NOPRINT NO,NO PRINT 01012000 LA R4,TYPERR PRINT NO END CARD 01013000 BAL R14,WMSG WRITE MESSAGE 01014000 NOPRINT MVI ALLOSW,X'00' TURN ALLOCATE SW OFF 01015000 ALLSCAN1 MVI ALLOERR,X'00' TURN OFF ALLOCATE ERROR SW 01016000 LA R1,CDFORA-8 R1 ADDRESS OF OUTPUT AREA-8 01017000 LA R3,CDINPUT R3 POINTS TO CARD INPUT 01018000 XC CDFORA(56),CDFORA CLEAR OUTPUT AREA 01019000 NEWFIELD XR R2,R2 R2 TO ZERO 01020000 MVC DATA,0(R3) SAVE FIRST FIELD 01021000 CL R1,=A(CDLAST) IS R1 AT LAST FIELD? 01022000 BE ENDUP YES,BRANCH 01023000 SCAN CLI 0(R3),C' ' IS IT BLANK? 01024000 BE FIELD YES,BRANCH 01025000 CLI 0(R3),C',' IS IT A COMMA? 01026000 BE FIELD YES,BRANCH 01027000 LA R2,1(R2) ADD 1 01028000 LA R3,1(R3) ADD 1 01029000 B SCAN BRANCH 01030000 FIELD LA R1,8(R1) POINT TO NEXT FIELD 01031000 NR R2,R2 IS R2 ZERO? 01032000 BM NODEFALT BRANCH IF NOT DEFAULT 01033000 XC DATA,DATA CLEAR DATA 01034000 LA R2,8(R2) UP LENGTH TO 8 01035000 NODEFALT BCTR R2,0 SUBTRACT 1 R2 01036000 EX R2,MOVE PUT DATA IN OUTPUT FIELD 01037000 CLI 0(R3),C' ' BLANK MEANS END OF INPUT 01038000 BE ENDUP YES,GO END 01039000 LA R3,1(R3) ADD 1 TO R3 01040000 CLI 0(R3),C' ' NEXT POSITION BLANK? 01041000 BE ENDUP YES,NO MORE DATA 01042000 B NEWFIELD BRANCH 01043000 MOVE MVC 0(1,R1),DATA PUT DATA IN OUTPUT 01044000 ENDUP EQU * @VM08604 01045000 CLC 0(3,R3),BLANKS8 NEXT 3 POSITION BLANKS ? @VM08604 01046000 BNE BADINPUT NO,THAT'S BAD INPUT 01047000 CL R1,=A(CDSTART) IS LABEL ONLY OPERATION? 01048000 BE LCHECK GO CHECK INPUT 01049000 CL R1,=A(CDLAST) DID WE FILL LAST FIELD? 01050000 BE FCHECK YES,CHECK FOR FORMAT 01051000 CL R1,=A(CDLABEL) IS IT ALLOCATE OPERATOR 01052000 BE ACHECK CHECK FOR ALLOCATE 01053000 CLI ALLOSW,X'FF' IS SWITCH ON? 01054000 BNE BADINPUT NO,BAD 01055000 CL R1,=A(CDTYPE) LAST FIELD ALLOCATE END 01056000 BE REREAD YES,ALLOCATE 01057000 CL R1,=A(CDFORA) IS IT END CARD? 01058000 BE REREAD YES,BRANCH 01059000 B BADINPUT NONE OF ABOVE BADINPUT 01060000 LCHECK CLI CDSTART,C'L' IS LABEL ONLY? 01061000 BNE BADINPUT NO,BAD INPUT 01062000 FCHECK CLI CDFORA,C'F' IS IT FORMAT? 01063000 BE SELECT YES, DO THE TASK 01064000 B BADINPUT NO,BAD 01065000 ACHECK CLI CDFORA,C'A' IS IT ALLOCATE? 01066000 BNE BADINPUT NO,BAD 01067000 MVI ALLOSW,X'FF' TURN ON ALLOCATE SWITCH 01068000 B SELECT DO ALLOCATE 01069000 SPACE 3 01070000 *********************************************************************** 01071000 * * 01072000 * CARD ERROR ROUTINE * 01073000 * * 01074000 *********************************************************************** 01075000 SPACE 1 01076000 ERRORMSG XC ALLOSW,ALLOSW CLEAR ALLOCATE SWITCH 01077000 XC CDSW(2),CDSW " CARD " 01078000 XC ALLOERR,ALLOERR CLEAR ALLOCATE ERROR SWITCH 01079000 LA R4,IPLERROR IPL ERROR MESSAGE 01080000 BAL R14,WMSG PRINT MESSAGE 01081000 B XWAIT WAIT FOR CARD DEVICE INTERRUPT 01082000 TESTDEV CLI CDSW2,X'FF' IS SW ON? 01083000 BNE SELECT NO,USE CONSOLE 01084000 XC CDSW(2),CDSW TURN OFF 2 SWITCHES 01085000 B NOCARD BRANCH 01086000 BADINPUT MVC CDSW(2),=X'0000' TURN OFF 2 SWITCHS 01087000 MVI ALLOERR,X'FF' TURN ON TO FLUSH NEXT GOOD CARD 01088000 XC ALLOSW,ALLOSW CLEAR ALLOCATE SWITCH 01089000 LA R4,BAD MSG ADDRESS IN R4 01090000 BAL R14,WMSG PRINT MSG 01091000 LA R4,CARDMESS PRINT BAD CARD 01092000 BAL R14,WMSG PRINT MSG 01093000 B STMSG BRANCH 01094000 SPACE 3 01095000 SPACE 1 01096000 CONSIRA DS 0D 01097000 DC X'00040000' 01098000 DC A(CONSINT) 01099000 CDFORA DC D'0' FOR OR ALLO 01100000 CDADD DC D'0' DEV ADDRESS 01101000 CDTYPE DC D'0' DEV TYPE 01102000 CDLABEL DC D'0' LABEL 01103000 CDSTART DC XL8'00' START CYL 01104000 CDLAST DC XL8'00' END CYL 01105000 DATA DC D'0' USED TO SAVE FIELD 01106000 DS 0D 01107000 CARDCCW CCW 02,CDINPUT,CC+SILI,80 IPL UNIT READ CCW 01108000 CCW 03,0,SILI,1 NOP 01109000 SAVE14 DC F'0' 01110000 SAVE4 DC F'0' SAVE R4 01111000 STAT DC H'0' 01112000 SAVSHIFT DC H'0' 01113000 LOSW DC X'00' 01114000 CDSW DC X'00' CARD SELECTION SW 01115000 CDSW2 DC X'FF' SECOND SEL SW 01116000 ALLOSW DC X'00' ALLOCATION ONLY INDICATOR 01117000 ALLOERR DC X'00' ALLOCATE ERROR INDIC. 01118000 CCHHR DC CL5'X' CCHHR DATA FOR MSG 01119000 HIVALUE DC H'00' 01120000 BEGIN DC H'00' 01121000 ENDING DC H'00' 01122000 PGCOUNT DC F'0' 01123000 SAVEIT DC 5F'0' 01124000 SAVFATAL DC 5F'0' 01125000 WORK DC 10F'0' WORK AREA @V2B3729 01126000 SAVEBIT DC X'0' 01127000 DS 0F 01128000 SEEK0 DC XL7'00' BBCCHHR 01129000 PCREGS DC 16F'0' 01130000 SENSE DC CL24' ' SENSE AREA @V2B3729 01131000 SPACE 1 01132000 * * CONSOLE READ CCW * 01133000 SPACE 1 01134000 RCCW CCW 10,INDATA,CC+SILI,80 READ CCW FOR CONSOLE @VM08604 01135000 CCW 3,0,SILI,1 NOP 01136000 CCWSENSE CCW 4,SENSE,SILI,24 SENSE CCW @V2B3729 01137000 EJECT 01138000 *********************************************************************** 01139000 * HEX TO BINARY ROUTINE R9=COUNT R10=OUTPUT R8=INPUT * 01140000 *********************************************************************** 01141000 SPACE 1 01142000 XBIN SR R10,R10 CLEAR REG 10 01143000 NEWNUM IC R4,0(R8) PUT CHAR INTO R4 01144000 N R4,=F'15' KEEP ONLY BITS 4TO7 OF 4TH BTYE 01145000 CLI 0(R8),X'F0' LOWER THAN F0 01146000 BC 4,ALPHA COULD BE ALPHA 01147000 CLI 0(R8),X'F9' IS IT GREATER THAN 9 01148000 BC 2,ERRORX IF GREATER ,ERROR 01149000 COMMON2 SLL R10,4 SHIFT LEFT 4 BITS 01150000 OR R10,R4 OR R4 INTO R10 01151000 LA R8,1(R8) ADD 1 TO REG 11 01152000 BCT R9,NEWNUM LOOP IF MORE TO CHECK 01153000 BR R7 GO WHENCE CAME YOU 01154000 ALPHA CLI 0(R8),X'C1' LOWER THAN A 01155000 BC 4,ERRORX IF LOWER THAT'S ERROR 01156000 CLI 0(R8),X'C6' IS NUMBER HIGHER THAN F 01157000 BC 2,ERRORX IF HIGHER ERROR 01158000 LA R4,9(R4) CHANGE 1 TO 6 INTO A TO F 01159000 B COMMON2 BRANCH 01160000 ERRORX ICM R10,8,FFS8 MAKES R10 NEGATIVE TO SHOW ERROR @VM08884 01161000 BR R7 GO WHENCE CAME YOU 01162000 SPACE 1 01163000 SPACE 1 01164000 *********************************************************************** 01165000 * * * 01166000 * * COME HERE IF FORMAT 2314,2319,3340,3330,3350,2305-1 AND 2305-2 01167000 * * * 01168000 *********************************************************************** 01169000 SPACE 1 01170000 *********************************************************************** 01171000 * * STARTING CYLINDER OR LABEL MESSAGE * 01172000 *********************************************************************** 01173000 SPACE 1 01174000 FORMALL MVI LOSW,X'00' INITIAL LABEL ONLY FLAG 01175000 LA R4,STCYL PUT CYLINDER IN MESSAGE 01176000 BAL R14,WMSG WRITE MESSAGE 01177000 BAL R14,RMSG READ RESPONSE 01178000 TM CSW+4,UE CANCEL OR UNIT CHECK 01179000 BO FORMALL YES,TRY AGAN 01180000 CLI INDATA,X'00' WAS IT EOB 01181000 MVC BEGIN,=X'0000' SET UP DEFAULT 01182000 BE NEXT IF DEFAULT GO ON 01183000 BAL R14,LNGCALC GET WORD LENGTH @VA05542 01184000 BNZ FORMALL IF LENGTH = 0 OR GT 8, TRY AGAIN @VA05542 01185000 EX R4,TSTLABL IS IT LABEL ? @VA05542 01186000 BE LAB YES,GO TO LABEL 01187000 MVC MASKB(3),MASKA SET UP F0'S IN MASKB 01188000 NC MASKB(3),INDATA AND F0'S WITH INDATA 01189000 CLC MASKB(3),MASKA IS MASK ALL NUMERIC 01190000 BNE FORMALL NO,TRY AGAN 01191000 CLI INDATA+3,X'40' ANYTHING EXTRA? @VM08604 01192000 BNE FORMALL YES - DO IT OVER AGAIN. @VM08604 01193000 PACK FIELDA+6(2),INDATA(3) IF ALL NUMERIC PACK INDATA 01194000 CVB R7,FIELDA CONVERT TO BINARY 01195000 CH R7,HIVALUE IS START CYL HIGHER THAN LAST 01196000 BH FORMALL YES,ERROR 01197000 STH R7,BEGIN BEGIN=CYL START ADDRESS 01198000 SPACE 3 01199000 *********************************************************************** 01200000 * END OF CYLINDER MESSAGE ROUTINE * 01201000 *********************************************************************** 01202000 SPACE 1 01203000 NEXT LA R4,ENDCYL USE END CYL MESSAGE 01204000 BAL R14,WMSG PRINT MESSAGE 01205000 BAL R14,RMSG READ RESPONSE 01206000 TM CSW+4,UE CANCEL KEY OR UNIT CHECK 01207000 BO NEXT YES,TRY AGAN 01208000 CLI INDATA,X'00' WAS DEFAULT SET 01209000 MVC ENDING,HIVALUE SAVE HIGHEST DEFAULT VALUE 01210000 BE LIMITS BRANCH IF DEFAULT 01211000 MVC MASKB(3),MASKA PUT F0'S INTO MASKB 01212000 NC MASKB(3),INDATA AND INDATA WITH F0'S 01213000 CLC MASKB(3),MASKA IS INDATA ALL NUMREIC 01214000 BNE NEXT NO, TRY AGAN 01215000 OC INDATA(4),BLANKS8 CONVERT TO UPPER CASE @VM08604 01216000 CLI INDATA+3,X'40' ANYTHING EXTRA? @VM08604 01217000 BNE NEXT YES - WE DON'T WANT IT... @VM08604 01218000 PACK FIELDA+6(2),INDATA(3) PACK INDATA 01219000 CVB R7,FIELDA CONVERT INDATA INTO BINARY 01220000 CH R7,HIVALUE END BEYOND LAST CYL? 01221000 BH NEXT YES,TRY AGAN 01222000 STH R7,ENDING SAVE ENDING ADRESS 01223000 LIMITS CLC BEGIN,ENDING IS BEGINING HIGHER THAN END 01224000 BH NEXT YES,-ERROR- TRY AGAN 01225000 SPACE 1 01226000 *********************************************************************** 01227000 * * ASK FOR LABEL INFORMATION * 01228000 *********************************************************************** 01229000 SPACE 1 01230000 LAB MVC LOSW(1),INDATA CHECK FIRST BYTE INDATA SAVED 01231000 LAB2 LA R4,RDLAB REQUEST VOLUME LABEL 01232000 BAL R14,WMSG WRITE MESSAGE 01233000 BAL R14,RMSG READ RESPONSE 01234000 TM CSW+4,UE CANCEL OR UNIT CHECK 01235000 BO LAB2 YES,TRY AGAN 01236000 OC INDATA(7),BLANKS8 CONVER TO UPPER CASE @VM08604 01237000 CLI INDATA+6,X'40' TOO MUCH DATA ENTER ? @VM08604 01238000 BNE LAB2 YES,BRANCH 01239000 CLI INDATA,C' ' FIRST BYTE BLANK 01240000 BE LAB2 YES- ERROR GO DO IT AGAN 01241000 EJECT 01242000 *********************************************************************** 01243000 * * LABEL ONLY ROUTINE * 01244000 * * PRINT LABELING COMPLETE * 01245000 *********************************************************************** 01246000 SPACE 1 01247000 XC SEEKA(6),SEEKA CLEAR CCW DATA AREA FOR R3 @V56BDA8 01248000 MVC CPLABEL,=X'009596958500' PLUG IN LOWER CASE LABEL 'NONE' 01249000 LA R9,LBLREC PUT LABEL CCW ADDRESS INTO R9 01250000 ST R9,CAW LABEL CCW ADDRESS INTO CAW 01251000 LH R5,DSKADD DEVICE ADDRESS INTO R5 01252000 TIO 0(R5) CLEAR STATUS OF DEVICE 01253000 BNZ *-4 IF NOT CLEAR TRY AGAN 01254000 SIO 0(R5) START DEVICE 01255000 TIO 0(R5) IS DEVICE DONE 01256000 BNZ *-4 NO,TRY AGAN 01257000 CLI LOSW,C'L' LABEL ONLY? 01258000 BE LABONLY YES BRANCH 01259000 CLI FLAG,C'A' IS IT ALLOCATE? @V56BDA8 01260000 BE LABMATCH VERIFY LABELS IF ALLOCATE @V56BDA8 01261000 CLC BEGIN,=X'0000' IS IT REGULAR FORMAT? @V56BDA8 01262000 BE FMT YES...CONTINUE @V56BDA8 01263000 LABMATCH CLC CPLABEL,INDATA DO LABELS MATCH @V56BDA8 01264000 BNE LABELBAD NO,BRANCH 01265000 CLI FLAG,C'F' FORMAT? 01266000 BE REGFORM1 YES,BRANCH 01267000 B ALLOCATE MUST BE ALLOCATE 01268000 LABELBAD MVC WRONG+37(6),INDATA SET UP LABEL 01269000 MVC WRONG+26(6),CPLABEL SET UP LABEL 01270000 LA R4,WRONG PRINT WRONG LABEL 01271000 BAL R14,WMSG PRINT MESSAGE 01272000 CLI CDSW2,X'FF' CARD SWITCH ON? 01273000 BE BADINPUT YES,BRANCH 01274000 B LAB2 BRANCH 01275000 LABONLY MVC CPLABEL(6),INDATA MOVE IN NEW LABEL NAME 01276000 CLC =C'CMS=',OSLABEL IS THIS A CMS DISK 01277000 BE *+10 YES- BRANCH 01278000 MVC OSLABEL(4),VOL1 NO- MAKE IT A VOL1 LABLE 01279000 LH R5,DSKADD DEVICE ADDRESS INTO R5 01280000 LA R9,LABWRITE LABEL CCW CHAIN INTO R9 01281000 ST R9,CAW CAW POINTS TO LABEL CCW'S 01282000 SSM =4X'00' DISABLE I/O INTERRUPTS @VA10831 01282500 TIO 0(R5) IS DEVICE AVAILABLE? 01283000 BC 2,*-4 LOOP IF BUSY 01284000 SIO 0(R5) WRITE OUT THE LABEL 01285000 TIO TIO 0(R5) DRAIN THE INT 01286000 BC 2,*-4 LOOP UNTIL DONE 01287000 BC 8,*-8 LOOP FOR CSW @VA10831 01287500 BC 1,TIOCC3 CC=3 - HELP . . . @VA00923 01288000 TM CSW+5,X'FF' ANY BAD CHANNEL STATUS 01289000 BNZ VOL1ERR YES- FATAL 01290000 TM CSW+4,UC UNIT CHECK 01291000 BO VOL1ERR YES- BRANCH 01292000 TM CSW+4,CE CHANNEL END 01293000 BO VOL1OK YES- BRANCH ALL OK 01294000 SSM =4X'FF' ALLOW I/O INTERRUPTS @VA10831 01295100 VOL1ERR BAL R7,SENSIT GET THE SENSE DATA 01296000 MVC CCHHR(5),R3VOL1 MOVE IN THE CCHHR DATA 01297000 BAL R7,SENSIT2 TYPE THE MSG 01298000 B FATAL 01299000 VOL1OK MVC LABELOK+14(6),CPLABEL MOVE THE LABEL INTO THE MSG 01300000 LA R4,LABELOK POINT TO THE MSG 01301000 BAL R14,WMSG AND GO TYPE IT 01302000 B GETCARD GO PROMPT FOR ANOTHER TASK 01303000 SPACE 01304000 TIOCC3 EQU * @VA00923 01305000 LA R4,WR1 TELL HIM ABOUT PROBLEMS @VA00923 01306000 BAL R14,WMSG . . . @VA00923 01307000 B GETCARD SEE IF THERE'S ANY MORE WORK. @VA00923 01308000 EJECT 01309000 *********************************************************************** 01310000 * * CCW'S FOR READING LABEL * 01311000 *********************************************************************** 01312000 DS 0D 01313000 LBLREC CCW 7,SEEKA,CC,6 01314000 CCW 31,FILEMASK,CC,1 01315000 CCW 49,R3VOL1,CC+SILI,5 FIND REC 3 VOL1 LABEL RECO 01316000 CCW 8,*-8,0,0 01317000 CCW 6,OSLABEL,SILI+CC,80 READ LABELS 01318000 CCW 49,R4ALLOC,CC+SILI,5 SEARCH ID EQUAL 01319000 CCW 08,*-8,0,0 TIC 01320000 CCW 06,TABLE,SILI,1024 READ ALLOCATION TABLE 01321000 LABWRITE CCW 7,SEEKA,CC,6 SEEK 01322000 CCW 31,FILEMASK,CC,1 SET FILE MASK 01323000 CCW 49,R3VOL1,CC+SILI,5 FIND VOL1 LABEL RECORD 01324000 CCW 8,*-8,0,0 TIC 01325000 CCW 5,OSLABEL,SILI,80 WRITE LABEL 01326000 SPACE 01327000 FMT CLC CPLABEL,=X'009596958500' PROB. READING R3? @V56BDA8 01328000 BE REGFORM YES, DON'T SAVE ALT. TRK INFO @V56BDA8 01329000 CLC OSLABEL(3),=CL3'VOL' STD. LABEL @V56BDA8 01330000 BNE REGFORM NO, SKIP CMS LABEL @V56BDA8 01331000 SPACE 01332000 * IBCDASDI UTILITY KEEPS THE CCHH FOR THE NEXT AVAILABLE 01333000 * ALT. TRK. AND THE NUMBER OF ALT. TRKS IN THE FMT4 DSCB 01334000 * WE DON'T WANT TO DESTROY THIS INFORMATION WHEN CP WRITES 01335000 * ITS FORMAT4 DSCB; THE INFO WILL BE SAVED AND INCLUDED IN 01336000 * THE FORMAT4 DSCB WRITTEN BY DMKFMT. IBCDASDI AND DMKFMT 01337000 * WRITE R3 WITH "VOL1". CMS FORMAT WRITES NO FMT4 DSCB 01338000 * AND THEREFORE THERE IS NO POINT IN LOOKING FOR THE INFO. 01339000 SPACE 01340000 TM TYPE,TYP3330+TYP334X+TYP3350 3330,334X,3350 ? @VA13248 01341500 BZ REGFORM NO, THEN REG FORMAT @VA13248 01342500 CLC VTOCBEG,=F'0' VERIFY VTOC ADDRESS @V56BDA8 01343000 * IF ZEROS OR BELOW CCHHR = 0000000005, DON'T READ 01344000 * IBCDASDI DOES NOT PERMIT VTOC ON TRACK 0. 01345000 * CP'S DMKFMT PLACES VTOC ON CCHHR = 0000000005 01346000 BNE READFMT4 GO AHEAD AND READ @V56BDA8 01347000 CLI VTOCR,X'05' CANNOT BE LESS THAN R5 @V56BDA8 01348000 BL REGFORM NO POINT IN READING FMT4 @V56BDA8 01349000 READFMT4 LA R9,RDFMT4 CH. PGM. TO RD FMT4 @V56BDA8 01350000 MVC SEEKA+2(4),VTOCBEG SETUP THE SEEK ADDRESS @V56BDA8 01351000 ST R9,CAW SETUP FOR THE CHANNEL PROGRAM @V56BDA8 01352000 TIO 0(R5) MAKE SURE DEVICE IS READY @V56BDA8 01353000 BNZ *-4 ... @V56BDA8 01354000 SIO 0(R5) READ FMT4 @V56BDA8 01355000 TIO 0(R5) ... @V56BDA8 01356000 BNZ *-4 ... @V56BDA8 01357000 CLC NEXTCCHH(20),HIVALUE NEXT AVAILABLE ALT TRK @VA13248 01358500 * BETTER BE IN ALT CYL 01359500 BL REGFORM NO, DON'T SAVE INFO @V56BDA8 01365000 SAVEALT MVC ALTCCHH,NEXTCCHH SAVE NEXT AVAIL. ALT TRK & @V56BDA8 01366000 * NO. OF ALT. TRKS FOR CP'S FMT4 01367000 *********************************************************************** 01368000 * * COME HERE WHEN FORMAT * 01369000 * * PRINT MSG FORMATING STARTED * 01370000 *********************************************************************** 01371000 SPACE 1 01372000 REGFORM MVC OSLABEL(96),SAVEVOL1 RESTORE TO IPL'ED DATA 01373000 MVC FMT4DATA(96),SAVEFMT4 RESTORE TO CP'S FMT4 @V56BDA8 01374000 MVC NEXTCCHH(6),ALTCCHH MOVE NEXT AVAIL ALT TRK & @V56BDA8 01375000 * NO. OF ALT. TRKS TO CP'S FMT4 01376000 XC ALTCCHH(6),ALTCCHH CLEAR IN CASE SECOND PASS @V56BDA8 01377000 XC TABLE(256),TABLE CLEAR ALLOCATION TABLE 01378000 XC TABLE1(256),TABLE1 " 01379000 XC TABLE2(256),TABLE2 " 01380000 XC TABLE3(256),TABLE3 " 01381000 LH R4,HIVALUE POINT TO THE END OF ALLOCATION TABLE 01382000 LA R4,TABLE+1(R4) * 01383000 MVI 0(R4),X'FF' TURN ON THE END OF TABLE FLAG 01384000 REGFORM1 MVC CPLABEL(6),INDATA MOVE IN LABEL 01385000 LA R4,PROGFOR SET UP MESSAGE FORMAT STARTED 01386000 BAL R14,WMSG WRITE MESSAGE 01387000 MVI ONETIME+1,X'80' SET UP FOR EQUAL COMPARE 01388000 MVI ALTFLAG,0 INIT FLAG FOR DASD I/O INT. HNDLR@V56BDA8 01389000 MVC IONPSW(8),NEWPSW CHANGE NEW IO PSW 01390000 XC PGCOUNT(4),PGCOUNT CLEAR FIELD 01391000 GOA1 XC ERCOUNT(4),ERCOUNT CLEAR ERROR COUNT 01392000 MVC SEEKA(118),WKSEEK RESTORE TO STARTING SEEKS @V2A2029 01393000 MVC REC1(184),RNDATA RESTORE DASD RECORD FIELDS @V304498 01394000 CLI TYPE,TYP3350 MODIFY FOR 3350 FILLER LENGTH @V304498 01395000 BNE GOTST40 NO, BYPASS FILLER MODIFICATIONS @V304498 01396000 LA R7,11 NUMBER OF FILLER CCW'S @V304498 01397000 LA R5,RECX1+6 FIRST FILLER CCW @V304498 01398000 LA R4,300 ACTUAL FILLER LENGTH @V304498 01399000 FILL3350 STH R4,0(0,R5) MODIFY FILLER CCW @V304498 01400000 LA R5,16(R5) UPDATE FILLER CCW ADDRESS @V304498 01401000 BCT R7,FILL3350 PROCESS ALL FILLER CCW'S @V304498 01402000 MVI REC4+3,RECN0 INITIALIZE HEAD NO'S FOR 3350 @V304498 01403000 MVI RECX4+3,RECN0 . . . @V304498 01404000 MVI REC7+3,RECN1 . . . @V304498 01405000 MVI RECX7+3,RECN1 . . . @V304498 01406000 MVI REC8+3,RECN1 . . . @V304498 01407000 MVI RECX8+3,RECN1 . . . @V304498 01408000 MVI REC10+3,RECN2 . . . @V304498 01409000 MVI RECX10+3,RECN2 . . . @V304498 01410000 MVI REC11+3,RECN2 . . . @V304498 01411000 MVI RECX11+3,RECN2 . . . @V304498 01412000 MVI REC12+3,RECN2 . . . @V304498 01413000 B GOA2 INITIALIZE SEEK FIELDS @V304498 01414000 GOTST40 EQU * @V304498 01415000 CLI TYPE,X'40' 3340 DEVICE TYPE ? @V2A2029 01416000 BNE GOA2 NO - BRANCH @V2A2029 01417000 MVI REC3+3,X'01' SET UP HEAD NUMBER FOR 3340 @V2A2029 01418000 MVI REC4+3,X'01' .. @V2A2029 01419000 MVI REC5+3,X'02' .. @V2A2029 01420000 MVI REC6+3,X'02' .. @V2A2029 01421000 MVI REC7+3,X'03' .. @V2A2029 01422000 MVI REC8+3,X'03' .. @V2A2029 01423000 MVI REC9+3,X'04' .. @V2A2029 01424000 MVI REC10+3,X'04' .. @V2A2029 01425000 MVI REC11+3,X'05' .. @V2A2029 01426000 MVI REC12+3,X'05' .. @V2A2029 01427000 GOA2 MVC R1STUF(96),RNSTUF RESTORE 2314 RECORD FIELDS @V2A2029 01428000 XC R0STUF,R0STUF CLEAR FIELD 01429000 LA R7,4 NUMBER OF SEEK FIELDS 3330 @V2A2029 01430000 CLI TYPE,X'30' IS IT 3330? 01431000 BE MAIN YES BRANCH 01432000 LA R7,3 NUMBER OF 3350 SEEK FIELDS @V304498 01433000 CLI TYPE,TYP3350 IS IT 3350 ? @V304498 01434000 BE MAIN YES, INITIALIZE SEEK FIELDS @V304498 01435000 CLI TYPE,X'14' IS IT 2314 2319? 01436000 LA R7,5 NUMBER OF SEEK FIELDS 2314 2319 @V2A2029 01437000 BE MAIN YES BRANCH 01438000 LA R7,4 NUMBER OF SEEK FIELDS 2305 @V2A2029 01439000 TM TYPE,X'50' 2305 TYPE ? @V2A2029 01440000 BO MAIN YES - BRANCH @V2A2029 01441000 LA R7,6 NUMBER OF SEEK FIELDS 3340 @V2A2029 01442000 MAIN SR R4,R4 CLEAR R4 @V2A2029 01443000 LH R4,BEGIN GET BEGINNING OR NEW CYL TO SEEK 01444000 STH R4,SEEK0+2 BEGINNING CYLINDER INTO SEEK0 01445000 LA R5,SEEKA+2 GET CCHH FIELD ADDRESS 01446000 *********************************************************************** 01447000 * * THIS ROUTINE PLUGS CYLINDER OF SEEK FIELD * 01448000 * * R4=BEGINNING SEEK ADDRESS * 01449000 *********************************************************************** 01450000 STORE STH R4,0(R5) FILL IN CYL FOR SEEKA,B,C,D,E 01451000 LA R5,20(R5) BUMP TO NEXT SEEK FIELD 01452000 BCT R7,STORE LOOP THRU VALUE IN R7 01453000 *********************************************************************** 01454000 * * LOADS RECORD AREA WITH DASD ADDRESS * 01455000 * * R4 = BEGINNING ADDRESS * 01456000 *********************************************************************** 01457000 CLI TYPE,X'14' IS IT 2314 01458000 BNE REC30 NO,BRANCH 01459000 LA R5,R1STUF R5 POINTS TO RECORD 1 01460000 LA R7,12 R7 CONTAINS 12 01461000 LA R9,FMT2314 R9 POINTS TO 2314 CCWS 01462000 STR STH R4,0(R5) FILL IN RXSTUF WITH SEEK ADDRESS 01463000 LA R5,8(R5) R5 POINTS TO NEXT RECORD 01464000 BCT R7,STR GO THRU 12 TIMES 01465000 LH R5,DSKADD R5 CONTAINS DEVICE ADDRESS 01466000 ST R9,CAW CAW POINTS TO CCW CHAIN 01467000 B STIO START DEVICE 01468000 REC30 LA R5,REC1 R5 =RECORD FIELDS 01469000 LA R7,23 SET UP NO. CCW FIELDS TO UPDATE @V304498 01470000 LA R9,FMT3340 R9 = ADDRESS OF CCWS @V2A2029 01471000 CLI TYPE,X'40' 3340-35 OR 3340-70 DEVICE ? @V2A2029 01472000 BE STR YES - BRANCH @V2A2029 01473000 LA R9,FMT3350 3350 FORMAT CHANNEL PROGRAMS @V304498 01474000 CLI TYPE,TYP3350 3350 DEVICE ? @V304498 01475000 BE STR YES, INITIALIZE SEEK ADDRESS @V304498 01476000 LA R9,FMT3330 R9 = ADRESS OF CCWS 01477000 TM TYPE,X'50' IS THIS A 2305 1 OR 2 01478000 BNO STR NO- BRANCH 01479000 LA R9,FMT2305 YES- POINT TO THE CCW'S 01480000 B STR BRANCH 01481000 SPACE 3 01482000 *********************************************************************** 01483000 * * * 01484000 * * COME HERE FROM INTERRUPT ROUTINE IF CORRECT OPERATION * 01485000 * * * 01486000 *********************************************************************** 01487000 SPACE 1 01488000 RESUMP CLI TYPE,X'14' IS IT 2314 01489000 BE TEST14 YES,BRANCH 01490000 CLC REC12+4(1),RECVALUE WAS LAST RECORD WRITTEN? 01491000 MVC WR57(8),OFF57WRT WRITE 12REC AT A TIME 01492000 MVC RD57(8),OFF57RD DO NORMAL READ CK IN CCW 01493000 BE NEWCYL YES,BRANCH 01494000 CLI TYPE,TYP3330 3330 DEVICE ? @V304498 01495000 BNE MAIN2 NO, BYPASS 3330 REC 57 TRK CHANGE@V304498 01496000 CLI REC12+4,X'30' DID I JUST WRITE 48TH REC. 01497000 BNE MAIN2 NO,BRANCH 01498000 MVC WR57(8),ON57WRT DO NOT WRITE REC 58 TO 60 01499000 MVC RD57(8),ON57RD ALTER NOT TO READ CK 58 TO 60 01500000 MAIN2 LA R4,SEEKA+2 CCHH OF 1ST SEEK IN R4 01501000 XC ERCOUNT,ERCOUNT CLEAR 01502000 SPACE 1 01503000 * UPDATE HEAD NUMBERS IN SEEK CCW'S 01504000 SPACE 1 01505000 LA R7,3 LOOP 3 TIMES (3 3350 TRK'S/PASS) @V304498 01506000 CLI TYPE,TYP3350 3350 DEVICE ? @V304498 01507000 BE HDUPDATE YES, PROCESS 3350 CCW'S @V304498 01508000 LA R7,4 LOOP 4 TIMES(4 3330 TRK'S/PASS) @V304498 01509000 CLI TYPE,X'40' 3340 TYPE ? @V2A2029 01510000 BNE HDUPDATE NO - BRANCH @V2A2029 01511000 LA R7,6 LOOP 6 TIMES @V2A2029 01512000 HDUPDATE L R5,0(R4) CCHH DATA IN R5 01513000 LA R5,3(,R5) INCREASE HEAD NO. BY 3 (3350) @V304498 01514000 CLI TYPE,TYP3350 3350 DEVICE ? @V304498 01515000 BE HEAD3350 YES, INITIALIZE SEEK (3350) @V304498 01516000 LA R5,1(,R5) INCREASE HEAD NO. TO 4 (3330) @V304498 01517000 CLI TYPE,X'40' 3340 TYPE ? @V2A2029 01518000 BNE *+8 NO - BRANCH @V2A2029 01519000 LA R5,2(R5) UPDATE HD NUMBER BY A TOTAL OF 6 @V2A2029 01520000 HEAD3350 EQU * @V304498 01521000 STH R5,2(R4) PUT HEAD NUMBER ONLY 01522000 LA R4,20(R4) GET NEXT CCHH 01523000 BCT R7,HDUPDATE LOOP UNTIL 4 HEADS ARE UPDATED 01524000 LA R4,REC1 ADDESS OF REC FIELDS IN R4 01525000 LA R7,23 SET UP NO. CCW FIELDS TO MODIFY @V304498 01526000 B FILLRN 01527000 TEST14 CLC R8STUF+4(1),RECVALUE WAS IT LAST RECORD WRITTEN 01528000 BE NEWCYL YES,GO FOR NEW CYLINDER 01529000 LA R4,SEEKA+2 NO,ADDRESS OF CCHH INTO R4 01530000 XC ERCOUNT,ERCOUNT CLEAR ERROR COUNT 01531000 LA R7,5 SET FOR 5 SEEKS 01532000 FILLSEEK L R5,0(R4) CCHH OF SEEK INTO R5 01533000 LA R5,5(R5) BUMP HEAD NUMBER BY 5 01534000 STH R5,2(R4) PUT BACK HEAD NUMBER ONLY 01535000 LA R4,20(R4) R4 NOW POINTS TO NEXT CCHH 01536000 BCT R7,FILLSEEK R7=5, LOOP BACK 4 MORE TIMES 01537000 SPACE 1 01538000 *********************************************************************** 01539000 * * UPDATE RECORD NUMBERS -HEAD NUMBERS * 01540000 *********************************************************************** 01541000 SPACE 1 01542000 LA R4,R1STUF PUT ADDRESS OF RECORD 1 INTO R4 01543000 RECUPDAT LA R7,12 PUT 12 INTO R7 FOR LOOPING 01544000 FILLRN L R5,0(R4) R5 CONTAINS CCHH 01545000 SR R6,6 CLEAR R6 01546000 IC R6,4(R4) PUT RECORD NUMBER INTO R6 01547000 CLI TYPE,X'14' IS IT 2314 01548000 BNE NEWCOUNT NO,BRANCH 01549000 LA R6,8(R6) UP RECORD NUMBER BY 8 01550000 STC R6,4(R4) PUT NEW RECORD NUMBER BACK 01551000 LA R5,5(R5) BUMP HEAD NUMBER BY 5 01552000 MVC CAW(4),=A(FMT2314) SET UP CAW 01553000 MAIN3 STH R5,2(R4) PUT BACK NEW HEAD NUMBER 01554000 LA R4,8(R4) UP R4 TO POINT TO NEXT CCHHR 01555000 BCT R7,FILLRN LOOP BACK MORE TIMES 01556000 LH R5,DSKADD DEVICE ADDRESS INTO R5 01557000 B STIO START DEVICE 01558000 NEWCOUNT LA R6,12(R6) UPDATE REC NUMBER BY 12 01559000 STC R6,4(R4) PUT NEW RECORD NUMBER BACK 01560000 LA R5,6(5) INCREASE HEAD NUMBER BY 6 (3340) @V2A2029 01561000 MVC CAW(4),=A(FMT3340) SET UP CAW (3340) @V2A2029 01562000 CLI TYPE,X'40' 3340-35 OR 3340-70 DEVICE ? @V2A2029 01563000 BE MAIN3 YES - BRANCH @V2A2029 01564000 BCTR R5,0 INCREASE HEAD NUMBER BY 4 @V2A2029 01565000 BCTR R5,0 6-2=4 @V2A2029 01566000 MVC CAW(4),=A(FMT3330) SET UP CAW 01567000 CLI TYPE,TYP3330 3330 DEVICE ? @V304498 01568000 BE MAIN3 PROCESS NEXT GROUP OF TRACKS @V304498 01569000 TM TYPE,X'50' IS THIS A 2305 MOD 1 OR 2 01570000 BNO TST3350 NO, TRY 3350 DEVICE @V304498 01571000 MVC CAW(4),=A(FMT2305) YES- SET UP CAW 01572000 B MAIN3 BRANCH 01573000 TST3350 BCTR R5,0 INCREASE HEAD NUMBER BY 3 @V304498 01574000 MVC CAW(4),=A(FMT3350) INITIALIZE FOR 3350 CCW'S @V304498 01575000 B MAIN3 EXECUTE 3350 CCW'S @V304498 01576000 SPACE 3 01577000 SPACE 1 01578000 *********************************************************************** 01579000 * * * 01580000 * * ROUTINE TO GO TO NEXT CYLINDER 01581000 * * * 01582000 *********************************************************************** 01583000 SPACE 1 01584000 NEWCYL CLC SEEKA+2(2),=X'0000' IS IT CYLINDER 0 01585000 ONETIME BE CHECK0 YES,BRANCH AND NOP THIS BRANCH 01586000 CLC SEEKA+2(2),ENDING IS IT THE LAST CYLINDER? 01587000 BE CLEANUP YES,BRANCH 01588000 SR R4,R4 CLEAR R4 01589000 LH R4,SEEKA+2 PUT CYL NUMBER INTO R4 01590000 LA R4,1(R4) INCREASE CYL BY 1 01591000 STH R4,BEGIN SAVE NEW STARTING CYLINDER 01592000 B GOA1 GO SEEK NEXT CYLINDER 01593000 SPACE 1 01594000 SPACE 1 01595000 *********************************************************************** 01596000 * * CHECK FIRST 3 RECORDS OF CYLINDER FOR NO ERROR * 01597000 * * IF NO ERROR WRITE SPECIAL SYSTEM RECORDS * 01598000 *********************************************************************** 01599000 SPACE 1 01600000 CHECK0 MVI ONETIME+1,X'00' NOP BRANCH AT ONETIME 01601000 BAL R1,*+4 R1 POINTS TO NEXT INSTRUCTION 01602000 CLI TYPE,TYP3350 IS DEVICE A 3350 ? @V304498 01603000 BE CYL03350 YES, TEST FOR ERR REC CYL0 HD0 @V304498 01604000 TM R0STUF,X'E0' ERR IN REC 1,2,3 ON CYL0 HD0 01605000 CHECK5 EQU * @V304498 01606000 BZ OKCYL0 NO - CONTINUE @VA00923 01607000 BAL R7,SENSIT YES - GET SENSE INFO. @VA00923 01608000 BAL R7,SENSIT2 PRINT SENSE, CCHHR FOR HIM @VA00923 01609000 B FATAL AND TELL HIM THE CONDITION'S @VA00923 01610000 * FATAL 01611000 CYL03350 TM R0STUF,X'F0' TEST ERR REC 1,2,3,4 ON CYL0 HD0 @V304498 01612000 B CHECK5 CONTINUE CYL0 HD0 ERROR TEST @V304498 01613000 OKCYL0 EQU * @VA00923 01614000 MVI R0STUF,X'E0' SET REC 1,2,3 IN USE @V304498 01615000 CLI TYPE,TYP3350 IS DEVICE A 3350 ? @V304498 01616000 BNE CYL0CONT NO, CONTINUE CYL0 PROCESSING @V304498 01617000 MVI R0STUF,X'F0' SET REC 1,2,3,4 IN USE @V304498 01618000 CYL0CONT EQU * WRITE CYL0 HD0 SYSTEM RECORDS @V304498 01619000 LA R9,SPEC2314 R9 CONTAINS ADDRESS OF SPEC CCWS 01620000 ST R9,CAW CAW CONTAINS ADDRESS OF CCWS 01621000 CLI TYPE,X'14' IS IT 2314? 01622000 BE MAIN4 YES, BRANCH 01623000 MVC CAW(4),=A(SPEC3330) SET CAW FOR CYL 0 TK 0 CCW'S 01624000 MVI NOP3340,X'1D' WRITE RF3 RECORD CCW OP CODE @VA03284 01625000 CLI TYPE,TYP334X 3340-35 OR 3340-70 DEVICE? @V56BDA8 01626000 BNE MAIN4 BRANCH IF NOT @V2A2029 01627000 MVI NOP3340,X'03' SET RF3 CCW OP-CODE TO NOP @V2A2029 01628000 MAIN4 MVI SEEKA+5,X'00' SET TO SEK HEAD 0 01629000 MVI SEEKB+5,X'01' SET TO SEEK HEAD 1 01630000 LH R5,DSKADD DEVICE ADDRESS INTO R5 01631000 B STIO START DEVICE 01632000 SPACE 1 01633000 SPACE 1 01634000 *********************************************************************** 01635000 * * FATAL ROUTINE PRINTS MESSAGE AND STARTS PROMPTING * 01636000 *********************************************************************** 01637000 FATAL STM R0,R15,PCREGS SAVE R0 TO R15 01638000 MVC SAVFATAL(20),IOOPSW SAVE IOOLDPSW,CSW,CAW 01639000 UNPK WORK(9),SAVFATAL+8(5) UNPK THE CSW @VA00923 01640000 UNPK WORK+8(9),SAVFATAL+12(5) . . . @VA00923 01641000 TR WORK(16),TTAB-240 MAKE IT ALL READABLE @VA00923 01642000 MVC FATLMSG+37(16),WORK MOVE INTO MSG @VA00923 01643000 LA R4,FATLMSG SET UP FATAL MSG 01644000 BAL R14,WMSG WRITE MESSAGE 01645000 B GETCARD YES,BRANCH 01646000 EJECT 01647000 *********************************************************************** 01648000 * * * 01649000 * * PRINT PAGE ERROR COUNTS ON CONSOLE * 01650000 * * * 01651000 *********************************************************************** 01652000 SPACE 1 01653000 CLEANUP LA R4,ENDFOR SET UP FOR END OF FORMAT MSG 01654000 BAL R14,WMSG WRITE MESSAGE 01655000 L R3,PGCOUNT GET ERROR PAGE COUNT 01656000 CVD R3,FIELDA CONVERT ERROR COUNT TO DECIMAL 01657000 OI FIELDA+7,X'0F' MAKE GOOD SIGN 01658000 UNPK FIELDB+5(3),FIELDA+6(2) UNPACK TO PRINTABLE CHARS 01659000 MVC PAGE+1(3),FIELDB+5 PUT ERROR COUNT INTO MSG 01660000 LA R4,PAGE SET UP ERROR PAGE MSG 01661000 BAL R14,WMSG WRITE MESSAGE 01662000 B GETCARD YES,BRANCH 01663000 SPACE 2 01664000 *********************************************************************** 01665000 * * * 01666000 * * START DASD DEVICE ROUTINE * 01667000 * * * 01668000 *********************************************************************** 01669000 SPACE 1 01670000 STIO MVC CCHHR(5),FFS8 PUT F'S IN HEADER. @VMG0004 01671000 STIO2 LA R7,100 ERROR RETRY COUNT. @VMG0004 01672000 START SIO 0(R5) START DEVICE 01673000 BC 8,XWAIT IF STARTED OK GO WAIT 01674000 BC 1,TIOCC3 CC = 3, NOTIFY USER @VM01069 01675000 BC 2,TIORT BUSY @VM01069 01676000 TM CSW+4,SM+BUSY STATUS MODIFIER AND BUSY @VM01069 01677000 BO START YES, RETRY @VM01069 01678000 CLI CSW+4,BUSY DEVICE BUSY (RESERVED) @VA03955 01679000 BE START LOOP UNTIL RELEASE @VA03955 01680000 TIORT TIO 0(R5) IF NO START CLEAR STATUS @VM01069 01681000 BCT R7,START TRY A TOTAL OF 100 TIMES @V2A2029 01682000 BC 3,TIOCC3 SERIOUS PROBLEMS - LET HIM KNOW @VA00923 01683000 TM CSW+4,UC DID DEVICE HAVE UNIT CHECK 01684000 BO STARTER1 NO, ERROR SET UP MSG @VM01069 01685000 XC SENSE,SENSE CLEAR SENSE AREA @VM01069 01686000 XC SENSTA(8),SENSTA CLEAR SENSE CSW @VM01069 01687000 MVI SENSTA+7,X'12' INDICATE 6 SENSE BYTES @VM01069 01688000 MVC SAVEIT(20),IOOPSW SAVE CSW,CAW, AND IO OLD PSW @VM01069 01689000 B STARTER2 GO SET UP BOTH ERROR MSG @VM01069 01690000 STARTER1 BAL R7,SENSIT GET SENSE DATA @VM01069 01691000 STARTER2 BAL R7,SENSIT2 PRINT SENSE MESSAGE @VM01069 01692000 B FATAL GO FATAL 01693000 SPACE 1 01694000 SPACE 1 01695000 *********************************************************************** 01696000 * * WAIT PSW * 01697000 *********************************************************************** 01698000 CNOP 4,8 01699000 XWAIT LPSW WAITCON 01700000 WAITCON DC X'FE02' 01701000 DC A(255) 01702000 EJECT 01703000 *********************************************************************** 01704000 * * GET SENSE INFORMATION * 01705000 *********************************************************************** 01706000 SENSIT LA R1,CCWSENSE ADDRESS OF SENSE CCW INTO R1 01707000 XC SENSE,SENSE CLEAR SENSE AREA @V2B3729 01708000 MVC SAVEIT(20),IOOPSW SAVE CSW,CAW,AND IO OLD PSW 01709000 ST R1,CAW PUT ADDRESS OF CCW INTO CAW 01710000 TIO 0(R5) CLEAR STATUS 01711000 BC 2,*-4 LOOP IF BUSY @VA03149 01712000 SIO 0(R5) START DEVICE 01713000 TIO 0(R5) DEVICE DONE? 01714000 BC 2,*-4 LOOP IF BUSY @VA03149 01715000 MVC SENSTA(8),CSW SAVE CSW 01716000 MVC IOOPSW(20),SAVEIT RESTORE CSW,CAW,AND IO OLD PSW 01717000 BR R7 GO-WHENCE CAME YOU- 01718000 SPACE 3 01719000 SPACE 1 01720000 *********************************************************************** 01721000 * * PRINT SENSE AND CCHH ERROR INFORMATION * 01722000 *********************************************************************** 01723000 SENSIT2 UNPK WORK(13),SENSE(7) CHANGE SENSE DATA TO ZONED 01724000 UNPK WORK+12(11),CCHHR(6) CHANGE CCHHR DATA TO ZONED 01725000 TR WORK(22),TTAB-240 TRANSLATE TO PRINTABLE CHAR @V2B3729 01726000 MVC IOERR+33(10),WORK+12 PUT CCHHR INTO THE MSG 01727000 MVC IOERR+52(12),WORK PUT SENSE INTO ERROR MSG 01728000 LA R4,IOERR ADDRESS OF ERROR MESSAGE INTO R4 01729000 BAL R14,WMSG WRITE MESSAGE 01730000 CLI SENSTA+7,X'12' MORE THAN 6 SENSE BYTES ? @V2B3729 01731000 BNL SENSIT3 NO- @V2B3729 01732000 UNPK WORK(13),SENSE+6(7) CHANGE AND TRANSLATE @V2B3729 01733000 UNPK WORK+12(13),SENSE+12(7) .. @V2B3729 01734000 UNPK WORK+24(13),SENSE+18(7) .. @V2B3729 01735000 TR WORK(36),TTAB-240 18 SENSE BYTES @V2B3729 01736000 MVC IOERR2+1(36),WORK PUT SENSE INTO THE MSG @V2B3729 01737000 LA R4,IOERR2 ADDRESS OF 2ND LINE OF ERROR MSG @V2B3729 01738000 BAL R14,WMSG WRITE MESSAGE @V2B3729 01739000 SENSIT3 MVC IOOPSW(20),SAVEIT RESTORE CSW,CAW,AND IO OLD PSW@V2B3729 01740000 BR R7 GO-WHENCE CAME YOU- 01741000 SPACE 3 01742000 SPACE 1 01743000 *********************************************************************** 01744000 * * * 01745000 * * DASD IO INTERRUPT ROUTINE * 01746000 * * * 01747000 *********************************************************************** 01748000 SPACE 1 01749000 IOINT LH R4,IOOPSW+2 GET DEVICE ADDRESS 01750000 CH R4,CONSOL WAS IT CONSOLE DEVICE? 01751000 BE ATNTST YES,CHECK FOR ATTENTION 01752000 CH R5,IOOPSW+2 WAS IT DEVICE STARTED? 01753000 BNE XWAIT NO,WAIT FOR CORRECT ONE 01754000 TM CSW+5,X'BF' ANYTHING BUT INCORRECT LENGHT? 01755000 BM FATAL IF MIXED ERRORS,GO FATAL 01756000 TM CSW+4,UC UNIT CHECK? 01757000 BO ERRECOV YES,GO TO ERROR RECOVERY 01758000 CLI CSW+4,CE+DE WAS IT CHANNEL END OR DEVICE END 01759000 BE CLEANEND YES, CHECK FOR ALTERNATE TRACK @V56BDA8 01760000 CLI CSW+4,CUE+CE+DE DID CUE SNEAK IN TOO? @VA04270 01761000 BNE FATAL NOT UC & NOT CLEAN END. @V56BDA8 01762000 CLEANEND XC ERCOUNT,ERCOUNT RESET. THIS SUCCESSFUL CMPLETN @V56BDA8 01763000 * COULD BE THE END OF AN ERROR RETRY. 01764000 TM ALTFLAG,HAR0READ ALTERNATE TRACK RECOVERY IN @V56BDA8 01765000 * PROGRESS? 01766000 BZ RESUMP NO, CONTINUE WITH MAIN LOGIC. @V56BDA8 01767000 L R6,CONTINAD ADDR OF CODE WHERE ALT TRACK @V56BDA8 01768000 * RECOVERY PROCESSING IS TO CONTINUE. 01769000 BR R6 @V56BDA8 01770000 SPACE 01771000 ERRECOV BAL R7,SENSIT READ SENSE DATA, THEN RESTORE @V56BDA8 01772000 * CSW, CAW, IOOPSW. 01773000 TM SENSE,X'02' TRACK CONDITION CHECK? @V56BDA8 01774000 BNO NOSWTCH NO, TRACK NOT FLAGGED. @V56BDA8 01775000 CLI TYPE,TYP334X DEVICE IS 3340/3344? @V56BDA8 01776000 BE ALTTRACK YES. GO SWITCH TRACKS. @V56BDA8 01777000 NOSWTCH DS 0H @V56BDA8 01778000 CLC CSW(L8),SAVEDCSW SAME ERROR (AT SAME CCW) AS @V56BDA8 01779000 * BEFORE? 01780000 MVC SAVEDCSW(L8),CSW SAVE FOR COMPARE NEXT TIME. @V56BDA8 01781000 BE COUNT IF SAME ERROR,BRANCH 01782000 XC ERCOUNT(4),ERCOUNT CLEAR ERROR COUNT 01783000 B STIO START DEVICE 01784000 SPACE 01785000 COUNT L R4,ERCOUNT PUT ERROR COUNT INTO R4 01786000 LA R4,1(4) UP ERROR COUNT BY 1 01787000 ST R4,ERCOUNT SAVE ERROR COUNT 01788000 C R4,=F'1' IS IT FIRST ERROR? 01789000 BE RECAL YES,RECALIBRATE DEVICE 01790000 C R4,=F'2' IS IT SECOND ERROR 01791000 BE RESET YES,RETRY CCW'S 01792000 RSTRTN C R4,ERLIMIT IS ERROR LIMIT OF 9 REACHED? 01793000 BL STIO IF NO,TRY AGAN 01794000 XC ERCOUNT,ERCOUNT IF YES,CLEAR ERROR COUNT 01795000 XC SAVEDCSW(8),SAVEDCSW CLEAR SAVED CSW 01796000 L R4,CSW PUT NEXT CCW ADDRESS INTO R4 01797000 SUB S R4,=F'8' GET PREVIOUS CCW ADDRESS 01798000 SUB2 CLI 0(4),X'07' IS IT A SEEK? 01799000 BNE SUB NO,GET PREVIOUS CCW 01800000 L R4,0(R4) ADDRESS OF CCW DATA AREA IN R4 01801000 LA R4,0(R4) CLEARS COMMAND CODE FROM R4 01802000 MVC CCHHR(5),2(R4) SAVE THE CCHHR THAT FAILED 01803000 BAL R7,SENSIT2 PRINT SENSE AND CCHH MESSAGE 01804000 L R4,CSW PUT NEXT CCW ADDRESS INTO R4 01805000 S R4,=F'8' R4 NOW POINTS TO FAILING CCW 01806000 CLI 0(4),X'07' WAS IT SEEK ERROR? 01807000 BE FATAL YES,GO PRINT FATAL MESSAGE 01808000 CLI 0(4),X'19' WAS IT WRITE HOME ADDRESS? 01809000 BE FATAL YES,GO,PRINT FATAL MESSAGE 01810000 CLI 0(4),X'15' WAS IT WRITE REC 0? 01811000 BE FATAL YES,GO PRINT FATAL MESSAGE 01812000 CLI 0(R4),X'05' WRITE DATA ? @V2B3729 01813000 BE FATAL YES, GO PRINT FATAL MESSAGE @V2B3729 01814000 CLI 0(4),X'1F' WAS IT SET FILE MASK? 01815000 BE FATAL YES,GO PRINT FATAL MESSAGE 01816000 CLI 0(4),X'1A' IS IT READ HOME ADDRESS 01817000 BE FATAL YES,GO PRINT FATAL MESSAGE 01818000 CLI 0(4),X'16' IS IT READ REC 0? 01819000 BE FATAL FAILED TO WRITE CYL 0 TK 0 AND 1 CORRECT 01820000 CLI 0(4),X'1E' IS IT READ CT KEY DATA? 01821000 BE FATAL YES,GO PRINT FATAL MESSAGE 01822000 CLI 0(4),X'06' WAS IT READ? 01823000 BE READER06 YES,BRANCH 01824000 CLI 0(4),X'31' WAS IT SEARCH ID? 01825000 BE READER31 YES,BRANCH 01826000 CCWSRCH1 TM 4(R4),CC COMMAND CHAINING ?? @V2B3729 01827000 BZ FATAL NO, FATAL ERROR @V2B3729 01828000 CCWSRCH LA R4,8(R4) R4 POINTS TO NEXT CCW 01829000 CLI 0(R4),8 IS THIS A TIC CCW ? @V2B3729 01830000 BE CCWTIC YES, GO PROCESS @V2B3729 01831000 CLI 0(4),X'07' WAS IT SEEK? 01832000 BE FOUND YES,GO FOUND 01833000 B CCWSRCH1 NO, TRY AGAIN @V2B3729 01834000 CCWTIC CLM (R4),B'0111',1(R4) TIC BACK OR FORWARD ? @V2B3729 01835000 BNH CCWSRCH BRANCH IF FORWARD @V2B3729 01836000 L R4,0(,R4) GET TIC TO ADDRESS @V2B3729 01837000 LA R4,0(,R4) CLEAR COMMAND CODE @V2B3729 01838000 B CCWSRCH1 KEEP LOOKING FOR 07 @V2B3729 01839000 EJECT 01840000 *********************************************************************** 01841000 * * COME HERE TO HANDLE TRACK CONDITION CHECK. 01842000 * * RESTART WITH A SEEK TO THE ALTERNATE OR RESTART WITH A SEEK 01843000 * * BACK TO THE DEFECTIVE TRACK PLUS ONE. 01844000 *********************************************************************** 01845000 SPACE 01846000 ALTTRACK L R1,CSW GET FAILED CCW + 8. @V56BDA8 01847000 SH R1,=H'8' POINT TO FAILING CCW. @V56BDA8 01848000 STCM R1,B'0111',ALTTIC+1 SAVE ITS ADDR IN TIC FOR @V56BDA8 01849000 * RESTART LATER. 01850000 L R8,=A(ALTCHK) @V56BDA8 01851000 BALR R7,R8 CALL ROUTINE TO DETERMINE WHETHER@V56BDA8 01852000 * OR NOT FLAGGED TRACK POINTS TO AN 01853000 * ALTERNATE WITH ALTERNATE POINTING BACK. 01854000 * IF POINTERS ARE BAD, R1=-1 IS RETURNED. 01855000 * IF POINTERS ARE GOOD, R1=CCHH IS 01856000 * RETURNED, WITH CCHH BEING THE SEEK ADDR 01857000 * OF THE OTHER TRACK (NOT THE ONE THAT 01858000 * GAVE THE TRACK CONDITION CHECK, BUT THE 01859000 * ONE THAT THAT ONE POINTS TO). 01860000 * R0=0 IF CCHH IN R1 IS THE ASSIGNED 01861000 * ALTERNATE TRACK OR R0=1 IF CCHH IN R1 IS 01862000 * THE PRIMARY TRACK. 01863000 LTR R1,R1 DOES FLAGGED TRK HAVE ALTERNATE? @V56BDA8 01864000 BM ALTBAD NO. FATAL ERROR. ISSUE MSGS. @V56BDA8 01865000 AR R1,R0 IF CCHH IN R1 IS PRIMARY, THEN @V56BDA8 01866000 * ADDS 1 FROM R0 TO CAUSE SEEK BACK TO 01867000 * PRIMARY PLUS ONE. (NOTE: DUE TO NATURE 01868000 * OF CHNL PRGS USED TO FORMAT, THIS WILL 01869000 * NEVER GO BEYOND LAST TRACK IN CYL. IF 01870000 * LAST TRK IN CYL IS FLAGGED, THAT IS WHERE 01871000 * CHNL PRG ENDS ANYWAY, THERE IS NO 01872000 * SUBSEQUENT SEEK OFF OF ALTERNATE TO CAUSE 01873000 * TRACK CONDITION CHECK FROM THERE.) 01874000 STCM R1,15,ALTSKADD+2 STORE FOR SEEK CCW. @V56BDA8 01875000 LA R1,ALTSEEK RESTART CCWS APPENDED TO FAILED @V56BDA8 01876000 * CCW. 01877000 ST R1,CAW SET FOR SIO. @V56BDA8 01878000 B STIO RESTART THE CHANNEL PROGRAM. @V56BDA8 01879000 SPACE 01880000 ALTBAD LA R4,MSGATRK MSG SAYS FLAGGED TRACK HAS NO @V56BDA8 01881000 * ALTERNATE ASSIGNED. 01882000 BAL R14,WMSG @V56BDA8 01883000 BAL R7,SENSIT2 PRT MSG GIVING CCHH OF BAD TRACK.@V56BDA8 01884000 B FATAL GIVE FATAL MSG, THEN RESTART. @V56BDA8 01885000 SPACE 2 01886000 *********************************************************************** 01887000 * * THIS ROUTINE RESTARTS BROKEN CCW CHAIN AT NEXT SEEK * 01888000 * * R4 POINTS TO NEXT SEEK CCW * 01889000 *********************************************************************** 01890000 SPACE 1 01891000 FOUND ST R4,RESUMCCW+8 ADDRESS OF SEEK CCW INTO TIC 01892000 MVI RESUMCCW+8,X'08' RESTORE TO TIC COMMAND 01893000 LA R9,RESUMCCW CCW ADDRESS INTO R9 01894000 ST R9,CAW CCW ADDRESS INTO CAW 01895000 LH R5,DSKADD DEVICE INTO R5 01896000 B STIO START DEVICE 01897000 SPACE 1 01898000 SPACE 1 01899000 *********************************************************************** 01900000 * * COME HERE IF READ OR SEARCH ID FAILURE * 01901000 *********************************************************************** 01902000 SPACE 1 01903000 READER06 S R4,=F'16' R4 POINTS TO SEARCH ID CCW 01904000 READER31 L R5,0(R4) R5 CONTAINS DATA ADDRESS 01905000 SR R3,R3 CLEAR R3 01906000 ICM R3,1,4(R5) PUT REC NUMBER INTO R3 01907000 BM READTRY BRANCH IF FILLER RECORD 01908000 BZ FATAL BRANCH IF RECORD ZERO 01909000 CLC SEEKA+2(2),=X'0000' IS IT CYLINDER 0 @V304498 01910000 BNE PAGECT NO, BYPASS CYLINDER BIT MAP @V304498 01911000 CLM R3,1,RECN4 IS PAGE COUNT GREATER THAN 4 @V304498 01912000 BH PAGECT YES, BYPASS CYLINDER BIT MAP @V304498 01913000 BCTR R3,0 DECREASE RECORD NUMBER BY 1 01914000 STC R3,SHIFT+3 CAUSE SHIFT OF VALUE IN R3 01915000 L R7,SHIFTMSK PUT 80 00 00 00 INTO R7 01916000 SHIFT SRL R7,0 SHIFT RIGHT BY VALUE IN R3 01917000 O R7,R0STUF OR IN R0 CYLINDER BIT MAP 01918000 ST R7,R0STUF PUT RESULT BACK 01919000 PAGECT EQU * COUNT PAGE ERRORS @V304498 01920000 L R3,PGCOUNT PUT PGCOUNT INTO R3 01921000 LA R3,1(R3) UP PAGE COUNT BY 1 01922000 ST R3,PGCOUNT SAVE UPDATED PGCOUNT 01923000 SPACE 1 01924000 *********************************************************************** 01925000 * * USE TO RESTART CCW CHAIN AFTER ERROR * 01926000 *********************************************************************** 01927000 SPACE 1 01928000 READTRY LA R4,24(R4) POINT TO NEXT SEARCH ID 01929000 ST R4,PICKUP BUILD TIC TO NEXT SEARCH ID 01930000 MVI PICKUP,X'08' PUT TIC COMMAND IN CCW 01931000 CLI 0(R4),X'07' IS NEXT SEARCH ID REALLY A SEEK? 01932000 BE SKFOUND YES,BRANCH 01933000 SEEKSEEK S R4,=F'8' NO,BACK UP 1 CCW 01934000 CLI 0(R4),X'07' IS IT A SEEK? 01935000 BNE SEEKSEEK NO,BACK UP AGAN 01936000 SKFOUND MVC RDRTRY(8),0(R4) BUILD SEEK CCW 01937000 LA R9,RDRTRY ADDRESS OF CCW INTO R9 01938000 ST R9,CAW ADDRESS OF CCW INTO CAW 01939000 LH R5,DSKADD DEVICE ADDRESS INTO R5 01940000 B STIO GO TO START DEVICE 01941000 EJECT 01942000 SPACE 1 01943000 *********************************************************************** 01944000 * * * 01945000 * * RESTART CCW CHAIN AFTER ERROR 2305,2314,3330,3340, OR 3350 * 01946000 * * * 01947000 *********************************************************************** 01948000 SPACE 1 01949000 DS 0D 01950000 RDRTRY CCW 07,SEEKA,CC,6 RHONY SEEKA 01951000 CCW 31,FILEMASK,CC+SILI,1 01952000 PICKUP CCW 08,0,0,0 01953000 SHIFTMSK DC X'80',3X'00' 01954000 SPACE 1 01955000 SPACE 1 01956000 *********************************************************************** 01957000 * * THIS ROUTINE DOES A RECALIBRATE ON FAILING DEVICE * 01958000 * * THEN TIC'S TO NORMAL 2314 CCW CHAIN * 01959000 *********************************************************************** 01960000 SPACE 1 01961000 RECAL EQU * HERE TO SET UP FOR RECALIBRATE @VA07045 01962000 LA R9,CALIBRAT ADDRESS OF RECAL. CCW @VA07045 01963000 C R9,CAW CAW ALREADY POINTING TO IT ?? @VA07045 01964000 BE RECAL1 YES, PREVENT TIC TO RECAL LOOP @VA07045 01965000 MVC CALIBRAT+9(3),CAW+1 CAUSE TIC TO FORMAT CCWS @VA07045 01966000 RECAL1 EQU * BR HERE MEANS TIC ALREADY SET @VA07045 01967000 ST R9,CAW CAW POINTS TO CALBRATE CCWS 01968000 LH R5,DSKADD DEVICE ADDRESS INTO R5 01969000 B STIO START DEVICE 01970000 SPACE 1 01971000 SPACE 1 01972000 *********************************************************************** 01973000 * * SECOND ERROR-RESET TO NORMAL 2314 CCW CHAIN * 01974000 *********************************************************************** 01975000 SPACE 1 01976000 RESET MVC CAW+1(3),CALIBRAT+9 CAW POINTS TO NORMAL 2314 CCWS 01977000 B RSTRTN GO CHECK ERROR COUNT 01978000 CALIBRAT CCW 19,0,CC+SILI,1 RECALIBRATE 01979000 CALTIC CCW 08,FMT2314,0,0 TIC TO NORMAL CCW'S 01980000 SAVEDCSW DC 2F'0' 01981000 CONTINAD DC F'0' ADDR OF CODE WHERE ALT TRACK @V56BDA8 01982000 * PROCESSING IS TO RESUME. 01983000 ERCOUNT DC F'0' 01984000 ERLIMIT DC F'9' 01985000 SENSTA DC 2F'0' 01986000 NEWPSW DC X'00040000' 01987000 DC A(IOINT) 01988000 RNSTUF DS 24F 01989000 WKSEEK DS 30F @V2A2029 01990000 RNDATA DS 46F NUMBER ENTRIES IN RECORD TABLE @V304498 01991000 SAVEVOL1 DC 24F'0' 01992000 SAVEFMT4 DC 24F'0' SAVE CONTENTS OF CP'S FMT4 @V56BDA8 01993000 ALTCCHH DC XL6'0' CCHH OF NEXT AVAIL. ALT TRK @V56BDA8 01994000 * PLUS COUNT OF NO. OF ALT. TRKS 01995000 SPACE 1 01996000 ALTSEEK CCW 07,ALTSKADD,CC+SILI,6 @V56BDA8 01997000 CCW 31,FILEMASK,CC+SILI,1 @V56BDA8 01998000 ALTTIC CCW 08,*-*,0,0 @V56BDA8 01999000 ALTSKADD DC XL6'0' SEEK ADDRESS NEXT TRACK @V56BDA8 02000000 ALTFLAG DC AL1(0) FLAG FOR 3340/3344 ALT TRACK @V56BDA8 02001000 HAR0READ EQU 128 HA/R0 READ IN PROGRESS @V56BDA8 02002000 SPACE 1 02003000 SPACE 1 02004000 *********************************************************************** 02005000 * * CONSOLE INTERRUPT FOUND BY DASD IO INTERRUPT ROUTINE * 02006000 *********************************************************************** 02007000 SPACE 1 02008000 ATNTST TM 68,X'80' WAS IT ATTENTION? 02009000 BCR 8,R14 NO,MUST BE FOR CONSOLE WRITE 02010000 B STMSG START OVER 02011000 EJECT 02012000 SPACE 1 02013000 *********************************************************************** 02014000 * * * 02015000 * * ALLOCATION ROUTINE * 02016000 * * * 02017000 *********************************************************************** 02018000 SPACE 1 02019000 ALLOCATE MVC DATAMSG+34(6),CPLABEL PUT LABEL INTO CONSOLE MSG 02020000 MVC ALLEND+19(6),CPLABEL PUT LABEL INTO CONSOLE MSG 02021000 LA R4,DATAMSG SET UP DATA MSG 02022000 BAL R14,WMSG WRITE MESSAGE 02023000 LA R4,ALMSG SET UP CYLINDER ALLOCATION MSG 02024000 BAL R14,WMSG WRITE MESSAGE 02025000 LA R4,ALMSG1 POINT TO MSG 02026000 BAL R14,WMSG GO WRITE MSG 02027000 MVI CHECKEND,X'FF' INITIALIZE END ONLY FLAG @VA09594 02027500 CLI CDSW2,X'FF' IS CARD SW SET? 02028000 BE GETCARD YES GET ANOTHER CARD 02029000 REREAD EQU * @VM08604 02030000 BAL R14,RMSG READ RESPONSE 02031000 TM CSW+4,UE WAS IT UNIT CK OR UNIT EXCEPTION 02032000 BO REREAD YES,TRY AGAN 02033000 CLI CDSW2,X'FF' IS IT CARD INPUT? @VA01930 02034000 BE CHECKCDS YES....GO CHECK THEM @VA01930 02035000 OC INDATA(5),BLANKS8 CONVERT TO UPPER CASE @VM08604 02036000 CLC INDATA(5),=C'TEMP ' IS IT TEMPARY @VM08604 02037000 MVI ATYPE,X'00' CLEAR TYPE TO 00 02038000 BE AOKALL BRANCH IF TEMP 02039000 CLC INDATA(5),=C'PERM ' IS IT PERMANENT ? @VM08604 02040000 MVI ATYPE,X'01' TYPE IS 01 02041000 BE AOKALL BRANCH IF PERMANENT 02042000 CLC INDATA(5),=C'TDSK ' IS IT TEMP DISK ? @VM08604 02043000 MVI ATYPE,X'02' TYPE IS 02 02044000 BE AOKALL IF TEMP DISK BRANCH 02045000 CLC INDATA(5),=C'DRCT ' IS IT DIRECTORY ? @VM08604 02046000 MVI ATYPE,X'04' TYPE IS 04 02047000 BE AOKALL IF DECTORY BRANCH 02048000 B CKEND NOW GO CHECK FOR AN END @VA01930 02049000 CHECKCDS MVC INDATA(80),CDINPUT GET THE CARD INPUT @VA01930 02050000 OC INDATA(5),BLANKS8 CONVERT TO UPPER CASE @VA01930 02051000 CLC INDATA(5),=C'TEMP,' IS IT TEMPORARY? @VA01930 02052000 MVI ATYPE,X'00' CLEAR TYPE TO 00 @VA01930 02053000 BE AOKALL BRANCH IF TEMPORARY @VA01930 02054000 CLC INDATA(5),=C'PERM,' IS IT PERMANENT? @VA01930 02055000 MVI ATYPE,X'01' TYPE IS 01 @VA01930 02056000 BE AOKALL BRANCH IF PERMANENT @VA01930 02057000 CLC INDATA(5),=C'TDSK,' IS IT TEMP DISK? @VA01930 02058000 MVI ATYPE,X'02' TYPE IS 02 @VA01930 02059000 BE AOKALL BRANCH IF TEMP DISK @VA01930 02060000 CLC INDATA(5),=C'DRCT,' IS IT DIRECTORY? @VA01930 02061000 MVI ATYPE,X'04' TYPE IS 04 @VA01930 02062000 BE AOKALL BRANCH IF DIRECTORY @VA01930 02063000 CKEND EQU * @VA01930 02064000 CLC INDATA(4),=C'END ' WAS 'END' TYPED? @VM08604 02065000 BE FINI IF END GO WRITE ALLOCATION TABLE 02066000 LA R4,TYPERR SET UP TO PRINT ERROR 02067000 BAL R14,WMSG WRITE MESSAGE 02068000 TM CDSW2,X'FF' CARD INPUT? 02069000 BNO REREAD NO,BRANCH 02070000 LA R4,CARDMESS SET UP ERROR MSG 02071000 BAL R14,WMSG WRITE MESSAGE 02072000 MVI ALLOERR,X'FF' ALLOCATE ERROR TURNED ON 02073000 B VALIDATE BRANCH 02074000 AOKALL MVC MASKB(3),MASKA PUT FO'S INTO MASKB 02075000 MVI CHECKEND,X'00' CLEAR END ONLY FLAG @VA09594 02075500 NC MASKB(3),INDATA+5 AND F0'S WITH INDATA 02076000 CLC MASKA(3),MASKB WAS IT ALL NUMERIC?? 02077000 BNE ERRCYL NO,ERROR IN INDATA 02078000 CLI CDSW2,X'FF' CARD INPUT? @VA01930 02079000 BNE CONSDATA NO, MUST BE FROM THE CONSOLE @VA01930 02080000 CLI INDATA+8,C',' 3 CHARS FOLLOWED BY COMMA? @VA01930 02081000 BNE ERRCYL NO...HE GOOFED. @VA01930 02082000 B CKREST GO CHECK THE REST OF IT @VA01930 02083000 CONSDATA EQU * @VA01930 02084000 CLI INDATA+8,X'40' ONLY 3 DIGITS (I HOPE)? @VM08604 02085000 BNE ERRCYL NOPE - REPEAT IT PLEASE @VM08604 02086000 CKREST NC MASKB(3),INDATA+9 AND F0'S WITH INDATA @VA01930 02087000 CLC MASKA(3),MASKB IS END CYLINDER NUMERIC? 02088000 BNE ERRCYL NO,ERROR IN INDATA 02089000 OI INDATA+12,X'40' CONVERT TO UPPER CASE @VM08604 02090000 CLI INDATA+12,X'40' MORE THAN 3 CHARS?? @VM08604 02091000 BNE ERRCYL YEP - DO IT AGAIN. @VM08604 02092000 PACK FIELDA+6(2),INDATA+5(3) PACK START CYLINDER DATA 02093000 PACK FIELDB+6(2),INDATA+9(3) PACK END CYLINDER DATA 02094000 CVB R7,FIELDA CONVERT TO BINARY START CYL 02095000 ST R7,FIELDA+4 SAVE BINARY RESULTS 02096000 CVB R7,FIELDB CONVERT TO BINARY END CYL 02097000 LH R5,HIVALUE MAX END CYLINDER 02098000 LA R5,1(R5) ADD ONE TO HI VALUE 02099000 CH R7,HIVALUE HIGHER THAN LAST CYLINDER 02100000 BH ERRCYL YES,ERROR 02101000 STORE2 ST R7,FIELDB+4 SAVE END CYLINDER 02102000 CLC FIELDA+4(4),FIELDB+4 IS START GREATER THAN END? 02103000 BH ERRCYL YES,THAT'S ERROR 02104000 LA R9,TABLE ADDRESS OF CYL BYTE MAP INTO R9 02105000 A R9,FIELDA+4 ADD START CYL TO BYTE MAP ADDRES 02106000 L R8,FIELDB+4 LOAD END CYL INTO R8 02107000 S R8,FIELDA+4 SUBTRACT START FROM END 02108000 LA R8,1(R8) ADD 1 TO NUMBER OF CYL'S 02109000 MVC INDIC+1(1),ATYPE ALTER INSTR TO CORRECT TYPE 02110000 INDIC MVI 0(R9),X'00' PUT TYPE INTO CYL BYTE MAP 02111000 LA R9,1(R9) ADD 1 TO BYTE MAP ADDRESS 02112000 BCT R8,INDIC REPEAT FOF THE NUMBER OF CYL'S 02113000 TM CDSW2,X'FF' IS CD SWITCH2 ON 02114000 BO GETCARD YES,BRANCH 02115000 B REREAD GET ANOTHER ENTRY 02116000 ERRCYL LA R4,TYPERR SET UP CYL ERROR MSG 02117000 BAL R14,WMSG WRITE MESSAGE 02118000 TM CDSW2,X'FF' IS CD SWITCH2 ON 02119000 BO BADINPUT YES,BRANCH 02120000 B REREAD GET ANOTHER ENTRY 02121000 SPACE 3 02122000 *********************************************************************** 02123000 * * WRITE ALLOCATION TABLE TO DASD * 02124000 *********************************************************************** 02125000 FINI LH R2,HIVALUE GET MAX CYL NO 02126000 LA R2,TABLE+1(R2) POINT TO LAST ENTRY IN ALLOCATION TABLE+1 02127000 MVI 0(R2),X'FF' SET END OF TABLE TO FF 02128000 CLI CHECKEND,X'FF' IS END THE ONLY COMMAND? @VA09594 02128100 BE PRINTALL YES, NO CHANGE SO JUST DISPLAY @VA09594 02128200 LH R5,DSKADD GET DEVICE ADD INTO R5 02129000 LA R1,ALLOREC ALLOCATE TABLE CCWS 02130000 ST R1,CAW LABEL CCW'S INTO CAW 02131000 TIO 0(R5) DRAIN IT 02132000 BC 2,*-4 LOOP IF BUSY 02133000 SIO 0(R5) WRITE OUT THE ALLO TABLE 02134000 TIO1 TIO 0(R5) DRAIN THE INT 02135000 BC 2,*-4 LOOP UNTIL DONE 02136000 BC 1,TIOCC3 DEVICE INOPER. - SAY SO @VA00923 02137000 TM CSW+5,X'FF' ANY BAD CHANNEL STATUS 02138000 BNZ ERROR YES- BRANCH 02139000 TM CSW+4,UC UNIT CHECK 02140000 BO ERROR YES- BRANCH 02141000 TM CSW+4,CE CHANNEL END 02142000 BO PRINTALL YES- BRANCH ALL OK 02143000 B TIO1 NO- GO GET IT 02144000 ERROR BAL R7,SENSIT GET THE SENSE DATA 02145000 MVC CCHHR(5),R4ALLOC MOVE IN THE CCHHR DATA 02146000 BAL R7,SENSIT2 TYPE THE MSG 02147000 B FATAL 02148000 *********************************************************************** 02149000 * * WRITE OUT ALLOCATION TABLE TO CONSOLE * 02150000 *********************************************************************** 02151000 PRINTALL DS 0H PRINT THE ALLOCATION DATA 02152000 LA R4,RESULTS PRINT ALLOCATION RESULTS 02153000 BAL R14,WMSG2 PRINT MESSAGE 02154000 LA R8,TABLE POINT TO TABLE 02155000 LR R6,R8 PUT TABLE ADDRESS INTO R6 02156000 SR R7,R7 CLEAR R7 02157000 * R6 POINTS TO BYTE IN BYTE TABLE 02158000 REENTER CLI 0(R6),X'00' IS FIRST BYTE 00? 02159000 MVC MAP+1(4),=C'TEMP' MOVE IN TEMP 02160000 BE CYLINDER YES,BRANCH 02161000 CLI 0(R6),X'01' IS BYTE 01? 02162000 MVC MAP+1(4),=C'PERM' MOVE IN PERM 02163000 BE CYLINDER YES,BRANCH 02164000 CLI 0(R6),X'02' IS BTYE 02? 02165000 MVC MAP+1(4),=C'TDSK' MOVE IN TDSK 02166000 BE CYLINDER YES,BRANCH 02167000 MVC MAP+1(4),=C'BAD ' SET UP FOR A BAD ENTRY 02168000 DIRECT TM 0(R6),X'F3' IS THIS CYL INVALID AS A DIRECTORY CYL 02169000 LA R7,1(,R7) BUMP CYL COUNT 02170000 LA R6,1(,R6) TABLE ADD ALSO 02171000 BNZ CONT YES- CONT 02172000 MVC MAP+1(4),=C'DRCT' MOVE IN DRCT 02173000 CLI 0(R6),X'0C' IS THIS AN IN USE DRCT CYL @VA10365 02174100 BH CONT NO - THATS ALL FOR THIS DRCT @VA10365 02174600 CLI 0(R6),X'04' IS IT A DRCT CYL @VA10365 02175100 BNL DIRECT YES - COUNT IT @VA10365 02175600 B CONT NO- BRANCH 02176000 CYLINDER CLC 0(1,R6),1(R6) NEXT CYLINDER THE SAME? 02177000 LA R7,1(R7) BUMP CYL COUNT BY 1 02178000 LA R6,1(R6) BUMP BYTE TABLE ADDRESS BY 1 02179000 BE CYLINDER IF SAME CYL LOOK AT NEXT BYTE 02180000 CONT LR R10,R6 PUT BYTE LOCATION INTO R10 02181000 SR R10,R8 PRESENT MINUS START ADDRESS 02182000 SR R10,R7 GET START CYLINDER 02183000 CVD R10,FIELDA CONVERT START TO DECIMAL 02184000 AR R10,R7 GET END ADDRESS 02185000 BCTR R10,0 REDUCE BY 1 02186000 CVD R10,FIELDB CONVERT END TO DECIMAL 02187000 OI FIELDA+7,X'0F' PLUG IN SIGN 02188000 OI FIELDB+7,X'0F' PLUG IN SIGN 02189000 UNPK MAP+6(3),FIELDA+6(2) UNPACK TO MAKE PRINTABLE 02190000 UNPK MAP+10(3),FIELDB+6(2) '' '' '' 02191000 LA R4,MAP SET UP PRINT MAP 02192000 BAL R14,WMSG2 WRITE MESSAGE 02193000 SR R7,R7 CLEAR R7 02194000 CR R6,R2 IS R6 AT HIVALUE 02195000 BL REENTER NO- BRANCH 02196000 LA R4,ALLEND SET UP TO ALLOCATION END 02197000 BAL R14,WMSG WRITE MESSAGE 02198000 MVI ALLOSW,X'00' TURN OFF ALLOCATE SWITCH 02199000 B GETCARD YES,BRANCH 02200000 SPACE 2 02201000 *********************************************************************** 02202000 * EXECUTED INSTRUCTIONS 02203000 *********************************************************************** 02204000 TSTFRMT CLC COMWOK(*-*),=CL8'FORMAT' @VA05542 02205000 TSTALLOC CLC COMWOK(*-*),=CL8'ALLOCATE' @VA05542 02206000 TSTLABL CLC COMWOK(*-*),=CL8'LABEL ' @VA05542 02207000 MVCCOMW MVC COMWOK(*-*),INDATA @VA05542 02208000 SPACE 02209000 EJECT 02210000 *********************************************************************** 02211000 * CONSOL MESSAGES 02212000 *********************************************************************** 02213000 LABELOK DC AL1(TITLE-*-1) 02214000 DC C'LABEL IS NOW XXXXXX' 02215000 TITLE DC AL1(FORA-*-1) 02216000 DC C'VM/370 FORMAT/ALLOCATE PROGRAM RELEASE 6' 02217000 FORA DC AL1(FMTMSG-*-1) 02218000 DC C'ENTER FORMAT OR ALLOCATE:' @V200731 02219000 FMTMSG DC AL1(ALLOCMSG-*-1) 02220000 DC C'FORMAT FUNCTION SELECTED' 02221000 ALLOCMSG DC AL1(ADDRESS-*-1) 02222000 DC C'ALLOCATE FUNCTION SELECTED' 02223000 ADDRESS DC AL1(WR1-*-1) 02224000 DC C'ENTER DEVICE ADDRESS (CCU):' 02225000 WR1 DC AL1(TYPMSG-*-1) 02226000 DC C'DMKFMT730E DEV XXX NOT OPERATIONAL OR ' @V56BDA8 02227000 DC C'NOT READY.' @V56BDA8 02228000 TYPMSG DC AL1(PCMSG-*-1) 02229000 DC C'ENTER DEVICE TYPE:' 02230000 PCMSG DC AL1(MCMSG-*-1) 02231000 DC C'DMKFMT756E PROGRAM CHECK PSW = ' @V305435 02232000 DC C'XXXXXXXXXXXXXXXX' @V200528 02233000 MCMSG DC AL1(ALMSG-*-1) 02234000 DC C'DMKFMT732E MACHINE CHECK RUN SEREP AND SAVE ' @V200528 02235000 DC C'OUTPUT FOR CE' @V200528 02236000 ALMSG DC AL1(ALMSG1-*-1) 02237000 DC C'TYPE CYL CYL' 02238000 ALMSG1 DC AL1(WRONG-*-1) 02239000 DC C'.... ... ...' 02240000 WRONG DC AL1(DATAMSG-*-1) 02241000 DC C'DMKFMT733E VOLID READ IS XXXXXX NOT XXXXXX' 02242000 DATAMSG DC AL1(TYPERR-*-1) 02243000 DC C'ENTER ALLOCATION DATA FOR VOLUME XXXXXX' 02244000 TYPERR DC AL1(MAP-*-1) 02245000 DC C'DMKFMT734E TYPE OR CYL INVALID' 02246000 MAP DC AL1(ALLEND-*-1) 02247000 DC C'TEMP 000 000' 02248000 ALLEND DC AL1(STCYL-*-1) 02249000 DC C'DEVICE XXX VOLUME XXXXXX ALLOCATION ENDED' 02250000 STCYL DC AL1(ENDCYL-*-1) 02251000 DC C'ENTER START CYLINDER (XXX) OR "LABEL":' 02252000 ENDCYL DC AL1(PROGFOR-*-1) 02253000 DC C'ENTER END CYLINDER (XXX):' 02254000 PROGFOR DC AL1(RDLAB-*-1) 02255000 DC C'FORMAT STARTED' 02256000 RDLAB DC AL1(ENDFOR-*-1) 02257000 DC C'ENTER DEVICE LABEL:' 02258000 ENDFOR DC AL1(FATLMSG-*-1) 02259000 DC C'FORMAT DONE' 02260000 FATLMSG DC AL1(PAGE-*-1) 02261000 DC C'DMKFMT735E FATAL DASD IO ERROR.' @VA00923 02262000 DC C' CSW=XXXXXXXXXXXXXXXX' @VA00923 02263000 PAGE DC AL1(IOERR-*-1) 02264000 DC C'XXX NO. PAGE RECORDS WITH READ-CHECK ERRORS' @V304498 02265000 IOERR DC AL1(M736L) @V2B3729 02266000 DC C'DMKFMT736E IO ERROR XXX CCHHR = 0000000000 SENSE = XXX*02267000 XXXXXXXXX' 02268000 M736L EQU *-IOERR-1 @V2B3729 02269000 IOERR2 DC AL1(M736L2) @V2B3729 02270000 DC CL36'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' @V2B3729 02271000 M736L2 EQU *-IOERR2-1 @V2B3729 02272000 BAD DC AL1(IPLERROR-*-1) 02273000 BADMSG DC C'DMKFMT737E INVALID OPERAND' 02274000 IPLERROR DC AL1(IPLERRL) @V56BDA8 02275000 DC C'DMKFMT738A DEV XXX INTERVENTION REQUIRED' 02276000 IPLERRL EQU *-IPLERROR-1 @V56BDA8 02277000 MSGATRK DC AL1(MSGATRKL) @V56BDA8 02278000 DC C'DMKFMT739E FLAGGED PRIMARY TRACK HAS NO ' @V56BDA8 02279000 DC C'ALTERNATE ASSIGNED, IO ERROR FOLLOWS.' @V56BDA8 02280000 MSGATRKL EQU *-MSGATRK-1 @V56BDA8 02281000 MSG35MB DC AL1(MSG35MBL) @V56BDA8 02282000 DC C'DMKFMT740E PACK MOUNTED IS 3340-35, NOT ' @V56BDA8 02283000 DC C'3340-70. MOUNT ANOTHER OR RESPECIFY.' @V56BDA8 02284000 MSG35MBL EQU *-MSG35MB-1 @V56BDA8 02285000 CARDMESS DC AL1(RESPONSE-*-1) 02286000 CDINPUT DC 80C' ' 02287000 RESPONSE DC AL1(RESULTS-*-1) 02288000 ANSWER DC C' ' 02289000 RESULTS DC AL1(END-*-1) 02290000 DC C'ALLOCATION RESULTS' 02291000 END EQU * 02292000 REGSAV DC F'0' 02293000 ZERO DC XL8'00' 02294000 ATYPE DC X'00' 02295000 RECVALUE DC X'00' 02296000 CHECKEND DC X'FF' USED TO INDICATE END AS ONLY @VA09594 02296500 * COMMAND 02296600 COMWOK DC XL9'00' 02297000 DS 0D 02298000 IPLDEV DC X'0000' 02299000 SPACE 2 02300000 *********************************************************************** 02301000 * NORMAL DATA RECORDS FOR 3330 AND 2305 * 02302000 *********************************************************************** 02303000 REC1 DC F'0' CCHH 02304000 DC AL1(1),AL3(4096) REC NUMBER KL DL DL 02305000 RECX1 DC F'0' CCHH 02306000 DC AL1(128+01),AL3(50) REC NUMBER KL DL DL 02307000 REC2 DC F'0' CCHH 02308000 DC AL1(2),AL3(4096) REC NUMBER KL DL DL 02309000 RECX2 DC F'0' CCHH 02310000 DC AL1(128+02),AL3(50) REC NUMBER KL DL DL 02311000 REC3 DC F'0' CCHH 02312000 DC AL1(3),AL3(4096) REC NUMBER KL DL DL 02313000 RECX3 DC F'0' CCHH @V304498 02314000 DC AL1(128+03),AL3(50) REC NUMBER KL DL DL @V304498 02315000 REC4 DC F'1' CCHH 02316000 DC AL1(4),AL3(4096) REC NUMBER KL DL DL 02317000 RECX4 DC F'1' CCHH 02318000 DC AL1(128+04),AL3(50) REC NUMBER KL DL DL 02319000 REC5 DC F'1' CCHH 02320000 DC AL1(5),AL3(4096) REC NUMBER KL DL DL 02321000 RECX5 DC F'1' CCHH 02322000 DC AL1(128+05),AL3(50) REC NUMBER KL DL DL 02323000 REC6 DC F'1' CCHH 02324000 DC AL1(6),AL3(4096) REC NUMBER KL DL DL 02325000 RECX6 DC F'1' CCHH @V304498 02326000 DC AL1(128+06),AL3(50) REC NUMBER KL DL DL @V304498 02327000 REC7 DC F'2' CCHH 02328000 DC AL1(7),AL3(4096) REC NUMBER KL DL DL 02329000 RECX7 DC F'2' CCHH 02330000 DC AL1(128+07),AL3(50) REC NUMBER KL DL DL 02331000 REC8 DC F'2' CCHH 02332000 DC AL1(8),AL3(4096) REC NUMBER KL DL DL 02333000 RECX8 DC F'2' CCHH 02334000 DC AL1(128+08),AL3(50) REC NUMBER KL DL DL 02335000 REC9 DC F'2' CCHH 02336000 DC AL1(9),AL3(4096) REC NUMBER KL DL DL 02337000 RECX9 DC F'2' CCHH @V304498 02338000 DC AL1(128+09),AL3(50) REC NUMBER KL DL DL @V304498 02339000 REC10 DC F'3' CCHH 02340000 DC AL1(10),AL3(4096) REC NUMBER KL DL DL 02341000 RECX10 DC F'3' CCHH 02342000 DC AL1(128+10),AL3(50) REC NUMBER KL DL DL 02343000 REC11 DC F'3' CCHH 02344000 DC AL1(11),AL3(4096) REC NUMBER KL DL DL 02345000 RECX11 DC F'3' CCHH 02346000 DC AL1(128+11),AL3(50) REC NUMBER KL DL DL 02347000 REC12 DC F'3' CCHH 02348000 DC AL1(12),AL3(4096) REC NUMBER KL DL DL 02349000 SPACE 1 02350000 *********************************************************************** 02351000 * CCW TO WRITE ALLOCATION TABLE * 02352000 *********************************************************************** 02353000 SPACE 1 02354000 ALLOREC CCW 07,R4SEEK,CC+SILI,6 SEEK TO WRITE ALLOCATION 02355000 CCW 31,FILEMASK,CC+SILI,1 SET FILEMASK 02356000 CCW 49,R4ALLOC,CC+SILI,5 SEARCH ID 02357000 CCW 08,*-8,0,0 TIC BACK 02358000 CCW 05,TABLE,CC+SILI,1024 WRITE DATA 02359000 CCW 49,R4ALLOC,CC+SILI,5 SEARCH ID EQ 02360000 CCW 08,*-8,0,0 02361000 CCW 06,TABLE,0,1024 READ DATA 02362000 SPACE 1 02363000 *********************************************************************** 02364000 * WRITE CCW FOR 3330 * 02365000 ********************************************************************* 02366000 SPACE 1 02367000 SPACE 2 02368000 DS 0D 02369000 FMT3330 CCW 07,SEEKA,CC+SILI,6 SEEK 02370000 CCW 31,FILEMASK,CC+SILI,1 SET FILE MASK 02371000 CCW 49,SEEKA+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02372000 CCW 08,*-8,0,0 TIC BACK 02373000 CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO 02374000 CCW 49,SEEKA+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02375000 CCW 08,*-8,0,0 TIC 02376000 CCW 29,REC1,CC+SILI,8 WRITE 4096 PAGE 02377000 CCW 29,RECX1,CC+SILI,8 02378000 CCW 29,REC2,CC+SILI,8 WRITE 4096 PAGE 02379000 CCW 29,RECX2,CC+SILI,8 02380000 CCW 29,REC3,CC+SILI,8 WRITE 4096 PAGE 02381000 CCW 07,SEEKB,CC+SILI,6 SEEK 02382000 CCW 49,SEEKB+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02383000 CCW 08,*-8,0,0 TIC BACK 02384000 CCW 05,ZERO,CC+SILI,8 02385000 CCW 49,SEEKB+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02386000 CCW 08,*-8,0,0 TIC 02387000 CCW 29,REC4,CC+SILI,8 WRITE 4096 PAGE 02388000 CCW 29,RECX4,CC+SILI,8 02389000 CCW 29,REC5,CC+SILI,8 WRITE 4096 PAGE 02390000 CCW 29,RECX5,CC+SILI,8 02391000 CCW 29,REC6,CC+SILI,8 WRITE 4096 PAGE 02392000 CCW 07,SEEKC,CC+SILI,6 SEEK 02393000 CCW 49,SEEKC+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02394000 CCW 08,*-8,0,0 TIC BACK 02395000 CCW 05,ZERO,CC+SILI,8 02396000 CCW 49,SEEKC+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02397000 CCW 08,*-8,0,0 TIC 02398000 CCW 29,REC7,CC+SILI,8 WRITE 4096 PAGE 02399000 CCW 29,RECX7,CC+SILI,8 02400000 CCW 29,REC8,CC+SILI,8 WRITE 4096 PAGE 02401000 CCW 29,RECX8,CC+SILI,8 02402000 CCW 29,REC9,CC+SILI,8 WRITE 4096 PAGE 02403000 WR57 CCW 08,NEXTWRT,0,0 USED ON 57 TH REC 02404000 NEXTWRT CCW 07,SEEKD,CC+SILI,6 SEEK 02405000 CCW 49,SEEKD+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02406000 CCW 08,*-8,0,0 TIC BACK 02407000 CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO 02408000 CCW 49,SEEKD+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 02409000 CCW 08,*-8,0,0 TIC 02410000 CCW 29,REC10,CC+SILI,8 WRITE 4096 PAGE 02411000 CCW 29,RECX10,CC+SILI,8 02412000 CCW 29,REC11,CC+SILI,8 WRITE 4096 PAGE 02413000 CCW 29,RECX11,CC+SILI,8 02414000 CCW 29,REC12,CC+SILI,8 WRITE 4096 PAGE 02415000 CCW 8,READCCW,0,0 GO READ THE TRACK'S 02416000 SPACE 3 02417000 *********************************************************************** 02418000 * WRITE CCWS FOR 3340-35 AND 3340-70 * 02419000 *********************************************************************** 02420000 SPACE 2 02421000 DS 0D @V2A2029 02422000 FMT3340 CCW 07,SEEKA,CC+SILI,6 SEEK @V2A2029 02423000 CCW 31,FILEMASK,CC+SILI,1 SET FILE MASK @V2A2029 02424000 CCW 49,SEEKA+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02425000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02426000 CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO @V2A2029 02427000 CCW 49,SEEKA+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02428000 CCW 08,*-8,0,0 TIC @V2A2029 02429000 CCW 29,REC1,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02430000 CCW 29,REC2,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02431000 CCW 07,SEEKB,CC+SILI,6 SEEK @V2A2029 02432000 CCW 49,SEEKB+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02433000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02434000 CCW 05,ZERO,CC+SILI,8 @V2A2029 02435000 CCW 49,SEEKB+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02436000 CCW 08,*-8,0,0 TIC @V2A2029 02437000 CCW 29,REC3,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02438000 CCW 29,REC4,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02439000 CCW 07,SEEKC,CC+SILI,6 SEEK @V2A2029 02440000 CCW 49,SEEKC+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02441000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02442000 CCW 05,ZERO,CC+SILI,8 @V2A2029 02443000 CCW 49,SEEKC+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02444000 CCW 08,*-8,0,0 TIC @V2A2029 02445000 CCW 29,REC5,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02446000 CCW 29,REC6,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02447000 CCW 07,SEEKD,CC+SILI,6 SEEK @V2A2029 02448000 CCW 49,SEEKD+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02449000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02450000 CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO @V2A2029 02451000 CCW 49,SEEKD+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02452000 CCW 08,*-8,0,0 TIC @V2A2029 02453000 CCW 29,REC7,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02454000 CCW 29,REC8,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02455000 CCW 07,SEEKE,CC+SILI,6 SEEK @V2A2029 02456000 CCW 49,SEEKE+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02457000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02458000 CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO @V2A2029 02459000 CCW 49,SEEKE+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02460000 CCW 08,*-8,0,0 TIC @V2A2029 02461000 CCW 29,REC9,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02462000 CCW 29,REC10,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02463000 CCW 07,SEEKF,CC+SILI,6 SEEK @V2A2029 02464000 CCW 49,SEEKF+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02465000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02466000 CCW 05,ZERO,CC+SILI,8 @V2A2029 02467000 CCW 49,SEEKF+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0 @V2A2029 02468000 CCW 08,*-8,0,0 TIC @V2A2029 02469000 CCW 29,REC11,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02470000 CCW 29,REC12,CC+SILI,8 WRITE 4096 PAGE @V2A2029 02471000 SPACE 3 02472000 * 02473000 * READ CCWS FOR 3340-35 AND 3340-70 02474000 * 02475000 CCW 07,SEEKA,CC+SILI,6 SEEK @V2A2029 02476000 CCW 49,REC1,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02477000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02478000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02479000 CCW 49,REC2,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02480000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02481000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02482000 CCW 07,SEEKB,CC+SILI,6 SEEK @V2A2029 02483000 CCW 49,REC3,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02484000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02485000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02486000 CCW 49,REC4,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02487000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02488000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02489000 CCW 07,SEEKC,CC+SILI,6 SEEK @V2A2029 02490000 CCW 49,REC5,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02491000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02492000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02493000 CCW 49,REC6,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02494000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02495000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02496000 CCW 07,SEEKD,CC+SILI,6 SEEK @V2A2029 02497000 CCW 49,REC7,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02498000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02499000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02500000 CCW 49,REC8,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02501000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02502000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02503000 CCW 07,SEEKE,CC+SILI,6 SEEK @V2A2029 02504000 CCW 49,REC9,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02505000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02506000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02507000 CCW 49,REC10,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02508000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02509000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02510000 CCW 07,SEEKF,CC+SILI,6 SEEK @V2A2029 02511000 CCW 49,REC11,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02512000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02513000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02514000 CCW 49,REC12,CC+SILI,5 SEARCH ID EQUAL @V2A2029 02515000 CCW 08,*-8,0,0 TIC BACK @V2A2029 02516000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V2A2029 02517000 CCW 08,BITMAP,0,0 TIC TO WRITE REC 0 BIT MAP @V2A2029 02518000 SPACE 3 02519000 *********************************************************************** 02520000 * WRITE CCW FOR 2305S 02521000 ********************************************************************** 02522000 SPACE 1 02523000 SPACE 2 02524000 DS 0D 02525000 FMT2305 CCW 07,SEEKA,CC+SILI,6 SEEK 02526000 CCW 31,FILEMASK,CC+SILI,1 SET FILE MASK 02527000 CCW 21,SEEKA+2,CC+SILI,16 WRITE RECORD ZERO 02528000 CCW 29,REC1,CC+SILI,8 WRITE 4096 PAGE 02529000 CCW 29,RECX1,CC+SILI,8 02530000 CCW 29,REC2,CC+SILI,8 WRITE 4096 PAGE 02531000 CCW 29,RECX2,CC+SILI,8 02532000 CCW 29,REC3,CC+SILI,8 WRITE 4096 PAGE 02533000 CCW 07,SEEKB,CC+SILI,6 SEEK 02534000 CCW 21,SEEKB+2,CC+SILI,16 WRITE RECORD ZERO 02535000 CCW 29,REC4,CC+SILI,8 WRITE 4096 PAGE 02536000 CCW 29,RECX4,CC+SILI,8 02537000 CCW 29,REC5,CC+SILI,8 WRITE 4096 PAGE 02538000 CCW 29,RECX5,CC+SILI,8 02539000 CCW 29,REC6,CC+SILI,8 WRITE 4096 PAGE 02540000 CCW 07,SEEKC,CC+SILI,6 SEEK 02541000 CCW 21,SEEKC+2,CC+SILI,16 WRITE RECORD ZERO 02542000 CCW 29,REC7,CC+SILI,8 WRITE 4096 PAGE 02543000 CCW 29,RECX7,CC+SILI,8 02544000 CCW 29,REC8,CC+SILI,8 WRITE 4096 PAGE 02545000 CCW 29,RECX8,CC+SILI,8 02546000 CCW 29,REC9,CC+SILI,8 WRITE 4096 PAGE 02547000 CCW 07,SEEKD,CC+SILI,6 SEEK 02548000 CCW 21,SEEKD+2,CC+SILI,16 WRITE RECORD ZERO 02549000 CCW 29,REC10,CC+SILI,8 WRITE 4096 PAGE 02550000 CCW 29,RECX10,CC+SILI,8 02551000 CCW 29,REC11,CC+SILI,8 WRITE 4096 PAGE 02552000 CCW 29,RECX11,CC+SILI,8 02553000 CCW 29,REC12,CC+SILI,8 WRITE 4096 PAGE 02554000 SPACE 2 02555000 ****"****************************************************************** 02556000 * READ CCW FOR NORMAL RECORDS 3340, 3330 AND 2305S * 02557000 *********************************************************************** 02558000 SPACE 1 02559000 READCCW CCW 07,SEEKA,CC+SILI,6 SEEK 02560000 CCW 49,REC1,CC+SILI,5 SEARCH ID EQUAL 02561000 CCW 08,*-8,0,0 TIC BACK 02562000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02563000 CCW 49,REC2,CC+SILI,5 SEARCH ID EQUAL 02564000 CCW 08,*-8,0,0 TIC BACK 02565000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02566000 CCW 49,REC3,CC+SILI,5 SEARCH ID EQUAL 02567000 CCW 08,*-8,0,0 TIC BACK 02568000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02569000 CCW 07,SEEKB,CC+SILI,6 SEEK 02570000 CCW 49,REC4,CC+SILI,5 SEARCH ID EQUAL 02571000 CCW 08,*-8,0,0 TIC BACK 02572000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02573000 CCW 49,REC5,CC+SILI,5 SEARCH ID EQUAL 02574000 CCW 08,*-8,0,0 TIC BACK 02575000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02576000 CCW 49,REC6,CC+SILI,5 SEARCH ID EQUAL 02577000 CCW 08,*-8,0,0 TIC BACK 02578000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02579000 CCW 07,SEEKC,CC+SILI,6 SEEK 02580000 CCW 49,REC7,CC+SILI,5 SEARCH ID EQUAL 02581000 CCW 08,*-8,0,0 TIC BACK 02582000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02583000 CCW 49,REC8,CC+SILI,5 SEARCH ID EQUAL 02584000 CCW 08,*-8,0,0 TIC BACK 02585000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02586000 CCW 49,REC9,CC+SILI,5 SEARCH ID EQUAL 02587000 CCW 08,*-8,0,0 TIC BACK 02588000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) 02589000 RD57 CCW 08,NEXTREAD,0,0 USED ON 57TH REC 02590000 NEXTREAD CCW 07,SEEKD,CC+SILI,6 SEEK 02591000 CCW 49,REC10,CC+SILI,5 SEARCH ID EQUAL 02592000 CCW 08,*-8,0,0 TIC BACK 02593000 CCW 06,0,CC+SKIP,4096 READ DATA 1 PAGE 02594000 CCW 49,REC11,CC+SILI,5 SEARCH ID EQUAL 02595000 CCW 08,*-8,0,0 TIC BACK 02596000 CCW 06,0,CC+SKIP,4096 READ DATA 1 PAGE 02597000 CCW 49,REC12,CC+SILI,5 SEARCH ID EQUAL 02598000 CCW 08,*-8,0,0 TIC BACK 02599000 CCW 06,0,CC+SKIP,4096 READ DATA 1 PAGE 02600000 CCW 08,BITMAP,0,0 TIC TO WRITE REC 0 BIT MAP 02601000 SPACE 1 02602000 *********************************************************************** 02603000 * WRITE CCW FOR 3350 * 02604000 *********************************************************************** 02605000 SPACE 1 02606000 DS 0D @V304498 02607000 FMT3350 CCW 07,SEEKA,CC+SILI,6 SEEK @V304498 02608000 CCW 31,FILEMASK,CC+SILI,1 SET FILE MASK @V304498 02609000 CCW 49,SEEKA+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02610000 CCW 08,*-8,0,0 TIC BACK @V304498 02611000 CCW 05,ZERO,CC+SILI,8 WRITE REC ZERO @V304498 02612000 CCW 49,SEEKA+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02613000 CCW 08,*-8,0,0 TIC @V304498 02614000 CCW 29,REC1,CC+SILI,8 WRITE 4096 PAGE @V304498 02615000 CCW 29,RECX1,CC+SILI,8 @V304498 02616000 CCW 29,REC2,CC+SILI,8 WRITE 4096 PAGE @V304498 02617000 CCW 29,RECX2,CC+SILI,8 @V304498 02618000 CCW 29,REC3,CC+SILI,8 WRITE 4096 PAGE @V304498 02619000 CCW 29,RECX3,CC+SILI,8 @V304498 02620000 CCW 29,REC4,CC+SILI,8 WRITE 4096 PAGE @V304498 02621000 CCW 07,SEEKB,CC+SILI,6 SEEK @V304498 02622000 CCW 49,SEEKB+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02623000 CCW 08,*-8,0,0 TIC BACK @V304498 02624000 CCW 05,ZERO,CC+SILI,8 @V304498 02625000 CCW 49,SEEKB+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02626000 CCW 08,*-8,0,0 TIC @V304498 02627000 CCW 29,REC5,CC+SILI,8 WRITE 4096 PAGE @V304498 02628000 CCW 29,RECX5,CC+SILI,8 @V304498 02629000 CCW 29,REC6,CC+SILI,8 WRITE 4096 PAGE @V304498 02630000 CCW 29,RECX6,CC+SILI,8 @V304498 02631000 CCW 29,REC7,CC+SILI,8 WRITE 4096 PAGE @V304498 02632000 CCW 29,RECX7,CC+SILI,8 @V304498 02633000 CCW 29,REC8,CC+SILI,8 WRITE 4096 PAGE @V304498 02634000 CCW 07,SEEKC,CC+SILI,6 SEEK @V304498 02635000 CCW 49,SEEKC+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02636000 CCW 08,*-8,0,0 TIC BACK @V304498 02637000 CCW 05,ZERO,CC+SILI,8 @V304498 02638000 CCW 49,SEEKC+2,CC+SILI,5 SEARCH ID EQUAL RECORD 0@V304498 02639000 CCW 08,*-8,0,0 TIC @V304498 02640000 CCW 29,REC9,CC+SILI,8 WRITE 4096 PAGE @V304498 02641000 CCW 29,RECX9,CC+SILI,8 @V304498 02642000 CCW 29,REC10,CC+SILI,8 WRITE 4096 PAGE @V304498 02643000 CCW 29,RECX10,CC+SILI,8 @V304498 02644000 CCW 29,REC11,CC+SILI,8 WRITE 4096 PAGE @V304498 02645000 CCW 29,RECX11,CC+SILI,8 @V304498 02646000 CCW 29,REC12,CC+SILI,8 WRITE 4096 PAGE @V304498 02647000 SPACE 1 02648000 *********************************************************************** 02649000 * READ CCWS FOR 3350 * 02650000 *********************************************************************** 02651000 SPACE 1 02652000 CCW 07,SEEKA,CC+SILI,6 SEEK @V304498 02653000 CCW 49,REC1,CC+SILI,5 SEARCH ID EQUAL @V304498 02654000 CCW 08,*-8,0,0 TIC BACK @V304498 02655000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02656000 CCW 49,REC2,CC+SILI,5 SEARCH ID EQUAL @V304498 02657000 CCW 08,*-8,0,0 TIC BACK @V304498 02658000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02659000 CCW 49,REC3,CC+SILI,5 SEARCH ID EQUAL @V304498 02660000 CCW 08,*-8,0,0 TIC BACK @V304498 02661000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02662000 CCW 49,REC4,CC+SILI,5 SEARCH ID EQUAL @V304498 02663000 CCW 08,*-8,0,0 TIC BACK @V304498 02664000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02665000 CCW 07,SEEKB,CC+SILI,6 SEEK @V304498 02666000 CCW 49,REC5,CC+SILI,5 SEARCH ID EQUAL @V304498 02667000 CCW 08,*-8,0,0 TIC BACK @V304498 02668000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02669000 CCW 49,REC6,CC+SILI,5 SEARCH ID EQUAL @V304498 02670000 CCW 08,*-8,0,0 TIC BACK @V304498 02671000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02672000 CCW 49,REC7,CC+SILI,5 SEARCH ID EQUAL @V304498 02673000 CCW 08,*-8,0,0 TIC BACK @V304498 02674000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02675000 CCW 49,REC8,CC+SILI,5 SEARCH ID EQUAL @V304498 02676000 CCW 08,*-8,0,0 TIC BACK @V304498 02677000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02678000 CCW 07,SEEKC,CC+SILI,6 SEEK @V304498 02679000 CCW 49,REC9,CC+SILI,5 SEARCH ID EQUAL @V304498 02680000 CCW 08,*-8,0,0 TIC BACK @V304498 02681000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02682000 CCW 49,REC10,CC+SILI,5 SEARCH ID EQUAL @V304498 02683000 CCW 08,*-8,0,0 TIC BACK @V304498 02684000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02685000 CCW 49,REC11,CC+SILI,5 SEARCH ID EQUAL @V304498 02686000 CCW 08,*-8,0,0 TIC BACK @V304498 02687000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02688000 CCW 49,REC12,CC+SILI,5 SEARCH ID EQUAL @V304498 02689000 CCW 08,*-8,0,0 TIC BACK @V304498 02690000 CCW 06,0,CC+SKIP,4096 READ DATA (1 PAGE) @V304498 02691000 CCW 08,BITMAP,0,0 TIC TO WRITE REC 0 BIT MAP @V304498 02692000 SPACE 1 02693000 ********************************************************************** 02694000 * * NORMAL FORMAT CCW * 02695000 *********************************************************************** 02696000 FMT2314 CCW 7,SEEKA,CC+SILI,6 SEEK 02697000 CCW 31,FILEMASK,CC+SILI,1 SET FILE MASK 02698000 CCW 25,SEEKA+1,CC+SILI,5 WHA WRITE HOME ADDRESS 02699000 CCW 21,SEEKA+2,CC+SILI,16 WRITE RECORD 0 02700000 CCW 29,R1STUF,CC+SILI,8 WCKD WRITE COUNT KEY DATA 02701000 CCW 01,R2STUF,CC+SILI,8 SPCKD WR SPECIAL COUNT KEY DATA 02702000 CCW 07,SEEKB,CC+SILI,6 02703000 CCW 25,SEEKB+1,CC+SILI,5 02704000 CCW 21,SEEKB+2,CC+SILI,16 02705000 CCW 29,R2ASTUF,CC+SILI,8 02706000 CCW 29,R3STUF,CC+SILI,8 02707000 CCW 01,R4STUF,CC+SILI,8 02708000 CCW 07,SEEKC,CC+SILI,6 02709000 CCW 25,SEEKC+1,CC+SILI,5 02710000 CCW 21,SEEKC+2,CC+SILI,16 02711000 CCW 29,R4ASTUF,CC+SILI,8 02712000 CCW 01,R5STUF,CC+SILI,8 02713000 CCW 07,SEEKD,CC+SILI,6 02714000 CCW 25,SEEKD+1,CC+SILI,5 02715000 CCW 21,SEEKD+2,CC+SILI,16 02716000 CCW 29,R5ASTUF,CC+SILI,8 02717000 CCW 29,R6STUF,CC+SILI,8 02718000 CCW 01,R7STUF,CC+SILI,8 02719000 CCW 07,SEEKE,CC+SILI,6 02720000 CCW 25,SEEKE+1,CC+SILI,5 02721000 CCW 21,SEEKE+2,CC+SILI,16 02722000 CCW 29,R7ASTUF,CC+SILI,8 02723000 CCW 29,R8STUF,CC+SILI,8 02724000 SPACE 1 02725000 *********************************************************************** 02726000 * * READ CCW'S 2314 2319 02727000 *********************************************************************** 02728000 CCW 07,SEEKA,CC+SILI,6 02729000 CCW 49,R1STUF,CC+SILI,5 02730000 CCW 08,*-8,0,0 02731000 CCW 06,0,CC+SKIP,4096 02732000 CCW 49,R2STUF,CC+SILI,5 02733000 CCW 08,*-8,0,0 02734000 CCW 06,0,CC+SKIP,4096 02735000 CCW 07,SEEKB,CC,6 02736000 CCW 49,R3STUF,CC,5 02737000 CCW 08,*-8,0,0 02738000 CCW 06,0,CC+SKIP,4096 02739000 CCW 49,R4STUF,CC,5 02740000 CCW 08,*-8,0,0 02741000 CCW 06,0,CC+SKIP,4096 02742000 CCW 07,SEEKC,CC,6 02743000 CCW 49,R5STUF,CC,5 02744000 CCW 08,*-8,0,0 02745000 CCW 06,0,CC+SKIP,4096 02746000 CCW 07,SEEKD,CC,6 02747000 CCW 49,R6STUF,CC,5 02748000 CCW 08,*-8,0,0 02749000 CCW 06,0,CC+SKIP,4096 02750000 CCW 49,R7STUF,CC,5 02751000 CCW 08,*-8,0,0 02752000 CCW 06,0,CC+SKIP,4096 02753000 CCW 07,SEEKE,CC,6 02754000 CCW 49,R8STUF,CC,5 02755000 CCW 08,*-8,0,0 02756000 CCW 06,01,CC+SKIP,4096 02757000 SPACE 1 02758000 *********************************************************************** 02759000 * WRITE REC 0 BIT MAP FOR 2314,3330,3340,3350 OR 2305 * 02760000 *********************************************************************** 02761000 BITMAP CCW 07,SEEK0,CC,6 02762000 CCW 49,SEEK0+2,CC,5 02763000 CCW 08,*-8,0,0 02764000 CCW 05,R0STUF,CC+SILI,8 REWRITE BIT MAP 02765000 CCW 22,0,SKIP,16 READ REC 0 02766000 SPACE 1 02767000 SPACE 1 02768000 *********************************************************************** 02769000 * * * CCW'S FOR SPECIAL INFOR ON CYL 0 * 02770000 *********************************************************************** 02771000 SPEC2314 CCW 07,SEEKA,CC+SILI,6 CYL 0 HEAD 0 02772000 CCW 31,FILEMASK,CC+SILI,1 02773000 CCW 25,SEEKA+1,CC+SILI,5 02774000 CCW 21,SEEKA+2,CC+SILI,16 R0 02775000 CCW 29,R1SPEC,CC+SILI,8+24 IPL RECORD 02776000 CCW 29,R2SPEC,CC+SILI,8 02777000 CCW 29,R3VOL1,CC+SILI,8+84 VOL1 OS LABEL 02778000 CCW 29,R4ALLOC,CC+SILI,8+1024 ALLOCATION MAP 02779000 CCW 29,FORMAT4,CC+SILI,8+140 FORMAT4 RECORD 02780000 CCW 29,FORMAT5,CC+SILI,8+140 FORMAT5 RECORD 02781000 CCW 07,SEEKB,CC+SILI,6 02782000 CCW 25,SEEKB+1,CC+SILI,5 02783000 CCW 21,SEEKB+2,CC+SILI,16 02784000 CCW 29,RF3,CC+SILI,8 ONE PAGE RECORD 02785000 CCW 29,RF4SPEC,CC+SILI,8 02786000 CCW 01,R4SPEC,CC+SILI,8 02787000 VERIFY CCW 07,SEEKA,CC+SILI,6 SEEK 02788000 CCW 26,0,CC+SKIP,5 READ HOME ADDRESS 02789000 CCW 22,0,CC+SKIP,16 READ REC. ZERO 02790000 CCW 30,0,CC+SKIP,8+24 READ COUNT KEY DATA IPL REC. 02791000 CCW 30,0,CC+SKIP,8+4096 READ COUNT KEY DATA PAGE REC. 02792000 CCW 30,0,CC+SKIP,8+84 READ COUNT KEY DATA VOL1 LABEL 02793000 CCW 30,0,CC+SKIP,8+1024 READ COUNT KEY DATA ALLOC MAP 02794000 CCW 30,0,CC+SKIP,8+140 READ COUNT KEY DATA FORMAT4 REC 02795000 CCW 30,0,CC+SKIP,8+140 READ COUNT KEY DATA FORMAT5 REC. 02796000 GO CCW 08,GO2314,0,0 GO 2314 OR 3330 DEPENDS ON DEV. 02797000 GO2314 CCW 07,SEEKB,CC+SILI,6 SEEK TRACK 1 02798000 CCW 26,0,CC+SKIP,5 READ HOME ADDRESS 02799000 CCW 22,0,CC+SKIP,16 READ REC. ZERO 02800000 CCW 30,0,CC+SKIP,8+4096 READ COUNT KEY DATA F3 PAGE 02801000 CCW 30,0,CC+SKIP,8+1624 READ COUNT KEY DATA FILLER 02802000 CCW 49,R4SPEC,CC+SILI,5 SEARCH ID EQUAL REC 4 02803000 CCW 08,*-8,0,0 TIC BACK 02804000 CCW 06,0,SKIP,4096 READ RECORD 4 FULLY 02805000 GO3330 CCW 30,0,SKIP+SILI,8+4096 READ F3 PAGE RECORD @V2A2029 02806000 ON3330 CCW 08,GO3330,0,0 USED TO ALTER OTHER TIC'S 02807000 OFF3330 CCW 08,GO2314,0,0 USED TO ALTER OTHER TIC'S 02808000 ON3340 CCW 04,0,SKIP+SILI,1 USED TO ALTER OTHER TIC'S @V2A2029 02809000 ON57WRT CCW 08,READCCW,0,0 USED TO ALTER OTHER TIC'S 02810000 OFF57WRT CCW 08,NEXTWRT,0,0 USED TO ALTER OTHER TIC'S 02811000 ON57RD CCW 08,BITMAP,0,0 USED TO ALTER OTHER TIC'S 02812000 OFF57RD CCW 08,NEXTREAD,0,0 USED TO ALTER OTHER TIC'S 02813000 EJECT 02814000 ********************************************************************** 02815000 * GRAPHIC SUPPORT CCWS 02816000 ********************************************************************** 02817000 CRTWORD CCW X'27',SBACP,SILI+CC,2 SET BAR TO (STATUS WORD) @V200731 02818000 CCW X'01',CPXYSTAT,SILI+CC,20 WRITE 'RUNNING' ON @V200731 02819000 * SCREEN 02820000 CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR @V200731 02821000 * WRITE 02822000 CCW X'01',BLNKZERO,SILI+CC,140 CLEAR INPUT AREA @VM08604 02823000 CURS3066 CCW X'0F',SBAREAD,SILI+CC,2 REPOSITION CURSOR @V200731 02824000 CCW X'03',*-*,SILI,3 END OF READ CCW STRING @V200731 02825000 SPACE 2 02826000 CRTWORD1 CCW X'01',LAB3270A,SILI+CC,LEN THE CONTROL DATA @VM08630 02827000 CCW X'03',*-*,SILI,2 @V200731 02828000 SPACE 2 02829000 REQREAD CCW X'27',SBACP,SILI+CC,2 SET BUFFER ADDR TO CP X-Y @V200731 02830000 CCW X'01',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 02831000 CCW X'08',CURS3066,SILI,1 RESET CURSOR POSITION @V200731 02832000 SPACE 2 02833000 REQREAD1 CCW X'01',LAB3270B,SILI+CC,LEN1 THE CONTROL DATA @VM08630 02834000 CCW X'03',*-*,SILI,2 @V200731 02835000 SPACE 2 02836000 ERSE3066 CCW X'07',*-*,SILI+CC,1 ERASE ENTIRE SCREEN @V200731 02837000 WRTCRTXY CCW X'27',SBADDR,SILI+CC,2 SET CORRECT LINE IN @V200731 02838000 * BUFFER 02839000 WRT3066 CCW X'01',*-*,SILI+CC,140 WRITE OUT USER DATA @V200731 02840000 CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 02841000 SPACE 2 02842000 ERSE3270 CCW X'05',LAB3270E,SILI+CD,LEN3 ERASE THE SCREEN @V200731 02843000 CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 02844000 WRTCRT70 CCW X'01',LAB3270,SILI+CD,4 THE CONTROL DATA @V200731 02845000 WRTCR70 CCW X'00',*-*,SILI+CD,0 THE WRITE CCW @V200731 02846000 CCW X'00',LAB3270A+1,SILI+CC,LEN-1 WRITE SCREEN @V200731 02847000 * STATUS 02848000 CCW X'03',*-*,SILI,2 @V200731 02849000 SPACE 2 02850000 RDMI3066 CCW X'0E',RDMIDATA,SILI+CC,3 READ CCW FOR MI COMMAND@V200731 02851000 RD3066 CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR READ@V200731 02852000 RD3066DA CCW X'06',*-*,SILI+CC,140 READ INPUT DATA @V200731 02853000 CCW X'08',CURS3066,SILI,1 REPOSITION CURSOR @V200731 02854000 SPACE 2 02855000 RDMI3270 CCW X'01',LAB3270D,SILI+CC,4 @V200731 02856000 RD3270DA CCW X'06',*-*,SILI+CC,0 THE CCW FOR READ @V200731 02857000 CCW X'03',*-*,SILI,2 @V200731 02858000 SPACE 2 02859000 CNCL3270 CCW X'01',LAB3270E,SILI+CD,LEN3 THE CONTROL DATA @V200731 02860000 CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 02861000 CCW X'03',*-*,SILI,2 @V200731 02862000 SPACE 2 02863000 CNCL3066 CCW X'07',*-*,SILI+CC,1 ERASE SCREEN @V200731 02864000 CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 02865000 SPACE 2 02866000 MORECCW1 CCW X'01',LAB3270C,SILI+CC,LEN2 THE CONTROL DATA @V200731 02867000 CCW X'03',*-*,SILI,2 @V200731 02868000 SPACE 2 02869000 ********************************************************************** 02870000 * FIRST DC ARE ADDRESSES FOR LINES 1 -6 02871000 * SECOND DC ARE ADDRESSES FOR LINES 7 - 12 02872000 * THIRD DC ARE ADDRESSES FOR LINES 13 - 18 02873000 * FOURTH DC ARE ADDRESSES FOR LINES 19 - 24 02874000 ********************************************************************* 02875000 SPACE 2 02876000 TABLE70 DS 0D @V200731 02877000 DC X'4040C150C260C3F0C540C650' @V200731 02878000 DC X'C760C8F04A404B504C604DF0' @V200731 02879000 DC X'4F405050D160D2F0D440D550' @V200731 02880000 DC X'D660D7F0D9405A505B605CF0' @V200731 02881000 SPACE 2 02882000 TABLGRAP EQU * @V200731 02883000 DC X'0A',AL3(READ66) ADDRESS OF THE READ SECTION @V200731 02884000 DC X'01',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 02885000 DC X'09',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 02886000 DC X'05',AL3(WRT66) ADDRESS OF THE WRITE SECTION @V200731 02887000 DC X'03',AL3(RETWORD) ADDRESS OF THE RETURN SECTION@V200731 02888000 SPACE 2 02889000 * X'5B60' - LINE 23, COL. 1 02890000 * X'5D6A' - LINE 24, COL. 59 02891000 SPACE 2 02892000 ********************************************************************** 02893000 WC6 EQU X'C2' WRITE CONTROL BIT 6 @V200731 02894000 AT7 EQU X'C1' ATTRIBUTE BIT 7 @V200731 02895000 AT2 EQU X'E0' ATTRIBUTE BIT 2 @V200731 02896000 LAC EQU X'C0' @V200731 02897000 SF EQU X'1D' START OF FIELD CONTROL @V200731 02898000 SBA EQU X'11' SET BUFFER ADDRESS @V200731 02899000 IC EQU X'13' INSERT CURSOR @V200731 02900000 EUA EQU X'12' ERASE UNPROTECTED @V200731 02901000 RA EQU X'3C' REPEAT TO ADDRESS @V200731 02902000 SPACE 2 02903000 LAB3270A DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 02904000 DC AL1(IC),AL1(EUA),X'5D6B',AL1(SF),AL1(AT2) @V200731 02905000 RUNLABEL DC CL20'RUNNING' @V200731 02906000 LEN EQU *-LAB3270A @V200731 02907000 LAB3270B DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 02908000 DC AL1(IC),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 02909000 REALABEL DC CL20'CP READ' @VM08531 02910000 LEN1 EQU *-LAB3270B @V200731 02911000 LAB3270C DC AL1(WC6),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 02912000 MORLABEL DC CL20'HOLDING' @V200731 02913000 LEN2 EQU *-LAB3270C @V200731 02914000 LAB3270D DC AL1(LAC),AL1(SBA),X'5B60' @V200731 02915000 LAB3270 DC AL1(WC6),AL1(SBA),X'0000' @V200731 02916000 LAB3270E DC AL1(WC6),AL1(SBA),X'4040',AL1(RA),X'5B60',X'00' @V200731 02917000 DC AL1(SF),AL1(AT7),AL1(IC),AL1(SBA) @V200731 02918000 DC X'5D6B',AL1(SF),AL1(AT2) @V200731 02919000 LEN3 EQU *-LAB3270E @V200731 02920000 SPACE 2 02921000 ********************************************************************* 02922000 PARM DC X'00' THE GRAPHIC FLAG BYTE @V200731 02923000 PARMATT EQU X'80' ATTENTION REQUEST @V200731 02924000 PARMGRP EQU X'40' GRAPHIC SUPPORT @V200731 02925000 PARMREA EQU X'20' READ REQUEST @V200731 02926000 PARMCLE EQU X'10' CLEAR/ERASE REQUEST @V200731 02927000 PARM327 EQU X'08' 3270 GRAPHIC @V200731 02928000 PARMNDA EQU X'04' NO DATA INDICATED @V200731 02929000 PARM01F EQU X'02' 01F REQUESTED @V200731 02930000 PARM321 EQU X'01' 3215/3210/1052 @V200731 02931000 PARM2 DC X'00' SIO SWITCHES @V200731 02932000 SIONOP EQU X'80' DEVICE NOT OPERATIONAL @V200731 02933000 ********************************************************************** 02934000 SPACE 2 02935000 ********************************************************************* 02936000 SBADDR DC AL1(00,00) CURRENT OUTPUT LINE COORDINATES @V200731 02937000 * FOR THE 02938000 * 3066 02939000 SBACP DC AL1(34,60) COORDINATES FOR SCREEN 'STATUS' @V200731 02940000 * WORD 02941000 SBAREAD DC AL1(33,00) COORDINATES FOR CURSOR POSITION @V200731 02942000 RDMIDATA DC XL6'00' READ DATA FROM 'MI' COMMAND @V200731 02943000 CPXYSTAT DC CL20' ' SCREEN 'STATUS' WORD @V200731 02944000 BLNKLINE DC XL140'00' CLEAR INPUT AREA FOR DATA @VM08604 02945000 BLNKZERO DC CL140' ' BLANKS FOR READ AREA @VM08604 02946000 GRAPHSAV DC 8F'00' SAVE AREA FOR GRAPHIC SUPPORT @V200731 02947000 SAVEAREA DC 2F'00' SAVE AREA FOR GRAPHIC DATA @V200731 02948000 * REGISTERS 02949000 ********************************************************************* 02950000 SPACE 1 02951000 SPACE 1 02952000 *********************************************************************** 02953000 * * CCW TO PICKUP BROKEN CCW CHAIN * 02954000 *********************************************************************** 02955000 RESUMCCW CCW 31,FILEMASK,CC+SILI,1 02956000 CCW 08,0,0,0 02957000 DS 0F 02958000 DS 1H 02959000 SEEKA DC H'0' BB 02960000 DC F'0' CCHH 02961000 DC F'8' REC NO. AND DL OR R0 02962000 R0STUF DC 2F'0' DATA FIELD OF R0 CYL BIT MAP 02963000 DS 1H 02964000 SEEKB DC H'0' 02965000 DC F'1' 02966000 DC F'8' 02967000 DC 2F'0' 02968000 DS 1H 02969000 SEEKC DC H'0' 02970000 DC F'2' 02971000 DC F'8' 02972000 DC 2F'0' 02973000 DS 1H 02974000 SEEKD DC H'0' 02975000 DC F'3' 02976000 DC F'8' 02977000 DC 2F'0' 02978000 DS 1H 02979000 SEEKE DC H'0' 02980000 DC F'4' 02981000 DC F'8' 02982000 DC 2F'0' 02983000 DS 1H @V2A2029 02984000 SEEKF DC H'0' @V2A2029 02985000 DC F'5' @V2A2029 02986000 DC F'8' @V2A2029 02987000 DC 2F'0' @V2A2029 02988000 SPACE 1 02989000 *********************************************************************** 02990000 * * 2314 DATA ADDRESS CYL 0 HD 0 * 02991000 *********************************************************************** 02992000 R1SPEC DC F'0' 02993000 DC AL1(1),AL3(24) 02994000 DC X'000200000000000C' WAIT PSW 02995000 DC X'0300',H'0' 02996000 DC X'2000',H'0' 02997000 DC 2F'0' 02998000 R2SPEC DC F'0' 02999000 DC AL1(2),AL3(4096) 03000000 R3VOL1 DC F'0' VOL1 COUNT 03001000 DC AL1(3),AL1(4),AL2(80) REC KL DL DL 03002000 VOL1 DC C'VOL1' KEY 03003000 OSLABEL DC C'VOL1' 03004000 CPLABEL DC C' NONE ' LABEL PLACED HERE 03005000 DC X'F0' 03006000 VTOCBEG DC XL4'0' PTR TO VTOC IN R3 (CCHH) @V56BDA8 03007000 VTOCR DC X'05' ... (R) @V56BDA8 03008000 DC XL5'0' 03009000 DC 20XL1'40' 03010000 DC XL5'00',C'CP370' VOLUME OWNER 03011000 DC 29XL1'40' 03012000 R4SEEK DC H'0' 03013000 R4ALLOC DC F'0' CCHH 03014000 DC AL1(4),AL3(1024) REC KL DL DL 03015000 TABLE DC 256XL1'00' ALLOCATE TABLE 03016000 TABLE1 DC 256XL1'00' 03017000 TABLE2 DC 256XL1'00' 03018000 TABLE3 DC 256XL1'00' 03019000 FORMAT4 DC F'00' CCHH 03020000 DC AL1(5),AL1(44),AL2(96) REC KL DL DL 03021000 DC 44XL1'04' KEY OF HEX 04 03022000 FMT4DATA DC X'F4' FMT4 DSCB IDENTIFIER @V56BDA8 03023000 DC X'0000000000' CCHHR 03024000 DC X'0000' 03025000 NEXTCCHH DC XL4'0' CCHH OF NEXT AVAIL. ALT TRK @V56BDA8 03026000 DC X'0000' 03027000 DC X'00' VTOG INDICATORS 03028000 DC X'01003C00140014' 03029000 DC X'1C7E922D2D' 03030000 DC X'0102160202' 03031000 DC XL29'00' 03032000 DC X'00' TRACK ZERO 03033000 DC XL8'00' 03034000 DC X'00' TRACK ZERO 03035000 DC XL25'00' 03036000 FORMAT5 DC F'0' CCHH 03037000 DC AL1(6),AL1(44),AL2(96) REC KL DL DL 03038000 DC 4XL1'05' 03039000 DC X'0001000000' TRACK ZERO NO CYLINDERS NO TRACKS 03040000 DC XL35'00' 03041000 DC X'F5' 03042000 DC XL90'00' 03043000 DC XL5'00' 03044000 RF3 DC F'1' 03045000 DC X'F3',AL3(4096) 03046000 RF4SPEC DC F'1' 03047000 DC X'F4',AL3(1624) 03048000 R4SPEC DC F'1' 03049000 DC AL1(4),AL3(824) 03050000 RF33330 DC F'0' FOR 3330 , 2305 03051000 DC X'F3',AL3(4096) 03052000 SPACE 1 03053000 *********************************************************************** 03054000 * * NORMAL DATA RECORDS * 03055000 *********************************************************************** 03056000 R1STUF DC F'0' 03057000 DC AL1(1),AL3(4096) 03058000 R2STUF DC F'0' 03059000 DC AL1(2),AL3(2472) 03060000 R2ASTUF DC F'1' 03061000 DC AL1(2),AL3(1624) 03062000 R3STUF DC F'1' 03063000 DC AL1(3),AL3(4096) 03064000 R4STUF DC F'1' 03065000 DC AL1(4),AL3(824) 03066000 R4ASTUF DC F'2' 03067000 DC AL1(4),AL3(3272) 03068000 R5STUF DC F'2' 03069000 DC AL1(5),AL3(3296) 03070000 R5ASTUF DC F'3' 03071000 DC AL1(5),AL3(800) 03072000 R6STUF DC F'3' 03073000 DC AL1(6),AL3(4096) 03074000 R7STUF DC F'3' 03075000 DC AL1(7),AL3(1648) 03076000 R7ASTUF DC F'4' 03077000 DC AL1(7),AL3(2448) 03078000 R8STUF DC F'4' 03079000 DC AL1(8),AL3(4096) 03080000 *********************************************************************** 03081000 * * CONSTANTS * 03082000 *********************************************************************** 03083000 LTORG 03084000 FLAG DC X'00' A OR F 03085000 TYPE DC X'00' 14,03 OR 01 03086000 TYP3350 EQU X'60' 3350 DEVICE CODE @V304498 03087000 TYP334X EQU X'40' 3340/3344 DEVICE CODE @V56BDA8 03088000 TYP3330 EQU X'30' 3330 DEVICE CODE @V304498 03089000 RECN0 EQU X'00' RECORD NUMBER 0 @V304498 03090000 RECN1 EQU X'01' RECORD NUMBER 1 @V304498 03091000 RECN2 EQU X'02' RECORD NUMBER 2 @V304498 03092000 RECN4 DC X'04' RECORD NUMBER 4 @V304498 03093000 DSKADD DC H'0' DEVICE ADDRESS 03094000 CONSOL DC H'9' 03095000 ADDR1 DC X'5B5F' LOCATION LINE 22 COL 80 @V60A6B6 03096000 ADDR2 DC X'5D6B' LOCATION LINE 24 COL 60 @V60A6B6 03097000 ADDR3 DC X'D65F' LOCATION LINE 18 COL 80 @V60A6B6 03098000 ADDR4 DC X'D86B' LOCATION LINE 20 COL 60 @V60A6B6 03099000 ADDR5 DC X'4040' INITIALIZED ADDR @V60A6B6 03100000 ADDR6 DC X'5B60' LOCATION LINE 23 COL 01 @V60A6B6 03101000 ADDR7 DC X'D660' LOCATION LINE 19 COL 01 @V60A6B6 03102000 DS 0F @V60A6B6 03103000 MAXLEN DC F'0000' @V60A6B6 03104000 LEN3270 DC F'1760' 3270 MOD2 24 LINE CONSOLE/TERM @V60A6B6 03105000 LEN3278 DC F'1440' 3278 MOD2A 20 LINE CONSOLE @V60A6B6 03106000 DS 0D 03107000 WTPSW DC X'00020000' 03108000 DC F'0' 03109000 PRNUPSW DC F'0',A(PRCHK) 03110000 MCNUPSW DC F'0',A(MCRTN) 03111000 INDATA DC 132X'00' 03112000 RECORD3 DC XL5'3' 03113000 FILEMASK DC X'C0' 03114000 MASKA DC X'F0F0F0' 03115000 MASKB DC X'F0F0F0' 03116000 FIELDA DC D'0' 03117000 FIELDB DC D'0' 03118000 BLANKS8 DC X'4040404040404040' BLANKS @VM08604 03119000 FFS8 DC X'FFFFFFFFFFFFFFFF' FFS @VM08604 03120000 TTAB DC C'0123456789ABCDEF' TRANSLATE TABLE 03121000 SPACE 1 03122000 SPEC3330 CCW 07,SEEKA,CC+SILI,6 CYL 0 HEAD 0 03123000 CCW 31,FILEMASK,CC+SILI,1 03124000 CCW 49,SEEKA+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 03125000 CCW 08,*-8,0,0 TIC BACK 03126000 CCW 05,R0STUF,CC+SILI,8 R0 03127000 CCW 49,SEEKA+2,CC+SILI,5 SERCH ID EQUAL RECORD 0 03128000 CCW 08,*-8,0,0 TIC 03129000 CCW 29,R1SPEC,CC+SILI,8+24 IPL RECORD 03130000 CCW 29,R2SPEC,CC+SILI,8 03131000 CCW 29,R3VOL1,CC+SILI,8+84 VOL1 OS LABEL 03132000 CCW 29,R4ALLOC,CC+SILI,8+1024 ALLOCATION MAP 03133000 CCW 29,FORMAT4,CC+SILI,8+140 FORMAT4 RECORD 03134000 CCW 29,FORMAT5,CC+SILI,8+140 FORMAT5 RECORD 03135000 NOP3340 CCW 29,RF33330,CC+SILI,8 ONE PAGE RECORD @VA05293 03136000 CCW 08,VERIFY,0,0 VERIFY WHAT WAS WRITTEN 03137000 SPACE 03138000 DS 0D @V56BDA8 03139000 RDFMT4 CCW 7,SEEKA,CC,6 RD FMT4 AS SPECIFIED IN VTOC @V56BDA8 03140000 CCW 31,FILEMASK,CC,1 SFM @V56BDA8 03141000 CCW 49,VTOCBEG,CC+SILI,5 SRCH ID @V56BDA8 03142000 CCW 8,*-8,0,0 TIC @V56BDA8 03143000 CCW 6,FMT4DATA,SILI,96 READ FMT4 LABEL @V56BDA8 03144000 SPACE 03145000 L1 EQU 1 FOR USE AS SYMBLOIC LENGTH. @V56BDA8 03146000 L4 EQU 4 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 03147000 L8 EQU 8 FOR USE AS SYMBOLIC LENGTH. @V56BDA8 03148000 EJECT 03149000 *********************************************************************** 03150000 * 03151000 * ALTCHK: CHECKS POINTERS IN FLAGGED PRIMARY TRACK AND ALTERNATE 03152000 * TRACK TO SEE THAT EACH POINTS TO THE OTHER. AND RETURNS 03153000 * CCHH ADDRESS OF WHICHEVER WE ARE CURRENTLY NOT AT. 03154000 * 03155000 *********************************************************************** 03156000 * 03157000 * INPUTS: R8 = ADDRESS OF THIS ROUTINE (REQUIRED FOR INITIAL 03158000 * ADDRESSABILITY). 03159000 * R7 = RETURN ADDRESS. 03160000 * OUTPUTS: R1 = -1 IF TRACKS DO NOT POINT TO EACH OTHER CORRECTLY, 03161000 * OTHERWISE... 03162000 * R1 = CCHH ADDRESS OF WHICHEVER OF THE TWO TRACKS WE 03163000 * WERE NOT AT WHEN THE TRACK CONDITION CHECK WAS 03164000 * DETECTED. 03165000 * R0 = 0 IF CCHH IN R1 POINTS TO THE ASSIGNED ALTERNATE. 03166000 * R0 = 1 IF CCHH IN R1 POINTS TO THE DEFECTIVE PRIMARY. 03167000 * 03168000 * OPERATION: TWO I/O OPERATIONS HAVE TO BE SCHEDULED FROM HERE WHICH 03169000 * MEANS THAT TWICE, CONTROL WILL HAVE TO LEAVE THIS 03170000 * SUBROUTINE AND COME BACK IN BEFORE WE CAN RETURN TO 03171000 * OUR CALLER. THIS IS ACCOMPLISHED BY BRANCHING OUT TO 03172000 * 'STIO' TO INITIATE I/O AND BY SETTING A SPECIAL FLAG 03173000 * THAT THE I/O INTERRUPT HANDLER RECOGNIZES AS A SIGNAL 03174000 * TO RE-ENTER THIS ROUTINE. THE I/O HANDLER CHECKS FOR 03175000 * ERRORS BEFORE CHECKING OUR FLAG, SO ERROR RECOVERY 03176000 * CAN BE TRIED ON OUR I/O IF NECESSARY. 03177000 * 03178000 *********************************************************************** 03179000 USING ALTCHK,R8 @V56BDA8 03180000 ALTCHK STM R2,R7,ALTCHKSV @V56BDA8 03181000 LR R6,R8 @V56BDA8 03182000 DROP R8 @V56BDA8 03183000 USING ALTCHK,R6 @V56BDA8 03184000 L R8,=A(SENSCCHH) SUBROUTINE TO BE CALLED. @V56BDA8 03185000 BALR R7,R8 CALL ROUTINE TO RETURN IN R1 THE @V56BDA8 03186000 * CCHH ADDRESS OF TRACK WE ARE CURRENTLY 03187000 * ON. (FROM SENSE DATA, READ AT THE TIME 03188000 * OF THE TRACK CONDITION CHECK.) 03189000 STCM R1,15,CCHHR SAVE CCHH FOR POSSIBLE CALL TO @VMG0004 03190000 * SENSIT2. 03191000 MVI CCHHR+4,X'00' SET R OF CCHHR TO 0 FOR SENSIT2. @VMG0004 03192000 ST R1,CCHHSV SAVE CURRENT TRK FOR COMPARISON @V56BDA8 03193000 * WITH 03194000 * BACKWARD POINTER FURTHER ON. 03195000 STCM R1,15,HAR0SKAD+2 STORE CCHH FOR SEEK CCW TO @V56BDA8 03196000 * ACCESS 03197000 LA R1,READHAR0 ADDR OF CHNL PRG TO READ HA, R0. @V56BDA8 03198000 ST R1,CAW SET FOR SIO. @V56BDA8 03199000 MVI ALTFLAG,HAR0READ FLAG TELLS INTERRUPT HANDLER @V56BDA8 03200000 * THAT ALT TRK RECOVERY IS IN PROGRESS 03201000 * AND THAT CONTROL IS TO BE RETURNED 03202000 * TO THIS ROUTINE. 03203000 LA R1,ALTCHK2 POINT TO GET CONTROL UPON @V56BDA8 03204000 * RETURN HERE AFTER I/O COMPLETES. 03205000 ST R1,CONTINAD SAVE FOR INTERRUPT HANDLER. @V56BDA8 03206000 B STIO2 START CHNL PRG TO READ HA, R0. @VMG0004 03207000 SPACE 03208000 USING ALTCHK2,R6 @V56BDA8 03209000 ALTCHK2 MVC HAFLAGSV(L1),HADATA SAVE FLAG BYTE FROM HA. @V56BDA8 03210000 MVC HAR0SKAD+2(L4),R0DATA USE CCHH POINTER TO OTHER @V56BDA8 03211000 * TRK AS NEXT SEEK ADDR. 03212000 LA R1,ALTCHK3 POINT TO GET CONTROL AFTER IO END@V56BDA8 03213000 ST R1,CONTINAD SAVE FOR INTERRUPT HANDLER. @V56BDA8 03214000 B STIO2 START SAME CHNL PRG TO READ HA, @VMG0004 03215000 * R0, BUT FROM THE OTHER TRACK THIS TIME. 03216000 SPACE 03217000 USING ALTCHK3,R6 @V56BDA8 03218000 ALTCHK3 SR R0,R0 @V56BDA8 03219000 SR R1,R1 0 IN R1. @V56BDA8 03220000 BCTR R1,0 -1 IN R1 IN CASE OF ERROR EXIT. @V56BDA8 03221000 TM HADATA,X'03' TEST TRACK USAGE BITS IN HA FLAG @V56BDA8 03222000 * BYTE (NOTE: REMEMBER THIS FLAG CAN BE 03223000 * FROM EITHER THE PRIMARY OR THE ALTERNATE 03224000 * DEPENDING UPON WHERE WE WERE WHEN THIS 03225000 * ROUTINE WAS CALLED.) 03226000 BNM ALTCHKEX IF NOT MIXED, EXIT WITH ERROR @V56BDA8 03227000 * FLAG IN R1. BOTH BITS 0 OR BOTH BITS 1 03228000 * IS FORBIDDEN. 03229000 CLC CCHHSV(L4),R0DATA DOES 2ND TRK POINT BACK TO 1ST@V56BDA8 03230000 BNE ALTCHKEX NO, EXIT WITH -1 IN R1. @V56BDA8 03231000 * 03232000 * YES, BUT IT STILL MIGHT BE A SINGLE TRK POINTING TO ITSELF. 03233000 * SO CHECK FLAG BYTES, SEE IF ONE AND ONLY ONE OF THEM IS 03234000 * AN ASSIGNED ALTERNATE. 03235000 * 03236000 XC HADATA(L1),HAFLAGSV XC OLD FLAG BYTE INTO NEW @V56BDA8 03237000 * FLAG BYTE. 03238000 TM HADATA,X'01' BIT REMAINING ON IN FLAG BYTE @V56BDA8 03239000 * MEANS ONE AND ONLY ONE WAS ALTERNATE. 03240000 BNO ALTCHKEX ERROR, NEITHER WAS ALTERNATE. @V56BDA8 03241000 ICM R1,15,HAR0SKAD+2 RETURN CCHH OF 2ND TRACK. @V56BDA8 03242000 NI HAFLAGSV,X'01' CLEAR 1ST BYTE OF ALL BUT 'TRACK @V56BDA8 03243000 * USAGE' BIT. 03244000 IC R0,HAFLAGSV 'TRACK USAGE' BIT IN 1ST FLAG @V56BDA8 03245000 * BYTE IS INVERSE OF BIT IN 2ND FLAG BYTE 03246000 * THAT CCHH IN R1 POINTS TO. 03247000 ALTCHKEX MVI ALTFLAG,0 TURN OFF SIGNAL TO INTERRUPT HDLR@V56BDA8 03248000 LM R2,R7,ALTCHKSV @V56BDA8 03249000 BR R7 RETURN @V56BDA8 03250000 DROP R6 @V56BDA8 03251000 *********************************************************************** 03252000 READHAR0 CCW X'07',HAR0SKAD,CC+SILI,6 SEEK @V56BDA8 03253000 CCW X'1A',HADATA,CC+SILI,5 READ HA @V56BDA8 03254000 CCW X'16',R0DATA,SILI,4 READ R0 @V56BDA8 03255000 HAR0SKAD DC XL6'0' 00CCHH SEEK ADDRESS @V56BDA8 03256000 HADATA DS XL5 FLAG BYTE + CCHH READ FROM HA. @V56BDA8 03257000 HAFLAGSV DS XL1 FLAG BYTE FROM 1ST OF 2 READS @V56BDA8 03258000 * SAVED HERE. 03259000 CCHHSV DS XL4 @V56BDA8 03260000 R0DATA DS XL4 CCHH DATA FROM COUNT FLD OF R0. @V56BDA8 03261000 ALTCHKSV DS 6F REGISTER SAVE AREA. @V56BDA8 03262000 EJECT 03263000 *********************************************************************** 03264000 * 03265000 * SENSCCHH: COMPUTES CCHH FROM SENSE DATA READ PREVIOUSLY AND 03266000 * RETURNS IT IN R1. 03267000 * 03268000 *********************************************************************** 03269000 * 03270000 * INPUTS: R8 = ADDRESS OF THIS ROUTINE (REQUIRED FOR INITIAL 03271000 * ADDRESSABILITY). 03272000 * R7 = RETURN ADDRESS. 03273000 * OUTPUTS: R1 = CCHH DATA TAKEN FROM SENSE DATA BUFFER. 03274000 * 03275000 *********************************************************************** 03276000 USING SENSCCHH,R8 @V56BDA8 03277000 SENSCCHH IC R1,SENSE+6 @V56BDA8 03278000 SRL R1,5 CYL BITS 512, 256 RIGHT JUSTIFIED@V56BDA8 03279000 STC R1,SENSWORK @V56BDA8 03280000 NI SENSWORK,X'03' CLEAR ALL BUT BITS 512, 256. @V56BDA8 03281000 MVC SENSWORK+1(L1),SENSE+5 LOW ORDER CYL ADDR. @V56BDA8 03282000 MVN SENSWORK+3(L1),SENSE+6 HEAD ADDRESS. @V56BDA8 03283000 L R1,SENSWORK @V56BDA8 03284000 BR R7 @V56BDA8 03285000 DROP R8 @V56BDA8 03286000 *********************************************************************** 03287000 SENSWORK DC F'0' @V56BDA8 03288000 SPACE 6 03289000 LTORG @V56BDA8 03290000 EJECT 03291000 COPY EQU 03292000 PSA 03293000 END DMKFMT 03294000