(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED "29-Sep-87 07:44:31" |{MCS:MCS:STANFORD}<LANE>BMENCODE.;15| 4082   

      changes to%:  (FNS BITMAP.ENCODE FILE.TO.BITMAP BITMAP.TO.FILE)

      previous date%: "22-Jan-87 08:05:09" |{MCS:MCS:STANFORD}<LANE>BMENCODE.;14|)


(* "
Copyright (c) 1986, 1987 by Stanford University.  All rights reserved.
")

(PRETTYCOMPRINT BMENCODECOMS)

(RPAQQ BMENCODECOMS ((* User function)
                     (FNS BITMAP.ENCODE)
                     (* Internal functions)
                     (FNS FILE.TO.BITMAP BITMAP.TO.FILE)
                     (ADDVARS (BMC.MAKEFILE.OPTIONS NEW))
                     (INITVARS (BMC.EXTENSION 'BMC)
                            (BMC.BYTESPERLINE 64))
                     (GLOBALVARS BMC.MAKEFILE.OPTIONS BMC.EXTENSION BMC.BYTESPERLINE)))



(* User function)

(DEFINEQ

(BITMAP.ENCODE
  [LAMBDA (FILES)                                            (* ; "Edited 29-Sep-87 07:38 by cdl")

    (LET [FILENAME (FILENAMES (bind NAME for FILE inside FILES
                                 collect (PROG1 (SETQ NAME (NAMEFIELD FILE T))
                                                (SETATOMVAL NAME (FILE.TO.BITMAP FILE]
         (DECLARE (SPECVARS FILENAME))
         [SETATOMVAL [FILECOMS (NAMEFIELD (SETQ FILENAME (PACKFILENAME 'EXTENSION BMC.EXTENSION
                                                                'BODY
                                                                (CAR FILENAMES]
                `((BITMAPS ,@FILENAMES)
                  (P (for FILE in ',FILENAMES do (PRIN1 "Restoring file ")
                                                 (PRIN1 (BITMAP.TO.FILE (EVALV FILE)
                                                               FILE))
                                                 (TERPRI]
         (RESETVAR FONTCHANGEFLG NIL (MAKEFILE FILENAME BMC.MAKEFILE.OPTIONS])
)



(* Internal functions)

(DEFINEQ

(FILE.TO.BITMAP
  [LAMBDA (FILE)                                             (* ; "Edited 29-Sep-87 07:41 by cdl")

    (DECLARE (SPECVARS FILE))
    (LET (STREAM)
         (DECLARE (SPECVARS STREAM))
         (RESETLST [RESETSAVE NIL `(CLOSEF? ,(SETQ STREAM (OPENSTREAM FILE 'INPUT]
                (LET (BITMAP (LENGTH (GETFILEINFO STREAM 'LENGTH))
                            (BYTESPERLINE (QUOTIENT BMC.BYTESPERLINE 2)))
                     (with BITMAP (SETQ BITMAP (BITMAPCREATE (TIMES BYTESPERLINE BITSPERBYTE)
                                                      (QUOTIENT (PLUS (TIMES 2 BYTESPERWORD)
                                                                      BYTESPERLINE LENGTH)
                                                             BYTESPERLINE)))
                           (\PUTBASE BITMAPBASE 0 (LOGAND LENGTH (MASK.1'S 0 16)))
                           (\PUTBASE BITMAPBASE 1 (LRSH LENGTH BITSPERWORD))
                           (\BINS STREAM BITMAPBASE (TIMES 2 BYTESPERWORD)
                                  LENGTH))
                     BITMAP])

(BITMAP.TO.FILE
  [LAMBDA (BITMAP FILE)                                      (* ; "Edited 29-Sep-87 07:42 by cdl")

    (DECLARE (SPECVARS BITMAP FILE))
    (LET (STREAM)
         (DECLARE (SPECVARS STREAM))
         (RESETLST [RESETSAVE NIL `(CLOSEF? ,(SETQ STREAM (OPENSTREAM FILE 'OUTPUT]
                [with BITMAP (\DTEST BITMAP 'BITMAP)
                      (\BOUTS STREAM BITMAPBASE (TIMES 2 BYTESPERWORD)
                             (PLUS (\GETBASE BITMAPBASE 0)
                                   (LLSH (\GETBASE BITMAPBASE 1)
                                         BITSPERWORD]
                (FULLNAME STREAM])
)

(ADDTOVAR BMC.MAKEFILE.OPTIONS NEW)

(RPAQ? BMC.EXTENSION 'BMC)

(RPAQ? BMC.BYTESPERLINE 64)
(DECLARE%: DOEVAL@COMPILE DONTCOPY

(GLOBALVARS BMC.MAKEFILE.OPTIONS BMC.EXTENSION BMC.BYTESPERLINE)
)
(PUTPROPS BMENCODE COPYRIGHT ("Stanford University" 1986 1987))
(DECLARE%: DONTCOPY
  (FILEMAP (NIL (878 1977 (BITMAP.ENCODE 888 . 1975)) (2009 3786 (FILE.TO.BITMAP 2019 . 3130) (
BITMAP.TO.FILE 3132 . 3784)))))
STOP