I would be fun to write a LOGO interpreter for an 8 bit system, I think
Or some small little disk operating system
I might look into how CollapseOS did it
I’ve always wanted to write some sort of operating system
I audited the code to CP/M a few years ago, and i could make sense of it…!
these are the aims of collapseOS:
It it designed to:
- Run on minimal and improvised machines.
- Interface through improvised means (serial, keyboard, display). -Edit text files.
- Compile assembler source files for a wide range of MCUs and CPUs.
- Read and write from a wide range of storage devices.
- Assemble itself and deploy to another machine.
i think i might be able to write such a thing!
I think picoLISP or uLISP is probably perfectly fine to use as an interpreter for a LISP-flavoured collapseOS variant.
That would solve the language implementation issue—the next thing to do would be to write a text editor in it, and then get SD cards accessible in the ecosystem. Then, finally, an assembler.
One thing that still evades me is how to make LISP bootable on a system. I am not conversant enough with FORTH to really understand how collapseOS bootstraps its environment, but I do generally understand the interrupt vectors for Z80 processoers, in order to get them executing code.
I /think/ that forms the rough outline of how you’d go about making a LISP version of collapseOS.
The only other idea that I had in this connexion was to use the much heavier SBCL environment, made bootable by the reaaaally old University of Utah’s OSKit operating system creation tools. However that would completely miss the point of the project: it would not run on a micro controller, or low powered CPU.
I think one thing I learned about the difference between an imperative versus functional operating system environment is that imperative OSs seem to have components that don’t hang together in a way that is as unified as one that is functional. This is probably due to the fact that most imperative operating systems are written in C and are for the most part statically compiled, with no, if any, runtime environment.
I think the biggest task of a LISP OS, perhaps over 50% of the work, is just getting the compiler hosted and executing on the system. The compiler forms the bedrock of the system, and performs functions that would normally be split up into more discrete modules in an imperative environment.
Anyway my research and brainstorming continues (: