HP Zaman Paylaşımlı BASIC - HP Time-Shared BASIC - Wikipedia

HP Zaman Paylaşımlı BASIC
Paradigmazorunlu
GeliştiriciMike Green
İlk ortaya çıktı1969 öncesi; 51 yıl önce (1969)
işletim sistemiHP 2100
Tarafından etkilenmiş
Dartmouth TEMEL
Etkilenen
Cf. SDS TEMEL, Tamsayı BASIC, Atari TEMEL, diğerleri

HP Zaman Paylaşımlı BASIC (HP TSB) bir BASIC programlama dili çevirmen için Hewlett Packard 's HP 2000 hattı mini bilgisayar tabanlı zaman paylaşımı bilgisayar sistemleri. TSB, oyunun ilk halka açık sürümlerini yayınlayan platform olarak tarihsel olarak dikkate değerdir. Yıldız Savaşları.

Sistem, BASIC lehçesinin yanı sıra, sistemi aynı anda birden fazla kişinin kullanmasına olanak tanıyan temel bir kullanıcı hesabı ve program kitaplığı uygular. Sistemler, 1970'lerin başından ortasına kadar büyük bir güçtü ve çok sayıda program üretti. HP, katkıda bulunan programlardan oluşan bir veritabanı tuttu ve müşteriler bunları sipariş edebilir delikli bant nominal bir ücret karşılığında.

1970'lerin çoğu BASIC'i tarihlerini orijinaline kadar izler. Dartmouth TEMEL 1960'larda, ancak Dartmouth'un ilk sürümleri, dize değişkenleri ve satıcılar kendi çözümlerini ekledi. Bu, iki genel stile yol açtı; ARALIK tanıttı ORTA / SOL / SAĞ TSB daha benzer bir sistem kullanırken Algol 68, Matlab, Fortran 77 ve diğer diller dizi dilimleme.

Gibi mikro bilgisayarlar 1970'lerin ortalarında pazara girmeye başladı, ayrıştırıcılarını DEC veya HP'nin sözdizimine dayanan birçok yeni BASIC ortaya çıktı. Altair TEMEL olanın orijinal versiyonu Microsoft BASIC, DEC'in modelinde BASIC-PLUS. Apple'ınki dahil diğerleri Tamsayı BASIC, Atari TEMEL ve Kuzey Yıldızı TEMEL HP stilinde desenlenmiştir. Bu, dizge işlemeyle karşılaşıldığında bu platformlar arasında dönüşümleri biraz zorlaştırdı.

İsimlendirme

Yazılım ayrıca, üzerinde çalıştığı donanım sürümüne bağlı olarak sürüm adıyla da biliniyordu. HP 2000C Zaman Paylaşımlı BASIC ve işletim sistemi farklı çeşitlerde geldi - 2000A, 2000B, 2000C, High-Speed ​​2000C, 2000E ve 2000F.

HP, bazı yayınlarda bu dile "Access BASIC" olarak da atıfta bulunmuştur. Bu, bazı yayınlarda "2000 / Access" olarak bilinen, üzerinde çalıştığı makinelerin adlarıyla eşleşti. Bu terminoloji, platform ilk başlatıldığında yalnızca kısaca kullanılmış görünmektedir.

Platform ayrıntıları

2000A ve 2000E sistemleri dışında, sistem bir dual-işlemci mimari. Sistem kodunun çoğunun ve tüm kullanıcı kodunun yürütülmesi için tam olarak yapılandırılmış bir HP 2100 serisi işlemci kullanılırken, ikinci, daha küçük bir HP 2100 serisi işlemci ise RS-232 içinden geçen seri hatlar zaman paylaşımı kullanıcı bağlandı. Donanım yapılandırmasına bağlı olarak, sistem 16'ya kadar veya 32'ye kadar eşzamanlı uzak kullanıcıyı destekler.

Bir TSB sistemi için olağan terminal, bir Teletype Modeli 33 ASR ve doğrudan G / Ç işlemcisine veya bir modem veya akustik bağlayıcı. Hesap adları, bir alfabetik karakter ve ardından üç ondalık rakamın birleşimidir. Örneğin., B001. Ayrıcalıklı hesaplar "A" harfiyle başladı ve bazı ek komut ve program depolama yeteneklerine sahipti. süper kullanıcı hesap A000'dir. Bu şema 26.000'e kadar kullanıcı hesabına izin verir.

Yürütme sırasında, kullanıcı programları bir sabit kafa sürücüsü - fiziksel olarak bir disk, ancak bir manyetik tambur. Yürütülmediğinde, kullanıcı programları hareketli kafalı kartuşta veya paket yüklü olarak saklanır disk kapasitesi. Ayrıcalıklı kullanıcılar programları çok daha hızlı tamburda da depolayabilir. Sabit sürücü şu şekilde yedeklendi: Manyetik bant.

Program ve dosya adları, altı alfabetik karakter (A-Z) ve sayıların (0-9) karışımından oluşur. Programlar bir belirteçli SAVE komutunu kullanarak format. Ayrıca, CSAVE komutu kullanılarak yarı derlenmiş bir biçimde de depolanabilirler, bu da daha hızlı başlamalarına olanak tanır. Sistem yaygın olarak bulunan teleprinterlerin kullanımına yakından bağlı olduğundan, dosyalardaki satır sonları satır başı karakterinden (ASCII CR, 0D onaltılık) ve ardından satır besleme karakterinden (ASCII LF, 0A onaltılık) oluşuyordu.

Sözdizimi

Dil, entegre bir düzenleme ve çalıştırma ortamı sağlayan oldukça standart bir BASIC uygulamasıdır. İfadeler girilirken doğru sözdizimi için analiz edilir ve daha sonra belirteçli biçimde saklanır. Her BASIC ifadesi benzersiz bir şekilde numaralandırılmış bir satırda olmalıdır, Örneğin.

10YAZDIR"SELAM DÜNYA"

Satır numaraları zorunludur ve ifadeler otomatik olarak artan sayısal sırayla yerleştirilir. TSB satırları, MS BASIC'de olduğu gibi iki nokta üst üste ile birden çok ifadeyi zincirleyen bir ifade içerebilir. Birden çok değişken atamaya izin verilir, Örneğin., 20İZİN VERMEKBir=B=C=42. BASIC'in çoğu sürümünde olduğu gibi, "LET" kelimesinin kullanımı isteğe bağlıydı.

En eski sürümde (2000A), dil aşağıdaki özellikleri desteklemekteydi.[1] Sonraki sürümler daha birçok özellik ekledi.[2]

  • Koşulsuz program akış kontrolü aracılığıyla GİT ifadeler ve alt programlar aracılığıyla GOSUB ve DÖNÜŞ ifadeler
  • Aracılığıyla koşullu akış kontrolü IF / THEN Beyan
  • Aracılığıyla hesaplanan akış kontrolü GOTO / OF ve GOSUB / OF ifadeler
  • Değişken tabanlı blok döngüsü İÇİN ve SONRAKİ ifadeler
  • Kod içi veri depolama yoluyla VERİ, OKUYUN, ve ONARMAK ifadeler
  • Kullanıcı veya diskten giriş ve çıkış dosya üzerinden GİRİŞ, OKU #, YAZDIR, YAZDIR #, ve EĞER SON # ifadeler
  • "A" veya "A biçimindeki sayısal değişkenlern"(burada A tek bir harftir ve n 32 bit olarak depolanan tek, isteğe bağlı bir basamaktır kayan nokta sayılar
  • Dize "A $" biçimindeki değişkenler (burada A tek bir harftir), 0 ila 72 karakter arasında saklanır
  • Bir veya iki boyutlu matris "A [x]" veya "A [x, y]" biçimindeki (dizi) değişkenleri
  • İfadeler aracılığıyla matris işlemleri (MAT OKUMA, MAT GİRİŞ, MAT BASKI, MAT =) ve işlemler (+, -, *, ZER, CON, IDN, INV, TRN)
  • Boole operatörleri (VE, VEYA, DEĞİL) ve ilişkisel operatörler (<, <=, =, #, <>, >=, and >)
  • Trigonometrik dahil yerleşik matematiksel işlevler (SIN, COS, TAN, ATN), logaritmalar (LOG, EXP), kare kök (SQR), rastgele numara üreticisi (RND), diğerleri (ABS, INT, SGN, MIN, MAX)ve kullanıcı tanımlı işlevler
  • Delikli bant Teletype Model 33 elektromekanik teleprinter uzak terminallerini kullanan işlemler

Dize işleme

TSB'deki dizeler, tek bir çok karakterli nesne yerine bir karakter dizisi olarak ele alınır. Varsayılan olarak, bellekte bir karakter atanırlar ve daha uzun bir diziye ihtiyaç duyulursa, kullanımdan önce bunlardan bahsedilmelidir. Örneğin, DIMA $ [10] maksimum 10 karakter alabilen bir dizi oluşturacaktır. TSB'de bir dizenin maksimum uzunluğu 72 karakterdir.[3]

Dizelerdeki alt dizelere bir "dilimleme "gösterim: A $(L,R) veya A $[L,R], alt dizenin L dizini tarafından belirtilen en soldaki karakterle başladığı ve R dizini tarafından belirtilen en sağdaki karaktere kadar devam ettiği veya A $[L] alt dizenin L dizini tarafından belirtilen en soldaki karakterden başladığı ve dizenin sonuna kadar devam ettiği form. TSB () veya [] birbirinin yerine kabul eder. Dizi ve alt dize dizinleri 1 ile başlar.

Bu, aşağıdaki gibi işlevleri kullanan DEC modelini izleyen BASIC'lerin tam tersidir: SOL $ (), ORTA $ (), ve SAĞ $ () alt dizelere erişmek için, ancak ANSI BASIC, Hewlett-Packard tarafından sunulana benzer bir alt dizge sözdizimi kullanmaya devam ediyor. HP'nin notasyonu ayrıca bir LET veya INPUT ifadesinin hedef tarafında da mevcut bir dize değerinin bir bölümünü değiştirmek için kullanılabilir, örneğin 100A $[3,5]="XYZ" veya 120B $[3]="İLK İKİ KARŞILIK TÜMÜNÜ DEĞİŞTİRİN"Bu, SOL / ORTA / SAĞ'ın erken uygulamalarıyla yapılamaz.

Bu tarz dizge erişiminin ana avantajı, karmaşıklık ihtiyacını ortadan kaldırmasıdır. hafıza yönetimi bu aksi takdirde dizi uzunlukları değiştiğinde gereklidir. MS BASIC, dizedeki ölü boşlukları kaldırarak belleğin sıkıştırılmasını sağlamak için uzun bir kitaplığa sahipti. yığın sistem belleği dolduğunda. Ayrıca kötü şöhretli bir şekilde yavaştı ve performansı artırmak veya hataları düzeltmek için kullanım ömrü boyunca birkaç kez değiştirildi.[4] TSB stilinin dezavantajı, dizenin içindeki dize boş olsa bile her zaman tam DIMed alanı kaplamasıdır ve birleştirme gibi basit görevler, başlamak için büyük bir boyuta ayarlanmadıkça potansiyel olarak dizeyi aşabilir.

Dartmouth BASIC'in sonraki sürümleri, BASIC-PLUS ve MS BASIC'de bulunan aynı modele dayalı olarak dize değişkenleri içeriyordu. Ancak, bu sürüm dizeleri işlemek için SOL / ORTA / SAĞ işlevlerini kullanmadı, bunun yerine DEĞİŞİKLİK dizeyi eşdeğer ASCII değerlerine dönüştüren komut. HP, yalnızca adı değiştirerek aynı işlevselliği içeriyordu. DÖNÜŞTÜRMEK.[5] Ek olarak, bir sayısal sabiti bir ASCII karakterine dönüştürmek için tek tırnak kullanılabilir, bu da bir dizinin parçalar halinde oluşturulmasına izin verir; A $ = '23 '64 '49 "DEF" gerek kalmadan "ABCDEF" dizesini üretti () CHR işlevi.[6]

MAT komutları

Sonraki sürümleri Dartmouth TEMEL bir süit dahil MAT dizilerin tamamında işlemlere izin veren komutlar (matrisler ) tek bir ifadeyle. Bunlar, TSB'nin sonraki sürümlerinde de mevcuttu. En basit haliyle, MAT alternatif bir biçim gibi kullanılır İZİN VERMEK, bir dizideki tüm öğelere bir ifade uygulama. Örneğin:

100DIMBir(20),B(20)...200MATBir=Bir+B

Aşağıdakilerle aynı şekilde, B'deki her değerin değerini A'daki her girişe ekleyecektir:

100DIMBir(20),B(20)...200İÇİNben=1KİME20210Bir[ben]=Bir[ben]+B[ben]220SONRAKİben

Kodu kısaltmanın ve daha belirgin hale getirmenin yanı sıra, bu komutlar aynı zamanda yüksek düzeyde optimize edilmiş olma avantajına sahiptir ve FOR / NEXT kullanımından kolayca daha iyi performans gösterir.[7] Ek işlevler ve ifadeler değişir YAZDIR ve GİRİŞ, dizileri ters çevirin ve kimlik matrisleri ve benzerlerini tek bir ifadede oluşturun.[8]

Diğer farklılıklar

TSB ayrıca diğer lehçelerle bir dizi daha küçük farklılıklar içerir. Bunların en önemlileri şunlardır:

  • # eşit olmayan karşılaştırmanın isteğe bağlı bir şeklidir, özdeş <>[9]
  • bilgisayarlı-git kullanmak AÇIK ... GOTO / GOSUB sözdizimi desteklenmez. Bunun yerine GİT ifade 1,2,3 ... sıralı konumuna göre listeden bir satır numarası seçerek aynı işlevi gerçekleştirir. Örneğin, GİT1NIN-NİN10,20,30 her zaman 10. satıra gider, oysa GOSUBBirNIN-NİN100,200,300 A'nın değeri 1, 2 veya 3 ise farklı satırlara dallanacaktır.[10]
  • Boole ve ilişkisel operatörler herhangi bir matematiksel ifadede kullanılabilir, yanlış için 0 veya doğru için 1 döndürür, bu o zamanın BASIC dilleri için alışılmadık, ancak C. Örneğin, EĞERC+DSONRA1600 C veya D sıfırdan büyükse 1600 satırına dallanacaktır çünkü ifade C + D içinde 'doğru' olarak değerlendirilecek EĞER. C ve D'nin her ikisi de sıfırsa, EĞER 'yanlış' olarak değerlendirecek ve şube alınmayacaktır.
  • TSB şunları içerir: GİRİŞstandartta bir varyasyon GİRİŞ bir zaman sınırına ulaşıldıktan sonra devam eden ifade. GİRİŞ üç girdiye, saniye cinsinden bir zaman sınırına, geçen gerçek zamanı içeren bir dönüş değişkenine (veya bir durum kodunu) ve ardından son olarak kullanıcı girdisine sahiptir. Örneğin, GİRİŞ15,T,A $[1,1] kullanıcının tek bir karakter yazması için 15 saniye bekleyecek. T, sürdükleri gerçek zamanı, zamanlayıcının süresi dolmuşsa -256'yı veya terminaldeki sorunları belirtmek için -257 veya -258'i içerecektir.[11]
  • Dize sabitlerini (değişmezleri) yazdırırken, satır içinde noktalı virgüllere gerek yoktur. Örneğin, YAZDIR"SAYI"Bir", DAHA BÜYÜK BİR DEĞER DENEYİN." dize sabitleri ile A değişkeni arasında noktalı virgül gerektirmez.[12] MS dahil diğer bazı BASIC'ler de bu sözdizimini destekledi. Atari veya Tamsayı gibi diğerleri yapmadı.
  • Virgül YAZDIR çok 15 karakter sekme durağı kullanın, satırın sonunda 12 karakter kalır.[13]
  • LIN işlevin dikey karşılığı olarak çalışır TAB. LIN(3) sondaki noktalı virgül veya virgül etkinse, potansiyel olarak mevcut satıra üç satır sonu ekleyecektir. LIN(-1) her zaman bir sonraki satıra ilerleyecektir.[14] Tamsayı BASIC adlı benzer bir özellik vardı. VTAB.

Ayrıca bakınız

Referanslar

Alıntılar

  1. ^ HP 2000A - Kullanıcı Kılavuzu, Ağustos 1969 Parça Numarası 02000-90002, [1]. Erişim tarihi: 2016-05-09
  2. ^ HP 2000 / Access BASIC - Referans Kılavuzu Parça No. 22687-90001, [2]. Erişim tarihi: 2016-05-09
  3. ^ Referans 1976, s. 4-3.
  4. ^ "Kendi Microsoft BASIC Sürümünüzü Oluşturun".
  5. ^ Referans 1976, s. 4-6.
  6. ^ Referans 1976, s. 4-2.
  7. ^ Referans 1976, s. 11-50.
  8. ^ Referans 1976, sayfa 11-49, 11-55.
  9. ^ Referans 1976, s. 2-5.
  10. ^ Referans 1976, s. F-4.
  11. ^ Referans 1976, s. 2-15.
  12. ^ Referans 1976, s. 2-10.
  13. ^ Referans 1976, s. 2-9.
  14. ^ Referans 1976, s. 2-11.

Kaynakça

Dış bağlantılar