# Orao 2026 v0.7 — nativni monitor

[Emulator](../index.html) · [Upute](../upute.html) · [BOS loader](bos-loader-v0.6.md).

Ovo je nova implementacija za alternativni Orao 2026. Značenja osnovnih naredbi slijede očuvanu dokumentaciju i izvorni monitor Orla32; nije riječ o pronađenom BOS/SM ROM-u ili izvornom 65C832 monitoru. Orao32 instance i dalje imaju vlastiti originalni monitor.

## Pokretanje i prvi program

Pritisnite **Pokreni monitor**, ili u VDOS-u upišite **MON**. Monitor je zaseban nativni proces: ima svoj prioritet, privatnu memoriju i izlaz te koristi C0 scheduler. Zauzima jedno od deset procesnih mjesta i dijeli dostupno vrijeme C1/C2 s ostalim procesima. Ako su obje aplikacijske jezgre rezervirane za Orao32, monitor se ne može pokrenuti. C0 i C3 nisu preuzeti.

Za pokus upišite, redak po redak:

```text
NEW
A 1800
LDA #2A
STA 1900
NOP
BRA 1805
Q
X 1800 1807
U 1800
```

NEW ispiše PID novog, zaustavljenog procesa; zapamtite ga. Za povratak odaberite taj proces i pritisnite **Odaberi i zaustavi**, ili upišite **P pid**. **E 1900 1900** sada prikazuje `2A`. **S** izvrši jednu instrukciju i vrati registre. **G** nastavlja rad, a **U adresa** mijenja PC/PBR i pokreće proces od zadane adrese. U/G prikaže izlaz cilja ako je monitor bio u prvom planu; slanje nove naredbe kroz panel izričito vraća prikaz monitora.

Svi brojevi u naredbama su **heksadecimalni**, uključujući PID: decimalni PID 10 piše se `A`. Adrese su do šest znamenki, bez dvotočke; dopušten je prefiks `$`. Granice blokova su uključene. Naredbe i mnemonici ne razlikuju mala i velika slova. **Q na glavnom promptu kopira blok; EXIT završava monitor.** Q u interaktivnom M/A vraća glavni prompt.

## Naredbe

| Naredba | Značenje |
| --- | --- |
| HELP | Kratki pregled naredbi. |
| INFO | RAM, VRAM, ROM i maska jezgri dostupnih nativnim procesima. Dostupna jezgra može već izvršavati proces. |
| PS | Aktivni PID, stanje, prioritet, dodjela, trenutačna jezgra i PC; brojevi su hex. |
| CORES | Uzorak svih četiriju jezgri: nativni/6502 profil i registri. Ne zaustavlja sustav. |
| NEW | Stvara proces s privatnih 128 KiB i petljom BRA na 001000, odabire ga i zaustavlja. |
| P pid | Odabire nativni proces i zaustavlja ga na granici instrukcije. |
| R | Potpuni registri cilja; vraća stvarne širine za A/X nakon W. Nema izravnog uređivanja registara osim PC/PBR kroz U. |
| E od do | Pregled do 100 hex / 256 bajtova, osam bajtova po retku. |
| M adresa bb… | Izmjena 1–20 hex / 32 bajta. M adresa otvara interaktivnu izmjenu; sljedeći redci sadrže bajtove, Q izlazi. |
| C od do | SUM32 i SUM8 za do 1000 hex / 4096 bajtova. |
| F od do bb | Ispunjava do 4096 bajtova. |
| Q cilj od do | Kopira do 4096 bajtova privatne RAM; preklapanje je dopušteno. CPU najprije čita izvor u svoj privremeni buffer. |
| A adresa instrukcija | Mini-asembler jedne instrukcije. A adresa otvara interaktivni unos; nakon instrukcije adresa napreduje, Q izlazi. |
| X od do | Linearni disasembler svih 256 opkoda, do 256 bajtova. Posljednja započeta instrukcija prikazuje se cijela. |
| W širinaA širinaX | Širine za A i početak X: 8, 10, 20 hex znače 8, 16, 32 bita. Ne mijenja registre procesa. R vraća stvarne širine cilja. |
| U adresa | Postavlja PC/PBR na privatnu adresu i nastavlja proces. |
| G | Nastavlja proces, uključujući nastavak blokiranog BOS poziva. |
| S | C0 rasporedi cilj, izvrši točno jednu instrukciju i ponovno ga zaustavi. Blokirani BOS zahtjev mora se najprije nastaviti s G. |
| D | Odvaja cilj; njegovo stanje ostaje kakvo jest. |
| EXIT | Završava monitor i oslobađa vlasništvo. Zaustavljeni cilj ostaje zaustavljen i može se ponovno preuzeti. |

## Pogreške monitora

**ERR MON $02** znači da monitor nema dostupan ciljni korisnički proces. To je status monitora, a ne kvar diskete, HDD-a ili drugog vanjskog uređaja. Može se pojaviti prije odabira cilja, nakon završetka ciljnog procesa ili kada P pokuša odabrati nepostojeći PID, VDOS sistemski proces ili monitor.

Upišite **PS**, pronađite željeni PID i odaberite ga s **P pid**, ili upišite **NEW** za novi prazni proces. PID se piše heksadecimalno: decimalni 10 je `A`. Možete koristiti i izbornik ciljnog procesa te gumb **Odaberi i zaustavi**. Samo pokretanje monitora još ne odabire proces za rad.

**HELP ERR** prikazuje ovaj pregled bez potrebe za odabranim ciljem. Poruke uz kod sada odmah daju razlog i predloženu sljedeću naredbu.

| Kod / poruka | Značenje i što učiniti |
| --- | --- |
| 02 — nema dostupnog ciljnog procesa | PS pa P pid, ili NEW. Sistemski proces i monitor ne mogu biti cilj. |
| 03 — proces nije spreman za ovu radnju | P pid zaustavlja proces. Ako S odbije proces koji čeka BOS, prvo G da dovrši poziv, zatim ponovno P pid i S. |
| 05 — cilj koristi drugi monitor | U tom monitoru D ili EXIT oslobađa vlasništvo; zatim ponovite P pid. |
| 06 — fatalna CPU pogreška | Taj kontekst nije moguće nastaviti s G, S ili U; pokrenite program kao novi proces. |
| 07 — nedostupna ili zaštićena adresa | Pišite samo u privatnu RAM 000000–01FFFF. ROM F00000–FFFFFF smije se samo čitati; MMIO nije dostupan. |
| Neispravna naredba ili argument | HELP prikazuje sintaksu; provjerite broj argumenata i hex zapis. |
| Raspon ili vrijednost nije dozvoljena | Početak mora biti prije ili jednak kraju; bajt je 00–FF. E/X do 100, F/C/Q do 1000, M do 20 bajtova (sve hex); W prihvaća samo 8, 10 ili 20. |
| Nepodržan asemberski oblik | Provjerite mnemonik, operand i W širine. Nepodržane složene oblike unesite kao bajtove kroz M. |
| Ciljni proces je završio | Ponovno PS i P pid, ili NEW. |
| Nema slobodnog mjesta, prioriteta ili jezgre | Završite nepotrebni proces u panelu Procesi ili oslobodite Orao32 jezgru; svih deset prioriteta i mjesta može biti zauzeto. |
| Nepoznat status | Kod se zadržava u ispisu radi dijagnostike; pregledajte HELP ERR i prijavite točan kod i naredbu. |

Pogreška se odmah ispisuje kao cjelovit prioritetni zapis, s novim redom prije i poslije. Kod 02 sam po sebi ne govori koja ga je od navedenih situacija uzrokovala; PS i izbornik cilja pokazuju trenutačno dostupne korisničke procese. Odbijeni P ne odvaja prethodno valjan odabrani cilj.

## Detaljniji prikaz

R prikazuje A/X/Y od 32 bita, PC/PBR od 24 bita, S i DP od 16 bita, DBR, P, E8/E16, stvarne širine A i indeksa, PID, stanje, prioritet, dodjelu jezgre, cikluse/instrukcije i fizičku bazu privatne RAM. Širine su hex `08`, `10`, `20`; prioritet `0A` znači najniži prioritet 10. P prati N V M X D I Z C. Stanja: 01 spreman, 02 izvršava se, 03 čeka kernel, 04 pauziran. CORE 00 za pauzirani proces znači da trenutačno nije dodijeljen jezgri. Brojači prikazuju donja 32 bita.

R je koherentan zapis na granici instrukcije. PS i CORES su uzorci tijekom rada, pa se njihove stavke mogu odnositi na različite trenutke. Orao32 se prikazuje kao **NMOS6502, rezervirana cijela jezgra**, sa stvarnim registrima gosta i stogom u stranici 01; E8/E16 nisu modovi toga gosta, a INS=0 znači da zaseban brojač instrukcija gosta nije dostupan. C0/C3 se samo promatraju.

## Asembler i disasembler

Mini-asembler podržava instrukcije bez operanda, akumulatorski oblik `ASL A`, neposredne operande `LDA #2A`, direktne/apsolutne/duge adrese, sufikse `,X` i `,Y`, PEA te relativne grane s odredišnom adresom. Bira najkraći valjan oblik za zadanu vrijednost. Relativne grane moraju ostati u istoj banci; kratke grane provjeravaju raspon −128…127. Instrukcija ne smije prelaziti kraj 64-KiB banke. Nema forsiranja duljeg oblika, simbola, labela, izraza, makroa, indirektnih/stack operanada ni unosa blokovnog MVN/MVP oblika; takav unos javlja pogrešku prije pisanja. Za njih se mogu unijeti bajtovi kroz M, a X ih prikazuje.

X koristi stvarne početne M/X/E16 širine cilja ili W. Prati REP/SEP duž ravnog niza. Ne zaključuje promjene kroz grane, PLP/RTI/XCE; podijelite raspon i upotrijebite W. Fetch operanada poštuje 16-bitno omatanje PC-a u istoj banci; pregled je ograničen brojem bajtova. Native MVN/MVP u postojećem interpreteru nema operandne bajtove; E16 oblik ima dva. To je tumačenje postojećeg nacrta procesora, ne potvrda stvarnog WDC hardvera.

## Granice i izvršavanje

Cilj mora biti zaustavljen za memorijske naredbe, R, A i X. Sam monitor, drugi monitori i VDOS sistemski proces nisu dopušteni ciljevi. Jedan cilj ima najviše jednog vlasnika monitora. Privatne adrese 000000–01FFFF mogu se čitati i mijenjati; F00000–FFFFFF je ROM samo za čitanje. MMIO, zajednička RAM, slikovna RAM i privatna memorija C0/C3 nisu dostupni kroz memorijske naredbe. Neispravan raspon, broj ili nepodržana asemberska forma odbija se prije upisa.

S koristi normalni C0 dispatch; uređaj zatraži boundary stop nakon prve završene instrukcije. Timer, drugi procesi i AV nastavljaju rad. Nakon fatalne pogreške interpretera proces se ne može nastaviti; STP se prikazuje kao zaustavljen proces s pogreškom prema postojećoj politici. Pogreške idu odmah u prioritetni red i započinju/završavaju novim redom. Uobičajen sistemski izlaz ne upada u program.

BOS poziv **50 hex** CPU kodom kopira ROM F50000 u roditeljev buffer 4000 i zatim poziva BOS 40 / C0 SPAWN; zamjenjuje sadržaj tog staging buffera i parametre za spawn. PID je na 031C/D, status na 0303. Monitor počinje na 8000; koristi RAM 0100–0167, BOS scratch 0080–00F3, ulaz 0500, edit buffer 0600 i copy buffer 2000–2FFF. Nema host parsera, host asemblera, hardverskog copy enginea ni spremanja/obnove CPU snapshotova.

## Uređaj C06400–C064FF

Samo provjereni ROM monitor ima pristup; obični proces čita FF i ne može pisati. Ovo je novi razvojni ugovor emulatora.

| Pomak | Namjena |
| --- | --- |
| 00/01 | Zatraženi PID, little endian. |
| 02 | Akcija: 1 attach/pause, 2 detach, 3 continue, 4 execute, 5 step, 6 capture. |
| 03 | Status (hex): 00 OK, 02 nema dostupnog/dopuštenog cilja, 03 nije spreman, 05 zauzet, 06 fatalni fault, 07 raspon/zaštita. |
| 04/05 | Stanje cilja / spreman i pauziran bez aktivne jezgre. |
| 08–0A | 24-bitna adresa; novi donji bajt briše prethodni memorijski status. |
| 0B | Čitanje/pisanje bajta s automatskim povećanjem adrese. |
| 0C/0D | Izbor core uzorka / procesnog slota. |
| 10–13 | RAM/VRAM/ROM u MiB i maska nativnih aplikacijskih jezgri. |
| 17/18 | PID monitora. |
| 20–4B / 80–AB / C0–EB | Po 44 bajta: snimljeni cilj, uzorak jezgre, uzorak procesnog slota. |

Zapis: PID16@0, stanje@2, prioritet@3, affinity@4, core@5, profil@6 (0 native / 1 6502 / 2 OS-AV), E8@7, E16@8, AW/IW@9/10, P@11, A32@12, X32@16, Y32@20, PC24@24, DBR@27, S16@28, DP16@30, cycles32@32, instructions32@36, RAM-base24@40, fault@43. Višebajtna polja su little endian. Portovi ne interpretiraju naredbeni tekst.
