|
|
1.1 root 1: \ *****************************************************************************
2: \ * Copyright (c) 2004, 2008 IBM Corporation
3: \ * All rights reserved.
4: \ * This program and the accompanying materials
5: \ * are made available under the terms of the BSD License
6: \ * which accompanies this distribution, and is available at
7: \ * http://www.opensource.org/licenses/bsd-license.php
8: \ *
9: \ * Contributors:
10: \ * IBM Corporation - initial implementation
11: \ ****************************************************************************/
12:
13: : fc-abort ." FCode called abort: IP " get-ip . ( ." STACK: " .s ) depth dup 0< IF abort THEN . rdepth . cr abort ;
14: : fc-0 ." 0(lit): STACK ( S: " depth . ." R: " rdepth . ." ): " depth 0> IF .s THEN 0 ;
15: : fc-1 ." 1(lit): STACK ( S: " depth . ." R: " rdepth . ." ): " depth 0> IF .s THEN 1 ;
16:
17: : parse-1hex 1 hex-decode-unit ;
18:
19:
20: : reset-token-table
21: FFF 0 DO ['] ferror 0 i set-token LOOP
22: ;
23:
24: reset-token-table
25:
26: ' end0 0 00 set-token
27:
28: \ 01...0F beginning code of 2-byte FCode sequences
29:
30: \ ' ferror 1 08 set-token
31: \ ' ferror 1 09 set-token
32: \ ' ferror 1 0a set-token
33: \ ' ferror 1 0b set-token
34: \ ' ferror 1 0c set-token
35: \ ' ferror 1 0d set-token
36: \ ' ferror 1 0e set-token
37: \ ' ferror 1 0f set-token
38:
39: ' b(lit) 1 10 set-token
40:
41: ' b(') 1 11 set-token
42: ' b(") 1 12 set-token
43: ' bbranch 1 13 set-token
44: ' b?branch 1 14 set-token
45: ' b(loop) 1 15 set-token
46: ' b(+loop) 1 16 set-token
47: ' b(do) 1 17 set-token
48: ' b(?do) 1 18 set-token
49: ' i 0 19 set-token
50: ' j 0 1A set-token
51: ' b(leave) 1 1B set-token
52: ' b(of) 1 1C set-token
53: ' execute 0 1D set-token
54: ' + 0 1E set-token
55: ' - 0 1F set-token
56: ' * 0 20 set-token
57: ' / 0 21 set-token
58: ' mod 0 22 set-token
59: ' and 0 23 set-token
60: ' or 0 24 set-token
61: ' xor 0 25 set-token
62: ' invert 0 26 set-token
63: ' lshift 0 27 set-token
64: ' rshift 0 28 set-token
65: ' >>a 0 29 set-token
66: ' /mod 0 2A set-token
67: ' u/mod 0 2B set-token
68: ' negate 0 2C set-token
69: ' abs 0 2D set-token
70: ' min 0 2E set-token
71: ' max 0 2F set-token
72: ' >r 0 30 set-token
73: ' r> 0 31 set-token
74: ' r@ 0 32 set-token
75: ' exit 0 33 set-token
76: ' 0= 0 34 set-token
77: ' 0<> 0 35 set-token
78: ' 0< 0 36 set-token
79: ' 0<= 0 37 set-token
80: ' 0> 0 38 set-token
81: ' 0>= 0 39 set-token
82: ' < 0 3A set-token
83: ' > 0 3B set-token
84: ' = 0 3C set-token
85: ' <> 0 3D set-token
86: ' u> 0 3E set-token
87: ' u<= 0 3F set-token
88: ' u< 0 40 set-token
89: ' u>= 0 41 set-token
90: ' >= 0 42 set-token
91: ' <= 0 43 set-token
92: ' between 0 44 set-token
93: ' within 0 45 set-token
94: ' DROP 0 46 set-token
95: ' DUP 0 47 set-token
96: ' OVER 0 48 set-token
97: ' SWAP 0 49 set-token
98: ' ROT 0 4A set-token
99: ' -ROT 0 4B set-token
100: ' TUCK 0 4C set-token
101: ' nip 0 4D set-token
102: ' pick 0 4E set-token
103: ' roll 0 4F set-token
104: ' ?dup 0 50 set-token
105: ' depth 0 51 set-token
106: ' 2drop 0 52 set-token
107: ' 2dup 0 53 set-token
108: ' 2over 0 54 set-token
109: ' 2swap 0 55 set-token
110: ' 2rot 0 56 set-token
111: ' 2/ 0 57 set-token
112: ' u2/ 0 58 set-token
113: ' 2* 0 59 set-token
114: ' /c 0 5A set-token
115: ' /w 0 5B set-token
116: ' /l 0 5C set-token
117: ' /n 0 5D set-token
118: ' ca+ 0 5E set-token
119: ' wa+ 0 5F set-token
120: ' la+ 0 60 set-token
121: ' na+ 0 61 set-token
122: ' char+ 0 62 set-token
123: ' wa1+ 0 63 set-token
124: ' la1+ 0 64 set-token
125: ' cell+ 0 65 set-token
126: ' chars 0 66 set-token
127: ' /w* 0 67 set-token
128: ' /l* 0 68 set-token
129: ' cells 0 69 set-token
130: ' on 0 6A set-token
131: ' off 0 6B set-token
132: ' +! 0 6C set-token
133: ' @ 0 6D set-token
134: ' l@ 0 6E set-token
135: ' w@ 0 6F set-token
136: ' <w@ 0 70 set-token
137: ' c@ 0 71 set-token
138: ' ! 0 72 set-token
139: ' l! 0 73 set-token
140: ' w! 0 74 set-token
141: ' c! 0 75 set-token
142: ' 2@ 0 76 set-token
143: ' 2! 0 77 set-token
144: ' move 0 78 set-token
145: ' fill 0 79 set-token
146: ' comp 0 7A set-token
147: ' noop 0 7B set-token
148: ' lwsplit 0 7C set-token
149: ' wljoin 0 7D set-token
150: ' lbsplit 0 7E set-token
151: ' bljoin 0 7F set-token
152: ' wbflip 0 80 set-token
153: ' upc 0 81 set-token
154: ' lcc 0 82 set-token
155: ' pack 0 83 set-token
156: ' count 0 84 set-token
157: ' body> 0 85 set-token
158: ' >body 0 86 set-token
159: ' fcode-revision 0 87 set-token
160: ' span 0 88 set-token
161: ' unloop 0 89 set-token
162: ' expect 0 8A set-token
163: ' alloc-mem 0 8B set-token \ alloc-mem
164: ' free-mem 0 8C set-token \ free-mem
165: ' key? 0 8D set-token
166: ' key 0 8E set-token
167: ' emit 0 8F set-token
168: ' type 0 90 set-token
169: ' cr 0 91 set-token \ should be (cr but terminal support is not
170: \ available
171: ' cr 0 92 set-token
172: \ ' #out 0 93 set-token
173: \ ' #line 0 94 set-token
174: ' hold 0 95 set-token
175: ' <# 0 96 set-token
176: ' u#> 0 97 set-token
177: ' sign 0 98 set-token
178: ' u# 0 99 set-token
179: ' u#s 0 9A set-token
180: ' u. 0 9B set-token
181: ' u.r 0 9C set-token
182: ' . 0 9D set-token
183: ' .r 0 9E set-token
184: ' .s 0 9F set-token
185: ' base 0 A0 set-token
186: \ ' convert 0 A1 set-token
187: ' $number 0 A2 set-token
188: ' digit 0 A3 set-token
189: ' -1 0 A4 set-token
190: ' 0 0 A5 set-token
191: ' 1 0 A6 set-token
192: ' 2 0 A7 set-token
193: ' 3 0 A8 set-token
194: ' bl 0 A9 set-token
195: ' bs 0 AA set-token
196: ' bell 0 AB set-token
197: ' bounds 0 AC set-token
198: ' here 0 AD set-token
199: ' aligned 0 AE set-token
200: ' wbsplit 0 AF set-token
201: ' bwjoin 0 B0 set-token
202: ' b(<mark) 1 B1 set-token
203: ' b(>resolve) 1 B2 set-token
204: \ ' ferror 0 B3 set-token
205: \ ' ferror 0 B4 set-token
206: ' new-token 0 B5 set-token
207: ' named-token 0 B6 set-token
208: \ fcode-debug? IF
209: ' b(:) 1 B7 set-token
210: \ ELSE
211: \ ' b(:) 1 B7 set-token
212: \ THEN
213: ' b(value) 1 B8 set-token
214: ' b(variable) 1 B9 set-token
215: ' b(constant) 1 BA set-token
216: ' b(create) 1 BB set-token
217: ' b(defer) 1 BC set-token
218: ' b(buffer:) 1 BD set-token
219: ' b(field) 1 BE set-token
220: \ ' ferror 0 BF set-token
221: ' INSTANCE 0 C0 set-token
222: \ ' noop 1 C0 set-token
223: \ ' ferror 0 C1 set-token
224: \ fcode-debug? IF
225: ' b(;) 1 C2 set-token
226: \ ELSE
227: \ ' b(;) 1 C2 set-token
228: \ THEN
229: ' b(to) 1 C3 set-token
230: ' b(case) 1 C4 set-token
231: ' b(endcase) 1 C5 set-token
232: ' b(endof) 1 C6 set-token
233: ' # 0 C7 set-token
234: ' #s 0 C8 set-token
235: ' #> 0 C9 set-token
236: ' external-token 0 CA set-token
237: ' $find 0 CB set-token
238: ' offset16 0 CC set-token
239: ' evaluate 0 CD set-token
240: \ 0 CE reserved
241: \ 0 CF reserved
242: ' c, 0 D0 set-token
243: ' w, 0 D1 set-token
244: ' l, 0 D2 set-token
245: ' , 0 D3 set-token
246: ' um* 0 D4 set-token
247: ' um/mod 0 D5 set-token
248: \ 0 D6 reserved
249: \ 0 D7 reserved
250: ' d+ 0 D8 set-token
251: ' d- 0 D9 set-token
252: ' get-token 0 DA set-token
253: ' set-token 0 DB set-token
254: ' state 0 DC set-token \ possibly broken
255: ' compile, 0 DD set-token
256: ' behavior 0 DE set-token
257:
258: ' start0 0 F0 set-token
259: ' start1 0 F1 set-token
260: ' start2 0 F2 set-token
261: ' start4 0 F3 set-token
262:
263: ' ferror 0 FC set-token
264: ' version1 0 FD set-token
265:
266: \ ' 4-byte-id 0 FE set-token \ Historical
267: ' end1 0 FF set-token
268:
269: \ ' dma-alloc 0 101 set-token
270: ' my-address 0 102 set-token
271: ' my-space 0 103 set-token
272: ' property 0 110 set-token
273: ' encode-int 0 111 set-token
274: ' encode+ 0 112 set-token
275: ' encode-phys 0 113 set-token
276: ' encode-string 0 114 set-token
277: ' encode-bytes 0 115 set-token
278: ' reg 0 116 set-token
279: ' model 0 119 set-token
280: ' device-type 0 11A set-token
281: ' parse-2int 0 11B set-token
282: ' is-install 0 11C set-token
283: ' is-remove 0 11D set-token
284: ' is-selftest 0 11E set-token
285: ' new-device 0 11F set-token
286: ' diagnostic-mode? 0 120 set-token
287: ' memory-test-suite 0 122 set-token
288: ' mask 0 124 set-token
289: ' get-msecs 0 125 set-token
290: ' ms 0 126 set-token
291: ' finish-device 0 127 set-token
292: ' decode-phys 0 128 set-token
293: ' #lines 0 150 set-token
294: ' #columns 0 151 set-token
295: ' line# 0 152 set-token
296: ' column# 0 153 set-token
297: ' inverse? 0 154 set-token
298: ' inverse-screen? 0 155 set-token
299:
300: ' draw-character 0 157 set-token
301: ' reset-screen 0 158 set-token
302: ' toggle-cursor 0 159 set-token
303: ' erase-screen 0 15A set-token
304: ' blink-screen 0 15B set-token
305: ' invert-screen 0 15C set-token
306: ' insert-characters 0 15D set-token
307: ' delete-characters 0 15E set-token
308: ' insert-lines 0 15F set-token
309: ' delete-lines 0 160 set-token
310: ' draw-logo 0 161 set-token
311: ' frame-buffer-adr 0 162 set-token
312: ' screen-height 0 163 set-token
313: ' screen-width 0 164 set-token
314: ' window-top 0 165 set-token
315: ' window-left 0 166 set-token
316:
317: ' default-font 0 16A set-token
318: ' set-font 0 16B set-token
319: ' char-height 0 16C set-token
320: ' char-width 0 16D set-token
321: ' >font 0 16E set-token
322: ' fontbytes 0 16F set-token
323:
324: ' fb8-install 0 18B set-token
325:
326: ' device-name 0 201 set-token
327: ' my-args 0 202 set-token
328: ' my-self 0 203 set-token
329: ' find-package 0 204 set-token
330: ' open-package 0 205 set-token
331: ' close-package 0 206 set-token
332: ' find-method 0 207 set-token
333: ' call-package 0 208 set-token
334: ' $call-parent 0 209 set-token
335: ' my-parent 0 20A set-token
336: ' ihandle>phandle 0 20B set-token
337: ' my-unit 0 20D set-token
338: ' $call-method 0 20E set-token
339: ' $open-package 0 20F set-token
340: ' (is-user-word) 0 214 set-token
341: ' suspend-fcode 0 215 set-token
342: \ ' abort 0 216 set-token
343: ' fc-abort 0 216 set-token
344: ' catch 0 217 set-token
345: ' throw 0 218 set-token
346: ' get-my-property 0 21A set-token
347: ' decode-int 0 21B set-token
348: ' decode-string 0 21C set-token
349: ' get-inherited-property 0 21D set-token
350: ' delete-property 0 21E set-token
351: ' get-package-property 0 21F set-token
352: ' cpeek 0 220 set-token
353: ' wpeek 0 221 set-token
354: ' lpeek 0 222 set-token
355: ' cpoke 0 223 set-token
356: ' wpoke 0 224 set-token
357: ' lpoke 0 225 set-token
358: ' lwflip 0 226 set-token
359: ' lbflip 0 227 set-token
360: ' lbflips 0 228 set-token
361: ' rx@ 0 22E set-token
362: ' rx! 0 22F set-token
363: ' rb@ 0 230 set-token
364: ' rb! 0 231 set-token
365: ' rw@ 0 232 set-token
366: ' rw! 0 233 set-token
367: ' rl@ 0 234 set-token
368: ' rl! 0 235 set-token
369: ' wbflips 0 236 set-token
370: ' lwflips 0 237 set-token
371: \ ' probe 0 238 set-token
372: \ ' probe-virtual 0 239 set-token
373: \ 0 23A reserved
374: ' child 0 23B set-token
375: ' peer 0 23C set-token
376: ' next-property 0 23D set-token
377: ' byte-load 0 23E set-token
378: ' set-args 0 23F set-token
379: ' left-parse-string 0 240 set-token
380: ' bxjoin 0 241 set-token
381: ' <l@ 0 242 set-token
382: ' lxjoin 0 243 set-token
383: ' wxjoin 0 244 set-token
384: ' x, 0 245 set-token
385: ' x@ 0 246 set-token
386: ' x! 0 247 set-token
387: ' /x 0 248 set-token
388: ' /x* 0 249 set-token
389: ' xa+ 0 24A set-token
390: ' xa1+ 0 24B set-token
391: ' xbflip 0 24C set-token
392: ' xbflips 0 24D set-token
393: ' xbsplit 0 24E set-token
394: ' xlflip 0 24F set-token
395: ' xlflips 0 250 set-token
396: ' xlsplit 0 251 set-token
397: ' xwflip 0 252 set-token
398: ' xwflips 0 253 set-token
399: ' xwsplit 0 254 set-token
400: \ 0 254 RESERVED FCODES
401: \ ...
402: \ 0 5FF RESERVED FCODES
403:
404: \ 0 600 VENDOR FCODES
405: \ ...
406: \ 0 7FF VENDOR FCODES
407:
408: \ 0 800 LOCAL FCODES
409: \ ...
410: \ 0 FFF LOCAL FCODES
411:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.