SCELBAL - SCELBAL

SCELBALkısaltması Bilimsel Temel Lisans Dili, bir sürümüdür BASIC programlama dili 1976'da yayınlandı SCELBI ve diğer erken Intel 8008 ve 8080 tabanlı mikro bilgisayarlar gibi Mark-8. Dile sonraki eklentiler genişletilmiş bir matematik paketi içeriyordu ve dize işleme. Orijinal sürüm için 8 kB Veri deposu ilaveler 16 kB talep etti.

Dil, kitap biçiminde yayınlandı ve ardından giriş bölümleri ile akış şemaları ve sonra 8008 montajcı kodu. Kitap daha fazla bellek tasarrufu yapmanın, örneğin dizileri kapatmanın ve kullanıcı tarafından yeni özelliklerin nasıl ekleneceğini açıkladı.

Tarih

SCELBAL'ın birincil yazarı, 1974'te SCELBI'nin duyurulduğu lise öğrencisi Mark Arnold'dur. Arnold, profesörlerle arkadaştı. Wyoming Üniversitesi (UW) ve onlar aracılığıyla onların Sigma 7 Merkezi işlem birimi bilgisayarı. SCELBAL haline gelen şeyin ilk versiyonu bu makine için yazılmıştır. O yıl daha sonra 8008 yazdı çapraz derleyici o platformda.

Arnold, 1975'te UW'ye girdi ve SCELBI'nin kurucularından Nat Wadsworth ile temasa geçti ve derlenmiş yeni platformları için BASIC sürümü. Bu, ara sürümleri kaydedecek çok geçişli bir sistem olacaktır. kaset. Bu kullanımı çok yorucu olabilir ancak sistemin 4 kB 8H modellerinde çalışacak programlar üretecektir. Wadsworth bir çevirmen Sistemin yeni 8B modellerinde mevcut olacak olan 8 kB gerektirir. Kullanılan dil kayan nokta Wadsworth tarafından 1975'te yayınlanan rutinler 8008 için Makine Dili Programlama.

Wadsworth'un sonunda Arnold'a bir 8B geliştirme sistemi göndermeyi içeren bir sözleşme ayarlaması birkaç ay sürdü. Bu, dilin 1976'ya yayılmasını önemli ölçüde geciktirdi. Arnold, bu gecikmelerden yoksun, SCELBAL'in yaklaşık olarak aynı zamanda piyasaya sürülebileceğini tahmin etti. Altair TEMEL İlk olarak, 1975'in ikinci sayısında uzun bir makalede sunuldu. Dr. Dobb's Journal Şubat 1976'da.[1]

SCLEBAL'in piyasaya sürüldüğü bir reklamda duyuruldu Bayt Haziran 1976 sayısı. Reklam, dili SCELBI platformuna özel olarak bağlamadı, bunun yerine, gerekli 8 kB RAM ile herhangi bir 8008 veya 8080 sisteminde BASIC'in bir sürümünü oluşturmak için eksiksiz bir kaynak listesi olarak kitap formunda sunuldu. Kitabın fiyatı 2019'da 49 dolar, yaklaşık 220 dolardı.[2]

Açıklama

SCELBAL 32 bit (dört bayt) kullandı kayan nokta 23 bitlik sayısal hesaplamalar için format mantis, Mantis için 1 bitlik işaret, 7 bitlik bir üs ve üs için 1 bitlik işaret. Bunlar, ilk baytta mantisin en az önemli baytı, ardından orta ve daha sonra yüksek bitte işaret ile en önemli bayt olacak şekilde ters sırada düzenlenmiştir. Üs, yine yüksek bitteki işaretiyle en son geldi.[3] Kılavuz, iyi belgelenmiş montaj kodu giriş noktaları ve kullanım notları dahil tüm matematik paketi için.[4] 32-bit formatlar bu çağda yaygındı, BASIC'in sonraki sürümleri Microsoft BASIC için MOS 6502, daha fazla hassasiyet için genellikle 40 bitlik (beş bayt) bir format benimsemiştir.[5]

SCELBAL, başka türlü diğer BASIC lehçelerine benziyordu; Altair TEMEL, dizi değişkenleri ve işleçleri ve bir dizi matematik işlevi eksik. Diğer farklılıklar daha az belirgindi. EĞER ifadenin isteğe bağlı bir formu vardı EĞER ... GİT ihtiyacı ortadan kaldıran SONRA, EĞER X .[6] Aynı konsept için MS tarzı kısa formu da korudu, EĞER X . SCELBAL ayrıca, satırlar için değişkenlerin kullanımına izin vererek, örneğin, EĞER X <> 5 SONRA LL, bu, LL değişkenindeki satır numarasına atlar.[7]

Temel dil dize işlemeyi desteklemiyordu, ancak değişmez (sabit) dizeler YAZDIRve destekleyici işlevlere sahipti CHR yazdırılamayan karakterleri yazdırmak ve TAB düzen sağlamak için. İşin garibi, sistem gerekli ASCII kodların yüksek bit kümesine sahip olması için, normal ASCII'den SCELBI karakter kodlarına dönüştürmek için, 127 eklemek veya çıkarmak gerekir. Örneğin, "MERHABA" YAZDIR; CHR (171); CHR (159); "DÜNYA" çıktıda "HELLO, WORLD" dizesini üretmek için.[8]

GİRİŞ normalde kullanıcı tarafından girilen metni bir sayı olarak okur, ancak dolar işaretinin değerin SCELBI kodu olarak okunması gerektiğini belirtmesine izin verir. Örneğin, GİRİŞ A "1" kullanıcı girdisini A'ya kayan nokta değeri 1 olarak okurdu, GİRİŞ A $ A'nın 176, 49 ("1" için ASCII) + 127 olarak ayarlanmasına neden olur. Ek olarak, dolar işareti kullanıldığında geleneksel "?" komut istemi yazdırılmaz ve komut normal durumda olduğu gibi satır başı beklemek yerine tek bir karakter girilir girilmez dile döndürülür.[8]

Diğer birkaç fark arasında şunlar vardı: YENİ MS'de bulunan, mevcut program kodunu ve verileri temizleyen komuta SCR "çizik" için[9] ve USR a denen işlev makine dili rutin UDF "kullanıcı tanımlı işlev" için.[10] UDF bir adresi veya parametreleri kabul etmedi, sabit bir konumda yalnızca tek bir kullanıcı tanımlı sıfır parametre işlevi desteklendi.[11]

Hata kodları iki harfe indirildi ve kod YÜK ve KAYIT ETMEK standart formda sağlanmıştır ve farklı platformlara taşındığında uygulanması beklenmektedir.[12] Satır numaraları 1 ile 999999 arasında olabilir,[10] oysa BASIC'lerin çoğu 16 bitlik bir tamsayı kullanır ve bu nedenle 1'den 32767'ye veya 1'den 65535'e kadar olan satırları destekler.

Dil özellikleri

Aksi belirtilmedikçe 1976 kılavuzundan alınmıştır.[13]

Komutlar

Yalnızca acil mod

Belgelerde "yönetici" modu olarak anılır.

SCR çizik, MS ile eşdeğer YENİ
LİSTE
KOŞMAK
YÜK
KAYIT ETMEK

Anında veya program modu

YAZDIR
GİRİŞ MS gibi, birden çok değişkeni kabul edebilir, GİRİŞ A, B, C. Bir komut dizisi içermedi.
İZİN VERMEK MS gibi İZİN VERMEK isteğe bağlıydı, yani 15 LET X = 10 ve 15 X = 10 eşdeğerdir.
EĞER ... SONRA
EĞER ... GİT Alternatif formu EĞER ... SONRA.
GİT "Aralıklı versiyon" görünür, GİTdesteklenmedi.
GOSUB ... İADE
İÇİN ... İÇİN ... ADIM ... SONRAKİ MS'de olduğu gibi, ADIM isteğe bağlıdır ve 1 olduğu varsayılır. SONRAKİ sonraki MS sürümlerinden farklı olarak bir değişken gerektirir.
REM
SON
DIM Diziler MS'deki gibi çalıştı, ancak isteğe bağlıydı ve bellek tasarrufu için kapatılabilirdi. Yalnızca tek boyutlu diziler destekleniyordu ve birleştirilmiş tüm diziler için toplam öğe sayısı 64 sayıydı.

Fonksiyonlar

INT
SGN
ABS
SQR
RND MS'de olduğu gibi, sahte bir değişken alır ve 0 ile 1 arasında bir değer döndürür.
CHR MS'de bulunan $ eksikliğine dikkat edin. CHR $.
TAB
UDF

Uzantılar

SCHELBI, Mathematical Functions Supplement ve String Supplement olmak üzere sisteme iki uzantı yayınladı.

Matematik Fonksiyonları Eki

Matematiksel Fonksiyonlar Eki, beş yeni aşkın işlevler, GÜNAH, COS, tecrübe, LOG, ve ATN.[14]

Dize Eki

String Supplement, bir dizi yeni özellik dahil olmak üzere Math Fonksiyonlarından biraz daha büyüktü.

Dizeler en fazla 80 karakter uzunluğunda olabilir ve sistem toplam 64 dize değişkeni tutabilir. Bu 64'ten herhangi biri veya hepsi tek boyutlu diziler olabilir, ancak toplam sayı yine de toplamda 64 dizi olmalıdır. İşin garibi, dize dizileri bir DIM Beyan.[15]

MS BASIC'in aksine ve Dartmouth TEMEL SCELBI, ilham veren dize işleme, çağdaş BASIC'lerde bulunan "dilimleme" stilini kullandı. HP Zaman Paylaşımlı BASIC ve Northstar BASIC veya daha sonra Atari TEMEL. Gibi işlevleri kullanmak yerine SOL $, DOĞRU $, ORTA $ alt dizelere erişmek için dizi erişimi sözdizimi, başlangıç ​​noktası ile uzunluğu ayıran iki nokta üst üste kullanılarak kullanılmıştır. SCELBAL aynı zamanda dize dizilerini de desteklediğinden, dizi erişimcilerindeki ilk sayı dizi diziniydi ve değişken bir dizi değilse isteğe bağlıydı. Yani, örneğin, kod:[15]

10İZİN VERMEKA $="MERHABA"20YAZDIRA $(:2:3)

çıktıya "ELL" yazdırılmasına neden olur. Bir dizi kullanılmışsa, sözdizimi ilk parametrede dizi dizinini gerektirir:[15]

100İZİN VERMEKA $(1)="MERHABA"150İZİN VERMEKA $(2)="DÜNYA"200YAZDIRA $(2:2:3)

çıktıya "ORL" yazdırılmasına neden olur.

Dilimleme sözdizimini kullanan diğer BASIC'lere kıyasla bunun çalışma biçiminde önemli bir fark vardır, çünkü son parametre bir konum değil uzunluktur. Örneğin, Atari BASIC'de benzer görünümlü kod:[16]

20YAZDIRA $(2,3)

Bunun yerine, talimat "2 ve 3 arasındaki tüm karakterleri yazdır" olarak çevrildiği için "EL" çıktılanır. Bu şekilde SCELBAL, MS BASIC'e daha benzer bir şekilde çalışır; burada eşdeğer:[17]

20YAZDIRORTA $(A $,2,3)

Dizelere tam destek eklemek için Ek, orijinalin yerini aldı CHR ile CHR $MS muadilinin sözdizimiyle eşleşti.[15] Aynı şekilde, GİRİŞ dize değişkenleri sayısal değişkenler gibi çalışarak, satır başını bekleyerek ve ardından tüm kullanıcı girdisini ilişkili dize değişkenine atayarak değiştirildi.[18] Destek işlevlerini de ekledi UZUNLUK ve ASC,[15] ve VAL $ sayısal bir değer içeren bir dizeyi bu sayının dize gösterimine dönüştürmek için. MS'de olduğu gibi, birleştirme Kullandı + Şebeke.[18]

Referanslar

Alıntılar

  1. ^ Arnold, Mark; Wadsworth, Nat (Şubat 1976). "SCELBAL - 8008/8080 Sistemleri İçin Daha Yüksek Seviye Bir Dil". Dr. Dobb's Journal. s. 30–53.
  2. ^ "Şok edici!". Bayt. Haziran 1976. s. 47.
  3. ^ Arnold ve Wadsworth 1976, s. 10.1.
  4. ^ Arnold ve Wadsworth 1976, s. 10.
  5. ^ Steil, Michael (20 Ekim 2008). "6502 için kendi Microsoft BASIC Sürümünüzü oluşturun".
  6. ^ Arnold ve Wadsworth 1976, s. 14.10.
  7. ^ Arnold ve Wadsworth 1976, s. 2.3.
  8. ^ a b Arnold ve Wadsworth 1976, s. 14.16.
  9. ^ Arnold ve Wadsworth 1976, s. 14.1.
  10. ^ a b Arnold ve Wadsworth 1976, s. 14.17.
  11. ^ Arnold ve Wadsworth 1976, s. 14.3.
  12. ^ Arnold ve Wadsworth 1976, s. 14.18.
  13. ^ Arnold ve Wadsworth 1976.
  14. ^ Matematik 1977, s. 1.
  15. ^ a b c d e Dizeler 1977, s. 1.
  16. ^ Küçük, David, ed. (1983). "Atari Dizeleri ve Metin İşleme". Yaratıcı Atari. Yaratıcı Bilgi İşlem.
  17. ^ Dizeler 1977, s. 3.
  18. ^ a b Dizeler 1977, s. 2.

Kaynakça

  • Arnold, Mark; Wadsworth, Nat (1976). SCELBAL: 8008/8080 sistemleri için daha yüksek seviyeli bir dil (PDF). SCELBI Bilgisayar Danışmanlığı.CS1 bakimi: ref = harv (bağlantı)
  • Arnold, Mark (1977). SCELBAL Matematiksel Fonksiyonlar Eki. SCELBI Bilgisayar Danışmanlığı.
  • Arnold, Mark (1977). SCELBAL Strings Eki. SCELBI Bilgisayar Danışmanlığı.