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ı)
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ı)
Yanıtlar:
Linux BASIC'de yerel olarak çalıştırmak istiyorsanız, Debian'da aralarından seçim yapabileceğiniz birkaç paketiniz vardır:
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, 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, bwbasic
teoride, Unix'teki otomasyon işlemlerine izin verebilir, örneğin BASIC dilini kullanarak komut dosyaları oluşturmak. Asla denemedim.
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ı.
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:
Hala QBASIC.EXE
tekmeleme 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.EXE
iç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.
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.
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.
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:
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. .
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.
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), init
olması 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/bwbasic
muhtemelen eski günlerde nasıl göründüğüne oldukça yakın olacaktır.
sudo echo
ne 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/shells
yerine kullanmak muhtemelen en iyisidir . Bkz. " İzinler - sudo kullanarak kök sahip olunan bir dosyaya metin nasıl eklenir? - Unix ve Linux Stack Exchange
init
sistemini bir X11 ekran yöneticisi kullanmak bwbasic
yerine 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 agetty
olarak 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
.
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.
kegs
bunlardan biri gibi görünmüyor ( apt-cache search
sonuç yok ). Ve emülatörlerin bazıları / çoğu için, muhtemelen bir yerden orijinal bir ROM almanız gerekecektir.
init=/usr/bin/sdlbasic
Linux çekirdeği için çalışıp çalışmadığını size çok daha yakın olsun, ancak olmayabilir hatta iş olabilir veya.
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.
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 .