;;;-*- Mode:LISP; Package:TIGER; Base:10; READTABLE:CL -*-

;;; Copyright Lisp Machine, Inc. 1985
;;;   See filename "COPYRIGHT.TEXT" for
;;; licensing and release information.

;;; Printer stuff for plain ASCII text printers
;;; This is for printers with no special features at all.

;;; To define a new printer type, copy this file into a new file named after your printer type.
;;; Then add methods for the features of your printer.
;;; See the file TIGER; TOSHIBA.LISP for examples.
;;; When you are done, edit the file TIGER; TIGER-SYSTEM.LISP to add your new file.

;;; Note that this file is in BASE 10 and READTABE CL for Common-Lisp.
;;; Most of the other files in the tiger system are BASE 8 READTABLE T.

(def-tiger-props :vanilla
		 ;; an instance of this flavor gets created to handle output
		 ;; to the printer. The :SET-DESTINATION method gets sent to it
		 ;; with serial stream expecting ASCII characters. That is,
		 ;; with a stream presumably connected physically to the printer.
		 ;; Or at least you can think of it as that. However, the stream
		 ;; should be used in the manner of a uni-directional pipe only.
		 ;; no handshaking is allowed on it (because it might be a buffer
		 ;; of some sort instead). If there is handshaking of some sort to
		 ;; do that it should be handled by another stream, specified by the
		 ;; tiger-serial-handshake-type property, which can be
		 ;; :hardware (meaning now handshake is attemped by the
		 ;; software, and presumably the hardware is wired with
		 ;; data-terminal-ready etc) :software, meaning the usual #\control-Q
		 ;; #\control-S kind of thing, or :default. Which means :hardware.
		 ;; However, if the TIGER-SERIAL-STREAM-HANDSHAKE-TYPE-PROPERTY
		 ;; is a list, then we have an escape to the general device
		 ;; mechanism. :HARDWARE means the same (on a LAMBDA) as
		 ;; ("SDU-SERIAL-B:" si:sdu-serial-stream :baud-rate 9600.)
		 ;; The CAR of the list is a device pathname, and the CDR is
		 ;; taken as arguments to MAKE-INSTANCE, a stream for this device.
		 tiger-stream-flavor vanilla-stream
		 TIGER-SERIAL-HANDSHAKE-TYPE :default
		 ;; specify that we dont handle screen dumps. Unless we do,
		 ;; in which case dont specify anything about this property.
		 si:print-bit-array nil
		 tiger-font-type vanilla-font
		 font-directory nil)

;; another kind of vanilla printer is the HP laserjet. Which see.

(defflavor vanilla-stream 
	   ()
	   (basic-printer-stream-mixin)
  (:default-init-plist :name :vanilla))


;;; The below is a method for setting up your printer for normal printing.
;;; This one has no effect.  Depending on your printer, you may have to redefine this.

(defmethod (vanilla-stream :setup-normal) ()
  (send destination :string-out ""))

