From b634de8b1be25933459225d63fee6bfbba817d05 Mon Sep 17 00:00:00 2001 From: Nicola Belluti Date: Wed, 15 Jan 2025 23:51:46 +0100 Subject: [PATCH] Added the introduction --- config/_default/menus.toml | 2 +- content/_index.md | 2 +- content/docs/introduction.md | 99 ++++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+), 2 deletions(-) diff --git a/config/_default/menus.toml b/config/_default/menus.toml index f98b6ff..802d799 100644 --- a/config/_default/menus.toml +++ b/config/_default/menus.toml @@ -1,6 +1,6 @@ [[main]] name = "CPU Documentation" -pageRef = "/docs" +pageRef = "/docs/introduction" weight = 1 [[main]] diff --git a/content/_index.md b/content/_index.md index cef4190..c1e7726 100644 --- a/content/_index.md +++ b/content/_index.md @@ -23,5 +23,5 @@ layout = "hextra-home"
- {{< hextra/hero-button text="Read the CPU docs" link="docs" >}} + {{< hextra/hero-button text="Read the CPU docs" link="docs/introduction" >}}
diff --git a/content/docs/introduction.md b/content/docs/introduction.md index 8b14986..51ffebf 100644 --- a/content/docs/introduction.md +++ b/content/docs/introduction.md @@ -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. + +
+ +{{< 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 >}}