SUBROUTINE LSRKBD C LSR/KBD SIMULATOR IMPLICIT INTEGER (A-Z) COMMON/GEN1/ IC,OP,IR,IOLINK,STOP(8),STOPC(8),CAR,RESULT,BW,CAD, 1 BRKN,DEV,FIL,FILN,IRET,NOTYO,NOTYI,SG,SGA,SUBOPA, 2 TYEQTY,ADSTOP,ADSTCL,ADSTFL,ADSTAD,TR1,TR2,TR3,TIME,TIMES, 3 TTYSRC,SERMSK,SERLOW,SERHI,TYOERR,TDEV,TFIL,GROUP,GROUPA,OVR EQUIVALENCE(TI,T1) COMMON /GEN2/ PTIDEV,PTIFIL,PTODEV,PTOFIL,TIDEV,TIFIL,NOPTI, 1 NOPTO,PUNCH,GENIOR,TYISTY C C~ DEVICE REGISTERS IN EXTERNAL PAGE. C C XPG(I,1)=ADDRESS OF BYTE I. C XPG(I,2)=CONTENTS OF BYTE I. C XPG(I,3)=READ ONLY MASK. SET A 1 FOR A READ ONLY BIT. C XPG(I,4)=WRITE ONLY MASK. SET A 1 FOR EACH WRITE ONLY BIT. C XPG(I,5)=ACCESS FLAG. 0=NOT ACCESSED. C 1=READ. C 2=WRITTEN. C 3=BOTH. C XPG(I,6)=POWER UP CONTENTS OF BYTE I. C XPG(I,7-10)=NOT DEFINED. C C C XPGI AND XPGJ ARE LIMITS ON I,J DIMENSIONS OF XPG. C TIMEX IS THE TIMER FOR DEVICE FUNCTIONS C C COMMON/XPG/XPG,XPGI,XPGJ,TIMEX DIMENSION XPG(30,10) C C DEVICE CHARACTERISTICS TABLE. FOR EACH DEVICE I, THE CURRENT C STATUS IS HELD IN THIS TABLE. C C I=1 FOR KBD,LSR. C I=2 FOR TTY,LSP. C I=3 FOR HSR. C I=4 FOR HSP. C C C DCH(I,1)=TIME INTERVAL FOR DOING FUNCTION. C DCH(I,2)=TIME AT LAST SELECT. C DCH(I,3)=DEVICE PRIORITY. C DCH(I,4)=ADDRESS OF INTERRUPT VECTOR. C DCH(I,5)=INTERRUPT REQUEST FLAG. C DCH(I,6)=INTERRUPT ENABLE BIT ON LAST CYCLE. C DCH(I,7)=EOF INDICATOR(OUT OF TAPE). C DCH(I,8-10)=NOT DEFINED. C C C DCHI AND DCHJ ARE LIMITS ON I,J DIMENSIONS OF DCH C NUMDEV IS THE CURRENT NUMBER OF DEVICES C COMMON/DCH/DCH,DCHI,DCHJ,NUMDEV DIMENSION DCH(10,10) COMMON/POWTWO/ CT0,CT1,CT2,CT3,CT4,CT5,CT6,CT7 C C C DEVICE INDEXES C C COMMON/DEVINX/DEVINX DIMENSION DEVINX(10,6) C C C USE ROWS 1,2,3,4 OF XPG. EQUIVALENCE (DBRL,XPG(3,2)),(DBRH,XPG(4,2)),(DACLF,XPG(3,5)) 1 ,(DACHF,XPG(4,5)),(STL,XPG(1,2)),(STH,XPG(2,2)) C USE ROW 1 OF DCH. EQUIVALENCE (TIN,DCH(1,1)), (TLS,DCH(1,2)), (PRI,DCH(1,3)) 1 ,(INTAD,DCH(1,4)),(INTREQ,DCH(1,5)),(IENL,DCH(1,6)) 2 ,(EOFF,DCH(1,7)) EQUIVALENCE (DONE,CT7),(BUSY,CT3), (MAINF1,CT2),(INTEN,CT6) 1 ,(RDREN,CT0) C IF LOW OR HIGH DATA REGISTER REFERENCED, FALL THROUGH. 100 IF((DACLF.EQ.0.OR.DACLF.EQ.2).AND.(DACHF.EQ.0 1 .OR.DACHF.EQ.2))GOTO 101 DACLF=0 DACHF=0 INTREQ=0 CALL LANC(STL,DONE) CALL LANC(STH,BUSY) C DETECT 0-1 TRANSITION OF INT ENABLE. 101 T1=STL CALL LAND(T1,INTEN) IF(T1.EQ.0)INTREQ=0 IF(T1.EQ.0.OR.IENL.NE.0)GOTO 102 T2=STL CALL LAND(T2,DONE) INTREQ=INTREQ+T2 102 IENL=T1 T1=STL C TEST READER ENABLE BIT. CALL LAND(T1,RDREN) IF(T1.EQ.0)GOTO 103 C READER ENABLED. CLEAR BIT. IF AT EOF, EXIT. C IF NO INPUT FILE DEFINED, SET EOF, CLEAR BUSY AND DONE C AND EXIT. CALL LANC(STL,RDREN) IF(EOFF.NE.0)GOTO 106 IF(NOTYI.EQ.0)GOTO 104 C GET A CHARACTER. CLEAR DONE. SET BUSY. CALL GSR(I,J) 105 CALL LANC(STL,DONE) CALL LOR(STH,BUSY) IF(J.EQ.2)GOTO 104 IF(J.NE.3)GOTO 107 C DATA ERROR. CALL STATUS(J) CALL DATER (TIDEV,TIFIL,J) GOTO GENIOR C NO DATA FOR LSR. 104 CALL LANC(STL,DONE) CALL LANC(STH,BUSY) EOFF=1 GOTO 106 C SET CHAR IN DATA REG. START TIMER. 107 DBRL=I TLS=TIMEX C CHECK IF TIME IS UP. 109 IF(TIMEX-TLS.LT.TIN)GOTO 106 C TIME IS UP. CLEAR BUSY AND MAINT FUNCT #1. SET DONE. CALL LANC(STL,MAINF1) CALL LANC(STH,BUSY) CALL LOR(STL,DONE) C SET INT REQUEST IF INTERRUPT ENABLED. 108 T1=STL CALL LAND(T1,INTEN) INTREQ=INTREQ+T1 GOTO 106 C READER NOT ENABLED. TRY FOR KBD INPUT. 103 T1=STH CALL LAND(T1,BUSY) C IF DEVICE BUSY, GO WAIT. IF(T1.NE.0)GOTO 109 T1=STL CALL LAND(T1,DONE) IF(T1.NE.0)GOTO 106 C DEVICE NOT BUSY AND NOT DONE. IS KBD INPUT AVAILABLE? CALL CCK(I) J=0 C NO, CHECK FOR MAINT FUNCT #1. IF(I.EQ.0)GOTO 110 C YES, GET A CHARACTER AND TREAT SAME AS CHAR FROM LSR. CALL CRC(I) GOTO 105 110 T1=STL CALL LAND(T1,MAINF1) IF(T1.EQ.0)GOTO 106 I=255 GOTO 105 106 RETURN END SUBROUTINE TTY C TTY OUTPUT SIMULATION. IMPLICIT INTEGER (A-Z) COMMON/GEN1/ IC,OP,IR,IOLINK,STOP(8),STOPC(8),CAR,RESULT,BW,CAD, 1 BRKN,DEV,FIL,FILN,IRET,NOTYO,NOTYI,SG,SGA,SUBOPA, 2 TYEQTY,ADSTOP,ADSTCL,ADSTFL,ADSTAD,TR1,TR2,TR3,TIME,TIMES, 3 TTYSRC,SERMSK,SERLOW,SERHI,TYOERR,TDEV,TFIL,GROUP,GROUPA,OVR EQUIVALENCE(TI,T1) COMMON /GEN2/ PTIDEV,PTIFIL,PTODEV,PTOFIL,TIDEV,TIFIL,NOPTI, 1 NOPTO,PUNCH,GENIOR,TYISTY C C~ DEVICE REGISTERS IN EXTERNAL PAGE. C C XPG(I,1)=ADDRESS OF BYTE I. C XPG(I,2)=CONTENTS OF BYTE I. C XPG(I,3)=READ ONLY MASK. SET A 1 FOR A READ ONLY BIT. C XPG(I,4)=WRITE ONLY MASK. SET A 1 FOR EACH WRITE ONLY BIT. C XPG(I,5)=ACCESS FLAG. 0=NOT ACCESSED. C 1=READ. C 2=WRITTEN. C 3=BOTH. C XPG(I,6)=POWER UP CONTENTS OF BYTE I. C XPG(I,7-10)=NOT DEFINED. C C C XPGI AND XPGJ ARE LIMITS ON I,J DIMENSIONS OF XPG. C TIMEX IS THE TIMER FOR DEVICE FUNCTIONS C C COMMON/XPG/XPG,XPGI,XPGJ,TIMEX DIMENSION XPG(30,10) C C DEVICE CHARACTERISTICS TABLE. FOR EACH DEVICE I, THE CURRENT C STATUS IS HELD IN THIS TABLE. C C I=1 FOR KBD,LSR. C I=2 FOR TTY,LSP. C I=3 FOR HSR. C I=4 FOR HSP. C C C DCH(I,1)=TIME INTERVAL FOR DOING FUNCTION. C DCH(I,2)=TIME AT LAST SELECT. C DCH(I,3)=DEVICE PRIORITY. C DCH(I,4)=ADDRESS OF INTERRUPT VECTOR. C DCH(I,5)=INTERRUPT REQUEST FLAG. C DCH(I,6)=INTERRUPT ENABLE BIT ON LAST CYCLE. C DCH(I,7)=EOF INDICATOR(OUT OF TAPE). C DCH(I,8-10)=NOT DEFINED. C C C DCHI AND DCHJ ARE LIMITS ON I,J DIMENSIONS OF DCH C NUMDEV IS THE CURRENT NUMBER OF DEVICES C COMMON/DCH/DCH,DCHI,DCHJ,NUMDEV DIMENSION DCH(10,10) COMMON/POWTWO/ CT0,CT1,CT2,CT3,CT4,CT5,CT6,CT7 C C C DEVICE INDEXES C C COMMON/DEVINX/DEVINX DIMENSION DEVINX(10,6) C C C USES ROWS 5,6,7,8 OF XPG. EQUIVALENCE (DBRL,XPG(7,2)),(DBRH,XPG(8,2)),(DACLF,XPG(7,5)) 1 ,(DACHF,XPG(8,5)),(STL,XPG(5,2)) C USE ROW 2 OF DCH. EQUIVALENCE (TIN,DCH(2,1)),(TLS,DCH(2,2)),(PRI,DCH(2,3)) 1 ,(INTAD,DCH(2,4)),(INTREQ,DCH(2,5)),(IENL,DCH(2,6)) 2 ,(EOFF,DCH(2,7)) EQUIVALENCE (READY,CT7),(MAINF2,CT2),(INTEN,CT6) C IF NO OUTPUT FILE, FORCE EOF. 100 IF(NOTYO.EQ.0)EOFF=1 C CHECK FOR ACCESS OF DATA REG. IF(DACLF.LT.2.AND.DACHF.LT.2)GOTO 101 DACLF=0 DACHF=0 INTREQ=0 T4=STL CALL LAND(T4,MAINF2) IF(EOFF.NE.0.AND.T4.EQ.0)GOTO 101 J=0 C MAINT FUNCT #2. C GET CHAR FROM DATA REG AND SAVE. CLEAR READY. CURCH=DBRL CALL LANC(STL,READY) C SET BITS IN KBD STATUS REG, IF MAINT FCN ON. IF(T4.EQ.0)GO TO 103 CALL LANC(XPG(1,2),READY) CALL LOR(XPG(2,2),CT3) 103 IF(TYEQTY.EQ.0)CALL PRT(DBRL,J) IF(TYEQTY.NE.0)CALL CWC(DBRL,I) IF(J.EQ.2)GOTO TYOERR TLS=TIMEX C DETECT 0-1 TRANSITION OF INT ENABLE. 101 T1=STL CALL LAND(T1,INTEN) IF(T1.EQ.0)INTREQ=0 IF(T1.EQ.0.OR.IENL.NE.0)GOTO 102 T2=STL CALL LAND(T2,READY) INTREQ=INTREQ+T2 102 IENL=T1 T1=STL CALL LAND(T1,READY) C IF READY, EXIT. IF(T1.NE.0)GOTO 106 C NOT READY; TEST IF TIME IS UP. NO, EXIT. IF(TIMEX-TLS.LT.TIN)GOTO 106 C YES, SET READY. SET INT REQUEST IF ENABLED. CALL LOR(STL,READY) T1=STL CALL LAND(T1,INTEN) INTREQ=INTREQ+T1 C IF MAINT FUNCT #2, PUT CHAR INTO KBD DATA REG. C AND SET KBD DONE; CLEAR KBD BUSY AND MAINT FUNCT #1. IF(T4.EQ.0)GOTO 106 XPG(3,2)=CURCH CALL LOR(XPG(1,2),READY) CALL LANC(XPG(1,2), CT2) CALL LANC(XPG(2,2),CT3) T1=XPG(1,2) CALL LAND(T1,INTEN) DCH(1,5)=DCH(1,5)+T1 GOTO 106 106 RETURN END SUBROUTINE HSR C HSR SIMULATION IMPLICIT INTEGER (A-Z) COMMON/GEN1/ IC,OP,IR,IOLINK,STOP(8),STOPC(8),CAR,RESULT,BW,CAD, 1 BRKN,DEV,FIL,FILN,IRET,NOTYO,NOTYI,SG,SGA,SUBOPA, 2 TYEQTY,ADSTOP,ADSTCL,ADSTFL,ADSTAD,TR1,TR2,TR3,TIME,TIMES, 3 TTYSRC,SERMSK,SERLOW,SERHI,TYOERR,TDEV,TFIL,GROUP,GROUPA,OVR EQUIVALENCE(TI,T1) COMMON /GEN2/ PTIDEV,PTIFIL,PTODEV,PTOFIL,TIDEV,TIFIL,NOPTI, 1 NOPTO,PUNCH,GENIOR,TYISTY C C~ DEVICE REGISTERS IN EXTERNAL PAGE. C C XPG(I,1)=ADDRESS OF BYTE I. C XPG(I,2)=CONTENTS OF BYTE I. C XPG(I,3)=READ ONLY MASK. SET A 1 FOR A READ ONLY BIT. C XPG(I,4)=WRITE ONLY MASK. SET A 1 FOR EACH WRITE ONLY BIT. C XPG(I,5)=ACCESS FLAG. 0=NOT ACCESSED. C 1=READ. C 2=WRITTEN. C 3=BOTH. C XPG(I,6)=POWER UP CONTENTS OF BYTE I. C XPG(I,7-10)=NOT DEFINED. C C C XPGI AND XPGJ ARE LIMITS ON I,J DIMENSIONS OF XPG. C TIMEX IS THE TIMER FOR DEVICE FUNCTIONS C C COMMON/XPG/XPG,XPGI,XPGJ,TIMEX DIMENSION XPG(30,10) C C DEVICE CHARACTERISTICS TABLE. FOR EACH DEVICE I, THE CURRENT C STATUS IS HELD IN THIS TABLE. C C I=1 FOR KBD,LSR. C I=2 FOR TTY,LSP. C I=3 FOR HSR. C I=4 FOR HSP. C C C DCH(I,1)=TIME INTERVAL FOR DOING FUNCTION. C DCH(I,2)=TIME AT LAST SELECT. C DCH(I,3)=DEVICE PRIORITY. C DCH(I,4)=ADDRESS OF INTERRUPT VECTOR. C DCH(I,5)=INTERRUPT REQUEST FLAG. C DCH(I,6)=INTERRUPT ENABLE BIT ON LAST CYCLE. C DCH(I,7)=EOF INDICATOR(OUT OF TAPE). C DCH(I,8-10)=NOT DEFINED. C C C DCHI AND DCHJ ARE LIMITS ON I,J DIMENSIONS OF DCH C NUMDEV IS THE CURRENT NUMBER OF DEVICES C COMMON/DCH/DCH,DCHI,DCHJ,NUMDEV DIMENSION DCH(10,10) COMMON/POWTWO/ CT0,CT1,CT2,CT3,CT4,CT5,CT6,CT7 C C C DEVICE INDEXES C C COMMON/DEVINX/DEVINX DIMENSION DEVINX(10,6) C C C USE ROWS 9,10,11,12 OF XPG. EQUIVALENCE (DBRL,XPG(11,2)),(DBRH,XPG(12,2)),(DACLF,XPG(11,5)) 1 ,(DACHF,XPG(12,5)),(STL,XPG(9,2)),(STH,XPG(10,2)) C USE ROW 3 OF DCH. EQUIVALENCE (TIN,DCH(3,1)),(TLS,DCH(3,2)),(PRI,DCH(3,3)) 1 ,(INTAD,DCH(3,4)),(INTREQ,DCH(3,5)),(IENL,DCH(3,6)) 2 ,(EOFF,DCH(3,7)) EQUIVALENCE (DONE,CT7),(BUSY,CT3),(NOTAPE,CT7),(INTEN,CT6) 1 , (RDREN,CT0) C IF NO INPUT FILE, FORCE EOF. 100 IF(NOPTI.NE.0)GOTO 109 CALL LOR(STH,NOTAPE) EOFF=1 C CHECK FOR REF TO DATA REG. 109 IF(DACLF+DACHF.EQ.0)GOTO 102 CALL LANC(STL,DONE) CALL LANC(STH,BUSY) DACLF=0 DACHF=0 INTREQ=0 C DETECT 0-1 TRANSITION OF INT ENABLE. 102 T1=STL CALL LAND(T1,INTEN) IF(T1.EQ.0)INTREQ=0 IF(T1.NE.0.AND.IENL.EQ.0)GOTO 103 104 IENL=T1 T1=STL C CHECK FOR READER ENABLE. CALL LAND(T1,RDREN) IF(T1.EQ.0)GOTO 105 C ENABLED. IF AT EOF, IGNORE IT. OTHERWISE, CLEAR C DATA REG, CLEAR DONE, SET BUSY, CLEAR INT REG. CALL LANC(STL,RDREN) IF(EOFF.NE.0)GOTO 106 DBRL=0 DBRH=0 IF(NOPTI.EQ.0)GOTO 107 CALL LANC(STL,DONE) CALL LOR(STH,BUSY) INTREQ=0 C GET A CHAR AND PUT IN DATA REG. START THE TIMER. CALL GDA(I,J) IF(J.EQ.2)GOTO 107 IF(J.EQ.3)GOTO 101 DBRL=I TLS=TIMEX GOTO 105 103 T2=STL CALL LAND(T2,DONE) T3=STH CALL LAND(T3,NOTAPE) INTREQ=INTREQ+T2+T3 GOTO 104 C DATA ERROR. 101 CALL STATUS(J) CALL DATER(PTIDEV,PTIFIL,J) GOTO GENIOR C EOF. DON'T RESPOND. SET OUTAPE. 107 DBRL=0 DBRH=0 EOFF=1 CALL LANC(STL,DONE) CALL LANC(STH,BUSY) CALL LOR(STH,NOTAPE) C SET INT REQUEST IF ENABLED. 108 T1=STL CALL LAND(T1,INTEN) INTREQ=INTREQ+T1 GOTO 106 C IF DEVICE IS BUSY, TEST TIMER. 105 T1=STH CALL LAND(T1,BUSY) IF(T1.EQ.0)GOTO 106 IF(TIMEX-TLS.LT.TIN)GOTO 106 C TIME IS UP. CLEAR BUSY. SET DONE. CALL LANC(STH,BUSY) CALL LOR(STL,DONE) GOTO 108 106 RETURN END SUBROUTINE HSP C HSP SIMULATION IMPLICIT INTEGER (A-Z) COMMON/GEN1/ IC,OP,IR,IOLINK,STOP(8),STOPC(8),CAR,RESULT,BW,CAD, 1 BRKN,DEV,FIL,FILN,IRET,NOTYO,NOTYI,SG,SGA,SUBOPA, 2 TYEQTY,ADSTOP,ADSTCL,ADSTFL,ADSTAD,TR1,TR2,TR3,TIME,TIMES, 3 TTYSRC,SERMSK,SERLOW,SERHI,TYOERR,TDEV,TFIL,GROUP,GROUPA,OVR EQUIVALENCE(TI,T1) COMMON /GEN2/ PTIDEV,PTIFIL,PTODEV,PTOFIL,TIDEV,TIFIL,NOPTI, 1 NOPTO,PUNCH,GENIOR,TYISTY C C~ DEVICE REGISTERS IN EXTERNAL PAGE. C C XPG(I,1)=ADDRESS OF BYTE I. C XPG(I,2)=CONTENTS OF BYTE I. C XPG(I,3)=READ ONLY MASK. SET A 1 FOR A READ ONLY BIT. C XPG(I,4)=WRITE ONLY MASK. SET A 1 FOR EACH WRITE ONLY BIT. C XPG(I,5)=ACCESS FLAG. 0=NOT ACCESSED. C 1=READ. C 2=WRITTEN. C 3=BOTH. C XPG(I,6)=POWER UP CONTENTS OF BYTE I. C XPG(I,7-10)=NOT DEFINED. C C C XPGI AND XPGJ ARE LIMITS ON I,J DIMENSIONS OF XPG. C TIMEX IS THE TIMER FOR DEVICE FUNCTIONS C C COMMON/XPG/XPG,XPGI,XPGJ,TIMEX DIMENSION XPG(30,10) C C DEVICE CHARACTERISTICS TABLE. FOR EACH DEVICE I, THE CURRENT C STATUS IS HELD IN THIS TABLE. C C I=1 FOR KBD,LSR. C I=2 FOR TTY,LSP. C I=3 FOR HSR. C I=4 FOR HSP. C C C DCH(I,1)=TIME INTERVAL FOR DOING FUNCTION. C DCH(I,2)=TIME AT LAST SELECT. C DCH(I,3)=DEVICE PRIORITY. C DCH(I,4)=ADDRESS OF INTERRUPT VECTOR. C DCH(I,5)=INTERRUPT REQUEST FLAG. C DCH(I,6)=INTERRUPT ENABLE BIT ON LAST CYCLE. C DCH(I,7)=EOF INDICATOR(OUT OF TAPE). C DCH(I,8-10)=NOT DEFINED. C C C DCHI AND DCHJ ARE LIMITS ON I,J DIMENSIONS OF DCH C NUMDEV IS THE CURRENT NUMBER OF DEVICES C COMMON/DCH/DCH,DCHI,DCHJ,NUMDEV DIMENSION DCH(10,10) COMMON/POWTWO/ CT0,CT1,CT2,CT3,CT4,CT5,CT6,CT7 C C C DEVICE INDEXES C C COMMON/DEVINX/DEVINX DIMENSION DEVINX(10,6) C C C USE ROWS 13,14,15,16 OF XPG. EQUIVALENCE (DBRL,XPG(15,2)),(DBRH,XPG(16,2)),(DACLF,XPG(15,5)) 1 ,(DACHF,XPG(16,5)),(STL,XPG(13,2)),(STH,XPG(14,2)) C USE ROW 4 OF DCH. EQUIVALENCE (TIN,DCH(4,1)),(TLS,DCH(4,2)),(PRI,DCH(4,3)) 1 ,(INTAD,DCH(4,4)),(INTREQ,DCH(4,5)),(IENL,DCH(4,6)) 2 ,(EOFF,DCH(4,7)) EQUIVALENCE (READY,CT7),(NOTAPE,CT7),(INTEN,CT6) C IF NO OUTPUT FILE, FORCE EOF. 100 IF(NOPTO.NE.0)GOTO 101 CALL LOR(STH,NOTAPE) EOFF=1 C TEST FOR REF TO DATA REG. 101 IF(DACLF.LT.2.AND.DACHF.LT.2)GOTO 103 DACLF=0 DACHF=0 INTREQ=0 IF(EOFF.NE.0)GOTO 103 C DATA REG REFERENCED. CLEAR READY. C PUNCH THE CHARACTER. CALL LANC(STL,READY) CALL PUN(DBRL,I) IF(I.LT.2)GOTO 104 C DATA ERROR. CALL STATUS(J) CALL DATER(PTODEV,PTOFIL,J) GOTO GENIOR 104 TLS=TIMEX 103 T1=STL C DETECT 0-1 TRANSITION OF INT ENABLE. CALL LAND(T1,INTEN) IF(T1.EQ.0)INTREQ=0 IF(T1.EQ.0.OR.IENL.NE.0)GOTO 105 T2=STL CALL LAND(T2,READY) T3=STH CALL LAND(T3,NOTAPE) INTREQ=INTREQ+T2+T3 105 IENL=T1 102 T1=STL CALL LAND(T1,READY) IF(T1.NE.0)GOTO 106 C DEVICE NOT READY. IS TIME UP? IF(TIMEX-TLS.LT.TIN)GOTO 106 C YES, SET READY AND GENERATE INT REQUEST IF ENABLED. CALL LOR(STL,READY) T1=STL CALL LAND(T1,INTEN) INTREQ=INTREQ+T1 106 RETURN END SUBROUTINE LANC(I,J) C AND COMPLEMENT. C I=I.AND.(.NOT.J) K=J CALL LNOT(K) CALL LAND(I,K) RETURN END SUBROUTINE GETPRI(I) C GET PRIORITY FROM STATUS WORD. C OUTPUT: PRIORITY, RIGHT ADJUSTED. IMPLICIT INTEGER(A-Z) COMMON/CONST/MH,ML,MAL,MALC,MLC,M7,M8,SCRBEG,SCREND,C2T7,C2T15, 1 TYO,CON,TYI,BIN,TTYNAM,PTRNAM,DSKNAM,TTOFIL,TTIFIL, 2 NUMINW,CR,LF,TAB,CHRLEN,WRDLEN,B,DOL,BLANK,EQUALS,COMMA, 3 WM0,WM1,WM2,WM3,WM4,WM5,WM6,WM7,WM8,WM9,WM10,WM11,WM12, 4 WM13,WM14,WM15,SL8,APC,ACC,ADR0, 5 TSTION COMMON/SCRATCH/REGISTER(9),SAV(9) EQUIVALENCE (LP,REGISTER(8)),(PC,REGISTER(9)),(ST,REGISTER(1)) EQUIVALENCE (ST,STATUS) J=STATUS CALL BXT(I,J,WM7,WM5) RETURN END SUBROUTINE RESET C EXTERNAL RESET FUNCTION. IMPLICIT INTEGER(A-Z) C C~ DEVICE REGISTERS IN EXTERNAL PAGE. C COMMON/XPG/XPG,XPGI,XPGJ,TIMEX DIMENSION XPG(30,10) C C DEVICE CHARACTERISTICS TABLE. FOR EACH DEVICE I, THE CURRENT C STATUS IS HELD IN THIS TABLE. C COMMON/DCH/DCH,DCHI,DCHJ,NUMDEV DIMENSION DCH(10,10) COMMON/POWTWO/ CT0,CT1,CT2,CT3,CT4,CT5,CT6,CT7 C C C DEVICE INDEXES C C COMMON/DEVINX/DEVINX DIMENSION DEVINX(10,6) C C TIMEX=0 C SET POWER UP STATES. CLEAR ACCESS FLAGS. DO 1 I=1,XPGI XPG(I,2)=XPG(I,6) XPG(I,5)=0 1 CONTINUE C CLEAR DEVICE PARAMETERS. DO 2 I=1,DCHI DCH(I,2)=0 DCH(I,5)=0 DCH(I,6)=0 DCH(I,7)=0 2 CONTINUE C INTIALIZE THE CONSOLE CHANNEL. CALL GCI(3HTTY,0,2,2,0,I) RETURN END