TITLE 'IEECVETQ IGC5Q07B 2250 IO 2' 00050000 IEECVETQ CSECT 00100000 *A194100,194200 MH Y01566 00100403 *A086100,086200 MH Y01563 00102003 *C 271500 ME SA52709 00110018 EJECT 00150000 */*IEECVETQ: CHART */ 00200000 */* HEADER 00250000 */* CHART TA IEECVETQ IGC5Q07B DIDOCS 2250 I/ 00300000 */*O ROUTINE 2 PAGE # */ 00350000 */* E IEECVETQ */ 00400000 SPACE 2 00450000 * /* START OF SPECIFICATIONS **** 00500000 *02* PROCESSOR = ASSEMBLER ; 00550000 **** END OF SPECIFICATIONS ***/ 00600000 EJECT 00650000 * STATUS 00700000 * CHANGE LEVEL 1 00750000 * COMPLETE REVISION FOR RELEASE 21, LINE ITEM S21003. 00800000 * FUNCTION 00850000 * THIS IS A DEVICE DEPENDENT ROUTINE TO PERMORM THE REQUESTED I/O IN 00900000 * PROPER SCREEN FORMAT. 00950000 * 01000000 * ENTRY POINTS 01050000 * IEECVETQ FOR ALL FUNCTIONS 01100000 * 01150000 * OPERATION 01200000 * THE COMMUNICATION BYTES IN THE DCM ARE CHECKED AGAINST 01250000 * PRE-ESTABLISHED BIT SETTINGS TO DETERMINE WHICH TYPE/FORMAT OF 01300000 * I/O IS TO BE PERFORMED. EACH POSSIBLE REQUEST IS CHECKED AND, IF 01350000 * APPLICABLE, THE APPROPRIATE CCWS ARE BUILT UNTIL ALL OF THE 01400000 * DESIRED I/O REQUESTS ARE SET UP IN THE CHANNEL PROGRAM. THEY MAY 01450000 * BE TO: BLANK THE ENTRY AREA, BLANK THE WARNING LINE, INITIALIZE 01500000 * THE INSTRUCTION LINE, READ THE ENTRY AREA, WRITE THE 01550000 * INFORMATIONAL DISPLAY, ERASE THE SCREEN, WRITE THE ASYNCHRONOUS 01600000 * ERROR MESSAGE, WRITE THE PFK LINE OR LIGHT THE PFKS. I/O IS THEN 01650000 * INITIATED VIA AN EXCP AND CONTROL IS RETURNED TO PROCESSOR 1 01700000 * (IEECVET1). 01750000 * 01800000 * INPUT 01850000 * THE INDICATION OF THE DESIRED I/O IS RECEIVED IN I/O 01900000 * COMMUNICATION BYTES 2 AND 3 IN THE DISPLAY CONTROL MODULE. 01950000 * 02000000 * OUTPUT 02050000 * WRITING OF WHAT IS REQUESTED BY THE OTHER MODULES. 02100000 * 02150000 * EXTERNAL REFERENCES 02200000 * NONE. 02250000 * 02300000 * EXITS, NORMAL 02350000 * IEECVET1 PROCESSOR 1 WHEN WORK IS COMPLETE. 02400000 * 02450000 * EXITS, ERROR 02500000 * NONE. 02550000 * 02600000 * TABLES/WORK AREAS 02650000 * DISPLAY CONTROL MODULE (CONTAINED IN DSECT AT END OF LISTING). 02700000 * 02750000 * ATTRIBUTES 02800000 * REFRESHABLE, PRIVILEGED, TYPE 4 SVC. 02850000 * 02900000 * CHARACTER CODE DEPENDENCY 02950000 * NONE. 03000000 * 03050000 * NOTES 03100000 * THE FOLLOWING FLAG BITS ARE USED: 03150000 * THE ACTION COLUMN INDICATES WHETHER THE BIT IS TURNED ON, OFF 03200000 * OR JUST TESTED BY THIS MODULE. 03250000 * 03300000 * NAME ACTION FUNCTION 03350000 * 03400000 * DCMCOM1 03450000 * DCMIOPRD ON READ HAS BEEN PERFORMED 03500000 * DCMIOCM2 03550000 * DCMBLENT OFF/TEST BLANK ENTRY AREA 03600000 * DCMBLWRL OFF/TEST BLANK LEFT HALF WARNING LINE 03650000 * DCMBLWRR OFF/TEST BLANK RIGHT HALF WARNING LINE 03700000 * DCMINSSH OFF/TEST INITIALIZE INSTRUCTION LINE 03750000 * DCMWINFD OFF/TEST WRITE INFORMATION DISPLAY 03800000 * DCMERASE OFF/TEST ERASE SCREEN 03850000 * DCMIOCRD OFF/TEST READ ENTRY AREA 03900000 * DCMWRASY OFF/TEST WRITE ASYNCHRONOUS ERROR MESSAGE 03950000 * DCMIOCM3 04000000 * DCMWRPFK OFF/TEST ALTER PFK LINE 04050000 * DCMLTPFK OFF/TEST LIGHT ALLOCATED PFKS 04100000 * DCMACPFK OFF/TEST EXTINGUISH PFKS 04150000 * DCMSSRG OFF/TEST SUPPRESS REGENERATION 04200000 * DCMIOUNQ 04250000 * DCMINERR OFF ERROR INSTRUCTION LINE 04300000 * DCMINNOR ON NORMAL INSTRUCTION LINE 04350000 *********************************************************************** 04400000 EJECT 04450000 * REGISTER EQUATES 04500000 *********************************************************************** 04550000 X1PARM EQU 1 04560000 XFBRANCH EQU 15 04570000 XPARM EQU 1 PARAMETER REGISTER 04600000 XWORK4 EQU 1 WORK REGISTER 04650000 XMULT EQU 2 WORK REGISTER 04700000 X2 EQU 2 WORK REGISTER 04750000 XWORK1 EQU 3 WORK REGISTER 04800000 XWORK2 EQU 4 WORK REGISTER 04850000 XPOINT EQU 4 WORK REGISTER 04900000 XKEEP EQU 5 WORK REGISTER 04950000 XPFK EQU 6 UCB POINTER 05000000 XDCM2NDB EQU 7 BASE FOR 2ND HALF OF DCM 05050000 XCHPGM EQU 8 POINTER TO CHANNEL PROGRAM AREA 05100000 X8 EQU 8 WORK REGISTER 05150000 PFKPTR EQU 9 POINTER TO PFK AREA 05200000 XDCMBASE EQU 10 DCM BASE REGISTER 05250000 XBASE EQU 11 PROGRAM BASE REGISTER 05300000 XCXSA EQU 12 CXSA BASE REGISTER 05350000 XUCMENT EQU 13 UCMENTRY BASE REGISTER 05400000 XRTRN EQU 14 WORK REGISTER 05450000 XRESBASE EQU 15 RESIDENT DCM BASE 05500000 EJECT 05550000 START BALR XBASE,N0 SET UP 05600000 USING *,XBASE ADDRESSABILITY 05650000 B ICATCH BRANCH AROUND EYECATCHER 05700000 DC C' MODULE IGC5Q07B, FICHE IEECVETQ ' EYECATCHER AND 05750000 ZAPAREA DC 12C'ZAP' RESERVED FOR FIELD MODIFICATION 05800000 ICATCH LR XCXSA,XPARM SAVE CXSA BASE 05850000 USING CXSA,XCXSA DECLARE CXSA ADDRESS 05900000 L XUCMENT,CSAUCM GET UCM ENTRY ADDRESS 06000000 USING UCMLIST,XUCMENT DECLARE UCMENTRY BASE 06050000 L XRESBASE,UCMXB GET DCM POINTER 06100000 USING DCMTSRT,XRESBASE 06150000 L PFKPTR,DCMADPFK POINT TO PFK AREA 06200000 L XDCMBASE,DCMADTRN GET BASE FOR TRANSIENT DCM 06250000 USING DCMSTRT,XDCMBASE DECLARE DCM BASE 06300000 L XDCM2NDB,DCMLSCRN GET DCM ENTRY POINTER 06350000 USING DCMMLAST,XDCM2NDB DECLARE BASE 06400000 MVC DCMTRACE(DCMTRLEN),DCMTRAC2 SHIFT OLD TRACE ENTRIES 06450000 MVI DCMTREN1,ID1 PUT CSECT ID INTO 06460000 MVI DCMTREN2,ID2 NEW TRACE ENTRY 06470000 L X8,DCMDSAV POINT TO CHANNEL PROGRAM 06500000 EJECT 06550000 */*ENTBLNK: D (NO,LEFTWARN,YES,BLNKENT) ENTRY TO BLANK ENTRY AREA? */ 06600000 *********************************************************** 06650000 ENTBLNK EQU * 06700000 TM DCMIOCM2,DCMBLENT BLANK ENTRY AREA 06750000 BNO LEFTWARN NO, SEE IF BLANK LEFT HALF WARN LINE 06800000 SPACE 5 06850000 */*BLNKENT: P (,LEFTWARN) BLANK ENTRY AREA IN DCM */ 06900000 *********************************************************** 06950000 BLNKENT EQU * 07000000 NI DCMIOCM2,N255-DCMBLENT TURN OFF BIT 07050000 MVI DCMENTRY,BLANK PUT BLANK IN ENTRY AREA 07100000 MVC DCMENTRY+N1(N147),DCMENTRY PROPAGATE IT 07150000 SPACE 5 07200000 */*LEFTWARN: D (NO,RGHTWARN,YES,WARNLEFT) ENTRY TO BLANK LEFT WARNING 07250000 */*LINE? */ 07300000 *********************************************************** 07350000 LEFTWARN EQU * 07400000 TM DCMIOCM2,DCMBLWRL BLANK LEFT HALF WARNING LINE 07450000 BNO RGHTWARN NO, SEE IF TO BLANK RIGHT SIDE 07500000 SPACE 5 07550000 */*WARNLEFT: P (,RGHTWARN) BLANK LEFT HALF OF WARNING LINE IN DCM */ 07600000 *********************************************************** 07650000 WARNLEFT EQU * 07700000 NI DCMIOCM2,N255-DCMBLWRL TURN OFF BIT 07750000 MVI DCMWARN,BLANK PUT BLANK IN WARNING LINE 07800000 MVC DCMWARN+N1(N36),DCMWARN PROPAGATE IT 07850000 SPACE 5 07900000 */*RGHTWARN: D (NO,INSTINIT,YES,WARNRGHT) ENTRY TO BLANK RIGHT WARNING 07950000 */*LINE? */ 08000000 *********************************************************** 08050000 RGHTWARN EQU * 08100000 TM DCMIOCM2,DCMBLWRR BLANK RIGHT HALF WARNING LINE 08150000 BNO INSTINIT NO, GO TEST FOR NEXT FUNCTION 08200000 SPACE 5 08250000 */*WARNRGHT: P (,INSTINIT) BLANK RIGHT HALF OF WARNING LINE IN DCM */ 08300000 *********************************************************** 08350000 WARNRGHT EQU * 08400000 NI DCMIOCM2,N255-DCMBLWRR TURN OFF BIT 08450000 MVI DCMWARN+N37,NULL PUT NULL IN RIGHT SIDE WARNING LINE 08500000 MVC DCMWARN+N38(N35),DCMWARN+N37 PROPAGATE IT 08550000 MVI DCMWARN+N73,NEWLINE MOVE IN NEWLINE CHARACTER 08600000 NI DCMR2FLG,X'FF'-DCMRXUNV INDICATE 'UNVIEW MH Y01563 08610003 NI DCMCOM3,X'FF'-DCMOLUNV MSG' NOT ON SCREEN MH Y01563 08620003 SPACE 5 08650000 */*INSTINIT: D (NO,INFOWRIT,YES,INITINST) ENTRY TO INIT. 08700000 */*INST. LINE? */ 08750000 *********************************************************** 08800000 INSTINIT EQU * 08850000 TM DCMIOCM2,DCMINSSH INITIALIZE INSTRUCTION LINE 08900000 BNO INFOWRIT NO, GO TEST FOR NEXT FUNCTION 08950000 SPACE 5 09000000 */*INITINST: P (,INFOWRIT) MOVE INSTRUCTION LINE TEXT TO INSTRUCTION 09050000 */*LINE IN DCM */ 09100000 *********************************************************** 09150000 INITINST EQU * 09200000 NI DCMIOCM2,N255-DCMINSSH TURN OFF BIT 09250000 MVI DCMINSTR,BLANK BLANK INSTRUCTION LINE 09300000 MVC DCMINSTR+N1(N73),DCMINSTR PROPAGATE 09350000 MVC DCMINSTR(N35),INSLMESG MOVE IN MSG 09400000 NI DCMIOUNQ,N255-DCMINERR 09450000 OI DCMIOUNQ,DCMINNOR 09500000 SPACE 5 09550000 */*INFOWRIT: D (NO,ASYWRIT,YES,WRITINFO) ENTRY TO WRITE INFO DISPLAY? 09600000 */**/ 09650000 *********************************************************** 09700000 INFOWRIT EQU * 09750000 TM DCMIOCM2,DCMWINFD SEE IF WRITE INFO DISPLAY 09800000 BNO ASYWRIT NO, GO TEST FOR NEXT FUNCTION 09850000 EJECT 09900000 */*WRITINFO: P (,ASYWRIT) BUILD WRITE CCWS FOR UP TO THREE LINES */ 09950000 *********************************************************** 10000000 WRITINFO EQU * 10050000 SR XWORK1,XWORK1 CLEAR WORK REG 10100000 LH XWORK2,DCMCORLN GET LENGTH OF LINE 10150000 IC XWORK1,DCMLINEN MULT BY LINE NUMBER 10200000 BCTR XWORK1,N0 DECREMENT LINE NUMBER 10250000 MR XMULT,XWORK2 AND 10300000 AH XWORK1,DCMBAM1 GET ID ADDRESS 10350000 STH XWORK1,DCMBADLN HOLD IN BUFFER ADDR AREA 10400000 LA XPOINT,DCMBADLN POINT TO BUFFER ADDR AREA 10450000 BAL XRTRN,BUILDSET BUILDSET BUFFER CCW 10500000 LH XWORK1,DCMBYTCT GET LENGTH TO WRITE 10550000 LH XWORK2,DCMCORLN GET LENGTH OF LINE 10600000 LA XKEEP,DCMINSTR POINT TO INSTRUCTION LINE 10650000 CR XWORK1,XWORK2 IS LENGTH OVER ONE LINE 10700000 BNH BUILD NO, BUILD ONE CCW 10750000 * YES, BUILD TWO CCWS 10800000 TWOLINE LR XWORK1,XWORK2 GET LENGTH OF LINE 10850000 BAL XRTRN,BUILDWRT BUILD INSTRUCTION LINE CCW 10900000 LH XWORK1,DCMBYTCT GET TOTAL LENGTH TO WRITE 10950000 SR XWORK1,XWORK2 SUBTRACT LENGTH JUST WRITTEN 11000000 LA XKEEP,DCMENTRY POINT TO ENTRY AREA LINES 11050000 BUILD BAL XRTRN,BUILDWRT BUILD CCW 11100000 NI DCMIOCM2,N255-DCMWINFD TURN OFF BIT 11150000 LA XWORK2,DCMINSTR POINT TO START OF INST LINE 11200000 BAL XRTRN,LOOP2 GO TO INSERT NULLS 11250000 ENTRY1 LA XWORK2,DCMENTRY POINT TO START OF ENTRY AREA 11300000 BAL XRTRN,LOOP2 GO TO INSERT NULLS 11350000 ENTRY2 LA XRTRN,ASYWRIT POINT TO TEST OF NEXT FUNCTION 11400000 LA XWORK2,DCMENTR2 POINT TO SECOND LINE OF ENTRY 11450000 LOOP2 AH XWORK2,DCMLGNTH POINT TO LAST CHAR IN LINE + 1 11500000 BCTR XWORK2,N0 POINT TO LAST CHAR IN LINE 11550000 CLI N0(XWORK2),BLANK IS THIS A BLANK 11600000 BNE LONGLINE NO, TEXT FILLS LINE OR NEW LINE 11650000 * CHARACTER IS STILL INTACT 11700000 MVI N0(XWORK2),NEWLINE YES, INSERT NEW LINE CHARACTER 11750000 LONGLINE LA XWORK4,NULLNG SET LIMIT COUNT OF CHARS TO NULL 11800000 NEXTCHAR BCTR XWORK2,N0 POINT TO NEXT TO LAST CHAR 11850000 CLI N0(XWORK2),BLANK IS THIS CHARACTER BLANK 11900000 * NOTE IT IS ASSUMED THAT IF THE LAST CHARACTER WAS A NONBLANK 11950000 * VIEWABLE CHARACTER THE NEXT TO LAST CHARACTER IS ALSO 12000000 * A NONBLANK CHARACTER. 12050000 BNE DATAFND NO, MUST BE VIEWABLE DATA 12100000 MVI N0(XWORK2),NULL YES, REPLACE WITH NULL 12150000 BCT XWORK4,NEXTCHAR LOOP UNTIL LINE FINISHED 12200000 DATAFND BR XRTRN GO TO NEXT LINE OR FUNCTION 12250000 SPACE 5 12300000 */*ASYWRIT: D (NO,ERASEPFM,YES,WRITASY) ENTRY TO WRITE ASYN ERROR 12350000 */*MESSAGE? */ 12400000 *********************************************************** 12450000 ASYWRIT EQU * 12500000 TM DCMIOCM2,DCMWRASY SEE IF WRITE ASYN ERROR 12550000 BNO ERASEPFM NO, CHECK NEXT FUNCTION 12600000 SPACE 5 12650000 */*WRITASY: P (,STREGEN) BUILD CCWS TO REFRESH DEVICE BUFFER */ 12700000 *********************************************************** 12750000 WRITASY EQU * 12800000 LA XWORK1,DCMDSAV GET ADDRESS OF RMI READ AREA 12850000 ST XWORK1,N0(XCHPGM) PUT RMI ADDR IN CHANNEL PGM 12900000 MVI N0(XCHPGM),RMICODE PUT RMI CODE IN CHANNEL PROGRAM 12950000 MVI N7(XCHPGM),N3 PUT BYTE COUNT IN 13000000 BAL XRTRN,FINCCW FINISH CCW 13050000 LA XWORK1,ERRMSGL GET LINE NUMBER 13100000 MH XWORK1,DCMCORLN GET INDEX 13150000 AH XWORK1,DCMBAM1 GET START OF MSG AREA 13200000 STH XWORK1,DCMBADLN HOLD IN ADDR AREA 13250000 LA XPOINT,DCMBADLN POINT TO BUFFER ADDR AREA 13300000 LR XWORK4,XPOINT SAVE PTR TO BUFFER ADDR AREA 13350000 BAL XRTRN,BUILDSET STOP CCW 13400000 LA XKEEP,DCMERR POINT TO START ORDER PROGRAM 13450000 LA XWORK1,N10 PUT BYTE COUNT IN 13500000 BAL XRTRN,BUILDWRT BUILD WRITE CCW 13550000 L XKEEP,DCMAENTR POINT TO START OF MSG 13600000 LH XWORK1,DCMCORLN GET LENGTH OF LINE 13650000 SLL XWORK1,N1 DOUBLE IT 13700000 BAL XRTRN,BUILDWRT BUILD WRITE CCW 13750000 LA XKEEP,DCMWARN+N74 GET GTRU ADDR 13800000 LA XWORK1,N2 PUT BYTE COUNT IN 13850000 BAL XRTRN,BUILDWRT BUILD WRITE CCW 13900000 LA XKEEP,DCMBADLN GET START BUFFER ADDR FOR GTRU 13950000 LA XWORK1,N2 PUT BYTE COUNT IN 14000000 BAL XRTRN,BUILDWRT BUILD WRITE CCW 14050000 STH XWORK4,DCMBADLN STORE GTRU ADDR 14100000 LA XWORK1,DCMBADLN GET GTRU ADDRESS 14150000 NI DCMIOCM2,N255-DCMWRASY-DCMERASE TURN BITS OFF 14200000 B ASYREGEN GO TO START REGENERATION 14250000 EJECT 14300000 */*ERASEPFM: D (NO,STREAD,YES,PFMERASE) ENTRY TO ERASE SCREEN? */ 14350000 *********************************************************** 14400000 ERASEPFM EQU * 14450000 TM DCMIOCM2,DCMERASE SEE IF ERASE 14500000 BNO STREAD NO, CHECK NEXT FUNCTION 14550000 SPACE 5 14600000 */*PFMERASE: P (,PFKEXT) BUILD STOP REGEN CCW & SUP REGEN */ 14650000 *********************************************************** 14700000 PFMERASE EQU * 14750000 MVI N0(XCHPGM),SETBUF MOVE STOP COMMAND IN 14800000 BAL XRTRN,B2CCW GO BUILD CCW 14850000 NI DCMIOCM2,N255-DCMERASE TURN OFF ERASE BIT 14900000 OI DCMIOCM3,DCMSSRG SUPPRESS START REGEN 14950000 B PFKEXT CHECK PFKS 15000000 SPACE 5 15050000 */*STREAD: D (NO,PFKWRIT,YES,CURNREAD) ENTRY TO READ ENTRY AREA? */ 15100000 *********************************************************** 15150000 STREAD EQU * 15200000 TM DCMIOCM2,DCMIOCRD ENTRY FOR READ 15250000 BNO PFKWRIT NO, CHECK NEXT FUNCTION 15300000 SPACE 5 15350000 */*CURNREAD: P (,STREGEN) BUILD CCWS TO READ ENTRY AREA INTO DCM */ 15400000 *********************************************************** 15450000 CURNREAD EQU * 15500000 NI DCMIOCM2,N255-DCMIOCRD TURN OFF BIT 15550000 LA XPOINT,DCMBAENT GET INSERT CURSOR ADDRESS 15600000 BAL XRTRN,BUILDSET BUILD STOP REGEN CCW 15650000 BAL XRTRN,BUILDSET BUILD INSERT CCW 15700000 MVI DCMCHPGM+N8,INSERT 15750000 BAL XRTRN,BUILDSET BUILD STOP REGEN CCW 15800000 LA XWORK1,DCMENTRY POINT TO ENTRY AREA 15850000 ST XWORK1,DCMCHPGM+N24 15900000 MVI DCMCHPGM+N24,READ 15950000 MVI DCMCHPGM+N31,READLGNH 16000000 BAL XRTRN,FINCCW FINISH BUILDING CCW 16050000 OI DCMCOM1,DCMIOPRD 16100000 EJECT 16150000 */*STREGEN: P (,ENEXCP) BUILD START REGENERATION CCW */ 16200000 *********************************************************** 16250000 STREGEN EQU * 16300000 LA XWORK1,DCMBASRT GET START OF REGEN 16350000 ASYREGEN EQU * 16400000 ST XWORK1,N0(XCHPGM) PUT ADDRESS IN CCW 16450000 MVI N0(XCHPGM),STARTREG MOVE OP CODE IN 16500000 MVI N7(XCHPGM),N2 MOVE BYTE COUNT IN 16550000 BAL XRTRN,FINCCW FINISH BUILDING CCW 16600000 SPACE 5 16650000 */*ENEXCP: P (,EXCP) REMOVE CHAIN FLAG FROM LAST CCW */ 16700000 *********************************************************** 16750000 ENEXCP EQU * 16800000 SH XCHPGM,EIGHT UPDATE CCW POINTER 16850000 MVI N4(XCHPGM),STOP STOP CCW CHAIN 16900000 SPACE 5 16950000 */*EXCP: I (,EXIT) EXCP */ 17000000 *********************************************************** 17050000 EXCP EQU * 17100000 L XFBRANCH,CSAXB ADDR GETLOCK SBR JE YM8371 17150003 LR X1PARM,XCXSA COPY CSA PTR JE YM8371 17160003 BALR XRTRN,XFBRANCH OBTAIN LOCKS JE YM8371 17170003 XC UCMECB,UCMECB CLEAR ECB 17200003 OI UCMSTS,UCMBF TURN ON BUSY BIT 17210003 L XWORK1,UCMDCB GET DCB ADDRESS 17250000 L XFBRANCH,CSAXC ADDR FREELOCK SBR JE YM8371 17260003 LR X1PARM,XCXSA COPY CSA PTR JE YM8371 17270003 BALR XRTRN,XFBRANCH RELEASE LOCKS JE YM8371 17280003 L XPARM,N28(XWORK1) GET IOB ADDRESS 17300000 EXCP (XPARM) INITIATE I/O 17350000 SPACE 5 17450000 */*EXIT: R PROCESSOR 1 (IEECVET1) */ 17500000 *********************************************************** 17550000 EXIT EQU * 17600000 L XFBRANCH,DCMNPROC LOAD PROC 1 ADDRESS 17650000 L X1PARM,DCMCXSVE RESTORE CXSA ADDRESS 17700000 BR XFBRANCH EXIT TO IEECVET1 17750000 EJECT 17800000 */*PFKWRIT: D (NO,PFKEXT,YES,WRITEPFK) ENTRY TO WRITE PFK LINE? */ 17850000 *********************************************************** 17900000 PFKWRIT EQU * 17950000 TM DCMIOCM3,DCMWRPFK WRITE PFK AREA 18000000 BNO PFKEXT NO, GO SEE IF LIGHT PFKS 18050000 SPACE 5 18100000 */*WRITEPFK: D (NO,BUILDIT,YES,ERASEIT) IS PFK LINE DISPLAYED NOW? */ 18150000 *********************************************************** 18200000 WRITEPFK EQU * 18250000 * EACH TIME THIS ROUTINE IS ENTERED IT WILL CHANGE THE STATUS OF THE 18300000 * DISPLAYED PFK LINE. IF THE LINE IS DISPLAYED IT WILL BE ERASED 18350000 * IF IT IS BLANK IT WILL BE BUILT AND WRITTEN TO THE SCREEN. 18400000 SPACE 18450000 LR XPOINT,PFKPTR GET POINTER TO PFK AREA 18500000 L XWORK1,DCMPFKLN GET POINTER TO PFK LINE 18550000 CLC N0(N6,XWORK1),BLANKS IS LINE NOW BLANK MH M2070 18560000 BE BUILDIT YES, GO DISPLAY IT MH M2070 18570000 SPACE 5 18700000 */*ERASEIT: P (,WRITIT) BLANK PFK LINE IN DCM */ 18750000 *********************************************************** 18800000 ERASEIT EQU * YES, ERASE IT 18850000 MVI N0(XWORK1),BLANK BLANK FIRST POSITION 18900000 MVC N1(N72,XWORK1),N0(XWORK1) PROPAGATE NULL 18950000 MVI N73(XWORK1),NEWLINE INSERT NEW LINE CHARACTER 19000000 B WRITIT GO TO WRITE THE SCREEN 19050000 EJECT 19100000 */*BUILDIT: P (,WRITIT) BUILD PFK LINE IN DCM */ 19150000 *********************************************************** 19200000 BUILDIT EQU * 19250000 MVI N0(XWORK1),BLANK BLANK FIRST LINE POSITION 19300000 MVC N1(N72,XWORK1),N0(XWORK1) BLANK REST OF LINE 19350000 LA X2,N12 SET LIMIT ON DISPLAYED KEYS 19400000 LTR XPOINT,XPOINT ANY KEYS ALLOCATED MH Y01566 19410003 BZ WRITIT NO, JUST WRITE BLANK LINE MH Y01566 19420003 LOOP3 CLI N0(XPOINT),STOPPER IS THIS END OF AREA 19450000 BE WRITIT YES, STOP GENERATION 19500000 SR XKEEP,XKEEP NO, CLEAR WORK REGISTER 19550000 IC XKEEP,N0(XPOINT) GET KEY NUMBER 19600000 CVD XKEEP,DCMPACK CONVERT IT TO DECIMAL 19650000 UNPK DCMCVBIN+N2(N2),DCMCVBIN+N2(N2) UNPACK IT 19700000 OI DCMCVBIN+N3,ZONE CHANGE SIGN TO EBCDIC 19750000 MVC N3(N2,XWORK1),DCMCVBIN+N2 MOVE KEY TO LINE 19800000 CLI N3(XWORK1),ZERO IS FIRST DIGIT ZERO 19850000 BNE TWOCHAR NO, CONTINUE 19900000 MVI N3(XWORK1),BLANK YES, BLANK IT 19950000 TWOCHAR EQU * 20000000 MVI DCMCVBIN+N2,ZEROS CLEAR OUT 20050000 MVI DCMCVBIN+N3,ZEROS WORK AREA 20100000 LA XWORK1,N6(XWORK1) POINT TO NEXT LINE SEGMENT 20150000 LA XPOINT,PFKLGN(XPOINT) POINT TO NEXT PFK AREA 20200000 BCT X2,LOOP3 GO SEE IF ANY MORE 20250000 * NOTE IF THERE ARE MORE THAN TWELVE KEYS ALLOCATED ONLY THE FIRST 20300000 * TWELVE WILL BE DISPLAYED ON THE SCREEN. 20350000 SPACE 5 20400000 */*WRITIT: P (,PFKEXT) BUILD CCWS TO WRITE PFK LINE TO SCREEN */ 20450000 *********************************************************** 20500000 WRITIT EQU * 20550000 NI DCMIOCM3,X'FF'-DCMWRPFK TURN OFF BIT 20600000 LA XPOINT,DCMBAPFK POINT TO BUFFER ADDRESS OF PFK AREA 20650000 BAL XRTRN,BUILDSET BUILD SET CCW 20700000 LA XKEEP,DCMPFKAR GET ADDRESS TO WRITE FROM 20750000 LH XWORK1,DCMCORLN GET LENGTH OF WRITE 20800000 BAL XRTRN,BUILDWRT BUILD WRITE CCW 20850000 EJECT 20900000 */*PFKEXT: D (NO,SUPREG,YES,%KEYTEST) ENTRY TO LIGHT ANY PFKS? */ 20950000 *********************************************************** 21000000 PFKEXT EQU * 21050000 TM DCMIOCM3,DCMLTPFK+DCMACPFK TRYING TO LIGHT PFKS 21100000 BZ SUPREG NO, CONTINUE 21150000 SPACE 5 21200000 */*%KEYTEST: D (NO,SUPREG,YES,%LTACT) PFK KEYBOARD INSTALLED? (UCB) */ 21250000 *********************************************************** 21300000 L XPFK,UCMUCB YES, GET UCB POINTER 21350000 TM OPFEAT(XPFK),PFKBD IS PFK KEYBOARD INSTALLED 21400000 BNO SUPREG NO, DON'T TRY TO LIGHT IT 21450000 SPACE 5 21500000 */*%LTACT: D (NO,PFKLITE,YES,ONEPFK) ENTRY TO EXTINGUISH PFKS? */ 21550000 *********************************************************** 21600000 TM DCMIOCM3,DCMACPFK SEE IF EXTINGUISH PFKS 21650000 BNO PFKLITE NO, CHECK NEXT FUNCTION 21700000 SPACE 5 21750000 */*ONEPFK: P (,OUT) BUILD DATA TO EXTINGUISH KEYS */ 21800000 *********************************************************** 21850000 ONEPFK EQU * 21900000 NI DCMIOCM3,N255-DCMACPFK TURN OFF BIT 21950000 SR XWORK1,XWORK1 CLEAR KEY REGISTER 22000000 SPACE 5 22050000 */*OUT: P (,SUPREG) BUILD LIGHT PFK CCW */ 22100000 *********************************************************** 22150000 OUT EQU * 22200000 ST XWORK1,DCMDSAV+N4 STORE BYTES THAT INDICATE ASSOCIATED 22250000 * PFK'S 22300000 LA XPOINT,DCMDSAV+N4 GET POINTER TO DATA FIELD 22350000 ST XPOINT,N0(XCHPGM) SAVE POINTER IN CCW 22400000 MVI N0(XCHPGM),SETPFK MOVE IN SET PFK INDICATOR 22450000 MVI N7(XCHPGM),N4 MOVE IN BYTE COUNT 22500000 BAL XRTRN,FINCCW COMPLETE THE CCW 22550000 SPACE 5 22600000 */*SUPREG: D (YES,ENEXCP,NO,STREGEN) SUPPRESS REGENERATION? */ 22650000 *********************************************************** 22700000 SUPREG EQU * 22750000 TM DCMIOCM3,DCMSSRG Q. SUPPRESS START REGENERATION 22800000 BNO STREGEN NO, THEN START REGENERATION 22850000 NI DCMIOCM3,N255-DCMSSRG YES. TURN OFF BIT 22900000 B ENEXCP GO TO DO I/O 22950000 SPACE 5 23000000 */*PFKLITE: D (NO,SUPREG,YES,LITEPFK) ENTRY TO LIGHT ALL ALLOCATED 23050000 */*KEYS? */ 23100000 *********************************************************** 23150000 PFKLITE EQU * 23200000 TM DCMIOCM3,DCMLTPFK LIGHT PFK'S 23250000 BNO SUPREG NO, SEE IF SUPPRESS REGEN 23300000 SPACE 5 23350000 */*LITEPFK: P (,OUT) BUILD LIGHT PFK DATA FOR ALL ALLOCATED KEYS */ 23400000 *********************************************************** 23450000 LITEPFK EQU * 23500000 NI DCMIOCM3,N255-DCMLTPFK TURN OFF BIT 23550000 LR XKEEP,PFKPTR GET POINTER TO PFK LIST 23600000 SR X2,X2 CLEAR 23650000 SR XWORK1,XWORK1 WORK 23700000 SR XWORK2,XWORK2 REGISTERS 23750000 LOOP EQU * 23800000 CLI N0(XKEEP),STOPPER ANY MORE KEYS 23850000 BE OUT NO,GO BUILD CCW 23900000 IC XWORK2,N0(XKEEP) GET PFK NUMBER 23950000 SLDL X2,N0(XWORK2) ALIGN REGISTER 24000000 O XWORK1,ONPFK TURN ON BIT 24050000 SRDL X2,N0(XWORK2) REALIGN REGISTER 24100000 LA XKEEP,PFKLGN(XKEEP) GET NEXT KEY NUMBER 24150000 B LOOP GO TO TURN ON NEXT BIT 24200000 EJECT 24250000 BUILDSET EQU * 24300000 ST XPOINT,N0(XCHPGM) PUT BUF ADD PTR INTO CCW 24350000 MVI N0(XCHPGM),SETBUF PUT COMMAND CODE INTO CCW 24400000 B2CCW MVI N7(XCHPGM),N2 PUT BYTE COUNT IN 24450000 B FINCCW FINISH BUILDING CCW 24500000 BUILDWRT EQU * 24550000 ST XKEEP,N0(XCHPGM) SAVE WRITE FROM ADDRESS 24600000 MVI N0(XCHPGM),WRITE PUT OP CODE IN CCW 24650000 STH XWORK1,N6(XCHPGM) PUT BYTE COUNT IN 24700000 FINCCW MVI N4(XCHPGM),CHAIN CHAIN CCW'S 24750000 LA XCHPGM,N8(XCHPGM) UPDATE CCW POINTER 24800000 BR XRTRN RETURN 24850000 SPACE 5 24900000 */*IEECVETQ: END */ 24950000 EJECT 25000000 * CONSTANTS 25050000 BLANKS DC 6C' ' BLANKS MH M2070 25060000 DS 0F 25100000 ONPFK DC X'80000000' FULLWORD TO LIGHT PFK 25150000 EIGHT DC H'8' UPDATE CCW PTR 25200000 INSLMESG DC C'IEE152I *ENTER* *CANCEL* *D C,K*' INST LN MH M2070 25210000 EJECT 25300000 * EQUATES 25350000 ID1 EQU C'E' 1ST CHARACTER OF CSECT ID 25360000 ID2 EQU C'Q' 2ND CHARACTER OF CSECT ID 25370000 BLANK EQU X'40' BLANKING CHARACTER 25400000 CHAIN EQU X'60' CCW CHAIN FLAG 25450000 DIGIT EQU X'F0' ZONE FOR EBCDIC DIGIT 25500000 ERRMSGL EQU 25 LINE FOR ASYN ERROR MESG 25550000 INSERT EQU X'0F' INSERT CURSOR 25600000 NEWLINE EQU X'15' NEW LINE CHARACTER 25650000 NULL EQU X'00' NULLING CHARACTER 25700000 NULLNG EQU 69 LENGTH OF CHARS TO NULL 25750000 N0 EQU 0 NUMBER 25800000 N1 EQU 1 NUMBER 25850000 N2 EQU 2 NUMBER 25900000 N3 EQU 3 NUMBER 25950000 N4 EQU 4 NUMBER 26000000 N6 EQU 6 NUMBER 26050000 N7 EQU 7 NUMBER 26100000 N8 EQU 8 NUMBER 26150000 N10 EQU 10 BYTE COUNT OFF ERROR ORDERS 26200000 N12 EQU 12 MAX NUMBER OF DISPLAYABLE KEYS 26250000 N24 EQU 24 NUMBER 26300000 N28 EQU 28 NUMBER 26350000 N31 EQU 31 NUMBER 26400000 N35 EQU 35 NUMBER 26500000 N36 EQU 36 NUMBER 26550000 N37 EQU 37 NUMBER 26600000 N38 EQU 38 NUMBER 26650000 N72 EQU 72 LENGTH OF LINE MINUS TWO 26700000 N73 EQU 73 NUMBER 26750000 N74 EQU 74 NUMBER 26800000 N147 EQU 147 NUMBER 26850000 N255 EQU 255 NUMBER 26900000 OPFEAT EQU 17 FEATURE BYTE IN UCB 26950000 PFKBD EQU X'10' PFK KEYBOARD FEATURE 27000000 PFKLGN EQU 110 LENGTH OF PFK AREA 27050000 READ EQU X'02' READ CODE 27100000 READLGNH EQU 148 READ LENGTH FOR ENTRY AREA ME SA52709 27150018 RMICODE EQU X'0E' RMI CODE 27200000 SETBUF EQU X'07' SET BUFFER COMMAND 27250000 SETPFK EQU X'1B' SET PFK CODE 27300000 STARTREG EQU X'27' 27350000 STOP EQU X'20' 27400000 STOPPER EQU X'64' NO MORE PFK'S INDICATOR 27450000 WRITE EQU X'01' WRITE 27500000 ZERO EQU C'0' CHARACTER ZERO 27550000 ZEROS EQU X'00' HEX ZEROS 27600000 ZONE EQU X'F0' EBCDIC NUMERIC ZONE 27650000 SPACE 2 27700000 TITLE 'IEECVETQ IGC5Q07B 2250 I/O 2 RESIDENT DISPLAY CONTR*27750000 OL MODULE' 27800000 IEERDCM 27850000 TITLE 'IEECVETQ IGC5Q07B 2250 I/O 2 TRANSIENT DISPLAY DONT*27950000 ROL MODULE' 28000000 DCMSTRT DSECT 28050000 IEECDCM DEVICE=B 28100000 TITLE 'IEECVETQ IGC5Q07B 2250 I/O 2 CXSA' 28150000 IHACTM CXSA 28250000 TITLE 'IEECVETQ IGC5Q07B 2250 I/O 2 UNIT CONTROL MODULE' 28300000 IEECUCM FORMAT=NEW 28400000 END 28450000