-
-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathBMENCODE
99 lines (79 loc) · 3.32 KB
/
BMENCODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
(FILECREATED "14-Jan-87 17:50:00" {MCS:MCS:STANFORD}<LANE>BMENCODE.;13
previous date: "19-Dec-86 14:46:44" {MCS:MCS:STANFORD}<LANE>BMENCODE.;11)
(* 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) (* cdl "19-Dec-86 14:43")
(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]
(BQUOTE ((BITMAPS ,@ FILENAMES)
(P (for FILE in (QUOTE , 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) (* cdl "19-Dec-86 13:37")
(DECLARE (SPECVARS FILE))
(LET (STREAM)
(DECLARE (SPECVARS STREAM))
(RESETLST [RESETSAVE NIL (BQUOTE (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 LENGTH)
(\PUTBASE BITMAPBASE 1 (RSH LENGTH BITSPERWORD))
(\BINS STREAM BITMAPBASE (TIMES 2 BYTESPERWORD)
LENGTH))
BITMAP])
(BITMAP.TO.FILE
[LAMBDA (BITMAP FILE) (* cdl "19-Dec-86 13:40")
(DECLARE (SPECVARS BITMAP FILE))
(LET (STREAM)
(DECLARE (SPECVARS STREAM))
(RESETLST [RESETSAVE NIL (BQUOTE (CLOSEF? , (SETQ STREAM (OPENSTREAM
FILE
'OUTPUT]
[with BITMAP (\DTEST BITMAP 'BITMAP)
(\BOUTS STREAM BITMAPBASE (TIMES 2 BYTESPERWORD)
(PLUS (\GETBASE BITMAPBASE 0)
(LSH (\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))
STOP