* /* START OF SPECIFICATIONS ****************************************** 00100000 * 00200000 *01* MODULE-NAME = IEECVETJ 00300000 * 00400000 *01* DESCRIPTIVE-NAME = ROLL MODE ROUTINE 00500000 * 00600000 *01* COPYRIGHT = NONE 00700000 * 00800000 *01* STATUS = CHANGE LEVEL 1 FOR VS2 RELEASE 2 00900000 * 00930000 * APARS FIXED = OZ14058 00960000 * 01000000 *01* FUNCTION = TO ROLL MESSAGES OFF THE SCREEN BASED ON A TIME 01100000 * INTERVAL, RTME, AND A NUMBER OF LINES TO BE ROLLED, RNUM. ALSO, 01200000 * TO CALCULATE THE APPROPRIATE POSITION AND VALUE OF QNUM, THE 01300000 * NUMBER OF MESSAGE LINES WAITING TO ROLL ONTO THE SCREEN WHEN EACH 01400000 * ROLL COMPLETES. 01500000 * 01600000 *01* NOTES = LOCAL AND CROSS-MEMORY LOCKS ARE RELEASED ON ENTRY VIA 01700000 * THE FREELOCK SUBROUTINE ADDRESSED IN THE CXSA (CSAXC). 01800000 * 01900000 *02* CHARACTER-CODE-DEPENDENCIES = NONE 02000000 * 02100000 *02* DEPENDENCIES = NONE 02200000 * 02300000 *02* RESTRICTIONS = NONE 02400000 * 02500000 *02* REGISTER-CONVENTIONS = SEE REGISTER EQUATES 02600000 * 02700000 *02* PATCH-LABEL = ICATCH A DC STATEMENT 02800000 * 02900000 *01* MODULE-TYPE = MODULE 03000000 * 03100000 *02* PROCESSOR = ASSEMF-370R 03200000 * 03300000 *02* MODULE-SIZE = X'496' BYTES 03400000 * 03500000 *02* ATTRIBUTES = REENTERABLE 03600000 * 03700000 *01* ENTRY-POINT = IEECVETJ 03800000 * 03900000 *02* PURPOSE = ALL FUNCTIONS 04000000 * 04100000 *02* LINKAGE = BALR 04200000 * 04300000 *02* INPUT = REGISTER 1 ADDRESSES THE CXSA AND DCMRNUM INDICATES THE 04400000 * MAXIMUM NUMBER OF LINES TO ROLL. 04500000 * 04600000 *02* OUTPUT = REGISTER 1 ADDRESSES THE CXSA, MESSAGES ARE MOVED IN 04700000 * THE PAGEABLE DCM, AND QNUM IS ADJUSTED AND POSITIONED 04800000 * 04900000 *02* EXIT-NORMAL = IEECVET2 - DISPLAY ROUTINE 1 05000000 * TO DISPLAY ANY WAITING LINES IF SCREEN MESSAGES WERE MOVED UP 05100000 * TO MAKE ROOM FOR MORE. 05200000 * 05300000 *02* EXIT-NORMAL = IEECVETH, P, R, OR U - I/O ROUTINE 05400000 * TO WRITE THE SCREEN MESSAGE AREA IF ONLY THE QNUM UPDATE WAS 05500000 * DONE, AND TO WRITE THE MESSAGE WAITING WARNING LINE IF NO ROLL 05600000 * WAS POSSIBLE AND THERE ARE MESSAGES WAITING TO BE SEEN. 05700000 * 05800000 *02* EXIT-ERROR = NONE 05900000 * 06000000 *01* EXTERNAL-REFERENCES = NONE 06100000 * 06200000 *02* ROUTINES = FREELOCK SUBROUTINE - DEFINED IN IEECVET1, AND 06300000 * ADDRESSED BY WORD CSAXC OF THE CXSA ON ENTRY. 06400000 * 06500000 *02* DATA-SETS = NONE 06600000 * 06700000 *02* DATA-AREA = NONE 06800000 * 06900000 *02* CONTROL-BLOCKS = CXSA,UCM,WQE,CQE,RDCM,TDCM 07000000 * 07100000 *01* TABLES = NONE 07200000 * 07300000 *01* MACROS = EXECUTABLE - NONE 07400000 * MAPPING - IHAWQE WQE DSECT 07500000 * IHACTM CXSA DSECT 07600000 * IHACTM CQE DSECT 07700000 * IEECUCM UCM DSECT 07800000 * IEERDCM RESIDENT DCM DSECT 07900000 * IEETDCM PAGEABLE DCM DSECT 08000000 * 08100000 *01* CHANGE-ACTIVITY = MODULE REWRITTEN COMPLETELY FOR VS2 RELEASE 2. 08200000 * SUPPORT CODE Y02958. 08300000 * 08400000 **** END OF SPECIFICATIONS *******************************************/ 08500000 TITLE 'IEECVETJ ROLL MODE' 08600000 IEECVETJ CSECT 09100000 EJECT 09200000 *********************************************************************** 09300000 * REGISTER EQUATES * 09400000 *********************************************************************** 09500000 R0RNUM EQU 0 RNUM VALUE FOR THIS CONSOLE 09600000 R1UCME EQU 1 UCM ENTRY BASE REGISTER 09700000 R2QPTR EQU 2 QUEUE ENTRY POINTER 09800000 R2WORK EQU 2 WORK REGISTER 09900000 R3PTRA EQU 3 POINTS TO SCT BEYOND LAST VISABLE 10000000 R4SCTPTR EQU 4 POINTS TO CURRENT WORKING SCT 10100000 R5MSGPTR EQU 5 POINTS TO CURRENT WORKING MESSAGE 10200000 R6PTRB EQU 6 POINTS TO LAST MESSAGE TO MOVE UP 10300000 R7LINECT EQU 7 COUNTER FOR LINES HANDLED 10400000 R7WORK EQU 7 WORK REGISTER 10500000 R8DEL EQU 8 COUNTER OF LINES REMOVED 10600000 R9QNUM EQU 9 COUNTER FOR MESSAGES NOT DISPLAYED 10700000 RAMAJOR EQU 10 WQE POINTER (MAJOR FOR MLWTO) 10800000 RASCT EQU 10 SCT ENTRY POINTER 10900000 RAWORK EQU 10 WORK REGISTER 11000000 RBMINOR EQU 11 MINOR WQE POINTER 11100000 RBWORK EQU 11 WORK REGISTER 11200000 RCPROG EQU 12 PROGRAM BASE REGISTER 11300000 RDTDCM EQU 13 TDCM BASE REGISTER 11400000 RERTN EQU 14 RETURN REGISTER 11500000 RFCODE EQU 15 RETURN CODE FROM SUBROUTINE 11600000 RFWORK EQU 15 WORK REGISTER 11700000 XFBRANCH EQU 15 11800000 XERTRN EQU 14 11900000 X1PARM EQU 1 12000000 EJECT 12100000 *********************************************************************** 12400000 * PROGRAM INITIALIZATION * 12500000 *********************************************************************** 12600000 BALR RCPROG,N0 LOAD PROGRAM BASE REGISTER 12700000 USING *,RCPROG ESTABLISH ADDRESSABILITY 12800000 B PATCHEND BRANCH AROUND PATCH AREA 12900000 ICATCH DC C'IEECVETJ' EYE CATCHER 13000000 DC CL8'&SYSDATE',CL56' ' FOR FIELD MAINTENANCE 13100000 PATCHEND EQU * 13200000 LR R2WORK,R1UCME LOAD CXSA ADDRESS 13300000 USING CXSA,R2WORK ESTABLISH CXSA ADDRESSABILITY 13400000 L XFBRANCH,CSAXB ADDRESS GETLOCK SUBROUTINE 13500000 BALR XERTRN,XFBRANCH OBTAIN LOCKS 13600000 L R1UCME,CSAUCM LOAD UCMENTRY ADDRESS 14000000 USING UCMLIST,R1UCME ESTABLISH ADDRESSABILITY 14100000 DROP R2WORK NO LONGER NEED CXSA BASE 14200000 L RAWORK,UCMXB LOAD R-DCM ADDRESS 14300000 USING DCMTSRT,RAWORK ESTABLISH ADDRESSABILITY 14400000 NI DCMR2FLG,X'FF'-DCMRXRLL HONOR READY TO ROLL 14500000 L RDTDCM,DCMADTRN LOAD T-DCM ADDRESS 14600000 USING DCMSTRT,RDTDCM ESTABLISH ADDRESSABILITY 14700000 DROP RAWORK NO LONGER NEED R-DCM 14800000 MVC DCMTRACE(DCMTRLEN),DCMTRAC2 SHIFT OLD TRACE ENTRIES 14900000 MVI DCMTREN1,ID1 PUT CSECT ID INTO 15000000 MVI DCMTREN2,ID2 NEW TRACE ENTRY 15100000 SR R8DEL,R8DEL ZERO DELETED LINES COUNTER 15200000 MVI DCMUTILT,N0 ZERO OUT UTILITY BYTE 15300000 XC DCMDSAV(N20),DCMDSAV ZERO OUT WORK AREA 15400000 SR R0RNUM,R0RNUM ZERO REGISTER 15500000 IC R0RNUM,DCMRNUM LOAD RNUM FOR LATER COMPARE 15600000 SR R9QNUM,R9QNUM ZERO REG., USED FOR QNUM COUNT 15700000 EJECT 15800000 *********************************************************************** 15900000 * PTRA MADE TO POINT TO SCT JUST BEYOND LAST VISABLE MESSAGE * 16000000 * PTRB MADE TO POINT TO LAST DCM MESSAGE FOR MOVE SUBROUTINE * 16100000 * MESSAGE QUEUE INDEXED INTO TO ACCOUNT FOR BLANK SCREEN LINES * 16200000 *********************************************************************** 16300000 CLC DCMWTBUF(N4),DCMASCRN STATUS DISPLAY ON FIRST LINE 16600000 BE MSGWAIT YES, NO ROLL POSSIBLE 16700000 CLC DCMWTBUF(N4),DCMLSCRN ANY DISPLAYS ON SCREEN 17100000 BNL NOSD NO, SET FOR NONE 17200000 L R3PTRA,DCMWTBUF POINT TO FIRST LINE OF DISPLAY 17700000 S R3PTRA,DCMASCRN SUBTRACT FIRST MESSAGE LINE 17800000 SR R2WORK,R2WORK ZERO DIVIDEND REGISTER 17900000 LH RAWORK,DCMCORLN LOAD LENGTH OF A DISPLAY LINE 18000000 DR R2WORK,RAWORK COMPUTE LINE COUNT 18100000 LH R2WORK,DCMSCTCN LOAD LENGTH OF AN SCT ENTRY 18200000 MR R2WORK,R2WORK COMPUTE SCT DISPLACEMENT 18300000 A R3PTRA,DCMAMTAB POINT TO 1ST. DISPLAY SCT 18400000 BLPROC L R4SCTPTR,DCMAMTAB POINT TO 1ST. MSG. SCT 18800000 L R5MSGPTR,DCMASCRN POINT TO 1ST. MSG. LINE 18900000 LR R6PTRB,R4SCTPTR SAVE PTR FOR MOVE SUBRTN JE YM8354 19000000 ENDTEST TM N0(R4SCTPTR),DCMMSGST END OF SCT ENTRIES 19400000 BO ADJUST YES, GO TO NEXT FUNCTION 19500000 TM N0(R4SCTPTR),DCMMSGIN LINE CONTAINS MESSAGE 19900000 BZ HIDDEN NO, SEE IF LINE IS VISABLE 20000000 LR R6PTRB,R4SCTPTR SAVE POINTER FOR MOVE SUBRTN 20400000 QBLANK MVI N0(R5MSGPTR),BLANK BLANK FIRST CHAR OF OLD QNUM 20800000 MVI N1(R5MSGPTR),BLANK BLANK SECOND CHAR OF OLD QNUM 20900000 AH R4SCTPTR,DCMSCTCN BUMP POINTER TO NEXT SCT 21300000 AH R5MSGPTR,DCMCORLN BUMP POINTER TO NEXT MESSAGE 21400000 B ENDTEST LOOP TO CONTINUE PROCESSING 21500000 HIDDEN CR R4SCTPTR,R3PTRA THIS LINE UNDER A DISPLAY 21900000 BNL ADJUST YES, GO TO NEXT FUNCTION 22000000 BAL RERTN,SEARCH GO TO SEARCH SUBROUTINE 22400000 LTR RFCODE,RFCODE TEST RETURN CODE 22800000 BNZ QBLANK MSG WAITING, CONTINUE PROC. 22900000 B QNUMPROC NO MESSAGES, GO TO CLEANUP 23000000 NOSD L R3PTRA,DCMADDRL POINT TO LAST SCT ENTRY 23400000 AH R3PTRA,DCMSCTCN POINT TO ONE BEYOND LAST ENTRY 23500000 B BLPROC GO TO CHECK BLANK LINES 23600000 ADJUST LH RBWORK,DCMSCTCN LOAD SCT ENTRY LENGTH 24000000 MR RAWORK,R9QNUM TIMES NUMBER VISABLE BLANKS 24100000 SR R3PTRA,RBWORK FLOAT PTRA UP FOR EACH BLANK 24200000 EJECT 24300000 *********************************************************************** 24400000 * MESSAGES ROLLED UP AND VACATED LINES BLANKED * 24500000 * INTERVENTION REQUIRED COUNTER REDUCED IF APPROPRIATE * 24600000 *********************************************************************** 24700000 SCAN L R4SCTPTR,DCMAMTAB POINT TO FIRST SCT ENTRY 24900000 TESTEND TM N0(R4SCTPTR),DCMMSGST END OF SCT ENTRIES 25300000 BO QNUMPROC YES, GO TO NEXT FUNCTION 25400000 CR R4SCTPTR,R3PTRA IS/WAS LINE UNDER A DISPLAY 25800000 BNL QNUMPROC YES, GO TO NEXT FUNCTION 25900000 CR R8DEL,R0RNUM RNUM REACHED OR EXCEEDED 26300000 BL TESTMODE NO, CHECK MODE=RD 26400000 TM N1(R4SCTPTR),DCMMSGCT IS THIS A CONTINUATION LINE 26800000 BO SCANSRCH YES, ANY LINES LEFT 26900000 B QNUMPROC NO, GO TO NEXT FUNCTION 27000000 TESTMODE CLI DCMDEL+N1,ROLDEL IS MODE EQ ROLL DELETABLE 27400000 BNE LONGMSG GO SEE IF CONTINUED 27500000 TM N1(R4SCTPTR),DCMMSGAC IS THIS AN ACTION MESSAGE 27900000 BZ LONGMSG NO, GO SEE IF CONTINUED 28000000 AH R4SCTPTR,DCMSCTCN BUMP POINTER TO NEXT SCT 28400000 B TESTEND LOOP TO CONTINUE PROCESSING 28500000 LONGMSG TM N0(R4SCTPTR),DCMMSGCN IS THIS MESSAGE CONTINUED 28900000 BO SEEALL YES, SEE IF ALL VISABLE 29000000 SCANSRCH BAL RERTN,SEARCH GO TO SEARCH SUBROUTINE 29400000 LTR RFCODE,RFCODE TEST RETURN CODE 29800000 BNZ TESTIR MSG. WAITING, CHECK I.R. COUNT 29900000 CONTLINE TM N1(R4SCTPTR),DCMMSGCT IS THIS A CONTINUATION LINE 30400000 BZ QNUMPROC NO, GO TO NEXT FUNCTION 30500000 TESTIR DS 0H 30900000 MOVEUP BAL RERTN,MOVER GO TO MOVER SUBROUTINE 31300000 B TESTEND LOOP TO CONTINUE PROCESSING 31400000 SEEALL LR R2WORK,R4SCTPTR LOAD CURRENT SCT POINTER 31800000 LOOP AH R2WORK,DCMSCTCN BUMP TO NEXT SCT ENTRY 31900000 CR R2WORK,R3PTRA IS THIS LINE UNDER A DISPLAY 32000000 BNL QNUMPROC YES, GO TO NEXT FUNCTION 32100000 TM N0(R2WORK),DCMMSGCN IS LINE CONTINUED 32200000 BZ SCANSRCH NO, ALL IS VISABLE 32300000 B LOOP LOOP TO CONTINUE SCAN 32400000 EJECT 32500000 *********************************************************************** 32600000 * QNUM COMPUTED AND PUT ON PROPER DISPLAY MESSAGE LINE * 32700000 * EXIT IS DETERMINED BASED ON CONDITIONS DETERMINED * 32800000 *********************************************************************** 32900000 QNUMPROC SR R9QNUM,R9QNUM ZERO QNUM COUNTER 33100000 COUNTNUM BAL RERTN,SEARCH GO TO SEARCH SUBROUTINE 33500000 LTR RFCODE,RFCODE TEST RETURN CODE 33900000 BNZ COUNTNUM MORE MESSAGES, LOOP BACK 34000000 CH R9QNUM,MAXNUM MORE THAN 99 MESSAGES ON QUEUE 34300000 BH BIGQ YES, QUEUE IS OVERLOADED 34400000 CVD R9QNUM,DCMPACK CONVERT QNUM TO DECIMAL 34800000 UNPK DCMPACK(N4),DCMCVBIN(N4) UNPACK RESULT 34900000 OI DCMPACK+N3,ZONE SET ZONE OF RESULT 35000000 CONVERT S R3PTRA,DCMAMTAB GET SCT DISPLACEMENT OF PTRA 35400000 SR R2WORK,R2WORK ZERO DIVIDEND REGISTER 35500000 LH RAWORK,DCMSCTCN LOAD LENGTH OF SCT ENTRY 35600000 DR R2WORK,RAWORK COMPUTE NUMBER OF SCT ENTRY 35700000 LH R2WORK,DCMCORLN LOAD LENGTH OF DISPLAY LINE 35800000 MR R2WORK,R2WORK GET MESSAGE LINE DISPLACEMENT 35900000 A R3PTRA,DCMASCRN ADD POINTER TO 1ST. MESSAGE 36000000 LTR R8DEL,R8DEL HAVE ANY MESSAGES BEEN ROLLED 36400000 BZ NOROLL NO, JUST STORE UPDATED QNUM 36500000 MVC N0(N2,R3PTRA),DCMPACK+N2 MOVE QNUM TO PROPER LINE 36900000 OI DCMIOCM2,DCMBLWRR BLANK RIGHT HALF OF WNG LINE 37300000 OI DCMIOCM1,DCMWRWRN+DCMWRMSG WRITE WARNING LINE AND FULL *37400000 MESSAGE AREA 37500000 L RAWORK,UCMXB ADDRESS RESIDENT DCM 37600000 USING DCMTSRT,RAWORK ESTABLISH ADDRESSABILITY 37700000 NI DCMR2FLG,X'FF'-DCMRXSFL TURN OFF SCREEN FULL 37800000 NI UCMDEVC,X'FF'-UCMDEVA ALSO UCM SCREEN FULL 37900000 L X1PARM,DCMCXSVE PASS CXSA ADDRESS 38000000 L XFBRANCH,DCMNDSP1 LOAD DISPLAY 1 ADDRESS 38100000 B EXIT EXIT TO IEECVET2 38200000 BIGQ MVI DCMPACK+N2,BIGA STORE MAX QNUM 38600000 MVI DCMPACK+N3,BIGA INTO AREA FOR MOVE ONTO SCREEN 38700000 B CONVERT BRANCH TO SEE IF ANY ROLLED 38800000 NOROLL SH R3PTRA,DCMCORLN NONE ROLLED, REDUCE POINTER 39200000 MVC N0(N2,R3PTRA),DCMPACK+N2 STORE UPDATED QNUM IN LINE 39300000 ANYQNUM LTR R9QNUM,R9QNUM IS QNUM NOW ZERO 39700000 BZ IOEXIT YES, NO MESSAGES WAITING 39800000 OI DCMCMSG1,DCMMSGWT INDICATE MESSAGE WAITING 40200000 OI DCMIOCM1,DCMWRMSG WRITE FULL MESSAGE AREA 40300000 *********************************************************************** 40500000 IOEXIT EQU * 40600000 L XFBRANCH,DCMIORTN INIT FOR I/O ROUTINE EXIT 40700000 EXIT L X1PARM,DCMCXSVE RESTORE CXSA ADDRESS 41100000 BR XFBRANCH EXIT TO PROPER DIDOCS MODULE 41500000 MSGWAIT SR R9QNUM,R9QNUM ZERO QNUM COUNTER 41900000 BAL RERTN,SEARCH GO TO SEARCH SUBROUTINE 42000000 B ANYQNUM GO SEE IF MSG WAITING REQUIRED 42100000 EJECT 42200000 *********************************************************************** 42300000 * SEARCH SUBROUTINE * 42400000 *********************************************************************** 42500000 SEARCH EQU * SEARCH QUEUE & BEHIND DISPLAY 42700000 L R2QPTR,DCMDSAV+N8 PTR TO OUTPUT QUEUE 43000000 USING CQE,R2QPTR CQE ADDRESSABILITY 43100000 LM RAMAJOR,RBMINOR,DCMDSAV MAJ & MIN PTRS 43200000 TM DCMUTILT,DCMUTILB TEST PHASE SWITCH 43600000 BO SCHB GO TO PHASE B 43700000 SCHA TM DCMUTILT,DCMUTILA IS THIS FIRST PASS 44100000 BO SCHLAST NO, TEST SCT LIMIT 44200000 OI DCMUTILT,DCMUTILA FIRST PASS DONE 44600000 L RBWORK,DCMWTBUF POINT TO DISPLAY 44700000 C RBWORK,DCMWTINT DOES A DISPLAY EXIST 44800000 BE SCHINITB NO, PROCEED TO PHASE B 44900000 SR RASCT,RASCT YES, DETERMINE SCREEN SIZE 45300000 S RBWORK,DCMASCRN FROM TOP TO DISPLAY 45400000 LH RFWORK,DCMCORLN BUFFER SIZE OF EACH LINE 45500000 DR RASCT,RFWORK QUOTIENT DETERMINES LINE # 45600000 LR RASCT,RBWORK OF FIRST DISPLAY LINE 45700000 MH RASCT,DCMSCTCN MULT BY SCT ENTRY LENGTH 45800000 A RASCT,DCMAMTAB ADD TO START OF SCT 45900000 SCHMSGIN TM N0(RASCT),DCMMSGIN IS A MSG IN LINE 46300000 BNO SCHINITB NO, GO TO PHASE B 46400000 AH RASCT,DCMSCTCN YES, POINT TO NEXT SCT 46800000 SCHRCYES LA R9QNUM,N1(R9QNUM) INCREMENT QNUM 47200000 LA RFCODE,N4 SET RETURN CODE = YES 47600000 SCHRET ST R2QPTR,DCMDSAV+N8 SAVE REGISTERS 48000000 STM RAMAJOR,RBMINOR,DCMDSAV FOR NEXT PASS 48100000 BR RERTN RETURN TO CALLER 48500000 SCHLAST C RASCT,DCMADDRL HAVE WE PASSED LAST SCT 48900000 BNH SCHMSGIN NO, CHECK FOR MESSAGE 49000000 SCHINITB SR RAMAJOR,RAMAJOR CLEAR MAJOR AND 49400000 SR RBMINOR,RBMINOR MINOR PTRS 49500000 OI DCMUTILT,DCMUTILB PHASE B SWITCH 49600000 SR R7LINECT,R7LINECT ZERO LINE COUNTER 49700000 TM UCMSTS,UCMTC IS IN-LINE MLWTO PENDING 50100000 BO SCHMLWRK YES, HANDLE 50200000 L R2QPTR,UCMOUTQ LOAD OUTPUT QUEUE PTR 50600000 SCHB LTR R2QPTR,R2QPTR IS QUEUE EMPTY 51000000 BZ SCHRCNO YES, NO MORE LINES 51100000 LTR R7LINECT,R7LINECT IS LINE CTR ZERO 51500000 BNZ SCHORWQE NO, HANDLE 51600000 LTR RAMAJOR,RAMAJOR IS MAJOR WQE PTR ZERO 52000000 BNZ SCHMINZR NO, MLWTO - CHECK MINOR 52100000 SCHACTST TM CQEFLAG,CQEENTR IS THIS ENTRY ACTIVE 52500000 BO SCHGETWQ YES, CHECK IT OUT 52600000 SCHNXTWQ SR RAMAJOR,RAMAJOR CLEAR WQE 53000000 SR RBMINOR,RBMINOR POINTERS 53100000 TM CQEFLAG,CQEEOB IS THIS END OF BLOCK 53500000 BO SCHNXTBK YES, GET NEXT ONE 53600000 TM CQEFLAG,CQEEOQ WAS THIS LAST ENTRY 54000000 BO SCHRCNO YES, NO MORE LINES 54100000 LA R2QPTR,N4(R2QPTR) POINT TO NEXT ENTRY 54500000 B SCHACTST GO CHECK OUT NEXT ENTRY 54600000 SCHNXTBK L R2QPTR,CQEWQE POINT TO NEXT BLOCK 55000000 LA R2QPTR,N0(R2QPTR) CLEAR FLAGS 55100000 B SCHACTST GO CHECK NEXT ENTRY 55200000 SCHRCNO SR RFCODE,RFCODE SET RETURN CODE = NO 55600000 SR R2QPTR,R2QPTR NO MORE LINES LEFT 55700000 B SCHRET RETURN TO CALLER 55800000 SCHGETWQ L RAMAJOR,CQEWQE POINT TO WQE 56200000 LA RAMAJOR,N0(RAMAJOR) CLEAR FLAGS 56300000 SCHTSTML TM CQEFLAG,CQEMAJOR IS THIS AN MLWTO 56700000 BO SCHINTST YES, TEST FOR INLINE 56800000 USING WQE,RAMAJOR 57200000 L R7LINECT,WQENBR WQE TEXT LENGTH 57300000 TM UCMDISP2,UCMDISPI TIME STAMP REQD JE @YM8452 57400000 BZ TSTDISPJ NO, TEST NEXT JE @YM8452 57500000 LA R7LINECT,19(0,R7LINECT) ADJUST LENGTH JE @YM8452 57600000 B SCHORWQE CONTINUE JE @YM8452 57700000 TSTDISPJ TM UCMDISP2,UCMDISPJ JOB ID REQD JE @YM8452 57800000 BZ SCHORWQE NO, CONTINUE JE @YM8452 57900000 LA R7LINECT,10(0,R7LINECT) ADJUST LENGTH JE @YM8452 58000000 SCHORWQE SH R7LINECT,DCMAXLGN SUBTRACT 1 LINE LENGTH 58400000 BNP SCHLSTLN MORE LINES NOT NEEDED 58500000 LA R7LINECT,N2(R7LINECT) INCLUDE 2 EXTRA BLANKS FOR 58900000 * EACH CONTINUATION LINE IN 59000000 * REMAINING TEXT COUNT 59100000 B SCHRCYES INDICATE LINE FOUND 59200000 SCHLSTLN SR R7LINECT,R7LINECT CLEAR LINE COUNTER 59600000 SR RAMAJOR,RAMAJOR CLEAR MAJOR POINTER 60000000 TM CQEFLAG,CQEEOQ WAS THIS LAST QUEUE ENTRY 60400000 BNO SCHENDBK NO, CONTINUE 60500000 SR R2QPTR,R2QPTR YES, ZERO POINTER 60900000 B SCHRCYES INDICATE LINE FOUND 61000000 SCHENDBK TM CQEFLAG,CQEEOB IS THIS END OF BLOCK @ZA14058 61400000 BO SCHNXTBL YES, GET NEXT 61500000 LA R2QPTR,N4(R2QPTR) NO, POINT TO NEXT CQE 61900000 B SCHRCYES INDICATE LINE FOUND 62000000 SCHNXTBL L R2QPTR,CQEWQE POINT TO NEXT BLOCK 62400000 LA R2QPTR,N0(R2QPTR) CLEAR FLAGS 62500000 B SCHRCYES INDICATE LINE FOUND 62600000 SCHMLWRK L R2QPTR,UCMWLAST POINT TO MAJOR'S CQE 63000000 L RAMAJOR,CQEWQE POINT TO MAJOR 63100000 L RBMINOR,UCMMLAST POINT TO MINOR 63500000 LTR RBMINOR,RBMINOR IS MINOR PTR ZERO 63900000 BZ SCHMAJCK YES, CHECK MAJOR 64000000 TM UCMSDS5,UCMSDS5F IS MLAST THE NEXT TO OUTPUT JE YM8408 64100000 BO SCHTXTZR YES, GO CHECK TEXT LENGTH JE YM8408 64200000 L RBMINOR,WMJMMIN NO, IS MLAST STILL VALID ON MINOR *64300000 CHAIN JE YM8408 64400000 SCHCMIN C RBMINOR,UCMMLAST FOUND YET JE YM8408 64500000 BE SCHMINZR YES, USE WHAT IT POINTS TO JE YM8408 64600000 DROP RAMAJOR JE YM8408 64700000 USING WQE,RBMINOR JE YM8408 64800000 ICM RBMINOR,7,WMNMNX1 GET MINOR JE YM8408 64900000 BNZ SCHCMIN GO CHECK THIS ONE JE YM8408 65000000 B SCHMAJCK CHECK TEXT LENGTH JE YM8408 65100000 SCHMINZR LTR RBMINOR,RBMINOR IS MINOR PTR ZERO 65500000 BZ SCHMAJCK YES, CHECK MAJOR 65600000 L RFWORK,N0(RBMINOR) LOAD FORWARD PTR 66000000 LA RFWORK,N0(RFWORK) CLEAR USE COUNT 66100000 LTR RFWORK,RFWORK IS FORWARD PTR ZERO 66200000 BZ SCHMINEN YES, CHECK END LINE 66300000 LR RBMINOR,RFWORK POINT TO NEXT MINOR 66700000 B SCHTXTZR CHECK FOR TEXT LENGTH 66800000 SCHMINEN TM WMNMLT1,WMNMLT1D IS THIS AN END LINE 67200000 BO SCHNXTWQ YES, OK TO GET NEXT WQE 67300000 B SCHRCNO NO, UNENDED MLWTO 67400000 DROP RBMINOR 67800000 USING WQE,RAMAJOR 67900000 SCHMAJCK TM WMJMMLW,WMJMMLWH IS A NULL MINOR ATTACHED 68000000 BO SCHMAJEN YES, TEST MAJOR FOR END 68100000 L RBMINOR,WMJMMIN NO, POINT TO MINOR 68500000 DROP RAMAJOR 68900000 USING WQE,RBMINOR 69000000 SCHTXTZR CLI WMNMTL1,ZERO IS MINOR TEXT LENGTH ZERO 69100000 BE SCHNXTWQ YES, GET NEXT WQE 69200000 B SCHRCYES NO, INDICATE LINE FOUND 69300000 DROP RBMINOR 69700000 USING WQE,RAMAJOR 69800000 SCHMAJEN TM WMJMLTYP,WMJMLTYD IS MAJOR AN END LINE 69900000 BO SCHNXTWQ YES, GET NEXT WQE 70000000 B SCHRCNO NO, UNENDED MLWTO 70100000 SCHINTST TM WMJMDEC,CODE8 IS 70500000 BNO SCHRCYES MESSAGE 70600000 TM WMJMDEC+1,CODE9 TO GO 70700000 BNO SCHRCYES IN 70800000 CLI WMJMAREA,AREAZ LINE 70900000 BE SCHRCYES YES, INDICATE LINE FOUND 71000000 B SCHNXTWQ NO, GET NEXT WQE 71100000 EJECT 71200000 *********************************************************************** 71300000 * MOVER SUBROUTINE MESSAGE MOVE * 71400000 *********************************************************************** 71500000 MOVER SR RAWORK,RAWORK ZERO DIVIDEND REGISTER 71800000 LR RBWORK,R4SCTPTR PUT CURRENT SCT PTR IN REG 71900000 S RBWORK,DCMAMTAB COMPUTE DISP. OF CURRENT SCT 72000000 LH R2WORK,DCMSCTCN LOAD LENGTH OF SCT ENTRY 72100000 DR RAWORK,R2WORK COMPUTE NUMBER OF CURRENT SCT 72200000 LH RAWORK,DCMCORLN LOAD LENGTH OF A MESSAGE LINE 72400000 MR RAWORK,RAWORK COMPUTE NUMBER OF CURRENT LINE 72500000 A RBWORK,DCMASCRN ADD START OF MESSAGES 72600000 LR RFWORK,RBWORK SAVE CURRENT MESSAGE POINTER 72700000 LR RBWORK,R6PTRB PUT LAST MSG SCT PTR IN REG 72900000 SR RBWORK,R4SCTPTR SUBTRACT CURRENT SCT POINTER 73000000 DR RAWORK,R2WORK COMPUTE COUNT FOR BCT LOOP 73100000 LTR R2WORK,RBWORK LOAD BCT COUNT FOR MSG MOVE 73200000 BNP MOVRTRN NOT POSITIVE, GET OUT JE YM8354 73300000 LR RAWORK,RFWORK INIT MOVE 'TO' POINTER 73500000 LR RBWORK,RAWORK PUT 'TO' POINTER IN REGISTER 73600000 AH RBWORK,DCMCORLN INIT MOVE 'FROM' POINTER 73800000 LH RFWORK,DCMLGNTH LOAD MOVE LENGTH 74000000 BCTR RFWORK,N0 REDUCE FOR EXECUTE 74100000 MOVELOOP EX RFWORK,MOVEITUP MOVE UP ONE MESSAGE LINE 74300000 AH RAWORK,DCMCORLN INCREMENT 'TO' POINTER 74500000 AH RBWORK,DCMCORLN INCREMENT 'FROM' POINTER 74600000 BCT R2WORK,MOVELOOP TEST FOR LAST, CONTINUE 74800000 BCTR RFWORK,N0 DECREMENT FOR BLANK EXECUTE 75000000 MVI N0(RAWORK),BLANK BLANK FIRST CHAR VACATED LINE 75100000 EX RFWORK,BLANKIT BLANK REST OF VACATED LINE 75200000 EJECT 75300000 *********************************************************************** 75500000 * MOVER SUBROUTINE CONT. DOM ELEMENT MOVE * 75600000 *********************************************************************** 75700000 SR RAWORK,RAWORK ZERO DIVIDEND REGISTER 75800000 LR RBWORK,R4SCTPTR PUT CURRENT SCT PTR IN REG 75900000 S RBWORK,DCMAMTAB COMPUTE DISP. OF CURRENT SCT 76000000 LH R2WORK,DCMSCTCN LOAD LENGTH OF SCT ENTRY 76100000 DR RAWORK,R2WORK COMPUTE NUMBER OF CURRENT SCT 76200000 LH RAWORK,DOMLEN LOAD LENGTH OF A DOM ENTRY 76300000 MR RAWORK,RAWORK COMPUTE NUMBER OF CURRENT DOM 76400000 A RBWORK,DCMDOMPK ADD START OF DOM ELEMENTS 76500000 LR RFWORK,RBWORK SAVE CURRENT DOM POINTER 76600000 LR RBWORK,R6PTRB PUT LAST MSG SCT PTR IN REG 76700000 SR RBWORK,R4SCTPTR SUBTRACT CURRENT SCT POINTER 76800000 DR RAWORK,R2WORK COMPUTE CURRENT-LAST COUNT 76900000 LH RAWORK,DOMLEN LOAD LENGTH OF DOM ENTRY 77000000 MR RAWORK,RAWORK COMPUTE DOM MOVE LENGTH 77100000 LR RAWORK,RFWORK INIT 'TO' POINTER 77200000 LR RFWORK,RBWORK SAVE DOM MOVE LENGTH 77300000 BCTR RFWORK,N0 REDUCE FOR EXECUTE MOVE 77400000 DOMOVE EQU * LOOP UNTIL ALL DOM ELEMENTS ARE MOVED 77600000 LA RBWORK,LENDOM(RAWORK) INIT 'FROM' ADDR MB YM4391 77700000 CH RFWORK,H256 OVER 256 TO MOVE MB YM4391 77800000 BL EXMOVE 255 MOVES 256 BYTES MB YM4391 77900000 MVC N0(N256,RAWORK),N0(RBWORK) MOVE 256 MB YM4391 78000000 SH RFWORK,H256 DROP COUNT BY 256 MB YM4391 78100000 LA RAWORK,N256(RAWORK) BUMP 'TO' ADDRESS MB YM4391 78200000 B DOMOVE CONTINUE MOVE MB YM4391 78300000 EXMOVE EQU * MB YM4391 78400000 EX RFWORK,MOVEITUP MOVE UP DOM ENTRIES MB YM4391 78500000 LA RAWORK,N1(RAWORK,RFWORK) LOCATE LAST ENTRY MB YM4391 78700000 LH RFWORK,DOMLEN LOAD DOM ENTRY LENGTH IN REG 78800000 BCTR RFWORK,N0 REDUCE FOR EXECUTE NULLING 78900000 EX RFWORK,NULLIT NULL VACATED DOM ENTRY 79000000 EJECT 79100000 *********************************************************************** 79300000 * MOVER SUBROUTINE CONT. SCT ELEMENT MOVE * 79400000 *********************************************************************** 79500000 LR RBWORK,R6PTRB PUT LAST MSG SCT PTR IN REG 79600000 SR RBWORK,R4SCTPTR SUBTRACT CURRENT SCT POINTER 79700000 LR RFWORK,RBWORK SAVE SCT MOVE LENGTH 79800000 BCTR RFWORK,N0 REDUCE FOR EXECUTE MOVE 79900000 LR RAWORK,R4SCTPTR INIT 'TO' POINTER 80000000 LR RBWORK,RAWORK LOAD 'TO' POINTER IN REGISTER 80100000 AR RBWORK,R2WORK INIT 'FROM' POINTER 80200000 EX RFWORK,MOVEITUP MOVE UP SCT ENTRIES 80400000 AR RAWORK,RFWORK ADD MOVE LENGTH TO 'FROM' PTR 80600000 LA RAWORK,N1(RAWORK) RESTORE FULL LENGHT 80700000 LR RFWORK,R2WORK LOAD SCT ENTRY LENGTH IN REG 80800000 BCTR RFWORK,N0 REDUCE FOR EXECUTE NULLING 80900000 EX RFWORK,NULLIT NULL VACATED SCT ENTRY 81000000 LA R8DEL,N1(R8DEL) BUMPER MSG REMOVED COUNTER 81200000 SH R3PTRA,DCMSCTCN FLOAT QNUM DISPLAY LINE UP 81400000 TM DCMUTILT,DCMUTILB PHASE B OF SEARCH 81600000 BOR RERTN YES, RETURN TO CALLER 81700000 L RFWORK,DCMDSAV GET SEARCH'S SCT POINTER 81900000 SH RFWORK,DCMSCTCN BACK UP ONE ENTRY 82000000 ST RFWORK,DCMDSAV SAVE IT FOR SEARCH 82100000 MOVRTRN BR RERTN RETURN TO MAIN LINE PROCESSING 82300000 EJECT 82400000 *********************************************************************** 82500000 * PROGRAM EQUATES * 82600000 *********************************************************************** 82700000 ID1 EQU C'E' 1ST CHARACTER OF CSECT ID 82800000 ID2 EQU C'J' 2ND CHARACTER OF CSECT ID 82900000 N0 EQU 0 DISPLACEMENT VALUE 83000000 N1 EQU 1 DISPLACEMENT VALUE 83100000 N2 EQU 2 DISPLACEMENT VALUE 83200000 N3 EQU 3 DISPLACEMENT VALUE 83300000 N4 EQU 4 DISPLACEMENT VALUE 83400000 N8 EQU 8 DISPLACEMENT VALUE 83500000 N20 EQU 20 LENGTH VALUE 83600000 N256 EQU 256 MAXIMUM MVC LENGTH MB YM4391 83700000 LENDOM EQU 8 DOM ENTRY LENGTH MB YM4391 83800000 AREAZ EQU C'Z' IN-LINE DISPLAY AREA 83900000 BIGA EQU C'A' MAX VALUE FOR QNUM DISPLAY 84000000 BLANK EQU C' ' BLANK CHARACTER 84100000 CODE8 EQU X'01' DESCRIPTOR CODE 8 84200000 CODE9 EQU X'80' DESCRIPTOR CODE 9 84300000 ROLDEL EQU C'D' CHARACTER TO TEST FOR ROLL DELETE 84400000 ZERO EQU X'00' NULL VALUE 84500000 ZONE EQU X'F0' ZONE MASK FOR QNUM VALUE 84600000 SPACE 5 84700000 *********************************************************************** 84800000 * PROGRAM CONSTANTS AND EXECUTED INSTRUCTIONS * 84900000 *********************************************************************** 85000000 DOMLEN DC H'8' LENGTH OF DOM ELEMENT ENTRY 85100000 MAXNUM DC H'99' MAXIMUM VALUE OF QNUM DISPLAY 85200000 H256 DC H'256' COMPARE AND SUBTRACT MB YM4391 85300000 SPACE 4 85400000 BLANKIT MVC N1(N0,RAWORK),N0(RAWORK) TO BLANK VACATED MESSAGE LINES 85500000 MOVEITUP MVC N0(N0,RAWORK),N0(RBWORK) TO MOVE UP ONE ENTITY 85600000 NULLIT XC N0(N0,RAWORK),N0(RAWORK) TO NULL VACATED SCT OR DOM 85700000 EJECT 85800000 *********************************************************************** 85900000 * ALL DSECTS FOLLOW THIS POINT * 86000000 *********************************************************************** 86100000 IHACTM CXSA 86200000 EJECT 86300000 IHACTM CQE 86400000 EJECT 86500000 IEECUCM FORMAT=NEW 86600000 EJECT 86700000 IEERDCM 86800000 EJECT 86900000 IEETDCM 87000000 EJECT 87100000 IHAWQE DSECT=YES 87200000 EJECT 87300000 END 87400000