[HN Gopher] Fitting a Forth in 512 Bytes ___________________________________________________________________ Fitting a Forth in 512 Bytes Author : stevekemp Score : 92 points Date : 2021-06-11 19:44 UTC (3 hours ago) (HTM) web link (niedzejkob.p4.team) (TXT) w3m dump (niedzejkob.p4.team) | dingosity wrote: | people talking about how cool FORTH is. @cblum made his own | sector forth. this is my tribe. i honestly thought there were no | stack fans left in the world, thanks for proving me wrong. | stcredzero wrote: | "To compile a kernel, you need a running kernel." | | Why? I guess it depends on how you define "kernel." But to be | able to do a batch process like compilation, you can get away | with a little. | NieDzejkob wrote: | Workarounds exist, like for every other example I mentioned. I | am mostly referring to the commonly used dependency graph. | spicybright wrote: | I'm guessing by kernel he meant any program that can host other | programs in some way. | | Can you clarify what batch process means in this case? | | I /think/ the authors definition of a kernel is a program that | can host other programs in some way. | | A video game on a boot sector can't do that (even though it | likely would have it's own kernel to function), but some kind | of input loop to write memory could. | stcredzero wrote: | The old Apple II+ I had as a kid only did one process at a | time. For an OS, it basically had what amounted to a REPL for | Microsoft BASIC. | | You don't need to host another program to compile something. | All you need to do is to read data off disk, then write other | data back. | Someone wrote: | And what would do that "read data off disk, then write | other data back", if not a program? Even if you use a | monitor | (https://en.wikipedia.org/wiki/Machine_code_monitor) to | write a program, that's still a program. | | The only way to avoid that is to hand-punch a tape or | something like that (with lots of practice and patience, it | may be possible to program a small PROM or write an early | floppy by hand) | kstrauser wrote: | On a Commodore 64, the kernal [sic] was similar to the BIOS | on a PC, with display and keyboard handlers, IO routines, | etc. When you first turned on the machine, _something_ had | to say "** COMMODORE 64 BASIC V2 **", and that something | was the kernal. | hyperhopper wrote: | I find it amusing how often trying to do complex tasks with | simple constraints, always ends up back at stack based languages. | Probably why the stack based turing machine is academically | important. | NieDzejkob wrote: | I suppose that prior art influences things. In my case, I went | "a separate text editor won't fit, I need a REPL", and that | basically filtered to just Forth and Lisp. It would be | interesting to see what subset of Lisp would fit in a | bootsector, but I wouldn't get my hopes up. | q-big wrote: | > Probably why the stack based turing machine is academically | important. | | A Turing machine is not stack-based, but tape-based. A pushdown | automaton (PDA) is stack-based. | cblum wrote: | Gonna plug my own sectorforth here: | https://github.com/cesarblum/sectorforth | | The linked post is really impressive. The author went way beyond | what I did. I'm especially impressed by the I/O stuff. | na85 wrote: | Man, Forth is such a cool language. It really captures (what I | perceive to be) the "hacker mentality" of powerful but simple | tools, without much overt concern for polish/slick interfaces. | | I mean I know a lot of foundational code of yesteryear was hacked | together in C, but C lacks a certain ineffable cachet in my view. | A cachet that Forth definitely has. ___________________________________________________________________ (page generated 2021-06-11 23:00 UTC)