# inkboxsoftware/excelcpu

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/inkboxsoftware-excelcpu).**

4,741 stars · 411 forks · Python · CC0-1.0

## Links

- GitHub: https://github.com/InkboxSoftware/excelCPU
- awesome-repositories: https://awesome-repositories.com/repository/inkboxsoftware-excelcpu.md

## Description

excelCPU is a spreadsheet-based computer emulator that simulates a 16-bit central processing unit. It functions as an educational CPU model where the system state, registers, and random access memory are managed within a grid of spreadsheet cells.

The project includes an assembly compiler that converts custom assembly source code into a format compatible with spreadsheet cells for read-only memory storage. It allows for both automatic program execution and manual operation to override specific instructions.

The simulation covers core hardware architecture concepts, including logic gate prototyping, instruction fetching, and memory management. This environment enables the visualization of interactions between registers and system memory through formula-driven logic.

## Tags

### Education & Learning Resources

- [Computer Architecture](https://awesome-repositories.com/f/education-learning-resources/computer-architecture.md) — Provides a visual environment for learning hardware components and their interactions within a CPU.

### Part of an Awesome List

- [Assemblers](https://awesome-repositories.com/f/awesome-lists/devtools/assemblers.md) — Provides a tool that translates custom assembly source code into a spreadsheet-compatible ROM format.

### Data & Databases

- [Cell-Based State Storage](https://awesome-repositories.com/f/data-databases/json-document-stores/json-object-persistence/spreadsheet-state-models/cell-based-state-storage.md) — Uses cell values as the primary memory and register storage to maintain the machine state.

### Hardware & IoT

- [CPU Architectural Simulators](https://awesome-repositories.com/f/hardware-iot/cpu-architectural-simulators.md) — Simulates a 16-bit CPU architecture for the purpose of architectural exploration and functional verification. ([source](https://github.com/inkboxsoftware/excelcpu#readme))
- [Spreadsheet-Based CPU Simulators](https://awesome-repositories.com/f/hardware-iot/cpu-architectural-simulators/spreadsheet-based-cpu-simulators.md) — Implements a functional 16-bit processor within a spreadsheet to demonstrate computer hardware logic.
- [Formula-Based](https://awesome-repositories.com/f/hardware-iot/fpga-hardware-design/processor-prototypes/formula-based.md) — Builds a virtual machine environment using spreadsheet formulas to test processor instructions.
- [Spreadsheet Coordinate Mapping](https://awesome-repositories.com/f/hardware-iot/non-volatile-memory-accessors/memory-address-mapping/spreadsheet-coordinate-mapping.md) — Simulates RAM by mapping memory address indices to specific spreadsheet cell coordinates.

### Operating Systems & Systems Programming

- [CPU Architectures](https://awesome-repositories.com/f/operating-systems-systems-programming/cpu-architectures.md) — Implements a simplified hardware architecture to demonstrate the fundamentals of machine cycles.
- [Spreadsheet-Based Emulators](https://awesome-repositories.com/f/operating-systems-systems-programming/spreadsheet-based-emulators.md) — Emulates a complete computer architecture where system state and RAM are managed within a grid of cells.
- [Instruction-Level Execution Controls](https://awesome-repositories.com/f/operating-systems-systems-programming/computer-architecture/instruction-execution-models/instruction-level-emulators/execution-control-simulations/instruction-level-execution-controls.md) — Provides a toggle between automatic execution and manual operation to override specific instructions. ([source](https://github.com/inkboxsoftware/excelcpu#readme))
- [Emulator Execution Controls](https://awesome-repositories.com/f/operating-systems-systems-programming/emulator-execution-controls.md) — Allows users to pause automatic recalculation to manually step through individual CPU instructions.
- [Instruction Fetch Units](https://awesome-repositories.com/f/operating-systems-systems-programming/instruction-fetch-units.md) — Implements the mechanism for retrieving the next operational code based on the program counter.

### Programming Languages & Runtimes

- [Custom Assembly Programming](https://awesome-repositories.com/f/programming-languages-runtimes/custom-assembly-programming.md) — Supports writing low-level assembly code to be executed by the simulated processor.

### Scientific & Mathematical Computing

- [Logic Gate Simulations](https://awesome-repositories.com/f/scientific-mathematical-computing/formula-evaluators/spreadsheet-formula-engines/logic-gate-simulations.md) — Implements CPU operations and arithmetic logic units using nested spreadsheet formulas.
