Creating an own CPU is probably too difficult. And there are many minimalist computers with existing CPUs like breadboard computers (eg by Ben Eater). So maybe a (new) CPU-less computer (TTL ?) Or best an own architecture.
Any suggestions? Where to start, good links? Best a computer with keyboard and display.
Another question for creating a simple (new) OS (for that new compter) or an existing one. (I have a Raspberry Pi). But maybe a separate thread for that.
During development of nhyodyne Z80 modular backplane computer, I made what I thought was a fairly minimal machine. It consisted of an 8 slot backplane, Z80 processor board, Z80 clock board, Z80 ROM board. It had no RAM but you could program it using the ROM and CPU registers to store & process data. The I/O was limited to an input button and output was 2 LEDs and a piezo speaker. I was amazed at how much I could do with that little hardware. It also had a DS1302 RTC chip with a few bytes of NVRAM.
Adding in a Z80 serial board could even run a hardware debug monitor. It was pretty fun and a practical exercise in minimal computing although I am sure others have made even simpler machines.
Yes, a lot of boards but the project was to make a modular system where the pieces could be replaced easily. That worked out pretty well and there are some real advantages to a modular design. For instance, if there is a design error or change it can be rolled into usually a single board with minimal parts instead of a PCB respin for a large planar. So that is handy.
I certainly wouldn’t call an RPI a minimalist computer by a long shot. And designing a CPU, even a small one, using TTL is going to be a large PCB by itself.
And the Gigatron CPU board is also worthy of study too - a minimal CPU made in TTL featuring a software-driven VGA output and various emulations - one of this is a 6502.
there are also pure TTL versions of the 6502 (and possibly others) as well as at least one discrete transistor version of the 6502 too.
Also the “megaprocessor”:
although at the size of a small room, it’s hardly minimal, however it is all made from discrete transistors…
I’ve created a new/simple OS recently. It’s written in a 32-bit BCPL and runs on my 65816 system with 512KB of RAM and can self-host the compiler, editor, etc.
I think one of the OPC systems can also run 16-bit BCPL too, but it’s unlikely to be able to host my thing.
On the Pi front, there are now some bare-bones (or freestanding) frameworks for it that might allow you to use as a base to build your own little OS on - writing it entirely in C is possible. I could port my BCPL thing to it with some ease, but I’ve no plans right now as my head is currently inside the RISC-V space.
(and on that front, I’m porting my BCPL OS to a tiny RISC-V system - it’s just 32x18x4mm is size and has 384KB of usable RAM as well as 4MB of flash)
Thanks. The Gigatron, I already found before, that’s why I wrote a new TTL.
The Megaprocessor is interesting but not minimalistic either. And both already exist.
Maybe it’s better to start with ideas in theory.
And maybe it’s too difficult and better start with an OS.
There’s also an extremely clever and attractive re-implementation of the 6502 on just 4 CPLDs: Arlet/cpld-6502
Writing a new OS is a whole other effort, although of course you can start with a simple monitor, or even just a hexloader to bootstrap the machine.
Possibly not minimal, but another good example of what can be done.
These are the sort of questions debated (and sometimes answered!) in other retrocomputing, minimalist, and similar forums… I can give you my thoughts, but are they representative of others? Who knows - and even I’m now confused having dived into the world of FPGAs in the last month or so.
Operating systems even more so - from a toggle switch and lamp entry system to command-line to GUI with no command-line to what?
(Although it seems the command-line is mostly a common theme, despite Apple and Microsofts efforts to eliminate it!)
And something I’ve debated/queried in recent times regarding the command-line - can you/someone/anyone come up with something that doesn’t resemble the unix shell without being as crude as CP/M ? I think it’s tricky - but maybe I’ve been hanging round unix systems for too long (almost 42 years now)
I do like my BCPL system though - it has just enough to be usable and needs a fairly low-end CPU to run, although running on a 16Mhz 65816 which is running an assembly coded bytecode interpreter for the compiled BCPL is a little slow at times…
When I looked at migrating my BCPL OS off it’s existing and very retro 65816 CPU, I looked at RISC-V… So to get myself up to speed on RISC-V coding, I write my own RV32IM emulator for it. In BCPL. On my existing system.
Sure - there are 100’s of emulators out there, as well as hardware but where’s the fun in that…
Anyway, it works, and it works well enough for me to re-implement the bytecode interpreter directly in RISC-V asm to let me run compiled BCPL programs under - and I can run my entire BCPL OS inside it, however it is somewhat slow. It takes 5 minutes to boot compared to the base system which boots in under 5 seconds, but I do feel I’m doing the whole tread in the footsteps of giants thing - nothing new as a concept, but actually quite satisfying for me.
Don’t forget From Nand to Tetris, where you design an 8-bit CPU from first principles. The hardware section of the textbook stops with a simulated CPU in a minimalist HDL dialect, but plenty of people have gone on to build them in real hardware, as well as refine and expand the basic design.
I’m trying to wrap my head around bootstrapping some kind of system on an ARM Cortex-M4 MCU. Initially I was using the C compiler suite from Inferno/Plan 9 to write an interpreter for a simple language, then I wanted to generate machine code myself so I wrote a quick and dirty compiler for a very simple language. Now I’m trying to bring those two things together so that I can write in a fairly high-level language but get better performance than the interpreter.
One thing I found when writing an interpreter was that it was easy to implement in C, in my case, but difficult to map bytecode to assembly language efficiently. I could imagine an instruction set that supported the operations I wanted to do more directly.
Thank you all. But I already knew all links except 1.
I’m not sure if it helps seeing more and more existing projects. Yes, someone has to know the basics.
It’s like writing a book or composing a new song. The more you read and hear other works, the more you might think that everything already exist. Someone needs got talent and good ideas.
On the other hand. When you plan something and spend lots of time and then find, that what you’ve invented did also someone else.
I do think as well, that an emulator could also be a way.
Or reading some books.
Probably inventing a new computer or even architecture is not that easy.
Most of my work is done from and with a clean-slate computing stack running on a forth-like CPU. All the software that I use is assembled for that specific CPU target. I’m not sure if this exactly what you have in mind, but here are some links that have helped me figure things out:
Yes, looks quite interesting.
But I think it’s not a completely new “architecture”.
From j1.pdf: “The J1 is a 16-bit von Neumann architecture”…
And 16 bits and with the graphics that is not that minimalistic.
I’m thinking about something extremely simple (without FPGA) or something completey new.
I got a bit confused with the scale because you said you wanted to build an OS.
If you’re looking for more esoteric, and less practical.
You could design a Iota/BLC CPU(1 instruction): Iota - Esolang
Or some flavor of LC CPU(7 instructions): Nock - Esolang
Or a Fractran CPU(1 instruction): XXIIVV — fractran
Something more standard would be a subleq(1 instruction): XXIIVV — subleq (DawnOS is an operating system targetting this architecture)
The Subleq operating system has this little text file that comes with it, which I like:
Imagine that software development becomes so complex and expensive that no software is being written anymore, only apps designed in devtools. Imagine a computer, which requires 1 billion transistors to flicker the cursor on the screen. Imagine a world, where computers are driven by software written from 400 million lines of source code. Imagine a world, where the biggest 20 technology corporation totaling 2 million employees and 100 billion USD revenue groups up to introduce a new standard. And they are unable to write even a compiler within 15 years. “This is our current world.”
No, I wasn’t thinking about an esoteric OS. I also thought of a simple one. But as I haven’t written an OS before, I don’t know how difficult it is. As said it should be for the new computer. Or an existing one like RPI.
Concerning a computer:
I’m not sure if it’s even possible to invent a new computer architecture/type (on the lower end).
And the most minimalistic computer probably also already exist. (1 Bit, 1 CPU, CPU-less etc).
Someone can’t reinvent the wheel, just improve it. But there are vehicles with no round wheels or not with 4 wheels. You can’t drive well, though. A new computer can be weird or experimental. But I have no ideas what could be different/new.
Well, there’s plenty of options, for example SBTCVM is a computing using trites, fractran would be a computing using fraction multiplication as its only opcode. Make a BLC computer, you’ll be one of the first.
Almost everything is new if you leave the realm of computing, everything has yet to be done.
These (virtual) computers already exist. There are screenshots of SBTCVM.
I want something own and new and not copying other’s ideas.
Yes, it might help learning from others. But I have to do it myself.
Currently, I don’t have enough time.