A Full-Stack Web Browser

Interviewing to be a full-stack engineer is hard. It’s a lot harder than applying for a junior dev job where you’re asked to traverse a red-black tree on a whiteboard. For the full-stack job, they just give you a pile of 2N2222 transistors. (The first company wasn’t a great fit, and I eventually found a place that gave me some 2N2907s for the interview.) That said, there’s a certain challenge in seeing how far you can push some doped silicon. Case in point, [Alastair Hewitt]. He’s building a computer to browse the world wide web from the gate level up.

The goal of this project is to browse the web using only TTL logic. This presents problems that aren’t readily apparent at first glance. First up is being able to display text on a screen. The easiest way to do this now is to get a whole bunch of modern memories that are astonishingly fast for a 1970s vintage computer. This allows for VGA output, and yes, we’ve seen plenty of builds that output VGA using some big honkin’ memories. It turns out these RAM and ROM chips are a little better than the specs say they are, and this computer is overclocked from the very beginning.

A bigger problem is how to interface with a network. This is a problem for very old computers, but PPP still exists and if you have the software stack you can read something from a server over a serial connection. [Alistar] actually found the UART frequency was more important than the dot clock frequency of VGA, and the system clock must therefore be built around the serial port, not the display interface. This means the text mode interface is actually 96 columns instead of the usual 80 columns.

It’s very easy to say that you’re building a computer on a bread board. It’s another thing entirely to actually do it. This is actually a surprisingly well-though out sketch of a computer system that will, theoretically, be able to connect to the Internet. Of course, the reality of the situation is that this computer will be connecting over serial to a computer that’s connected to the Internet, but there’s no shame in that. You can check out the progress on the GitHub for this project.

13 thoughts on “A Full-Stack Web Browser

    1. I also sniff a small dig at the scripting kiddies that call themselves “full-stack” developers, but don’t know the basics of computer (like what a transistor is, for example), or think a bitmap has something to do what graphics.
      When people tell me they’re developers these days, I always say “Oh, that interesting! Hardware of software?”

      1. Thats because computing became more about marketing, advertising and making money. We now have a couple of generations of young adults who were told to go into computing because there is money in it and its a great career, they were often told this by people who dont understand anything about computers. Then once in the programs they started to realize that they didnt really like the entire breadth of knowledge that one needs to develop in order to actually write efficient code (my 6800 class was always full of complaints because assembly is so much harder than java, and we wont even get into the digital logic course). The educators, rather than lose all of that tuition money from students dropping out then decided to segregate the branches of computing and not just into hardware vs software but further breaking down software into further chunks and leaving the base knowledge by the wayside. So we are where we are now, with frame works built upon frame works and devs who dont understand the basic concepts of computing.

        Trying to teach everyone to code will never work unless you teach them the basic building blocks that their code is built on. If we cant teach them the basic concepts of computing (digital logic, structures, etc) then we are just making the problem worse, after all in math kids are taught to add before they are taught linear algebra.

        Sorry for the mini rant but yesterday i overheard a couple younger developers complaining about Hexadecimal and wondering why everything cant just be plaintext. They didnt even understand that everything happens on the hardware in binary! they thought that the CPU takes in instructions in text and decimal numbers.

        1. Should you understand that your code is not what gets sent to the cpu? Yes. Should you know some assembly? Ideally.
          The fact of the matter is you don’t have to be Grace Hopper or Donald Knuth in order to write good code. You don’t even have to know assembly.
          This is the reason degree programs are “dumbing down” not just some money grab. Companies don’t care if you can implement a solution in assembly 95% of the time. They just want their app to work on mobile. Writing it in assembly or C/++ is probably slower without any benefit to the product. All it does is cut into the profit margin.

  1. I don’t agree with that final distinction. It is on the Internet, period. It’s got an IP interface, and that’s all you need. Computers “On the Internet” are connected with WiFi, LTE modems, Ethernet to some other device or computer, etc… including serial links. The Internet isn’t a type of physical connection, it’s the ability to send IP packets off to the rest of the network and get responses back.

    If you told me he’s using the serial link to get a terminal running on another computer, that’d be different. Since it’s PPP, and IP over that… it counts.

  2. Ultimately, this is going to have to end with “browsing a 1996 version of the web”. As retrocomputing hobbyists know, the limiting factor in getting old hardware on the internet is now things like SSL, Javascript, and Flash, without which there are very very few sites you can actually visit. Still a great project, though!

  3. Cool project. I have to point out that the Alto (the first bitmapped, GUI, WYSIWYG, Ethernet-connected personal computer) was built all of SSI and MSI TTL chips back in the 1970s. It even had a hard disk and a microcoded cpu. No browser though, but the predecessor to MS Word, Bravo, was developed on it as well as the first FPS maze game. This doesn’t diminish Hewitt’s work in the slightest, but shows what’s possible with simple TTL.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.