Fixed jtable (was: Re: [PicForth] Re: New lib module - 'libjtable.fs')
David McNab
david at rebirthing.co.nz
Thu Oct 28 13:59:36 CEST 2004
Hi,
My original jtable wasn't working because PCLATH wasn't being set prior
to setting PCL
Here's an amended version (attached) which writes instructions to the
table word to set PCLATH to the upper byte of the table's location.
I'm still only part-understanding the entrails of PicForth, so I'm not
100% certain that this setting of PCLATH won't have undesired
side-effects. However, this fix seems to be working fine on my project.
As a side note - it would appear that the standard 'ftable' (from which
I ripped code for jtable) also suffers from this limitation. Might be
worth looking at having 'ftable' also adjust PCLATH.
Cheers
David
David McNab wrote:
> Samuel Tardieu wrote:
>
>> Thanks David, it will be included in PicForth 0.32. I have added
>> appropriate documentation as well.
>
>
> Great.
>
> But there's presently a caveat - it's only working when the entire table
> is located in the first 256 words of program memory.
>
> I'll look for a fix (or maybe you'll beat me to it).
>
-------------- next part --------------
\ Provides jump table primitives
host
: element-jtable ( xt -- ) goto ;
meta
: jtable ( "name" -- start endxt elemxt )
reachable tcshere ['] end-ftable ['] element-jtable
\ need to save index on stack, hence the ':' instead of '::'
meta> :
\ frig to insert instruction to set pclath, so tables located
\ outside first 256 bytes of prog mem will work
tcshere $100 / movlw
pclath movwf
\ now can pull index off stack
meta> >w
return-in-w pcl ,f addwf
-tcompile
;
target
More information about the PicForth
mailing list