aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToomas Soome <tsoome@FreeBSD.org>2019-09-17 18:05:33 +0000
committerToomas Soome <tsoome@FreeBSD.org>2019-09-17 18:05:33 +0000
commit68861a62f5363e6984ba96efe6463e882a9c4896 (patch)
tree494ea91d575ce68b1bf2c838a1d7cf3633aa00ff
parent100369071d10827df9225ed0a3b3b20b8e286d45 (diff)
downloadsrc-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.4th23
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]