ref: 2b828167ea4bf56ffed2f72f8cb4e08fbd4fc12a
parent: d2e7afbf12a8b8d25cf69c73c04023feae75e629
author: 9ferno <gophone2015@gmail.com>
date: Wed Feb 2 00:04:15 EST 2022
working forth include
--- a/os/pc64/forth.h
+++ b/os/pc64/forth.h
@@ -345,24 +345,25 @@
C_create_file = 17920,
C_bye = 18192,
C_include = 18248,
- C_crash = 18400,
- C_quit = 18488,
- L253 = 18512,
- C_parenabort = 18568,
- C_oldboot = 18704,
- C_do_args = 19152,
- C_boot = 19304,
- L260 = 19552,
- L137 = 19568,
- L170 = 19592,
- L173 = 19596,
- L180 = 19613,
- L193 = 19617,
- L247 = 19621,
- L251 = 19631,
- L255 = 19662,
- L304 = 19666,
- L305 = 19703,
+ L248 = 18344,
+ C_crash = 18472,
+ C_quit = 18560,
+ L253 = 18584,
+ C_parenabort = 18640,
+ C_oldboot = 18776,
+ C_do_args = 19224,
+ C_boot = 19376,
+ L260 = 19624,
+ L137 = 19640,
+ L170 = 19664,
+ L173 = 19668,
+ L180 = 19685,
+ L193 = 19689,
+ L247 = 19693,
+ L251 = 19703,
+ L255 = 19734,
+ L304 = 19738,
+ L305 = 19775,
};
extern void *sliteral(void);
extern void *cjump(void);
@@ -2223,168 +2224,177 @@
{.type Absolute, {.p 0}}, /* dd 0 18216 */
{.type FromH0, {.p M_terminate}, .src = "dd M_terminate"}, /* dd M_terminate 18224 */
{.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon"}, /* dd M_exitcolon 18232 */
- {.type Header, {.hdr { 7, "include", /* C_include = 18248 */ colon }}}, /* CENTRY "include" include 7 h 18256 */
+ {.type Header, {.hdr { 7, "include", /* C_include = 18248 */ colon }}}, /* CENTRY "include" include 7 ; this does not work h 18256 */
{.type FromH0, {.p C_bl}, .src = "dd C_bl"}, /* dd C_bl 18264 */
{.type FromH0, {.p C_word}, .src = "dd C_word"}, /* dd C_word 18272 */
{.type FromH0, {.p M_rpush}, .src = "dd M_rpush"}, /* dd M_rpush 18280 */
- {.type FromH0, {.p MV_toLimit}, .src = "dd MV_toLimit"}, /* dd MV_toLimit 18288 */
+ {.type FromH0, {.p MV_Acceptvec}, .src = "dd MV_Acceptvec"}, /* dd MV_Acceptvec 18288 */
{.type FromH0, {.p M_fetch}, .src = "dd M_fetch"}, /* dd M_fetch 18296 */
- {.type FromH0, {.p MV_toIn}, .src = "dd MV_toIn"}, /* dd MV_toIn 18304 */
- {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 18312 */
- {.type FromH0, {.p C_save_input}, .src = "dd C_save_input"}, /* dd C_save_input 18320 */
- {.type FromH0, {.p M_rpop}, .src = "dd M_rpop"}, /* dd M_rpop 18328 */
- {.type FromH0, {.p C_count}, .src = "dd C_count"}, /* dd C_count 18336 */
- {.type FromH0, {.p C_ro}, .src = "dd C_ro"}, /* dd C_ro 18344 */
- {.type FromH0, {.p C_open_file}, .src = "dd C_open_file"}, /* dd C_open_file 18352 */
- {.type FromH0, {.p C_qfcheck}, .src = "dd C_qfcheck"}, /* dd C_qfcheck 18360 */
- {.type FromH0, {.p MV_Infd}, .src = "dd MV_Infd"}, /* dd MV_Infd 18368 */
- {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 18376 */
- {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon"}, /* dd M_exitcolon 18384 */
- {.type Header, {.hdr { 5, "crash", /* C_crash = 18400 */ colon }}}, /* CENTRY "crash" crash 5 h 18408 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18416 */
- {.type FromH0, {.p L251}, .src = "dd L251"}, /* dd L251 18424 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18432 */
- {.type Absolute, {.p 30}}, /* dd 30 18440 */
- {.type FromH0, {.p C_type}, .src = "dd C_type"}, /* dd C_type 18448 */
- {.type FromH0, {.p C_cr}, .src = "dd C_cr"}, /* dd C_cr 18456 */
- {.type FromH0, {.p C_abort}, .src = "dd C_abort"}, /* dd C_abort 18464 */
- {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon"}, /* dd M_exitcolon 18472 */
- {.type Header, {.hdr { 4, "quit", /* C_quit = 18488 */ colon }}}, /* CENTRY "quit" quit 4 ; interpreter loop h 18496 */
- {.type FromH0, {.p M_reset}, .src = "dd M_reset ; initialize return stack"}, /* dd M_reset ; initialize return stack 18504 */
- {.type FromH0, {.p M_clear}, .src = "dd M_clear ; SP = sstack_end initialize data stack"}, /* dd M_clear ; SP = sstack_end initialize data stack 18512 */
- {.type FromH0, {.p C_query}, .src = "dd C_query"}, /* dd C_query 18520 */
-/* ; dd MV_toLimit ; show the line read, for debugging *//* ; dd M_fetch *//* ; dd M_Tib *//* ; dd MC_STDOUT *//* ; dd M_fswrite *//* ; dd M_drop ; drop the return value of write *//* ; dd C_cr *//* ; dd C_space */ {.type FromH0, {.p C_interpret}, .src = "dd C_interpret"}, /* dd C_interpret 18528 */
- {.type FromH0, {.p M_jump}, .src = "dd M_jump"}, /* dd M_jump 18536 */
- {.type FromH0, {.p L253}, .src = "dd L253"}, /* dd L253 18544 */
- {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon ; why is this needed?"}, /* dd M_exitcolon ; why is this needed? 18552 */
- {.type Header, {.hdr { 7, "(abort)", /* C_parenabort = 18568 */ colon }}}, /* CENTRY "(abort)" parenabort 7 ; TODO correct below stack notations h 18576 */
- {.type FromH0, {.p MV_State}, .src = "dd MV_State ; ( mv_State -- )"}, /* dd MV_State ; ( mv_State -- ) 18584 */
- {.type FromH0, {.p C_off}, .src = "dd C_off ; off sets variable state = 0"}, /* dd C_off ; off sets variable state = 0 18592 */
- {.type FromH0, {.p MC_STDIN}, .src = "dd MC_STDIN"}, /* dd MC_STDIN 18600 */
- {.type FromH0, {.p MV_Infd}, .src = "dd MV_Infd"}, /* dd MV_Infd 18608 */
- {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 18616 */
- {.type FromH0, {.p MC_STDOUT}, .src = "dd MC_STDOUT"}, /* dd MC_STDOUT 18624 */
- {.type FromH0, {.p MV_Outfd}, .src = "dd MV_Outfd"}, /* dd MV_Outfd 18632 */
- {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 18640 */
- {.type FromH0, {.p MC_STDERR}, .src = "dd MC_STDERR"}, /* dd MC_STDERR 18648 */
- {.type FromH0, {.p MV_Errfd}, .src = "dd MV_Errfd"}, /* dd MV_Errfd 18656 */
- {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 18664 */
- {.type FromH0, {.p C_default_input}, .src = "dd C_default_input"}, /* dd C_default_input 18672 */
- {.type FromH0, {.p C_quit}, .src = "dd C_quit ; quit resets stacks and is the interpreter loop"}, /* dd C_quit ; quit resets stacks and is the interpreter loop 18680 */
- {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon ; why is this needed? quit does not return unless it breaks"}, /* dd M_exitcolon ; why is this needed? quit does not return unless it breaks 18688 */
- {.type Header, {.hdr { 7, "oldboot", /* C_oldboot = 18704 */ colon }}}, /* CENTRY "oldboot" oldboot 7 ; TODO correct below stack notations and this is obsolete. leaving it here for reference until it all works well h 18712 */
- {.type FromH0, {.p M_reset}, .src = "dd M_reset"}, /* dd M_reset 18720 */
- {.type FromH0, {.p M_clear}, .src = "dd M_clear ; SP = sstack_end"}, /* dd M_clear ; SP = sstack_end 18728 */
- {.type FromH0, {.p M_stackptr}, .src = "dd M_stackptr ; (D -- FFEND)"}, /* dd M_stackptr ; (D -- FFEND) 18736 */
- {.type FromH0, {.p M_S0}, .src = "dd M_S0"}, /* dd M_S0 18744 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; s0 = FFEND"}, /* dd M_store ; s0 = FFEND 18752 */
- {.type FromH0, {.p M_Dp}, .src = "dd M_Dp ; heaptop = heapend"}, /* dd M_Dp ; heaptop = heapend 18760 */
- {.type FromH0, {.p M_fetch}, .src = "dd M_fetch ; ( heapend -- )"}, /* dd M_fetch ; ( heapend -- ) 18768 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18776 */
- {.type Absolute, {.p 1}}, /* dd 1 ; ( heapend 1 -- ) 18784 */
- {.type FromH0, {.p C_cells}, .src = "dd C_cells ; cells ( heapend 8 -- )"}, /* dd C_cells ; cells ( heapend 8 -- ) 18792 */
- {.type FromH0, {.p M_minus}, .src = "dd M_minus ; ( heapend-8 -- )"}, /* dd M_minus ; ( heapend-8 -- ) 18800 */
- {.type FromH0, {.p M_fetch}, .src = "dd M_fetch ; ( contents_from_heapend-8 -- )"}, /* dd M_fetch ; ( contents_from_heapend-8 -- ) 18808 */
- {.type FromH0, {.p M_Fthargs}, .src = "dd M_Fthargs ; variable args"}, /* dd M_Fthargs ; variable args 18816 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; args = contents_from_heapend-8"}, /* dd M_store ; args = contents_from_heapend-8 18824 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18832 */
- {.type FromH0, {.p C_parenabort}, .src = "dd C_parenabort ; ( (abort) -- )"}, /* dd C_parenabort ; ( (abort) -- ) 18840 */
- {.type FromH0, {.p MV_Abortvec}, .src = "dd MV_Abortvec ; variable abortvec"}, /* dd MV_Abortvec ; variable abortvec 18848 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; variable abortvec = (abort) code address"}, /* dd M_store ; variable abortvec = (abort) code address 18856 */
- {.type FromH0, {.p M_Wordb}, .src = "dd M_Wordb ; constant puts address of wordbuffer on the top of stack"}, /* dd M_Wordb ; constant puts address of wordbuffer on the top of stack 18864 */
- {.type FromH0, {.p MV_Wordbuf}, .src = "dd MV_Wordbuf ; variable wordbuf"}, /* dd MV_Wordbuf ; variable wordbuf 18872 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; variable wordbuf = address of wordbuffer"}, /* dd M_store ; variable wordbuf = address of wordbuffer 18880 */
- {.type FromH0, {.p M_Tib}, .src = "dd M_Tib ; constant puts address of tibuffer on the top of stack"}, /* dd M_Tib ; constant puts address of tibuffer on the top of stack 18888 */
- {.type FromH0, {.p MV_Sourcebuf}, .src = "dd MV_Sourcebuf ; variable sourcebuf"}, /* dd MV_Sourcebuf ; variable sourcebuf 18896 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; variable sourcebuf = address of tibuffer"}, /* dd M_store ; variable sourcebuf = address of tibuffer 18904 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18912 */
- {.type Absolute, {.p 0}}, /* dd 0 18920 */
- {.type FromH0, {.p MV_Infd}, .src = "dd MV_Infd"}, /* dd MV_Infd 18928 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; stdin = 0"}, /* dd M_store ; stdin = 0 18936 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18944 */
- {.type Absolute, {.p 1}}, /* dd 1 18952 */
- {.type FromH0, {.p MV_Outfd}, .src = "dd MV_Outfd"}, /* dd MV_Outfd 18960 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; stdout = 1"}, /* dd M_store ; stdout = 1 18968 */
- {.type FromH0, {.p MV_State}, .src = "dd MV_State"}, /* dd MV_State 18976 */
- {.type FromH0, {.p C_off}, .src = "dd C_off ; off stores 0 at state"}, /* dd C_off ; off stores 0 at state 18984 */
- {.type FromH0, {.p C_decimal}, .src = "dd C_decimal ; decimal setting base = 0"}, /* dd C_decimal ; decimal setting base = 0 18992 */
- {.type FromH0, {.p C_quit}, .src = "dd C_quit ; quit"}, /* dd C_quit ; quit 19000 */
- {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon"}, /* dd M_exitcolon 19008 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal ; test code"}, /* dd M_literal ; test code 19016 */
- {.type Absolute, {.p 66}}, /* dd 66 19024 */
- {.type FromH0, {.p M_Wordb}, .src = "dd M_Wordb"}, /* dd M_Wordb 19032 */
- {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 19040 */
- {.type FromH0, {.p MC_STDOUT}, .src = "dd MC_STDOUT"}, /* dd MC_STDOUT 19048 */
- {.type FromH0, {.p M_Wordb}, .src = "dd M_Wordb"}, /* dd M_Wordb 19056 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 19064 */
- {.type Absolute, {.p 1}}, /* dd 1 19072 */
- {.type FromH0, {.p M_syswrite}, .src = "dd M_syswrite"}, /* dd M_syswrite 19080 */
- {.type FromH0, {.p M_drop}, .src = "dd M_drop ; drop the return value of write"}, /* dd M_drop ; drop the return value of write 19088 */
- {.type FromH0, {.p MC_STDIN}, .src = "dd MC_STDIN"}, /* dd MC_STDIN 19096 */
- {.type FromH0, {.p M_Wordb}, .src = "dd M_Wordb"}, /* dd M_Wordb 19104 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 19112 */
- {.type Absolute, {.p 1}}, /* dd 1 19120 */
- {.type FromH0, {.p M_sysread}, .src = "dd M_sysread"}, /* dd M_sysread 19128 */
- {.type FromH0, {.p M_drop}, .src = "dd M_drop ; drop the return value of read"}, /* dd M_drop ; drop the return value of read 19136 */
- {.type Header, {.hdr { 7, "do-args", /* C_do_args = 19152 */ colon }}}, /* CENTRY "do-args" do_args 7 h 19160 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 19168 */
- {.type Absolute, {.p 0}}, /* dd 0 19176 */
- {.type FromH0, {.p MV_Acceptvec}, .src = "dd MV_Acceptvec ; no more refills"}, /* dd MV_Acceptvec ; no more refills 19184 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; C_off ; Acceptvec == 0, reading from a buffer. no more refills."}, /* dd M_store ; C_off ; Acceptvec == 0, reading from a buffer. no more refills. 19192 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 19200 */
- {.type Absolute, {.p 0}}, /* dd 0 19208 */
- {.type FromH0, {.p MV_toIn}, .src = "dd MV_toIn"}, /* dd MV_toIn 19216 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; >in = 0"}, /* dd M_store ; >in = 0 19224 */
- {.type FromH0, {.p M_Fthargs}, .src = "dd M_Fthargs ; ( a )"}, /* dd M_Fthargs ; ( a ) 19232 */
- {.type FromH0, {.p C_count}, .src = "dd C_count ; ( a+1 n )"}, /* dd C_count ; ( a+1 n ) 19240 */
- {.type FromH0, {.p MV_toLimit}, .src = "dd MV_toLimit"}, /* dd MV_toLimit 19248 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; ( a+1 ) >limit = n"}, /* dd M_store ; ( a+1 ) >limit = n 19256 */
- {.type FromH0, {.p MV_Sourcebuf}, .src = "dd MV_Sourcebuf"}, /* dd MV_Sourcebuf 19264 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; sourcebuf = a+1"}, /* dd M_store ; sourcebuf = a+1 19272 */
- {.type FromH0, {.p C_interpret}, .src = "dd C_interpret"}, /* dd C_interpret 19280 */
- {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon"}, /* dd M_exitcolon 19288 */
- {.type Header, {.hdr { 4, "boot", /* C_boot = 19304 */ colon }}}, /* CENTRY "boot" boot 4 h 19312 */
- {.type FromH0, {.p M_reset}, .src = "dd M_reset ; initialize return stack"}, /* dd M_reset ; initialize return stack 19320 */
- {.type FromH0, {.p M_clear}, .src = "dd M_clear ; SP = sstack_end initialize data stack"}, /* dd M_clear ; SP = sstack_end initialize data stack 19328 */
- {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 19336 */
- {.type FromH0, {.p C_parenabort}, .src = "dd C_parenabort ; ( (abort) -- )"}, /* dd C_parenabort ; ( (abort) -- ) 19344 */
- {.type FromH0, {.p MV_Abortvec}, .src = "dd MV_Abortvec ; variable that puts (abort) code address on the stack"}, /* dd MV_Abortvec ; variable that puts (abort) code address on the stack 19352 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; variable abortvec = (abort) code address"}, /* dd M_store ; variable abortvec = (abort) code address 19360 */
- {.type FromH0, {.p M_Wordb}, .src = "dd M_Wordb ; variable puts address of wordbuffer on the top of stack"}, /* dd M_Wordb ; variable puts address of wordbuffer on the top of stack 19368 */
- {.type FromH0, {.p MV_Wordbuf}, .src = "dd MV_Wordbuf ; variable wordbuf"}, /* dd MV_Wordbuf ; variable wordbuf 19376 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; variable wordbuf = address of wordbuffer"}, /* dd M_store ; variable wordbuf = address of wordbuffer 19384 */
- {.type FromH0, {.p M_Dp}, .src = "dd M_Dp"}, /* dd M_Dp 19392 */
- {.type FromH0, {.p MV_H0}, .src = "dd MV_H0 ; H0 = here at startup"}, /* dd MV_H0 ; H0 = here at startup 19400 */
- {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 19408 */
- {.type FromH0, {.p MC_STDIN}, .src = "dd MC_STDIN"}, /* dd MC_STDIN 19416 */
- {.type FromH0, {.p MV_Infd}, .src = "dd MV_Infd"}, /* dd MV_Infd 19424 */
- {.type FromH0, {.p M_store}, .src = "dd M_store ; stdin = 0"}, /* dd M_store ; stdin = 0 19432 */
- {.type FromH0, {.p MC_STDOUT}, .src = "dd MC_STDOUT"}, /* dd MC_STDOUT 19440 */
- {.type FromH0, {.p MV_Outfd}, .src = "dd MV_Outfd"}, /* dd MV_Outfd 19448 */
- {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 19456 */
- {.type FromH0, {.p MC_STDERR}, .src = "dd MC_STDERR"}, /* dd MC_STDERR 19464 */
- {.type FromH0, {.p MV_Errfd}, .src = "dd MV_Errfd"}, /* dd MV_Errfd 19472 */
+ {.type FromH0, {.p M_cjump}, .src = "dd M_cjump"}, /* dd M_cjump 18304 */
+ {.type FromH0, {.p L248}, .src = "dd L248 ; when Acceptvec == 0"}, /* dd L248 ; when Acceptvec == 0 18312 */
+ {.type FromH0, {.p MV_toLimit}, .src = "dd MV_toLimit ; include ends any further reading from the current input line"}, /* dd MV_toLimit ; include ends any further reading from the current input line 18320 */
+ {.type FromH0, {.p M_fetch}, .src = "dd M_fetch"}, /* dd M_fetch 18328 */
+ {.type FromH0, {.p MV_toIn}, .src = "dd MV_toIn"}, /* dd MV_toIn 18336 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 18344 */
+ {.type FromH0, {.p C_save_input}, .src = "dd C_save_input"}, /* dd C_save_input 18352 */
+ {.type FromH0, {.p C_default_input}, .src = "dd C_default_input"}, /* dd C_default_input 18360 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18368 */
+ {.type FromH0, {.p C_accept_key}, .src = "dd C_accept_key ; as C_accept_line will not get a line per read from non-cons files"}, /* dd C_accept_key ; as C_accept_line will not get a line per read from non-cons files 18376 */
+ {.type FromH0, {.p MV_Acceptvec}, .src = "dd MV_Acceptvec"}, /* dd MV_Acceptvec 18384 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 18392 */
+ {.type FromH0, {.p M_rpop}, .src = "dd M_rpop"}, /* dd M_rpop 18400 */
+ {.type FromH0, {.p C_count}, .src = "dd C_count"}, /* dd C_count 18408 */
+ {.type FromH0, {.p C_ro}, .src = "dd C_ro"}, /* dd C_ro 18416 */
+ {.type FromH0, {.p C_open_file}, .src = "dd C_open_file"}, /* dd C_open_file 18424 */
+ {.type FromH0, {.p C_qfcheck}, .src = "dd C_qfcheck"}, /* dd C_qfcheck 18432 */
+ {.type FromH0, {.p MV_Infd}, .src = "dd MV_Infd"}, /* dd MV_Infd 18440 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 18448 */
+ {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon"}, /* dd M_exitcolon 18456 */
+ {.type Header, {.hdr { 5, "crash", /* C_crash = 18472 */ colon }}}, /* CENTRY "crash" crash 5 h 18480 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18488 */
+ {.type FromH0, {.p L251}, .src = "dd L251"}, /* dd L251 18496 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18504 */
+ {.type Absolute, {.p 30}}, /* dd 30 18512 */
+ {.type FromH0, {.p C_type}, .src = "dd C_type"}, /* dd C_type 18520 */
+ {.type FromH0, {.p C_cr}, .src = "dd C_cr"}, /* dd C_cr 18528 */
+ {.type FromH0, {.p C_abort}, .src = "dd C_abort"}, /* dd C_abort 18536 */
+ {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon"}, /* dd M_exitcolon 18544 */
+ {.type Header, {.hdr { 4, "quit", /* C_quit = 18560 */ colon }}}, /* CENTRY "quit" quit 4 ; interpreter loop h 18568 */
+ {.type FromH0, {.p M_reset}, .src = "dd M_reset ; initialize return stack"}, /* dd M_reset ; initialize return stack 18576 */
+ {.type FromH0, {.p M_clear}, .src = "dd M_clear ; SP = sstack_end initialize data stack"}, /* dd M_clear ; SP = sstack_end initialize data stack 18584 */
+ {.type FromH0, {.p C_query}, .src = "dd C_query"}, /* dd C_query 18592 */
+/* ; dd MV_toLimit ; show the line read, for debugging *//* ; dd M_fetch *//* ; dd M_Tib *//* ; dd MC_STDOUT *//* ; dd M_fswrite *//* ; dd M_drop ; drop the return value of write *//* ; dd C_cr *//* ; dd C_space */ {.type FromH0, {.p C_interpret}, .src = "dd C_interpret"}, /* dd C_interpret 18600 */
+ {.type FromH0, {.p M_jump}, .src = "dd M_jump"}, /* dd M_jump 18608 */
+ {.type FromH0, {.p L253}, .src = "dd L253"}, /* dd L253 18616 */
+ {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon ; why is this needed?"}, /* dd M_exitcolon ; why is this needed? 18624 */
+ {.type Header, {.hdr { 7, "(abort)", /* C_parenabort = 18640 */ colon }}}, /* CENTRY "(abort)" parenabort 7 ; TODO correct below stack notations h 18648 */
+ {.type FromH0, {.p MV_State}, .src = "dd MV_State ; ( mv_State -- )"}, /* dd MV_State ; ( mv_State -- ) 18656 */
+ {.type FromH0, {.p C_off}, .src = "dd C_off ; off sets variable state = 0"}, /* dd C_off ; off sets variable state = 0 18664 */
+ {.type FromH0, {.p MC_STDIN}, .src = "dd MC_STDIN"}, /* dd MC_STDIN 18672 */
+ {.type FromH0, {.p MV_Infd}, .src = "dd MV_Infd"}, /* dd MV_Infd 18680 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 18688 */
+ {.type FromH0, {.p MC_STDOUT}, .src = "dd MC_STDOUT"}, /* dd MC_STDOUT 18696 */
+ {.type FromH0, {.p MV_Outfd}, .src = "dd MV_Outfd"}, /* dd MV_Outfd 18704 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 18712 */
+ {.type FromH0, {.p MC_STDERR}, .src = "dd MC_STDERR"}, /* dd MC_STDERR 18720 */
+ {.type FromH0, {.p MV_Errfd}, .src = "dd MV_Errfd"}, /* dd MV_Errfd 18728 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 18736 */
+ {.type FromH0, {.p C_default_input}, .src = "dd C_default_input"}, /* dd C_default_input 18744 */
+ {.type FromH0, {.p C_quit}, .src = "dd C_quit ; quit resets stacks and is the interpreter loop"}, /* dd C_quit ; quit resets stacks and is the interpreter loop 18752 */
+ {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon ; why is this needed? quit does not return unless it breaks"}, /* dd M_exitcolon ; why is this needed? quit does not return unless it breaks 18760 */
+ {.type Header, {.hdr { 7, "oldboot", /* C_oldboot = 18776 */ colon }}}, /* CENTRY "oldboot" oldboot 7 ; TODO correct below stack notations and this is obsolete. leaving it here for reference until it all works well h 18784 */
+ {.type FromH0, {.p M_reset}, .src = "dd M_reset"}, /* dd M_reset 18792 */
+ {.type FromH0, {.p M_clear}, .src = "dd M_clear ; SP = sstack_end"}, /* dd M_clear ; SP = sstack_end 18800 */
+ {.type FromH0, {.p M_stackptr}, .src = "dd M_stackptr ; (D -- FFEND)"}, /* dd M_stackptr ; (D -- FFEND) 18808 */
+ {.type FromH0, {.p M_S0}, .src = "dd M_S0"}, /* dd M_S0 18816 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; s0 = FFEND"}, /* dd M_store ; s0 = FFEND 18824 */
+ {.type FromH0, {.p M_Dp}, .src = "dd M_Dp ; heaptop = heapend"}, /* dd M_Dp ; heaptop = heapend 18832 */
+ {.type FromH0, {.p M_fetch}, .src = "dd M_fetch ; ( heapend -- )"}, /* dd M_fetch ; ( heapend -- ) 18840 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18848 */
+ {.type Absolute, {.p 1}}, /* dd 1 ; ( heapend 1 -- ) 18856 */
+ {.type FromH0, {.p C_cells}, .src = "dd C_cells ; cells ( heapend 8 -- )"}, /* dd C_cells ; cells ( heapend 8 -- ) 18864 */
+ {.type FromH0, {.p M_minus}, .src = "dd M_minus ; ( heapend-8 -- )"}, /* dd M_minus ; ( heapend-8 -- ) 18872 */
+ {.type FromH0, {.p M_fetch}, .src = "dd M_fetch ; ( contents_from_heapend-8 -- )"}, /* dd M_fetch ; ( contents_from_heapend-8 -- ) 18880 */
+ {.type FromH0, {.p M_Fthargs}, .src = "dd M_Fthargs ; variable args"}, /* dd M_Fthargs ; variable args 18888 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; args = contents_from_heapend-8"}, /* dd M_store ; args = contents_from_heapend-8 18896 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18904 */
+ {.type FromH0, {.p C_parenabort}, .src = "dd C_parenabort ; ( (abort) -- )"}, /* dd C_parenabort ; ( (abort) -- ) 18912 */
+ {.type FromH0, {.p MV_Abortvec}, .src = "dd MV_Abortvec ; variable abortvec"}, /* dd MV_Abortvec ; variable abortvec 18920 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; variable abortvec = (abort) code address"}, /* dd M_store ; variable abortvec = (abort) code address 18928 */
+ {.type FromH0, {.p M_Wordb}, .src = "dd M_Wordb ; constant puts address of wordbuffer on the top of stack"}, /* dd M_Wordb ; constant puts address of wordbuffer on the top of stack 18936 */
+ {.type FromH0, {.p MV_Wordbuf}, .src = "dd MV_Wordbuf ; variable wordbuf"}, /* dd MV_Wordbuf ; variable wordbuf 18944 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; variable wordbuf = address of wordbuffer"}, /* dd M_store ; variable wordbuf = address of wordbuffer 18952 */
+ {.type FromH0, {.p M_Tib}, .src = "dd M_Tib ; constant puts address of tibuffer on the top of stack"}, /* dd M_Tib ; constant puts address of tibuffer on the top of stack 18960 */
+ {.type FromH0, {.p MV_Sourcebuf}, .src = "dd MV_Sourcebuf ; variable sourcebuf"}, /* dd MV_Sourcebuf ; variable sourcebuf 18968 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; variable sourcebuf = address of tibuffer"}, /* dd M_store ; variable sourcebuf = address of tibuffer 18976 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 18984 */
+ {.type Absolute, {.p 0}}, /* dd 0 18992 */
+ {.type FromH0, {.p MV_Infd}, .src = "dd MV_Infd"}, /* dd MV_Infd 19000 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; stdin = 0"}, /* dd M_store ; stdin = 0 19008 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 19016 */
+ {.type Absolute, {.p 1}}, /* dd 1 19024 */
+ {.type FromH0, {.p MV_Outfd}, .src = "dd MV_Outfd"}, /* dd MV_Outfd 19032 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; stdout = 1"}, /* dd M_store ; stdout = 1 19040 */
+ {.type FromH0, {.p MV_State}, .src = "dd MV_State"}, /* dd MV_State 19048 */
+ {.type FromH0, {.p C_off}, .src = "dd C_off ; off stores 0 at state"}, /* dd C_off ; off stores 0 at state 19056 */
+ {.type FromH0, {.p C_decimal}, .src = "dd C_decimal ; decimal setting base = 0"}, /* dd C_decimal ; decimal setting base = 0 19064 */
+ {.type FromH0, {.p C_quit}, .src = "dd C_quit ; quit"}, /* dd C_quit ; quit 19072 */
+ {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon"}, /* dd M_exitcolon 19080 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal ; test code"}, /* dd M_literal ; test code 19088 */
+ {.type Absolute, {.p 66}}, /* dd 66 19096 */
+ {.type FromH0, {.p M_Wordb}, .src = "dd M_Wordb"}, /* dd M_Wordb 19104 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 19112 */
+ {.type FromH0, {.p MC_STDOUT}, .src = "dd MC_STDOUT"}, /* dd MC_STDOUT 19120 */
+ {.type FromH0, {.p M_Wordb}, .src = "dd M_Wordb"}, /* dd M_Wordb 19128 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 19136 */
+ {.type Absolute, {.p 1}}, /* dd 1 19144 */
+ {.type FromH0, {.p M_syswrite}, .src = "dd M_syswrite"}, /* dd M_syswrite 19152 */
+ {.type FromH0, {.p M_drop}, .src = "dd M_drop ; drop the return value of write"}, /* dd M_drop ; drop the return value of write 19160 */
+ {.type FromH0, {.p MC_STDIN}, .src = "dd MC_STDIN"}, /* dd MC_STDIN 19168 */
+ {.type FromH0, {.p M_Wordb}, .src = "dd M_Wordb"}, /* dd M_Wordb 19176 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 19184 */
+ {.type Absolute, {.p 1}}, /* dd 1 19192 */
+ {.type FromH0, {.p M_sysread}, .src = "dd M_sysread"}, /* dd M_sysread 19200 */
+ {.type FromH0, {.p M_drop}, .src = "dd M_drop ; drop the return value of read"}, /* dd M_drop ; drop the return value of read 19208 */
+ {.type Header, {.hdr { 7, "do-args", /* C_do_args = 19224 */ colon }}}, /* CENTRY "do-args" do_args 7 h 19232 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 19240 */
+ {.type Absolute, {.p 0}}, /* dd 0 19248 */
+ {.type FromH0, {.p MV_Acceptvec}, .src = "dd MV_Acceptvec ; no more refills"}, /* dd MV_Acceptvec ; no more refills 19256 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; C_off ; Acceptvec == 0, reading from a buffer. no more refills."}, /* dd M_store ; C_off ; Acceptvec == 0, reading from a buffer. no more refills. 19264 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 19272 */
+ {.type Absolute, {.p 0}}, /* dd 0 19280 */
+ {.type FromH0, {.p MV_toIn}, .src = "dd MV_toIn"}, /* dd MV_toIn 19288 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; >in = 0"}, /* dd M_store ; >in = 0 19296 */
+ {.type FromH0, {.p M_Fthargs}, .src = "dd M_Fthargs ; ( a )"}, /* dd M_Fthargs ; ( a ) 19304 */
+ {.type FromH0, {.p C_count}, .src = "dd C_count ; ( a+1 n )"}, /* dd C_count ; ( a+1 n ) 19312 */
+ {.type FromH0, {.p MV_toLimit}, .src = "dd MV_toLimit"}, /* dd MV_toLimit 19320 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; ( a+1 ) >limit = n"}, /* dd M_store ; ( a+1 ) >limit = n 19328 */
+ {.type FromH0, {.p MV_Sourcebuf}, .src = "dd MV_Sourcebuf"}, /* dd MV_Sourcebuf 19336 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; sourcebuf = a+1"}, /* dd M_store ; sourcebuf = a+1 19344 */
+ {.type FromH0, {.p C_interpret}, .src = "dd C_interpret"}, /* dd C_interpret 19352 */
+ {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon"}, /* dd M_exitcolon 19360 */
+ {.type Header, {.hdr { 4, "boot", /* C_boot = 19376 */ colon }}}, /* CENTRY "boot" boot 4 h 19384 */
+ {.type FromH0, {.p M_reset}, .src = "dd M_reset ; initialize return stack"}, /* dd M_reset ; initialize return stack 19392 */
+ {.type FromH0, {.p M_clear}, .src = "dd M_clear ; SP = sstack_end initialize data stack"}, /* dd M_clear ; SP = sstack_end initialize data stack 19400 */
+ {.type FromH0, {.p M_literal}, .src = "dd M_literal"}, /* dd M_literal 19408 */
+ {.type FromH0, {.p C_parenabort}, .src = "dd C_parenabort ; ( (abort) -- )"}, /* dd C_parenabort ; ( (abort) -- ) 19416 */
+ {.type FromH0, {.p MV_Abortvec}, .src = "dd MV_Abortvec ; variable that puts (abort) code address on the stack"}, /* dd MV_Abortvec ; variable that puts (abort) code address on the stack 19424 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; variable abortvec = (abort) code address"}, /* dd M_store ; variable abortvec = (abort) code address 19432 */
+ {.type FromH0, {.p M_Wordb}, .src = "dd M_Wordb ; variable puts address of wordbuffer on the top of stack"}, /* dd M_Wordb ; variable puts address of wordbuffer on the top of stack 19440 */
+ {.type FromH0, {.p MV_Wordbuf}, .src = "dd MV_Wordbuf ; variable wordbuf"}, /* dd MV_Wordbuf ; variable wordbuf 19448 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; variable wordbuf = address of wordbuffer"}, /* dd M_store ; variable wordbuf = address of wordbuffer 19456 */
+ {.type FromH0, {.p M_Dp}, .src = "dd M_Dp"}, /* dd M_Dp 19464 */
+ {.type FromH0, {.p MV_H0}, .src = "dd MV_H0 ; H0 = here at startup"}, /* dd MV_H0 ; H0 = here at startup 19472 */
{.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 19480 */
- {.type FromH0, {.p MV_State}, .src = "dd MV_State"}, /* dd MV_State 19488 */
- {.type FromH0, {.p C_off}, .src = "dd C_off ; off stores 0 at state"}, /* dd C_off ; off stores 0 at state 19496 */
- {.type FromH0, {.p C_decimal}, .src = "dd C_decimal ; decimal sets base = 10"}, /* dd C_decimal ; decimal sets base = 10 19504 */
- {.type FromH0, {.p C_default_input}, .src = "dd C_default_input ; read lines from stdin, if args do not set one up"}, /* dd C_default_input ; read lines from stdin, if args do not set one up 19512 */
- {.type FromH0, {.p M_Fthargs}, .src = "dd M_Fthargs"}, /* dd M_Fthargs 19520 */
- {.type FromH0, {.p M_cfetch}, .src = "dd M_cfetch"}, /* dd M_cfetch 19528 */
- {.type FromH0, {.p M_cjump}, .src = "dd M_cjump"}, /* dd M_cjump 19536 */
- {.type FromH0, {.p L260}, .src = "dd L260 ; fetched 0, no args, go to the interpreter loop"}, /* dd L260 ; fetched 0, no args, go to the interpreter loop 19544 */
- {.type FromH0, {.p C_do_args}, .src = "dd C_do_args ; process args"}, /* dd C_do_args ; process args 19552 */
-/* ; dd C_default_input ; do not do this as it will override any input streams set up by the args */ {.type FromH0, {.p C_quit}, .src = "dd C_quit ; interpreter loop when there are no args or fall through after processing args"}, /* dd C_quit ; interpreter loop when there are no args or fall through after processing args 19560 */
- {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon"}, /* dd M_exitcolon 19568 */
- {.type Chars, {.str "unable to restore input"}}, /* 19592 */
- {.type Chars, {.str " Q?"}}, /* 19596 */
- {.type Chars, {.str " stack underflow"}}, /* 19613 */
- {.type Chars, {.str " I?"}}, /* 19617 */
- {.type Chars, {.str " C?"}}, /* 19621 */
- {.type Chars, {.str "I/O error"}}, /* 19631 */
- {.type Chars, {.str "uninitialized execution vector"}}, /* 19662 */
- {.type Chars, {.str " ok"}}, /* 19666 */
- {.type Chars, {.str "input line is longer than 4096 bytes"}}, /* 19703 */
- {.type Chars, {.str "read error"}}, /* 19714 */
+ {.type FromH0, {.p MC_STDIN}, .src = "dd MC_STDIN"}, /* dd MC_STDIN 19488 */
+ {.type FromH0, {.p MV_Infd}, .src = "dd MV_Infd"}, /* dd MV_Infd 19496 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store ; stdin = 0"}, /* dd M_store ; stdin = 0 19504 */
+ {.type FromH0, {.p MC_STDOUT}, .src = "dd MC_STDOUT"}, /* dd MC_STDOUT 19512 */
+ {.type FromH0, {.p MV_Outfd}, .src = "dd MV_Outfd"}, /* dd MV_Outfd 19520 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 19528 */
+ {.type FromH0, {.p MC_STDERR}, .src = "dd MC_STDERR"}, /* dd MC_STDERR 19536 */
+ {.type FromH0, {.p MV_Errfd}, .src = "dd MV_Errfd"}, /* dd MV_Errfd 19544 */
+ {.type FromH0, {.p M_store}, .src = "dd M_store"}, /* dd M_store 19552 */
+ {.type FromH0, {.p MV_State}, .src = "dd MV_State"}, /* dd MV_State 19560 */
+ {.type FromH0, {.p C_off}, .src = "dd C_off ; off stores 0 at state"}, /* dd C_off ; off stores 0 at state 19568 */
+ {.type FromH0, {.p C_decimal}, .src = "dd C_decimal ; decimal sets base = 10"}, /* dd C_decimal ; decimal sets base = 10 19576 */
+ {.type FromH0, {.p C_default_input}, .src = "dd C_default_input ; read lines from stdin, if args do not set one up"}, /* dd C_default_input ; read lines from stdin, if args do not set one up 19584 */
+ {.type FromH0, {.p M_Fthargs}, .src = "dd M_Fthargs"}, /* dd M_Fthargs 19592 */
+ {.type FromH0, {.p M_cfetch}, .src = "dd M_cfetch"}, /* dd M_cfetch 19600 */
+ {.type FromH0, {.p M_cjump}, .src = "dd M_cjump"}, /* dd M_cjump 19608 */
+ {.type FromH0, {.p L260}, .src = "dd L260 ; fetched 0, no args, go to the interpreter loop"}, /* dd L260 ; fetched 0, no args, go to the interpreter loop 19616 */
+ {.type FromH0, {.p C_do_args}, .src = "dd C_do_args ; process args"}, /* dd C_do_args ; process args 19624 */
+/* ; dd C_default_input ; do not do this as it will override any input streams set up by the args */ {.type FromH0, {.p C_quit}, .src = "dd C_quit ; interpreter loop when there are no args or fall through after processing args"}, /* dd C_quit ; interpreter loop when there are no args or fall through after processing args 19632 */
+ {.type FromH0, {.p M_exitcolon}, .src = "dd M_exitcolon"}, /* dd M_exitcolon 19640 */
+ {.type Chars, {.str "unable to restore input"}}, /* 19664 */
+ {.type Chars, {.str " Q?"}}, /* 19668 */
+ {.type Chars, {.str " stack underflow"}}, /* 19685 */
+ {.type Chars, {.str " I?"}}, /* 19689 */
+ {.type Chars, {.str " C?"}}, /* 19693 */
+ {.type Chars, {.str "I/O error"}}, /* 19703 */
+ {.type Chars, {.str "uninitialized execution vector"}}, /* 19734 */
+ {.type Chars, {.str " ok"}}, /* 19738 */
+ {.type Chars, {.str "input line is longer than 4096 bytes"}}, /* 19775 */
+ {.type Chars, {.str "read error"}}, /* 19786 */
};
--- a/os/pc64/words-nasm.s
+++ b/os/pc64/words-nasm.s
@@ -1846,15 +1846,26 @@
dd M_terminate
dd M_exitcolon
-CENTRY "include" C_include 7
+CENTRY "include" C_include 7 ; this does not work
dd C_bl
dd C_word
dd M_rpush
-dd MV_toLimit
+
+dd MV_Acceptvec
dd M_fetch
+dd M_cjump
+dd L248 ; when Acceptvec == 0
+dd MV_toLimit ; include ends any further reading from the current input line
+dd M_fetch
dd MV_toIn
dd M_store
+L248: ; when Acceptvec == 0
dd C_save_input
+dd C_default_input
+dd M_literal
+dd C_accept_key ; as C_accept_line will not get a line per read from non-cons files
+dd MV_Acceptvec
+dd M_store
dd M_rpop
dd C_count
dd C_ro