Cosmic is a fully simulated computer architecture that provides a full environment to use the Cosmic Processor, specialized devices, ROM, RAM, graphics, and more. The cosmic processor can also be used on a Raspberry Pi to interface with real-world devices. The cosmic system is all entirely accessible in a rich GUI interface that allows for full customization of the system environment and code execution.*
Cosmic is designed to act similar to a real, physical chip but take advantage of it being software-based and leaving some of the nuances of the physical world behind.*
With an instruction set that makes sense (and is fun), and simple memory-mapped I/O, Cosmic is an excellent "chip" to write for, using the cosmic assembler.*
* in deveopment
- A great educational tool to teach how processors work and assembly language
- A very interesting project
- A Proof of Concept
- Kinda cool
- Fun to play with
Cosmic is the Senior Project for Clay Buxton (@clbx) and Kevin Carman (@carmank) at Elizabethtown College. All academically required reports and documentation is in the /doc
folder.
Special thanks to @Gwarks, who did a lot of base work on the graphics.
- Cosmic Processor Specification. This has information about how the processor works, the instruction set, and other general information
- Cosmic Assembler Specification. This has information about how to write assembly programs for Cosmic.
- Cosmic System Specifications This has information about other parts of the Cosmic system work (Video, Audio, etc.)
Be sure to clone recursively, Cosmic uses git submodules
git clone --recursive https://github.com/clbx/Cosmic
If you have already cloned:
git submodule init
git submodule update
Install SDL2
using your distributions package manager
make
Install SDL2 using brew. Get brew here if you don't already have it.
brew install sdl2
make
A pre-compiled binary can be downloaded from the release page. You will still need to install MinGW and SDL2 Be sure to add both MinGW and SDL2.dll to your path
Compilation Instructions:
Get Chocolatey if you don't have it already, it helps for installing tools
Install MinGW choco install mingw
Install make choco install make
Download SDL2 Development Library
Untar SDL to the MinGW install directory
make
Make sure any missing .dll's are in your path
The assembler is written in Python, so if you plan on assembling anything for Cosmic, Python 3 is required
/lib
contains some included software:
-
ImGui is a GUI library used for the interface, along with a slightly modified memory editor addon. This is under the MIT License and the license file is included accordingly
-
ImTui A library that takes ImGui and puts it into a terminal.
-
gl3w A OpenGL core loader. This is under the unlicense.
-
catch2 is used for testing. This is under the BSL Software License
SDL2 is also required to run Cosmic.
Cosmic is under the MIT License, feel free to use any part of it, but if you do please include the license file and a link to this repository.