ibm:vm370-lib:cp:dmkrgb.assemble_src
Table of Contents
DMKRGB Source
References
- Fixes Applied : 12
- This Source Date : Thursday, December 7, 1978
- Last Fix ID : [R13944DK]
Source Listing
- DMKRGB.ASSEMBLE.txt
- RGB TITLE 'DMKRGB (CP) VM/370 - RELEASE 6' 00001000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
- COPY OPTIONS @V305731 00003000
- COPY LOCAL @V305731 00004000
- EJECT 00005000
- ************************************************************* 00006000
- * 00007000
- * MODULE NAME - 00008000
- * 00009000
- * DMKRGB 00010000
- * 00011000
- * CONTENTS - 00012000
- * 00013000
- * DMKRGBIC - CONTASK INITIALIZATION AND SCHEDULING 00014000
- * DMKRGBEN - ENABLE OR DISABLE OF BISYNC LINES & REMOTE STATIONS 00015000
- * 00016000
- * FUNCTION - 00017000
- * 00018000
- * THIS MODULE PROVIDES SUPPORT FOR THE 3270 REMOTE DISPLAY 00019000
- * AND PRINTER STATIONS. THE MODULE HANDLES INTERRUPTS AND CCW 00020000
- * PROCESSING FOR THE REMOTE STATIONS INCLUDING MESSAGE HANDLING 00021000
- * AND SCREEN MANAGEMENT. 00022000
- SPACE 2 00023000
- DMKRGB START , @V305731 00024000
- SPACE 1 00025000
- USING PSA,R0 @V305731 00026000
- USING TRQBLOK,R4 @V305731 00027000
- USING CONTASK,R6 @V305731 00028000
- USING BSCBLOK,R5 @V305731 00029000
- USING RDEVBLOK,R8 @V305731 00030000
- USING IOBLOK,R10 @V305731 00031000
- USING VMBLOK,R11 @V305731 00032000
- USING NICBLOK,R9 @V305731 00033000
- SPACE 1 00034000
- EXTRN DMKIOSQR,DMKSTKCP,DMKSCHRT,DMKTBLGR @V305731 00035000
- EXTRN DMKTBLRG @VA06170 00035100
- EXTRN DMKQCNET,DMKRGAIN,DMKBOXBX,DMKIOSHA @V346931 00036100
- EXTRN DMKTBMZO @VM03172 00037000
- EXTRN DMKTBMTO @V387398 00037100
- SPACE 1 00038000
- ENTRY DMKRGBIC,DMKRGBEN,DMKRGBSN,DMKRGBMT @V305731 00039000
- EXTRN DMKPTRAN @VA07391 00039100
- EJECT 00040000
- ************************************************************* 00041000
- * 00042000
- * SUBROUTINE NAME - 00043000
- * 00044000
- * DMKRGBIC 00045000
- * 00046000
- * FUNCTION - 00047000
- * TO INITIALIZE THE CONTASK FIELDS WHICH COMPRISE THE 00048000
- * BINARY SYNCHRONOUS TRANSMISSION PROTOCOL HEADER AND 00049000
- * ENDING CHARACTER FOR THE 3270 REMOTE SUPPORT. 00050000
- * 00051000
- * ATTRIBUTES - 00052000
- * 00053000
- * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA GOTO 00054000
- * 00055000
- * ENTRY CONDITIONS - 00056000
- * 00057000
- * GR 12 = ADDRESS OF DMKRGBIC 00058000
- * GR 11 = ADDRESS OF A VALID VMBLOK 00059000
- * GR 8 = ADDRESS OF THE LINE RDEVBLOK 00060000
- * 00061000
- * EXIT CONDITIONS - 00062000
- * 00063000
- * EXIT IS MADE VIA GOTO DMKDSPCH AFTER STARTING ANY QUEUED 00064000
- * CONTASK REQUESTS FOR STATIONS AND PERFORMING OTHER 00065000
- * MESSAGE PROCESSING. 00066000
- * 00067000
- * CALL TO OTHER ROUTINES - 00068000
- * 00069000
- * DMKFREE - TO ALLOCATE FREE STORAGE FOR CONTASK'S 00070000
- * DMKFRET - TO RETURN ALLOCATED STORAGE 00071000
- * DMKIOSQR - TO START I/O OPERATION TO BISYNC LINE 00072000
- * DMKQCNET - TO RETURN CONTASK AT COMPLETION 00073000
- * DMKRGAIN - TO SECONDARY INTERRUPT HANDLER 00074000
- * DMKQCNET - RETURN CONTASK 00074200
- * DMKRGAIN - TO SECOND LEVEL INTERRUPT HANDLER 00074400
- * DMKIOSHA - HALT THE SWITCHED LINE 00074600
- * 00075000
- * EXTERNAL REFERENCES - 00076000
- * 00077000
- * DMKBOXBX - GET BUFFER ADDRESSES FOR VM LOGO 00078000
- * DMKTBMZO - APL 3270 COMPOUND CHARACTER TABLE 00078100
- * DMKTBMTO - TEXT 3270 COMPOUND CHARACTER TABLE 00078200
- * 00079000
- * TABLES / WORK AREAS - 00080000
- * 00081000
- * NONE 00082000
- * 00083000
- * NOTES - 00084000
- * 00085000
- * DMKRGBIC IS ENTERED VIA CPEXBLOK OR GOTO WHENEVER 00086000
- * DMKQCN HAS STACKED A CONTASK ON THE LINE RDEVBLOK, 00087000
- * AND THE CONTASK CHAIN WAS PREVIOUSLY EMPTY, OR IF 00088000
- * THE CONTASK HAD THE 'PRIORITY' FLAG SET. 00089000
- * 00090000
- * REGISTER USAGE - 00091000
- * 00092000
- * GR14,15 LINKAGE REGISTERS 00093000
- * GR12,13 MODULE BASE REGISTERS 00094000
- * GR11 = VMBLOK ADDRESSABILITY 00095000
- * GR10 = IOBLOK ADDRESSABILITY 00096000
- * GR 9 = NICBLOK ADDRESSABILITY 00097000
- * GR 8 = RDEVBLOK ADDRESSABILITY 00098000
- * GR 7 = INTERNAL LINKAGE REGISTER 00099000
- * GR 6 = CONTASK ADDRESSABILITY 00100000
- * GR 5 = BSCBLOK ADDRESSABILITY 00101000
- * GR0-4= WORK REGISTERS 00102000
- * 00103000
- * OPERATION - 00104000
- * 00105000
- * I. HANDLE CONTASKS QUEUED OFF RDEVBLOK (RDEVCON) 00106000
- * 00107000
- * 1. IF THE LINE IS NOT AVAILABLE, EXIT. 00108000
- * 00109000
- * 2. IF THERE ARE NO MORE CONTASKS TO BE PROCESSED, 00110000
- * ATTEMPT TO START OUTPUT TO THE LINE VIA RGSTART. 00111000
- * 00112000
- * 3. IF THE RESOURCE SPECIFIED BY THE VMTRMID FIELD IN 00113000
- * THE VMBLOK (FROM 'CONUSER') IS NOT AVAILABLE, SET 00114000
- * RETURN CODE 12 IN THE RESPONSE SAVEAREA (IF ANY), 00115000
- * AND RETURN THE CONTASK VIA CALL DMKQCNET. 00116000
- * 00117000
- * 4. CONTASKS ARE QUEUED OFF THE RESOURCES (NICBLOKS) THAT HAVE 00118000
- * THE SAME VMBLOK ADDRESS CONTAINED IN EACH CONTASK. 00119000
- * 00120000
- * II. HANDLE THE CONTASKS FOR OUTPUT AND INPUT REQUEST (RGSTART) 00121000
- * 00122000
- * 1. ATTEMPT TO START OUTPUT TO THE BISYNC LINE. IF THE BISYNC 00123000
- * LINE IS EITHER NOT READY OR ALREADY BUSY, EXIT. 00124000
- * 00125000
- * 2. DETERMINE IF THERE IS AN AVAILABLE STATION ON THE 00126000
- * CONTROL UNIT BY SCANNING THE ENTIRE NICBLOK LIST LOOKING 00127000
- * FOR THE FOLLOWING CONDITIONS: 00128000
- * 00129000
- * A. THE RESOURCE HAS AT LEAST ONE CONTASK QUEUED OFF THE 00130000
- * NICBLOK AND THE STATION IS NOT IN CONTROL MODE. 00131000
- * 00132000
- * B. IF NO STATIONS ARE AVAILABLE ON THE CONTROL UNIT, 00133000
- * THE CCWS ARE SET UP TO DO A GENERAL POLL OPERATION 00134000
- * TO THE REMOTE CONTROL UNIT TO READ DATA FROM A 00135000
- * STATION VIA A CALL TO DMKIOSQR. 00136000
- * 00137000
- * 3. THE SYNCHRONIZATION CONTASK IS RETURNED TO THE SYSTEM AND 00138000
- * THE NEXT CONTASK (IF ANY) IS PROCESSED FOR THIS STATION. 00139000
- * 00140000
- * 4. THE DIAGNOSE CONSOLE OUTPUT CONTASK IS PROCESSED IN THE 00141000
- * FOLLOWING WAY: 00142000
- * 00143000
- * A. GET LINE COORDINATE FROM THE CONTASK, SET DIAGNOSE 00144000
- * WRITE FLAG IN NICBLOK (NICDIAG), AND STORE THE LINE 00145000
- * COORDINATE IN THE NICBLOK (NICCORD). 00146000
- * 00147000
- * B. BUILD THE CONTROL CONTASK TO WRITE DATA TO THE REMOTE 00148000
- * DISPLAY STATION AND GO TO STEP 8. 00149000
- * 00150000
- * 5. WHEN THE CONTASK IS JUST AN OUTPUT CONTASK AND THE DISPLAY 00151000
- * SCREEN IS FULL, RESET TIMER REQUEST (IF PRESENT), BUILD 00152000
- * A CONTROL CONTASK TO WRITE THE STATUS MESSAGE (MORE), 00153000
- * AND GO TO STEP 8. 00154000
- * 00155000
- * 6. AN OUTPUT CONTASK AND THE DISPLAY SCREEN IS NOT FULL, 00156000
- * SETUP CCWS TO WRITE DATA TO THE DISPLAY STATION AND 00157000
- * GO TO STEP 8. 00158000
- * 00159000
- * 7. ON AN INPUT CONTASK, BUILD THE CCWS TO WRITE THE STATUS 00160000
- * (READ) TO THE DISPLAY SCREEN, SET THE STATION IN 00161000
- * CONTROL MODE, AND GO TO STEP 8. 00162000
- * 00163000
- * 8. GET STORAGE NECCESARY TO BUILD AN IOBLOK. THE IOBLOK IS 00164000
- * USED TO PERFORM THE PROCESSING OF ALL I/O REQUESTS TO 00165000
- * THE STATION AND BISYNC LINE. THE FOLLOWING FUNCTIONS ARE 00166000
- * HANDLED: 00167000
- * 00168000
- * A. SELECTION OF STATIONS 00169000
- * B. GENERAL POLLING OF 3270 CONTROL UNIT 00170000
- * C. SPECIFIC POLLING OF STATIONS 00171000
- * D. WRITING OF DATA TO THE STATIONS 00172000
- * 00173000
- * 9. DATA CHAINING OF WRITE OPERATIONS ONLY TAKES PLACE IF 00174000
- * THE FOLLOWING CONDITIONS DO NOT EXIST: 00175000
- * 00176000
- * A. A CONTROL TASK 00177000
- * B. A DIAGNOSE CONSOLE WRITE REQUEST 00178000
- * C. ONLY ONE CONTASK IS QUEUED OFF THE RESOURCE (NICBLOK) 00179000
- * D. THE CONTASK REPRESENTS A HIGH PRIORITY MESSAGE 00180000
- * E. NON-OUTPUT CONTASKS 00181000
- * 00182000
- * 10. SET UP CCWS TO WRITE THE STATUS WORD RUNNING (IF NEEDED) 00183000
- * AND THE READ CCW TO READ REPLY FROM REMOTE STATION. 00184000
- * 00185000
- * 11. SET UP IOBLOK BEFORE CALLING DMKIOSQR TO WRITE THE DATA 00186000
- * ACROSS BISYNC LINE. 00187000
- * 00188000
- * NOTES: 00188100
- * 00188200
- * 3275 SWITCHED OPERATION 00188300
- * . INSTEAD OF DOING A POLLING OPERATION AS ON A LEASED LINE 00188400
- * THE SUPPORT MUST ALWAYS HAVE A READ UP ON THE SWITCHED LINE. 00188500
- * 00188600
- * . INSTEAD OF DOING A SELECTION OPERATION AS ON A LEASED LINE 00188700
- * THE SUPPORT MUST BID FOR THE LINE BY SENDING AN ENQ 00188800
- * CHARACTER TO THE STATION. 00188900
- *************************************************************** 00189000
- EJECT 00190000
- USING DMKRGBIC,R12 @V305731 00191000
- DMKRGBIC DS 0D @V305731 00192000
- LM R12,R13,RGBBASE SETUP MODULE ADDRESSABILITY @V305731 00193000
- USING DMKRGB,R12,R13 @V305731 00194000
- SPACE 00195000
- SWITCH ENSURE WE ARE ON THE MAIN PROC @VA07391 00195100
- TM RDEVSTAT,RDEVDISA+RDEVDED+RDEVNRDY IS LINE AVAIL@V305731 00196000
- BNZ GODSPCH NO, GO BACK TO DISPATCHER @V305731 00197000
- L R5,RDEVBSC GET ADDRESS OF BSCBLOK @V305731 00198000
- SLR R10,R10 CLEAR IOBLOK REGISTER @V305731 00199000
- NEXTASK EQU * @V305731 00200000
- LA R7,GODSPCH RETURN ADDRESS WHEN DEVICE START @V305731 00201000
- L R6,RDEVCON PICK UP POINTER TO CONTASK @V305731 00202000
- LTR R6,R6 IS THERE A CONTASK PTR. ? @V305731 00203000
- BZ RGSTART TRY TO DO A START I/O TO THE LINE@V305731 00204000
- L R1,CONUSER LOAD ADDR OF NEW VMBLOK @V407511 00204100
- CR R1,R11 SAME USER @VA07454 00204200
- BE NONEED YES, NO NEED TO SWITCH @VA07454 00204300
- SWTCHVM OPT=STAY SWITCH VMBLOK LOCKING & CHARGING @V407511 00204600
- B NEXTASK MAKE SURE ENVIRON HASN'T CHANGED @VA07454 00204700
- NONEED DS 0H @VA07454 00204800
- L R1,CONPNT REMOVE FIRST CONTASK FROM CHAIN @V305731 00205000
- ST R1,RDEVCON SAVE NEXT CONTASK POINTER @V305731 00206000
- LA R7,NEXTASK RETURN ADDR. IF RESOURCE INVALID @V305731 00210000
- LH R9,VMTRMID GET RESOURCE ID OF USER @V305731 00211000
- N R9,F4095 CLEAR THE LINE CODE PORTION @V305731 00212000
- CH R9,RDEVMAX VALIDATE THE RESOURCE ID @V305731 00213000
- BH LINEFAL INVALID RESOURCE FOR THIS USER @V305731 00214000
- MH R9,=AL2(NICSIZE*8) COMPUTE NICBLOK LIST INDEX @V305731 00215000
- AL R9,RDEVNICL INDEX TO THE ACTUAL NICBLOK @V305731 00216000
- TM NICSTAT,NICDISA IS RESOURCE AVAILABLE ? @V305731 00217000
- BNZ LINEFAL NO, RETURN CONTASK @V305731 00218000
- BAL R7,QUEUE QUEUE CONTASK OFF NICBLOK @V305731 00219000
- BAL R7,NEXTASK GET NEXT CONTASK FROM RDEVBLOK @V305731 00220000
- SPACE 00221000
- LINEFAL EQU * @V305731 00222000
- LA R2,12(0) SET RETURN CODE FOR USER @V305731 00223000
- BAL R3,SETRETN SET RETURN CODE (IF POSSIBLE) @V305731 00224000
- L R0,CONPNT GET THE NEXT CONTASK IF ANY @V305731 00225000
- ST R0,RDEVCON SET NEXT CONTASK FOR PROCESSING @V305731 00226000
- SR R0,R0 CLEAR @V305731 00227000
- ST R0,CONPNT CLEAR CONTASK POINTER @V305731 00228000
- CALL DMKQCNET RETURN CONTASK @V305731 00229000
- BR R7 RETURN @V305731 00230000
- SPACE 1 00231000
- RGIGNORE EQU * RELEASE IOBLOK & IOERBLOK @V305731 00232000
- BAL R7,FRETIOB GO RELEASE STORAGE FOR IOBLOK @V305731 00233000
- GODSPCH EQU * EXIT TO THE DISPATCHER @V305731 00234000
- GOTO DMKDSPCH @V305731 00235000
- SPACE 3 00236000
- QUEUE EQU * @V305731 00237000
- LA R1,NICQPNT-(CONPNT-CONTASK) INITIAL BACK PTR @V305731 00238000
- QUEUECHN EQU * @V305731 00239000
- LR R2,R1 SAVE THE BACK POINTER @V305731 00240000
- L R1,CONPNT-CONTASK(,R2) GET NEXT CONTASK, IF ANY @V305731 00241000
- LTR R1,R1 IS THIS THE END OF THE CHAIN @V305731 00242000
- BP QUEUECHN NO, CAN NOT INSERT HERE @V305731 00243000
- ST R6,CONPNT-CONTASK(,R2) PUT CONTASK IN CHAIN @V305731 00244000
- ST R1,CONPNT SAVE POINTER TO NEXT CONTASK @V305731 00245000
- BR R7 RETURN @V305731 00246000
- SPACE 2 00247000
- SETRETN EQU * @V305731 00248000
- TM CONSTAT,CONRESP RESPONSE EXPECTED ? @V305731 00249000
- BZR R3 NO, RETURN @V305731 00250000
- L R1,CONRETN GET RETURN SAVEAREA ADDRESS @V305731 00251000
- ST R2,SAVER2-SAVEAREA(R1) SET RETURN CODE @V305731 00252000
- BR R3 RETURN @V305731 00253000
- EJECT 00254000
- ************************************************************* 00255000
- * 00256000
- * SUBROUTINE NAME - 00257000
- * 00258000
- * DMKRGBEN 00259000
- * 00260000
- * FUNCTION - 00261000
- * 00262000
- * TO EXECUTE ENABLE OR DISABLE OF BISYNC LINES AND 3270 00263000
- * REMOTE STATIONS. 00264000
- * 00265000
- * ATTRIBUTES - 00266000
- * 00267000
- * SERIALLY REUSEABLE, RESIDENT, ENTERED VIA SVC 00268000
- * 00269000
- * ENTRY CONDITIONS - 00270000
- * 00271000
- * GR13 = ADDRESS OF A STANDARD SAVEAREA 00272000
- * GR12 = ADDRESS OF DMKRGBEN 00273000
- * GR11 = ADDRESS OF USER VMBLOK 00274000
- * GR 9 = ADDRESS OF THE NICBLOK ON SVC ENTRY 00275000
- * GR 8 = ADDRESS OF THE LINE RDEVBLOK 00276000
- * GR 2 = PARAMETER FIELD 00277000
- * GR 0 = INDICATE BISYNC LINE OR REMOTE STATION 00278000
- * 00279000
- * EXIT CONDITIONS - 00280000
- * 00281000
- * EXIT IS MADE VIA A GOTO DMKDSPCH 00282000
- * CC = 0 -> REQUEST WAS SUCCESSFUL 00283000
- * CC = 2 -> EITHER THE SPECIFIED RESOURCE WAS INVALID, 00284000
- * THE LINE WAS NOT AVAILABLE, THE RESOURCE WAS 00285000
- * NOT AVAILABLE, OR A LINE FAILURE OCCURRED. 00286000
- * 00287000
- * CALLS TO OTHER ROUTINES - 00288000
- * 00289000
- * DMKSTKCP - TO STACK A CPEXBLOK FOR A LATER EXIT. 00290000
- * DMKFREE - TO ALLOCATE STORAGE FOR THE CONTASK. 00291000
- * DMKRGBIC - TO INITIATE I/O TO THE LINE. 00292000
- * 00293000
- * EXTERNAL REFERENCES - 00294000
- * 00295000
- * DMKBOXBX - GET BUFFER ADDRESSES FOR VM LOGO 00296000
- * 00297000
- * TABLES / WORK AREAS - 00298000
- * 00299000
- * NONE 00300000
- * 00301000
- * NOTES - 00302000
- * 00303000
- * NONE 00304000
- * 00305000
- * REGISTER USAGE - 00306000
- * 00307000
- * GR14,15 LINKAGE REGISTERS 00308000
- * GR13 = SAVEAREA ADDRESSABILITY 00309000
- * GR12 = DMKRGB BASE REGISTER 00310000
- * GR11 = VMBLOK ADDRESSABILITY 00311000
- * GR10 = IOBLOK ADDRESSABILITY (NOT USED) 00312000
- * GR 9 = NICBLOK ADDRESSABILITY (SVC ONLY) 00313000
- * GR 8 = RDEVBLOK ADDRESSABILITY 00314000
- * GR 7 = INTERNAL LINKAGE REGISTER 00315000
- * GR 6 = CONTASK ADDRESSABILITY 00316000
- * GR 5 = BSCBLOK ADDRESSABILITY 00317000
- * GR0-4= WORK REGISTERS 00318000
- * 00319000
- * OPERATION - 00320000
- * 00321000
- * 1. IF THE BISYNC LINE IS NOT AVAILABLE, SET RETURN REGISTER 00322000
- * TO 12, CONDITION CODE TO 2 AND RETURN TO CALLER. 00323000
- * 00324000
- * 2. IF THE REQUEST IS FOR ENABLING OR DISABLING THE BISYNC 00325000
- * LINE (REGISTER 0 = X'FF' IN LOW ORDER BYTE), THE FOLLOWING 00326000
- * FUNCTIONS ARE PERFORMED: 00327000
- * 00328000
- * A. GET A CONTROL CONTASK, BUILD THE CCWS FOR ENABLE OR 00329000
- * DISABLE FUNCTION AND QUEUE IT OFF THE CONTROL UNIT 00330000
- * NICBLOK. 00331000
- * 00332000
- * B. FOR ENABLE FUNCTION, GET STORAGE FOR THE BINARY 00333000
- * SYNCHRONOUS COMMUNICATION CONTROL BLOCK, SAVE 00334000
- * POINTER TO CONTROL BLOCK IN RDEVBLOK (RDEVBSC) AND 00335000
- * GO TO STEP 4. 00336000
- * 00337000
- * C. FOR DISABLING THE BISYNC LINE, SET UP THE DISABLE CCW 00338100
- * AND GO TO STEP 4. IF THIS IS A SWITCHED LINE AND 00338600
- * THERE IS AN ACTIVE I/O OPERATION ON THE LINE, CALL 00339100
- * DMKIOSHA TO TERMINATE THE I/O OPERATION AND RETURN TO 00339600
- * CALLER. 00340100
- * 3. FOR ENABLING OR DISABLING THE REMOTE STATIONS 00341000
- * (REGISTER 0 = X'00' IN LOW ORDER BYTE), THE FOLLOWING 00342000
- * FUNTIONS WILL BE PERFORMED. 00343000
- * 00344000
- * A. FOR ENABLING THE REMOTE STATION, SET UP THE VM LOGO 00345000
- * FOR THE DISPLAY STATION, FORMAT THE REMOTE STATION 00346000
- * DISPLAY SCREEN, SET THE RETURN INDEX (X'30') AFTER 00347000
- * FORMATTING THE SCREEN TO BUILD A VMBLOK FOR THE VIRTUAL 00348000
- * MACHINE USER AND GO TO STEP 4. 00349000
- * IF THE STATION IS CONNECTED TO A SWITCHED LINE, ALONG 00349100
- * WITH THE ABOVE FUNCTIONS, SET THE INITIAL BIDDING 00349200
- * SEQUENCE FLAG. 00349300
- * 00350000
- * B. FOR DISABLING THE REMOTE STATION, SET UP CCWS TO 00351000
- * CLEAR THE REMOTE DISPLAY SCREEN, SET RETURN INDEX 00352000
- * (X'1C') AFTER CLEARING THE SCREEN, LOGOFF USER AND 00353000
- * GO TO STEP 4. 00354000
- * IF THE STATION IS CONNECTED TO A SWITCHED LINE, SET 00354100
- * THE RETURN CODE TO ZERO, HALT THE SWITCHED LINE 00354200
- * (IF NECESSARY), AND RETURN TO CALLER. 00354300
- * 00355000
- * 4. IF THE BISYNC LINE IS ALREADY ACTIVE, THEN RETURN 00356000
- * TO CALLER. IF THE BISYNC LINE IS NOT ACTIVE, 00357000
- * BUILD AND STACK A CPEXBLOK TO RETURN TO CALLER AS SOON 00358000
- * AS POSSIBLE, AND THEN GOTO DMKRGBIC TO START UP THE 00359000
- * BISYNC LINE. 00360000
- * 00361000
- ************************************************************** 00362000
- EJECT 00363000
- USING SAVEAREA,R13 @V305731 00364000
- USING DMKRGBEN,R12 @V305731 00365000
- DMKRGBEN DS 0D SCHEDULE ENABLE-DISABLE TASK @V305731 00366000
- ENTER , @V305731 00367000
- L R12,RGBBASE GET THE BASE ADDRESS @V305731 00368000
- USING DMKRGB,R12 @V305731 00369000
- USING RDEVBLOK,R8 @V305731 00370000
- SWITCH ENSURE WE ARE ON THE MAIN PROC @VA07391 00370100
- LA R2,12(0) SET THE INVALID RETURN CODE @V305731 00371000
- TM RDEVSTAT,RDEVDISA+RDEVDED+RDEVNRDY IS LINE AVAIL@V305731 00372000
- BNZ RGFEXIT NO, GO SET CC= 2 @V305731 00373000
- OI RDEVSTAT,RDEVRSVD LINE IN USE BY THE SYSTEM @V305731 00374000
- L R5,RDEVBSC GET PTR TO BSCBLOK (IF POSSIBLE) @V305731 00375000
- SLR R10,R10 CLEAR IOBLOK POINTER @V305731 00376000
- LTR R0,R0 IS THIS A LINE REQUEST @V305731 00377000
- BNZ LINESUP YES, GO TO LINE SECTION @V305731 00378000
- TM NICFLAG,NICDISB DID OPERATOR 'DISABLE' RESOURCE @V305731 00379000
- BZ ENTFMT NO, TEST FOR SCREEN FORMATTED @V305731 00380000
- BAL R3,GRFCLRT CLEAR SCREEN FOR DISABLE @V305731 00381000
- MVI CONLABEL,RTNLOGOF INDICATOR FOR LOGOFF @V305731 00382000
- BAL R7,RGFTASK GO SETUP FOR START I/O TO LINE @V305731 00383000
- SPACE 00384000
- ENTFMT EQU * @V305731 00385000
- TM NICFLAG,NICFMT IS SCREEN FORMATTED ? @V305731 00386000
- BZ FMTENA NO, GO FORMAT SCREEN @V305731 00387000
- BAL R3,GRFCLRT CLEAR VM LOGO FROM SCREEN @V305731 00388000
- MVI CONLABEL,RTNBLDVM INDICATOR FOR VMBLOK BUILD @V305731 00389000
- BAL R7,RGFTASK GO SETUP FOR START I/O TO LINE @V305731 00390000
- FMTENA EQU * @V305731 00391000
- BAL R3,INITIAL INITIALIZE THE VM LOGO @V305731 00392000
- BAL R3,RGFFMT FORMAT THE DISPLAY SCREEN @V305731 00393000
- TM RDEVFTR,FTRDIAL DIAL-UP FEATURE INDICATED? @V346931 00394100
- BNO RGFTASK NO, START I/O OPERATION @V346931 00394200
- OI BSCFLAG1,BSCINBID INITIAL BID NEEDED @V346931 00394300
- XC BSCRESP(RESPLEN),BSCRESP CLEAR RESPONSE BUFFER @V346931 00394400
- BAL R7,RGFTASK GO START I/O ON LINE @V346931 00394500
- SPACE 1 @V346931 00394600
- SPACE 1 00395000
- LINESUP EQU * @V305731 00396000
- L R9,RDEVNICL GET THE FIRST NICBLOK POINTER @V305731 00397000
- BAL R7,CTLTASKB GET A CONTROL CONTASK @V305731 00398000
- TM RDEVFLAG,RDEVDISB DID OPERATOR 'DISABLE' LINE @V305731 00399000
- BO LINEDIS YES, GO ATTEMPT TO DISABLE LINE @V305731 00400000
- BAL R3,BULDBSC GET STORAGE FOR THE BSCBLOK @V305731 00401000
- MVC CONCCW1(3*8),DISABLE GET CCWS TO ENABLE LINE @V305731 00402000
- MVI CONCCW1+4,SILI+CC INDICATE COMMAND CHAINING @V305731 00403000
- BAL R7,RGFTASK GO START I/O OPERATION TO LINE @V305731 00404000
- SPACE 00405000
- LINEDIS EQU * @V305731 00406000
- OI BSCFLAG1,BSCSHUT SYNCRONIZE SHUTDOWN @VA11623 00406050
- TM RDEVSTAT,RDEVWAII IS DEVICE BUSY? @V346931 00406100
- BZ LINEDIS2 NO, DON'T DO HALT DEVICE @V346931 00406200
- ICM R10,B'1111',RDEVAIOB GET ACTIVE IOB IF ANY @V346931 00406300
- BZ LINEDIS2 NO ACTIVE IOB, DON'T HALT LINE @V346931 00406400
- OI BSCFLAG1,BSCHALT INDICATE HALT I/O DONE @V346931 00406500
- CALL DMKIOSHA GO DO HALT DEVICE OPERATION @V346931 00406600
- SR R2,R2 SET CC = 0 @V346931 00406700
- BAL R7,RGFEXIT GO SET CC = 0 AND EXIT @V346931 00406800
- LINEDIS2 EQU * BYPASS HALT I/O @V346931 00406900
- MVC CONCCW1(8),DISABLE SETUP CCW TO DISABLE LINE @V305731 00407000
- MVI CONPARM,RDEVDISB INDICATE DISABLE FOR HANDLER @V305731 00408000
- RGFTASK EQU * @V305731 00409000
- SR R2,R2 SET RETURN CODE TO ZERO @V305731 00410000
- OI NICFLAG,NICPROCN PROCESS THIS NICBLOK NOW @V305731 00411000
- TM RDEVSTAT,RDEVWAII IS THE LINE BUSY @V305731 00412000
- BNZ RGFEXIT YES, EXIT @V305731 00413000
- LA R4,RGFEXIT1 GET THE EXECUTION ADDRESS @VA11623 00414100
- BAL R7,STKCPEX STACK A CPEXBLOK TO DO THE EXIT @V305731 00415000
- GOTO DMKRGBIC GO START I/O OPERATION TO LINE @V305731 00416000
- SPACE 1 00417000
- RGFEXIT1 DS 0H @VA11623 00418100
- TM BSCFLAG1,BSCSHUT SHUTDOWN FINISHED? @VA11623 00418200
- BNO RGFEXIT YES, TELL DMKNES @VA11623 00418300
- LA R4,RGFEXIT1 GET RETURN ADDRESS @VA11623 00418400
- BAL R7,STKCPEX WAIT FOR SHUTDOWN TO FINISH @VA11623 00418500
- B GODSPCH ... @VA11623 00418600
- RGFEXIT DS 0H @VA11623 00418700
- ST R2,SAVER2 SAVE RETURN CODE @V305731 00419000
- LTR R2,R2 SET CONDITION CODE 2 @V305731 00420000
- EXIT , @V305731 00421000
- DROP R13 DROP R13 AS SAVEAREA BASE @V305731 00422000
- EJECT 00423000
- ****************************************************************** 00424000
- * THE FOLLOWING SUBROUTINES MUST NOT ADDRESS ANY FIELDS IN 00425000
- * THE SECOND 4096 BYTES OF DMKRGB. THESE ARE USED BY 'DMKRGBEN' 00426000
- * WHICH HAS LIMITED ADDRESSABILITY RANGE DUE TO THE SAVEAREA 00427000
- * REGISTER (GR13). 00428000
- * SUBROUTINES 00429000
- * CTLTASKB : INITIAL 00430000
- * STKCPEX : GRFCLRT 00431000
- * DATAMOVE : BULDBSC 00432000
- * SETUPCCW : RGFFMT 00433000
- * 00434000
- * THE SUBROUTINES ABOVE ARE IN BOTH DMKRGB AND DMKRGA. 00435000
- * ANY CHANGES MADE TO THESE SUBROUTINES SHOULD ALSO BE MADE 00436000
- * TO THE DUPLICATE IN DMKRGA. 00437000
- **************************************************************** 00438000
- SPACE 2 00439000
- CTLTASKB EQU * SET UP BASIC SIZE FOR CONTASK @V305731 00440000
- LA R0,CONTSIZE SIZE OF BASIC CONTASK @V305731 00441000
- B CTLTASK1 GET STORAGE FOR CONTASK @V305731 00442000
- CTLTASK EQU * ALLOCATE AND QUEUE CONTROL TASK @V305731 00443000
- LA R0,CONTSIZE+6 ...SIZE OF CONTASK @VA08129 00444100
- CTLTASK1 EQU * @V305731 00445000
- CALL DMKFREE GET STORAGE FOR CONTASK @V305731 00446000
- XC 0(CONTSIZE*8,R1),0(R1) CLEAR THE HEADER @V305731 00447000
- LR R6,R1 PUT CONTASK ADDRESS IN REGISTER 6@V305731 00448000
- STH R0,CONTSKSZ SAVE THE CONTASK SIZE @V305731 00449000
- L R1,NICUSER VMBLOK OF RESOURCE OWNER @V305731 00450000
- ST R1,CONUSER SAVE VMBLOK PTR IN CONTASK @V305731 00451000
- MVI CONSTAT,CONCNTL INDICATE CONTROL TASK @V305731 00452000
- L R1,NICQPNT GET CURRENT CONTASK FROM CHAIN @V305731 00453000
- ST R6,NICQPNT PUT THIS TASK FIRST ON CHAIN @V305731 00454000
- ST R1,CONPNT PUT CURRENT TASK ON CHAIN @V305731 00455000
- BR R7 RETURN @V305731 00456000
- SPACE 2 00457000
- STKCPEX EQU * @V305731 00458000
- LA R0,CPEXSIZE GET SIZE OF CPEXBLOK @V305731 00459000
- CALL DMKFREE GET STORAGE FOR CPEXBLOK @V305731 00460000
- USING CPEXBLOK,R1 ADDRESSABILITY FOR CPEXBLOK @V305731 00461000
- XC CPEXBLOK(16),CPEXBLOK CLEAR THE HEADER @V305731 00462000
- LR R15,R4 GET THE EXECUTION ADDRESS @V305731 00463000
- STM R15,R14,CPEXADD SAVE ALL REGISTERS @V305731 00464000
- CALL DMKSTKCP STACK BLOCK FOR LATER PROCESSING @V305731 00465000
- DROP R1 DROP BASE REGISTER FOR CPEXBLOK @V305731 00466000
- BR R7 RETURN @V305731 00467000
- SPACE 2 00468000
- DATAMOVE EQU * MOVE DATA INTO CONTASK @V305731 00469000
- LA R14,CONCCW4+4 GET BEGINNING ADDRESS @V305731 00470000
- AR R14,R1 UPDATE TO END OF DATA @V305731 00471000
- MVI 0(R14),ETX PUT ENDING BISYNC CHAR IN BUFFER @V305731 00472000
- DATMOVE EQU * MOVE DATA INTO CONTASK @V305731 00473000
- MVC CONCCW4+1(3),SYNCP MOVE BISYNC HEADER INTO DATA @V305731 00474000
- BCTR R1,R0 SUBTRACT - EX INSTRUCTION @V305731 00475000
- EX R1,DATA MOVE DATA INTO BUFFER AREA @V305731 00476000
- BR R7 RETURN @V305731 00477000
- SPACE 2 00478000
- BULDBSC EQU * @V305731 00479000
- L R5,RDEVBSC GET POINTER TO BSCBLOK @V305731 00480000
- LTR R5,R5 IS BSCBLOK POINTER ZERO ? @V305731 00481000
- BNZR R3 NO, RETURN @V305731 00482000
- LA R0,BSCSIZE GET THE SIZE OF THE BSCBLOK @V305731 00483000
- CALL DMKFREE GET STORAGE FOR BSCBLOK @V305731 00484000
- ST R1,RDEVBSC SAVE BSCBLOK PTR IN RDEVBLOK @V305731 00485000
- LR R5,R1 GET BSCBLOK POINTER @V305731 00486000
- XC BSCBLOK(BSCSIZE2),BSCBLOK CLEAR HEADER FIELD @V305731 00487000
- BR R3 RETURN @V305731 00488000
- SPACE 2 00489000
- INITIAL EQU * @V305731 00490000
- MVI NICCORD,X'01' SET THE Y COORDINATE TO LINE 1 @V305731 00491000
- L R1,LOGO GET VM LOGO POINTER @V305731 00492000
- LTR R1,R1 IS THERE A POINTER FOR VM LOGO @V305731 00493000
- BNZR R3 YES, GO SET UP CCW FOR FORMAT @V305731 00494000
- LA R0,99 GET THE SIZE OF THE LOGO @V305731 00495000
- CALL DMKFREE GET STORAGE FOR THE LOGO @V305731 00496000
- ST R1,LOGO SAVE VM LOGO POINTER @V305731 00497000
- STCM R1,7,FMTLOGO+1 SET UP CCW WITH LOGO ADDRESS @V305731 00498000
- LR R7,R1 GET VM LOGO POINTER @V305731 00499000
- L R1,=A(DMKBOXBX) GET VM LOGO ADDRESS @V305731 00500000
- TRANS 2,1,OPT=(BRING,DEFER,SYSTEM),AFFINITY @VA07391 00501100
- LA R1,FMTBUF BUFFER ADDRESS TABLE @V305731 00502000
- LA R0,16 LOOP COUNT @V305731 00503000
- NXTFMT EQU * @V305731 00504000
- MVI 0(R7),SBA SET SBA ORDER @V305731 00505000
- MVC 1(2,R7),0(R1) MOVE BUFFER ADDRESS @V305731 00506000
- MVC 3(46,R7),0(R2) MOVE LOGO LINE TO BUFFER @V305731 00507000
- LA R1,2(R1) NEXT BUFFER ADDRESS @V305731 00508000
- LA R2,46(R2) NEXT LOGO LINE ADDRESS @V305731 00509000
- LA R7,49(R7) NEXT DATA ADDRESS @V305731 00510000
- BCT R0,NXTFMT LOOP FOR 16 LINES @V305731 00511000
- MVI 0(R7),ETX PUT BSC ENDING CHAR IN BUFFER @V305731 00512000
- BR R3 RETURN @V305731 00513000
- SPACE 2 00514000
- RGFFMT EQU * @V305731 00515000
- LA R0,CONTSIZE+7 GET SIZE OF CONTASK @V305731 00516000
- BAL R7,CTLTASK1 GET STORAGE FOR CONTROL CONTASK @V305731 00517000
- MVI NICSTAT,NICRUNN+NICNTRL SET STATUS IN NICBLOK @V305731 00518000
- MVI CONLABEL,RTNFMTDN INDICATOR FOR FORMAT DONE @V305731 00519000
- MVC CONCCW1(8*2),FMT77CCW MOVE FORMAT CCWS @V305731 00520000
- LA R1,CONCCW4+1 GET BEGINNING ADDRESS OF DATA @V305731 00521000
- STCM R1,7,CONCCW1+1 SAVE BEGINNING ADDRESS @V305731 00522000
- MVC CONCCW3(8),READCCW1 MOVE IN READ RESPONSE CCW @V305731 00523000
- LA R1,BSCRESP GET THE RESPONSE BUFFER ADDRESS @V305731 00524000
- STCM R1,7,CONCCW3+1 SAVE ADDRESS OF RESPONSE BUFFER @V305731 00525000
- LA R1,FMT77L GET THE LENGTH OF FORMAT DATA @V305731 00526000
- LA R2,FMT3277 GET ADDRESS OF FORMAT DATA @V305731 00527000
- BAL R7,DATMOVE MOVE DATA INTO BUFFER AREA @V305731 00528000
- MVI CONCCW4+3,EWRTCMD SET ERASE/WRITE GRAPHIC CMD @V305731 00529000
- BR R3 RETURN @V305731 00530000
- SPACE 2 00531000
- GRFCLRT EQU * @V305731 00532000
- BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 00533000
- NI NICFLAG,X'FF'-(NICDIAG+NICALRM) CLEAR FLAGS @V305731 00534000
- MVI NICCORD,X'00' SET COORDINATE Y TO ZERO @V305731 00535000
- MVI NICSTAT,NICRUNN+NICNTRL SET STATUS IN NICBLOK @V305731 00536000
- LA R1,WRT77CCW SET UP CCWS FOR CLEAR FUNCTION @V305731 00537000
- BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 00538000
- MVI CONCCW1+7,CLR77L+4 SET CCW COUNT FOR CLEAR FUNC.@V305731 00539000
- LA R1,CLR77L GET THE LENGTH OF CLEAR DATA @V305731 00540000
- LA R2,CLR3277 GET ADDRESS OF CLEAR DATA @V305731 00541000
- BAL R7,DATAMOVE MOVE DATA INTO BUFFER AREA @V305731 00542000
- BR R3 RETURN @V305731 00543000
- SPACE 2 00544000
- SETUPCCW EQU * SET UP CCWS FOR BISYNC RESPONSE @V305731 00545000
- MVC CONCCW1(8),0(R1) MOVE CCW INTO CONTASK @V305731 00546000
- MVI CONCCW1+4,SILI+CC MAKE SURE CMD CHAIN FLAG IS ON@V305731 00547000
- LA R1,CONCCW4+1 GET BEGINNING ADDRESS OF DATA @V305731 00548000
- STCM R1,7,CONCCW1+1 SAVE BEGINNING ADDRESS @V305731 00549000
- MVC CONCCW2(8),READCCW1 GET READ RESPONSE CCW @V305731 00550000
- LA R1,BSCRESP GET RESPONSE BUFFER @V305731 00551000
- STCM R1,7,CONCCW2+1 SAVE RESPONSE BUFFER ADDRESS @V305731 00552000
- BR R7 RETURN @V305731 00553000
- SPACE 2 00554000
- DS 0D @V305731 00555000
- DISABLE DC X'2F',AL3(0),AL1(SILI,X'01'),AL2(1) DISABLE CCW @V305731 00556000
- ENABLE1 DC X'23',AL3(SETMODE),AL1(SILI+CC,X'01'),AL2(1) @V305731 00557000
- DC X'27',AL3(0),AL1(SILI,X'01'),AL2(1) @V305731 00558000
- SPACE 2 00558100
- * THESE CCWS ARE USER FOR INITIAL DIAL CONNECTION OPERATION @V346931 00558200
- INITBID DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V346931 00558300
- DC X'01',AL3(RGFENQ),AL1(SILI+CC,X'03'),AL2(1) @V346931 00558400
- DC X'02',AL3(0),AL1(SILI,X'05'),AL2(RESPLEN) @V346931 00558500
- RESPLEN EQU 6 LENGTH OF READ FOR SELECTION @V346931 00558600
- THREECCW EQU (8*3) LENGTH OF THREE CHAINED CCWS @V346931 00558700
- SPACE 1 00558800
- READCCW1 DC X'02',AL3(0),AL1(SILI,X'0B'),AL2(2) @V305731 00559000
- WRT77CCW DC X'01',AL3(0),AL1(SILI+CC,X'10'),AL2(0) @VA13944 00560000
- FMT77CCW DC X'01',AL3(0),AL1(SILI+CD,X'10'),AL2(FMT77L+3) @VA13944 00560500
- FMTLOGO DC X'01',AL3(0),AL1(SILI+CC,X'10'),AL2(785) @VA13944 00561000
- FMT3277 DC AL1(WCC56,SBA,X'40',X'40') @V305731 00564000
- FMTON DC CL20'VM/370 ONLINE' @V305731 00565000
- DC AL1(SBA,X'5B',X'5F',SF,ATTR7,IC) @V305731 00566000
- DC AL1(SBA,X'5D',X'6B',SF,ATTR2) @V305731 00567000
- DC CL20'RUNNING' @V305731 00568000
- FMT77L EQU *-FMT3277 @V305731 00569000
- SPACE 00570000
- FMTBUF DC X'C5D1C661C7F1C9C1' @V305731 00571000
- DC X'4AD14B614CF14EC1' @V305731 00572000
- DC X'4FD15061D1F1D3C1' @V305731 00573000
- DC X'D4D1D561D6F1D8C1' @V305731 00574000
- SPACE 00575000
- CLR3277 DC AL1(WCC6,SBA,X'40',X'40') @V305731 00576000
- DC AL1(RA,X'C7',X'5F',X'00') @VA08129 00577100
- DC AL1(RA,X'4E',X'7F',X'00') @VA08129 00577200
- DC AL1(RA,X'D6',X'5F',X'00') @VA08129 00577300
- DC AL1(RA,X'5B',X'5F',X'00') @VA08129 00577400
- DC AL1(SF,ATTR7,IC) @V305731 00578000
- DC AL1(SBA,X'5D',X'6B',SF,ATTR2) @V305731 00579000
- DC CL20'RUNNING' @V305731 00580000
- CLR77L EQU *-CLR3277 @V305731 00581000
- SPACE 00582000
- LOGO DC A(0) ADDRESS OF VM LOGO @V305731 00583000
- SETMODE DC X'00' MODE SET FOR 270X TCU @V346931 00584100
- RGFINDEQ DC AL1(ENQ,X'05',EOT) ENQ, INDEX & EOT - POLL ENTRY@VA03474 00585100
- SYNCP DC AL1(STX,ESC,WRTCMD) BISYNC HEADER @V305731 00586000
- DATA MVC CONCCW4+4(*-*),0(R2) MOVE DATA INTO CONTASK @V305731 00587000
- EJECT 00588000
- LTORG @V305731 00589000
- EJECT 00590000
- ***************************************************************** 00591000
- * NEW ENTRY LABEL USE BY DMKRGA TO RESTART THE I/O 00592000
- * OPERATION TO A BISYNC LINE. THIS ENTRY POINT WAS CREATED 00593000
- * WHEN DMKRGB WAS SPLIT INTO TWO MODULES. 00594000
- ****************************************************************** 00595000
- SPACE 2 00596000
- USING DMKRGB,R12 ADDRESSABILITY FOR SCAN SECTION @V305731 00597000
- DMKRGBSN DS 0D @V305731 00598000
- LR R12,R7 GET BASE ADDRESS FOR DMKRGB @V305731 00599000
- LM R12,R13,RGBBASE GET BASE ADDRESSES @V305731 00600000
- USING DMKRGB,R12,R13 SET UP ADDRESSABILITY @V305731 00601000
- SPACE 1 00602000
- SWITCH ENSURE WE ARE ON THE MAIN PROC @VA07391 00602100
- RGSTART EQU * @V305731 00603000
- TM RDEVSTAT,RDEVNRDY+RDEVWAII IS BISYNC LINE AVAIL @V305731 00604000
- BNZ GODSPCH NO, GO TO DISPATCHER @V305731 00605000
- BAL R7,FRETIOB RELEASE THE IOBLOK & IOERBLOK @V305731 00606000
- BAL R3,BULDBSC GET POINTER TO BSCBLOK @VA07175 00607500
- L R9,RDEVNICL GET BEGINNING OF NICBLOK LIST @V305731 00608000
- LA R2,NICSIZE*8 GET SIZE OF NICBLOK @V305731 00609000
- LH R3,RDEVMAX GET HIGHEST RESOURCE ID. @V305731 00610000
- MH R3,=AL2(NICSIZE*8) GET THE HIGHEST INDEX VALUE @V305731 00611000
- ALR R3,R9 GET THE ENDING ADDRESS @V305731 00612000
- TM NICFLAG,NICPROCN IS PROCESS NOW ACTIVE @V305731 00613000
- BNZ RNICLST YES, SCAN FOR ACTIVE TASK @V305731 00614000
- CL R3,BSCRROBN LAST = CURRENT ? @V305731 00615000
- BE RNICLST YES....START WITH FIRST... @V305731 00616000
- ICM R9,15,BSCRROBN GET LAST ACTIVE USER @V305731 00617000
- BNZ RNEXLST AND SKIP OVER... @V305731 00618000
- L R9,RDEVNICL RESTORE NICBLOK START @V305731 00619000
- RNICLST EQU * GET ACTIVE CONTASK @V305731 00620000
- L R6,NICQPNT POINTER TO CONTASK @V305731 00621000
- LTR R6,R6 IS THE POINTER ZERO @V305731 00622000
- BNP RNEXLST YES, GET NEXT RESOURCE @V305731 00623000
- TM NICFLAG,NICPROCN IS PROCESS FLAG ON ? @V305731 00624000
- BO RGFCHAN YES, GO PROCESS CONTASK @V305731 00625000
- TM NICSTAT,NICNTRL IS THE RESOURCE IN CONTROL MODE @V305731 00626000
- BZ RNCHAIN NO, GO CHECK SCREEN STATUS @V305731 00627000
- RNEXLST EQU * @V305731 00628000
- BXLE R9,R2,RNICLST GET NEXT NICBLOK @V305731 00629000
- SR R9,R9 CLEAR NICBLOK POINTER REGISTER @V305731 00630000
- CL R3,BSCRROBN END OF NICBLOK SCAN @V305731 00631000
- BE POLLSECT YES, CHECK FOR READS @V305731 00632000
- ICM R3,15,BSCRROBN END OF SCAN @V305731 00633000
- BZ POLLSECT YES, ALREADY THERE @V305731 00634000
- L R9,RDEVNICL GET FIRST NICBLOK POINTER @V305731 00635000
- BAL R7,RNICLST SCAN NICBLOKS FOR ACTIVE TASK @V305731 00636000
- RGFIOS EQU * @V305731 00637000
- LTR R10,R10 IS THERE AN IOBLOK POINTER @V305731 00638000
- BZ POLLSECT NO, GO POLL THE LINE @V305731 00639000
- BAL R3,SELECTCW GET SELECTION CCWS @V305731 00640000
- RESTART EQU * @V305731 00641000
- NI BSCFLAG,X'FF'-BSCSCAN CLEAR SECOND SCAN FLAG @V305731 00642000
- XC IOBRCNT(2),IOBRCNT CLEAR RETRY COUNT FOR I/O @V305731 00643000
- BAL R3,FRETIOER RELEASE THE IOERBLOK @V305731 00644000
- L R2,=A(DMKRGAIN) INTERRUPT RETURN ADDRESS @V305731 00645000
- ST R2,IOBIRA SAVE INTERRUPT RETURN ADDRESS @V305731 00646000
- MVC IOBUSER,NICUSER ASSIGN VMBLOK FOR I/O @VA07391 00647200
- ST R9,BSCAUSER SAVE ADDR OF ACTIVE RESOURCE @V305731 00651000
- CL R9,RDEVNICL IS THIS THE FIRST NICBLOK @V305731 00652000
- BE BYPNICB YES, SKIP SAVING NICBLOK @VM03134 00653000
- ST R9,BSCRROBN SAVE ACTIVE NICBLOK @V305731 00654000
- BYPNICB EQU * SETUP TO DO START I/O @VM03134 00655000
- MVI IOBSTAT,X'00' CLEAR THE STATUS BYTE @V305731 00656000
- MVI IOBSPEC,X'00' CLEAR SPECIAL REQUEST @V305731 00657000
- NI IOBFLAG,IOBCP+IOBRSTRT LEAVE ON THESE FLAGS @V305731 00658000
- OI RDEVSTAT,RDEVWAII LINE IS NOW ACTIVE @V305731 00659000
- L R1,NICUSER LOAD ADDR OF NEW VMBLOK @VA07391 00659100
- SWTCHVM OPT=STAY SWITCH VMBLOK LOCKING & CHARGINE @VA07391 00659200
- CALL DMKIOSQR QUEUE REAL I/O FOR SYSTEM @V305731 00660000
- BAL R7,GODSPCH GO TO DISPATCHER @V305731 00661000
- SPACE 1 00662000
- POLLSECT EQU * @V305731 00663000
- TM BSCFLAG,BSCSCAN IS THIS SECOND SCAN OF NICBLOK @V305731 00664000
- BZ POLLIOB NO, GO DO POLL OPERATION @V305731 00665000
- NI BSCFLAG,X'FF'-BSCSCAN CLEAR SECOND SCAN FLAG @V305731 00666000
- BAL R7,GODSPCH GO TO DISPATCHER @V305731 00667000
- POLLIOB EQU * @V305731 00668000
- BAL R3,BLDIOB GO GET STORAGE FOR IOBLOK @V305731 00669000
- BAL R3,GPOLLCW SET UP GENERAL POLLING CCWS @V305731 00670000
- BAL R7,SETCAW GO RESTART I/O OPERATION TO LINE @V305731 00671000
- SPACE 2 00672000
- RNCHAIN EQU * GET THE ACTIVE CONTASK @V305731 00673000
- TM NICFLAG,NICFMT IS THE SCREEN FORMATTED @V305731 00674000
- BZ RGFMT NO, GO FORMAT SCREEN @V305731 00675000
- CLI NICSTAT,NICRUNN IS RUNNING STATE INDICATED ? @V305731 00676000
- BE BLDCONT YES, START UP THIS TASK @V305731 00677000
- TM NICSTAT,NICREAD IS THERE A READ ACTIVE ? @V305731 00678000
- BO READPRI YES, CHECK FOR PRIORITY WRITE @V305731 00679000
- TM NICSTAT,NICHOLD IS HOLD ACTIVE ? @V305731 00680000
- BZ RNEXLST NO, GO GET NEXT NICBLOK @V305731 00681000
- L R1,NICUSER GET USER VMBLOK POINTER @V305731 00682000
- TM VMRSTAT-VMBLOK(R1),VMLOGOFF IS LOGOFF ACTIVE @V305731 00683000
- BZ RNEXLST NO, GET NEXT NICBLOK @V305731 00684000
- BAL R7,PRIOWRIT GO CLEAR DISPLAY SCREEN @V305731 00685000
- SPACE 2 00686000
- READPRI EQU * HANDLE PRIORITY WRITE REQUEST @V305731 00687000
- L R1,CONPNT GET NEXT CONTASK POINTER @V305731 00688000
- LTR R1,R1 IS THE POINTER ZERO ? @V305731 00689000
- BNP RNEXLST YES, GET NEXT NICBLOK @V305731 00690000
- TM CONPARM-CONTASK(R1),PRIORITY BREAK-IN SITUATION @V305731 00691000
- BZ RNEXLST NO, GO GET NEXT NICBLOK @V305731 00692000
- ST R1,NICQPNT REMOVE THE READ TASK FROM CHAIN @V305731 00693000
- NI CONSTAT,X'FF'-CONESCP CONTASK IS NOT ACTIVE @V305731 00694000
- READBK EQU * RE-INSERT THE READ CONTASK @V305731 00695000
- L R2,CONPNT-CONTASK(,R1) ADDRESS OF NEXT TASK @V305731 00696000
- LTR R2,R2 IS THE POINTER ZERO ? @V305731 00697000
- BNP READINS YES, INSERT THE READ HERE @V305731 00698000
- TM CONPARM-CONTASK(R2),PRIORITY BREAK-IN SITUATION @V305731 00699000
- BZ READINS NO, INSERT THE READ HERE @V305731 00700000
- LR R1,R2 SAVE THE BACK POINTER @V305731 00701000
- BAL R7,READBK TRY AGAIN @V305731 00702000
- SPACE 00703000
- READINS EQU * RE-CHAIN THE READ CONTASK @V305731 00704000
- ST R2,CONPNT POINTER TO NEXT CONTASK @V305731 00705000
- ST R6,CONPNT-CONTASK(,R1) PATCH THE FORWARD CHAIN @V305731 00706000
- L R6,NICQPNT GET ADDRESS OF FIRST CONTASK @V305731 00707000
- SPACE 1 00708000
- BLDCONT EQU * START UP CONSOLE REQUEST @V305731 00709000
- TM CONSTAT,CONSYNC SYNCHRONIZATION CONTASK @V305731 00710000
- BZ OUTCONT NO, GO CHECK OUTPUT CONTASK @V305731 00711000
- L R0,CONPNT GET NEXT CONTASK POINTER @V305731 00712000
- ST R0,NICQPNT PUT NEXT TASK FIRST @V305731 00713000
- SR R0,R0 CLEAR REGISTER 0 @V305731 00714000
- ST R0,CONPNT ZERO OUT NEXT POINTER FIELD @V305731 00715000
- CALL DMKQCNET RETURN CONTASK @V305731 00716000
- LA R2,NICSIZE*8 GET THE SIZE OF THE NICBLOK @V305731 00717000
- BAL R7,RNICLST GET NEXT CONTASK FROM RESOURCE @V305731 00718000
- SPACE 1 00719000
- OUTCONT EQU * @V305731 00720000
- TM CONSTAT,CONOUTPT IS THIS AN OUTPUT CONTASK @V305731 00721000
- BZ STRTREAD NO, GO CHECK FOR READ CONTASK @V305731 00722000
- TM CONDWC,X'40' DIAGNOSE CONSOLE WRITE ?? @VA07542 00723100
- BZ CORD NO, CONTINUE NORMALLY @V305731 00724000
- TM NICFLAG,NICALRM SCREEN HAVE ALARM MESSAGE ? @V305731 00725000
- BO CRTHOLD1 YES, FORCE SCREEN TO HOLD STATUS @V305731 00726000
- TM CONDWC,X'80' ERASE BEFORE WRITE ?? @VA07542 00727100
- BZ DIAGRUN NO, CLEAR THE INDICATORS @V305731 00728000
- DIAGCLR EQU * DIAGNOSE CLEAR SECTION @V305731 00729000
- CLI CONDWC,X'FF' ERASE CLEAR DIAGNOSE REQUEST ? @VA07542 00730100
- BE CNCLDIAG YES, NO OUTPUT TO DO @V305731 00731000
- NI CONDWC,X'7F' TURN OFF ERASE INDICATOR @VA07542 00732100
- BAL R7,CRTMORE1 WRITE MORE STATUS BEFORE WRITE @V305731 00733000
- SPACE 1 00734000
- DIAGRUN EQU * DIAGNOSE RUNNING SECTION @V305731 00735000
- NI CONDWC,X'3F' CLEAR DIAGNOSE FLAGS @VA07542 00736100
- IC R0,CONDWC GET LINE COORDINATOR @VA07542 00737100
- CLI CONDWC,22 DIAGNOSE ISSUED TO THE @VA07542 00738100
- BE DIAGSIO INPUT AREA? @VM03094 00739000
- CLI CONDWC,23 ...... @VA07542 00740100
- BE DIAGSIO IF YES, TAKE SPECIAL PATH @VM03094 00741000
- STC R0,NICCORD SET LINE COORDINATE @V305731 00742000
- OI NICFLAG,NICDIAG SET DIAGNOSE WRITE FLAG @V305731 00743000
- B SETCORD GO GET THE NEXT LINE @V305731 00744000
- DIAGSIO EQU * HANDLE WRITING TO INPUT AREA @VM03094 00745000
- STC R0,BSCLINE SET LINE COORDINATE @VM03094 00746000
- OI NICTMCD,NICSIO SET WRITING TO INPUT FLAG @VM03094 00747000
- LA R0,BUFINLTH GET BUFFER SIZE @VM03116 00748000
- CH R0,CONCNT IS THIS GREATER THAN COUNT @VM03116 00749000
- BNL SETCORD YES, GET NEXT LINE @VM03134 00750000
- STH R0,CONCNT SAVE MAX. SIZE OF BUFFER @VM03116 00751000
- B SETCORD GO GET THE NEXT LINE @VM03094 00752000
- CNCLDIAG EQU * RETURN CONTASK TO SYSTEM @V305731 00753000
- SR R2,R2 SET RETURN CODE TO ZERO @V305731 00754000
- BAL R3,SETRETN GO SET RETURN CODE (IF POSSIBLE) @V305731 00755000
- BAL R3,CONRET RETURN CONTASK @V305731 00756000
- PRIOWRIT EQU * CLEAR DISPLAY SCREEN @V305731 00757000
- BAL R3,GRFCLRT SET UP THE CLEAR SCREEN CCWS @V305731 00758000
- MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 00759000
- BAL R7,RGFCHAN GO GET IOBLOK POINTER @V305731 00760000
- SPACE 1 00761000
- CORD EQU * DETERMINE STATUS OF THE SCREEN @V305731 00762000
- TM NICFLAG,NICDIAG WAS DIAGNOSE USED BEFORE ? @V305731 00763000
- BO CRTFULL YES, FORCE TO MORE STATUS @V305731 00764000
- LH R1,CONCNT GET BYTE COUNT @V305731 00765000
- SR R4,R4 CLEAR REGISTER @V305731 00766000
- IC R4,NICCORD GET CURRENT OUTPUT LINE @V305731 00767000
- MH R4,=H'80' CONVERT TO BYTE COORDINATES @V305731 00768000
- ALR R4,R1 TOTAL BYTES ON SCREEN @V305731 00769000
- LA R2,1760 SIZE OF 3270 SCREEN @V305731 00770000
- CLR R4,R2 WILL THIS LINE FIT ON SCREEN @V305731 00771000
- BH CRTFULL NO, SCREEN FULL @V305731 00772000
- SETCORD EQU * SET UP NEXT LINE VALUE @V305731 00773000
- SR R0,R0 CLEAR REGISTER FOR DIVIDE @V305731 00774000
- AL R1,=F'79' ROUND UP TO NEXT LINE @V305731 00775000
- D R0,=F'80' DIVIDE TO GET NUMBER OF LINES @V305731 00776000
- LR R4,R1 SAVE NUMBER OF LINES @V305731 00777000
- RUNCTL EQU * SET UP CCWS FOR WRITE @V305731 00778000
- MVI NICSTAT,NICRUNN+NICNTRL SET RUNNING & CONTROL @V305731 00779000
- LH R1,CONCNT LOAD DATA COUNT @VM03040 00780000
- LTR R1,R1 IS COUNT VALUE ZERO @VM03040 00781000
- BZ NOAPLW YES, BYPASS APL TRANSLATION @VM03040 00782000
- L R7,=A(DMKTBLGR) GRAF DEVICE TRANSLATION TABLE @VM03040 00783000
- TM NICTMCD,NICTEXT+NICAPL TEXT OR APL TRANSLATION @VA08981 00783050
- BNZ USEGRTAB YES, USE DMKTBLGR @VA08981 00783150
- L R7,=A(DMKTBLRG) NO - USE TABLE DMKTBLRG @VA06170 00783300
- USEGRTAB DS 0H @VA06170 00783400
- L R2,NICUSER GET USER VMBLOK POINTER @VM03040 00784000
- IC R0,VMTLEND-VMBLOK(R2) GET LOGICAL LINE END @VM03040 00785000
- TM NICTMCD,NICSIO IS WRITING TO INPUT FLAG ON ? @VM03094 00786000
- BZ BYPINSET NO, BYPASS INSERTING CHARACTER @VM03134 00787000
- MVI X'13'(R7),IC INSERT CURSOR CHAR IN TABLE @VM03094 00788000
- BYPINSET EQU * SAVE LOGICAL LINE END CHAR. @VM03134 00789000
- STC R0,21(,R7) SAVE LCR CHAR IN TRANSLATE TABLE @VM03040 00790000
- BCTR R1,R0 SUBSTRACT ONE - EX INSTR. @VM03094 00791000
- L R2,CONADDR GET DATA ADDRESS @VM03040 00792000
- APLTRT EQU * TRANSLATE DATA TO GRAPHIC CHARS. @VM03040 00793000
- CL R1,F256 LESS THAN 256 ? @VM03040 00794000
- BL APLTRAN YES, DO LAST PART @V305798 00795000
- TR 0(256,R2),0(R7) TRANSLATE DATA @V305798 00796000
- LA R2,256(,R2) NEXT DATA POSITION @V305798 00797000
- S R1,F256 DECREMENT COUNT @VM03040 00798000
- B APLTRT TEST FOR MORE TO DO @V305798 00799000
- APLTRAN EQU * TRANSLATE DATA @V305798 00800000
- EX R1,TROPUT TRANSLATE LAST PART OF OUTPUT @VM03040 00801000
- MVI 21(R7),X'15' STORE LCR CHAR IN TRANS TABLE @V305798 00802000
- MVI X'13'(R7),X'40' INSERT BLANK BACK IN TABLE @VM03094 00803000
- TM NICTMCD,NICAPL+NICTEXT TRANS ON? @V387398 00804000
- BZ NOAPLW NO, BYPASS TRANSLATION @V387398 00804100
- L R1,=A(DMKTBMZO) COMPOUND CHARACTERS TABLE @VM03235 00807000
- TM NICTMCD,NICTEXT 3270 TEXT CHARACTER SET? @V387398 00807100
- BZ WRTRANS NO -> TRANSLATE TABLE ALL SET @V387398 00807200
- L R1,=A(DMKTBMTO) TEXT COMPOUND CHARACTER TABLE @V387398 00807300
- WRTRANS EQU * @V387398 00807400
- TRANS 7,1,OPT=(BRING,DEFER,SYSTEM),AFFINITY @VA07391 00808100
- STM R1,R10,BALRSAVE SAVE CURRENT REGISTERS @VA07391 00810100
- LH R0,CONTSKSZ GET SIZE OF CURRENT CONTASK @V305798 00811000
- AR R0,R0 DOUBLE CONTASK SIZE @V305798 00812000
- CALL DMKFREE GET STORAGE FOR NEW CONTASK @V305798 00813000
- MVC 0(CONDATA-CONTASK,R1),0(R6) GET HEADER DATA @V305798 00814000
- LA R5,CONDATA-CONTASK(,R1) GET POINTER TO DATA AREA@VM03040 00815000
- ST R5,CONADDR-CONTASK(,R1) SAVE DATA AREA POINTER @VM03040 00816000
- STH R0,CONTSKSZ-CONTASK(,R1) SAVE SIZE OF CONTASK @VM03040 00817000
- L R4,CONADDR POINTER TO CURRENT DATA AREA @VM03040 00818000
- LA R4,0(,R4) CLEAR HIGH ORDER BYTE @VA08680 00818500
- ST R1,BALRSAVE SAVE NEW CONTASK POINTER @VA07391 00819100
- LH R3,CONCNT LOAD DATA COUNT @VM03040 00820000
- SR R8,R8 CLEAR COUNT REGISTER @V305798 00821000
- BAL R10,TRANSTST TRANSLATE & TEST FOR COMP. CHAR. @V305798 00822000
- B FRETNEW RELEASE NEW CONTASK STORAGE @V305798 00823000
- APLCOMP EQU * PUT FAKE CHAR. BEFORE COMP. CHAR @V305798 00824000
- MVI 0(R5),X'1D' PUT FAKE ATTRIBUTE IN AREA @V305798 00825000
- STC R2,1(,R5) PUT COMPOUND CHAR. INTO BUFFER @V305798 00826000
- LA R5,2(,R5) UPDATE PASS COMPOUND CHARACTER @V305798 00827000
- LA R4,1(,R4) UPDATE PASS COMPOUND CHARACTER @V305798 00828000
- LA R8,1(,R8) KEEP COUNT OF FAKE ATTR. CHARS @V305798 00829000
- SR R3,R1 DECREMENT BYTE COUNT @V305798 00830000
- S R3,F1 SUBTRACT ONE - COMPUND CHAR. @V305798 00831000
- BNP FRETOLD GET OUT - FINISH @V305798 00832000
- BAL R10,TRANSTST TRANSLATE & TEST FOR COMP. CHAR. @V305798 00833000
- B FRETOLD RELEASE OLD CONTASK STORAGE @V305798 00834000
- B APLCOMP PUT FAKE ATTR. CHAR IN BUFFER @V305798 00835000
- FRETNEW EQU * RELEASE NEW CONTASK STORAGE @V305798 00836000
- L R1,BALRSAVE GET NEW CONTASK POINTER @VA07391 00837100
- LH R0,CONTSKSZ-CONTASK(,R1) GET SIZE OF CONTASK @VM03040 00838000
- ST R6,BALRSAVE SAVE OLD/CURRENT CONTASK PTR @VA07391 00839100
- B FRETCONT RELEASE NEW CONTASK @V305798 00840000
- FRETOLD EQU * RELEASE CURRENT CONTASK STORAGE @V305798 00841000
- LR R1,R6 GET CURRENT CONTASK POINTER @V305798 00842000
- LH R0,CONTSKSZ GET SIZE OF OLD CONTASK @V305798 00843000
- AH R8,CONCNT ADD NUMBER OF FAKE CHAR TO COUNT @V305798 00844000
- L R6,BALRSAVE GET POINTER TO NEW CONTASK @VA07391 00845100
- STH R8,CONCNT UPDATE DATA COUNT @V305798 00846000
- FRETCONT EQU * RELEASE CONTASK @V305798 00847000
- CALL DMKFRET RELEASE CONTASK @V305798 00848000
- LM R1,R10,BALRSAVE RESTORE REGISTERS @VA07391 00849100
- LTR R10,R10 IS THERE AN IOBLOK POINTER @VM03040 00850000
- BNZ APLFIRST YES, SAVE PTR. IN PREVIOUS TASK @VM03040 00851000
- ST R1,NICQPNT SAVE CONTASK POINTER @VM03040 00852000
- LR R6,R1 SET UP CONTASK REGISTER @VM03040 00853000
- B APLCONT CONTINUE PROCESSING @V387398 00854000
- APLFIRST EQU * SAVE PTR. IN PREVIOUS CONTASK @VM03040 00855000
- ST R1,CONPNT-CONTASK(,R3) SAVE CURRENT PTR. @VM03040 00856000
- LR R6,R1 SET UP CONTASK REGISTER @VM03040 00857000
- APLCONT TM NICTMCD,NICTEXT 3270 TEXT? @V387398 00857010
- BZ NOAPLW BR IF NOT @V387398 00857020
- LH R0,CONCNT DATA LENGTH @V387398 00857030
- L R1,CONADDR POINT TO DATA @V387398 00857040
- TXTLP LR R3,R0 REMAINING BYTE COUNT @V387398 00857050
- BCTR R3,0 - 1 FOR EXECUTE @V387398 00857060
- N R3,F255 MASK @V387398 00857070
- EX R3,TXTTRAN TRANSLATE TEXT OUTPUT @V387398 00857080
- LA R3,1(,R3) BYTE COUNT JUST TRANSLATED @V387398 00857090
- AR R1,R3 POINT TO NEXT BYTE TO TRANSLATE @V387398 00857100
- SR R0,R3 BYTES REMAINING @V387398 00857110
- BP TXTLP LOOP IF MORE TO TRANSLATE @V387398 00857120
- NOAPLW EQU * BYPASS APL TRANSLATION @VM03040 00858000
- MVI CONLABEL,RTNRETBF AFTER FINISHING WRITES @VM03040 00859000
- BAL R3,WRITSECT GO SET UP WRITE CCWS FOR BISYNC @V305731 00860000
- BAL R7,RGFCHAN GO GET IOBLOK POINTER @V305731 00861000
- SPACE 1 00862000
- STRTREAD EQU * READ CONTASK SECTION @V305731 00863000
- BAL R3,READSUB SET UP CCW FOR READ STATUS @V305731 00864000
- BAL R7,RGFCHAN GO GET IOBLOK POINTER @V305731 00865000
- SPACE 1 00866000
- RGFMT EQU * @V305731 00867000
- BAL R3,INITIAL INITIALIZE THE VM LOGO @V305731 00868000
- BAL R3,RGFFMT FORMAT THE DISPLAY SCREEN @V305731 00869000
- BAL R7,RGFCHAN GO GET IOBLOK POINTER @V305731 00870000
- SPACE 1 00871000
- CRTHOLD1 EQU * SET UP HOLD STATUS CCWS @V305731 00872000
- BAL R3,CRTHOLD SET UP CCWS FOR HOLD STATUS @V305731 00873000
- BAL R7,RGFCHAN GO GET POINTER TO IOBLOK @V305731 00874000
- SPACE 1 00875000
- CRTFULL EQU * COME HERE WHEN SCREEN IS FULL @V305731 00876000
- LTR R10,R10 IS THERE AN IOBLOK POINTER @V305731 00877000
- BZ ALARMSG NO, CHECK FOR ALARM MESSAGE @VM03134 00878000
- LR R6,R3 GET ORIGINAL CONTASK POINTER @V305731 00879000
- BAL R7,SETWRIT GO SETUP CCWS FOR RUNNING STATUS @V305731 00880000
- SPACE 1 00881000
- ALARMSG EQU * CHECK FOR ALARM MESSAGE @VM03134 00882000
- TM CONPARM,LOGDROP+LOGHOLD LOGOFF REQUEST ACTIVE @V305731 00883000
- BNZ CRTMORE1 YES, PUT SCREEN IN MORE STATUS @V305731 00884000
- TM NICFLAG,NICALRM ALARM MESSAGE DISPLAYED ? @V305731 00885000
- BO CRTHOLD1 YES, GO FORCE HOLD STATUS @V305731 00886000
- CRTMORE1 EQU * SET UP MORE STATUS CCWS @V305731 00887000
- BAL R7,RSTTMR RESET ANY ACTIVE TIMER REQUEST @V305731 00888000
- BAL R3,CRTMORE SET UP CCWS FOR MORE STATUS @V305731 00889000
- * B RGFCHAN GO GET IOBLOK POINTER 00890000
- RGFCHAN EQU * GET STORAGE FOR IOBLOK @V305731 00891000
- NI NICFLAG,X'FF'-NICPROCN CLEAR PROCESS NOW FLAG @V305731 00892000
- BAL R3,BLDIOB GO GET STORAGE FOR IOBLOK @V305731 00893000
- RGFCHAN1 EQU * @V305731 00894000
- LA R1,CONCCW1 START OF CCW STRING @V305731 00895000
- OI CONSTAT,CONESCP CONTASK PROCESSED @V305731 00896000
- L R4,IOBMISC GET POINTER TO LAST CONTASK @V305731 00897000
- LTR R4,R4 IS THE POINTER ZERO ? @V305731 00898000
- BP RGFCHN4 YES, ADD TO THE STRING @V305731 00899000
- XC BSCRESP(L'BSCRESP),BSCRESP CLEAR RESPONSE AREA @V305731 00900000
- ST R1,IOBCAW SET UP THE CAW @V305731 00901000
- BAL R7,RGFCHN5 CONTINUE WITH THIS NICBLOK @V305731 00902000
- SPACE 1 00903000
- RGFCHN4 EQU * ADD TO EXITING CCW STRING @V305731 00904000
- MVC CONCCW2-CONTASK(8,R4),TICCCW MOVE TIC CCW @V305731 00905000
- MVI CONCCW1+4-CONTASK(R4),SILI+CD SET DATA CHAINING @V305731 00906000
- ST R1,CONCCW2-CONTASK(,R4) SAVE PTR TO CCW STRING @V305731 00907000
- MVI CONCCW2-CONTASK(R4),X'08' MAKE IT A TIC COMMAND @V305731 00908000
- LA R1,CONCCW4+5 BYPASS WCC CHARACTER FOR CHAINING@V305731 00909000
- STCM R1,7,CONCCW1+1 SAVE POINTER TO DATA IN CCW @V305731 00910000
- LH R1,CONCCW1+6 GET CCW COUNT @V305731 00911000
- S R1,F4 SUBTRACT BISYNC HEADER & WCC @V305731 00912000
- STH R1,CONCCW1+6 SAVE COUNT VALUE @V305731 00913000
- RGFCHN5 EQU * CHECK STATUS OF CONTASK @V305731 00914000
- ST R6,IOBMISC SAVE THE LAST CONTASK PTR @V305731 00915000
- TM CONSTAT,CONCNTL IS THIS A CONTROL TASK ? @V305731 00916000
- BZ NOCONTAK NO, BYPASS CONTROL TEST @V305731 00917000
- CLI CONCCW1,X'2F' IS THE DISABLE COMMAND CCW FIRST @V305731 00918000
- BE RESTART YES, GO START I/O TO BISYNC LINE @V305731 00919000
- BAL R7,RGFIOS GO QUEUE I/O OPERATION OFF IOBLOK@V305731 00920000
- SPACE 1 00921000
- NOCONTAK EQU * PROCESS NON-CONTROL CONTASK @V305731 00922000
- L R4,CONPNT GET NEXT CONTASK POINTER @V305731 00923000
- LTR R4,R4 IS THE POINTER ZERO ? @V305731 00924000
- BZ SETWRIT YES, GO SET UP CCWS FOR STATUS @V305731 00925000
- TM NICFLAG,NICDIAG IS THIS A DIAGNOSE WRITE @V305731 00926000
- BO SETWRIT YES, GO SET UP CCWS FOR STATUS @V305731 00927000
- TM NICTMCD,NICSIO WAS DIAGNOSE ISSUE TO INPUT AREA @VM03094 00928000
- BO SETWRIT YES, GO SET UP CCWS FOR STATUS @VM03094 00929000
- TM CONSTAT-CONTASK(R4),CONOUTPT A OUTPUT CONTASK @V305731 00930000
- BZ SETWRIT NO, GO SET UP CCWS FOR STATUS @V305731 00931000
- TM CONPARM-CONTASK(R4),ALARM IS THIS AN ALARM MSG @V305731 00932000
- BO SETWRIT YES, GO SET UP CCWS FOR STATUS @V305731 00933000
- TM CONDWC-CONTASK(R4),X'40' IS THIS A DIAGNOSE? @VA07542 00934100
- BO SETWRIT YES, GO SET UP CCWS FOR STATUS @V305731 00935000
- LR R3,R6 SAVE CURRENT CONTASK POINTER @V305731 00936000
- LR R6,R4 PROCESS NEXT OUTPUT CONTASK @V305731 00937000
- BAL R7,CORD GO PROCESS THIS OUTPUT CONTASK @V305731 00938000
- SPACE 1 00939000
- SETWRIT EQU * SET UP CCWS FOR RUNNING STATUS @V305731 00940000
- MVC CONCCW2(8),WRT77RUN GET RUNNING STATUS CCW @V305731 00941000
- MVI CONCCW1+4,SILI+CD SET DATA CHAINING @V305731 00942000
- MVC CONCCW3(8),READCCW1 GET CCW FOR BISYNC RESPONSE @V305731 00943000
- LA R1,BSCRESP GET ADDRESS OF RESPONSE BUFFER @V305731 00944000
- STCM R1,7,CONCCW3+1 SAVE ADDRESS OF RESPONSE BUFFER @V305731 00945000
- BAL R7,RGFIOS GO QUEUE I/O OPERATION OFF IOBLOK@V305731 00946000
- SPACE 2 00947000
- ****************************************************************** 00948000
- * NEW ENTRY LABEL USE BY DMKRGA TO FORMAT THE 3270 DISPLAY 00949000
- * SCREEN. THIS NEW ENTRY POINT WAS CREATED WHEN DMKRGB WAS 00950000
- * SPLIT INTO TWO MODULES. 00951000
- ****************************************************************** 00952000
- SPACE 2 00953000
- USING DMKRGB,R12 SETUP ADDRESSABILITY FOR FORMAT @V305731 00954000
- DMKRGBMT DS 0D @V305731 00955000
- LR R12,R7 GET BASE ADDRESS FOR DMKRGB @V305731 00956000
- LM R12,R13,RGBBASE GET BASE ADDRESSES @V305731 00957000
- USING DMKRGB,R12,R13 SET UP ADDRESSABILITY @V305731 00958000
- BAL R3,INITIAL INITIALIZE THE VM LOGO @V305731 00959000
- BAL R3,RGFFMT FORMAT THE DISPLAY SCREEN @V305731 00960000
- MVI IOBMISC2,IBBWRITE SET UP FOR WRITE OPERATION @V305731 00961000
- LA R1,CONCCW1 PICK UP CHANNEL PROGRAM ADDRESS @V305731 00962000
- ST R1,BSCSPTR .... AND SAVE ADDRESS @V305731 00963000
- BAL R7,SETCAWA GO RESTART I/O OPERATION TO LINE @V305731 00964000
- EJECT 00965000
- RGBBASE DS 0F REMOTE 3270 BASE REGISTER VALUE @V305731 00966000
- DC A(DMKRGB,DMKRGB+4096) @V305731 00967000
- SPACE 2 00968000
- ******************************************************************* 00969000
- * SUBROUTINES FOR 3270 REMOTE SUPPORT 00970000
- * 00971000
- * THE SUBROUTINES ARE DUPLICATES OF SOME IN DMKRGA. 00972000
- * ANY CHANGES MADE TO THESE SUBROUTINES SHOULD ALSO BE MADE 00973000
- * IN DMKRGA. 00974000
- ******************************************************************* 00975000
- SPACE 2 00976000
- SETCAWA EQU * GET START OF CCW STRING @V305731 00977000
- LA R1,CONCCW1 GET BEGINNING ADDR OF CCW STRING @V305731 00978000
- SETCAW EQU * I/O RESTART SECTION @V305731 00979000
- ST R1,IOBCAW SET UP CAW @V305731 00980000
- XC BSCRESP(L'BSCRESP),BSCRESP CLEAR RESPONSE BUFFER@V305731 00981000
- TM IOBMISC2,IBBSPOLL DOING A SPECIFIC POLL? @VA08730 00981100
- BO RESTART YES, GO RESTART THE LINE @VA08730 00981200
- NI IOBMISC2,X'FF'-IBBWRITE TURN OFF WRITE FLAG @VA08730 00981300
- CLI 5(R1),X'10' IS THIS A WRITE TEXT CCW @VA13944 00981400
- BNE RESTART NO, GO RESTART THE LINE @VA08730 00981500
- ST R1,BSCSPTR SAVE WRITE CCW ADDRESS @VA08730 00981600
- MVI IOBMISC2,IBBWRITE INDICATE THIS IS A WRITE @VA08730 00981700
- BAL R7,RESTART GO RESTART I/O OPERATION TO LINE @V305731 00982000
- SPACE 1 00983000
- CONRET EQU * RETURN CONTASK TO SYSTEM @V305731 00984000
- L R0,CONPNT GET NEXT CONTASK (IF ANY) @V305731 00985000
- ST R0,NICQPNT SET NEXT CONTASK FOR PROCESSING @V305731 00986000
- SR R0,R0 CLEAR REGISTER 0 @V305731 00987000
- ST R0,CONPNT CLEAR NEXT POINTER @V305731 00988000
- CALL DMKQCNET RETURN CONTASK @V305731 00989000
- BR R3 RETURN TO IN LINE CODE @V305731 00990000
- SPACE 1 00991000
- RSTTMR EQU * RESET TIMER VALUE @V305731 00992000
- TM NICSTAT,NICTRQ IS A TIMER REQUEST QUEUED @V305731 00993000
- BZR R7 NO, RETURN TO IN LINE CODE @V305731 00994000
- NI NICSTAT,X'FF'-NICTRQ RESET TIMER REQUEST FLAG @V305731 00995000
- L R1,NICATRB GET ADDRESS OF TRQBLOK @V305731 00996000
- CALL DMKSCHRT RESET ACTIVE TIMER REQUEST @V305731 00997000
- BR R7 RETURN TO IN LINE CODE @V305731 00998000
- SPACE 1 00999000
- BLDIOB EQU * GET STORAGE FOR IOBLOK @V305731 01000000
- LTR R10,R10 IS THERE AN IOBLOK POINTER ? @V305731 01001000
- BNZR R3 YES, RETURN @V305731 01002000
- LA R0,IOBSIZE GET IOBLOK SIZES @V305731 01003000
- CALL DMKFREE GET STORAGE FOR IOBLOK @V305731 01004000
- LR R10,R1 SET UP ADDRESSABILITY FOR IOBLOK @V305731 01005000
- XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR IOBLOK @V305731 01006000
- BR R3 RETURN TO IN LINE CODE @V305731 01007000
- SPACE 1 01008000
- FRETIOB EQU * RELEASE IOBLOK & IOERBLOK @V305731 01009000
- LTR R10,R10 IS THERE AN IOBLOK POINTER @V305731 01010000
- BZR R7 NO, RETURN @V305731 01011000
- BAL R3,FRETIOER RELEASE IOERBLOK @V305731 01012000
- LR R1,R10 GET IOBLOK POINTER @V305731 01013000
- LA R0,IOBSIZE GET SIZE OF IOBLOK @V305731 01014000
- CALL DMKFRET RELEASE STORAGE FOR IOBLOK @V305731 01015000
- SR R10,R10 CLEAR IOBLOK POINTER @V305731 01016000
- BR R7 RETURN TO IN LINE CODE @V305731 01017000
- SPACE 1 01018000
- FRETIOER EQU * RELEASE IOERBLOK STORAGE @V305731 01019000
- L R1,IOBIOER GET POINTER TO IOERBLOK @V305731 01020000
- LTR R1,R1 IS POINTER ZERO ? @V305731 01021000
- BZR R3 YES, RETURN @V305731 01022000
- LA R0,IOERSIZE GET SIZE OF IOERBLOK @V305731 01023000
- AH R0,IOEREXT-IOERBLOK(,R1) EXTENSION TO IOERBLOK @V305731 01024000
- CALL DMKFRET RELEASE STORAGE FOR IOERBLOK @V305731 01025000
- SR R0,R0 CLEAR REGISTER 0 @V305731 01026000
- ST R0,IOBIOER CLEAR POINTER TO IOERBLOK @V305731 01027000
- BR R3 RETURN @V305731 01028000
- SPACE 1 01029000
- CRTMORE EQU * SET UP CCWS FOR MORE STATE @V305731 01030000
- BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 01031000
- MVI NICSTAT,NICMORE+NICNTRL INDICATE MORE & CONTROL @V305731 01032000
- MVI CONLABEL,RTNSTMOR SET RETURN TO MORE SECTION @V305731 01033000
- LA R1,WRT77CCW GET ADDRESS OF MORE CCWS @V305731 01034000
- BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 01035000
- MVI CONCCW1+7,MOR77L+4 SET MORE CCW COUNT @V305731 01036000
- LA R1,MOR77L GET LENGTH OF MORE DATA @V305731 01037000
- LA R2,MOR3277 GET ADDRESS OF MORE DATA @V305731 01038000
- BAL R7,DATAMOVE MOVE DATA INTO CONTASK BUFFER @V305731 01039000
- BR R3 RETURN @V305731 01040000
- SPACE 1 01041000
- CRTHOLD EQU * SET UP CCWS FOR HOLD STATE @V305731 01042000
- BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 01043000
- MVI NICSTAT,NICHOLD+NICNTRL INDICATE HOLD & CONTROL @V305731 01044000
- MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 01045000
- LA R1,WRT77CCW GET ADDRESS OF HOLD CCWS @V305731 01046000
- BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 01047000
- MVI CONCCW1+7,HLD77L+4 SET HOLD CCW COUNT @V305731 01048000
- LA R1,HLD77L GET LENGTH OF HOLD DATA @V305731 01049000
- LA R2,HLD3277 GET ADDRESS OF HOLD DATA @V305731 01050000
- BAL R7,DATAMOVE MOVE DATA INTO CONTASK BUFFER @V305731 01051000
- BR R3 RETURN @V305731 01052000
- SPACE 1 01053000
- WRITSECT EQU * HANDLE WRITE REQUEST @V305731 01054000
- ST R3,TEMPR3 SAVE RETURN ADDRESS @V305731 01055000
- LH R3,CONCNT GET DATA COUNT @V305731 01056000
- LA R1,WRT77CCW GET ADDRESS OF WRITE CCW @V305731 01057000
- BAL R7,SETUPCCW SET UP CCWS FOR BISYNC LINE @V305731 01058000
- MVC CONCCW4+1(3),SYNCP MOVE BISYNC HEADER INTO DATA @V305731 01059000
- MVC CONCCW4+4(4),WRT77D SET DATA @V305731 01060000
- LA R3,WRT77DL+3(R3) TOTAL DATA COUNT @V305731 01061000
- STH R3,CONCCW1+6 SAVE COUNT OF WRITE DATA @V305731 01062000
- SR R3,R3 CLEAR @V305731 01063000
- TM NICTMCD,NICSIO IS WRITING TO INPUT AREA FLAG ON @VM03094 01064000
- BZ WRITAPL NO, BYPASS LINE COORDINATE @VM03094 01065000
- IC R3,BSCLINE GET LINE COORDINATE @VM03094 01066000
- B WRITDIAG GET BUFFER ADDRESS FOR LINE @VM03094 01067000
- WRITAPL EQU * ... @VM03094 01068000
- IC R3,NICCORD GET LINE POSITION @V305731 01069000
- ALR R4,R3 UPDATE LINE COORDINATE @V305731 01070000
- STC R4,NICCORD SAVE NEXT LINE POSITION @V305731 01071000
- WRITDIAG EQU * GET BUFFER ADDRESS FOR LINE @VM03094 01072000
- SLL R3,1 TIMES 2 @V305731 01073000
- LH R3,TBL3277(R3) GET BUFFER ADDRESS @V305731 01074000
- STH R3,CONCCW4+6 SET BUFFER ADDRESS @V305731 01075000
- TM CONPARM,ALARM ALARM WITH MESSAGE ?? @V305731 01076000
- BZ LOADR3 NO, RETURN TO IN LINE CODE @V305731 01077000
- OI NICFLAG,NICALRM SET ALARM MESSAGE INDICATOR @V305731 01078000
- OI CONCCW4+4,WCC5 SET ALARM BIT @V305731 01079000
- LOADR3 EQU * SET UP FOR RETURN @V305731 01080000
- MVI CONLABEL,RTNRETBF SET RETURN TO WRITE FINISH @V305731 01081000
- L R3,TEMPR3 RESTORE RETURN ADDRESS @V305731 01082000
- BR R3 RETURN @V305731 01083000
- SPACE 01084000
- READSUB EQU * SET UP CCWS FOR READ STATE @V305731 01085000
- LR R2,R6 SAVE CONTASK POINTER @V305731 01086000
- BAL R7,CTLTASK GET STORAGE FOR CONTROL CONTASK @V305731 01087000
- LA R1,WRT77CCW GET CCWS FOR READ STATE @V305731 01088000
- BAL R7,SETUPCCW SET UP CCWS FOR BISYNC RESPONSE @V305731 01089000
- LR R15,R2 GET ORIGINAL CONTASK POINTER @V305731 01090000
- MVI CONCCW1+7,CPR77L+4 SET READ CCW COUNT @V305731 01091000
- LA R1,CPR77L GET LENGTH OF READ DATA @V305731 01092000
- LA R2,CPR3277 GET ADDRESS OF READ DATA @V305731 01093000
- BAL R7,DATAMOVE MOVE DATA INTO BUFFER AREA @V305731 01094000
- TM CONPARM-CONTASK(R15),INHIBIT NON-DISPLAY DATA @V305731 01095000
- BZ BYPATTR NO, BYPASS SETTING ATTRIBUTE BYTE@VM03134 01096000
- MVI CONDATA+1,ATTR457 SET NON-DISPLAY ATTRIBUTE BYTE@V305731 01097000
- BYPATTR EQU * CHECK FOR VIRTUAL MACHINE @VM03134 01098000
- TM CONPARM-CONTASK(R15),VMGENIO A VIRTUAL MACH READ@V305731 01099000
- BZ BYPVMRD NO, BYPASS VM READ DATA @VM03134 01100000
- MVC CONDATA+7(7),VMREADS MOVE VM READ INTO BUFFER @V305731 01101000
- BYPVMRD EQU * SETUP SCREEN STATUS @VM03134 01102000
- MVI NICSTAT,NICREAD+NICNTRL INDICATE READ & CONTROL @V305731 01103000
- OI CONSTAT-CONTASK(R15),CONESCP CONTASK PROCESSED @V305731 01104000
- MVI CONLABEL,RTNNOCTL SET RETURN TO NEXT CONTASK @V305731 01105000
- BR R3 RETURN @V305731 01106000
- SPACE 2 01107000
- TRANSTST EQU * TRANSLATE & TEST FOR COMP. CHAR. @V305798 01108000
- CL R3,F256 LESS THAN 256 ? @V305798 01109000
- BNH APLTST YES, ONLY TRANSLATE & TEST ONCE @V305798 01110000
- TRT 0(256,R4),0(R7) TRANSLATE & TEST DATA @V305798 01111000
- BNZ APLMOVE FOUND COMP. CHAR. - MOVE DATA @V305798 01112000
- MVC 0(256,R5),0(R4) MOVE DATA TO NEW BUFFER @V305798 01113000
- LA R4,256(,R4) UPDATE CURRENT CONTASK BUFFER PTR@V305798 01114000
- LA R5,256(,R5) UPDATE NEW CONTASK BUFFER PTR @V305798 01115000
- S R3,F256 DECREMENT DATA COUNT @V305798 01116000
- BNPR R10 IF ZERO, RETURN TO IN LINE CODE @VM03040 01117000
- B TRANSTST CONTINUE TRANSLATING DATA @V305798 01118000
- APLMOVE EQU * MOVE DATA INTO NEW CONTASK BUFFER@V305798 01119000
- SR R1,R4 GET LENGTH OF DATA @V305798 01120000
- EX R1,MOVEAPL MOVE DATA INTO NEW BUFFER @VM03040 01121000
- AR R5,R1 UPDATE NEW BUFFER POINTER @V305798 01122000
- AR R4,R1 UPDATE CURRENT BUFFER POINTER @V305798 01123000
- B 4(R10) MOVE FAKE ATTR CHAR. INTO BUFFER @V305798 01124000
- SPACE 01125000
- APLTST EQU * TRANSLATE & TEST FOR COMP. CHAR. @V305798 01126000
- BCTR R3,R0 SUBSTRACT ONE - EX INSTR. @VM03040 01127000
- EX R3,TRTTST TRANSLATE & TEST DATA @VM03040 01128000
- LA R3,1(,R3) UPDATE COUNTER - EX INSTR. @VM03040 01129000
- BNZ APLMOVE FOUND COMPOUND CHARACTER @V305798 01130000
- BCTR R3,0 SUBTRACT ONE FOR EXECUTE @VA09182 01131100
- EX R3,MOVEAPL MOVE DATA TO BUFFER @VA09182 01131200
- LA R3,1(,R3) RESET BYTE COUNT @VA09182 01131300
- BR R10 RETURN TO IN LINE CODE @V305798 01132000
- SPACE 1 01133000
- SELECTCW EQU * SET UP CCWS TO SELECT A STATION @V305731 01134000
- TM RDEVFTR,FTRDIAL DIAL-UP FEATURE INDICATED? @V346931 01135100
- BNO NONSW NO, DO SELECTION OPERATION @V346931 01135200
- MVC BSCSCCW1(THREECCW),INITBID INITIAL LINE BID CCWS@V346931 01135300
- B JOINSEL GO SET UP RESPONSE BUFFER @V346931 01135400
- NONSW EQU * NEXT DO SELECTION OPERATION @V346931 01135500
- MVC BSCSCCW1(THREECCW),WRITSEL ADDRESSING CCW STRING@V346931 01135600
- ICM R1,10,NICSELT GET ADDRESSING CHARACTERS @V305731 01138000
- ICM R1,5,NICSELT SET UP DOUBLE ADDRESSING CHARS. @V305731 01139000
- STCM R1,15,BSCSEL SAVE ADDRESS OF REMOTE STATION @V305731 01140000
- MVI BSCSEL+4,ENQ SET UP ADDRESSING ENTRY @V305731 01141000
- LA R1,BSCSEL GET ADDR OF SELECTION ENTRY @V346931 01141100
- STCM R1,B'0111',BSCSCCW2+1 INTO CCW @V346931 01141200
- JOINSEL EQU * SET UP READ RESPONSE BUFFER @V346931 01141300
- LA R1,BSCRESP GET RESPONSE BUFFER POINTER @V305731 01142000
- STCM R1,7,BSCSCCW3+1 SAVE ADDRESS IN CCW @V305731 01143000
- XC BSCRESP(2),BSCRESP CLEAR RESPONSE BUFFER @V305731 01144000
- MVC BSCRCVD(4),RGFACK0 EXPECTED RECVD & SEND RESP. @V305731 01145000
- MVC BSCSPTR(4),IOBCAW SAVE PTR. TO WRITE CCW STRING @V305731 01146000
- MVI IOBMISC2,IBBSELA SET SELECTION INDICATOR @V305731 01147000
- LA R1,BSCSCCW1 GET START OF SELECTION CCW STRING@V305731 01148000
- ST R1,IOBCAW SET UP CAW FIELD @V305731 01149000
- BR R3 RETURN @V305731 01150000
- SPACE 1 01151000
- GPOLLCW EQU * SET UP CCWS FOR GENERAL POLLING @V305731 01152000
- L R9,RDEVNICL GET ADDR OF CONTROL UNIT NICBLOK @V305731 01153000
- TM RDEVFTR,FTRDIAL DIAL-UP FEATURE INDICATED? @V346931 01153100
- BNO POLLCONT NO, DO GENERAL POLLING OPERATION @V346931 01153200
- MVC BSCPCCW1(TWOCCW),S3275EOT WRITE EOT / READ @V346931 01153300
- LA R1,BSCRESP ADDRESS OF RESPONSE BUFFER @V346931 01153400
- STCM R1,B'0111',BSCPCCW2+1 INTO CCW @V346931 01153500
- B JOINPOLL @V346931 01153600
- POLLCONT EQU * SET UP READ BUFFER @V346931 01153700
- MVI IOBMISC2,IBBREAD SET FLAG FOR GENERAL POLLING @V305731 01154000
- MVC BSCPCCW1(8*4),POLCCW GENERAL POLLING CCW STRING @V305731 01155000
- LA R1,BSCREAD GET READ BUFFER ADDRESS @V305731 01156000
- STCM R1,7,BSCPCCW4+1 SAVE ADDRESS OF READ BUFFER @V305731 01157000
- LA R1,BSCSEL GET ADDRESS OF POLLING ENTRY @V305731 01158000
- STCM R1,7,BSCPCCW2+1 SAVE ADDRESS OF POLL ENTRY @V305731 01159000
- ICM R1,10,NICPOLL GET POLLING CHARACTERS @V305731 01160000
- ICM R1,5,NICPOLL SET UP DOUBLE POLLING CHARACTERS @V305731 01161000
- STCM R1,15,BSCSEL SAVE ADDRESS OF REMOTE STATION @V305731 01162000
- MVC BSCSEL+4(3),RGFINDEQ SET UP ENQ, INDEX VAL & EOT@VA03474 01163100
- JOINPOLL EQU * CLEAR READ BUFFER @V346931 01163150
- XC BSCRESP(256),BSCRESP CLEAR READ BUFFER @V346931 01164000
- XC BSCRESP+256(L'BSCRESP+L'BSCREAD-256),BSCRESP+256 X01165000
- THIS SUPPORT CODE APPLIES TO LINE ABOVE @V346931 01165500
- MVC BSCRCVD(4),RGFACK0 SET RECEIVING & SENDING RESP @V305731 01166000
- LA R1,BSCPCCW1 GET START OF POLLING CCW STRING @V305731 01167000
- BR R3 RETURN @V305731 01168000
- EJECT 01169000
- * THE EXECUTE INSTRUCTION USED THE FOLLOWING INSTRUCTIONS 01170000
- TROPUT TR 0(*-*,R2),0(R7) EXECUTED TRANSLATE OUTPUT @V305731 01171000
- TRTTST TRT 0(*-*,R4),0(R7) TRANSLATE THE COMPOUND CHARACTER@V305798 01172000
- MOVEAPL MVC 0(*-*,R5),0(R4) GET REMAINING CHARACTERS @V305798 01173000
- SNGLCHAR EQU 256 OFFSET TO SINGLE CHARACTER XLATE TABLE @V387398 01173100
- TXTTRAN TR 0(*-*,R1),SNGLCHAR(R7) TRANSLATE TEXT OUTPUT @V387398 01173200
- SPACE 1 01174000
- * STORAGE FOR DATA LINK CONTROL CHARACTERS 01175000
- RGFEOT DC AL1(EOT) END OF TRANSMISSION CHARACTER @V305731 01176000
- RGFNAK DC AL1(NAK) NEGATIVE RESPONSE CHARACTER @V305731 01177000
- RGFENQ DC AL1(ENQ) INQUIRY CHARACTER @V305731 01178000
- RGFSONL DC AL1(SOH,X'6C') HEADER FOR NON-TEXT MSG. (SOH %) @V305731 01179000
- RGFWACK DC AL2(WACK) WAIT ACKNOWLEDGE CHARACTER @V305731 01180000
- RGFRVI DC AL2(RVI) REVERSE INTERRUPT CHARACTER @V305731 01181000
- RGFACK0 DC AL2(ACK0) POSITIVE ACKNOWLEDGE 0 CHARACTER @V305731 01182000
- RGFACK1 DC AL2(ACK1) POSITIVE ACKNOWLEDGE 1 CHARACTER @V305731 01183000
- SPACE 1 01184000
- * CCWS FOR POLLING AND SELECTING REMOTE STATIONS 01185000
- DS 0D @V305731 01186000
- WRITSEL DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V305731 01187000
- DC X'01',AL3(0),AL1(SILI+CC,X'03'),AL2(5) @V305731 01188000
- DC X'02',AL3(0),AL1(SILI,X'05'),AL2(2) @V305731 01189000
- SPACE 01190000
- POLCCW DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V305731 01191000
- DC X'09',AL3(0),AL1(SILI+CC,X'03'),AL2(7) @VA03474 01192100
- DC X'03',AL3(0),AL1(SILI,X'07'),AL2(1) @V305731 01193000
- DC X'02',AL3(0),AL1(SILI,X'0A'),AL2(BSCSIZE1) @V305731 01194000
- SPACE 01195000
- SPACE 2 01195100
- * PSUEDO POLLING CCWS FOR 3275 DIAL OPERATION @V346931 01195200
- S3275EOT DC X'01',AL3(RGFEOT),AL1(SILI+CC,X'02'),AL2(1) @V346931 01195300
- DC X'02',AL3(0),AL1(SILI,X'0D'),AL2(2) @V346931 01195400
- TWOCCW EQU (8*2) LENGTH OF TWO CCWS @V346931 01195500
- SPACE 1 01195600
- TICCCW DC X'08',AL3(0),AL1(SILI,X'00'),AL2(1) @V305731 01196000
- WRT77RUN DC X'00',AL3(RUN3277+1),AL1(SILI+CC,X'10') @VA13944 01197100
- DC AL2(RUN77L-1) @VA08995 01197200
- SPACE 1 01198000
- * 3270 REMOTE DATA AND STATUS MESSAGES 01199000
- WRT77D DC AL1(WCC6,SBA,0,0) @V305731 01200000
- WRT77DL EQU *-WRT77D @V305731 01201000
- SPACE 01202000
- HLD3277 DC AL1(WCC3,SBA,X'5D',X'6B',SF,ATTR2) @VA07171 01203100
- HLDSTAT DC CL20'HOLDING' @V305731 01204000
- HLD77L EQU *-HLD3277 @V305731 01205000
- SPACE 01206000
- MOR3277 DC AL1(WCC3,SBA,X'5D',X'6B',SF,ATTR2) @VA07171 01207100
- MORSTAT DC CL20'MORE...' @V305731 01208000
- MOR77L EQU *-MOR3277 @V305731 01209000
- SPACE 01210000
- RUN3277 DC AL1(WCC6,SBA,X'5B',X'5F',SF,ATTR7) @V305731 01211000
- DC AL1(SBA,X'5D',X'6B',SF,ATTR2) @V305731 01212000
- RUNSTAT DC CL20'RUNNING',AL1(ETX) @V305731 01213000
- RUN77L EQU *-RUN3277 @V305731 01214000
- SPACE 01215000
- CPR3277 DC AL1(WCC6,SBA,X'5B',X'5F',SF,ATTR7) @V305731 01216000
- DC AL1(SBA,X'5D',X'6B',SF,ATTR2) @V305731 01217000
- DC CL20'CP READ' @V305731 01218000
- CPR77L EQU *-CPR3277 @V305731 01219000
- SPACE 01220000
- VMREADS DC CL7'VM READ' @V305731 01221000
- EJECT 01222000
- SPACE 01223000
- * RETURN INDEX VALUE FOR 3270 REMOTE SUPPORT 01224000
- RTNNOCTL EQU X'00' RETURN TO GET NEXT CONTASK @V305731 01225000
- RTNSRTRD EQU X'04' RETURN TO READ SECTION @V305731 01226000
- RTNLGTST EQU X'08' RETURN TO LOGOFF USER @V305731 01227000
- RTNRFCFM EQU X'0C' RETURN TO CONS. FUNCTION PROCESS @V305731 01228000
- RTNSTMOR EQU X'10' RETURN TO MORE SECTION @V305731 01229000
- RTNSETRJ EQU X'14' RETURN TO REJECT SECTION @V305731 01230000
- RTNCPNAT EQU X'18' RETURN TO WRITE STATUS SECTION @V305731 01231000
- RTNLOGOF EQU X'1C' RETURN TO LOGOFF USER SECTION @V305731 01232000
- RTNBLDVM EQU X'20' RETURN TO BUILD VMBLOK SECTION @V305731 01233000
- RTNFMTDN EQU X'24' RETURN TO FORMATS FINISH SECTION @V305731 01234000
- RTNRETBF EQU X'28' RETURN TO WRITE COMPLETED SECTION@V305731 01235000
- RTNRDEXT EQU X'2C' RETURN TO RELEASE READ BUFFER @V305731 01236000
- RTNRVIRP EQU X'30' RETURN TO RVI RESPONSE SECTION @V305731 01237000
- SPACE 1 01238000
- * READ/WRITE OPERATION TYPES 01239000
- IBBSELA EQU X'80' ADDRESSING/SELECTING A STATION @V305731 01240000
- IBBWRITE EQU X'40' WRITE DATA TO A REMOTE STATION @V305731 01241000
- IBBREAD EQU X'20' GENERAL POLLING OF STATIONS @V305731 01242000
- IBBSPOLL EQU X'10' SPECIFIC POLLING TO A STATION @V305731 01243000
- SPACE 1 01244000
- * DATA-LINK CONTROL CHARACTERS FOR 3270 REMOTE SYSTEM 01245000
- SOH EQU X'01' START OF HEADING @V305731 01246000
- STX EQU X'02' START OF TEXT @V305731 01247000
- ETX EQU X'03' END OF TEXT @V305731 01248000
- ETB EQU X'26' END OF BLOCK @V305731 01249000
- ESC EQU X'27' ESCAPE @V305731 01250000
- EOT EQU X'37' END OF TRANSMISSION @V305731 01251000
- ENQ EQU X'2D' ENQUIRY @V305731 01252000
- NAK EQU X'3D' NEGATIVE ACKNOWLEDGMENT @V305731 01253000
- WACK EQU X'106B' WAIT BEFORE TRANSMIT @V305731 01254000
- RVI EQU X'107C' REVERSE INTERRUPT @V305731 01255000
- ACK0 EQU X'1070' EVEN ACKNOWLEDGE @V305731 01256000
- ACK1 EQU X'1061' ODD ACKNOWLEDGE @V305731 01257000
- SPACE 01258000
- * 3270 REMOTE SYSTEM COMMAND CODES 01259000
- WRTCMD EQU X'F1' WRITE COMMAND CODE @V305731 01260000
- EWRTCMD EQU X'F5' ERASE/WRITE COMMAND CODE @V305731 01261000
- COPYCMD EQU X'F7' COPY COMMAND CODE @V305731 01262000
- SPACE 1 01263000
- * 3270 DISPLAY STATION ORDERS 01264000
- SF EQU X'1D' START OF FIELD CONTROL @V305731 01265000
- SBA EQU X'11' SET BUFFER ADDRESS @V305731 01266000
- IC EQU X'13' INSERT CURSOR @V305731 01267000
- RA EQU X'3C' REPEAT TO ADDRESS (CHAR) @V305731 01268000
- EUA EQU X'12' ERASE UNPROTECTED TO ADDRESS @V305731 01269000
- SPACE 1 01270000
- * 3270 WRITE CONTROL CHARACTERS 01271000
- WCC3 EQU X'C2' RESTORE KEYBOARD @VA07171 01271400
- WCC4 EQU X'C6' RESTORE KEYBOARD, ALARM @VA07171 01271800
- WCC5 EQU X'C5' WRITE CONTROL CHAR TO SOUND ALARM@VM03116 01272000
- WCC6 EQU X'C3' W.C.C. TO RESTORE KEYBOARD @VM03116 01273000
- WCC56 EQU X'C7' W.C.C. TO SOUND ALARM & RES. KEY.@VM03116 01274000
- WCC8 EQU X'F8' W.C.C. TO PTR FOR 80-CHAR LINE @VM03116 01275000
- ATTR2 EQU X'60' PROTECTED ATTRIBUTE CHARACTER @VM03116 01276000
- ATTR7 EQU X'C1' MODIFIED DATA TAG ATTRIBUTE CHAR @VM03116 01277000
- ATTR457 EQU X'4D' PROTECTED, NONDISPLAY & MOD. DATA@VM03116 01278000
- SPACE 01279000
- * TABLE OF LINE ADDRESS FOR 3277 DISPLAY STATION 01280000
- TBL3277 DS 0D @V305731 01281000
- DC X'4040C150C260C3F0C540C650C760' @V305731 01282000
- DC X'C8F04A404B504C604DF04F405050' @V305731 01283000
- DC X'D160D2F0D440D550D660D7F0D940' @V305731 01284000
- DC X'5A505B605CF0' @V305731 01285000
- SPACE 01286000
- * MAINTENANCE AREA 01287000
- RGFMAINT DC 8CL6'DMKRGB' THIS AREA IS USED FOR UPDATES @VA06170 01288000
- EJECT 01289000
- LTORG @V305731 01290000
- EJECT 01291000
- COPY NETWORK @V305731 01292000
- EJECT 01293000
- COPY BSCBLOKS @V305731 01294000
- EJECT 01295000
- COPY TIMER @V305731 01296000
- SPACE 2 01297000
- EJECT 01303000
- COPY DEVTYPES @V305731 01304000
- EJECT 01305000
- COPY EQU @V305731 01306000
- EJECT 01307000
- COPY VBLOKS @V305731 01308000
- EJECT 01309000
- COPY RBLOKS @V305731 01310000
- EJECT 01311000
- COPY CONBUF @V305731 01312000
- EJECT 01313000
- COPY IOBLOKS @V305731 01314000
- EJECT 01315000
- COPY IOER @V305731 01316000
- EJECT 01317000
- COPY VMBLOK @V305731 01318000
- EJECT 01319000
- COPY SAVE @V305731 01320000
- EJECT 01321000
- PSA @V305731 01322000
- EJECT 01323000
- END 01324000
ibm/vm370-lib/cp/dmkrgb.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator