# Orao 2026 v0.1.0

Prvi emulator zamišljenog Orla 832/4. Četiri procesorske jezgre izvršavaju
izvedeni W65C832 skup naredbi, a jezgra C3 rezervirana je za video i zvuk.
Ovo izdanje pokreće izvorni novi ROM, provjerava početni hardver i prikazuje
sistemske informacije. Nema grafičkog radnog stola.

Otvorite `index.html` preko HTTP-a ili izravno kao lokalnu datoteku.
Nema instalacije, CDN-a ili mrežnih ovisnosti. Za javne upute koristite
`upute.html` ili `upute.md`; hosting može odbiti naziv README.md.

## Pokretanje

- Pokretanje počinje automatski. Emulator izvršava nekoliko milijuna virtualnih
  ciklusa pa početna provjera može potrajati nekoliko sekundi, ovisno o uređaju.
- `Pauza` zaustavlja stvarno izvršavanje i virtualno vrijeme; `Nastavi` ga vraća.
- `Ponovno pokreni` ponovno stvara hardver i pokreće isti ROM od reset vektora.
- Na malom ekranu prikaz se vodoravno pomiče unutar vlastitog okvira.
- Ovo izdanje ne učitava kasete preko police. Postojeće kasete i dalje se
  pokreću na izvornom Orlu32, čiji učitavač nije mijenjan.

## Implementirano

- Četiri interpreter-jezgre s 8/16/32-bitnim registrima, bankiranim kodom,
  stogom, decimalnom aritmetikom i odvojenim reset stanjem.
- Native čitanja, zapisi i interni ciklusi daju se raspoređivaču pojedinačno.
  Zajednički memorijski pristupi serijaliziraju se uz čekanje i RMW zaključavanje.
- 8 MiB RAM-a: 4 × 128 KiB privatno i 7,5 MiB zajednički; 4 MiB slikovnog
  RAM-a i 1 MiB ROM-a. Privatne banke 0 i 1 imaju zasebno fizičko preslikavanje.
- CPU C0 provjerava 32-bitni prijenos, predznak, stog i lokalne banke te
  prvi i zadnji 32-bitni uzorak u 120 zajedničkih i 64 slikovne banke.
  To je uzorkovana provjera, ne iscrpan test svakog RAM bajta.
- Izvorni Orao32 ROM provjerava se zbrojem svih 16.384 bajta iz CPU koda.
  Pakiranje dodatno bilježi njegov SHA-256.
- C1 i C2 izvode vlastiti POST i računaju odvojene rezultate prije čekanja.
- C3 briše početnu sliku i crta tekst softverskim 5×7 bitmap fontom u
  640×480 indeksirani prikaz. Svaki vidljivi piksel šalje na jednostavan izlaz.
- Preglednik samo pretvara gotove indekse piksela u boju izlaznog prikazivača.
  Ne crta fontove, prozore ili spriteove i ne proizvodi POST poruke.
- Audio izlaz prima početni stereo uzorak tišine iz C3. Osam PCM i četiri
  sintetska kanala navedeni su kao konfiguracija planiranog softverskog miksera.

## Granice prve verzije

Ovo je razvojni 65C832 model na temelju nacrta WDC-a iz 1990/1991., ne
potvrđena reprodukcija referentnog čipa. Dekodiranje obuhvaća tablicu opkodova,
ali sve naredbe, prekidni rubovi, sve kombinacije širina i njihovi točni
mikrociklusi još nisu iscrpno potvrđeni. Nema tvrdnje o potpunoj usklađenosti
s W65C832. XFE koristi dokumentiranu interpretaciju razmjene E8/C i E16/V
izvan početnog 8-bitnog načina; nedoumice nacrta zabilježene su u hardverskom
dokumentu.

25 MHz je cilj virtualnog modela, ne obećanje te brzine na svakom hostu.
Trenutačno je aktivan 640×480 indeksirani prikaz. Ostali načini do 1024×768
RGB565, softverski spriteovi, mikser, ulazni uređaji i blokovna pohrana
pripadaju sljedećim fazama. 1280×720 je izbačen. Nema skrivenog GPU-a,
zvučnog miksera ili AV DMA-a. Snimanje i vraćanje stanja nije uključeno.

Sačuvana Orao32 NMOS jezgra i ROM dostupni su kao zasebna podloga za provjere
putem `Orao2026.machine.createLegacy()`. Provjereni su stvarni ROM i Riftfarer,
ali to još nije integriran korisnički način rada C1 s kasetnim sučeljem.
Ta podloga podržava 151 službeno NMOS kodiranje i ne emulira svaku fizičku
promjenu sabirnice. Potpuna kompatibilnost ostaje obvezan daljnji zadatak.

## Izvor i obnova

`firmware/build.cjs` bez vanjskih paketa obnavlja `firmware/orao-2026.rom`,
`boot.bin`, čitljivi listing `boot.asm`, manifest i lokalni `firmware.js` omotač:

```text
node firmware/build.cjs
```

`cpu832.js` je jezgra, `machine.js` hardver i raspoređivač, a `app.js` prikaz
gotovih piksela i kontrole. `docs/` sadrži neizmijenjenu arhitekturnu
specifikaciju, tri SVG sheme i bilješku implementacije. `development.json/md`
bilježe ovaj razvoj, a `archive-manifest.json` hash vrijednosti svih datoteka.

Novi kod i font: GPL-3.0-or-later. Tekst licence je u `vendor/orao32/COPYING`.
Sačuvani `vendor/orao32/core.js` zadržava atribuciju Hrvoju Čavraku i OraoJs-u;
izvorni ROM ima zasebno podrijetlo i ne dobiva novu licenciju ovim projektom.
Detalji i hash vrijednosti su u `docs/provenance.json`.

## Google Analytics

Objavne stranice koriste postojeći GA4 tok `G-F8SHB9S9BF`. Glavna stranica,
izravna stranica emulatora i HTML upute bilježe pregled stranice. Događaj
`orao_emulator_activate` sadrži `emulator_id`, `emulator_name`,
`emulator_version` i `activation_source` (`variant_button` ili `direct_page`).
Šalje se nakon stvaranja izvršnog okruženja emulatora, ne nakon završetka POST-a.
Ugrađeni prikaz prepušta praćenje glavnoj stranici pa nema dvostrukog brojanja.
Pauza, reset i ponovno fokusiranje aktivne verzije ne broje novo pokretanje.
Lokalni pregledi ne šalju analitiku. Blokiranje Googleova skripta ne zaustavlja
emulator. [Pravila pregleda stranica](https://developers.google.com/analytics/devguides/collection/ga4/views).

## Izvori

- WDC: [W65C832 nacrt specifikacije](https://downloads.reactivemicro.com/Electronics/CPU/WDC%2065C832%20Datasheet.pdf).
- Michael Kohn: [FPGA implementacija](https://github.com/mikeakohn/w65c832), korištena kao istraživačka usporedba, ne kao zamjena za provjere.
- Joe Davisson: [W65C832 načini i programiranje](https://joedavisson.com/software/w65c832/w65c832.html).
- Hrvoje Čavrak: [OraoJs](https://github.com/hrvach/OraoJs), podrijetlo sačuvanih Orao32 ROM bajtova.
- [Hardverska specifikacija](docs/orao-832-4-hardverska-specifikacija-v0.1.0.pdf) i [tri hardverske sheme](docs/orao-832-4-hardverske-sheme-v0.1.0.pdf).
