home | terminal | snapshot | hardware | microcode engine | operating system | c compiler & assembler | c library | resources | photos & videos | system overview | interrupts & dma | instruction set | system verilog model | kernel overview | file system | system calls | shell | programs & games | how to build a program | github | youtube | contact

Hello and Welcome. This is a website dedicated to a project of mine, Sol-1. Sol-1 is a homebrew CPU and Minicomputer built from 74HC logic.
Thank you very much for taking the time to look at it. This is a hobby project and displayed for educational purposes and/or fun.
I am slowly adding more information and sessions to this website, so not all pages in the links exist yet.

The system is built on multibus wire-wrap cards. There is a unix-like operating system (still under development), an assembler, and a C compiler(still under development but mostly functional).
I started writing a version of the classical Ed text editor. It's in /usr/bin2. At the moment it only has the append and print commands as well as 'w'.
I plan to document this better and I'm sorry for the lack of documentation at the moment. However I believe that if you look at the git repository you will find everything you are looking for. In the meantime I am working to make this site better.

Features

Hardware

- User and Kernel privilege modes, with up to 256 processes running in parallel.
- Paged virtual memory, such that each process can have a total of 64KB RAM for itself.
- Two serial ports (16550), a real time clock(M48T02), 2 parallel ports(8255), a programmable timer(8253), an IDE hard-drive interface(2.5 Inch HDD), and a sound chip(AY-3-8910).
- 8 prioritized external interrupts
- DMA channel
- The sequencer is microcoded, with 15 ROMS operating horizontally
- 8/16-Bit MUL and DIV instructions
- Fast indexed string instructions in the spirit of x86's REP MOVSB, CMPSB, LODSB, STOSB, etc

Register Table

General Purpose Registers

| 16bit | 8bit  | Description 
| ----- | ----- | -----------
| A     | AH/AL | Accumulator 
| B     | BH/BL | Base Register (Secondary Counter Register) 
| C     | CH/CL | Counter Register (Primary Counter) 
| D     | DH/DL | Data Register / Data Pointer 
| G     | GH/GL | General Register (For scratch) 

Special Purpose Registers

| 16bit  |   8bit    | Description 
| ------ | --------- | ----------- 
| PC     |           | Program Counter 
| SP     |           | Stack Pointer 
| SSP    |           | Supervisor Stack Pointer 
| BP     |           | Base Pointer (Used to manage stack frames) 
| SI     |           | Source Index (Source address for string operations) 
| DI     |           | Destination Index (Destination address for string operations) 
| PTB    |           | Page Table Base 
| Status |           | CPU Status 
| Flags  |           | Arithmetic and Logic flags register 
| TDR    | TDRH/TDRL | Temporary Data Register (Internal CPU scratch register) 

Software

* Unix-like operating system
* Assembler
* Full C compiler
* SystemVerilog model
* Emulator
* I plan to port the original Colossal Cave adventure, as well as many other text-adventure games in the near future.

Here is a demonstration session on Sol-1:













Paulo Constantino - CC BY-NC-SA 4.0 DEED Attribution-NonCommercial-ShareAlike 4.0 International