TITLE 'IEECVFTA DIDOCS PFK ROUTINE 1' 00050002 IEECVFTA CSECT 00100002 *C193000,193100 MH YM2960 00150002 */*IEECVFTA: CHART */ 00200002 */* HEADER 00250002 */* CHART FA IEECVFTA DIDOCS PFK ROUTINE 1 00300002 */* PAGE # */ 00350002 */* E IEECVFTA */ 00400002 SPACE 2 00450002 * /* START OF SPECIFICATIONS **** 00500002 *02* PROCESSOR = ASSEMBLER; 00550002 **** END OF SPECIFICATIONS ***/ 00600002 SPACE 5 00650002 * STATUS 00700002 * CHANGE LEVEL 0 00750002 * CREATED FOR RELEASE 21, LINE ITEM S21003. 00800002 SPACE 00850002 * FUNCTION 00900002 * TO CONTROL AUTOMATIC COMMAND ENTRY AS A RESULT OF DEPRESSING A 00950002 * PROGRAM FUNCTION KEY OR A LIGHT PEN DETECT ON THE PFK LINE. 01000002 SPACE 01050002 * ENTRY POINTS 01100002 * IEECVFTA FOR ALL FUNCTIONS 01150002 * FROM IEECVET1 WHEN A PFK IS PRESSED OR THERE IS 01200002 * MORE WORK TO BE DONE ON A KEY. 01250002 * FROM IEECVETF MODULE WHEN LIGHT PEN DETECTS 01300002 * ON THE PFK LINE. 01350002 SPACE 01400002 * INPUT 01450002 * A BINARY KEY NUMBER IN DCMDSAV, FLAGS IN THE PFK AREA FOR THAT 01500002 * KEY AND FLAGS IN THE DCM. 01550002 SPACE 01600002 * OUTPUT 01650002 * DCM FLAGS TO THE PROCESSOR, DEVICE DEPENDENT I/O AND ERROR 01700002 * MESSAGE ROUTINES INDICATING ACTION REQUIRED. 01750002 SPACE 01950002 * EXITS, NORMAL 02000002 * IEECVET4 (COMMAND) TO ISSUE A COMMAND. 02050002 * DEVICE DEPENDENT I/O ROUTINE TO WRITE A COMMAND FOR 02100002 * VERIFICATION. 02150002 SPACE 02200002 * EXITS, ERROR 02250002 * IEECVETD (MESSAGE MODULE 1) TO WRITE OUT ERROR MESSAGES. 02300002 EJECT 02350002 * TABLES/WORK AREAS 02400002 * PFK AREA 02450002 * THIS MODULE USES THE PFK AREA IN THE DCM, WHICH IS CREATED BY 02500002 * SYSGEN. THERE WILL BE ONE AREA FOR EACH PFK WHICH WAS 02550002 * ALLOCATED AT SYSGEN TIME. THE DCMADPFK 02600002 * FIELD IN THE DCM POINTS TO THE FIRST AREA AND ALL AREAS ARE 02650002 * CONTIGUOUS. FOLLOWING THE LAST AREA IS A ONE BYTE FIELD EQUAL TO 02700002 * X'64', USED TO IDENTIFY THE END OF PFK WORKSPACE. 02750002 * EACH PFK AREA IS 110 BYTES LONG FORMATTED AS FOLLOWS 02800002 * 02850002 * DCMNUM A ONE BYTE FIELD CONTAINING THE KEY NUMBER 02900002 * IN BINARY. 02950002 * 03000002 * DCMSTS A ONE BYTE FLAG FIELD. FOR EXPLANATION SEE THE DCM 03050002 * DSECT FOLLOWING THE CODE FOR THIS MODULE. 03100002 * 03150002 * DCMVAL A 108 BYTE FIELD WHICH IS EITHER 03200002 * 03250002 * A. A LIST OF KEYS IN THE FORM KFKF...KF/ WHERE K IS 03300002 * A ONE BYTE BINARY KEY NUMBER AND F IS A CONTROL 03350002 * BYTE WHICH CONTAINS C';' UNLESS PROCESSING 03400002 * IS TAKING PLACE. THE SLASH (X'61') 03450002 * IDENTIFIES THE END OF THE LIST OF KEYS. 03500002 * B. ONE OR MORE COMMANDS IN THE FORM 03550002 * COMMAND;COMMAND;...COMMAND 03600002 * WHERE SEMI-COLONS DELIMIT THE COMMANDS. IF THE 03650002 * LAST COMMAND DOES NOT FILL THE BUFFER IT IS 03700002 * PADDED WITH BLANKS. 03750002 * 03800002 * DURING PROCESSING OF A PFK THE CONTROL BYTE IN A LIST OF KEYS 03850002 * OR THE SEMI-COLON IN A LIST OF COMMANDS WILL BE CHANGED TO X'FF' 03900002 * TO INDICATE THAT THE PRECEEDING ITEM HAS BEEN PROCESSED. 03950002 * 04000002 * DCM DESCRIBED IN DSECT AT END OF MODULE 04050002 SPACE 2 04100002 * ATTRIBUTES 04150002 * REFRESHABLE, PRIVILEGED, TYPE 4 SVC. 04200002 SPACE 04250002 * CHARACTER CODE DEPENDENCY 04300002 * NONE 04350002 EJECT 04400002 * NOTES 04450002 * THE FOLLOWING FLAG BITS ARE USED: 04500002 * THE ACTION COLUMN INDICATES WHETHER THE BIT IS TURNED ON, OFF OR 04550002 * JUST TESTED BY THIS MODULE. 04600002 * 04650002 * NAME ACTION FUNCTION 04700002 * DCMIOCM1 04750002 * DCMINSC ON INSERT CURSOR 04800002 * DCMWRENT ON WRITE A COMMAND IN ENTRY AREA 04850002 * DCMIOCM3 04900002 * DCMPFKAT OFF/TEST KEY ATTENTION OCCURRED 04950002 * DCMRDPFK OFF/TEST DETECT ON PFK LINE 05000002 * DCMLTPFK ON LIGHT ALL ALLOCATED PFKS 05050002 * DCMCOM1 05100002 * DCMLPENT ON COMMAND IS TO BE ISSUED 05150002 * DCMCOM3 05200002 * DCMVLPFK ON/OFF/TEST KEY IS BEING VERIFIED 05250002 * DCMRTPFK ON/OFF/TEST RETURN TO PFK 1 IS REQUIRED 05300002 * DCMUTILT 05350002 * DCMUTILA ON/OFF/TEST USER DEFINED CURSOR IN COMMAND 05400002 * DCMUTILB ON/OFF/TEST CANCEL REQUESTED WITH MASTER KEY ACT 05450002 * DCMUTILC ON/OFF/TEST CANCEL REQUESTED 05500002 * DCMUTILD ON/TEST MODIFIED CANCEL AND MESG EXIT 05550002 * DCMCMSG3 05600002 * DCMDTBSY ON ISSUE TASK BUSY MESSAGE 05650002 * DCMCMSG4 05700002 * DCMPFKNA ON ISSUE PFK NOT ALLOCATED MESSAGE 05750002 * DCMPFKND ON ISSUE PFK NOT DEFINED MESSAGE 05800002 * PFK AREA 05850002 * DCMPFKDF TEST KEY HAS BEEN DEFINED 05900002 * DCMPFKPR ON/OFF/TEST KEY IS BEING PROCESSED 05950002 * DCMPFKKY TEST KEY IS A LIST OF KEYS 06000002 * DCMPFKCN TEST KEY DEFINED AS CONVERSATIONAL MODE 06050002 EJECT 06100002 * REGISTER EQUATES 06150002 SPACE 06200002 X1PARM EQU 1 06210002 XERTRN EQU 14 06212002 XFBRANCH EQU 15 06220002 R0 EQU 0 WORK REGISTER 06250002 PARM EQU 1 PARAMETER REGISTER (CXSA POINTER) 06300002 APFK EQU 2 PFK AREA POINTER 06350002 POSIT EQU 2 PFK POSITION IN LINE 06400002 SCAN EQU 3 SCAN REGISTER 06450002 INDEX EQU 3 PFK POSITION IN LINE 06500002 DECR EQU 4 DECREMENTING REG FOR COMMAND SEARCH 06550002 STOPRG EQU 5 END OF COMMAND 06600002 ENTRYPT EQU 6 PTR TO ENTRY AREA 06650002 CURSREG EQU 6 CURSOR POSITION REGISTER 06700002 MPFK EQU 7 PTR TO MASTER KEY AREA 06750002 STARTRG EQU 8 START OF COMMAND 06800002 CXSABASE EQU 9 CXSA BASE REGISTER 06850002 UCME EQU 10 UCM ENTRY ADDRESS (MOMENTARY) 06900002 RETURN EQU 10 SUBROUTINE RETURN POINTER 06950002 DCMB EQU 11 DCM BASE REGISTER 07000002 BASE EQU 12 PROGRAM BASE REGISTER 07050002 PFKPTR EQU 13 POINTER TO PFK AREA 07100002 SWTCHREG EQU 15 BRANCH REGISTER FOR KEY CANCEL 07150002 ************************************************** 07200002 EJECT 07250002 START BALR BASE,N0 ESTABLISH BASE REGISTER 07300002 USING *,BASE 07350002 B BEGIN BRANCH AROUND PATCH AREA 07360002 ICATCH DC CL72'IEECVFTA' EYECATCHER AND FIELD MAINTENANCE 07370002 BEGIN EQU * END OF PATCH AREA 07380002 LR CXSABASE,PARM ESTABLISH CXSA BASE REGISTER 07550002 USING CXSA,CXSABASE 07600002 L UCME,N16(PARM) ESTABLISH UCM ENTRY ADDRESS 07650002 L DCMB,N28(UCME) ESTABLISH DCM ADDRESS 07700002 USING DCMTSRT,DCMB 07750002 L PFKPTR,DCMADPFK POINT TO PFK AREA 07800002 L DCMB,DCMADTRN GET TRANSIENT DCM BASE 07850002 DROP DCMB 07900002 USING DCMSTRT,DCMB 07950002 MVC DCMTRACE(DCMTRLEN),DCMTRAC2 SHIFT OLD TRACE ENTRIES 08000002 MVI DCMTREN1,ID1 PUT CSECT ID INTO 08010002 MVI DCMTREN2,ID2 NEW TRACE ENTRY 08020002 L XFBRANCH,CSAXC ADDRESS FREELOCK SUBROUTINE 08030002 LR X1PARM,CXSABASE PASS CXSA ADDRESS IN REG 1 08040002 BALR XERTRN,XFBRANCH RELEASE LOCKS 08042002 NI DCMUTILT,Z CLEAR ALL UTILITY FLAGS 08050002 SPACE 5 08100002 */*%START: P (,%BEGIN) SET SWITCH REGISTER TO LABEL 'VALID' */ 08150002 ***************************************************************** 08200002 LA SWTCHREG,VALID SET SWITCH REG FOR NORMAL OP 08250002 SPACE 5 08300002 */*%BEGIN: D (VER,TESTCANX,WORK,TESTERR,ATTN,ENTRY) REASON FOR ENTRY */ 08350002 ***************************************************************** 08400002 TM DCMCOM3,DCMVLPFK RETURN FROM VERIFY 08450002 BO TESTCANX YES, POSSIBLE CANCEL 08500002 TM DCMCOM3,DCMRTPFK IS A KEY IN PROCESS 08550002 BO TESTERR YES, SEE IF 2ND ATTENTION 08600002 B ENTRY NO, DETERMINE REASON FOR ENTRY 08650002 SPACE 5 08700002 */*TESTCANX: D (NO,FIND,YES,CANX) CANCEL REQUESTED? */ 08750002 ***************************************************************** 08800002 TESTCANX EQU * 08850002 TM DCMIOCM3,DCMPFKAT+DCMRDPFK 2ND PFK ATTENTION 08900002 BNZ CANX YES, CANCEL CURRENT KEY 08950002 B FIND NO, CONTINUE WITH THIS KEY 09000002 SPACE 5 09050002 */*TESTERR: D (NO,FIND,YES,ERROR) SECOND ATTENTION? */ 09100002 ***************************************************************** 09150002 TESTERR EQU * 09200002 TM DCMIOCM3,DCMPFKAT+DCMRDPFK 2ND PFK ATTENTION 09250002 BNZ ERROR3 YES, INVALID. ONE AT A TIME 09300002 B FIND NO, CONTINUE WITH THIS KEY 09350002 SPACE 5 09400002 */*CANX: D (YES,GETOUT,NO,%SETREG) IS LAST COMMAND ON SCREEN? */ 09450002 ***************************************************************** 09500002 CANX EQU * 09550002 NI DCMIOCM3,X'FF'-DCMPFKAT-DCMRDPFK CANCEL ATTENTIONS 09600002 NI DCMCOM3,X'FF'-DCMRTPFK-DCMVLPFK AND IN PROCESS FLAGS 09650002 OI DCMUTILT,DCMUTILC INDICATE CANCEL 09700002 CLI DCMPFKNM,FOXFLAG IS LAST COMMAND ON SCREEN 09750002 BE GETOUT YES, NO CLEANUP REQUIRED 09800002 SPACE 5 09850002 */*%SETREG: P (,FIND) SET SWITCH REGISTER TO LABEL 'CANMAS' */ 09900002 ***************************************************************** 09950002 BAL SWTCHREG,FIND LOCATE KEY IN PROCESS 10000002 SPACE 5 10050002 */*CANMAS: P (,MOPUP) SET FLAG (DCMUTILB) IF MASTER KEY IN USE */ 10100002 ***************************************************************** 10150002 CANMAS CLI DCMPFKKN,FOXFLAG IS A MASTER KEY IN USE 10200002 BE MOPUP NO, CLEAR SINGLE KEY 10250002 CXMAS EQU * YES, CLEAR MASTER KEY 10300002 OI DCMUTILT,DCMUTILB INDICATE CANCEL MASTER KEY 10350002 B MOPUP GO TO IT 10400002 SPACE 4 10450002 */*ENTRY: D (L/P,LPPFK,KEY,ATTENT) ATTENTION TYPE */ 10500002 ***************************************************************** 10550002 ENTRY EQU * 10600002 TM DCMIOCM3,DCMPFKAT PFK ATTENTION 10650002 BO ATTENT YES, HANDLE 10700002 *ASSUME LIGHT PEN DETECT ON PFK LINE 10750002 B LPPFK GO TO HANDLE LIGHT PEN 10800002 EJECT 10850002 */*ATTENT: P (,FIND) MOVE KEY TO WORK AREA */ 10900002 ***************************************************************** 10950002 ATTENT EQU * 11000002 NI DCMIOCM3,X'FF'-DCMPFKAT TURN OFF ATTENTION FLAG 11050002 * START OF DEVICE DEPENDENT CODE ********* 11100002 TM DCMDSAV,ANRPFK IS THIS A 3270 DEVICE MH M1517 11150002 BNO G2250 NO, ASSUME 2250 TYPE 11200002 MVC DCMPFKNM(L'DCMPFKNM),DCMDSAV YES, GET KEY # MH M1517 11250002 NI DCMPFKNM,X'FF'-STRIP STRIP OFF ZONE MH M1517 11300002 B FIND GO TO BEGIN PROCESSING MH M1517 11350002 G2250 MVC DCMPFKNM(L'DCMPFKNM),DCMDSAV+N1 GET KEY # MH M1517 11400002 B FIND GO TO BEGIN PROCESSING MH M1517 11450002 * END OF DEVICE DEPENDENT CODE *********** MH M1517 11500002 SPACE 5 11550002 */*LPPFK: P (,FIND) CONVERT LOCATION TO KEY NUMBER */ 11600002 ***************************************************************** 11650002 LPPFK EQU * 11700002 NI DCMIOCM3,X'FF'-DCMRDPFK TURN OFF ATTN FLAG 11750002 SR POSIT,POSIT CLEAR WORK 11800002 SR INDEX,INDEX REGISTERS 11850002 IC INDEX,DCMDSAV+N1 GET CHARACTER POSITION 11900002 D POSIT,F6 DIVIDE BY SPACES PER KEY 11950002 * NOTE: RESULT NOW IN INDEX 12000002 M POSIT,FPFKLGN MULTIPLY BY PFK AREA LENGTH 12050002 AR INDEX,PFKPTR ADD TO START OF AREAS 12100002 MVC DCMPFKNM(L'DCMPFKNM),N0(INDEX) GET KEY NUMBER 12150002 B FIND GO TO PROCESS IT 12200002 SPACE 5 12250002 */*FIND: D (YES,%SWITCH,NO,ERROR) IS KEY ALLOCATED? */ 12300002 ************************************************************ 12350002 FIND EQU * 12400002 LR APFK,PFKPTR GET ADDRESS OF FIRST PFK AREA 12450002 LTR APFK,APFK ANY KEYS ALLOCATED 12500002 BZ ERROR NO, ERROR 12550002 CHECK EQU * 12600002 CLI Z(APFK),N100 HAVE WE CHECKED THEM ALL 12650002 BE ERROR IF SO, PFK ENTRY IS INVALID 12700002 CLC Z(N1,APFK),DCMPFKNM IS THIS THE AREA FOR THE KEY 12750002 EJECT 12800002 */*%SWITCH: D (NORM,VALID,CANX,CANMAS) WHICH WAY IS SWITCH REGISTER 12850002 */*SET? */ 12900002 ************************************************************ 12950002 BCR EQUAL,SWTCHREG IF SO, CONTINUE PROCESSING 13000002 * NOTE BRANCH IS TO LABEL 'VALID' FOR NORMAL PROCESSING AND 13050002 * TO LABEL 'CANMAS' FOR KEY CANCEL OPERATION. 13100002 LA APFK,PFKLGN(APFK) ELSE, POINT TO NEXT PFK AREA 13150002 B CHECK GO BACK AND CHECK IT OUT 13200002 SPACE 5 13250002 */*VALID: D (YES,%PROCTST,NO,ERROR) IS KEY DEFINED? */ 13300002 ************************************************************ 13350002 VALID EQU * 13400002 TM N1(APFK),DCMPFKDF HAS THIS KEY BEEN DEFINED 13450002 BZ ERROR2 IF NOT, KEY CANNOT BE USED 13500002 SR DECR,DECR CLEAR REGISTER 13550002 LH DECR,CHARPOS NUMBER OF CHARACTER POSITIONS 13600002 SPACE 5 13650002 */*%PROCTST: D (NO,%INPROC,YES,KEYLIST) KEY ALREADY IN PROCESS? */ 13700002 ************************************************************ 13750002 TM N1(APFK),DCMPFKPR IS PROCESSING ALREADY IN PROGRESS 13800002 BO KEYLIST YES, GET FIRST OR NEXT COMMAND 13850002 SPACE 5 13900002 */*%INPROC: P (,KEYLIST) INDICATE IN PROCESS */ 13950002 ************************************************************ 14000002 OI N1(APFK),DCMPFKPR INDICATE PROCESSING IN PROGRESS 14050002 EJECT 14100002 */*KEYLIST: D (NO,SCANCOM,YES,%POINT) IS THIS KEY A LIST OF KEYS? */ 14150002 ************************************************************ 14200002 KEYLIST TM N1(APFK),DCMPFKKY IS THIS KEY A LIST OF KEYS 14250002 BZ SCANCOM NO, GET FIRST OR NEXT COMMAND 14300002 SPACE 5 14350002 */*%POINT: P (,FIND) POINT TO FIRST KEY IN LIST */ 14400002 ************************************************************ 14450002 SR MPFK,MPFK CLEAR MASTER KEY POINTER 14500002 MVC DCMPFKKN(L'DCMPFKKN),DCMPFKNM SAVE MASTER KEY 14550002 TESTIT TM N3(APFK),STOPPER IS THIS KEY ALREADY PROCESSED 14600002 BNO FIRST NO, HANDLE IT 14650002 LA APFK,N2(APFK) YES, POINT TO NEXT ONE 14700002 CLI N2(APFK),KEYSTOP IS THIS THE LIST STOPPER 14750002 BE MOPMAST YES, CLEAN UP LIST 14800002 B TESTIT NO, GO TO TEST IT 14850002 * NOTE THE PRECEEDING SIX INSTRUCTIONS ARE USED ONLY WHEN A LIST OF 14900002 * KEYS CONTAINED AN UNDEFINED KEY, WHICH STOPS PROCESSING OF THE 14950002 * LIST. WHEN THE KEY IS DEPRESSED A SECOND TIME THIS CODE 15000002 * INSURES THAT PROCESSING RESUMES WITH THE KEY AFTER THE ONE 15050002 * WHICH WAS NOT DEFINED. IF THE UNDEFINED KEY WAS THE LAST 15100002 * IN THE LIST THE LIST IS MOPPED UP. 15150002 FIRST MVC DCMPFKNM(L'DCMPFKNM),N2(APFK) SET UP 1ST KEY IN LIST 15200002 MVI N3(APFK),STOPPER MARK IT AS PROCESSED 15250002 B FIND GO TO PROCESS THIS KEY 15300002 EJECT 15350002 */*SCANCOM: P (,CON) MOVE FIRST OR NEXT COMMAND TO ENTRY AREA */ 15400002 ************************************************************ 15450002 SCANCOM LA STARTRG,N2(APFK) POINT TO START OF AREA 15500002 LA CURSREG,N3(STARTRG) SET DEFAULT CURSOR AT POS. 3 15550002 SR SCAN,SCAN CLEAR SCAN REGISTER 15600002 LR SCAN,STARTRG POINT SCAN REG TO START OF TEXT 15650002 FOXES CLI Z(SCAN),STOPPER IS THIS A STOPPER 15700002 BE STARTPT YES, THIS IS START OF NEXT COMMAND 15750002 CLI Z(SCAN),SEMI IS THIS A SEMI-COLON 15800002 BE STOPPT YES, THIS IS END OF NEXT COMMAND 15850002 CLI Z(SCAN),CURS IS THIS A CURSOR 15900002 BE CURSE YES, GO SAVE ITS LOCATION 15950002 INCR LA SCAN,N1(SCAN) NO, POINT TO NEXT CHARACTER 16000002 BCT DECR,FOXES LOOK AT NEXT CHARACTER 16050002 LR STOPRG,SCAN STOP AT END OF AREA 16100002 B CALC GO TO FIGURE COMMAND LENGTH 16150002 STARTPT LA STARTRG,N1(SCAN) REMEMBER WHERE COMMAND STARTS 16200002 NI DCMUTILT,X'FF'-DCMUTILA CLEAR USER CURSOR FLAG 16250002 LA CURSREG,N3(STARTRG) SET DEFAULT CURSOR AT POS. 3 16300002 B INCR GO LOOK FOR END OF COMMAND 16350002 CURSE LA CURSREG,N1(SCAN) SAVE CURSOR LOCATION 16400002 OI DCMUTILT,DCMUTILA FLAG AS USER-DEFINED CURSOR 16450002 B INCR GO LOOK FOR END OF COMMAND 16500002 STOPPT LR STOPRG,SCAN REMEMBER WHERE COMMAND STOPS 16550002 MVI Z(SCAN),STOPPER AND MARK IT AS PROCESSED 16600002 CALC SR STOPRG,STARTRG CALCULATE COMMAND LENGTH IN STOPRG 16650002 LTR STOPRG,STOPRG IS LENGTH ZERO 16700002 BZ ERROR2 YES, INDICATE ERROR 16750002 BCTR STOPRG,R0 REDUCE LENGTH BY ONE FOR EXECUTE 16800002 SR CURSREG,STARTRG CALCULATE CURSOR POSITION + 1 16850002 STC CURSREG,DCMPOSCU SAVE IT 16900002 MVI DCMCULNO,N1 CURSOR GOES IN LINE ONE 16950002 L ENTRYPT,DCMAENTR POINT TO ENTRY AREA 17000002 MVI N0(ENTRYPT),BLANK BLANK FIRST CHAR OF ENTRY AREA 17050002 MVC N1(N126,ENTRYPT),N0(ENTRYPT) BLANK REST OF IT 17100002 EX STOPRG,MVCM MOVE COMMAND TO ENTRY AREA 17150002 TM DCMUTILT,DCMUTILA USER-DEFINED CURSOR 17200002 BNO CON NO, CONTINUE 17250002 SR SCAN,SCAN CLEAR REGISTER 17300002 IC SCAN,DCMPOSCU GET CURSOR POSITION + 1 17350002 BCTR SCAN,N0 GET CURSOR POSITION 17400002 AR ENTRYPT,SCAN POINT TO CURSOR 17450002 LA STARTRG,N1(ENTRYPT) POINT TO NEXT CHARACTER 17500002 LH STOPRG,CHARPOS GET NUMBER OF CHARS. PER LINE 17550002 SR STOPRG,SCAN SUBTRACT TO GET MOVE LENGTH 17600002 BCTR STOPRG,R0 REDUCE BY ONE FOR EXECUTE 17650002 EX STOPRG,MVCM SCRUNCH LINE TO LEFT TO 17700002 * DELETE CURSOR CHARACTER 17750002 EJECT 17800002 */*CON: D (YES,WRIT,NO,ISSU) CON- VERSATIONAL MODE? */ 17850002 ************************************************************ 17900002 CON OI DCMCOM3,DCMRTPFK TELL PROC TO RETURN TO PFK ROUT 17950002 TM N1(APFK),DCMPFKCN KEY IN CONVERSATIONAL MODE 18000002 BO WRIT YES, GO TO WRITE ENTRY 18050002 CLI DCMPFKKN,FOXFLAG IS THIS KEY PART OF A LIST 18100002 BE ISSU NO, GO TO ISSUE COMMAND 18150002 BAL RETURN,FINDKN YES, GET MASTER KEY FOR INSPECTION 18200002 OUT TM N1(MPFK),DCMPFKCN MASTER KEY IN CONVERSATIONAL MODE 18250002 BO WRIT YES, GO TO WRITE ENTRY 18300002 B ISSU NO, GO TO ISSUE COMMAND 18350002 SPACE 5 18400002 */*WRIT: P (,IO) INDICATE VERIFY, WRITE ENTRY & INSERT CURSOR */ 18450002 ************************************************************ 18500002 WRIT OI DCMIOCM1,DCMWRENT+DCMINSC+DCMWRINS INDICATE 18550002 * WRITE ENTRY, WRITE INST LINE AND 18600002 * INSERT CURSOR 18650002 OI DCMIOCM2,DCMINSSH INDICATE INIT INST LINE 18700002 OI DCMCOM3,DCMVLPFK INDICATE VERIFY IN PROCESS 18750002 SPACE 5 18800002 */*IO: P (,ENDTEST) SET EXIT FOR DEV.DEP. I/O ROUTINE */ 18850002 ************************************************************ 18900002 IO L XFBRANCH,DCMIORTN LOAD IO ROUTINE ADDRESS 18950002 * FOR EXIT TO IEECVET(H,P,R, OR U) 18960002 B ENDTEST GO WRITE THE COMMAND FOR VERIFY 19000002 SPACE 5 19050002 */*ISSU: P (,ENDTEST) TURN ON ISSUE FLAG AND SET EXIT FOR COMMAND */ 19100002 ************************************************************ 19150002 ISSU OI DCMCOM1,DCMLPENT INDICATE COMMAND TO BE ISSUED 19200002 * (DUMMY ENTER) 19250002 L XFBRANCH,DCMNCMD1 LOAD COMMAND ADDRESS MH YM2960 19300002 * FOR EXIT TO IEECVET4 MH YM2960 19310002 EJECT 19350002 */*ENDTEST: D (NO,XCTL,YES,MOPUP) DONE WITH THIS KEY? */ 19400002 ************************************************************ 19450002 ENDTEST EQU * 19500002 LTR DECR,DECR WAS THIS LAST COMMAND OF A KEY 19550002 BP XCTL NO, EXIT TO REQUIRED MODULE 19600002 SPACE 5 19650002 */*MOPUP: P (,MORE) CLEAN UP PFK AREA */ 19700002 ************************************************************ 19750002 MOPUP MVI DCMPFKNM,FOXFLAG CLEAR OLD KEY NUMBER 19800002 SR DECR,DECR CLEAR LIMIT REGISTER 19850002 LH DECR,CHARPOS SET LIMIT VALUE 19900002 LA SCAN,N2(APFK) POINT TO START OF AREA 19950002 THERE CLI Z(SCAN),STOPPER IS THIS A STOPPER 20000002 BNE BUMPIT NO, LOOK AT NEXT CHARACTER 20050002 MVI Z(SCAN),SEMI YES, CHANGE IT TO SEMI-COLON 20100002 BUMPIT LA SCAN,N1(SCAN) POINT TO NEXT CHARACTER 20150002 BCT DECR,THERE LOOP UNTIL FINISHED 20200002 NI N1(APFK),X'FF'-DCMPFKPR TURN OFF IN PROGRESS BIT 20250002 TM DCMUTILT,DCMUTILB CANCEL REQUESTED WITH LIST OF KEYS 20300002 BNO MORE NO, CONTINUE 20350002 NI DCMUTILT,X'FF'-DCMUTILB TURN OFF CANCEL FLAG 20400002 B MOPMAST GO TO CLEAN UP 20450002 SPACE 5 20500002 */*MORE: D (NO,GETOUT,YES,%NEXT) MORE KEYS IN LIST? */ 20550002 ************************************************************ 20600002 MORE CLI DCMPFKKN,FOXFLAG IS A MASTER KEY IN USE 20650002 BE GETOUT NO, WE ARE ALL DONE 20700002 BAL RETURN,FINDKN LOCATE MASTER KEY AREA 20750002 SR SCAN,SCAN CLEAR SCAN REG 20800002 LA SCAN,Z(MPFK) POINT TO PFK AREA 20850002 LOOP LA SCAN,N2(SCAN) POINT TO NEXT KEY 20900002 CLI N1(SCAN),STOPPER HAS THIS KEY BEEN PROCESSED 20950002 BE LOOP YES, LOOK AT NEXT ONE 21000002 CLI Z(SCAN),KEYSTOP NO, ANY MORE KEYS IN LIST 21050002 BE MOPMAST NO, CLEAN UP MASTER KEY AREA 21100002 EJECT 21150002 */*%NEXT: P (,XCTL) SET UP NEXT KEY */ 21200002 ************************************************************ 21250002 MVC DCMPFKNM(L'DCMPFKNM),Z(SCAN) YES, MOVE TO ENTRY 21300002 MVI N1(SCAN),STOPPER FLAG THIS KEY AS HANDLED 21350002 B XCTL RETURN TO PROCESSOR 21400002 MOPMAST EQU * 21450002 MVC DCMPFKNM(L'DCMPFKNM),DCMPFKKN MAKE MASTER KEY ACTIVE 21500002 BAL RETURN,FINDKN GO TO FIND MASTER PFK AREA 21550002 LR APFK,MPFK POINT TO MASTER FOR MOPUP 21600002 MVI DCMPFKKN,FOXFLAG CLEAR SAVED MASTER KEY 21650002 B MOPUP GO TO MOP UP MASTER KEY AREA 21700002 SPACE 5 21750002 */*GETOUT: P (,XCTL) INDICATE PROCESSING DONE */ 21800002 ************************************************************ 21850002 GETOUT NI DCMCOM3,X'FF'-DCMRTPFK TELL PROCESSOR WE ARE DONE 21900002 OI DCMIOCM2,DCMINSSH INDICATE INIT. INSTRUCTION LINE 21950002 OI DCMIOCM1,DCMWRINS INDICATE WRITE INST. LINE 22000002 L XFBRANCH,DCMIORTN LOAD IO ROUTINE ADDRESS 22050002 * FOR EXIT TO IEECVET(H,P,R, OR U) 22100002 TM DCMUTILT,DCMUTILC CANCEL IN PROGRESS 22150002 BNO XCTL NO, CONTINUE 22200002 NI DCMUTILT,X'FF'-DCMUTILC YES, TURN OFF CANCEL FLAG 22250002 MVI DCMPOSCU,N1 RESTORE NORMAL CURSOR TO 22300002 MVI DCMCULNO,N1 LINE 1 POSITION 1 22350002 OI DCMIOCM2,DCMBLENT INDICATE BLANK ENTRY AREA 22400002 OI DCMIOCM1,DCMWRENT+DCMINSC AND WRITE TO SCREEN 22450002 B XCTL GO TO DO IT 22500002 SPACE 5 22550002 ***************SUBROUTINE TO POINT TO AREA OF MASTER KEY************* 22600002 FINDKN LR MPFK,PFKPTR ADDRESS OF FIRST PFK AREA 22650002 LP EQU * 22700002 CLC Z(N1,MPFK),DCMPFKKN IS THIS THE AREA FOR THE KEY 22750002 BCR EQUAL,RETURN YES, RETURN TO CALLER 22800002 LA MPFK,PFKLGN(MPFK) NO, POINT TO NEXT AREA 22850002 B LP SEE IF THIS IS IT 22900002 ***************************END OF SUBROUTINE************** 22950002 EJECT 23000002 */*ERROR: P (,XCTL) SET UP ERROR MESSAGE & SET EXIT FOR MESSAGE MODULE 23050002 */**/ 23100002 ************************************************************ 23150002 ERROR EQU * 23200002 OI DCMCMSG4,DCMPFKNA INDICATE PFK UNALLOCATED ERROR MSG 23250002 B MSG3NAME GO TO WRITE ERROR MESG 23300002 ERROR2 EQU * 23350002 OI DCMCMSG4,DCMPFKND INDICATE PFK UNDEFINED ERROR MSG 23400002 CLEANUP MVI DCMPFKKN,FOXFLAG ERASE MASTER KEY IF IN USE 23450002 NI DCMCOM3,X'FF'-DCMRTPFK-DCMVLPFK DO NOT RETURN HERE 23500002 B MSG3NAME GO TO PERFORM KEY CANCEL 23550002 ERROR3 EQU * 23600002 OI DCMCMSG4,DCMPFKIP INDICATE IN PROCESS 23650002 NI DCMIOCM3,X'FF'-DCMPFKAT-DCMRDPFK TURN OFF FLAGS 23700002 MSG3NAME EQU * 23750002 L XFBRANCH,DCMNMSG3 LOAD MESSAGE 3 ADDRESS 23800002 * FOR EXIT TO IEECVFTD 23850002 SPACE 5 23900002 */*XCTL: R PROCESSOR, I/O OR MESSAGE MODULE */ 23950002 ************************************************************ 24000002 XCTL EQU * 24050002 L X1PARM,DCMCXSVE RESTORE CXSA ADDRESS 24100002 BR XFBRANCH EXIT ADDRESS ALREADY SET 24110002 SPACE 5 24150002 ********* EXECUTED INSTRUCTION ************** 24200002 * THIS INSTRUCTION IS EXECUTED FOR TWO PURPOSES: 24250002 * 1. TO MOVE A COMMAND FROM THE PFK AREA TO 24300002 * THE COMMAND ENTRY AREA. 24350002 * 2. TO MOVE A PORTION OF A COMMAND WITHIN THE COMMAND 24400002 * ENTRY AREA TO DELETE A USER-DEFINED CURSOR. 24450002 MVCM MVC Z(Z,ENTRYPT),Z(STARTRG) 24500002 *********************************************** 24550002 SPACE 5 24600002 */*IEECVFTA: END */ 24650002 *********************************************************** 24700002 EJECT 24750002 * CONSTANTS 24800002 CHARPOS DC H'108' NO. OF CHAR POSITIONS MH M0633 24850002 F6 DC F'6' NUMBER OF SPACES PER PFK ON SCREEN 24900002 FPFKLGN DC F'110' MUST BE SAME AS PFKLGN 24950002 * EQUATES 25000002 ID1 EQU C'F' 1ST CHARACTER OF CSECT ID 25010002 ID2 EQU C'A' 2ND CHARACTER OF CSECT ID 25020002 * PFK AREA EQUATES 25030002 DCMPFKDF EQU X'80' KEY HAS BEEN DEFINED 25040002 DCMPFKPR EQU X'40' KEY IS BEING PROCESSED 25042002 DCMPFKCN EQU X'20' KEY DEFINED AS CONVERSATIONAL MODE 25042402 DCMPFKKY EQU X'08' KEY IS A LIST OF KEYS 25044002 ANRPFK EQU X'70' 3277 PFK ZONE 25050002 BLANK EQU C' ' BLANK CHARACTER 25100002 CURS EQU X'6D' UNDERSCORE CHARACTER FOR CURSOR 25150002 EQUAL EQU 8 BRANCH CONDITION 25200002 FOXFLAG EQU X'FF' NO MASTER KEY 25250002 KEYSTOP EQU X'61' MASTER KEY STOPPER 25300002 N0 EQU 0 NUMBER 25350002 N1 EQU 1 NUMBER 25400002 N2 EQU 2 NUMBER 25450002 N3 EQU 3 NUMBER 25500002 N4 EQU 4 NUMBER 25550002 N16 EQU 16 NUMBER 25600002 N28 EQU 28 NUMBER 25650002 N100 EQU 100 NUMBER 25700002 N126 EQU 126 LENGTH OF ENTRY AREA 25750002 PFKLGN EQU 110 LENGTH OF PFK AREA 25800002 SEMI EQU C';' CHARACTER 25850002 STOPPER EQU X'FF' STOPPER FLAG 25900002 STRIP EQU X'F0' REMOVES ANR AID ZONE 25950002 Z EQU 0 NUMBER 26000002 EJECT 26050002 * THE FOLLOWING STATEMENTS WILL GENERATE A FLOWCHART WHICH SHOWS THE 26100002 * RELATIONSHIP BETWEEN PFK 1 AND THE REST OF DIDOCS. 26150002 SPACE 5 26200002 */*PFKFLOW: CHART */ 26250002 */* HEADER 26300002 */* PFK OPERATION - OVERALL FLOW 26350002 */* PAGE # */ 26400002 */* E (,%PROC) ATTENTION OR RETURN FROM OTHER MODULES */ 26450002 */*%PROC: S (,%LPATTN) XCTL: PROCESSOR 1 */ 26500002 */*%LPATTN: D (NO,%ECATTN,YES,%LP) LIGHT PEN ATTENTION */ 26550002 */*%ECATTN: D (NO,%PFKATTN,YES,%CMD) ENTER OR CANCEL ATTENTION */ 26600002 */*%PFKATTN: D (NO,%MRWRK,YES,%INDPFK) PFK ATTENTION */ 26650002 */*%MRWRK: D (NO,%MCS,YES,%VERIP) MORE PFK WORK TO DO */ 26700002 */*%MCS: R MCS ROUTER */ 26750002 */*%LP: S (,%PFKAR) XCTL: L/P CURSOR */ 26800002 */*%PFKAR: D (NO,%OTH,YES,%INDLP) ATTENTION IN PFK AREA */ 26850002 */*%OTH: R OTHER L/P FUNCTIONS */ 26900002 */*%INDLP: P (,%PFK1) INDICATE LIGHT PEN ATTENTION */ 26950002 */*%CMD: S (,%VEROFF) XCTL: COMMAND */ 27000002 */*%VEROFF: P (,%HANDLE) TURN OFF VERIFY BIT */ 27050002 */*%HANDLE: P (,%PROC) PROCESS ENTER OR CANCEL */ 27100002 */*%INDPFK: P (,%PFK1) INDICATE PFK ATTENTION OCCURRED */ 27150002 */*%VERIP: D (YES,%MCS,NO,%PFK1) VERIFY BIT ON */ 27200002 */*%PFK1: S (,%MVCOM) XCTL: PFK 1 */ 27250002 */*%MVCOM: P (,%CONV) MOVE COMMAND TO ENTRY AREA IN DCM */ 27300002 */*%CONV: D (NO,%INDENT,YES,%INDWRT) CON- VERSATIONAL MODE */ 27350002 */*%INDENT: P (,%PROC) INDICATE ENTER ATTENTION OCCURRED */ 27400002 */*%INDWRT: P (,%VERBIT) INDICATE WRITE ENTRY AREA TO SCREEN */ 27450002 */*%VERBIT: P (,%IO) TURN ON VERIFY BIT */ 27500002 */*%IO: S (,%WRT) XCTL: DEVICE DEPENDENT I/O ROUTINE */ 27550002 */*%WRT: P (,%PROC) WRITE ENTRY AREA TO SCREEN */ 27600002 */*PFKFLOW: END */ 27650002 TITLE 'IEECVFTA IGC6A07B PFK ROUTINE 1 RESIDENT DISPL*27700002 AY CONTROL MODULE' 27750002 IEERDCM 27800002 TITLE 'IEECVFTA IGC6A07B PFK ROUTINE 1 TRANSIENT DIS*27900002 PLAY CONTROL MODULE' 27950002 IEETDCM 28000002 TITLE 'IEECVFTA IGC6A07B PFK ROUTINE 1 CXSA' 28100002 IHACTM CXSA 28200002 END START 28250002