(FILECREATED " 5-Aug-85 16:20:14" {ERIS}<LISPCORE>PRINTC150.;2 4312   

      previous date: " 5-Aug-85 16:15:30" {PELE:PARC:XEROX}<SANTOSA>FASTPRINT>PRINTC150.;16)


(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT PRINTC150COMS)

(RPAQQ PRINTC150COMS ((FNS PRINTC150 C150BUSYWAIT CENTRONICS.RESET SETC150MARGIN)))
(DEFINEQ

(PRINTC150
  [LAMBDA (C150DATA)                                         (* edited: "16-Jul-85 14:48")
    (PROG (C150DATANOSTB)
          (if (NEQ (LOGAND (READPRINTERPORT)
			   31744)
		   24576)
	      then (while (C150BUSYWAIT)))                   (* Check if printer is busy)
          (SETQ C150DATANOSTB (LOGOR C150DATA 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)
      ])

(C150BUSYWAIT
  [LAMBDA NIL                                                (* edited: "16-Jul-85 14:54")
    (PROG (C150STATUSLINE)
          (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 (PROMPTPRINT)
				  (if (EQ (LOGAND C150STATUSLINE 8192)
					  0)
				      then (PRINTOUT PROMPTWINDOW "PRINTER IS OUT OF PAPER" T))
				  (if (EQ (LOGAND C150STATUSLINE 4096)
					  4096)
				      then (PRINTOUT PROMPTWINDOW "PRINTER NOT SELECTED" T))
				  (if (EQ (LOGAND C150STATUSLINE 2048)
					  2048)
				      then (PRINTOUT PROMPTWINDOW "PRINTER POWER IS OFF" T))
				  (if (EQ (LOGAND C150STATUSLINE 1024)
					  1024)
				      then (PRINTOUT PROMPTWINDOW "PRINTER ERROR" T))
				  (HELP "PRINTER ERROR"])

(CENTRONICS.RESET
  [LAMBDA NIL                                                (* edited: "30-May-85 19:44")
    (WRITEPRINTERPORT 40960)
    (WRITEPRINTERPORT 32768)
    (DISMISS 1)                                              (* 32768 means init printer)
    (WRITEPRINTERPORT 40960)                                 (* turn off initialization and control lines)
    NIL])

(SETC150MARGIN
  [LAMBDA (C150LEFT C150RIGHT)                               (* edited: " 5-Aug-85 16:12")
    (PROG (MGLEFT MGRIGHT)                                   (* This program set the left and right margins for C150
							     printer)
          (if (OR (EQ C150LEFT NIL)
		  (LESSP C150LEFT .5)
		  (GEQ C150LEFT 9.0)
		  (GEQ C150LEFT C150RIGHT))
	      then (SETQ C150LEFT .5))                       (* Check left margin, set to a default value if 
							     incorrect)
          (if (OR (EQ C150RIGHT NIL)
		  (GREATERP C150RIGHT 9)
		  (LEQ C150RIGHT .5)
		  (LEQ C150RIGHT C150LEFT))
	      then (SETQ C150RIGHT 9))                       (* Check right margin, set to a default value if 
							     incorrect)
          (SETQ C150LEFT (FIX (TIMES 10 C150LEFT)))          (* Set up the left margin)
          (SETQ C150RIGHT (FIX (TIMES 10 C150RIGHT)))
          (PRINTC150 (CHARCODE ESC))
          (PRINTC150 (CHARCODE l))
          (SETQ MGLEFT (CHCON C150LEFT))
          (for MGLEFTCODE in MGLEFT do (PRINTC150 MGLEFTCODE))
          (PRINTC150 (CHARCODE CR))
          (PRINTC150 (CHARCODE ESC))                         (* Set up the right margin)
          (PRINTC150 (CHARCODE r))
          (SETQ MGRIGHT (CHCON C150RIGHT))
          (for MGRIGHTCODE in MGRIGHT do (PRINTC150 MGRIGHTCODE))
          (PRINTC150 (CHARCODE CR])
)
(PUTPROPS PRINTC150 COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (360 4232 (PRINTC150 370 . 1067) (C150BUSYWAIT 1069 . 2244) (CENTRONICS.RESET 2246 . 
2651) (SETC150MARGIN 2653 . 4230)))))
STOP