💾 Archived View for gemini.ctrl-c.club › ~de_alchmst › b-logs › ozobot-forthification › 010:introduc… captured on 2024-07-08 at 23:50:13. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-05-12)
-=-=-=-=-=-=-
So I took part in school programming competition that I lost because I can't read instructions or something. This was also one of main reasons to finally look into ruby, so that I never have to touch python again (spoiler, it wont work). Anyways for my second place I got a C# book (I hate C#), pack of canasta cards and one Ozobot Bit+. Since then I knew I have to do something epic with it, but I didn't know what yet.
For those who don't know what is ozobot, here are pics:
It's basically little overpriced robot for elementary schools that can be programmed with color lines and stuff. This model can also be programmed with special blocky programming language and even arduino wiring. Yes, it has working arduino in it, so I can go quite wild with what I can do... or so I thaught.
Enter forth, nice interactive low-level languege that deserves it's own b-log once I understand it a bit better. It's a stack based languege that was originally developed for working with embedded systems, which it is still used for, and has found its place in space technology. I found it interesting due to being stack-based language, which you don't see much today, and it feeling a bit closer to raw assembly than C or zig (which is also a great language btw). You can even use gforth on ^C, so that's nice.
The idea of controlling the ozobot from interactive forth session, possibly even remotly, sounds really cool and since it is very simple language with long tradition in embedded systems, I figured out there must be some forth implementation for arduino. One quick search later, I found nanoFORTH. Ok, I download arduino IDE, git clone the repository and upload to the board. Unfortunately, it does not compile and complains about lack of EEPROM on my board. EEPROM is basically non-volatile memory that you can use to store stuff between restarts, since arduino can not rewrite flash while running. Turns out it does not have full working arduino after all.
Looks like I will have to replace the board to make it work. This will sacrifice color scaners, but I can live with that.
----------------------------