- Quartus design files for the 8-Bit computer
- Software for the Arduino programmer
- Software for the Arduino binary to decimal display
- PC software for controlling the Arduino Programmer(see "AsmIDE" folder for source code, see "AsmIDE Release" for the precompiled app)
- Update: I have ported AsmIDE into a Blazor web app, including a custom compiler I made, which you can access here: AsmIDE + MyLang Compiler
For more information about the project, see my blog posts: 8-Bit Computer In An FPGA
The code and electronics circuitry in this project might not always follow/adhere to all the best engineering practices, design patterns and principles.
Some stuff was just quickly prototyped and put together to get the job done.
For example, the AsmIDE isn't using a responsive layout(as I didn't see the need for it), ...
I have ported AsmIDE into a Blazor web app, including a custom compiler I made, which you can access here: AsmIDE + MyLang Compiler
AST visualization and serial programmer.
8Bit-Computer/
βββ 8 bit computer/ # The computer itself: a Quartus project for a Cyclone IV E FPGA
β βββ 8bitComputer.qpf # Quartus project file, open this one
β βββ 8bitComputer.bdf # Top-level schematic that wires all the parts together
β βββ ALU.bdf, Adder.bdf # 8-bit adder/subtractor
β βββ Register.bdf # 8-bit register
β βββ PC.bdf # 4-bit program counter
β βββ RAM.bdf, RAMCells.bdf # 16 bytes of RAM
β βββ DFF_*, JK_flip_flop* # Flip-flops (schematics and Verilog)
β βββ 8bitComputerRegisterTest.bdf # Schematic for testing a register
β βββ pll.v, pll.qip, ... # Clock PLL, made with Quartus's MegaWizard
β βββ *.bsf # Symbols of the parts, used in the schematics
β βββ 8bitComputer.qsf # Device and pin settings
β βββ output_files/ # Compilation reports and the pin list
β βββ db/, incremental_db/ # Quartus's build database
β
βββ _8BitComputerProgrammer/ # Arduino programmer: gets a program over USB serial, writes it into
β # the computer's RAM and runs, stops, steps and resets the computer
βββ SimpleArduino8BitComputerProgrammer/ # Simpler Arduino programmer: writes a program typed into the sketch
βββ BinaryDisplay/ # Arduino + OLED display: shows the output register in decimal
β
βββ AsmIDE/ # Old Windows app (WPF): assembly editor that sends programs to the
β β # Arduino programmer
β βββ MainWindow.xaml(.cs) # The whole app
β βββ assets/ # Toolbar icons
βββ AsmIDE Release.7z # AsmIDE, compiled and ready to run
β
βββ MyLangCompiler/ # New web app: AsmIDE in the browser, plus the MyLang compiler
β βββ MyLangCompiler/ # The Blazor WebAssembly app, open MyLangCompiler.sln
β β βββ Code/Compiler.cs # The compiler: lexer, parser, AST and code generator
β β βββ Pages/Home.razor # The IDE: editor, compiler output, AST view and programmer
β β βββ Layout/ # Page layout
β β βββ NpmJS/ # Monaco editor setup, bundled with webpack
β β βββ wwwroot/js/ # Web Serial (talks to the Arduino programmer) and AST drawing (Viz.js)
β β βββ wwwroot/Test/ # Example MyLang and assembly programs
β β βββ diagrams/ # Diagrams used in the compiler's README
β β βββ README.md # How the compiler works, in detail
β βββ MyLangCompilerTests/ # Compiler tests (MSTest)
βββ MyLangCompiler_README_embedded.html # The compiler's README as one HTML file, with the images inside
βββ mdToHTML.py # Script that makes that HTML file
β
βββ LICENSE
βββ README.md



