mirror of
https://github.com/JanNeuendorf/SVC16.git
synced 2025-06-04 18:45:27 +00:00
42 lines
1.5 KiB
Plaintext
42 lines
1.5 KiB
Plaintext
#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
|
|
|
|
|
|
|