### Author Topic: FORTH implementation  (Read 1189 times)

0 Members and 1 Guest are viewing this topic.

• LV2 Member (Next: 40)
• Posts: 25
• Rating: +4/-0
##### FORTH implementation
« on: May 30, 2012, 09:54:53 pm »
I'm thinking of implementing a FORTH environment in Axe. I think FORTH is a great environment for old devices like the TI 8x models, even though they are on the upper end of what I would consider FORTH appropriate for.

I'm wondering if anyone else is interested in a dynamically compiled FORTH environment. The rest of this post is me rambling about specifics and somewhat less interesting stuff.

I have a system set up for dynamic compilation of words into actual machine code. It's not the prettiest, and it could be about 2 machine instructions per word (as in FORTH word) more efficient if I were willing to write it in assembly, but I think the way I have it is good enough efficiency-wise and also lets me write all but 3 lines in Axe.

I basically have an implementation of linked lists, except instead of a list it's a subroutine.

Code: [Select]
:lbl BCONS:⋿CD→{r₁}:r₂→{r₁+1}ʳ:⋿CD→{r₁+3}:r₃→{r₁+4}ʳ:⋿C9→{r₁+6}:Return
(the above code has unicode characters, if it doesn't display right for you I have a less pretty version below)
Spoiler For Spoiler:
Code: [Select]
:lbl BCONS:ECD->{r1}:r2->{r1+1}r:ECD->{r1+3}:r3->{r1+4}r:EC9->{r1+6}:Return

funny story about how I came up with that code:
Spoiler For Spoiler:
I started writing the program during school when I had no access to z80 documentation, so to find the opcodes I used the calcsys app I had installed to decompile the calculator memory and then look up what the original value was in the hex editor. This is exciting for me since I almost always work in a memory-safe environment.

So it can be called like this:

Code: [Select]
:Buff(8)→GDB0:BCONS(GDB0,λ(5→A),λ(A*2→A)):0→A:(GDB0)():Disp A▶DEC
(no unicode version)
Spoiler For Spoiler:
Code: [Select]
:Buff(8)->GDB0:BCONS(GDB0,\(5->A),\(A*2->A)):0->A(GDB0)():Disp A >DEC

That's not all there is so far, but there's not really anything else that's interesting yet.

#### aeTIos

• Nonbinary computing specialist
• LV12 Extreme Poster (Next: 5000)
• Posts: 3913
• Rating: +184/-32
##### Re: FORTH implementation
« Reply #1 on: May 31, 2012, 03:05:19 am »
Argh, plz don't put code tags in spoilers, they are tiny in chrome
I'm not a nerd but I pretend:

#### Jim Bauwens

• Lua! Nspire! Linux!
• Editor
• LV10 31337 u53r (Next: 2000)
• Posts: 1881
• Rating: +206/-7
• Linux!
##### Re: FORTH implementation
« Reply #2 on: May 31, 2012, 03:08:04 am »
Welcome to the forums !

Interesting idea !
I always like to see people implemented old languages