BASIC kodunu bir terminalde nasıl çalıştırabilirim?


20

Linux'ta eski bilgisayarlarda yaptığınız gibi BASIC kodunu çalıştırmak istiyorum. (İşletim sistemi işlevlerini doğal olarak çalıştırabilen bir TEMEL Kesici arıyorum)

Hangi seçeneklerim var? (Tercihen Debian tabanlı ve Arch tabanlı)


2
Basic'in birçok (gerçekten uyumlu olmayan) sürümü vardır.
Thomas Dickey

2
@ThomasDickey Debian etiketine sahip olduğu için Debian'ı soruya ekledim.
Rui F Ribeiro

Yanıtlar:


24

Linux BASIC'de yerel olarak çalıştırmak istiyorsanız, Debian'da aralarından seçim yapabileceğiniz birkaç paketiniz vardır:

  • brendi uyumlu BBC Micro BASIC - X11 grafik arayüzünde çalışır, ses ve grafikleri benzer şekilde destekler;

Brandy, Acorn Computers'in Arşimet ve Risc PC gibi ARM işlemcisini kullanan masaüstü bilgisayar serileriyle tedarik ettiği ve bu ve uyumlu cihazlarda hala kullanımda olan BASIC lehçesi BBC BASIC V için bir tercüman.

   BASIC V is a much extended version of BBC BASIC. 

Bu, Acorn'un 1980'lerde yaptığı 6502 tabanlı BBC Micro'da kullanılan TEMEL idi.

  • bwbasic - byWater BASIC - metin modu, ANSI uyumlu olduğunu iddia ediyor, bilinçli uzantılara sahip ve IBM BASICA, Microsoft BASIC ve gwBASIC dahil olmak üzere çeşitli "eski" BASIC lehçeleri taklit edebilecek / iyi uyum sağlayabileceğini iddia ediyor.

bwBASIC, farklı BASIC yorumlayıcı türlerinde bulunan özellikleri, komutları ve işlevleri taklit edecek şekilde yapılandırılabilir;

bwBASIC, önceki BASIC yorumlayıcılarında bulunmayan bir özelliği uygular: bwBASIC komut isteminde bir kabuk komutu etkileşimli olarak girilebilir ve yorumlayıcı bunu bir komut kabuğu altında yürütür.
Örneğin, "dir * .bas" komutu bwBASIC'e (DOS altında veya UNIX altında "ls -l * .bas") girilebilir ve işletim sistemi komut satırından olduğu gibi yürütülür.

Kabuk komutları, bwBASIC programındaki numaralı satırlarda da verilebilir, bwBASIC kabuk programlama dili olarak kullanılabilir. bwBASIC'in RMDIR, CHDIR, MKDIR, NAME, KILL, ENVIRON ve ENVIRON $ () komutlarını ve işlevlerini uygulaması, daha fazla kabuk işleme yeteneği sunar.

Bunları kurmak için:

sudo apt-get install brandy bwbasic

Kişisel deneyimime gelince bwbasic, bir metin komut satırında veya kabuk komut dosyasında BASIC gücüne sahip olmasını tercih ettiğim için tercih ediyorum .

Alternatif olarak, eski bilgisayarların emülasyon paketlerine de sahipsiniz, ki bu temelde BASIC sözdiziminin yanı sıra, yeniden yaşamak isteyebileceğiniz bazı eski bilgisayarların tüm ortamını uygular.

İlginç bir şekilde, bwbasicteoride, Unix'teki otomasyon işlemlerine izin verebilir, örneğin BASIC dilini kullanarak komut dosyaları oluşturmak. Asla denemedim.


9

Debian sistemlerim ve muhtemelen diğer Linux dağıtımlarının çoğu, doğrudan paket yöneticisi aracılığıyla kullanılabilecek birkaç seçeneğe sahiptir. Onların arasında:

  • bwbasic:

Bywater BASIC Tercüman (bwBASIC), Minimal BASIC için ANSI Standardının (X3.60-1978) büyük bir üst kümesini ve C'deki ANSI Standardı için Tam BASIC'in (X3.113-1987) önemli bir alt kümesini uygular. BASIC'in bir uzantısı olarak programlama olanakları. bwBASIC mümkün olduğunca portatif olmayı hedeflemektedir.

  • sdlbasic:

sdlBasic, SDL kütüphanesinin gücünü kullanarak oyun oluşturmak için küçük, verimli ve çok platformlu bir BASIC yorumlayıcısıdır. Eski ve görkemli AMOS'tan ilham aldı.

Ana sayfa (Başvuru kılavuzu)

Vikipedi


8

Herkes "eski bilgisayarlar" ile "IBM öncesi PC" demek istediğinizi varsaydığı için, diğer rotaya gideceğim ve "eski bilgisayarları" "Windows 9x öncesi IBM uyumlu" olarak yorumlayan bir yanıt sunacağım.

MS-DOS sürümlerini çalıştıran bilgisayarları kastediyorsanız QBASIC.EXE, "Linux'ta" çalıştırmayı ne kadar kesin olarak tanımladığınıza bağlı olarak üç seçeneğiniz vardır:

  1. Hala QBASIC.EXEtekmeleme kopyası varsa, sanallaştırılmış bir DOS ortamında çalıştırmak için DOSBox veya DOSEMU kullanabilirsiniz . (Her ikisi de Debian'ın depolarında mevcuttur ve kurulumu kolaydır. Sadece bir klasör olarak bağlanacak şekilde C:bırakın, QBASIC.EXEiçine bırakın ve hazırsınız.)

    Bu size eski kaynak koduyla mükemmel uyumluluk sağlar, ancak ana bilgisayar işletim sistemi ile " C:aslında bir disk görüntüsü yerine bir klasördür " dışında hiçbir entegrasyon sağlamaz .

    Bununla birlikte, ikisi arasında bir değiş tokuş olduğunu açıklığa kavuşturmalıyım. DOSEMU, istediğiniz herhangi bir terminalde çalışır, ancak kullanılan bazı QBasic öğelerini (örneğin, özel grafik modları için) süslü düşük düzey hileleri desteklemez. Bunu desteklemenin tek yolu DOSBox gibi tam bir emülatördür ... ancak DOSBox terminalinizi kullanmak yerine kendi penceresini açacaktır.

  2. FreeBASIC , genişqb bir QuickBASIC alt kümesiyle mükemmel uyumluluğu amaçlayan bir lehçe / moda sahiptir . (Desteklenmeyen şeyler, QuickBASIC'in 16 bit gerçek mod sistemi, FreeBASIC 32 bit korumalı mod sistemi olmasıyla ilgili çoğunlukla düşük seviyeli şeylerdir.)

    FreeBASIC, Linux ikili dosyaları sunar, ancak paket deponuzda yalnızca "Debian" yerine "Debian-aile dağıtımları" anlamına geldiyse ve Ubuntu veya Mint gibi bir Ubuntu türevi kullanıyorsanız bulursunuz.

  3. QB64'ün Linux yapıları Ubuntu depolarında bile değil, özellikle en uyumlu korumalı mod QuickBASIC soyundan olmayı hedefliyor ve hatta QBasic / QuickBasic IDE'yi klonlamaya çalışan bir IDE sağlıyor.


8

Sen yazdığı bir yorum için Foon cevabı o

Demek istediğim "eski bilgisayarlar gibi"

Diğerleri, bir Linux sistemine kurabileceğiniz BASIC tercümanları için birkaç farklı öneri sağladı, bu yüzden oraya gitmeyeceğim. Modern PC'ler genellikle yerleşik BASIC tercümanları ile birlikte gelmez, bu nedenle kurulu bir BASIC tercümanı çalıştırabilecek bir şeyi önyüklemeye takılıp kalıyorsunuz.

Bunun yerine, yukarıdaki mikrobilgisayarların (Apple II, Commodore C-64, Zinclair ZX-81 ve ilkleri gibi) ) yerel BASIC yorumlayıcısına önyükleme yapar.

Bunu yapmanın temel olarak üç yolu vardır:

Terminal açan bir masaüstü başlatıcısı oluşturma

Bu en az invaziv, çünkü alıştığınız sistem ve ortamda tamamen çalışıyor.

Temel olarak, masaüstü ortamınız ne olursa olsun, bir program başlatıcısı oluşturursunuz ve bunu bir terminalde seçtiğiniz BASIC yorumlayıcıyı başlatacak şekilde ayarlarsınız. Ekstra efekt için, geçtiğimiz günlerin ortamını simüle etmek için belirli yazı tiplerini, renkleri vb. Ayarlayabilirsiniz. Bunu nasıl yapacağınız tam olarak belirtmediğiniz, kullandığınız masaüstü ortamına bağlıdır, ancak şu anda uygulamaları başlatmak için tıkladığınız yeri sağ tıklatıp yeni bir başlatıcı oluşturma seçeneği aramak iyi bir başlangıç ​​olacaktır. .

Kabuk olarak BASIC yorumlayıcıyla ayrı bir kullanıcı hesabı oluşturun

Bu, basit bir masaüstü başlatıcısından biraz daha karmaşıktır, ancak sağlayıcılar daha iyi izolasyon sağlar, böylece kendi dosyalarınızı bozma riskiniz olmaz. İlk olarak bir BASIC yorumlayıcı kurun; bwbasicÖrnek için kullanacağım , ancak bir terminalde doğal olarak çalıştığı sürece her şey gidiyor. Sonra bir kullanıcı ekleyin ve kabuğunu bwbasic yorumlayıcı olarak ayarlayın. Bu, GUI aracılığıyla yapılabilir, ancak bu, kullandığınız masaüstü ortamına bağlıdır; taşınabilir yaklaşım bunu kullanarak bir terminalde yapmaktır useradd. Bu benzer bir şey olacak

$ 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

Daha sonra sudo üzerinden temiz bir BASIC ortamına girebilmelisiniz:

$ sudo -i -u basic

İsterseniz bir terminalde bu komutu yürüten bir başlatıcı (yukarıdaki gibi) oluşturabilirsiniz.

Sudo tarafından istendiğinde normal şifrenizi girin. İsterseniz şifre isteminden kaçınmak için sudoers yapılandırmasını düzenleyebilirsiniz, ancak sudoer'ları düzenlemenin biraz karmaşık ve hatta daha riskli olduğunu unutmayın; kendinizi kök hesaptan kilitleyebilir ve yapılandırmayı onarmayı oldukça zorlaştırabilirsiniz.

BASIC yorumlayıcıyı init olarak kullanma

Bu en invaziv yaklaşımdır, ancak doğrudan BASIC yorumlayıcısında önyükleme yaparak mikrobilgisayarların erken çalışma şekline en yakın olanı da size sunar. Bunu tavsiye etmiyorum ve önemli bir iş olmadan çalışmanın pek mümkün olmadığını düşünürdüm , ancak tamlık için dahil ediyorum .

Linux çekirdeği, bir komut satırı parametresini kabul eder (evet, Linux çekirdeğinde komut satırı parametreleri vardır; initçekirdek başlatma işlemi tamamlandıktan sonra hangi programın çalıştırılacağını belirten / proc / cmdline'dan okuyarak o anda önyüklenen komut satırını görebilirsiniz) . Önyükleme yükleyiciyi (büyük olasılıkla GRUB), initolması gereken /usr/bin/bwbasic(veya yüklediğiniz diğer BASIC yorumlayıcılardan hangisi olursa olsun) yazan bir çekirdek girişini önyüklemenize izin verecek şekilde yapılandırabilirsiniz .

Bunun çalışması için, BASIC yorumlayıcısının yanı sıra gereken tüm dosyalar root ( /) dosya sisteminde bulunmalıdır . Bunun nedeni, init'in görevlerinden birinin tüm dosya sistemlerini bağlamaktır ve init olarak init olmayan bir program sağladığınız için, kök olmayan dosya sistemleri bağlanmamıştır. (Init'in başka bir görevinin okuma-yazma modunda kök dosya sistemini yeniden monte etmek olduğuna inanıyorum, bu yüzden önemsiz yaklaşımla hiçbir şeyi kaydedemeyeceksiniz. Ancak, kesin uygulama ayrıntılarına bağlı olarak, sistemin böyle bir şey yapmasını sağlayınmount -o remount,rw / Kök dosya sistemi okuma-yazma işlemini yeniden yapmak için.) Seçtiğiniz BASIC yorumlayıcısı, init'in sorumlu olduğu hiçbir şeye bağlı olmamalıdır ve init veya init tarafından üretilen herhangi bir işlem tarafından yönetilen herhangi bir tesise erişemeyeceksiniz (örneğin, , ağ veya çok kullanıcılı destek).

Böyle bir şeyin çekirdek komut satırı, ro quiet init=/usr/bin/bwbasicmuhtemelen eski günlerde nasıl göründüğüne oldukça yakın olacaktır.



Kullanımınız, sudo echone demek istediğinizi yapmaz ve komutun geri kalanı değerlendirilmeden önce yönlendirme bash tarafından ayarlandığından -bash: /etc/shells: Permission denied, muhtemelen yine de karşılaşırsınız >>. Bunun type -P bwbasic | sudo tee -a /etc/shellsyerine kullanmak muhtemelen en iyisidir . Bkz. " İzinler - sudo kullanarak kök sahip olunan bir dosyaya metin nasıl eklenir? - Unix ve Linux Stack Exchange
shalomb

@shalomb İyi bir nokta, bahsettiğiniz için teşekkürler. Bunu düzelttim, ama biraz farklı bir şekilde.
CVn

1
@ MichaelKjörling Bir intikal initsistemini bir X11 ekran yöneticisi kullanmak bwbasicyerine başlatacak şekilde yapılandırmak için BASIC yorumlayıcı kullanmanın daha az sert bir alternatifidir agetty. (Neden bahsettiğimi bilmeyenler için, çekirdek Ctrl + Alt + F1 aracılığıyla erişilebilen çeşitli "sanal konsollar" sağlar ve Ctrl + Alt + F12 ile başlangıç ​​sistemi varsayılan agettyolarak 1'den 6'ya kadar başlar ve X11 Display Manager (bir oturum açma iletişim kutusu sağlar) 7. Upstart ve systemd'den önce /etc/inittab. ile kontrol edildi getty.
ssokolow

@ssokolow Tamlık için iyi bir fikir, ancak bu noktada bwbasic kabuğu olan özel bir kullanıcı hesabından sadece bir adım öndesiniz, bu yüzden genel çeşitlilik açısından gerçekten çok fazla şey kattığını düşünmüyorum.
bir CVn

4

Sadece bir alternatif atmak için: Linux için eski bilgisayarlarınızı çalıştırabilecek birden çok emülatör var . Örnek olarak, xkegs ile, önyükleme yaparsanız, sizi bekleyen appleoft temel istemine sahip olmalısınız. Teknik olarak, sana xkegs o zaman örneğin kullanabileceğiniz bir ağ soket olarak gösterecektir taklit yazıcı, sizin Taklit Apple'da çıkışını yönlendirebilirsiniz inanıyoruz: Diğer linux şeylerle iletişim okuyucuya (ipucu soldan bir egzersizdir nc içine beslemesine başka bir borulu uygulama vb. emin olabilirsiniz. Commodore 64 emülatörlerinin benzer şekilde commodore'un temelini çalıştırmak için bir yolu olmasını beklerdim.


Evet, Debian'a kolayca kurulabilen birçok emülatör var, ancak kegsbunlardan biri gibi görünmüyor ( apt-cache searchsonuç yok ). Ve emülatörlerin bazıları / çoğu için, muhtemelen bir yerden orijinal bir ROM almanız gerekecektir.
Alex Stragies

Ayrıca, bir terminalde çalıştırılabilen bir emülatöre başvurmak için cevabınızı düzenlemek isteyebilirsiniz (OP geçmişte bir ara Q'yu düzenledi)
Alex Stragies


Ne demek "eski bilgisayarlar gibi" ile onun sadece orada olduğunu
DiamondCoderMan

1
@DiamondCoderMan Kabuk olarak bhbasic, brandy veya sdlbasic gibi bir şeyi bash yerine kullanan bir kullanıcı hesabı oluşturabilirsiniz. Linux'ta, muhtemelen BASIC yorumlayıcısına önyüklenen eski mikrobilgisayarlar gibi çalışan bir sisteme pratik olarak en yakın olanı budur. Sen olabilir ayrıca gibi bir şey geçmesi init=/usr/bin/sdlbasicLinux çekirdeği için çalışıp çalışmadığını size çok daha yakın olsun, ancak olmayabilir hatta iş olabilir veya.
CVn

1

Birçok alternatif var. Benim önerim ssokolow'un cevabına benzer. "Modern" bir BASIC istiyorsanız, ancak eski BASIC tercümanlarına benzer bir sözdizimiyle BaCon'a bir şans vermelisiniz . Yerel kod üreten bir BASIC transpiler. Proje oldukça iyi bir el kitabına, çok sayıda kütüphaneye ve örneğe ve hatta BaCon'da yazılmış bir IDE'ye sahiptir.

resim açıklamasını buraya girin


Ama bu terminal için değil
DiamondCoderMan

Transpiler terminalde çalışır. Küçük ve çalıştırılabilir dosyayı oluşturmak için bir C derleyicisi kullanır. IDE sadece projenin ne kadar güçlü olduğunun bir örneğiydi.
Rufo El Magufo

-2

Tarayıcınızda bir C64 çalıştırabilir ve BASIC'i bu şekilde kullanabilirsiniz.

http://codeazur.com.br/stuff/fc64_final/

Klavye düzeninin farklı olduğunu unutmayın, yani Shift-2tırnak işaretleri için.

http://jilltxt.net/wp-content/uploads/C64-keyboard-layout.png

İsterseniz Applesoft BASIC - http://calormen.com/jsbasic/

Çevrimiçi olarak diğer makinelerin emülatörleri vardır,
ancak birçoğu
oraya ulaşmak için gereken ilk klavye girişini taklit etmeden doğrudan yüklediğiniz programa gider .


1
Javascript tabanlı bir web tarayıcısı emülatöründe çalıştırıyorsanız bu "terminalde" nasıl olur?
Wyatt8740

3
"Bir terminalde" kısmı sorunun başlığında
roaima

1
@ Doyousketch2 Başlığa biraz daha dikkatlice bakın. i.imgur.com/jDBZVEO.png
Wyatt8740 17:17

1
İlk revizyon başlığında bile , bir BASH terminalinde BASIC kodu nasıl çalıştırılır?
bir CVn

2
Bir C64 veya 8 bitlik bir sistem için tasarlanmış bir yazılımsa, tüm makineyi taklit etmek gerçekten en iyi fikirdir - o döneme ait çok az önemsiz temel program, en ufak bir donanımdan bağımsız gibi bile olabilir!
rackandboneman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.