(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED " 9-May-88 23:30:31" {ERINYES}<LISPUSERS>MEDLEY>TEK4010.;1 6442   

      previous date%: " 8-May-85 12:20:13" {ERINYES}<LISPUSERS>LYRIC>TEK4010.;1)


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

(PRETTYCOMPRINT TEK4010COMS)

(RPAQQ TEK4010COMS ((FNS GLOMHI&LO TEK.DRAWTO TEK.MOVETO TEK4010.INTERP)
                        (MACROS ->NEXTSTATE \BIN7BITS)
                        (VARS TEKPTSPERPOINT)))
(DEFINEQ

(GLOMHI&LO
  [LAMBDA (HIBYTE LOBYTE)                                (* hdj "10-Sep-84 14:32")
    (IPLUS LOBYTE (LLSH HIBYTE 5])

(TEK.DRAWTO
  [LAMBDA (X Y WIDTH OPERATION STREAM)                   (* AJB "18-Mar-85 16:16")
    (DRAWTO (IQUOTIENT X TEKPTSPERPOINT)
           (IQUOTIENT Y TEKPTSPERPOINT)
           WIDTH OPERATION STREAM])

(TEK.MOVETO
  [LAMBDA (X Y STREAM)                                   (* AJB "18-Mar-85 16:16")
    (MOVETO (IQUOTIENT X TEKPTSPERPOINT)
           (IQUOTIENT Y TEKPTSPERPOINT)
           STREAM])

(TEK4010.INTERP
  [LAMBDA (INSTREAM OUTSTREAM)                           (* AJB "27-Mar-85 12:55")
    (PROG (CURRSTATE PREVSTATE INBYTE HI2BITS LO5BITS HIX LOX HIY LOY DRAWP)
                                                             (* start out by moving, not drawing)
          (SETQQ PREVSTATE @ALPHASTATE)
          (SETQQ CURRSTATE @ALPHASTATE)
      @ALPHASTATE
          (\BIN7BITS INSTREAM INBYTE HI2BITS LO5BITS)
          (COND
             ((ZEROP HI2BITS)
              (->NEXTSTATE @ALPHA.CTRLSTATE))
             (T (BOUT OUTSTREAM INBYTE)
                (->NEXTSTATE @ALPHASTATE)))
      @GRAPHICSSTATE
          (SETQ DRAWP NIL)
          (\BIN7BITS INSTREAM INBYTE HI2BITS LO5BITS)
          (SELECTQ HI2BITS
              (0 (->NEXTSTATE @GRAPHICS.CTRLSTATE))
              (1 (->NEXTSTATE @HIYSTATE))
              (2 (->NEXTSTATE @LOXSTATE))
              (3 (->NEXTSTATE @LOYSTATE))
              NIL)
      @HIYSTATE
          (SETQ HIY LO5BITS)
          (\BIN7BITS INSTREAM INBYTE HI2BITS LO5BITS)
          (SELECTQ HI2BITS
              (0 (->NEXTSTATE @GRAPHICS.CTRLSTATE))
              (1 (->NEXTSTATE @HIYSTATE))
              (2 (->NEXTSTATE @LOXSTATE))
              (3 (->NEXTSTATE @LOYSTATE))
              NIL)
      @LOYSTATE
          (SETQ LOY LO5BITS)
          (\BIN7BITS INSTREAM INBYTE HI2BITS LO5BITS)
          (SELECTQ HI2BITS
              (0 (->NEXTSTATE @GRAPHICS.CTRLSTATE))
              (1 (->NEXTSTATE @HIXSTATE))
              (2 (->NEXTSTATE @LOXSTATE))
              (3 (->NEXTSTATE @LOYSTATE))
              NIL)
      @HIXSTATE
          (SETQ HIX LO5BITS)
          (\BIN7BITS INSTREAM INBYTE HI2BITS LO5BITS)
          (SELECTQ HI2BITS
              (0 (->NEXTSTATE @GRAPHICS.CTRLSTATE))
              (1 (->NEXTSTATE @HIYSTATE))
              (2 (->NEXTSTATE @LOXSTATE))
              (3 (->NEXTSTATE @LOYSTATE))
              NIL)
      @LOXSTATE
          (SETQ LOX LO5BITS)
          (\BIN7BITS INSTREAM INBYTE HI2BITS LO5BITS)
          (COND
             (DRAWP (TEK.DRAWTO (GLOMHI&LO HIX LOX)
                           (GLOMHI&LO HIY LOY)
                           1 NIL OUTSTREAM))
             (T (TEK.MOVETO (GLOMHI&LO HIX LOX)
                       (GLOMHI&LO HIY LOY)
                       OUTSTREAM)
                (SETQ DRAWP T)))
          (SELECTQ HI2BITS
              (0 (->NEXTSTATE @GRAPHICS.CTRLSTATE))
              (1 (->NEXTSTATE @HIYSTATE))
              (2 (->NEXTSTATE @LOXSTATE))
              (3 (->NEXTSTATE @LOYSTATE))
              NIL)
      @ALPHA.CTRLSTATE
          (SELECTQ LO5BITS
              (7 (RINGBELLS 1))
              (8 (RELMOVETO -14 0 OUTSTREAM))
              (9 (RELMOVETO 14 0 OUTSTREAM))
              (10 (RELMOVETO 0 -22 OUTSTREAM))
              (11 (RELMOVETO 0 22 OUTSTREAM))
              (27 (->NEXTSTATE @ESCSTATE))
              (29 (->NEXTSTATE @GRAPHICSSTATE))
              (13 (MOVETO 0 (DSPYPOSITION NIL OUTSTREAM)
                         OUTSTREAM)
                  (->NEXTSTATE @ALPHASTATE))
              (31 (->NEXTSTATE @ALPHASTATE))
              NIL)
          (\BIN7BITS INSTREAM INBYTE HI2BITS LO5BITS)
          (COND
             ((EQ HI2BITS 0)
              (->NEXTSTATE @ALPHA.CTRLSTATE))
             (T (->NEXTSTATE @ALPHASTATE)))
      @GRAPHICS.CTRLSTATE
          (SELECTQ LO5BITS
              (4 (->NEXTSTATE @ALPHASTATE))
              (7 (RINGBELLS 1))
              (8 (RELMOVETO -14 0 OUTSTREAM))
              (9 (RELMOVETO 14 0 OUTSTREAM))
              (10 (RELMOVETO 0 -22 OUTSTREAM))
              (11 (RELMOVETO 0 22 OUTSTREAM))
              (27 (->NEXTSTATE @ESCSTATE))
              (29 (->NEXTSTATE @GRAPHICSSTATE))
              (13 (MOVETO 0 (DSPYPOSITION NIL OUTSTREAM)
                         OUTSTREAM))
              (31 (->NEXTSTATE @ALPHASTATE))
              NIL)
          (\BIN7BITS INSTREAM INBYTE HI2BITS LO5BITS)
          (SELECTQ HI2BITS
              (0 (->NEXTSTATE @GRAPHICS.CTRLSTATE))
              (1 (COND
                    ((EQUAL PREVSTATE '@LOYSTATE)
                     (->NEXTSTATE @HIXSTATE))
                    (T (->NEXTSTATE @HIYSTATE))))
              (2 (->NEXTSTATE @LOXSTATE))
              (3 (->NEXTSTATE @LOYSTATE))
              NIL)
      @ESCSTATE
          (\BIN7BITS INSTREAM INBYTE HI2BITS LO5BITS)
          (COND
             ((EQ LO5BITS 12)
              (DSPRESET OUTSTREAM)))
          (->NEXTSTATE @ALPHASTATE])
)
(DECLARE%: EVAL@COMPILE 

[PUTPROPS ->NEXTSTATE MACRO ((STATE)
                             (PROGN (SETQ PREVSTATE CURRSTATE)
                                    (SETQ CURRSTATE STATE)
                                    (GO STATE]

[PUTPROPS \BIN7BITS MACRO (ARGS (LET ((INSTREAM (CAR ARGS))
                                      (INBYTE (CADR ARGS))
                                      (HI2BITS (CADDR ARGS))
                                      (LO5BITS (CADDDR ARGS)))
                                     `(PROGN (SETQ %, INBYTE (LOGAND 127 (BIN %, INSTREAM)))
                                             (SETQ %, HI2BITS (LRSH %, INBYTE 5))
                                             (SETQ %, LO5BITS (LOGAND %, INBYTE 31]
)

(RPAQQ TEKPTSPERPOINT 2)
(PUTPROPS TEK4010 COPYRIGHT ("Xerox Corporation" 1985 1988))
(DECLARE%: DONTCOPY
  (FILEMAP (NIL (521 5591 (GLOMHI&LO 531 . 671) (TEK.DRAWTO 673 . 896) (TEK.MOVETO 898 . 1105) (
TEK4010.INTERP 1107 . 5589)))))
STOP
