GRF TITLE 'DMKGRF (CP) VM/370 - RELEASE 6' 00001000 ISEQ 73,80 VALIDATE INPUT SERIALIZATION @VM08590 00002000 COPY OPTIONS @V200730 00003000 COPY LOCAL @V200730 00004000 EJECT 00005000 DMKGRF CSECT @V200730 00006000 *. 00007000 * MODULE NAME - 00008000 * 00009000 * DMKGRF 00010000 * 00011000 * FUNCTION - 00012000 * 00013000 * TO PROVIDE SUPPORT FOR GRAPHIC DISPLAY DEVICES 00014000 * THIS MODULE SUPPORTS THE LOCAL 3270 AND 3066 DEVICES 00015000 * THE MODULE HANDLES INTERRUPTS AND CCW PROCESSING 00016000 * FOR THE DEVICES INCLUDING MESSAGE HANDLING AND 00017000 * SCREEN MANAGEMENT. 00018000 * 00019000 * ATTRIBUTES - 00020000 * 00021000 * RE-ENTERABLE, RESIDENT IF REAL MACHINE CONFIGURATION 00022000 * INDICATES THAT 3270 OR 3066 DEVICES ARE AVAILABLE 00023000 * 00024000 * ENTRY POINTS - 00025000 * 00026000 * DMKGRFIN - TO HANDLE INTERUPT VIA IOBLOK 00027000 * DMKGRFEN - TO ENABLE OR DISABLE DEVICE 00028000 * DMKGRFIC - TO START CONTASK FROM DMKQCN 00029000 * DMKGRFTI - PROCESS CLOCK COMPARATOR TIMER INTERRUPTS 00029500 * 00030000 * ENTRY CONDITIONS - 00031000 * 00032000 * R10 - ADDRESS OF IOBLOK 00033000 * R12 - ADDRESS OF ENTRY POINT 00034000 * 00035000 * EXIT CONDITIONS - 00036000 * 00037000 * NORMAL RETURN IS TO DMKDSPCH AFTER STARTING ANY 00038000 * QUEUED CONTASK REQUESTS FOR DEVICES AND PERFORMING 00039000 * OTHER MESSAGE PROCESSING 00040000 * 00041000 * CALLS TO OTHER ROUTINES - 00042000 * 00043000 * DMKIOSQR - TO START IO ON DEVICES 00044000 * DMKSCNRU - TO LOCATE REAL DEVICE BLOKS 00045000 * DMKQCNCL - TO CLEAR CONTASK STACK AT LOGOUT 00046000 * DMKCFMBK - TO ENTER CONSOLE FUNCTION MODE 00047000 * DMKSTKCP - TO STACK CPEXBLOK 00048000 * DMKSTKMP - TO STACK CPEXBLOKS FOR THE CURRENT PROCESSOR 00048100 * DMKCNSED - TO EDIT AN INPUT LINE IF OPTION ON 00049000 * DMKBLDVM - TO BUILD A VMBLOK FOR USER LOGON 00050000 * DMKSCHRT - TO RESET A TIMER REQUEST 00051000 * DMKSCHST - TO SET A TIMER REQUEST 00052000 * DMKMSWR - TO WRITE AN ERROR MESSAGE 00053000 * DMKSCNRD - TO GET REAL DEVICE ADDRESS 00054000 * DMKQCNET - TO RETURN CONTASK AT COMPLETEION 00055000 * DMKQCNTO - TO SLEEP USER AFTER GRAF ERROR 00056000 * DMKIOERR - TO RECORD AN IO ERROR 00057000 * DMKCFMEN - TO EXECUTE A CP CONSOLE FUNCTION 00058000 * DMKCFMAT - TO POST AN ATTN INTERRUPT TO THE VM 00059000 * DMKSCNVU - TO LOCATE THE VIRTUAL CONSOLE 00060000 * DMKCPIEM - FOR EMERGENCY OPERATOR LOGON 00061000 * DMKIOEST - TO CAUSE THE UPDATE OF STATISTICAL DATA COUNTERS 00061100 * DMKLOKSW - SWITCH TO ANOTHER VMBLOK IF SYSTEM IS AP-MODE 00061200 * DMKPTRAN - TO BRING IN THE TRANSLATE TABLE 00061300 * DMKBOXMD - LIST OF LOGOS MDL 2, 3, 4, 2A HRC101DK 00061440 * DMKGRTAB - TO BUILD DATA TO MOVE CURSOR AND PUT IN TAB CHAR 00061500 * 00062000 * EXTERNAL REFERENCES - 00063000 * 00064000 * DMKTBLUP - TRANLATE TO UPPER CASE TABLE 00065000 * DMKTBMZI - APL 3270 COMPOUND CHARACTER TABLE 00065200 * DMKTBMZO - APL 3270 COMPOUND CHARACTER TABLE 00065400 * DMKTBMTI - TEXT 3270 COMPOUND CHARACTER TABLE 00065600 * DMKTBMTO - TEXT 3270 COMPOUND CHARACTER TABLE 00065800 * DMKRIOCN - SYSTEM CONSOLE ADDRESSES 00066000 * DMKSYSNM - NUMBER OF USERS LOGGED ON 00067000 * DMKGRTAI - TABLE OF ATTENTION IDENTIFICATION CODES 00067100 * DMKGRTAC - COUNT OF ENTRIES IN DMKGRTAI HRC029DK 00067150 * DMKGRTBL - TABLE OF 3270 STARTING BUFFER ADDRESSES 00067200 * DMKGRTDS - DISPLAY OUTPUT AREA SIZES TABLE 00067300 * DMKGRTFD - FORMAT DATA STREAM 00067400 * DMKGRTFO - 'VM/370 ONLINE' DATA ADDRESS 00067500 * DMKGRTIN - INPUT AREA COORDINATES TABLE 00067600 * DMKGRTPF - START OF PF AID CODES IN DMKGRTAI TABLE 00067700 * DMKGRTP6 - ADDRESS OF PF6 CODE IN DMKGRTAI TABLE 00067800 * 00068000 * TABLES AND WORK AREAS - 00069000 * 00070000 * TRQBLOK CONTROL BLOCK IS EXTENDED BY 1 DOUBLE WORD 00071000 * TO CONTAIN EXTRA CONTROL DATA FOR THE DEVICES 00072000 * THE BLOCK EXISTS FROM INITIAL ENABLE TO LOGOUT 00073000 * 00074000 * DMKGRTBL IS USED TO INDEX FOR THE SCREEN BUFFER ADDRESSES 00075000 * 00076000 * REGISTER USAGE - 00077000 * 00078000 * R5 - TRQBLOK ADDRESSING, INCLUDING EXTENSION 00079000 * R6 - CONTASK BLOK ADDRESSING 00080000 * R7 - CPEXBLOK ADDRESSING 00081000 * R8 - RDEVBLOK ADDRESSING 00082000 * R9 - EXTENDED BASE ADDRESSING 00082100 * R10 - IOBLOK ADDRESSING 00083000 * R11 - VMBLOK ADDRESSING 00084000 * R12 - BASE ADDRESSING FOR MODULE 00085000 * R13 - EXTENDED BASE ADDRESSING 00086000 * OTHER REGISTERS USED FOR LINKAGE AND PARAMETERS 00087000 * 00088000 * NOTES - 00089000 * 00090000 * NONE 00091000 * 00092000 * OPERATION - 00093000 * 00094000 * EXECUTION FOR ALL ENTRIES MUST BE ON THE I/O PROCESSOR IF 00094100 * THE SYSTEM IS IN AP-MODE. 00094200 SPACE 00094300 * CONTROL IS RECEIVED AT DMKGRFIN FROM DMKDSPCH 00095000 * BY UNSTACKING AN IOBLOK. 00096000 * CONTROL IS RECEIVED AT DMKGRFEN FROM DMKDSPCH 00097000 * BY UNSTACKING A CPEXBLOK FROM DMKCPV 00098000 * CONTROL IS RECEIVED AT DMKGRFIC FROM DMKDSPCH 00099000 * BY UNSTACKING A CPEXBLOK FROM DMKQCN 00100000 * 00101000 * THE IOBLOK IS USED TO PERFORM THE PROCESSING OF ALL 00102000 * IO REQUESTS TO THE DEVICE INCLUDING WRITES OF DATA, 00103000 * READS OF INPUT DATA, AND THE WRITING OF STATUS WORDS. 00104000 * 00105000 * THE DIFFERENT PROCESSING ROUTINES ARE DETERMINED 00106000 * BY THE AUXILIARY RETURN PROCESSING ADDRESS WHICH IS 00107000 * SET IN THE TRQBLOK EXTENSION CALLED TRQBCRT. 00108000 * 00109000 * THE FOLLOWING SECTIONS STATE THE ACTION TAKEN FOR 00110000 * VARIOUS DEVICE CONDITIONS. 00111000 * 00112000 * 1. ATTENTION INTERRUPT 00113000 * GET A FREE STORAGE BLOCK FOR THE READ CCW AND A BUFFER 00114000 * FOR THE READ DATA. CALL DMKIOS TO PERFORM A READ. 00115000 * ANALYSE THE DATA UPON RETURN. 00116000 * THE RETURN PROCESSING IS HANDLED BY RDMINT. 00117000 * 00118000 * 2. CE+DE INTERRUPT 00119000 * PICKUP THE AUXILIARY PROCESSING ADDRESS AND CONTINUE. 00120000 * THE PROCESSING ROUTINES FOR VARIOUS STATES ARE: 00121000 * 00122000 * CONRETBF - COMPLETION OF A WRITE CONTASK 00123000 * RDMINT - COMPLETION OF A BUFFER READ 00124000 * GRFCFM - TO EXECUTE CONSOLE FUNCTION 00125000 * SETREJ - TO SET NOT ACCEPTED TIMER 00126000 * SETMOR - TO SET MORE... TIMER DELAY 00127000 * SETWNG - TO SET 10 SECOND CLEAR WARNING 00128000 * RDEXIT _ TO CLEAR BUFFERS AFTER PF KEYS 00129000 * STRTREAD - TO SET READ STATUS 00130000 * NOCTL - TO PROCESS NEXT CONTASK OR GO IDLE 00131000 * 00132000 * 3. WRITE COMPLETE 00133000 * FRET CONTASK AND BUFFERS. 00134000 * SIGNOFF IF LOGOUT COMPLETE. 00135000 * CONTINUE WITH NEXT CONTASK. 00136000 * 00137000 * 4. UNIT ERROR 00138000 * RETRY OPERATION 10 TIMES. 00139000 * LOGOUT USER AFTER RETRY FAILS. 00140000 * 00141000 * 5. CNCL (PA2) KEY, CLEAR KEY 00142000 * FRET READ BUFFERS. 00143000 * RESET ANY TIMER REQUESTS. 00144000 * IF CLEAR KEY,SET ERASE/WRITE ALTERNATE FLAG 00144100 * CLEAR OUTPUT SCREEN AREA. 00145000 * CONTINUE WITH NEXT CONTASK. 00146000 * 00147000 * 6. PA1 KEY 00148000 * CANCEL FUNCTION BY RETURN CODE 4 0R 8. 00149000 * CLEAR SCREEN 00150000 * CLEAR THE STACK OF CONTASKS. 00151000 * 00152000 * 6A. PF KEYS 00153000 * GET THE USERS FUNCTION TABLE VMPFUNC 00154000 * GET AND VERIFY THE EXISTENCE OF A FUNCTION 00155000 * WRITE UNDEFINED MESSAGE IF NOT FOUND 00156000 * WRITE FUNCTION DATA IF FOUND AND DELAYED 00157000 * PROCESS DATA IF IMMEDIATE 00158000 * CALL DMKGRTAB TO BUILD TAB DATA IF PF KEY IS TAB 00158100 * SET RETURN TO FRET BUFFERS AT WRITE COMPLETE 00159000 * 00160000 * 6B. COPY COMMAND 00161000 * CHECK FOR DEFAULT AND SEARCH FOR VALID 00162000 * 3270 PRINTER 00163000 * CHECK IF PRINTER BUSY 00164000 * READ BUFFER FROM DISPLAY 00165000 * WRITE BUFFER TO PRINTER 00166000 * 00167000 * 7. READ RETURN, ENTER KEY 00168000 * ANALYSE DATA IN BUFFER TO GET LENGTH. 00169000 * IF DATA ENTERED FROM READ STATE CONT AT RDATA. 00170000 * IF ENTERED FROM RUNNING PROCESS BY ENVIR SETTING. 00171000 * NULL DATA GIVES ATTN TO VM, OR ENTER CP MODE. 00172000 * 00173000 * DATA ENTERED GOES TO VM OR EXECUTES CONSOLE FUNCTION. 00174000 * DATA ENTERED IS RE-DISPLAYED UNLESS PRIVATE. 00175000 * DATA THAT IS ALREADY PENDING CAUSES 'NOT ACCEPTED'. 00176000 * IF VIRT DATA IS #CP EXECUTE FUNCTION. 00177000 * RDATA ENTRY FOR RESPONSE TO READ REQUEST PASSES 00178000 * BUFFER DATA BACK TO CALLER WITH LENGTH INDICATION. 00179000 * 00180000 * 8. TIMER INTERRUPT 00181000 * REBUILD IOBLOK AND RESTORE STATUS IF NOT ACCEPTED. 00182000 * CLEAR OUTPUT AREA , CONTINUE TO NEXT CONTASK IF MORE. 00183000 * 00184000 * 9. BLDCCWS 00185000 * ENTERED TO BUILD CCWS FOR A WRITE OR A READ CONTASK. 00186000 * READ CONTASK CONTINUES AT STRTREAD. 00187000 * WRITE CONTASK CHECKS FOR SCREEN FULL. 00188000 * SCREEN FULL CAUSES A 'MORE...' STATUS. 00189000 * 00190000 *. 00191000 EJECT 00192000 SPACE 00193000 USING PSA,R0 @V200730 00194000 USING TRQBLOK,R5 @V200730 00195000 USING CONTASK,R6 @V200730 00196000 USING CPEXBLOK,R7 @V200730 00197000 USING RDEVBLOK,R8 @V200730 00198000 USING IOBLOK,R10 @V200730 00199000 USING VMBLOK,R11 @V200730 00200000 SPACE 00201000 SPACE 00202000 EXTRN DMKIOSQR,DMKSCNRU,DMKQCNCL,DMKCFMBK @V200730 00203000 EXTRN DMKSTKCP,DMKCNSED,DMKSTKIO @V200730 00204000 EXTRN DMKBLDVM,DMKRIOCN,DMKCPIEM,DMKSYSNM @V200730 00205000 EXTRN DMKSCHRT,DMKSCHST,DMKCVTBD @V200730 00206000 EXTRN DMKMSWR,DMKIOERR,DMKSCNRD,DMKCVTAB @V60A6B6 00207000 EXTRN DMKQCNET,DMKQCNTO @V200830 00208000 EXTRN DMKIOEST @VA03757 00208100 EXTRN HDKD8CEN Issue READ PARTITION QRYHRC072DK 00208150 EXTRN DMKGRTCL,DMKGRTCF HRC073DK 00208250 EXTRN DMKCFMEN,DMKCFMAT,DMKSCNVU @V200730 00209000 EXTRN DMKCVTBH,DMKCVTHB,DMKTBLUP,DMKCVTDB @V305798 00210000 EXTRN DMKTBLGL,DMKTBMZI,DMKTBMZO @VA08002 00211050 EXTRN DMKTBMTI,DMKTBMTO @V387398 00211100 EXTRN DMKPTRAN,DMKSTKMP,DMKQCNWT @V407508 00211300 EXTRN DMKGRTAB,DMKGRTAI,DMKGRTBL @V60A6B6 00211600 EXTRN DMKGRTAC HRC029DK 00211650 EXTRN DMKBOXMD HRC101DK 00211720 EXTRN DMKGRTDS,DMKGRTFD,DMKGRTFO HRC101DK 00211740 EXTRN DMKGRTIN,DMKGRTPF,DMKGRTP6 @V60A6B6 00211800 EXTRN DMKGRTBF TABLE OF LAST CHARACTERS HRC310DK 00211850 SPACE 2 00211900 ENTRY DMKGRFIN,DMKGRFEN,DMKGRFIC,DMKGRFTI HRC101DK 00212490 EJECT 00213000 USING *,R12 @V200730 00214000 DMKGRFIN DS 0H ENTRY FOR I/O INTERRUPTS @V200730 00215000 L R9,MODBAS1 LOAD 3RD REG FOR ADDRESSABILITY @V407508 00215100 LM R12,R13,MODBASE @V200730 00216000 USING DMKGRF,R12,R13,R9 ESTABLISH ADDRESSABILITY @V407508 00217100 SPACE 00218000 SWITCH CONTINUE PROCESSING ON MAIN PROC @V407508 00218100 TM IOBRADD,X'80' Is this a LDEV? HRC065DK 00218200 BO LDEV000 Yes HRC065DK 00218300 LH R1,IOBRADD ADDRESS OF INTERRUPTING DEVICE @V200730 00219000 CALL DMKSCNRU LOCATE ALL REAL DEVICE BLOCKS @V200730 00220000 B LDEV010 Skip over LDF support HRC065DK 00220100 * 00220150 LDEV000 EQU * HRC065DK 00220200 L R8,INSTWRD1 -> LDEVCTL HRC065DK 00220250 USING LDEVCTL,R8 HRC065DK 00220300 ICM R1,3,IOBRADD Get LDEV number HRC065DK 00220350 N R1,F4095 Keep only the LDEV num HRC065DK 00220400 SLL R1,2 Make into LDEV slot idx HRC065DK 00220450 L R8,LDEVIDX(R1) -> LDEVBLOK for LDEV HRC065DK 00220500 USING RDEVBLOK,R8 Pseudo-RDEVBLOK for LDEVHRC065DK 00220550 * begins at offset 0, HRC065DK 00220600 * e.g., -> R8 HRC065DK 00220650 LDEV010 EQU * HRC065DK 00220700 CLI RDEVTYPE,TYP3066 IS IT A 3066 ?? @V200730 00221000 BE GRFGO YES, CONT @V200730 00222000 TM RDEVTYPE,TYP3277+TYP3278 3270 DISPLAY ?? @V60A6B6 00223000 BNZ GRFGO YES, CONT @V60A6B6 00224000 CLI RDEVTYPE,TYP3284 IS IT 3270 PRINTER ? @V305798 00225000 BNE FRETIOB NO, IGNORE @V305798 00226000 GRFGO L R6,RDEVCON GET CONTASK ADDRESS @V200730 00227000 BAL R3,BLDTRQ BUILD A TIMER REQUEST BLOK @V200830 00228000 TM RDEVFLAG,RDEVHIO INTERUPT FROM HIO @VA08085 00228300 BO TESTHIO1 YES @VA08085 00228600 TM IOBSPEC,IOBUNSL UNSOLICITED INTERRUPT? @VA13071 00228700 BO TESTCSW YES, CONTINUE TESTING @VA13071 00228800 CL R10,IOBLINK IS THIS THE FINAL INTERRUPT? @VA13071 00228900 BNE TESTCSW NO, CONTINUE TESTING @VA13071 00229000 TM TRQBFLG3,TRQBLOGP IS LOGOFF PENDING SET? @VA13071 00229100 BO CONLOGOF YES, LOG USER OFF NOW @VA13071 00229200 TESTCSW TM IOBSTAT,X'03' CC = 0 ?? @VA13071 00229300 BNZ UNITER NO, CONSIDER A UNIT ERROR @V200730 00230000 TM IOBCSW+5,CDC CHECK FOR CHANNEL DATA CHECK @VA03757 00230100 BO CDCSETUP YES, HANDLE IT @VA03757 00230200 TM IOBCSW+5,PRGC+PRTC+CHC+CCC+IFCC+CDC ANY @V200730 00231000 BNZ CHANER YES - TROUBLED SYSTEM HERE. @V200730 00232000 TM IOBCSW+4,UC+UE DEVICE ERRORS ?? @V200730 00233000 BNZ UNITER YES - TROUBLE WITH DEVICE @V200730 00234000 XC IOBRCNT,IOBRCNT ZERO OUT I/O ERROR COUNTER @V200730 00235000 TM RDEVTFLG,RDEVCPNA NOT ACCEPTED ? @VA07690 00235100 BNO OKCONT NO CONTINUE @VA07690 00235200 L R4,RDEVAIOB GET ACTIVE IOBLOK @VA07690 00235300 LTR R4,R4 IS THERE ONE ? @VA07690 00235400 BNZ RELIOBLK YES GET RID OF THIS ONE @VA07690 00235500 OKCONT EQU * @VA07690 00235600 CLI IOBCSW+4,CE+DE CLEAN CE AND DE ?? @V200730 00238000 BE RETPROC YES, DO RETURN PROCESSING @V200730 00239000 TM IOBCSW+4,DE IS THIS A WRITE END ?? @V200730 00240000 BO DEINT YES, MIGHT BE @V200730 00241000 TM IOBCSW+4,ATTN OPERATOR RAPPING ON US @VA09948 00241100 BNZ ATTNINT YES, SEE WHAT HE WANTS @VA09948 00241200 B IDLEIOB1 NO, IGNORE AND WAIT FOR DE HRC101DK 00242490 RETPROC EQU * @VA02040 00243000 TM IOBSPEC,IOBUNSL UNSOL. INT.? @VA02040 00244000 BNZ IDLEIOB GET RID OF THE IOB @VA02040 00245000 L R1,TRQBCRT GET RETURN ADDRESS @VA02040 00246000 BR R1 COMPLETE PROCESSING @V200730 00247000 EJECT 00248000 * HERE WHEN OUTPUT LINE FINISHED 00249000 * UPDATE NEXT LINE CO-ORDINATE 00250000 * FRET CONTASK COMPLETED, GET AND START NEXT ONE 00251000 SPACE 00252000 CONRETBF SR R2,R2 CLEAR RETURN CODE @V200830 00253000 BAL R3,SETRETN SET RETURN CODE @V200830 00254000 TM TRQBFLAG,CRTSIO WAS DIAGNOSE ISSUE TO INPUT AREA@VM03094 00255000 BO LINBYPAS YES, BYPASS UPDATING COORDINATE @VM03094 00256000 IC R2,RDEVCORD GET CURRENT LINE POSN @V200830 00257000 SR R3,R3 CLEAR FOR IC @V200830 00258000 IC R3,CONCCW1+5 GET NUMBER OF LINES WRITTEN @V200830 00259000 ALR R2,R3 NEW LINE POSN @V200830 00260000 STC R2,RDEVCORD SET NEXT LINE POSN @V200830 00261000 LINBYPAS EQU * .... @VM03094 00262000 NI TRQBFLAG,X'FF'-CRTSIO RESET DIAG TO INPUT FLAG @V60A6B6 00263000 LOGTST TM CONPARM,LOGDROP+LOGHOLD LOGOUT MESSAGE ?? @V200830 00264000 BNZ CONCLR YES, CLEAR REMAINING @V200830 00265000 BAL R3,CONRET RETURN CONTASK TO QCN @V200830 00266000 TM RDEVGRIC,GRAPHAT SHOULD WE GET AN ATTN? HRC101DK 00266300 BO ATTNINT1 YUP - GOT SET IT UP HRC101DK 00266600 B NOCTL CHECK FOR MORE TO DO @V200830 00267000 CALLBRK TM CONPARM,LOGDROP+LOGHOLD LOGOUT TIME ? @VA04772 00267050 BNZ CONCLR IF YES - FRET ALL CONTASKS @VA04772 00267100 CL R10,IOBLINK IS THIS A COPIED BLOK @VA04772 00267150 BNE RELIOBLK YES - RELEASE IT @VA04772 00267200 CALL DMKCFMBK PUT USER IN CONSOLE FUNCTION MODE@VA04772 00267250 B NOTCTL CHECK FOR MORE QUEUED REQUESTS @V407508 00267400 CONCLR CALL DMKQCNCL CLEAR CONTASK STACK @V200830 00268000 B SIGNOFF GET OUT @V200730 00269000 SPACE 00270000 DEINT TM RDEVTFLG,RDEVCTL RETURN FROM WRITE ?? 00271000 BO WRTPROC YES, GO PROCESS 00272000 OI TRQBFLAG,CRTUSEWA DO AN E/W OR E/W ALTERNATE @V60A6B6 00272100 DISCUSR DS 0H HRC103DK 00272500 L R1,ASYSVM SYSTEM VMBLOK ADDRESS 00273000 CL R1,IOBUSER USER LOGGED ON YET ?? 00274000 BNE CONLOGOF YES, FORCE A DISC FOR SECURITY HRC103DK 00275090 TM IOBSPEC,IOBUNSL ? HRC103DK 00275180 BO ONEIOBLK HRC103DK 00275270 TM RDEVFLAG,RDEVACTV IS THERE ACTIVE I/O? HRC103DK 00275360 BNZ IDLEIOB YES, THERE MUST BE MORE HRC103DK 00275450 ONEIOBLK DS 0H HRC103DK 00275540 NI TRQBFLAG,X'FF'-CRTFMT SCREEN NOT FORMATTED 00276000 B LOGUSER GO LOGON A USER 00277000 WRTPROC TM IOBSPEC,IOBUNSL UNSIL. INTERRUPT? @VA03472 00278000 BZ TESTHIO NO, GO TEST FOR HIO REQUEST @VM03150 00279000 CLI RDEVTYPE,TYP3284 IS THIS A PRINTER @VM03150 00280000 BNE DISCUSR YES, THEN DISCONNECT THE USER HRC103DK 00281490 B FRETIOB RELEASE IOBLOK @VM03150 00282000 TESTHIO EQU * TEST FOR HIO REQUEST @VM03150 00283000 TM RDEVFLAG,RDEVHIO INTERRUPT FROM HIO? @VA03675 00284000 BZ GOPROCSS NO @VA04245 00285000 TESTHIO1 EQU * @VA08085 00285200 NI RDEVFLAG,X'FF'-RDEVHIO YES - TURN OFF FLAG @VA04245 00285500 B SIGNOFF GO CLEAN UP AND EXIT @VA04245 00286000 GOPROCSS L R1,TRQBCRT RETURN PROCESSING ADDR @VA04245 00286500 BR R1 GO DO IT 00287000 SPACE 00288000 CHANER EQU * @VA13071 00289100 TM IOBSPEC,IOBUNSL UNSOLICITED INTERRUPT? @VA13071 00289200 BZ CONLOGOF NO, LOGOFF USER NOW @VA13071 00289300 TM RDEVFLAG,RDEVACTV IS THERE ACTIVE I/O? @VA13071 00289400 BZ CONLOGOF NO, LOGOFF USER NOW; ELSE WAIT @VA13071 00289500 * UNTIL ACTIVE I/O COMPLETES 00289600 OI TRQBFLG3,TRQBLOGP SET LOGOFF PENDING FLAG @VA13071 00289700 B RELIOBLK RELEASE IOBLOK AND EXIT @VA13071 00289800 EJECT 00290000 UNITER L R1,IOBIOER GET POINTER TO IOERBLOK @VA14749 00291000 USING IOERBLOK,R1 @V200730 00292000 SLR R4,R4 CLEAR @V200730 00293000 IC R4,IOBRCNT+1 LOAD VALUE IN ERROR COUNTER @V200730 00294000 LA R4,1(,R4) INCREMENT BY 1 @V200730 00295000 STC R4,IOBRCNT+1 STORE IT BACK @V200730 00296000 CLI RDEVTYPE,TYP3284 IS THIS A 3270 PRINTER @VM03094 00297000 BNE BYPPRT NO, BYPASS PRINTER COUNTER @VM03094 00298000 CLI IOBRCNT+1,3 HAVE RETRY COUNT BEEN EXCEEDED @VM03094 00299000 BH FATALIO YES, RELEASE BUFFER STORAGE @VM03094 00300000 BYPPRT EQU * HANDLE ERROR FROM DISPLAY 00301000 CLI IOBRCNT+1,10 HAVE WE EXCEEDED RETRY COUNT @V200730 00302000 BH FATALIO YES - LOG OFF THIS USER @V200730 00303000 TM IOBSTAT,X'03' CC=0 @VA03757 00303100 BNZ GOFRET NO @VA03757 00303200 CLI IOBRCNT+1,X'01' IS IT THE FIRST ERROR ?? @VA03757 00303300 BNE GOFRET NO @VA03757 00303400 BAL R3,SDRSETUP GO SET UP FOR COUNTER ROUTINE @VA03757 00303500 GOFRET EQU * @VA03757 00303600 CLI IOBRCNT+1,1 FIRST ERROR? HRC103DK 00303640 BNE GOFRET1 NO, CONTINUE NORMALLY HRC103DK 00303680 QRYERR01 DS 0H HRC103DK 00303720 BAL R3,FRETIOER HRC103DK 00303760 NI IOBSTAT,X'FF'-IOBFATAL CLEAR THE ERROR FLAG HRC103DK 00303800 NI IOBSPEC,X'FF'-IOBSENS CLEAR THE SENSE FLAG HRC103DK 00303840 B BLD77FMT GO SET A LOGO HRC103DK 00303880 GOFRET1 EQU * HRC103DK 00303920 BAL R3,FRETIOER FRET IOERBLOK @VA01632 00304000 TSTCAW L R1,IOBCAW GET CCW ADDRESS IF ANY @V200730 00305000 LTR R1,R1 IS THIS IOBLOK AN ACTIVE ONE ? @V200730 00306000 BZ IDLEIOB IF NOT - FRET IT AND EXIT. @V200730 00307000 B CALLIOS RETRY THE OPERATION. @V200730 00308000 SPACE 00309000 FATALIO EQU * HERE ON FATAL I/O ERROR CONDITION@V200730 00310000 L R1,IOBCAW GET ADDRESS OF BUFFER @VM03094 00311000 L R4,20(,R1) GET ADDRESS OF DISPLAY RDEVBLOK @V407508 00312100 TM IOBSPEC,IOBCOPY WAS THIS A COPY REQUEST @VM03094 00313000 BZ COPYBYP NO, DON'T FRET BUFFER @VM03094 00314000 L R0,IOBMISC2 GET SIZE OF THE COPY BUFFER @V60A6B6 00315000 CALL DMKFRET RELEASE STORAGE FOR BUFFER @VM03094 00316000 NI IOBSPEC,X'FF'-IOBCOPY CLEAR COPY FLAG @VM03094 00317000 COPYBYP EQU * ... @VM03094 00318000 L R1,IOBIOER GET POINTER TO IOERBLOK @VM03094 00319000 LTR R1,R1 ANY IOERBLOK ? @VM03152 00320000 BZ FORCEOFF NO, LOGOUT USER @VM03152 00321000 TM IOERDATA,INTREQ INTERVENTION REQUIRE ? @VM03152 00322000 BNO BYPASS01 NO, CONTINUE @VA03757 00323000 SETBALR EQU * @VA03757 00323050 LA R3,FORCEOFF YES, SET UP FOR RETURN @VA03757 00323100 B SDRSETUP GO SET UP FOR COUNTER ROUTINE @VA03757 00323150 CDCSETUP EQU * @VA03757 00323200 ICM R1,15,IOBIOER GET IOERBLOK ADDRESS @VA03757 00323250 BZ FORCEOFF NO IOERBLOK, LOGOUT USER @VA03757 00323300 MVI IOERNUM,20 SET UP FOR ERROR MSG @VA03757 00323350 B SETUPMSG GO SEND IT @VA03757 00323400 BYPASS01 EQU * @VA03757 00323450 CLI RDEVTYPE,TYP3284 IS THIS A PRINTER @VM03244 00324000 BE BYSYSOP YES, DON'T CHECK FOR SYSTEM @VM03244 00325000 TM VMOSTAT,VMSYSOP IS THIS SYSTEM OPERATOR ? @VM03152 00326000 BO OPSRECD YES, DON'T SEND ERROR MESSAGE @VM03152 00327000 BYSYSOP EQU * WRITE MESSAGE TO OPERATOR @VM03244 00328000 SLR R2,R2 CLEAR WORK REGISTER @VM03152 00329000 ICM R2,B'1000',IOERDATA PICK UP FIRST SENSE BYTE @VM03152 00330000 BZ FORCEOFF IF ZERO, BYPASS SENDING MESSAGE @VM03152 00331000 SLR R3,R3 CLEAR @V200730 00332000 SPACE 00333000 SNSLOOP LTR R2,R2 TEST FOR HI-ORDER BIT @V200730 00334000 BM SNSFOUND BRANCH IF ON . @V200730 00335000 SLL R2,1 SHIFT 1 TO LEFT @V200730 00336000 LA R3,1(,R3) INCREMENT MESSAGE NUMBER BY 1 @V200730 00337000 B SNSLOOP KEEP LOOKING FOR THAT SENSE BIT @V200730 00338000 EJECT 00339000 SNSFOUND IC R2,MSGNUM(R3) GET MESSAGE NUMBER INDEX @V200730 00340000 STC R2,IOERNUM STORE IN IOERBLOK FOR DMKMSW @V200730 00341000 SETUPMSG EQU * @VA03757 00341100 ST R1,RDEVIOER DMKMSW NEEDS POINTER IN RDEVBLOK @V200730 00342000 ICM R0,B'1110',=C'GRF' MODULE IDENTIFER @VM03152 00343000 CALL DMKMSWR,AFFINITY CALL MESSAGE WRITER TO PRINT @V407508 00344050 TM IOERCSW+5,CDC IS IT A CHANNEL DATA CHECK ?? @VA03757 00344100 BO SETBALR YES, GO SET UP FOR RETURN @VA03757 00344200 OPSRECD EQU * CALL ERROR RECORDER @VM03152 00345000 OI IOBSTAT,IOBFATAL SET PERMANENT ERROR FLAG @VM03152 00346000 XC RDEVIOER,RDEVIOER CLEAR IOERBLOK POINTER @VM03152 00347000 CALL DMKIOERR,AFFINITY CALL ERROR RECORDER TO RECORD @V407508 00348100 NI IOBSTAT,X'FF'-IOBFATAL CLEAR FATAL FLAG @VM03152 00349000 FORCEOFF EQU * FORCE USER OFF SYSTEM @VM03152 00350000 TM IOBSPEC,IOBSENS WAS THE SENSE COMMAND ISSUED @VM03244 00351000 BO FRETSEN YES, SEND MESSAGE TO USER @VM03244 00352000 CLI RDEVTYPE,TYP3284 IS THIS A PRINTER @VM03152 00353000 BNE CONLOGOF NO, LOG USER OFF SYSTEM @VM03152 00354000 TM IOBSPEC,IOBUNSL UNSOL. INTERRUPT @VM03202 00355000 BO SIGNOFF YES, GO RESET USER @VM03202 00356000 FRETSEN EQU * SEND MESSAGE TO USER @VM03244 00357000 NI IOBSPEC,X'FF'-IOBSENS CLEAR SENSE FLAG @VM03244 00358000 BAL R3,RSTTMR RESET TIMER REQUEST @VA08898 00358500 BAL R3,FRETTRQ RELEASE TRQBLOK @VM03152 00359000 MVI RDEVTFLG,X'00' CLEAR FLAG FIELD @VM03152 00360000 MVI IOBRCNT+1,X'00' CLEAR RETRY COUNT @VM03152 00361000 LR R8,R4 GET RDEVBLOK ADDRESS FOR DISPLAY @V407508 00362100 BAL R3,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V407508 00363100 BAL R3,BLDTRQ GET TRQBLOK FOR DISPLAY @VM03152 00364000 OI RDEVTFLG,RDEVCPNA+RDEVCTL NOT ACCEPTED & CTL @VM03152 00365000 LA R1,SETREJ GET RETURN ADDRESS @VM03152 00366000 ST R1,TRQBCRT SAVE RETURN ADDRESS @VM03152 00367000 B BLD77NAC GO WRITE NOT ACCEPTED MSG @VM03152 00368000 SPACE 00369000 CONLOGOF DS 0H HRC103DK 00370190 TM IOBCSW+5,PRGC PROGRAM CHECK HRC103DK 00370380 BO QRYERR01 GO CLEANUP AND EXIT HRC103DK 00370570 CALL DMKQCNCL CANCEL EVERYTHING ON CONSOLE HRC103DK 00370760 TM VMRSTAT,VMLOGOFF IS THIS USER IN PROCESS OF @V200730 00371000 BNZ SIGNOFF YES - @V200730 00372000 CL R11,ASYSVM IS IOBLOK USER = SYSTEM @V200730 00373000 BE SIGNOFF YES - FORGET IT @V200730 00374000 TM RDEVSTA2,RDEVDROP USER WILL BE LOGOFF? @VA05110 00374300 BO SIGNOFF YES--PREVENT DOUBLE FRET VMBLOK @VA05110 00374600 CALL DMKQCNTO,AFFINITY PUT USER TO SLEEP @V407508 00375100 SPACE 00376000 SIGNOFF EQU * HRC001DK 00377090 ICM R1,15,VMHRCALL RECALL LAST LINE HRC001DK 00377180 BZ DCCSGNOF NOBODY HOME ? - VANILLA HRC001DK 00377270 LA R0,(130*3+8)/8 SIZE OF RECALL BUFFER HRC001DK 00377360 CALL DMKFRET RELEASE BUFFER HRC001DK 00377450 XC VMHRCALL,VMHRCALL CLEAR POINTER HRC001DK 00377540 CLI CPUID,X'FF' IS THIS A VIRTUAL MACHINE HRC029DK 00377543 BNE CHKDISAG NO CONTINUE HRC029DK 00377546 TM VMSVSTAT,VMLGHOLD WAS THIS A HOLD ? HRC029DK 00377549 BO CHKDISAG YES, CONTINUE HRC029DK 00377552 NI VMSVSTAT,X'FF'-VMLGHOLD CLEAR FLAG HRC029DK 00377555 STM R0,R6,TEMPSAVE SAVE REGS TO BE USED HRC029DK 00377558 LA R0,4 4 DOUBLE WORDS OF STOR HRC029DK 00377561 CALL DMKFREE GO GET IT HRC029DK 00377564 LR R3,R1 ADDRESS OF BUFFER HRC029DK 00377567 CALL DMKSCNRD GET REAL ADDRESS HRC029DK 00377570 CALL DMKCVTBH CONVERT TO HEX HRC029DK 00377573 MVC 0(9,R3),=C'RESET CUU' FORMAT COMMAND HRC029DK 00377576 STCM R1,B'0111',6(R3) ADD UNIT ADDRESS HRC029DK 00377579 LA R4,16(R3) ADDRESS OF RESPONSE HRC029DK 00377582 LA R5,9 LENGTH OF COMMAND HRC029DK 00377585 LA R6,12 LENGTH OF RESPONSE HRC029DK 00377588 ICM R5,B'1000',=X'40' TELL CP TO RETURN RESPONSE HRC029DK 00377591 DC X'83350008' GO DO IT HRC029DK 00377594 LR R1,R3 ADDRESS OF BUFFER HRC029DK 00377597 LA R0,4 NUMBER OF DWORDS HRC029DK 00377600 CALL DMKFRET RETURN STORAGE HRC029DK 00377603 LM R0,R6,TEMPSAVE RESTORE REGS HRC029DK 00377606 CHKDISAG EQU * HRC029DK 00377609 DCCSGNOF EQU * HRC001DK 00377630 L R1,ASYSVM GET ADDRESS OF SYSTEM'S VMBLOK HRC001DK 00377720 ST R1,RDEVUSER THIS DEVICE NOW BELONGS TO SYSTEM@V200730 00378000 MVI IOBRCNT+1,0 ZERO OUT RETRY COUNTER @V200730 00379000 BAL R3,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V407508 00380100 MVI RDEVTFLG,X'00' RESET TERMINAL FLAGS @V200830 00381000 NI RDEVSTA2,255-RDEVDROP TRUN OFF THE LOGDROP FLAG @VA05110 00381500 NI RDEVTMCD,255-RDEVAPLP-RDEVTEXT TRAN OFF @V387398 00382200 BAL R3,FRETTRQ RELEASE TRQBLOK @VM03152 00383000 TM RDEVFLAG,RDEVDISB DEVICE DISABLED ?? @V200730 00384000 BZ FRETIOB NO, LEAVE DEVICE IDLE @V200730 00385000 NI RDEVFLAG,X'FF'-RDEVENAB-RDEVDISB DEV DISABLED @V200730 00386000 B FRETIOB NOW RELEASE THIS IOBLOK @V200730 00387000 DROP R1 @V200730 00388000 SDRSETUP EQU * @VA03757 00388010 LTR R10,R10 IS THERE AN IOBLOK ? @VA05739 00388013 BZR R3 NO, GET OUT @VA05739 00388016 LTR R1,R1 IS THERE AN IOERBLOK? @VA07242 00388021 BZR R3 NO RETURN @VA05873 00388026 LR R2,R1 LOAD ADDRESS OF IOERBLOK @VA07242 00388031 USING IOERBLOK,R2 SET ADDRESSABILITY @VA07242 00388032 NI IOERFLG3,X'FF'-IOERREAD RESET FLAG @VA03757 00388040 ST R2,RDEVIOER COUNTER UPDATE NEEDS THIS PTR @VA07242 00388051 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 00388060 BNZ DEVDEP YES,GO TO DEVICE DEPENDENT RTN @V60A6B6 00388070 L R1,IOERCSW PICK UP CCW ADDRESS PLUS 8 @VA07242 00388081 LA R1,0(,R1) CLEAR HI-ORDER BIT @VA07242 00388091 S R1,F8 GET CCW ADDRESS @VA07242 00388101 BM BYPASS02 NO CCW @VA03757 00388110 TM 0(R1),X'01' IS IT A WRITE OR CONTROL CCW? @VA07242 00388121 BO BYPASS02 YES, DONT TURN ON READ FLAG @VA03757 00388130 TM 0(R1),X'02' IS IT A READ OP? @VA07242 00388141 BZ BYPASS02 NO, FORGET READ FLAG @VA03757 00388150 OI IOERFLG3,IOERREAD TURN ON READ FLAG FOR SDR @VA03757 00388160 BYPASS02 SLR R1,R1 CLEAR PARMETER REG, FOR 3066 @VA03757 00388170 SPACE 1 00388180 GOCOUNT EQU * @VA03757 00388190 CALL DMKIOEST,AFFINITY GOTO STATISTICAL CNTR UPDATE @V407508 00388205 XC RDEVIOER,RDEVIOER CLEAR IOERBLOK POINTER @VA03757 00388210 LTR R1,R1 WAS A PARAMETER LIST PASSED ?? @VA03757 00388220 BZ NOPARM NO, MUST HAVE BEEN 3066 @VA03757 00388230 LA R0,PARMLEN GET PARM LIST LENGTH @VA03757 00388240 CALL DMKFRET RELEASE STORAGE USED BY PARM LIST@VA03757 00388250 NOPARM BR R3 RETURN @VA03757 00388260 SPACE 2 00388270 DEVDEP EQU * @VA03757 00388280 LA R0,PARMLEN GET LENGTH OF PARM LIST @VA03757 00388290 CALL DMKFREE GET STORAGE FOR PARM LIST @VA03757 00388300 SPACE 1 00388310 MVC 0(16,R1),PARM3277 GET READY TO PASS PARM LIST @VA03757 00388320 TM IOERDATA,US+DC UNIT SPECIFY & DATA CHECK @VA03757 00388330 BNO TESTCT13 NO, CHECK NEXT COUNTER @VA03757 00388340 MVI 11(R1),X'2F' TURN ON DEVICE DEPENDENT COUNTER @VA03757 00388350 TESTCT13 TM IOERDATA,US+IR UNIT SPECIFY & INTERVENTION REQ @VA03757 00388360 BNO TESTCT14 NO, CHECK NEXT COUNTER @VA03757 00388370 MVI 12(R1),X'2F' TURN ON DEVICE DEPENDENT COUNTER @VA03757 00388380 TESTCT14 TM IOERDATA,US+IR+EC UNIT SPECIFY & INTERVENTION @VA03757 00388390 * REQUIRED & EQUIPMENT CHECK 00388400 BNO TESTCT15 NO, CHECK NEXT COUNTER @VA03757 00388410 MVI 13(R1),X'2F' TURN ON DEVICE DEPENDENT COUNTER @VA03757 00388420 TESTCT15 TM IOERDATA,US+EC UNIT SPECIFY & EQUIPMENT CHECK @VA03757 00388430 BNO GOCOUNT GO TO COUNTER UPDATE ROUTINE @VA03757 00388440 MVI 14(R1),X'2F' TURN ON DEVICE DEPENDENT COUNTER @VA03757 00388450 B GOCOUNT GO TO COUNTER UPDATE ROUTINE @VA03757 00388460 DROP R2 DROP ADDRESSABILITY TO IOERBLOK @VA07242 00388471 SPACE 00389000 EJECT 00390000 USING DMKGRFEN,R12 @V200830 00391000 DMKGRFEN DS 0H @V200830 00392000 L R9,MODBAS1 LOAD 3RD REG FOR ADDRESSABILITY @V407508 00392100 LM R12,R13,MODBASE SET MODULE BASE REGS @V200830 00393000 USING DMKGRF,R12,R13,R9 ESTABLISH ADDRESSABILITY @V407508 00394100 TM RDEVFLAG,RDEVACTV I/O IN PROGRESS ? @VA01983 00395000 BO GRFEXIT YES, SKIP IT @V200830 00396000 L R1,RDEVUSER GET ADDR OF VMBLOK FOR NEW USER @V407508 00397100 SWTCHVM SWITCH TO NEW VMBLOK @V407508 00398100 SWITCH CONTINUE PROCESSING ON I/O PROC @V407508 00399100 BAL R3,BLDIOB BUILD AN IOBLOK @V200830 00400000 BAL R3,BLDTRQ BUILD A TIMER REQUEST BLOK @V200830 00401000 B LOGUSER GO TRY TO LOGON A USER @V200830 00402000 SPACE 2 00403000 USING DMKGRFIC,R12 @V200830 00404000 DMKGRFIC DS 0H @V200830 00405000 L R9,MODBAS1 LOAD 3RD REG FOR ADDRESSABILITY @V407508 00405100 LM R12,R13,MODBASE SET MODULE BASE REGS @V200830 00406000 USING DMKGRF,R12,R13,R9 ESTABLISH ADDRESSABILITY @V407508 00407100 L R6,RDEVCON GET CONTASK STACK @V200830 00408000 LTR R6,R6 ARE THERE ANY ?? @V200830 00409000 BNP GRFEXIT NO, STRANGE .... BUT CONT @V200830 00410000 TM RDEVFLAG,RDEVACTV IS THERE AN ACTIVE IOBLOK ? @VM08871 00411000 BO GRFEXIT YES - JUST EXIT NOW @VM08871 00412000 SWITCH CONTINUE PROCESSING ON I/O PROC @V407508 00412100 L R10,RDEVAIOB ACTIVE IOBLOK POINTER @VA03036 00413000 LTR R10,R10 IS THERE ONE ALREADY? @VA03036 00414000 BNZ GRFEXIT YES--EXIT NOW @VA03036 00415000 BAL R3,BLDIOB BUILD AN IOBLOK @V200830 00416000 BAL R3,BLDTRQ BUILD A TIMER REQUEST BLOK @V200830 00417000 B BLDCCWS GO START CONTASK @V200830 00418000 EJECT 00418025 * 00418050 * CLOCK COMPARATOR INTERRUPTS ARE PROCESSED HERE 00418075 * 00418100 SPACE 2 00418125 USING DMKGRFTI,R12 ADDRESSABILITY @VA04772 00418150 DMKGRFTI DS 0H HERE WHEN TIMER EXPIRES @VA04772 00418175 L R9,MODBAS1 LOAD 3RD REG FOR ADDRESSABILITY @V407508 00418180 LM R12,R13,MODBASE @VA04772 00418200 USING DMKGRF,R12,R13,R9 ESTABLISH ADDRESSABILITY @V407508 00418210 SWITCH CONTINUE PROCESSING ON I/O PROC @V407508 00418220 TM TRQBDEV-TRQBLOK(R10),X'80' Is this an LDEV? HRC065DK 00418230 BO LDEV100 Yes HRC065DK 00418235 LH R1,TRQBDEV-TRQBLOK(R10) GET GRAF DEV ADDRESS @VA04772 00418250 CALL DMKSCNRU LOCATE READ DEVICE CONTROL BLOKS @VA04772 00418275 B LDEV110 Skip over LDF support HRC065DK 00418278 LDEV100 EQU * HRC065DK 00418280 L R8,INSTWRD1 -> LDEVCTL HRC065DK 00418282 USING LDEVCTL,R8 HRC065DK 00418284 ICM R1,3,TRQBDEV-TRQBLOK(R10) Get LDEV number HRC065DK 00418286 N R1,F4095 Keep only the LDEV num HRC065DK 00418288 SLL R1,2 Make into LDEV slot idx HRC065DK 00418290 L R8,LDEVIDX(R1) -> LDEVBLOK for LDEV HRC065DK 00418292 USING RDEVBLOK,R8 Pseudo-RDEVBLOK for LDEVHRC065DK 00418294 LDEV110 EQU * HRC065DK 00418296 NI RDEVTFLG,X'FF'-RDEVTRQ RESET TIMER PENDING @VA04772 00418300 L R5,RDEVAIRA GET ADDRESS OF TRQBLOK @VA04772 00418325 L R6,RDEVCON GET POINTER TO NEXT CONTASK @VA04772 00418350 TM RDEVFLAG,RDEVACTV IS THERE IO ACTIVE? @VA04433 00418352 BNO CONTINUE IF NOT, PROCEED NORMALLY @VA04433 00418354 OI TRQBFLAG,CRTAIO FLAG FOR LATER TIMER INTERRUPT @VA04433 00418356 MVC TMRVALUE,=X'0000000100000000' @VA04433 00418358 B SETINT RESET INTERRUPT FOR LATER @VA04433 00418360 * PROCESSING 00418362 CONTINUE EQU * @VA04433 00418364 BAL R3,BLDIOB BUILD AN IOBLOK @VA04772 00418375 TM RDEVTFLG,RDEVCPNA NOT ACCEPTED TIME INT ?? @VA04772 00418400 BO CPNATMR YES, HANDLE THAT @VA04772 00418425 TM TRQBFLAG,CRTWNG 10 SECOND WARNING END ?? @VA04772 00418450 BO GRFCLR YES, CLEAR SCREEN @VA04772 00418475 OI TRQBFLAG,CRTWNG SET 10 SECOND WARNING @VA04772 00418500 OI RDEVTFLG,RDEVCTL TERM IN CTL MODE @VA04772 00418525 LA R1,SETWNG RETURN PROCESSING @VA04772 00418550 ST R1,TRQBCRT SET RETURN @VA04772 00418575 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 00418600 BNZ BLD77WNG 3270 WARNING @V60A6B6 00418625 B BLD66WNG 3066 WARNING @VA04772 00418650 SPACE 1 00418675 MODBASE DC A(DMKGRF,DMKGRF+4096) @VA04772 00418700 MODBAS1 DC A(DMKGRF+8192) VALUE FOR 3RD BASE REGISTER @V407508 00418750 EJECT 00419000 ATTNINT1 NI RDEVGRIC,255-GRAPHAT TURN ATTN FLAG OFF HRC101DK 00419300 NI RDEVTFLG,255-RDEVCTL TURN OFF CNTRL FLAG HRC101DK 00419600 ATTNINT TM RDEVTFLG,RDEVCPNA+RDEVCTL NOT ACCEP OR CONTROL @V200730 00420000 BNZ RELIOBLK YES,FRET THIS IOBLOK AND EXIT @VA09463 00421000 TM RDEVSTA3,RDEVATSW ARE WE STILL IN RECONN? @VA10462 00421400 BO RELIOBLK YES....BRANCH @VA10462 00421800 L R1,ASYSVM GET SYSTEM VMBLOK ADDRESS @V200730 00422000 CL R1,IOBUSER UNSOL. INTERRUPT ? @V200730 00423000 BE LOGUSER YES - GO LOG ON USER @V200730 00424000 TM RDEVSTAT,RDEVSCED+RDEVBUSY I/O SCHEDULED OR .00424001 ACTIVE FOR THIS DEVICE @VA09930 00424003 BNZ RELIOBLK YES, IGNORE THIS INTERRUPT @VA09930 00424005 TM RDEVTFLG,RDEVMORE+RDEVHOLD MORE OR HOLDING @VA08015 00424021 * STATUS? 00424041 BNZ CTLACTV YES, DON'T FRET IOB @VA08015 00424061 TM RDEVFLAG,RDEVACTV IS THERE AN ACTIVE IOBLOK? @VA05730 00424100 BO RELIOBLK YES-FRET THIS IOBLOK & EXIT. @VA05730 00424200 CTLACTV EQU * @VA07047 00425100 TM RDEVSTA3,RDEVFULL In DIAG58 full screen? HRC062DK 00425110 BO PASSATTN Yes pass attn to v.m. HRC061DK 00425120 OI RDEVTFLG,RDEVCTL CRT NOW IN CTRL MODE @VA07047 00425200 LA R0,6 SIZE FOR READ CCWS @V200730 00426000 CALL DMKFREE GET STOREAGE @V200730 00427000 ST R1,IOBCAW SET CCW ADDRESS @V200730 00428000 LA R0,BUFSIZE READ BUFFER SIZE @V200730 00429000 CLI RDEVTYPE,TYP3066 IS THIS A 3066 DEVICE @VM03043 00430000 BE BYSIZE YES, BYPASS DOUBLING SIZES @VM03043 00431000 LA R0,2*BUFSIZE DOUBLE SIZE OF READ BUFFER @VM03043 00432000 OI TRQBFLAG,CRTAPL SET APL BUFFER ALLOCATED FLAG @VM03043 00433000 BYSIZE EQU * GET STORAGE FOR READ BUFFER @VM03043 00434000 CALL DMKFREE GET STORAGE @V200730 00435000 ST R1,IOBMISC SAVE ADDRESS @V200730 00436000 XC 0(BUFINLTH+6,R1),0(R1) CLEAR BUFFER @V200730 00437000 CLI RDEVTYPE,TYP3066 IS THIS A 3066 DEVICE @VM03043 00438000 BE BYCLEAR YES, BYPASS SECOND CLEAR @VM03043 00439000 XC BUFNORM(BUFAPL-BUFNORM,R1),BUFNORM(R1) CLEAR @VM03043 00440000 BYCLEAR EQU * READ DATA FROM DISPLAY @VM03043 00441000 LA R1,RDMINT SPECIAL RETURN ADDRESS @V200730 00442000 ST R1,TRQBCRT SET RETURN PROCESSING @V200730 00443000 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 00444000 BNZ BLD77RMI 3270 READ @V60A6B6 00445000 B BLD66RMI 3066 READ @V200730 00446000 SPACE 00447000 USING BUFFER,R3 @V200730 00448000 CNCLKEY BAL R3,FRETRD FRET BUFFERS @V407508 00449100 TM RDEVTMCD,RDEVAPLP APL ON ? @V305798 00450000 BZ CNCLDE NO, CONT @V305798 00451000 TM VMQSTAT,VMPA2APL IS PA2 FLAG ON ? @VM03116 00452000 BZ CNCLDE NO, CONTINUE NORMAL PROCESSING @VM03094 00453000 TM RDEVTFLG,RDEVHOLD+RDEVMORE IS THIS MORE/HOLD @VM03094 00454000 BNZ XINCONT YES, REFLECT EXTERNAL INTERRUPT @VM03094 00455000 TM RDEVTFLG,RDEVREAD IS READ STATUS INDICATED @VM03094 00456000 BZ CNCLDE NO, JUST CLEAR DISPLAY SCREEN @VM03094 00457000 L R3,RDEVCON GET READ CONTASK POINTER @VM03094 00458000 TM CONPARM-CONTASK(R3),VMGENIO IS THIS VM READ @VM03094 00459000 BZ CNCLDE NO, BYPASS REFLECTING INTERRUPT @VM03094 00460000 XINCONT EQU * REFLECT EXTERNAL INTERRUPT @VM03094 00461000 SLR R3,R3 CLEAR INDEX REGISTER @VM03094 00462000 STM R5,R6,TEMPSAVE SAVE REGISTERS @VM03094 00463000 L R4,=X'00400040' EXTERNAL INTERRUPT KEY @VM03094 00464000 LA R2,VMPXINT START OF EXT INT BLOCKS @V305798 00465000 USING XINTBLOK,R2 @V305798 00466000 XINTLOOP LR R6,R2 @V305798 00467000 L R2,XINTNEXT-XINTBLOK(,R6) NEXT ? @V305798 00468000 LTR R2,R2 TEST IT @V305798 00469000 BZ XINTADD NOPE, ADD END OF CHAIN @V305798 00470000 C R3,XINTSORT CHECK FOR COLLATING SEQ @V305798 00471000 BH XINTLOOP KEEP LOOKING... @V305798 00472000 BL XINTADD THIS EES THE PLACE @V305798 00473000 O R4,XINTCODE MUST BE INDICATED TOGETHER @V305798 00474000 ST R4,XINTCODE OR ONE AT A TIME @V305798 00475000 B XINTEXIT GET OUT @V305798 00476000 XINTADD EQU * @V305798 00477000 LA R0,XINTSIZE NO. OF DOUBLE WORDS @V305798 00478000 CALL DMKFREE @V305798 00479000 ST R1,XINTNEXT-XINTBLOK(,R6) @V305798 00480000 SLR R5,R5 PARM IS MEANINGLESS HERE @V305798 00481000 STM R2,R5,XINTNEXT-XINTBLOK(R1) BUILD NEW INTRPT BLK@V305798 00482000 XINTEXIT EQU * RESTORE REGISTERS @V305798 00483000 LM R5,R6,TEMPSAVE RESTORE BASE REGS @V305798 00484000 DROP R2 DROP BASE REGISTER @V305798 00485000 CNCLDE BAL R3,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V407508 00486100 TM RDEVTFLG,RDEVRUN+RDEVMORE IN RUN OR MORE @V200730 00487000 BZ CNCLREAD NO - CHECK FOR READ STATE @V200730 00488000 GRFCLR LA R1,NOCTL RETURN PROCESSING @V200730 00489000 ST R1,TRQBCRT SET RETURN PROCESSING @V200730 00490000 GRFCLRT EQU * @VA08898 00491100 BAL R3,RSTTMR RESET TIMER REQUEST @VA08898 00491300 MVI RDEVTFLG,RDEVRUN+RDEVCTL RUN & CNTRL @VA08898 00491500 MVC RDEVCORD,ZEROES NEXT LINE AT TOP OF SCREEN @V200730 00492000 NI TRQBFLAG,X'FF'-CRTDIAG-CRTALRM-CRTWNG RESET @V200730 00493000 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 00494000 BNZ BLD77CLR 3270 CLEAR SCREEN @V60A6B6 00495000 B BLD66CLR 3066 CLEAR SCREEN @V200730 00496000 CLD58FUL EQU * HRC058DK 00496100 NI RDEVSTA3,255-RDEVFULL Exit full screen mode HRC062DK 00496110 OI TRQBFLAG,CRTUSEWA USE ERASE/WRITE CCW HRC058DK 00496120 B GRFCLR AND GO BUILD DISPLAY HRC058DK 00496130 CLD58PA1 EQU * HRC058DK 00496140 NI RDEVSTA3,255-RDEVFULL Exit full screen mode HRC062DK 00496150 OI TRQBFLAG,CRTUSEWA USE ERASE/WRITE CCW HRC058DK 00496160 LA R1,PA1KEY58 SET RETURN ADDR AFTER CLRHRC058DK 00496170 ST R1,TRQBCRT SET IT IN TRQB HRC058DK 00496180 B GRFCLRT AND GO BUILD CP DISPLAY HRC058DK 00496190 SPACE 00497000 CNCLREAD TM RDEVTFLG,RDEVREAD IS USER CANCELING A READ @V200730 00498000 BZ CNCLHOLD NO, CANCEL FROM HOLDING STATE @V200730 00499000 LA R1,STRTREAD RETURN PROCESSING @V200730 00500000 ST R1,TRQBCRT SET RETURN @V200730 00501000 B GRFCLRT CLEAR SCREEN @V200730 00502000 SPACE 00503000 CNCLHOLD LA R2,4 SINGLE ATTN RETURN CODE @V200730 00504000 TM VMMLEVEL,VMMCPENV CP ENVIRONMENT ?? @V200730 00505000 BZ CLRTST NO, TEST DEVICE TYPE @V200730 00506000 LA R2,8 DOUBLE ATTN RETURN CODE @V200730 00507000 B PA1CNCL HANDLE AS PA1 CANCEL FUNCTION @V200730 00508000 CLRTST TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 00509000 BNZ GRFCLR YES, CLEAR SCREEN ONLY @V60A6B6 00510000 PA1CNCL BAL R3,SETRETN SET RETURN CODE @VM08599 00511000 LA R1,LOGTST RETURN ADDRESS @VM08599 00512000 ST R1,TRQBCRT SET IT IN TIMER BLOK @VM08599 00513000 B GRFCLRT NOW CLEAR SCREEN. @VM08599 00514000 SPACE 2 00515000 CLRKEY EQU * @V305798 00516000 OI TRQBFLAG,CRTUSEWA INDICATE E/WA OP-CODE NEEDED @V60A6B6 00517000 BAL R3,FRETRD FRET BUFFERS @V407508 00517100 BAL R3,RSTTMR RESET ANY ACTIVE TIMER REQUESTS @VA08689 00518010 TM RDEVTFLG,RDEVREAD IS USER CANCELING A READ? @VA08689 00518020 BZ GRFCLR NO... BACK TO MAINLINE @VA08689 00518030 LA R1,STRTREAD SET UP RETURN ADDRESS @VA08689 00518040 ST R1,TRQBCRT AND STUFF IT IN TRQBCRT @VA08689 00518050 B GRFCLRT BACK TO MAINLINE @VA08689 00518060 EJECT 00519000 PA1KEY BAL R3,FRETRD FRET BUFFERS @V407508 00520100 TM RDEVSTA3,RDEVFULL In DIAG58 full screen? HRC062DK 00520110 BO CLD58PA1 YES, RESET DISPLAY FIRST HRC058DK 00520120 * HRC058DK 00520130 PA1KEY58 EQU * HRC058DK 00520140 TM RDEVTFLG,RDEVRUN RUNNING ?? @V200730 00521000 BO CFMBK YES, GO TO CP MODE @V200730 00522000 TM RDEVTFLG,RDEVMORE+RDEVHOLD MORE OR HOLD ?? @V200730 00523000 BZ PA1READ NO, MUST BE READ @V200730 00524000 BAL R3,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V407508 00525100 LA R2,8 DOUBLE ATTENTION RETURN CODE @VA04772 00526250 LA R1,LOGTST SET UP RETURN ADDRESS @VA04772 00526500 ST R1,TRQBCRT SAVE IT FOR LATER @VA04772 00526750 TM CONPARM,VMGENIO WAS OUTPUT FROM VIRTUAL SIO @VA04772 00527000 BO SETBRK YES - CONDITION FOR CP BREAK @VA04772 00527250 BAL R3,SETRETN SET UP RETURN CODE @VA04772 00527500 B GRFCLRT NOW GO CLEAR THE SCREEN @VA04772 00527750 SETBRK LA R1,CALLBRK RETURN ADDRESS FOR BREAK @VA04772 00528000 ST R1,TRQBCRT SET UP CRT IRA @VA04772 00528250 B GRFCLRT NOW CLEAR THE SCREEN @VA04772 00528500 SPACE 00531000 PA1READ LA R2,8 SET 2 ATTN RETURN @V200830 00532000 LA R3,0 ZERO DATA ENTERED @V200730 00533000 B RDRTN RETURN STATUS @V200730 00534000 SPACE 00535000 PA3KEY EQU * @V60A6B6 00536100 L R1,=A(DMKGRTP6) HANDLE AS IF PF KEY 6 HIT. @V60A6B6 00536200 PFKEY S R1,=A(DMKGRTPF) ADJUST TO KEY INDEX NUMBER @V60A6B6 00536300 SLL R1,2 TIMES 4 FOR INDEX @V200730 00538000 L R2,VMPFUNC GET USER FUNCTION TABLE @V200730 00539000 LTR R2,R2 ANY DEFINED ?? @V200730 00540000 BZ PFREJ NO, REJECT FUNCTION @V200730 00541000 LA R2,0(R1,R2) INDEX FOR FUNCTION @V200730 00542000 L R4,4(R2) GET PF DATA ADDRESS @V200730 00543000 LTR R4,R4 ANY DATA DEFINED ?? @V200730 00544000 BZ PFREJ NO, REJECT FUNCTION @V200730 00545000 CLC 0(4,R4),=CL4'TAB ' IS IT THE TAB FUNCTION ?? @V200730 00546000 BE PFTAB YES, DO IT @V200730 00547000 CLC 0(4,R4),=CL4'COPY' IS IT COPY FUNCTION ? @V305798 00548000 BNE PFSIZ NO, GET PF FUNCTION @V305798 00549000 LH R1,2(,R2) SET PF SIZE @V305798 00550000 CLI 4(R4),X'40' IS THIS A BLANK ? @V305798 00551000 BE *+12 YES, CHECK LENGTH @V305798 00552000 C R1,F4 JUST COPY SPECIFIED ? @V305798 00553000 BNE PFSIZ NO, RE-DISPLAY DATA @V305798 00554000 C R1,F8 LENGTH OF EIGHT ? @V305798 00555000 BH PFSIZ NO, RE-DISPLAY DATA @V305798 00556000 BAL R3,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V407508 00557100 LR R14,R8 SAVE ADDRESS OF DISPLAY RDEVBLOK @V407508 00558100 LH R1,2(,R2) GET PF DATA LENGTH @V305798 00559000 C R1,F5 IS COPY ONLY INDICATED @V305798 00560000 BH PFCOPY YES, COPY FUNC(COPY CUU) @V305798 00561000 L R7,RDEVCUA GET ADDR OF RCUBLOK @V305798 00562000 USING RCUBLOK,R7 @V305798 00563000 TM RCUTYPE,RCUSUB IS THIS A SUBORDINATE CU? @V3M5015 00563100 BZ SCNCU NO, GET RCU TABLE @V3M5015 00563200 SPACE 1 00563300 L R7,RCUPRIME GET PRIMARY CU ADDRESS @V3M5015 00563400 SPACE 1 00563500 SCNCU EQU * SCAN THRU OFFSETS IN THIS CUB @V3M5015 00563600 LA R7,RCUDVTBL GET RCU TABLE @V305798 00564000 LA R3,30(,R7) END OF BXLE @V3M5015 00565000 LA R2,2 INCREMENT @V305798 00567000 LR R4,R7 SAVE ADDRESS OF CONTROL UNIT @V3M5015 00567500 PRTRNDV EQU * @V305798 00568000 LH R8,0(,R7) OFFSET TO RDEVBLOK @V305798 00569000 LTR R8,R8 IS THERE AN OFFSET VALUE @VM03116 00570000 BM PRTRDVI NO, GET NEXT OFFSET VALUE @VM03116 00571000 SLL R8,3 OFFSET IN BYTES @V305798 00572000 A R8,ARIODV GET ACTUAL ADDR @V305798 00573000 CLI RDEVTYPC,CLASGRAF IN 3270 FAMILY ? @V305798 00574000 BNE PRTRDVI NO, KEEP LOOKING @V305798 00575000 CLI RDEVTYPE,TYP3284 IS IT A PRINTER ? @V305798 00576000 BNE PRTRDVI NO, PRESS ON @V305798 00577000 TM RDEVSTAT,RDEVDED+RDEVDISA AVAILABLE ? @V305798 00578000 BNZ PRTRDVI NO, LETS FIND ANOTHER @V305798 00579000 TM RDEVFLAG,RDEVENAB IS IT ENABLED ? @V305798 00580000 BZ PRTRDVI NOPE, GOT TO FIND ONE @V305798 00581000 TM RDEVTFLG,RDEVCTL BOOKED UP ? @V305798 00582000 BZ PFCOPYDF NO, TIME TO MOVE IN @V305798 00583000 PRTRDVI EQU * @V305798 00584000 BXLE R7,R2,PRTRNDV LOOP THRU RDEVBLOKS @V305798 00585000 CL R4,ARIOCH END OF CONTROL BLOCKS ? @V3M5015 00585100 BNL REJECTV YES, NONE AVAILABLE @V3M5015 00585200 TM RCUTYPE-RCUBLOK(R4),RCUSUB SUB CONTRL UNIT? @V3M5015 00585300 BO REJECTV YES, ALREADY PROCESSED @V3M5015 00585400 LR R4,R7 SAVE ADDRESS OF NEW CONTROL UNIT @V3M5015 00585500 TM RCUTYPE-RCUBLOK(R4),RCUSUB NEW SUB CNTRL UNIT? @V3M5015 00585600 BO SCNCU YES, MUST SCAN THIS ONE @V3M5015 00585700 DROP R7 @V3M5015 00585800 B REJECTV NONE AVAILABLE @V305798 00586000 PFSIZ LH R1,2(R2) GET PF DATA SIZE @V200730 00587000 C R1,F8 HRC001DK 00587040 BNE CHKRECAL HRC001DK 00587080 CLC =C'RETRIEVE',0(R4) IS IT RETRIEVE HRC001DK 00587120 BE DORECAL HRC001DK 00587160 CHKRECAL EQU * HRC001DK 00587200 C R1,F6 IS IT 'RECALL' ? HRC001DK 00587240 BNE DCC002 IMPOSSIBLE ... HRC001DK 00587280 CLC =C'RECALL',0(R4) PERHAPS ... HRC001DK 00587320 BNE DCC002 DEFINITELY NOT HRC001DK 00587360 DORECAL EQU * HRC001DK 00587400 XC BUFFER(BUFINLTH+6),BUFFER CLEAR BUFFER DATA HRC001DK 00587440 ICM R14,15,VMHRCALL RECALL LAST LINE HRC001DK 00587480 BZ DCC002 NOBODY HOME ? - VANILLA HRC001DK 00587520 MVC BUFFER(130),1(R14) MOVE LAST LINE TO BUFFERHRC001DK 00587560 MVC 1(130,R14),130+1(R14) AND HERE WE GO ROUNHRC001DK 00587600 MVC 130+1(130,R14),130+130+1(R14) THE HRC001DK 00587640 MVC 130+130+1(130,R14),BUFFER MULBERRY BUSHHRC001DK 00587680 LR R4,R3 BUFFER ADDRESS TO R4 HRC001DK 00587720 L R3,=F'130' SIZE OF MSG FOR WRITE HRC001DK 00587760 OI VMMLVL2,X'01' INDICATE RECALL FUNCTIONHRC001DK 00587800 B BLD77IDS WRITE TO INPUT AREA HRC001DK 00587840 DCC002 EQU * VANILLA ESCAPE HATCH HRC001DK 00587880 XC BUFFER(BUFINLTH+6),BUFFER CLEAR BUFFER DATA @V200730 00588000 BCTR R1,R0 LESS 1 FOR EXECUTE @V200730 00589000 EX R1,MVCRT MOVE FUNCTION DATA TO BUFFER @V200730 00590000 LA R1,1(R1) RESTORE COUNT @V200730 00591000 LR R4,R3 BUFFER ADDRESS TO R4 @V200730 00592000 LR R3,R1 DATA COUNT TO R3 @V200730 00593000 TM 0(R2),X'80' IMMED EXECUTION ?? @V200730 00594000 BO DATACNT YES, CONT @V200730 00595000 LR R2,R4 BUFFER DATA START @V200730 00596000 NXTIDS CLI 0(R2),X'15' IS IT A CR ?? @V200730 00597000 BNE NOTLCR NO, CONT @V200730 00598000 IC R0,VMTLEND GET LINEND CHARACTER @V200830 00599000 STC R0,0(R2) SET FOR DISPLAY @V200730 00600000 NOTLCR LA R2,1(R2) NEXT POSITION @V200730 00601000 BCT R1,NXTIDS LOOP FOR ALL DATA @V200730 00602000 L R14,=A(DMKTBLGL) ADDR OF GRAF TRANS TABLE @VA08002 00603200 MVC X'05'(1,R14),VMGRFTAB SET LOGICAL TAB @V60A6B6 00603300 BCTR R3,R0 MINUS 1 FOR EXECUTE @V200730 00604000 EX R3,TRIDS TRANSLATE DATA @V200730 00605000 MVI X'05'(R14),X6A RESTORE TAB CHARACTER @V60A6B6 00605100 LA R1,1(R3,R4) POINT PAST LAST BYTE @V200730 00606000 MVI 0(R1),X'13' PUT CURSOR AT END @V200730 00607000 LA R3,2(R3) COUNT WITH CURSOR @V200730 00608000 B BLD77IDS DISPLAY IN INPUT AREA @V200730 00609000 SPACE 00610000 PFREJ XC BUFFER(BUFINLTH+6),BUFFER CLEAR BUFFER @V200730 00611000 MVC BUFFER(RJL),PFRJM REJECT MESSAGE @V200730 00612000 SRL R1,3 PF NUMBER BINARY @V200730 00613000 LA R1,1(R1) .. @V200730 00614000 CALL DMKCVTBD CONVERT @V200730 00615000 STH R1,BUFFER+4 SET PF NUMBER @V200730 00616000 LR R4,R3 BUFFER ADDRESS TO R4 @V200730 00617000 LA R3,RJL SIZE OF MSG FOR WRITE @V200730 00618000 B BLD77IDS WRITE IN INPUT AREA @V200730 00619000 SPACE 00620000 PFRJM DC C'* PFNN UNDEFINED' REJECT MESSAGE @V200730 00621000 RJL EQU *-PFRJM @V200730 00622000 SPACE 00623000 PFTAB SLR R0,R0 CLEAR THE PARAMETER REGISTER @V60A6B6 00624000 IC R0,RDEVGRTY LOAD DISPLAY SCREEN INDEX @V60A6B6 00625000 LR R1,R3 SET ADDRESS OF OUTPUT AREA @V60A6B6 00626000 CALL DMKGRTAB GO FIGURE OUT WHAT TO DO. 00627000 L R1,IOBCAW LOAD ADDRESS OF CCW BUFFER @V60A6B6 00628000 LA R4,TAB77CCW GET ADDRESS OF MODEL CCWS @V60A6B6 00629000 MVC 0(16,R1),0(R4) MOVE THEM INTO THE BUFFER @V60A6B6 00630000 STH R2,14(,R1) AND PUT IN DATA COUNT @V60A6B6 00631000 STCM R3,7,9(R1) SET DATA ADDRESS INTO THE CCW @V60A6B6 00632000 B BLDRDEX GO SET RETURN ADDR AND START I/O @V60A6B6 00633000 SPACE 2 00634000 MVCRT MVC BUFFER(*-*),0(R4) EXECUTED MOVE PF DATA @V200730 00693000 TRIDS TR 0(0,R4),0(R14) EXECUTED TRANSLATE @V407508 00694100 SPACE 00695000 EJECT 00696000 PFCOPY EQU * @V305798 00697000 LR R3,R14 SAVE RDEVBLOK ADDR ACROSS CALLS @V407508 00697100 LA R0,3 SIZE TO CONVERT @V305798 00698000 LA R1,5(,R4) DATA TO CONVERT @V305798 00699000 CALL DMKCVTHB CONVERT DEVICE ADDR @V305798 00700000 BNZ REJECT BAD ADDRESS @V305798 00701000 CALL DMKSCNRU GET RDEVBLOK ADDR @V305798 00702000 BNZ REJECTR BAD ADDR @V407508 00703100 CLI RDEVTYPC,CLASGRAF 3270 DEVICE ? @V305798 00704000 BNE REJECTR NO, REJECT @V407508 00705100 CLI RDEVTYPE,TYP3284 3284 PRINTER ? @V305798 00706000 BNE REJECTR NO, REJECT @V407508 00707100 TM RDEVSTAT,RDEVDED+RDEVDISA AVAILABLE ? @V305798 00708000 BNZ REJECTR NO, REJECT @V407508 00709100 TM RDEVFLAG,RDEVENAB DEVICE MUST BE ENABLED @V305798 00710000 BZ REJECTR NO, REJECT @V407508 00711100 TM RDEVTFLG,RDEVCTL IS IT BUSY NOW ?? @V305798 00712000 BO REJECTR YES, REJECT @V407508 00713100 LR R14,R3 RESTORE RDEVBLOK ADDR AFTER CALLS@V407508 00713200 PFCOPYDF EQU * @V305798 00714000 OI IOBSPEC,IOBSENS SET SENSE COMMAND FLAG @VM03244 00715000 L R1,IOBCAW GET CCW ADDRESS @VM03244 00716000 MVC 0(8,R1),SNSCCW GET SENSE CCW @VM03244 00717000 LA R2,8(,R1) GET ADDRESS OF DATA AREA @VM03244 00718000 STCM R2,7,1(R1) SAVE SENSE DATA AREA ADDRESS @VM03244 00719000 ST R14,20(,R1) SAVE ADDRESS OF DISPLAY RDEVBLOK @V407508 00720100 LA R2,COPYSNS GET RETURN ADDRESS @VM03244 00721000 OI RDEVTFLG,RDEVCTL MARK PRINTER BUSY @VM03244 00722000 BAL R3,BLDTRQ GET A TRQBLOK (IF NECESSARY) @VM03244 00723000 ST R2,TRQBCRT SAVE RETURN ADDRESS @VM03244 00724000 L R1,IOBCAW GET ADDRESS OF CCW STRING @VM03244 00725000 B CALLIOS GO DO SENSE OPERATION @VM03244 00726000 SPACE 2 00727000 COPYSNS EQU * RETURN HERE FROM SENSE OPERATION @VM03244 00728000 NI RDEVTFLG,X'FF'-RDEVCTL CLEAR BUSY FLAG @VM03244 00729000 NI IOBSPEC,X'FF'-IOBSENS CLEAR SENSE COMMAND FLAG @VM03244 00730000 L R1,IOBCAW GET ADDRESS OF CCW STRING @VM03244 00731000 LR R4,R8 GET ADDRESS OF PRINTER'S RDEVBLOK@VM03244 00732000 L R8,20(,R1) GET DISPLAY'S RDEVBLOK ADDRESS @VM03244 00733000 BAL R3,BLDTRQ GET TRQBLOK FOR DISPLAY @VM03244 00734000 TM 8(R1),INTREQ IS PRNTER READY @VM03244 00735000 BO REJECT NO, WRITE 'NOT ACCEPTED' MSG @VM03244 00736000 OI RDEVTFLG-RDEVBLOK(R4),RDEVCTL MAKE PRINTER BUSY @VM03244 00737000 BAL R3,FRETRD GET RID OF READ BUFFER @V407508 00738100 SLR R2,R2 CLEAR INDEX REGISTER @V60A6B6 00739100 IC R2,RDEVGRTY GET DISPLAY SCREEN INDEX VALUE @V60A6B6 00739200 L R0,COPYDWSZ(R2) AND APPROPRIATE BUFFER SIZE. @V60A6B6 00739300 ST R0,IOBMISC2 SAVE THE SIZE OF COPY BUFFER @V60A6B6 00739400 CALL DMKFREE @V305798 00740000 MVC 0(2*8,R1),RDCOPY SET READ CCWS @V305798 00741000 OI IOBSPEC,IOBCOPY SET COPY REQUEST FLAG @VM03094 00742000 ST R8,20(,R1) SAVE DISPLAY'S RDEVBLOK ADDRESS @VM03094 00743000 LA R2,28(,R1) ADDRESS OF DATA AREA FOR READ @VM03116 00744000 STCM R2,7,9(R1) SET CCW ADDR @V305798 00745000 ST R4,16(,R1) SAVE PRINTER RDEVBLOK @V305798 00746000 LA R2,COPYRD RETURN ADDR @V305798 00747000 ST R2,TRQBCRT SET RETURN ADDR @V305798 00748000 B CALLIOS READ FROM 3277 SCREEN @V305798 00749000 SPACE 2 00750000 COPYRD L R4,IOBCAW GET BUFFER ADDR @V305798 00751000 L R3,16(,R4) GET PRINTER'S RDEVBLOK ADDRESS @V407508 00752100 LA R7,3848 MAXIMUM LENGTH OF READ DATA @VM03244 00753000 SH R7,IOBCSW+6 GET ACTUAL LENGTH OF DATA @VM03244 00754000 STH R7,24(,R4) SAVE LENGTH OF READ DATA @VM03244 00755000 NI IOBSPEC,X'FF'-IOBCOPY CLEAR COPY REQUEST FLAG @VM03244 00756000 USING CPEXBLOK,R7 SETUP ADDRESSABILITY FOR CPEXBLOK@VM03244 00757000 LA R0,CPEXSIZE CPEXBLOK SIZE @VM03244 00758000 CALL DMKFREE GET STORAGE FOR BLOCK @VM03244 00759000 L R2,IOBMISC2 KEEP COPY BUFFER SIZE HERE @V60A6B6 00759100 LR R7,R1 ADDRESSING @VM03244 00760000 STM R0,R15,CPEXR0 SAVE REQISTERS IN CPEXBLOK @VM03244 00761000 LA R15,COPYWT GET RETURN ADDRESS @VM03244 00762000 ST R15,CPEXADD SAVE RETURN ADDRESS @VM03244 00763000 CALL DMKSTKMP STACK CPEXBLOK FOR CURRENT PROC @V407508 00764100 B CPNATMR RESET USER'S STATUS @VM03244 00765000 SPACE 2 00766000 COPYWT EQU * WRITE READ DATA TO PRINTER @VM03244 00767000 * ENTERED FROM CPEXBLOK UNSTACKED ON THE I/O PROCESSOR 00767100 LR R8,R3 GET ADDR OF PRINTER'S RDEVBLOK @V407508 00768100 BAL R3,BLDIOB GET AN IOBLOK @VM03244 00769000 BAL R3,BLDTRQ GET PRINTER'S TRQBLOK @VM03244 00770000 MVC 0(2*8,R4),WTCOPY SET UP WRITE CCWS @VM03244 00771000 OI IOBSPEC,IOBCOPY SET COPY REQUEST INDICATOR @VM03244 00772000 ST R2,IOBMISC2 SAVE SIZE OF COPY BUFFER @V60A6B6 00772100 LA R2,27(,R4) GET ADDRESS OF DATA AREA @VM03244 00773000 STCM R2,7,9(R4) SET CCW ADDRESS @VM03244 00774000 LH R3,24(,R4) GET LENGTH OF READ DATA @VM03244 00775000 S R3,=F'22' SUBSTRACT LENGTH OF STATUS AREA @VM03116 00776000 STH R3,14(,R4) CHANGE LENGTH OF WRITE CCW @VM03116 00781000 MVC 0(4,R2),CPY77D COPY CONTROL CHARS @V305798 00782000 LR R1,R4 CCW ADDRESS @V305798 00783000 LA R2,COPYEND RETURN ADDR @V305798 00784000 ST R2,TRQBCRT SAVE IN TRQBLOK @V305798 00785000 B CALLIOS START YOUR PRINTERS... @V305798 00786000 SPACE 2 00787000 COPYEND L R0,IOBMISC2 GET THE SIZE OF THE COPY BUFFER @V60A6B6 00788000 L R1,IOBCAW BUFFER ADDR @V305798 00790000 CALL DMKFRET GET RID OF IT @V305798 00791000 NI IOBSPEC,X'FF'-IOBCOPY CLEAR COPY REQUEST FLAG @VM03094 00792000 BAL R3,FRETTRQ RELEASE TRQBLOK @VM03152 00793000 B NOCTL ALL DONE WITH PRINTER @VM03244 00794000 EJECT 00795000 TESTREQ LA R3,BUFFER+7 DATA START @V200730 00796000 LR R4,R3 SAVE START ADDRESS @V200730 00797000 LA R1,BUFINLTH SET MAX COUNT @V200730 00798000 TREQ0 CLI 0(R3),X'00' AT END OF BUFFER ?? @V200730 00799000 BE FREQ0 YES, CONT @V200730 00800000 LA R3,1(R3) BUMP TO NEXT POSITION @V200730 00801000 BCT R1,TREQ0 LOOP SEARCH FOR END @V200730 00802000 FREQ0 SR R3,R4 FORM COUNT OF DATA @V200730 00803000 LTR R0,R3 ANY READ ?? @V200730 00804000 BZ RDEXIT NO, GET OUT @V200730 00805000 LR R1,R4 DATA ADDRESS @V200730 00806000 SLR R2,R2 CLEAR PARM REG HRC101DK 00807122 TM VMMLVL2,VMMHLITE HILIGHT REQUESTED? HRC101DK 00807124 BZ CALLQCN1 NO, CONTINUE CALL HRC101DK 00807126 L R2,=A(HILIGHT) SET HILIGHT PARM HRC101DK 00807128 CALLQCN1 EQU * HRC101DK 00807130 O R2,=A(NOTRESP) SIGNAL NOT A COMMAND RESPONSE HRC101DK 00807132 CALL DMKQCNWT,PARM=NORET(,R2),AFFINITY @V60C2B8 00807140 B RDEXIT FINISHED @V200730 00808000 EJECT 00809000 RDMINT L R3,IOBMISC GET BUFFER ADDRESS @V200730 00810000 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 00811000 BNZ RD3277 YES @V60A6B6 00812000 TM BUFFER+2,CANCEL 3066 CANCEL ?? @V200730 00813000 BO CNCLKEY YES @V200730 00814000 CLC BUFFER(2),=AL1(33,00) DID CURSOR MOVE ?? @V200730 00815000 BNE SETBUF YES, SET DATA ADDRESS @V200730 00816000 MVI BUFFER+6,X'00' MARK BUFFER NULL DATA @V200730 00817000 B SETBUF SET BUFFER ADDRESS @V200730 00818000 SPACE 00819000 RD3277 EQU * REMOVE COMP. CHARS. FROM BUFFER @VM03043 00820000 LA R0,BUFAPL GET SIZE OF APL BUFFER @VM03094 00821000 L R1,=A(DMKTBMZI) TRANSLATE COMPOUND CHARACTERS @VM03172 00822000 TM RDEVTMCD,RDEVTEXT 3270 TEXT CHARACTER SET? @V387398 00822200 BZ RDTRANS NO -> TRANSLATE TABLE ALL SET @V387398 00822400 L R1,=A(DMKTBMTI) TRANSLATE TEXT COMPOUND CHAR. @V387398 00822600 RDTRANS EQU * @V387398 00822800 TRANS 7,1,OPT=(BRING,DEFER,SYSTEM),AFFINITY GET TABLE @V407508 00823100 LR R2,R3 RESTORE START OF BUFFER POINTER @VM03172 00824000 LR R1,R3 SAVE START OF BUFFER PTR @V387398 00825000 BAL R14,FAKESUB REMOVE THE FAKE ATTRIBUTE CHAR. @VM03094 00829000 SR R2,R1 GET NUMBER OF CHARS. IN BUFFER @V387398 00830000 LA R0,BUFSIZE GET NORMAL READ BUFFER @VM03043 00839000 CALL DMKFREE GET STORAGE FOR BUFFER @VM03043 00840000 XC 0(BUFNORM,R1),0(R1) CLEAR READ BUFFER @VM03043 00841000 LR R3,R1 SAVE NORMAL BUFFER ADDRESS @VM03043 00842000 L R1,IOBMISC GET APL BUFFER ADDRESS @VM03043 00843000 LA R14,BUFNORM GET MAX LENGTH OF DATA @VM03110 00844000 CLR R14,R2 IS LENGTH GREATER THAN MAX. @VM03110 00845000 BNL NOTMAX NO, BYPASS GETTING MAX. @VA05459 00846000 LR R2,R14 @VA05976 00846100 NOTMAX LTR R2,R2 TEST FOR ZERO LENGTH @VA05976 00846200 BZ ZEROLNG @VA05976 00846300 BCTR R2,R0 DECREMENT BY ONE @VA05976 00846400 EX R2,READBUF MOVE DATA INTO NORMAL BUFFER @VM03043 00849000 ZEROLNG DS 0H NO NEED TO MOVE DATA IF LENGTH=0 @VM13277 00849500 ST R3,IOBMISC SAVE NORMAL BUFFER ADDRESS @VM03043 00850000 LA R0,2*BUFSIZE GET SIZE OF APL BUFFER @VM03043 00851000 CALL DMKFRET RELEASE APL BUFFER STORAGE @VM03043 00852000 NI TRQBFLAG,X'FF'-(CRTAPL+CRTCARD) RESET CARD INPUT@VM03094 00854000 L R1,=A(DMKGRTAC) LOAD TABLE ENTRY COUNT ADDRESS HRC029DK 00855120 LH R0,0(R1) COUNT OF ENTRIES IN AID TABLE HRC029DK 00855140 L R1,=A(DMKGRTAI) ADDRESS OF AID DECODE TABLE @V60A6B6 00855200 TM RDEVSTA3,RDEVFULL In DIAG58 full screen? HRC062DK 00855210 BZ KEYCLC NO HRC058DK 00855220 TM VMRSTAT,VMLOGON USER NOT YET LOGGED ON? HRC059DK 00855224 BO KEYCLCFS Y, LET DMKGRF HANDLE HRC059DK 00855226 CLI BUFFER,X'6C' PA1 KEY? HRC058DK 00855230 BE CLD58PA1 Y, SET UP FOR IT HRC058DK 00855240 BAL R3,FRETRD FRET BUFFERS HRC058DK 00855250 PASSATTN EQU * HRC061DK 00855253 CALL DMKCFMAT POST ATTN INTRPT TO V.M. HRC059DK 00855260 BZ NOCTL EXIT IF ATTN IS SET OK HRC059DK 00855280 NI RDEVSTA3,255-RDEVFULL Else exit full screen HRC062DK 00855285 B CTLACTV And let CP handle attn HRC061DK 00855290 SPACE 00855300 KEYCLCFS EQU * NO ATTN SET, OR RECONNECTHRC059DK 00855500 NI RDEVSTA3,255-RDEVFULL Exit full screen mode HRC062DK 00855510 KEYCLC CLC BUFFER,0(R1) THIS KEY MATCH ?? @V200730 00856000 BE KEYPROC YES, OK @V200730 00857000 LA R1,2(R1) INDEX TO NEXT ENTRY @V200730 00858000 BCT R0,KEYCLC LOOP THROUGH TABLE 00859000 RDEXIT BAL R3,FRETRD FRET READ BUFFERS @V407508 00860100 B CPNATMR SET RETURN AND TEST FOR STATE @V200730 00861000 SPACE 00862000 KEYPROC SR R2,R2 CLEAR @V200730 00863000 IC R2,1(R1) GET ADCON INDEX @V200730 00864000 L R2,KEYTBLP(R2) GET PROCESSING ADDRESS @V200730 00865000 BR R2 GO DO IT @V200730 00866000 SPACE 00867000 CRDREAD OI TRQBFLAG,CRTCARD DATA FROM CARD READER 00868000 DATA77 ICM R1,15,VMHRCALL GET A(RECALL BUFFER) HRC001DK 00869030 BNZ DCC001 GOTTEN ? - GOOD HRC001DK 00869060 TM VMRSTAT,VMLOGOFF IS HE LOGGING OFF ? HRC001DK 00869090 BO DCC013 YES - FORGET IT HRC001DK 00869120 LA R0,(130*3+8)/8 SIZE OF RECALL BUFFER HRC001DK 00869150 CALL DMKFREE GET HIM A RECALL BUFFER HRC001DK 00869180 ST R1,VMHRCALL AND REMEMBER WHERE IT IS HRC001DK 00869210 MVI 0(R1),0 CLEAR OPTION BYTE HRC001DK 00869240 MVC 1(130,R1),0(R1) CLEAR HRC001DK 00869270 MVC 130+1(130,R1),0(R1) THE HRC001DK 00869300 MVC 130+130+1(130,R1),0(R1) RECALL BUFFER HRC001DK 00869330 DCC001 TM 0(R1),INHIBIT IS INHIBIT ON ? HRC001DK 00869360 BO DCC012 YES, WE DONT KEEP PASSWOHRC001DK 00869390 CLI BUFFER+6,0 NULL LINE ENTERED ? HRC001DK 00869420 BE DCC012 WE DONT KEEP THOSE EITHEHRC001DK 00869450 MVC 130+130+1(130,R1),130+1(R1) SHUFFLE LAST 2 LINEHRC001DK 00869480 MVC 130+1(130,R1),1(R1) BACK A BIT HRC001DK 00869510 MVC 1(130,R1),BUFFER+6 AND REMEMBER THE NEW ONEHRC001DK 00869540 DCC012 MVI 0(R1),0 CLEAR OLD OPTION BYTE HRC001DK 00869570 DCC013 CLI BUFFER+6,X'00' ANY DATA ? @V200730 HRC001DK 00869600 BNE SETBUF YES, CONT @V200730 00870000 TM RDEVTFLG,RDEVREAD DATA FROM READ @V200730 00873000 BZ SETBUF NO, CONT @V200730 00874000 L R1,RDEVGRTB GET ADDRESS OF GRTBLOK @V60A6B6 00874100 CLC BUFFER+1(2),GRTCLRIA-GRTBLOK(R1) CURSOR BACK 1? @V60A6B6 00874200 BNE SETBUF NO, CONT @V60A6B6 00874300 LA R2,4 SINGLE ATTN RETURN WITH NULL DATA@V200730 00875000 LA R3,0 NO DATA @V200730 00876000 B RDRTN RETURN DATA @V200730 00877000 SETBUF LA R3,BUFFER+6 DATA ADDRESS @V200730 00878000 LR R4,R3 SAVE START ADDRESS @V200730 00879000 LA R1,BUFINLTH MAX BUFFER INPUT ALLOWED @V200730 00880000 IC R2,VMGRFTAB LOAD LOGICAL TAB CHARACTER @V60A6B6 00880100 ZEROCHAR CLI 0(R3),X'00' LOOK FOR END CHAR @V200730 00881000 BE ZEROFND BRANCH IF FOUND (X'00') @V200730 00882000 CLM R2,B'0001',0(R3) IS THIS A LOGICAL TAB ? @V60A6B6 00883000 BNE *+8 NO, CONT 00884000 MVI 0(R3),X'05' REPLACE WITH REAL TAB 00885000 CLI 0(R3),X'11' SBA FROM CARD READER ?? 00886000 BNE NXTBUF NO, CONT 00887000 EX R1,SHFTBUF SHIFT OUT THE BUFFER ADDRESS 00888000 S R1,F3 SUBSTRACT THREE FROM BUFFER COUNT@VM03040 00889000 BNP ZEROFND IF ZERO, GET OUT @VM03040 00890000 B ZEROCHAR CHECK THIS POSN AGAIN 00891000 NXTBUF LA R3,1(R3) NEXT BUFFERPOSN 00892000 BCT R1,ZEROCHAR KEEP LOOKING FOR THAT ZERO @V200730 00893000 ZEROFND SLR R3,R4 GET BYTE COUNT @V200730 00894000 L R1,IOBMISC GET BUFFER ADDRESS @V200730 00895000 EX R3,MOVEDATA SHIFT DATA IN BUFFER @V200730 00896000 LR R4,R1 SET R4 TO BUFFER DATA @V200730 00897000 DATACNT ST R3,BUFCNT-BUFFER(R4) SET COUNT IN BUFFER @V200730 00898000 TM RDEVTFLG,RDEVREAD WAS IT A READ STATE ?? @V200730 00899000 BO RDATA YES @V200730 00900000 TM TRQBFLAG,CRTCARD DATA FROM CARD READER ?? 00901000 BO EDNULL YES, DONT ACCEPT IT !! 00902000 LTR R3,R3 ANY DATA ENTERED ?? @V200730 00903000 BNP NULLDATA NO @V200730 00904000 LA R0,CONTSIZE SMALL CONTASK SIZE @V200830 00905000 CALL DMKFREE GET ONE FOR EDIT FUNCTION @V200830 00906000 LR R6,R1 CONTASK ADDRESSING @V200830 00907000 XC CONTASK(CONTSIZE*8),CONTASK CLEAR BLOK @V200830 00908000 MVI CONPARM,EDIT+UCASE SET PARMS FOR EDIT @V200830 00909000 ST R4,CONADDR DATA ADDRESS FOR EDIT @V200830 00910000 STH R3,CONCNT DATA COUNT FOR EDIT @V200830 00911000 TM VMRSTAT,VMLOGON+VMCFWAIT LOGON OR SLEEPING ?? @V200730 00912000 BNZ EDATA YES, EDIT DATA @V200730 00913000 TM VMMLEVEL,VMMCPENV CP ENVIR ?? @V200730 00914000 BZ VIRTBUFF NO, VIRTUAL BUFFER @V200730 00915000 EDATA EQU * EDIT FUNCTION @V305798 00916000 TM RDEVTMCD,RDEVAPLP+RDEVTEXT TRANS INDICATED? @V387398 00917000 BNZ EDTAPL YES, BYPASS EDIT FUNCTION @V387398 00918000 CALL DMKCNSED EDIT INPUT DATA @V305798 00919000 EDTAPL EQU * BYPASS EDIT FUNCTION @V305798 00920000 LR R1,R6 CONTASK ADDRESS @V200830 00921000 LA R0,CONTSIZE SMALL CONTASK SIZE @V200830 00922000 CALL DMKFRET ALL DONE WITH DUMMY CONTASK @V200830 00923000 ST R3,BUFCNT-BUFFER(,R4) SAVE EDITED COUNT @VM08588 00924000 LTR R3,R3 DID EDIT RESULT IN ZERO LENGTH ? @V200730 00925000 BP TESTCF TEST FOR CONSOLE FUNCTION @V200830 00926000 EDNULL BAL R3,FRETRD YES, FRET BUFFERS @V407508 00927100 LA R1,NOCTL RETURN PROCESSING @V200730 00928000 ST R1,TRQBCRT SET RETURN @V200730 00929000 B GRFCRD CLEAR DATA @V200730 00930000 SPACE 00931000 TESTCF TM VMOSTAT,VMCF EXECUTING CONS FUNC NOW ?? @V200730 00932000 BO REJECT YES, CANT HANDLE THAT @V200730 00933000 CLC BUFCNT-BUFFER(4,R4),F0 CR CP ENTERED? @VA02350 00934000 BE CALLQCN YES, VMCF AND VMCFWAIT OFF @VA02992 00935000 OI VMOSTAT,VMCF INDICATE CONSOLE FUNCTION @VA02350 00936000 OI VMRSTAT,VMCFWAIT MAKE USER NON-DISPATCHABLE @VA02992 00937000 CALLQCN LR R1,R4 SET DATA ADDRESS @VA02992 00938000 LR R0,R3 SET DATA COUNT @V200730 00939000 SLR R2,R2 CLEAR PARM REG HRC101DK 00940122 TM VMMLVL2,VMMHLITE HILIGHT REQUEST? HRC101DK 00940124 BZ CALLQCN2 NO, CONTINUE HRC101DK 00940126 L R2,=A(HILIGHT) SET PARM HRC101DK 00940128 CALLQCN2 EQU * HRC101DK 00940130 O R2,=A(NOTRESP) SIGNAL NOT A COMMAND RESPONSE HRC101DK 00940132 CALL DMKQCNWT,PARM=NORET(,R2),AFFINITY @V60C2B8 00940140 LA R1,GRFCFM RETURN PROCESSING @V200730 00941000 ST R1,TRQBCRT SET RETURN @V200730 00942000 SETCLR BAL R3,FRETCCW FRET READ CCWS @V407508 00943100 GRFCRD TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 00944000 BNZ BLD77CRD CLEAR READ AREA @V60A6B6 00945000 B BLD66CRD 3066 CLEAR READ AREA @V200730 00946000 SPACE 2 00947000 NULLDATA BAL R3,FRETRD FRET BUFFERS @V407508 00948100 TM VMRSTAT,VMLOGON LOGGING ON NOW ?? @V200730 00949000 BO CFMBK YES @V200730 00950000 TM RDEVTFLG,RDEVRUN IN A RUNNING STATE ?? @V200730 00951000 BO POSTINT YES, SET INT @V200730 00952000 TM RDEVTFLG,RDEVMORE IS CRT IN A 'MORE' STATE @V200730 00953000 BZ CRTMORE NO, HOLDING GOING TO MORE @V200730 00954000 CRTHOLD EQU * @VA08898 00954400 BAL R3,RSTTMR RESET TIMER REQUEST @VA08898 00954800 MVI RDEVTFLG,RDEVHOLD+RDEVCTL HOLD & CTL @VA08898 00955200 LA R1,NOCTL RETURN PROCESSING @V200730 00957000 ST R1,TRQBCRT SET RETURN PROCESSING @V200730 00958000 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 00959000 BNZ BLD77HLD 3270 HOLDING @V60A6B6 00960000 B BLD66HLD 3066 HOLDING @V200730 00961000 SPACE 2 00962000 CRTMORE BAL R3,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V407508 00963100 MVI RDEVTFLG,RDEVMORE+RDEVCTL MORE... AND CTL @V200730 00964000 LA R1,SETMOR RETURN PROCESSING ADDRESS @V200730 00965000 ST R1,TRQBCRT SET RETRUN PROCESSING @V200730 00966000 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 00967000 BNZ BLD77MOR 3270 MORE @V60A6B6 00968000 B BLD66MOR 3066 MORE @V200730 00969000 SPACE 2 00970000 GRFCFM L R4,IOBMISC GET DATA BUFFER @V200730 00971000 L R3,BUFCNT-BUFFER(R4) GET DATA COUNT @V200730 00972000 LTR R3,R3 TEST FOR COMMAND OR CP READ @V200730 00973000 BNP GRFBK ZERO, DO CP READ @V200730 00974000 LA R0,CPEXSIZE GET A CPEXBLOK @V200730 00975000 CALL DMKFREE .. @V200730 00976000 USING CPEXBLOK,R7 SETUP ADDRESSABILITY FOR CPEXBLOK@VM03152 00977000 LR R7,R1 CPEXBLOK ADDRESSING @V200730 00978000 LR R1,R4 BUFFER ADDRESS IN R1 @V200730 00979000 LR R0,R3 BUFFER DATA COUNT IN R0 @V200730 00980000 STM R0,R15,CPEXR0 SAVE REGS @V200730 00981000 LA R15,CALLCFM CPEXBLOK EXECUTE ADDRESS @V200730 00982000 ST R15,CPEXADD SET ADDRESS @V200730 00983000 LR R1,R7 CPEXBLOK ADDRESS @V200730 00984000 CALL DMKSTKCP STACK CPEXBLOK @V200730 00985000 B NOCTL RETURN @V200730 00986000 SPACE 00987000 CALLCFM CALL DMKCFMEN EXECUTE CONSOLE FUNCTION @V200730 00988000 GOTO DMKDSPCH RETURN TO DISPATCH @V200730 00989000 EJECT 00990000 GRFBK LA R0,BUFSIZE SIZE OF DATA BUFFER @V200730 00991000 LR R1,R4 BUFFER ADDRESS @V200730 00992000 CALL DMKFRET FRET IT @V200730 00993000 CALL DMKCFMBK TO CP READ @V200730 00994000 B NOTCTL RETURN @V407508 00995100 SPACE 00996000 POSTINT TM VMMLEVEL,VMMCPENV CP ENVIR ?? @V200730 00997000 BO CFMBK CALL FOR CONSOLE FUNC MODE @V200730 00998000 TM VMRSTAT,VMCFWAIT SLEEPING ?? @V200730 00999000 BO CFMBK YES, WAKE UP @V200730 01000000 CALL DMKCFMAT CALL TO POST ATTN INT FOR MACH @V200730 01001000 BZ NOCTL ATTN POSTED, CONT @V200730 01002000 CFMBK CALL DMKCFMBK CALL TO PLACE IN CONS FUNC MODE @V200730 01003000 B NOTCTL CONTINUE @V407508 01004100 SPACE 01005000 FRETRD LA R0,BUFSIZE DATA BUFFER SIZE @V200730 01006000 TM TRQBFLAG,CRTAPL IS APL BUFFER ALLOCATED FLAG ON @VM03043 01007000 BZ NOAPLBUF NO, BYPASS UPDATING SIZE OF BUF. @VM03043 01008000 LA R0,2*BUFSIZE GET APL READ BUFFER SIZE @VM03153 01009000 NOAPLBUF EQU * ... @VM03043 01010000 L R1,IOBMISC DATA BUFFER ADDRESS @V200730 01011000 LTR R1,R1 ANY BUFFER ?? @V200730 01012000 BNP FRETCCW NO, CONT @V200730 01013000 CALL DMKFRET FRET IT @V200730 01014000 SR R0,R0 ZERO REG @V200730 01015000 ST R0,IOBMISC CLEAR BUFFER ADDRESS @V200730 01016000 FRETCCW LA R0,6 CCW PACKAGE SIZE @V200730 01017000 L R1,IOBCAW CCW OACKAGE ADDRESS @V200730 01018000 LTR R1,R1 TSET FOR CCW PACKAGE @V200730 01019000 BCR 8,R3 NO, EXIT @V407508 01020100 CALL DMKFRET FRET IT @V200730 01021000 SR R0,R0 ZERO REG @V200730 01022000 ST R0,IOBCAW CLEAR ADDRESS @V200730 01023000 BR R3 RETURN @V407508 01024100 SPACE 2 01025000 EJECT 01026000 VIRTBUFF TM VMMLEVEL,VMMLINED VIRTUAL LINE EDIT ON ?? @V200730 01027000 BO VIRTBFRT YES, EDIT INPUT DATA @VA06260 01028100 LR R1,R6 GET CONTASK ADDRESS @VA06260 01028200 LA R0,CONTSIZE GET CONTASK SIZE @VA06260 01028300 CALL DMKFRET ALL DONE WITH DUMMY CONTASK @VA06260 01028400 B SAVRDEV BYPASS EDITING INPUT DATA @VA06260 01028500 VIRTBFRT EQU * @VA06260 01028600 MVI CONPARM,EDIT EDIT ONLY @V200830 01029000 CALL DMKCNSED YES, EDIT INPUT DATA @V200730 01030000 LR R1,R6 CONTASK ADDRESS @V200830 01031000 LA R0,CONTSIZE SMALL CONTASK SIZE @V200830 01032000 CALL DMKFRET ALL DONE WITH DUMMY CONTASK @V200830 01033000 LTR R3,R3 EDIT RESULT IN NULL DATA ?? @V200730 01034000 BZ EDNULL CLEAR AND IGNORE @V200730 01035000 ST R3,BUFCNT-BUFFER(,R4) SAVE EDITED COUNT @VM08588 01036000 L R14,0(R4) GET 1ST 4 BYTES OF DATA ENTERED @V407508 01037100 O R14,=X'00404040' UPPER CASE AND BLANK @V407508 01038100 CL R14,=X'15C3D740' IS IT CR CP BLANK ?? @V407508 01039100 BNE SAVRDEV NO, CONT @V200730 01040000 CL R3,F3 IS IT JUST CR CP @V200730 01041000 BNE TRDATA NO, TRANS TO UCASE AND CONT @V200730 01042000 SR R0,R0 CLEAR @V200730 01043000 ST R0,BUFCNT-BUFFER(R4) SET ZERO DATA @V200730 01044000 TRDATA L R1,=A(DMKTBLUP) UCASE TRANSLATE TABLE @V200830 01045000 EX R3,TRANSLAT TRANSLATE TO UCASE FOR CF @V200830 01046000 B TESTCF TEST FOR CONSOLE FUNCTION @V200830 01047000 EJECT 01048000 SAVRDEV LR R14,R8 SAVE RDEVBLOK ADDRESS @V407508 01049100 LH R8,VMVTERM GET VIRT TERM DISP @V200830 01050000 LTR R8,R8 TEST FOR TERM DEFINED @V200830 01051000 BM REJECTV NO, REJECT DATA @V200830 01052000 AL R8,VMDVSTRT SET R8 TO VDEVBLOK @V200830 01053000 USING VDEVBLOK,R8 @V200730 01054000 L R2,VDEVCON GET POINTER TO VIRTUAL CONTASK @V200730 01055000 USING VCONCTL,R2 @V200730 01056000 L R1,VCONRBUF SEE IF VIRTUAL BUFFER IS ALREADY @V200730 01057000 LTR R1,R1 STACK... @V200730 01058000 BNZ REJECTV ERROR IF ONE THERE @V200730 01059000 MVC VCONRBSZ,=AL2(BUFSIZE) SIZE OF VIRTUAL BUFFER HRC101DK 01060490 STH R3,VCONRCNT SAVE NUMBER OF BYTES READ @V200730 01061000 ST R4,VCONRBUF BUFFER ADDRESS @V200730 01062000 DROP R2 @V200730 01063000 LA R2,NORET+NOTIME PARMS FOR QCNWT 01064000 TM TRQBFLAG,CRTDIAG SCREEN WRITTEN WITH DIAG ?? 01065000 BZ TSTHLITE NO, CONT HRC101DK 01066490 LA R2,INHIBIT(R2) ADD INHIBIT TO SPOOL NOT PRINT 01067000 B SETDATAD HRC101DK 01067100 TSTHLITE DS 0H HRC101DK 01067200 TM VMMLVL2,VMMHLITE HILIGHT REQUESTED ? HRC101DK 01067300 BZ SETDATAD NO, CONTINUE HRC101DK 01067400 O R2,=A(HILIGHT) SET PARM HRC101DK 01067500 SETDATAD DS 0H HRC101DK 01067600 LR R1,R4 SET DATA ADDRESS @V200730 01068000 LR R0,R3 SIZE OF DATA @V200730 01069000 MC MNCOERD,MNCLRESP RESPONSE CLASS, END READ @VA05418 01069500 LR R3,R14 SAVE RDEVBLOK ADDR ACROSS CALL @V407508 01070100 O R2,=A(NOTRESP) SIGNAL NOT A COMMAND RESPONSE @V60C2B8 01070120 CALL DMKQCNWT,AFFINITY PARMS IN R2 @V407508 01070200 CALL DMKCFMAT POST ATTN TO VIRT MACHINE @VA11787 01071000 LR R8,R3 RESTORE RDEVBLOK ADDRESS @V407508 01072100 USING RDEVBLOK,R8 @V200730 01073000 LA R1,NOCTL RETURN PROCESSING @V200730 01074000 ST R1,TRQBCRT SET RETURN @V200730 01075000 B SETCLR CLEAR READ DATA @V200730 01076000 SPACE 01077000 REJECTR LR R8,R3 RESTORE RDEVBLOK ADDRESS @V407508 01078100 B REJECT CONTINUE @V407508 01078200 REJECTV LR R8,R14 RESTORE RDEVBLOK ADDRESS @V407508 01078300 REJECT BAL R3,FRETRD FRET BUFFERS @V407508 01078400 OI RDEVTFLG,RDEVCPNA+RDEVCTL NOT ACCEPTED AND CTL @V200730 01080000 LA R1,SETREJ RETURN PROCESSING @V200730 01081000 ST R1,TRQBCRT SET RETURN PROCESSING @V200730 01082000 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 01083000 BNZ BLD77NAC 3270 NOT ACCEPTED @V60A6B6 01084000 B BLD66NAC 3066 NOT ACCEPTED @V200730 01085000 SPACE 01086000 EJECT 01087000 RDATA LTR R3,R3 ANY DATA READ ?? @V200830 01088000 BNP NOEDIT NO - THEN NO EDIT REQUIRED @V200730 01089000 CLI CONPARM,INHIBIT INHIBIT, NOEDIT CPREAD ?? 01090000 BNE RDATA1 NO, TEST FOR CARD DATA 01091000 TM TRQBFLAG,CRTCARD DATA MUST COME FROM CARD RDR 01092000 BO NOEDIT YES, OK, CONT 01093000 ZDATA SR R3,R3 NO DATA MUST BE GIVEN 01094000 B NOEDIT CONT WILL NULL DATA 01095000 RDATA1 TM TRQBFLAG,CRTCARD DATA FROM CARD READER ?? 01096000 BO ZDATA YES, DONT ACCEPT IT !! 01097000 TM CONPARM,EDIT+UCASE ANY EDITING WANTED ?? @V200830 01098000 BZ NOEDIT NO, SKIP IT @V200830 01099000 TM VMOSTAT,VMCF IN CP READ? @VA09444 01099100 BO RDATA2 YES, EDIT THIS LINE @VA09444 01099200 TM VMMLEVEL,VMMCPENV TERM MODE CP??? @VA09444 01099300 BZ RDATA2 NO, MUST BE VMREAD @VA09444 01099400 TM RDEVTMCD,RDEVAPLP+RDEVTEXT TRANS INDICATED? @V387398 01100000 BNZ NOEDIT YES, BYPASS EDIT FUNCTION @V387398 01101000 RDATA2 DS 0H INSURE EDIT OF CP INPUT @VA09444 01101100 L R2,CONADDR GET CALLERS BUFFER ADDRESS @V407508 01102100 LH R0,CONCNT GET CALLERS BUFFER COUNT @V200830 01103000 ST R4,CONADDR ADDRESS OF BUFFER FOR EDIT @V200830 01104000 STH R3,CONCNT COUNT FOR EDIT @V200830 01105000 CALL DMKCNSED EDIT THE INPUT LINE @V200730 01106000 ST R2,CONADDR RESTORE CALLERS BUFFER ADDRESS @V407508 01107100 STH R0,CONCNT RESTORE CALLERS COUNT @V200830 01108000 SR R2,R2 SET ZERO RETURN CODE @V200730 01109000 LTR R3,R3 ANY DATA AFTER EDIT ?? @V200730 01110000 BNP RDATA3 NO, RELEASE READ BUFFER @VA09444 01111100 L R7,0(R4) GET FIRST WORD OF DATA ENTERED @VA09444 01111150 O R7,=X'00404040' CONVERT TO UPPER CASE @VA09444 01111200 CL R7,=X'15C3D740' IS THIS CR CP???? (#CP) @VA09444 01111250 BNE RDRTN PASS DATA TO CALLER @VA09444 01111300 CL R3,F3 IS IT JUST CR CP?? @VA09444 01111350 BNE TRDATA1 NO TRANSLATE TO UPPER CASE @VA09444 01111400 SR R0,R0 SET DATA COUNT TO ZERO @VA09444 01111450 ST R0,BUFCNT-BUFFER(R4) *** @VA09444 01111500 TRDATA1 DS 0H TRANSLATE CHARACTERS TO UP CASE @VA09444 01111550 L R1,=A(DMKTBLUP) UPPERCASE XLATE TABLE @VA09444 01111600 EX R3,TRANSLAT TRANSLATE CONSOLE FUNCTION @VA09444 01111650 B RDRTN MOVE DATA TO USER BUFFER @VA09444 01111700 RDATA3 DS 0H CONTINUE AS BEFORE @VA09444 01111750 BAL R3,FRETRD FRET BUFFERS @V407508 01112100 LA R1,STRTREAD RETURN PROCESSING, REPEAT READ @V200730 01113000 ST R1,TRQBCRT SET RETURN @V200730 01114000 B GRFCRD CLEAR READ DATA AND REPEAT @V200730 01115000 SPACE 01116000 NOEDIT SR R2,R2 SET ZERO RETURN CODE @V200730 01117000 RDRTN LH R1,CONCNT GET COUNT ASKED FOR @V200730 01118000 CLR R1,R3 IS IT LESS THAN WE HAVE ?? @V200730 01119000 BNL *+6 NO, CONT @V200730 01120000 LR R3,R1 SET DATA COUNT TO MAX EXPECTED @V200730 01121000 STH R3,CONCNT SET DATA COUNT @V200830 01122000 L R1,CONRETN GET RETURN SAVEAREA ADDRESS @V200830 01123000 ST R3,SAVER0-SAVEAREA(R1) SET RETURN BYTE COUNT @V200830 01124000 LTR R3,R3 ANY DATA RETURNED ?? @V200830 01125000 BZ NODATA NO, DONT MOVE ANYTHING @V200830 01126000 B BUFMOVE MOVE DATA TO CALLERS BUFFER @V200830 01127000 SPACE 01128000 TRANSLAT TR 0(*-*,R4),0(R1) EXECUTE TRANSLATE @V200730 01129000 MOVEDATA MVC 0(0,R1),0(R4) MOVE DATA @V200730 01130000 TROPUT TR 0(*-*,R2),0(R7) EXECUTED TRANSLATE OUTPUT @V200830 01131000 SHFTBUF MVC 0(*-*,R3),3(R3) SHIFT OUT BUFFER ADDRESS 01132000 TRTTST TRT 0(*-*,R4),0(R7) @V305798 01133000 MOVEAPL MVC 0(*-*,R5),0(R4) @V305798 01134000 TXTTRAN TR 0(*-*,R1),SNGLCHAR(R2) TRANSLATE TEXT OUTPUT @V387398 01135000 READBUF MVC 0(*-*,R3),0(R1) MOVE DATA INTO NORMAL BUFFER @VM03043 01136000 EJECT 01137000 BUFMOVE L R1,CONADDR GET CALLERS BUFFER ADDRESS @V200830 01138000 BCTR R3,0 LENGTH MINUS 1 FOR MOVE. @VA05754 01138100 EX R3,MOVEDATA MOVE DATA TO BUFFER @V200730 01139000 NODATA BAL R3,SETRETN SET RETURN CODE @V200830 01140000 SETSZ LA R0,4 SIZE FOR BLANKS @V200730 01141000 LA R1,BLANKS WRITE BLANKS FOR NULL/PROTECTED @V200730 01142000 TM CONPARM,INHIBIT NON-DISPLAY DATA ?? @V200830 01143000 BO BLNKDSP YES, DISPLAY BLANKS @V200730 01144000 L R2,CONRETN GET BYTE COUNT FROM SAVEAREA @V200830 01145000 L R3,SAVER0-SAVEAREA(R2) BYTE COUNT .. @V200830 01146000 LTR R3,R3 IS IT ZERO ?? @V200730 01147000 BZ BLNKDSP YES, DISPLAY BLANKS @V200730 01148000 LR R0,R3 SET DATA COUNT @V200730 01149000 LR R1,R4 DATA ADDERSS @V200730 01150000 BLNKDSP LA R2,NORET DMKQCNWT PARM 01151000 TM CONPARM,VMGENIO VIRT MACH DATA ?? @V200830 01152000 BZ *+8 NO, CONT 01153000 LA R2,NORET+NOTIME DMKQCNWT PARM 01154000 TM TRQBFLAG,CRTDIAG SCREEN WRITTEN WITH DIAG ?? 01155000 BZ REDSPLY NO...CONTINUE @VA04810 01156000 LA R2,INHIBIT(R2) ADD INHIBIT TO SPOOL NOT PRINT 01157000 ICM R2,B'0100',NOMC BYPASS THE MONITOR CALL IN QCN @VA04810 01158000 REDSPLY EQU * @V4M0107 01158650 TM VMMLVL2,VMMHLITE HILIGHT REQUESTED ? HRC101DK 01158720 BZ MCENDRD HRC101DK 01158790 O R2,=A(HILIGHT) SET PARM HRC101DK 01158860 MCENDRD EQU * HRC101DK 01158930 MC MNCOERD,MNCLRESP RESPONSE CLASS, END READ @VA05418 01159000 O R2,=A(NOTRESP) SIGNAL NOT A COMMAND RESPONSE @V60C2B8 01159100 CALL DMKQCNWT,AFFINITY RE-DISPLAY THE DATA @V4M0107 01159550 LA R1,NOCTL RETURN FROM CLEARING INPUT AREA @V60A6B6 01162200 ST R1,TRQBCRT SET RETURN PROCESSING 01163000 NODSP BAL R3,FRETRD FRET READ BUFFERS @V407508 01164100 OI CONPARM,INHIBIT QCNET WILL NOT SPOOL IT @VA05374 01164500 OI CONSTAT,CONACTV REMEMBER TO RETURN THE READ @VM08587 01166000 BAL R3,RSTTMR RESET TIMER REQUEST @VA08898 01166500 MVI RDEVTFLG,RDEVRUN+RDEVCTL RUNNING AND CTL @V200730 01167000 B GRFCRD CLEAR READ DATA INPUT AREA @VM08590 01168000 EJECT 01169000 SETCCWS L R2,RDEVGRTB GET ADDRESS OF GRTBLOK @V60A6B6 01169100 ALR R1,R2 ADD OFFSET TO THE CCWS @V60A6B6 01169200 SPACE 01169300 CALLIOS ST R1,IOBCAW SET CCW ADDRESS @V200730 01170000 L R1,RDEVUSER GET CORRECT VMBLOK ADDRESS @V407508 01171100 SWTCHVM OPT=STAY SWITCH TO THIS VMBLOK @V407508 01172100 ST R11,IOBUSER SET USER FOR IO @V200730 01174000 NI IOBSPEC,X'FF'-IOBUNSL TURN OFF UNSOL. INT. FLAG @VA02040 01175000 OI RDEVFLAG,RDEVACTV MARK DEVICE ACTIVE @VA03036 01176000 BAL R3,FRETIOER FRET IOERBLOK @VA01632 01177000 CALLQR CALL DMKIOSQR CALL IOS TO SCHEDULE IO REQUEST @V200730 01178000 GOTO DMKDSPCH WAIT FOR INTERRUPT. @V200730 01179000 EJECT 01180000 LOGUSER EQU * HERE TO LOGON A USER @V200730 01181000 CLI RDEVTYPE,TYP3284 IS THIS A 3270 PRINTER @VM03094 01182000 BE FRETIOB YES, IGNORE REQUEST @VM03094 01183000 L R15,PREFIXA GET PREFIX VALUE TO ADDRESS PSA @V4M0132 01184100 * AT ABSOLUTE ZERO @V4M0132 01184200 CLI XTNDLOCK-PSA(R15),X'FF' IS SYSTEM EXTENDING? @V4M0132 01184300 BE IDLEIOB YES - WAIT TILL EXTEND FINISHES. @VM08952 01185000 TM RDEVTFLG,RDEVLOG IS LOGON IN PROGRESS? @VA02316 01186000 BO IDLEIOB IF YES,EXIT @VA02316 01187000 TM RDEVTFLG,RDEVTRQ TIMER REQUEST QUEUED ?? @VA05176 01187100 BNO NOTIMER NO, PROCEED NORMALLY @VA05176 01187200 BAL R3,RSTTMR YES, RESET TRQ BLOKS @V407508 01187350 LR R10,R1 GET ADRESS OF TRQBLOK @VA05176 01187400 LA R12,DMKGRFTI ADDRESS TRQ HANDLER @VA05176 01187500 BR R12 AND GO THERE @VA05176 01187600 NOTIMER EQU * @VA05176 01187700 L R4,=A(DMKSYSNM) ADDRESS OF TOTAL USER'S LOGGED @V200730 01188000 L R4,0(,R4) GET COUNT OF LOGGED ON USER'S @V200730 01189000 LTR R4,R4 ANY LOGGED ON YET ? @V200730 01190000 BNZ TSTENAB TEST FOR ENABLE @V200730 01191000 CLC CPID(4),=CL4'CPCP' ARE WE THROUGH THE IPL @V200730 01192000 BNE ALTCONS NO - MUST BE ALTERNATE CONSOLE @V200730 01193000 TSTENAB TM RDEVFLAG,RDEVENAB IS IT ENABLED ?? @V200730 01194000 BZ FRETIOB NO, IGNORE DEVICE @V200730 01195000 TM RDEVFLAG,RDEVDISB DID OPERATOR 'DISABLE' DEVICE @V200730 01196000 BZ TSTFMT NO, TEST FOR SCREEN FORMATTED @V200730 01197000 DISABLE EQU * DISABLE DEV -- NO USER LOGGED ON @VA01983 01198000 LA R1,CONLOGOF RETURN PROCESSING 01199000 ST R1,TRQBCRT SET RETURN ADDRESS 01200000 B GRFCLRT CLEAR SCREEN FOR DISABLE 01201000 TSTFMT EQU * CHECK FOR VM LOGO ON SCREEN @V60A6B6 01202100 TM RDEVGRIC,RDEVERPQ Device eligible for RPQ?HRC072DK 01202130 BZ NORPQ No HRC072DK 01202140 CALL HDKD8CEN Go issue RPQ sequence HRC072DK 01202150 NORPQ EQU * HRC072DK 01202160 LA R1,BLDVMBLK ASSUME IT HAS BEEN WRITTEN @V60A6B6 01202200 TM TRQBFLAG,CRTFMT IS SCREEN FORMATTED ?? @V60A6B6 01202300 BO FMTOK YES, THEN IT IS TIME TO CLEAR IT @V60A6B6 01202400 LA R1,FMTGRF RETURN ADDRESS TO WRITE VM LOGO @V60A6B6 01204000 OI TRQBFLAG,CRTUSEWA NEED E/W E/W ALT FIRST... @V60A6B6 01205100 FMTOK ST R1,TRQBCRT SET RETURN PROCESSING @V60A6B6 01205200 B GRFCLRT CLEAR VM LOGO FROM SCREEN @V60A6B6 01205300 BLDVMBLK TM RDEVTFLG,RDEVLOG IS LOGON IN PROGRESS? @VA02316 01207000 BO IDLEIOB IF YES, EXIT @VA02316 01208000 OI RDEVTFLG,RDEVLOG LOGON IN PROGRESS @VA02316 01209000 CALL DMKBLDVM,AFFINITY BUILD VMBLOK FOR THIS USER @V407508 01210100 ST R11,IOBUSER GIVE HIM THIS IOBLOK @V200730 01211000 NI RDEVTFLG,255-RDEVLOG RESET LOGON FLAG @VA02316 01214000 B CFMBK CALL DMKCFMBK FOR A CP READ @V60A6B6 01215000 EJECT 01216000 FMTGRF LA R1,FMTDONE RETURN PROCESSING @V200730 01217000 ST R1,TRQBCRT SET RETURN PROCESSING @V200730 01218000 BAL R3,RSTTMR RESET TIMER REQUEST @VA08898 01218100 MVI RDEVTFLG,RDEVRUN+RDEVCTL RUNNING AND CTL @V200730 01219000 MVI RDEVCORD,X'01' NEXT LOGICAL LINE IS LINE 2 @V200730 01220000 OI TRQBFLAG,CRTUSEWA SET E/W A FLAG FOR CLEAR @V60A6B6 01220100 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 01221000 BNZ BLD77FMT 3270 FORMAT @V60A6B6 01222000 B BLD66FMT 3066 FORMAT @V200730 01223000 SPACE 01224000 FMTDONE OI TRQBFLAG,CRTFMT SCREEN FORMATTED @V200730 01225000 TM RDEVFLAG,RDEVDISB DID OPER ISSUE DISABLE WHILE @VA01983 01226000 * SCREEN WAS BEING FORMATTED ? 01227000 BNZ DISABLE YES -- GO DISABLE @VA01983 01228000 B NOCTL ALL DONE @V200730 01229000 EJECT 01230000 ALTCONS L R2,=A(DMKRIOCN) GET POINTER TO ALTERNATE CONSOLE@V200730 01231000 LH R3,2(R2) GET CONS ADDRESS @V200730 01232000 CH R3,IOBRADD IS THIS A CONSOLE ?? @V200730 01233000 BE GOCPI YES, GO TO CPINIT @V200730 01234000 LA R2,4(R2) POINT TO COUNT OF ALT. CONSOLES @V60BCAA 01234200 L R1,0(R2) ACCESS COUNT OF ALT CONSOLES @V60BCAA 01234400 ALTLOOP LTR R1,R1 ANY MORE ALTERNATE CONSOLES? @V60BCAA 01234600 BZ FRETIOB NO, IGNORE @V60BCAA 01234800 BCTR R1,0 DECREMENT COUNT FOR NEXT TIME @V60BCAA 01235000 * THROUGH LOOP 01235200 LA R2,4(R2) POINT TO NEXT ALT CONSOLE DATA @V60BCAA 01235400 LH R3,2(R2) GET ALT CONSOLE ADDRESS @V60BCAA 01235600 CH R3,IOBRADD IS THIS AN ALTERNATE CONSOLE? @V60BCAA 01235800 BNE ALTLOOP NOT THIS ONE @V60BCAA 01236000 GOCPI TM RDEVFLAG,RDEVENAB DEVICE ENABLED? @V60BCAA 01236200 BZ FRETIOB NO -- IGNORE @V60BCAA 01236400 LA R0,IOBSIZE GET IOBSIZE @VA04217 01238600 LR R1,R10 IOBLOK ADDRESS @V200830 01239000 CALL DMKFRET ALL DONE WITH BLOK @V200830 01240000 GOTO DMKCPIEM ALT CONSOLE IPL @V200830 01241000 SPACE 01242000 SETWNG DS 0H HRC101DK 01243190 ICM R15,1,VMMORECL LENGTH OF MORE TIME HRC101DK 01243380 BNZ SETINT LEAVE 10 SECONDS IF NOT THERE HRC101DK 01243570 LA R15,10 HRC101DK 01243760 B SETINT SET TIMER INT @V200730 01244000 SETREJ LA R15,3 3 SECOND HOLD HRC101DK 01245490 B SETINT SET TIMER INT @V200730 01246000 SETMOR DS 0H HRC101DK 01247190 ICM R15,1,VMMOREBP LENGTH OF MORE TIME HRC101DK 01247380 BNZ SETINT LEAVE 50 SECONDS IF NOT THERE HRC101DK 01247570 LA R15,50 HRC101DK 01247760 SETINT DS 0H HRC101DK 01247950 XC TMRVALUE,TMRVALUE CLEARA TMRVALUE HRC101DK 01248140 STC R15,TMRVALUE+3 STORE TIME HRC101DK 01248330 LA R15,DMKGRFTI TIMER INTERRUPT RETURN ADDRESS HRC101DK 01248520 ST R15,TRQBIRA SET TIMER RETURN @V200730 01249000 ST R11,TRQBUSER SET USER FOR TIMER @V200730 01250000 BAL R3,RSTTMR RESET ANY ACTIVE TRQ REQUEST @V407508 01251100 STCK TRQBVAL GET CLOCK VALUE @V200730 01252000 BC 12,CLOCKOK IS CLOCK FUNCTIONING? @VA04301 01252250 GOTO DMKCVTAB CLOCK DAMAGED...ABEND CVT001 @VA04301 01252500 CLOCKOK EQU * @VA04301 01252750 LM R14,R15,TRQBVAL GET CLOCK VALUE @V200730 01253000 AL R15,TMRVALUE+4 ADD TO THE (TOD) CLOCK THE @V200730 01254000 BC 12,*+8 TIME INTERVAL @V200730 01255000 AL R14,F1 ADJUST FOR OVERFLOW @V200730 01256000 AL R14,TMRVALUE HI ORDER OF CLOCK VALUE @V200730 01257000 STM R14,R15,TRQBVAL SET CLOCK COMP VALUE @V200730 01258000 OI RDEVTFLG,RDEVTRQ TIMER REQ PENDING @V200730 01259000 LR R1,R5 R1 FOR TIMER SET @V200730 01260000 CALL DMKSCHST QUEUE UP THIS TIMER REQUEST @V200730 01261000 TM TRQBFLAG,CRTAIO IS TIMER INTERRUPT PENDING? @VA04433 01262100 BNO NOCTL IF NOT, PROCEED NORMALLY @VA04433 01262200 NI TRQBFLAG,X'FF'-CRTAIO RESET INTERRUPT FLAG @VA04433 01262300 B GRFEXIT EXIT AND WAIT UNTIL IO COMPLETES @VA04433 01262400 EJECT 01263000 RSTTMR EQU * HERE TO RESET TIMER REQUEST BLOKS@V200730 01264000 TM RDEVTFLG,RDEVTRQ IS A TIMER REQUEST QUEUED @V200730 01265000 BCR 8,R3 NONE, RETURN TO CALLER @V407508 01266100 NI RDEVTFLG,X'FF'-RDEVTRQ RESET FLAG BIT @V200730 01267000 L R1,RDEVAIRA GET ADDRESS OF TRQBLOK @V200730 01268000 CALL DMKSCHRT RESET ACTIVE TIMER REQUEST @V200730 01269000 BR R3 RETURN, ALL DONE @V407508 01270100 SPACE 01271000 CPNATMR LA R1,NOCTL RETURN PROCESSING @V200730 01296000 ST R1,TRQBCRT SET RETURN PROCESSING @V200730 01297000 NI RDEVTFLG,X'FF'-RDEVCPNA RESET NOT ACCEPTED @V200730 01298000 OI RDEVTFLG,RDEVCTL CTL MODE FOR STATUS WRITE @V200730 01299000 TM RDEVTFLG,RDEVRUN RUNNING ?? @V200730 01300000 BO GRFRUN YES @V200730 01301000 TM RDEVTFLG,RDEVHOLD HOLDING ?? @V200730 01302000 BO CRTHOLD YES, RESET HOLDING @V200730 01303000 TM RDEVTFLG,RDEVREAD IN READ STATE ? @V305798 01304000 BO STRTREAD YES, SET READ STATUS @V305798 01305000 B CRTMORE RESET MORE... STATE @V200730 01306000 GRFRUN TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 01307000 BNZ BLD77RUN 3270 RUNNING @V60A6B6 01308000 B BLD66RUN 3066 RUNNING @V200730 01309000 SPACE 01310000 SETRETN TM CONSTAT,CONRESP RESPONSE EXPECTED ?? @V200830 01311000 BCR 8,R3 NO, RETURN @V200830 01312000 L R1,CONRETN GET RETURN SAVEAREA ADDRESS @V200830 01313000 ST R2,SAVER2-SAVEAREA(R1) SET RETURN CODE @V200830 01314000 BR R3 RETURN @V200830 01315000 SPACE 01316000 CONRET L R14,CONPNT GET NEXT CONTASK, IF ANY @V407508 01317100 ST R14,RDEVCON SET NEXT CONTASK TO DO @V407508 01318100 SR R0,R0 CLEAR @V200830 01319000 ST R0,CONPNT CLEAR CONTASK POINTER @V200830 01320000 CALL DMKQCNET RETURN CONTASK @V200830 01321000 BR R3 RETURN @V200830 01322000 SPACE 01323000 WRTSCN L R2,CONADDR GET DATA ADDRESS @V200730 01324000 LH R3,CONCNT GET DATA COUNT @V200830 01325000 LTR R3,R3 ZERO COUNT??? @VA01603 01326000 BZR R14 YES - RETURN @V407508 01327100 BCTR R3,R0 DECREMENT FOR EXECUTE @V200830 01328000 L R7,=A(DMKTBLGL) GRAF DEVICE TRANS TABLE @VA08002 01329100 IC R0,VMTLEND GET LOGICAL LINE END CHAR @VA02554 01330000 STC R0,X'15'(0,R7) ** MODIFY TRANS TABLE ***** @VA02554 01331000 MVC X'05'(1,R7),VMGRFTAB SET LOGICAL TAB CHAR @V60A6B6 01331100 TM TRQBFLAG,CRTSIO WAS DIAGNOSE ISSUE TO INPUT AREA@VM03094 01332000 BZ *+8 NO, BYPASS PUTTING CHAR. IN TABLE@VM03094 01333000 MVI X'13'(R7),IC PUT INSERT CURSOR CHAR IN TABLE @VM03094 01334000 TRTST CL R3,F256 LESS THAN 256 ?? @V200830 01335000 BL TRLST YES, DO LAST PART @V200830 01336000 TR 0(256,R2),0(R7) TRANSLATE DATA @V200830 01337000 LA R2,256(R2) NEXT DATA POSITION @V200830 01338000 S R3,F256 DECREMENT COUNT @V200830 01339000 B TRTST TEST FOR MORE TO DO @V200830 01340000 TRLST EX R3,TROPUT TRANSLATE LAST PART OF OUTPUT @V200830 01341000 MVI X'15'(R7),X'15' RESTORE TRANS TABLE @VA02554 01342000 MVI X'13'(R7),X'40' PUT BLANK BACK IN TABLE @VM03094 01343000 MVI X'05'(R7),X6A SET DEFAULT LOGICAL TAB CHAR @V60A6B6 01344000 BR R14 ALL DONE, RETURN @V407508 01344100 EJECT 01345000 BLDTRQ L R5,RDEVAIRA GET ADDRESS OF TRQBLOK @V200830 01346000 LTR R5,R5 IS THERE ONE NOW ?? @V200830 01347000 BCR 7,R3 YES, RETURN @V200830 01348000 LA R0,TRQBSIZE+CRTEXT GET TRQBLOK SIZE + EXTENSION @VA13071 01349100 CALL DMKFREE GET A TRQBLOK @V200830 01350000 ST R1,RDEVAIRA SAVE ADDRESS @V200830 01351000 LR R5,R1 TRQBLOK ADDRESSING @V200830 01352000 XC TRQBLOK(TRQBSIZE*8+CRTEXTSZ),TRQBLOK CLR TRQ+EXT@VA13071 01353100 LA R1,IDLEIOB SET RETURN ADDRESS @VM03152 01354000 ST R1,TRQBCRT SAVE RETURN ADDRESS @VM03152 01355000 TM RDEVADD,RDEVLDEV Is this an LDEV? HRC065DK 01355100 BO LDEV200 Yes HRC065DK 01355200 CALL DMKSCNRD GET DEVICE ADDRESS @V200830 01356000 STH R1,TRQBDEV SAVE DEV ADDRESS @V200830 01357000 BR R3 RETURN @V200830 01358000 LDEV200 EQU * HRC065DK 01358100 MVC TRQBDEV,RDEVADD Put LDEV addr in TRQBLOKHRC065DK 01358200 BR R3 Return HRC065DK 01358300 SPACE 01359000 FRETTRQ EQU * RELEASE TRQBLOK @VM03152 01360000 L R1,RDEVAIRA GET POINTER TO TRQBLOK @VM03152 01361000 LTR R1,R1 IS THERE A TRQBLOK POINTER @VM03152 01362000 BNPR R3 RETURN TO IN LINE CODE @VM03152 01363000 LA R0,TRQBSIZE+CRTEXT SIZE OF TRQBLOK + EXTENSION @VA13071 01364100 CALL DMKFRET RELEASE STORAGE @VM03152 01365000 SR R0,R0 CLEAR REGISTER @VM03152 01366000 ST R0,RDEVAIRA CLEAR TRQBLOK POINTER FIELD @VM03152 01367000 BR R3 RETURN TO IN LINE CODE @VM03152 01368000 SPACE 2 01369000 BLDIOB LA R0,IOBSIZE IOBLOK SIZE @V200830 01370000 CALL DMKFREE GET A BLOK @V200830 01371000 LR R10,R1 IOBLOK ADDRESSING @V200830 01372000 XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR BLOK @V200830 01373000 ST R11,IOBUSER USER OF IOBLOK @V200830 01374000 LA R1,DMKGRFIN INTERRUPT RETURN ADDRESS @V200830 01375000 ST R1,IOBIRA SET RETURN ADDRESS @V200830 01376000 MVC IOBRADD,RDEVADD Device address to IOB HRC065DK 01376100 BR R3 RETURN @V200830 01378000 SPACE 1 01379000 FRETIOER EQU * @VA01632 01380000 L R1,IOBIOER PICK UP IOERBLOK @VA01632 01381000 LTR R1,R1 IS THERE AN IOERBLOK @VA01632 01382000 BCR 8,R3 NO, RETURN TO IN LINE CODE @VA01632 01383000 LA R0,IOERSIZE @VA01632 01384000 AH R0,IOEREXT-IOERBLOK(,R1) EXTENSION, IF ANY @VA01632 01385000 CALL DMKFRET @VA01632 01386000 SLR R1,R1 @VA01632 01387000 ST R1,IOBIOER CLEAR OUT THE IOBLOK FIELD @VA01632 01388000 NI IOBFLAG,X'FF'-IOBERP IND ERP NOT IN CTL @VA03381 01389000 BR R3 RETURN @VA01632 01390000 SPACE 01391000 EJECT 01392000 * THESE ROUTINES BUILD VARIOUS CHANNEL PROGRAMS FOR GRAF 01393000 * 01394000 * R6 = ADDRESS OF CONTASK 01395000 * R8 = ADDRESS OF RDEVBLOK 01396000 * R10= ADDRESS OF IOBLOK 01397000 * FIELDS DEFINED IN CONCCW HAVE THE FOLLOWING MEANING 01398000 * CONADDR = ADDRESS OF INPUT/OUTPUT AREA 01399000 * CONFLAG = (F1 FOR WRITE; F6 FOR READ) 01400000 * CONCNT = NUMBER OF BYTES IN CHANNEL PROGRAM 01401000 * 01402000 * 01403000 SPACE 2 01404000 BLDCCWS EQU * HRC071DK 01405000 TM RDEVSTA3,RDEVEWRT Erase/write required? HRC071DK 01405100 BO NOFMT Y, skip logo redraw HRC071DK 01405200 TM TRQBFLAG,CRTFMT Screen formatted? HRC071DK 01405300 BZ FMTGRF NO, DO IT NOW 01406000 NOFMT EQU * HRC071DK 01406500 CLI RDEVTFLG,RDEVRUN RUNNING STATE ?? 01407000 BE BLDCONT YES - START UP THIS TASK @VM08871 01408000 TM RDEVTFLG,RDEVREAD IS THERE A READ ACTIVE ? @VM01089 01409000 BO READPRI YES, CHECK FOR PRIORITY WRITE @VM01089 01410000 TM RDEVTFLG,RDEVHOLD IS SCREEN IN HOLD STATUS @VM01089 01411000 BZ IDLEIOB NO, DON'T INTERRUPT @VM01089 01412000 L R1,RDEVUSER GET USER VMBLOK POINTER @VM01089 01413000 TM VMRSTAT-VMBLOK(R1),VMLOGOFF IS LOGOFF ACTIVE @VM01089 01414000 BZ IDLEIOB NO, DON'T INTERRUPT @VM01089 01415000 B GRFCLR CLEAR SCREEN @VM01089 01416000 SPACE 2 01417000 READPRI EQU * @VM01089 01418000 L R1,CONPNT POINTER TO NEXT TASK, IF ANY @VM08871 01419000 LTR R1,R1 MAKE SURE THERE IS ONE @VM08871 01420000 BNP IDLEIOB NOPE -- JUST EXIT @VM08871 01421000 TM CONPARM-CONTASK(R1),PRIORITY BREAK-IN SITUATION@VM08871 01422000 BZ IDLEIOB NO -- CONTINUE @VM08871 01423000 ST R1,RDEVCON REMOVE THE READ TASK FROM CHAIN @VM08871 01424000 NI CONSTAT,255-CONESCP TASK IS NOT ACTIVE @VM08871 01425000 READBRK EQU * RE-INSERT THE READ CONTASK @VM08871 01426000 L R2,CONPNT-CONTASK(,R1) ADDRESS OF NEXT TASK @VM08871 01427000 LTR R2,R2 IS THERE ANOTHER ONE ? @VM08871 01428000 BNP READINS NO -- INSERT THE READ HERE @VM08871 01429000 TM CONPARM-CONTASK(R2),PRIORITY MORE PRIORITY ? @VM08871 01430000 BZ READINS NO -- INSERT HERE @VM08871 01431000 LR R1,R2 SAVE A BACK POINTER @VM08871 01432000 B READBRK . . .AND KEEP LOOKING @VM08871 01433000 READINS EQU * RE-CHAIN THE READ CONTASK @VM08871 01434000 ST R2,CONPNT POINTER TO NEXT TASK @VM08871 01435000 ST R6,CONPNT-CONTASK(,R1) PATCH THE FORWARD CHAIN@VM08871 01436000 L R6,RDEVCON SET GR6 = ADDRESS OF TOP TASK @VM08871 01437000 * B BLDCONT START UP PRIORITY TASK @VM08871 01438000 EJECT 01439000 BLDCONT EQU * START UP A CONSOLE REQUEST @VM08871 01440000 TM CONSTAT,CONOUTPT IS THIS AN OUTPUT REQUEST ?? @V200730 01441000 BZ STRTREAD NO, DO A READ CONTASK @V200730 01442000 TM CONDWC,X'40' DIAG. CONSOLE WRITE ?? @VA07542 01443100 BZ CORD NO, CONT NORMALLY @V200730 01444000 TM VMMLVL2,VMMNHOLD ALLOWED TO HOLD SCREEN? HRC101DK 01444300 BO TSTWRITE NO, NEVER HOLD HRC101DK 01444600 TM TRQBFLAG,CRTALRM SCREEN HAVE ALARM MESSAGE ?? 01445000 BO CRTHOLD YES, FORCE TO HOLDING FIRST 01446000 TSTWRITE DS 0H HRC101DK 01446500 TM CONDWC,X'80' ERASE BEFORE WRITE ?? @VA07542 01447100 BO DIAGCLR YES, CHECK IT OUT 01448000 DIAGRUN NI CONDWC,X'3F' TURN OFF DIAGNOSE FLAG @VA07542 01449100 IC R0,CONDWC GET LINE COORDINATOR @VA07542 01450100 SLR R2,R2 CLEAR INDEX REGISTER @V60A6B6 01451100 IC R2,RDEVGRTY GET DISPLAY SCREEN INDEX VALUE @V60A6B6 01451200 L R3,=A(DMKGRTIN) ADDRESS THE INPUT LINE NOS. @V60A6B6 01451300 L R3,0(R2,R3) INDEX TO CORRECT SET OF ADDR @V60A6B6 01451400 CLM R3,B'1000',CONDWC IS LINE NUMBER STARTING @V60A6B6 01451500 BE DIAGSIO AT THE INPUT AREA ? @VM03094 01452000 CLM R3,B'0100',CONDWC OR IS IT BOTTOM LINE ? @V60A6B6 01453200 BE DIAGSIO IF YES, TAKE SPECIAL PATH @VM03094 01454000 STC R0,RDEVCORD SET LINE CO-ORDINATE @V200730 01455000 OI TRQBFLAG,CRTDIAG FLAG DIAG WRITE @V200730 01456000 LH R1,CONCNT GET BYTE COUNT @VA08261 01456100 B SETCORD SET NEW CO-ORDINATE @V200830 01457000 DIAGSIO EQU * HANDLE WRITING TO INPUT AREA @VM03094 01458000 OI TRQBFLAG,CRTSIO SET WRITING TO INPUT AREA FLAG @VM03094 01459000 STC R0,TRQBLINE SAVE LINE COORDINATE @VM03094 01460000 LA R0,BUFINLTH GET BUFFER SIZE @VM03116 01461000 CH R0,CONCNT IS THIS GREATER THAN COUNT @VM03116 01462000 BNL *+8 YES, BYPASS SAVING VALUE @VM03116 01463000 STH R0,CONCNT SAVE MAX. SIZE OF BUFFER @VM03116 01464000 B SETCORD SET NEW CO-ORDINATE @VM03094 01465000 SPACE 01466000 DIAGCLR CLI CONDWC,X'FF' ERASE CLEAR DIAGNOSE ?? @VA07542 01467100 BE CNCLDIAG YES, NO OUTPUT TO DO 01468000 NI CONDWC,X'7F' TURN OFF ERASE BIT @VA07542 01469100 CLI RDEVCORD,X'00' AT TOP NOW ?? @V200730 01470000 BE DIAGRUN YES, CONT @V200730 01471000 B CRTMORE NO, FORCE TO MORE... 01472000 SPACE 01473000 CNCLDIAG SR R2,R2 SET RETURN CODE 01474000 BAL R3,SETRETN SET RETURN CODE @V200830 01475000 BAL R3,CONRET RETURN CONTASK @V200830 01476000 B GRFCLR CLEAR SCREEN 01477000 SPACE 01478000 CORD TM TRQBFLAG,CRTDIAG WRITTEN WITH DIAG BEFORE ?? @V200730 01479000 BO CRTFULL YES, FORCE TO MORE... @V200730 01480000 TM RDEVSTA3,RDEVFULL In DIAG58 full screen? HRC062DK 01480100 BO CLD58FUL Y, CLEAR AFTER FULL SCR HRC058DK 01480110 LH R1,CONCNT GET BYTE COUNT @V200830 01481000 SLR R15,R15 GET CURRENT OUTPUT LINE HRC073DK 01482000 IC R15,RDEVCORD PICK UP CURRENT LINE.... HRC073DK 01482200 SR R14,R14 CLEAR HRC073DK 01482400 SR R4,R4 CLEAR HRC073DK 01482600 IC R4,RDEVLLEN GET LINE LENGTH HRC073DK 01482800 MR R14,R4 CONVERT TO BYTE COORDINATES HRC073DK 01483000 LR R4,R15 COORDINATES TO R4 HRC073DK 01483200 ALR R4,R1 TOTAL BYTES ON SCREEN @V200830 01485000 LA R3,2640 SIZE FOR 3066 @V60A6B6 01486100 CLI RDEVTYPE,TYP3066 GOING TO WRITE TO A 3066 ? @V60A6B6 01486200 BE TESTSIZE YES, SIZE IN REGISTER 3 IS OK @V60A6B6 01486300 SLR R2,R2 CLEAR INDEX REGISTER @V60A6B6 01486400 IC R2,RDEVGRTY DISPLAY ALT. SCREEN SIZE INDEX @V60A6B6 01488000 L R3,=A(DMKGRTDS) ADDRESS THE SCREEN SIZE TABLE @V60A6B6 01489100 L R3,0(R2,R3) LOAD APPROPRIATE DISPLAY SIZE @V60A6B6 01489200 TESTSIZE CLR R4,R3 WILL THE DATA FIT THE SCREEN ? @V60A6B6 01489300 BH CRTFULL NO, SCREEN FULL @V200730 01491000 SETCORD SR R0,R0 CLEAR FOR DIVIDE @V200830 01492000 SLR R15,R15 CLEAR FOR IC HRC073DK 01492200 IC R15,RDEVLLEN GET LINE LENGTH HRC073DK 01492400 LR R14,R15 COPY HRC073DK 01492600 BCTR R14,0 LINE LEN LESS 1 FOR ROUND UP HRC073DK 01492800 ALR R1,R14 ROUND UP TO NEXT LINE HRC073DK 01493000 DR R0,R15 DIVIDE TO GET NUMBER OF LINES HRC073DK 01494000 LR R4,R1 REMEMBER NUMBER OF LINES @V200830 01495000 BAL R3,RSTTMR RESET TIMER REQUEST @VA08898 01495500 MVI RDEVTFLG,RDEVRUN+RDEVCTL RUN & CTL @VA08898 01496000 BAL R14,WRTSCN SCAN FOR LOGICAL CHARS. @V407508 01497100 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 01498000 BZ NOAPLW NO, BYPASS APL FUNCTION @V60A6B6 01499000 LH R3,CONCNT LOAD DATA COUNT @V305798 01500000 LTR R3,R3 IS COUNT VALUE ZERO @V305798 01501000 BZ NOAPLW YES, BYPASS APL TRANSLATION @V305798 01502000 TM RDEVTMCD,RDEVAPLP+RDEVTEXT TRANS INDICATED? @V387398 01503000 BZ NOAPLW NO, BYPASS TRANSLATION @V387398 01504000 LH R0,CONTSKSZ GET SIZE OF CURRENT CONTASK @V305798 01505000 AR R0,R0 DOUBLE CONTASK SIZE @V305798 01506000 CALL DMKFREE GET STORAGE FOR NEW CONTASK @V305798 01507000 MVC 0(CONDATA-CONTASK,R1),0(R6) GET HEADER DATA @V305798 01508000 ST R1,RDEVCON SAVE POINTER TO NEW CONTASK @V305798 01509000 L R1,=A(DMKTBMZO) COMPOUND TRANSLATE TABLE @VM03172 01510000 TM RDEVTMCD,RDEVTEXT 3270 TEXT CHARACTER SET? @V387398 01510200 BZ WRTRANS NO -> TRANSLATE TABLE ALL SET @V387398 01510400 L R1,=A(DMKTBMTO) TEXT COMPOUND TRANSLATE TABLE @V387398 01510600 WRTRANS EQU * @V387398 01510800 TRANS 2,1,OPT=(BRING,DEFER,SYSTEM),AFFINITY GET TABLE @V407508 01511100 STM R1,R10,TEMPSAVE SAVE CURRENT REGISTERS @VM03172 01512000 LR R7,R2 REAL ADDRESS FOR TRANSLATE TABLE @VM03172 01513000 L R1,RDEVCON RESTORE ADDRESS OF NEW CONTASK @VM03172 01514000 LA R5,CONDATA-CONTASK(,R1) GET POINTER TO DATA AREA@V305798 01515000 L R4,CONADDR POINTER TO CURRENT DATA AREA @V305798 01516000 ST R5,CONADDR-CONTASK(,R1) SAVE DATA AREA POINTER @VM03040 01517000 STH R0,CONTSKSZ-CONTASK(,R1) SAVE SIZE OF CONTASK @VM03040 01518000 SR R14,R14 CLEAR COUNT REGISTER @V407508 01519100 BAL R10,TRANSTST TRANSLATE & TEST FOR COMP. CHAR. @V305798 01520000 B FRETNEW RELEASE NEW CONTASK STORAGE @V305798 01521000 APLCOMP EQU * PUT FAKE CHAR. BEFORE COMP. CHAR @V305798 01522000 MVI 0(R5),X'1D' PUT FAKE ATTRIBUTE IN AREA @V305798 01523000 STC R2,1(,R5) PUT COMPOUND CHAR. INTO BUFFER @V305798 01524000 LA R5,2(,R5) UPDATE PASS COMPOUND CHARACTER @V305798 01525000 LA R4,1(,R4) UPDATE PASS COMPOUND CHARACTER @V305798 01526000 LA R14,1(,R14) KEEP COUNT OF FAKE ATTR. CHARS. @V407508 01527100 SR R3,R1 DECREMENT BYTE COUNT @V305798 01528000 S R3,F1 SUBSTRACT ONE - COMPOUND CHAR. @V305798 01529000 BNP FRETOLD GET OUT - FINISH @V305798 01530000 BAL R10,TRANSTST TRANSLATE & TEST FOR COMP. CHAR. @V305798 01531000 B FRETOLD RELEASE OLD CONTASK STORAGE @V305798 01532000 B APLCOMP PUT FAKE ATTR. CHAR IN BUFFER @V305798 01533000 FRETNEW EQU * RELEASE NEW CONTASK STORAGE @V305798 01534000 L R1,RDEVCON GET POINTER TO NEW CONTASK @V305798 01535000 ST R6,RDEVCON SAVE CURRENT/OLD CONTASK PTR. @V305798 01536000 B FRETCONT RELEASE NEW CONTASK @V305798 01537000 FRETOLD EQU * RELEASE CURRENT CONTASK STORAGE @V305798 01538000 LR R1,R6 GET CURRENT CONTASK POINTER @V305798 01539000 LH R0,CONTSKSZ GET SIZE OF OLD CONTASK @V305798 01540000 AH R14,CONCNT ADD NUMBER OF FAKE CHAR TO COUNT @V407508 01541100 L R6,RDEVCON GET POINTER TO NEW CONTASK @V305798 01542000 STH R14,CONCNT UPDATE DATA COUNT @V407508 01543100 FRETCONT EQU * RELEASE CONTASK @V305798 01544000 CALL DMKFRET RELEASE CONTASK @V305798 01545000 LM R1,R10,TEMPSAVE RESTORE REGISTERS @V305798 01546000 L R6,RDEVCON GET CONTASK POINTER @V305798 01547000 TM RDEVTMCD,RDEVTEXT 3270 TEXT? @V387398 01547070 BZ NOAPLW BR IF NOT @V387398 01547140 LH R0,CONCNT DATA LENGTH @V387398 01547210 LA R1,CONDATA POINT TO DATA @V387398 01547280 TXTLP LR R3,R0 REMAINING BYTE COUNT @V387398 01547350 BCTR R3,0 - 1 FOR EXECUTE @V387398 01547420 N R3,F255 MASK @V387398 01547490 EX R3,TXTTRAN TRANSLATE TEXT OUTPUT @V387398 01547560 LA R3,1(,R3) BYTE COUNT JUST TRANSLATED @V387398 01547630 AR R1,R3 POINT TO NEXT BYTE TO TRANSLATE @V387398 01547700 SR R0,R3 BYTES REMAINING @V387398 01547770 BP TXTLP LOOP IF MORE TO TRANSLATE @V387398 01547840 NOAPLW EQU * @V305798 01548000 OI CONSTAT,CONESCP CONTASK PROCESSED @V200830 01549000 LA R1,CONRETBF FRET AFTER WRITE DONE @V200730 01550000 ST R1,TRQBCRT SET RETURN PROCESSING @V200730 01551000 LA R1,CONCCW1 CCW START ADDRESS @V200830 01552000 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 01554000 BNZ BLD77WRT WRITE DATA @V60A6B6 01555000 B BLD66WRT 3066 WRITE DATA @V200730 01556000 EJECT 01557000 CRTFULL EQU * @VM01089 01558000 TM CONPARM,LOGDROP+LOGHOLD IS THIS A LOGOFF REQ. @VM01089 01559000 BNZ CRTMORE YES, PUT SCREEN IN MORE STATUS @VM01089 01560000 TM VMMLVL2,VMMNHOLD ALLOWED TO HOLD? HRC101DK 01560300 BO CRTMORE NOPE, NEVER HOLD HRC101DK 01560600 TM TRQBFLAG,CRTALRM ALARM MESSAGE DISPLAYED ? @VM01089 01561000 BO CRTHOLD YES, HOLD SCREEN @V200730 01562000 B CRTMORE SCREEN TO MORE... @V200730 01563000 SPACE 2 01564000 STRTREAD EQU * READ OR CONTROL CONTASK @V200830 01565000 TM CONSTAT,CONSYNC SYNCHRONIZATION TASK ? @V200830 01566000 BZ STRTREDY NO -- MUST BE A READ @V200830 01567000 BAL R3,CONRET RETURN CONTASK TO DMKQCN @V200830 01568000 B NOCTL CHECK FOR MORE CONTASK'S @V200830 01569000 STRTREDY EQU * BUILD CCW'S FOR READ @V200830 01570000 MVI RDEVTFLG,RDEVREAD+RDEVCTL READ AND CONTROL @V200830 01571000 OI CONSTAT,CONESCP CONTASK PROCESSED @V200830 01572000 LA R1,NOCTL RETURN PROCESSING @V200730 01573000 ST R1,TRQBCRT SET RETURN PROCESSING @V200730 01574000 TM RDEVTYPE,TYP3277+TYP3278 IS IT A 3270? @V60A6B6 01575000 BZ TST66CP NO, TEST FOR 3066 @V60A6B6 01576000 TM CONPARM,INHIBIT NON-DISPLAY DATA ?? @V200830 01577000 BO SETPRO YES @V200730 01578000 TM CONPARM,VMGENIO VIRT MACH READ DATA ?? @V200830 01579000 BO BLD77VMR YES @V200730 01580000 B BLD77CPR CP READ @V200730 01581000 SETPRO TM CONPARM,VMGENIO VIRT MACH READ DATA ?? @V200830 01582000 TM CONPARM,INHIBIT NON-DISPLAY DATA ?? HRC001DK 01582100 BNO DCC014 HRC001DK 01582200 ICM R1,15,VMHRCALL GET A(RECALL BUFFER) HRC001DK 01582300 BZ *+4+4 NONE, FORGET IT HRC001DK 01582400 OI 0(R1),INHIBIT DON'T KEEP THIS ONE ... HRC001DK 01582500 DCC014 TM CONPARM,VMGENIO V.MACH READ ? @V200830 HRC001DK 01582600 BO BLD77VMP YES @V200730 01583000 B BLD77CPP CP READ @V200730 01584000 SPACE 01585000 TST66CP TM CONPARM,VMGENIO VIRT MACH READ DATA ?? @V200830 01586000 BO BLD66VMR YES @V200730 01587000 B BLD66CPR CP READ @VM03094 01588000 SPACE 2 01589000 FAKESUB EQU * REMOVE FAKE ATTRIBUTE CHARACTER @VM03094 01590000 CLI 0(R3),X'00' LOOKING FOR ENDING CHARACTER @VM03094 01591000 BER R14 YES, RETURN TO IN LINE CODE @VM03094 01592000 CLI 0(R3),X'1D' IS FAKE ATTRIBUTE CHAR. INDICATED@VM03094 01593000 BNE NOFAKE NO, BYPASS TRANSLATION @VM03094 01594000 BCT R0,XLATE2 TRANSLATE THE CMPD CHAR IF ANY @VM13277 01594100 BR R14 RETURN IF NO MORE CHARS @VM13277 01594200 XLATE2 DS 0H @VM13277 01594300 TR 1(1,R3),0(R7) TRANSLATE THE COMPOUND CHAR. @V387398 01594450 LA R3,1(,R3) SKIP X'1D' CHAR @V387398 01594900 B NOTEXT CONTINUE WITH NEXT CHARACTER @VM13277 01595350 SPACE 1 @V387398 01596250 SNGLCHAR EQU 256 OFFSET TO SINGLE CHARACTER XLATE TABLE @V387398 01596700 SPACE 1 @V387398 01597150 NOFAKE TM RDEVTMCD,RDEVTEXT 3270 TEXT? @V387398 01597600 BZ NOTEXT NO, DON'T DO EXTRA TRANSLATE @V387398 01598050 C R3,IOBMISC IS THIS FIRST LOOK AT BUFFER? @VA09496 01598100 BNE XLATE NO, TRANSLATE AS USUAL @VA09496 01598150 CLC 0(4,R3),TSTRQMSG IS IT TEST REQ MESSAGE? @VA09496 01598200 BE NOTEXT YES, NO XLATE FOR AID X'01' @VA09496 01598250 XLATE DS 0H @VA09496 01598300 TR 0(1,R3),SNGLCHAR(R7) TRANSLATE NON-CMPD. TEXT @V387398 01598500 NOTEXT MVC 0(1,R2),0(R3) SQUEEZE OUT X'1D' CHARS. @V387398 01598950 LA R2,1(,R2) POINT TO NEXT CHAR. POS. @V387398 01599400 LA R3,1(,R3) UPDATE BUFFER POINTER BY ONE @VM03094 01600000 BCT R0,FAKESUB LOOP IF ANOTHER CHARACTER @V387398 01601000 BR R14 RETURN TO IN LINE CODE @VM03094 01602000 TSTRQMSG DC XL4'016C6102' SOH % / STX -TEST REQ MSG FORMAT @VA09496 01602050 SPACE 2 01603000 TRANSTST EQU * TRANSLATE & TEST FOR COMP. CHAR. @V305798 01604000 CL R3,F256 LESS THAN 256 ? @V305798 01605000 BNH APLTST YES, ONLY TRANSLATE & TEST ONCE @V305798 01606000 TRT 0(256,R4),0(R7) TRANSLATE & TEST DATA @V305798 01607000 BNZ APLMOVE FOUND COMP. CHAR. - MOVE DATA @VM03094 01608000 MVC 0(256,R5),0(R4) MOVE DATA TO NEW BUFFER @V305798 01609000 LA R4,256(,R4) UPDATE CURRENT CONTASK BUFFER PTR@V305798 01610000 LA R5,256(,R5) UPDATE NEW CONTASK BUFFER PTR @V305798 01611000 S R3,F256 DECREMENT DATA COUNT @V305798 01612000 BNPR R10 IF ZERO, RETURN TO IN LINE CODE @VM03040 01613000 B TRANSTST CONTINUE TRANSLATING DATA @V305798 01614000 APLMOVE EQU * MOVE DATA INTO NEW CONTASK BUFFER@V305798 01615000 SR R1,R4 GET LENGTH OF DATA @V305798 01616000 EX R1,MOVEAPL MOVE DATA INTO NEW BUFFER @VM03040 01617000 AR R5,R1 UPDATE NEW BUFFER POINTER @V305798 01618000 AR R4,R1 UPDATE CURRENT BUFFER POINTER @V305798 01619000 B 4(R10) MOVE FAKE ATTR CHAR. INTO BUFFER @V305798 01620000 SPACE 01621000 APLTST EQU * TRANSLATE & TEST FOR COMP. CHAR. @V305798 01622000 BCTR R3,R0 SUBSTRACT ONE - EX INSTR. @VM03040 01623000 EX R3,TRTTST TRANSLATE & TEST DATA @VM03040 01624000 LA R3,1(,R3) UPDATE COUNTER - EX INSTR. @VM03040 01625000 BNZ APLMOVE FOUND COMPOUND CHARACTER @VM03094 01626000 BCTR R3,0 SUBTRACT ONE FOR EXECUTE @VA09182 01627100 EX R3,MOVEAPL MOVE DATA TO BUFFER @VA09182 01627200 LA R3,1(,R3) RESET BYTE COUNT @VA09182 01627300 BR R10 RETURN TO IN LINE CODE @V305798 01628000 EJECT 01629000 NOTCTL DS 0H @V407508 01630100 SWITCH CONTINUE PROCESSING ON I/O PROC @V407508 01630200 NOCTL DS 0H @V407508 01630300 NI RDEVTFLG,X'FF'-RDEVCTL RESET CTL FLAG @V407508 01630400 L R6,RDEVCON GET CONTASK STACK @V200730 01631000 LTR R6,R6 ANY TO DO ?? @V200730 01632000 BZ FRETIOB NO -- CLEAN UP AND EXIT @VM08587 01633000 TM CONSTAT,CONACTV FINISHED INPUT CONTASK ? @VM08587 01634000 BZ BLDCCWS NO -- TRY TO START IT UP @VM08587 01635000 BAL R3,CONRET RETURN THE FINISHED TASK @VM08587 01636000 B NOCTL TAKE ANOTHER LOOK @VM08587 01637000 FRETIOB EQU * @VA01632 01638000 CLRCTL NI RDEVTFLG,X'FF'-RDEVCTL NO CTL MODE @V200730 01640000 IDLEIOB EQU * FRET IOBLOK AND SIT IDLE UNLESS @VA02361 01641000 * COPIED IOBLOK 01642000 TM RDEVGRIC,GRAPHAT ATTN PENDING? HRC101DK 01642200 BO ATTNINT1 YES - GO TAKE CARE OF IT HRC101DK 01642400 IDLEIOB1 EQU * HRC101DK 01642600 C R10,IOBLINK COPIED IOBLOK ? @VA02361 01643000 BNE *+8 YES -- SOME IOBLOK STILL ACTIVE @VA02361 01644000 NI RDEVFLAG,X'FF'-RDEVACTV NO -- NO ACTIVE IOBLOK @VA02361 01645000 RELIOBLK BAL R3,FRETIOER FRET ANY IOERBLOK @VA04772 01645500 LR R1,R10 ADDRESS OF IOBLOK TO FRET @VA02361 01646000 LA R0,IOBSIZE AND SIZE OF IT. @VA02361 01647000 CALL DMKFRET @VA02361 01648000 GRFEXIT GOTO DMKDSPCH DISPATCH @V200830 01649000 SPACE 3 01650000 SPACE 1 01651000 SPACE 2 01652000 EJECT 01653000 BLD77WRT EQU * BUILD WRITE CCWS @V305798 01654000 LA R0,4 WRITE CCW CONTROL CHARS. SIZE @V60A6B6 01655100 AH R0,CONCNT ADD IN THE CONTASK DATA COUNT @V60A6B6 01655200 SLR R2,R2 CLEAR THE INDEX REGISTER @V60A6B6 01655300 L R2,RDEVGRTB LOAD GRTBLOK START ADDRESS... @V60A6B6 01655400 MVC CONCCW1(24),GRTWRTCP-GRTBLOK(R2) GET MODELS @V60A6B6 01655500 MVI CONCCW4+4,WCC0 SET UP WRITE CONTROL CHARACTER HRC310DK 01655660 MVI CONCCW4+5,SBA ADD A SET BUFFER ADDRESS ORDER @V60A6B6 01655700 TM RDEVSTA3,RDEVEWRT Erase/write required? HRC071DK 01655710 BZ NOEWA No HRC071DK 01655720 NI RDEVSTA3,255-RDEVEWRT Turn off flag HRC071DK 01655730 MVI CONCCW4+4,WCC6 Use unlock WCC HRC071DK 01655740 MVI CONCCW2,EWR Set CCW to Erase Write HRC071DK 01655750 CLI RDEVMDL,X'02' Model num > 2 ? HRC071DK 01655760 BNH NOEWA No, its 2 or less HRC071DK 01655770 MVI CONCCW2,EWA CCW to Erase Write Alt HRC071DK 01655780 NOEWA EQU * HRC071DK 01655790 STH R0,CONCCW2+6 SET TOTAL DATA COUNT INTO CCW. @V60A6B6 01655800 STC R4,CONCCW1+5 SAVE NUMBER OF LINES @V200830 01657000 LA R3,CONCCW4+4 DATA START @V200830 01661000 STCM R3,7,CONCCW2+1 SET CCW ADDRESS @V200830 01662000 SR R3,R3 CLEAR @V200830 01663000 IC R3,RDEVCORD GET LINE POSN @V200730 01664000 TM TRQBFLAG,CRTSIO IS USER WRITING TO INPUT AREA @VM03094 01665000 BZ *+8 NO,BYPASS GETTING LINE COORDINATE@VM03094 01666000 IC R3,TRQBLINE GET INPUT AREA LINE COORDINATE @VM03094 01667000 SLL R3,1 TIMES 2 @V200730 01668000 LH R2,CONCCW4+8 GET SBA FROM DATA HRC301DK 01669105 CH R2,=X'1DE8' IS THIS A HIGHLIGHT SBA HRC301DK 01669110 BNE BLD77REG NO, CONTINUE HRC301DK 01669115 LTR R3,R3 ON FIRST LINE? HRC310DK 01669120 BZ BLD77LST YUP, PUT ON LAST LINE HRC310DK 01669125 L R2,=A(DMKGRTBF) TABLE OF LAST CHARS HRC310DK 01669130 S R3,F2 BACK UP ONE HRC310DK 01669135 B BLD77SBA AND INSERT SBA HRC310DK 01669140 BLD77LST L R2,RDEVGRTB GET THE RIGHT GRT BLOCK HRC310DK 01669145 LA R3,GRTLAST-GRTBLOK POINT AT THE ADDR'S HRC310DK 01669150 B BLD77SBA HRC301DK 01669155 BLD77REG EQU * HRC310DK 01669160 L R2,=A(DMKGRTBL) HRC301DK 01669165 BLD77SBA EQU * HRC301DK 01669170 * The following code thru label NOTMD5 allows this update to HRC073DK 01669200 * be applied and operate correctly with or without the HRC073DK 01669250 * presence of modification HRC310DK. HRC073DK 01669300 CLI RDEVMDL,X'05' IS THIS A 3278-5? HRC073DK 01669350 BNE NOTMD5 NO; NO SPECIAL PROCESSING HRC073DK 01669400 C R2,=V(DMKGRTBF) USING 'LAST CHAR' TABLE? HRC073DK 01669450 BE MD5LAST YES, SWITCH IT TO MOD 5 VERSION HRC073DK 01669500 C R2,=A(DMKGRTBL) USING NORMAL SBA TABLE? HRC073DK 01669550 BNE NOTMD5 NO; NO FURTHER ACTION REQUIRED HRC073DK 01669600 L R2,=A(DMKGRTCL) USE MODEL 5 'NORMAL' SBA TABLE HRC073DK 01669650 B NOTMD5 REJOIN ORIGINAL CODE HRC073DK 01669700 MD5LAST EQU * HRC073DK 01669750 L R2,=A(DMKGRTCF) USE MODEL 5 'LAST CHAR' TABLE HRC073DK 01669800 NOTMD5 EQU * HRC073DK 01669850 LH R3,0(R2,R3) LOAD CORRECT EBCDIC DATA @VA60A6B6 HRC073DK 01669900 STH R3,CONCCW4+6 SET BUFFER ADDRESS @V200830 01670000 TM CONPARM,ALARM ALARM WITH MESSAGE ?? @V200830 01671000 BZ CALLIOS NO, CONT @V200730 01672000 OI TRQBFLAG,CRTALRM FLAG SCREEN ALARM @V200730 01673000 OI CONCCW4+4,WCC5 SET ALARM BIT @V200830 01674000 B CALLIOS CONT @V200730 01675000 SPACE 01676000 BLD77IDS L R1,IOBCAW GET CCW ADDRESS FOR BUILD @V200730 01677000 SLR R2,R2 CLEAR THE INDEX REGISTER @V60A6B6 01678100 L R2,RDEVGRTB GET GRTBLOK START ADDRESS... @V60A6B6 01678200 MVC 0(24,R1),GRTWINCP-GRTBLOK(R2) MOVE IN CCWS @V60A6B6 01678300 STCM R4,7,17(R1) SET DATA ADDRESS @V200730 01680000 STH R3,22(R1) SET DATA COUNT @V200730 01681000 BLDRDEX LA R1,RDEXIT RETURN PROCESSING 01684000 ST R1,TRQBCRT SET RETURN ADDRESS @V200730 01685000 L R1,IOBCAW GET CCW START @V200730 01686000 B CALLIOS DO IO @V200730 01687000 SPACE 01693000 BLD77RMI L R1,IOBCAW GET CCW ADDRESS @V200730 01694000 L R2,RDEVGRTB GET GRTBLOK START ADDRESS... @V60A6B6 01695100 MVC 0(24,R1),GRTRMICP-GRTBLOK(R2) MOVE IN CCWS @V60A6B6 01695200 L R3,IOBMISC GET BUFFER ADDRESS @V200730 01696000 STCM R3,7,17(R1) SET DATA ADDRESS @V200730 01697000 B CALLIOS CONT @V200730 01698000 EJECT 01699000 BLD77FMT EQU * @V60A6B6 01701000 SR R3,R3 HRC101DK 01702990 IC R3,RDEVGRTY GET THE INDEXED VALUE HRC101DK 01703980 L R1,=A(DMKBOXMD) HRC101DK 01704970 L R1,0(R3,R1) GET ADDRESS OF LOGO HRC101DK 01705960 SLL R3,2 Multiply index by 4 HRC071DK 01705963 LA R3,FMT77M2(R3) -> CCW for this model # HRC071DK 01705965 * If we are running on Hercules-380, then update the "VM/370 HRC370DK 01705970 * Online" message to say "VM/380 Online". HRC370DK 01705980 MVC 748(R1,1),INSTWRD1 zap with 7 or 8 from PSA HRC370DK 01705990 MVC 14(2,R3),0(R1) Move logo size to CCW HRC071DK 01706951 LA R1,2(,R1) HRC101DK 01707940 STCM R1,7,9(R3) Move logo addr to CCW HRC071DK 01708931 * We update the "VM/370" message on the logo screen as well. HRC370DK 01708940 L R1,FMT77CCW get address of big logo screen HRC370DK 01708950 MVC 8(1,R1),INSTWRD1 zap with 7 or 8 from PSA HRC370DK 01708960 LR R1,R3 R1 -> Final CCW for IOS HRC071DK 01714100 TM VMOSTAT,VMSYSOP IS USER SYSTEM OPERATOR @VM08601 01717100 BZ CALLIOS NO - FORMAT CCW'S OK @VM08601 01717200 B GRFCLRT YES - CLEAR THE SCREEN @V60A6B6 01718000 SPACE 2 01719000 * OF THE OPERATIONS BELOW, THOSE WHICH BRANCH TO 'SETCCWS' 01720000 * HAVE AN OFFSET FROM THE START OF THE GRTBLOK RATHER THAN 01721000 * AN ADDRESS OF A CCW STRING LOADED INTO REGISTER 1. 01722000 SPACE 01723000 BLD77HLD LA R1,HLD77CCW CCW ADDRESS @V200730 01724000 B SETCCWS @V60A6B6 01725000 BLD77MOR LA R1,MOR77CCW CCW ADDRESS @V200730 01726000 B SETCCWS @V60A6B6 01727000 BLD77WNG LA R1,WNG77CCW CCW ADDRESS @V200730 01728000 B CALLIOS @V200730 01729000 BLD77NAC LA R1,NAC77CCW CCW ADDRESS @V200730 01730000 B SETCCWS @V60A6B6 01731000 BLD77CRD LA R1,CRD77CCW CCW ADDRESS @VA04374 01732200 TM RDEVTFLG,RDEVMORE+RDEVHOLD IN MORE OR HOLD @VA05100 01732410 BZ SETCCWS @V60A6B6 01732700 LA R1,MRD77CCW ELSE, LEAVE STATUS AS IS ... @VA04374 01732800 B SETCCWS @V60A6B6 01733100 BLD77RUN LA R1,RUN77CCW CCW ADDRESS @V200730 01734000 B SETCCWS @V60A6B6 01735100 BLD77CLR EQU * 01735200 TM TRQBFLAG,CRTUSEWA DO WE NEED A E/W? 01735300 BZ BLD77CLS 01735400 NI TRQBFLAG,X'FF'-CRTUSEWA RESET THE E/W FLAG 01735500 LA R1,EWR77CCW CCW ADDRESS 01735600 B SETCCWS 01735700 BLD77CLS EQU * 01735800 LA R1,CLR77CCW CCW ADDRESS @V60A6B6 01735900 MVI RDEVKEYC,0 CLEAR LAST INTERRUPT KEY HRC310DK 01735950 B SETCCWS @V60A6B6 01736000 BLD77VMR LA R1,VMR77CCW CCW ADDRESS @V200730 01738000 B SETCCWS @V60A6B6 01739000 BLD77CPR LA R1,CPR77CCW CCW ADDRESS @V200730 01740000 B SETCCWS @V60A6B6 01741000 BLD77CPP LA R1,CPP77CCW CCW ADDRESS @V200730 01742000 B SETCCWS @V60A6B6 01743000 BLD77VMP LA R1,VMP77CCW CCW ADDRESS @V200730 01744000 B SETCCWS @V60A6B6 01745000 BLD77RST LA R1,RST77CCW CCW ADDRESS HRC310DK 01745100 B SETCCWS HRC310DK 01745200 EJECT 01746000 * LOCAL 3270 CHANNEL PROGRAMS FOR ALL DISPLAY SIZES 01747000 SPACE 01748000 TAB77CCW CCW X'0B',0,SILI+CC,1 01763000 CCW X'01',*-*,SILI,9 01764000 SPACE 01765000 SNSCCW CCW X'04',*-*,SILI,1 SENSE FOR PRINTER @V305798 01766000 RDCOPY CCW X'0B',0,SILI+CC,1 SELECT CCW @V305798 01767000 CCW X'02',*-*,SILI,3848 READ SCREEN DATA @VM03116 01768000 WTCOPY CCW X'0B',0,SILI+CC,1 SELECT CCW @V305798 01769000 CCW X'05',*-*,SILI,*-* WRITE TO PRINTER @VA09763 01770000 SPACE 01776000 FMT77M2 CCW X'01',DMKGRTFD,SILI+CD,24 Model 2 HRC071DK 01777000 CCW X'00',*-*,SILI,792 HRC071DK 01777200 FMT77M3 CCW X'01',DMKGRTFD,SILI+CD,24 Model 3 HRC071DK 01777400 CCW X'00',*-*,SILI,792 HRC071DK 01777600 FMT77M4 CCW X'01',DMKGRTFD,SILI+CD,24 Model 4 HRC071DK 01777800 CCW X'00',*-*,SILI,792 HRC071DK 01778000 FMT77M2A CCW X'01',DMKGRTFD,SILI+CD,24 Model 2A HRC071DK 01778200 CCW X'00',*-*,SILI,792 HRC071DK 01778400 FMT77M5 CCW X'01',DMKGRTFD,SILI+CD,24 Model 5 HRC073DK 01778500 CCW X'00',*-*,SILI,792 HRC073DK 01778510 FMT77CCW EQU FMT77M2 HRC071DK 01778600 MODEL2 EQU X'00' SCREEN DISP FOR 3278 MOD 2 IS 00 HRC101DK 01780030 MODEL3 EQU X'04' SCREEN DISP FOR 3278 MOD 3 IS 04 HRC101DK 01780040 MODEL4 EQU X'08' SCREEN DISP FOR 3278 MOD 4 IS 08 HRC101DK 01780050 MODEL2A EQU X'0C' SCREEN DISP FOR 3278 MOD 2A IS 12 @V60A6B6 01780100 SPACE 01781000 WNG77CCW CCW X'0B',0,SILI+CC,1 @V200730 01805000 CCW X'01',WNG3277,SILI,1 @V200730 01806000 EJECT 01816000 COPYDWSZ DC A(3848/8,5120/8,6880/8,3200/8) HRC101DK 01830990 SPACE 2 01836000 KEYTBLP DC A(DATA77) 00 @V200730 01911000 DC A(CLRKEY) 04 @V305798 01912000 DC A(PA1KEY) 08 @V200730 01913000 DC A(PA3KEY) 0C @V200730 01914000 DC A(CRDREAD) 10 @V60A6B6 01915000 DC A(PFKEY) 14 @V200730 01916000 DC A(CNCLKEY) 18 @V60A6B6 01917000 DC A(TESTREQ) 1C @V60A6B6 01918000 SPACE 2 01919000 CPY77D DC AL1(WCCP,SBA,X'40',X'40') COPY CONTROL CHARS. @V60A6B6 01920000 WNG3277 DC AL1(WCC4) @VA07171 01921000 WCCP EQU X'F8' FOR STARTING PRINTER OPERATION @V60A6B6 01922000 NOMC DC X'10' DON'T ALLOW MONITOR CALL @VA09459 01925000 DS 0H @V60A6B6 01926000 EJECT 01939000 BLD66WRT EQU * BUILD 3066 WRITE CCW STRING @V305798 01940000 LH R3,CONCNT DATA COUNT @V200830 01941000 MVC CONCCW1(3*8),WRT66CCW SET CCWS @V200830 01942000 STC R4,CONCCW1+5 SAVE NUMBER OF LINES @V200830 01943000 STH R3,CONCCW2+6 SET DATA COUNT @V200830 01944000 LA R3,CONDATA DATA START @V200830 01945000 STCM R3,7,CONCCW2+1 SET CCW ADDRESS @V200830 01946000 MVC CONCCW4(2),RDEVCORD SET BUFFER ADDRESS @V200830 01947000 LA R3,CONCCW4 DATA ADDRESS @V200830 01948000 STCM R3,7,CONCCW1+1 SET CCW ADDESS @V200830 01949000 MVI WRT66ALM,X'03' ASSUME NO ALARM @V200830 01950000 TM CONPARM,ALARM ALARM WITH THIS MESSAGE @V200830 01951000 BZ CALLIOS NO, CONT @V200730 01952000 OI TRQBFLAG,CRTALRM FLAG SCREEN ALARM @V200730 01953000 MVI WRT66ALM,X'0B' SOUND ALARM @V200830 01954000 B CALLIOS CONT @V200730 01955000 SPACE 01956000 BLD66RMI L R1,IOBCAW GET CCW ADDRESS @V200730 01957000 MVC 0(32,R1),RMI66CCW GET MODEL CCWS @V200730 01958000 L R3,IOBMISC GET BUFFER ADDRESS @V200730 01959000 STCM R3,7,1(R1) SET CURSOR DATA ADDRESS @V200730 01960000 LA R3,6(R3) DATA ADDRESS @V200730 01961000 STCM R3,7,17(R1) SET ADAT CCW ADDRESS @V200730 01962000 B CALLIOS @V200730 01963000 SPACE 01964000 BLD66FMT LA R1,FMT66CCW CCW ADDRESS @V200730 01965000 B CALLIOS @V200730 01966000 BLD66HLD LA R1,HLD66CCW CCW ADDRESS @V200730 01967000 B CALLIOS @V200730 01968000 BLD66MOR LA R1,MOR66CCW CCW ADDRESS @V200730 01969000 B CALLIOS @V200730 01970000 BLD66WNG LA R1,WNG66CCW CCW ADDRESS @V200730 01971000 B CALLIOS @V200730 01972000 BLD66NAC LA R1,NAC66CCW CCW ADDRESS @V200730 01973000 B CALLIOS @V200730 01974000 BLD66CRD MVI CLRDATA,C' ' BLANK AN AREA @V200730 01975000 MVC CLRDATA+1(159),CLRDATA CLEAR TO BLANKS @V200730 01976000 LA R1,CRD66CCW POINT TO RUN MSG CCW @VA04374 01976200 TM RDEVTFLG,RDEVMORE+RDEVHOLD IN MORE OR HOLD ?? @VA05100 01976410 BZ CALLIOS NO, SET STATUS TO RUNNING @VA04374 01976600 LA R1,MRD66CCW ELSE, LEAVE SCREEN STAT AS IS @VA04374 01976800 B CALLIOS @V200730 01978000 BLD66RUN LA R1,RUN66CCW CCW ADDRESS @V200730 01979000 MVI WRT66ALM,X'03' SET END TO NOP @V200830 01980000 B CALLIOS @V200730 01981000 BLD66CLR LA R1,CLR66CCW CCW ADDRESS @V200730 01982000 B CALLIOS @V200730 01983000 BLD66VMR LA R1,VMR66CCW CCW ADDRESS @V200730 01984000 B CALLIOS @V200730 01985000 BLD66CPR LA R1,CPR66CCW CCW ADDRESS @V200730 01986000 B CALLIOS @V200730 01987000 EJECT 01988000 * 3066 CCW PACKAGES 01989000 SPACE 01990000 WRT66CCW CCW X'27',*-*,SILI+CC,2 @V200730 01991000 CCW X'01',*-*,SILI+CC,*-* @V200730 01992000 CCW X'08',RUN66CCW,0,0 TIC TO WRITE RUNNING @V200830 01993000 SPACE 01994000 RMI66CCW CCW X'0E',*-*,SILI+CC,3 @V200730 01995000 CCW X'27',SBA3300,SILI+CC,2 @V200730 01996000 CCW X'06',*-*,SILI+CC,BUFINLTH @V200730 01997000 CCW X'03',0,SILI,1 @V200730 01998000 SPACE 01999000 FMT66CCW CCW X'07',0,SILI+CC,1 @V200730 02000000 CCW X'27',SBA0000,SILI+CC,2 @V200730 02001000 CCW X'01',DMKGRTFO,SILI+CC,20 @V60A6B6 02002000 CCW X'27',SBA3460,SILI+CC,2 @V200730 02003000 CCW X'01',RUNNING,SILI+CC,20 @V60A6B6 02004000 CCW X'0F',SBA3300,SILI+CC,2 @V200730 02005000 CCW X'03',0,SILI,1 @V200730 02006000 SPACE 02007000 HLD66CCW CCW X'27',SBA3460,SILI+CC,2 @V200730 02008000 CCW X'01',HOLDING,SILI+CC,20 @V60A6B6 02009000 CCW X'03',0,SILI,1 @V200730 02010000 SPACE 02011000 MOR66CCW CCW X'27',SBA3460,SILI+CC,2 @V200730 02012000 CCW X'01',MOREMSG,SILI+CC,20 @V60A6B6 02013000 CCW X'03',0,SILI,1 @V200730 02014000 SPACE 02015000 NAC66CCW CCW X'27',SBA3460,SILI+CC,2 @V200730 02016000 CCW X'01',NOTACCPT,SILI+CC,20 @V60A6B6 02017000 WNG66CCW CCW X'0B',0,SILI+CC,1 02018000 CCW X'03',0,SILI,1 02019000 SPACE 02020000 CRD66CCW CCW X'27',SBA3300,SILI+CC,2 02021000 CCW X'01',CLRDATA,SILI+CC,140 @V200730 02022000 CCW X'27',SBA3460,SILI+CC,2 @VA04374 02023200 CCW X'01',RUNNING,SILI+CC,20 @V60A6B6 02023400 CCW X'0F',SBA3300,SILI+CC,2 @VA04374 02023600 CCW X'03',0,SILI,1 @V200730 02024000 SPACE 2 02024100 MRD66CCW CCW X'27',SBA3300,SILI+CC,2 @VA04374 02024200 CCW X'01',CLRDATA,SILI+CC,140 @VA04374 02024300 CCW X'0F',SBA3300,SILI+CC,2 @VA04374 02024400 CCW X'03',0,SILI,1 @VA04374 02024500 SPACE 02025000 RUN66CCW CCW X'27',SBA3460,SILI+CC,2 @V200730 02026000 CCW X'01',RUNNING,SILI+CC,20 @V60A6B6 02027000 WRT66ALM CCW X'03',0,SILI,1 @V200830 02028000 SPACE 02029000 CLR66CCW CCW X'0E',CLRMI,SILI+CC,3 @V200730 02030000 CCW X'0F',SBA0000,SILI+CC,2 @V200730 02031000 CCW X'27',SBA3300,SILI+CC,2 @V200730 02032000 CCW X'06',CLRDATA,SILI+CC,160 @V200730 02033000 CCW X'07',0,SILI+CC,1 @V200730 02034000 CCW X'27',SBA3300,SILI+CC,2 @V200730 02035000 CCW X'01',CLRDATA,SILI+CC,160 @V200730 02036000 CCW X'0F',CLRMI,SILI+CC,2 @V200730 02037000 CCW X'03',0,SILI,1 @V200730 02038000 CLRMI DC CL3' ' @V200730 02039000 CLRDATA DC CL160' ' @V200730 02040000 SPACE 02041000 VMR66CCW CCW X'27',SBA3460,SILI+CC,2 @V200730 02042000 CCW X'01',VMREAD,SILI+CC,20 @V60A6B6 02043000 CCW X'03',0,SILI,1 @V200730 02044000 SPACE 02045000 CPR66CCW CCW X'27',SBA3460,SILI+CC,2 @V200730 02046000 CCW X'01',CPREAD,SILI+CC,20 @V60A6B6 02047000 CCW X'03',0,SILI,1 @V200730 02048000 SPACE 3 02049000 * CONSTANTS 02050000 RUNNING DC CL20'RUNNING' @V60A6B6 02050010 HOLDING DC CL20'HOLDING' @V60A6B6 02050020 MOREMSG DC CL20'MORE...' @V60A6B6 02050030 NOTACCPT DC CL20'NOT ACCEPTED' @V60A6B6 02050040 CPREAD DC CL20'CP READ' @V60A6B6 02050050 VMREAD DC CL20'VM READ' @V60A6B6 02050060 SPACE 02050070 ENTER EQU X'80' 3066 ENTER MASK @V60A6B6 02050080 CANCEL EQU X'40' 3066 CANCEL MASK @V60A6B6 02050090 SPACE 02050100 SBA0000 DC AL1(00,00) CORDINATES FOR TOP OF CRT @V200730 02051000 SBA3300 DC AL1(33,00) COORDINATES FOR READ INPUT DATA @V200730 02052000 SBA3460 DC AL1(34,60) COORDINATES FOR SYSTEM STATUS @V200730 02053000 SPACE 02054000 MSGNUM DC AL1(0,1,2,3,4,30,31,32) ...DMKMSWR MSG NUMBERS @VA08135 02055100 SPACE 02056000 DS 0D ALIGN TO DOUBLE WORD BOUNDARY @V200730 02057000 RDEVKEYC DS 0X Dummy field to accommodate whether HRC101DK HRC072DK 02057500 * is present or not. HRC072DK 02057510 TMRVALUE DC D'0' TIME INTERVAL VALUE @V200730 02058000 PARM3277 DC X'04040102030F060F0F0F0F0F0F0F0F3F' @VA10802 02058110 PARMLEN EQU 2 LENGTH IN DOUBLEWORDS OF PARM LST@VA03757 02058200 SPACE 1 02058300 * BITS DEFINED IN 3277 SENSE BYTE 02058400 IR EQU X'40' INTERVENTION REQUIRED @VA03757 02058600 EC EQU X'10' EQUIPEMENT CHECK @VA03757 02058700 DC EQU X'08' DATA CHECK @VA03757 02058800 US EQU X'04' UNIT SPECIFY @VA03757 02058900 SPACE 02059100 X6A EQU X'6A' @V60A6B6 02059200 H784 DC H'0784' @V60A6B6 02059300 H792 DC H'0792' @V60A6B6 02059400 EJECT 02061000 LTORG @V200730 02062000 EJECT 02063000 GRTBLOK 02063010 * 3270 CCW OFFSETS INTO THE GRTBLOK 02063020 SPACE 02063030 CLR77CCW EQU GRTCLRCP-GRTBLOK @V60A6B6 02063040 CNC77CCW EQU GRTCNCCP-GRTBLOK HRC310DK 02063045 CPP77CCW EQU GRTCPPCP-GRTBLOK @V60A6B6 02063050 CPR77CCW EQU GRTCPRCP-GRTBLOK @V60A6B6 02063060 CRD77CCW EQU GRTCRDCP-GRTBLOK @V60A6B6 02063070 EWR77CCW EQU GRTEWRCP-GRTBLOK 02063080 HLD77CCW EQU GRTHLDCP-GRTBLOK @V60A6B6 02063090 MOR77CCW EQU GRTMORCP-GRTBLOK @V60A6B6 02063100 MRD77CCW EQU GRTMRDCP-GRTBLOK @V60A6B6 02063110 NAC77CCW EQU GRTNACCP-GRTBLOK @V60A6B6 02063120 RUN77CCW EQU GRTRUNCP-GRTBLOK @V60A6B6 02063130 RST77CCW EQU GRTRSTCP-GRTBLOK HRC310DK 02063135 VMP77CCW EQU GRTVMPCP-GRTBLOK @V60A6B6 02063140 VMR77CCW EQU GRTVMRCP-GRTBLOK @V60A6B6 02063150 SPACE 3 02063160 COPY TIMER @V200730 02064000 SPACE 2 02065000 EJECT 02081000 COPY DEVTYPES @V200730 02082000 COPY EQU @V200730 02083000 COPY VBLOKS @V200730 02084000 COPY RBLOKS @V200730 02085000 COPY CONBUF @V200730 02086000 BUFNORM EQU BUFINLTH+6 SIZE OF NORMAL READ BUFFER @VM03043 02087000 COPY IOBLOKS @V200730 02089000 COPY IOER @V200730 02090000 COPY VMBLOK @V200730 02091000 COPY SAVE @V200730 02092000 PSA @V200730 02093000 COPY XINTBLOK @V305798 02094000 END 02095000