Readit News logoReadit News
johnklos · a year ago
Wow. And I thought modern NetBSD on a 15 MHz m68030 with a 16 bit memory bus and 10 megabytes of RAM is slow. This is crazy!

It illustrates a point I've explained to many people over the years: once computers started coming with persistent storage, open address spaces and MMUs towards the late '80s and early '90s, we basically arrived at modern computing. An Amiga 3000 or i80486 computer can run the same things as a modern computer. Sure, we have ways to run things orders of magnitude faster, and sure, we now have things that didn't exist then (like GPUs that can run code), but there's no functional difference between those machines and new ones.

I love that Dmitry shows how loosely "functional" can be defined :)

dmitrygr · a year ago
I don’t know if this was a thing in America, but in USSR in the 70s and 80s it was very popular to play chess-by-correspondence. You would literally snail-mail letters back-and-forth with your move. Games would last months or years. It added an extra challenge to chess because by the time you got a response, you might have forgotten what strategy you had had.

This project is basically Linux-by-correspondence. The challenge is here too. By the time the command produces an output, you might have forgotten why you ran it.

noufalibrahim · a year ago
There was something called Agora (https://en.wikipedia.org/wiki/Agora_(web_browser)) which was sort of an email/http proxy. You could browse the web via. email and set "GET", "POST" etc. commands. It was my first exposure to the web.

It sounds very similar to what you mentioned.

johnklos · a year ago
I installed Windows 95 on an Amiga 3000 with a 25 MHz m68030 via floppy to see if DMF formatted disks would work and to play around. By the time it finished, I had forgotten what I wanted to try out.
unit149 · a year ago
Reorganizing the combined correspondence on an excel spreadsheet through an arbitrary numbering system years later, and experiencing the Spinozan "pang of bad conscience."

Did you write the PIC12F1840 HEX file in 4004 machine code for your PIC-based one-chip sound player?

retrac · a year ago
15 MHz m68030 with a 16 bit memory bus and 10 megabytes of RAM -- A Mac LC II, by any chance? :)

> towards the late '80s and early '90s

By the late 1960s, really. It would probably be possible to port Linux to the IBM Model 67 [1]; might even be easy since GCC can already target the instruction set. The MMU is sufficient. Maybe a tight squeeze with the max of 2 MB of fast core. Would be in a similar ballpark, a bit slower, to that 68030 machine.

Full virtualization, and hardware enforced memory and IO boundaries, were invented early on, too. It took a while for such features to trickle down to mini- and then micro- computers. And then much longer for popular software to take advantage.

[1] https://en.wikipedia.org/wiki/IBM_System/360_Model_67

vincent-manis · a year ago
I have fond memories of the System/360 M67 (and its successors, starting with a System/370 M168) I used from 1970 to the early 1980s. It ran the Michigan Terminal System, and we had all the modern conveniences (terminal operation in the IBM world was klunky, but PDP-10s at the same time did that right). And of course Unix dates from exactly that period.

The fact that Linux runs well on a modern zSeries demonstrates that, even with all the historical baggage this 60+-year-old architecture has, it carries with it many of the architectural innovations that current OSes and languages need.

johnklos · a year ago
Wonderful look in to our history, and you're undoubtedly correct about being able to target that system.

My example was about hardware that was affordable to mere mortals (although it's getting to be more expensive to buy that same hardware now as it was to buy it when it was new), but the idea is the same :)

johnklos · a year ago
Yes, a Macintosh LC II :)
jylam · a year ago
That's basically the concept of Turing Completeness. Any Turing complete system can run anything. It may be very slow, but it will run. ChatGPT could run on a 4004, all you need is time.
pclmulqdq · a year ago
A computer is technically not a Turing machine due to the lack of infinite RAM. It is a finite state machine with an absurdly large state space.
brudgers · a year ago
That's basically the concept of Turing

Tarpit,

where everything is possible but nothing of interest is easy.

https://en.m.wikipedia.org/wiki/Turing_tarpit

byteknight · a year ago
And a gargantuan amount of RAM.
jojobas · a year ago
>all you need it time

Like geological time.

jart · a year ago
Multicore is a pretty big functional difference. Like attaching an automobile to a wheel lets you have three more wheels.
unwiredben · a year ago
At Hackaday Supercon in 2002, the badge for attendees (https://hackaday.com/2022/10/12/the-2022-supercon-badge-is-a...) implemented a fictional 4-bit CPU along with control panel for directly entering instructions and running and stepping through code. I had a huge amount of fun implementing a space shooter video game on it, as the panel included a bit-by-bit view of one of its pages of memory. Comparing its Voya4 architecture with the 4004 was fascinating. Some similar tradeoffs, but the Voya4 has the benefit of 50 years of CPU instruction set exposure.

Alas, dimitygr's method wouldn't work on the badge, as the memory and RAM are all internal to the PIC24 that implements the CPU emulator.

BTW, 4-bit CPUs are still made and used. Many of the mass-produced IR remotes are programmed using a 4-bit MCU. See https://www.emmicroelectronic.com/sites/default/files/produc... for a datasheet.

schubart · a year ago
2022
unwiredben · a year ago
and also its Voja4, not Voya (my mistake in remembering name spellings)
molticrystal · a year ago
I love giving the AVR example when people ask if something can run on an underpowered machine, now I have a new example to link.

Considering the frequencies and wattage I wonder how RF it spits out and what is detectable and decodable on the waterfall of a SDR.

By the way still reading through it, but at the time of this comment I see the word "soubroutine" which is probably a misspelling.

dmitrygr · a year ago
Fixed the typo. Thanks
alnwlsn · a year ago
Wow this was not a cheap project! Thanks Ebay collectors.

Also probably the only time I'd have gone for an LCD over a VFD. If you're running a multi-year long compile, it'll probably be burned in to hell by the end.

larodi · a year ago
Is a project worth receiving a honorary PHD if you ask me. Sadly university staff does not read HN too much.
wolf550e · a year ago
It's not original research. A Master's Thesis at most, or only a Bachelor's Degree Final Project. Regardless, doing such amazing work for a blog (and geek fame) is amazing.
eqvinox · a year ago
oof. amazing.

…you can see in the high PC bits what's currently executing!

P.S.: Still loads the kernel faster than a virtual ISO on a server's shitty IPMI over the internet ;D

dmitrygr · a year ago
While it boots, you can look at LEDs and map them to kernel function easily by running “nm” on vmlinux.

Also, when in user space, you can tell between the main binary (way below 0x01000000) and shared libraries (loaded high near 0x77000000)

abound · a year ago
> Still loads the kernel faster than a virtual ISO on a server's shitty IPMI over the internet

This gave me flashbacks of trying to boot Dell M1000e blade servers from an NFS-hosted ISO running on a Raspberry Pi, which was painfully slow to boot and run.

Max-q · a year ago
This was a very interesting read. I have read a bit about the 4004 before so I knew it was strange. But the level of obscurity is mind-blowing. Now I just got the urge to see how well I would be able to make a CPU with the same transistor count. It's not that much fewer than a 6502. 8 bit would make it so much easier to program.

Thanks for documenting your work so well!

dmitrygr · a year ago
Make it out of transistors and i'll port my MIPS emulator to it :)
immmmmm · a year ago
Have you considered porting to the vacuum tube 1 bit / 1 Hz MC14500 clone?

https://hackaday.com/2021/12/27/single-bit-computer-from-vac...

analog31 · a year ago
All it needs is to run a 4004 emulator. :-)
eulgro · a year ago
The video took 9 days to film. 4 hours per emulated second.

Also I wonder why he's using Windows 95?

dmitrygr · a year ago
Windows 2000

For the video, i wanted a laptop with a real serial port (no usb). This one fit the bill and was $20 on eBay. Windows 2000 is the prettiest windows IMHO, so that’s what I installed for the demo video.

danirod · a year ago
Sorry for the nitpick, but the laptop in the video looks like Windows 2000
phatskat · a year ago
The best Windows imo
np1810 · a year ago
This is so awesome. I hope I can expand my knowledge such that I can understand most of this project, right now it was way past my limited CS proficiency.

Though my highlight (which I could completely comprehend) is "Section 14.b & 14.c - Getting the data..." All it took was 400K files (~275 photos/day after 4 years). We have so much of raw power of processing, storage & network still the most-used (probably) media-sync apps crashed or faced slow sync, AirDrop fails & lack of 'Select-All' UI feature. Crazy times we live/will live in... :)

solstice · a year ago
I wonder if Dmitry considered a syncing tool like MobiusSync or Syncthing to copy the pictures to a PC continuously after they are taken.