Markdown opis · Izvor ROM-a · Izvor kernela i programa · Provjere · Arhivski zapis
# Orao 2026 v0.2.0 — procesi i IPC
Lokalna razvojna verzija od 17. listopada 2026. Sljedeća faza je BOS/SM; ovo izdanje pruža procesni kernel i razvojni upravljački panel.
## Pokretanje
Otvorite index.html izravno ili preko HTTP-a. Nakon stvarnog ROM POST-a C0 ulazi u kernel. C1/C2 izvršavaju nativne procese ili po jednu rezerviranu Orao32 instancu; C3 programski crta i proizvodi zvučne uzorke.
Odaberite **Pokreni editor i pisač**, upišite tekst pa **Pošalji editoru**. Ugrađeni editor je mali nativni demonstracijski program koji prosljeđuje ulaz, nije dovršen tekst editor. On šalje poruku odvojenom nativnom procesu pisača. C0 CPU kopira svaki bajt poruke u primateljev red; pisač čita poruku i šalje bajtove virtualnom izlaznom uređaju. HTML prikazuje taj izlaz i ne preskače IPC put.
**Dodaj računski proces** pokreće stvarni 32-bitni program. U tablici možete promijeniti prioritet, odabrati AUTO/C1/C2, pauzirati ili završiti proces. Zauzeti prioritet vraća pogrešku; za zamjenu odaberite dva procesa i **Zamijeni prioritete**. Možete učitati i vlastiti sirovi nativni .bin program na 1000.
## Procesni ugovor
- Svaki proces ima jednu izvršnu nit i u jednom trenutku radi samo na jednoj jezgri. Multithreading nije implementiran. Kernel smije migrirati AUTO proces; čvrsti afinitet C1/C2 vrijedi do izričite promjene.
- Postoji deset globalno jedinstvenih prioriteta: 1 najviši, 10 najniži. Blokirani i pauzirani procesi zadržavaju razinu. Završetak oslobađa razinu. Novi proces dobiva novi 16-bitni PID, koji se do reseta ne ponavlja.
- C0 ROM provodi weighted round-robin s težinom 11-prioritet. Jedan kredit daje jedan kvant virtualnog timera od 100000 osnovnih koraka, odnosno 1 ms ciljane vremenske baze. Pri jednakim ograničenjima viši prioritet dobiva više vremena, a niži nastavlja napredovati. Zauzete i rezervirane jezgre nisu odredišta dispatcha.
- Timer i nadzorni kontroler zaustavljaju aplikacijsku jezgru na granici instrukcije, izvan RMW zaključavanja. SEI aplikacije ne blokira taj nadzor. To je NOVA logika Orla 2026, nije nedokumentirani privilegirani način WDC procesora. C0 bira sljedeći proces stvarnim CPU kodom; host ne bira pobjednika schedulera.
- Kontekst čuva pune A/X/Y, PC/PBR/DBR, S, D, P i E8/E16. Banke 0/1 mapiraju se na 128 KiB memorije procesa neovisno o jezgri. Stog i izravna stranica ne kopiraju se drugom procesu pri migraciji.
- Deset procesnih blokova zauzima 1,25 MiB iz zajedničkog fizičkog RAM-a, na 080000–1BFFFF. Ukupni RAM ostaje 8 MiB, uz 512 KiB prvotnog privatnog RAM-a jezgri. Aplikacijski pristup drugim fizičkim blokovima ili kontrolnim kernel/AV registrima je zatvoren. Slobodni dio prvotnog zajedničkog prostora od 1C0000 iznosi 6,25 MiB i zasad nema korisnički zajednički-memory API.
## IPC v0.2
Svaki proces ima FIFO od osam kopiranih poruka, do 240 bajtova svaka. Binarni bajtovi 00 i FF dopušteni su; UTF-8 je dogovor demonstracije, ne ograničenje transporta. Omotnica čuva izvorni PID. Slanje je neblokirajuće: puni red vraća FULL. Primanje može blokirati i imati timeout izražen u kvantima virtualnog timera; timeout 0 znači neograničeno čekanje. Proces koji čeka ne troši aplikacijsku jezgru. Nestali/zastarjeli PID vraća NO_PROCESS. Djelomična poruka ne objavljuje se primatelju.
Ovo je novi Orao 2026 ABI, ne povijesni PEL BOS/SM. Budući BOS/SM može ga omotati sistemskim pozivima.
| Korisnički MMIO | Namjena, 8-bitni pristup |
| --- | --- |
| C06100 | Donji bajt vlastitog PID-a |
| C06101 | Rezultat poziva: 0 OK, 1 FULL, 2 NO_PROCESS, 3 INVALID, 4 TIMEOUT, 5 TOO_LONG |
| C06102–03 | PID primatelja, little endian |
| C06104 | Duljina poruke; zapis prazni TX staging |
| C06105 | Zapis sljedećeg TX bajta |
| C06106 | Čitanje sljedećeg RX bajta |
| C06107–08 | Izvorni PID zadnje primljene poruke |
| C06109 | Duljina primljene poruke |
| C0610A | Poziv: 1 SEND, 2 RECEIVE, 3 EXIT, 4 YIELD, 5 INPUT |
| C0610B–0C | Timeout u kvantima, little endian |
| C06120 | Bajt virtualnom pisaču |
Poziv se predaje 8-bitnim zapisom. Nastavak procesa slijedi nakon C0 obrade i povrata rezultata. INPUT čita zasebni ulazni uređaj demonstracije; nije prečac za slanje drugom procesu. Za proizvoljan nativni program razvojni launcher koristi machine.createProcess({name,image,priority,affinity,entry}); upravljanje koristi setPriority, reassignPriorities, setAffinity, pauseProcess i terminateProcess. Ovi JS ulazi predstavljaju razvojne kontrolne uređaje do uvođenja BOS/SM-a.
Kernel kontrolni portovi C06000–C0601F dostupni su samo C0. Izvori firmware/build-kernel.cjs i kernel-machine.js dokumentiraju mehanički FIFO, registar izbora i commit, timer, sigurno zaustavljanje i dispatch. Kopiranje IPC bajtova i odluke o procesu izvodi C0 firmware, a kontroler sprema registre, preslikava fizičku memoriju i održava uređaje. Nema dodatnih aktivnih CPU jezgri po procesu.
## Orao32 i AV
Moguće su konfiguracije 0/1/2 Orao32 instance i 2/1/0 nativnih aplikacijskih jezgri. Instanca je vezana uz svoju jezgru do završetka; njezina pauza ne oslobađa jezgru. Rezervacija koja bi prekršila afinitet ili ostavila postojeće procese bez odredišta odbija se kao zauzeta. Instanca ima vlastiti izvorni ROM, memoriju, tipkovnicu i zvučnik. Izvorni NMOS decoder/core.js i rom.js ostaju byte-identični sačuvanom originalu.
**Pokreni na C1/C2** otvara izvorni monitor; odaberite tipkovnicu i kliknite canvas. C1 je lijevo, C2 desno. C3 čita izvorne bitmap bajtove i stvarnim CPU kodom pretvara bit 0 u lijevi piksel. Prikaz se osvježava redak po redak, nije 60-Hz raster. C3 iz vremenski označenih rubova obaju izvornih zvučnika programski računa 48-kHz stereo PCM. WebAudio samo reproducira već izračunate uzorke i zahtijeva gumb **Uključi zvuk**. Mute i pauza otkazuju zakazane buffere. Gubitak fokusa otpušta tipke. Lokalni reset ili greška gosta ne zaustavljaju C0/C3.
Nativni 8-PCM/4-sintetski mikser, disketni sustav, BOS/SM i kasetni korisnički launcher u novoj verziji nisu dio ovog koraka. Izvorna kasetna polica nastavlja raditi s neizmijenjenim originalnim emulatorom; file:// povlačenje kasetnih kartica ostaje odgođeno prema ranijoj odluci. Snapshot spremanje/učitavanje nije dodano niti povezano u UI.
## Izvor, provjere i ograničenja
Novi kod: GPL-3.0-or-later, uz COPYING i izvorne attribution zapise. Hardverski PDF/SVG u docs/ ostaje sačuvani povijesni prijedlog v0.1.0; aktualna izvedba opisana je ovdje. W65C832 nacrt i interpretacija XFE nisu dokaz autentičnog povijesnog čipa. Potpuna 65C832/NMOS bus/cycle sukladnost nije potvrđena. NMOS instrukcije ovdje imaju izvorne ukupne cikluse na vlastitoj 1-MHz vremenskoj liniji; nisu razložene u byte-bus arbitražu nativnih jezgri. Novim kontrolerom još se ne dokazuju fizički FPGA taktovi ni rokovi stvarnog sklopa.
Obnova bez vanjskih paketa: node firmware/build.cjs. Gradi 1-MiB ROM, kernel i AV kod, tri nativna programa, manifest i JS pratitelje. Provjere u radnom prostoru nose prefiks orao-2026-v02. Ranije verzije, transkripti, kasete i pripremljeni ZIP-ovi ostaju sačuvani. Nije pripremljen novi objavni ZIP ni izvedena udaljena objava.