# Orao 2026 v0.23 · BASIC i cijevi

Naredbeni redak i novi izvorni BASIC32 sada dijele preusmjeravanje standardnog ulaza/izlaza. Ista izvorna aplikacija 65C832 radi u Rustu v0.1.15, JS-u v0.23 i Wasmu v0.16. Wasm ostaje zadani pogon, JS ručni izbor.

## Primjeri

    INIT DA
    PRINT "a" > neki.txt
    PRINT "b" >> neki.txt
    TYPE < neki.txt
    INPUT A$ < neki.txt
    PRINT "Abc" | UPPER | LOWER > rezultat.txt
    DIR > katalog.txt
    PRINT "Za ispis" | PRN:
    TYPE < neki.txt | CON:
    RUN < ulaz.txt > izlaz.txt
    TYPE < ulaz.txt | EXEC "FILTER" > izlaz.txt
    TYPE < ulaz.txt | "FILTER.BAS" > izlaz.txt

INIT DA je postojeća destruktivna naredba za inicijalizaciju odabranog volumena; potrebna je samo ako je radni medij neinicijaliziran. Pregled i preusmjeravanje ne inicijaliziraju ga automatski.

- > stvara ili zamjenjuje datoteku, >> dodaje na kraj (stvara je ako ne postoji).
- < postavlja ulaz iz datoteke. INPUT čita retke bez prompta i odjeka; GET čita bajt. EOF(0) vraća -1 na kraju preusmjerenog ulaza, inače 0. Neočekivani kraj ulaza daje END OF INPUT i vraća konzolu.
- | predaje točne izlazne bajtove sljedećoj naredbi, izvornom BASIC programu ili nativnom procesu. TYPE bez argumenta kopira ulaz. UPPER/LOWER su jednostavni ASCII filtri. CON: je zaslon, PRN: virtualni pisač. Nativni program može koristiti BOS2 za ulaz, BOS1 za izlaz; BOS2 vraća status18 na EOF. Program mora obraditi EOF. Ctrl+C prekida proces koji još čeka/radi.
- Nazivi medija/volumena su postojeći A:/0/ i B:/0..145/. Preusmjereni put pretvara se u velika ASCII slova prema VDOS pravilima. Do 30 znakova, početno slovo. Nazive s razmacima ili bez ekstenzije stavi u navodnike: PRINT "a" > "ZAPIS".

## Razlikovanje od BASIC usporedbi

Operatori unutar navodnika, zagrada i komentara ostaju običan BASIC tekst. PRINT A > B, IF A < B THEN ... i >=, <=, <> zadržavaju usporedbe. Za pojedinačni > ili <, preusmjeravanje traži razmak prije operatora te citirani put ili necitirani naziv s točkom/putanjom. Ako uspoređuješ tekst s citiranim nazivom na kraju naredbe, zagradi usporedbu: PRINT (A$ > "B.TXT"). Klauzule preusmjeravanja nalaze se na kraju etape; moguća su oba reda, < ulaz.txt > izlaz.txt ili obrnuto. Dvostruki ulaz/izlaz i prazne etape daju pogrešku prije izvođenja.

## BASIC programi i granice prve verzije

RUN > izlaz.txt obuhvaća cijelo izvođenje programa, uključujući FOR/NEXT, GOTO i GOSUB. Program koji čita ulaz do EOF-a može imati:

    10 IF EOF(0) THEN END
    20 INPUT A$
    30 PRINT A$
    40 GOTO 10

Pokreni ga s RUN < ulaz.txt | UPPER > izlaz.txt. Isti primjer je u examples/basic32/streams.bas. Preusmjeravanje pojedinačnog spremljenog retka podržano je za naredbe ulaza/izlaza, primjerice 10 PRINT "a" > zapis.txt i 20 PRINT "b" >> zapis.txt. Za upravljanje tokom ili učitavanje drugog BASIC programa koristi preusmjeravanje vanjskog RUN poziva; nedopušteno ugniježđivanje daje jasnu pogrešku.

Etape se izvršavaju redom kroz ograničene međuspremnike: najviše 8 etapa i 16384 bajta po ulazu/izlazu/datoteci, uključujući postojeći sadržaj pri dodavanju. To odgovara sadašnjem VDOS binarnom ABI-ju. Ovo još nisu istodobne neograničene POSIX cijevi. Tekst koristi postojeće jednobajtno kodiranje Orlova terminala, bez dodavanja UTF-8 omotača. CR/LF i prazni retci u INPUT-u pravilno se obrađuju; TYPE i filtri u cijevi ne dodaju nove bajtove.

Izlaz se priprema prije zamjene ciljne datoteke. Pogreška proizvođača, prekoračenje međuspremnika ili Ctrl+C čuvaju raniji cilj; dijagnostika ide u konzolu. VDOS16 zapisuje nove sektore prije zamjene kataloškog zapisa, a stare oslobađa poslije. Nedostatak slobodnog prostora i zaštita od pisanja ne uklanjaju raniju datoteku. Za zamjenu treba slobodan prostor za novu kopiju; ovo nije datotečni sustav s dnevnikom za prekid napajanja. Učinci već dovršenih ranijih etapa ostaju.

## Izvedba i očuvanje

Parser, obrada tokova, filtri i sve datotečne operacije izvršavaju se u izvornoj aplikaciji na 65C832; nema host shella ili parsera datotečnog sustava. C06314–17 su postojeći sirovi izlazni kanal, sada naslijeđen za podprocese uz povratni pritisak. C061A6 zatvara ulaz samo vlastitom podprocesu, C061AB označava EOF zadnjeg BOS čitanja. Firmware BOS dobiva dodatni poziv16; postojeći SAVE12 i naredbe izvornog ROM-a ostaju neizmijenjeni u svojim prethodnim arhivama.

[Upravitelj datoteka i tipke](../orao-2026-v0.22/README.md) · [Sve verzije](../../index.html) · [Provjere](verification.json).

Lokalni razvoj bez novog ZIP-a ili udaljene objave. Službena potpuna publikacijska osnovica ostaje v0.20.0; ranije verzije, izvorni Orao32 ROM, trake i transkript očuvani su.
