It has been a while since I wrote the last post about this project. In the meantime, I was able to dedicate all my free time to work on the implementation. As I was making really good progress, the calculator started taking shape. My excitement grew and I just could not stop the work to write about it....continue reading "A Calculator – Completed!"
For as long as I remember, I had played with LEGOs. Those simple blocks would transform into complex objects whose final shape only existed in the supple thoughts of creative imagination. The kind of LEGO blocks we had while growing up were simple: 2x4, 2x2, 1x8. Anything unusual was rare and precious....continue reading "A Calculator (4): The Framework"
In the last post, we have verified and quantified the precision of the basic four functions (addition, subtraction, multiplication, and division), and now we can use them as a steppingstone. We can assume they will be available to us so our experimentation at this stage could simply use built-in C++ functions.
In this article, which is the third in a series, we will continue with the proof-of-concept research....continue reading "A Calculator (3): Practical Numerical Methods"
This is the second article in a series on making our very own calculator....continue reading "A Calculator (2): Basic Four Functions"
The idea for this project came about during a week of freezing winter arctic event here in Austin, Texas, with a failed power grid as well as government, while keeping close to a gas fireplace, the only source of heat and light, for a couple of days. With a weak internet over a phone data line, I could only do some preliminary searches and mainly work out various details on a writing pad, growing a feeling that the project may be personally exciting and practically doable.
I will try to post my progress over the coming weeks....continue reading "A Calculator"
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 pokes, and a few games I eventually completed using this setup.
In the last article, I presented a different way of architecturally modeling a Zilog Z80 processor. It is time to do something really useful with it and what could be better than reliving the past for a moment? Let's recreate an old computer and load in and play some games!
Sinclair ZX Spectrum was my second computer, the first one being ZX81. As I was growing up in Croatia, I had a good friend whose brother, living in Germany, regularly sent him tapes with new games. Through this steady stream of games I've probably seen most of them (thank you, Krešo!) However, although I could, I had never played them through. Instead, I would load in DevPac - a debugger - and disassemble them trying to decipher how they were made and occasionally find some pokes for infinite lives.
This design would not be possible without Ken Shirriff who reverse-engineered some major portions of Z80 from the picture of a die. These are the portions of the A-Z80 design that are based on his work:...continue reading "A Z80 : References"
In the first post, I described the sequencer, a circuit that provided discrete timing signals to space operations apart. In the second post, I mentioned the Timing matrix that was run by these signals and orchestrated the dance of control signals in time.
This article is about making it all alive and kicking within an FPGA solution.
In the last article, I described the sequencer, which is the heart of a CPU, and a few other blocks that perform various tasks. But how is it all orchestrated to perform useful work?
Enter the PLA and the Timing matrix - the mind of a CPU.