# Orao 2026 v0.21 · Naredbeni redak i BASIC32

Otvori ikonu **Naredbeni redak** na radnoj plohi ili istoimenu stavku izbornika Datoteka/Prozori. Novi 32-bitni BASIC radi na emuliranom procesoru 65C832. Wasm je zadani pogon na zajedničkoj stranici; **Pokreni JS** omogućuje ručni izbor. Stare verzije ostaju u arhivi. Promjena pogona ponovno pokreće emulator: prethodno preuzmi radni IMG.

## Prvi program

```basic
10 FOR I=1 TO 10
20 PRINT I,I*I
30 NEXT I
RUN
```

Retke uređuješ ponovnim upisom broja i novog sadržaja. Sam broj briše redak. LIST prikazuje program; NEW briše program i varijable. Neposredne naredbe i više naredbi odvojenih dvotočkom rade bez brojeva redaka. Strelice lijevo/desno, Home/End, Backspace i Delete uređuju unos; gore/dolje vraćaju osam prethodnih naredbi. Ctrl+C prekida program; STOP/CONT omogućuju nastavak. EXIT zatvara terminal.

## Naredbe izvornog BASIC-a

END, FOR/TO/STEP/NEXT, DATA/READ/RESTORE, INPUT, DIM, DDT, GOTO i GO TO, RUN, IF/THEN, GOSUB/RETURN, REM, ON GOTO/GOSUB, DRAW, WAIT, LOAD/SAVE, DEF FN, POKE, PRINT, CONT, LIST, CLEAR, GET, NEW; TAB/SPC, NOT/AND/OR i aritmetički/usporedni operatori.

Funkcije: SGN, INT, ABS, USR, FRE, POS, SQR, RND, LOG, EXP, COS, SIN, TAN, ATN, PEEK, LEN, STR$, VAL, ASC, CHR$, LEFT$, RIGHT$, MID$. Podržani su PLOT i LOADC iz zadržane dokumentacije, LET i kratica ?. DDT/MON otvara postojeći nativni monitor; iz njega se vraća naredbom EXIT. Q u tom monitoru znači kopiranje memorije.

Ovo je novi jezik s naredbama starog BASIC-a, a ne binarna ili potpuno identična numerička implementacija 6502 ROM-a. Cijeli brojevi su točni signed int32; prekoračenje obične aritmetike prelazi na softverski IEEE binary32. Varijable s nastavkom % su cjelobrojne, $ su tekstualne. Binary32 ima približno sedam značajnih decimalnih znamenaka; matematičke funkcije koriste lokalne aproksimacije. RND(0) ponavlja zadnji broj, negativan argument ponovno sije niz. Nema host generatora slučajnih brojeva.

## Mediji i sistemske skripte

PWD, CD/CHDIR, DIR/CATALOG/LOADC, TYPE/CAT, DELETE/DEL i INIT DA koriste stvarni BOS/VDOS. Umetni disk kroz postojeće kontrole emulatora. INIT DA formatira aktivni volumen i briše njegov sadržaj. SAVE "DEMO.BAS" sprema izvorni tekst programa, LOAD ga učitava; RUN "DEMO.BAS", SOURCE ili SCRIPT učitavaju i izvršavaju izvor. Postojeći zapis ne prepisuje se: prvo ga namjerno ukloni naredbom DELETE. Disk preuzmi kao IMG radi trajnog čuvanja.

VDOS ima ravne volumene: A:/0/ (disketa), B:/0/ do B:/145/ (tvrdi disk). CD B:/3/ mijenja aktivni volumen, CD .. vraća volumen 0 istog pogona. Ne izmišljamo direktorije koje ovaj format nema. Nazivi imaju do 30 ASCII znakova i počinju slovom; preporučeni su veliki znakovi. Izvorne .BAS datoteke su ASCII tekst u postojećem binarnom VDOS zapisu. Najveća datoteka ove prve verzije je 16 KiB.

EXEC "APP" pokreće postojeći nativni program s diska, prenosi njegov ispis u isti terminal i čeka završetak. Njegovi redci ulaza idu kroz isti terminal; Ctrl+C prekida povezani program. BSAVE "APP",adresa,duljina i BLOAD "APP"[,adresa] prenose sirove bajtove. Primjeri izvora su u examples/basic32/; za ovu verziju upiši ih u terminal ili prenesi izvor kroz postojeći VDOS medij.

## Grafika i strojni potprogrami

PLOT x,y[,pero] i DRAW x,y[,pero] crtaju 256×256 jednobojni bitmap u prozoru; pero 0 briše, 1 postavlja, 2 invertira. DRAW spaja posljednju i novu točku. TEXT vraća tekst, CLS čisti tekstualnu konzolu. PEEK/POKE koriste 24-bitne adrese uz procesna prava, ne staru 6502 memorijsku kartu.

USR(argument) čita adresu iz bajtova 11/12/13 (low/high/bank), prosljeđuje 32-bitni A i vraća A. Banka 0 koristi RTS; druge banke RTL. CALL adresa[,argument] koristi RTL. Potprogram mora očuvati DBR, DP, X/Y i ravnotežu stoga; sačuvati širine registra ili vratiti nativne 32-bitne širine. To nisu 6502 binarni programi.

## Granice prve verzije

256 programskih redaka, do 240 bajtova po retku; 128 skalarnih varijabli, imena do 16 znakova; osam polja do tri dimenzije s ukupno 1024 elementa; osam DEF FN; do 16 FOR i GOSUB okvira. Tekstualna vrijednost ima do 255 bajtova. Izrazi su ograničeni na osam ugniježđenih razina, uključujući DEF FN; prekoračenje daje grešku i vraća naredbeni redak. Tekst je u postojećem jednobajtnom hrvatskom fontu, ne Unicode terminal. Konzola je 80×24, s fiksnim 16px razmakom redaka. Povijest je osam redaka; zasebni scrollback i pipeovi još nisu uvedeni.

## Kako se izvršava

basic32/basic.rs i soft32.rs su no_std izvor interpretera. Build-time rustc proizvodi Wasm IR, koji basic32/aot.cjs prevodi u stvarne 65C832 instrukcije. Taj IR se ne izvršava kao VM pri radu emulatora. Native program je komprimiran u ROM-u FC0000, CPU ga raspakira na 400000; dodijeljeni radni prostor je 360000–3DFFFF, bitmap 3E0000. C0 upravlja konzolom i redovima ulaza, C3 rasterizira tekst/piksele. Host ne parsira BASIC, ne izvršava naredbe i ne crta GUI.

Izvorni Orao32 ROM, stare verzije, kasete i izvorni transkript ostaju sačuvani. Raspored redaka unutar izvornog 6502 BASIC-a ostaje neizmijenjen. Novi BASIC je odvojena aplikacija. Rust v0.1.13 koristi isti izvor i identičan nativni BASIC binarni program, uz postojeće povlačenje obrisa prozora.

Lokalna radna verzija, bez novog ZIP-a ili udaljene objave. Službena potpuna focused osnovica ostaje v0.20.0 (2734 datoteke). [Provjere](verification.json) opisuju stvarno provedene provjere; ne tvrde potpunu kompatibilnost svakog programa starog BASIC-a. [Prethodni razvoj](../orao-2026-v0.20/README.md).