Questo sottosistema crea una immagine ISO x86_64 avviabile in QEMU. L’immagine avvia un kernel bare-metal minimo, inizializza l’output seriale, valida un programma Zlang precompilato in formato ZLB2 v2.5 e rende l’output osservabile sulla console seriale.
Non è ancora un sistema operativo generale: non implementa processi, protezione della memoria, filesystem, driver, rete, multitasking, ABI POSIX, loader ELF o applicazioni arbitrarie. È il nucleo verificabile necessario per costruirli senza confondere demo, runtime ospitato e sistema operativo indipendente.
| Livello | Responsabilità | Stato nel prototipo |
|---|---|---|
| GRUB / ISO | Carica il kernel tramite Multiboot2 | Implementato dal processo di build |
| Boot x86_64 | Passa dalla modalità protetta alla long mode e prepara stack/paginazione | Implementato nel bootstrap assembly |
| Kernel ZDOS | Inizializza seriale COM1, stampa stato ed esegue il runtime | Implementato in C freestanding |
| Runtime Zlang | Valida e interpreta record ZLB2 con controlli bounds-checked | Implementato nel kernel |
| Programma Zlang | Usa emit, let, if, label e wait secondo il compilatore v2.5 |
Esempio verificato |
| Toolchain host | Compila lo script .zlang in bytecode e header C |
Implementata in Python standard library |
Il formato binario è versionato e ogni record ha una lunghezza esplicita.
| Offset/record | Campo | Descrizione |
|---|---|---|
| 0–3 | ZLB2 |
Magic a quattro byte |
| 4 | 0x02 |
Major version |
| 5 | 0x05 |
Minor version |
| record | opcode |
Tipo di istruzione |
| record + 1–2 | u16 little-endian |
Lunghezza del payload |
| record + 3… | payload | Dati dell’istruzione |
| finale | 0xff + lunghezza 0 |
HALT obbligatorio |
| Opcode | Nome | Payload |
|---|---|---|
0x01 |
EMIT |
Testo UTF-8 stampato sulla seriale |
0x02 |
LET |
Espressione assegnata alla virtual RAM; validata e saltata dal bootstrap runtime |
0x03 |
IF |
Condizione; validata e saltata dal bootstrap runtime |
0x04 |
LABEL |
Nome label; validato e saltato dal bootstrap runtime |
0x05 |
WAIT |
Segnale asincrono; validato e saltato dal bootstrap runtime |
0xff |
HALT |
Payload vuoto e fine esatta del buffer |
Il runtime verifica magic, versione, lunghezza di ogni record, opcode riconosciuto, HALT e assenza di trailing bytes. Il bootstrap esegue EMIT; i record v2.5 non ancora eseguiti sono attraversati in sicurezza senza effetti. Un bytecode malformato viene rifiutato, non interpretato parzialmente.
La build è corretta solo se il comando canonico crea un ISO e QEMU restituisce, sul canale seriale:
ZDOS x86_64 bootstrap
Zlang runtime ZLB2 v2.5 ready
ZDOS: native Zlang program executed
ZDOS: Zlang halted cleanly
Il controllo è implementato in tools/verify_qemu.sh ed è eseguito anche dalla GitHub Actions.
L’estensione del formato deve procedere per compatibilità di versione: esecuzione reale di LET, controllo di flusso, funzioni, capability syscall a default-deny, programmi multipli e loader persistente. Qualunque syscall futura dovrà dichiarare soggetto, capability, scope, quota, timeout, limite di risposta, evento di audit, comportamento di fallimento e test negativo.