* /* START OF SPECIFICATIONS ****************************************** 00050000 * 00100000 *01* MODULE-NAME = IEECVFT2 00150000 * 00200000 *01* DESCRIPTIVE-NAME = DISPLAY 3 ROUTINE 00250000 * 00300000 *01* COPYRIGHT = NONE 00350000 * 00400000 *01* STATUS = CHANGE LEVEL 1 FOR VS2 RELEASE 2 00450000 * 00500000 * D 165500-168000 JE YM6828 00510003 * A 125100-125484,170600-170980,189500 JE YM6828 00520003 * C 214500 JE YM6828 00530003 *01* FUNCTION = TO MOVE THE TEXT OF MESSAGES FOUND ON THE CONSOLE 00550000 * QUEUE INTO THE SCREEN IMAGE BUFFER LINES OF THE DCM ALONG WITH 00600000 * THE APPROPRIATE MESSAGE FLAGGING. WHEN AN IN-LINE MLWTO IS FOUND 00650000 * ON THE QUEUE, CONTROL IS PASSED TO IEECVFTL TO HANDLE IT. WHEN 00700000 * THE SCREEN IS FULL, OR NO MORE MESSAGES REMAIN ON THE QUEUE, 00750000 * CONTROL IS RETURNED TO IEECVET2, DISPLAY 1, TO CONTROL FURTHER 00800000 * PROCESSING. 00850000 * 00900000 *01* NOTES = LOCAL AND CROSS-MEMORY LOCKS ARE OBTAINED ON ENTRY VIA 00950000 * THE GETLOCK SUBROUTINE ADDRESSED IN THE CXSA (CSAXB). 01000000 * 01050000 *02* CHARACTER-CODE-DEPENDENCIES = NONE 01100000 * 01150000 *02* DEPENDENCIES = NONE 01200000 * 01250000 *02* RESTRICTIONS = NONE 01300000 * 01350000 *02* REGISTER-CONVENTIONS = SEE REGISTER EQUATES 01400000 * 01450000 *02* PATCH-LABEL = ICATCH A DC STATEMENT 01500000 * 01550000 *01* MODULE-TYPE = MODULE 01600000 * 01650000 *02* PROCESSOR = ASSEMF-370R 01700000 * 01750000 *02* MODULE-SIZE = X'3D8' BYTES 01800000 * 01850000 *02* ATTRIBUTES = REENTERABLE 01900000 * 01950000 *01* ENTRY-POINT = IEECVFT2 02000000 * 02050000 *02* PURPOSE = THIS IS THE ONLY ENTRY POINT TO PERFORM ALL FUNCTIONS 02100000 * 02150000 *02* LINKAGE = BALR 02200000 * 02250000 *02* INPUT = REGISTER 1 ADDRESSES THE CXSA 02300000 * SEE ALSO CONTROL BLOCKS USAGE 02350000 * 02400000 *02* OUTPUT = REGISTER 1 ADDRESSES THE CXSA 02450000 * SEE ALSO CONTROL BLOCKS USAGE AND EXITS 02500000 * 02550000 *02* EXIT-NORMAL = IEECVET2 - DISPLAY ROUTINE 1 02600000 * 02650000 *02* EXIT-NORMAL = IEECVFTL - IN-LINE MLWTO DISPLAY ROUTINE 02700000 * 02750000 *02* EXIT-ERROR = NONE 02800000 * 02850000 *01* EXTERNAL-REFERENCES = NONE 02900000 * 02950000 *02* ROUTINES = GETLOCK SUBROUTINE - DEFINED IN IEECVET1, AND 03000000 * ADDRESSED BY WORD CSAXB OF THE CXSA ON ENTRY. 03050000 * 03100000 *02* DATA-SETS = NONE 03150000 * 03200000 *02* DATA-AREA = NONE 03250000 * 03300000 *02* CONTROL-BLOCKS = CXSA,UCM,WQE,CQE,RDCM,TDCM 03350000 * 03400000 *01* TABLES = NONE 03450000 * 03500000 *01* MACROS = EXECUTABLE - NONE 03550000 * MAPPING - IHAWQE WQE DSECT 03600000 * IHACTM CXSA DSECT 03650000 * IHACTM CQE DSECT 03700000 * IEECUCM UCM DSECT 03750000 * IEERDCM RESIDENT DCM DSECT 03800000 * IEETDCM PAGEABLE DCM DSECT 03850000 * 03900000 *02* ROUTINES = GETLOCK SUBROUTINE - DEFINED IN IEECVET1, AND 03950000 * ADDRESSED BY WORD CSAXB OF THE CXSA ON ENTRY. 04000000 * 04050000 **** END OF SPECIFICATIONS *******************************************/ 04100000 TITLE 'IEECVFT2 DISPLAY 3 ' 04150000 */*IEECVFT2: CHART */ 04200000 */* HEADER 04250000 */* IEECVFT2 DISPLAY 3 04300000 */* CHART F2 PAGE # */ 04350000 */* E IEECVFT2 */ 04360000 IEECVFT2 CSECT 04400000 *********************************************************************** 04450000 * REGISTER EQUATES 04500000 *********************************************************************** 04550000 * 04600000 XFBRANCH EQU 15 BRANCH EXIT TO OTHER ROUTINES 04650000 XFQUOTEN EQU 15 ODD REG FOR DIVISION 04700000 XEMVC EQU 14 TO ADDRESS EXECUTED MOVE INSTRUCTIONS 04750000 XERTRN EQU 14 RETURN BRANCH REG 04800000 XEREMAIN EQU 14 EVEN REG FOR DIVISION 04850000 XDWORK EQU 13 TEMPORARY WORK REGISTER 04900000 XCPBASE EQU 12 PROGRAM BASE REG 04950000 XBTDCM EQU 11 PAGEABLE DCM BASE REG 05000000 XARDCM EQU 10 RESIDENT DCM BASE REG 05050000 X9SCNSRT EQU 9 TO BACKSCAN TEXT FOR SPLIT POINTS 05100000 X9UCM EQU 9 UCM BASE REG 05150000 X8UCME EQU 8 UCM ENTRY BASE REG 05200000 X7WQE EQU 7 WQE BASE 05250000 X7CQE EQU 7 CQE BASE 05300000 X6DOM EQU 6 DOM TABLE ENTRY POINTER 05350000 X5SCT EQU 5 SCT ENTRY POINTER 05400000 X4MSG EQU 4 MESSAGE AREA TEXT POINTER 05450000 X3PADS EQU 3 NUMBER OF CONTINATION LINES PASSED TO ET3 05500000 X2START EQU 2 START POINT FOR MOVING MESSAGE TEXT 05550000 X2WORK EQU 2 WORK REG 05600000 X1PARM EQU 1 CXSA ADDRESS ON ENTRY AND EXIT 05650000 X0WORK EQU 0 TEMPORARY WORK REGISTER 05750000 EJECT 05750100 *********************************************************************** 05800000 * INITIALIZE PROGRAM 05850000 * 05900000 *********************************************************************** 05950000 BALR XCPBASE,N0 LOAD PROGRAM BASE REGISTER 06000000 USING *,XCPBASE ESTABLISH PROG ADDRESSABILITY 06050000 B BEGIN BRANCH AROUND PATCH AREA 06100000 ICATCH DC CL72'IEECVFT2' EYECATCHER AND FIELD MAINTENANCE 06150000 BEGIN EQU * END OF PATCH AREA 06200000 USING CXSA,X1PARM ESTABLISH CXSA ADDRESSABILITY 06250000 USING UCMLIST,X8UCME ESTABLISH UCMENTRY ADDRESSABILITY 06300000 USING UCM,X9UCM ESTABLISH UCM ADDRESSABILITY 06350000 USING DCMTSRT,XARDCM ESTABLISH R DCM ADDRESSABILITY 06400000 USING DCMSTRT,XBTDCM ESTABLISH DCM ADDRESS 06450000 L X8UCME,CSAUCM UCM ENTRY BASE 06500000 L X9UCM,CSACTLM UCM BASE 06550000 L XARDCM,UCMXB RESIDENT DCM BASE 06600000 L XBTDCM,DCMADTRN PAGEABLE DCM BASE 06650000 MVC DCMTRACE(DCMTRLEN),DCMTRAC2 SHIFT OLD ENTRIES 07050000 MVI DCMTREN1,ID1 MOVE IN CSECT ID OF 07100000 MVI DCMTREN2,ID2 'F2' FOR IEECVFT2 07150000 SPACE 2 07152000 */* S GETLOCK: OBTAIN LOCAL AND CROSS-MEMORY LOCKS */ 07154000 *********************************************************************** 07154400 L XFBRANCH,CSAXB ADDRESS GETLOCK SUBROUTINE 07155000 BALR XERTRN,XFBRANCH OBTAIN LOCKS 07160000 SPACE 3 07350000 */* D (YES,,NO,NONIP) IS THIS FIRST MESSAGE */ 07350100 *********************************************************************** 07400000 * ADJUSTMENTS FOR FIRST WRITE OF IPL'ED CONSOLE * 07410000 *********************************************************************** 07420000 CLI DCMLINEN,N0 IS THIS FIRST MSG. 07430000 BNZ NONIP NO,BRANCH 07440000 TM DCMRFLGS,DCMNIPP THIS DCM USED BY NIP 07446000 BZ NONIP NO, BRANCH 07448000 NI DCMRFLGS,N255-DCMNIPP SET OFF NIP USE FLAG 07448400 MVI DCMLINEN,N1 INITIALIZE POINTER 07449200 LA X2WORK,N8 GET NUMBER OF NIPS MSGS. 07449600 MH X2WORK,DCMCORLN MULTIPLY BY LINE LENGTH 07449700 AH X2WORK,DCMBYTCT ADD WRITE BYTE COUNT 07449800 STH X2WORK,DCMBYTCT UPDATE WRITE COUNT 07449900 EJECT 07460000 */*NONIP: D (NO,,YES,INTFACE1) WORKING ON MLWTO */ 07462000 *********************************************************************** 07464000 NONIP EQU * CONTINUE NORMAL PROCESSING 07466600 LA X1PARM,N1 BEGIN LINE COUNT 07500000 L X5SCT,DCMAMTAB POINT TO SCT 07550000 L X6DOM,DCMDOMPK POINT TO DOM TABLE 07600000 L X4MSG,DCMASCRN POINT TO SIB 07650000 TM UCMSTS,UCMTC IF BIT IS ON THEN MLWTO WRITE 07750000 BO INTFACE1 FOR INT1 IS NOT FINISHRD 07800000 SPACE 2 07850000 */* D (YES,,NO,MSGTEST) RETURN FROM MLWTO HANDLING */ 07860000 *********************************************************************** 07870000 TM DCMCOM3,DCMXINT1 RETURN FROM INTERFACE 1 RTN 07900000 BNO MSGTST NO--SKIP 07950000 NI DCMCOM3,N255-DCMXINT1 TURN OFF FLAG BIT FOR INT1 08000000 SPACE 2 08010000 */* P (,STARTEST) GET NEXT CQE */ 08020000 *********************************************************************** 08030000 L X7CQE,UCMWLAST YES-LOAD ADDR OF NEXT CQE TO 08050000 USING CQE,X7CQE DECLARE CQE BASE 08060000 B STARTEST START WORKING ON 08070000 EJECT 08120000 */*MSGTEST: D (NO,,YES,STARTEST) ANY MESSAGES ON CONSOLE Q */ 08550000 *********************************************************************** 08560000 MSGTST EQU * 08600000 L X7CQE,UCMOUTQ CONSOLE Q POINTER 08650000 LA X7CQE,N0(X7CQE) CLEAR HIGH ORDER BYTE 08700000 LTR X7CQE,X7CQE VALID ADDRESS 08750000 BNZ STARTEST YES, START PROCESSING MESSAGES 08800000 SPACE 2 08802000 */*FINISH: P TURN OFF OUTPUT PENDING IN UCM ENTRY */ 08804000 *********************************************************************** 08806000 FINISH EQU * 08810000 NI UCMSDS5,N255-UCMSDS5B TURN OFF OUTPUT FLAG 08820000 SPACE 2 08822000 */*DISP1: R BRANCH IEECVET2 */ 08824000 *********************************************************************** 08826000 DISP1 EQU * 08830000 OI DCMCOM3,DCMCDSP3 INDICATE ENTRY IS FROM HERE 08832000 L XFBRANCH,DCMNDSP1 LOAD DISPLAY 1 ADDRESS 08840000 L X1PARM,DCMCXSVE PASS CXSA ADDRESS IN REG 1 08842000 BR XFBRANCH EXIT TO IEECVET2 08844000 SPACE 2 08846000 */*STARTEST: D (YES,,NO,TESTDISP) END OF THIS CQE BLOCK */ 08848000 *********************************************************************** 08848400 STARTEST EQU * 08850000 TM CQEFLAG,CQEEOB IS THIS A POINTER TO A NEW BLK 08900000 BNO TESTDISP NO TEST FOR DISPLAY 08950000 SPACE 2 08960000 */* P GET NEXT BLOCK OF CQES */ 08970000 *********************************************************************** 08980000 L X7CQE,CQEWQE PICK UP NEXT BLOCK PTR 09000000 B STARTEST RETRY 09050000 SPACE 2 09060000 */*TESTDISP: D (NO,,YES,INSRT) THIS CQE TO BE SERVICED */ 09070000 *********************************************************************** 09080000 TESTDISP EQU * 09100000 TM CQEFLAG,CQEENTR ENTRY TO BE SERVICED 09150000 BO INSRT YES, SEE IF PURGE BIT IS ON 09200000 SPACE 2 09210000 */*ENDLIST: D (NO,,YES,FINISH) END OF CONSOLE Q */ 09220000 *********************************************************************** 09230000 ENDLIST EQU * 09250000 TM CQEFLAG,CQEEOQ END OF LIST 09300000 BO FINISH YES, EXIT 09350000 SPACE 2 09360000 */* P (,STARTEST) GET POINTER TO NEXT MESSAGE */ 09370000 *********************************************************************** 09380000 LA X7CQE,N4(X7CQE) NO, GET NEXT WORD 09400000 B STARTEST RESTART 09450000 INSRT EQU * 09500000 ST X7CQE,UCMWLAST SAVE LIST PT 09550000 TM CQEFLAG,CQEMAJOR START OF MLWTO 09700000 BO MLWTO YES-HANDLE MLWTO 09750000 L X7WQE,CQEWQE ADDRESS THIS WQE 09800000 USING WQE,X7WQE DECLARE WQE BASE 09810000 PURGCONT EQU * 09850000 TM WQEXA,WQEPURGE+WQEDOM IS WQE PURGE OR DOM ON 09900000 BZ ROOM NO,FIND ROOM ON SCREEN 09950000 MARK EQU * FLAG AS NO LONGER NEEDED 10100000 L X7CQE,UCMWLAST GET POINTER TO ACTIVE CQE 10150000 USING CQE,X7CQE DECLARE CQE BASE 10160000 OI UCMSTS,UCMTB INDICATE DEQUE WQE 10200000 NI CQEFLAG,N255-CQEENTR TURN OFF ENTRY ACTIVE 10250000 OI CQEFLAG,CQEAVAIL INDICATE NO LONGER NEEDED 10260000 B ENDLIST SEE IF THERE ARE MORE 10300000 MLWTO EQU * 10350000 * IF MLWTO HAS BOTH DESCRIPTOR CODES 8 AND 9, AND THE TARGET 10400000 * AREA IS NOT Z (FOR INLINE), THEN IT WILL GO OUT OF LINE 10450000 * AND THIS ROUTINE IGNORES IT. OTHERWISE, PASS CONTROL TO 10500000 * INTERFACE 1 TO PUT THE MLWTO INLINE. 10550000 L X7WQE,CQEWQE GET WQE ADDRESS 10600000 USING WQE,X7WQE DECLARE WQE BASE 10610000 TM WQEMCSF,WQEMCSA DO DESCRIPTOR CODES EXIST 10650000 BNO INTFACE1 NO, GO TO INTERFACE 1 10700000 TM WQEDESCD,WQEDCH DESCRIPTOR CODE 8 10750000 BNO INTFACE1 NO, GO TO INTERFACE 1 10800000 TM WQEDC2,WQEDCI DESCRIPTOR CODE 9 10850000 BNO INTFACE1 NO, GO TO INTERFACE 1 10900000 CLI WMJMAREA,Z AREA ID = Z 10950000 BE INTFACE1 YES-GO TO INTERFACE 1 11000000 L X7CQE,UCMWLAST GET LIST PT OF ACTIVE WQE 11050000 B ENDLIST IGNORE MLWTO, CONTINUE SEARCH 11100000 INTFACE1 EQU * 11150000 * EXIT TO THE INTERFACE MODULE 1 TO DISPLAY IT INLINE 11200000 * 11250000 L XFBRANCH,DCMNINT1 LOAD IN-LINE DISPLAY ADDRESS 11300000 L X1PARM,DCMCXSVE PASS CXSA ADDRESS IN REG 1 11305000 BR XFBRANCH EXIT TO IEECVFTN 11350000 * 11400000 ROOM EQU * 11450000 TM N0(X5SCT),DCMMSGST END OF TABLE 11460000 BO FULTST YES,NO MORE ROOM 11470000 TM N0(X5SCT),DCMMSGIN IS THIS LINE FREE 11500000 BNO NOTFULL YES, INSERT WQE 11550000 AH X5SCT,DCMSCTCN NO, GET NEXT SCT ENTRY 11600000 LA X6DOM,DCMDOMLN(X6DOM) GET NEXT DOM ENTRY 11650000 AH X4MSG,DCMCORLN GET NEXT LINE 11700000 LA X1PARM,N1(X1PARM) AND NEXT LINE NUMBER 11750000 CH X1PARM,DCMMSGAL STILL IN MSG AREA 11760000 BNH ROOM YES, CHECK FOR A FREE LINE 11770000 FULTST EQU * 11800000 OI DCMR2FLG,DCMRXSFL SET ON R DCM SCREEN FULL 11850000 OI UCMDEVC,UCMDEVA INDICATE THAT SCREEN IS FULL 11900000 CLI DCMDEL,R IS DEVICE IN ROLL MODE 11950000 BE DISP1 YES DO NOT WRITE MESSAGE WAITIND 12000000 OI DCMCMSG1,DCMMSGWT INDICATE WRITE MESSAGE WAITING BIT 12050000 OI DCMIOCM1,DCMWRWRN WRITE WARNING LINE 12100000 B DISP1 12350000 NOTFULL EQU * 12400000 LH XFQUOTEN,WQENBR+N2 GET TEXT LENGTH 12500000 TM UCMDISP2,UCMDISPI TIME STAMP REQ'D JE YM6828 12510003 BZ TSTDISPJ NO, TEST FOR JOBID JE YM6828 12520003 LA XFQUOTEN,19(0,XFQUOTEN) INCR LENGTH FOR TIME JE YM6828 12530003 B FULTST1 CONTINUE JE YM6828 12542003 TSTDISPJ TM UCMDISP2,UCMDISPJ JOBID REQ'D JE YM6828 12544003 BZ FULTST1 NO, CONTINUE JE YM6828 12546003 LA XFQUOTEN,10(0,XFQUOTEN) INCR LENGTH FOR JOBID JE YM6828 12548003 FULTST1 DS 0H JE YM6828 12548400 LH X3PADS,DCMAXLGN GET MAX TEXT/LINE 12550000 SR XFQUOTEN,X3PADS SUB LENGTH OF 1ST LINE 12600000 BNP ONELINE NOTHING LEFT, NO CONT. 12650000 BCTR X3PADS,N0 REDUCE BECAUSE CONT. 12700000 BCTR X3PADS,N0 LINES ARE SHORTER 12750000 SR XEREMAIN,XEREMAIN CLEAR EVEN REG FOR DIVIDE 12800000 DR XEREMAIN,X3PADS DIVIDE BY LINE LENGTH 12850000 LTR XEREMAIN,XEREMAIN IS THERE A REMAINDER 12900000 BZ NOPAD NO, QUOTIENT IS CORRECT 12950000 LA XFQUOTEN,N1(XFQUOTEN) YES, NEED ANOTHER LINE 13000000 SR X3PADS,XEREMAIN # PAD CHARS AVAIL FOR SPLIT 13010000 B LONG SEE IF CONTINUED LINES FIT 13050000 ONELINE EQU * MESSAGE WILL NOT BE CONTINUED MB YM6340 13060000 LR XFQUOTEN,X5SCT SCT FOR LINE TO DISPLAY MB YM6340 13070000 B DYNTEST SEE IF IT FITS MB YM6340 13080000 NOPAD EQU * 13100000 SR X3PADS,X3PADS NO PAD CHARS AVAILABLE 13150000 LONG EQU * 13200000 MH XFQUOTEN,DCMSCTCN MULT BY SCT ENTRY LENGTH 13250000 AR XFQUOTEN,X5SCT ADD TO CURRENT POINTER 13300000 DYNTEST EQU * BE SURE MESSAGE WILL FIT MB YM6340 13310000 C XFQUOTEN,DCMADDRL HAVE WE EXCEEDED SCREEN SIZE 13350000 BH FULTST YES, TEST FOR AUTO DELETE 13400000 * IF THE MESSAGE AREA LINE ADDR IS EQUAL TO DYNAMIC DISPLAY 13450000 * START ADDR SAVED ABOVE, CONSIDER FULL SCREEN CONDITION 13500000 NC DCMDSAV+N16(N4),DCMDSAV+N16 DOES A 13550000 * DYNAMIC DISPLAY EXIST 13600000 BZ NOTBAD NO, CONTINUE 13650000 C XFQUOTEN,DCMDSAV+N16 DOES LINE ADDR = DYN ADDR 13700000 BNL FULTST YES, DON'T INSERT WQE 13750000 NOTBAD EQU * 14050000 OI WQEAVAIL,WQEBUFC FLAG AS READY FOR HARDCOPY 14060000 MVI N2(X4MSG),BLANK INITIALIZE MESSAGE FLAGS 14100000 TM WQEDESCD,WQEDCG IS THIS CODE 7 MB YM6340 14150000 BNO NOT7 NO, CONTINUE CHECKING MB YM6340 14200000 OI N1(X5SCT),DCMMSGC7 FLAG AS DESC CODE 7 MB YM6340 14250000 NOT7 EQU * MB YM6340 14300000 TM WQEXA,WQEWTOR IS THIS A WTOR 14350000 BNO DESCTST NO, TEST DESCRIPTOR CODES 14400000 OI N0(X5SCT),DCMMSGWR MARK MSG AS A WTOR 14450000 OI N1(X5SCT),DCMMSGC7 INDICATE WTOR 14500000 B ACTION1 FLAG WTORS AS ACTION MESSAGES 14550000 DESCTST EQU * 14600000 TM WQEDESCD,WQEDCA+WQEDCB IS THIS AN ACTION MSG MB YM6340 14850000 BNZ ACTION1 YES FLAG IT MB YM6340 14860000 TM WQEDESCD,WQEDCC+WQEDCD+WQEDCE CODE 3,4,OR 5 MB YM6340 14870000 BNZ MOVE YES, LEAVE FLAG BLANK MB YM6340 14880000 INFOMSG EQU * 14900000 MVI N2(X4MSG),ISDASH FLAG MSG 14950000 OI N0(X5SCT),DCMMSGIF UPDATE SCT 15000000 B MOVE READY TO MOVE MESSAGE IN 15050000 ACTION1 EQU * 15100000 OI N1(X5SCT),DCMMSGAC INDICATE ACTION MSG IN LINE 15150000 OI DCMIOCM1,DCMSOUND INDICATE SOUND ALARM 15200000 CLI WQETXT,ACTMSG IS THIS A SYSTEM ACTION MESSAGE 15250000 BE VISTST YES, NOT FROM PROBLEM PROGRAM 15300000 OI N1(X5SCT),DCMMSGPP SET PP ACTION MESSAGE 15350000 VISTST EQU * 16500000 MOVE EQU * 16850000 MVC N0(N2,X6DOM),WQEASID MEMORY ID TO DOM TABLE 16900000 MVC N2(N3,X6DOM),WQEJSTCB+N1 MOVE TCB ADDRESS INTO *16950000 DCM DOM TABLE MB Y02958 16960000 MVC N5(N3,X6DOM),WQESEQN MOVE SEQ NO. TO DOM TAB 17000000 LA X2START,WQETXT POINT TO START OF TEXT 17050000 TM UCMDISP2,UCMDISPI TIME STAMP REQ'D JE YM6828 17060003 BZ TSTDJ2 NO, TEST FOR JOBID JE YM6828 17070003 LA X2START,WQEPAD POINT TO TIME JE YM6828 17080003 B MOVE1 CONTINUE JE YM6828 17090003 TSTDJ2 TM UCMDISP2,UCMDISPJ JOBID REQ'D JE YM6828 17092003 BZ MOVE1 NO, CONTINUE JE YM6828 17094003 LA X2START,WQEPAD1 POINT TO JOBID JE YM6828 17096003 MOVE1 DS 0H JE YM6828 17098003 LA XEMVC,MSG1 POINT TO FIRST MVC 17100000 LR X9SCNSRT,X2START SETUP TO CALCULATE BACKSCAN 17150000 BIGLOOP EQU * 17200000 AH X9SCNSRT,DCMAXLGN BUMP SCAN START ADDRESS 17250000 BCTR X9SCNSRT,N0 POINT TO LAST CHARACTER 17300000 LA X0WORK,WQETXT-N1 GET TEXT START ADDRESS MB YM6340 17350000 AH X0WORK,WQENBR+N2 ADD TEXT LENGTH 17400000 CR X0WORK,X9SCNSRT END OF TEXT PAST SCAN START 17450000 BNH LASTLINE NO, MOVE TO END OF TEXT 17500000 OI N0(X5SCT),DCMMSGCN INDICATE CONTINUED LINE 17550000 LTR XDWORK,X3PADS SAVE NUMBER OF PAD CHARS 17600000 BZ SPLIT IF NONE LEFT, SPLIT AT MAX 17650000 LR X0WORK,X9SCNSRT SAVE SCAN START POINT 17700000 SPLTLOOP EQU * 17750000 CLI N0(X9SCNSRT),BLANK IS THIS CHAR A BLANK 17800000 BE SPLIT YES HOLD SPLIT POINT 17850000 CLI N0(X9SCNSRT),COMMA IS IT A COMMA 17900000 BE SPLIT YES HOLD SPLIT POINT 17950000 BCTR X9SCNSRT,N0 GO BACK ONE BYTE 18000000 BCT X3PADS,SPLTLOOP LOOP TILL ZERO 18050000 LR X3PADS,XDWORK NO PAD CHARS USED 18100000 LASTLINE EQU * 18150000 LR X9SCNSRT,X0WORK NO SPLITTING DONE 18200000 * MOVE TO END OF TEXT OR MAX 18250000 SPLIT EQU * 18300000 SR X9SCNSRT,X2START CALCULATE MOVE LENGTH 18350000 OI N0(X5SCT),DCMMSGIN INDICATE LINE IS IN USE 18400000 NI N0(X5SCT),N255-DCMMSGJK 18450000 MVI N3(X4MSG),BLANK BLANK OUT LINE 18500000 LH XDWORK,DCMAXLGN LOAD FULL LENGTH OF LINE 18550000 BCTR XDWORK,N0 REDUCE ONE FOR EXECUTE 18600000 BCTR XDWORK,N0 ONE MORE FOR ONE THATS THERE 18650000 EX XDWORK,BLKTXT SPREAD BLANKS IN MSG LINE 18800000 EX X9SCNSRT,N0(XEMVC) MOVE TEXT INTO DCM 18900000 MVC N3(N1,X4MSG),WQETXT COPY ACTION CODE JE YM6828 18950003 LA X2START,N1(X9SCNSRT,X2START) START FOR NEXT MOVE 19000000 TM DCMDSTAT,DCMDSTNM ARE MESSAGES NUMBERED 19050000 BZ NONUM NO, CHECK FOR STATUS DISPLAY 19100000 STH X1PARM,DCMADNUM STORE LINE NUMBER 19150000 CVD X1PARM,DCMPACK CONVERT TO DECIMAL 19200000 UNPK DCMCVBIN+N2(N2),DCMCVBIN+N2(N2) UNPACK 19250000 OI DCMCVBIN+N3,CF0 MAKE IT EBCDIC 19300000 CLI DCMCVBIN+N2,CF0 IS FIRST CHARACTER A ZERO 19350000 BNE MOVEALL NO, MOVE IN AS IS 19400000 MVI DCMCVBIN+N2,BLANK REPLACE ZERO WITH A BLANK 19450000 MOVEALL EQU * 19500000 MVC N0(N2,X4MSG),DCMCVBIN+N2 MOVE NUMBER ON SCREEN 19550000 NONUM EQU * 19600000 LR XDWORK,X1PARM GET LINE NUMBER 19650000 BCTR XDWORK,N0 ZERO ORIGIN 19700000 A XDWORK,DCMADSEC INDEX INTO SSCT 19750000 TM N0(XDWORK),DCMSECCL+DCMSECLL+DCMSECDL+DCMSECBL 19800000 BZ NODISP LINE NOT UNDER A STATUS DISPLAY 19850000 OI DCMCMSG1,DCMUNMSG TURN ON WRITE UNVIEWABLE MSG 19900000 B CONTCHK TEST FOR A CONTINUATION LINE 19950000 NODISP EQU * 20000000 CLI DCMLINEN,N0 IS THIS FIRST MSG. 20050000 BNZ VISA NO, DONT SAVE LINE NUMBER 20100000 STC X1PARM,DCMLINEN WRITE PARTIAL START LINE 20150000 VISA EQU * 20200000 OI DCMIOCM1,DCMWRPAR WRITE PARTIAL MSG AREA 20250000 LH XDWORK,DCMBYTCT GET CURRENT BYTE COUNT 20300000 AH XDWORK,DCMCORLN ADD LENGTH OF A LINE 20350000 STH XDWORK,DCMBYTCT SAVE NEW LENGTH 20400000 CONTCHK EQU * 20450000 SR XDWORK,XDWORK CLEAR FOR COPYING LINE FLAG 20460000 TM N0(X5SCT),DCMMSGCN IS THIS LINE CONTINUED 20500000 BNO BUMPEM NO, DONT COPY FLAGGING 20550000 IC XDWORK,N2(X4MSG) PICK UP DIDOCS LINE FLAG 20560000 MVC DCMDOMLN(DCMDOMLN,X6DOM),N0(X6DOM) COPY DOM INFO 20600000 MVC N2(N2,X5SCT),N0(X5SCT) COPY SCT ENTRY 20650000 OI N3(X5SCT),DCMMSGCT THIS IS CONTINUATION LINE 20700000 NI N2(X5SCT),N255-DCMMSGCN THIS ONE MAY NOT BE CONTINUED 20710000 BUMPEM AH X5SCT,DCMSCTCN POINT TO NEXT SCT ENTRY 20750000 LA X6DOM,DCMDOMLN(X6DOM) POINT TO NEXT DOM ENTRY 20800000 AH X4MSG,DCMCORLN POINT TO NEXT LINE 20850000 LA X1PARM,N1(X1PARM) GET NEXT LINE NUMBER 20900000 LTR XDWORK,XDWORK ARE WE CONTINUING LINES 20950000 BZ MARK NO,GET NEXT CQE 21000000 STC XDWORK,N2(X4MSG) COPY DIDOCS LINE FLAG 21010000 LR X9SCNSRT,X2START PRIME SCAN START POINT 21100000 BCTR X9SCNSRT,N0 CONTINUATION LINES ARE 21150000 BCTR X9SCNSRT,N0 2 CHARACTERS SHORTER 21200000 LA XEMVC,MSG2 POINT TO 2ND MVC 21250000 B BIGLOOP LOOP UNTIL DONE 21300000 BLKTXT MVC N4(N0,X4MSG),N3(X4MSG) BLANK OUT LINE 21350000 MSG1 EQU * 21400000 MVC N3(N0,X4MSG),N0(X2START) MOVE FOR FIRST HALF MSG YM6828 21450003 MSG2 EQU * 21500000 MVC N5(N0,X4MSG),N0(X2START) MOVE FOR 2ND HALF MSG 21550000 *********************************************************************** 21950000 ** ** 22000000 *** CONSTANTS *** 22050000 **** **** 22100000 *********************************************************************** 22150000 TWODIV DC F'2' CONSTANT 22200000 FOUR DC H'4' CONSTANT 22250000 SIX DC H'6' DOM TABLE INCREMENT 22300000 CHARINCR DC H'1' INCREMENT OF ONE BYTE 22350000 INTVRQ DC C'IEA000A ' ID NUMBER FOR INTERVENTION REQ'D MSG 22400000 *********************************************************************** 22600000 EJECT 22650000 *********************************************************************** 22660000 *** EQUATES ** 22670000 **** **** 22680000 *********************************************************************** 22690000 ID1 EQU C'F' 1ST CHARACTER OF CSECT ID 22692000 ID2 EQU C'2' 2ND CHARACTER OF CSECT ID 22694000 Z EQU C'Z' CONSTANT 22696000 N0 EQU 0 FIELD INCREMENT 22698000 N1 EQU 1 FIELD INCREMENT 22698400 N2 EQU 2 FIELD INCREMENT 22698800 N3 EQU 3 FIELD INCREMENT 22699200 N4 EQU 4 FIELD INCREMENT 22699600 N5 EQU 5 22699700 N8 EQU 8 FIELD INCR 22699800 N12 EQU 12 FIELD INCREMENT 22699900 N16 EQU 16 FIELD INCR 22716600 N28 EQU 28 FIELD INCR 22726600 N255 EQU 255 USED TO TURN OFF SELECTED BITS 22728600 ACTMSG EQU C'*' ASTERISK * 22730600 BLANK EQU C' ' BLANK COMPARAND 22732600 COMMA EQU C',' 22733000 ISDASH EQU C'-' DASH COMPARAND 22733100 Y EQU C'Y' CHARACTER FOR COMPARE 22733200 R EQU C'R' R COMPARAND 22738800 TWO EQU 2 SCT INCREMENT FOR TM AND OI 22740800 X0A EQU X'0A' MASK 22742800 X04 EQU X'04' MASK 22743200 X20 EQU X'20' MASK 22743600 X0C EQU X'0C' MASK 22744000 PPACT EQU C'@' PROBLEM PROGRAM ACTION MESSAGE 22744100 DCMDOMLN EQU 8 22744200 EJECT 22744300 *********************************************************************** 22744400 * FLOW CHART STATEMENTS * 22750000 *********************************************************************** 22800000 */*IEECVFT2: CHART */ 22850000 */*%A: E (,%B) ENTRY POINT */ 22900000 */*%B: P (,%CC) PROGRAM INITIALIZATION */ 22950000 */*%DD: D (YES,%EE,NO,%C) THIS DCM USED BY NIP */ 23050000 */*%EE: P (,%C) ADJUST LINE NUMBER AND BYTE COUNT FIRST TIME */ 23100000 */*%C: P (,%D) INITIALIZE POINTERS */ 23150000 */*%D: D (YES,%E,NO,INTFACE1) IS MLWTO WRITE FINISHED */ 23200000 */*%E: D (YES,%F,NO,SPLITCHK) RETURN FROM INTERFACE 1 ROUTINE */ 23250000 */*%F: P (,STARTEST) GET POINTER TO NEXT WQE */ 23300000 */*SPLITCHK: D (YES,%G,NO,MSGTST) RETURN FROM SPLIT */ 23350000 */*%G: P (,NOTBAD) PICK UP SAVED REGISTERS */ 23400000 */*MSGTST: D (YES,STARTEST,NO,FINISH) VALID ADDRESS */ 23450000 */*STARTEST: D (YES,%H,NO,TESTDISP) IS THIS A POINTER TO A NEW BLOCK */ 23500000 */*%H: P (,STARTEST) PICK UP NEXT BLOCK POINTER */ 23550000 */*TESTDISP: D (YES,INSRT,NO,ENDLIST) HAS MESSAGE BEEN DISPLAYED */ 23600000 */*ENDLIST: D (YES,FINISH,NO,%I) END OF LIST */ 23650000 */*%I: P (,STARTEST) GET NEXT WORD */ 23700000 */*INSRT: D (YES,INTFACE1,NO,%J) MLWTO FOR HARDCOPY */ 23750000 */*%J: D (YES,MLWTO,NO,PURGCONT) OTHER MLWTO */ 23800000 */*PURGCONT: D (YES,%K,NO,ROOM) IS THE PURGE BIT ON */ 23850000 */*%K: D (YES,MARK,NO,ROOM) IS AUTO DELETE REQUIRED */ 23900000 */*MARK: P (,ENDLIST) SET ON DISPLAY FLAG */ 23950000 */*MLWTO: D (YES,ENDLIST,NO,INTFACE1) ARE DESCRIPTOR CODES 8 OR 9 */ 24000000 */*INTFACE1: P (,PEXIT2) INIT FOR INTERFACE 1 EXIT */ 24050000 */*ROOM: D (YES,NOTFULL,NO,%L) IS THERE A FREE LINE */ 24100000 */*%L: P (,ROOM) ADJUST POINTERS */ 24150000 */*FULTST: P (,%M) SET ON FULL SCREEN INDICATORS */ 24200000 */*%M: D (YES,DISPTST,NO,%N) IS DEVICE IN ROLL MODE */ 24250000 */*%N: P (,DISPTST) SET WRITE MESSAGE WAITING FLAG */ 24300000 */*DISPTST: D (YES,DISP1,NO,MSGTST) IS SCREEN FULL */ 24350000 */*NOTFULL: D (YES,FULTST,NO,%O) USED BY DYNAMIC DISPLAY */ 24400000 */*%O: P (,NOTBAD) MOVE IN MESSAGE AND MARK DOM AND SCT */ 24450000 */*NOTBAD: P (,REPLY) EXAMINE MESSAGE TYPE AND MARK ACCORDINGLY */ 24500000 */*REPLY: D (YES,%P,NO,VISTST) IS THIS AN ACCEPTED REPLY */ 24550000 */*%P: P (,VISTST) INDICATE ACCEPTED REPLY */ 24600000 */*VISTST: D (YES,%Q,NO,GOON) INTERVENTION REQUIRED MSG */ 24650000 */*%Q: P (,GOON) MARK SCT AND INCREMENT COUNTER */ 24700000 */*GOON: P (,%R) COMPUTE LINE NUMBER */ 24750000 */*%R: D (YES,STATCHK,NO,NODISP) DYNAMIC DISPLAY IN AREA */ 24800000 */*NODISP: D (YES,%S,NO,VISA) IS THIS FIRST MESSAGE */ 24850000 */*%S: P (,VISA) COMPUTE LINE NUMBER */ 24900000 */*VISA: P (,CONTCHK) COMPUTE AND SAVE NEW LENGTH */ 24950000 */*STATCHK: P (,CONTCHK) SET ON WRITE UNVIEWABLE MESSAGE FLAG */ 25000000 */*CONTCHK: D (YES,%U,NO,MARK) IS THIS MESSAGE LINE CONT. */ 25050000 */*%U: P (,NOTBAD) ADJUST POINTERS */ 25100000 */*PEXIT: P (,PEXIT2) INIT FOR XCTL */ 25150000 */*PEXIT2: R XCTL TO PROPER DIDOCS MODULE */ 25200000 */*FINISH: P (,DISP1) TURN OFF OUTPUT FLAG */ 25250000 */*DISP1: P (,PEXIT) INIT FOR DISPLAY 2 XCTL */ 25300000 */*IEECVFT2: END */ 25350000 EJECT 25400000 *********************************************************************** 25450000 * ALL DSECTS FOLLOW THIS POINT: 25500000 *********************************************************************** 25550000 IEERDCM 25600000 EJECT 25700000 IEETDCM 25750000 EJECT 26500000 IHAWQE DSECT=YES 26600000 EJECT 26700000 IHACTM CXSA 26800000 EJECT 26900000 IHACTM CQE 26950000 IHADOMC 26954000 EJECT 26960000 IEECUCM FORMAT=NEW 27000000 EJECT 27050000 IEZIOB 27060000 SLASH EQU C'|' AUTO DELETE BAR 27500000 X80 EQU X'80' END OF LIST FLAG 27550000 X01 EQU X'01' NOT DISPLAYED FLAG 27600000 C0 EQU X'C0' POINTER TO NEW LIST 27650000 X03 EQU X'03' MASK 27900000 CF0 EQU C'0' F0 27950000 SPACE 5 28250000 END 28300000