Chciałbym uruchomić kod BASIC, tak jak robiłeś to na starszych komputerach, w Linuksie. (Szukam BASIC Interruptera, który może natywnie uruchamiać funkcje systemu operacyjnego)
Jakie mam opcje? (Najlepiej dla Debiana i Archa)
Chciałbym uruchomić kod BASIC, tak jak robiłeś to na starszych komputerach, w Linuksie. (Szukam BASIC Interruptera, który może natywnie uruchamiać funkcje systemu operacyjnego)
Jakie mam opcje? (Najlepiej dla Debiana i Archa)
Odpowiedzi:
Jeśli chcesz uruchomić natywnie w Linux BASIC, masz kilka pakietów w Debianie do wyboru:
Brandy jest tłumaczem dla BBC BASIC V, dialektu języka BASIC, który Acorn Computers dostarczył wraz z gamą komputerów stacjonarnych, które korzystają z procesorów ARM, takich jak Archimedes i Risc PC, i jest nadal używany na tych i kompatybilnych.
BASIC V is a much extended version of BBC BASIC.
To był BASIC zastosowany w BBC Micro opartym na 6502, który Acorn wyprodukował w latach 80.
bwBASIC może być skonfigurowany do emulacji funkcji, poleceń i funkcji dostępnych w różnych typach tłumaczy BASIC;
bwBASIC implementuje jedną funkcję niedostępną w poprzednich interpretatorach BASIC: polecenie powłoki można wprowadzić interaktywnie w wierszu polecenia bwBASIC, a interpreter wykona je pod powłoką polecenia.
Na przykład polecenie „dir * .bas” można wprowadzić w bwBASIC (w systemie DOS lub „ls -l * .bas” w systemie UNIX) i będzie ono wykonywane z poziomu wiersza poleceń systemu operacyjnego.Polecenia powłoki mogą być również podawane w liniach numerowanych w programie bwBASIC, dzięki czemu bwBASIC może być używany jako język programowania powłoki. Implementacja bwBASIC komend i funkcji RMDIR, CHDIR, MKDIR, NAME, KILL, ENVIRON i ENVIRON $ () oferuje dalsze możliwości przetwarzania powłoki.
Aby je zainstalować:
sudo apt-get install brandy bwbasic
Jeśli chodzi o moje osobiste doświadczenia, wolę, bwbasic
ponieważ pozwala on mieć moc BASIC w tekstowym wierszu poleceń lub skrypcie powłoki.
Alternatywnie, masz także kilka pakietów emulacji starych komputerów, które oczywiście oprócz składni BASIC implementują całe środowisko starego komputera, które możesz chcieć ponownie przeżyć.
Co ciekawe, bwbasic
teoretycznie może pozwolić na automatyzację operacji w Uniksie, np. Budowanie skryptów przy użyciu języka BASIC. Nigdy tego nie próbowałem.
Moje systemy Debian i prawdopodobnie większość innych dystrybucji Linuksa mają kilka opcji dostępnych bezpośrednio w menedżerze pakietów. Pomiędzy nimi:
bwbasic
:Bywater BASIC Interpreter (bwBASIC) implementuje duży nadzbiór standardu ANSI dla Minimal BASIC (X3.60-1978) i znaczną część standardu ANSI dla Full BASIC (X3.113-1987) w C. Oferuje również powłokę możliwości programowania jako rozszerzenie BASIC. bwBASIC stara się być jak najbardziej przenośny.
sdlbasic
:sdlBasic to mały, wydajny i wieloplatformowy interpreter języka BASIC do tworzenia gier z wykorzystaniem biblioteki SDL. Inspiracją był stary i chwalebny AMOS.
Ponieważ wydaje się, że wszyscy zakładają, że masz na myśli „komputer sprzed IBM” przez „starsze komputery”, pójdę inną drogą i zaoferuję odpowiedź, która interpretuje „starsze komputery” w znaczeniu „kompatybilnych z IBM przed Windows 9x”.
Jeśli miałeś na myśli komputery z zainstalowanymi wersjami MS-DOS QBASIC.EXE
, masz trzy opcje, w zależności od tego, jak ściśle zdefiniujesz uruchamianie ich „w systemie Linux”:
Jeśli nadal masz kopię QBASIC.EXE
, możesz użyć DOSBox lub DOSEMU, aby uruchomić ją w zwirtualizowanym środowisku DOS. (Oba są dostępne w repozytoriach Debiana i są łatwe do skonfigurowania. Wystarczy ustawić folder, który ma zostać zamontowany jako C:
, wrzuć QBASIC.EXE
do niego i gotowe.)
Zapewni to doskonałą zgodność ze starym kodem źródłowym, ale żadna integracja z systemem operacyjnym hosta poza „nie C:
jest w rzeczywistości folderem, a obrazem dysku”.
Powinienem jednak wyjaśnić, że istnieje między nimi kompromis. DOSEMU będzie działał na dowolnym terminalu, który chcesz, ale nie będzie obsługiwał fantazyjnych sztuczek niskiego poziomu, z których korzystasz (np. W specjalistycznych trybach graficznych). Jedyny sposób na wsparcie, że jest pełny emulator jak DOSBox DOSBox ... ale pojawi się we własnym oknie, zamiast przy użyciu terminala.
FreeBASIC ma qb
dialekt / tryb, który ma na celu idealną kompatybilność z dużym podzbiorem QuickBASIC. (Nieobsługiwane są głównie rzeczy niskiego poziomu związane z faktem, że QuickBASIC był 16-bitowym systemem w trybie rzeczywistym, podczas gdy FreeBASIC to 32-bitowy system w trybie chronionym.)
FreeBASIC oferuje pliki binarne dla Linuksa, ale znajdziesz je w swoim repozytorium pakietów, jeśli naprawdę miałeś na myśli „dystrybucje rodziny Debian” zamiast „Debian” i korzystasz z Ubuntu lub pochodnej Ubuntu, takiej jak Mint.
Kompilacje QB64 dla Linuksa nawet nie znajdują się w repozytoriach Ubuntu, ale ma na celu być najbardziej zgodnym potomkiem QuickBASIC w trybie chronionym, a nawet zapewnia IDE, które próbuje sklonować IDE QBasic / QuickBasic.
Napisałeś w komentarzu do odpowiedzi Foon'a na to
Rozumiem przez „jak stare komputery”, że to właśnie tam jest
Inni przedstawili kilka różnych sugestii dla tłumaczy BASIC, które można zainstalować w systemie Linux, więc nie pójdę tam. Współczesne komputery PC na ogół nie są wyposażone we wbudowane interpretery języka BASIC, więc utknąłeś podczas uruchamiania czegoś, co może uruchomić zainstalowany interpreter języka BASIC.
Raczej wezmę powyższe, co oznacza, że chcesz czegoś, co automatycznie uruchamia interpreter języka BASIC, podobnie jak, ale nie do końca, jak wczesne mikrokomputery (takie jak Apple II, Commodore C-64, Zinclair ZX-81 i ich podobne ) załadowano do natywnego interpretera języka BASIC.
Są w zasadzie trzy sposoby, aby to zrobić:
Jest to najmniej inwazyjne, ponieważ działa w pełni w systemie i środowisku, do którego jesteś przyzwyczajony.
Zasadniczo, niezależnie od tego, co zapewnia środowisko pulpitu, tworzysz program uruchamiający program i konfigurujesz go tak, aby uruchamiał wybrany przez ciebie interpreter BASIC w terminalu. Aby uzyskać dodatkowy efekt, możesz ustawić określone czcionki, kolory itp., Aby symulować środowisko minionych dni. Dokładnie to, jak to zrobisz, zależy od używanego środowiska pulpitu, którego nie określiłeś, ale kliknięcie prawym przyciskiem myszy w miejscu, w którym aktualnie klikasz, aby uruchomić aplikacje i szukasz opcji utworzenia nowego programu uruchamiającego, będzie dobrym początkiem .
Jest to trochę bardziej zaangażowane niż prosty program uruchamiający pulpit, ale dostawcy lepiej izolują się, aby nie ryzykować zepsucia własnych plików. Najpierw zainstaluj interpreter BASIC; Wykorzystam bwbasic
na przykład, ale wszystko idzie tak długo, jak działa natywnie w terminalu. Następnie dodaj użytkownika i ustaw jego powłokę na interpreter bwbasic. Można to zrobić za pomocą GUI, ale zależy to od używanego środowiska pulpitu; podejście przenośne polega na korzystaniu z terminala za pomocą useradd
. To będzie coś podobnego do
$ sudo -i
# grep -q "$(type -pP bwbasic)" /etc/shells || echo "$(type -pP bwbasic)" >>/etc/shells
# useradd --home /home/basic --create-home --shell "$(type -pP bwbasic)" basic
Następnie powinieneś być w stanie wejść do czystego środowiska BASIC poprzez sudo:
$ sudo -i -u basic
Możesz utworzyć program uruchamiający (jak wyżej), który wykonuje to polecenie w terminalu, jeśli chcesz.
Podaj swoje normalne hasło, gdy pojawi się monit sudo. Możesz edytować konfigurację sudoers, aby w razie potrzeby uniknąć monitu o hasło, ale pamiętaj, że edycja sudoers jest nieco skomplikowana, a tym bardziej ryzykowna; możesz zablokować się z konta root, co utrudnia naprawienie konfiguracji.
Jest to najbardziej inwazyjne podejście, ale zbliża cię do tego, jak działały wczesne mikrokomputery, uruchamiając bezpośrednio do interpretera BASIC. Nie polecam tego i uważam, że jest mało prawdopodobne, aby działał bez znacznej pracy, ale włączam to dla kompletności.
Jądro Linux akceptuje parametr wiersza poleceń (tak, jądro Linux ma parametry wiersza poleceń; możesz zobaczyć aktualnie uruchomiony wiersz poleceń, czytając z / proc / cmdline) o nazwie init
, która określa, który program ma zostać wykonany po zakończeniu inicjalizacji jądra. Możesz skonfigurować moduł ładujący (najprawdopodobniej GRUB), aby zezwolić na uruchomienie pozycji jądra, która mówi, że tak init
powinno być /usr/bin/bwbasic
(lub cokolwiek innego zainstalowanego interpretera BASIC).
Aby to zadziałało, interpreter języka BASIC, podobnie jak wszystkie wymagane pliki, musi znajdować się w /
systemie plików root ( ). Wynika to z faktu, że jednym z zadań init jest montowanie wszystkich systemów plików, a ponieważ udostępniasz program inny niż init jako init, systemy plików użytkownika innego niż root nie zostaną podłączone. (Wierzę, że innym zadaniem init jest ponowne zamontowanie systemu plików root w trybie do odczytu i zapisu, więc dzięki trywialnemu podejściu nie będziesz w stanie nic zapisać. Możesz jednak, w zależności od dokładnych szczegółów implementacji, być w stanie system powinien wykonać coś takiegomount -o remount,rw /
do ponownego zamontowania głównego systemu plików do odczytu i zapisu). Wybrany przez ciebie interpreter języka BASIC nie może zależeć od niczego, za co odpowiedzialny jest init, i nie będziesz mieć dostępu do żadnych funkcji obsługiwanych przez init ani żadnych procesów spawnowanych przez init (na przykład , obsługa sieci lub obsługa wielu użytkowników).
Wiersz poleceń jądra czegoś podobnego ro quiet init=/usr/bin/bwbasic
prawdopodobnie zbliży cię do tego, jak wyglądał w dawnych czasach.
sudo echo
nie robi tego, co masz na myśli i prawdopodobnie i -bash: /etc/shells: Permission denied
tak się spotkasz, ponieważ >>
przekierowanie jest konfigurowane przez bash przed oceną reszty polecenia. Prawdopodobnie najlepiej jest type -P bwbasic | sudo tee -a /etc/shells
zamiast tego użyć . Patrz " uprawnienia - Jak wstawić tekst do pliku głównego własnością używając sudo - Unix & Linux Stos Exchange
init
na skonfigurowaniu systemu init do używania bwbasic
zamiast agetty
i nie uruchamiania menedżera wyświetlania X11. (Dla innych, którzy nie wiedzą o czym mówię, jądro udostępnia różne „wirtualne konsole” dostępne za pomocą Ctrl + Alt + F1 poprzez Ctrl + Alt + F12, a system init domyślnie uruchamia się agetty
od 1 do 6 i X11 Display Manager (który zapewnia okno logowania) na 7. Przed Upstart i systemd był kontrolowany przez /etc/inittab
.), getty
a jego potomkowie obsługują monity logowania do konsoli.
Aby rzucić alternatywę: istnieje wiele emulatorów dla Linuksa, które mogą działać twoje stare komputery. Na przykład, w przypadku Xkegs, jeśli uruchomisz go, powinieneś poczekać na podstawowy monit AppleSoft. Komunikowanie się z innymi rzeczami związanymi z linuksem to ćwiczenie pozostawione czytelnikowi (wskazówka: technicznie uważam, że możesz przekierować wyjście emulowanego jabłka do emulowanej drukarki, które xkegs następnie ujawni jako gniazdo sieciowe, którego możesz użyć np. Nc do zasilania niektóre inne potokowe aplikacje itp. Nie jestem pewien, czy istnieje inna droga, ale można się spodziewać czegoś podobnego). Spodziewałbym się, że emulatory Commodore 64 podobnie będą miały sposób obsługiwać podstawowe Commodore itp.
kegs
wydaje się , że nie jest jednym z nich (bez apt-cache search
rezultatu). A dla niektórych / większości emulatorów prawdopodobnie będziesz musiał skądś zdobyć oryginalną pamięć ROM.
init=/usr/bin/sdlbasic
do jądra Linux, który czy to działa będzie Ci o wiele bliżej, ale to może być lub może nawet nie praca.
Istnieje wiele alternatyw. Moja sugestia jest podobna do odpowiedzi ssokołowa. Jeśli chcesz „nowoczesnego” języka BASIC, ale ze składnią podobną do starych interpreterów języka BASIC, powinieneś wypróbować BaCon . Jest to transpilator BASIC, który generuje kod macierzysty. Projekt ma całkiem niezłą instrukcję, wiele bibliotek i przykładów, a nawet IDE napisane w BaCon.
Możesz uruchomić C64 w przeglądarce i w ten sposób używać języka BASIC.
http://codeazur.com.br/stuff/fc64_final/
Pamiętaj, że układ klawiatury jest inny, np. W Shift-2przypadku cytatów.
http://jilltxt.net/wp-content/uploads/C64-keyboard-layout.png
Applesoft BASIC, jeśli wolisz - http://calormen.com/jsbasic/
Istnieją emulatory innych maszyn online,
ale wiele z nich przechodzi bezpośrednio do dowolnego załadowanego programu,
bez emulacji początkowej klawiatury wymaganej do uzyskania dostępu.