Hi AmForth-ers,
The testing of amForth in a mixed program & network environment
 isn't as challenging as it seems:
1) an additional macro was added to macros.s
.macro XTC address
   .p2align 2,0x55
   .word \address
   .set idxcode, idxcode+1
   .equ IDX_\address,idxcode # code index
.endm

2)  amForth.s to include the line
.include "amForth-idx-codes.s"

3)  amForth-idx-codes.s (contents):
.set idxcode, 0
IDX_ADDR:            # starting address in flash - host application
needs that
XTC  XT_MINUS
XTC  XT_1MINUS
XTC  XT_QDUP
XTC  XT_NIP
XTC  XT_RP
XTC  XT_NEGATE
XTC  XT_J
XTC  XT_COLD
:
:
:
4) The host application looks at this as an array of addresses (starting at
IDX_ADDR) , the index to the array references an amForth dictionary address
(for word), the host application passes this
address to the amForth ITC VM and after it completes execution, the NEXT
word will return it back to the host application which will look for the
result on the tos (top of stack).

5) For networking to another remote amForth on any device or implementation
on a larger system, as long as you have the same amForth-idx-codes.s file
built into the image the idx code acts like a pcode. The CH32X033
implementation of amForth used the hifive1 words  as a starting point for a
amForth dictionary, this generated 250 addresses in the array above (a byte
code can reference the word address), not all of them are needed. By
passing a stream of these byte codes to another amForth (having this array
of addresses) you can have remote execution of a forth program (sounds like
Java - but more interactive if you want).

Regards,
John S

PS: Will now watch more closely what I pass in email responses, didn't
realize the whole chain was being propagated. Sorry about that!

_______________________________________________
Amforth-devel mailing list for http://amforth.sf.net/
[email protected]
https://lists.sourceforge.net/lists/listinfo/amforth-devel

Reply via email to