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