GRT TITLE 'DMKGRT (CP) VM/370 RELEASE 6' 00001000
ISEQ 73,80 VALIDATE SEQUENCING OF INPUT @V60A6B6 00002000
*. 00003000
* MODULE NAME - 00004000
* 00005000
* DMKGRT 00006000
* 00007000
* FUNCTION - 00008000
* 00009000
* COMMON DATA AREAS AND SUBROUTINES FOR 3270 DISPLAY SUPPORT 00010000
* 00011000
* CONTENTS - 00012000
* 00013000
* DMKGRTAB - COMPUTE THE NEXT TAB ADDRESS AND CREATE THE DATA 00016000
* STREAM TO POSITION THE CURSOR AND INSERT A LOGICAL 00017000
* TAB CHARACTER IF NECESSARY. 00018000
* DMKGRTID - Copy DKMSYSID into the 3270 status areas HRC108DK 00018100
* in DMKGRTB, DMKGRWTB. DMKGRUTB, DMKGRVTB HRC108DK 00018200
*. 00019000
EJECT 00020000
DMKGRT CSECT @V60A6B6 00021000
SPACE 2 00022000
ENTRY DMKGRTAB,DMKGRTAI,DMKGRTB,DMKGRTBL @V60A6B6 00023000
ENTRY DMKGRTAC HRC029DK 00023500
ENTRY DMKGRTCI,DMKGRTCS,DMKGRTDS,DMKGRTFD @V60A6B6 00024000
ENTRY DMKGRTCN HRC101DK 00025290
ENTRY DMKGRTFO,DMKGRTHL,DMKGRTIN HRC101DK 00025580
ENTRY DMKGRTCL,DMKGRTCF HRC073DK 00025600
ENTRY DMKGRTMR,DMKGRTNA,DMKGRTPF,DMKGRTP6 @V60A6B6 00026000
ENTRY DMKGRTRD,DMKGRTRU,DMKGRTWI,DMKGRTWT @V60A6B6 00027000
ENTRY DMKGRTID HRC108DK 00027100
ENTRY DMKGRTBF HRC101DK 00028990
SPACE 3 00030000
EXTRN DMKSYSID,DMKGRWTB,DMKGRUTB,DMKGRVTB HRC108DK 00030100
EXTRN DMKGRXTB 00030110
SPACE 3 HRC108DK 00030200
USING PSA,R0 @V60A6B6 00031000
USING BUFFER,R3 @V60A6B6 00032000
USING VMBLOK,R11 @V60A6B6 00033000
USING SAVEAREA,R13 @V60A6B6 00034000
*. 00154000
* SUBROUTINE NAME - 00155000
* 00156000
* DMKGRTAB 00157000
* 00158000
* FUNCTION - 00159000
* 00160000
* TO RETURN THE ADDRESS AND LENGTH OF THE DATA STREAM THAT 00161000
* WILL MOVE THE CURSOR TO THE NEXT TAB POSITION AND ADD A 00162000
* LOGICAL TAB CHARACTER IF NECESSARY. 00163000
* 00164000
* ATTRIBUTES - 00165000
* 00166000
* SERIALLY REUSABLE, RESIDENT, CALLED VIA BALR 00167000
* 00168000
* ENTRY POINT - 00169000
* 00170000
* DMKGRTAB 00171000
* 00172000
* ENTRY CONDITIONS - 00173000
* 00174000
* GPR 0 = DISPLAY ALTERNATE SCREEN SIZE INDEX VALUE 00175000
* GPR 1 = ADDRESS OF AREA IN WHICH TO BUILD TAB DATA STREAM 00176000
* GPR 2 = POINTER TO THE PF TABLE ENTRY FOR THE TAB FUNCTION 00177000
* GPR 3 = ADDRESS OF THE INPUT BUFFER CONTAINING DATA READ 00178000
* GPR 4 = POINTER TO THE PF TAB DATA FIELD 00179000
* GPR11 = DISPLAY TERMINAL USER'S VMBLOK ADDRESS 00180000
* GPR14 = CALLER'S RETURN ADDRESS 00181000
* GPR15 = ADDRESS OF DMKGRTAB 00182000
* 00183000
* EXIT CONDITIONS - 00184000
* 00185000
* GPR 2 = LENGTH OF THE DATA STREAM CREATED FOR TAB FUNCTION 00186000
* 00187000
* CALLS TO OTHER ROUTINES - 00188000
* 00189000
* NONE 00190000
* 00191000
* EXTERNAL REFERENCES - 00192000
* 00193000
* NONE 00194000
* 00195000
* TABLES / WORK AREAS - 00196000
* 00197000
* BALRSAVE 00198000
* TABTRTBL 00199000
EJECT 00200000
* REGISTER USAGE - 00201000
* 00202000
* GPR 0 = USED TO COMPUTE INPUT AREA OFFSET 00203000
* GPR 1 = USED TO ADDRESS TAB DATA STREAM 00204000
* GPR 2 = POINTER TO THE PF TABLE DATA 00205000
* GPR 3 = ADDRESS OF THE INPUT BUFFER 00206000
* GPR 4 = POINTER TO THE PF DATA FIELD 00207000
* GPR 5-7 = WORK REGISTERS 00208000
* GPR14 = RETURN ADDRESS 00209000
* GPR15 = BASE REGISTER 00210000
* 00211000
* ALL OTHER REGISTERS ARE NOT USED 00212000
* 00213000
* NOTES - 00214000
* 00215000
* NONE 00216000
* 00217000
* OPERATION - 00218000
* 00219000
* 1. THE CURSOR ADDRESS IS CONVERTED TO AN INPUT AREA OFFSET BY 00220000
* USING THE ADDRESS RETURNED FROM THE READ AND THE INPUT AREA 00221000
* DISPLACEMENT FROM THE BEGINNING OF THE DISPLAY SCREEN. 00222000
* 00223000
* 2. IF THIS OFFSET IS BEYOND THE LAST TAB POSITION, THE CURSOR 00224000
* WILL BE PUT AT THE BEGINNING OF THE INPUT AREA. OTHERWISE THE 00225000
* NEXT TAB POSITION IS USED TO POSITION THE CURSOR. 00226000
* 00227000
* 3. THE INPUT DATA IS THEN SCANNED FOR NULLS TO DETERMINE IF A 00228000
* LOGICAL TAB CHARACTER IS NEEDED. IF A LOGICAL TAB CHARACTER IS 00229000
* FOUND DURING THE SCAN, THE COUNT IS UPDATED TO THE CORRECT TAB 00230000
* POSITION. IF A NULL IS FOUND BEFORE THE BUFFER COUNT REACHES 00231000
* THE NEW TAB OFFSET, A LOGICAL TAB CHARACTER IS PUT IN THE DATA 00232000
* STREAM - TO BE WRITTEN AT THE END OF THE NON-NULL DATA OR AT 00233000
* THE TAB LOCATION PRECEDING THE ONE WHERE THE CURSOR WILL BE. 00234000
* 00235000
* 4. THE LENGTH OF THE DATA STREAM BUILT IS PUT INTO REGISTER 2, 00236000
* THE REGISTERS USED ARE RESTORED, AND THE SUBROUTINE IS EXITED. 00237000
*. 00238000
EJECT 00239000
*---------------------------------------------------------------------* 00240000
* DMKGRTAB - FIND NEXT TAB POSITION AND BUILD DATA STREAM * 00241000
*---------------------------------------------------------------------* 00242000
SPACE 00243000
DMKGRTAB DS 0H @V60A6B6 00244000
USING *,R15 ESTABLISH SUBROUTINE'S BASE ADDR @V60A6B6 00245000
STM R0,R7,BALRSAVE SAVE REGISTERS THAT WILL BE USED @V60A6B6 00246000
LR R7,R0 SET UP TO GET INPUT AREA OFFSET @V60A6B6 00247000
L R0,DMKGRTDS(R7) LOAD THE CORRECT DISPLACEMENT @V60A6B6 00248000
NC ADDRCURS(2),=X'3F3F' STRIP TO GET SIX BIT ADDR @V60A6B6 00249000
SLR R6,R6 CLEAR A COUPLE OF WORK REGISTERS @V60A6B6 00250000
LR R7,R6 ... @V60A6B6 00251000
IC R6,ADDRCURS GET HIGH ORDER SIX BITS OF ADDR. @V60A6B6 00252000
SLL R6,6 SHIFT THEM INTO THE RIGHT PLACE @V60A6B6 00253000
IC R7,ADDRCURS+1 GET LOW ORDER SIX BITS OF ADDR. @V60A6B6 00254000
ALR R6,R7 PUT THE PIECES OF ADDR TOGETHER @V60A6B6 00255000
SLR R6,R0 SUBTRACT OFF ADDR OF INPUT AREA @V60A6B6 00256000
MVI 0(R1),WCC6 SET WRITE CONTROL CHARACTER UP. @V60A6B6 00257000
LA R5,4(,R4) POINT TO BEGINNING OF TAB DATA. @V60A6B6 00258000
LH R4,2(,R2) GET THE COUNT OF TAB DATA FIELD @V60A6B6 00259000
S R4,F4 ADJUST FOR ACTUAL TAB DATA SIZE @V60A6B6 00260000
BNP TABEGIN IF NO TABS, PUT CURSOR AT START @V60A6B6 00261000
SPACE 00262000
TABSCAN CLM R6,B'0001',0(R5) IS THIS THE PLACE TO TAB TO? @V60A6B6 00263000
BL TABHIGH YES, IF CURRENT ADDR IS LOWER @V60A6B6 00264000
LA R5,1(,R5) BUMP TO NEXT TAB BYTE @V60A6B6 00265000
BCT R4,TABSCAN KEEP LOOKING IF ANY TABS LEFT @V60A6B6 00266000
TABEGIN SLR R7,R7 INDICATE TAB BACK TO BEGINNING @V60A6B6 00267000
SPACE 00268000
TABONE EQU * @V60A6B6 00269000
LA R2,5 SIZE OF DATA STREAM BEING BUILT @V60A6B6 00270000
TABTWO BAL R6,TABADDR GO CONVERT BUFFER ADDRESS BACK @V60A6B6 00271000
MVI 4(R1),IC ADD INSERT CURSOR ORDER TO DATA @V60A6B6 00272000
ST R2,BALR2 STORE SIZE OF DATA IN SAVE AREA @V60A6B6 00273000
LM R0,R7,BALRSAVE RESTORE WORK REGISTERS @V60A6B6 00274000
BR R14 AND RETURN TO CALLER @V60A6B6 00275000
SPACE 2 00276000
TABHIGH IC R7,0(,R5) GET ADDRESS OF WHERE TO TAB @V60A6B6 00277000
L R5,4(,R2) RESTORE POINTER TO PF DATA @V60A6B6 00278000
LA R5,4(,R5) POINT TO TAB DATA AGAIN @V60A6B6 00279000
LA R4,ADDRDATA ADDRESS THE INPUT DATA @V60A6B6 00280000
SLR R3,R3 INITIALIZE COUNT REGISTER @V60A6B6 00281000
IC R6,VMGRFTAB GET USER'S LOGICAL TAB CHAR. @V60A6B6 00282000
EJECT 00283000
TABLOOP CLI 0(R4),X00 HAVE WE HIT END OF DATA ? @V60A6B6 00284000
BE TABCHAR YES, THIS IS WHERE TO PUT TAB @V60A6B6 00285000
CLM R6,B'0001',0(R4) IS CHARACTER A LOGICAL TAB? @V60A6B6 00286000
BE TABUPDT YES, MUST UPDATE TAB REGISTER @V60A6B6 00287000
LA R3,1(,R3) BUMP BUFFER COUNT BY ONE @V60A6B6 00288000
TABNEXT CLM R3,B'0001',0(R5) IS THIS A TAB POSITION ? @V60A6B6 00289000
BL TABDATA IF NOT, THEN KEEP CHECKING @V60A6B6 00290000
LA R5,1(,R5) POINT TO NEXT TAB LOCATION @V60A6B6 00291000
TABDATA LA R4,1(,R4) ADDRESS NEXT CHARACTER IN BUFFER @V60A6B6 00292000
CR R3,R7 UP TO WHERE THE NEXT TAB IS ? @V60A6B6 00293000
BL TABLOOP NO, CONTINUE LOOKING AT INPUT @V60A6B6 00294000
B TABONE YES, NO NEED FOR A LOGICAL TAB @V60A6B6 00295000
TABUPDT IC R3,0(,R5) BUMP BUFFER COUNT BY TAB VALUE @V60A6B6 00296000
LA R5,1(,R5) POSITION TAB REGISTER TO NEXT @V60A6B6 00297000
B TABDATA AND KEEP CHECKING INPUT DATA @V60A6B6 00298000
SPACE 00299000
TABCHAR LR R5,R7 SAVE PLACE TO MOVE CURSOR @V60A6B6 00300000
LR R7,R3 GET WHERE TO PUT LOGICAL TAB @V60A6B6 00301000
STC R6,4(,R1) PUT IN LOGICAL TAB CHARACTER @V60A6B6 00302000
BAL R6,TABADDR CONVERT ADDR, PUT IN DATA STREAM @V60A6B6 00303000
LA R1,4(,R1) BUMP DATA STREAM POINTER @V60A6B6 00304000
LA R2,9 SET DATA COUNT REGISTER @V60A6B6 00305000
LR R7,R5 RESTORE ADDRESS TO MOVE CURSOR @V60A6B6 00306000
B TABTWO AND GO FINISH UP THE DATA STREAM @V60A6B6 00307000
SPACE 2 00308000
TABADDR AR R7,R0 ADD INPUT DISPLACEMENT BACK @V60A6B6 00309000
STC R7,3(,R1) STORE LOW ORDER ADDRESS BYTE @V60A6B6 00310000
NI 3(R1),X3F CLEAR TO JUST SIX BITS @V60A6B6 00311000
SRL R7,6 GET HIGH ORDER ADDRESS BYTE @V60A6B6 00312000
STC R7,2(,R1) STORE IT IN DATA STREAM @V60A6B6 00313000
TR 2(2,R1),TABTRTBL MAKE 6-BIT DATA VALID EBCDIC @V60A6B6 00314000
MVI 1(R1),SBA PUT IN SET BUFFER ADDRESS ORDER @V60A6B6 00315000
BR R6 RETURN TO MAIN ROUTINE @V60A6B6 00316000
DROP R15 @V60A6B6 00317000
SPACE 2 00318000
*. HRC108DK 00318100
* Subroutine name - HRC108DK 00318110
* HRC108DK 00318120
* DMKGRTID HRC108DK 00318130
* HRC108DK 00318140
* Function - HRC108DK 00318150
* To copy the system identification from DMKSYSID into HRC108DK 00318160
* the various 3270 status areas in the various GRTBLOKs HRC108DK 00318170
* HRC108DK 00318180
* Attributes - HRC108DK 00318190
* HRC108DK 00318200
* Serially reusable, resident, called via SVC HRC108DK 00318210
* HRC108DK 00318220
* Entry point - HRC108DK 00318230
* HRC108DK 00318240
* DMKGRTID HRC108DK 00318250
* HRC108DK 00318260
* Entry conditions - HRC108DK 00318270
* HRC108DK 00318280
* GPR12 = Address of DMKGRTID HRC108DK 00318290
* GPR13 = Address of the save area HRC108DK 00318300
* HRC108DK 00318310
* Exit conditions - HRC108DK 00318320
* HRC108DK 00318330
* None HRC108DK 00318340
* HRC108DK 00318350
* Calls to other routines - HRC108DK 00318360
* HRC108DK 00318370
* None HRC108DK 00318380
* HRC108DK 00318390
* External references - HRC108DK 00318400
* HRC108DK 00318410
* DMKGRWTB,DMKGRUTB,DMKGRVTB,DMKGRXTB GRTBLOK addresses HRC109DK 00318422
* HRC108DK 00318430
* Tables / work areas - HRC108DK 00318440
* HRC108DK 00318450
* SAVEAREA HRC108DK 00318460
* HRC108DK 00318470
* Register usage - HRC108DK 00318480
* HRC108DK 00318490
* GPR1 = Address of GRTBLOK HRC108DK 00318500
* GPR2 = Address DMKSYSID HRC108DK 00318510
* GPR3 = Return address from subroutine HRC108DK 00318520
* GPR12 = Base address HRC108DK 00318530
* GPR13 = Address of the save area HRC108DK 00318540
* HRC108DK 00318550
* Notes - HRC108DK 00318560
* HRC108DK 00318570
* None HRC108DK 00318580
* HRC108DK 00318590
* Operation - HRC108DK 00318600
* HRC108DK 00318610
* 1. Get address of DMKSYSID HRC108DK 00318620
* HRC108DK 00318630
* 2. Call subroutine GRTSYSID for each GRTBLOK to be HRC108DK 00318640
* updated with the address of the GRTBLOK in R2 HRC108DK 00318650
* to cause the SYSID to be copied into the various HRC108DK 00318660
* different status areas within that GRTBLOK. HRC108DK 00318670
* HRC108DK 00318680
* 3. Return to caller HRC108DK 00318690
*. HRC108DK 00318700
SPACE 1 HRC108DK 00318710
DMKGRTID DS 0H HRC108DK 00318720
USING DMKGRTID,R12 Establish base address HRC108DK 00318730
STM R0,R11,SAVEREGS Save registers HRC108DK 00318740
L R2,=A(DMKSYSID) Get address of SYSID HRC108DK 00318750
LA R1,DMKGRTB Get address of std GRTBLOK HRC108DK 00318760
BAL R3,GRTSYSID Copy SYSID to status areas HRC108DK 00318770
L R1,=A(DMKGRWTB) Get address of M2A GRTBLOK HRC108DK 00318780
BAL R3,GRTSYSID Copy SYSID to status areas HRC108DK 00318790
L R1,=A(DMKGRUTB) Get address of M3 GRTBLOK HRC108DK 00318800
BAL R3,GRTSYSID Copy SYSID to status areas HRC108DK 00318810
L R1,=A(DMKGRVTB) Get address of M4 GRTBLOK HRC108DK 00318820
BAL R3,GRTSYSID Copy SYSID to status areas HRC108DK 00318830
L R1,=A(DMKGRXTB) Get address of M5 GRTBLOK HRC109DK 00318834
BAL R3,GRTSYSID Copy SYSID to status areas HRC109DK 00318836
EXIT Return to caller HRC108DK 00318840
* HRC108DK 00318850
GRTSYSID DS 0H HRC108DK 00318860
MVC GRTRNST1-DMKGRTB(8,R1),0(R2) RUNNING status msg HRC108DK 00318870
MVC GRTRNST2-DMKGRTB(8,R1),0(R2) RUNNING status msg HRC108DK 00318880
MVC GRTCPRST-DMKGRTB(8,R1),0(R2) CP READ status msg HRC108DK 00318890
MVC GRTRNST3-DMKGRTB(8,R1),0(R2) RUNNING status msg HRC108DK 00318900
MVC GRTHLDST-DMKGRTB(8,R1),0(R2) HOLDING status msg HRC108DK 00318910
MVC GRTMORST-DMKGRTB(8,R1),0(R2) MORE... status msg HRC108DK 00318920
MVC GRTRNST4-DMKGRTB(8,R1),0(R2) RUNNING status msg HRC108DK 00318930
MVC GRTVMRST-DMKGRTB(8,R1),0(R2) VM READ status msg HRC108DK 00318940
BR R3 Return to caller HRC108DK 00318950
DROP R12 HRC108DK 00318960
* 0 1 2 3 4 5 6 7 8 9 A B C D E F 00319000
TABTRTBL DC X'40C1C2C3C4C5C6C7C8C94A4B4C4D4E4F' 0 @V60A6B6 00320000
DC X'50D1D2D3D4D5D6D7D8D95A5B5C5D5E5F' 1 @V60A6B6 00321000
DC X'60E1E2E3E4E5E6E7E8E96A6B6C6D6E6F' 2 @V60A6B6 00322000
DC X'F0F1F2F3F4F5F6F7F8F97A7B7C7D7E7F' 3 @V60A6B6 00323000
SPACE 00324000
X00 EQU X'00' @V60A6B6 00325000
X3F EQU X'3F' @V60A6B6 00326000
EJECT 00327000
* TABLE OF ATTENTION IDENTIFICATION CODES AND INDEX VALUES 00328000
* - REFERENCED BY DMKGRF 00329000
SPACE 00330000
DMKGRTAI DC X'7D00' ENTER @V60A6B6 00331000
DC X'6D04' CLEAR @V60A6B6 00332000
DC X'6E18' PA2 (CNCL) @V60A6B6 00333000
DC X'6C08' PA1 @V60A6B6 00334000
DC X'6B0C' PA3 @V60A6B6 00335000
DC X'E610' CARD READER @V60A6B6 00336000
DMKGRTPF DC X'F114' PF01 @V60A6B6 00337000
DC X'F214' PF02 @V60A6B6 00338000
DC X'F314' PF03 @V60A6B6 00339000
DC X'F414' PF04 @V60A6B6 00340000
DC X'F514' PF05 @V60A6B6 00341000
DMKGRTP6 DC X'F614' PF06 @V60A6B6 00342000
DC X'F714' PF07 @V60A6B6 00343000
DC X'F814' PF08 @V60A6B6 00344000
DC X'F914' PF09 @V60A6B6 00345000
DC X'7A14' PF10 @V60A6B6 00346000
DC X'7B14' PF11 @V60A6B6 00347000
DC X'7C14' PF12 @V60A6B6 00348000
DC X'C114' PF13 HRC029DK 00348070
DC X'C214' PF14 HRC029DK 00348140
DC X'C314' PF15 HRC029DK 00348210
DC X'C414' PF16 HRC029DK 00348280
DC X'C514' PF17 HRC029DK 00348350
DC X'C614' PF18 HRC029DK 00348420
DC X'C714' PF19 HRC029DK 00348490
DC X'C814' PF20 HRC029DK 00348560
DC X'C914' PF21 HRC029DK 00348630
DC X'4A14' PF22 HRC029DK 00348700
DC X'4B14' PF23 HRC029DK 00348770
DC X'4C14' PF24 HRC029DK 00348840
DC X'011C' TESTREQ @V60A6B6 00349000
DMKGRTAC DC AL2((*-DMKGRTAI)/2) TABLE ENTRY COUNT HRC029DK 00349500
SPACE 3 00350000
* TABLE OF EBCDIC FORMS OF LINE ADDRESSES 00351000
* - REFERENCED BY DMKGRF. 00352000
SPACE 00353000
DMKGRTBL DS 0H 00 - 01 - 02 - 03 - 04 - 05 - 06 - 07 @V60A6B6 00354000
DC X'4040,C150,C260,C3F0,C540,C650,C760,C8F0' +0 @V60A6B6 00355000
DC X'4A40,4B50,4C60,4DF0,4F40,5050,D160,D2F0' +8 @V60A6B6 00356000
DC X'D440,D550,D660,D7F0,D940,5A50,5B60,5CF0' +16 @V60A6B6 00357000
DC X'5E40,5F50,6060,61F0,E340,E450,E560,E6F0' +24 HRC101DK 00358070
DC X'E840,E950,6A60,6BF0,6D40,6E50,6F60,F0F0' +32 HRC101DK 00358140
DC X'F240,F350,F460' +40 HRC101DK 00358210
SPACE , HRC101DK 00358280
DMKGRTBF DS 0H 00 - 01 - 02 - 03 - 04 - 05 - 06 - 07 HRC101DK 00358350
DC X'C14F,C25F,C36F,C47F,C64F,C75F,C86F,C97F' +0 HRC101DK 00358420
DC X'4B4F,4C5F,4D6F,4E7F,504F,D15F,D26F,D37F' +8 HRC101DK 00358490
DC X'D54F,D65F,D76F,D87F,5A4F,5B5F,5C6F,5D7F' +16 HRC101DK 00358560
DC X'5F4F,605F,616F,E27F,E44F,E55F,E66F,E77F' +24 HRC101DK 00358630
DC X'E94F,6A5F,6B6F,6C7F,6E4F,6F5F,F06F,F17F' +32 HRC101DK 00358700
DC X'F34F,F45F,F56F' +40 HRC101DK 00358770
* 00358900
DMKGRTCL DS 0H 00 - 01 - 02 - 03 - 04 - 05 - 06 - 07 HRC073DK 00358905
DC X'4040,C204,C4C8,C64C,C850,4AD4,4CD8,4E5C' +0 HRC073DK 00358910
DC X'5060,D2E4,D4E8,D66C,D8F0,5AF4,5CF8,5E7C' +8 HRC073DK 00358915
DC X'6140,E3C4,E5C8,E74C,E950,6BD4,6DD8,6F5C' +16 HRC073DK 00358920
DC X'F160,F3E4,F5E8' +24 HRC073DK 00358925
* 00358930
DMKGRTCF DS 0H 00 - 01 - 02 - 03 - 04 - 05 - 06 - 07 HRC073DK 00358935
DC X'C2C3,C4C7,C64B,C84F,4AD3,4CD7,4E5B,505F' +0 HRC073DK 00358940
DC X'D2E3,D4E7,D66B,D86F,5AF3,5CF7,5E7B,607F' +8 HRC073DK 00358945
DC X'E3C3,E5C7,E74B,E94F,6BD3,6DD7,6F5B,F15F' +16 HRC073DK 00358950
DC X'F3E3,F5E7,F76B' +24 HRC073DK 00358955
EJECT 00359000
* FORMAT DATA STREAM - USED BY DMKGRF 00360000
SPACE 00361000
DMKGRTFD DC AL1(WCC56,SBA,X'40',X'40') PUT 'VM/370 ONLINE' @V60A6B6 00362000
DMKGRTFO DC CL20'VM/370 Online' AT TOP OF SCREEN HRC370DK 00363000
SPACE 2 00364000
DMKGRTDS DC F'1760,2400,3280,1440,3300' DSP INPUT OFFSETS HRC073DK 00365490
SPACE 2 00366000
* INPUT AREA COORDINATE TABLE 00367000
SPACE 00368000
DMKGRTIN DC AL1(22,23,0,0) 3277/3278 MOD 2 INPUT LINE HRC101DK 00369490
DC AL1(30,31,0,0) 3278 MOD 3 HRC101DK 00369980
DC AL1(41,42,0,0) 3278 MOD 4 HRC101DK 00370470
DC AL1(18,19,0,0) 3278 MOD 2A INPUT LINE ADDRS. @V60A6B6 00371000
DC AL1(25,26,0,0) 3278 MOD 5 HRC073DK 00371100
SPACE 2 00372000
LTORG @V60A6B6 00373000
EJECT 00374000
DMKGRTB GRTBLOK BLD,SCRSIZE=1920 00375000
* EQUATES FOR REMOTE 3270 DATA STREAMS 00376000
SPACE 00377000
DMKGRTCS EQU GRTCLRDS @V60A6B6 00378000
DMKGRTCN EQU GRTCNCDS PA2 CLEAR HRC101DK 00378500
DMKGRTRD EQU GRTCPRDS @V60A6B6 00379000
DMKGRTCI EQU GRTCRDDS @V60A6B6 00380000
DMKGRTHL EQU GRTHLDDS @V60A6B6 00381000
DMKGRTMR EQU GRTMORDS @V60A6B6 00382000
DMKGRTNA EQU GRTNACDS @V60A6B6 00383000
DMKGRTRU EQU GRTRUNDS @V60A6B6 00384000
DMKGRTWI EQU GRTWINDS @V60A6B6 00385000
DMKGRTWT EQU GRTWRTDS @V60A6B6 00386000
EJECT 00387000
COPY CONBUF @V60A6B6 00388000
ADDRCURS EQU BUFFER+1 @V60A6B6 00389000
ADDRDATA EQU BUFFER+6 @V60A6B6 00390000
SPACE 2 00391000
COPY EQU @V60A6B6 00392000
COPY SAVE @V60A6B6 00393000
COPY VMBLOK @V60A6B6 00394000
COPY RBLOKS @V60A6B6 00395000
PSA 00396000
END DMKGRT @V60A6B6 00397000