-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathsect16.html
360 lines (339 loc) · 20.6 KB
/
sect16.html
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
<!DOCTYPE html>
<html>
<head>
<title>The Z-Machine Standards Document</title>
<link rel="stylesheet" type="text/css" href="zspec.css">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body>
<img class="icon" src="images/icon16.gif" alt="">
<h1>16. Font 3 and character graphics</h1>
<h2 id="16.1">16.1</h2>
<p>The following table of 8x8 bitmaps gives a suitable appearance
for font 3. The font must have a fixed pitch and characters must be printed
immediately next to each other in all four directions.
</p>
<pre>
32( ): 76543210 33(!): 76543210 34("): 76543210 35(#): 76543210
0 0 0 0 #
1 1 1 1 #
2 2 # 2 # 2 #
3 3 ## 3 ## 3 #
4 4####### 4####### 4 #
5 5 ## 5 ## 5 #
6 6 # 6 # 6 #
7 7 7 7#
36($): 76543210 37(%): 76543210 38(&): 76543210 39('): 76543210
0# 0 0 0
1 # 1 1 1
2 # 2 2 2
3 # 3 3 3########
4 # 4 4######## 4
5 # 5 5 5
6 # 6 6 6
7 # 7 7 7
40((): 76543210 41()): 76543210 42(*): 76543210 43(+): 76543210
0 # 0 # 0 # 0
1 # 1 # 1 # 1
2 # 2 # 2 # 2
3 # 3 # 3######## 3
4 # 4 # 4 4########
5 # 5 # 5 5 #
6 # 6 # 6 6 #
7 # 7 # 7 7 #
44(,): 76543210 45(-): 76543210 46(.): 76543210 47(/): 76543210
0 # 0 # 0 # 0
1 # 1 # 1 # 1
2 # 2 # 2 # 2
3 # 3 # 3 # 3 #####
4 #### 4#### 4 ##### 4 #
5 # 5 # 5 5 #
6 # 6 # 6 6 #
7 # 7 # 7 7 #
</pre>
<pre>
48(0): 76543210 49(1): 76543210 50(2): 76543210 51(3): 76543210
0 0 # 0 # 0#
1 1 # 1 # 1 #
2 2 # 2 # 2 #
3##### 3 # 3 # 3 #####
4 # 4##### 4 ##### 4 #
5 # 5 5 # 5 #
6 # 6 6 # 6 #
7 # 7 7# 7 #
52(4): 76543210 53(5): 76543210 54(6): 76543210 55(7): 76543210
0 # 0 # 0######## 0########
1 # 1 # 1######## 1########
2 # 2 # 2######## 2########
3##### 3 # 3######## 3########
4 # 4##### 4######## 4########
5 # 5 # 5######## 5
6 # 6 # 6######## 6
7 # 7 # 7######## 7
56(8): 76543210 57(9): 76543210 58(:): 76543210 59(;): 76543210
0 0##### 0 ##### 0 #
1 1##### 1 ##### 1 #
2 2##### 2 ##### 2 #
3######## 3##### 3 ##### 3########
4######## 4##### 4 ##### 4########
5######## 5##### 5 ##### 5########
6######## 6##### 6 ##### 6########
7######## 7##### 7 ##### 7########
60(<): 76543210 61(=): 76543210 62(>): 76543210 63(?): 76543210
0######## 0##### 0 ##### 0 #####
1######## 1##### 1 ##### 1 #####
2######## 2##### 2 ##### 2 #####
3######## 3##### 3 ##### 3 #####
4######## 4######## 4######## 4 #####
5 # 5##### 5 ##### 5
6 # 6##### 6 ##### 6
7 # 7##### 7 ##### 7
64(@): 76543210 65(A): 76543210 66(B): 76543210 67(C): 76543210
0 0 0##### 0 #####
1 1 1##### 1 #####
2 2 2##### 2 #####
3 ##### 3##### 3##### 3 #####
4 ##### 4##### 4##### 4 #####
5 ##### 5##### 5 5 #
6 ##### 6##### 6 6 #
7 ##### 7##### 7 7#
</pre>
<pre>
68(D): 76543210 69(E): 76543210 70(F): 76543210 71(G): 76543210
0# 0 # 0##### 0 #
1 # 1 # 1##### 1
2 # 2 # 2##### 2
3 ##### 3##### 3##### 3
4 ##### 4##### 4##### 4
5 ##### 5##### 5 # 5
6 ##### 6##### 6 # 6
7 ##### 7##### 7 # 7
72(H): 76543210 73(I): 76543210 74(J): 76543210 75(K): 76543210
0 0 0# 0########
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 # 7# 7 7
76(L): 76543210 77(M): 76543210 78(N): 76543210 79(O): 76543210
0 0# 0 # 0
1 1# 1 # 1########
2 2# 2 # 2
3 3# 3 # 3
4 4# 4 # 4
5 5# 5 # 5
6 6# 6 # 6########
7######## 7# 7 # 7
80(P): 76543210 81(Q): 76543210 82(R): 76543210 83(S): 76543210
0 0 0 0
1######## 1######## 1######## 1########
2# 2## 2### 2####
3# 3## 3### 3####
4# 4## 4### 4####
5# 5## 5### 5####
6######## 6######## 6######## 6########
7 7 7 7
84(T): 76543210 85(U): 76543210 86(V): 76543210 87(W): 76543210
0 0 0 0
1######## 1######## 1######## 1########
2##### 2###### 2####### 2########
3##### 3###### 3####### 3########
4##### 4###### 4####### 4########
5##### 5###### 5####### 5########
6######## 6######## 6######## 6########
7 7 7 7
</pre>
<pre>
88(X): 76543210 89(Y): 76543210 90(Z): 76543210 91([): 76543210
0 0 0# # 0 #
1 # 1# 1 # # 1 #
2 # 2# 2 # # 2 #
3 # 3# 3 ## 3 #
4 # 4# 4 ## 4########
5 # 5# 5 # # 5 #
6 # 6# 6 # # 6 #
7 7 7# # 7 #
92(\): 76543210 93(]): 76543210 94(^): 76543210 95(_): 76543210
0 ## 0 ## 0 ## 0########
1 #### 1 ## 1 #### 1# #
2## ## ## 2 ## 2## ## ## 2# #
3 ## 3 ## 3 ## 3# #
4 ## 4## ## ## 4## ## ## 4# #
5 ## 5 #### 5 #### 5# #
6 ## 6 ## 6 ## 6# #
7 7 7 7########
96('): 76543210 97(a): 76543210 98(b): 76543210 99(c): 76543210
0 #### 0## # 0 ## 0 #
1 ## ## 1# # # 1 # # 1 ##
2 ## 2# # 2 # # 2 # #
3 ## 3## 3 ### 3# # #
4 ## 4# # 4 # # 4 # #
5 5# # 5 # # 5 ##
6 ## 6# 6 ## 6 #
7 7 7 7
100(d): 76543210 101(e): 76543210 102(f): 76543210 103(g): 76543210
0# # 0# # 0# # # 0# #
1## ## 1## ## 1# # # 1 # #
2# # # # 2# # # # 2## # 2 # #
3# # # 3# # # 3# # 3 #
4# # # # 4# # 4## 4 # #
5## ## 5# # 5# 5 # #
6# # 6# # 6# 6# #
7 7 7 7
104(h): 76543210 105(i): 76543210 106(j): 76543210 107(k): 76543210
0## # 0 # 0 # 0 #
1# # # 1 # 1 ### 1 #
2## # # 2 # 2 # # # 2 #
3# # # # 3 # 3# # # 3 ###
4# # ## 4 # 4 # # # 4 # # #
5# # # 5 # 5 ### 5# # #
6# ## 6 # 6 # 6# # #
7 7 7 7
</pre>
<pre>
108(l): 76543210 109(m): 76543210 110(n): 76543210 111(o): 76543210
0 # 0## ## 0# # 0## #
1 ## 1# # # # 1 # # 1# # ##
2 # # 2# # # 2 ### 2## # #
3 # # 3# # # # 3 # # 3# # #
4 # 4## ## 4 # # 4# #
5 # 5# # 5 # 5#
6 # 6# # 6 # 6#
7 7 7 7
112(p): 76543210 113(q): 76543210 114(r): 76543210 115(s): 76543210
0# 0 # 0 ## 0 #
1# 1 # 1 # # 1 # #
2# 2 # 2 # # 2 # ##
3# # 3 #### 3 # # 3 # # #
4# # # 4 # # 4 ## 4 ## #
5## # 5 # # 5 # # 5 # #
6# # 6 # # 6 # # 6 #
7 7 7 7
116(t): 76543210 117(u): 76543210 118(v): 76543210 119(w): 76543210
0 # 0 ## 0 # 0 ##
1 ### 1 # # 1# ### # 1 # #
2 # # # 2 # # 2 # # # 2 # #
3# # # 3 # # 3 # 3 # #
4 # 4 # # 4 # 4 ##
5 # 5 # # 5 # 5 #
6 # 6 # # 6 # 6 #
7 7 7 7
120(x): 76543210 121(y): 76543210 122(z): 76543210 123({): 76543210
0# # # 0### 0 # 0### ###
1 # # # 1## # 1 # # 1## ##
2 ### 2# # # 2 # # 2 # #
3 # 3# # # 3 # # 3### ###
4 # 4# ## # 4 # 4### ###
5 # 5# # ## 5 # # 5### ###
6 # 6# # # 6 # # 6### ###
7 7 7 7########
124( ): 76543210 125(}): 76543210 126(~): 76543210
0### ### 0### ### 0## ##
1### ### 1## ## 1# ## #
2### ### 2 # # 2##### #
3### ### 3### ### 3#### ##
4 # # 4 # # 4### ###
5## ## 5## ## 5########
6### ### 6### ### 6### ###
7######## 7######## 7########
</pre>
<hr>
<h2 id="remarks">Remarks</h2>
<p>Two different versions of font 3 were supplied by Infocom, which we shall
call the Amiga and PC forms (the Atari form is the same as for the PC). The
arrow shape differed slightly and so did the rune alphabet. Each was an attempt
to map the late Anglian ("futhorc") runic alphabet, which has 33
characters, onto our Latin alphabet. The drawings above are from the Amiga
set.
</p>
<p>Most of the mappings are straightforward (e.g., Latin A maps to Anglian a),
except that: Latin C is mapped to Anglian eo; K to "other k" (previously a
z sound); Q to Anglian k (the same rune as c); V to ea; X to z and Z to oe.
The PC runes differ as follows: G has an ornamental circle making it more
look like "other z"; K maps to Anglian k (or c); Q is an Anglian ea (which
resembles the late Anglian q); V is an oe; X is an "other k" and Z is a
symbol Infocom seem to have invented themselves. (Though less well drawn
the PC runes arguably have a better sound-mapping.)
</p>
<p>The font behaviour of 'Beyond Zork', which does have bit 3 of 'Flags 2'
set, is rather complicated and depends on the interpreter number it
finds in the header (see <B>S</B> 11). Specifically:
</p>
<ol>
<li>(a Digital terminal) 'BZ' asks whether the player has a VT220
terminal (a model capable of character graphics) and uses font 3 if
and only if the answer is yes. (An in-house convenience:
Infocom used a Digital mainframe.)
</li>
<li>(Apple IIe) 'BZ' never uses font 3.</li>
<li>(Macintosh) 'BZ' always uses font 3.</li>
<li>(Amiga) 'BZ' always uses font 3.</li>
<li>(Atari ST) 'BZ' always uses font 3.</li>
<li>(MSDOS) 'BZ' uses font 3 if it finds bit 3 of 'Flags 2' set
(indicating that a graphical screen mode is in use) and otherwise
uses IBM PC graphics codes. These need to be converted back into
ASCII. The conversion process used by the <strong>Zip</strong> interpreter is
as follows:
<pre>
179 becomes a vertical stroke (ASCII 124)
186 a hash (ASCII 35)
196 a minus sign (ASCII 45)
205 an equals sign (ASCII 61)
all others in the range 179 to 218 become a plus sign (ASCII 43)
</pre>
</li>
<li>(Commodore 128) 'BZ' always uses font 3.</li>
<li>(Commodore 64) 'BZ' always uses font 3.</li>
<li>(Apple IIc) 'BZ' uses Apple character graphics (possibly
"Mousetext"), but has problems when the units used are not $1\times 1$.
</li>
<li>(Apple IIgs) 'BZ' always uses font 3.</li>
<li>(Tandy) 'BZ' crashes on the public interpreters.</li>
</ol>
<p>A similarly tangled process is used in 'Journey'. It is
obviously highly unsatisfactory to have to make the decision in
the above way, which is why <strong>set_font</strong> is now required to return
0 indicating non-availability of a font.
</p>
<p>Stefan Jokisch suggests that Infocom originally intended the
graphics bit as a way to develop Version 5 to allow a graphical
version in parallel with the normal text one. For instance, when
the Infocom MSDOS interpreter starts up, it looks at the graphics
flag and:
</p>
<p>if clear, it sets the font width/height to 1/1 (so that screen
units are character positions);
</p>
<p>if set, it enters MGCA, a graphical screen mode and sets the font
width/height to 8/8 (so that screen units are pixels).
</p>
<p>The "COLOR" command in 'BZ' (typed at the keyboard) also behaves
differently depending on the interpreter number, which is legal behaviour
and has no impact on the specification.
</p>
<hr>
<p>
<a href="index.html">Contents</a> /
<a href="preface.html">Preface</a> /
<a href="overview.html">Overview</a>
</p>
<p>Section
<a href="sect01.html">1</a> / <a href="sect02.html">2</a> /
<a href="sect03.html">3</a> / <a href="sect04.html">4</a> /
<a href="sect05.html">5</a> / <a href="sect06.html">6</a> /
<a href="sect07.html">7</a> / <a href="sect08.html">8</a> /
<a href="sect09.html">9</a> / <a href="sect10.html">10</a> /
<a href="sect11.html">11</a> / <a href="sect12.html">12</a> /
<a href="sect13.html">13</a> / <a href="sect14.html">14</a> /
<a href="sect15.html">15</a> / <a href="sect16.html">16</a>
</p>
<p>Appendix
<a href="appa.html">A</a> / <a href="appb.html">B</a> /
<a href="appc.html">C</a> / <a href="appd.html">D</a> /
<a href="appe.html">E</a> / <a href="appf.html">F</a>
</p>
<hr>
</body>
</html>