ibm:vm370-lib:cp:dmkrgf.assemble_src
Table of Contents
DMKRGF Source
References
- Fixes Applied : 2
- This Source Date : Friday, August 7, 1981
- Last Fix ID : [R13277DK]
Source Listing
- DMKRGF.ASSEMBLE.txt
- RGF TITLE 'DMKRGF (CP) VM/370 - RELEASE 6' @VA13123 00010000
- ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00020000
- COPY OPTIONS @V305731 00030000
- COPY LOCAL @V305731 00040000
- *********************************************************************** 00050000
- * 00060000
- * MODULE NAME - DMKRGF 00070000
- * 00080000
- * DESCRIPTIVE NAME - 00090000
- * 00100000
- * STATUS - RELEASE 6 00110000
- * 00120000
- * FUNCTION - PROCESS THE INPUT BUFFER IN THE TRQBLOK AND RETURN TO THE 00130000
- * APPROPRIATE SUBROUTINE IN DMKRGA 00140000
- * 00150000
- * NOTES - SEE BELOW 00160000
- * 00170000
- * THIS MODULE IS CREATED AS AN EXTENSION OF MODULE DMKRGA. THE 00180000
- * REGISTER USAGE MUST BE THE SAME AS REGISTER USAGE IN DMKRGA. 00190000
- * 00200000
- * REGISTER CONVENTIONS - SYMBOLIC REFERENCES TO REGISTERS ARE OF 00210000
- * OF THE FORM "RX" WHERE X IS A NUMBER 00220000
- * RANGING FROM 0 TO 15 (SEE EQU COPY) 00230000
- * 00240000
- * PATCH LABEL - NONE 00250000
- * 00260000
- * MODULE TYPE - PROCEDURE 00270000
- * 00280000
- * PROCESSOR - ASSEMBLER F 00290000
- * 00300000
- * ATTRIBUTES - RE-ENTERABLE, RESIDENT, CALLED VIA BAL 00310000
- * 00320000
- * ENTRY POINT - 00330000
- * DMKRGFEN - MAIN ENTRY POINT FROM DMKRGA 00340000
- * 00350000
- * PURPOSE - SEE SAME ENTRY POINT PROLOG IN DESCRIPTIVE COMMENTS 00360000
- * PRECEEDING THE RESPECTIVE ENTRY POINT 00370000
- * 00380000
- * LINKAGE - SEE SAME ENTRY POINT PROLOG IN DESCRIPTIVE COMMENTS 00390000
- * PRECEEDING THE RESPECTIVE ENTRY POINT 00400000
- * 00410000
- * INPUT - SEE SAME ENTRY POINT PROLOG IN DESCRIPTIVE COMMENTS 00420000
- * PRECEEDING THE RESPECTIVE ENTRY POINT 00430000
- * 00440000
- * OUTPUT - SEE SAME ENTRY POINT PROLOG IN DESCRIPTIVE COMMENTS 00450000
- * PRECEEDING THE RESPECTIVE ENTRY POINT 00460000
- * 00470000
- * EXIT NORMAL - SEE SAME ENTRY POINT PROLOG IN DESCRIPTIVE COMMENTS 00480000
- * PRECEEDING THE RESPECTIVE ENTRY POINT 00490000
- * 00500000
- * EXIT ERROR - SEE SAME ENTRY POINT PROLOG IN DESCRIPTIVE COMMENTS 00510000
- * PRECEEDING THE RESPECTIVE ENTRY POINT 00520000
- * 00530000
- * EXTERNAL REFERENCES - SEE BELOW 00540000
- * 00550000
- * ROUTINES - 00560000
- * DMKCNSED - TO EDIT THE INPUT DATA 00570000
- * DMKRGAFR - RETURN POINT IN DMKRGA 00580000
- * DMKRGA - BASE ADDRESS FOR RESTORING REGISTERS 00590000
- * 00600000
- * 00610000
- * 00620000
- * DATA AREAS - 00630000
- * NONE 00640000
- * 00650000
- * ENTRY DEFINITIONS - 00660000
- * NONE 00670000
- * 00680000
- * CONTROL BLOCKS - 00690000
- * 00700000
- * TRQBLOK - TIMER REQUEST BLOCK 00710000
- * BSCBLOK - BSC LINE WORK AREA 00720000
- * RDEVBLOK - REAL DEVICE BLOCK 00730000
- * NICBLOK - NETWORK CONTROL BLOCK 00740000
- * VMBLOK - VIRTUAL MACHINE BLOCK 00750000
- * CONTASK - CONSOLE I/O PACKAGE 00760000
- * IOBLOK - I/O TASK CONTROL BLOCK 00770000
- * 00780000
- * TABLES - 00790000
- * 00800000
- * DMKTBLTI - 3270 TEXT COMPOUND CHARACTER TRANSLATE TABLE 00810000
- * DMKTBLZI - 3270 APL COMPOUND CHARACTER TRANSLATE TABLE 00820000
- * 00830000
- * MACROS - 00840000
- * ABEND - GENERATE ABEND INTERFACE 00850000
- * CALL - GENERATE CALL LINKAGE 00860000
- * CHARGE - GENERATE CHARGE SWITCH CODE 00870000
- * SWTCHVM - GENERATE VMBLOK SWITCH CODE 00880000
- * PSA - GENERATE PREFIX STORAGE AREA DSECT 00890000
- * 00900000
- * CHANGE ACTIVITY - REFER TO THE UPDATE-LOG AS PRODUCED BY THE CMS 00910000
- * UPDATE COMMAND PRECEEDING THIS LISTING 00920000
- * 00930000
- * ABEND CONDITIONS - 00940000
- * RGF003 - INVALID ENTRY OFFSET PASSED BY DMKRGA 00950000
- * 00960000
- * ERROR MESSAGES -NONE 00970000
- * 00980000
- * RESPONSES - NONE 00990000
- * 01000000
- * GENERAL COMMENTS - THE PROCESSING ROUTINES ARE ENTERED VIA A BRANCH 01010000
- * TABLE INDEX THAT IS SET UP BY THE CALLING MODULE 01020000
- * DMKRGA. THE FUNCTIONS RETURN TO THE CALLER AT THE 01030000
- * LABEL DMKRGAFR AFTER SETTING A BRANCH TABLE INDEX 01040000
- * INTO GPR 14 01050000
- * 01060000
- *********************************************************************** 01070000
- SPACE 2 01080000
- DMKRGF START , @VA13123 01090000
- SPACE 1 01100000
- USING PSA,R0 @V305731 01110000
- USING TRQBLOK,R4 @V305731 01120000
- USING CONTASK,R6 @V305731 01130000
- USING BSCBLOK,R5 @V305731 01140000
- USING RDEVBLOK,R8 @V305731 01150000
- USING IOBLOK,R10 @V305731 01160000
- USING VMBLOK,R11 @V305731 01170000
- USING NICBLOK,R9 @V305731 01180000
- SPACE 1 01190000
- EXTRN DMKCNSED @VA13123 01200000
- EXTRN DMKTBMTI,DMKTBMZI @V387398 01210000
- EXTRN DMKRGA,DMKRGACR @VA13123 01220000
- SPACE 1 01230000
- ENTRY DMKRGFEN @VA13123 01240000
- EJECT 01250000
- *********************************************************************** 01260000
- * 01270000
- * ENTRY POINT NAME - DMKRGFEN 01280000
- * 01290000
- * DESCRIPTIVE NAME - 01300000
- * 01310000
- * FUNCTION - MAIN ENTRY POINT FROM DMKRGA 01320000
- * 01330000
- * NOTES - SEE BELOW 01340000
- * 01350000
- * REGISTER USAGE - 01360000
- * GPR0 - LENGTH OF FIELD 01370000
- * GPR1 - ADDRESS OF FIELDS 01380000
- * GPR0 - GPR3 WORK REGISTERS FOR BUFFERS AND DSECTS 01390000
- * GPR4 - ADDRESS OF TRQBLOK 01400000
- * GPR5 - ADDRESS OF BSCBLOK FOR THE LINE 01410000
- * GPR6 - ADDRESS OF CONTASK 01420000
- * GPR7 - BAL AND WORK REGISTER 01430000
- * GPR8 - ADDRESS OF RDEVBLOK 01440000
- * GPR9 - ADDRESS OF NICBLOK FOR THE TERMINAL 01450000
- * GPR10 - IOBLOK 01460000
- * GPR11 - VMBLOK OF CALLER 01470000
- * GPR12 - BASE OF MODULE 01480000
- * GPR13 - NOT USED 01490000
- * GPR14 R15 - LINKAGE REGISTERS 01500000
- * 01510000
- * PURPOSE - SEE FUNCTION 01520000
- * 01530000
- * LINKAGE - SVC 01540000
- * 01550000
- * INPUT - 01560000
- * GPR1 - ENDING ADDRESS OF INPUT DATA 01570000
- * GPR4 - BEGINNING CHARACTER IN TEXT 01580000
- * GPR5 - ADDRESS OF BSCBLOK FOR THE LINE 01590000
- * GPR8 - ADDRESS OF RDEVBLOK 01600000
- * GPR9 - ADDRESS OF NICBLOK FOR THE TERMINAL 01610000
- * GPR10 - IOBLOK 01620000
- * GPR11 - VMBLOK OF CALLER 01630000
- * GPR12 - BASE OF MODULE 01640000
- * GPR13 - NOT USED 01650000
- * GPR14 - VECTOR TABLE OFFSET 01660000
- * 01670000
- * OUTPUT - SEE EXIT NORMAL, EXIT ERROR 01680000
- * 01690000
- * EXIT NORMAL - 01700000
- * GPR14 CONTAINS VECTOR TABLE OFFSET FOR DMKRGA 01710000
- * SEE EQUATES STARTING AT LABEL RTRGAEDN FOR VALUES 01720000
- * 01730000
- * EXIT ERROR - NONE 01740000
- * 01750000
- USING DMKRGF,R12 @VA13123 01760000
- DMKRGFEN DS 0D @VA13123 01770000
- USING *,R12 SET ENTRY ADDRESSABILITY @VA13123 01780000
- L R12,RGFBASE SET UP ADDRESSABILITY @VA13123 01790000
- USING DMKRGF,R12 @VA13123 01800000
- CLM R14,B'1111',NDXRGFMX VALID INDEX? @VA13123 01810000
- BH RGF1 NO - GO ABEND @VA13123 01820000
- LTR R14,R14 VALID INDEX? @VA13123 01830000
- BNM SUBROUT(R14) YES - GO TO APPROPRIATE ROUTIN @VA13123 01840000
- ABEND 1 NO - GO ABEND @VA13123 01850000
- SUBROUT DS 0H @VA13123 01860000
- B FOUND @VA13123 01870000
- B SECOND @VA13123 01880000
- B CHECKEY @VA13123 01890000
- B DATACNT @VA13123 01900000
- NDXRGFMX DC A(*-SUBROUT) BRANCH TABLE LENGTH @VA13123 01910000
- EJECT 01920000
- *. 01930000
- * SUBROUTINE NAME - 01940000
- * FOUND 01950000
- * 01960000
- * FUNCTION = 01970000
- * IF 'NOT ACCEPTED' OR 'CONTROL' MODE, RETURN TO DMKRGA TO SEND 01980000
- * AN RVI RESPONSE 01990000
- * 02000000
- * IF A LOGON, RETURN TO DMKRGA TO START THE LOGON PROCESS 02010000
- * 02020000
- * OBTAIN A READ BUFFER, AND INITIALIZE THE REGISTERS FOR THE 02030000
- * TRANSLATE AND COPY PROCESS. 02040000
- * 02050000
- * CONTINUE TO SUBROUTINE 'SECOND' 02060000
- * 02070000
- SPACE 2 02080000
- FOUND DS 0H PUT INPUT DATA INTO READ BUFFER @VA13123 02090000
- NI IOBMISC2,X'FF'-IBBSPOLL TURN SPOLL FLAG OFF @VA08730 02100000
- LR R2,R1 GET ENDING ADDRESS OF DATA @V305731 02110000
- L R6,NICQPNT GET CONTASK POINTER @V305731 02120000
- TM BSCFLAG,BSCCOPY IS THIS A COPY FUNCTION ? @V305731 02130000
- BO BYPDPLY YES, BYPASS DISPLAY CHECKS @V305731 02140000
- TM NICSTAT,NICCPNA+NICNTRL NOT ACCEPTED OR CONTROL @V305731 02150000
- BNZ RVIRESP YES, SEND RVI RESPONSE - IGNORE @V305731 02160000
- L R1,ASYSVM GET SYSTEM VMBLOK POINTER @V305731 02170000
- CL R1,NICUSER IS THIS USER LOGON ? @V305731 02180000
- BE LOGUSER NO, GO LOGON USER @V305731 02190000
- OI NICSTAT,NICNTRL CRT IS IN CONTROL MODE @V305731 02200000
- BYPDPLY DS 0H ANALYZE DATA IN READ BUFFER @VA13123 02210000
- CLI 0(R2),ETB IS ENDING CHARACTER ETB @VM03043 02220000
- BNE BYPETB NO, BYPASS SETTING ETB INDICATOR @VM03133 02230000
- OI BSCFLAG1,BSCETB SET ETB INDICATOR @VM03043 02240000
- BYPETB DS 0H GET STORAGE FOR READ BUFFER @VA13123 02250000
- LA R0,BUFSIZE GET READ BUFFER SIZE @V305731 02260000
- CALL DMKFREE GET STORAGE FOR BUFFER @V305731 02270000
- ST R1,BSCRPTR SAVE READ BUFFER POINTER @VA08730 02280000
- XC 0(BUFINLTH+6,R1),0(R1) CLEAR READ BUFFER AREA @V305731 02290000
- LA R3,BSCREAD+1 GET POINTER TO STX CONTROL CHAR. @V305731 02300000
- CLI BSCREAD,X'05' IS THIS THE INDEX BYTE @V305731 02310000
- BE BYPADDR YES, BYPASS GETTING NEW ADDRESS @VM03133 02320000
- S R3,F1 GET POINTER TO STX CONTROL CHAR @V305731 02330000
- BYPADDR DS 0H GET SIZE OF INPUT DATA @VA13123 02340000
- SLR R2,R3 GET NUMBER OF INPUT BYTES @V305731 02350000
- USING BUFFER,R3 ADDRESSABILITY FOR READ BUFFER @V305731 02360000
- LA R3,HDRNSW LENGTH OF NON SW. HEADER @V346931 02370000
- TM RDEVFTR,FTRDIAL IS DIAL UP FEATURE INDICATED?@V346931 02380000
- BNO BYSWHD NO, BYPASS SWITCHED HEADER @V346931 02390000
- LA R3,HDRSW LENGTH OF SW. HEADER @V346931 02400000
- BYSWHD DS 0H POINT PAST HEADER TO DATA @VA13123 02410000
- SR R2,R3 SUBTRACT LENGTH OF HEADER @V346931 02420000
- AR R3,R4 POINT PAST HEADER @V346931 02430000
- LTR R2,R2 IS BYTE COUNT ZERO ? @V305731 02440000
- BNP CHECKEY YES, BYPASS MOVING DATA INTO BUF @V305731 02450000
- SR R7,R7 CLEAR REGISTER @VM03043 02460000
- STH R7,BSCINDEX CLEAR BUFFER INDEX VALUE @VM03094 02470000
- EJECT , 02480000
- *. 02490000
- * SUBROUTINE NAME - 02500000
- * SECOND 02510000
- * 02520000
- * FUNCTION = 02530000
- * 02540000
- * TO MOVE THE DATA INTO THE READ BUFFER AFTER SELECTING 02550000
- * THE CORRECT TRANSLATE TABLE 02560000
- * 02570000
- * CONTINUE TO THE SUBROUTINE 'CHECKEY' 02580000
- * 02590000
- SPACE 2 02600000
- SECOND DS 0H FIND COMPOUND CHARACTERS @VA13123 02610000
- LR R4,R3 SAVE ADDRESS OF DATA AREA @VM03094 02620000
- LR R0,R2 SAVE BYTE COUNT FOR FAKESUB @V387398 02630000
- L R7,=A(DMKTBMZI) TRANSLATE COMPOUND CHARACTERS @VA09031 02640000
- TM NICTMCD,NICTEXT 3270 TEXT CHARACTER SET? @V387398 02650000
- BZ RDTRANS NO -> TRANSLATE TABLE ALL SET @V387398 02660000
- L R7,=A(DMKTBMTI) TRANSLATE TEXT COMPOUND CHAR. @VA09031 02670000
- RDTRANS DS 0H @VA13123 02680000
- LR R2,R3 START OF DATA AREA @V387398 02690000
- BAL R14,FAKESUB REMOVE THE FAKE ATTRIBUTE CHAR. @VM03094 02700000
- SR R2,R4 GET LENGTH OF DATA AREA @V387398 02710000
- LR R1,R2 SAVE LENGTH OF DATA AREA @V387398 02720000
- AH R2,BSCINDEX GET TOTAL DATA COUNT @V387398 02730000
- LA R0,BUFINLTH+6 GET MAX. LENGTH OF BUFFER @VM03043 02740000
- CR R2,R0 LENGTH GREATER THAN BUFFER SIZE @VM03043 02750000
- BL APLBYP YES, BYPASS CHANGING LENGTH @VM03043 02760000
- OI BSCFLAG1,BSCIGN SET BUFFER INGORE FLAG @VM03043 02770000
- SH R0,BSCINDEX GET THE DIFFERENCE IN LENGTH @V387398 02780000
- BNP CHECKEY IF LENGTH IS EQUAL OR GREATER @VM03043 02790000
- LR R1,R0 SAVE LENGTH DIFFERENCE @VM03043 02800000
- APLBYP DS 0H @VA13123 02810000
- LTR R1,R1 IS IT ZERO ? @VA07327 02820000
- BZ CHECKEY YES, GO TO CHECKEY @VA07327 02830000
- L R3,BSCRPTR GET POINTER TO BUFFER @VA08730 02840000
- AH R3,BSCINDEX GET ADDRESS TO AVAILABLE SPACE @VM03094 02850000
- STH R2,BSCINDEX SAVE TOTAL LENGTH OF DATA @VM03094 02860000
- BCTR R1,R0 SUBSTRACT ONE - EX INSTR. @VM03043 02870000
- EX R1,MVCRT MOVE DATA TO BUFFER AREA @VM03043 02880000
- EJECT , 02890000
- *. 02900000
- * SUBROUTINE NAME - 02910000
- * CHECKEY 02920000
- * 02930000
- * FUNCTION = 02940000
- * 02950000
- * TO DETERMINE WHICH KEY WAS USED TO CAUSE THE INTERRUPT, AND 02960000
- * TO GO TO THE APPROPRIATE PROCESSOR FOR THAT KEY 02970000
- * 02980000
- SPACE 2 02990000
- CHECKEY DS 0H DETERMINE WHAT KEY WAS DEPRESSED @VA13123 03000000
- TM BSCFLAG1,BSCETB IS ENDING CHARACTER AN ETB @VM03043 03010000
- BO HANDETB YES, GET REMAINING DATA @VM03043 03020000
- NI BSCFLAG1,X'FF'-BSCIGN CLEAR IGNORE DATA FLAG @VM03043 03030000
- LA R1,KEYTBL GET KEY TABLE ADDRESS @VM03043 03040000
- L R3,BSCRPTR GET BUFFER ADDRESS @VA08730 03050000
- NI NICFLAG,X'FF'-NICCARD RESET CARD INPUT INDICATOR@V305731 03060000
- LA R0,KEYLENG COUNT FOR TABLE SEARCH @V305731 03070000
- KEYCLC DS 0H FIND CONTROL KEY @VA13123 03080000
- CLC BUFFER,0(R1) THIS KEY MATCH ? @V305731 03090000
- BE KEYPROC GO TO APPROPRIATE KEY SECTION @V305731 03100000
- LA R1,2(R1) INDEX TO NEXT KEY ENTRY @V305731 03110000
- BCT R0,KEYCLC LOOP THROUGH TABLE @V305731 03120000
- BAL R3,NOTKEY RELEASE READ BUFFER @VA13123 03130000
- SPACE 1 @VA13123 03140000
- KEYPROC DS 0H GO TO APPROPRIATE KEY SECTION @VA13123 03150000
- SR R2,R2 CLEAR REGISTER 2 @V305731 03160000
- IC R2,1(R1) GET INDEX VALUE TO ADDRESS @V305731 03170000
- L R2,KEYTBLP(R2) GET AFFECTED KEY ADDRESS @V305731 03180000
- BR R2 GO TO AFFECTED KEY SECTION @V305731 03190000
- SPACE 1 03200000
- CRDREAD DS 0H CARD READER INDICATED @VA13123 03210000
- OI NICFLAG,NICCARD DATA FROM CARD READER @V305731 03220000
- DATA77 DS 0H DATA FROM PRESSING ENTER KEY @VA13123 03230000
- CLI BUFFER+6,X'00' ANY DATA ENTERED @V305731 03240000
- BNE SETBUF YES, GET DATA ADDRESS @V305731 03250000
- CLC BUFFER+1(2),TABTBL CURSOR BACK ONE ? @VAI0054 03260000
- BNE SETBUF NO, GET DATA ADDRESS @V305731 03270000
- TM NICSTAT,NICREAD WAS DATA ENTER IN READ STATE @V305731 03280000
- BZ SETBUF NO, GET DATA ADDRESS @V305731 03290000
- LA R2,4 SINGLE ATTN RETURN WITH NULL DATA@V305731 03300000
- SR R3,R3 NO DATA @V305731 03310000
- B RDRTN RETURN DATA @V305731 03320000
- SETBUF DS 0H REMOVE CURSOR ADDRESS @VA13123 03330000
- LA R3,BUFFER+6 GET DATA ADDRESS @V305731 03340000
- LR R4,R3 SAVE STARTING ADDRESS @V305731 03350000
- LA R1,BUFINLTH MAXIMUN BUFFER INPUT ALLOW @V305731 03360000
- ZEROCHAR DS 0H FIND END OF DATA IN BUFFER @VA13123 03370000
- CLI 0(R3),X'00' IS THIS THE ENDING CHARACTER @V305731 03380000
- BE ZEROFND YES, MOVE DATA TO START OF BUF @V305731 03390000
- CLI 0(R3),X'6A' IS THIS A TAB CHARACTER @V305731 03400000
- BNE BYPREPL NO, BYPASS PUTTING IN REPLACEMENT@VM03133 03410000
- MVI 0(R3),X'05' PUT REPLACEMENT IN FOR REAL TAB @V305731 03420000
- BYPREPL DS 0H CHECK FOR START BUFFER CHARACTE @VA13123 03430000
- CLI 0(R3),X'11' SBA FROM CARD READER @V305731 03440000
- BNE NXTBUF NO, GET NEXT LOCATION IN BUFFER @V305731 03450000
- EX R1,SHFTBUF SHIFT OUT THE BUFFER ADDRESS @V305731 03460000
- S R1,F3 UPDATE COUNT BECAUSE OF SBA CHAR @VM03040 03470000
- BNP ZEROFND IF ZERO, GET OUT @VM03040 03480000
- B ZEROCHAR CHECK THIS POSITION AGAIN @V305731 03490000
- NXTBUF DS 0H GET NEXT BUFFER POSITION @VA13123 03500000
- LA R3,1(R3) UPDATE BUFFER POINTER BY ONE @V305731 03510000
- BCT R1,ZEROCHAR GO CHECK FOR ENDING CHARACTER @V305731 03520000
- ZEROFND DS 0H @VA13123 03530000
- SLR R3,R4 GET BYTE COUNT @V305731 03540000
- L R1,BSCRPTR GET ADDRESS OF READ BUFFER @VA08730 03550000
- EX R3,MOVEDATA SHIFT DATA IN BUFFER @V305731 03560000
- LR R4,R1 GET ADDRESS OF READ BUFFER @V305731 03570000
- SPACE 1 03580000
- EJECT , 03590000
- *. 03600000
- * SUBROUTINE NAME - 03610000
- * DATACNT 03620000
- * 03630000
- * FUNCTION = 03640000
- * 03650000
- *TO DETERMINE THE ACTION TO BE TAKEN FOR THE DATA IN THE 03660000
- *BUFFER, AND CAUSE GO TH THE ROUTINE TO DO THE PROCESSING 03670000
- * 03680000
- SPACE 2 03690000
- DATACNT DS 0H SET UP COUNT IN BUFFER @VA13123 03700000
- ST R3,BUFCNT-BUFFER(R4) SET COUNT IN BUFFER AREA @V305731 03710000
- TM NICSTAT,NICREAD IS READ STATE INDICATED ? @V305731 03720000
- BO RDATA YES, GO EDIT & TRANSLATE DATA @V305731 03730000
- TM NICFLAG,NICCARD IS DATA FROM CARD READER @V305731 03740000
- BO EDNULL YES, DON'T ACCEPT IT @V305731 03750000
- LTR R3,R3 ANY DATA ENTERED ? @V305731 03760000
- BNP NULLDATA NO, RETURN READ BUFFER STORAGE @V305731 03770000
- BAL R7,CTLTASKB GET STORAGE FOR CONTASK @V305731 03780000
- L R1,CONPNT GET NEXT CONTASK POINTER @V305731 03790000
- L R6,NICQPNT GET POINTER TO CURRENT CONTASK @V305731 03800000
- ST R1,NICQPNT SAVE POINTER TO NEXT CONTASK @V305731 03810000
- MVI CONPARM,EDIT+UCASE SET PARM FOR EDIT @V305731 03820000
- ST R4,CONADDR DATA ADDRESS FOR EDIT @V305731 03830000
- STH R3,CONCNT DATA COUNT FOR EDIT @V305731 03840000
- MC MNCOERD,MNCLRESP RESPONSE CLASS, END READ @VA08417 03850000
- L R1,NICUSER GET USER VMBLOK POINTER @V305731 03860000
- TM VMRSTAT-VMBLOK(R1),VMLOGON+VMCFWAIT LOGON-SLEEP @V305731 03870000
- BNZ EDATA YES, GO EDIT INPUT DATA @V305731 03880000
- TM VMMLEVEL-VMBLOK(R1),VMMCPENV CP ENVIRONMENT @V305731 03890000
- BZ VIRTBUFF NO, VIRTUAL BUFFER IS AVAILABLE @V305731 03900000
- SPACE 1 03910000
- EDATA DS 0H EDIT INPUT DATA FROM DISPLAY @VA13123 03920000
- TM NICTMCD,NICAPL+NICTEXT TRANS INDICATED? @V387398 03930000
- BNZ BYPEDIT YES, BYPASS EDIT FUNCTION @V387398 03940000
- BAL R7,ROUTCNS GO EDIT DATA & RELEASE CONTASK @V305731 03950000
- BYPEDIT DS 0H RELEASE STORAGE FOR CONTASK @VA13123 03960000
- BAL R7,FRETCON RELEASE CONTASK ... @V305731 03970000
- LTR R3,R3 DID EDIT RESULT IN ZERO LENGTH @V305731 03980000
- BP TESTCF NO, TEST FOR CONSOLE FUNCTION @V305731 03990000
- BAL R3,EDNULL GO TO CLEAR SCREEN IMPUT AREA @VA13123 04000000
- SPACE 1 04010000
- NULLDATA DS 0H RE-DISPLAY SCREEN STATE @VA13123 04020000
- BAL R3,FRETRD RELEASE READ BUFFER @V305731 04030000
- L R3,NICUSER GET USER VMBLOK POINTER @V305731 04040000
- TM VMRSTAT-VMBLOK(R3),VMLOGON LOGGING ON NOW ? @V305731 04050000
- BO CFMBK YES, PUT IN CONSOLE FUNCTION MODE@V305731 04060000
- TM NICSTAT,NICRUNN IS SCREEN IN RUNNING STATE @V305731 04070000
- BO POSTINT YES, POST AN ATTN INTERRUPT @V305731 04080000
- TM NICSTAT,NICMORE IS SCREEN IN MORE STATE @V305731 04090000
- BZ CRTMOR NO, HOLDING GOING TO MORE STATE @V305731 04100000
- BAL R3,SETHOLD1 SET UP CCW STRING FOR HOLD STATE @VA13123 04110000
- EJECT , @VA13123 04120000
- *.*************************************************************@VA13123 04130000
- * @VA13123 04140000
- * THE FOLLOWING SUBROUTINES ARE THE RETURN INTERFACE @VA13123 04150000
- * TO THE ROUTINE IN DMKRGA BY THE SAME NAME @VA13123 04160000
- * @VA13123 04170000
- *.*************************************************************@VA13123 04180000
- SPACE 1 @VA13123 04190000
- CRTMOR DS 0H SET CCW STRING FOR MORE STATE @VA13123 04200000
- LA R14,RTRGACMO SET BRANCH INDEX @VA13123 04210000
- B RGFEXIT GO TO EXIT INTERFACE @VA13123 04220000
- SPACE 1 04230000
- POSTINT DS 0H POST ATTENTION INTERRUPT @VA13123 04240000
- LA R14,RTRGAPAT SET BRANCH INDEX @VA13123 04250000
- B RGFEXIT GO TO EXIT INTERFACE @VA13123 04260000
- SPACE 1 @VA13123 04270000
- EDNULL DS 0H CLEAR INPUT AREA ON SCREEN @VA13123 04280000
- LA R14,RTRGAEDN SET BRANCH TABLE OFFSET @VA13123 04290000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04300000
- SPACE 1 @VA13123 04310000
- RVIRESP DS 0H SEND RVI TO REMOTE STATION @VA13123 04320000
- LA R14,RTRGARVI SET BRANCH TABLE OFFSET @VA13123 04330000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04340000
- SPACE 1 @VA13123 04350000
- LOGUSER DS 0H LOGON USER @VA13123 04360000
- LA R14,RTRGALOG SET BRANCH TABLE OFFSET @VA13123 04370000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04380000
- SPACE 1 @VA13123 04390000
- CLRKEY DS 0H GO HANDLE CLEAR KEY @VA13123 04400000
- LA R14,RTRGACLR SET BRANCH TABLE OFFSET @VA13123 04410000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04420000
- SPACE 1 @VA13123 04430000
- PA1KEY DS 0H GO HANDLE PA1 KEY @VA13123 04440000
- LA R14,RTRGAPA1 SET BRANCH TABLE OFFSET @VA13123 04450000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04460000
- SPACE 1 @VA13123 04470000
- PA3KEY DS 0H GO HANDLE PA3 KEY @VA13123 04480000
- LA R14,RTRGAPA3 SET BRANCH TABLE OFFSET @VA13123 04490000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04500000
- SPACE 1 @VA13123 04510000
- PFKEY DS 0H GO HANDLE PF KEY @VA13123 04520000
- LA R14,RTRGAPF SET BRANCH TABLE OFFSET @VA13123 04530000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04540000
- SPACE 1 @VA13123 04550000
- CNCLKEY DS 0H GO HANDLE CANCEL KEY @VA13123 04560000
- LA R14,RTRGACNL SET BRANCH TABLE OFFSET @VA13123 04570000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04580000
- SPACE 1 @VA13123 04590000
- TESTREQ DS 0H GO HANDLE TESTREQ KEY @VA13123 04600000
- LA R14,RTRGATST SET BRANCH TABLE OFFSET @VA13123 04610000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04620000
- SPACE 1 @VA13123 04630000
- SETHOLD1 DS 0H GO SET HOLD STATE @VA13123 04640000
- LA R14,RTRGAHL1 SET BRANCH TABLE OFFSET @VA13123 04650000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04660000
- SPACE 1 @VA13123 04670000
- SETCAW DS 0H GO SAVEHOLD STATE @VA13123 04680000
- LA R14,RTRGAHL1 SET BRANCH TABLE OFFSET @VA13123 04690000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04700000
- SPACE 1 @VA13123 04710000
- NOTKEY DS 0H GO FRET READ BUFFER @VA13123 04720000
- LA R14,RTRGANKY SET BRANCH TABLE OFFSET @VA13123 04730000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04740000
- SPACE 1 @VA13123 04750000
- RDRTN DS 0H GO RETURN READ DATA @VA13123 04760000
- LA R14,RTRGARRT SET BRANCH TABLE OFFSET @VA13123 04770000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04780000
- SPACE 1 @VA13123 04790000
- RDATA DS 0H GO EDIT AND TRANSLATE THE DATA @VA13123 04800000
- LA R14,RTRGARDA SET BRANCH TABLE OFFSET @VA13123 04810000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04820000
- SPACE 1 @VA13123 04830000
- CFMBK DS 0H GO PLACE USER IN CONSOLE FUNCTIO @VA13123 04840000
- LA R14,RTRGACBK SET BRANCH TABLE OFFSET @VA13123 04850000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04860000
- SPACE 1 @VA13123 04870000
- VIRTBUFF DS 0H GO PLACE USER IN CONSOLE FUNCTIO @VA13123 04880000
- LA R14,RTRGAVBF SET BRANCH TABLE OFFSET @VA13123 04890000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04900000
- SPACE 1 @VA13123 04910000
- TESTCF DS 0H GO TEST FOR CONSOLE FUNCTION @VA13123 04920000
- LA R14,RTRGATCF SET BRANCH TABLE OFFSET @VA13123 04930000
- B RGFEXIT GO TO RGA RETURN INTERFACE @VA13123 04940000
- SPACE 1 @VA13123 04950000
- RGFEXIT DS 0H @VA13123 04960000
- L R15,ARGACR LOAD RETURN ENTRY ADDRESS @VA13123 04970000
- LM R12,R13,RGABASE SET DMKRGA BASE REGISTERS @VA13123 04980000
- BR R15 RETURN TO DMKRGA @VA13123 04990000
- EJECT @VA13123 05000000
- HANDETB EQU * HANDLE BLOCK RECORD FROM STATION @VM03043 05010000
- NI BSCFLAG1,X'FF'-BSCETB CLEAR ETB INDICATOR @VM03043 05020000
- MVC BSCPCCW3(8),RSACKCCW SET UP ACK CCW @VM03043 05030000
- LA R1,BSCSEND GET POINTER TO ACK CHARACTERS @VM03043 05040000
- STCM R1,7,BSCPCCW3+1 SAVE ADDRESS IN CCW @VM03043 05050000
- MVC BSCPCCW4(8),ETBREAD GET READ CCW @VM03043 05060000
- LA R1,BSCREAD GET POINTER TO READ BUFFER @VM03043 05070000
- STCM R1,7,BSCPCCW4+1 SAVE ADDRESS OF READ BUFFER @VM03043 05080000
- MVI BSCPCCW4+5,X'0C' TP-CODE 'READ REMAINING DATA' @VM03043 05090000
- LA R1,BSCPCCW3 ADDRESS OF CCW STRING @VM03043 05100000
- BAL R7,SETCAW GO DO I/O OPERATION TO LINE @VM03043 05110000
- SPACE 2 05120000
- CTLTASKB EQU * SET UP BASIC SIZE FOR CONTASK @V305731 05130000
- LA R0,CONTSIZE SIZE OF BASIC CONTASK @V305731 05140000
- B CTLTASK1 GET STORAGE FOR CONTASK @V305731 05150000
- CTLTASK EQU * ALLOCATE AND QUEUE CONTROL TASK @V305731 05160000
- LA R0,CONTSIZE+6 ...SIZE OF CONTASKS @VA08129 05170000
- CTLTASK1 EQU * @V305731 05180000
- CALL DMKFREE GET STORAGE FOR CONTASK @V305731 05190000
- XC 0(CONTSIZE*8,R1),0(R1) CLEAR THE HEADER @V305731 05200000
- LR R6,R1 PUT CONTASK ADDRESS IN REGISTER 6@V305731 05210000
- STH R0,CONTSKSZ SAVE THE CONTASK SIZE @V305731 05220000
- L R1,NICUSER VMBLOK OF RESOURCE OWNER @V305731 05230000
- ST R1,CONUSER SAVE VMBLOK PTR IN CONTASK @V305731 05240000
- MVI CONSTAT,CONCNTL INDICATE CONTROL TASK @V305731 05250000
- L R1,NICQPNT GET CURRENT CONTASK FROM CHAIN @V305731 05260000
- ST R6,NICQPNT PUT THIS TASK FIRST ON CHAIN @V305731 05270000
- ST R1,CONPNT PUT CURRENT TASK ON CHAIN @V305731 05280000
- BR R7 RETURN @V305731 05290000
- SPACE 1 05300000
- FAKESUB EQU * REMOVE FAKE ATTRIBUTE CHARACTER @VM03094 05310000
- CLI 0(R3),ETX IS END OF TEXT INDICATED @VM03094 05320000
- BER R14 YES, RETURN TO IN LINE CODE @VM03094 05330000
- CLI 0(R3),ETB IS END OF BLOCK INDICATED @VM03094 05340000
- BER R14 YES, RETURN TO IN LINE CODE @VM03094 05350000
- CLI 0(R3),X'1D' IS FAKE ATTRIBUTE CHAR. INDICATED@VM03094 05360000
- BNE NOFAKE NO, BYPASS TRANSLATION @VM03094 05370000
- BCT R0,XLATE2 TRANSLATE THE CMPD CHAR IF ANY @VA13277 05372000
- BR R14 RETURN IF NO MORE CHARS @VA13277 05374000
- XLATE2 DS 0H @VA13277 05376000
- TR 1(1,R3),0(R7) TRANSLATE THE COMPOUND CHAR. @V387398 05380000
- LA R3,1(,R3) SKIP X'1D' CHARACTER @V387398 05390000
- B NOTEXT CONTINUE WITH NEXT CHARACTER @VA13277 05401000
- SPACE 1 @V387398 05420000
- SNGLCHAR EQU 256 OFFSET TO SINGLE CHARACTER XLATE TABLE @V387398 05430000
- SPACE 1 @V387398 05440000
- NOFAKE TM NICTMCD,NICTEXT 3270 TEXT? @V387398 05450000
- BZ NOTEXT NO, DON'T DO EXTRA TRANSLATE @V387398 05460000
- TR 0(1,R3),SNGLCHAR(R7) TRANSLATE NON-CMPD. TEXT @V387398 05470000
- NOTEXT MVC 0(1,R2),0(R3) SQUEEZE OUT X'1D' CHARS. @V387398 05480000
- LA R2,1(,R2) POINT TO NEXT CHAR. POS. @V387398 05490000
- LA R3,1(,R3) UPDATE BUFFER POINTER BY ONE @VM03094 05500000
- BCT R0,FAKESUB LOOP IF MORE CHARS. TO TRANSLATE @V387398 05510000
- BR R14 RETURN TO IN LINE CODE @VM03094 05520000
- SPACE 2 05530000
- ROUTCNS EQU * EDIT AND TRANSLATE INPUT DATA @V305731 05540000
- ST R7,TEMPR7 SAVE REGISTER 7 @V4M0193 05550000
- ST R0,TEMPR0 SAVE REG 0-DESTROYED BY RSWVMU1 @VA07580 05560000
- C R11,NICUSER IS SWITCH NEEDED? @VA13123 05563000
- BE NOSWITCH NO - GO CONTINUE @VA13123 05566000
- L R1,NICUSER LOAD ADDR NEW VMBLOK @V407511 05570000
- SWTCHVM OPT=UNLOCK SWITCH VMBLOK CHARGING @VA13123 05580000
- NOSWITCH DS 0H @VA13123 05585000
- L R7,TEMPR7 RESTORE REGISTER 7 @V4M0193 05590000
- L R0,TEMPR0 RESTORE REGISTER 0 @VA07580 05600000
- CALL DMKCNSED EDIT INPUT DATA @V305731 05610000
- CHARGE SWITCH,ASYSVM SWITCH VMBLOK CHARGING @V407511 05620000
- BR R7 RETURN @V407511 05630000
- SPACE 1 05640000
- FRETCON EQU * RELEASE CONTASK AFTER EDITING @V305731 05650000
- LR R1,R6 GET CONTASK POINTER @V305731 05660000
- LA R0,CONTSIZE GET SIZE OF CONTASK @V305731 05670000
- CALL DMKFRET RELEASE CONTASK @V305731 05680000
- ST R3,BUFCNT-BUFFER(,R4) SAVE INPUT DATA COUNT @V305731 05690000
- BR R7 RETURN TO IN LINE CODE @V305731 05700000
- SPACE 1 05710000
- FRETSTG EQU * RETURN STORAGE TO SYSTEM @V305731 05720000
- LA R1,0(,R1) CLEAR HIGH ORDER BYTE @V305731 05730000
- LTR R1,R1 IS ADDRESS ZERO ? @V305731 05740000
- BZ CLREG0 YES, CLEAR REGISTER ZERO @V305731 05750000
- CALL DMKFRET RELEASE STORAGE @V305731 05760000
- CLREG0 EQU * @V305731 05770000
- SR R0,R0 CLEAR REGISTER 0 @V305731 05780000
- BR R7 RETURN TO IN LINE CODE @V305731 05790000
- SPACE 1 05800000
- FRETRD EQU * RELEASE READ BUFFER @V305731 05810000
- LA R0,BUFSIZE GET SIZE OF READ BUFFER @V305731 05820000
- L R1,BSCRPTR GET ADDRESS OF READ BUFFER @VA08730 05830000
- BAL R7,FRETSTG RELEASE STORAGE FOR READ BUFFER @V305731 05840000
- ST R0,BSCRPTR CLEAR POINTER FIELD @VA08730 05850000
- BR R3 RETURN @V305731 05860000
- EJECT 05870000
- * THE EXECUTE INSTRUCTION USED THE FOLLOWING INSTRUCTIONS 05880000
- MOVEDATA MVC 0(*-*,R1),0(R4) MOVE DATA INTO BUFFER @V305731 05890000
- SHFTBUF MVC 0(*-*,R3),3(R3) SHIFT OUT BUFFER ADDRESS @V305731 05900000
- MVCRT MVC BUFFER(*-*),0(R4) EXECUTED MOVE PF DATA @V305731 05910000
- SPACE 1 05920000
- * STORAGE FOR DATA LINK CONTROL CHARACTERS 05930000
- RGFACK1 DC AL2(ACK1) POSITIVE ACKNOWLEDGE 1 CHARACTER @V305731 05940000
- SPACE 1 05950000
- ETBREAD DC X'02',AL3(0),AL1(SILI,X'0A'),AL2(BSCSIZE1) @VM03043 05960000
- SPACE 05970000
- RSACKCCW DC X'01',AL3(RGFACK1),AL1(SILI+CC,X'06'),AL2(2) @V305731 05980000
- SPACE 1 05990000
- SPACE 1 06000000
- SPACE 1 06010000
- * READ/WRITE OPERATION TYPES 06020000
- IBBSPOLL EQU X'10' SPECIFIC POLLING TO A STATION @V305731 06030000
- SPACE 1 06040000
- * DATA-LINK CONTROL CHARACTERS FOR 3270 REMOTE SYSTEM 06050000
- ETX EQU X'03' END OF TEXT @V305731 06060000
- ETB EQU X'26' END OF BLOCK @V305731 06070000
- ACK1 EQU X'1061' ODD ACKNOWLEDGE @V305731 06080000
- SPACE 1 06090000
- * 06100000
- EJECT , @VA13123 06110000
- * TABLE OF 3270 FUNCTION KEYS WITH INDEX TO KEYTBLP 06120000
- KEYTBL DC X'7D00' ENTER @V305731 06130000
- DC X'6D04' CLEAR @V305731 06140000
- DC X'6E18' PA2 (CNCL) @V305798 06150000
- DC X'6C08' PA1 @V305731 06160000
- DC X'6B0C' PA3 @V305731 06170000
- DC X'E610' CARD READER @V305731 06180000
- PFNDX DC X'F114' PF01 @V305731 06190000
- DC X'F214' PF02 @V305731 06200000
- DC X'F314' PF03 @V305731 06210000
- DC X'F414' PF04 @V305731 06220000
- DC X'F514' PF05 @V305731 06230000
- PF6NDX DC X'F614' PF06 @V305731 06240000
- DC X'F714' PF07 @V305731 06250000
- DC X'F814' PF08 @V305731 06260000
- DC X'F914' PF09 @V305731 06270000
- DC X'7A14' PF10 @V305731 06280000
- DC X'7B14' PF11 @V305731 06290000
- DC X'7C14' PF12 @V305731 06300000
- KEYLENG EQU (*-KEYTBL)/2 @V305731 06310000
- SPACE 06320000
- KEYTBLP DC A(DATA77) 00 @V305731 06330000
- DC A(CLRKEY) 04 @V305798 06340000
- DC A(PA1KEY) 08 @V305731 06350000
- DC A(PA3KEY) 0C @V305731 06360000
- DC A(CRDREAD) 10 @V305731 06370000
- DC A(PFKEY) 14 @V305731 06380000
- DC A(CNCLKEY) 18 @V305798 06390000
- DC A(TESTREQ) 1C @VA09168 06400000
- SPACE 06410000
- * TABLE OF TAB POSITIONS FOR 3270 PF TAB CAPABILITY 06420000
- SPACE 06430000
- TABTBL DC X'5B5F' @V305731 06440000
- SPACE 2 @VA13123 06450000
- RGFBASE DC A(DMKRGF) DMKRGF BASE VALUE @VA13123 06460000
- RGABASE DC A(DMKRGA,DMKRGA+4096) DMKRGA BASE REGISTERS @VA13123 06470000
- ARGACR DC A(DMKRGACR) DMKRGA RETURN ADDRESS @VA13123 06480000
- SPACE 2 @VA13123 06490000
- *.*************************************************************@VA13123 06500000
- * @VA13123 06510000
- * INDEX VALUES FOR RETURN TO BRANCH TABLE IN DMKRGA @VA13123 06520000
- * TABLE VECTBLGC MUST BE IN SAME SEQUENCE AS THESE @VA13123 06530000
- * OFFSETS @VA13123 06540000
- * @VA13123 06550000
- *.*************************************************************@VA13123 06560000
- SPACE 1 @VA13123 06570000
- RTRGAEDN EQU X'0' EDNULL @VA13123 06580000
- RTRGARVI EQU X'4' RVIRESP @VA13123 06590000
- RTRGALOG EQU X'8' LOGUSER @VA13123 06600000
- RTRGACLR EQU X'C' CLRKEY @VA13123 06610000
- RTRGAPA1 EQU X'10' PA1KEY @VA13123 06620000
- RTRGAPA3 EQU X'14' PA3KEY @VA13123 06630000
- RTRGAPF EQU X'18' PFKEY @VA13123 06640000
- RTRGACNL EQU X'1C' CNCLKEY @VA13123 06650000
- RTRGATST EQU X'20' TESTREQ @VA13123 06660000
- RTRGACMO EQU X'24' CRTMOR @VA13123 06670000
- RTRGAPAT EQU X'28' POSTINT @VA13123 06680000
- RTRGAHL1 EQU X'2C' SETHOLD1 @VA13123 06690000
- RTRGANKY EQU X'30' NOTKEY @VA13123 06700000
- RTRGARRT EQU X'34' RDRTN @VA13123 06710000
- RTRGARDA EQU X'38' RDATA @VA13123 06720000
- RTRGACBK EQU X'3C' CFMBK @VA13123 06730000
- RTRGAVBF EQU X'40' VIRTBUFF @VA13123 06740000
- RTRGATCF EQU X'44' TESTCF @VA13123 06750000
- SPACE 2 @VA13123 06760000
- SPACE 1 06770000
- HDRSW EQU 1 LENGTH OF SWITCHED HEADER @V346931 06780000
- HDRNSW EQU 3 LENGTH OF NON-SWITCHED HEADER @V346931 06790000
- EJECT 06800000
- LTORG @V305731 06810000
- EJECT 06820000
- COPY NETWORK @V305731 06830000
- COPY BSCBLOKS @V305731 06840000
- COPY TIMER @V305731 06850000
- COPY DEVTYPES @V305731 06860000
- COPY EQU @V305731 06870000
- COPY VBLOKS @V305731 06880000
- COPY RBLOKS @V305731 06890000
- COPY CONBUF @V305731 06900000
- COPY IOBLOKS @V305731 06910000
- COPY IOER @V305731 06920000
- COPY VMBLOK @V305731 06930000
- COPY SAVE @V305731 06940000
- PSA @V305731 06950000
- COPY XINTBLOK @V305798 06960000
- END 06970000
ibm/vm370-lib/cp/dmkrgf.assemble_src.txt ยท Last modified: 2023/08/06 13:37 by Site Administrator