TITLE 'IEECVETP IGC5P07B 2250 IO 1' 00050000 IEECVETP CSECT 00100000 */*IEECVETP: CHART */ 00150000 */* HEADER 00200000 */* CHART SA IEECVETP IGC5P07B DIDOCS 00250000 */* 2250 I/O ROUTINE 1 PAGE # */ 00300000 */* E IEECVETP */ 00350000 SPACE 2 00400000 * /* START OF SPECIFICATIONS **** 00450000 *02* PROCESSOR = ASSEMBLER; 00500000 **** END OF SPECIFICATIONS ***/ 00550000 EJECT 00600000 * STATUS 00650000 * CHANGE LEVEL 1 00700000 * COMPLETELY REVISED FOR RELEASE 21, LINE ITEM S21003. 00750000 * 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 * IEECVETP 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: DO AN RMI, WRITE THE 'MESSAGE WAITING' MESSAGE, SOUND THE 01500000 * CONSOLE ALARM, WRITE THE WARNING LINE, WRITE THE FULL MESSAGE AREA 01550000 * AREA, WRITE THE PARTIAL MESSAGE AREA, WRITE THE INSTRUCTION LINE, 01600000 * WRITE THE ENTRY AREA OR INSERT THE CURSOR. THEN THE I/O IS 01650000 * INITIATED VIA AN EXCP AND CONTROL IS RETURNED TO PROCESSOR 1 01700000 * (IEECVET1) IF THERE IS NO MORE WORK TO BE DONE, OTHERWISE 01750000 * CONTROL IS PASSED TO 2250 I/O ROUTINE 2 (IEECVETQ). 01800000 * 01850000 * INPUT 01900000 * THE INDICATION OF THE DESIRED I/O IS RECEIVED IN I/O 01950000 * COMMUNICATION BYTES 1, 2 AND 3 AND MESSAGE COMMUNICATION 02000000 * BYTE 1 IN THE DISPLAY CONTROL MODULE. 02050000 * 02100000 * OUTPUT 02150000 * 02200000 * WRITING OF WHAT IS REQUESTED BY THE OTHER MODULES. 02250000 * EXTERNAL REFERENCES 02300000 * MACROS USED: EXCP, XCTL 02350000 * 02400000 * EXITS, NORMAL 02450000 * IEECVET1 PROCESSOR 1 IF NO MORE WORK TO BE DONE. 02500000 * IEECVETF LIGHT PEN CURSOR ROUTINE ON A LIGHT PEN DETECT. 02550000 * IEECVETQ 2250 I/O ROUTINE 2 IF MORE WORK TO BE DONE. 02600000 * 02650000 * EXITS, ERROR 02700000 * NONE. 02750000 EJECT 02800000 * 02850000 * TABLES/WORK AREAS 02900000 * DISPLAY CONTROL MODULE (CONTAINED IN DSECT AT END OF LISTING). 02950000 * 03000000 * ATTRIBUTES 03050000 * REFRESHABLE, PRIVILEGED, TYPE 4 SVC. 03100000 * 03150000 * CHARACTER CODE DEPENDENCY 03200000 * NONE. 03250000 * 03300000 * NOTES 03350000 * THE FOLLOWING FLAG BITS ARE USED: 03400000 * THE ACTION COLUMN INDICATES WHETHER THE BIT IS TURNED ON, OFF 03450000 * OR JUST TESTED BY THIS MODULE. 03500000 * 03550000 * NAME ACTION FUNCTION 03600000 * 03650000 * DCMCMSG1 03700000 * DCMMSGWT OFF/TEST WRITE WAIT MESSAGE 03750000 * DCMCOM1 03800000 * DCMCOMRM ON RMI HAS BEEN PERFORMED 03850000 * DCMIOUNQ 03900000 * DCMRDARM ON READ HAS BEEN PERFORMED 03950000 * DCMIOCM1 04000000 * DCMDORMI OFF/TEST DO AN RMI 04050000 * DCMSOUND ON/OFF/TEST SOUND ALARM 04100000 * DCMWRWRN ON/OFF/TEST WRITE WARNING LINE 04150000 * DCMWRMSG OFF/TEST WRITE FULL MESSAGE AREA 04200000 * DCMWRPAR OFF/TEST WRITE PARTIAL MESSAGE AREA 04250000 * DCMWRINS OFF/TEST WRITE INSTRUCTION LINE 04300000 * DCMINSC OFF/TEST INSERT CURSOR 04350000 * DCMWRENT OFF/TEST WRITE ENTRY AREA 04400000 * DCMIOCM2 04450000 * DCMBLWRR OFF BLANK WARNING LINE 04500000 * DCMIOCM3 04550000 * DCMOPRMI OFF/TEST RMI TO RESTORE KEYBOARD 04600000 * DCMR3FLG 04650000 * DCMSTSWT OFF/TEST STATUS SWITCH REQUIRED 04700000 *********************************************************************** 04750000 EJECT 04800000 **************** REGISTER EQUATES ***************** 04850000 X1PARM EQU 1 04860000 XFBRANCH EQU 15 04870000 XERTRN EQU 14 04920000 XPARM EQU 1 PARAMETER REGISTER 04950000 XWORK4 EQU 1 WORK REGISTER 05000000 XDCMBASR EQU 2 RESIDENT DCM BASE REG 05050000 XWORK1 EQU 3 WORK REGISTER 05100000 XWORK2 EQU 4 WORK REGISTER 05150000 XNULLEND EQU 4 END FOR NULLING 05200000 XPOINT EQU 4 WORK REGISTER 05250000 XKEEP EQU 5 WORK REGISTER 05300000 XWORK3 EQU 6 WORK REGISTER 05350000 XDCM2NDB EQU 7 BASE FOR 2ND HALF OF DCM 05400000 XCHPGM EQU 8 POINTER TO CHANNEL PROGRAM AREA 05450000 X8 EQU 8 WORK REGISTER 05500000 XDCMBASE EQU 10 DCM BASE REGISTER 05550000 XBASE EQU 11 PROGRAM BASE REGISTER 05600000 XCXSA EQU 12 CXSA BASE REGISTER 05650000 XUCMENT EQU 13 UCMENTRY BASE REGISTER 05700000 XRTRN EQU 14 RETURN REGISTER 05750000 XXCTL EQU 15 XCTL REGISTER 05800000 EJECT 05850000 START BALR XBASE,N0 SET UP 05900000 USING *,XBASE ADDRESSABILITY 05950000 B ICATCH BRANCH AROUND EYECATCHER 06000000 DC C' MODULE IGC5P07B, FICHE IEECVETP ' EYECATCHER AND 06050000 ZAPAREA DC 12C'ZAP' RESERVED FOR FIELD MODIFICATION 06100000 ICATCH LR XCXSA,XPARM SAVE CXSA ADDRESS 06150000 USING CXSA,XCXSA DECLARE CXSA ADDRESS 06200000 L XUCMENT,CSAUCM GET UCM ENTRY ADDRESS 06300000 USING UCMLIST,XUCMENT DECLARE UCMENTRY BASE 06350000 L XDCMBASR,UCMXB GET DCM POINTER 06400000 USING DCMTSRT,XDCMBASR 06450000 L XDCMBASE,DCMADTRN TRANSIENT DCM LINKAGE 06500000 USING DCMSTRT,XDCMBASE DECLARE DCM BASE 06550000 L XDCM2NDB,DCMLSCRN GET 2ND HALF BASE 06600000 USING DCMMLAST,XDCM2NDB DECLARE BASE 06650000 MVC DCMTRACE(DCMTRLEN),DCMTRAC2 SHIFT OLD TRACE ENTRIES 06660000 MVI DCMTREN1,ID1 PUT CSECT ID INTO 06670000 MVI DCMTREN2,ID2 NEW TRACE ENTRY 06680000 L XFBRANCH,CSAXC ADDRESS FREELOCK SUBROUTINE 06690000 LR X1PARM,XCXSA PASS CXSA ADDRESS IN REG 1 06692000 BALR XERTRN,XFBRANCH RELEASE LOCKS 06694000 SPACE 5 06700000 */* P (,%STATSW) CLEAR CHANNEL PROGRAM AREA */ 06750000 ************************************************************ 06800000 MVI DCMCHPGM,N0 ZERO CHANNEL PROG AREA 06850000 MVC DCMCHPGM+N1(N111),DCMCHPGM ZERO CHANNEL PROG. AREA 06900000 L X8,DCMADCHP POINT TO CHANNEL PROGRAM 07000000 SPACE 5 07050000 */*%STATSW: D (NO,RMIKBD,YES,CLN) IS STATUS SWITCH BIT ON? */ 07100000 ************************************************************ 07150000 TM DCMR3FLG,DCMSTSWT IS STATUS SWITCH BIT ON 07200000 BNO RMIKBD NO, TEST NEXT FUNCTION 07250000 NI DCMR3FLG,X'FF'-DCMSTSWT YES, TURN IT OFF 07300000 SPACE 5 07350000 */*CLN: R CLEANUP MODULE (IEECVFTG) */ 07400000 ************************************************************ 07450000 L XFBRANCH,DCMNCLN LOAD CLEANUP ROUTINE ADDRESS 07500000 L X1PARM,DCMCXSVE RESTORE CXSA ADDRESS 07550000 BR XFBRANCH EXIT TO IEECVFTG 07600000 SPACE 5 07650000 */*RMIKBD: D (NO,WAITWRT,YES,RMIKEYBD) ENTRY TO UNLOCK KEYBOARD? */ 07700000 ************************************************************ 07750000 RMIKBD EQU * 07800000 TM DCMIOCM3,DCMOPRMI SEE IF RMI 07850000 BO RMIKEYBD YES, GO DO IT 07900000 SPACE 5 07950000 */*WAITWRT: D (NO,BYTE1,YES,WRITWAIT) ENTRY TO WRITE 'MESSAGES WAITING' 08000000 */*?*/ 08050000 ************************************************************ 08100000 WAITWRT EQU * 08150000 TM DCMCMSG1,DCMMSGWT SEE IF WRITE WAIT MSG 08200000 BO WRITWAIT YES-GO DO IT 08250000 TSTBYTE1 EQU * 08300000 TM DCMIOCM1,ANYBIT ANY WORK FOR THIS MODULE 08350000 BC ANYBT,BYTE1 YES - DO IT 08400000 SPACE 5 08450000 */*TSTBYTE2: D (NO,STREGEN,YES,IORTN2) ANY WORK FOR 2250 I/O 2? */ 08500000 ************************************************************ 08550000 TSTBYTE2 EQU * 08600000 TM DCMIOCM2,ANYBIT ANY WORK FOR MODULE 2A 08650000 BC ANYBT,IORTN2A YES - DO IT 08700000 TSTBYTE3 EQU * 08750000 TM DCMIOCM3,ANYBIT ANY WORK FOR MODULE 2B 08800000 BC ANYBT,IORTN2B YES - DO IT 08850000 B STREGEN GO TO RESTORE SCREEN 08900000 SPACE 5 08950000 */*BYTE1: D (NO,ALRMSND,YES,LGTPEN) ENTRY FOR RMI? */ 09000000 ************************************************************ 09050000 BYTE1 EQU * 09100000 TM DCMIOCM1,DCMDORMI ENTRY FOR RMI 09150000 BO LGTPEN YES-SEE IF LIGHT PEN DETECT 09200000 EJECT 09250000 */*ALRMSND: D (NO,WARNWRIT,YES,SOUNDALM) ENTRY TO SOUND ALARM? */ 09300000 ************************************************************ 09350000 ALRMSND EQU * 09400000 TM DCMIOCM1,DCMSOUND SOUND ALARM 09450000 BO SOUNDALM YES-GO DO IT 09500000 SPACE 5 09550000 */*WARNWRIT: D (NO,FULLWRT,YES,WRITWARN) ENTRY TO WRITE WARNING LINE? 09600000 */**/ 09650000 ************************************************************ 09700000 WARNWRIT EQU * 09750000 TM DCMIOCM1,DCMWRWRN WRITE WARNING LINE 09800000 BO WRITWARN YES-GO WRITE IT 09850000 SPACE 5 09900000 */*FULLWRT: D (NO,PARTWRT,YES,FULLMSG) ENTRY TO WRITE FULL MESSAGE AREA 09950000 */*?*/ 10000000 ************************************************************ 10050000 FULLWRT EQU * 10100000 TM DCMIOCM1,DCMWRMSG WRITE FULL MESSAGE AREA 10150000 BO FULLMSG YES-GO WRITE FULL 10200000 SPACE 5 10250000 */*PARTWRT: D (NO,INSTWRT,YES,PARTMSG) ENTRY TO WRITE PARTIAL MESSAGE 10300000 */*AREA? */ 10350000 ************************************************************ 10400000 PARTWRT EQU * 10450000 TM DCMIOCM1,DCMWRPAR WRITE PARTIAL MESSAGE AREA 10500000 BO PARTMSG YES-GO WRITE PARTIAL 10550000 EJECT 10600000 */*INSTWRT: D (NO,ENTRYWRT,YES,WRITEINS) ENTRY TO WRITE INSTRUCTION 10650000 */*LINE? */ 10700000 ************************************************************ 10750000 INSTWRT EQU * 10800000 TM DCMIOCM1,DCMWRINS WRITE INSTR LINE 10850000 BO WRITEINS YES-GO WRITE IT 10900000 SPACE 5 10950000 */*ENTRYWRT: D (NO,CURSORIN,YES,WRITENT) INSERT CURSOR OR WRITE ENTRY 11000000 */*AREA? */ 11050000 ************************************************************ 11100000 ENTRYWRT EQU * 11150000 TM DCMIOCM1,DCMINSC INSERT CURSOR 11200000 BO WRITENT YES-WRITE ENTRY AREA TO GET 1 CURS 11250000 TM DCMIOCM1,DCMWRENT WRITE ENTRY AREA 11300000 BO WRITENT YES-GO WRITE IT 11350000 SPACE 5 11400000 */*CURSORIN: D (NO,TSTBYTE2,YES,INCURSOR) ENTRY FOR INSERT CURSOR? */ 11450000 ************************************************************ 11500000 CURSORIN EQU * 11550000 TM DCMIOCM1,DCMINSC INSERT CURSOR 11600000 BO INCURSOR YES GO DO IT 11650000 B TSTBYTE2 GO TEST NEXT FUNCTION 11700000 SPACE 5 11750000 */*IORTN2: R 2250 I/O ROUTINE 2 (IEECVETQ) */ 11800000 ************************************************************ 11850000 IORTN2A EQU * 11900000 IORTN2B EQU * 11950000 ST XCHPGM,DCMDSAV SAVE PTR TO CHANNEL PROGRAM FOR IO2 12000000 L XFBRANCH,VCONIO2 LOAD SECOND LOAD ADDRESS 12050000 L X1PARM,DCMCXSVE RESTORE CXSA ADDRESS 12100000 BR XFBRANCH EXIT TO IEECVETQ 12110000 EJECT 12150000 */*WRITWAIT: P (,BYTE1) MOVE MSG IN. INDICATE WRITE WARN AND SOUND 12200000 */*ALARM */ 12250000 ************************************************************ 12300000 WRITWAIT EQU * 12350000 MVI DCMWARN+N37,BLANK MOVE BLANK IN 12400000 MVC DCMWARN+N38(N35),DCMWARN+N37 PROPAGATE IT 12450000 MVC DCMWARN+N51(N23),WAITMSG MOVE IN WAIT MSG 12500000 NI DCMCMSG1,N255-DCMMSGWT TURN BIT OFF 12550000 NI DCMIOCM2,X'FF'-DCMBLWRR DON'T ERASE WARNING LINE 12600000 OI DCMIOCM1,DCMSOUND+DCMWRWRN WRITE LINE AND SOUND ALARM 12650000 B TSTBYTE1 GO TEST NEXT FUNCTION 12700000 SPACE 5 12750000 */*LGTPEN: D (NO,RMIKEYBD,YES,XYCOOR) LIGHT PEN DETECT? */ 12800000 ************************************************************ 12850000 LGTPEN EQU * 12900000 NI DCMIOCM1,N255-DCMDORMI TURN OFF BIT TO INDICATE RMI 12950000 L XWORK1,UCMUCB 13000000 USING UCBOB,XWORK1 UCB ADDRESSABILITY MB YM5671 13010000 TM UCBSNS+N1,LPDET MB YM5671 13050000 BO XYCOOR YES-GET X,Y COORDINATES 13100000 OI DCMIOUNQ,DCMRDARM INDICATE READ MUST BE PERFORMED 13150000 OI DCMCOM1,DCMCOMRM INDICATE RMI HAS BEEN PERFORMED 13200000 SPACE 5 13250000 */*RMIKEYBD: P (,WAITWRT) BUILD RMI CCW */ 13300000 ************************************************************ 13350000 RMIKEYBD EQU * 13400000 LA XWORK1,DCMDSAV GET ADDRESS OF RMI READ AREA 13450000 ST XWORK1,DCMCHPGM PUT RMI ADDR IN CHANNEL PGM 13500000 MVI DCMCHPGM,RMICODE PUT RMI CODE IN CHANNEL PROGRAM 13550000 MVI DCMCHPGM+N7,N3 PUT BYTE COUNT IN 13600000 MVI DCMCHPGM+N4,CHAIN CHAIN CCW 13650000 NI DCMIOCM3,N255-DCMOPRMI TURN OFF BIT TO UNLOCK KEYBOARD 13700000 LA XCHPGM,N8(XCHPGM) UPDATE CCW PTR 13750000 B WAITWRT GO TO TEST NEXT FUNCTION 13800000 EJECT 13850000 */*XYCOOR: P (,%LPCURSX) GET X,Y COORDINATES & SAVE LINE & CHARACTER 13900000 */*POSITION */ 13950000 */*%LPCURSX: R L/P CURSOR (IEECVETF) */ 14000000 ************************************************************ 14050000 XYCOOR EQU * 14100000 LH XWORK2,UCBSNS+N2 XY DATA FOR LP DETECT MB YM5671 14150000 SH XWORK2,DCMWARN+N76 GET START OF BUFFER 14200000 SLA XWORK2,N19 ISOLATE ADDRESS 14250000 SRDA XWORK2,N51 GET BEFINNING OF BUFFER 14300000 SH XKEEP,H10 ALLOW FOR GRAPHIC ORDERS 14350000 D XWORK2,F74 DIVIDE BY LINE LENGTH 14400000 STC XWORK2,DCMDSAV+N1 SAVE CHAR POS IN LINE 14450000 STC XKEEP,DCMDSAV SAVE LINE NUMBER 14500000 MVI UCBSNS+N1,N0 ZERO LP INDICATOR IN UCB MB YM5671 14550000 L XFBRANCH,DCMNLPCR LOAD LIGHT-PEN/CURSOR ADDRESS 14600000 L X1PARM,DCMCXSVE RESTORE CXSA ADDRESS 14650000 BR XFBRANCH EXIT TO IEECVETF 14660000 SPACE 5 14700000 */*SOUNDALM: P (,WARNWRIT) BUILD SOUND ALARM CCW */ 14750000 ************************************************************ 14800000 SOUNDALM EQU * 14850000 NI DCMIOCM1,N255-DCMSOUND 14900000 MVI N0(XCHPGM),SOUND PUT OP CODE INTO CCW 14950000 MVI N4(XCHPGM),CHAIN CHAIN CCWS 15000000 MVI N7(XCHPGM),N2 DATA BYTES 15050000 LA XCHPGM,N8(XCHPGM) UPDATE CCW ADDR 15100000 B WARNWRIT SEE IF WRITE WARNING LINE 15150000 EJECT 15200000 */*WRITWARN: P (,FULLWRT) BUILD WRITE WARNING LINE CCWS */ 15250000 ************************************************************ 15300000 WRITWARN EQU * 15350000 NI DCMIOCM1,N255-DCMWRWRN TURN OFF WARNING LINE BIT 15400000 LA XPOINT,DCMBAWRN WARNING LINE BUFFER ADDRESS 15450000 BAL XRTRN,BUILDSET BUILD SET BUFFER CCW 15500000 LA XKEEP,DCMWARN WARNING LINE 15550000 LH XWORK1,H78 LENGTH OF WRITE 15600000 BAL XRTRN,BUILDWRT BUILD WRITE CCW 15650000 B FULLWRT GO TEST NEXT FUNCTION 15700000 EJECT 15750000 */*FULLMSG: P (,NULLMSG) BUILD WRITE FULL SCREEN CCWS */ 15800000 ************************************************************ 15850000 FULLMSG EQU * 15900000 NI DCMIOCM1,N255-DCMWRMSG-DCMWRPAR TURN BITS OFF 15950000 LA XPOINT,DCMBASRT GET PTR TO SCREEN IMAGE BUFFER 16000000 BAL XRTRN,BUILDSET BUILD SET BUFFER CCW 16050000 L XWORK1,DCMWTBUF END OF BUFFER 16100000 LA XKEEP,DCMSRT BEGINNING ORDERS 16150000 SR XWORK1,XKEEP 16200000 BAL XRTRN,BUILDWRT BUILD WRITE CCWS 16250000 BAL XRTRN,NULLMSG GO TO INSERT NULLS 16300000 B INSTWRT GO TEST NEXT FUNCTION 16350000 SPACE 5 16400000 */*NULLMSG: P (,INSTWRT) NULL EACH LINE BEYOND TEXT */ 16450000 ************************************************************ 16500000 NULLMSG EQU * 16550000 LH XKEEP,DCMMSGAL TOTAL MSGS 16600000 L XWORK4,DCMLSCRN LAST MSG LINE 16650000 AH XWORK4,DCMCORLN END OF MSGS 16700000 BCTR XWORK4,N0 LAST CHACTER OF MSGS 16750000 LR XWORK1,XWORK4 16800000 LH XNULLEND,NULLNG NUMBER OF CHARACTERS TO NULL 16850000 LOOP EQU * 16900000 CLI N0(XWORK4),NEWLINE IS LAST CHAR N/L 16950000 BE NEXTCHAR YES, CHECK FOR BLANKS 17000000 CLI N0(XWORK4),BLANK IS CHAR BLANK 17050000 BNE NEXTLINE NO, LINE FULL OF DATA 17100000 MVI N0(XWORK4),NEWLINE YES, REPLACE WITH N/L CHAR 17150000 NEXTCHAR BCTR XWORK4,N0 LOOK AT NEXT CHAR 17200000 CLI N0(XWORK4),BLANK IS IT BLANK 17250000 BNE NEXTLINE NO, DATA HAS BEEN REACHED 17300000 MVI N0(XWORK4),NULL YES, REPLACE IT WITH NULL 17350000 BCT XNULLEND,NEXTCHAR END OF CHAR SEARCH TO NULL 17400000 NEXTLINE EQU * 17450000 LH XNULLEND,NULLNG REINIT NULLING LENGTH 17500000 SH XWORK1,DCMCORLN LOOK AT NEXT LINE 17550000 LR XWORK4,XWORK1 INITIALIZE CHAR POINTER 17600000 BCT XKEEP,LOOP CHECK FOR END OF LINES 17650000 BR XRTRN YES, RETURN TO CALLER 17700000 EJECT 17750000 */*PARTMSG: P (,INSTWRT) BUILD WRITE PARTIAL CCWS */ 17800000 ************************************************************ 17850000 PARTMSG EQU * 17900000 NI DCMIOCM1,N255-DCMWRPAR TURN OFF BIT 17950000 SR XWORK1,XWORK1 CLEAR WORK1 REG 18000000 LH XPOINT,DCMBAM1 GET START OF MSG AREA 18050000 IC XWORK1,DCMLINEN GET LINE NO 18100000 BCTR XWORK1,N0 DECREMENT BY 1 18150000 MH XWORK1,DCMCORLN GET INDEX 18200000 LR XWORK3,XWORK1 SAVE LENGTH 18250000 AR XWORK1,XPOINT ADD BEGINNING ADDR TO GET ID ADDR 18300000 STH XWORK1,DCMBADLN HOLD IN BUFFER ADDR AREA 18350000 LA XPOINT,DCMBADLN POINT TO BUFFER ADDR AREA 18400000 BAL XRTRN,BUILDSET BUILD SET BUF CCW 18450000 L XKEEP,DCMASCRN POINT TO START OF MESSAGE AREA 18500000 AR XKEEP,XWORK3 POINT TO LINE TO WRITE FROM 18550000 LH XWORK1,DCMBYTCT GET WRITE LENGTH 18600000 BAL XRTRN,BUILDWRT BUILD WRITE CCW 18650000 BAL XRTRN,NULLMSG GO TO INSERT NULLS 18700000 B INSTWRT GO TEST NEXT FUNCTION 18750000 SPACE 5 18800000 */*WRITEINS: P (,ENTRYWRT) BUILD WRITE INSTRUCTION LINE CCWS */ 18850000 ************************************************************ 18900000 WRITEINS EQU * 18950000 NI DCMIOCM1,N255-DCMWRINS TURN OFF INS LINE WRITE BIT 19000000 LA XPOINT,DCMBAINS POINT TO BUFFER ADDRESS INS LINE 19050000 BAL XRTRN,BUILDSET BUILD SET BUF CCW 19100000 L XKEEP,DCMAINS GET ADDR TO WRITE FROM 19150000 LH XWORK1,H74 GET WRITE LENGTH 19200000 AH XWORK1,TWO ADD LENGTH OF GRAPHIC ORDER 19250000 BAL XRTRN,BUILDWRT BUILD WRITE SCREEN CCW 19300000 B ENTRYWRT SEE IF ENTRY AREA IS TO BE WRITTEN 19350000 EJECT 19400000 */*WRITENT: P (,CURSORIN) BUILD WRITE ENTRY AREA CCWS */ 19450000 ************************************************************ 19500000 WRITENT EQU * 19550000 NI DCMIOCM1,N255-DCMWRENT TURN OFF WRITE ENTRY AREA BIT 19600000 LA XPOINT,DCMBAENT POINT TO ENTRY AREA BUFFER ADDRESS 19650000 BAL XRTRN,BUILDSET BUILD 19700000 LA XKEEP,DCMENTRY ADDRESS OF ENTRY AREA 19750000 LH XWORK1,DCMCORLN GET LENGTH OF ONE LINE 19800000 SLL XWORK1,N1 DOUBLE LENGTH 19850000 AH XWORK1,TWO ADD LENGTH OF GRAPHIC ORDER 19900000 BAL XRTRN,BUILDWRT BUILD WRITE CCW 19950000 B CURSORIN SEE IF INSERT CURSOR 20000000 EJECT 20050000 */*INCURSOR: P (,TSTBYTE2) BUILD INSERT CURSOR CCWS */ 20100000 ************************************************************ 20150000 INCURSOR EQU * 20200000 NI DCMIOCM1,N255-DCMINSC TURN OFF BIT 20250000 SR XWORK1,XWORK1 CLEAR WORK REG 20300000 IC XWORK1,DCMCULNO GET LINE NUMBER 20350000 BCTR XWORK1,N0 DECREMENT IT BY ONE 20400000 MH XWORK1,DCMCORLN 20450000 LH XKEEP,DCMBAENT GET ENTRY AREA BUFFER ADDR 20500000 AR XKEEP,XWORK1 GET CORRECT ENTRY AREA LINE 20550000 IC XWORK1,DCMPOSCU GET CHARACTER POSITION 20600000 BCTR XWORK1,N0 DECREMENT BY ONE 20650000 AR XKEEP,XWORK1 GET ADDRESS TO INS CURSOR 20700000 STH XKEEP,DCMBAINC 20750000 LA XPOINT,DCMBAINC GET PTR FOR INSERT CURSOR 20800000 BAL XRTRN,BUILDSET BUILD SET BUFFER CCW 20850000 MVI N0(XCHPGM),INSERT PUT OP CODE IN 20900000 BAL XRTRN,INCCW BUILD CCW 20950000 B TSTBYTE2 GO TEST NEXT FUNCTION 21000000 SPACE 5 21050000 BUILDSET EQU * 21100000 ST XPOINT,N0(XCHPGM) PUT BUF ADD PTR INTO CCW 21150000 MVI N0(XCHPGM),SETBUF PUT COMMAND CODE INTO CCW 21200000 INCCW EQU * 21250000 MVI N4(XCHPGM),CHAIN CHAIN CCW'S 21300000 MVI N7(XCHPGM),N2 PUT BYTE COUNT IN 21350000 LA XCHPGM,N8(XCHPGM) UPDATE CCW POINTER 21400000 BR XRTRN RETURN TO CALLER 21450000 BUILDWRT EQU * 21500000 ST XKEEP,N0(XCHPGM) SAVE WRITE FROM ADDRESS 21550000 MVI N0(XCHPGM),WRITE PUT OP CODE IN CCW 21600000 MVI N4(XCHPGM),CHAIN CHAIN CCW'S 21650000 STH XWORK1,N6(XCHPGM) PUT BYTE COUNT IN 21700000 LA XCHPGM,N8(XCHPGM) UPDATE CCW POINTER 21750000 BR XRTRN RETURN 21800000 EJECT 21850000 */*STREGEN: P (,ENEXCP) BUILD START REGEN CCW */ 21900000 ************************************************************ 21950000 STREGEN EQU * 22000000 LA XWORK1,DCMBASRT GET START OF REGEN 22050000 ST XWORK1,N0(XCHPGM) PUT ADDRESS IN CCW 22100000 MVI N0(XCHPGM),STARTREG MOVE OP CODE IN 22150000 MVI N4(XCHPGM),CHAIN PUT CHAIN CCW 22200000 MVI N7(XCHPGM),N2 MOVE BYTE COUNT IN 22250000 LA XCHPGM,N8(XCHPGM) UPDATE CCW POINTER 22300000 B ENEXCP GO TO STOP CCW AND EXIT 22350000 SPACE 5 22400000 */*ENEXCP: P (,EXCP) REMOVE CHAIN FLAG FROM LAST CCW */ 22450000 ************************************************************ 22500000 ENEXCP EQU * 22550000 SH XCHPGM,EIGHT UPDATE CCW POINTER 22600000 MVI N4(XCHPGM),STOP STOP CCW CHAIN 22650000 SPACE 5 22700000 */*EXCP: I (,%PRCEXIT) EXCP */ 22750000 ************************************************************ 22800000 EXCP EQU * 22850000 L XFBRANCH,CSAXB ADDRESS GETLOCK SUBR JE YM8371 22860003 LR X1PARM,XCXSA PASS CXSA ADDRESS IN REG 1 JE YM8371 22870003 BALR XERTRN,XFBRANCH OBTAIN LOCKS JE YM8371 22880003 XC UCMECB,UCMECB CLEAR ECB 22950003 OI UCMSTS,UCMBF TURN ON BUSY BIT 22960003 L XWORK1,UCMDCB GET DCB ADDRESS 23000000 L XWORK1,N28(XWORK1) GET IOB ADDRESS 23050000 L XFBRANCH,CSAXC ADDRESS FREELOCK SUBR JE YM8371 23060003 LR X1PARM,XCXSA PASS CXSA ADDRESS IN REG 1 JE YM8371 23070003 BALR XERTRN,XFBRANCH RELEASE LOCKS JE YM8371 23080003 EXCP (XWORK1) INITIATE I/O 23100000 SPACE 5 23200000 */*%PRCEXIT: R PROCESSOR 1 (IEECVET1) */ 23250000 ************************************************************ 23300000 EXIT EQU * 23350000 L XFBRANCH,DCMNPROC LOAD PROC 1 ADDRESS 23400000 L X1PARM,DCMCXSVE RESTORE CXSA ADDRESS 23450000 BR XFBRANCH EXIT TO IEECVET1 23500000 EJECT 23600000 * CONSTANTS 23650000 VCONIO2 DC V(IEECVETQ) SECOND LOAD ADDRESS 23660000 EIGHT DC H'8' COUNT FOR UPDATE CCW PTR 23700000 F74 DC F'74' LENGTH OF ONE LINE 23750000 H10 DC H'10' MINIMUM SHIFT LENGTH 23800000 H74 DC H'74' LENGTH FOR INSTR WRITE 23850000 H78 DC H'78' LENGTH OF WARNING LINE WRITE 23900000 NULLNG DC H'69' NULLING LENGTH 23950000 TWO DC H'2' INDEX FACTOR FOR COUNTS 24000000 WAITMSG DC C'IEE159E MESSAGE WAITING' MSGS WAITING WARNING 24050000 * EQUATES 24100000 ID1 EQU C'E' 1ST CHARACTER OF CSECT ID 24110000 ID2 EQU C'P' 2ND CHARACTER OF CSECT ID 24120000 ANYBIT EQU X'FF' MASK TO TEST ALL BITS 24150000 ANYBT EQU 7 BRANCH IF ANY BIT ON 24200000 BLANK EQU X'40' BLANK 24250000 CHAIN EQU X'60' CHAIN CCW CODE 24300000 INSERT EQU X'0F' INSERT CURSOR 24350000 LPDET EQU X'A0' BIT FOR LP DETECT 24400000 NEWLINE EQU X'15' 24450000 NULL EQU X'00' NULL CHARACTER 24500000 N0 EQU 0 NUMBER 24550000 N1 EQU 1 NUMBER 24600000 N2 EQU 2 NUMBER 24650000 N3 EQU 3 NUMBER 24700000 N4 EQU 4 NUMBER 24750000 N6 EQU 6 NUMBER 24800000 N7 EQU 7 NUMBER 24850000 N8 EQU 8 NUMBER 24900000 N19 EQU 19 NUMBER 24950000 N23 EQU 23 NUMBER 25000000 N24 EQU 24 NUMBER 25050000 N28 EQU 28 NUMBER 25100000 N35 EQU 35 NUMBER 25150000 N37 EQU 37 NUMBER 25200000 N38 EQU 38 NUMBER 25250000 N51 EQU 51 NUMBER 25300000 N76 EQU 76 NUMBER 25350000 N111 EQU 111 LENGTH OF CCW AREA MINUS ONE 25400000 N255 EQU 255 NUMBER 25450000 RMICODE EQU X'0E' RMI CODE 25500000 SETBUF EQU X'07' STOP REGEN CODE 25550000 SOUND EQU X'0B' SOUND ALARM 25600000 STARTREG EQU X'27' START REGEN CODE 25650000 STOP EQU X'20' STOP CCW CODE 25700000 WRITE EQU X'01' WRITE 25750000 SPACE 5 25800000 */*IEECVETP: END */ 25850000 SPACE 2 25900000 TITLE 'IEECVETP IGC5P07B 2250 I/O 1 RESIDENT DISPLAY CO*25950000 NTROL MODULE' 26000000 IEERDCM 26050000 TITLE 'IEECVETP IGC5P07B 2250 I/O 1 PAGEABLE DISPLAY C *26150000 ONTROL MODULE' 26200000 DCMSTRT DSECT 26250000 IEECDCM DEVICE=B 26300000 TITLE 'IEECVETP IGC5P07B 2250 I/O 1 CXSA' 26350000 IHACTM CXSA 26450000 TITLE 'IEECVETP IGC5P07B 2250 I/O 1 UCB' 26460000 ETPUCB DSECT 26470000 IEFUCBOB 26480000 TITLE 'IEECVETP IGC5P07B 2250 I/O 1 UNIT CONTROL MOD*26500000 ULE' 26550000 IEECUCM FORMAT=NEW 26650000 END 26700000