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)
linux
command-line
programming
DiamondCoderMan
źródło
źródło
Odpowiedzi:
Jeśli chcesz uruchomić natywnie w Linux BASIC, masz kilka pakietów w Debianie do wyboru:
Aby je zainstalować:
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.źródło
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
:sdlbasic
:Strona główna (przewodnik)
Wikipedia
źródło
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 jakoC:
, 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.
źródło
Napisałeś w komentarzu do odpowiedzi Foon'a na to
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ć:
Utwórz program uruchamiający pulpit, który otwiera terminal
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 .
Utwórz osobne konto użytkownika za pomocą interpretera BASIC jako powłoki
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 doNastępnie powinieneś być w stanie wejść do czystego środowiska BASIC poprzez sudo:
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.
Użyj interpretera języka BASIC jako init
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 takinit
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.źródło
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 jesttype -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 Exchangeinit
na skonfigurowaniu systemu init do używaniabwbasic
zamiastagetty
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.
źródło
kegs
wydaje się , że nie jest jednym z nich (bezapt-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.
źródło
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.
źródło