Commit 62cd3e54 authored by pazsan's avatar pazsan

Added further options to shrink a kernel down

Cleaned up conditional primitives (works now for C-generated part, too)
Cleaned up mach files for embedded architectures
Cleaned up options in the kernel
parent bce5545d
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
true Constant NIL \ relocating true Constant NIL \ relocating
: prims-include ." Include primitives" cr s" arch/4stack/prim.fs" included ; : prims-include ." Include primitives" cr s" ~+/arch/4stack/prim.fs" included ;
: asm-include ." Include assembler" cr s" arch/4stack/asm.fs" included ; : asm-include ." Include assembler" cr s" ~+/arch/4stack/asm.fs" included ;
: >boot : >boot
S" ' boot >body $800 ! here $804 !" evaluate ; S" ' boot >body $800 ! here $804 !" evaluate ;
...@@ -61,3 +61,10 @@ false Constant header \ save a header information ...@@ -61,3 +61,10 @@ false Constant header \ save a header information
false Constant ec false Constant ec
false Constant crlf false Constant crlf
false Constant ITC false Constant ITC
cell 2 = [IF] 32 [ELSE] 256 [THEN] KB Constant kernel-size
16 KB Constant stack-size
15 KB 512 + Constant fstack-size
15 KB Constant rstack-size
14 KB 512 + Constant lstack-size
...@@ -50,3 +50,9 @@ true Constant has-crlf ...@@ -50,3 +50,9 @@ true Constant has-crlf
true Value ec true Value ec
cell 2 = [IF] 32 [ELSE] 256 [THEN] KB Constant kernel-size
16 KB Constant stack-size
15 KB 512 + Constant fstack-size
15 KB Constant rstack-size
14 KB 512 + Constant lstack-size
...@@ -35,3 +35,10 @@ true SetValue interpreter ...@@ -35,3 +35,10 @@ true SetValue interpreter
true SetValue crlf true SetValue crlf
true SetValue ITC true SetValue ITC
\ true SetValue has-rom \ true SetValue has-rom
cell 2 = [IF] 32 [ELSE] 256 [THEN] KB Constant kernel-size
16 KB Constant stack-size
15 KB 512 + Constant fstack-size
15 KB Constant rstack-size
14 KB 512 + Constant lstack-size
...@@ -30,3 +30,10 @@ true Constant crlf ...@@ -30,3 +30,10 @@ true Constant crlf
true Constant ITC true Constant ITC
true Constant ec true Constant ec
\ true Constant rom \ true Constant rom
cell 2 = [IF] 32 [ELSE] 256 [THEN] KB Constant kernel-size
16 KB Constant stack-size
15 KB 512 + Constant fstack-size
15 KB Constant rstack-size
14 KB 512 + Constant lstack-size
\ misc-key.fs basic-io for misc processor 01feb97jaw \ misc-key.fs basic-io for misc processor 01feb97jaw
c: key? $ffff x@ 0<> ; c: (key?) $ffff x@ 0<> ;
c: (key) BEGIN key? UNTIL $fffe x@ ; c: (key) BEGIN key? UNTIL $fffe x@ ;
......
...@@ -31,8 +31,8 @@ ...@@ -31,8 +31,8 @@
false Constant NIL \ relocating false Constant NIL \ relocating
: prims-include ." Include primitives" cr s" arch/misc/prim.fs" included ; : prims-include ." Include primitives" cr s" ~+/arch/misc/prim.fs" included ;
: asm-include ." Include assembler" cr s" arch/misc/asm.fs" included ; : asm-include ." Include assembler" cr s" ~+/arch/misc/asm.fs" included ;
: >boot : >boot
hex hex
S" $6FF0 SP ! $7FF0 RP ! $7000 2* UP ! ' boot >body IP !" evaluate S" $6FF0 SP ! $7FF0 RP ! $7000 2* UP ! ' boot >body IP !" evaluate
...@@ -61,3 +61,10 @@ false Constant header \ save a header information ...@@ -61,3 +61,10 @@ false Constant header \ save a header information
true Constant ec true Constant ec
false Constant crlf false Constant crlf
cell 2 = [IF] 32 [ELSE] 256 [THEN] KB Constant kernel-size
16 KB Constant stack-size
15 KB 512 + Constant fstack-size
15 KB Constant rstack-size
14 KB 512 + Constant lstack-size
...@@ -50,3 +50,9 @@ true SetValue ec ...@@ -50,3 +50,9 @@ true SetValue ec
true SetValue crlf true SetValue crlf
false SetValue ITC false SetValue ITC
cell 2 = [IF] 32 [ELSE] 256 [THEN] KB Constant kernel-size
16 KB Constant stack-size
15 KB 512 + Constant fstack-size
15 KB Constant rstack-size
14 KB 512 + Constant lstack-size
...@@ -52,6 +52,7 @@ Warnings off ...@@ -52,6 +52,7 @@ Warnings off
\ words that are generaly useful \ words that are generaly useful
: KB 400 * ;
: >wordlist ( vocabulary-xt -- wordlist-struct ) : >wordlist ( vocabulary-xt -- wordlist-struct )
also execute get-order swap >r 1- set-order r> ; also execute get-order swap >r 1- set-order r> ;
...@@ -302,6 +303,7 @@ true SetValue cross ...@@ -302,6 +303,7 @@ true SetValue cross
true SetValue standard-threading true SetValue standard-threading
>TARGET previous >TARGET previous
mach-file count included hex mach-file count included hex
>ENVIRON >ENVIRON
...@@ -653,10 +655,11 @@ CREATE Bittable 80 c, 40 c, 20 c, 10 c, 8 c, 4 c, 2 c, 1 c, ...@@ -653,10 +655,11 @@ CREATE Bittable 80 c, 40 c, 20 c, 10 c, 8 c, 4 c, 2 c, 1 c,
: c, ( char -- ) T here tchar allot c! H ; : c, ( char -- ) T here tchar allot c! H ;
: align ( -- ) T here H align+ 0 ?DO bl T c, H LOOP ; : align ( -- ) T here H align+ 0 ?DO bl T c, H LOOP ;
: cfalign ( -- ) : cfalign ( -- )
T here H cfalign+ 0 ?DO bl T c, H LOOP ; T here H cfalign+ 0 ?DO bl T c, tchar H +LOOP ;
: A! dup relon T ! H ; : >address dup 0>= IF tchar / THEN ;
: A, ( w -- ) T here H relon T , H ; : A! swap >address swap dup relon T ! H ;
: A, ( w -- ) >address T here H relon T , H ;
>CROSS >CROSS
...@@ -1115,7 +1118,7 @@ NoHeaderFlag off ...@@ -1115,7 +1118,7 @@ NoHeaderFlag off
IF NoHeaderFlag off IF NoHeaderFlag off
ELSE ELSE
T align H view, T align H view,
tlast @ dup 0> IF T 1 cells - THEN A, H there tlast ! tlast @ dup 0> IF T 1 cells - H THEN T A, H there tlast !
1 headers-named +! \ Statistic 1 headers-named +! \ Statistic
>in @ T name, H >in ! >in @ T name, H >in !
THEN THEN
...@@ -1223,7 +1226,7 @@ Cond: ['] T ' H alit, ;Cond ...@@ -1223,7 +1226,7 @@ Cond: ['] T ' H alit, ;Cond
\ modularized 14jun97jaw \ modularized 14jun97jaw
: fillcfa ( usedcells -- ) : fillcfa ( usedcells -- )
T cells H xt>body swap - 0 ?DO 0 T c, H LOOP ; T cells H xt>body swap - 0 ?DO 0 T c, tchar H +LOOP ;
: (>body) ( cfa -- pfa ) xt>body + ; ' (>body) T IS >body H : (>body) ( cfa -- pfa ) xt>body + ; ' (>body) T IS >body H
...@@ -1631,7 +1634,7 @@ Builder Field ...@@ -1631,7 +1634,7 @@ Builder Field
: sys? ( sys -- sys ) dup 0= ?struc ; : sys? ( sys -- sys ) dup 0= ?struc ;
: >mark ( -- sys ) T here ( dup ." M" hex. ) 0 , H ; : >mark ( -- sys ) T here ( dup ." M" hex. ) 0 , H ;
: branchoffset ( src dest -- ) - ; : branchoffset ( src dest -- ) - tchar / ;
: >resolve ( sys -- ) T here ( dup ." >" hex. ) over branchoffset swap ! H ; : >resolve ( sys -- ) T here ( dup ." >" hex. ) over branchoffset swap ! H ;
...@@ -1954,6 +1957,7 @@ previous ...@@ -1954,6 +1957,7 @@ previous
Create magic s" Gforth10" here over allot swap move Create magic s" Gforth10" here over allot swap move
char 1 bigendian + tcell + magic 7 + c! char 1 bigendian + tcell + magic 7 + c!
char 0 tchar + magic 6 + c!
: save-cross ( "image-name" "binary-name" -- ) : save-cross ( "image-name" "binary-name" -- )
bl parse ." Saving to " 2dup type cr bl parse ." Saving to " 2dup type cr
......
...@@ -250,7 +250,7 @@ Label *engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0) ...@@ -250,7 +250,7 @@ Label *engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0)
(Label)&&dodoes, (Label)&&dodoes,
/* the following entry is normally unused; /* the following entry is normally unused;
it's there because its index indicates a does-handler */ it's there because its index indicates a does-handler */
(Label)CPU_DEP1, CPU_DEP1,
#include "prim_lab.i" #include "prim_lab.i"
(Label)0 (Label)0
}; };
...@@ -270,24 +270,24 @@ Label *engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0) ...@@ -270,24 +270,24 @@ Label *engine(Xt *ip0, Cell *sp0, Cell *rp0, Float *fp0, Address lp0)
#define CODE_OFFSET (22*sizeof(Cell)) #define CODE_OFFSET (22*sizeof(Cell))
int i; int i;
Cell code_offset = offset_image? CODE_OFFSET : 0; Cell code_offset = offset_image? CODE_OFFSET : 0;
symbols = (Label *)(malloc(MAX_SYMBOLS*sizeof(Cell)+CODE_OFFSET)+code_offset); symbols = (Label *)(malloc(MAX_SYMBOLS*sizeof(Cell)+CODE_OFFSET)+code_offset);
for (i=0; i<DOESJUMP+1; i++) for (i=0; i<DOESJUMP+1; i++)
symbols[i] = routines[i]; symbols[i] = (Label)routines[i];
for (; routines[i]!=0; i++) { for (; routines[i]!=0; i++) {
if (i>=MAX_SYMBOLS) { if (i>=MAX_SYMBOLS) {
fprintf(stderr,"gforth-ditc: more than %d primitives\n",MAX_SYMBOLS); fprintf(stderr,"gforth-ditc: more than %d primitives\n",MAX_SYMBOLS);
exit(1); exit(1);
}
symbols[i] = &routines[i];
} }
#endif /* defined(DOUBLY_INDIRECT) */ symbols[i] = &routines[i];
return symbols;
} }
#endif /* defined(DOUBLY_INDIRECT) */
return symbols;
}
IF_TOS(TOS = sp[0]); IF_TOS(TOS = sp[0]);
IF_FTOS(FTOS = fp[0]); IF_FTOS(FTOS = fp[0]);
/* prep_terminal(); */ /* prep_terminal(); */
NEXT_P0; NEXT_P0;
NEXT; NEXT;
......
...@@ -23,10 +23,21 @@ ...@@ -23,10 +23,21 @@
Create magicbuf 8 allot Create magicbuf 8 allot
Variable bswap?
Variable tchars
: bswap ( n -- n' ) bswap? @ 0= ?EXIT 0
over 24 rshift $FF and or
over 8 rshift $FF00 and or
over 8 lshift $FF0000 and or
over 24 lshift $FF000000 and or nip ;
: search-magic ( fd -- ) >r : search-magic ( fd -- ) >r
BEGIN magicbuf 8 r@ read-file throw 8 = WHILE BEGIN magicbuf 8 r@ read-file throw 8 = WHILE
magicbuf s" Gforth1" tuck compare 0= UNTIL magicbuf s" Gforth" tuck compare 0= UNTIL
ELSE true abort" No magic found" THEN ELSE true abort" No magic found" THEN
magicbuf 6 + c@ digit? drop tchars !
magicbuf 7 + c@ 1 and 0= [ pad off 1 pad ! pad c@ 1 = ] Literal = bswap? !
rdrop ; rdrop ;
Create image-header 4 cells allot Create image-header 4 cells allot
...@@ -35,7 +46,8 @@ Variable bitmap-chars ...@@ -35,7 +46,8 @@ Variable bitmap-chars
: read-header ( fd -- ) : read-header ( fd -- )
image-header 4 cells rot read-file throw drop image-header 4 cells rot read-file throw drop
image-header 2 cells + @ dup cell / image-cells ! 1- 8 cells / 1+ bitmap-chars ! image-header 2 cells + @ bswap tchars @ *
dup cell / image-cells ! 1- 8 cells / 1+ bitmap-chars !
image-cells @ cells allocate throw to image image-cells @ cells allocate throw to image
bitmap-chars @ allocate throw to bitmap ; bitmap-chars @ allocate throw to bitmap ;
...@@ -50,7 +62,7 @@ Variable bitmap-chars ...@@ -50,7 +62,7 @@ Variable bitmap-chars
: .image ( -- ) : .image ( -- )
image-cells @ 0 ?DO image-cells @ 0 ?DO
I 4 + I' min I ?DO space image I cells + @ .08x ." ," LOOP cr I 4 + I' min I ?DO space image I cells + @ bswap .08x ." ," LOOP cr
4 +LOOP ; 4 +LOOP ;
: .reloc ( -- ) : .reloc ( -- )
...@@ -65,7 +77,7 @@ Variable bitmap-chars ...@@ -65,7 +77,7 @@ Variable bitmap-chars
r@ read-dictionary r@ read-bitmap r> close-file throw ; r@ read-dictionary r@ read-bitmap r> close-file throw ;
: .imagesize ( -- ) : .imagesize ( -- )
image-header 3 cells + @ 1 cells / .08x ; image-header 3 cells + @ bswap 1 cells / tchars @ * .08x ;
: .relocsize ( -- ) : .relocsize ( -- )
bitmap-chars @ .08x ; bitmap-chars @ .08x ;
......
...@@ -34,9 +34,13 @@ decimal ...@@ -34,9 +34,13 @@ decimal
\ error numbers between -512 and -2047 are for OS errors and are \ error numbers between -512 and -2047 are for OS errors and are
\ handled with strerror \ handled with strerror
has? OS [IF]
: >stderr ( -- ) : >stderr ( -- )
r> outfile-id >r stderr to outfile-id r> outfile-id >r stderr to outfile-id
>exec r> to outfile-id ; >exec r> to outfile-id ;
[ELSE]
: >stderr ;
[THEN]
: .error ( n -- ) : .error ( n -- )
>stderr >stderr
......
...@@ -145,11 +145,13 @@ const Create bases 10 , 2 , A , 100 , ...@@ -145,11 +145,13 @@ const Create bases 10 , 2 , A , 100 ,
[char] ) parse 2drop ; immediate [char] ) parse 2drop ; immediate
: \ ( -- ) \ core-ext backslash : \ ( -- ) \ core-ext backslash
[ has? file [IF] ]
blk @ blk @
IF IF
>in @ c/l / 1+ c/l * >in ! >in @ c/l / 1+ c/l * >in !
EXIT EXIT
THEN THEN
[ [THEN] ]
source >in ! drop ; immediate source >in ! drop ; immediate
: \G ( -- ) \ gforth backslash : \G ( -- ) \ gforth backslash
...@@ -360,7 +362,7 @@ Defer interpreter-notfound ( c-addr count -- ) ...@@ -360,7 +362,7 @@ Defer interpreter-notfound ( c-addr count -- )
\ interpreter 30apr92py \ interpreter 30apr92py
\ not the most efficient implementations of interpreter and compiler \ not the most efficient implementations of interpreter and compiler
: interpreter ( c-addr u -- ) | : interpreter ( c-addr u -- )
2dup find-name dup 2dup find-name dup
if if
nip nip name>int execute nip nip name>int execute
...@@ -379,28 +381,32 @@ Defer interpreter-notfound ( c-addr count -- ) ...@@ -379,28 +381,32 @@ Defer interpreter-notfound ( c-addr count -- )
\ \ Query Evaluate 07apr93py \ \ Query Evaluate 07apr93py
has? file 0= [IF] has? file 0= [IF]
: sourceline# ( -- n ) loadline @ ; : sourceline# ( -- n ) 1 ;
[THEN] [THEN]
: refill ( -- flag ) \ core-ext,block-ext,file-ext : refill ( -- flag ) \ core-ext,block-ext,file-ext
blk @ IF 1 blk +! true 0 >in ! EXIT THEN [ has? file [IF] ]
tib /line blk @ IF 1 blk +! true 0 >in ! EXIT THEN
[ has? file [IF] ] [ [THEN] ]
loadfile @ ?dup tib /line
IF read-line throw [ has? file [IF] ]
ELSE loadfile @ ?dup
[ [THEN] ] IF read-line throw
sourceline# 0< IF 2drop false EXIT THEN ELSE
accept true [ [THEN] ]
[ has? file [IF] ] sourceline# 0< IF 2drop false EXIT THEN
THEN accept true
[ [THEN] ] [ has? file [IF] ]
1 loadline +! THEN
swap #tib ! 0 >in ! ; 1 loadline +!
[ [THEN] ]
swap #tib ! 0 >in ! ;
: query ( -- ) \ core-ext : query ( -- ) \ core-ext
\G obsolescent \G obsolescent
blk off loadfile off [ has? file [IF] ]
blk off loadfile off
[ [THEN] ]
tib /line accept #tib ! 0 >in ! ; tib /line accept #tib ! 0 >in ! ;
\ save-mem extend-mem \ save-mem extend-mem
...@@ -423,18 +429,21 @@ has? os [IF] ...@@ -423,18 +429,21 @@ has? os [IF]
has? file 0= [IF] has? file 0= [IF]
: push-file ( -- ) r> : push-file ( -- ) r>
sourceline# >r tibstack @ >r >tib @ >r #tib @ >r tibstack @ >r >tib @ >r #tib @ >r
>tib @ tibstack @ = IF r@ tibstack +! THEN >tib @ tibstack @ = IF r@ tibstack +! THEN
tibstack @ >tib ! >in @ >r >r ; tibstack @ >tib ! >in @ >r >r ;
: pop-file ( throw-code -- throw-code ) : pop-file ( throw-code -- throw-code )
r> r>
r> >in ! r> #tib ! r> >tib ! r> tibstack ! r> loadline ! >r ; r> >in ! r> #tib ! r> >tib ! r> tibstack ! >r ;
[THEN] [THEN]
: evaluate ( c-addr len -- ) \ core,block : evaluate ( c-addr len -- ) \ core,block
push-file #tib ! >tib ! push-file #tib ! >tib !
>in off blk off loadfile off -1 loadline ! >in off
[ has? file [IF] ]
blk off loadfile off -1 loadline !
[ [THEN] ]
['] interpret catch ['] interpret catch
pop-file throw ; pop-file throw ;
...@@ -447,7 +456,10 @@ Defer .status ...@@ -447,7 +456,10 @@ Defer .status
: prompt state @ IF ." compiled" EXIT THEN ." ok" ; : prompt state @ IF ." compiled" EXIT THEN ." ok" ;
: (Query) ( -- ) : (Query) ( -- )
loadfile off blk off loadline off refill drop ; [ has? file [IF] ]
loadfile off blk off loadline off
[ [THEN] ]
refill drop ;
: (quit) BEGIN .status cr (query) interpret prompt AGAIN ; : (quit) BEGIN .status cr (query) interpret prompt AGAIN ;
...@@ -579,9 +591,10 @@ Variable init8 ...@@ -579,9 +591,10 @@ Variable init8
init8 chainperform init8 chainperform
[ has? file [IF] ] [ has? file [IF] ]
process-args process-args
loadline off
[ [THEN] ] [ [THEN] ]
bootmessage bootmessage
loadline off quit ; quit ;
: clear-tibstack ( -- ) : clear-tibstack ( -- )
[ has? glocals [IF] ] [ has? glocals [IF] ]
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
has? os [IF] has? os [IF]
0 Value outfile-id ( -- file-id ) \ gforth 0 Value outfile-id ( -- file-id ) \ gforth
0 Value infile-id ( -- file-id ) \ gforth 0 Value infile-id ( -- file-id ) \ gforth
: (type) ( c-addr u -- ) \ gforth : (type) ( c-addr u -- ) \ gforth
outfile-id write-file drop \ !! use ?DUP-IF THROW ENDIF instead of DROP ? outfile-id write-file drop \ !! use ?DUP-IF THROW ENDIF instead of DROP ?
; ;
...@@ -39,22 +39,34 @@ has? os [IF] ...@@ -39,22 +39,34 @@ has? os [IF]
infile-id key?-file ; infile-id key?-file ;
[THEN] [THEN]
[IFUNDEF] (type) undef-words
Defer type ( c-addr u -- ) \ core
: (type) BEGIN dup WHILE : (type) BEGIN dup WHILE
>r dup c@ (emit) 1+ r> 1- REPEAT 2drop ; >r dup c@ (emit) 1+ r> 1- REPEAT 2drop ;
[THEN]
Defer type ( c-addr u -- ) \ core [IFDEF] (type) ' (type) IS Type [THEN]
' (type) IS Type
Defer emit ( c -- ) \ core Defer emit ( c -- ) \ core
' (Emit) IS Emit : (emit) ( c -- ) \ gforth
0 emit-file drop \ !! use ?DUP-IF THROW ENDIF instead of DROP ?
;
[IFDEF] (emit) ' (emit) IS emit [THEN]
Defer key ( -- c ) \ core Defer key ( -- c ) \ core
' (key) IS key : (key) ( -- c ) \ gforth
0 key-file ;
[IFDEF] (key) ' (key) IS key [THEN]
Defer key? ( -- flag ) \ core Defer key? ( -- flag ) \ core
' (key?) IS key? : (key?) ( -- flag ) \ gforth
0 key?-file ;
[IFDEF] (key?) ' (key?) IS key? [THEN]
all-words
: (.") "lit count type ; : (.") "lit count type ;
: (S") "lit count ; : (S") "lit count ;
...@@ -78,7 +90,11 @@ Defer key? ( -- flag ) \ core ...@@ -78,7 +90,11 @@ Defer key? ( -- flag ) \ core
[ [THEN] ] [ [THEN] ]
; ;
1 [IF] : space bl emit ;
has? ec [IF]
: spaces 0 max 0 ?DO space LOOP ;
: backspaces 0 max 0 ?DO #bs emit LOOP ;
[ELSE]
\ space spaces 21mar93py \ space spaces 21mar93py
decimal decimal
Create spaces ( u -- ) \ core Create spaces ( u -- ) \ core
...@@ -92,11 +108,5 @@ DOES> ( u -- ) ...@@ -92,11 +108,5 @@ DOES> ( u -- )
swap swap
0 max 0 ?DO I' I - &80 min 2dup type +LOOP drop ; 0 max 0 ?DO I' I - &80 min 2dup type +LOOP drop ;
hex hex
: space ( -- ) \ core
1 spaces ;
[ELSE]
: space bl emit ;
: spaces 0 max 0 ?DO space LOOP ;
[THEN] [THEN]
...@@ -18,14 +18,14 @@ ...@@ -18,14 +18,14 @@
\ along with this program; if not, write to the Free Software \ along with this program; if not, write to the Free Software
\ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. \ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
include ./basics.fs include basics.fs
include ./io.fs \ basic io functions include io.fs \ basic io functions
has? interpreter [IF] has? interpreter [IF]
include ./int.fs include int.fs
has? compiler [IF] has? compiler [IF]
include ./comp.fs include comp.fs
[THEN] [THEN]
[THEN] [THEN]
include ./accept.fs include accept.fs
include ./license.fs include license.fs
include ./nio.fs include nio.fs
...@@ -37,20 +37,20 @@ include ../cross.fs \ include cross-compiler ...@@ -37,20 +37,20 @@ include ../cross.fs \ include cross-compiler
decimal decimal
cell 2 = [IF] 32 [ELSE] 256 [THEN] KB makekernel ( size ) has? kernel-size makekernel ( size )
\ create image-header \ create image-header
has? header [IF] has? header [IF]
0 A, \ base address 0 A, \ base address
0 , \ checksum 0 , \ checksum
0 , \ image size (without tags) 0 , \ image size (without tags)
, \ dict size >address , \ dict size
16 KB , \ data stack size has? stack-size , \ data stack size
15 KB 512 + , \ FP stack size has? fstack-size , \ FP stack size
15 KB , \ return stack size has? rstack-size , \ return stack size
14 KB 512 + , \ locals stack size has? lstack-size , \ locals stack size
0 A, \ code entry point 0 A, \ code entry point
0 A, \ throw entry point 0 A, \ throw entry point
16 KB , \ unused (possibly tib stack size) has? stack-size , \ unused (possibly tib stack size)
0 , \ unused 0 , \ unused
0 , \ data stack base 0 , \ data stack base
0 , \ fp stack base 0 , \ fp stack base
...@@ -92,12 +92,11 @@ include cond.fs \ load IF and co ...@@ -92,12 +92,11 @@ include cond.fs \ load IF and co
[ELSE] [ELSE]
include cond-old.fs \ load IF and co w/o locals include cond-old.fs \ load IF and co w/o locals
[THEN] [THEN]
include toolsext.fs
\ include arch/misc/tt.fs \ include arch/misc/tt.fs
\ include arch/misc/sokoban.fs \ include arch/misc/sokoban.fs
[THEN] [THEN]
include toolsext.fs
include tools.fs \ load tools ( .s dump ) include tools.fs \ load tools ( .s dump )
include doers.fs
include getdoers.fs