# Orao 2026 v0.10.0 · Optimizirani rasterizer C3 / JS

Ova izvedba nastavlja v0.9. C0 vodi sustav i šalje zaštićene transakcije; C3 zadržava scenu i izvršava sve grafičke CPU instrukcije. Procesi ostaju na C1/C2, bez multithreadinga. Nema promjene BOS 60–66, memorijske zaštite ili protokola poruka.

## Profil i implementacija

Uzorci C3 programskog brojila nakon svakih 4096 emulatorskih događaja upućuju na petlje ispune, usporedbe VRAM-a i rasterizacije teksta. Profil je orijentacijski (nije precizno mjerenje svake funkcije), dok završni benchmark bilježi stvarne CPU i sabirničke brojače. Izvor alata ostaje izvan weba u orao-tests/profile-orao-v09.cjs.

1. **Blokovske ispune:** zajednička nativna rutina drži ponovljenu boju u akumulatoru i upisuje 16 piksela po prolazu. Završetak od 4 ili 1–3 piksela čuva granice izrezivanja. Nema ponovnog računanja granice i učitavanja boje za svaku riječ.
2. **Znakovi:** 64-bajtna ROM tablica pretvara četiri bita glifa u četverobajtnu masku. C3 računa novu riječ kao (stara & ~maska) | (boja & maska), koristeći obične 32-bitne instrukcije. Prazne polovice glifa preskaču se; djelomično izrezani rubovi ostaju na sigurnoj bajtnoj putanji. Sačuvan je font Orao UI 16 i hrvatski znakovi.
3. **Prezentacija:** XOR završne riječi i VRAM-a odmah otkriva jednake skupine. Ako u XOR-u nema nultog bajta, sva četiri piksela su različita i mogu se predati zajedno. Mješovite skupine koriste bajtni put. Detektor (x-0x01010101)&~x&0x80808080 služi samo kao konzervativan test postoji li nulti bajt; ne pokušava označiti položaj svake nule.

Sve operacije i dalje su stvarne instrukcije C3; svaki bajt prolazi postojeću emuliranu sabirnicu i postojeće video priključke. 32-bitni upis nije atomaran. Izlaz prima samo promijenjene piksele. CPU interpreter, takt, raspoređivač, font, ulazni uređaji i korisnički ABI ostaju kao u v0.9. Firmware se gradi bez vanjskih ovisnosti: node firmware/build.cjs.

## Usporedno mjerenje

Tri nova pokusa svake verzije u zasebnim Node/V8 procesima, uz naizmjeničan redoslijed verzija i bez istodobnih emulator testova. Prikazani su medijani u sekundama. Pokretanje uključuje POST; kasnije radnje nasljeđuju zagrijavanje JIT-a. Pokazivač se prije tipkanja u obje izvedbe postavlja na (0,0), izvan vremena zadatka. Jednaki su svi ulazi i pet završnih SHA-256 slika. Interakcije imaju jednak broj upisanih piksela; pri pokretanju nova oznaka V0.10 ima jedan znak više od V0.9, odnosno 64 dodatna upisa u ranijem tekstualnom boot prikazu. Različiti su ciklusi i promet jer se nativni algoritam promijenio.

| Zadatak | JS v0.9 (s) | JS v0.10 (s) | Stvarno ubrzanje | Emulirano ubrzanje |
| --- | ---: | ---: | ---: | ---: |
| Pokretanje i prvi prikaz | 27.861 | 18.356 | 1.52× | 1.51× |
| Unos 11 znakova | 9.351 | 6.271 | 1.49× | 1.50× |
| 10 pomaka pokazivača | 0.726 | 0.716 | 1.01× | 1.02× |
| Pomak prozora | 20.871 | 10.962 | 1.90× | 1.89× |
| Otvaranje i zatvaranje izbornika | 5.409 | 3.058 | 1.77× | 1.77× |

Puni rezultati i SHA-256 testiranih runtime datoteka nalaze se u [benchmark.json](../benchmark.json). Mjerenje ne uključuje Wasm, DOM, reprodukciju zvuka, kompilaciju ili ograničenje stvarnog vremena. Manje od 1× znači usporenje. Rezultati su ograničeni na ova opterećenja i jedno računalo; nisu jamstvo univerzalnog ubrzanja browsera ili Orao32 igara.

## Provjere i granice

Zadržano je 11 nativnih provjera, 3 provjere maksimalnog broja objekata (402 primitive), te 10 provjera u Edgeu. Dodatna 64 neovisna nativna slučaja uspoređuju svaki piksel i točan broj izlaznih upisa: rasponi širine 1–79 piksela, sve četiri orijentacije rubova glifa, hrvatski znakovi, ikone, nulte boje, miješani jednaki/promijenjeni bajtovi i proizvoljna pozadina. Detalji su u [verification.json](../verification.json).

Politika, WAIT s rokovima, IPC, migracija, vlasništvo prozora i zaštita od korisničkog koda zadržani su iz [ugovora v0.9](gui-v0.9.md). C0 i dalje čuva ograničeno proizvođačko zrcalo; promjena sadržaja može ponovno sastaviti cijelu C3 scenu. Nema novog javnog fence ABI-ja. Ikone i prikaz Orao32 ostaju na svojim ranijim raster putanjama. Ovo nisu puni X11 ili potvrda potpune W65C832 sukladnosti.

Bilješke i pregled ispisa su RAM alati; nije dodan diskovni editor. Disketa je 140 KiB; HDD i dalje koristi postojeće volumene. Stanje diskova treba preuzeti kao .img prije zatvaranja stranice. Svaka Orao32 instanca rezervira svoju cijelu C1/C2 jezgru; C0/C3 ostaju sustavu.

Wasm prototip v0.1 uz v0.8 nije izmijenjen i ne pokreće ovaj firmware. Sve prethodne verzije ostaju sačuvane. Ovo je lokalna razvojna verzija, bez nove publikacijske ZIP arhive ili udaljenog postavljanja.
