Omnimaga

Calculator Community => Other Calc-Related Projects and Ideas => TI Z80 => Topic started by: adrusi on May 30, 2012, 09:54:53 pm

Title: FORTH implementation
Post by: adrusi 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.
Title: Re: FORTH implementation
Post by: aeTIos on May 31, 2012, 03:05:19 am
Argh, plz don't put code tags in spoilers, they are tiny in chrome D:
Title: Re: FORTH implementation
Post by: Jim Bauwens on May 31, 2012, 03:08:04 am
Welcome to the forums !

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

But I can't help you with your programming, as I'm no z80 programmer.