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]]
|
||||
name = "CPU Documentation"
|
||||
pageRef = "/docs"
|
||||
pageRef = "/docs/introduction"
|
||||
weight = 1
|
||||
|
||||
[[main]]
|
||||
|
@ -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>
|
||||
|
@ -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 >}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user