|
|
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.