(FILECREATED " 4-Sep-85 18:40:13" {ERIS}<LISPCORE>DIG>CENTRONICS.;8 5213
changes to: (FNS CENTRONICS.RESET \CENTRONICS.OPENFILE \CreateCentronicsDevice
\CENTRONICS.CLOSEFILE \CENTRONICS.EVENTFN \CENTRONICS.BUSYWAIT
\CENTRONICS.BOUT)
(VARS CENTRONICSCOMS)
previous date: "14-Aug-85 16:14:15" {ERIS}<LISPCORE>DIG>CENTRONICS.;5)
(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT CENTRONICSCOMS)
(RPAQQ CENTRONICSCOMS [(FNS CENTRONICS.RESET CENTRONICS.BUSYWAIT)
(FNS \CreateCentronicsDevice \CENTRONICS.OPENFILE \CENTRONICS.CLOSEFILE
\CENTRONICS.BOUT \CENTRONICS.BUSYWAIT \CENTRONICS.EVENTFN)
(DECLARE: DONTEVAL@LOAD DOCOPY (P (\CreateCentronicsDevice])
(DEFINEQ
(CENTRONICS.RESET
[LAMBDA (C150STREAM) (* hdj " 4-Sep-85 18:28")
(* * only do it if we're talking about the real centronics device, and not a disk file or something)
(if (OR (NULL C150STREAM)
(EQ (fetch (FDEV DEVICENAME) of (fetch (STREAM DEVICE) of C150STREAM))
(QUOTE CENTRONICS)))
then (WRITEPRINTERPORT 40960)
(WRITEPRINTERPORT 32768)
(DISMISS 1) (* 32768 means init printer)
(WRITEPRINTERPORT 40960) (* turn off initialization and control lines)
NIL])
(CENTRONICS.BUSYWAIT
[LAMBDA NIL (* edited: "16-Jul-85 14:54")
(PROG (C150STATUSLINE)
RETRY
(SETQ C150STATUSLINE (LOGAND (READPRINTERPORT)
31744)) (* If printer is busy, return T)
(* If other than busy, then there is an error)
(RETURN (if (EQ C150STATUSLINE 8192)
then T
else (if (NEQ (LOGAND (READPRINTERPORT)
31744)
24576)
then (PRINTOUT PROMPTWINDOW "Printer error" T)
(HELP "Printer error - type (RETURN) to continue")
(GO RETRY])
)
(DEFINEQ
(\CreateCentronicsDevice
[LAMBDA NIL (* hdj " 4-Sep-85 17:35")
(LET [(DEVICE (create FDEV
DEVICENAME ←(QUOTE CENTRONICS)
EVENTFN ←(FUNCTION \CENTRONICS.EVENTFN)
BOUT ←(FUNCTION \CENTRONICS.BOUT)
OPENFILE ←(FUNCTION \CENTRONICS.OPENFILE)
CLOSEFILE ←(FUNCTION \CENTRONICS.CLOSEFILE]
(\DEFINEDEVICE (QUOTE CENTRONICS)
DEVICE)
DEVICE])
(\CENTRONICS.OPENFILE
[LAMBDA (NAME ACCESS RECOG PARAMETERS DEVICE) (* hdj " 4-Sep-85 17:52")
(if (OR (EQ ACCESS (QUOTE OUTPUT))
(EQ ACCESS (QUOTE APPEND)))
then [LET ((OLDSTREAM (fetch (FDEV DEVICEINFO) of DEVICE)))
(if OLDSTREAM
then (ERROR "Only one open stream allowed on this device" NAME)
else (replace (FDEV DEVICEINFO) of DEVICE
with (create STREAM
DEVICE ← DEVICE
FULLFILENAME ←(QUOTE {CENTRONICS}]
else NIL])
(\CENTRONICS.CLOSEFILE
[LAMBDA (STREAM) (* hdj " 4-Sep-85 17:30")
(replace (FDEV DEVICEINFO) of (fetch (STREAM DEVICE) of STREAM) with NIL])
(\CENTRONICS.BOUT
[LAMBDA (STREAM BYTE) (* hdj " 4-Sep-85 16:31")
(if (NEQ (LOGAND (READPRINTERPORT)
31744)
24576)
then (while (\CENTRONICS.BUSYWAIT))) (* Check if printer is busy)
(LET ((C150DATANOSTB (LOGOR BYTE 40960))) (* Send data, turn off strobe signal)
(WRITEPRINTERPORT C150DATANOSTB)
(WRITEPRINTERPORT (LOGAND 32767 C150DATANOSTB)) (* Send data, turn on strobe signal)
(WRITEPRINTERPORT C150DATANOSTB)) (* Turn off strobe signal)
NIL])
(\CENTRONICS.BUSYWAIT
[LAMBDA NIL (* edited: "16-Jul-85 14:54")
(PROG (C150STATUSLINE)
RETRY
(SETQ C150STATUSLINE (LOGAND (READPRINTERPORT)
31744)) (* If printer is busy, return T)
(* If other than busy, then there is an error)
(RETURN (if (EQ C150STATUSLINE 8192)
then T
else (if (NEQ (LOGAND (READPRINTERPORT)
31744)
24576)
then (PRINTOUT PROMPTWINDOW "Printer error" T)
(HELP "Printer error - type (RETURN) to continue")
(GO RETRY])
(\CENTRONICS.EVENTFN
[LAMBDA (DEVICE EVENT) (* hdj " 4-Sep-85 16:34")
(SELECTQ EVENT
((AFTERLOGOUT AFTERSYSOUT AFTERMAKESYS)
(CENTRONICS.RESET))
NIL])
)
(DECLARE: DONTEVAL@LOAD DOCOPY
(\CreateCentronicsDevice)
)
(PUTPROPS CENTRONICS COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
(FILEMAP (NIL (753 2173 (CENTRONICS.RESET 763 . 1443) (CENTRONICS.BUSYWAIT 1445 . 2171)) (2174 5072 (
\CreateCentronicsDevice 2184 . 2650) (\CENTRONICS.OPENFILE 2652 . 3229) (\CENTRONICS.CLOSEFILE 3231 .
3447) (\CENTRONICS.BOUT 3449 . 4111) (\CENTRONICS.BUSYWAIT 4113 . 4840) (\CENTRONICS.EVENTFN 4842 .
5070)))))
STOP