* /* START OF SPECIFICATIONS **** 00050000 *02* PROCESSOR = ASSEMBLER; 00100000 **** END OF SPECIFICATIONS ***/ 00150000 TITLE 'IEECVETU IGC5U07B 3277 I/O 1' 00200000 IEECVETU CSECT 00250000 *A131600,131700,131800 MH Y02132 00260003 *D133500 MH Y02132 00270003 *A157100 MH Y01563 00280003 */*IEECVETU: CHART */ 00300000 */* HEADER 00350000 */* CHART ?? IEECVETU IGC5U07B 3277 I/O ROUTI 00400000 */*NE 1 PAGE # */ 00450000 */* E IEECVETU */ 00500000 * STATUS 00550000 * CHANGE LEVEL 0.015 00600000 * 00650000 * FUNCTION 00700000 * THIS IS A DEVICE DEPENDENT ROUTINE TO PERMORM THE REQUESTED I/O IN 00750000 * PROPER SCREEN FORMAT. 00800000 * 00850000 * ENTRY POINTS 00900000 * IEECVETU FOR ALL FUNCTIONS 00950000 * 01000000 * OPERATION 01050000 * THE COMMUNICATION BYTES IN THE DCM ARE CHECKED AGAINST 01100000 * PRE-ESTABLISHED BIT SETTINGS TO DETERMINE WHICH TYPE/FORMAT OF 01150000 * I/O IS TO BE PERFORMED. EACH POSSIBLE REQUEST IS CHECKED AND, IF 01200000 * APPLICABLE, THE APPROPRIATE CCWS ARE BUILT UNTIL ALL OF THE 01250000 * DESIRED I/O REQUESTS ARE SET UP IN THE CHANNEL PROGRAM. THEY MAY 01300000 * BE TO: BLANK THE ENTRY AREA, BLANK THE WARNING LINE, INITIALIZE 01350000 * THE INSTRUCTION LINE, READ THE ENTRY AREA, WRITE 'MESSAGES 01400000 * WAITING', RESTORE THE KEYBOARD. A TEST IS THEN MADE 01450000 * TO DETERMINE IF ANY WORK NEEDS TO BE DONE BY 3277 I/O 2. 01500000 * IF SO, AN XCTL IS TAKEN TO IEECVETV TO COMPLETE CCW BUILDING. 01550000 * IF NOT AN EXCP IS ISSUED AND CONTROL IS RETURNED TO PROCESSOR 01600000 * 1 (IEECVET1). 01650000 * 01700000 * INPUT 01750000 * THE INDICATION OF THE DESIRED I/O IS RECEIVED IN I/O 01800000 * COMMUNICATION BYTES 2 AND 3 IN THE DISPLAY CONTROL MODULE. 01850000 * 01900000 * OUTPUT 01950000 * WRITING OF WHAT IS REQUESTED BY THE OTHER MODULES. 02000000 * 02050000 * EXTERNAL REFERENCES 02100000 * NONE. 02150000 * 02200000 * EXITS, NORMAL 02250000 * IEECVET1 PROCESSOR 1 WHEN WORK IS COMPLETE. 02300000 * IEECVETV 3277 I/O 1 WHEN MORE CCWS ARE TO BE BUILT. 02350000 * IEECVETF L/P CURSOR ON A LIGHT PEN DETECT OR ENTER 02400000 * WITH CURSOR OUTSIDE THE ENTRY AREA. 02450000 * IEECVFTG CLEANUP ON A STATUS SWITCH. 02500000 * 02550000 * EXITS, ERROR 02600000 * NONE. 02650000 * 02700000 * TABLES/WORK AREAS 02750000 * DISPLAY CONTROL MODULE (CONTAINED IN DSECT AT END OF LISTING). 02800000 * 02850000 * ATTRIBUTES 02900000 * REFRESHABLE, PRIVILEGED, TYPE 4 SVC. 02950000 * 03000000 * CHARACTER CODE DEPENDENCY 03050000 * NONE. 03100000 * 03150000 * NOTES 03200000 * THE FOLLOWING FLAG BITS ARE USED: 03250000 * THE ACTION COLUMN INDICATES WHETHER THE BIT IS TURNED ON, OFF 03300000 * OR JUST TESTED BY THIS MODULE. 03350000 * 03400000 * NAME ACTION FUNCTION 03450000 * 03500000 * DCMCOM1 03550000 * DCMIOPRD ON READ HAS BEEN PERFORMED 03600000 * DCMIOCM2 03650000 * DCMBLENT OFF/TEST BLANK ENTRY AREA 03700000 * DCMBLWRL OFF/TEST BLANK LEFT HALF WARNING LINE 03750000 * DCMBLWRR OFF/TEST BLANK RIGHT HALF WARNING LINE 03800000 * DCMINSSH OFF/TEST INITIALIZE INSTRUCTION LINE 03850000 * DCMWINFD OFF/TEST WRITE INFORMATION DISPLAY 03900000 * DCMERASE OFF/TEST ERASE SCREEN 03950000 * DCMIOCRD OFF/TEST READ ENTRY AREA 04000000 * DCMWRASY OFF/TEST WRITE ASYNCHRONOUS ERROR MESSAGE 04050000 * DCMIOCM3 04100000 * DCMWRPFK OFF/TEST ALTER PFK LINE 04150000 * DCMLTPFK OFF/TEST LIGHT ALLOCATED PFKS 04200000 * DCMACPFK OFF/TEST EXTINGUISH PFKS 04250000 * DCMSSRG OFF/TEST SUPPRESS REGENERATION 04300000 * DCMIOUNQ 04350000 * DCMINERR OFF ERROR INSTRUCTION LINE 04400000 * DCMINNOR ON NORMAL INSTRUCTION LINE 04450000 * DCMUTILT 04500000 * DCMUTILB ON/TEST WRITE CCW EXISTS 04550000 *********************************************************************** 04600000 EJECT 04650000 * REGISTER EQUATES 04700000 *********************************************************************** 04750000 X1PARM EQU 1 04760000 XERTRN EQU 14 04762000 XFBRANCH EQU 15 04770000 R1PARM EQU 1 PARAMETER REGISTER 04800000 R2COMP EQU 2 COMPENSATION REG 04850000 R3WORK EQU 3 WORK REGISTER 04900000 R3RMSGAL EQU 3 STATUS SW WORK REG 04950000 R4WORK EQU 4 WORK REGISTER 05000000 R4ADDRL EQU 4 STATUS SW WORK REG 05050000 R5KEEP EQU 5 WORK REGISTER 05100000 R5WTINT EQU 5 STATUS SW WORK REG 05150000 R6WRTSUB EQU 6 SUBROUTINE POINTER 05200000 R6LSCRN EQU 6 STATUS SW WORK REG 05250000 R7DCMENT EQU 7 DCM ENTRY BASE REGISTER 05300000 R8CHPGM EQU 8 POINTER TO CHANNEL PROGRAM AREA 05350000 RADCMBAS EQU 10 TRANSIENT DCM BASE REGISTER 05400000 RBBASE EQU 11 PROGRAM BASE REGISTER 05450000 RCCXSA EQU 12 CXSA BASE REGISTER 05500000 RDUCMENT EQU 13 UCMENTRY BASE REGISTER 05550000 RERTRN EQU 14 WORK REGISTER 05600000 RFRESBAS EQU 15 RESIDENT DCM BASE 05650000 EJECT 05700000 START BALR RBBASE,N0 SET UP 05750000 USING *,RBBASE ADDRESSABILITY 05800000 B ICATCH BRANCH AROUND EYECATCHER 05850000 DC C'15 MODULE IGC5U07B, FICHE IEECVETU ' EYECATCHER AND 05900000 ZAPAREA DC 12C'ZAP' RESERVED FOR FIELD MODIFICATION 05950000 ICATCH LR RCCXSA,R1PARM SAVE CXSA BASE 06000000 USING CXSA,RCCXSA DECLARE CXSA ADDRESS 06050000 L RDUCMENT,CSAUCM GET UCM ENTRY ADDRESS 06150000 USING UCMLIST,RDUCMENT DECLARE UCMENTRY BASE 06200000 L RFRESBAS,UCMXB GET DCM POINTER 06250000 USING DCMTSRT,RFRESBAS 06300000 L RADCMBAS,DCMADTRN GET BASE FOR TRANSIENT DCM 06350000 USING DCMSTRT,RADCMBAS DECLARE DCM BASE 06400000 L R7DCMENT,DCMAENTR GET DCM ENTRY POINTER 06450000 USING DCMENTRY,R7DCMENT DECLARE BASE 06500000 MVC DCMTRACE(DCMTRLEN),DCMTRAC2 SHIFT OLD TRACE ENTRIES 06550000 MVI DCMTREN1,ID1 PUT CSECT ID INTO 06560000 MVI DCMTREN2,ID2 NEW TRACE ENTRY 06570000 LR R3WORK,XFBRANCH 06572000 L XFBRANCH,CSAXC ADDRESS FREELOCK SUBROUTINE 06580000 LR X1PARM,RCCXSA PASS CXSA ADDRESS IN REG 1 06590000 BALR XERTRN,XFBRANCH RELEASE LOCKS 06592000 LR XFBRANCH,R3WORK 06594000 TOP EQU * 06596000 NI DCMUTILT,N0 CLEAR UTILITY FLAGS 06600000 EJECT 06650000 */*%START: P CLEAR CHANNEL PROGRAM AREA */ 06700000 ************************************************************ 06750000 MVI DCMCHPGM,N0 ZERO CHANNEL PROG AREA 06800000 MVC DCMCHPGM+N1(N95),DCMCHPGM ZERO CHANNEL PROG. AREA 06850000 MVI DCMWCC,N0 CLEAR THE WCC 06900000 LA R8CHPGM,DCMCCWS POINT TO CHANNEL PROGRAM 06950000 MVC N8(N8,R8CHPGM),N0(R8CHPGM) RESTORE SELECT CCW 07000000 LA R8CHPGM,N16(R8CHPGM) POINT PAST SELECT CCW 07050000 SPACE 5 07100000 */* D (YES,,NO,TESTOUT) IS STATUS SWITCH REQUIRED? */ 07150000 ************************************************************ 07200000 TM DCMR3FLG,DCMSTSWT IS STATUS SWITCH REQUIRED 07250000 BNO TESTOUT NO, TEST NEXT FUNCTION 07300000 SPACE 5 07350000 */*TEST2: D (NO,TESTEXIT,YES,TYPE) IS REOPEN BIT ON? */ 07400000 ************************************************************ 07450000 TEST2 TM DCMCS,DCMCSO IS REOPEN BIT ON 07500000 BNO TESTEXIT NO, TEST FOR SECOND PASS 07550000 SPACE 5 07600000 */*TYPE: D (YES,,NO,REOP) IS THIS A MODEL 2 */ 07650000 ************************************************************ 07700000 TYPE CLI DCMLGNTH+N1,MOD2LGN YES, IS THIS A MODEL 2 07750000 BNE REOP NO, DON'T MODIFY DCM 07800000 SPACE 5 07850000 */* D (NO,OUTONLY,YES,) CHANGING TO FULL CAPABIL? */ 07900000 ************************************************************ 07950000 TM UCMDISP,UCMDISPE ARE WE CHANGING TO FULL CAPACITY 08000000 BNO OUTONLY NO, SET PARAMETERS 08050000 SPACE 5 08100000 */* P (,COMMON) SET UP FULL CAPABILITY PARAMETERS */ 08150000 ************************************************************ 08200000 LA R3RMSGAL,N19 YES, SET PARMS FOR FULL CAP 08250000 LA R4ADDRL,DCMMSG19 LAST MESSAGE LINE SCT 08300000 LA R5WTINT,DCMBLNK1 LAST MESSAGE LINE + 1 08350000 LA R6LSCRN,DCMMLAST LAST LINE ON SCREEN 08400000 MVI DCMSEC20,DCMSECST STOP SECONDARY SCT 08450000 MVC DCMENTRY-N3(N3),INENT MODIFY ATT-DES FOR 08500000 * FULL CAP OPERATION 08550000 MVI DCMPFKAR,DIGIT MAKE PFK LINE LOOK FULL 08600000 B COMMON GO TO INSERT VALUES 08650000 SPACE 5 08700000 */*OUTONLY: P (,COMMON) SET UP OUTPUT ONLY PARAMETERS */ 08750000 ************************************************************ 08800000 OUTONLY LA R3RMSGAL,N23 NUMBER OF MESSAGE LINES 08850000 LA R4ADDRL,DCMMSG23 LAST MESSAGE LINE 08900000 LA R5WTINT,DCMWARN LAST MESSAGE LINE + 1 08950000 LA R6LSCRN,DCMENTR2 LAST LINE ON SCREEN 09000000 MVI DCMSEC23+N1,DCMSECST STOP SECONDARY SCT 09050000 MVI DCMSEC20,N0 REMOVE OLD STOPPER 09100000 MVI DCMMSG20,N0 REMOVE OLD SCT STOPPER 09150000 MVI DCMINSTR-N2,DETECT MAKE OLD INST LINE DETECTABLE 09200000 MVC DCMPFKAR(N6),SKELETON INSERT ORDERS IN 09250000 MVC DCMENTR2-N6(N6),SKELETON SPECIAL LINES 09300000 MVC DCMPFKAR+N1(N2),PFKADDR PLUG ADDRESSES 09350000 MVC DCMENTR2-N5(N2),ENT2ADDR INTO SKELETONS 09400000 MVC DCMENTRY-N3(N3),DCMENTR2-N3 DUP SF-ATT-DES 09450000 SPACE 5 09500000 */*COMMON: P PUT PARAMETERS IN DCM */ 09550000 ************************************************************ 09600000 COMMON STH R3RMSGAL,DCMMSGAL UPDATE NUMBER OF MSG LINES 09650000 MVC DCMRMSAL(N2),DCMMSGAL IN BOTH DCMS 09700000 ST R4ADDRL,DCMADDRL UPDATE ADDR OF LAST SCT 09750000 ST R5WTINT,DCMWTINT UPDATE END OF FULL SCREEN WRITE 09800000 ST R6LSCRN,DCMLSCRN UPDATE LAST MESSAGE LINE 09850000 MVI N2(R4ADDRL),DCMMSGST STOP SCT TABLE 09900000 SPACE 5 09950000 */*REOP: P INDICATE REOPEN AND SECOND PASS */ 10000000 ************************************************************ 10050000 REOP OI DCMCS,DCMCSO INDICATE REOPEN 10100000 OI DCMFLG1,DCMOUTPT INDICATE SECOND PASS 10150000 SPACE 5 10200000 */*CLNEXIT: P (,EXIT) SET EXIT TO CLEANUP (IEECVFTG) */ 10250000 ************************************************************ 10300000 CLNEXIT L XFBRANCH,DCMNCLN LOAD CLEANUP ROUTINE ADDRESS 10350000 B EXIT EXIT TO IEECVFTG 10450000 SPACE 5 10500000 */*TESTEXIT: D (NO,TYPE,YES,) IS THIS SECOND PASS? */ 10550000 ************************************************************ 10600000 TESTEXIT TM DCMFLG1,DCMOUTPT IS THIS SECOND PASS 10650000 BNO TYPE NO, MODIFY DCM 10700000 SPACE 5 10750000 */*SWTCHOFF: P TURN OFF STATUS SWITCH AND SECOND PASS FLAGS */ 10800000 ************************************************************ 10850000 SWTCHOFF NI DCMR3FLG,X'FF'-DCMSTSWT TURN OFF STATUS SWITCH BIT 10900000 NI DCMFLG1,X'FF'-DCMOUTPT TURN OFF SECOND PASS SWITCH 10950000 OI DCMIOCM3,DCMWRPFK FORCE PFK LINE WRITE 11000000 SPACE 5 11050000 */* D (NO,%START,YES,TIMEXIT) IS CONSOLE NOW MESSAGE STREAM? */ 11100000 ************************************************************ 11150000 TM UCMDISP,UCMDISPF IS IT NOW MESSAGE STREAM 11200000 BNO TOP NO, GO BACK TO DO I/O 11250000 SPACE 5 11300000 */*TIMEXIT: P SET UP ROLL DELETE MODE */ 11350000 ************************************************************ 11400000 TIMEXIT MVC DCMDEL(N2),RD FORCE ROLL DELETE MODE 11450000 OI DCMOPTST,DCMOPRLL TURN ON ROLL BIT 11500000 NI DCMOPTST,X'FF'-DCMOPTAD AUTO DELETE BIT OFF 11550000 OI DCMTIMES,DCMOTTMM+DCMOPTTI GO FROM T/I TO MESG 11600000 OI DCMCMSG3,DCMCMRLL WRITE ROLL MODE MESSAGE 11650000 SPACE 5 11700000 */* P (,EXIT) SET EXIT TO TIMER/ INTERPRETER (IEECVETK) */ 11750000 ************************************************************ 11800000 L XFBRANCH,DCMNTIMR LOAD TIMER INTERPRETER ADDRESS 11850000 B EXIT EXIT TO IEECVETK 11900000 SPACE 5 11950000 */*TESTOUT: D (NO,WAITWRT,YES,) IS THIS AN OUTPUT ONLY DEVICE? */ 12000000 ************************************************************ 12050000 TESTOUT TM UCMDISP,UCMDISPD IS THIS AN OUTPUT ONLY DEVICE 12100000 BNO WAITWRT NO, PERFORM ALL FUNCTIONS 12150000 SPACE 5 12200000 */* P CANCEL FUNCTIONS WHICH DO NOT APPLY */ 12250000 ************************************************************ 12300000 NI DCMIOCM1,X'FF'-DCMWRINS-DCMWRENT-DCMINSC YES, TURN OFF 12350000 NI DCMIOCM2,X'FF'-DCMBLENT-DCMINSSH-DCMIOCRD-DCMWINFD BITS 12400000 NI DCMIOCM3,X'FF'-DCMOPRMI-DCMWRPFK WHICH DO NOT APPLY 12450000 SPACE 5 12500000 */*WAITWRT: D (NO,ENTBLNK,YES,WRITWAIT) ENTRY TO WRITE 'MESSAGES 12550000 */*WAITING' 12600000 */*?*/ 12650000 ************************************************************ 12700000 WAITWRT EQU * 12750000 * NOTE THE FOLLOWING TEST APPLIES TO THE 3277 MOD 2 ONLY 12800000 TM DCMCMSG1,DCMMSGWT SEE IF WRITE WAIT MSG 12850000 BNO ENTBLNK NO, TEST NEXT FUNCTION 12900000 SPACE 5 12950000 */*WRITWAIT: P MOVE MSG IN. INDICATE WRITE WARN AND SOUND 13000000 */*ALARM */ 13050000 ************************************************************ 13100000 WRITWAIT EQU * 13150000 NI DCMCMSG1,N255-DCMMSGWT TURN BIT OFF 13160003 CLI DCMLGNTH+N1,MOD2LGN IS THIS A MODEL TWO MH Y02132 13170003 BNE ENTBLNK NO, DON'T OUTPUT MESSAGE MH Y02132 13180003 MVI DCMWARN+N37,BLANK MOVE BLANK IN 13200000 MVC DCMWARN+N38(N40),DCMWARN+N37 PROPAGATE IT 13250000 MVC DCMWARN+N55(N23),WAITMSG MOVE IN WAIT MSG 13300000 NI DCMIOCM2,X'FF'-DCMBLWRR DON'T ERASE WARNING LINE 13400000 OI DCMIOCM1,DCMSOUND+DCMWRWRN WRITE LINE AND SOUND ALARM 13450000 SPACE 5 13500000 */*ENTBLNK: D (NO,LEFTWARN,YES,BLNKENT) ENTRY TO BLANK ENTRY AREA? */ 13550000 *********************************************************** 13600000 ENTBLNK EQU * 13650000 TM DCMIOCM2,DCMBLENT BLANK ENTRY AREA 13700000 BNO LEFTWARN NO, SEE IF BLANK LEFT HALF WARN LINE 13750000 SPACE 5 13800000 */*BLNKENT: P (,LEFTWARN) BLANK ENTRY AREA IN DCM */ 13850000 *********************************************************** 13900000 BLNKENT EQU * 13950000 MVI DCMENTRY,BLANK BLANK FIRST CHARACTER 14000000 MVC DCMENTRY+N1(N127),DCMENTRY BLNK REST OF COM AREA 14050000 MVI DCMENTRY+N128,NULL NULL THE NEXT BYTE 14100000 MVC DCMENTRY+N129(N33),DCMENTRY+N128 AND PROPAGATE IT 14150000 * NOTE THE NULLS ARE NECESSARY TO ALLOW THE USE OF INSERT MODE. 14200000 SPACE 5 14250000 */*LEFTWARN: D (NO,RGHTWARN,YES,WARNLEFT) ENTRY TO BLANK LEFT WARNING 14300000 */*LINE? */ 14350000 *********************************************************** 14400000 LEFTWARN EQU * 14450000 L R3WORK,DCMAWARN POINT TO WARNING LINE 14500000 LH R5KEEP,DCMLGNTH GET LENGTH OF LINE 14550000 SRL R5KEEP,N1 DIVIDE BY TWO 14600000 TM DCMIOCM2,DCMBLWRL BLANK LEFT HALF WARNING LINE 14650000 BNO RGHTWARN NO, SEE IF TO BLANK RIGHT SIDE 14700000 SPACE 5 14750000 */*WARNLEFT: P (,RGHTWARN) BLANK LEFT HALF OF WARNING LINE IN DCM */ 14800000 *********************************************************** 14850000 WARNLEFT EQU * 14900000 BAL RERTRN,BLANKIT BLANK LEFT SIDE OF LINE 14950000 SPACE 5 15000000 */*RGHTWARN: D (NO,INSTINIT,YES,WARNRGHT) ENTRY TO BLANK RIGHT WARNING 15050000 */*LINE? */ 15100000 *********************************************************** 15150000 RGHTWARN EQU * 15200000 TM DCMIOCM2,DCMBLWRR BLANK RIGHT HALF WARNING LINE 15250000 BNO INSTINIT NO, GO TEST FOR NEXT FUNCTION 15300000 SPACE 5 15350000 */*WARNRGHT: P (,INSTINIT) BLANK RIGHT HALF OF WARNING LINE IN DCM */ 15400000 *********************************************************** 15450000 WARNRGHT EQU * 15500000 AR R3WORK,R5KEEP ADD 1/2 LGN TO START OF LINE 15550000 BAL RERTRN,BLANKIT BLANK RIGHT SIDE OF LINE 15600000 NI DCMR2FLG,X'FF'-DCMRXUNV UNV. MSG. NOT ON SCREEN 15700000 NI DCMCOM3,X'FF'-DCMOLUNV IN EITHER DCM MH Y01563 15710003 SPACE 5 15750000 */*INSTINIT: D (NO,READMOD,YES,INITINST) ENTRY TO INIT. 15800000 */*INST. LINE? */ 15850000 *********************************************************** 15900000 INSTINIT EQU * 15950000 TM DCMIOCM2,DCMINSSH INITIALIZE INSTRUCTION LINE 16000000 BNO READMOD NO, GO TEST FOR NEXT FUNCTION 16050000 SPACE 4 16100000 */*INITINST: P (,READMOD) MOVE INSTRUCTION LINE TEXT TO INSTRUCTION 16150000 */*LINE IN DCM */ 16200000 *********************************************************** 16250000 INITINST EQU * 16300000 MVI DCMINSTR,BLANK BLANK FIRST CHAR 16350000 MVC DCMINSTR+N1(N77),DCMINSTR BLANK REST OF LINE 16400000 MVC DCMINSTR(N41),INSLMESG MOVE IN MESSAGE 16450000 NI DCMIOUNQ,X'FF'-DCMINERR ERROR MESG GONE 16500000 OI DCMIOUNQ,DCMINNOR INSTRUCTION LINE IS NORMAL 16550000 EJECT 16600000 SPACE 5 16650000 */*READMOD: D (NO,RMIKBD,YES,) READ MODIFIED? */ 16700000 ************************************************************ 16750000 READMOD NI DCMIOCM2,X'FF'-DCMBLENT-DCMBLWRL-DCMBLWRR-DCMINSSH 16800000 * INDICATE BLANKING DONE 16850000 TM DCMIOCM1,DCMDORMI WAS READ MODIFIED REQUESTED 16900000 BNO RMIKBD NO, TEST NEXT FUNCTION 16950000 SPACE 5 17000000 */* P (,OPENKBD) INDICATE READ MODIFIED PERFORMED */ 17050000 ************************************************************ 17100000 OI DCMCOM1,DCMCOMRM INDICATE READ MODIFIED PERFORMED 17150000 NI DCMIOCM1,X'FF'-DCMDORMI TURN OFF BIT 17200000 OI DCMIOUNQ,DCMRDARM FORCE RETURN TO I/O 17250000 B OPENKBD GO TO BUILD CCWS 17300000 SPACE 5 17350000 */*RMIKBD: D (NO,READ,YES,RESTIT) ENTRY TO UNLOCK KEYBOARD? */ 17400000 ************************************************************ 17450000 RMIKBD EQU * 17500000 TM DCMIOCM3,DCMOPRMI SEE IF RMI 17550000 BNO READ NO, TEST NEXT FUNCTION 17600000 B RESTIT YES, DO IT 17650000 SPACE 5 17700000 */*OPENKBD: P BUILD CCWS FOR READ MODIFIED */ 17750000 ************************************************************ 17800000 OPENKBD LA R6WRTSUB,BUILDCCW INIT SUBROUTINE POINTER 17850000 LA R5KEEP,DCMDSAV POINT TO READ MOD DATA AREA 17900000 LA R3WORK,N6 PUT SIX BYTES THERE 17950000 * (AID-C1-C2-SBA-A1-A2) 18000000 BALR RERTRN,R6WRTSUB GO BUILD CCW 18050000 MVI 0(R3WORK),READMD INSERT READ MODIFIED COMMAND CODE 18100000 MVI N4(R3WORK),CHAINCOM CHANGE FLAG TO COMMAND CHAIN 18150000 SPACE 5 18200000 */* D (NO,,YES,RESTIT) IS THIS AN OUTPUT ONLY DEVICE? */ 18250000 ************************************************************ 18300000 TM UCMDISP,UCMDISPD OUTPUT ONLY DEVICE? 18350000 BO RESTIT YES, DON'T READ ENTRY AREA 18400000 SPACE 5 18450000 */* P BUILD CCWS TO READ ENTRY AREA */ 18500000 ************************************************************ 18550000 LA R5KEEP,DCMENTRY-N7 POINT TO ENTRY AREA SBA -1 18600000 * NOTE THIS WILL CAUSE THE LAST CHARACTER OF THE INSTRUCTION 18650000 * LINE, WHICH IS ALWAYS A BLANK, TO BE USED AS THE WCC. 18700000 LA R3WORK,N4 SET BYTE COUNT 18750000 BALR RERTRN,R6WRTSUB BUILD THE CCW 18800000 MVI N4(R3WORK),CHAINCOM CHANGE FLAG TO COMMAND CHAIN 18850000 LA R3WORK,N6 SET COUNT FOR SKIP 18900000 * SKIPPING AID-C1-C2-SF-ATT-DES 18950000 BALR RERTRN,R6WRTSUB BUILD THE CCW 19000000 MVI 0(R3WORK),READBUF CHANGE COMMAND TO READ BUFFER 19050000 MVI N4(R3WORK),SKIPDAT SKIP AND CHAIN DATA 19100000 L R5KEEP,DCMAENTR POINT TO ENTRY AREA 19150000 LA R3WORK,N127 LOAD LENGTH OF ENTRY AREA 19200000 BALR RERTRN,R6WRTSUB BUILD THE CCW 19250000 MVI N4(R3WORK),CHAINCOM CHANGE FLAGS TO COMMAND CHAIN 19300000 SPACE 5 19350000 */*RESTIT: P (,WRITES) BUILD CCWS TO RESTORE KEYBOARD */ 19400000 ************************************************************ 19450000 RESTIT BAL RERTRN,WRITECCW BUILD WRITE CCW 19500000 OI DCMUTILT,DCMUTILB INDICATE WRITE CCW EXISTS 19550000 OI DCMWCC,RESTORE+RESETMDT+VALIDBIT 19600000 * INDICATE KEYBOARD RESTORE AND RESET MDT 19650000 * NOTE WCC DOES NOT REQUIRE TRANSLATION BECAUSE ONLY ONE 19700000 * VALUE (X'03') IS POSSIBLE WITHIN THIS MODULE. 19750000 * THIS IS COMPATIBLE WITH KATAKANA DEVICES. 19800000 NI DCMIOCM3,X'FF'-DCMOPRMI TURN OFF BIT 19850000 SPACE 5 19900000 */*WRITES: D (YES,WRITE,NO,TESTWRT) IS A WRITE CCW NEEDED? */ 19950000 ************************************************************ 20000000 WRITES TM DCMIOCM1,DCMSOUND+DCMWRWRN+DCMWRMSG+DCMWRPAR+DCMWRINS+DC*20050000 MWRENT+DCMINSC IS 20100000 BNZ WRITE A 20150000 TM DCMIOCM2,DCMWINFD+DCMERASE+DCMWRASY WRITE 20200000 BNZ WRITE CCW 20250000 TM DCMIOCM3,DCMWRPFK NEEDED? 20300000 BNO TESTWRT NO, IS I/O NEEDED 20350000 SPACE 5 20400000 */*WRITE: P (,EXIT) SET EXIT TO 3277 I/O 2 (IEECVETV) */ 20450000 *********************************************************** 20500000 WRITE ST R8CHPGM,DCMDSAV SAVE CCW POINTER 20550000 L XFBRANCH,VCONIO2 GET SECOND LOAD ADDRESS 20600000 B EXIT EXIT TO IEECVETV 20650000 SPACE 5 20700000 */*READ: D (NO,WRITES,YES,) PERFORM READ? */ 20750000 ************************************************************ 20800000 READ EQU * 20850000 TM DCMIOCM2,DCMIOCRD PERFORM READ 20900000 BNO WRITES NO, TEST NEXT FUNCTION 20950000 NI DCMIOCM2,X'FF'-DCMIOCRD TURN OFF BIT 21000000 CLI DCMDSAV,LPAID IS THIS A SEL PEN ENTRY 21050000 BE LIGHT YES, HANDLE 21100000 CLI DCMDSAV,ENTAID IS THIS AN ENTER KEY 21150000 BNE WRITES NO, IGNORE IT 21200000 SPACE 5 21250000 */*ENTER: P MOVE DETECT ADDRESS TO INPUT */ 21300000 ************************************************************ 21350000 ENTER EQU * 21400000 MVC DCMDSAV(N2),DCMDSAV+N1 GET CURSOR POSITION 21450000 LA R2COMP,N2 ALLOW FOR ATT-DES CHARS 21500000 B ANREBC GO CONVERT IT 21550000 LIGHT MVC DCMDSAV(N2),DCMDSAV+N4 GET DETECT POSITION 21600000 LA R2COMP,N1 ALLOW FOR ATT CHAR 21650000 SPACE 5 21700000 */*ANREBC: P CONVERT TO LINE/CHAR */ 21750000 ************************************************************ 21800000 ANREBC LH R4WORK,DCMDSAV GET 3277 ADDRESS 21850000 SRDL R4WORK,N8 STRIP OFF RIGHT BYTE 21900000 SLL R5KEEP,N2 REMOVE EXCESS BITS 21950000 SLDL R4WORK,N26 SPLICE IT BACK TOGETHER 22000000 SRL R4WORK,N20 ALIGN RESULT WITH NO GARBAGE 22050000 LR R5KEEP,R4WORK ALIGN FOR DIVIDE 22100000 SR R4WORK,R4WORK CLEAR ANSWER REG 22150000 D R4WORK,F80 DIVIDE BY LENGTH OF BUFFER LINE 22200000 SR R4WORK,R2COMP APPLY COMPENSATION 22250000 STC R4WORK,DCMDSAV+N1 SAVE CHAR POS IN LINE 22300000 STC R5KEEP,DCMDSAV SAVE LINE NUMBER 22350000 SPACE 5 22400000 */* D (YES,ENTRY,NO,) WAS DETECT IN ENTRY AREA? */ 22450000 ************************************************************ 22500000 * NOTE FOLOWING TWO TESTS CAN BE TRUE ON 3277 MOD 2 ONLY. 22550000 CLI DCMDSAV,FRSTLINE IS IT PTG TO FIRST LINE OF ENTRY 22600000 BE ENTRY YES, HANDLE 22650000 CLI DCMDSAV,SECLINE HOW ABOUT SECOND LINE 22700000 BE ENTRY YES, HANDLE SAME WAY 22750000 SPACE 5 22800000 */*LPEXIT: P (,EXIT) SET EXIT TO L/P CURSOR ROUTINE (IEECVETF) */ 22850000 ************************************************************ 22900000 LPEXIT EQU * 22950000 L XFBRANCH,DCMNLPCR LOAD LIGHT-PEN/CURSOR ADDRESS 23000000 B EXIT EXIT TO IEECVETF 23050000 SPACE 5 23100000 */*ENTRY: P (,PROCEXIT) INDICATE READ PERFORMED */ 23150000 ************************************************************ 23200000 ENTRY OI DCMCOM1,DCMIOPRD INDICATE READ PERFORMED 23250000 B PROCEXIT RETURN TO PROCESSOR 23300000 SPACE 5 23350000 */*TESTWRT: D (YES,ENEXCP,NO,PROCEXIT) WAS A WRITE CCW BUILT? */ 23400000 ************************************************************ 23450000 TESTWRT TM DCMUTILT,DCMUTILB WAS A WRITE CCW BUILT 23500000 BNO PROCEXIT NO, RETURN TO PROCESSOR 23550000 SPACE 5 23600000 */*ENEXCP: P (,EXCP) REMOVE CHAIN FLAG FROM LAST CCW */ 23650000 *********************************************************** 23700000 ENEXCP EQU * 23750000 SH R8CHPGM,EIGHT UPDATE CCW POINTER 23800000 MVI N4(R8CHPGM),STOP STOP CCW CHAIN 23850000 SPACE 5 23900000 */*EXCP: I (,EXIT) EXCP */ 23950000 *********************************************************** 24000000 EXCP EQU * 24050000 L XFBRANCH,CSAXB OBTAIN LOCKS JE YM8371 24060003 LR R1PARM,RCCXSA COPY CXSA ADDR JE YM8371 24070003 BALR RERTRN,XFBRANCH TO ROUTINE JE YM8371 24080003 XC UCMECB,UCMECB CLEAR ECB 24150003 OI UCMSTS,UCMBF TURN ON BUSY BIT 24160003 L R3WORK,UCMDCB GET DCB ADDRESS 24200000 L XFBRANCH,CSAXC RELEASE LOCKS JE YM8371 24210003 LR R1PARM,RCCXSA COPY CXSA ADDR JE YM8371 24220003 BALR RERTRN,XFBRANCH TO ROUTINE JE YM8371 24230003 L R1PARM,N28(R3WORK) GET IOB ADDRESS 24250000 EXCP (R1PARM) INITIATE I/O 24300000 SPACE 5 24400000 */*PROCEXIT: P (,EXIT) SET EXIT TO PROCESSOR 1 (IEECVET1) */ 24450000 *********************************************************** 24500000 PROCEXIT L XFBRANCH,DCMNPROC LOAD PROC 1 ADDRESS 24550000 * FOR EXIT TO IEECVET1 24560000 SPACE 5 24600000 */*EXIT: R XCTL */ 24650000 *********************************************************** 24700000 EXIT EQU * 24750000 L X1PARM,DCMCXSVE RESTORE CXSA ADDRESS 24800000 BR XFBRANCH EXIT ADDRESS ALREADY SET 24850000 SPACE 5 24950000 ********** CCW BUILDING SUBROUTINE ***************** 25000000 WRITECCW EQU * 25050000 LA R5KEEP,DCMWCC POINT TO WCC CHAR 25100000 LA R3WORK,N1 SET BYTE COUNT 25150000 BUILDCCW ST R5KEEP,N0(R8CHPGM) SAVE WRITE FROM ADDRESS 25200000 MVI N0(R8CHPGM),WRITCOD INSERT WRITE CCW CODE 25250000 STH R3WORK,N6(R8CHPGM) PUT BYTE COUNT IN 25300000 MVI N4(R8CHPGM),CHAINDT CHAIN CCW'S 25350000 LR R3WORK,R8CHPGM SAVE PTR TO THIS CCW 25400000 * FOR CALLER 25450000 LA R8CHPGM,N8(R8CHPGM) UPDATE CCW POINTER 25500000 BR RERTRN RETURN 25550000 SPACE 5 25600000 ********** BLANKING SUBROUTINE ********************* 25650000 BLANKIT MVI N0(R3WORK),BLANK BLANK FIRST CHARACTER AND 25700000 BCTR R5KEEP,N0 REDUCE LENGTH BY ONE 25750000 BCTR R5KEEP,N0 ONCE MORE FOR EXECUTE 25800000 EX R5KEEP,BLKEX PROPAGATE CHARACTER 25850000 LA R5KEEP,N2(R5KEEP) RESTORE LENGTH REGISTER 25900000 BR RERTRN RETURN TO CALLER 25950000 SPACE 5 26000000 **************EXECUTED INSTRUCTION************* 26050000 BLKEX MVC N1(N0,R3WORK),N0(R3WORK) PROPAGATE CHARACTER 26100000 EJECT 26150000 * CONSTANTS 26200000 VCONIO2 DC V(IEECVETV) SECOND LOAD ADDRESS 26210000 EIGHT DC H'8' COUNT FOR UPDATE CCW PTR 26250000 ENT2ADDR DC X'5B60' 3277 BUFFER ADDR LINE 23 26300000 F80 DC F'80' LENGTH OF ONE LINE 26350000 INENT DC X'401DC4' B-SF-ATT 26400000 PFKADDR DC X'D7F0' PFK LINE ADDRESS 26450000 SKELETON DC X'1140401DE440' SBA-A1-A2-SF-ATT-DES 26500000 RD DC C'RD' 26550000 WAITMSG DC C'IEE159E MESSAGE WAITING' MSGS WAITING WARNING 26600000 INSLMESG DC C'IEE152I ' MESSAGE ID 26650000 DC X'1DE440' SF-ATT-DES FOR DETECTION 26700000 DC C'ENTER ' DETECTABLE FIELD 26750000 DC X'1DE440' SF-ATT-DES FOR DETECTION 26800000 DC C'CANCEL ' DETECTABLE FIELD 26850000 DC X'1DE440' SF-ATT-DES FOR DETECTION 26900000 DC C'D C,K' DETECTABLE FIELD 26950000 EJECT 27000000 * EQUATES 27050000 ID1 EQU C'E' 1ST CHARACTER OF CSECT ID 27060000 ID2 EQU C'U' 2ND CHARACTER OF CSECT ID 27070000 BLANK EQU X'40' BLANK 27100000 CHAINCOM EQU X'60' COMMAND CHAINING FLAG 27150000 CHAINDT EQU X'A0' DATA CHAINING FLAG 27200000 DETECT EQU X'E4' DETECTABLE ATTRIBUTE 27250000 DIGIT EQU X'F0' DECIMAL DIGIT 27300000 ENTAID EQU X'7D' ENTER AID CHAR 27350000 FRSTLINE EQU 21 FIRST LINE OF ENTRY AREA 27400000 LPAID EQU X'7E' SEL. PEN AID CHAR 27450000 MOD2LGN EQU 78 VALUE OF DCMLGNTH FOR MODEL 2 27500000 NODET EQU X'60' NON-DETECTABLE ATTRIBUTE 27550000 NULL EQU X'00' NULL VALUE FOR INSERT MODE HARDWARE 27600000 N0 EQU 0 NUMBER 27650000 N1 EQU 1 NUMBER 27700000 N2 EQU 2 NUMBER 27750000 N3 EQU 3 NUMBER 27800000 N4 EQU 4 NUMBER 27850000 N5 EQU 5 NUMBER 27900000 N6 EQU 6 NUMBER 27950000 N7 EQU 7 NUMBER 28000000 N8 EQU 8 NUMBER 28050000 N16 EQU 16 NUMBER 28150000 N19 EQU 19 NUMBER 28200000 N20 EQU 20 NUMBER 28250000 N23 EQU 23 NUMBER 28300000 N26 EQU 26 NUMBER 28350000 N28 EQU 28 NUMBER 28400000 N33 EQU 33 NUMBER 28450000 N37 EQU 37 NUMBER 28550000 N38 EQU 38 NUMBER 28600000 N40 EQU 40 NUMBER 28650000 N41 EQU 41 NUMBER 28700000 N55 EQU 55 NUMBER 28750000 N77 EQU 77 NUMBER 28800000 N95 EQU 95 NUMBER 28850000 N127 EQU 127 LENGTH OF ENTRY AREA 29000000 N128 EQU 128 NUMBER 29050000 N129 EQU 129 NUMBER 29100000 N255 EQU 255 NUMBER 29150000 READBUF EQU X'02' READ BUFFER COMMAND CODE 29200000 READMD EQU X'06' READ MODIFIED COMMAND CODE 29250000 RESETMDT EQU X'01' WCC RESET MOD DATA TAG 29300000 RESTORE EQU X'02' WCC RESTORE KEYBOARD BIT 29350000 SECLINE EQU 22 SECOND LINE OF ENTRY AREA 29400000 SKIPDAT EQU X'90' SKIP AND CHAIN DATA FLAGS 29450000 STOP EQU X'20' STOP CCW CODE 29500000 VALIDBIT EQU X'C0' WCC VALID BIT PATTERN WITH X'03' 29550000 WRITCOD EQU X'01' WRITE CCW COMMAND CODE 29600000 SPACE 5 29650000 */*IEECVETU: END */ 29700000 SPACE 5 29750000 TITLE 'IEECVETU IGC5U07B 327X I/O 1 RESIDENT DISPLAY *29800000 CONTROL MODULE' 29850000 IEERDCM 29900000 TITLE 'IEECVETU IGC5U07B 3277 I/O 1 TRANSIENT *30000000 DISPLAY CONTROL MODULE' 30050000 DCMSTRT DSECT 30100000 IEECDCM DEVICE=D 30150000 TITLE 'IEECVETU IGC5U07B 3277 I/O 1 CXSA' 30200000 IHACTM CXSA 30300000 TITLE 'IEECVETU IGC5U07B 3277 I/O 1 UNIT CONTR*30350000 OL MODULE' 30400000 IEECUCM FORMAT=NEW 30500000 END 30550000