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

HP Zaman Paylaşımlı TEMEL
paradigma zorunlu
geliştirici Mike Yeşil
İlk ortaya çıktı 1969'dan önce ; 52 yıl önce ( 1969 )
işletim sistemi HP 2100
Tarafından etkilenmiş
Dartmouth TEMEL
Etkilenen
Bkz. SDS BASIC , Integer BASIC , Atari BASIC , diğerleri

HP Zaman Paylaşımlı TEMEL ( HP TSB ) bir olduğunu BASIC programlama dili tercümanı için Hewlett-Packard 'ın HP 2000 hattı minibilgisayar tabanlı devremülk bilgisayar sistemleri. TSB, Star Trek oyununun ilk halka açık sürümlerini yayınlayan platform olarak tarihsel olarak dikkate değerdir .

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

1970'lerin BASIC'lerinin çoğu, tarihlerini 1960'ların orijinal Dartmouth BASIC'ine kadar takip ediyor, ancak Dartmouth'un ilk sürümleri, dize değişkenlerini işlemedi ve satıcılar kendi çözümlerini ekledi. Bu iki genel tarza yol açtı; DEC , MID/LEFT/RIGHTişlevleri tanıtırken, TSB, Fortran'a ve dizi dilimlemeli diğer dillere daha çok benzeyen bir sistem kullandı .

As oluşu 1970'lerin ortalarında pazara girmek başladı birçok yeni BASICler DEC'in veya HP'nin sözdizimi o dayalı kendi ayrıştırıcıları çıktı. Microsoft BASIC'e dönüşen şeyin orijinal versiyonu olan Altair BASIC , DEC'in BASIC-PLUS'ında modellenmiştir . Apple'ın Integer BASIC , Atari BASIC ve North Star BASIC'i de dahil olmak üzere diğerleri HP stilinde desenlendi. Bu, dize işlemeyle karşılaşıldığında bu platformlar arasındaki dönüşümleri biraz zorlaştırdı.

isimlendirme

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

HP, bazı yayınlarda dile "Erişim BASIC" olarak da atıfta bulunmuştur. Bu, bazı yayınlarda "2000/Access" olarak bilinen, üzerinde çalıştığı makinelerin adlarıyla eşleşiyordu. Bu terminoloji, platform ilk piyasaya sürüldüğünde yalnızca kısa bir süre kullanılmış gibi görünüyor.

Platform ayrıntıları

2000A ve 2000E sistemleri dışında, sistem çift işlemcili bir mimari kullanılarak uygulanmaktadır . 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 , zamanın geçtiği RS-232 seri hatlarını işlemek için ikinci, daha küçük bir HP 2100 serisi işlemci kullanılır. -paylaşım kullanıcıları bağlı. 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 Model 33 ASR idi ve doğrudan I/O işlemcisine veya bir modem veya akustik bağlayıcı aracılığıyla bağlıydı . Hesap adları, bir alfabetik karakterin ardından üç ondalık basamaktan oluşan bir kombinasyondur, örn. , B001. Ayrıcalıklı hesaplar "A" harfiyle başlıyordu ve bazı ek komut ve program depolama yeteneklerine sahipti. Süper kullanıcı hesabı A000'dir. Bu şema 26.000'e kadar kullanıcı hesabına izin verir.

Yürütme sırasında, kullanıcı programları,  fiziksel olarak bir disk, ancak manyetik bir tambur gibi çalışan sabit bir kafa sürücüsüne değiştirilir . Yürütülmediği zaman, kullanıcı programları hareketli kafalı kartuş veya paket yüklü disk deposunda depolanır . Ayrıcalıklı kullanıcılar, programları çok daha hızlı tamburda da depolayabilir. Sabit sürücü manyetik teybe yedeklendi .

Program ve dosya adları, altı adede kadar alfabetik karakter (AZ) ve sayılardan (0-9) oluşan bir karışımdan oluşur. Programlar bir saklanır Tokenized TASARRUF komutunu kullanarak, biçim. Ayrıca, daha hızlı başlamalarını sağlayan CSAVE komutu kullanılarak yarı derlenmiş bir biçimde de saklanabilirler. Sistem yaygın olarak bulunan teleyazıcıların kullanımına yakından bağlı olduğundan, dosyalardaki satır sonları satır başı karakterinden (ASCII CR, 0D onaltılık), ardından satır besleme karakterinden (ASCII LF, 0A onaltılık) oluşuyordu.

Sözdizimi

Dil, BASIC'in oldukça standart bir uygulamasıdır ve entegre bir düzenleme ve çalışma zamanı ortamı sağlar. İfadeler, girildiklerinde doğru sözdizimi için analiz edilir ve daha sonra belirteç haline getirilmiş biçimde saklanır. Her BASIC deyimi benzersiz bir numaralandırılmış satırda olmalıdır, örn.

10 PRINT "HELLO WORLD"

Satır numaraları zorunludur ve ifadeler artan sayısal sıraya göre otomatik olarak yerleştirilir. TSB satırları bir deyim içerebilir, MS BASIC'te desteklenmediği için iki nokta üst üste ile birden çok deyimi zincirleme. Çoklu değişken atamaları, izin verilen örneğin , . BASIC'in çoğu versiyonunda olduğu gibi, "LET" kelimesinin kullanımı isteğe bağlıydı. 20 LET A=B=C=42

En eski sürümde (2000A), dil aşağıdaki özellikleri destekledi. Daha sonraki sürümler daha birçok özellik ekledi.

  • GOTOİfadeler aracılığıyla koşulsuz program akış kontrolü ve ve ifadeleri aracılığıyla alt rutinlerGOSUBRETURN
  • Aracılığıyla Şartlı akış kontrol IF/THENdeyimi
  • GOTO/OFve GOSUB/OFifadeleri aracılığıyla hesaplanan akış kontrolü
  • Değişken tabanlı blok döngüsü FORve NEXTdeyimleri
  • In-kod veri depolama yoluyla DATA, READve RESTOREtabloların
  • Kullanıcı veya disk için giriş ve çıkış dosyası aracılığıyla INPUT, READ #, PRINT, PRINT #, ve IF END #ifadeleri
  • "A" veya "A n " biçimindeki sayısal değişkenler (burada A tek bir harftir ve n tek, isteğe bağlı bir basamaktır) 32 bit kayan noktalı sayılar olarak depolanır
  • "A$" biçimindeki dize değişkenleri (burada A tek bir harftir), 0 ila 72 karakter arasında depolanır
  • "A[x]" veya "A[x,y]" biçimindeki bir veya iki boyutlu matris (dizi) değişkenleri
  • İfadeler ( MAT READ, MAT INPUT, MAT PRINT, MAT=) ve işlemler ( +, -, *, ZER, CON, IDN, INV, TRN) aracılığıyla matris işlemleri
  • Boole operatörleri ( AND, OR, NOT) ve ilişkisel operatörler ( <, <=, =, #, <>, >=, and >)
  • Trigonometrik ( SIN, COS, TAN, ATN), logaritmalar ( LOG, EXP), karekök ( SQR), rastgele sayı üreteci ( RND), diğerleri ( ABS, INT, SGN, MIN, MAX), ve kullanıcı tanımlı işlevler dahil ) yerleşik matematiksel işlevler
  • Teletype Model 33 elektromekanik teleprinter uzak terminalleri kullanılarak delikli bant işlemleri

dize işleme

TSB'deki dizeler, tek bir çok karakterli nesne yerine bir dizi karakter olarak ele alınır. Varsayılan olarak, bellekte bir karakter tahsis edilirler ve daha uzun bir diziye ihtiyaç duyulursa, kullanımdan önce belirtilmeleri gerekir. Örneğin, maksimum 10 karakter tutabilecek bir dize kuracaktır. TSB'deki bir dizenin maksimum uzunluğu 72 karakterdir. DIM A$[10]

Dizeler içindeki alt dizelere bir " dilimleme " notasyonu kullanılarak erişilir : veya , burada alt dize L dizini tarafından belirtilen en soldaki karakterle başlar ve R dizini tarafından belirtilen en sağdaki karaktere kadar devam eder veya alt dizenin en soldaki karakterden başladığı form L dizini tarafından belirtilir ve dizenin sonuna kadar devam eder. TSB, () veya [] öğelerini birbirinin yerine kabul eder. Dizi ve alt dizi indeksleri 1 ile başlar. A$(L,R)A$[L,R]A$[L]

ANSI BASIC, Hewlett-Packard tarafından tanıtılana benzer bir alt dize sözdizimi kullanmaya devam etse de LEFT$(), bu MID$(), RIGHT$()alt dizelere erişmek için , ve gibi işlevleri kullanan DEC modelini izleyen BASIC'lerle keskin bir tezat oluşturur . HP'nin gösterimi, örneğin , LEFT/MID/RIGHT'ın erken uygulamalarıyla yapılamayan veya mevcut bir dize değerinin bir kısmını değiştirmek için bir LET veya INPUT ifadesinin hedef tarafında da kullanılabilir . 100 A$[3,5]="XYZ"120 B$[3]="CHANGE ALL BUT FIRST TWO CHARS"

Bu tür dizi erişiminin ana avantajı , dizi uzunlukları değiştiğinde gerekli olan karmaşık bellek yönetimi ihtiyacını ortadan kaldırmasıdır . MS BASIC , sistem belleği tükendiğinde dize yığınındaki ölü alanı kaldırarak belleğin sıkıştırılmasını işlemek için uzun bir kitaplığa sahipti . Aynı zamanda herkesin bildiği gibi yavaştı ve performansı artırmak veya hataları düzeltmek için ömrü boyunca birkaç kez değiştirildi. TSB stilinin dezavantajı, içindeki dize boş olsa bile dizenin her zaman tam miktarda DIMed alanı kaplamasıdır ve birleştirme gibi basit görevler, başlangıçta büyük bir boyuta ayarlanmadıkça potansiyel olarak dizeden taşabilir.

Dartmouth BASIC'in sonraki sürümleri, BASIC-PLUS ve MS BASIC'te bulunan aynı kalıba dayalı dizi değişkenleri içeriyordu. Ancak bu sürüm, dizeleri işlemek için SOL/ORTA/SAĞ işlevlerini kullanmadı, bunun yerine CHANGEdizeyi eşdeğer ASCII değerlerine dönüştüren komutu kullandı . HP, yalnızca adı değiştirerek aynı işlevleri içeriyordu CONVERT. 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; işleve ihtiyaç duymadan "ABCDEF" dizesini üretti . A$='23 '64 '49 "DEF"CHR$()

MAT komutları

Dartmouth BASIC'in sonraki sürümleri, tek bir ifadeyle MATtüm diziler ( matrisler ) üzerinde işlemlere izin veren bir dizi komut içeriyordu . Bunlar, TSB'nin sonraki sürümlerinde de mevcuttu. En basit biçiminde, bir dizideki tüm öğelere bir ifade uygulayarak MATalternatif bir biçimi gibi kullanılır LET. Örneğin:

100 DIM A(20),B(20)
...
200 MAT A=A+B

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

100 DIM A(20),B(20)
...
200 FOR I=1 TO 20
210 A[I]=A[I]+B[I]
220 NEXT I

Bu komutlar, kodu daha kısa ve daha açık hale getirmenin yanı sıra, FOR/NEXT kullanımından kolayca daha iyi performans göstererek yüksek düzeyde optimize edilmiş olma avantajına da sahiptir. Ek işlevler ve ifadeler , dizileri değiştirir PRINTve INPUTters çevirir ve kimlik matrisleri ve benzerini tek bir ifadede oluşturur.

Diğer farklılıklar

TSB ayrıca diğer lehçelerle bir dizi daha küçük farklılıklar içerir. En önemlileri arasında:

  • # ile aynı, eşit olmayan karşılaştırmanın isteğe bağlı bir şeklidir. <>
  • ON...GOTO/GOSUBsözdizimi kullanılarak hesaplanan-goto desteklenmez. Bunun yerine, sıra konumuna göre listeden bir satır numarası seçerek aynı işlevi gerçekleştirir. Örneğin, her zaman 10. satıra gidecek , A'nın değeri 1, 2 veya 3 ise farklı satırlara dallanacaktır.GOTO expression OF 1,2,3...GOTO 1 OF 10,20,30GOSUB A OF 100,200,300
  • Boolean ve ilişkisel operatörler, o zamanın BASIC dilleri için alışılmadık olan, ancak C gibi dillerde popüler olan, false için 0 veya true için 1 döndürerek herhangi bir matematiksel ifadede kullanılabilir . Örneğin, C veya D, ya da sıfırdan büyüktür, ifade için, 1600 hat dallan olacak olarak 'doğru' sonucunu verir . C ve D'nin ikisi de sıfırsa, bunu 'yanlış' olarak değerlendirir ve dal alınmaz.IF C+D THEN 1600C+DIFIF
  • TSB, bir zaman sınırına ulaşıldıktan sonra devam ENTEReden standart INPUTifadede bir değişiklik içerir . ENTERüç girişi, saniye cinsinden bir zaman sınırı, geçen gerçek zamanı (veya bir durum kodunu) içeren bir dönüş değişkeni ve son olarak kullanıcı girişi vardır. Örneğin , kullanıcının tek bir karakter yazması için 15 saniye bekleyecektir. T, aldıkları gerçek süreyi, zamanlayıcının süresi dolduysa -256'yı veya terminalle ilgili sorunları belirtmek için -257 veya -258'i içerecektir.ENTER 15,T,A$[1,1]
  • Dize sabitlerini (literal) yazdırırken, satır içinde noktalı virgül gerekli değildir. Örneğin , dize sabitleri ve A değişkeni arasında noktalı virgül gerektirmez. MS dahil diğer bazı BASIC'ler de bu sözdizimini destekledi. Atari veya Integer gibi diğerleri yoktu.PRINT "THE NUMBER IS"A", TRY A LARGER VALUE."
  • Kullanımdaki virgüller PRINTsekmesinde 15 karakter durur ve satırın sonunda 12 karakter kalır ve toplam 72 karakter kalır.
  • LINFonksiyon için dikey bir muadili gibi çalışır TAB. sondaki noktalı virgül veya virgül etkinse, potansiyel olarak mevcut satıra üç satır başı ekler, özel durum her zaman bir sonraki satıra ilerler. Integer BASIC, adı verilen benzer bir özelliğe sahipti .LIN(3)LIN(-1)VTAB

Ayrıca bakınız

  • Rocky Mountain BASIC , Hewlett-Packard'da oluşturulan BASIC'in bir başka ama çok farklı lehçesi

Referanslar

alıntılar

bibliyografya

Dış bağlantılar