All checks were successful
Build and Publish / build (push) Successful in 44s
106 lines
3.6 KiB
Markdown
106 lines
3.6 KiB
Markdown
+++
|
|
title = "Introduction"
|
|
weight = 100
|
|
+++
|
|
|
|
The *Little Computer* is a family of *Instruction Set Architecture* (ISA) 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 group 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 latest
|
|
architecture of the series -- the LC-3b -- which has an 8-bit data bus.
|
|
|
|
The most famous ISA of this family is without a doubt the LC-3, the third
|
|
iteration of the architecture: on this specific ISA 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 ISAs,
|
|
which I believe is ideal for learning about computer architecture, operating
|
|
systems and programming languages.
|
|
|
|
Obviously, the focus will be on the last two iteration 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
|
|
essential 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 a basic developement suite, we can create a graphical learning
|
|
environment 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), we could
|
|
take the program and load it into an EEPROM to be executed by a physical
|
|
version of our CPUs, maybe on a breadboard!
|
|
|
|
It would be interesting to create a small custom 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 small 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 >}}
|