From 7929aa3304832b83ac8343a96dd66657bf4f0820 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Fri, 22 Feb 2019 14:02:53 +0100 Subject: [PATCH] DDT should not read from the %TIFUL channel when %TOFCI isn't set. Even if %TOFCI isn't set, a %TIFUL channel can return characters with bucky bits. A terminal input source such SUPDUP can insert 12-bit characters with the intelligent terminal protocol, using the ^\ escape character. --- src/sysen1/ddt.1547 | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/sysen1/ddt.1547 b/src/sysen1/ddt.1547 index a84054fd..9744f760 100755 --- a/src/sysen1/ddt.1547 +++ b/src/sysen1/ddt.1547 @@ -6965,9 +6965,11 @@ TYI: CALL TYOFRC ;.LISTEN IS SUPPOSED TO FORCE OUTPUT. JUMPE D,CPOPJ TYI3: CALL HAKKAM ;DO HAKKAH RQ'S, SAY DO ANY MORE WHEN QUEUED. SETZM CTLZFL - SKIPGE D,TTYUNR - .IOT TYIFC,D ;READ FULL CHAR SET INPUT CHANNEL - SKIPE METAP + SKIPL D,TTYUNR + JRST TYI4 + SYSCAL IOT,[TYIC2 ? D] + .VALUE +TYI4: SKIPE METAP JRST [TRZ D,%TXTOP+%TXSUP ;CLEAR TOP AND SUPER TRZE D,%TXCTL ;IF CONTROL BIT SET, TRZ D,140 ;CONVERT TO ASCII. @@ -6975,9 +6977,9 @@ TYI3: CALL HAKKAM ;DO HAKKAH RQ'S, SAY DO ANY MORE WHEN QUEUED. JRST .+1 MOVEM D,TTYUNR ;META BIT SET, SAVE CHAR FOR LATER. MOVEI D,33 ;RETURN ALTMODE. - JRST TYI4] + JRST TYI5] SETOM TTYUNR -TYI4: setzm hakok ;defer HAKKAH rq's again. +TYI5: setzm hakok ;defer HAKKAH rq's again. skipe echop pushj p,echo ;Echo character. skipn tthelp ;If [HELP] isn't desired @@ -10592,9 +10594,11 @@ IOCOPN: TSOPEN TYOC,[[21,,'TTY]] tlnn i4,%toovr ; or can't be overwritten, setom erase ; ^PX and friends will win! TLNE I4,%TOFCI ;CAN TTY DO FULL 12-BIT CHARACTER SET? - AOSA METAP ; META KEY WINS - CAIA - AOS ECHOP ; DO ECHOING. + JRST [ AOS METAP ; META KEY WINS + AOS ECHOP ; DO ECHOING. + MOVEI I3,TYIFC + MOVEM I3,TYIC2 + JRST .+1 ] TLNE I4,%TOMVU AOS GETTY TLZ C,%TSSAI+%TSROL+%TSMOR @@ -17630,6 +17634,7 @@ JPDLB: BLOCK JPDLL JPDLE:: JPDLC: 0 ;# OF VALID ENTRIES IN JPDL (BETWEEN 0 AND JPDLL) METAP: 0 ;WINNING META KEY +TYIC2: TYIC ;INPUT CHANNEL FOR TYI ECHOP: 0 ;DO ECHOING VARIAB