;;;-*- Mode:LISP; Package:SYSTEM-INTERNALS; Base:8.; Patch-File:T -*- ;;; This is a copy of the changes to serial-streams to support the ;;; :TYI-WITH-TIMEOUT operation. ;;; This must be loaded before using any phone software (until these changes ;;; are installed in the default system. ;;; Stream input protocol (DEFMETHOD (SERIAL-STREAM-MIXIN :TYI) (&OPTIONAL IGNORE) (COND ((NULL SERIAL-UNRCHF) (PROCESS-WAIT "Serial TYI" #'UNIBUS-CHANNEL-NOT-EMPTY INPUT-UNIBUS-CHANNEL) (SERIAL-TYI-1)) (T (PROG1 SERIAL-UNRCHF (SETQ SERIAL-UNRCHF NIL))))) (DEFMETHOD (SERIAL-STREAM :TYI-WITH-TIMEOUT) (&OPTIONAL TIMEOUT) (COND ((NULL SERIAL-UNRCHF) (COND ((PROCESS-WAIT-WITH-TIMEOUT "Serial TYI" TIMEOUT #'UNIBUS-CHANNEL-NOT-EMPTY INPUT-UNIBUS-CHANNEL) (SERIAL-TYI-1)) (T NIL))) (T (PROG1 SERIAL-UNRCHF (SETQ SERIAL-UNRCHF NIL))))) (DEFUN SERIAL-TYI-1 () (DECLARE (:SELF-FLAVOR SERIAL-STREAM-MIXIN)) (MULTIPLE-VALUE-BIND (CH STATUS) (READ-UNIBUS-CHANNEL INPUT-UNIBUS-CHANNEL) (SETQ CH (LOGAND 377 CH)) (COND ((BIT-TEST SERIAL-ERROR-MASK STATUS) ;; RESET THE STUPID ERROR FLAGS (%UNIBUS-WRITE 764166 (LOGIOR 20 UART-COMMAND)) (%UNIBUS-WRITE 764166 UART-COMMAND) (CERROR T NIL NIL "SERIAL INPUT ~:[FRAMING ~]~:[OVER-RUN ~]~:[PARITY ~]ERROR: ~O" (ZEROP (LOGAND 40 STATUS SERIAL-ERROR-MASK)) (ZEROP (LOGAND 20 STATUS SERIAL-ERROR-MASK)) (ZEROP (LOGAND 10 STATUS SERIAL-ERROR-MASK)) CH))) CH)) (DEFMETHOD (SERIAL-STREAM-MIXIN :ASCII-LINE-OUT) (STRING) (SEND SELF ':STRING-OUT STRING) (SEND SELF ':TYO #Return) (SEND SELF ':TYO #Linefeed))