Orao / Radni stol 1.0
Browser emulator Orla s monokromatskim radnim stolom inspiriranim GUI-jevima 1980-ih. Otvori index.html izravno u browseru ili posluži ovu mapu statičkim HTTP serverom. Nema instalacije, builda, CDN-a ni mrežnih zahtjeva. Sve datoteke moraju ostati zajedno.
Radni stol
- ORAO u gornjem lijevom kutu otvara izbornik. Naslovna traka pomiče prozor, X ga zatvara, a donja traka vraća prozore. Tab mijenja aktivni prozor.
- F1–F4 otvaraju pomoć, novi Orao, programe i prikaz kada je aktivan alat. Alt+1–4 rade i kad je aktivan emulator. Tipke F1–F4 u emulatoru pripadaju Orlu.
- F10 prikazuje cijeli ekran igre. F12 vraća radni stol. Escape u emulatoru vraća izvorni monitor i prekida automatsko tipkanje.
- PRIKAZ neovisno bira X i Y: 256 ili 512. Time se povećava radni prostor, dok izvorni ekran svakog Orla ostaje 256 × 256. U manjem prozoru ekran se uklapa nearest-neighbor metodom; F10 pokazuje sve izvorne piksele.
- Do osam virtualnih Orlova radi istodobno, svaki s vlastitim procesorom, RAM-om, kasetom i tipkovnicom. Neaktivni prozori nastavljaju raditi. STOP/RUN ili POSLOVI pauziraju pojedini proces. Skriven browser tab pauzira izvršavanje.
- Bilježnica i crtež spremaju se u lokalnu pohranu browsera. Moguć je izvoz TXT-a i monokromatskog PBM-a. Sat nastavlja raditi uz igre.
- Zvuk se uključuje u PRIKAZU. Čuje se zvučnik aktivnog Orla. 1X, 4X i 16X ubrzavaju izvršavanje i učitavanje. Za uobičajenu brzinu igre odaberi 1X.
Igre i datoteke
Ugrađena Orbita je izvorni program za 6502, a ne JavaScript igra. Izbjegavaj meteore tipkama lijevo/desno; nakon sudara Space započinje novu igru. orbita.bin ima početnu adresu $1000. Izvor je build-programs.cjs; Node ga ponovno sastavlja u BIN i programs.js. Nema dodatnih ovisnosti.
IN u prozoru emulatora ili UMETNI KASETU učitava datoteku u odabrani Orao.
| Format | Postupak |
|---|---|
| WAV | PCM, 8 ili 16 bita; prvi kanal; stvarni signal kasete na $87FF. |
| TAP | Orao TAP bitni zapis, uključujući stariji format s 360-bajtnim zaglavljem/završetkom po MAME specifikaciji. |
| BIN | Upis u RAM na odabranu HEX adresu; izvršavanje od odabrane početne adrese. |
| ROM | 16384 bajta: BASIC pa monitor; pokreće taj firmware u odabranom Orlu. |
| ORAO / JSON | Spremljeni CPU, RAM, firmware i točan položaj/sadržaj kasete. |
Automatski LMEM (strojni kod) i LOAD (BASIC) resetiraju odabrani Orao, otvaraju BASIC, odgovaraju na pitanje o veličini memorije i pokreću kasetu. To zamjenjuje trenutačni program tog Orla. Ostali Orlovi nastavljaju raditi.
Nakon učitavanja BASIC-a klikni RUN ili upiši RUN. Za strojni kod klikni LNK, provjeri početnu HEX adresu iz zaglavlja i odaberi POKRENI. Primjer za testirani stari Tetris: $1000, odnosno BASIC naredba LNK4096. Neki programi traže vlastite početne adrese ili više datoteka kasete.
Za ručno učitavanje odaberi RUCNO i upiši BC, zatim Enter kod MEM SIZE ?, pa LMEM"" ili LOAD"". Klikni PLAY tek kada računalo traži kasetu. |< vraća kasetu na početak. Ponovno učitavanje nije moguće bez vraćanja kasete.
SAVE izvozi .orao datoteku. Učitaj je preko IN za nastavak istog stanja. Spremljena stanja iz drugih emulatora nemaju nužno kompatibilan format.
Što je izvorno, a što proširenje
Emulira se NMOS 6502 s 151 službenom instrukcijom, decimalnom aritmetikom, adresiranjem i brojanjem ciklusa, ciljano na 1 MHz. RAM: $0000–$7FFF, grafika: $6000–$7FFF, tipkovnica i ulaz kasete: $8000–$87FF, zvučnik: $8800–$8FFF, prošireni RAM: $A000–$BFFF, ROM: $C000–$FFFF. Bit 0 svakog grafičkog bajta je lijevi piksel. Izvorni prikaz je 256 × 256, jedan bit po pikselu. Zvuk nastaje od promjena izlaza zvučnika.
Svi vidljivi dijelovi aplikacije crtaju se kao crni ili bijeli pikseli na canvasu: bitmap font, točkasta pozadina, prozori i pokazivač. Nema sivih tonova, vektorskih fontova, prozirnosti, zaglađivanja, boja ni modernih DOM kontrola unutar radnog stola. Odabir datoteke i preuzimanja pripadaju browseru.
GUI, miš, veća radna površina i istodobna virtualna računala proširenja su ovog browser emulatora. Ovo nije novi OS koji radi na fizičkom Orlu. Miš upravlja GUI-jem; stare igre koriste svoju izvornu tipkovnicu. Nisu implementirane neslužbene 6502 instrukcije, printer, DOS diskovi ni snimanje na fizičku kasetu. Brojanje ciklusa nije emulacija svake pojedine promjene fizičke sabirnice.
Izvori i licenca
- OraoJs, Hrvoje Čavrak: izvor tablice instrukcija i neizmijenjenih ROM bajtova iz
rom13.js. ROM sadrži originalni Orlov BASIC i monitor. Novo jezgro i GUI su zasebna implementacija. - MAME Orao driver, Miodrag Milanović: provjera hardverske mape, tipkovnice, videa i zvučnika.
- MAME Orao cassette format, Olivier Galibert: provjera TAP formata i trajanja impulsa.
Izvor aplikacije i Orbita: GPL-3.0-or-later, uz očuvanu atribuciju OraoJs-u. Tekst licence je u COPYING. Legacy igre nisu uključene u aplikaciju; učitavaju se iz korisnikovih datoteka. ROM je preuzet iz navedenog OraoJs izvora.
Provjere
Testovi su u radnoj mapi orao-tests/, izvan javne aplikacije:
- Klaus Dormann 6502 functional test: 30.646.184 instrukcije do završne adrese
$3469. - Svih 40.000 kombinacija valjanih decimalnih ADC/SBC operacija i ulaznog carry bita.
- Boot izvornog ROM-a, tipke istodobno pritisnute, zaštita ROM-a, izvođenje Orbite, identičan nastavak iz spremljenog stanja i odbijanje neispravnih zapisa.
- Stari Tetris iz WAV-a stvarno učitan i pokrenut kroz GUI, dok je drugi prozor aktivan.
- TAP učitavanje; sve četiri rezolucije; istodobni procesi i pojedinačna pauza; bilješke, crtež, puni ekran, mali viewport i provjera da su svi canvas pikseli 1-bitni.
Provjereno u Edgeu. Kompatibilnost sa svakom postojećom Orlovom igrom nije provjerena.