Welcome, Guest. Please login or register.


Author Topic: Altair BASIC (Read 30175 times)

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Altair BASIC
« Reply #90 on: 2014.December.01. 21:24:08 »
A nálam letölthető csomagba beraktam a hibakódok jelentését. Ebben benne van mind a  12 hibakód... :ds_icon_cheesygrin:
Tulajdonképpen 4K-ban kunszt ez a BASIC.

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #91 on: 2014.December.01. 21:29:38 »
Tulajdonképpen 4K-ban kunszt ez a BASIC.
Ami igazán kunszt benne, hogy lebegőpontos aritmetikája van. A kortársai többnyire csak az egész számokat tudta kezelni (ha jól tudom).
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Altair BASIC
« Reply #92 on: 2014.December.01. 21:54:06 »
Ami igazán kunszt benne, hogy lebegőpontos aritmetikája van. A kortársai többnyire csak az egész számokat tudta kezelni (ha jól tudom).

Ok, tudom BASIC az ugye nem "profiknak" valo nyelv feltetlen, nem is arra talaltak ki. De pont ez zavart engem, es a BASIC lassusaganak egyik kulcsa is, hogy miert feltetlen a float tipus a default? Elvegre, egy csomo esetben szukseg sincs ra pl for a = 0 to 10, de persze az "a" ilyenkor float. Feleslegesen. Es igy persze joval lassabb, tobb memoriat is foglal stb. En tuti az int-et tettem volna alapnak, es a float-ot jeloltem volna kulon, ahhoz kepest, hogy ugye jelenleg az A% alak az int, es az A mint nelkul a float ...

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #93 on: 2014.December.01. 22:04:41 »
Ok, tudom BASIC az ugye nem "profiknak" valo nyelv feltetlen, nem is arra talaltak ki. De pont ez zavart engem, es a BASIC lassusaganak egyik kulcsa is, hogy miert feltetlen a float tipus a default? Elvegre, egy csomo esetben szukseg sincs ra pl for a = 0 to 10, de persze az "a" ilyenkor float. Feleslegesen. Es igy persze joval lassabb, tobb memoriat is foglal stb. En tuti az int-et tettem volna alapnak, es a float-ot jeloltem volna kulon, ahhoz kepest, hogy ugye jelenleg az A% alak az int, es az A mint nelkul a float ...
Érdekes az Altair Basic esetében, hogy a sorszámokat ő "belül" word-ként tárolja, de LIST parancs futásakor előbb egy egész -> float konverzió fut le, és úgy írja ki a sorszámot. Persze ez is érthető, itt gondolom helyspórolás miatt csinálták így, rövidebb volt a konverziós rutin, mint egy külön integer-kiíró.
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Altair BASIC
« Reply #94 on: 2014.December.01. 22:12:08 »
Érdekes az Altair Basic esetében, hogy a sorszámokat ő "belül" word-ként tárolja, de LIST parancs futásakor előbb egy egész -> float konverzió fut le, és úgy írja ki a sorszámot. Persze ez is érthető, itt gondolom helyspórolás miatt csinálták így, rövidebb volt a konverziós rutin, mint egy külön integer-kiíró.

Hmm, ezt nem is tudtam, pedig valoszinu hogy Commodore BASIC-ben is hasonlo, bar ott volt tobb helyuk a BASIC-re, es ugye az nem is 8080/Z80, megis MS-tol van, lehet nem kezdtek elolrol ott sem teljesen a dolgot ...

Amugy erdekes, mert egyes basic-ekben (Commodore-nal is) kifejezetten meno trukk, hogy gyakran hasznalt konstanst ami pl all 5 szamjegybol, tegyed csak szepen valtozoba, es ugy hivatkozz ra. Mivel a memoriaban szamjegyenkent van, ha leirod mint szamot allandoan, ami eleg lassu parse-olni mindig stb ... Pedig ha jol remlik IS-BASIC-ben is volt olyasmi, hogy a word ertekeket binarisan tarolja (legalabbis disk-en biztos, de gondolom akkor memoriaban is .... ?). Szoval fura ez, hogy BASIC kulcsszavak tokenizalva, a szamokat meg lehetett allandoan parse-olgatni.

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #95 on: 2014.December.01. 22:28:11 »
Amugy erdekes, mert egyes basic-ekben (Commodore-nal is) kifejezetten meno trukk, hogy gyakran hasznalt konstanst ami pl all 5 szamjegybol, tegyed csak szepen valtozoba, es ugy hivatkozz ra. Mivel a memoriaban szamjegyenkent van, ha leirod mint szamot allandoan, ami eleg lassu parse-olni mindig stb ... Pedig ha jol remlik IS-BASIC-ben is volt olyasmi, hogy a word ertekeket binarisan tarolja (legalabbis disk-en biztos, de gondolom akkor memoriaban is .... ?). Szoval fura ez, hogy BASIC kulcsszavak tokenizalva, a szamokat meg lehetett allandoan parse-olgatni.
Ja, ezt a Reference Manual is írta (amit linkeltem pár napja), hogy érdemes a konstansokat is változóban tárolni, mert akkor nem kell futtatás közben állandóan string -> float konverziót csinálni, csak egyszer, amikor a változónak értéket adunk, onnantól kezdve a memóriában már 4 byte-on van float-ként eltárolva (ha jól értem erre gondolsz te is).
A másik tipp (ami a C=-nál is működik), hogy nem kell space-eket tenni, (tehát az IFA=10THENGOTO100 sok is oké), ezáltal kisebb helyet is foglal a progi, és gyorsabb lesz a futása is (nem kell az interpreternek figyelmen kívül hagynia a space-eket). Az más kérdés, hogy olvashatatlan lesz a kód, de basic-nél minden ezredmp számít, lehet hogy egy 10ezres ciklus belsejében már tényleg érezhető lenne, hogy nincs space használva.
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #96 on: 2014.December.01. 22:37:29 »
Hmm, ezt nem is tudtam, pedig valoszinu hogy Commodore BASIC-ben is hasonlo, bar ott volt tobb helyuk a BASIC-re, es ugye az nem is 8080/Z80, megis MS-tol van, lehet nem kezdtek elolrol ott sem teljesen a dolgot ...

És tényleg! Ugyanúgy tokenizálja a sorokat a Commodore is, mint az Altair Basic (jó, maguk a tokenizált kódok nem feltétlenül ugyanazok, mert újabb kulcsszavak is vannak, de az első négy ugyanaz: END, FOR, NEXT, DATA):

egy pointer a következő sor elejére (2 byte)
a sorszám (2 byte)
tokenizált sor
\0 lezáró (1 byte)
és a program végén pedig két darab \0 \0 (2 byte)

http://www.c64-wiki.com/index.php/BASIC_token
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Altair BASIC
« Reply #97 on: 2014.December.03. 15:05:19 »
Bruce találta ezt az archívumot.
A 75 januári számban (PDF 16 oldaltól), és februári számban (PDF 27 oldaltól) arról van szó, hogyan építsünk Altair 8800-at, kevesebb mint 400 dollárból kijön :-) És a programozásáról is szó van.

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #98 on: 2014.December.04. 19:14:58 »
Készül a 8K verzió.
Itt is paritás-bit problémák lesznek... :-)

Ez a változat már kezel string-eket is, van POKE, PEEK, IN, OUT, meg egy csomó új függvény is.
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Altair BASIC
« Reply #99 on: 2014.December.04. 20:25:05 »
Povi, nálam a letölthető csomagban vannak hibakódik, arról a linkről, amit ebben a topicban megadtál. Az azért sokat segít a "használhatóságon". (Amennyiben van értelme ilyesimről beszélni egy 40 éves programozási nyelv esetében...)
A 8K-s verzióhoz tudsz linket adni? Gondolom hibaüzenetek nem fértek még a 8k-ba sem...

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #100 on: 2014.December.04. 20:56:16 »
ebben benne van a 8k leírása is, és a hibaüzenetek is
http://www.classiccmp.org/altair32/pdf/Altair_8800_BASIC_Reference_Manual_1975.PDF

nézegetem most a CLOAD és CSAVE parancsokat, hátha lehet használni valamire...
az biztos, hogy tokenizált formában küldi ki a cuccot a szalagra, a 7-es portra.

A fájlnévnek megadott stringnek csak az első karakterét veszi figyelembe.

A formátum még érdekes: 0xd3 0x33 0x33 - ez valami fejléc lehet
aztán a fájlnév (egy karakter)

majd 0x46 0x19 - ez nem tudom, mi lehet (nem állandó, valami cím lehet?)

ezután pedig a tokenizált kód.
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #101 on: 2014.December.04. 20:58:17 »
találtam egy jó kis összefoglalót a verziókról:
http://altairclone.com/downloads/basic/Basic%20Versions.pdf
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #102 on: 2014.December.04. 21:20:00 »
majd 0x46 0x19 - ez nem tudom, mi lehet (nem állandó, valami cím lehet?)

Rájöttem, ez egy mutató a következő sor elejére. Ez már a tokenizált kód része...
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #103 on: 2014.December.05. 12:07:29 »
tudom, hogy perverz vagyok, de este alvás előtt még olvasgattam az ágyban egy kicsit a C64 BASIC ROM-listáját a Data Becker könyvből, és meglepően (vagyis most már, hogy tudjuk, hogy ezt is a Microsoft írta, már nem) hasonló az Altair BASIC-hez. Mintha kézzel átírták volna a Z80 kódot 6510-re :-) Kiváncsi lennék, vajon a PC-n megjelent GW-BASIC és társai mennyire hasonlítanak az ős-basic-hez. Nem hinném, hogy alapjaiban más lenne, sőt mintha léteztek volna programok, amik 8080 assembly-t 8086 assembly-re konvertáltak (tehát magát a forráskódot, nem a binárist). :-)
*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Altair BASIC
« Reply #104 on: 2014.December.05. 13:00:15 »
http://en.wikipedia.org/wiki/Microsoft_BASIC

Elso korben talan ez is erdekes ...