NATALIZIOOS Personal è un sistema operativo x86 a 32 bit scritto da zero in C e assembly NASM, senza librerie esterne. Nasce come derivazione della linea Server, da cui eredita il kernel, e se ne distacca nella destinazione d'uso: non una macchina da sala macchine, ma una scrivania.
Stato pre-alpha: gira in emulazione (QEMU) e su hardware compatibile, ma non è destinata a un uso reale. Diverse funzionalità sono incomplete e alcune aree — in particolare l'aggiornamento del kernel — hanno problemi noti documentati più sotto.
int 0x60Le app sono raggruppate in cartelle invece di stare sparse sul desktop. Doppio click sulla cartella apre l'elenco, doppio click sulla voce lancia l'app.
| Cartella | Contenuto |
|---|---|
| Archivio | Disk Info, NATSmart, Disk Usage, Hex View |
| Strumenti | Hardware, MemTest, Monitor, Sensors, Task List, Boot Log |
| Sistema | Sys Info, Power, PCI List, Uptime, About, CPU Info, Display, Utenti, Aspetto, Aggiornamenti, Mappa Disco |
| Personale | Calendario, Cronometro, Convertitore, Note |
| File | File Manager, Calculator, VFS Tree |
Fuori dalle cartelle restano Terminal e Notepad, le due usate più spesso.
Tutte scritte da zero sopra le capacità del kernel. Non sono port
di software esistente: dove un dato non è realmente disponibile
viene dichiarato N/A con il motivo, mai inventato.
| App | Ispirata a | Legge davvero |
|---|---|---|
| Disk Info | lsblk / blkid | driver ATA: settori, capacità |
| NATSmart | smartmontools | attributi S.M.A.R.T. del disco |
| Hardware | inxi / lshw | CPUID, bus PCI, tabelle ACPI |
| MemTest | memtester | gestore memoria fisica |
| Monitor | htop / btop | scheduler e heap |
| Sensors | lm-sensors | MSR temperatura CPU, SMART disco |
| Power | powertop | CPUID leaf 6, MSR, ACPI |
| PCI List | lspci | enumerazione reale del bus |
| Hex View | xxd / GHex | settore MBR in esadecimale |
| Task List | ps / top | lista task dello scheduler |
| Boot Log | journalctl | stato reale di PMM, heap, VFS |
| Uptime | uptime / w | timer PIT |
| VFS Tree | tree | albero del filesystem |
| About | neofetch | versione, RAM, display |
| Utenti | getent passwd | tabella utenti interna |
| Aspetto | Server | Personal |
|---|---|---|
| Avvio | selettore TEXT / GUI, timeout 5 s | solo GUI, diretto |
| Ambienti | shell grafica, shell testuale, Desktop1, Desktop2 | solo Desktop |
| Shell testuale | modalità di lavoro completa | solo fallback d'emergenza |
| Accento | blu HPE RGB(56,139,224) | viola RGB(150,100,220) |
| Sfondo | grigio-blu freddo | viola caldo |
| Cartelle | Dischi, Diagnostica | Archivio, Strumenti |
| Boot screen | HPE ProLiant / iLO | ereditato, da ridefinire |
Il kernel è lo stesso. Le differenze sono di configurazione e presentazione: da qui in avanti le due linee divergeranno anche nelle funzionalità.
Modalita' DOS: esegue programmi .COM.
Il menu di avvio ha ora tre voci — Desktop, Modalita' DOS,
Aggiornamento Software — e la modalita' DOS apre una console a
schermo intero con prompt C:\> e i comandi DIR,
CLS, HELP, EXIT.
Il menu di avvio con la nuova voce.
Sotto c'e' un interprete 8086 scritto da zero: 162 opcode, che
legge le istruzioni una per una. L'alternativa era la modalita'
virtuale 8086, piu' veloce e fedele, ma avrebbe richiesto di
mettere mano a isr.asm, condiviso con tutto il
kernel. Un errore li' rompe l'intero sistema; l'interprete vive
in un file suo e, se sbaglia, sbaglia solo il programma DOS.
Sono coperte le istruzioni comuni (trasferimenti, aritmetica,
logica, stack, salti, chiamate), moltiplicazione e divisione,
scorrimenti, e soprattutto le istruzioni di stringa con
prefisso rep — senza quelle non gira quasi
nessun programma reale. Dei servizi INT 21h ci sono tastiera,
caratteri, stringhe, righe, e apertura, lettura, scrittura e
chiusura di file.
HELLO.COM, preinstallato, eseguito dall'interprete.
Non esegue: file .EXE, grafica, accesso diretto all'hardware, istruzioni 286 e successive. Quando un programma si ferma, l'interprete riporta opcode e indirizzo esatti: serve a sapere quale istruzione aggiungere, invece di indovinare.
Limiti di sicurezza: 64 KB di memoria come un vero .COM, tetto di 20 milioni di istruzioni contro i cicli infiniti, nessun accesso fuori dal proprio segmento.
Cinque app per l'uso quotidiano.
Agenda mostra gli impegni scritti in
/agenda.txt con la data di oggi dal CMOS in cima.
Rubrica fa lo stesso con i contatti.
Timer conta cinque minuti e a zero fa lampeggiare
"TEMPO SCADUTO" in rosso. Spazio dice quanta
memoria resta senza gergo tecnico. Benvenuto e'
una guida rapida per chi apre il sistema la prima volta.
Agenda e Rubrica condividono una sola funzione di lettura: cambia solo il nome del file e il messaggio d'aiuto. La cartella Personale passa da 4 a 9 applicazioni.
Le prime app che non sono diagnostiche.
Le 30 ereditate dalla Server dicono tutte com'è fatta la macchina. Queste servono a farci qualcosa sopra — scelte su un criterio preciso: devono funzionare davvero con quello che il sistema ha (orologio hardware, timer, filesystem), senza fingere una rete che non c'è.
| App | Cosa fa | Su cosa si basa |
|---|---|---|
| Calendario | mese corrente, oggi evidenziato | CMOS RTC + formula di Zeller |
| Cronometro | minuti:secondi.centesimi | timer PIT 100 Hz |
| Convertitore | hex, binario, ottale, KB, °C→°F | calcolo diretto |
| Note | contenuto di /note.txt | lettura VFS |
Raccolte nella nuova cartella
Personale. Due scelte volute: Note non
ha un editor perché ne esiste già uno (Notepad, o nano),
e Convertitore non ha campi editabili — converte un
valore che cambia ogni secondo, così si vede che i calcoli sono
fatti davvero.
Boot animation: 12 stringhe tradotte dal linguaggio da sala macchine a quello desktop — "Loading NATALIZIOOS..." è diventato "Avvio in corso...", i passi di avvio dicono Tastiera, Mouse, Memoria invece dei nomi dei driver.
Un solo ambiente: il Desktop. Prima divergenza funzionale dalla Server, non piu' solo estetica.
Prima versione davvero diversa dalla Server, non solo nell'aspetto.
Correzioni generali recepite dalla linea Server (v0.2.3.7).
init_system_version() scriveva una stringa vuota
quando il settore della versione era vuoto. Ora il valore
viene validato e il watermark ha comunque un fallback sulla
versione di compilazione. Rimessa l'ora di build accanto
alla datadPrima versione con identità propria.
Allineamento alle correzioni di base della linea Server.
ata_write_sector non scriveva davvero: mancavano
il ritardo di 400 ns dopo la selezione del drive e il
controllo del bit di errore — la funzione restituiva
"successo" anche quando fallivaDerivazione da v0.2.3.5.2-DEV della linea Server, scelta perché stabile e verificata. Solo cambio di identità: versione, watermark, diciture a schermo.
Serve una toolchain che produca ELF a 32 bit (Linux o WSL):
sudo apt install build-essential gcc-multilib nasm qemu-system-x86
Poi:
make — compilamake run-gui — avvia in QEMUmake make-patch — genera un pacchetto di aggiornamento di prova
Su Windows con MSYS2 il compilatore di sistema produce eseguibili
PE, non ELF: serve un cross-compiler i686-elf. Il
Makefile lo rileva da solo se presente nel PATH.
Aperta: i punti da decidere sono