# Orao 2026 v0.6 — programi s diskete i HDD-a

Ova faza dodaje nativno stvaranje procesa kroz C0 kernel. VDOS=IDOS ostaje prihvaćena projektna pretpostavka. Naredba RUN, BOS ABI i upravljački registri u nastavku novi su Orao 2026 dogovori, bez tvrdnje o izvornom PEL kodu ili binarnoj kompatibilnosti IDOS-a.

## Pokretanje

1. Pokrenite VDOS, odaberite disketu ili HDD i volumen. Novi volumen inicijalizirajte s `INIT DA`.
2. Pritisnite **Umetni primjer POZDRAV**, zatim izvršite `BSAVE POZDRAV`.
3. Izvršite `RUN POZDRAV`. Nova nativna instanca ispisuje pozdrav i završava; ljuska ostaje dostupna i ispisuje novi PID heksadecimalno.
4. Za druge programe umetnite njihov nativni `.bin`, postavite ulaznu adresu i spremite ih s BSAVE. `RUN IME` svaki put ponovno čita datoteku s odabranog medija. Gumb **Pokreni nativni program** nakon BLOAD također šalje RUN; koristi medij i ime prethodno pročitane datoteke.

Kontrole **Pokreni na** i **Prioritet novog procesa** vrijede i za upisanu naredbu RUN. AUTO prioritet bira prvu slobodnu razinu; 1 je najviši, 10 najniži. Eksplicitno zauzeta razina odbija se. AUTO jezgra koristi postojeći scheduler; C1/C2 određuje afinitet. Jezgra rezervirana za Orao32 nije dostupna. Poslije pokretanja postojeće procesne kontrole omogućuju promjenu prioriteta, dodjele, pauzu i završetak.

Podržane su samo sirove nativne B datoteke, od 1 do 16384 bajta, s ulaznom adresom iz DOS zaglavlja; adresa plus duljina mora biti najviše C000. Nema relokacije, .CMD modula, automatske provjere sadržaja izvršne datoteke ili pozivanja BASIC-a. Autor programa odgovoran je za kod, širine registara i smještaj stoga. Proizvoljan tekst ili Orao32 program nije nativni izvršni program.

## Put kroz CPU

Nativna ljuska tumači RUN i poziva BOS na F40000. BOS CPU kod čita VTOC/katalog/sektore, učitava sadržaj u procesni 4000–7FFF i oslobađa diskovni lease prije zahtjeva za novi proces. C0 ROM provjerava veličinu, adresu, afinitet, slobodne prioritete i procesno mjesto, pa rezervira novi kontekst. Svaki bajt prenosi instrukcijama `LDA [src],Y` i `STA [dst],Y` kroz normalnu sabirnicu. Tek nakon cijelog prijenosa novi proces postaje raspoloživ scheduleru.

Upravljački uređaj daje privilegirane registre rezervacije konteksta i njegovu početnu praznu RAM mapu, kao dosadašnje stvaranje procesa kroz razvojni panel. Ne tumači naredbe, ne čita datotečni sustav i ne kopira sliku programa. Početno brisanje novog konteksta i ugradnja registara ostaju model upravljačkog hardvera, a ne tvrdnja da je ostvarena potpuna fizička zaštitna jedinica W65C832.

Nedovršen proces zauzima svoj slot i prioritet, ali nema javni PID, ne prima IPC i ne može se izvršavati. Prekid roditelja tijekom kopiranja označava rezervaciju za odbacivanje; slot djeteta ostaje zauzet do CPU dovršetka kopiranja i čišćenja. Pauziranje roditelja ostavlja ga pauziranim nakon dovršetka sistemskog poziva. Reset prekida kopiranje i odbacuje procese, uz očuvanje umetnutih medija. Objavljen proces samostalan je i nastavlja rad ako njegova ljuska naknadno završi. Nema nasljeđivanja niti, dijeljenja prioriteta ili višestrukog izvođenja jednog procesa.

C0 tijekom ograničenog kopiranja ne obrađuje drugi sistemski zahtjev. C3 nastavlja svoj CPU AV kod; postojeći aplikacijski procesi koriste postojeće kvante. Ne tvrde se rokovi fizičkog sklopa ili neprekinuta latencija schedulera pri učitavanju.

## Novi BOS pozivi

Zadržan je `JSL F40000`, nativni profil E8=1/E16=0, čuvanje P/DBR/DP/X/Y/stoga/povratne banke. A je radni registar; rezultat je u 0303. Usluge i datotečni raspored iz [v0.5](bos-vdos-v0.5.md) ostaju, uz sljedeće dodatke:

| A | Usluga |
| --- | --- |
| 15 | Učitaj B datoteku prema uređaju, volumenu i imenu, zatim stvori novi nativni proces |
| 40 | Stvori proces iz već pripremljenih bajtova na 4000, bez pristupa disku |

| RAM | Namjena |
| --- | --- |
| 0310–0313 | Duljina i ulazna adresa, po 16 bitova little-endian |
| 031A | Afinitet: 0 AUTO, 1 C1, 2 C2 |
| 031B | Prioritet: 0 AUTO, ili slobodna razina 1–10 |
| 031C–031D | Novi PID, little-endian; nula pri pogrešci |
| 0350–0353 | Ulazni uređaj: duljina i adresa za sljedeći BSAVE ljuske |
| 010000–013FFF | Ulazni uređaj: sadržaj za BSAVE, odvojen od radnog 4000–7FFF |

Nova odvojena ulazna zona sprječava da slanje sljedeće naredbe prepiše prethodni BLOAD. Samo CPU ljuska prenosi tu zonu u radni buffer pri BSAVE. Izravni BOS BSAVE poziv i dalje koristi 4000 i 0310–0313. 0340/0341 zadržavaju rezultat dovršene naredbe, kao prije.

Novi BOS rezultati: 12 nema procesnog mjesta/slobodnog prioriteta/PID-a; 13 jezgra nije dostupna; 14 prazna/prevelika slika ili adresa izvan granica; 15 prekinuto pokretanje. Neispravan afinitet ili prioritet izvan raspona daje 1. Nedostajuća datoteka i DOS pogreške zadržavaju prijašnje kodove. Privatni kernel rezultati za SPAWN su zasebni: 0 OK, 3 parametar, 6 resurs, 7 jezgra, 8 slika.

## Upravljački registri

Zahtjev 6 na korisničkom C0610A blokira pozivatelja radi SPAWN-a. C06130–35 primaju duljinu low/high, ulaz low/high, afinitet i prioritet; C06138/39 vraćaju PID. C0 jedini pristupa C060xx: 30–35 čita parametre; 3A/3B određuje slot i prioritet; pisanje 1 na 3E rezervira kontekst, čitanje 3E daje status; 40–43 i 44–47 daju fizičke adrese izvora i odredišta; pisanje 1 na 3F završava rezervaciju. Kopiranje obavlja sam C0 kroz obične RAM adrese. To nisu povijesni WDC/PEL registri.

## Zadržane granice

Disketa ima 140 KiB. HDD ostaje 20 MiB sa 146 privremenih volumena po 140 KiB i završnih 40960 neiskorištenih bajtova; konačni raspored nije uveden. Nema punog IDOS-a, DOS boota, novog BASIC-a, multithreadinga, DMA, GPU-a ili CPU snapshotova. Nema dnevnika ni atomarnog zapisa cijele datoteke. Reset zadržava medije; ponovno učitavanje/zatvaranje stranice ne zadržava izmjene. Preuzmite .img prije zatvaranja. Ranije verzije i njihove razvojne/objavne bilješke ostaju očuvane.

## Odvojeni izlazi i hitne pogreške

C06311 postavlja ulogu vlastitog izlaza: 1 sistemski zapis, 0 programski. Ljuska to postavlja CPU instrukcijom prije bannera. C0 objava RUN djeteta odabire njegov terminal. Ostali procesi i sistem nastavljaju pisati u svoje zasebne zapise, bez promjene odabranog programa. Izbor terminala ne mijenja scheduler ili prioritete; završetak ne vraća automatski sistemski prikaz preko sadržaja programa.

Pisanjem 1 na C06312 proces započinje hitnu poruku, a pisanjem 0 dovršava je. Native VDOS formatter šalje novi red, ERR i kod, pa novi red. Poruka ide odmah ispred običnih znakova koji čekaju u FIFO-u, na granici dovršenog znaka; njezini znakovi ostaju zajedno. Potom se običan ispis nastavlja. Ne čeka se kraj ili gašenje programa. Svaka poruka počinje i završava novim redom. Detektirani STP ili greška CPU izvođenja prijavljuju se istim hitnim putem dok proces još postoji; fatalna CPU greška ostavlja ga zaustavljenim i ne ruši C0/C3 ili ostale programe.

Nativni terminal je 640x216 iznad Orao32 prikaza. C3 CPU obrađuje form feed, briše ili pomiče vlastite VRAM bajtove i ispisuje video portovima; nakon svakog retka propušta AV servis. Izbor izlaza prazni stari običan FIFO i šalje form feed s repom novog izlaza. Nema host framebuffer kopiranja, font rasterizacije ili blittera. Zapisi su ograničeni na 32768 znakova; pri izboru se ponavlja najviše zadnjih 1280. Odvojeni dnevnik pogrešaka zadržava 256 zadnjih obavijesti.
