Added the introduction
All checks were successful
Build and Publish / build (push) Successful in 54s
All checks were successful
Build and Publish / build (push) Successful in 54s
This commit is contained in:
parent
f9cf2928ed
commit
b634de8b1b
@ -1,6 +1,6 @@
|
|||||||
[[main]]
|
[[main]]
|
||||||
name = "CPU Documentation"
|
name = "CPU Documentation"
|
||||||
pageRef = "/docs"
|
pageRef = "/docs/introduction"
|
||||||
weight = 1
|
weight = 1
|
||||||
|
|
||||||
[[main]]
|
[[main]]
|
||||||
|
@ -23,5 +23,5 @@ layout = "hextra-home"
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="hx-mb-6">
|
<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>
|
</div>
|
||||||
|
@ -2,3 +2,102 @@
|
|||||||
title = "Introduction"
|
title = "Introduction"
|
||||||
weight = 100
|
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 >}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user