When EMforth is a client to EMserver file access becomes very easy.
Writing files
The output text from forth interpreter can be redirected to a file in two ways.
If you want to capture text and see it on the display as well you use the word - CAPTURE.
If you want to send it to a file and not see it you use the word STDOUT.
The main reason to use the later is speed when you have a lot of text.
If you say..
CAPTURE FILENAME
do something to output text.
and type CAPTURE again....
The first CAPTURE will create and open a file. The filename is optional for all these words - if omitted you will be ask for one.
The second CAPTURE will close the file. I could use a different word set (separate close) but I haven't.
STDIO works the same way.
To dump memory to a binary file..
STRT LEN >FILE FILENAME.
Ie the start address the length >FILE and an optional name.
This is the same format as DUMP except for the filename.
Writing files from a compiled word is also quite simple but I haven't finished writing all the support words.
Reading files
The main use for reading files is to compile source code.
You just say..
SOURCE FILENAME
You can also do nested includes with.
INCLUDE FILENAME
The difference between SOURCE and INCLUDE is the former also allocates memory to compile into.
Directory layout
I arrange my directories as shown in the image above.
My applications sit in directories at the same level as the includes.
To do an include from the main source uses a line like this...
INCLUDE ..\include\IO.FTH
For each application I have a shortcut to emserver with the working directory set to my working directory.
Include files which aren't shared between applications sit in the working directory.
These can be included like this..
INCLUDE H256.DEF
I also have a simple conditional statement which can be used to only include when there is a "true" flag on the stack - for example...
PCBTYPE H256 = IFDO INCLUDE H256.DEF
This would include the file if PCBTYPE equals H256