Added the introduction
All checks were successful
Build and Publish / build (push) Successful in 54s

This commit is contained in:
Nicola Belluti 2025-01-15 23:51:46 +01:00
parent f9cf2928ed
commit b634de8b1b
3 changed files with 101 additions and 2 deletions

View File

@ -1,6 +1,6 @@
[[main]]
name = "CPU Documentation"
pageRef = "/docs"
pageRef = "/docs/introduction"
weight = 1
[[main]]

View File

@ -23,5 +23,5 @@ layout = "hextra-home"
</div>
<div class="hx-mb-6">
{{< hextra/hero-button text="Read the CPU docs" link="docs" >}}
{{< hextra/hero-button text="Read the CPU docs" link="docs/introduction" >}}
</div>

View File

@ -2,3 +2,102 @@
title = "Introduction"
weight = 100
+++
The *Little Computer* is a family of processors based on the Von Neumann
architecture, created by [Yale N. Patt](https://users.ece.utexas.edu/~patt/)
and [Sanjay J. Patel](https://sjp.ece.illinois.edu/) to teach their students
about computer architecture.
The processors in this family are extremely simple and they all feature a
*very* [RISC](https://en.wikipedia.org/wiki/RISC) instruction set; they all
have a 16-bit address bus and a 16-bit data bus, except for the last CPU in the
family -- the LC-3b -- which has an 8-bit data bus.
The most famous CPU in this family is without a doubt the LC-3, the third
iteration of the architecture: on this processor people made a
[subreddit](https://reddit.com/r/lc3), a [Wikipedia
page](https://en.wikipedia.org/wiki/Little_Computer_3), an [online
emulator](https://wchargin.com/lc3web/) and it's the easiest to find online
using a search engine.
## Why am I doing this?
The goal of this project is to make more people know about this family of CPUs,
which I believe is ideal for teaching computer architecture, operating systems
and programming languages.
Naturally, the focus will be on the last two processors of the series, the LC-3
and LC-3b, as they are the most recent, the most comprehensive, and, in my
opinion, the most interesting.
## Roadmap
{{% steps %}}
### 👷🏻 Writing of the Documentation
The first step is to create a comprehensive documentation with a lot of
sources.
There isn't much information available about these architectures, so it is
necessary to refer to the original books and save what can be found online
using the [WayBack Machine](https://web.archive.org/).
### ◻️ Creation of a Developement Suite
Once the documentation is complete, we can use it to create simple command-line
tools, such as an emulator and an assembler.
### ◻️ Developement of a GUI Learning Environment
After developing the basic developement tools, we can create a graphical tool
that can replace the outdated software created by the original authors.
It would be great to create an environment where users can both write assembly
and execute it, rather than having two separate apps.
### 💪🏻 Physical CPU with an FPGA
Inspired by [Ben Eater's series on the 6502](https://eater.net/6502), once the
GUI development environment is ready, we could take the program and load it
into an EEPROM to be executed by a physical copy of our CPUs!
Also, it would be interesting to create a motherboard with some sort of I/O
interface to enable our computer to communicate with the outside world.
### 💪🏻 Development of an LLVM Backend
Let's access more modern programming languages such as C and Rust!
### 💪🏻 Creation of a UNIX-like Operating System
### 💪🏻 Software Porting
DOOM, MS-BASIC, Tetris... the more, the better!
{{% /steps %}}
## Licenses
This project is entirely open source!
This documentation is distributed under the [Creative Commons
Attribution-NonCommercial-ShareAlike
4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) license and the source
code is distributed under the [GNU Affero General Public License
v3.0](https://choosealicense.com/licenses/agpl-3.0/). Feel free to take my
work, study it, modify it, improve it and redistribute it ;)
If you feel generous, please open a PR on the project's GitHub page so that
everyone can benefit from your contributions.
<br>
{{< hextra/feature-grid cols=2 >}}
{{< hextra/feature-card
title="Little Emulator"
icon="github"
subtitle="Check out the project's code!"
link="https://github.com/little-emulator"
>}}
{{< /hextra/feature-grid >}}