Já si myslím,že jeden z hlavních důvodů proč na 8-mi bitech byl BASIC a v ROM je ten, že šel díky svým vlastnostem ( překlad po řádcích, okamžité vykonání řádku zapsaného bez úvodního čísla ) snadno použít jako operační systém. Basic se doplnil příkazy o práci s páskou ( disky ), práci s pamětí, příkazy pro spouštění programu atd. a bylo hotovo. Pak ani nebyl potřeba žádný „monitor“ i když ho některé 8-mi bity měly, hlavně ty co BASIC v ROM neměly.
… takze se nerozlisoval dejme tomu tisk na obrazovku, na tiskarnu nebo do souboru. …
Jak kde. Sinclair BASIC má tzv. kanály. Tj. jakési virtuální zařízení na které lze poslat proud dat, nebo naopak data přijímat. Obrazovce je vyhrazen kanál 1 a 2. Tiskárně pak 3, ostatní (max 8? teď nevím) jsou volně použitelné uživatelům. Např. ovladač plotru Aritma – program MZXR, přes kanál 3 tiskne výpis BASICu, ale skrz kanál 7 je ovladatelný sadou příkazů, které se podobají HPGL, resp. lze konfigurovat parametry i pro tisk přes kanál 3.
Stejně tak můj PCL ovladač pro DeskJety tiskne přes kanál 3, takže lze pak obsah diskety vytisknout příkazem !LIST #3 a pod…
Kanály se používaly i k čtení/ukládání dat z/do velmi velkých souborů na MDOSu (a nejspíš i jinde, ale TRDOS má omezení na 64k – 256 bytů). Není problém vytvořit soubor několik set kB dlouhý (snad dokonce do kapacity diskety? – používal jsem velmi dávno). Mohlo to dokonce posloužit jako velmi primitivní náhrada unixové trubky a předávat tak data mezi několika utilitkami.
Myšlenka skvělá, bohužel v ROM se něco nepovedlo a tak s tím byly někde problémy – nepamatuji si jaké. Mnoho let používám ROM (15+), která toto má opravené.
Tišnovský to myslel asi tak, že pokud provedu OPEN #3,„s“, tak mi PRINT #3 místo na tiskárnu půjde na obrazovku, a programuje to jedno, pokud mám Interface 1 a otevřu si OPEN #3,„b“ sériák nebo OPEN #3,„n“;5, tak „tisknu“ na sériák nebo po síti (na stanici č. 5)… a programu je to furt jedno.
Což je v souladu s tím, co jsi napsal ty.
Což mne přivádí na trochu šílenou myšlenku – dalo by se ZX Spectrum (resp. jeho BASIC) ovládat vzdáleně po síti?
Zatím jsem nezkoušel, ale čistě teoreticky – kdybych přesměroval kanály 0,1,2 (tj. klávesnici a obrazovku) a proud dat přijímal/posílal přes SIF s ConnectOne ethernet modulem … teoreticky by se mohlo povést (možná s nějakými modifikacemi ROM a konverzí řídících znaků) ovládat Sinclair BASIC přes Telnet z Linuxu (nebo z jiného Sinclaira).
ConnecOne modul na SIFu už mám zprovozněný a začínám experimentovat, ale zatím jsou jiné priority … uvidíme.
Ano, BASIC sloužil k podobnému účelu, jako nyní slouží např. BASH.
Přinejmenším majoritní diskové (disketové, HDD) systémy na Sinclairech vždy s BASICem nějak interagují. Buď ho rozšíří o vlastní podmnožinu příkazů (MDOS, TRDOS i když kostrbatěji), nebo alespoň nahrazují funkčnost původních (TAP emulace Fatware, Demfir, ESX DOS), nebo obojí (BSDOS). Některé systémy měly dost šílenou syntaxi (Interface 1 + Microdrive). Pro TRDOS existuje specielně upravený BASIC (ISOROM), který komplikovanou syntaxi radikálně zjednodušuje (stará verze totéž údajně umožňovala s Interface 1).
Prostě BASIC je na osmibitech skutečně všestranný a na Sinclairech, tím, že je všude stejný (nebo alespoň z pohledu softwaru stejně funkční), tak značně usnadňuje start softwaru, který je nějak vázaný na konkrétní hardware. Případně portování softwaru na jiný diskový systém, nepracuje-li se soubory jinak než v BASICu (hry se obvykle načtou a spustí, tam to bývá snadné, u všelijakých editorů naopak někdy značně obtížné).
Na Atarku to fungovalo takto:
otevreni zarizeni:
10 OPEN #2,8,0:„Dl:TEST.TXT“
tj.udava se cislo kanalu (nektera jsou rezerovana aneb neni dobry napad si napriklad zavrit klavesnici ci znakovy vystup), potom cislo prikazu (read, write, append), cislo podprikazu a nakonec vlastni zarizeni + u nektery jmeno souboru. Potom se vsude pouzivalo cislo kanalu, napriklad:
20 PRINT #2, „hello“
popr. pro praci s jednotlivymi bajty GET a PUT a nakonec CLOSE. Celkem prehledne reseni rekl bych, s vyuzitim pouhych sedmi(?) prikazu je vyreseno cele I/O, zadne silene iostreamy :-)