jonesforth
raspberry-pi-os
Our great sponsors
jonesforth | raspberry-pi-os | |
---|---|---|
41 | 9 | |
968 | 12,864 | |
- | - | |
0.0 | 0.0 | |
about 1 year ago | about 1 month ago | |
Assembly | C | |
- | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
jonesforth
- Konilo: A personal computing system in Forth
-
Thinking Forth: A Language and Philosophy for Solving Problems [pdf]
Cool. Here are some other resources that I've encountered along the way of learning Forth:
- JonesForth: https://github.com/nornagon/jonesforth/blob/master/jonesfort...
This is legit a text that goes the an x86 Forth implementation. Actually, it's just an implementation with really extensive comments. That said, including whitespace and comments, it's just 2000 lines and the pedagogy is excellent. Highly recommended for anyone who would rather see behind the curtain before picking up a larger text.
- SmithForth: https://dacvs.neocities.org/SF/
So, Smith decided to hand-write a Forth directly in x86-64 opcodes (well, the corresponding ascii hex bytes). It's incredibly slim and enlightening how you can bootstrap a language in just a couple hundred bytes or so.
This project actually inspired me to really learn the x86-64 architecture, so I ended up hand-decompiling the SmithForth binary instead of going through his commented implementation. Hand-decompilation is an absolutely fascinating exercise. You learn all about ELF structure, opcode encodings, and actually start to see the gaps where microarchitectural details shine through. Highly recommended for any hacker that really wants to grok low level details.
- Mecrisp: https://mecrisp.sourceforge.net/
An amazingly fast Forth implementation for MSP430, ARM, RISC-V, MIPS, and some FPGAs. This gave me one really nice understanding of Forth as
A REPL into your hardware!
-
Problem Running JonesFORTH
I've git-cloned JonesFORTH (https://github.com/nornagon/jonesforth/blob/master/jonesforth.S) and achieved to compile it (i.e. run make w/o an error. When I start the executable, it presents me with an empty line, and when I say BYE, it says PARSE ERROR: bye.
-
Ask HN: Where do I find good code to read?
Is there any particular language you're looking for? I've found some languages hideous until I understood them and could appreciate their respective graces. Off the top of my head the I can think of a couple.
The first is Jones Forth (https://github.com/nornagon/jonesforth), start with jonesforth.S and move into jonesforth.f. I really enjoyed following along with it and trying my hand at making my own stack based language.
The other is Xv6, a teaching operating system from MIT (https://pdos.csail.mit.edu/6.828/2021/xv6.html), not all the code or implementations are top notch but it shows you non-optimized versions (just because they're simple and more readable) of different concepts used in OS design.
If you're interested in the embedded world, there is a really neat project I've been following that feels a more structured and safe (as in fault-tolerant) while still staying pretty simple (both conceptually and in the code itself): Hubris and Humility (https://hubris.oxide.computer/).
-
Dusk OS: 32-bit Forth OS. Useful during first stage of civilizational collapse
Very low hardware requirements, so basic industrial control at the level where you'd otherwise use an Arduino or so but on scavenged hardware. Forth is ridiculously simple to get an implementation running.
https://github.com/nornagon/jonesforth/blob/master/jonesfort...
Is a nice starting point. It's obviously not as compact as say 'Brainfuck' but it is far more versatile.
-
Making my own forth implementation
OP mentioned jonesforth, but linked to a nasm port of it. Which is probably good it’s just that the documentation in the comments with ascii art doesn’t look right on my screen. So here’s a more common repo: https://github.com/nornagon/jonesforth
-
Struggling with looping constructs, BEGIN WHILE REPEAT
Rip the asm macros for the basic FORTH words out of this and then embed them in a C binary, statically linked with your favourite libs for whatever task. Although I haven't tried this yet, I'm planning on doing it with ncurses for my own Roguelike. From there, if you can convert the function calls and your parameters down to raw numbers, you can send instructions to ncurses or whatever other API you like, directly from a FORTH stack.
- I'm wondering why so few forth microcontoller tutorials are out there?
-
replace jonesforth links to the left by proper link
or the mirror of this site in github: https://github.com/nornagon/jonesforth
- Languages to implement in space-constrained environments
raspberry-pi-os
-
I want to learn about kernel development
Last but not the least, learning by doing is fun so you can check out - raspberry-pi-os (writing an os from scratch) - https://github.com/s-matyukevich/raspberry-pi-os
- GitHub - s-matyukevich/raspberry-pi-os: Learning operating system development using Linux kernel and Raspberry Pi
- Learning operating system development using Linux kernel and Raspberry Pi
- Learning operating system development using Linux kernel and Raspberry Pi (2018)
-
Show HN: CheesecakeOS for Raspberry Pi Volume 0: Booting, Processes, and VM
CheesecakeOS for Raspberry Pi Volume 0: Booting, Processes, and Virtual Memory is the first in what I hope is a series of github markdown tutorials or volumes on bare-metal from-scratch operating system development.
I have dreamed of contributing to the Linux Kernel, but have yet to find the courage to jump in and do so. I started by attempting to read Understanding the Linux Kernel by Daniel Bovet and Marco Cesati, but found it was too advanced for me at the time. I found another text I credit with advancing my understanding, Computer Systems: A Programmer's Perspective by Randall Bryant and David O'Hallaron. I worked on the self-study labs from their book website, and found them to be a superb educational tool.
Further, then becoming interested in what creating an operating system actually means, I stumbled upon Sergey Matyukevich's Rasberry-Pi-OS github repo (https://github.com/s-matyukevich/raspberry-pi-os). I wanted to expand on his tutorial, for my own education, and, in the best case, for the benefit of others.
There are many ideas taken from Linux in the implementation, as when I didn't know how to proceed, that is the source I would consult. Though, I attempt to simplify and explain the details in the text. The implementation stops short of implementing or supporting a file system, the subject of the next volume.
-
Has anyone ever actually gotten a custom kernel/bare metal program to run specifically on the Raspberry Pi 4B?
Not familiar with this myself but aiming to start soon. Have found a nice youtube series for low level development on the RPi, not sure which version he uses, but reportedly it works for some on RPi 4. He also has a subreddit:
-
wanting to create a simple OS for simple games
Here's one tutorial: https://github.com/s-matyukevich/raspberry-pi-os
-
In-depth software programming
C: Learning operating system development using Linux kernel and Raspberry Pi
- What's an interesting non-x86 based architecture to write an OS for?
What are some alternatives?
stoneknifeforth - a tiny self-hosted Forth implementation
JingOS - Awesome - JingOS - The World’s First Linux-based OS design for Tablets
factor - Factor programming language
rdma-core - RDMA core userspace libraries and daemons
durexforth - Modern C64 Forth
dattobd - kernel module for taking block-level snapshots and incremental backups of Linux block devices
tinyrenderer - A brief computer graphics / rendering course
circle - A C++ bare metal environment for Raspberry Pi with USB (32 and 64 bit)
sectorforth - sectorforth is a 16-bit x86 Forth that fits in a 512-byte boot sector.
rtw88-usb - rtw88 family usb driver for linux rtl8723du rtl8822bu rtl8821cu rtl8822cu
SavjeeCoin - A simple blockchain in Javascript. For educational purposes only.
AmogOS - ඞ Among-us themed OS. As seen on Reddit and Youtube.