Added a .typst document for the specification

This commit is contained in:
jan 2024-12-16 14:18:17 +01:00
parent 07106fb832
commit 4e5159ebfa
2 changed files with 44 additions and 0 deletions

3
.gitignore vendored
View File

@ -19,3 +19,6 @@ target/
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
# So we do not commit the compiled specifications for every small change
*.pdf

View File

@ -0,0 +1,41 @@
#set page(
paper:"a4",
background: rotate(24deg,
text(48pt, fill: rgb("FFCBC4"))[
*WORK IN PROGRESS*
]
))
= SVC16: A Simple Virtual Computer
== Motivation and Goals
We want to fully specify a very simple virtual computer that can be emulated.
The goal is to recreate the feeling of writing games for a system with very tight hardware constraints without having to deal with the complicated reality of real retro systems.
It should be simple to understand every instruction, to write machine code that runs on it, and to write a compiler for it.
The instruction set and the design in general are in no way meant to resemble something that would make sense in real hardware.
It is also not intended to be as simple and elegant as it could possibly be. This might make it easier to explain but harder to develop for.
Since learning about assemblers and compilers is the point, we provide no guidelines on how to build the programs.
=== Reproducibility
The biggest secondary goal is to design a system that behaves the same everywhere.
The question of how the emulation is run should never matter for the person writing the program or game.
This means there can be no features that might only available in one implementation.
It also means, that the performance characteristics must be the same.
An emulator can either run the system at the intended speed, or it can not.
== General Principles
== The Simulated System
=== Screen and Colors
=== Input
=== Synchronization
== Instruction Set