bespokeasm
eater-sap-1-improvements
Our great sponsors
bespokeasm | eater-sap-1-improvements | |
---|---|---|
5 | 14 | |
19 | 46 | |
- | - | |
6.2 | 2.7 | |
5 days ago | 7 months ago | |
Python | Assembly | |
GNU General Public License v3.0 only | Creative Commons Zero v1.0 Universal |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
bespokeasm
-
Custom 8-bit van Neumann CPU heavily influenced by Ben Eater's design
Cool. If you want to upgrade from your excel/python assembler, you should be able to create a custom ISA with my assembler, BespokeASM: https://github.com/michaelkamprath/bespokeasm
-
slu4's Minimal CPU Build
Of course, I did what I do and I added support for this computer in my BespokeASM customizable assembler. This allowed me to write some larger projects than slu4's "minimal assembler" easily enabled. And with that, I ported my 32-bit primes calculation code to the slu4 Minimal CPU. What I found fascinating is that this code ran about the same speed (the PUTEY-1 is a small bit slower) in terms of how long it takes to find a prime value as the code runs on my PUTEY-1 breadboard TTL running at about one fourth the clock speed (480 KHz vs 1.8432 MHz). I attribute that to the more sophisticated ALU I built in my TTL CPU that does bit shifting (left and right) and value comparisons directly in hardware. Of course, I understand that the Minimal CPU's whole goal is to be minimal, I just still found this comparison interesting.
- I updated my customizable assembler to generate syntax highlighting extension for Visual Studio Code base on your custom instruction set. It also now support syntax for 5 addressing modes and more. With all the advanced TTL CPUs people are making here, I thought some might find this useful.
-
My updated 16 bit memory + updated control logic + memory map controller + 8 bit instruction register is ready to be integrated into my breadboard CPU.
I took have worked on and developed a compiler that is actually read to encode stack operation including indirect value referencing with an address offset to get the mov a, [sp+2] type instructions. You can check it out here: BespokeASM. I have some more development to do with this assembler, notably around macros, includes, and other assembler directives, but the basics for the various addressing modes are in there and the ability to define your instruction set through configuration.
- I was wanting an assembler I can use with my breadboard CPU, but the only one that allowed custom ISAs is Windows only. So, I created my own assembler with Python for custom ISAs, and included a configuration file for the original instruction set of Ben Easter's SAP-1. Still a bit rough, but usable.
eater-sap-1-improvements
-
Next project for my PUTEY-1 TTL CPU: A speech synthesizer!
When I figure out why the "voice" is unintelligible, I will be certainly posting all the details and making a video as I have done with my prior projects for this computer. Subscribe to my YouTube or follow my GitHub repository to get alerts.
-
It took about a week, but my PUTEY-1 TTL CPU has calculated all the prime numbers to about 1.1 million.
The details of my design evolution from the Eater SAP-1 to what you see here are documented at my GitHub repository. You can also watch video overviews if each improvement project at my YouTube channel, the I haven’t yet made the video for the ALU that’s enabling multiplication and division through bit shifting. That’s only at my GitHub at the moment.
-
My TTL CPU is now operating at 300 KHz clock and can calculate 32 bit prime numbers.
Ha ... yeah, it was overkill, but the 32K was just sitting there unused. If you check out my code for the prime number calculation, you'll see the stack is well used. However, I haven't cracked the 256 byte depth yet.
-
has anyone programmed an EPLD?
I am using the ATF22V10C in my build. Works great. I’ve made some notes on programming them here: https://github.com/michaelkamprath/eater-sap-1-improvements/tree/advanced-alu/advanced-alu/pld-files
- I’ve built out my ALU upgrade for my TTL CPU. I use 74LS382 function generators, 74LS194 bit shifters, and 74LS682 comparators to significantly upgrade what can be computed from the original 74LS283 4-bit adders.
-
8-bit CPU project upgrading
I’ve done a number of upgrades myself. They are documented here: https://github.com/michaelkamprath/eater-sap-1-improvements
-
Stuck with strange voltage behavior in RAM module that goes away when using a multimeter
Here's the write button. https://i.imgur.com/N3WgqR9.jpg I've inverted it from a pull-up switch to GND, to a pull-down switch to VCC, using Michael Kamprath's improvement recommendations found at https://github.com/michaelkamprath/eater-sap-1-improvements/tree/main/improving-reliability-of-ram-module
-
The next iteration of my extend breadboard TTL CPU is working. Time to finish project documentation and create an overview video.
This iteration on the CPU focused on implementing a 8-bit instruction register. However, doing this required me to rethink many parts of the computer, notably the memory map and the control logic. Details on what I accomplished in this project can be found in my GitHub repository: https://github.com/michaelkamprath/eater-sap-1-improvements/tree/main/instruction-register-8-bit
-
My updated 16 bit memory + updated control logic + memory map controller + 8 bit instruction register is ready to be integrated into my breadboard CPU.
If you want to read up on what I am doing here before I create a video on it, I have documented everything here (though there are a few bits I still need to document).
-
The start of my effort to add 16-bit memory addressing to my SAP-1. Built so far at 16-bit program counter, memory address register, and run mode selector. The design now has a proper address bus (purple wires) in addition to the 8-bit data bus.
You can check out the current state of my design on my ram-upgrade branch in my GitHub repository. It's still a work in progress, so don't yet expect the same level of documentation or completeness my other modules have.
What are some alternatives?
customasm - 💻 An assembler for custom, user-defined instruction sets! https://hlorenzi.github.io/customasm/web/
8-bit-computer - Documentation of my 8-bit computer build
bronzebeard - Minimal assembler and ecosystem for bare-metal RISC-V development
kicad_footprints - A collection of all the KiCad footprints on the internet
PeachPy - x86-64 assembler embedded in Python
8bit-cpu - Schematics & code for my 74LS-based 8-bit MK1 CPU
Minimal-UART-CPU-System - Legacy: TTL-only CPU featuring UART I/O, an expansion port, 512KB SSD at up to 10MHz clock speed
skidl - SKiDL is a module that extends Python with the ability to design electronic circuits.
first_nes - Create your own games for the Nintendo Entertainment System! This "starter" game is easily extensible for your own projects. Includes references.
EaterEmulator - Ben Eater's 8-bit breadboard computer emulator in python
alek - Assembly Learning Environment for Kids
Assembler - outdated, do not use