Tali Forth for the 65c02
Re: Introducing Tali Forth for the 65c02 (ALPHA)
JimBoyd wrote:
I'm puzzled by a note in the document
It is my understanding that CS-PICK and CS-ROLL do not replace the branch primitives ( called ?BRANCH and BRANCH in the Forth-83 standard ) or the high level control flow words but rather augment them.
Quote:
Many Forths now use the words cs-pick and cs-roll instead of the branch variants
Re: Introducing Tali Forth for the 65c02 (ALPHA)
Tali Forth 2 has just formally reached Version 1.0 (https://github.com/scotws/TaliForth2). Yay!
To recap, Tali is a bare-metal, Subroutine Threaded (STC), mostly ANS Forth that was created explicitly for the 65c02. It now has the basic features, including blocks and wordsets, assembler and disassembler, and is pretty stable thanks to its test suite. Not only is the code happily over-commented, but the documentation now includes a manual with more than 120 pages in the PDF version, with tutorials for wordsets, blocks, and a (limited) 6502 clone of the ed line-based editor. The aim is to make a Forth that is easy to understand and adopt for other projects, one reason why it's released in the public domain. It will run out of the box with the py65 simulator (https://github.com/mnaberez/py65), making it easy to experiment with.
This has been almost six years to the day in the making, so a lot of thanks are in order to everybody who has given feedback, raised issues, and provided encouragement. Most very special thanks go to Sam Colwell, who not only did an enormous amount of work, but also added lots of really clever stuff that improved the quality immensely, not the least the test suite in its current form. The py65 simulator and Ophis assembler (https://michaelcmartin.github.io/Ophis/) are both rock-stable, and I can only recommend both.
And of course thanks to everybody here at 6502.org, without whom I would have never even tried Forth.
The one big thing that is still missing from Tali is multitasking. Since it is neither covered in a standardized way by ANS Forth nor by Gforth, this is going to require creating a new wordset. One minor (cough) problem will be that we've run out of space -- the idea was to keep Tali in 24 Kb ROM so that users can use it side-by-side with another system, and further 2 Kb of that are reserved for the user to define their own high-level Forth words. Based on feedback, that 24 Kb limit might fall.
Any and all feedback, suggestions, and comments are of course very welcome. And thanks again, this has been a really fun project.
To recap, Tali is a bare-metal, Subroutine Threaded (STC), mostly ANS Forth that was created explicitly for the 65c02. It now has the basic features, including blocks and wordsets, assembler and disassembler, and is pretty stable thanks to its test suite. Not only is the code happily over-commented, but the documentation now includes a manual with more than 120 pages in the PDF version, with tutorials for wordsets, blocks, and a (limited) 6502 clone of the ed line-based editor. The aim is to make a Forth that is easy to understand and adopt for other projects, one reason why it's released in the public domain. It will run out of the box with the py65 simulator (https://github.com/mnaberez/py65), making it easy to experiment with.
This has been almost six years to the day in the making, so a lot of thanks are in order to everybody who has given feedback, raised issues, and provided encouragement. Most very special thanks go to Sam Colwell, who not only did an enormous amount of work, but also added lots of really clever stuff that improved the quality immensely, not the least the test suite in its current form. The py65 simulator and Ophis assembler (https://michaelcmartin.github.io/Ophis/) are both rock-stable, and I can only recommend both.
And of course thanks to everybody here at 6502.org, without whom I would have never even tried Forth.
The one big thing that is still missing from Tali is multitasking. Since it is neither covered in a standardized way by ANS Forth nor by Gforth, this is going to require creating a new wordset. One minor (cough) problem will be that we've run out of space -- the idea was to keep Tali in 24 Kb ROM so that users can use it side-by-side with another system, and further 2 Kb of that are reserved for the user to define their own high-level Forth words. Based on feedback, that 24 Kb limit might fall.
Any and all feedback, suggestions, and comments are of course very welcome. And thanks again, this has been a really fun project.
Re: Introducing Tali Forth for the 65c02 (ALPHA)
scotws wrote:
One minor (cough) problem will be that we've run out of space -- the idea was to keep Tali in 24 Kb ROM so that users can use it side-by-side with another system
[Edit: Poor choice of words on my part, I know, but block in this instance has nothing to do with Forth blocks.
Maybe I/O section? ]
Last edited by JimBoyd on Mon Jan 07, 2019 9:27 pm, edited 1 time in total.
Re: Introducing Tali Forth for the 65c02 (ALPHA)
JimBoyd wrote:
How difficult would it be to take a page out of the C64 book and have Tali Forth ROM as well as this other system occupy the same memory but use a byte in your I/O block to configure which one is mapped into memory?
Re: Introducing Tali Forth for the 65c02 (ALPHA)
Congratulations on reaching V1.0!
Re: Introducing Tali Forth for the 65c02 (ALPHA)
I didn't realize py65 had mass storage. How is this manifested?
Re: Introducing Tali Forth for the 65c02 (ALPHA)
The mass storage for py65 and platforms without nonvolatile storage is done using a ramdrive built into Tali. Running the command will allot four 1K blocks and will install the vectors (XTs) for block-read and block-write to routines that access the ramdrive. This facility is used to test all of the block words in the py65mon simulator.
For systems that actually have non-volatile storage, the user simply installs the vectors to their own routines for reading/writing a block to/from storage. On my single board computer, I have an I2C bus implemented through a VIA with an I2C EEPROM. Tali has a user-words.fs file where you can put such things and they will be stored in the ROM and compiled on bootup.
Code: Select all
4 block-ramdrive-initFor systems that actually have non-volatile storage, the user simply installs the vectors to their own routines for reading/writing a block to/from storage. On my single board computer, I have an I2C bus implemented through a VIA with an I2C EEPROM. Tali has a user-words.fs file where you can put such things and they will be stored in the ROM and compiled on bootup.
Re: Introducing Tali Forth for the 65c02 (ALPHA)
Sort of a meta-question - is there any way to change the subject line of this thread? The "ALPHA" in the headline is outdated, it would be nice if this could just be "Tali Forth for the 65c02" or something to that effect ... sorry if I'm missing something obvious ...
- barrym95838
- Posts: 2056
- Joined: 30 Jun 2013
- Location: Sacramento, CA, USA
Re: Introducing Tali Forth for the 65c02 (ALPHA)
I'm not certain, but perhaps you could just navigate to your head post and edit the subject line to see what global effect it has, if any?
If that doesn't have the desired result, I'm sure that no one would complain if you started a new thread with your desired title, as long as you referred back to this one as applicable.
If that doesn't have the desired result, I'm sure that no one would complain if you started a new thread with your desired title, as long as you referred back to this one as applicable.
Got a kilobyte lying fallow in your 65xx's memory map? Sprinkle some VTL02C on it and see how it grows on you!
Mike B. (about me) (learning how to github)
Mike B. (about me) (learning how to github)
- GARTHWILSON
- Forum Moderator
- Posts: 8773
- Joined: 30 Aug 2002
- Location: Southern California
- Contact:
Re: Introducing Tali Forth for the 65c02 (ALPHA)
Yes, editing the head post to change the subject line should work. If you can't make it work, I can do it for you.
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?
Re: Tali Forth for the 65c02
Ah, that worked. Thanks!
Re: Tali Forth for the 65c02
Honestly, the programmer in me hates summer, I seem to be spending all my time outdoors, in the fresh air, with green things and my family, getting exercise. To make matters worse, my NAS motherboard died, and I had the genius idea of switching the new system to a Ubuntu Server basis with ZFS and Docker, because how hard can that be, right? That's sucked up indoor time. At least those pools don't involve actual cool, refreshing water.
Anyway, finally managed an update to Tali Forth. Carsten Strotmann has contributed platform files for Apple machines, thank you very much! And the Steckschwein people sent me a patch (as in diff) to make BYE customizable, and that will be next.
Probably when it rains. You'd think that would be a thing in Germany, but noooo, has to be sunny all the time. Next thing you know, there will be speed limits on the Autobahn.
Anyway, finally managed an update to Tali Forth. Carsten Strotmann has contributed platform files for Apple machines, thank you very much! And the Steckschwein people sent me a patch (as in diff) to make BYE customizable, and that will be next.
Probably when it rains. You'd think that would be a thing in Germany, but noooo, has to be sunny all the time. Next thing you know, there will be speed limits on the Autobahn.
-
ArnoldLayne
- Posts: 109
- Joined: 28 Dec 2014
- Location: Munich, Germany
- Contact:
Re: Tali Forth for the 65c02
scotws wrote:
Anyway, finally managed an update to Tali Forth. Carsten Strotmann has contributed platform files for Apple machines, thank you very much! And the Steckschwein people sent me a patch (as in diff) to make BYE customizable, and that will be next.
Carsten has some results using TaliForth2, and "the Steckschwein people", too:
https://theultimatebenchmark.org/#sec-7
(I kinda like "the Steckschwein people", makes me think "crab people", and hear their chant https://www.youtube.com/watch?v=e20DtUJDxDg)
scotws wrote:
Next thing you know, there will be speed limits on the Autobahn.
Re: Tali Forth for the 65c02
Just in case somebody missed it in the other thread: There is a discussion started at https://github.com/scotws/TaliForth2/issues/232 for the lower-level details of how to continue with Tali Forth 2 from here. It's probably going to be a bit too detailed for here, where we should probably stick to more high-level things. For instance, Tali needs a different assembler that can handle conditional assembly, and a more modular system so people can pick and choose what extra parts they want. Suggestions and comments welcome!
- GARTHWILSON
- Forum Moderator
- Posts: 8773
- Joined: 30 Aug 2002
- Location: Southern California
- Contact:
Re: Tali Forth for the 65c02
scotws wrote:
For instance, Tali needs a different assembler that can handle conditional assembly, and a more modular system so people can pick and choose what extra parts they want. Suggestions and comments welcome!
See our topic, "65c816 (opinionated) assembler showdown." I use C32 which I tell about briefly there, which I like for several reasons. You buy one assembler for $99 and it has options for dozens of different processors (including of course the 6502, 65c02, and 65816), and they tell you how to make up the instruction tables for any new processor you want, even of your own design.
http://WilsonMinesCo.com/ lots of 6502 resources
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?
The "second front page" is http://wilsonminesco.com/links.html .
What's an additional VIA among friends, anyhow?