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