Thank you very much for all your help. I only wish there was documentation available on how to add words. Maybe I should make a tutorial and send it to the person in charge of the OpenBIOS website.

On Feb 24, 2010, at 6:00 AM, openbios-request@openbios.org wrote:

Message: 5
Date: Wed, 24 Feb 2010 10:13:23 +0000
From: Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>
To: The OpenBIOS Mailinglist <openbios@openbios.org>
Subject: Re: [OpenBIOS] Help with local variables
Message-ID: <4B84FBC3.4040108@siriusit.co.uk>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

G 3 wrote:

Hi, I am working on implementing local variable support in OpenBIOS. I 
have done a lot of research on the issue, but there are a few issues I 
still need help resolving. 


-Does Openbios context switch when a word is called? This is when all 
the registers are saved into a stack frame, so the currently executing 
word can use them.

I think you are looking too low a level here - all of this is handled 
automatically by the Forth engine.

-Could someone give me a tutorial on how to add c functions to forth and 
make them accessible to the interpreter. I want to be able to add words 
to the dictionary and be able to use them from the command line.

The easiest way to look at this is to look at one of the existing 
primitive words such as DOCOL. But in short:

- Add the new word to the end of the wordnames array in kernel/bootstrap.c

- Add the C function name to the end of the words array in 
kernel/primitives.c

- Add the C function to kernel/internal.c

- Would anyone know which register on the PowerPC would be good for 
using as a stack pointer for a new local variable stack? I think r13 is 
free and a possible candidate. 

Again, you're looking at too low a level here. What I believe you need 
to do is create a word that adds a new dictionary to the search list at 
the start of the function, much in the same way that a package instance 
does.


HTH,

Mark.

-- 
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
http://www.siriusit.co.uk
t: +44 870 608 0063

Sirius Labs: http://www.siriusit.co.uk/labs