jonesforth
os-tutorial
Our great sponsors
jonesforth | os-tutorial | |
---|---|---|
41 | 40 | |
968 | 26,324 | |
- | - | |
0.0 | 2.3 | |
about 1 year ago | 6 months ago | |
Assembly | C | |
- | BSD 3-clause "New" or "Revised" 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
os-tutorial
-
The Top 10 GitHub Repositories Making Waves 🌊📊
How to create an OS from scratch
-
PS/2 mouse driver problem
My dude. Your functions have exactly the same names as his. Copying it from a different tutorial based on James Molloy's tutorial does not make it any less James Molloy's code.
-
How to get started learning about os development?
I started out with this tutorial: https://github.com/cfenollosa/os-tutorial. It doesn't get you too far but it explains the basics very well, so check it out. After that I looked up James Molloy's kernel tutorials (look it up on Google, it's all on a website). Be advised that he's got a bunch of errors and bugs in the tutorial, there is a whole page on it on the osdev wiki titled known bugs in the JamesM kernel all something like that, but it's still great and gets you pretty far. After that, I chose to develop a FAT32 driver on my own, I can link some sources or my own code for you as well, but it's really up to you to follow what you like. I also found a great youtube series (https://youtube.com/@poncho2364?feature=share9), check out his osdev series, he also has some cool stuff there. And as I said, good luck on your journey and you can ask me in a DM as well if you get stuck somewhere!
-
OS Dev tutorial: different hexdump output but program runs as expected
tutorial : here
-
Why does my bootloader fail to read more than 12 sectors off the disk?
Yeah, I'm following cfenollosa's OS tutorial for guidance. You mentioned that you've seen the same code, with the same bug? What was the solution there?
- Guide to Build an Operating System From Scratch
-
Microsoft doesn't want you to write a new operating system
hey, just in case you actually want to write an operating system, you should check out cfenollosa/os-tutorial: How to create an OS from scratch, it is an amazing tutorial that will get you from basic printing all the way to a command line interface!
-
An Operating system i made, can someone smarter then me critique this?
You might be able to sink your teeth into something like this if you're interested in real os development, haven't got far myself but it's fun and you'll learn a lot https://github.com/cfenollosa/os-tutorial
-
Piko-piko OS. A homemade 16-bit x86 toy operating system for fun.
So I made a 16-bit x86 toy OS in pure assembly. 3 months ago, I found a very fun tutorial on github that is about Operating system development. I read the first few chapter and from there I made a very simple, extensible (?) toy operating system that could run on hardware (yes, it is madness).
- Make The comment section look like a beginners search history
What are some alternatives?
stoneknifeforth - a tiny self-hosted Forth implementation
littleosbook - Source for the little book about OS development
factor - Factor programming language
64bit-os-tutorial - This OS Tutorial expands on the fundamental concepts covered in cfenollosa/os-tutorial and covers entering long mode on the x86_64 architecture. It also uses clang rather than relying on an external crosscompiler. I plan on keeping it up to date, so feel free to submit an issue!
durexforth - Modern C64 Forth
dnsguide - A guide to writing a DNS Server from scratch in Rust
tinyrenderer - A brief computer graphics / rendering course
acwj - A Compiler Writing Journey
sectorforth - sectorforth is a 16-bit x86 Forth that fits in a 512-byte boot sector.
os01 - Bootstrap yourself to write an OS from scratch. A book for self-learner.
SavjeeCoin - A simple blockchain in Javascript. For educational purposes only.
raspberry-pi-os - Learning operating system development using Linux kernel and Raspberry Pi