Dark mode for web, documentation updates

This commit is contained in:
zongor 2025-10-25 12:57:14 -07:00
parent 421cceba23
commit de9ab028b5
4 changed files with 157 additions and 10 deletions

View File

@ -25,7 +25,7 @@ It runs on the =Reality Engine=, a VM written in freestanding C89, has a CISC li
* Philosophy
Undâr it conforms to permacomputing principles.
Undâr conforms to permacomputing principles.
"permacomputing encourages the maximization of hardware lifespan, minimization of energy usage and focuses on the use of already available computational resources.
it values maintenance and refactoring of systems to keep them efficient, instead of planned obsolescence, permacomputing practices planned longevity.
@ -34,7 +34,7 @@ it is about using computation only when it has a strengthening effect on ecosyst
Undâr is designed to ensure that programs created today will remain executable for a very long time, even through technological collapse.
This is achieved through:
- A standardized bytecode format that maps 1:1 to human-readable assembly (Sċieppan)
- A standardized bytecode format that maps 1:1 to human-readable assembly
- A VM specification that can be implemented easily
- Hardware abstractions for the VM implementation
- ROM files that contain all necessary information for execution
@ -125,8 +125,8 @@ values passed to functions must be explicitly returned to propagate. heap values
**Core Types**
| Type | Description |
|------+-------------------------------------------|
| Type | Description |
|--------+-------------------------------------------|
| =int= | 32-bit signed integer |
| =nat= | 32-bit natural number |
| =real= | Q16.16 fixed-point real number |
@ -141,7 +141,7 @@ primitive types like int, nat, real, etc. will always be safe to change in child
* Roadmap
[[./ROADMAP.org][Coroutines, Compiler, Memory Refactor, Plex, Immidate mode GUI, Constructive solid geometry, tunnels]]
[[./ROADMAP.org][Compiler, Plex, Immidate mode GUI, Constructive solid geometry, Tunnels, Actor model]]
* License

View File

@ -92,7 +92,7 @@ void mainloop() {
// Run VM for a fixed number of cycles or a time slice
int cycles_this_frame = 0;
int max_cycles_per_frame = 1000; // Adjust this value
int max_cycles_per_frame = 2000; // Adjust this value
while (cycles_this_frame < max_cycles_per_frame) {
if (!step_vm(&vm)) {
emscripten_cancel_main_loop();
@ -180,9 +180,9 @@ int main(int argc, char **argv) {
mouse_data.size = 16;
// Register devices
vm_register_device(&vm, "/dev/screen/0", "screen", &screen_data,
vm_register_device(&vm, "/dev/screen/0", "screen", &screen_data,
&screen_ops, 16 + screen_data.buffer_size);
vm_register_device(&vm, "/dev/mouse/0", "mouse", &mouse_data, &mouse_ops,
vm_register_device(&vm, "/dev/mouse/0", "mouse", &mouse_data, &mouse_ops,
mouse_data.size);
vm_register_device(&vm, "/dev/term/0", "terminal", &console_data,
&console_device_ops, 4);

View File

@ -44,6 +44,153 @@
to {transform: rotate(360deg);}
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
line-height: 1.6;
color: #ddd;
background: black;
padding: 0;
margin: 0;
}
main {
max-width: 700px;
margin: 0 auto;
padding: 1.5rem;
}
header {
background: #111;
padding: 1rem 1.5rem;
border-bottom: 1px solid #222;
text-align: center;
}
header h1 {
font-size: 1.5rem;
font-weight: 600;
color: #ddd;
}
nav a {
color: #ddd;
padding: 12px 15px;
text-decoration: none;
text-align: center;
cursor: pointer;
transition: all 0.3s ease;
flex-grow: 1;
}
nav a:hover {
background-color: #1b1b1b;
}
a {
color: #ddd;
}
textarea {
background: #111;
padding: 1rem 1.5rem;
border-top: 1px solid #222;
text-align: center;
margin-top: 2rem;
font-size: 0.9rem;
color: #ddd;
}
p {
margin-bottom: 1.25rem;
}
code {
font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
background-color: #1a1a1a;
padding: 0.2em 0.4em;
border-radius: 3px;
font-size: 0.9em;
}
pre {
background: #262620;
color: #f8f8f2;
padding: 1rem;
border-radius: 5px;
overflow-x: auto;
margin: 1.5rem 0;
font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
font-size: 0.95rem;
line-height: 1.5;
}
pre code {
background: transparent;
padding: 0;
font-size: 1em;
color: #f8f8f2;
}
@media (min-width: 768px) {
main {
padding: 2rem;
}
header h1 {
font-size: 2rem;
}
}
@media (prefers-color-scheme: light) {
body {
background-color: white;
color: black;
}
header {
background: #ddd;
color: black;
}
a {
color: black;
}
nav a {
color: black;
}
nav a:hover {
background-color: #eee;
color: black;
}
main {
background-color: white;
}
pre {
background-color: #f5f5f5;
border: 1px solid #ddd;
}
pre code {
color: #333;
}
textarea {
background: #ddd;
}
}
</style>
</head>
<body>

View File

@ -4,7 +4,7 @@
; use load immediate because it is a pointer to a string, not a value
(load-immediate $0 &screen-namespace)
(load-immediate $11 0)
(syscall OPEN $18 $0 $11) ; open(out Plex screen, in namespace, in flags)
(syscall OPEN $18 $0 $11) ; Screen screen = open(namespace, flags)
(load-offset-32 $0 $18 4) ; load handle
(load-offset-32 $20 $18 8) ; load width
@ -14,7 +14,7 @@
; open mouse
(load-immediate $16 &mouse-namespace)
(syscall OPEN $15 $16 $11) ; open(out Plex mouse, in namespace, in flags)
(syscall OPEN $15 $16 $11) ; Mouse mouse = open(namespace, flags)
(load-offset-32 $16 $15 4) ; load handle