LMFL#!C(:HOST "SYS" :BACKUP-DATE 2760031983. :SYSTEM-TYPE :LOGICAL :VERSION 7. :TYPE "LISP" :NAME "PARALLEL-HARDWARE" :DIRECTORY ("REL3-SOURCE" "SERIAL") :SOURCE-PATTERN "( :DIRECTORY (\"REL3-SOURCE\") :NAME :WILD :TYPE :WILD :VERSION :NEWEST)" :VERSION-LIMIT 0. :CHARACTERS T :NOT-BACKED-UP T :CREATION-DATE 2758811848. :AUTHOR "REL3" :LENGTH-IN-BYTES 3067. :LENGTH-IN-BLOCKS 3. :BYTE-SIZE 8.)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ;;; -*- Mode:common-lisp; Package:SYSTEM-INTERNALS; Base:10 -*-;;;                           RESTRICTED RIGHTS LEGEND;;;Use, duplication, or disclosure by the Government is subject to;;;restrictions as set forth in subdivision (b)(3)(ii) of the Rights in;;;Technical Data and Computer Software clause at 52.227-7013.;;;                     TEXAS INSTRUMENTS INCORPORATED.;;;                              P.O. BOX 2909;;;                           AUSTIN, TEXAS 78769;;;                                 MS 2151;;; Copyright (C) 1984,1987 Texas Instruments Incorporated. All rights reserved.;;; Primitive interface routines for the parallel port on the SIB.;;; Parallel register access routines;; Serial & Parallel Ports patch 1-1, -ab;; Replace hardcoded slot values with variable references.(DEFUN PARALLEL-WRITE (DATA)  (%NUBUS-WRITE TV::SIB-SLOT-NUMBER %PARALLEL-DATA-REGISTER DATA)) (DEFUN PARALLEL-COMMAND (DATA)  (%NUBUS-WRITE TV::SIB-SLOT-NUMBER %PARALLEL-COMMAND-REGISTER DATA))   (DEFUN PARALLEL-STATUS ()  (LDB (BYTE 8 0) (%NUBUS-READ TV::SIB-SLOT-NUMBER %PARALLEL-STATUS-REGISTER))) ;; Patch 1-1;;; Parallel port commands. -- Refined by Greninger.(DEFUN PARALLEL-INIT ()  (PARALLEL-COMMAND #o12)) (DEFUN PARALLEL-STROBE ()  (PARALLEL-COMMAND #o14)  ;; must have 2-microsecond delay here  (PARALLEL-COMMAND #o16))               (DEFUN PARALLEL-TYO (CHAR); -- Output the specified character --  (PARALLEL-WRITE CHAR); Pre-stage the character to be output.  (IF (= (LDB (BYTE 4 0) (PARALLEL-STATUS)) 12); If the port is not busy    (PARALLEL-STROBE);    send the character immediately.    (PROGN      (PROCESS-WAIT; Otherwise, wait for port to come free       "Parallel TYO";    or report an error.       (FUNCTION(LAMBDA ()  (OR (= 12 (LDB (BYTE 4 0) (PARALLEL-STATUS))); AOK, not busy.     (NOT (= 6 (LDB (BYTE 3 1) (PARALLEL-STATUS)))); An error...     ))))      (COND((= 12 (LDB (BYTE 4 0) (PARALLEL-STATUS))); If the port came free  (PARALLEL-STROBE)); without error, send the char.((= 1 (LDB (BYTE 1 1) (PARALLEL-STATUS))); ERROR: Paper-out. (FERROR () "Printer is out of paper"))((= 0 (LDB (BYTE 1 2) (PARALLEL-STATUS))); ERROR: Off-line. (FERROR () "Printer is off-line."))((= 0 (LDB (BYTE 1 3) (PARALLEL-STATUS))); ERROR: Fault. (FERROR () "Printer fault.")))))) ;;; Simple print utility using the parallel port in polled mode.(DEFUN PARALLEL-PRINT (FNAME &OPTIONAL (EXPAND-TABS T) (AUTO-LF T));  (si:parallel-init)  (PARALLEL-TYO #o14);form feed  (WITH-OPEN-FILE (FSTREAM FNAME)    (DO ((CHAR (FUNCALL FSTREAM :TYI) (FUNCALL FSTREAM :TYI)) (TABCNT 8))((NULL CHAR))      (IF (AND EXPAND-TABS (= CHAR #o211))(BLOCK ()  (DOTIMES (I TABCNT)    (PARALLEL-TYO #o40))  (SETQ TABCNT 8)  ())(BLOCK ()  (IF (AND (> CHAR #o37) (< CHAR #o177))    (SETQ TABCNT (IF (= TABCNT 1)   8   (1- TABCNT)))    (IF (= CHAR #o215)      (SETQ TABCNT 8)))  (PARALLEL-TYO CHAR)  (IF (AND AUTO-LF (= CHAR #o215))    (PARALLEL-TYO #o212))  ()))))) EFTYP