diff options
| author | Toomas Soome <tsoome@FreeBSD.org> | 2019-09-17 18:05:33 +0000 |
|---|---|---|
| committer | Toomas Soome <tsoome@FreeBSD.org> | 2019-09-17 18:05:33 +0000 |
| commit | 68861a62f5363e6984ba96efe6463e882a9c4896 (patch) | |
| tree | 494ea91d575ce68b1bf2c838a1d7cf3633aa00ff | |
| parent | 100369071d10827df9225ed0a3b3b20b8e286d45 (diff) | |
| download | src-68861a62f5363e6984ba96efe6463e882a9c4896.tar.gz src-68861a62f5363e6984ba96efe6463e882a9c4896.zip | |
loader: provide u> and xemit words if needed
We have external interpreter (userboot.so) which may be lagging behind
with updates and may be missing u> xemit words.
Notes
Notes:
svn path=/head/; revision=352454
| -rw-r--r-- | stand/forth/loader.4th | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/stand/forth/loader.4th b/stand/forth/loader.4th index 6c2f7b378f6b..89d532fda317 100644 --- a/stand/forth/loader.4th +++ b/stand/forth/loader.4th @@ -27,6 +27,29 @@ only forth definitions +\ provide u> if needed +s" u>" sfind [if] drop [else] + drop +: u> + 2dup u< if 2drop 0 exit then + swap u< if -1 exit then + 0 +; +[then] + +\ provide xemit if needed +s" xemit" sfind [if] drop [else] + drop +: xemit + dup 0x80 u< if emit exit then + 0 swap 0x3F + begin 2dup u> while + 2/ >r dup 0x3F and 0x80 or swap 6 rshift r> + repeat 0x7F xor 2* or + begin dup 0x80 u< 0= while emit repeat drop +; +[then] + s" arch-i386" environment? [if] [if] s" loader_version" environment? [if] 11 < [if] |
