ibm:vm370-lib:cp:dmkssp.assemble_src
Table of Contents
DMKSSP Source
References
- Fixes Applied : 2
- This Source Date : Monday, February 26, 1979
- Last Fix ID : [HRC106DK]
Source Listing
- DMKSSP.ASSEMBLE.txt
- SSP TITLE 'DMKSSP (CP) VM/370 - RELEASE 6' 00001000
- *. 00002000
- * MODULE NAME - 00003000
- * DMKSSP 00004000
- * 00005000
- * FUNCTION - 00006000
- * STARTER SYSTEM MODULE. THIS MODULE WILL BUILD RCHBOLKS,RCUBLOK 00007000
- * AND RDEVBLOKS NECESSARY TO CONFIGURATE A MIMNIMUM CP SYSTEM. 00008000
- * FROM THE STARTER SYSTEM A REAL CP SYSTEM WILL BE CONFIGURATED 00009000
- * BASED ON THE INSTALLATION'S REALIO DECK. 00010000
- * 00011000
- * ATTRIBUTES - 00012000
- * 00013000
- * NON-REENTRANT,NON-RESIDENT 00014000
- * DMKSSP01 ENTERED AS A RESULT OF AN IPL OPERATION. 00015000
- * 00016000
- * ENTRY POINTS - 00017000
- * DMKSSP01 - TO CONSTRUCT THE I/O BLOCKS FOR DMKIOS AND OTHER 00018000
- * SYSTEM MODULES FOR A MINIMUM SYSTEM'S CONFIGURATION 00019000
- * 00020000
- * ENTRY CONDITIONS - 00021000
- * 00022000
- * DMKSAV - GIVES CONTROL TO DMKSSP01 00023000
- * IPL DEVICE ADDRESS MUST BE STORED AT LOC X'002' 00024000
- * 00025000
- * 00026000
- * EXIT CONDITIONS - 00027000
- * 00028000
- * DMKCPINT - TO INITALIZE THE REMAINDER OF THE SYSTEM. 00029000
- * REGISTER 10 - MUST HAVE THE IPL DEVICE ADDRESS 00030000
- * 00031000
- * 00032000
- * CALLS TO OTHER ROUTINES - 00033000
- * 00034000
- * DMKCVTHB - TO CONVERT THE DEVICE ADDRESS TO BINARY. 00035000
- * DMKCVTBH - TO CONVERT THE DEVICE ADDRESS TO PRINTABLE HEX 00036000
- * CHARACTERS. 00037000
- * DMKCPINT - TO CONTINUE SYSTEMS INITALIZATION. 00038000
- * 00039000
- * 00040000
- * ENTERNAL REFERENCES - 00041000
- * 00042000
- * DMKRIODV - ANCHOR TO THE FIRST REAL DEVICE BLOCK. 00043000
- * DMKRIOCU - ANCHOR TO THE FIRST REAL CONTROL UNIT BLOCK. 00044000
- * DMKRIOCH - ANCHOR TO THE FIRST REAL CHANNEL BLOCK. 00045000
- * DMKRIOCN - ADDRESS OF THE SYSTEMS CONSOLE DEVICE. 00046000
- * DMKRIOPR - ADDRESS OF THE SYSTEMS PRINTER DEVICE. 00047000
- * DMKRIOPU - ADDRESS OF THE SYSTEMS PUNCH DEVICE. 00048000
- * DMKRIORD - ADDRESS OF SYSTEMS READER DEVICE. 00049000
- * DMKSYSNU - DISK ADDRESS ON NUCELUS. 00050000
- * DMKRIO - ADDRESS OF REAL I/O CONTROL BLOCKS. 00051000
- * 00052000
- * 00053000
- * TABLES / WORK AREAS - 00054000
- * 00055000
- * NONE - 00056000
- * 00057000
- * 00058000
- * REGISTER USAGE - 00059000
- * 00060000
- * GPR1 = PARAMETER REGISTER. 00061000
- * GPR2 = PARAMETER REGISTER. 00062000
- * GPR5 = GENERAL BAL REGISTER. 00063000
- * GPR6 = ADDRESS OF RCHBLOK. 00064000
- * GPR7 = ADDRESS OF RCUBLOK. 00065000
- * GPR8 = ADDRESS OF RDEVBLOK. 00066000
- * GPR11 = ADDRESS OF DMKSSP (SECOND BASE REGISTER) 00067000
- * GPR12 = ADDRESS OF DMKSSP (BASE REGISTER). 00068000
- * 00069000
- * 00070000
- * OPERATION - 00071000
- * 00072000
- * THE PURPOSE OF THIS ROUTINE IS TO BUILD THE I/O BLOCKS 00073000
- * SO THAT A SYSTEMS GENERATION CAN BE PERFORMED DESCRIBING 00074000
- * THE INSTALLATIONS REQUIREMENTS. DMKSSP IS A BOOT STRAP 00075000
- * MODULE TO ALLOW ANY SYSTEM TO BE BUILT. REAL I/O BLOCKS 00076000
- * ARE BUILT, BUT NOT IN THE STANDARD MANNER. RATHER THEY ARE 00077000
- * BUILT DYNAMICLLY OVERLAYING THE REALIO MODULE THAT 00078000
- * WERE SHIPPED WITH THE STARTER SYSTEM. HOWEVER, THE SYSTEM WILL 00079000
- * FUNCTION THE SAME WAY AS IF THEY WERE BUILT FROM A REALIO 00080000
- * MACRO ASSEMBLY. 00081000
- * 00082000
- * 00083000
- * MESSAGES - 00084000
- * 00085000
- * MESSAGES ARE IN THE FORM OF QUESTAINS PROMPTING THE OPERATOR 00086000
- * TO ENTER THE DEVICE ADDRESS AND TYPE OF DEVICE. AT THE 00087000
- * COMPLETION OF THE PROMPTING ROUTINE A MESSAGE WILL BE 00088000
- * ISSUED STATING THAT " SYSTEMS DEFINITION IS COMPLETE ". 00089000
- * 00090000
- * 00091000
- * THE FOLLOWING MESSAGES ARE ISSUED: 00092000
- * 00093000
- * ENTER PRINTER ADDRESS (CUU): 00094000
- * ENTER DEVICE TYPE (1403,1443,3211,3203) : 00095000
- * ENTER PUNCH ADDRESS (CUU): 00096000
- * ENTER DEVICE TYPE (2540P,3525): 00097000
- * ENTER READER ADDRESS (CUU): 00098000
- * ENTER DEVICE TYPE (2501,2540R,3505): 00099000
- * ENTER ADDRESS WHERE PID TAPE IS MOUNTED (CUU): 00100000
- * ENTER DEVICE TYPE (CUU): 00101000
- * ENTER ADDRESS WHERE SCRATCH TAPE IS MOUNTED (CUU): 00102000
- * ENTER DEVICE TYPE (2401,2415,2420,3420): 00103000
- * ENTER DEVICE ADDRESS WHERE SYSTEM'S RESIDENCE WILL BE BUILT 00104000
- * ENTER DEVICE TYPE (2319,2314,3330,3340,3350,3375,3380,2305): 00105100
- * *** DO YOU WISH TO RE-DEFINE YOU SYSTEM***(YES,NO): 00106000
- * ***ERROR*** DEVICE HAS BEEN ALREADY ALLOCATED 00107000
- * *** SYSTEM DEFINITION COMPLETE *** 00108000
- * ARE THE ABOVE ENTRIES CORRECT (YES,NO): 00109000
- * 00110000
- *. 00111000
- ********************************************************************* 00112000
- EJECT 00113000
- DMKSSP CSECT 00114000
- EXTRN DMKCVTHB,DMKCPINT,DMKCVTBH 00115000
- EXTRN DMKRIODV,DMKRIOCU,DMKRIOCH,DMKRIOCN,DMKRIOPR,DMKRIOPU 00116000
- EXTRN DMKRIO,DMKSYSNU 00117000
- EXTRN DMKRIORD 00118000
- EXTRN DMKSYSTP @V407466 00118100
- ENTRY DMKSSP01 @V200731 00119000
- USING DMKSSP01+2,R12 SET UP ADDRESSABILITY FOR DMKSSP @V200731 00120000
- USING DMKSSP01+4096,R11 SET UP SECOND BASE REGISTER @V200731 00121000
- DMKSSP01 EQU * @V200731 00122000
- BALR R12,R0 BASE OF DMKSSP @V200731 00123000
- LA R12,0(,R12) CLEAR HIGH ORDER BYTE @V200731 00124000
- LA R11,4094(,R12) GET THE SECOND BASE ADDRESS @V200731 00125000
- USING SAVEAREA,R13 00126000
- USING PSA,R0 00127000
- SSM DISABLE DISABLE ALL INTERRUPTS @V56BDA8 00127500
- MVC IONPSW,IOPSW SET UP NEW I/O PSW @VM08630 00128000
- MVC MCNPSW,MCPSW SET UP NEW MACHINE CHECK PSW @VM08630 00129000
- MVC PRNPSW,PCPSW SET UP NEW PROGRAM CHECK PSW @VM08630 00130000
- LH R3,2 SYSRES DEVICE ADDRESS @V407466 00131100
- STH R3,RESTBL SAVE FOR LATER @V407466 00131200
- MVI RESTBL+2,CLASDASD MOVE DASD CLASS TO TABLE @V407466 00131300
- L R3,=A(DMKSYSTP) PREPARE TO OBTAIN DEVICE @V407466 00131400
- MVC RESTBL+3(1),1(R3) TYPE CODE FOR TABLE @V407466 00131500
- STIDP CPUID GET CPU MODEL NUMBER @VA03010 00132000
- CLI CPUVERSN,X'FF' IS THIS A VIRTUAL MACHINE ? @VA03010 00133000
- BNE REALCPU NO, GO SET UP ASSUMED CONSOLE @VA03010 00134000
- MVI CONTBL+1,X'09' SET CONSOLE ADDRESS TO (009) @VM08630 00135000
- MVI CONTBL+2,CLASTERM SET CLASS TO TERMINAL @VM08630 00136000
- MVI CONTBL+3,TYP3210 SET TYPE TO 3210/3215 @VM08630 00137000
- B MSGHAND ALL SET FOR VIRTUAL MACHINE @VA03010 00138000
- REALCPU MVI CONTBL+2,CLASGRAF SET CLASS TO GRAPHICS @VA03010 00139000
- MVI CONTBL+3,TYP3066 SET TYPE TO 3066 @VA03010 00140000
- MVI PARM,PARMGRP+PARMCLE SET IND. FOR GRAPHICS @VA03010 00141000
- MSGHAND EQU * @VM08936 00142000
- LA R9,LNGMSG GET ADDRESS OF SYSTEM HEADER @VM08936 00143000
- LA R5,CONINT SPECIAL I/O ERROR ROUTINE FOR @V56BDA8 00143200
- * 1ST I/O TO CONSOLE. IT HAS TO DETERMINE 00143400
- * THE UNIT ADDRESS OF THE CONSOLE. 00143600
- ST R5,IOBERROR PUT ERROR ROUTINE ADDR IN IOB. @V56BDA8 00143800
- BAL R5,TYPEMSG GO PRINT THE MESSAGE @VM08936 00144000
- LA R5,ERRHAND SWITCH TO NORMAL ERROR HANDLER. @V56BDA8 00145000
- ST R5,IOBERROR SAVE ADDRESS OF ERROR HANDLER. @V56BDA8 00146000
- L R9,=A(DMKRIOCN) GET POINTER TO CONSOLE ADDRESS @VM08936 00147000
- L R9,0(,R9) GET CONSOLE ADDRESS @VM08936 00148000
- N R9,XRIGHT16 IS THERE A CONSOLE ADDRESS @VM08936 00149000
- BZ MAINLINE NO, GO BUILD REAL I/O DECK @VM08936 00150000
- REDEFINE EQU * @VM08630 00151000
- LA R9,LNGDEF GET ADDRESS OF SYSTEM DEFINITION @VM08630 00152000
- BAL R5,TYPEMSG GO PRINT THE MESSAGE @VM08630 00153000
- CLC INPUT(3),=C'NO ' DOES USER WANT A COMPLETE @V200731 00154000
- * SYSTEM DEFINITION 00155000
- BE XFRINIT NO, GO TO DMKCPI @V200731 00156000
- CLC INPUT(4),=C'YES ' DOES USER WANT A COMPLETE @VM08630 00157000
- * SYSTEM DEFINITION 00158000
- BNE REDEFINE NO, GO ISSUE MESSAGE AGAIN @V200731 00159000
- SPACE 1 00160000
- MAINLINE LM R6,R8,DEVBLKS LOAD R6-8 WITH ADDR. OF I/O BLOCKS. 00161000
- USING RCHBLOK,R6 RCHBLOK IN R6 00162000
- USING RCUBLOK,R7 RCUBLOK IN R7 00163000
- USING RDEVBLOK,R8 RDEVBLOK IN R8 00164000
- ST R7,ALLOCU SAVE STARTING ADDR. OF FIRST RCUBLOK. 00165000
- ST R8,ALLODEV SAVE STARTING ADDR. OF FIRST RDEVBLOK. 00166000
- CLRCU CR R7,R6 ALL C.U.'S CLEARED YET ? 00167000
- BE CLRCHAN YES., BRANCH 00168000
- MVC RCUDVTBL(16*2),FFS32 CLEAR DEVICE INDEX TABLE @V200731 00169000
- MVC RCUADD,FFS32 OVERLAY CONTROL UNIT ADDRESS @V200731 00170000
- MVI RCUTYPE,00 ZERO OUT C.U. TYPE 00171000
- SR R0,R0 00172000
- LA R1,16 LOAD R1 TO CLEAR 16 CHANNELS @V200735 00173000
- ST R0,RCUCHA ZERO CHANNEL PATH FOR C.U. "A" . 00174000
- ST R0,RCUCHB ZERO CHANNEL PATH FOR C.U. "B" . 00175000
- ST R0,RCUCHC FOR ALTERNATE PATH @V407466 00175100
- ST R0,RCUCHD FOR ALTERNATE PATH @V407466 00175200
- LA R7,RCUSIZE*8(,R7) BUMP TO GET NEXT C.U. 00176000
- B CLRCU CLEAR REMAINING C.U. 00177000
- SPACE 1 00178000
- CLRCHAN EQU * @V200731 00179000
- MVC RCHCUTBL(32*2),FFS32 CLEAR ALL CONTROL UNIT PTRS@V200731 00180000
- LA R6,RCHSIZE*8(,R6) INCREMENT TO NEXT RCHBLOK. 00181000
- BCT R1,CLRCHAN CONTINUE TO CLEAR ALL RCHBLOKS. 00182000
- SPACE 1 00187000
- SETCONS LH R1,CONTBL LOAD R1 W/ CONS. ADDR. @V200735 00188000
- SR R2,R2 CLEAR REGISTER 2 @VM08630 00189000
- ICM R2,3,CONTBL+2 GET CLASS AND TYPE FOR CONS. @VM08630 00190000
- BAL R5,SCAN BUILD RCHBLOK,RCUBLOK & RDEVBLOK @VM08630 00191000
- B DIEHERE BAD RETURN - LOAD WAIT STATE @VM08630 00192000
- LH R1,RESTBL GET SYSTEM RESID. DEVICE ADDR. @VM08630 00193000
- ICM R2,3,RESTBL+2 GET CLASS AND TYPE FOR DEVICE @VM08630 00194000
- BAL R5,SCAN BUILD RCHBLOK,RCUBLOK & RDEVBLOK @VM08630 00195000
- B DIEHERE BAD RETURN - LOAD WAIT STATE @VM08630 00196000
- * 00197000
- SPACE 1 00198000
- * BEGINNING OF PROMPTING ROUTINE********* 00199000
- PRTLAB LA R9,PRINTER OPERATOR MUST RESPOND TO @V200735 00200000
- * PRINTER QUEST. 00201000
- BAL R5,READADDR GO GET PRINTER ADDRESS AND TYPE. 00202000
- BAL R5,SCAN LET SCAN BUILD THE BLOCKS. 00203000
- B PRTLAB ERROR IF SCAN RETURNS HERE. 00204000
- CALL DMKCVTBH 00205000
- STCM R1,7,PRTLINE SAVE PRINTER ADDRESS. 00206000
- PCHLAB LA R9,PUNCH OPERATOR MUST RESPOND TO PUNCH @V200735 00207000
- * QUEST. 00208000
- BAL R5,READADDR GO GET PUNCH ADDRESS AND TYPE. 00209000
- BAL R5,SCAN LET SCAN BUILD THE BLOCKS. 00210000
- B PCHLAB ERROR IF SCAN RETURNS HERE. 00211000
- CALL DMKCVTBH 00212000
- STCM R1,7,PCHLINE SAVE PUNCH ADDRESS. 00213000
- RDRLAB LA R9,READER OPERATOR MUST RESPOND TO READER @V200735 00214000
- * QUEST. 00215000
- BAL R5,READADDR GET READER ADDRESS AND TYPE. 00216000
- BAL R5,SCAN LET SCAN BUILD THE BLOCKS 00217000
- B RDRLAB ERROR IF SCAN RETURNS HERE. 00218000
- CALL DMKCVTBH 00219000
- STCM R1,7,RDRLINE SAVE READER ADDRESS. 00220000
- PIDLAB LA R9,PIDTAPE OPERATOR MUST MAKE REPLY. @V200735 00221000
- BAL R5,READADDR GO GET ADDRESS AND TYPE OF TAPE DR. 00222000
- BAL R5,SCAN GO TO SCAN TO BUILD BLOCKS. 00223000
- B PIDLAB ERROR IF SCAN RETURNS HERE. 00224000
- CALL DMKCVTBH 00225000
- STCM R1,7,PIDLINE SAVE PID TAPE ADDRESS. 00226000
- BKUPLAB LA R9,BKUPTAPE OPERATOR MUST MAKE REPLY @V200735 00227000
- BAL R5,READADDR GET ADDR. AND TYPE OF SCRATCH TAPE. 00228000
- BAL R5,SCAN LET SCAN BUILD THE BLOCKS. 00229000
- B BKUPLAB ERROR IF SCAN RETURNS HERE. 00230000
- CALL DMKCVTBH 00231000
- STCM R1,7,TAPLINE SAVE ADDRESS OF BACKUP TAPE. 00232000
- SYSLAB LA R9,SYSRES INFO. FOR NEW SYSTEM RESIDENCE @V200735 00233000
- BAL R5,READADDR GET ADDRESS AND TYPE OF NEW SYS-RES.. 00234000
- BAL R5,SCAN GO TO SCAN TO BUILD THE BLOCKS. 00235000
- B SYSLAB ERROR IF SCAN RETURNS HERE. 00236000
- CALL DMKCVTBH 00237000
- STCM R1,7,RESLINE SAVE ADDRESS OF NEW SYS-RES. 00238000
- *WORKLAB LA R9,WORKPACK TABLE FOR A SCRATCH PACK 00239000
- * BAL R5,READADDR GET ADDRESS AND TYPE OF SCRATCH PACK. 00240000
- * BAL R5,SCAN LET SCAN BUILD BLOCKS. 00241000
- * B WORKLAB ERROR IF SCAN RETURNS HERE. 00242000
- * CALL DMKCVTBH 00243000
- * STCM R1,7,PACKLINE SAVE ADDRESS OF SCRATCH PACK. 00244000
- WORKLAB EQU * **MAY REMOVE LATER ** 00245000
- LA R9,BLKLEN GET ADDR. OF BLANK LINE. @V200735 00246000
- BAL R5,TYPEMSG PRINT IT. 00247000
- LA R9,COMPLEN GET ADDR. OF DEFINATION COMPLETED@V200735 00248000
- BAL R5,TYPEMSG PRINT IT. 00249000
- LA R9,BLKLEN GET ADDR. OF BLANK LINE @V200735 00250000
- BAL R5,TYPEMSG PRINT IT. 00251000
- LA R9,PRTLEN GET ADDR. OF PRINTER. @V200735 00252000
- BAL R5,TYPEMSG PRINT IT. 00253000
- LA R9,PCHLEN GET ADDR. OF PUNCH. @V200735 00254000
- BAL R5,TYPEMSG PRINT IT. 00255000
- LA R9,RDRLEN GET ADDR. OF READER. @V200735 00256000
- BAL R5,TYPEMSG PRINT IT. 00257000
- LA R9,PIDLEN GET ADDR. OF PID TAPE. @V200735 00258000
- BAL R5,TYPEMSG PRINT IT. 00259000
- LA R9,TAPLEN GET ADDR. OF BACKUP TAPE. @V200735 00260000
- BAL R5,TYPEMSG PRINT IT. 00261000
- LA R9,RESLEN GET ADDR. OF NEW SYS-RES. @V200735 00262000
- BAL R5,TYPEMSG PRINT IT. 00263000
- LA R9,PACKLEN GET ADDR. OF WORK PACK. @V200735 00264000
- * BAL R5,TYPEMSG PRINT IT. 00265000
- SPACE 1 00266000
- DEFLAB LA R9,LASTLEN ASK OPERATOR IF ANY CHANGES @V200735 00267000
- * NECESSARY 00268000
- BAL R5,TYPEMSG 00269000
- CLC INPUT(4),=C'YES ' DID HE REPLY YES ? 00270000
- BE XFRINIT 00271000
- CLC INPUT(3),=C'NO ' HE MAY WANT TO REDIFINE AGAIN. 00272000
- BE MAINLINE YES., HE DOES. 00273000
- B DEFLAB NO, ANSWERED WRONG @VM08630 00274000
- SPACE 2 00275000
- ********************************************************************** 00276000
- * INTERRUPT HANDLER TO DETERMINE THE CONSOLE DEVICE 00277000
- * ADDRESS ON THIS SYSTEM. 00278000
- ********************************************************************** 00279000
- SPACE 1 00280000
- CONINT EQU * @VM08630 00281000
- NI IOBFLAGS,255-IOBFERP ERR ROUTINE IS RESPONSIBLE@V56BDA8 00281500
- * FOR TURNING THIS OFF. 00282000
- TM IOBFLAGS,IOBFCC3 IS THE UNIT NOT OPERATIONAL? @V56BDA8 00282500
- BO CONPARM YES, GO TEST FOR CORRECT DEVICE @VM08630 00283000
- TM IOBCSW+4,UC IS THIS A UNIT CHECK? @V56BDA8 00284000
- BZ ERRHAND NO, GO TO ERROR HANDLER @VM08630 00285000
- CONPARM EQU * @VM08630 00286000
- TM PARM,PARM321 IS THIS A 3215/3210/1052 @VM08630 00288000
- BO TESTGRAP NOT 3210, TRY GRAPHICS @VA03010 00289000
- CLI CONTBL+3,TYP3278 TRIED 3278 YET? @V60A6B6 00290000
- BE TEST3210 TRY IT AS A 3210 NOW @V60A6B6 00290300
- CLI CONTBL+3,TYP3277 TRIED 3277 YET? @VA03010 00290600
- BE TEST3278 YES, TRY IT AS 3278 @V60A6B6 00291000
- MVI CONTBL+3,TYP3277 SET TYPE TO 3277 @V60A6B6 00291080
- OI PARM,PARM327 INDICATE 3277 @V60A6B6 00291160
- ********************************************************************** 00291240
- * THE FOLLOWING WILL ENSURE THAT THE LINE DISPLACEMENT FOR THE DATA * 00291320
- * STREAMS FOR THE 3277 WILL BE CORRECT. THIS IS A 24 LINE SCREEN. * 00291400
- ********************************************************************** 00291480
- MVC LAB3270A+2(2),ADDR1 @V60A6B6 00291560
- MVC LAB3270A+8(2),ADDR2 @V60A6B6 00291640
- MVC LAB3270B+2(2),ADDR1 @V60A6B6 00291720
- MVC LAB3270B+8(2),ADDR2 @V60A6B6 00291800
- MVC LAB3270C+2(2),ADDR2 @V60A6B6 00291880
- MVC LAB3270D+2(2),ADDR1 @V60A6B6 00291960
- MVC LAB3270E+5(2),ADDR1 @V60A6B6 00292040
- MVC LAB3270E+12(2),ADDR2 @V60A6B6 00292120
- MVC ADDR5,ADDR6 ADDR TO CHECK FOR CURSOR MOVE @V60A6B6 00292200
- MVC MAXLEN,LEN3270 @V60A6B6 00292280
- B MSGHAND @V60A6B6 00292360
- TEST3278 EQU * @V60A6B6 00292440
- CLC LAB3270A+2(2),ADDR3 HAVE WE BEEN HERE YET? @V60A6B6 00292520
- BE TEST3210 YES NOW TRY IT AS 3210 @V60A6B6 00292600
- MVI CONTBL+3,TYP3278 THIS IS THE 3278 @V60A6B6 00292640
- ********************************************************************** 00292680
- * THE FOLLOWING WILL ENSURE THAT THE LINE DISPLACEMENT FOR THE DATA * 00292760
- * STREAMS FOR THE 3278 WILL BE CORRECT. THIS IS A 20 LINE SCREEN. * 00292840
- ********************************************************************** 00292920
- MVC LAB3270A+2(2),ADDR3 @V60A6B6 00293000
- MVC LAB3270A+8(2),ADDR4 @V60A6B6 00293080
- MVC LAB3270B+2(2),ADDR3 @V60A6B6 00293160
- MVC LAB3270B+8(2),ADDR4 @V60A6B6 00293240
- MVC LAB3270C+2(2),ADDR4 @V60A6B6 00293320
- MVC LAB3270D+2(2),ADDR3 @V60A6B6 00293400
- MVC LAB3270E+5(2),ADDR3 @V60A6B6 00293480
- MVC LAB3270E+12(2),ADDR4 @V60A6B6 00293560
- MVC ADDR5,ADDR7 ADDR TO CHECK FOR CURSOR MOVE @V60A6B6 00293640
- MVC MAXLEN,LEN3278 @V60A6B6 00293720
- B MSGHAND TRY THIS COMBO @VA03010 00294000
- TESTGRAP EQU * @VA03010 00295000
- CLI CONTBL+1,X'1F' TRIED X'01F' YET? @VA03010 00296000
- BE SSPLPSW YES, GO WAIT FOR INTERRUPT @VA03010 00297000
- MVI CONTBL+1,X'1F' SET ADDRESS TO X'01F' @VA03010 00298000
- MVI CONTBL+2,CLASGRAF SET CLASS TO GRAPHICS @VA03010 00299000
- MVI CONTBL+3,TYP3066 SET TYPE TO 3066 @VA03010 00300000
- MVI PARM,PARMGRP+PARMCLE RESET IND. FOR GRAPHICS @VA03010 00301000
- B MSGHAND TRY IT THIS WAY @VA03010 00302000
- TEST3210 EQU * @VA03010 00303000
- MVI CONTBL+2,CLASTERM SET CLASS TO TERM @VA03010 00304000
- MVI CONTBL+3,TYP3210 SET TYPE TO 3210/3215 @VA03010 00305000
- MVI PARM,PARM321 RESET IND. FOR TERM @VA03010 00306000
- B MSGHAND TRY THIS COMBO @VA03010 00307000
- SSPLPSW EQU * @VA03010 00308000
- MVI CONTBL+2,CLASGRAF SET CLASS FOR GRAPHICS @VA03010 00309000
- MVI CONTBL+3,TYP3066 SET TYPE FOR 3066 @VA03010 00310000
- MVI PARM,PARMGRP+PARMCLE RESET IND. FOR GRAPHICS @VA03010 00311000
- L R0,IOBERROR SAVE ERROR ROUTINE ADDR IN R0. @V56BDA8 00311800
- SR R1,R1 ZERO... @V56BDA8 00312600
- ST R1,IOBERROR INDICATES NO ERROR ROUTINE. @V56BDA8 00313400
- BAL R14,WAITANY WAIT FOR INTERRUPT (TO IDENTIFY @V56BDA8 00314200
- * CONSOLE), THEN RETURN HERE. 00315000
- ST R0,IOBERROR RESTORE ADDR OF ERROR ROUTINE. @V56BDA8 00315800
- MVC CONTBL(2),IOOPSW+2 GET THE DEVICE ADDRESS @VM08630 00317000
- B MSGHAND GO TRY THIS ADDRESS @VM08936 00318000
- SPACE 2 00319000
- ********************************************************************** 00320000
- * ON ENTRY REGISTER 9 CONTAINS ADDRESS OF ARGURMENT LIST 00321000
- ********************************************************************** 00322000
- SPACE 1 00323000
- READADDR EQU * @VM08630 00324000
- SLR R2,R2 CLEAR LENGTH REGISTER @V200731 00325000
- IC R2,0(,R9) GET LENGTH OF LINE TO OUTPUT @V200731 00326000
- LA R4,1(,R9) GET THE DATA ADDRESS @V200731 00327000
- OI PARM,PARMNAUT INDICATE NO CARRIAGE RETURN @V200731 00328000
- BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00329000
- MVC INPUT,SPACES CLEAR INPUT AREA TO BLANKS @V200735 00330000
- LA R4,INPUT ADDRESS OF INPUT DATA FIELD @V200731 00331000
- LA R2,L'INPUT NUMBER OF BYTES ALLOWED TO READ @V200731 00332000
- OI PARM,PARMREA SET THE READ INDICATOR @VM08630 00333000
- BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00334000
- OC INPUT,SPACES TRANSLATE TO UPPERCASE @V200731 00335000
- CLI INPUT+3,X'40' DID OPERATOR TYPE MORE THAN 3 CHAR'S. 00336000
- BNE READADDR YES., RE-ISSUE PRINT LINE. 00337000
- LA R0,3 ONLY CHECK FOR 3 CHAR. 00338000
- LTR R0,R0 FORCE CONDITION CODE TO NON-ZERO. 00339000
- LA R1,INPUT SET R1 TO POINT TO INPUT LINE. 00340000
- CALL DMKCVTHB CALL CONVERT TO TRANS THIS DATA. 00341000
- BC 7,READADDR IF CONVERT HAS ERROR RE-ISSUE LINE. 00342000
- C R1,F4096 ADDR. > THAN X'FFF' @V200735 00343000
- BH READADDR YES., BRANCH 00344000
- LR R13,R1 SAVE DEVICE ADDRESS IN GPR-13 @V200735 00345000
- READTYPE SLR R3,R3 CLEAR @V200735 00346000
- IC R3,0(,R9) GET LEMGTH OF 2'ND OUTPUT LINE @V200735 00347000
- ALR R3,R9 ADD TO IT THE BEGINNING OF PERM @V200735 00348000
- * LIST 00349000
- LA R3,1(,R3) BYPASS BYTE THAT REPRESENTS @V200735 00350000
- * LENGTH 00351000
- LR R9,R3 NOW SAVE NEWLY DEVELOPED ADDRESS @V200735 00352000
- SLR R2,R2 CLEAR LENGTH REGISTER @V200731 00353000
- SIO2 EQU * @V200731 00354000
- IC R2,0(,R9) GET LENGTH OF 2'ND LINE OF OUTPUT@V200731 00355000
- LA R4,1(,R9) ADDRESS OF OUTPUT LINE @V200731 00356000
- OI PARM,PARMNAUT INDICATE NO CARRIAGE RETURN @V200731 00357000
- BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00358000
- MVC INPUT,SPACES CLEAR INPUT AREA TO BLANKS @V200735 00359000
- LA R2,L'INPUT LENGTH OF MAXIMUM BYTE COUNT @V200731 00360000
- LA R4,INPUT GET DATA ADDRESS OF INPUT LINE @V200731 00361000
- OI PARM,PARMREA SET THE READ INDICATOR @VM08630 00362000
- BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00363000
- SPACE 2 00364000
- *********************************************************************** 00365000
- ** CHECK FOR PROPER DEVICE TYPE BEFORE RETURNING TO MAIN LINE 00366000
- ** CODE. 00367000
- *********************************************************************** 00368000
- SPACE 1 00369000
- SR R3,R3 CLEAR REGISTER 3 @VM08630 00370000
- IC R3,0(,R9) FIND END OF PRINTED DATA @VM08630 00371000
- ALR R3,R9 MUST ADD BASE ADDRESS TO LENGTH @VM08630 00372000
- LA R3,1(,R3) BYPASS LENGTH FIELD @VM08630 00373000
- OC INPUT,SPACES TRANSLATE TO UPPERCASE @VM08630 00374000
- TRYTYPE EQU * @VM08630 00375000
- CLC 0(5,R3),INPUT DOES RESPONE MATCH LIST ARGURMENT@VM08630 00376000
- BNE CHKTYPE NO, GO CHECK FOR END OF LIST @VM08630 00377000
- CLI 4(R3),X'40' IS THIS A BLANK FIELD ? @VM08630 00378000
- BE GOTYPE YES, GO GET DEV. TYPE AND CLASS @VM08630 00379000
- CLI INPUT+5,X'40' IS THIS A BLANK FIELD ? @VM08630 00380000
- BNE CHKTYPE NO, GO CHECK FOR END OF LIST @VM08630 00381000
- GOTYPE EQU * @VM08630 00382000
- LH R2,5(,R3) GET DEVICE TYPE AND CLASS @VM08630 00383000
- LR R1,R13 GET THE DEVICE ADDRESS @VM08630 00384000
- BR R5 RETURN TO INLINE CODE @VM08630 00385000
- CHKTYPE EQU * @VM08630 00386000
- CLC 0(5,R3),FFS32 END OF LIST FOR DEVICE TYPE @VM08630 00387000
- BE SIO2 YES, GO PRINT MESSAGE AGAIN @VM08630 00388000
- LA R3,7(,R3) GET ADDR. OF NEXT DEVICE TYPE @VM08630 00389000
- B TRYTYPE GO CHECK NEXT DEVICE TYPE @VM08630 00390000
- EJECT 00391000
- * THE SCAN ROUTINE IS USED TO FIND OR BUILD CONTROL BLOCKS 00392000
- * NECESSARY FOR "IOS" TO OPERATE ON THE STARTER SYSTEM. 00393000
- * THE FOLLOWING APPLIES TO THIS ROUTINE. 00394000
- * 00395000
- * 1. LOCATE A RCHBLOK. 00396000
- * 2. IF A RCUBLOK IS ALREADY ALLOCATED FIND THE INDEX POINTER 00397000
- * TO THE RDEVBLOK. IF A RDEVBLOK ALREADY EXIST'S ISSUE AN 00398000
- * ERROR MESSAGE TO THE OPERATOR THAT HE HAS GIVEN US 00399000
- * THIS ADDRESS BEFORE. OTHERWISE GET THE NEXT AVAILABLE 00400000
- * RDEVBLOK AND STORE ITS ADDRESS DISPLACEMENT INTO 00401000
- * RCUBLOK. 00402000
- * 3. IF A RCUBLOK IS NOT ALLOCATED IN THE RCHBLOK GET 00403000
- * THE NEXT AVAILABLE RCUBLOK AND CHAIN IT TO A RCHBLOK, 00404000
- * ALSO LOCATE THE NEXT RDEVBLOK AND CHAIN IT INTO THE 00405000
- * RCUBLOK THAT WAS JUST ALLOCATED. 00406000
- * 00407000
- * 00408000
- SCAN EQU * @V200731 00409000
- LM R7,R8,FFS32 NULL R7 - R8 BEFORE SCAN TEST @V200731 00410000
- LA R6,X'F00' ISOLATE THE CHANNEL BITS 00411000
- NR R6,R1 FROM THE DEVICE-ADDRESS 00412000
- SRL R6,7 CHANNEL ADDRESS * 2 00413000
- A R6,ARIOCT ADD CHANNEL TABLE ADDRESS 00414000
- LH R6,0(,R6) LOAD RCHBLOK INDEX 00415000
- LTR R6,R6 DOES CHANNEL EXIST ? 00416000
- BM DIEHERE DIE IF CHANNEL NOT FOUND @V200735 00417000
- A R6,ARIOCH COMPUTE RCHBLOK ADDRESS 00418000
- LA R7,X'0F8' ISOLATE THE CONTROL-UNIT BITS 00419000
- NR R7,R1 FROM THE DEVICE-ADDRESS 00420000
- SRL R7,2 CU ADDRESS * 2 00421000
- LH R7,RCHCUTBL(R7) LOAD CONTROL UNIT INDEX 00422000
- LTR R7,R7 DOES CONTROL UNIT EXIST ? 00423000
- BM TESTRTN NO - ONE WILL BE BUILD 00424000
- A R7,ARIOCU COMPUTE RCUBLOK ADDRESS 00425000
- LA R8,X'00F' ISOLATE THE DEVICE BITS 00426000
- NR R8,R1 FROM THE DEVICE-ADDRESS 00427000
- AR R8,R8 DEVICE ADDRESS * 2 00428000
- LH R8,RCUDVTBL(R8) LOAD RDEVBLOK INDEX 00429000
- LTR R8,R8 DOES DEVICE EXIST ? 00430000
- BM TESTRTN NO - ONE WILL BE BUILD 00431000
- SLL R8,3(0) CONVERT TO BYTE INDEX @V200820 00432000
- A R8,ARIODV COMPUTE RDEVBLOK ADDRESS 00433000
- SPACE 00434000
- TESTRTN LTR R8,R8 SHOULDN'T HAVE FOUND A RDEVBLOK 00435000
- BNM WNGDEV ERROR IF ONE FOUND. 00436000
- LTR R7,R7 WAS A RCUBLOK FOUND ? 00437000
- BNM GETDEV YES., NO NEED TO BUILD ONE. 00438000
- L R7,ALLOCU GET NEXT AVAILABLE RCUBLOK. 00439000
- LR R3,R7 SAVE ADDRESS IN R3. 00440000
- LA R3,RCUSIZE*8(,R3) MAKE R3 POINT TO NEXT AVAIL. C.U. 00441000
- ST R3,ALLOCU SAVE ADDRESS FOR NEXT ENTRY INTO SCAN. 00442000
- SPACE 1 00443000
- GETDEV L R8,ALLODEV LOAD R8 W/ NEXT AVAILABLE RDEVBLOK ADDR. 00444000
- LR R3,R8 SAVE ADDR IN R3 00445000
- LA R3,RDEVSIZE*8(,R3) BUMP R3 TO NEXT AVAIL. RDEVBLOK. 00446000
- ST R3,ALLODEV SAVE ADDR. FOR NEXT ENTRY INTO SCAN. 00447000
- STH R1,RCUADD STORE DEVICE ADDR. IN REAL C.U. BLOCK. 00448000
- NC RCUADD,=X'00F8' REMOVE CHAN. AND DEV. BIT PORTION. 00449000
- ST R6,RCUCHA STORE ADDRESS OF REAL CHANNEL BLOCK. 00450000
- STH R1,RDEVADD STORE DEV. ADDR. IN REAL DEVICE BLOCK. 00451000
- NC RDEVADD,=X'000F' REMOVE CHAN. AND C.U. BIT'S. 00452000
- ST R7,RDEVCUA STORE ADDRESS OF REAL C.U. BLOCK. 00453000
- STH R2,RDEVTYPC PUT IN CLASS/TYPE. 00454000
- CLI RDEVTYPC,CLASGRAF GRAPHICS DEVICE? @V60A6B6 00454030
- BNE NOTGRAF NO, CAN'T BE A 327X @V60A6B6 00454060
- MVI RDEVMDL,X'02' ASSUME MODEL2 3277 @V60A6B6 00454100
- L R4,=V(DMKGRTB) ASSUME 3277 TYPE @V60A6B6 00454200
- CLI RDEVTYPE,X01 IS THIS A 3278 ?? @V60A6B6 00454300
- BNE NON3278 NO MUST BE 3277 TYPE @V60A6B6 00454400
- MVI RDEVMDL,X2A NEED A MODEL NUMBER 2A @V60A6B6 00454500
- MVI RDEVGRTY,X0C NEED DISPLACEMENT FOR 3278 @V60A6B6 00454600
- L R4,=V(DMKGRWTB) GET THE CORRECT GRTBLOK @V60A6B6 00454700
- NON3278 EQU * @V60A6B6 00454800
- ST R4,RDEVGRTB STORE GRTBLOK IN RDEVBOLK @V60A6B6 00454900
- NOTGRAF DS 0H @V60A6B6 00454930
- LR R3,R8 LOAD R3 W/ADDR. OF RDEVBLOK. 00455000
- S R3,=A(DMKRIODV) FIND THE DISPLACEMENT VALUE. 00456000
- SRL R3,3(0) CONVERT TO DOUBLE-WORD INDEX @V200820 00457000
- * 00458000
- SR R4,R4 00459000
- IC R4,RDEVADD+1 PICK UP ONLY DEVICE PORTION OF DEV. ADDR 00460000
- SLL R4,1 DOUBLE IT 00461000
- STH R3,RCUDVTBL(R4) SAVE DISP. OF RDEVBLOK IN RCUBLOK 00462000
- LR R3,R7 LOAD R3 W/ADDR OF RCUBLOK. 00463000
- S R3,=A(DMKRIOCU) FIND DISPLACEMENT OF REAL C.U.BLOK 00464000
- SR R4,R4 ZERO R4. 00465000
- IC R4,RCUADD+1 GET C.U. ADDRESS. 00466000
- SRL R4,2 DOUBLE IT. 00467000
- STH R3,RCHCUTBL(R4) STORE ADDR. OF RCUBLOK IN RCHBLOK. 00468000
- LR R3,R8 LOAD R3 W/ADDR. OF RDEVBLOK. 00469000
- S R3,=A(DMKRIODV) CALC DISP. OF RDEVBLOK. 00470000
- SRL R3,3(0) CONVERT TO DOUBLE-WORD INDEX @V200820 00471000
- CLI RDEVTYPC,CLASTERM CONSOLE A 3210/3215 / @V200735 00472000
- BE SAVCON YES - @V200735 00473000
- CLI RDEVTYPC,CLASGRAF CONSOLE A 3277/3066 / @V200735 00474000
- BE SAVCON YES., BRANCH. 00475000
- CLI RDEVTYPC,CLASURO IS IT A UNIT RECORD OUTPUT DEV ?? 00476000
- BNE NOTURO NO., BRANCH. 00477000
- MVI RDEVCLAS,C'A' MAKE CLASS = A 00478000
- TM RDEVTYPE,TYPPUN DEVICE A PUNCH ?? 00479000
- BO SAVPCH YES., BRANCH. 00480000
- TM RDEVTYPE,TYPPRT DEVICE A PRINTER ? 00481000
- BO SAVPRT YES., BRANCH. 00482000
- NOTURO CLI RDEVTYPC,CLASURI CLASS EQUAL UNIT RECORD INPUT 00483000
- BNE 4(,R5) NO, RETURN 00484000
- L R4,=A(DMKRIORD) ADDRESS OF SPOOL PRINTER 00485000
- STH R3,4(,R4) 00486000
- STH R1,6(,R4) 00487000
- BC 15,4(R5) RETURN. 00488000
- SAVCON L R4,=A(DMKRIOCN) STORE RE-COMPUTED CONSOLE ADDRESS. 00489000
- STH R3,0(,R4) 00490000
- STH R1,2(,R4) 00491000
- B 4(,R5) RETURN. 00492000
- SAVPCH L R4,=A(DMKRIOPU) STORE RE-COMPUTED PUNCH ADDRESS. 00493000
- STH R3,4(,R4) 00494000
- STH R1,6(,R4) 00495000
- B 4(,R5) RETURN. 00496000
- SAVPRT L R4,=A(DMKRIOPR) STORE RE-COMPUTED PRINTER ADDRESS. 00497000
- STH R3,4(,R4) 00498000
- STH R1,6(,R4) 00499000
- CLI RDEVTYPE,TYP3800 IS IT A 3800 PRINTER? @V60B9BA 00499100
- BNE SAVPRT1 XFER IF NOT @V60B9BA 00499200
- MVC RDEVIMAG,=C'IMAG3800' DEFAULT IMAGE LIBRARY @V60B9BA 00499300
- MVC RDEVXSEP,=C'GF10' DEFAULT XLATE FOR SEP @V60B9BA 00499400
- XC RDEVDELP,RDEVDELP ZERO THE DEL PURGE ANCHOR @VMI0092 00499425
- XC RDEVEXTN,RDEVEXTN ZERO THE RSPXBLOK POINTER @VMI0092 00499450
- MVC RDEVOVLY,BLANKS BLANK OUT THE OVERLAY @VMI0092 00499475
- MVI RDEVFSEP,6 DEFAULT FOR SEP FCB @V60B9BA 00499500
- MVI RDEVMAXP,1 DEFAULT SIZE OF DEL PURGE Q@V60B9BA 00499600
- MVI RDEVFTR,FTREXTSN EXTENDED SENSE INFO HERE @V60B9BA 00499700
- MVI RDEVCURP,22 ASSUME 11-INCH PAPER @VMI0091 00499750
- B 4(,R5) RETURN @V60B9BA 00499800
- SAVPRT1 DS 0H @V60B9BA 00499900
- MVI RDEVFTR,FTRUCS ASSUME IT HAS UCS FEATURE. 00500000
- B 4(,R5) RETURN 00501000
- * 00502000
- * 00503000
- TYPEMSG EQU * @V200731 00504000
- SLR R2,R2 CLEAR LENGTH REGISTER @V200731 00505000
- IC R2,0(,R9) GET LENGTH OF OUTPUT LINE @V200731 00506000
- N R2,=F'127' CLEAR HIGH ORDER BIT FOR NO READ @V200731 00507000
- LA R4,1(,R9) GET ADDRESS OF OUTPUT DATA @V200731 00508000
- TM 0(R9),X'80' IS A READ ALSO REQUESTED @V200731 00509000
- BO *+8 NO @V200731 00510000
- OI PARM,PARMNAUT SET NO CARRIAGE RETURN @V200731 00511000
- BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00512000
- TM 0(R9),X'80' IS A READ NECESSARY @V200735 00513000
- BCR 1,R5 NO - RETURN TO CALLER @V200735 00514000
- MVC INPUT,SPACES CLEAR INPUT AREA TO BLANKS @V200731 00515000
- LA R2,L'INPUT GET THE LENGTH OF THE INPUT DATA @V200731 00516000
- LA R4,INPUT ADDRESS OF DATA INPUT AREA @V200731 00517000
- OI PARM,PARMREA SET THE READ INDICATOR @VM08630 00518000
- BAL R14,REAWRITE GO TO THE READ/WRITE SECTION @V200731 00519000
- OC INPUT,SPACES TRANSLATE TO UPPERCASE BEFORE RETURNING 00520000
- BR R5 TO CALLER. 00521000
- * 00522000
- * 00523000
- WNGDEV CLI RDEVTYPC,CLASTAPE IS DEVICE A TAPE DRIVE ? 00524000
- BE 4(,R5) IF YES, DON'T PROVIDE ERROR MSG 00525000
- LA R9,LNGDEV TELL OPERATOR DEVICE HAS BEEN @V200735 00526000
- * ALLOCATED 00527000
- B TYPEMSG RETURN FROM "TYPEMSG" WILL CAUSE THE 00528000
- * ORIGINAL LINE TO BE RE-ISSUED. 00529000
- XFRINIT EQU * @V200731 00530000
- L R9,=A(DMKSYSNU) DMKSYSNU IS ADDR. OF NUCELUS @V200731 00536000
- * CONSTANT 00537000
- LH R9,0(,R9) PICK UP WHERE NUCELUS IS ON 00538000
- STH R9,CYL DISK AND PREPARE TO WRITE OUT 00539000
- L R2,=A(DMKRIO) GET ADDRESS OF REAL I0O BLOKS 00540000
- SRL R2,12 SHIFT 11 FOR INDEX FACTOR, +1... @V56BDA8 00540600
- ALR R2,R2 NOW SHIFT BACK TO 11 & BIT31 IS 0@V56BDA8 00541200
- LH R3,PAGE2314(R2) HEAD AND RECORD FOR 2314 @V2A2029 00542000
- CLI RESTBL+3,TYP2314 DEVICE TYPE 2314 ? @V2A2029 00543000
- BE RESHEAD YES, GO SAVE HEAD ID @V2A2029 00544000
- LH R3,PAGE3340(R2) HEAD AND RECORD FOR 3340 @V2A2029 00545000
- CLI RESTBL+3,TYP3340 DEVICE TYPE 3340 ? @V2A2029 00546000
- BE RESHEAD YES, SAVE HEAD ID @V2A2029 00547000
- LH R3,PAGE3350(R2) HEAD AND RECORD FOR 3350 @V304498 00548000
- CLI RESTBL+3,TYP3350 DEVICE TYPE 3350 ? @V304498 00549000
- BE RESHEAD YES, SAVE HEAD ID @V304498 00550000
- LH R3,PAGE3375(R2) Head and record for 3375 HRC106DK 00550100
- CLI RESTBL+3,TYP3375 device type 3375 ? HRC106DK 00550200
- BE RESHEAD Yes, save head id HRC106DK 00550300
- LH R3,PAGE3380(R2) Head and record for 3380 HRC106DK 00550400
- CLI RESTBL+3,TYP3380 device type 3380 ? HRC106DK 00550500
- BE RESHEAD Yes, save head id HRC106DK 00550600
- LH R3,PAGE3330(R2) HEAD AND RECORD FOR 3330 @V2A2029 00551000
- RESHEAD EQU * @V200731 00552000
- STCM R3,3,HEAD+1 STORE IT IN CHANNEL PROGRAM @V200731 00553000
- SPACE 00554000
- PAGESIO EQU * @V200731 00555000
- LA R1,DSKPROG GET THE PAGE THAT CONTAINS @V200731 00556000
- * THE REAL I/O DESCRIPTION 00557000
- LH R3,2 GET THE DEVICE ADDRESS @V200731 00558000
- LA R14,ERRDASD ADDR OF DASD ERR RECOVERY ROUTINE@V56BDA8 00558300
- ST R14,IOBERROR PUT IT IN THE IOB. @V56BDA8 00558600
- BAL R14,STARTIO GO ISSUE SIO @V200731 00559000
- TM IOBFLAGS,IOBFATAL NON-RECOVERABLE ERR ON DASD? @V56BDA8 00559200
- BO DIEHERE YES. TERMINATE. @V56BDA8 00559400
- LA R14,ERRHAND NORMAL ERROR RECOVERY ROUTINE. @V56BDA8 00559600
- ST R14,IOBERROR PUT BACK IN IOB. @V56BDA8 00559800
- LR R10,R3 GET THE IPL DEVICE ADDRESS FOR @V200731 00560000
- * DMKCPI - IT MUST BE IN REGISTER 10 00561000
- L R12,=A(DMKCPINT) GET ADDRESS OF DMKCPI @V200731 00562000
- BR R12 GO INITIALIZE VM/370 @V200731 00563000
- ******************************************************************** 00564000
- EJECT 00565000
- ********************************************************************* 00566000
- REAWRITE EQU * @V200731 00567000
- STM R14,R5,GRAPHSAV SAVE THE REGISTERS @V200731 00568000
- LA R14,RETWORD RETURN ADDRESS FROM SIO @VM08630 00569000
- LH R3,CONTBL GET THE CONSOLE ADDRESS @VM08630 00570000
- CLI CPUVERSN,X'FF' IS THIS A VIRTUAL MACHINE ? @VM08630 00571000
- BNE TESTCNS NO, GO TEST CONSOLE ADDRESS @VM08630 00572000
- L R3,FFS32 GET ALL FFS @VM08630 00573000
- DC X'83350024' GET CONSOLE ADDRESS (VIRTUAL) @VM08630 00574000
- BO DIEHERE CONSOLE ADDRESS DOESN'T EXIST @VM08630 00575000
- LA R3,0(R3) STRIP HIGH ORDER BYTE @VA10009 00575500
- STH R3,CONTBL SAVE VIRTUAL CONSOLE ADDRESS @VM08630 00576000
- B CNS3210 GO TO 3210/3215 SUPPORT @VM08630 00577000
- TESTCNS EQU * @VM08630 00578000
- TM PARM,PARMGRP IS SYSTEM CONSOLE A 3270/3066 @VM08630 00579000
- BO GRAPHID YES, GO TO GRAPHIC SUPPORT @VM08630 00580000
- CNS3210 EQU * @VM08540 00581000
- TM PARM,PARMREA IS THIS A READ REQUEST @V200731 00582000
- BZ WRT10 NO, GO TO WRITE SECTION @V200731 00583000
- STCM R4,B'0111',RD3210+1 RESOLVE CCW DATA ADDRESS @V200731 00584000
- STH R2,RD3210+6 STORE THE CCW COUNT @V200731 00585000
- LA R1,RD3210 ADDRESS OF CHANNEL PROGRAM @V200731 00586000
- B STARTIO GO DO I/O OPERATION @V200731 00587000
- SPACE 00588000
- WRT10 EQU * @V200731 00589000
- TM PARM,PARMNAUT IS A CARRIAGE RETURN NECESSARY @V200731 00590000
- BZ WRT10CR YES, GO GET CCWS @V200731 00591000
- STCM R4,B'0111',WRT3210+1 RESOLVE CCW DATA ADDRESS @V200731 00592000
- STH R2,WRT3210+6 STORE CCW COUNT @V200731 00593000
- LA R1,WRT3210 ADDRESS OF CHANNEL PROGRAM @V200731 00594000
- B STARTIO GO TO THE I/O HANDLER @V200731 00595000
- WRT10CR EQU * @V200731 00596000
- STCM R4,B'0111',WRT3210A+1 RESOLVE CCW DATA ADDRESS @V200731 00597000
- STH R2,WRT3210A+6 STORE CCW COUNT @V200731 00598000
- LA R1,WRT3210A ADDRESS OF CHANNEL PROGRAM @V200731 00599000
- B STARTIO GO TO THE I/O HANDLER @V200731 00600000
- GRAPHID EQU * @VM08630 00601000
- TM PARM,PARMREA IS THIS A READ REQUEST @V200731 00602000
- BZ WRT66 NO, GO TO WRITE SECTION @V200731 00603000
- READGRF EQU * @V200731 00604000
- LA R14,GRAPHIC0 RETURN ADDRESS FROM I/O HANDLER @V200731 00605000
- OI PARM,PARMATT SET THE ATTENTION REQUEST @VM08630 00606000
- XC BLNKLINE(140),BLNKLINE CLEAR READ AREA @VM08630 00607000
- XC RDMIDATA(3),RDMIDATA CLEAR THE READ DATA FIELD @V200731 00608000
- MVC CPXYSTAT(20),REALABEL @V200731 00609000
- LA R1,REQREAD GET THE ADDRESS OF THE CHANNEL @V200731 00610000
- * PROGRAM 00611000
- TM PARM,PARM327 IS THIS A 3270 DEVICE ? @VM08630 00612000
- BZ STARTIO NO, GO TO I/O HANDLER @VM08630 00613000
- LA R1,REQREAD1 GET THE ADDRESS OF THE CHANNEL @V200731 00614000
- * PROGRAM 00615000
- B STARTIO GO TO THE I/O HANDLER @V200731 00616000
- SPACE 2 00617000
- WRT66 EQU * @V200731 00618000
- MVC CPXYSTAT(20),RUNLABEL @V200731 00619000
- TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00620000
- BO GRF3270 NO, GO TO 3270 SUPPORT @VM08630 00621000
- STCM R4,B'0111',WRT3066+1 GET THE MESSAGE ADDRESS @V200731 00622000
- STH R2,WRT3066+6 SAVE THE DATA COUNT IN THE CCW @V200731 00623000
- LA R1,WRTCRTXY GET THE ADDRESS OF THE CHANNEL @V200731 00624000
- * PROGRAM 00625000
- TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 00626000
- BZ GRAPWRT NO, GO TO SIO SECTION @V200731 00627000
- LA R1,ERSE3066 GET THE ADDRESS OF THE CHANNEL @V200731 00628000
- * PROGRAM 00629000
- MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 00630000
- B GRAPWRT GO GET RETURN ADDRESS @V200731 00631000
- GRF3270 EQU * @V200731 00632000
- SR R14,R14 CLEAR REGISTER 14 @V200731 00633000
- LA R1,WRTCRT70 GET THE ADDRESS OF THE CHANNEL @V200731 00634000
- * PROGRAM 00635000
- TM PARM,PARMCLE IS THE ERASE INDICATOR ON ? @V200731 00636000
- BZ NOCL3270 NO, DON'T CLEAR SCREEN @V200731 00637000
- MVI SBADDR,X'00' CLEAR LINE POINTER @V200731 00638000
- LA R1,ERSE3270 GET THE ADDRESS OF THE CHANNEL @V200731 00639000
- * PROGRAM 00640000
- NOCL3270 EQU * @V200731 00641000
- IC R14,SBADDR GET THE CURRENT LINE POINTER @V200731 00642000
- SLL R14,1 SETUP THE INDEX INTO THE TABLE @V200731 00643000
- LH R14,TABLE70(R14) GET THE LINE ADDRESS @V200731 00644000
- STCM R14,3,LAB3270+2 SAVE THE CURRENT LINE POINTER @V200731 00645000
- STCM R4,B'0111',WRTCR70+1 GET THE MESSAGE ADDRESS @V200731 00646000
- STH R2,WRTCR70+6 SAVE THE BYTE COUNT IN THE CSW @V200731 00647000
- GRAPWRT EQU * @V200731 00648000
- LA R14,GRAPHIC1 RETURN ADDRESS FROM I/O HANDLER @V200731 00649000
- B STARTIO GO TO THE I/O HANDLER @V200731 00650000
- SPACE 2 00651000
- GRAPHIC1 EQU * @V200731 00652000
- NI PARM,X'FF'-PARMCLE CLEAR THE ERASE INDICATOR @V200731 00653000
- SR R5,R5 CLEAR REGISTER 5 @V200731 00654000
- IC R5,SBADDR GET THE Y COORDINATE @V200731 00655000
- LA R5,1(R5) UPDATE THE Y COORDINATE @V200731 00656000
- CH R2,=H'80' IS DATA COUNT LONGER THAN 1 LINE @V200731 00657000
- BNH *+8 NO, GO SAVE Y COORDINATE @V200731 00658000
- LA R5,1(R5) UPDATE THE Y COORDINATE AGAIN @V200731 00659000
- STC R5,SBADDR SAVE THE Y COORDINATE @V200731 00660000
- MH R5,=H'80' GET THE BYTE LENGTH @V200731 00661000
- L R1,=F'2640' GET THE MAX. LENGTH @V200731 00662000
- TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00663000
- BZ TEST3066 YES, GO TEST FOR END OF CRT @VM08630 00664000
- L R1,MAXLEN GET THE MAX. LENGTH FOR 3270/3278@V60A6B6 00665000
- TEST3066 EQU * @V200731 00666000
- CR R5,R1 IS THE Y COORDINATE AT THE END @V200731 00667000
- * OF THE CRT 00668000
- BL RETWORD NO, CHECK FOR CMD CHAINING @VA08599 00669000
- OI PARM,PARMATT SET THE ATTENTION REQUEST @VM08630 00670000
- MVC CPXYSTAT(20),HOLLABEL @V200731 00671000
- LA R14,GRAPHIC3 RETURN ADDRESS FROM I/O HANDLER @V200731 00672000
- LA R1,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 00673000
- * PROGRAM 00674000
- TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00675000
- BZ STARTIO YES, GO TO I/O HANDLER @VM08630 00676000
- LA R1,HOLDCCW1 GET THE ADDRESS OF THE CHANNEL @V200731 00677000
- * PROGRAM 00678000
- B STARTIO GO ISSUE SIO @V200731 00679000
- GRAPHIC3 EQU * @V200731 00680000
- BAL R5,ATTNHAND GO CHECK FOR ATTENTION INTERRUPT @V200731 00681000
- NI PARM,X'FF'-PARMATT CLEAR THE ATTENTION REQUEST @VM08630 00682000
- CANCEL1 EQU * @V200731 00683000
- MVI SBADDR,X'00' SET THE Y COORDINATE TO ZERO @V200731 00684000
- MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 00685000
- LA R1,CNCL3066 GET THE ADDRESS OF THE CHANNEL @V200731 00686000
- * PROGRAM 00687000
- TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00688000
- BZ RETURNCN YES, GO GET RETURN ADDRESS @VM08630 00689000
- LA R1,CNCL3270 GET THE ADDRESS OF THE CHANNEL @V200731 00690000
- * PROGRAM 00691000
- RETURNCN EQU * @V200731 00692000
- LA R14,READGRF GET THE ADDRESS OF THE READ @V200731 00693000
- * SECTION 00694000
- TM PARM,PARMREA IS THIS A READ REQUEST ? @V200731 00695000
- BO STARTIO YES, GO TO THE I/O HANDLER @V200731 00696000
- LA R14,RETWORD RETURN ADDRESS FROM I/O HANDLER @V200731 00697000
- B STARTIO GO TO THE I/O HANDLER @V200731 00698000
- SPACE 1 00699000
- GRAPHIC0 EQU * @V200731 00700000
- BAL R5,ATTNHAND GO CHECK FOR ATTENTION INTERRUPT @V200731 00701000
- SPACE 1 00702000
- NI PARM,X'FF'-PARMATT CLEAR THE ATTENTION REQUEST @VM08630 00703000
- LA R14,RET66MI RETURN ADDRESS FROM I/O HANDLER @V200731 00704000
- TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00705000
- BO GRF3270A NO, GO TO 3270 SUPPORT @VM08630 00706000
- STH R2,RD3066DA+6 STORE THE COUNT IN THE CCW @V200731 00707000
- STCM R4,B'0111',RD3066DA+1 GET ADDRESS OF READ BUFFER@V200731 00708000
- LA R1,RDMI3066 GET ADDRESS OF CHANNEL PROGRAM @V200731 00709000
- B STARTIO GO TO THE I/O HANDLER @V200731 00710000
- GRF3270A EQU * @V200731 00711000
- LR R1,R2 GET THE BYTE COUNT @V200731 00712000
- LA R1,6(R1) ADD 6 T0 THE TOTAL COUNT @V200731 00713000
- STH R1,RD3270DA+6 STORE THE COUNT IN THE CCW @V200731 00714000
- LA R1,BLNKLINE GET THE ADDRESS OF THE BUFFER @V200731 00715000
- STCM R1,7,RD3270DA+1 MOVE THE ADDRESS OF THE READ @V200731 00716000
- * BUFFER INTO THE CCW 00717000
- LA R1,RDMI3270 GET THE ADDRESS OF THE CHANNEL @V200731 00718000
- * PROGRAM 00719000
- B STARTIO GO TO I/I HANDLER @V200731 00720000
- SPACE 2 00721000
- RET66MI EQU * @V200731 00722000
- MVC CPXYSTAT(20),RUNLABEL CRT DISPLAY RUN STATUS @V200731 00723000
- LA R1,CRTWORD GET THE ADDRESS OF THE CHANNEL @V200731 00724000
- * PROGRAM 00725000
- LA R14,RETINPUT RETURN ADDRESS FROM I/O HANDLER @V200731 00726000
- TM PARM,PARM327 IS THIS A 3066 DEVICE ? @VM08630 00727000
- BO GRF3270B NO, GO TO 3270 SUPPORT @VM08630 00728000
- TM RDMIDATA+2,X'40' DID THE OPERATOR HIT THE @V200731 00729000
- * CANCEL KEY 00730000
- BO CANCEL1 YES, GO CLEAR SCREEN @V200731 00731000
- CLC RDMIDATA(2),SBAREAD DID THE CURSOR MOVE ? @V200731 00732000
- BNE STARTIO YES, GO WRITE STATUS @V200731 00733000
- OI PARM2,PARMNDA SET INDICATOR FOR NO DATA @VM08630 00734000
- B STARTIO GO WRITE OUT STATUS @V200731 00735000
- GRF3270B EQU * @V200731 00736000
- CLI BLNKLINE,X'6E' DID THE OPERATOR HIT THE CANCEL @V200731 00737000
- * KEY 00738000
- BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00739000
- CLI BLNKLINE,X'6D' DID THE OPERATOR HIT THE CLEAR @V200731 00740000
- * KEY 00741000
- BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00742000
- CLI BLNKLINE,X'6C' DID OPERATOR HIT PA1 KEY @V200731 00743000
- BE CANCEL1 YES, GO CLEAR SCREEN @V200731 00744000
- OI PARM2,PARMNDA SET INDICATOR FOR NO DATA @VM08630 00745000
- CLI BLNKLINE,X'01' DID OPERATOR HIT TEST REQ. ? @VM08630 00746000
- BE ENT3270 YES, GO DISPLAY STATUS @VM08630 00747000
- CLI BLNKLINE,X'E6' IS THE CARD READER ACTIVE ? @VM08630 00748000
- BE ENT3270 YES, GO WRITE STATUS @VM08630 00749000
- CLI BLNKLINE+6,X'00' IS DATA IN THE INPUT AREA ? @VM08630 00750000
- BNE DATA3270 YES, GO DISPLAY DATA @VM08630 00751000
- CLC BLNKLINE+1(2),ADDR5 DID THE CURSOR MOVE ? @V60A6B6 00752000
- BE ENT3270 NO, GO WRITE STATUS @VM08630 00753000
- DATA3270 EQU * @VM08630 00754000
- NI PARM2,X'FF'-PARMNDA CLEAR NO DATA INDICATOR @VM08630 00755000
- LR R5,R2 GET THE BYTE COUNT @V200731 00756000
- BCTR R5,R0 SUBTRACT ONE FROM COUNT (EX @V200731 00757000
- * INSTR.) 00758000
- EX R5,MOV3270 MOVE DATA INTO USER'S BUFFER @V200731 00759000
- ENT3270 EQU * @V200731 00760000
- LA R1,CRTWORD1 GET THE ADDRESS OF THE CHANNEL @V200731 00761000
- * PROGRAM 00762000
- B STARTIO GO ISSUE SIO @V200731 00763000
- SPACE 2 00764000
- ********************************************************************* 00765000
- MOV3270 MVC 0(0,R4),BLNKLINE+6 MOVE THE DATA INTO THE @V200731 00766000
- * USER'S BUFFER 00767000
- ********************************************************************* 00768000
- SPACE 2 00769000
- RETINPUT EQU * @V200731 00770000
- TM PARM2,PARMNDA IS NO DATA INDICATED ? @VM08630 00771000
- BZ WRT66 NO, GO DISPLAY INPUT DATA ON CRT @V200731 00772000
- RETWORD EQU * @V200731 00773000
- NI PARM,X'FF'-(PARMREA+PARMCLE+PARMNAUT+PARMATT) @VM08630 00774000
- * CLEAR INDICATORS 00775000
- NI PARM2,X'FF'-PARMNDA CLEAR NO DATA INDICATOR @VM08630 00776000
- LM R14,R5,GRAPHSAV RETURN TO ORIGINAL @V200731 00777000
- BR R14 CALLER @V200731 00778000
- ********************************************************************* 00779000
- EJECT 00779070
- *********************************************************************** 00779140
- * 00779210
- * WAITANY: ROUTINE WAITS FOR THE NEXT I/O INTERRUPT. ANY I/O 00779280
- * INTERRUPT, REGARDLESS OF WHICH DEVICE IT IS FROM, SATISFIES 00779350
- * THIS ROUTINE. 00779420
- * 00779490
- *********************************************************************** 00779560
- * 00779630
- * INPUTS: 00779700
- * R15 = ADDRESS OF AN IOB. (ANY IOB ASSOCIATED WITH ANY 00779770
- * DEVICE WILL DO; THIS ROUTINE MERELY WANTS SOME IOB 00779840
- * FLAGS TO MANIPULATE.) 00779910
- * R14 = ADDRESS TO BE RETURNED TO AFTER I/O INTERRUPT OCCURS. 00779980
- * IOBERROR = SHOULD NORMALLY CONTAIN 0. IF IT CONTAINS THE 00780050
- * ADDRESS OF AN ERROR ROUTINE, THE ERROR ROUTINE WILL 00780120
- * ALWAYS BE BRANCHED TO, EVEN WHEN THERE IS NO ERROR 00780190
- * STATUS IN THE CSW STORED BY THE INTERRUPT. 00780260
- * 00780330
- * OUTPUTS: 00780400
- * IOOPSW+2 = THE INTERRUPTION CODE (A HALFWORD) IN THE OLD I/O 00780470
- * PSW CONTAINS THE UNIT ADDRESS OF THE INTERRUPTING DVC. 00780540
- * IOBCSW = CONTENTS OF CSW STORED BY INTERRUPT. 00780610
- * SENSE = SENSE BYTES ARE ALWAYS READ INTO THIS AREA, EVEN WHEN 00780680
- * THE INTERRUPT DOES NOT SHOW ERROR STATUS IN THE CSW. 00780750
- * SENSECNT = HALFWORD CONTAINS NUMBER OF SENSE BYTES THAT WERE 00780820
- * ACTUALLY READ INTO 'SENSE' AREA. MAY NOT BE VALID IN 00780890
- * THE EVENT OF A CHANNEL ERROR. OTHERWISE, NUMBER IS 00780960
- * DETERMINED BY THE PARTICULAR DEVICE, UP TO THE LIMIT 00781030
- * IMPOSED BY THE LENGTH OF THE 'SENSE' AREA. 00781100
- * IOB = VARIOUS FIELDS OF THE IOB MAY BE MODIFIED. 00781170
- * R1 = CONTENTS DESTROYED. 00781240
- * R0, R2-R4, R14-R15 = PRESERVED. 00781310
- * R5-R13 = PRESERVED UNLESS ROUTINE DESIGNATED BY 'IOBERROR' 00781380
- * DESTROYS THEM. 00781450
- *********************************************************************** 00781520
- SPACE 00781590
- **CMNT** USING IOB,R15 00781660
- WAITANY OI IOBFLAGS,IOBFWANY INDICATES WAIT FOR ANY INT. @V56BDA8 00781730
- SPACE 3 00781800
- *********************************************************************** 00781870
- * 00781940
- * WAITDVC: ROUTINE WAITS FOR AN UNSOLICITED I/O INTERRUPT FROM A 00782010
- * PARTICULAR DEVICE. 00782080
- * 00782150
- *********************************************************************** 00782220
- * 00782290
- * INPUTS: 00782360
- * R15 = ADDRESS OF IOB. 00782430
- * R14 = ADDRESS TO BE RETURNED TO AFTER INTERRUPT IS RECEIVED 00782500
- * FROM SPECIFIED DEVICE. 00782570
- * R3 = LOW ORDER TWO BYTES CONTAIN UNIT ADDRESS OF DEVICE 00782640
- * THAT IS TO BE WAITED ON. 00782710
- * IOBERROR = SHOULD NORMALLY CONTAIN 0. BUT IT MAY CONTAIN THE 00782780
- * ADDRESS OF AN ERROR ROUTINE. IF IT CONTAINS THE 00782850
- * ADDRESS OF AN ERROR ROUTINE, THE ERROR ROUTINE IS 00782920
- * ONLY GIVEN CONTROL IF THE CSW FROM THE INTERRUPT 00782990
- * CONTAINS UC, UE, ATTN, OR ANYTHING IN THE CHANNEL 00783060
- * STATUS BYTE OTHER THAN 'INCORRECT LENGTH'. 00783130
- * (NOTE: THE INTERFACE WITH THE ERROR ROUTINE HERE IS 00783200
- * THE SAME AS DESCRIBED AT THE END OF THE STARTIO RTN.) 00783270
- * 00783340
- * OUTPUTS: 00783410
- * IOBCSW = CONTENTS OF CSW STORED BY THE INTERRUPT. 00783480
- * SENSE = SENSE BYTES ARE READ INTO THIS AREA IF IOBCSW SHOWS 00783550
- * UC, UE, ATTN, OR ANYTHING IN CHANNEL STATUS BYTE OTHER 00783620
- * THAN 'INCORRECT LENGTH'. 00783690
- * SENSECNT = HALFWORD CONTAINS NUMBER OF SENSE BYTES THAT WERE 00783760
- * ACTUALLY READ INTO 'SENSE' AREA. WILL BE 0 IF NO 00783830
- * ERROR. MAY NOT BE VALID AFTER CHANNEL ERROR. 00783900
- * OTHERWISE, NUMBER IS DETERMINED BY THE PARTICULAR 00783970
- * DEVICE TYPE, UP TO THE LIMIT IMPOSED BY THE LENGTH OF 00784040
- * THE 'SENSE' AREA. 00784110
- * IOB = VARIOUS FIELDS IN THE IOB MAY BE MODIFIED. 00784180
- * R1 = CONTENTS DESTROYED. 00784250
- * R0, R2-R4, R14-R15 = PRESERVED. 00784320
- * R5-R13 = PRESERVED UNLESS ROUTINE DESIGNATED BY 'IOBERROR' 00784390
- * DESTROYS THEM. 00784460
- * 00784530
- * NOTES: 00784600
- * (1) IN ORDER TO BE RECOGNIZED AS AN INTERRUPT THAT IS TO 00784670
- * BRING US OUT OF THE WAIT, THE INTERRUPT MUST BE FROM THE 00784740
- * SPECIFIED DEVICE AND MUST PROVIDE ONE OR MORE OF THE 00784810
- * FOLLOWING STATUS INDICATIONS IN THE CSW: DE, UC, UE, 00784880
- * ATTN, OR ANY CHANNEL STATUS EXCEPT INCORRECT LENGTH. 00784950
- * 00785020
- *********************************************************************** 00785090
- SPACE 00785160
- WAITDVC SR R1,R1 SIGNAL NO CHNL PROG TO START. @V56BDA8 00785230
- SPACE 3 00785300
- *********************************************************************** 00785370
- * 00785440
- * STARTIO: ROUTINE DOES SIO TO SPECIFIED CHANNEL PROGRAM, THEN WAITS 00785510
- * FOR COMPLETION BEFORE RETURNING. 00785580
- * 00785650
- *********************************************************************** 00785720
- * 00785790
- * INPUTS: 00785860
- * R15 = ADDRESS OF IOB. 00785930
- * R14 = ADDRESS TO BE RETURNED TO WHEN REQUESTED I/O OPERATION 00786000
- * IS COMPLETE. 00786070
- * R1 = POINTER TO CHANNEL PROGRAM TO BE EXECUTED. ACTUALLY, 00786140
- * THIS WILL USED AS THE CAW; H.O. BYTE IS PROTECT KEY. 00786210
- * R3 = LOW ORDER TWO BYTES CONTAIN UNIT ADDRESS OF DEVICE 00786280
- * TO BE STARTED. 00786350
- * IOBFDEW = BIT FLAG SPECIFYING WHETHER MUST WAIT FOR DE OR CAN 00786420
- * ACCEPT CE AS INDICATING COMPLETION OF THE OPERATION. 00786490
- * COMMONLY, CE IS USED. NOTE: ERROR CONDITIONS ALWAYS 00786560
- * SIGNAL COMPLETION, WITH OR WITHOUT CE OR DE. 00786630
- * IOBERROR = ADDRESS OF AN ERROR ROUTINE, OR ZERO. IF ZERO, 00786700
- * CONTROL IS ALWAYS RETURNED IMMEDIATELY UPON 00786770
- * COMPLETION TO THE LOCATION GIVEN BY R14. IF IOBERROR 00786840
- * HAS THE ADDRESS OF AN ERROR ROUTINE AND AN ERROR IS 00786910
- * DETECTED AT COMPLETION OF THE I/O OPERATION, THEN THE 00786980
- * ERROR ROUTINE IS GIVEN CONTROL. THE ERROR ROUTINE IS 00787050
- * ALSO GIVEN CONTROL (WITH INDICATORS SET) IF SIO FINDS 00787120
- * THE DEVICE 'NOT OPERATIONAL' (CC=3) OR 'NOT READY'. 00787190
- * (NOTE: THE ERROR ROUTINE INTERFACE IS DESCRIBED 00787260
- * FOLLOWING THE STARTIO ROUTINE CODE BELOW.) 00787330
- * 00787400
- * OUTPUTS (WITH ERROR ROUTINE AVAILABLE): 00787470
- * IOBFATAL = FLAG INDICATES SUCCESS OR FAILURE. IN THE EVENT 00787540
- * OF A NON-RECOVERABLE ERROR, THE ERROR ROUTINE SETS 00787610
- * THIS BEFORE EXITING. 00787680
- * IOB = VARIOUS FIELDS IN THE IOB MAY BE MODIFIED. 00787750
- * R0-R4, R14-R15 = PRESERVED. 00787820
- * R5-R13 = PRESERVED UNLESS ROUTINE DESIGNATED BY 'IOBERROR' 00787890
- * DESTROYS THEM. 00787960
- * 00788030
- * OUTPUTS (WITHOUT ERROR ROUTINE AVAILABLE): 00788100
- * IOBFCC3 = FLAG INDICATES SIO FOUND DEVICE 'NOT OPERATIONAL'; 00788170
- * THE I/O REQUEST WAS NOT EXECUTED. 00788240
- * IOBFNRDY = FLAG INDICATES SIO WAS REJECTED BY THE DEVICE 00788310
- * BECAUSE OF A 'NOT READY' CONDITION OR SOME OTHER 00788380
- * CONDITION SUCH AS 'EQUIPMT CHECK'. I/O NEVER STARTED. 00788450
- * IOBCSW = CONTENTS OF CSWS STORED BY THE REQUESTED I/O 00788520
- * OPERATION UP TO THE TIME OF COMPLETION (WHICH, RECALL, 00788590
- * IS NOT NECESSARILY DE). IF MORE THAN ONE CSW WAS 00788660
- * STORED PRIOR TO COMPLETION, THEY ARE 'OR'ED TOGETHER 00788730
- * IN IOBCSW. 00788800
- * SENSE = SENSE BYTES ARE READ INTO THIS AREA IF IOBCSW SHOWS 00788870
- * UC, UE, ATTN, OR ANYTHING IN CHANNEL STATUS BYTE OTHER 00788940
- * THAN 'INCORRECT LENGTH'. 00789010
- * SENSECNT = HALFWORD CONTAINS NUMBER OF SENSE BYTES THAT WERE 00789080
- * ACTUALLY READ INTO 'SENSE' AREA. WILL BE 0 IF NO 00789150
- * ERROR. MAY NOT BE VALID AFTER CHANNEL ERROR. 00789220
- * OTHERWISE, NUMBER IS DETERMINED BY THE PARTICULAR 00789290
- * DEVICE TYPE, UP TO THE LIMIT IMPOSED BY LENGTH OF 00789360
- * THE 'SENSE' AREA. 00789430
- * IOB = VARIOUS FIELDS OF THE IOB MAY BE MODIFIED. 00789500
- * R0-R15 = PRESERVED. 00789570
- * 00789640
- *********************************************************************** 00789710
- SPACE 00789780
- **CMNT** USING IOB,R15 00789850
- STARTIO STM R14,R4,SIOSAVE SAVE USERREGS, RESTORE WHEN RETRN@V56BDA8 00789920
- RETRYIO DS 0H ENTRY FOR RESTART, POSSIBLY WITH RCVRY CCWS.@V56BDA8 00789990
- NI IOBFLAGS,255-IOBFSTRT-IOBFCC3-IOBFATAL-IOBFNRDY @V56BDA8 00790060
- RESTART DS 0H ENTRY FOR RETRY IF SIO FAILS TO TAKE. @V56BDA8 00790130
- ST R1,IOBRCAW KEEP ADDR OF LAST CHL PRG STARTD.@V56BDA8 00790200
- ST R1,CAW SET UP CAW. @V56BDA8 00790270
- XC CSW,CSW CLEAR CSW. @V56BDA8 00790340
- XC IOBCSW,IOBCSW CLEAR IOB COPY OF CSW. @V56BDA8 00790410
- LTR R1,R1 HAVE CHNL PRG TO START? @V56BDA8 00790480
- BZ SIOCC0 MAKE BELIEVE WE STARTD SOMETHING,@V56BDA8 00790550
- * THEN WAIT FOR UNSOLICITED INTERRUPT ON 00790620
- * THIS DEVICE. 00790690
- SIO 0(R3) @V56BDA8 00790760
- BC 4,CSWSTORE CC=1; SIO STORED A CSW. @V56BDA8 00790830
- BC 2,IOWAIT CC=2; CHNL BUSY, WAIT THEN RETRY.@V56BDA8 00790900
- BC 1,NOTOPER CC=3; DVC OR CHNL NOT OPERATIONAL@V56BDA8 00790970
- SIOCC0 OI IOBFLAGS,IOBFSTRT CC=0; INDICATE SIO 'TOOK'. @V56BDA8 00791040
- IOWAIT LPSW ENABLAB WAIT WITH I/O INTERRUPTS ENABLED.@V56BDA8 00791110
- SPACE 00791180
- CSWSTORE STH R3,IOOPSW+2 MAKE LIKE INTERRUPT OF THIS DVC. @V56BDA8 00791250
- TM CSW+4,BUSY DVC/CU BUSY OR INT. WAS PENDING? @V56BDA8 00791320
- BZ CSWCE NEITHER. GO TEST FOR CE. @V56BDA8 00791390
- TM CSW+4,255-BUSY-SM ANYTHING BESIDES BUSY+SM? @V56BDA8 00791460
- BZ IOWAIT NO. DVC/CU BUSY. WAIT & RETRY. @V56BDA8 00791530
- * 00791600
- * FALL THRU INDICATES SIO CLEARED A PENDING INTERRUPT FROM THIS 00791670
- * DEVICE; THE REQUESTED I/O OPERATION DID NOT GET STARTED. 00791740
- * 00791810
- B IOINT LOOK AT CLRD INT.; RESTART LATER.@V56BDA8 00791880
- SPACE 00791950
- CSWCE TM CSW+4,CE CE INDICATING IMMED. OPERATION? @V56BDA8 00792020
- BZ NOTRDY NO. PERHAPS HAVE UC (DVC NOT @V56BDA8 00792090
- * READY, ETC); TREAT AS ERROR. 00792160
- * 00792230
- * FALL THRU INDICATES AN IMMEDIATE OPERATION WAS STARTED. 00792300
- * 00792370
- OI IOBFLAGS,IOBFSTRT REQUESTED I/O WAS STARTED. @V56BDA8 00792440
- LA R4,8(0,R1) POINT TO IMMEDIATE CCW + 8. @V56BDA8 00792510
- ST R4,CSW MAKE CSW LOOK LIKE I/O INTERRUPT.@V56BDA8 00792580
- SPACE 00792650
- IOINT DS 0H THIS IS THE I/O INTERRUPT HANDLER@V56BDA8 00792720
- TM IOBFLAGS,IOBFWANY WANT INT. FROM ANY OLD DVC? @V56BDA8 00792790
- BO IOERRORA YES, TAKE WHATEVER COMES ALONG. @V56BDA8 00792860
- TM CSW+5,X'BF' ANY CHANNEL ERROR? @V56BDA8 00792930
- BNZ IOERROR YES, CHANNEL ERROR. @V56BDA8 00793000
- TM CSW+4,UC+UE+ATTN UNUSUAL UNIT STATUS? @V56BDA8 00793070
- BNZ IOERROR YES. ERROR ROUTINE MUST HANDLE. @V56BDA8 00793140
- TM IOBFLAGS,IOBFSTRT INT. IS RESPONSE TO OUR SIO? @V56BDA8 00793210
- BZ RESTART NO, SIO FAILED TO START. BUT AN @V56BDA8 00793280
- * INTERRUPT HAS CLEARED, SO MAYBE CHNL, CU, 00793350
- * & DVC ARE AVAILABLE NOW; TRY SIO AGAIN. 00793420
- CH R3,IOOPSW+2 SIO 'TOOK'. IS THIS INT FROM IT?@V56BDA8 00793490
- BNE IOWAIT NO, INT. IS FROM ANOTHER DVC. @V56BDA8 00793560
- ORCSW OC IOBCSW,CSW COPY (MERGE) CSW INTO IOBCSW. @V56BDA8 00793630
- TM CSW+4,CE+DE ANY ENDING STATUS? @V56BDA8 00793700
- BZ IOWAIT NO,WAIT FOR END. (MAYBE GOT CUE?)@V56BDA8 00793770
- **CMNT** TM IOBFLAGS,IOBFDEW REQUESTOR SAID WAIT UNTIL DE? @V56BDA8 00793840
- **CMNT** BZ SIORET NO, EITHER CE OR DE WILL DO. @V56BDA8 00793910
- **CMNT** TM CSW+4,DE HAVE DE YET? @V56BDA8 00793980
- **CMNT** BZ IOWAIT NOT YET. WAIT FOR DE. @V56BDA8 00794050
- SIORET TM IOBFLAGS,IOBFERP ERROR RTN WANTS CONTROL BACK? @V56BDA8 00794120
- BO IOERROR YES. @V56BDA8 00794190
- LM R14,R4,SIOSAVE RESTORE USER REGS. @V56BDA8 00794260
- BR R14 RETURN TO CALLER OF 'STARTIO'. @V56BDA8 00794330
- SPACE 00794400
- IOERRORA LH R3,IOOPSW+2 MAKE LIKE WE WANTED THIS DVC ALL @V56BDA8 00794470
- * ALONG. 00794540
- NI IOBFLAGS,255-IOBFWANY RESET. ONLY WANT 1 INT. @V56BDA8 00794610
- B IOERROR @V56BDA8 00794680
- SPACE 00794750
- NOTOPER OI IOBFLAGS,IOBFCC3+IOBFNRDY SET 'NOT OPER' AND @V56BDA8 00794820
- * (TEMPORARILY) 'NOT READY'. 00794890
- NOTRDY XI IOBFLAGS,IOBFNRDY IF FALL THRU FROM ABOVE, THIS@V56BDA8 00794960
- * RESETS IOBFNRDY TO 0. IF ENTER HERE, 00795030
- * IT SETS IOBFNRDY TO 1. 00795100
- STH R3,IOOPSW+2 @V56BDA8 00795170
- SPACE 00795240
- IOERROR DS 0H ERROR (OR UNUSUAL) STATUS PRESENT@V56BDA8 00795310
- CH R3,IOOPSW+2 IS INTERRUPT FROM OUR DVC? @V56BDA8 00795380
- BNE WRONGDVC NO, DO NOT SAVE CSW. @V56BDA8 00795450
- EX 0,ORCSW COPY (MERGE) CSW INTO IOBCSW @V56BDA8 00795520
- * BEFORE SENSE READ DESTROYS CSW. 00795590
- WRONGDVC DS 0H @V56BDA8 00795660
- * 00795730
- * IN EVERY CASE WE ATTEMPT TO READ SENSE DATA, EVEN IF UC WAS 00795800
- * NOT PRESENTED. READING SENSE WON'T HURT AND MAY HELP: IN THE 00795870
- * CASE OF CHANNEL CHECK, SIMULTANEOUS UC MIGHT HAVE BEEN LOST; 00795940
- * IN CASE OF ATTN OR UE, RECOVERY ROUTINE MIGHT WANT TO EXAMINE 00796010
- * SENSE. EVEN IF IT IS NOT OUR INTERRUPT, WE HAVE TO READ SENSE 00796080
- * TO CLEAR 'CONTINGENT CONNECTION' THAT MIGHT OTHERWISE BLOCK 00796150
- * US AT THE CONTROL UNIT. 00796220
- * 00796290
- XC SENSE,SENSE ZERO AREA FOR SENSE DATA. @V56BDA8 00796360
- LA R4,SENSECCW CCW FOR READING SENSE DATA. @V56BDA8 00796430
- ST R4,CAW SET UP CAW. @V56BDA8 00796500
- LH R4,IOOPSW+2 ADDR OF INTERRUPTING DEVICE. @V56BDA8 00796570
- **CMNT** STCM R4,12,SENSCNT USE HIGH ORDER 0'S TO 0 SENSE CNT@V56BDA8 00796640
- SENSESIO SIO 0(R4) START SENSE READ. @V56BDA8 00796710
- BC 4+2,SENSESIO RETRY WHEN CC=2 OR CC=1. 2 MEANS@V56BDA8 00796780
- * MPX CHNL IS WORKING MOMENTARILY WITH 00796850
- * ANOTHER SUBCHNL (WE KNOW THERE CAN BE NO 00796920
- * ACTIVITY OR INTERRUPT PENDING IN OUR 00796990
- * SUBCHNL). 1 MEANS PENDING DE OR OTHER 00797060
- * INTERRUPT WAS CLEARED FROM THE DVC BY 00797130
- * SIO, SO SENSE READ NEVER STARTED; RETRY. 00797200
- **CMNT** BC 1,ENDSENSE CC=3; SENSE NOT READ, KEEP 0 CNT.@V56BDA8 00797270
- TIO TIO 0(R4) CLEAR ENDING INTERRUPT FROM SENSE@V56BDA8 00797340
- BC 2,TIO LOOP IF CHANNEL STILL BUSY. @V56BDA8 00797410
- **CMNT** LH R4,SENSECCW+6 CALCULATE NUMBER OF SENSE BYTES. @V56BDA8 00797480
- **CMNT** SH R4,CSW+6 @V56BDA8 00797550
- **CMNT** STH R4,SENSCNT @V56BDA8 00797620
- ENDSENSE DS 0H @V56BDA8 00797690
- CH R3,IOOPSW+2 WE MAY HAVE GOTTEN AN UNSOLICITED@V56BDA8 00797760
- * ERROR FROM ANOTHER DVC. 00797830
- BNE IOWAIT IT'S NOT OUR DEVICE. @V56BDA8 00797900
- TM IOBFLAGS,IOBFSTRT+IOBFCC3+IOBFNRDY IF NONE OF @V56BDA8 00797970
- * THESE FLAGS IS SET, THEN SIO WAS BLOCKED 00798040
- * BY A PENDING INTERRUPT. 00798110
- BZ RESTART AN UNKNOWN INTERRUPT WAS CLEARED @V56BDA8 00798180
- * FROM OUR DEVICE BY SIO. WE DISREGARD IT 00798250
- * AND TRY AGAIN TO START. 00798320
- * 00798390
- * FALL THRU MEANS SIO WAS NOT BLOCKED BY PENDING INTERRUPT. SO 00798460
- * I/O WAS EITHER STARTED AND ENDED IN AN ERROR OR WAS BLOCKED 00798530
- * BY DVC 'NOT OPERATIONAL' OR 'NOT READY'. ONE OF THE 3 FLAGS 00798600
- * IOBFSTRT, IOBFCC3, AND IOBFNRDY IS SET AND TELLS WHICH IT WAS. 00798670
- * 00798740
- ICM R4,15,IOBERROR HAVE ERROR RTN FOR THIS REQUEST? @V56BDA8 00798810
- BZ SIORET NO. RETURN IOBCSW, SENSE, ETC. @V56BDA8 00798880
- LH R14,IOBERCNT COUNT OF ERROR RETRIES. @V56BDA8 00798950
- LA R14,1(0,R14) INCREMENT COUNT. @V56BDA8 00799020
- TM IOBFLAGS,IOBFERP IS THIS AN INITIAL ERROR? @V56BDA8 00799090
- BO HADERP NO, THIS WAS A RETRY. @V56BDA8 00799160
- OI IOBFLAGS,IOBFERP ERROR RCVRY IN PROGRESS NOW. @V56BDA8 00799230
- SR R14,R14 RETRY COUNT IS 0 FOR 1ST TIME. @V56BDA8 00799300
- HADERP STH R14,IOBERCNT INCREMENTED (OR 0'ED) RETRY CNT. @V56BDA8 00799370
- BR R4 GO TO ERROR RECOVERY ROUTINE. @V56BDA8 00799440
- **CMNT** DROP R15 @V56BDA8 00799510
- SPACE 3 00799580
- *********************************************************************** 00799650
- * 00799720
- * ERROR ROUTINE INTERFACE: 00799790
- * 00799860
- *********************************************************************** 00799930
- * 00800000
- * THE ADDRESS OF AN ERROR ROUTINE MAY BE SPECIFIED IN 'IOBERROR' 00800070
- * WHEN STARTIO IS CALLED. USUALLY THE ERROR ROUTINE WILL 00800140
- * PROVIDE DEVICE DEPENDENT ERROR RECOVERY. WHEN THE ERROR 00800210
- * ROUTINE GETS CONTROL THE IOBFCC3 AND IOBFNRDY FLAGS MAY 00800280
- * BE TESTED FIRST. IF NEITHER OF THESE TWO FLAGS IS SET, 00800350
- * THEN THE I/O REQUEST DEFINITELY DID GET STARTED. 00800420
- * AFTER THE ERROR ROUTINE ANALYZES THE ERROR, IT RETURNS 00800490
- * CONTROL TO THE STARTIO ROUTINE IN ONE OF TWO WAYS: 00800560
- * (1) IT BRANCHES TO THE 'RETRYIO' LABEL OF STARTIO TO RETRY 00800630
- * EITHER THE SAME CHANNEL PROGRAM OR A RECOVERY CHNL PROG. 00800700
- * (2) IT BRANCHES TO THE 'SIORET' LABEL OF STARTIO TO RETURN 00800770
- * TO THE CALLER OF STARTIO AFTER THE FINAL DISPOSITION OF 00800840
- * THE ERROR HAS BEEN DECIDED (ERROR CORRECTED OR ERROR 00800910
- * IS PERMANENT). 00800980
- * WHEN THE ERROR ROUTINE RECEIVES CONTROL THE IOBFERP FLAG IS 00801050
- * ALREADY SET, AND UNLESS THE ERROR ROUTINE UNSETS IT, THE ERROR 00801120
- * ROUTINE WILL KEEP GETTING CONTROL BACK AFTER EACH BRANCH TO 00801190
- * 'RETRYIO'. (AT COMPLETION OF THE RETRY CHANNEL PROGRAM.) 00801260
- * WHEN THE ERROR ROUTINE RECEIVES CONTROL INITIALLY, THE RETRY 00801330
- * COUNTER (IOBERCNT) IS ZERO AND AFTER EACH RETRY IT IS 00801400
- * AUTOMATICALLY INCREMENTED BY ONE. 00801470
- * 00801540
- * IF THE ERROR ROUTINE UNSETS THE IOBFERP FLAG, THEN THE 00801610
- * ERROR ROUTINE GETS CONTROL BACK AFTER A RETRY ONLY IF THE 00801680
- * RETRY CHANNEL PROGRAM ENDS WITH ANOTHER ERROR. AND IOBERCNT 00801750
- * AUTOMATICALLY STARTS AT ZERO AGAIN. IF THE RETRY CHANNEL 00801820
- * PROGRAM RUNS SUCCESSFULLY (AFTER THE ERROR ROUTINE HAS 00801890
- * UNSET IOBFERP), CONTROL WILL RETURN TO THE CALLER 00801960
- * OF STARTIO. (NOTE: SOONER OR LATER THE ERROR ROUTINE MUST 00802030
- * UNSET THE IOBFERP FLAG; IT IS NOT PERMITTED TO BRANCH TO 00802100
- * SIORET WITH THE FLAG STILL SET.) 00802170
- * 00802240
- * WHEN BRANCHING TO 'RETRYIO', R15 AND R3 MUST CONTAIN THE 00802310
- * SAME VALUES AS WHEN STARTIO WAS ENTERED AND R1 CONTAINS THE 00802380
- * ADDRESS (CAW) OF THE NEW CHANNEL PROGRAM. OR, TO WAIT FOR 00802450
- * AN UNSOLICITED INTERRUPT FROM THIS DEVICE (FOR EXAMPLE, AFTER 00802520
- * THE ERROR ROUTINE DETECTED 'INTERVENTION REQUIRED'), THE ERROR 00802590
- * ROUTINE CAN BRANCH TO 'RETRYIO' WITH 0 IN R1, INDICATING NO 00802660
- * CHANNEL PROGRAM. SUBSEQUENTLY THE UNSOLICITED DE INTERRUPT 00802730
- * WILL CAUSE CONTROL TO RETURN TO THE ERROR ROUTINE (ASSUMING 00802800
- * THE IOBFERP FLAG IS STILL SET). 00802870
- * 00802940
- * WHEN CONTROL RETURNS TO THE ERROR ROUTINE FROM 'RETRYIO', 00803010
- * THE DATA CONCERNING THE ORIGINAL ERROR HAS BEEN LOST. 00803080
- * IOBCSW, IOBRCAW, AND SENSE DATA AND COUNT REFLECT THE 00803150
- * EXECUTION OF THE LAST CHANNEL PROGRAM. 00803220
- * 00803290
- * STARTIO IS RECURSIVE IN A LIMITED WAY AND CAN BE CALLED BY 00803360
- * THE ERROR ROUTINE TO WRITE ERROR MESSAGES (AS LONG AS THE IOB 00803430
- * THAT IS USED IS NOT THE ONE THAT HAD THE ERROR). BUT CERTAIN 00803500
- * FIELDS AND REGISTERS MUST BE SAVED AND RESTORED IF STARTIO 00803570
- * IS TO BE CALLED RECURSIVELY, SO THE FOLLOWING CALLING 00803640
- * SEQUENCE IS SUGGESTED: 00803710
- * MVC SIOSAVE2,SIOSAVE KEEP CONTENT OF STARTIO SAVEAREA 00803780
- * LA R15,BBBBBB IOB OF DVC WHERE MSG IS TO GO. 00803850
- * LA R3,AAAAAA UNIT ADDR OF DVC. 00803920
- * LA R1,CCCCCC ADDR OF CHNL PROG. 00803990
- * BAL R14,STARTIO GO WRITE MSG, THEN RETURN HERE. 00804060
- * LM R14,R4,SIOSAVE2 RESTORE REGISTERS. 00804130
- * STM R14,R4,SIOSAVE AND RESTORE STARTIO SAVE AREA. 00804200
- * IN ADDITION, THE SENSE DATA AND SENSE COUNT WILL HAVE TO BE 00804270
- * SAVED AND RESTORED IF THE ERROR ROUTINE WILL WANT TO LOOK AT 00804340
- * THEM AGAIN AFTER PRINTING THE ERROR MESSAGE. 00804410
- * 00804480
- * INPUTS: 00804550
- * IOBFERP = ALWAYS 1, INDICATING ERROR RECOVERY NOW IN PROGRESS. 00804620
- * IOBFCC3 = IF SET, THEN SIO FOUND THE DVC 'NOT OPERATIONAL', 00804690
- * I.E., SIO GAVE CC=3. 00804760
- * IOBFNRDY = IF SET, SIO WAS REJECTED BY THE DEVICE. PROBABLY 00804830
- * THE DVC WAS 'NOT READY', BUT COULD BE OTHER REASONS 00804900
- * SUCH AS 'EQUIPMT CHK'. IOBCSW & SENSE GIVE DETAILS. 00804970
- * (NOTE: CHNL PROG DID START IF IOBFNRDY & IOBFCC3 =0) 00805040
- * IOBERCNT = RETRY COUNT. CONTAINS 0 WHEN CONTROL IS RECEIVED 00805110
- * HERE ON AN INITIAL ERROR. INCREMENTED BY ONE 00805180
- * AUTOMATICALLY WITH EACH RETRY THEREAFTER. BUT RESET 00805250
- * TO 0 AUTOMATICALLY AFTER A RETRY WITH THE IOBFERP 00805320
- * FLAG TURNED OFF. 00805390
- * IOBCSW = CONTENTS OF CSWS STORED BY THE REQUESTED I/O 00805460
- * OPERATION UP TO THE TIME OF COMPLETION. IF MORE 00805530
- * THAN ONE CSW WAS STORED, THEY ARE 'OR'ED TOGETHER. 00805600
- * SENSE = CONTAINS SENSE DATA. SENSE DATA IS ALWAYS READ JUST 00805670
- * BEFORE AN ERROR ROUTINE IS CALLED, EVEN WHEN THERE 00805740
- * IS NO ERROR STATUS IN THE CSW. 00805810
- * SENSCNT = HALFWORD CONTAINS NUMBER OF SENSE BYTES THAT WERE 00805880
- * ACTUALLY READ INTO 'SENSE' AREA. MAY NOT BE VALID 00805950
- * IN THE EVENT OF A CHANNEL ERROR. OTHERWISE, NUMBER 00806020
- * IS DETERMINED BY THE PARTICULAR DEVICE TYPE, UP TO 00806090
- * THE LIMIT IMPOSED BY LENGTH OF THE 'SENSE' AREA. 00806160
- * IOBRCAW = ADDRESS (CAW) OF THE CHANNEL PROGRAM OF THE LAST 00806230
- * I/O REQUEST OR RETRY. 00806300
- * R3 = UNIT ADDRESS OF THE DEVICE. 00806370
- * R15 = IOB ADDRESS. 00806440
- * R4 = WORK REGISTER. INITIALLY CONTAINS ADDRESS OF THE 00806510
- * ERROR ROUTINE AND COULD SERVE AS A BASE REGISTER 00806580
- * INSTEAD OF A WORK REGISTER. 00806650
- * R0-R2,R14 = WORK REGISTERS. CONTENTS ARE UNDEFINED. 00806720
- * R5-R13 = MUST BE PRESERVED FOR CALLER OF STARTIO. 00806790
- * 00806860
- * OUTPUTS: 00806930
- * IOBFATAL = SET TO 1 MEANS ERROR WAS PERMANENT, RECOVERY WAS 00807000
- * NOT POSSIBLE. 0 MEANS REQUESTED I/O OPERATION WAS 00807070
- * COMPLETED SUCCESSFULLY. 00807140
- * IOBFERP = SET TO 1 MEANS ERROR RECOVERY STILL IN PROGRESS; 00807210
- * ERROR ROUTINE IS TO GET CONTROL BACK AFTER RETRY 00807280
- * EVEN IF SUCCESSFUL. 0 MEANS ERROR ROUTINE GETS 00807350
- * CONTROL ONLY IF THE RETRY FAILS. MUST BE ZEROED IF 00807420
- * BRANCHING TO 'SIORET'. 00807490
- * R1 = IF BRANCHING TO 'RETRYIO', THEN R1 CONTAINS ADDRESS 00807560
- * (CAW) OF A RETRY CHANNEL PROGRAM. OR R1 CAN CONTAIN 00807630
- * 0 TO WAIT FOR AN UNSOLICITED INTERRUPT. 00807700
- * R3 = UNCHANGED. (UNIT ADDRESS OF DEVICE.) 00807770
- * R15 = UNCHANGED. (ADDRESS OF IOB.) 00807840
- * R0,R2,R4,R14 = GARBAGE. (WORK REGISTERS.) 00807910
- * R5-R13 = UNCHANGED. (SHOULD BE PRESERVED FOR THE BENEFIT OF 00807980
- * THE CALLER OF STARTIO.) 00808050
- * IOB = CONTENTS, EXCEPT FOR IOBFATAL AND IOBFERP, CAN BE 00808120
- * REGARDED AS UNDEFINED. 00808190
- * 00808260
- *********************************************************************** 00808330
- EJECT 00808400
- *********************************************************************** 00808470
- * 00808540
- * ERRDASD: DASD I/O ERROR RECOVERY ROUTINE 00808610
- * (ITS INTERFACE IS AS DESCRIBED ABOVE.) 00808680
- * 00808750
- *********************************************************************** 00808820
- ERRDASD OI IOBFLAGS,IOBFATAL LOCAL USE: ASSUME RETRY FAILED@V56BDA8 00808890
- LH R4,IOBERCNT RETRY COUNT. @V56BDA8 00808960
- LTR R4,R4 IS IT INITIAL ERROR (0 RETRIES)? @V56BDA8 00809030
- BZ DASINIT YES, INITIAL ERROR. @V56BDA8 00809100
- TM IOBCSW+5,X'FF' RETRY COMPLETED SUCCESSFULLY? @V56BDA8 00809170
- BNZ DASRFAIL NO. CHANNEL ERROR ON RETRY. @V56BDA8 00809240
- TM IOBCSW+4,255-CE-CUE-DE RETRY WAS SUCCESSFUL? @V56BDA8 00809310
- BNZ DASRFAIL NO. UNUSUAL UNIT STATUS? @V56BDA8 00809380
- NI IOBFLAGS,255-IOBFATAL LOCAL USE: RETRY SUCCEEDED@V56BDA8 00809450
- DASRFAIL DS 0H @V56BDA8 00809520
- ICM R4,15,CONTINAD HAVE A CONTINUATION POINT TO @V56BDA8 00809590
- * PICK UP AT FROM PREVIOUS RETRY? @V56BDA8 00809660
- BCR 7,R4 IF SO, GO THERE NOW. @V56BDA8 00809730
- TM IOBFLAGS,IOBFATAL DID WE DECIDE RETRY SUCCEEDED?@V56BDA8 00809800
- BZ DASXGOOD YES, WE HAVE RECOVERED. @V56BDA8 00809870
- DASINIT XC CONTINAD,CONTINAD ASSUME WE WILL HAVE NO @V56BDA8 00809940
- * CONTINUATION POINT TO PICK UP AT ON 00810010
- * NEXT RETRY. 00810080
- SPACE 00810150
- * DETERMINE IF THE ERROR WAS ONE THAT WE HAVE SPECIAL CODE 00810220
- * TO HANDLE. 00810290
- TM IOBCSW+4,UC IS IT UNIT CHECK? @V56BDA8 00810360
- BZ DASXSAME NO. RETRY SAME CHNL PROGRAM. @V56BDA8 00810430
- TM SENSE,X'40' IS IT INTERVENTION REQUIRED? @V56BDA8 00810500
- BO DASINTQ YES, GO HANDLE. @V56BDA8 00810570
- TM SENSE,X'01' SEEK CHECK? @V56BDA8 00810640
- BO DASEEKCH YES, GO HANDLE. @V56BDA8 00810710
- TM SENSE,X'02' TRACK CONDITION CHECK? @V56BDA8 00810780
- BO DASTRK YES, GO HANDLE. @V56BDA8 00810850
- * 00810920
- * FALL THRU MEANS WE HAVE NO SPECIAL CODE FOR THIS PARTICULAR 00810990
- * ERROR TYPE. SO JUST RETRY THE CHANNEL PROGRAM AS IS. 00811060
- * 00811130
- DASXSAME L R1,IOBRCAW RETRY SAME CHANNEL PROGRAM AGAIN.@V56BDA8 00811200
- DASRETRY CLC IOBERCNT,=H'20' RETRY LIMIT EXCEEDED? @V56BDA8 00811270
- BH DASXBAD YES. TREAT ERROR AS PERMANENT. @V56BDA8 00811340
- B RETRYIO GO RETRY. @V56BDA8 00811410
- SPACE 3 00811480
- DASXGOOD NI IOBFLAGS,255-IOBFATAL INDICATE WE RECOVERED. @V56BDA8 00811550
- DASXBAD NI IOBFLAGS,255-IOBFERP INDICATE END OF ERP. @V56BDA8 00811620
- B SIORET RETURN TO 'STARTIO' ROUTINE. @V56BDA8 00811690
- SPACE 3 00811760
- DASTRK DS 0H HANDLES TRACK CONDITION CHECKS. @V56BDA8 00811830
- * 00811900
- * MUST FIRST DETERMINE CCHH OF LAST SEEK. 00811970
- * 00812040
- L R4,IOBRCAW ADDR OF LAST CHNL PROGRAM. @V56BDA8 00812110
- LA R1,2 COUNT FOR BCT INSTRUCTION. @V56BDA8 00812180
- DASEEKLP CLI 0(R4),X'07' IS FIRST CCW THE SEEK? @V56BDA8 00812250
- BE DASFNDSK YES. IT POINTS TO CCHH. @V56BDA8 00812320
- CLI 0(R4),RCAL MAYBE RECALIBRATE WAS APPENDED? @V56BDA8 00812390
- BNE DASXBAD STRANGE CHNL PROG. GIVE UP. @V56BDA8 00812460
- CLI 8(R4),TIC RECALIBRATE FOLLOWED BY TIC? @V56BDA8 00812530
- BNE DASXBAD STRANGE CHNL PROG. GIVE UP. @V56BDA8 00812600
- L R4,8(0,R4) TIC SHOULD POINT TO SEEK. @V56BDA8 00812670
- BCT R1,DASEEKLP @V56BDA8 00812740
- B DASXBAD STRANGE CHNL PROG. GIVE UP. @V56BDA8 00812810
- SPACE 00812880
- DASFNDSK L R4,0(0,R4) ADDR IN SEEK PTS TO BBCCHH. @V56BDA8 00812950
- MVC DASCCHH1,2(R4) SAVE CCHH OF BAD TRACK. @V56BDA8 00813020
- STCM R4,7,DASHAR0+1 MAKE RCVRY SEEK POINT TO BBCCHH.V56BDA8 00813090
- LA R1,DASHAR0 ADDR OF RCVRY CCWS TO READ HA & @V56BDA8 00813160
- * R0 OF THE DEFECTIVE TRACK. 00813230
- LA R4,DASTRK2 LOCATION TO GET CONTROL... @V56BDA8 00813300
- ST R4,CONTINAD ...AFTER RETRY COMPLETES. @V56BDA8 00813370
- MVC DASFCCW,IOBCSW SAVE ADDR FIELD OF CSW (POINTS @V56BDA8 00813440
- * TO FAILED CCW + 8). 00813510
- B RETRYIO GO RUN RECOVERY CCWS. @V56BDA8 00813580
- SPACE 00813650
- DASTRK2 TM IOBFLAGS,IOBFATAL RECOVERY CCWS RAN OKAY? @V56BDA8 00813720
- BO DASXBAD NO. TREAT AS FATAL. @V56BDA8 00813790
- NI DASHAFLG,X'03' VALIDITY CHECK HA FLAG BYTE. @V56BDA8 00813860
- CLI DASHAFLG,X'02' SHOULD BE 'DEFECTIVE' BIT ONLY. @V56BDA8 00813930
- BNE DASXBAD INVALID. GIVE UP. @V56BDA8 00814000
- CLC DASCCHH1,DASCCHH2 R0 SHOULD NOT POINT TO SELF. @V56BDA8 00814070
- BE DASXBAD INVALID. (NO ALT.) GIVE UP. @V56BDA8 00814140
- L R4,DASFCCW ADDR OF FAILED CCW + 8 (OF THE @V56BDA8 00814210
- * ORIGINAL CHANNEL PROGRAM). 00814280
- SH R4,=H'8' BACK UP TO FAILED CCW. @V56BDA8 00814350
- STCM R4,7,DASALTIC+1 RESTART TIC PTS TO FAILED CCW. @V56BDA8 00814420
- LA R1,DASALTSK RESTART CCWS SEEK TO ALT TRK, @V56BDA8 00814490
- * THEN TIC TO FAILED CCW. 00814560
- NI IOBFLAGS,255-IOBFERP RESTART AS IF THIS IS A @V56BDA8 00814630
- * TOTALLY NEW CHNL PROG; RETRY COUNT 00814700
- * WILL START FROM 0 AGAIN. 00814770
- B RETRYIO GO RESTART. @V56BDA8 00814840
- SPACE 00814910
- DASEEKCH DS 0H HANDLES SEEK CHECKS. @V56BDA8 00814980
- LA R1,DASRECAL WE'LL CHAIN A RECALIB. IN FRONT. @V56BDA8 00815050
- C R1,IOBRCAW ...PROVIDED WE DIDN'T LAST TIME. @V56BDA8 00815120
- BE DASXSAME IT'S THERE ALREADY (AND CHAINING @V56BDA8 00815190
- * IT IN AGAIN WOULD CAUSE A CHNL PRG LOOP). 00815260
- MVC DASRETIC+1(3),IOBRCAW+1 TIC TO FAILED CHNL PRG.@V56BDA8 00815330
- B DASRETRY GO RETRY. @V56BDA8 00815400
- SPACE 00815470
- DASINTQ DS 0H HANDLES INTERVENTION REQUIRED. @V56BDA8 00815540
- MVC DASINTSV,IOBRCAW SAVE ADDR OF FAILED CHNL PRG. @V56BDA8 00815610
- * 00815680
- * SHOULD ISSUE ERROR MSG AT THIS POINT, BUT IT'S TOO MUCH 00815750
- * TROUBLE. JUST HOPE THE USER NOTICES THE RESIDENCE DASD DEVICE 00815820
- * IS 'NOT READY'. IF HE READIES IT, WE WILL WAKE UP FROM THE 00815890
- * WAIT (BELOW) AND RECOVER SUCCESSFULLY. 00815960
- * 00816030
- * NOW WAIT FOR DE INTERRUPT INDICATING DEVICE HAS BEEN READIED. 00816100
- SR R1,R1 INDICATE NO CHNL PRG, JUST WAIT. @V56BDA8 00816170
- LA R4,DASINTQ2 LOCATION TO GET CONTROL... @V56BDA8 00816240
- ST R4,CONTINAD ...AFTER INTERRUPT ARRIVES. @V56BDA8 00816310
- B RETRYIO WAIT FOR INTERRUPT FROM THE @V56BDA8 00816380
- * DEVICE DESIGNATED BY R3. @V56BDA8 00816450
- SPACE 00816520
- DASINTQ2 L R1,DASINTSV ADDR OF ORIG CHNL PRG; RETRY IT. @V56BDA8 00816590
- NI IOBFLAGS,255-IOBFERP RESTART AS IF IT'S A @V56BDA8 00816660
- * TOTALLY NEW CHNL PROG. (0 RETRIES) 00816730
- B RETRYIO GO RESTART. @V56BDA8 00816800
- SPACE 3 00816870
- **************** DATA AREA FOR DASD ERROR RECOVERY RTN **************** 00816940
- DASHAR0 CCW X'07',*-*,CC,6 SEEK TO DEFECTIVE TRACK.@V56BDA8 00817010
- CCW X'1A',DASHAFLG,CC+SILI,1 READ FLAG BYTE OF HA. @V56BDA8 00817080
- CCW X'16',DASCCHH2,SILI,4 READ COUNT OF R0. @V56BDA8 00817150
- DASALTSK CCW X'07',DASBB2,CC,6 SEEK TO ALTERNATE TRACK.@V56BDA8 00817220
- DASALTIC CCW TIC,*-*,0,0 TO INTERRUPTED CHNL PROG@V56BDA8 00817290
- DASRECAL CCW RCAL,0,CC+SILI,1 RCVRY CCWS FOR SEEK CHK.@V56BDA8 00817360
- DASRETIC CCW TIC,*-*,0,0 TIC TO FAILING CHNL PRG.@V56BDA8 00817430
- DASCCHH1 DS F SAVES CCHH ADDR OF DEF. TRACK. @V56BDA8 00817500
- DASBB2 DC X'0000' @V56BDA8 00817570
- DASCCHH2 DS XL4 @V56BDA8 00817640
- DASHAFLG DS XL1 @V56BDA8 00817710
- DASFCCW DS A ADDR OF FAILED CCW+8 (FROM CSW). @V56BDA8 00817780
- ORG DASFCCW DOUBLE UP & SAVE 4 BYTES. @V56BDA8 00817850
- DASINTSV DS A ADDR OF ORIGINAL CHNL PROG. @V56BDA8 00817920
- CONTINAD DS A CONTAINS EITHER 0 OR THE ADDR OF @V56BDA8 00817990
- * A POINT IN THIS ERROR RECOVERY ROUTINE 00818060
- * WHERE WE WANT PROCESSING TO RESUME AFTER 00818130
- * A RETRY. 00818200
- RCAL EQU X'13' SYMBOL FOR RECALIBRATE CCW OPCODE@V56BDA8 00818270
- TIC EQU X'08' SYMBOL FOR TIC CCW OPCODE. @V56BDA8 00818340
- EJECT 00818410
- ********************************************************************** 00819000
- * 00819500
- * ERRHAND: ERROR HANDLER FOR NON-DASD I/O ERROR. 00820000
- * 00820500
- ********************************************************************** 00821000
- SPACE 1 00822000
- ERRHAND EQU * @VM08630 00823000
- NI IOBFLAGS,255-IOBFERP ERROR RTN IS RESPONSIBLE @V56BDA8 00823500
- * FOR TURNING THIS OFF. 00824000
- TM IOBCSW+4,ATTN IS THIS AN ATTENTION INTERRUPT? @V56BDA8 00824500
- BZ CONUNCK NO, GO CHECK FOR UNIT CHECK @VM08630 00825000
- TM PARM,PARMGRP IS THIS A GRAPHIC DEVICE ? @VM08630 00826000
- BZ CONUNCK NO, GO CHECK FOR UNIT EXECPTION @VM08630 00827000
- TM PARM,PARMATT IS THIS AN ATTENTION REQUEST ? @VM08630 00828000
- BO SIORET YES, RETURN TO IN LINE CODE. @V56BDA8 00829000
- CONUNCK EQU * @VM08630 00830000
- L R1,IOBRCAW RETRY SAME CHANNEL PROGRAM. @V56BDA8 00830700
- TM IOBCSW+4,UE IS THIS A UNIT EXCEPTION? @V56BDA8 00831400
- BO RETRYIO YES, RESTART DEVICE. @V56BDA8 00832100
- DIEHERE EQU * @VM08630 00833000
- LPSW BADINPUT INPUT TO SYSTEM INCORRECT @VM08630 00834000
- ********************************************************************* 00835000
- ******************************************************************** 00836000
- SPACE 2 00837000
- ********************************************************************* 00838000
- ATTNHAND EQU * @V200731 00839000
- L R4,GRAPHSAV+24 RESTORE REGISTER 4 @VM08630 00840000
- TM IOBCSW+4,ATTN IS THIS AN ATTENTION INTERRUPT? @V56BDA8 00841000
- BCR 1,R5 YES, RETURN TO IN LINE CODE @VM08630 00842000
- B WAITANY WAITS FOR ANY INTERRUPT. RETURN @V56BDA8 00842200
- * ADDR (TO GRAPHIC0 OR GRAPHIC3) IS STILL 00842400
- * IN R14. GRAPHIC0 OR GRAPHIC3 THEN COMES 00842600
- * HERE AGAIN TO ATTNHAND IMMEDIATELY AND 00842800
- * TESTS DID INTERRUPT HAVE ATTN. IF IT 00843000
- * DIDN'T, WE WAIT AGAIN. NOTE THAT WAITANY 00843200
- * WILL HAVE AN ERROR ROUTINE LOOK AT THE 00843400
- * ATTENTION INTERRUPT BEFORE RETURNING 00843600
- * ON R14. 00843800
- ******************************************************************** 00844000
- EJECT 00844250
- ****************** DATA AREA FOR STARTIO ROUTINE ********************** 00844500
- SENSECNT DS H COUNT OF BYTES IN 'SENSE' FIELD. @V56BDA8 00844750
- SENSECCW CCW X'04',SENSE,SILI,L'SENSE @V56BDA8 00845000
- SENSE DS XL24 SENSE DATA IS READ INTO THIS. @V56BDA8 00845250
- SIOSAVE DS 7F SAVES USER REGS FOR STARTIO. @V56BDA8 00845500
- SPACE 3 00845750
- **CMNT** IOB DSECT @V56BDA8 00846000
- IOBFLAGS DC X'00' BIT FLAGS, EQUATED BELOW, MUST @V56BDA8 00846250
- * BE ZEROES INITIALLY. 00846500
- *------------------ START OF IOBFLAGS BIT EQUATES --------------------- 00846750
- IOBFSTRT EQU X'80' SET TO 1 MEANS REQUESTED I/O @V56BDA8 00847000
- * WAS STARTED. 00847250
- IOBFNRDY EQU X'40' SET TO 1 MEANS SIO WAS BLOCKED BY@V56BDA8 00847500
- * THE DEVICE (DVC NOT READY, ETC). 00847750
- IOBFCC3 EQU X'20' SET TO 1 MEANS DVC 'NOT @V56BDA8 00848000
- * OPERATIONAL' (SIO GAVE CC=3). 00848250
- IOBFERP EQU X'10' SET TO 1 MEANS ERROR RECOVERY IS @V56BDA8 00848500
- * IN PROGRESS. ERROR ROUTINE GETS CONTROL 00848750
- * BACK AFTER EACH I/O RETRY, EVEN IF NO 00849000
- * ERROR. ONLY 'STARTIO' CAN TURN THIS ON. 00849250
- * BUT ERROR ROUTINE MUST EVENTUALLY TURN 00849500
- * IT OFF. 00849750
- IOBFWANY EQU X'08' SET TO 1 MEANS 'WAITANY' WAS @V56BDA8 00850000
- * CALLED AND WE ARE WAITING FOR AN 00850250
- * INTERRUPT FROM ANY DEVICE. 00850500
- IOBFDEW EQU X'04' SET TO 1 MEANS USER WANTS I/O @V56BDA8 00850750
- * OPERATION TO BE REGARDED AS HAVING 00851000
- * COMPLETED WHEN DE STATUS IS PRESENTED 00851250
- * (NORMALLY CE IS REGARDED AS COMPLETION). 00851500
- IOBFATAL EQU X'02' MAY BE SET BY ERROR ROUTINE AND @V56BDA8 00851750
- * RETURNED TO USER TO INDICATE 00852000
- * NON-RECOVERABLE ERROR. 00852250
- *---------------------- END OF BIT EQUATES ---------------------------- 00852500
- IOBRCAW DS F RESTART CAW; PROTECT KEY AND CHNL@V56BDA8 00852750
- * PROGRAM ADDR USED THE LAST TIME EITHER 00853000
- * STARTIO OR RETRYIO WAS GIVEN CONTROL. 00853250
- IOBERROR DS A ADDR OF ERROR RECOVERY RTN OR 0. @V56BDA8 00853500
- DS 0F FOR ALIGNMENT OF IOBCSW. @V56BDA8 00853750
- IOBCSW DS XL8 CSW FROM REQUESTED I/O. RETURNED@V56BDA8 00854000
- * TO CALLER OR PASSED TO ERROR ROUTINE. 00854250
- IOBERCNT DS H ERROR RETRY COUNT. AUTOMATICALLY@V56BDA8 00854500
- * ZEROED WHEN AN INITIAL ERROR CONDITION 00854750
- * IS PASSED TO AN ERROR ROUTINE. IF THE 00855000
- * ERROR ROUTINE GOES TO 'RETRYIO' WITH 00855250
- * THE IOBFERP FLAG SET, THEN THIS COUNTER 00855500
- * IS AUTOMATICALLY INCREMENTED BY ONE EACH 00855750
- * TIME CONTROL IS GIVEN BACK TO THE ERROR 00856000
- * ROUTINE. IF THE ERROR ROUTINE TURNS OFF 00856250
- * THE IOBFERP FLAG THEN THIS COUNT IS 00856500
- * AUTOMATICALLY RESET TO 0 BEFORE THE 00856750
- * ERROR ROUTINE RECEIVES CONTROL AGAIN. 00857000
- SPACE 3 00857250
- ********************************************************************** 00860000
- DISABLE DC X'00' DISABLE ALL INTERRUPTS @VM08630 00861000
- SPACES DC CL6' ' WORK AREA @VM08630 00862000
- INPUT DC CL6' ' WORK AREA @VM08630 00863000
- DS 0D @VM08630 00864000
- BADINPUT DC X'00020000',X'00000027' SYSTEM INPUT INCORRECT @VM08630 00865000
- ENABLAB DC X'FE060000',A(0) ENABLED WAIT STATE. @V56BDA8 00866000
- IOPSW DC X'00040000',A(IOINT) I/O INTERRUPT HANDLER. @V56BDA8 00867000
- MCPSW DC X'00020000',C' MCH' @VM08630 00868000
- PCPSW DC X'00020000',C' PRG' @VM08630 00869000
- SIOERROR DC A(CONINT) FIELD FOR ERROR HANDLER ADDRESS @VM08630 00870000
- CONTBL DC X'00090000' SET UP FOR THE CONSOLE @VM08630 00871000
- RESTBL DC F'00' SET UP FOR THE DASD DEVICE @VM08630 00872000
- DEVBLKS DC V(DMKRIOCH,DMKRIOCU,DMKRIODV) 00873000
- ALLODEV DC A(DMKRIODV) 00874000
- ALLOCU DC A(DMKRIOCU) 00875000
- FFS32 DC 32X'FFFF' CLEAR CONTROL BLOCKS @V200731 00876000
- SPACE 3 00877000
- PRINTER DC AL1(L'PRTADDR) 00878000
- PRTADDR DC C'ENTER PRINTER ADDRESS (CUU):' 00879000
- DC AL1(L'PRTCLS) 00880000
- PRTCLS DC C'ENTER DEVICE TYPE (1403,1443,3211,3203,3800):' @V60B9BA 00881000
- DC C'1403 ',AL1(CLASURO,TYP1403) 00882000
- DC C'1443 ',AL1(CLASURO,TYP1443) 00883000
- DC C'3211 ',AL1(CLASURO,TYP3211) 00884000
- DC C'3203 ',AL1(CLASURO,TYP3203) @V386298 00884100
- DC C'3800 ',AL1(CLASURO,TYP3800) @V60B9BA 00884550
- DC 7X'FF' 00885000
- SPACE 1 00886000
- PUNCH DC AL1(L'PCHADDR) 00887000
- PCHADDR DC C'ENTER PUNCH ADDRESS (CUU):' 00888000
- DC AL1(L'PCHCLS) 00889000
- PCHCLS DC C'ENTER DEVICE TYPE (2540P,3525):' 00890000
- DC C'2540P',AL1(CLASURO,TYP2540P) 00891000
- DC C'3525 ',AL1(CLASURO,TYP3525) 00892000
- DC 7X'FF' 00893000
- SPACE 1 00894000
- READER DC AL1(L'RDRADDR) 00895000
- RDRADDR DC C'ENTER READER ADDRESS (CUU):' 00896000
- DC AL1(L'RDRCLS) 00897000
- RDRCLS DC C'ENTER DEVICE TYPE (2501,2540R,3505):' 00898000
- DC C'2501 ',AL1(CLASURI,TYP2501) 00899000
- DC C'2540R',AL1(CLASURI,TYP2540R) 00900000
- DC C'3505 ',AL1(CLASURI,TYP3505) 00901000
- DC 7X'FF' 00902000
- SPACE 1 00903000
- PIDTAPE DC AL1(L'PIDADDR) 00904000
- PIDADDR DC C'ENTER ADDRESS WHERE PID TAPE IS MOUNTED (CUU):' 00905000
- DC AL1(L'PIDCLS) 00906000
- PIDCLS DC C'ENTER DEVICE TYPE (2401,2415,2420,3420):' 00907000
- DC C'2401 ',AL1(CLASTAPE,TYP2401) 00908000
- DC C'2415 ',AL1(CLASTAPE,TYP2415) 00909000
- DC C'2420 ',AL1(CLASTAPE,TYP2420) 00910000
- DC C'3420 ',AL1(CLASTAPE,TYP3420) 00911000
- DC 7X'FF' 00912000
- SPACE 1 00913000
- BKUPTAPE DC AL1(L'BKUPADDR) 00914000
- BKUPADDR DC C'ENTER ADDRESS WHERE SCRATCH TAPE IS MOUNTED (CUU):' 00915000
- DC AL1(L'BKUPCLS) 00916000
- BKUPCLS DC C'ENTER DEVICE TYPE (2401,2415,2420,3420):' 00917000
- DC C'2401 ',AL1(CLASTAPE,TYP2401) 00918000
- DC C'2415 ',AL1(CLASTAPE,TYP2415) 00919000
- DC C'2420 ',AL1(CLASTAPE,TYP2420) 00920000
- DC C'3420 ',AL1(CLASTAPE,TYP3420) 00921000
- DC 7X'FF' 00922000
- SPACE 1 00923000
- SYSRES DC AL1(L'SYSADDR) 00924000
- SYSADDR DC C'ENTER DEVICE ADDRESS WHERE SYSTEM RESIDENCE WILL BE BUX00925000
- ILT (CUU):' 00926000
- DC AL1(L'SYSCLS+L'SYSDEV) @V2A2029 00927000
- SYSCLS DC C'ENTER DEVICE TYPE ' @V2A2029 00928000
- SYSDEV DC C'(2319,2314,3330,3340,3350,3375,3380,2305):' HRC106DK 00929100
- DC C'2319 ',AL1(CLASDASD,TYP2319) 00930000
- DC C'2314 ',AL1(CLASDASD,TYP2314) 00931000
- DC C'3340 ',AL1(CLASDASD,TYP3340) @V2A2029 00932000
- DC C'3330 ',AL1(CLASDASD,TYP3330) 00933000
- DC C'3350 ',AL1(CLASDASD,TYP3350) @V304498 00934000
- DC C'3375 ',AL1(CLASDASD,TYP3375) HRC106DK 00934100
- DC C'3380 ',AL1(CLASDASD,TYP3380) HRC106DK 00934200
- DC C'2305 ',AL1(CLASDASD,TYP2305) 00935000
- DC 7X'FF' 00936000
- SPACE 1 00937000
- WORKPACK DC AL1(L'WORKADDR) 00938000
- WORKADDR DC C'ENTER ADDRESS WHERE A SCRATCH PACK IS MOUNTED (CUU):' 00939000
- DC AL1(L'WORKCLS) 00940000
- WORKCLS DC C'ENTER DEVICE TYPE (2319,2314,3340,3330):' @V2A2029 00941000
- DC C'2319 ',AL1(CLASDASD,TYP2319) 00942000
- DC C'2314 ',AL1(CLASDASD,TYP2314) 00943000
- DC C'3340 ',AL1(CLASDASD,TYP3340) @V2A2029 00944000
- DC C'3330 ',AL1(CLASDASD,TYP3330) 00945000
- DC 7X'FF' 00946000
- LNGMSG DC AL1(L'STRTMSG+128) @VM08936 00947000
- STRTMSG DC C'VM/370 STARTER SYSTEM RELEASE 6.0' 00948000
- SPACE 2 00949000
- LNGDEF DC AL1(L'DEFINE) 00950000
- DEFINE DC C'***DO YOU WISH TO RE-DEFINE YOUR SYSTEM***(YES,NO):' 00951000
- SPACE 1 00952000
- LNGDEV DC AL1(L'DEVUSED+128) 00953000
- DEVUSED DC C'**ERROR** DEVICE HAS BEEN ALREADY ALLOCATED' 00954000
- SPACE 1 00955000
- COMPLEN DC AL1(L'COMPLINE+128) 00956000
- COMPLINE DC C'***SYSTEM DEFINITION COMPLETED***' 00957000
- SPACE 1 00958000
- LASTLEN DC AL1(L'LASTLINE) 00959000
- LASTLINE DC C'ARE THE ABOVE ENTRIES CORRECT (YES,NO):' 00960000
- SPACE 1 00961000
- BLKLEN DC AL1(L'BLKLINE+128) 00962000
- BLKLINE DC C' ' 00963000
- SPACE 1 00964000
- PRTLEN DC AL1(L'PRTLINE+128) 00965000
- PRTLINE DC C' PRINTER' 00966000
- SPACE 1 00967000
- PCHLEN DC AL1(L'PCHLINE+128) 00968000
- PCHLINE DC C' PUNCH' 00969000
- SPACE 1 00970000
- RDRLEN DC AL1(L'RDRLINE+128) 00971000
- RDRLINE DC C' READER' 00972000
- SPACE 1 00973000
- PIDLEN DC AL1(L'PIDLINE+128) 00974000
- PIDLINE DC C' PID TAPE' 00975000
- SPACE 1 00976000
- TAPLEN DC AL1(L'TAPLINE+128) 00977000
- TAPLINE DC C' SCRATCH TAPE' 00978000
- SPACE 1 00979000
- RESLEN DC AL1(L'RESLINE+128) 00980000
- RESLINE DC C' NEW SYSTEM RESIDENCE' 00981000
- SPACE 1 00982000
- PACKLEN DC AL1(L'PACKLINE+128) 00983000
- PACKLINE DC C' SCRATCH PACK' 00984000
- SPACE 00985000
- SNSAREA DC XL24'00' @V2A2029 00986000
- SPACE 1 00987000
- SPACE 1 00988000
- SKADR DS 0H @V304498 00989000
- BIN DC X'0000' 00990000
- CYL DC X'0000' 00991000
- HEAD DC X'0000' 00992000
- REC DC X'00' 00993000
- SPACE 00994000
- * THE DMKRIO MODULE MUST BE BETWEEN ADDRESS X'3000' AND X'F000' 00995000
- * AND MUST START ON A PAGE BOUNDARY 00996000
- DS 0F 00997000
- * HEAD AND RECORD NUMBER FOR 2314 DEVICE 00998000
- PAGE2314 DC AL1(00,01,00,02,01,03,01,04,02,05) 00999000
- DC AL1(03,06,03,07,04,08,05,09,05,10) 01000000
- DC AL1(06,11,06,12,07,13,08,14,08,15,09,16) 01001000
- SPACE 01002000
- DS 0F @V2A2029 01003000
- * HEAD AND RECORD NUMBER FOR 3340 DEVICE 01004000
- PAGE3340 DC AL1(00,01,00,02,01,03,01,04,02,05) @V2A2029 01005000
- DC AL1(02,06,03,07,03,08,04,09,04,10) @V2A2029 01006000
- DC AL1(05,11,05,12,06,13,06,14,07,15,07,16) @V2A2029 01007000
- SPACE 01008000
- DS 0F 01009000
- * HEAD AND RECORD NUMBER FOR 3330 DEVICE 01010000
- PAGE3330 DC AL1(00,01,00,02,00,03,01,04,01,05) 01011000
- DC AL1(01,06,02,07,02,08,02,09,03,10) 01012000
- DC AL1(03,11,03,12,04,13,04,14,04,15,05,16) @V200731 01013000
- DS 0F @V304498 01014000
- * HEAD AND RECORD NUMBER FOR 3350 DEVICE 01015000
- PAGE3350 DC AL1(00,01,00,02,00,03,00,04,01,05,01,06) @V304498 01016000
- DC AL1(01,07,01,08,02,09,02,10,02,11,02,12) @V304498 01017000
- DC AL1(03,13,03,14,03,15,03,16) @V304498 01018000
- * Head and record number for 3375 device HRC106DK 01018100
- PAGE3375 DC AL1(00,01,00,02,00,03,00,04) HRC106DK 01018150
- DC AL1(00,05,00,06,00,07,00,08) HRC106DK 01018200
- DC AL1(01,09,01,10,01,11,01,12) HRC106DK 01018250
- DC AL1(01,13,01,14,01,15,01,16) HRC106DK 01018300
- * Head and record number for 3380 device HRC106DK 01018350
- PAGE3380 DC AL1(00,01,00,02,00,03,00,04) HRC106DK 01018400
- DC AL1(00,05,00,06,00,07,00,08) HRC106DK 01018450
- DC AL1(00,09,00,10,01,11,01,12) HRC106DK 01018500
- DC AL1(01,13,01,14,01,15,01,16) HRC106DK 01018550
- ******************************************************************** 01019000
- EJECT 01020000
- DS 0H @V60A6B6 01020080
- ADDR1 DC X'5B5F' LOCATION LINE 22, COL 80 @V60A6B6 01020160
- ADDR2 DC X'5D6B' LOCATION LINE 24, COL 60 @V60A6B6 01020240
- ADDR3 DC X'D65F' LOCATION LINE 18, COL 80 @V60A6B6 01020320
- ADDR4 DC X'D86B' LOCATION LINE 20, COL 60 @V60A6B6 01020400
- ADDR5 DC X'4040' INITIALIZED FOR CURSOR CHECK @V60A6B6 01020480
- ADDR6 DC X'5B60' LOCATION LINE 23 COL 01 @V60A6B6 01020560
- ADDR7 DC X'D660' LOCATION LINE 19 COL 01 @V60A6B6 01020640
- MAXLEN DC F'0000' @V60A6B6 01020720
- LEN3270 DC F'1760' SCREEN FOR 3270 = 1760 @V60A6B6 01020800
- LEN3278 DC F'1440' SCREEN FOR 3278 MOD2A = 1440 @V60A6B6 01020880
- ********************************************************************* 01021000
- * CCWS FOR 3215/3210 AND DASD DEVICES 01022000
- ********************************************************************* 01023000
- DS 0D @V200731 01024000
- SPACE 2 01026000
- DSKPROG CCW X'07',SKADR,CC+SILI,6 @V200731 01027000
- CCW X'31',SKADR+2,CC+SILI,5 @V200731 01028000
- CCW X'08',*-8,CC+SILI,1 @V200731 01029000
- CCW X'05',DMKRIO,SILI,4096 @V200731 01030000
- SPACE 2 01031000
- RD3210 CCW X'0A',*-*,SILI+CC,140 READ WITH CARRIAGE RETN. @V200731 01032000
- CCW X'03',*-*,SILI,1 @V200731 01033000
- SPACE 2 01034000
- WRT3210 CCW X'01',*-*,SILI+CC,140 WRITE WITH NO CARRIAGE @V200731 01035000
- * RETN 01036000
- CCW X'03',*-*,SILI,1 @V200731 01037000
- SPACE 2 01038000
- WRT3210A CCW X'09',*-*,SILI+CC,140 WRITE WITH CARRIAGE RETN @V200731 01039000
- CCW X'03',*-*,SILI,1 @V200731 01040000
- SPACE 2 01041000
- ********************************************************************* 01042000
- SPACE 2 01043000
- ********************************************************************** 01044000
- * GRAPHIC SUPPORT CCWS 01045000
- ********************************************************************** 01046000
- CRTWORD CCW X'27',SBACP,SILI+CC,2 SET BAR TO (STATUS WORD) @V200731 01047000
- CCW X'01',CPXYSTAT,SILI+CC,20 WRITE 'RUNNING' ON @V200731 01048000
- * SCREEN 01049000
- CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR @V200731 01050000
- * WRITE 01051000
- CCW X'01',BLNKZERO,SILI+CC,140 CLEAR INPUT AREA @VM08630 01052000
- CURS3066 CCW X'0F',SBAREAD,SILI+CC,2 REPOSITION CURSOR @V200731 01053000
- CCW X'03',*-*,SILI,3 END OF READ CCW STRING @V200731 01054000
- SPACE 2 01055000
- CRTWORD1 CCW X'01',LAB3270A,SILI+CC,LEN THE CONTROL DATA @VM08630 01056000
- CCW X'03',*-*,SILI,2 @V200731 01057000
- SPACE 2 01058000
- REQREAD CCW X'27',SBACP,SILI+CC,2 SET BUFFER ADDR TO CP X-Y @V200731 01059000
- CCW X'01',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 01060000
- CCW X'08',CURS3066,SILI,1 RESET CURSOR POSITION @V200731 01061000
- SPACE 2 01062000
- REQREAD1 CCW X'01',LAB3270B,SILI+CC,LEN1 THE CONTROL DATA @VM08630 01063000
- CCW X'03',*-*,SILI,2 @V200731 01064000
- SPACE 2 01065000
- ERSE3066 CCW X'07',*-*,SILI+CC,1 ERASE ENTIRE SCREEN @V200731 01066000
- WRTCRTXY CCW X'27',SBADDR,SILI+CC,2 SET CORRECT LINE @V200731 01067000
- WRT3066 CCW X'01',*-*,SILI+CC,140 WRITE OUT USER DATA @V200731 01068000
- CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 01069000
- SPACE 2 01070000
- ERSE3270 CCW X'05',LAB3270E,SILI+CD,LEN3 ERASE THE SCREEN @VM08936 01071000
- CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 01072000
- WRTCRT70 CCW X'01',LAB3270,SILI+CD,4 THE CONTROL DATA @V200731 01073000
- WRTCR70 CCW X'00',*-*,SILI+CD,0 THE WRITE CCW @V200731 01074000
- CCW X'00',LAB3270A+1,SILI+CC,LEN-1 WRITE STATUS @V200731 01075000
- CCW X'03',*-*,SILI,2 @V200731 01076000
- SPACE 2 01077000
- RDMI3066 CCW X'0E',RDMIDATA,SILI+CC,3 READ CCW FOR MI COMMAND@V200731 01078000
- RD3066 CCW X'27',SBAREAD,SILI+CC,2 SET BUFFER ADDR FOR READ@V200731 01079000
- RD3066DA CCW X'06',*-*,SILI+CC,140 READ INPUT DATA @V200731 01080000
- CCW X'08',CURS3066,SILI,1 REPOSITION CURSOR @V200731 01081000
- SPACE 2 01082000
- RDMI3270 CCW X'01',LAB3270D,SILI+CC,4 @V200731 01083000
- RD3270DA CCW X'06',*-*,SILI+CC,0 THE CCW FOR READ @V200731 01084000
- CCW X'03',*-*,SILI,2 @V200731 01085000
- SPACE 2 01086000
- CNCL3270 CCW X'01',LAB3270E,SILI+CD,LEN3 THE CONTROL DATA @V200731 01087000
- CCW X'00',CPXYSTAT,SILI+CC,20 WRITE SCREEN STATUS @V200731 01088000
- CCW X'03',*-*,SILI,2 @V200731 01089000
- SPACE 2 01090000
- CNCL3066 CCW X'07',*-*,SILI+CC,1 ERASE SCREEN @V200731 01091000
- CCW X'08',CRTWORD,SILI,1 NOW DISPLAY STATUS @V200731 01092000
- SPACE 2 01093000
- HOLDCCW1 CCW X'01',LAB3270C,SILI+CC,LEN2 THE CONTROL DATA @V200731 01094000
- CCW X'03',*-*,SILI,2 @V200731 01095000
- SPACE 2 01096000
- ********************************************************************** 01097000
- ********************************************************************* 01098000
- * FIRST DC ARE ADDRESSES FOR LINES 1 -6 01099000
- * SECOND DC ARE ADDRESSES FOR LINES 7 - 12 01100000
- * THIRD DC ARE ADDRESSES FOR LINES 13 - 18 01101000
- * FOURTH DC ARE ADDRESSES FOR LINES 19 - 24 01102000
- ********************************************************************* 01103000
- SPACE 2 01104000
- TABLE70 DS 0D @V200731 01105000
- DC X'4040C150C260C3F0C540C650' @V200731 01106000
- DC X'C760C8F04A404B504C604DF0' @V200731 01107000
- DC X'4F405050D160D2F0D440D550' @V200731 01108000
- DC X'D660D7F0D9405A505B605CF0' @V200731 01109000
- SPACE 1 01110000
- * X'5B60' - LINE 23, COL. 1 01111000
- * X'5D6A' - LINE 24, COL. 59 01112000
- SPACE 2 01113000
- ********************************************************************** 01114000
- WC6 EQU X'C2' WRITE CONTROL BIT 6 @V200731 01115000
- AT7 EQU X'C1' ATTRIBUTE BIT 7 @V200731 01116000
- AT2 EQU X'E0' ATTRIBUTE BIT 2 @V200731 01117000
- LAC EQU X'C0' @V200731 01118000
- SF EQU X'1D' START OF FIELD CONTROL @V200731 01119000
- SBA EQU X'11' SET BUFFER ADDRESS @V200731 01120000
- IC EQU X'13' INSERT CURSOR @V200731 01121000
- EUA EQU X'12' ERASE UNPROTECTED @V200731 01122000
- RA EQU X'3C' REPEAT TO ADDRESS @V200731 01123000
- *********************************************************************** 01123100
- SPACE 3 01123200
- X01 EQU X'01' INDICATE DEVICE TYPE 3278 @V60A6B6 01123300
- X0C EQU X'0C' DISPLACEMENT FOR 3278 @V60A6B6 01123400
- X2A EQU X'2A' MODEL NUMBER FOR 3278 @V60A6B6 01123500
- SPACE 2 01124000
- LAB3270A DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 01125000
- DC AL1(IC),AL1(EUA),X'5D6B',AL1(SF),AL1(AT2) @V200731 01126000
- RUNLABEL DC CL20'RUNNING' @V200731 01127000
- LEN EQU *-LAB3270A @V200731 01128000
- LAB3270B DC AL1(WC6),AL1(SBA),X'5B60',AL1(SF),AL1(AT7) @V200731 01129000
- DC AL1(IC),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 01130000
- REALABEL DC CL20'CP READ' @V200731 01131000
- LEN1 EQU *-LAB3270B @V200731 01132000
- LAB3270C DC AL1(WC6),AL1(SBA),X'5D6B',AL1(SF),AL1(AT2) @V200731 01133000
- HOLLABEL DC CL20'HOLDING' @V200731 01134000
- LEN2 EQU *-LAB3270C @V200731 01135000
- LAB3270D DC AL1(LAC),AL1(SBA),X'5B60' @V200731 01136000
- LAB3270 DC AL1(WC6),AL1(SBA),X'0000' @V200731 01137000
- LAB3270E DC AL1(WC6),AL1(SBA),X'4040',AL1(RA),X'5B60',X'00' @V200731 01138000
- DC AL1(SF),AL1(AT7),AL1(IC),AL1(SBA) @V200731 01139000
- DC X'5D6B',AL1(SF),AL1(AT2) @V200731 01140000
- LEN3 EQU *-LAB3270E @V200731 01141000
- SPACE 2 01142000
- ********************************************************************* 01143000
- PARM DC X'00' THE GRAPHIC FLAG BYTE @V200731 01144000
- PARMATT EQU X'80' ATTENTION REQUEST @VM08630 01145000
- PARMGRP EQU X'40' GRAPHIC SUPPORT @VM08630 01146000
- PARMREA EQU X'20' READ REQUEST @VM08630 01147000
- PARMCLE EQU X'10' CLEAR/ERASE REQUEST @VM08630 01148000
- PARM327 EQU X'08' 3270 GRAPHIC DEVICE @VM08630 01149000
- PARMNAUT EQU X'04' NO CARRIAGE RETURN @VM08630 01150000
- PARM01F EQU X'02' 01F REQUEST @VM08630 01151000
- PARM321 EQU X'01' 3215/3210/1052 @VM08630 01152000
- PARM2 DC X'00' SIO SWITCHES @VM08630 01153000
- PARMNDA EQU X'40' NO DATA INDICATED @VM08630 01155000
- ********************************************************************** 01156000
- SPACE 2 01157000
- ********************************************************************* 01158000
- SBADDR DC AL1(00,00) CURRENT OUTPUT LINE COORDINATES @V200731 01159000
- SBACP DC AL1(34,60) COORDINATES FOR SCREEN 'STATUS' @V200731 01160000
- SBAREAD DC AL1(33,00) COORDINATES FOR CURSOR POSITION @V200731 01161000
- RDMIDATA DC XL3'00' READ DATA FROM 'MI' COMMAND @V200731 01162000
- CPXYSTAT DC CL20' ' SCREEN 'STATUS' WORD @V200731 01163000
- BLNKLINE DC XL140'00' CLEAR INPUT AREA @VM08630 01164000
- BLNKZERO DC CL140' ' BLANKS FOR READ AREA @VM08630 01165000
- GRAPHSAV DC 8F'00' SAVE AREA FOR GRAPHIC SUPPORT @V200731 01166000
- ********************************************************************* 01167000
- EJECT 01168000
- LTORG @V200731 01169000
- EJECT 01170000
- COPY RBLOKS @V200731 01171000
- COPY DEVTYPES 01172000
- COPY EQU 01173000
- COPY SAVE 01174000
- PSA 01175000
- END 01176000
ibm/vm370-lib/cp/dmkssp.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator