deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Thoreau BASIC: Doğrudan UEFI donanım yazılımından başlayan bir GW-BASIC yorumlayıcısı

Tarjan'ın Thoreau BASIC'i, bir işletim sistemi olmadan çıplak UEFI donanımı üzerinde başlayan, gigabayt ölçeğinde veri segmentlerine ve bir Windows portuna sahip GW-BASIC uyumlu bir yorumlayıcı.

Thoreau BASIC: Doğrudan UEFI donanım yazılımından başlayan bir GW-BASIC yorumlayıcısı

İşletim sisteminden önce açılan bir BASIC

itch.io'da yazarı Tarjan tarafından yayımlanan ve şu anda Hacker News ana sayfasında yer alan Thoreau BASIC, çıplak donanımda çalışan bir GW-BASIC uyumlu yorumlayıcı: herhangi bir işletim sistemi araya girmeden doğrudan makinenin UEFI donanım yazılımından başlıyor. Bir Windows portu da mevcut. Her iki sürüm belleğe aynı yaklaşımla davranıyor ve yorumlayıcının veri segmentini, donanım yazılımının ya da Windows'un kullanılabilir olarak bildirdiği en büyük bloğa göre boyutlandırıyor — proje sayfasına göre modern bir makinede bu, gigabaytlara karşılık geliyor.

Programlar düz ASCII olarak yüklenip kaydediliyor; böylece listeler klasik BASIC tarzında okunabilir ve taşınabilir kalıyor.

Dil yüzeyi

Proje sayfası GW-BASIC ile uyumluluğu yakın ama tam değil olarak tanımlıyor ve desteklenen yüzey geniş. Sayısal türler 32 ve 64 bit tam sayıların yanı sıra tek ve çift duyarlıklı kayan noktalı sayıları kapsıyor; ayrıca dizeler (string) var ve satır numaraları 32 bit genişliğinde. Denetim akışında DEF FN, GOSUB, ON…GOTO/GOSUB ailesi ve DATA/READ/RESTORE yer alıyor. Dönemin yapılandırılmış hata işlemesi de mevcut: ON ERROR GOTO, RESUME varyantları, ERL ve ERR değişkenleri ve ON BREAK GOTO.

Grafik, metin ve spritelar

Grafik deyimleri — PSET, LINE, CIRCLE, PAINT ve ilgili komutlar — yerel framebuffer çözünürlüğünde çizim yapıyor ve ya 16 renkli bir EGA paleti ya da 24 bit RGB değerleri kabul ediyor. Bir SCREEN komutu mod talep ediyor; sayfaya göre SCREEN 1024,768 neredeyse her makinede çalışıyor ve genellikle açılışta elde edilen şey bu. Okunabilir GRAMAXX/GRAMAXY ve TXTMAXX/TXTMAXY değişkenleri gerçek sınırları bildiriyor ve mod değişikliğinden sonra güncelleniyor.

Bitmap'lar iki deyimle çalışıyor: LOADBMP, 24 veya 32 bpp'lik bir Windows .BMP dosyasını bir veri segmenti yuvasına okuyor ve BITBLT onu isteğe bağlı bir saydam renk anahtarıyla ekrana aktarıyor; bu da sprite desteğine denk geliyor. Metin tarafında yorumlayıcı, akıcı kaydırmalı bir konsolla IBM VGA 8×16 yazı tipini kullanıyor ve birden fazla metin penceresini destekliyor — her birinin kendi imleci ve renkleri var — ve düz bir PRINT hâlâ tüm ekrana yazıyor.

Eski tavanlar olmadan bellek, disk ve düzenleme

Bellek üç işaretçili bir modelle yönetiliyor ve 64 KB sınırı yok; sayfaya göre diziler milyarlarca öğeye kadar çıkabiliyor. PEEK, POKE ve VARPTR kullanılabilir; LOMEM, HIMEM, SCRNADR ve GRAPITCH gibi okunabilir işaretçi değişkenleriyle birlikte; HEX$ ve OCT$ ise 64 bit değerleri işliyor.

Disk G/Ç'si — SAVE, LOAD, MERGE, FILES, KILL — doğrudan UEFI Simple File System üzerinde çalışıyor; çıplak donanım sürümünün altında bir işletim sistemi olmadan program dosyalarını okuyup yazmasını sağlayan da bu. TIMER değişkeni, CPU'nun değişmez TSC'sinden türetilmiş yüksek hassasiyetli bir saatten besleniyor. Düzenleme olanakları arasında tam ekran EDIT, AUTO satır numaralandırma ve satırları yeniden numaralandırıp her GOTO/GOSUB/THEN/ELSE/ON…/RESTORE/RESUME/ERL referansını buna göre güncelleyen RENUM var.

Hızlı yineleme

v1.1 sürümü, satır başına bir token önbelleği, ifadeler için öncelik tırmanışlı (precedence-climbing) bir ayrıştırıcı ve değişken yuvası önbellekleme ekledi; yazar bunları hesaplama yoğun programlarda kabaca 25 kat hızlanmayla ilişkilendiriyor: paketle gelen Mandelbrot demosu yaklaşık 230 saniyeden 10 saniyenin altına düştü, Conway's Life etkileşimli hale geldi ve Lunar Lander artık sabit 100 fps'de çalışıyor.

Güncel sürümler birkaç gün içinde geldi. v1.1.1, çıplak donanımda yavaş kaydırmayı ve framebuffer yazmalarını düzeltti ve çalıştırılabilir dosyaya bir .bas dosya adı geçirildiğinde Windows otomatik başlatmayı ekledi. v1.1.2, Windows sürümünün 4 GB'dan az RAM'e sahip makinelerde çıkmayı bırakmasını engelledi, BASIC satırlarını satır numaraları hariç 244 karakterde sabitledi ve 32767'nin üzerindeki satır numaralarının boş 0. satır olarak görüntülenmesine yol açan bir EDIT/LIST hatasını düzeltti. v1.1.3, MID$'ı atama hedefi olarak kullanılabilir hale getirdi ve ERL saklamasını, çıkışta gösterilen hata satırını ve INPUT'taki geri tuşu davranışını düzeltti.

Neden önemli

GW-BASIC, 64 KB veri segmentlerinin ve 16 bit satır numaralarının olduğu bir döneme aitti. Thoreau BASIC lehçeyi koruyor — satır numaralı listeler, GOTO, PEEK ve POKE — ama tavanları kaldırıyor ve onu gigabayt ölçeğinde diziler, 64 bit aritmetik ve yerel çözünürlüklü framebuffer grafikleriyle eşleştiriyor. UEFI üzerinde başlamak onu nostaljik bir oyuncaktan öte yapıyor: yorumlayıcı fiilen donanım yazılımı düzeyinde kendi minimal ortamı; dosyaları doğrudan UEFI'nin dosya sistemi servisleri üzerinden yükleyip kaydediyor. Bu, retro bilgisayar meraklılarına klasik tarz BASIC'i bir emülatör olmadan modern donanımda çalıştırmanın pratik bir yolunu sunuyor ve 1980'lerin mikro tarzı "bilgisayar olarak BASIC komut istemi" bilişiminin kırk yıl ek bellekle neye benzeyebileceğine dair bir bakış sağlıyor.

  • #basic
  • #retro-computing
  • #uefi
  • #interpreter
  • #windows