Login [Register]
Don't have an account? Register now to chat, post, use our tools, and much more.
https://github.com/siraben/zkeme80



25 days ago I started work on a new, Scheme-based Z80 assembler to relieve the problems of buggy macro systems in other assemblers. Soon it spun into a project to create the next extensible operating system for the TI-84+, one that was based on the programming language Forth. And here it is, I call it zkeme80, pronounced like "scheme 80" but with a z sound. It's not done yet (still missing a REPL) but the core is mature. The menu you see in the demo was written entirely in Forth, and you can imagine people swapping Forth programs with each other, customizing the boot sequence to their preferences.

Another important design goal was for this assembler to just work, portably. That's why I wrote it in Guile. The only command you need to run to build the operating system is
Code:
make build


It takes 13.5 seconds (real time) to compile on my MacBook Pro 11,1 running NixOS and 0.5 seconds (real time) to recompile, assuming only changes in the Forth layer.

Any and all help would be greatly appreciated!

siraben
Finally; a well designed OS Razz I feel like this should be getting more attention, but alas everyone seems to have transitioned to the CE. I did clone this and it built just fine on Linux; looks like I'll have to dig out my TI-84+ to give this a try Smile

Also I wasn't quite sure what this means? :

Quote:
Assembly programs consist of a list of elements that are either expressions or procedures


Anyway, sweet project Smile I may have to try out creating some Forth programs; I haven't used that language in forever...
Thanks for the reply Very Happy . Yeah, I wish more effort is put into the TI-84+, it's a really good device.

MateoConLechuga wrote:

Also I wasn't quite sure what this means? :

Quote:
Assembly programs consist of a list of elements that are either expressions or procedures




The assembler is written in Scheme. So you don't write


Code:

foo:
    ld a, 5
    push bc
    ret


Instead you write


Code:

'((label foo)
  (ld a 5)
  (push bc)
  (ret))


See the various .scm files in my repository for more.
I personally love the little touches from the screenshots such as the icon highlighting and the loading/shutdown screen animation etc.

I don't know a great deal about Forth, but do you foresee users being able to port code across easily enough?
Thank you! Any respectable operating system should have some sort of user friendly interaction to hide all that complexity Smile

The idea is to have a somewhat fixed kernel/core system and allow people to program the operating system in Forth. I foresee users being able to port existing Forth code. It would be possible to port this to other calculators too, with the necessary modifications to the boot process made. I chose to define words in Z80 for speed, but if need be, most of the language could be defined in itself, so that to port the entire interpreter and compiler only a new primitives need to be rewritten.

I made sure from the start that a significant portion of this Forth implementation is ANS standard conforming, so that code like https://en.wikipedia.org/wiki/Forth_(programming_language)#A_complete_RC4_cipher_program works in zkeme80 without any modification, for instance. I also wrote a new assembler so that building this operating system can be done on any platform with a Guile implementation. I also working on an ASM -> Scheme parser so existing ASM code can be integrated easily.
Hey I noticed this was featured on OSnews.com https://www.osnews.com/story/129236/zkeme80-a-forth-based-os-for-the-ti-84-calculator/

And HaD: https://hackaday.com/2019/01/25/pocket-forth-invades-your-ti-calculator/

Nice Smile.
  
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

» Go to Registration page
Page 1 of 1
» All times are GMT - 5 Hours
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

 

Advertisement