Czy Atari Basic jest maszyną wirtualną?
https://github.com/willyvmm/mouSTer
jmp $e477
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
Nowa obudowa dla 800XL - zostało 36 dni Niewiele ponad miesiąc do końca kampanii.
Zmarł twórca języka BASIC Zmarł Thomas E. Kurtz twórca języka BASIC
Zmiana serwera atari.area Serwis przeszedł właśnie ważną aktualizację infrastruktury
4th Atari ASCII Compo - wyniki Dostępne są już wyniki tegorocznego ATASCII Compo.
thing neo 1.60 Olivier Landemarre wydał nową wersję desktopu Thing.
atari.area forum » Software, Gry - 8bit » Atari Basic - Czy była to pierwsza maszyna wirtualna (lub jedna z)
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
Czy Atari Basic jest maszyną wirtualną?
Pierwszą tego typu była prawdopodobnie O-code machine: https://en.wikipedia.org/wiki/O-code.
Oj chyba nie...znacznie wcześniej był LISP a właściwie podwaliny LISP: http://www-formal.stanford.edu/jmc/recu … rsive.html
Czy Atari Basic jest maszyną wirtualną?
Moim zdaniem nie. A Atari BASIC w szczególności, początki BASIC-a datowane są na 1964 rok. A nie jest, bo jedną z kluczowych cech maszyny wirtualnej jest całkowite odizolowanie jej środowiska od rzeczywistego komputera (systemu operacyjnego, innego oprogramowania pracującego na maszynie rzeczywistej). Inaczej mówiąc, kontakt z rzeczywistym komputerem następuje tylko za pośrednictwem maszyny wirtualnej i tylko w takim zakresie, na jaki ona pozwala. Atari BASIC daje nieograniczony dostęp do OS i całej struktury komputera rzeczywistego. Można nawet uruchomić procedurę, która, choć zgodna ze składnią BASIC-a, to doprowadzi do jego „uszkodzenia” lub nawet zawiesi komputer rzeczywisty.
Jedną z pierwszych można by rzec był Windows 3.1... ale wcześniej też można by powiedzieć jakieś próby były.
może Logo było pierwszą maszyną virtualną, bo taki sam kod dawał taki sam rezultat na każdej maszynie... poza tym, nic nie w zasadzie nic sensownego nie robiło, nie mówiąc o jakimkolwiek dostępie do flaków (custom chipów. itp.). A jak nie logo, to dżawa (którą darzę wyjątkową niechęcią).
Panowie,
Java, Logo...to parę pokoleń później.....
LISP, Forth, BCPL...to poczatki..
Tak. A jeszcze starsza jest algebra arabska. W pewnym sensie język programowania, w użyciu do dziś. Wykonywana przez dowolną osobę, jeśli prawidłowo w niej zaimplementowana - daje te same wyniki :D
Idźmy na całość...pismo klinowe...
Czy Atari Basic jest maszyną wirtualną?
Wracając do głównego pytania.
Wg mnie jest czymś w rodzaju i to szczególnej, ponieważ basic tłumaczy się do bytecodów (właściwie 1:1 odpowiedników instrukcji basica) podczas analizy wiersza, a następnie można to wykonać jak już jest w pamięci w postaci bytekodów.
"Czymś w rodzaju i to szczególnej" = nie ogólnej, bo język maszyny wirtualnej powinien być bliski asemblerowi i odtworzenie z bytekodów kodu źródłowego nie jest możliwe (tak, wiem, istnieją dekompilery do javy, ale IMHO tak to miało być, aby kraść technologie) a w Atari Basic jest to inna postać kodu, co można zobaczyć poleceniem LIST.
Jeśli by się chciało w tej maszynie wirtualnej odpalić program w LOGO, to trzeba de facto przetłumaczyć by to najpierw na BASIC.
Podobnie zresztą jest na ZX Basic.
Atari Basic nieszczególnie, ze względu na np. instrukcje modyfikujące obszary stricte zależne od budowy (POKE), co już było wspomniane powyżej.
Poza tym, praktycznie każdy mikrokomputerowy Basic wprowadzał właściwe dla siebie zmiany, usprawnienia, dodatkowe komendy lub inną składnię/parametry dla już istniejących. Ponadto, choćby głupia obsługa znaków - brak wspólnego trybu, nawet tekstowego, już wszystko rozpieprza.
Istniały natomiast próby pisania programów w "Basicu Uniwersalnym", gdzie wyrzekano się komend czy odwołań do elementów specyficznych dla danego mikrosia. Co prawda na wyjściu tylko tekst i to mocno konsolowy, to jednak można by takie eksperymenty z ośmiobitowym esperanto nazwać prymitywną maszyną wirtualną. Ten sam kod zadziałałby przecie i na komputerach z różnymi wariantami 6502 i na architekturach opartych o Z80.
Mef82:ale który post musisz uściślić :)
Wydaje mi się, że o wiele bliżej koncepcji maszyny wirtualnej był system CP/M. Był on co prawda przeznaczony dla Z-80 ale to chyba głównie z tego powodu, że tworzenie wirtualnego procesora i jego emulacja przy ówczesnej mocy obliczeniowej była problematyczna aby to robić z sensowną wydajnością. Poza tym jednak i ogólnymi wymaganiami jak 64KB RAM czy ekran tekstowy, programy pod CP/M nie odwoływał się bezpośrednio do sprzętu, stawiały jedynie minimalne wymagania co do zasobów. Były implementacje na Spectrum, CPC czy C-128 czy nawet ATR-8000 albo LDW 2000. Któryś tam model Mery też pracował pod CP/M.
Nie, CP/M to po prostu jeden z pierwszych multiplatformowych systemów operacyjnych.
CP/M, jak i MSX to są chyba dwie odmiany jednej koncepcji.
Adam, wiem, ale wiecej tam wirtualizacji niz w BASICu
laborant: CP/M to system operacyjny, MSX to platforma
wieczór: nie, bo kod programów CP/Mu jest wykonywany natywnie. Masz abstrakcję I/O, ale to ma każdy system operacyjny, po to one są.
Tak mi się tylko wydawało, że CP/M miał unifikować różne platformy (ale też narzucał, że sprzętowo mają być typu 8086 i Z80), by móc robić na nich to samo i w ten sam sposób, a MSX narzucał standard platformy (też Z80), by też mogli robić to samo na sprzęcie różnych producentów, ale w sensie całego oprogramowania - no jakby krok dalej niż CP/M. Aczkolwiek rezultat końcowy mógłby być identyczny.
I tu nasuwa mi się konkluzja, że już od zarania dziejów maszyny z motorolami i odmianami 6502 szły w custom chipy i dedykowane OS-y, a z80 i intele w unifikację albo sprzętową, albo systemową. Ale może to tylko złudzenie.
EDIT: No i może jeszcze CP/M miał ambicje profesjonalne, a MSX domowo-edukacyjne.
Najwcześniej to chyba IBM
Strony 1
Zaloguj się lub zarejestruj by napisać odpowiedź
atari.area forum » Software, Gry - 8bit » Atari Basic - Czy była to pierwsza maszyna wirtualna (lub jedna z)
Wygenerowano w 0.019 sekund, wykonano 65 zapytań