jandrese 2 years ago

Sometimes I feel bad for kids today who experience computers that are so powerful that they are many layers divorced from the hardware. Long gone are the days when there was only the thinnest layer of BASIC between you and the CPU when you boot the machine.

But then something like this comes along and reminds me that there is no reason you can't just fire up a 16 bit machine with a paper thin OS if you wanted. Not everything has to be a smartphone or modern system. My hat is off to the author for going a step further and building a minicomputer from scratch.

crispyambulance 2 years ago

> Sol-1 is a homebrew CPU and Minicomputer built from 74HC logic [with C compiler and Unix-like OS]

==> lifetime elite nerd union card for the author.

Amazing stuff. The dedication needed to carry something like that through is unimaginable to me.

cbm-vic-20 2 years ago

Wow; this looks a lot like the smaller PDP-11 minis from the 1970s: a stack of wire-wrapped cards with edge connectors plugged into a backplane, a few ribbon cables for other connections. Except DEC had a big team of engineers to do this. This is good stuff!

Luc 2 years ago

Congratulations. Amazing.

What was your workflow for the design like? On your github I see you used verilog. I have never used it. Do you use software that converts the verilog to a list of 74HC ICs and how to connect them?

  • pconst167 2 years ago

    Hey there! The verilog is separate from the 74HC design. The verilog was written simply for completion. I plan to put it into an FGPA sometime.

danieg 2 years ago

This is super cool, well done!

Some fun historical context: the 74181 chip (part of the 74HC series) was one of the key technologies behind the Xerox Alto. It was the first complete ALU on a single chip using a medium-scale integration (MSI) design. This was what enabled the Alto to be much smaller than minicomputers like the PDP-8, which used small-scale integration (SSI) that spread the processor over many individual logic gate chips and circuit boards.

accrual 2 years ago

I adore this project. I hope one day to write my own micro OS, I started one using OSDev[0], but never finished it. Building your own OS on top of your own hardware is on another level though. Excellent and nicely documented project, Paulo!

[0] https://wiki.osdev.org/Expanded_Main_Page

c-c-c-c-c 2 years ago

This is fun, I stumbled upon his youtube channel recently after he trash talked a lecture by Jan M. Rabaey calling his book the biggest piece of garbage ever written. Impressive stuff nonetheless.

  • pconst167 2 years ago

    Hehe you got me laughing :P Thank you for visiting friend.

kleiba 2 years ago

Quick, someone port Doom to it!

jacquesm 2 years ago

Wow, that's super impressive!

Be sure to check out the photos and videos.

How fast is it? Do you plan on using this for real or just as a hobby project?

peter_d_sherman 2 years ago

Well done and amazing!

You just earned yourself a GitHub follower! (me!)

I would follow you on Twitter/X as well -- but you don't seem to have a Twitter/X account (which I would argue is yet more proof of your intelligence! :-) <g> :-) )

Anyway, great job!

Amazing and well done!

blackhaz 2 years ago

Sir, this is incredible. Really enjoyed the photos/videos section and the way the computer is so neatly laid out. Mind-blowing amount of effort. I wish I would be able to see this live in a university.

cristeigabriel 2 years ago

Do you have something like exceptions and segments? Itd be cool if it didn't IMO (besides for permission situations, I guess)

quantified 2 years ago

I love it. Looks fairly well-rounded.

I didn't see in the written artifacts: what's the effective instructions per second?

  • B1FF_PSUVM 2 years ago

    I checked https://en.wikipedia.org/wiki/7400-series_integrated_circuit... and gate delay (tpd) for 74HC is 15 ns.

    I wouldn't expect more than 1 MIPS, which is what the DEC VAX 11/780 was doing around 1980.

    (Awesome one-man project, if that's the case.)

    • jacquesm 2 years ago

      If it gets 1 MIPS I'd be absolutely amazed, check out the size of the wire wrap boards:

      http://www.sol-1.org/images/sol/board-1.jpg

      • dboreham 2 years ago

        They're normal sized boards fwiw.

        • jacquesm 2 years ago

          I didn't mean to imply that they are abnormal, just that they are large and large boards like that tend to be harder to make stable when using wire wrap as a technique. I've done this - and stacks of them too - but I've also spent days tracing a faulty wire, and the chance of such faults goes up as the number of wires goes up.

        • kjs3 2 years ago

          Those are Multibus-1 prototyping boards, so they'd be 12"x6.75". It's a good size for building non-trivial things.

    • marktangotango 2 years ago

      Wire length matching would seem to be a big factor in attaining the highest performance.

LispSporks22 2 years ago

Love it. Had fond memories of building big 7400 circuits in undergrad. Bullet speed detector iirc.

tails4e 2 years ago

Extremely impressive, well done.

tw1984 2 years ago

this is cool stuff, I have the feeling that using FPGA to implement a more powerful CPU could get you more fun down the road.

anyway, this is just hardcore engineering, hat off to the guy behind all these.

  • shortrounddev2 2 years ago

    I've worked on similar projects before and people always suggest FPGAs to me as a simpler option, but I feel it misses the point. Doing these kinds of projects is about getting closer to the metal, and not about raw power or simplicity

Evidlo 2 years ago

How about serving the website from the machine you built?

  • samus 2 years ago

    Should definitely be possible with mostly static content and Cloudflare caches in front. I bet there are many personal websites out there served from an old smartphone or from a Raspberry Pi Zero.

    • actionfromafar 2 years ago

      I agree it should be possible, but a Raspberry Pi Zero is a super computer.

  • tw1984 2 years ago

    that would require a lot of extra work -

    * tcpip stack in the OS

    * nic and driver

    * homebrew web server assuming the OS doesn't have the compatible APIs to support those open source ones

    • junon 2 years ago

      If it has SPI support throw in a w3 line nic and use Rust with Smoltcp.

      • nerpderp82 2 years ago

        You could implement a simple http over serial line and then front with nginx. No TCP necessary at all. Or throw an esp32 on it, and use its tcp stack.

      • Someone 2 years ago

        > and use Rust

        The page mentions gcc nor clang, so chances are high the “Full C compiler” is home-grown.

        If so, there probably is work to do to built a Rust compiler for it.

nxobject 2 years ago

Good 'ol interpreted, sequenced microcode :)

allenrb 2 years ago

This is spectacular. Aside from, you know, actually making it work and having a software stack on top of it, it’s also beautiful. The wire wrapping and the chassis/backplane complete with retaining clips, everything.

As a kid, I would see magazine photos of S-100 systems and various minis. What’s been built here would fit right in. Wow!

jmclnx 2 years ago

very nice!