A Calculator (10): It Works!
This has been a long journey. What We Built The earlier posts covered each layer in depth: the CPU, the arithmetic, the scripting interpreter, the hardware. Here is what the final Quartus synthesis...
View ArticleA Calculator (9): Chasing the Last Digit
The calculator described in the previous posts worked. The 2021 implementation ran on real hardware, accepted key presses, computed results, and displayed them. The arithmetic was correct in the sense...
View ArticleA Calculator (8): From Dev Board to a Real Device
In the previous post, I wrote about the microcode and the scripting layer. At that point, the calculator existed mainly in software: as a Qt desktop application running a verilated simulation, or as a...
View ArticleA Calculator (7): Writing Microcode for a CPU You Just Invented
In the previous post, we designed the CPU. We settled on the instruction set, wrote the assembler, verified each opcode, and ended up with a clean, working processor running in silicon (or rather, in...
View ArticleA Calculator (6): Designing the CPU
This is the longest post because it is a central piece of this project, everything revolves around the CPU. Why Not Just Use an Existing CPU? The obvious objection to designing a custom CPU is: why...
View ArticleA Calculator (5): The Hardware
Everything up to this point lived in software. The FPGA code ran in ModelSim and Verilator. The key layout existed as a C# mockup. The arithmetic engine was C++. Perfectly useful, but none of it had a...
View ArticleA Calculator (4): The Framework
For as long as I can remember, I played with LEGOs. What fascinated me the most is that the same handful of brick types could build anything – the trick was not in the bricks but having an imagination...
View ArticleA Calculator (3): Practical Numerical Methods
Post 2 answered the feasibility question: yes, tan, ln, exp, and sqrt can all be computed from add, subtract, and multiply alone, with some tricks. Post 3 is about doing it correctly, to up to 16...
View ArticleA Calculator (2): Pathfinding
Every serious project has a phase that nobody talks or writes about much. It comes before you have a design, before you have an architecture, before you are even sure any of it is possible. You pick a...
View ArticleA Calculator (1): Introduction
The idea for this project came about during a week in February 2021 when the power grid failed here in Austin, Texas. The government’s handling of the situation was, sadly, memorable. With a gas...
View ArticlePorting a Qt Project to WebAssembly: Challenges and Solutions
In this post, I describe porting a small application, a calculator called SpeedCrunch, to WebAssembly and some common issues that need to be addressed. I hope you may find some solutions helpful and...
View ArticleZ80 Explorer v1.06 released
Z80 Explorer is a visual netlist-level simulator for the Zilog Z80 microprocessor. You can read more about it in my main blog article. This release adds some features and improvements I felt were...
View ArticleA Calculator – Completed!
It has been a while since I wrote the last post on this project. In the meantime, I could dedicate all my limited free time to work on the implementation. It took a long time, but I did make...
View ArticleA Calculator (4): The Framework
For as long as I remember, I had played with LEGOs. Those simple blocks would transform into complex objects whose final shapes only existed in the supple thoughts of creative imagination. The kind of...
View ArticleA Calculator (3): Practical Numerical Methods
In the last post, we verified and quantified the precision of the basic four functions (addition, subtraction, multiplication, and division). Now, we can use them as a stepping stone for more complex...
View ArticleA Calculator (2): Basic Four Functions
This is the second article in a series on making our calculator. This article is about prototyping and the verification of fundamental algorithms. We need to investigate and pick algorithms we will...
View ArticleA Calculator
The idea for this project came about during a week of freezing winter arctic events here in Austin, Texas, with a failed power grid (as well as the Texas government), while keeping close to a gas...
View ArticleZ80 Explorer
Z80 Explorer is a Zilog Z80 netlist-level simulator capable of running Z80 machine code and also an educational tool with features that help reverse engineer and understand this chip better. Z80...
View ArticleDevelopment PC Setup
This blog post describes the various tools that I use for both work and hobby projects, on my development PC. Most people already have their own go-to tools installed on each computer they use for...
View ArticleZX Spectrum ROM mods
In this blog, I will show you how to interface an Atari-style joystick to the Altera DE1 FPGA board running a Spectrum implementation, how to change the ROM to enable you to input some game-cheat...
View Article