commit aa955b3e311a50f3f962181ce668c15d99bb9cad
parent 96df13b9c7a89d003496762fdb56ad996db96ef0
Author: Virgil Dupras <hsoft@hardcoded.net>
Date: Mon, 13 Mar 2023 22:02:36 -0400
hal: simplify
Diffstat:
1 file changed, 28 insertions(+), 21 deletions(-)
diff --git a/fs/xcomp/bootlo.fs b/fs/xcomp/bootlo.fs
@@ -21,19 +21,18 @@ code over over, exit,
code tuck W>A, PSP) @, dup, W<>A, PSP) 4 +) !, exit,
code 2dup W>A, PSP) @, -8 ps+, PSP) !, W<>A, PSP) 4 +) !, exit,
-code immediate dup, sysdict m) @, 4 W+n, W>A, A) @, $80 orn, A) !, drop, exit,
-: EMETA_16B $11 ; : EMETA_8B $10 ;
-code 16b dup, MOD LIT>A, EMETA_16B LIT>W, A) !, drop, exit, immediate
-code 8b dup, MOD LIT>A, EMETA_8B LIT>W, A) !, drop, exit, immediate
+code @ W) @, exit,
+code16b HERE @ W) 16b) @, exit,
+code8b HERE @ W) 8b) @, exit,
+code c@ branch, drop
+code w@ branch, drop
code ! W>A, PSP) @, A) !, 2drop, exit,
-code16b W>A, PSP) @, A) 16b) !, 2drop, exit,
-code8b W>A, PSP) @, A) 8b) !, 2drop, exit,
-: c! 8b ! ; : w! 16b ! ;
-code @ W) @, exit,
-code16b W) 16b) @, exit,
-code8b W) 8b) @, exit,
-: c@ 8b @ ; : w@ 16b @ ;
+code16b HERE @ W>A, PSP) @, A) 16b) !, 2drop, exit,
+code8b HERE @ W>A, PSP) @, A) 8b) !, 2drop, exit,
+code c! branch, drop
+code w! branch, drop
+
code +! W>A, drop, A) +, A) !, drop, exit,
code16b W>A, drop, A) 16b) +, A) 16b) !, drop, exit,
code8b W>A, drop, A) 8b) +, A) 8b) !, drop, exit,
@@ -42,23 +41,35 @@ code16b W>A, drop, A) 16b) @!, exit,
code8b W>A, drop, A) 8b) @!, exit,
code @+ W>A, A) @, W<>A, 4 W+n, dup, W<>A, exit,
code16b W>A, A) 16b) @, W<>A, 2 W+n, dup, W<>A, exit,
-code8b W>A, A) 8b) @, W<>A, 1 W+n, dup, W<>A, exit,
-: c@+ 8b @+ ;
+code8b HERE @ W>A, A) 8b) @, W<>A, 1 W+n, dup, W<>A, exit,
+code c@+ branch, drop
+
code !+ W>A, drop, A) !, W<>A, 4 W+n, exit,
code16b W>A, drop, A) 16b) !, W<>A, 2 W+n, exit,
-code8b W>A, drop, A) 8b) !, W<>A, 1 W+n, exit,
-: c!+ 8b !+ ;
+code8b HERE @ W>A, drop, A) 8b) !, W<>A, 1 W+n, exit,
+code c!+ branch, drop
+
code @@+ W>A, A) [@], 4 A) [+n], exit,
code16b W>A, A) 16b) [@], 2 A) [+n], exit,
code8b W>A, A) 8b) [@], 1 A) [+n], exit,
code @!+ W>A, drop, A) [!], 4 A) [+n], drop, exit,
code16b W>A, drop, A) 16b) [!], 2 A) [+n], drop, exit,
code8b W>A, drop, A) 8b) [!], 1 A) [+n], drop, exit,
-: , HERE @!+ ; :16b HERE 16b @!+ ; :8b HERE 8b @!+ ; : c, 8b , ;
-code execute W>A, drop, branchA,
+code + PSP) +, nip, exit,
+: e>w 5 + ;
+: w>e 5 - ;
+: current sysdict @ e>w ;
code 1+ 1 W+n, exit,
code 1- -1 W+n, exit,
+: immediate current 1- dup c@ $80 or swap c! ;
+: EMETA_16B $11 ; : EMETA_8B $10 ;
+: 16b EMETA_16B MOD ! ; immediate
+: 8b EMETA_8B MOD ! ; immediate
+
+: , HERE @!+ ; :16b HERE 16b @!+ ; :8b HERE 8b @!+ ; : c, 8b , ;
+
+code execute W>A, drop, branchA,
code not =0>Z, Z>W, exit,
code bool =0>Z, Z>W, 1 xorn, exit,
: litn -4 ps+, PSP) !, LIT>W, ;
@@ -86,7 +97,6 @@ code ?dup =0>Z, 0 Z) branchC, dup, then exit,
( hello, another comment! )
\ Arithmetic
-code + PSP) +, nip, exit,
: > swap < ;
: 0>= $80000000 < ;
: 0< 0>= not ;
@@ -233,9 +243,6 @@ alias execute | immediate
dup 8b to@+ V2 = if j to@! i to V1 then next ( c )
drop rdrop r> ( i ) ;
-: e>w 5 + ;
-: w>e 5 - ;
-: current sysdict @ e>w ;
\ Emitting
$20 const SPC $0d const CR $0a const LF $08 const BS $1b const ESC
alias drop emit