Enterprise Forever

:HUN => Programozás => Topic started by: Povi on 2014.November.18. 18:32:32

Title: Altair BASIC
Post by: Povi on 2014.November.18. 18:32:32
legendás program EP-n!!!

A Microsoft első terméke, az ALTAIR 8800 (http://en.wikipedia.org/wiki/Altair_8800)-ra írt BASIC (http://en.wikipedia.org/wiki/Altair_BASIC)!

Sajnos a számok kiírása még nem működik... Valahol még van egy bug... :oops:

Az inspirációt ez az oldal adta:
http://altairbasic.org/




Title: Re:Altair BASIC
Post by: Povi on 2014.November.18. 19:16:31
még a szinusz is működik:

a NEW parancsra még lefagy, valami verem-beállítási probléma lehet... :oops:
Title: Re:Altair BASIC
Post by: Povi on 2014.November.18. 19:37:14
nem értem, hol lehet a hiba

a matek rész működik, csak a számok kiírása nem...

raktam egy RET-et a 0B37-re (PrintInt rutin eleje), így tudom csak használni egyelőre...
http://altairbasic.org/math_dis_10.htm

és azért nem értem, mert az eredeti bináris állomány van az EP-ben, tehát még az se lehet, hogy én gépeltem el valami (és egyébként a disassemblált kódban is vannak elütések...)
Title: Re:Altair BASIC
Post by: endi on 2014.November.18. 21:33:04
ejnye, ne fejlesszétek az EP-t visszafelé! :)
Title: Re:Altair BASIC
Post by: Lacika on 2014.November.19. 09:25:58
legendás program EP-n!!!

:smt026
Hopp, ez érdekes! Látom, még nincs kész, várjuk nagyon! (Na jó, legalábbis én)
Title: Re:Altair BASIC
Post by: Povi on 2014.November.19. 10:53:08
Kéne egy Altair Basic topic, és átmozgatni a cuccokat...

Az az érdekes, hogy vajon hogyan oldották meg a programok kiírását / beolvasását? Mert nincs se LOAD, se SAVE parancs.

Bár nem ismerem az Altair-t közelről, de a mentésre még el tudom képzelni, hogy valahogy átkapcsolták a kimenetet a terminálról / teletype-ról stb.-ről lyukszalagra (?), aztán beírtak egy LIST parancsot.

Title: Re:Altair BASIC
Post by: Zozosoft on 2014.November.19. 11:09:01
Kéne egy Altair Basic topic, és átmozgatni a cuccokat...
Kész.
Title: Re: Altair BASIC
Post by: geco on 2014.November.19. 11:24:36
Nem lehet, hogy hardveresen oldották meg? Egy kapcsolóval lehetett adagolni az adatot, és az töltődött a memóriába, egy másik kapcsoló meg kimentette mondjuk lyukszalagra?
Title: Re: Altair BASIC
Post by: Povi on 2014.November.19. 11:47:32
Kicsit utánaolvastam, úgy tűnik a teletype-on volt a lyukszalag olvasó is, tehát akkor így oldották meg:
http://en.wikipedia.org/wiki/Teletype_Model_33

Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.19. 11:51:44
Kicsit utánaolvastam, úgy tűnik a teletype-on volt a lyukszalag olvasó is, tehát akkor így oldották meg:
http://en.wikipedia.org/wiki/Teletype_Model_33
Ha jól nézem van benne hardveres CHR$(7) is :-D
Title: Re: Altair BASIC
Post by: Povi on 2014.November.19. 11:59:31
Ha jól nézem van benne hardveres CHR$(7) is :-D
Kell, hogy legyen benne, mert az Altair Basic ki is használja! :-)
http://altairbasic.org/int_dis_5.htm#InputLine
Title: Re: Altair BASIC
Post by: Povi on 2014.November.19. 19:47:09
Nem értem, mi a baja a számkiírással... :smt017

Valahol az FOut környékén egyszer csak végtelen ciklusba került...
http://altairbasic.org/math_dis_10.htm#FOut

Pedig a kód változatlan.
Ha a kiírandó szám nulla, akkor működik.
Ha túl nagy, (pl. 999999999999999999999999999999999999999999) akkor szépen megáll egy ?OV hibával.

Egyéb esetben odáig jut, hogy az FBUFFER (0x174) címre ír egy space-t, vagy '-', attól függően, hogy negatív, vagy pozitív számról van-e szó, majd a 0x175-re pedig eg 0x30-at. Aztán eltűnik a programfutás egy fekete lyukban.

Title: Re: Altair BASIC
Post by: Povi on 2014.November.19. 20:08:18
közben azon gondolkodok, vajon befolyásolhatja-e a futást az, hogy nincs kikapcsolva a megszakítás? Ugyanis fut a megszakítás a háttérben (0x38), és EXOS bill. csatornát és video csatornát használok.

És pl. az FPush birizgálja a veremmutatót:
http://altairbasic.org/math_dis_6.htm
pl. ott az ex (sp),hl az 0xa06 és 0xa0b címen

bár akkor ennyi erővel a FOR ciklusnak se kéne működnie:
http://altairbasic.org/int_dis_8.htm
ott is vannak hasonló veremmutató piszkálások
Title: Re: Altair BASIC
Post by: Povi on 2014.November.20. 07:22:41
itt a forrás is

a basic.asm a futtatható, a basic2.asm pedig a "b.dat" forrása

a forrásban lévő include-ok pedig az eredeti altair basic bináris állománya darabokra szedve
Title: Re: Altair BASIC
Post by: Povi on 2014.November.21. 09:15:41
Mandelbrot-halmaz:
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.21. 09:16:58
Mandelbrot-halmaz:
:-)
Title: Re: Altair BASIC
Post by: Povi on 2014.November.21. 09:23:19
szerettem volna csinálni olyat, hogy fájlból lehessen betölteni:
ezért beleraktam a töltésre egy ilyen kódot:
Code: [Select]
;====================================================================

load_bas_file:

        push    bc
        push    de
        push    hl

; open BAS file
        ld      a,1
        ld      de, filename
        call    exos_fn
        db      1

; read BAS file to memory
        ld      a,1
        ld      bc,1000h        ; max file size is 4KiB
        ld      de, file_buffer
        call    exos_fn
        db      6
       
; close basic file and return
        ld      a,1
        call    exos_fn
        db      3

        exx
        ld      hl, file_buffer
        exx

        pop     hl
        pop     de
        pop     bc
        ret

filename:   db  8,"TEST.BAS"
       
;====================================================================


Az egyes lapon van a rutin.

Az exos_fn rutin pedig ez:
Code: [Select]
;====================================================================

exos_fn:
        di
        ld      (005ah),a
        or      a
        ex      (sp),hl
        jp      03fh

;====================================================================

Erre azért van szükség, mert a 0x30-as címen más van.

Viszont ez olyan szép fagyásokat produkál, hogy hihetetlen, és nem értem, mi a hiba...
Title: Re: Altair BASIC
Post by: Lacika on 2014.November.21. 09:57:44
szerettem volna csinálni olyat, hogy fájlból lehessen betölteni:

Igen, a kimentés, betöltés praktikus funkció lenne... :oops:
Title: Re: Altair BASIC
Post by: Povi on 2014.November.21. 10:25:20
lehet vele játszadozni, induláskor betölti a memóriába a "TEST.BAS" fájlt, bármikor ALT-F-et nyomja pedig "begépeli"

a számkiírás még mindig nem működik... az LIST-nél kiírja a sorszámot, de azt is csak azért, mert saját rutinra cseréltem az egész szám kiírást.

a MEMORY SIZE? kérdésnél nem szabad 16384-nél többet írni. (nincs teszt, nem végleges verzió)

változónevek max. két karakter hosszúak lehetnek, az első karakter betű, a második (opcionális) karakter szám lehet


Title: Re: Altair BASIC
Post by: geco on 2014.November.21. 10:30:56
változónevek max. két karakter hosszúak lehetnek, az első karakter betű, a második (opcionális) karakter szám lehet

Ez valahonnan ismerős ... :D
Title: Re: Altair BASIC
Post by: lgb on 2014.November.21. 11:52:57
Ez valahonnan ismerős ... :D

Ha a C64-re gondolsz, igen, a Commodre az MS-tol licencelte a basic interpretert, es csak par ponton modositott rajta (full screen editor, "ready." meg ilyenek). Sot, nem csak a Commodore:

http://www.pagetable.com/?p=43 (http://www.pagetable.com/?p=43)
http://www.pagetable.com/?p=46 (http://www.pagetable.com/?p=46)

Tenyleg, csak en nem olvastam utana, vagy tudja vki? Az IS-BASIC teljesen nullarol irt BASIC implementacio?
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.21. 12:00:20
Az IS-BASIC teljesen nullarol irt BASIC implementacio?
Teljesen nulláról, de az ANSI X3J2/82-17 "Draft Proposal for Standard BASIC" szabvány alapján.
Title: Re: Altair BASIC
Post by: Povi on 2014.November.21. 12:10:53
Biztos, hogy nulláról megírt, legalábbis semmi köze nincs a Microsoft BASIC-hez.

Ami érdekes még (az Altair Basic-ről van most szó), hogy pl. foglalt szó az "USR" (0xA2-nek tokeniálja), de híváskor 0x498-ra ugrik, ami egy hibaüzenet kiírása :-)

Meg vannak a kódban olyan részletek, amik nincsenek használva (ezt írják is a dissasm oldalon), valószínűleg egyszerre fejlesztették a 8K-s verzióval és onnét maradt benne.

Title: Re: Altair BASIC
Post by: lgb on 2014.November.21. 14:28:23
Biztos, hogy nulláról megírt, legalábbis semmi köze nincs a Microsoft BASIC-hez.

Azt gondoltam, hogy ahhoz nincs koze. Viszont nem voltam biztos benne, hogy mashoz nincs-e ...  Bar most olvastam Zozo valaszat eppen.
Title: Re: Altair BASIC
Post by: Povi on 2014.November.23. 18:00:05
na, eddig jutottam a BASIC-kel

az első kérdésnél (MEMORY SIZE?) ha csak enter-t nyomunk akkor a maximális 16KiB memóriát fogjuk elérni :-)
kevesebbett persze lehet írni, nem sokkal kevesebb, mint 4KiB-tal elindul. Az egyes lapra egy ROM van belapozva, így a tesztnél, amikor megnézi, mennyi az elérhető max. memória, nem tud beleírni, így úgy veszi, mintha elérte volna a RAM tetejét 0x3fff-nél.

Az egyéb kiegészítő dolgok, a kettes lapon futnak.

Sajnos a számkiírás NEM MŰKÖDIK :smt013 :smt067 :smt071  és nem értem, miért!!! Ha valaki rájön, vendégem egy (vagy kettő) korsó sörre (vagy kólára).

Pedig minden trükköt bevettem: végig tiltott megszakítás alatt fut a program, még a 0x38-as címre is egy RET-et írtam (csak bill. olvasásnál állítja vissza, de utána rögtön le is tilt mindenféle megszakítást), ezzel is próbáltma minél jobban közelíteni az eredeti Altair állapotát.

F1-gyel lehet BASIC fájlt betölteni, ha valaki próbálkozni akar vele. Ha végre egyszer csak működne a szám kiírás, akkor majd foglalkozok tovább vele, jelenleg elment a kedvem tőle... :-)

Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 14:07:19
ja, egyébként ha valaki még nem jött volna rá: a @ jellel sort töröl, a _ (aláhúzás) jel pedig a backspace

értelemszerűen a kurzorgombok nem csinálnak semmit, ekkoriban még teletype volt a leggyakoribb output eszköz :-)
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.24. 14:44:45
Sajnos a számkiírás NEM MŰKÖDIK :smt013 :smt067 :smt071  és nem értem, miért!!! Ha valaki rájön, vendégem egy (vagy kettő) korsó sörre (vagy kólára).
És a számkiírás hogyan működne elvileg? Mármint az kiírandó adat hogyan jut el az EXOS-hoz?
Nem lehet, hogy az a baj, hogy az EXOS hívás elrontja a regisztereket?
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 15:31:31
És a számkiírás hogyan működne elvileg? Mármint az kiírandó adat hogyan jut el az EXOS-hoz?
Nem lehet, hogy az a baj, hogy az EXOS hívás elrontja a regisztereket?

Valahol az FOut nevű rutinban romlik el:
http://altairbasic.org/math_dis_10.htm#FOut

A lebegőpontos számot először egy FBUFFER nevű helyre teszi (0x174 címre), majd onnét írná ki a képernyőre.
Csak hogy már az FBUFFER-be írás közben elakad. A kezdő szóközt vagy '-' jelet beírja a bufferba, majd végtelen ciklusba kerül.
A számkiírás csak akkor működik, ha 0-át akarunk írni, vagy ha túl nagy számot. Akkor ?OV hibával megáll.

Az EXOS már karakterenként írja ki. De előtte mindent mentek a verembe, majd visszaállítom a regisztereket, szóval annak se kéne hibának lennie.
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 15:33:23
Pontosítok: az FBUFFER-be már a kiírandó karaktersorozat kerül, nem maga a lebegőpontos szám.
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.24. 15:33:55
Valahol az FOut nevű rutinban romlik el:
http://altairbasic.org/math_dis_10.htm#FOut
Ebből a forrásból nincs emberi szintaxissal? :twisted:
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 15:34:35
Ebből a forrásból nincs emberi szintaxissal? :twisted:
Nekem nincs... :-) Ez egészen emberi, csak nem Z80, hanem 8080. :-D
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.24. 15:36:46
Ez egészen emberi, csak nem Z80, hanem 8080. :-D
Hmmm... akkor nem lehet valami proci inkompatibilitás?
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 15:38:03
A neten talált bináris állományt használom az EP verzióban (az van egy kicsit szétdarabolva és include-olva az általam feltett asm fájlokban), és pl. Altair-emulátoron működik, szóval nem is értem, hol csúszhat el a dolog...
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 15:40:38
Hmmm... akkor nem lehet valami proci inkompatibilitás?
Jó kérdés...
Tudtommal teljesen kompatibilis, nem?
Egy érdekes hiba lehet itt, a lap alján:
http://altairbasic.org/int_dis_11.htm

"BUG: There is an interesting bug in this block, although it's harmless as by luck it's impossible to see it. The byte at 04F7 is 0x10, an illegal instruction, which is in turn followed by a NOP. "

A 0x10 utasítás egy DJNZ lenne Z80-on, itt viszont NOP-ként működik (mármint 8080-on). De ez a kódrészlet nem fut a számkiírásnál.
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 15:42:49
Maga a kifejezések értelmezése, és a számolás a lebegőpontos számokkal meg működik, lásd a mandelbrot halmaz rajzoló progit, az lefut gond nélkül.
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.24. 15:44:18
Tudtommal teljesen kompatibilis, nem?
Vagy nem :-)
Itt találtam valamit: (http://www.classic-computers.org.nz/blog/2012-10-17-altair-emulator.htm)
"I needed to correct my approach dealing with the Parity flag difference between 8080 & Z80. Originally for any 8080 instruction that acted on the Parity flag, I merely did an OR A to set Parity. This it duly did, but I overlooked that OR also reset the Carry flag. The Parity flag is only used once in Altair 4K BASIC, which I could have worked-around, but in the interests of having a correct emulator, I did a proper fix by setting the Parity flag correctly when doing ADD, SUB, etc."
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.24. 15:47:09
"Two known differences:

1) Parity flag is set on overflow in Z80.

2) DAA on Z80 works after subtraction."
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 15:52:53
Vagy nem :-)
Itt találtam valamit: (http://www.classic-computers.org.nz/blog/2012-10-17-altair-emulator.htm)
"I needed to correct my approach dealing with the Parity flag difference between 8080 & Z80. Originally for any 8080 instruction that acted on the Parity flag, I merely did an OR A to set Parity. This it duly did, but I overlooked that OR also reset the Carry flag. The Parity flag is only used once in Altair 4K BASIC, which I could have worked-around, but in the interests of having a correct emulator, I did a proper fix by setting the Parity flag correctly when doing ADD, SUB, etc."
Hm... Ez érdekes...

0xb66-on ott egy JP PO, PrepareToPrint, szóval akkor lehet, hogy itt csúszik el a dolog? :-)
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.24. 16:01:28
0xb66-on ott egy JP PO, PrepareToPrint, szóval akkor lehet, hogy itt csúszik el a dolog? :-)
Elképzelhető :-)
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 16:28:08
na, végignéztem, összesen két helyen (0xb66 és 0xc07) van, ahol van JP PO
RET PO, és CALL PO sehol sincs

mindkét esetben az FCompare rutin fut le előtte.
http://altairbasic.org/math_dis_7.htm#FCompare

Az FCompare lefutása után az A=0xff, 0x00, vagy 0x01 lehet csak.

Ha jól sejtem, egy JP P utasításra cserélve működnie kell... :-) Mindjárt ki is próbálom.
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 16:31:41
ÉS IGEN!!!!!! MŰKÖDIK!!!!

Köszönöm Zozó!!!

Vendégem vagy egy kólára :-)
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 16:32:47
akkor ezek szerint egy újabb mítoszt(?) sikerült megdönteni?! Még se kompatibilis a Z80 a 8080-nal???
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.24. 16:46:50
akkor ezek szerint egy újabb mítoszt(?) sikerült megdönteni?! Még se kompatibilis a Z80 a 8080-nal???
A 100% kompatibilitás ritkán szokott összejönni :-) még Z80-ok között is :-D
Title: Re: Altair BASIC
Post by: Lacika on 2014.November.24. 16:55:50
ÉS IGEN!!!!!!
Letölthető, kész verzió még nincs?
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 18:20:26
Letölthető, kész verzió még nincs?

Fölrakhatok egyet, ami működik, de még nem ezt szánom véglegesnek, akarok még bele FILE-bővítés kezelést is tenni, meg EXOS-parancs beírásának a lehetőségét. Legyen akkor már egy kicsit EP-sebb. Meg persze a legjobb az lenne, ha EDITOR-csatornán is menne, persze akkor már az eredeti "feeling"-et nem fogja vissza adni.
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 18:29:20
itt egy működő:
Title: Re: Altair BASIC
Post by: Lacika on 2014.November.24. 18:50:38
Ha jól látom, a memóriaméret megadásánál még nincs hibaellenőrzés.
A TERMINAL WIDTH kérdést nem lehetne kiszedni? Ha jól látom, nem csinál semmit.
A WANT SIN? kérdés mire vonatkozik?
Title: Re: Altair BASIC
Post by: Lacika on 2014.November.24. 18:53:45
akarok még bele FILE-bővítés kezelést is tenni, meg EXOS-parancs beírásának a lehetőségét. Legyen akkor már egy kicsit EP-sebb. Meg persze a legjobb az lenne, ha EDITOR-csatornán is menne, persze akkor már az eredeti "feeling"-et nem fogja vissza adni.

Ezek jó ötletek! (Főleg, hogy működő szerkesztő-billentyűket nem is találtam...) :smt026
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 19:40:16
Ha jól látom, a memóriaméret megadásánál még nincs hibaellenőrzés.
A TERMINAL WIDTH kérdést nem lehetne kiszedni? Ha jól látom, nem csinál semmit.
A WANT SIN? kérdés mire vonatkozik?
16KiB memória elérhető, ha annál többet írsz be (16384-nél nagyobbat), akkor nem fog működni. De ez az ALTAIR-en is így működött: ha többet írtál a kérdésre, mint amennyi RAM-od volt a gépben, akkor lefagyott. Ha ENTER-t ütsz, akkor ő maga "rájön", hogy mennyi RAM-od van, úgy, hogy elkezd írni a RAM-ba, aztán ha nem sikerül visszaolvasni, akkor az azt jelenti, hogy elérte a RAM tetejét. Az EP-n az 1-es lapra direkt egy ROM van belapozva, így 0x4000-től fölfelé már nem tud beleírni a "teszt" során.

A Terminal Width működik: ha ENTER-t nyomsz, akkor alapesetben 72 karakter lesz a szélesség (72 karakter elérése után automatikusan rak egy CR/LF-et, próbáld ki pl. 20 karakter szélességgel, működik az :-)

A Want SIN? It t Y-t vagy N-t lehet nyomni. Ha kevés a RAM (pl. 4096 byte), akkor lehet kérni, hogy ne töltse be a SIN, RND és SQR függvényeket, hogy több szabad RAM maradjon.

Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 19:46:28
ilyen, ha 40-re állítom a TERMINAL WIDTH-t:
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 19:59:25
na, mondjuk ezze a memoria tesztben érdekes bug van:
Code: [Select]
0DCA    LD HL,0EFCH
0DCD    INC HL
0DCE    LD A,37H
0DD0    LD (HL),A
0DD1    CP (HL)
0DD2    JP NZ,DoneMemSize
0DD5    DEC A
0DD6    LD (HL),A
0DD7    CP (HL)
0DD8    JP Z, 0DCDH
0DDB    JP DoneMemSize

Vagyis ha véletlenül 64KiB RAM volt a gépben, akkor a RAM-méret megállapító rutin amikor eléri a RAM tetejét (amikor HL = 0xFFFF), akkor a következő lépésben HL = 0x0000 lesz, és fölülírja a program saját magát.
Bár az is igaz, 1975-ben megfizethetetlen kategória volt a 64KiB, szóval valószínüleg senkinek sem volt, és nem is jött elő ez a bug.
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.24. 20:20:10
akkor a következő lépésben HL = 0x0000 lesz, és fölülírja a program saját magát.
De ez nem ROM-ban futott?
Amúgy 16K-nál több RAM-ot lehetne neki adni, vagy attól kiakadna?
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 20:32:53
De ez nem ROM-ban futott?
Amúgy 16K-nál több RAM-ot lehetne neki adni, vagy attól kiakadna?
Nem, RAM-ból. Lyukszalagról olvasták be.
Máshogy nem is indulna, mert vannak a kódban saját magát fölülíró részek.
Ha a kérdésre gondolsz, hogy lehet-e többet megadni, akkor lehet, de attól kiakadna. Ugyanis a RAM tetejére akarná tenni a veremmutatót, de az nem menne neki. (az 1-es lapon ROM van, a 2-esen pedig azok a rutinok, ami ahhoz kell, hogy fusson EP-n), szóval azt se lenne érdemes felülírni.
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.24. 20:36:53
Nem, RAM-ból. Lyukszalagról olvasták be.
És a lyukszalagot mi olvasta be?

Quote
Ha a kérdésre gondolsz, hogy lehet-e többet megadni, akkor lehet, de attól kiakadna. Ugyanis a RAM tetejére akarná tenni a veremmutatót, de az nem menne neki. (az 1-es lapon ROM van, a 2-esen pedig azok a rutinok, ami ahhoz kell, hogy fusson EP-n), szóval azt se lenne érdemes felülírni.
Nem arra gondolok, hogy 3-as lapra teszed a rutinokat, 2-esre a ROM-ot, és 1-esre mehetne még ram.
Title: Re: Altair BASIC
Post by: lgb on 2014.November.24. 20:51:32
http://randomthoughts.club/youtube.php?video=wALFrUd6Ttw (http://randomthoughts.club/youtube.php?video=wALFrUd6Ttw)

Azert volt ennek egy feelingje :)
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 20:59:07
És a lyukszalagot mi olvasta be?
Vagy egy ilyen teletype:
http://en.wikipedia.org/wiki/Teletype_Model_33

És itt egy video, ahogy a 4K BASIC-ot betöltik (ugyanarról a linkről, amit lgb küldött):
http://randomthoughts.club/youtube.php?video=qv5b1Xowxdk

Na ez a kemény, nem a CRT-terminál és a szupergyors lyukszalag-olvasó :-)
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 21:04:15
Nem arra gondolok, hogy 3-as lapra teszed a rutinokat, 2-esre a ROM-ot, és 1-esre mehetne még ram.
Ja, de, lehetne. :-) De még ezt a 16k-t is túlzásnak tartom :mrgreen:
Title: Re: Altair BASIC
Post by: lgb on 2014.November.24. 21:04:19
Szerintem Zozo ugy ertette a kerdest, hogy van a RAM mellett ROM is, ami a beolvasast vezerli? Vagy en ertettem felre. Mondjuk modernebb idokben is van hogy nincs ROM csak RAM :) Pl amikor reset-ben tartja a CPU-t (ok manapsag pl AVR egyes hazi epitesu Z80 cuccon), es o szepen beleirja, aztan elengedi a reset-et, vagy hasonlo. Elvileg ilyet lehetne epiteni AVR/CPU stb nelkul is vmi egyszeru binaris szamlalo a cimzeshez, es kozben a szallagrol az input, azaz kozvetlenul a RAM-ba injektalja a kodot, utana mehet a CPU. Mondjuk nem tudom h az Altair 8800-on igy volt-e vagy van barmi ROM-ja ...
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 21:06:14
Szerintem Zozo ugy ertette a kerdest, hogy van a RAM mellett ROM is, ami a beolvasast vezerli? Vagy en ertettem felre. Mondjuk modernebb idokben is van hogy nincs ROM csak RAM :) Pl amikor reset-ben tartja a CPU-t (ok manapsag pl AVR egyes hazi epitesu Z80 cuccon), es o szepen beleirja, aztan elengedi a reset-et, vagy hasonlo. Elvileg ilyet lehetne epiteni AVR/CPU stb nelkul is vmi egyszeru binaris szamlalo, aztan kozvetlenul a RAM-ba injektalja a kodot, utana mehet a CPU. Mondjuk nem tudom h az Altair 8800-on igy volt-e vagy van barmi ROM-ja ...
Ha jól tudom, nem volt ROM az Altair-ban. Persze ez jó kérdés, hogy akkor hogyan is ment a beolvasás... :-) Még "új" vagyok az Altair témában, de baromira érdekes, hogy milyen is volt a 8bites mikró őskorszaka.
Title: Re: Altair BASIC
Post by: lgb on 2014.November.24. 21:18:54
Ha jól tudom, nem volt ROM az Altair-ban. Persze ez jó kérdés, hogy akkor hogyan is ment a beolvasás... :-) Még "új" vagyok az Altair témában, de baromira érdekes, hogy milyen is volt a 8bites mikró őskorszaka.

ja erdekes, wikipedia szerint pl:

The front panel, which was inspired by the Data General Nova minicomputer, included a large number of toggle switches to feed binary data directly into the memory of the machine, and a number of red LEDs to read those values back out.

Programming the Altair was an extremely tedious process. The user toggled the switches to positions corresponding to an 8080 microprocessor instruction or opcode in binary, then used an 'enter' switch to load the code into the machine's memory, and then repeated this step until all the opcodes of a presumably complete and correct program were in place.

Ez alapjan tenyleg ugy tunik, hogy kozvetlenul a memoriat irtak kapcsolokkal es olvastak ki LED-ekkel, gondolom akkor talan a lyukszallag olvasas is mehetett ugy, hogy kozvetlenul a memoriaba irogatta bele egy egyszeru kis elektronika, es a CPU addig meg szoba sem jott, amig nem toltottek fel a RAM-ot, ahogy illik, utana johetett csak a CPU, hogy legyen kedves most mar futtatni a kodot ami a RAM-be kerult.

Mondjuk meg mindig erosen csak tippelgetek ;) Poenbol kene epiteni hasonlot Z80-al, kisebb meretekben es nem feltetlen lyukszallaggal, csak hogy "kezzel" lehessen programozgatni a RAM tartalmat mindenfele CPU nelkul, az erzes biztos erdekes lenne :)
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 21:24:57
na, ez tényleg jó ötletnek tűnik :-)

egyébként az is érdekes, hogy úgy írták ezt BASIC-et, hogy nem is volt Altair-ük, hanem egy PDP-10-re írtak egy 8080 emulátort, azon folyt a fejlesztés. :-)

"Gates and Allen had neither an interpreter nor even an Altair system on which to develop and test one. However, Allen had written an Intel 8008 emulator for their previous venture, Traf-O-Data, that ran on a PDP-10 time-sharing computer. He adapted this emulator based on the Altair programmer guide, and they developed and tested the interpreter on Harvard's PDP-10. Harvard officials were not pleased when they found out, but there was no written policy that covered the use of this computer.[2] Gates and Allen bought computer time from a timesharing service in Boston to complete their BASIC. They hired Harvard student Monte Davidoff to write floating-point arithmetic routines for the interpreter, a feature not available in many of its competitors."

http://en.wikipedia.org/wiki/Altair_BASIC
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.24. 21:36:26
Ja, de, lehetne. :-) De még ezt a 16k-t is túlzásnak tartom :mrgreen:
De ha jól néztem a mindkét videóban 64K-s gép volt :-)

Amúgy lesz printer only verzió is? :-D
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 21:44:37
A videóban lévő "altair" csak egy ócska replika :-)
Egy 32 bites PIC mikrokontrollerre épül az egész.
http://altairclone.com/details.htm


Mit értesz a printer only verzión?
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.24. 21:50:52
Mit értesz a printer only verzión?
Nem képernyőre ír, hanem nyomtatóra :-)
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 21:58:33
végül is, ha ez minden vágyad... :-)

de ha autentikusak akarnánk lenni, akkor a soros portra kéne küldeni a kimenetet, szerintem arra volt kötve a tty is
Title: Re: Altair BASIC
Post by: lgb on 2014.November.24. 22:28:03
Vegulis Nick-2 helyett ENIAC-ot is lehet am epiteni :D
Title: Re: Altair BASIC
Post by: Povi on 2014.November.24. 23:00:36
hát ja, azért az is vicces, hogy itt egy majdnem 40 éves szoftverről beszélünk, a szomszéd topicban pedg gőzerővel folyik a SymbOS fejlesztése... :-D
Mindenesetre technika- és számítógép-tudomány történeti érdekesség ez a Basic.
Title: Re: Altair BASIC
Post by: Povi on 2014.November.26. 16:10:50
Elkezdtem nézegetni a 8K verzióját az Altair BASIC-nek.

Hát, marha jó eastern egg-et találtam benne :-)

Ha a kérdésnél "MEMORY SIZE?" egy "A" betűt ütünk, akkor az alábbi szöveget írja ki:

WRITTEN FOR ROYALTIES BY MICRO-SOFT

:-D

szerk: közben megtaláltam az eastern egg archivumban is, szóval nem én jöttem rá először...
de akkor is jó érzés volt "felfedezni" :-)
http://www.eeggs.com/tree/12288.html
Title: Re: Altair BASIC
Post by: Povi on 2014.November.26. 17:12:08
Nagyon durva dolgok vannak itt a "D" (Space Hints) és "E" (Speed Hints) függelékben:
http://www.classiccmp.org/altair32/pdf/Altair_8800_BASIC_Reference_Manual_1975.PDF

Most már értem, miért annyira olvashatatlanok a régi BASIC kódok, és miért volt "divat" több sort egy sorba írni (kettősponttal elválasztva).

Csak néhány csemege:
Törölj ki minden felesleges space-t.
Töröld ki a REM-eket. (ezáltal gyorsabb lesz a program futása, és rövidebbb is lesz a kód)
Nem kell az END a program végére (akkor minek van definiálva a BASIC-ben???)
Title: Re: Altair BASIC
Post by: Lacika on 2014.November.26. 17:51:23
Nem kell az END a program végére (akkor minek van definiálva a BASIC-ben???)

Igen, az Ep BASIC-hez szokottak feltehetik ezt a kérdést. De gondolj csak bele: ahol csak GOSUB-bal lehet csinálni szubrutint, ott mindenképpen használni kell (általában a szubrutinokat a program végére rakták).
Title: Re: Altair BASIC
Post by: lgb on 2014.November.26. 18:46:44
Nem kell az END a program végére (akkor minek van definiálva a BASIC-ben???)

Ha esetleg mashol akarod megallitani a programot mint az utolso sornal, gondolom, azert :)
Title: Re: Altair BASIC
Post by: Povi on 2014.November.26. 21:59:43
igazatok van, erre nem gondoltam :-)
Title: Re: Altair BASIC
Post by: Povi on 2014.November.27. 21:11:56
Elkészült a véglegesnek szánt verzió az ALTAIR BASIC-ből!

F1 - basic fájl betöltése (a forráskód sorvégi lezáró jelnek CR/LF-nek, vagy CR-nek kell lenni (igazából a CR a lényeg, az LF-et figyelmen kívül hagyja - igazából csak Linux környezetben kell erre figyelni).

F2- mentés

F8 - kilépés - vigyázat! nem kérdez rá mégegyszer, hogy biztos vagy-e benne, rögtön kilép!

Az elérhető memória végül 16KiB maradt (így autentikusabb), de Zozo kedvéért a CTRL + P gomb megnyomásával válthatjuk a kimenetet a nyomtató és a monitor között :-)
Title: Re: Altair BASIC
Post by: Lacika on 2014.November.27. 21:31:53
Elkészült a véglegesnek szánt verzió az ALTAIR BASIC-ből!

FILE-bővítő kezelés nincs? :oops: Praktikus lenne, mert, ha jól látom directory-t nem lehet kérni.
Illetve legalább a DEL billentyűt nem lehetne működővé tenni?
Title: Re: Altair BASIC
Post by: Povi on 2014.November.27. 22:09:19
FILE-bővítő kezelés nincs? :oops: Praktikus lenne, mert, ha jól látom directory-t nem lehet kérni.
Illetve legalább a DEL billentyűt nem lehetne működővé tenni?

Azért nincs, mert a 0-ás lapra kéne tenni azt buffer-t, ahová beolvassa fájlnevet, és ott meg nincs hely... (legalábbis a leírás szerint 256 bájtnyi hely kell (de minek akkora?), és annyi nincs)

a DEL-t direkt hagytam így :-) csak a retro feeling miatt :-)
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.27. 22:21:10
Lehet hosszú a PATH, meg szerintem munkaterületnek is használja.

256 bájtot elpakolsz valahova, aztán a FILE-zés után meg vissza.
Title: Re: Altair BASIC
Post by: Povi on 2014.November.28. 08:49:08
üsse kő, akkor belerakom :-)
ha nem kéne mozgatni, akkor kb. +3 sor, így lehet, hogy +10 is lesz :-)

meg akkor még belerakok egy exos parancskezelést is, az is jól jön.
Title: Re: Altair BASIC
Post by: Povi on 2014.November.28. 12:29:01
na, ebben van már FILE-bővítő kezelés

ami érdekes, hogy a régi PCK.EXT-es verzióval működik az emulátorban, az újabb FILE.EXT-tel nem igazán...

meg kéne nézni igazi gépen is
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.November.28. 12:31:48
ami érdekes, hogy a régi PCK.EXT-es verzióval működik az emulátorban, az újabb FILE.EXT-tel nem igazán...
Véletlenül nem FILEIO-s konfigban próbáltad? Mert az már az egyel ezelőtti verzióban bele lett rakva, hogyha van FILE: akkor azt adja vissza, és így akkor az emulátor fájlválasztója működik.
Title: Re: Altair BASIC
Post by: Povi on 2014.November.28. 12:36:15
Véletlenül nem FILEIO-s konfigban próbáltad? Mert az már az egyel ezelőtti verzióban bele lett rakva, hogyha van FILE: akkor azt adja vissza, és így akkor az emulátor fájlválasztója működik.
de igen :-) akkor ez volt a probléma :-)
Title: Re: Altair BASIC
Post by: Lacika on 2014.November.28. 20:18:29
a DEL-t direkt hagytam így :-) csak a retro feeling miatt :-)

Légyszi, légyszi...
Így üszkve használhatatlan. Egy 50 karakterből állós sorban elüt az ember egy billentyűt...
Title: Re: Altair BASIC
Post by: Lacika on 2014.November.28. 20:38:40
meg akkor még belerakok egy exos parancskezelést is, az is jól jön.

Ez hogy működik?
Title: Re: Altair BASIC
Post by: Povi on 2014.December.01. 09:51:18
Ez hogy működik?
Még sehogy, de úgy tervezem, mint az IS-BASIC-ben. Ha kettösponttal kezdesz egy sort, akkor végrehajtja a megadott EXOS parancsot.
Title: Re: Altair BASIC
Post by: Povi on 2014.December.01. 09:53:34
Légyszi, légyszi...
Így üszkve használhatatlan. Egy 50 karakterből állós sorban elüt az ember egy billentyűt...
A backspace helyett a z aláhúzás jellel tudsz most törölni.
Pl.:
PRN_INT 2+2

De akkor majd lehet, hogy teszek bele választó menüt (legyen-e "normál" backsapce, vagy maradjon minden az eredetiben).

De egyébként elég perverz dolog abban írni :-) Miért nem írod WP-ben, vagy PC-n bármelyik text editorban?
Title: Re: Altair BASIC
Post by: Lacika on 2014.December.01. 18:10:32
De egyébként elég perverz dolog abban írni :-) Miért nem írod WP-ben, vagy PC-n bármelyik text editorban?

WP-ben írom, de kisebb javításokat praktikus, ha el lehet végezni.
Title: Re: Altair BASIC
Post by: Povi on 2014.December.01. 18:33:26
Na, ez tudja az ERASE (backspace) gombot kezelni. Figyeli, hogy a kimenet melyik csatornára van irányítva (printer, vagy video), ha printerre, akkor figyelmen kívül hagyja.
(Tudom, a DEL-t akartad, de ahhoz szerintem már egyszerűbb lenne az EDITOR: használata, az lehet a köv. fejlesztés...)
Title: Re: Altair BASIC
Post by: Lacika on 2014.December.01. 18:48:56
(Tudom, a DEL-t akartad, de ahhoz szerintem már egyszerűbb lenne az EDITOR: használata, az lehet a köv. fejlesztés...)

Tulajdonképpen pontosan ERASE-t akartam kérni, csak összekevertem, mert az nincs a PC billentyűzeten... :oops:
Szuper, ez is jó!
Title: Re: Altair BASIC
Post by: Povi on 2014.December.01. 18:50:27
kíváncsi vagyok, milyen progikat írsz hozzá... :-)
Title: Re: Altair BASIC
Post by: Lacika on 2014.December.01. 18:52:47
kíváncsi vagyok, milyen progikat írsz hozzá... :-)

10 REM LEGNAGYOBB KOZOS OSZTO
20 REM LEGKISEBB KOZOS TOBBSZOROS
20 PRINT "A= ";:INPUT A
30 PRINT "B= ";:INPUT B
40 A=ABS(A):B=ABS(B):A1=A:B1=B
50 IF B>A THEN X=A:A=B:B=X
60 IF B=0 THEN 90
70 X=A-INT(A/B)*B:A=B:B=X
80 GOTO 60
90 PRINT "Legnagyobb kozos oszto:    ";A
100 PRINT "Legkisebb kozos tobbszotos:";A1*B1/A
Title: Re: Altair BASIC
Post by: Lacika on 2014.December.01. 21:02:44
Ejjj, de szép program...

10 REM Gyufajatek
20 PRINT:PRINT "   *** GYUFAJATEK ***"
30 LET X=21
40 PRINT :PRINT X;" szal gyufaval jatszunk."
50 PRINT "Felvaltva 1-3 szalat vehetunk el."
60 PRINT "Aki az utolso szalat huzza, veszit!":PRINT
100 REM Jatek
110 IF X=0 THEN GOTO 410
120 LET A=(X-1)/4-INT((X-1)/4)
130 IF A<>0 THEN 310
160 LET S=RND(X)
170 IF S<.33 THEN L=1:GOTO 210
180 IF S<.67 THEN L=2:GOTO 210
190 L=3
210 GOSUB 230
220 GOTO 100
230 X=X-L:G=1
240 IF X<0 THEN L=1:X=0
250 PRINT L;"szalat huztam. Maradt";X
255 IF X=0 THEN 290
260 PRINT "A huzasod:";:INPUT K
265 IF K<1 THEN 260
266 IF K>3 THEN 260
270 X=X-K:G=0
275 IF X<0 THEN PRINT "Nincs mar ennyi szal!":X=0
280 PRINT "                  Maradt";X
290 RETURN
310 IF A=.75 THEN L=3:GOTO 360
320 IF A=.5 THEN L=2:GOTO 360
330 L=1
360 GOSUB 230
380 L=4-K
390 IF X>0 THEN 360
410 IF G=1 THEN PRINT " VESZTETTEM...":GOTO 430
420 PRINT "Az utolso szalat vetted el. VESZTETTEL!"
430 END
Title: Re: Altair BASIC
Post by: Lacika 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.
Title: Re: Altair BASIC
Post by: Povi 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).
Title: Re: Altair BASIC
Post by: lgb 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 ...
Title: Re: Altair BASIC
Post by: Povi 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ó.
Title: Re: Altair BASIC
Post by: lgb 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.
Title: Re: Altair BASIC
Post by: Povi 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.
Title: Re: Altair BASIC
Post by: Povi 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
Title: Re: Altair BASIC
Post by: Zozosoft on 2014.December.03. 15:05:19
Bruce találta ezt az archívumot. (http://www.americanradiohistory.com/Popular-Electronics-Guide.htm)
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.
Title: Re: Altair BASIC
Post by: Povi 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.
Title: Re: Altair BASIC
Post by: Lacika 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...
Title: Re: Altair BASIC
Post by: Povi 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.
Title: Re: Altair BASIC
Post by: Povi 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
Title: Re: Altair BASIC
Post by: Povi 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...
Title: Re: Altair BASIC
Post by: Povi 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). :-)
Title: Re: Altair BASIC
Post by: lgb on 2014.December.05. 13:00:15
http://en.wikipedia.org/wiki/Microsoft_BASIC (http://en.wikipedia.org/wiki/Microsoft_BASIC)

Elso korben talan ez is erdekes ...
Title: Re: Altair BASIC
Post by: Povi on 2014.December.05. 20:01:58
Itt a 8K BASIC.

STOP bill. működik, CLOAD, CSAVE nem (vagyis a CSAVE egyelőre hexában teliírja a képernyőt), de a rendes mentés, töltés ugyanúgy működik, mint a 4k verzióban. Vicc egyébként, hogy binárisan már nem kompatibilis a két basic verzió (arra gondolok, hogy mások a tokenizált kódok), bár az is igaz, hogy a 4.32-ből nem is lehetett binárisan menteni.

elvileg hibátlan, de hátha belefut valaki valamilyen bug-ba

szerk.: ja, és itt már nem kell nagybetűvel írni...
Title: Re: Altair BASIC
Post by: Povi on 2014.December.08. 20:20:44
Frissített verzió (kicsit összement, a fölösleges 00-kat kitöröltem).
A CLOAD és CSAVE parancs egyelőre kiiktatva (nem kerül végtelen ciklusba CLOAD parancs kiadásakor, amikor hiába várja az adatot a 6-os és 7-es porton).
Title: Re: Altair BASIC
Post by: Lacika on 2014.December.08. 21:03:49
Ebben van PRINT USING? A leírásban van róla szó, de nekem nem működik.
Title: Re: Altair BASIC
Post by: Povi on 2014.December.08. 21:36:24
ebben nincs
nem az extended version-ban írják, hogy van?
Title: Re: Altair BASIC
Post by: Povi on 2015.January.15. 10:31:31
egy kis promó az ITCafén:
http://itcafe.hu/hir/mar_40_eves_az_altair_8800.html

:-)
Title: Re: Altair BASIC
Post by: lgb on 2015.January.15. 22:13:44
Kiralysag! Nekem a comment-ek voltak szomoruak, kb ilyesmi, hogy "hany FPS a unity rajta" (ok, nem gondolta komolyan nyilvan, csak eppen ugye szomoru, hogy neki a "szamtech" mar csak ennyi), meg hogy "nem is lettem volna informatikus, ha ilyen gepek lettek volna, amikor kezdtem". Szoval a sok mai ikon buzerator :) nem is erti tulkeppen a szakmai alapjait amivel foglalkozik pedig, hogy mi van mogotte ... Ezt tartom kicsit szomorunak.
Title: Re: Altair BASIC
Post by: Povi on 2015.January.16. 08:54:14
Hát igen, a hozzászólásokon én is meglepődtem. A mennyiségén is. Persze nyilván van benne egy kis lájkvadász feeling is, hogy miért csak ennyi, de valahol mégis csak szomorúnak tartom, hogy kevesebb, mint 50 hozzászólás jött hozzá, miközben egy 486-os, vagy C64-es retro bemutatón több 100 is. Jó, elismerem, azoknál ott van a nosztalgia-faktor is, ez meg kb. olyan, mintha egy barkácsfórumon a szakócáról írtam volna egy bemutatót, a hozzászólok 99%-a szerintem nem is élt még 1975-be (én se).
Na mindegy, készül a folytatás, az még nehezebb olvasmány lesz, még 8086 és 8080 assembly is lesz benne :-)
Title: Re: Altair BASIC
Post by: lgb on 2015.January.16. 16:42:30
Az eredeti 8080 asm syntaxtol en kiutest kapok. Probaltam mar megtalnulni, de szamomra total logikatlan es "alien". Inkabb Z80 asm-kent nezem, akkor ertem is :)
Title: Re: Altair BASIC
Post by: Povi on 2015.January.16. 18:22:41
Az eredeti 8080 asm syntaxtol en kiutest kapok. Probaltam mar megtalnulni, de szamomra total logikatlan es "alien". Inkabb Z80 asm-kent nezem, akkor ertem is :)
Azt én is így csináltam, számomra olvashatatlan a 8080 asm :-)
Title: Re: Altair BASIC
Post by: lgb on 2015.January.16. 19:50:10
Azt én is így csináltam, számomra olvashatatlan a 8080 asm :-)

Jol jartunk, ui vmi olyasmi remlik, hogy az Intel 8080 syntaxist a Zilog (bar kb 8080 compatible) nem vihette tovabb (jogi problemak, nem tudom), ezert kitalalt egy uj syntaxist. Szerintem jol jartunk vele, most gondoljunk bele, ha maradt volna a 8080 fele, es meg megturbositva - es ezaltal tovabb bonyolitva - a Z80 "boviteseivel" a 8080-hoz kepest :) Na az meg "szebb" lett volna ...
Title: Re: Altair BASIC
Post by: Povi on 2015.January.17. 22:08:08
Szerintem ez úgy volt, mint anno a 6501 procinál: az lábkompatibilis volt a Motorola 6800-zal, szénné is peretle a MOS-t a Motorola. Itt is ez lehetett: a Zilog nem akart egy jó kis pert a nyakába venni. (az is érdekes számomra, hogy gépi kód szintjén miért lehet kompatibilis, asm szinten meg nem, de valahol érthető is, egy assembly kód "hordozhatóbb").
Title: Re: Altair BASIC
Post by: lgb on 2015.January.18. 01:50:04
Erdekes tema ez. Ki lehet talalni Z80 gepi kodra is ujabb assembly szintaxist, attol, hogy egy tranzisztor is valtozna a Z80-ban :)
Peldaul, ha az ISA szintjen nezzuk, pl egy regiszter-regiszter kozotti adatatvitel nem igazan ugyanaz, mint amikor egy regisztert tarolni kell a memoriaban, vagy eppen onnan beolvasni. 65xx-en ezert asm-ban is tok mas neveket adtak neki (az A-val nezve most), pl LDA (LD A ..) ha memoriabol betolteni kell, STA (ST A, store), de pl TXA (transfer X->A) ha regiszterek kozott kell atvinni. Azt, hogy Z80 asm-ban ez mind "LD", az csak szintaxis kerdese, ettol meg Z80-ra is igaz lehet, hogy a sajat szintjen a "load", a "store" es a "transfer" jellegu utasitasok eleg nagy kulonbseget mutatnak, nyilvan. Vki egyszer poenkodott is vele, hogy 6502 asm-ot kb intel szintaxissal irta le, mov a,2 (LDA #2), mov a, x (TXA), es ilyesmik.

Amugy, az Z80 asm-ban (de intel is ...) mindig is zavart, hogy nincs tiszta jelzese annak, hogy most vmi konstans, vagy memoria, azaz pl:

Code: [Select]
LD A, valami
LD A, (valami)

Ok, itt a zerojel hivatott jelezni persze a dolgot, amde ott meg kifejezesekkel lehet zavar, ha pl egy nem tul fapados assembler-nel lehet azt is irni, pl:

Code: [Select]
LD A, (valami + 1) * 2
LD A, (valami + 1 * 2)

Ez most trukkos persze, de mondjuk elirtam hogy hova tegyem a zarojelet. A ketto igen mast jelent, az elsonel a zarojel csak matematikai szereppel bir, a masodiknal viszont nem, hanem az asm szintaxis resze.

En ezert szeretem 6502-nel a # jelet annak jelzesere, hogy konstans, es nem memoria:

Code: [Select]
LDA #2
LDA 2

Az elso a 2-ot, mint konstanst tolti az A-ba, a  masodik a memoriacimet. Persze, biztos van olyan, akinek meg ez nem tetszik :)

Az mondjuk pedig meg tovabb keveri a dolgot, hogy a # sok pl Z80 assemblerben a hexadecimalis jeloles, de 6502-nel nem, ott erre a $ szokas, azaz az "LDA #$FF" az mint konstanst a hex FF-et tolti be. Ez is megerne egy miset, "$", "#", "12h", "$12", jo eg, mennyi kulonbozo modszer a 16-os szamrendszer jelzesere :-P
Title: Re: Altair BASIC
Post by: Povi on 2015.January.18. 09:48:13
és akkor még ott van a hexa jelölésre a 0xff is a C-ből...

amin én meglepődtem, hogy Linux-on a disassembláló program (nem emlékszem a nevére) nem intel szintaktikával írja ki az x86 utasításokat, hanem AT&T-el (ugye?). Vagyis a mov utasításnál a célregiszter és a forrásregiszter fel van cserélve. Logikus ez is, hogy mov ax,bx azt jelenti, hogy ax-et töltsd bx-be, nem fordítva, mint az Z80-nál, vagy intelnél.
Title: Re: Altair BASIC
Post by: IstvanV on 2015.January.18. 13:49:57
és akkor még ott van a hexa jelölésre a 0xff is a C-ből...

Ezt a formátumot elfogadja az sjasm is.

amin én meglepődtem, hogy Linux-on a disassembláló program (nem emlékszem a nevére) nem intel szintaktikával írja ki az x86 utasításokat, hanem AT&T-el (ugye?).

Az objdump -d -M intel AT&T helyett Intel szintaxist használ.
Title: Re: Altair BASIC
Post by: lgb on 2015.January.18. 20:19:16
és akkor még ott van a hexa jelölésre a 0xff is a C-ből...

Igen, ezt kifelejtettem, ugy tunik ...
Title: Re: Altair BASIC
Post by: Povi on 2015.January.25. 13:22:31
Logout-on megjelent cikkem az Altair BASIC-ről:
http://logout.hu/cikk/negyven_eves_az_altair_basic_a_microsoft_elso_term/bevezetes.html (http://logout.hu/cikk/negyven_eves_az_altair_basic_a_microsoft_elso_term/bevezetes.html)
Title: Re: Altair BASIC
Post by: lgb on 2015.January.25. 22:31:12
Logout-on megjelent cikkem az Altair BASIC-ről:
http://logout.hu/cikk/negyven_eves_az_altair_basic_a_microsoft_elso_term/bevezetes.html (http://logout.hu/cikk/negyven_eves_az_altair_basic_a_microsoft_elso_term/bevezetes.html)

Jo cikk lett, gratula! Koszonet a "kedves szavakert" az JSep es szemelyem iranyaba :) Mondjuk meg mindig aggodom (mivel megemlitetted az JSep-t; hozzateszem a tobbiek kedveert, hogy amugy Povi megkerdezett errol engem, szoval nagyon korultekinto volt), hogy vmi lelkes JS programozo belenez az JSep-be es szornyethal ott menten ...

Amugy azt az okoskodot az egyik kommentben nem ertem mit akar, szerintem valamit nagyon kever emberunk ...
Title: Re: Altair BASIC
Post by: Zozosoft on 2015.January.25. 22:37:52
És mi van azzal a 65529-el?
Title: Re: Altair BASIC
Post by: endi on 2015.January.25. 23:28:16
nem semmi a bill gates által írt game, tisztára mint egy mai, mobilon divatos runner játék, csak ott a 3 sáv a divat! :)
amúgy ez most megihletett, lehet hogy a scrollos 256 színű basic programom ilyesmi lesz, azaz úton a tehenet (szamárt) kell kerülgetni :)

amúgy itt egy videó a bill gates féléből
http://youtu.be/05YI7BfmgPg
Title: Re: Altair BASIC
Post by: Povi on 2015.January.26. 08:31:41
nem semmi a bill gates által írt game, tisztára mint egy mai, mobilon divatos runner játék, csak ott a 3 sáv a divat! :)
amúgy ez most megihletett, lehet hogy a scrollos 256 színű basic programom ilyesmi lesz, azaz úton a tehenet (szamárt) kell kerülgetni :)

amúgy itt egy videó a bill gates féléből
http://youtu.be/05YI7BfmgPg

PGyurinak volt egyszer kérdése az egyik budatétényi találkozón, hogy mondjuk példákat az egy gombos játékokra. Az egyik a Flapp Bird (bár akkor még nem létezett, amikor kérdezte), a másik a szőnyegbombázós BASIC játék a demo kazettáról, a harmadik pedig a Donkey. Persze van több is... :-)
Title: Re: Altair BASIC
Post by: Povi on 2015.January.26. 08:32:58
És mi van azzal a 65529-el?

Szerintem ott nagyon félreértett valaki valamit... :-) Itt van az a rutin, ami string-ből alakítja át a sorszámot: http://altairbasic.org/int_dis_11.htm#LineNumberFromStr

Ebből a kódrészletből minden kiderül :-)
Title: Re: Altair BASIC
Post by: Povi on 2015.January.26. 08:33:55
Jo cikk lett, gratula! Koszonet a "kedves szavakert" az JSep es szemelyem iranyaba :) Mondjuk meg mindig aggodom (mivel megemlitetted az JSep-t; hozzateszem a tobbiek kedveert, hogy amugy Povi megkerdezett errol engem, szoval nagyon korultekinto volt), hogy vmi lelkes JS programozo belenez az JSep-be es szornyethal ott menten ...

Amugy azt az okoskodot az egyik kommentben nem ertem mit akar, szerintem valamit nagyon kever emberunk ...

Nekem van egy olyan gyanúm, hogy még a linkre sem kattintanak rá, nem hogy a forráskódot megnézik :-D
Title: Re: Altair BASIC
Post by: lgb on 2015.January.26. 14:25:16
Nekem van egy olyan gyanúm, hogy még a linkre sem kattintanak rá, nem hogy a forráskódot megnézik :-D

Szerintem okostojasunknak remlett valami, hogy kettes szamrendszerben mondjuk tizenhat biten abrazolhato legnagyobb szam decimalis alakban nem "kerek" (mino meglepetes ...), csak eppen az nem esett le neki, hogy a 65529 az nem eppen a 65535 ... Mondjuk az fura feltetelezes volt a reszerol, hogy egy ilyen cikk, forrasok, EP atirat stb utan esetleg te nem tudod, hogy miert van felso limit ...
Title: Re: Altair BASIC
Post by: lgb on 2015.February.07. 18:31:07
Sok szo esett mar a Z80 vs 6502 dologrol. A ket CPU-t nehez osszehasonlitani ugye. Viszont, adott a lehetoseg, hogy Microsoft BASIC van ugye Z80/8080-ra es 6502-re is (ez utobbi pl maga mondjuk a Commodore  64 alap BASIC interpretere). Ha feltesszuk, hogy 'eleg jol' (nehezen lehetne jobban) optimalizalt a cucc 6502-re es Z80-ra is, akkor egy egyszeru BASIC program futasidejet felhasznalva osszehasonlithato a ket CPU teljesitmenye (nyilvan az orajel elterest figyelembe veve) amolyan "atlalanos celu felhasznalas" eseten (mivel azert egy BASIC interpreterben ugye eleg durvan van eleg sok minden keverve).
Title: Re: Altair BASIC
Post by: Povi on 2015.February.07. 19:29:04
az a baj ezzel, hogy nem a C64 Basic-et kéne nézni, mert ott már más lebegőpontos számformátumot használnak, mint az eredeti Altair Basic-ben... Valami korai 6502-es BASIC-kel viszont nem lenne hülyeség megnézni. :-)
Title: Re: Altair BASIC
Post by: Povi on 2015.February.07. 19:31:28
Ráadásul ugye a 6502-es BASIC-et a 8K BASIC alapján csinálták, de nem fért bele 8kB-ba, ezért, mivel akkoriban 4kB-os egységekben lehetett memóriát venni, már hosszú hibaüzeneteket tettek a legelső 6502-es BASIC-be is, hiszen bőven volt hely... Ugye az Altair esetében az Extended BASIC-ben jelentek meg a hosszú hibaüzenetek, de ott már véleményem szerint kettévált a 8080 és 6502-es vonal.
Title: Re: Altair BASIC
Post by: lgb on 2015.February.07. 19:42:04
Hat lehet sakkozni, ez igaz (melyik verzio stb, Commodore-oknal is volt egy rakas ilyen-olyan) ... Es annak ellenere, hogy kb azonos a cel (BASIC interpreter hasonlo kepesegekkel), elkepzelheto, hogy tok mas modszerrel oldottak meg egy-egy szubrutint (ami lenyeges lehet) a ket CPU-n. Mindazonaltal  akkor is erdekes teszt lenne, meg ha nem is teljesen objektiv :) Max pl lehetne integer szamokkal nezni, nem lebegopontossal, bar lehet akkor is konveralja idolegesen? A% es hasonlokra celzok, de mondjuk most neztem C64 emulatoron, ciklusvaltozonak FOR-ban igy pl nem engedi, de ossze lehet rakni ciklust IF/THEN-el is persze ha az ember nagyon akarja :)
Title: Re: Altair BASIC
Post by: Zozosoft on 2015.February.07. 19:50:27
És Z80-as változat létezik egyáltalán? Tehát nem Z80-on futó 8080 kód, hanem rendesen Z80-ra írt.
Title: Re: Altair BASIC
Post by: lgb on 2015.February.07. 19:59:41
És Z80-as változat létezik egyáltalán? Tehát nem Z80-on futó 8080 kód, hanem rendesen Z80-ra írt.

Hmmm, ez mondjuk jogos kerdes. Mert a 8080-ra irt, az Z80-on nem teljesen hasznalja ki a Z80 kepessegeit ...
Title: Re: Altair BASIC
Post by: Povi on 2015.February.07. 20:12:08
És Z80-as változat létezik egyáltalán? Tehát nem Z80-on futó 8080 kód, hanem rendesen Z80-ra írt.
Az Altair-ra írt BASIC nem is fut Z80-on, a hülye paritásbites vacakság miatt.
A CP/M-es BASIC már fut Z80-on is, de 8080-on is, szóval az új utasítások (pl. DJNZ) nincsenek kihasználva.
Title: Re: Altair BASIC
Post by: lgb on 2015.February.07. 23:51:55
Inkabb az Off-topic/Commodore buheralas topic-ba tertem at ezzel :)
Title: Re: Altair BASIC
Post by: Povi on 2015.February.11. 02:00:32
nem is tudom már, hova írjam, ide, vagy a Commodore off-topicba:
ugye írtam, hogy máshogy kezeli a 4k, 8k basic és az extended basic (és későbbi verziói) a tokeneket. Más a táblázat szerkezete is.
Az extended basic-ben (és a CP/M verzióban és az x86-os GW-BASIC-ben is) az alábbi:

Code: [Select]
; F
l019a:  db      "O","R"+128     ; FOR
        db      0x82
        db      "N"+128         ; FN
        db      0xd3
        db      "R","E"+128     ; FRE
        db      0x0f
        db      "I","X"+128     ; FIX
        db      0x1f
        db      0

; G
l01a6:  db      "OT","O"+128    ; GOTO
        db      0x89
        db      "O T","O"+128   ; GO TO
        db      0x89
        db      "OSU","B"+128   ; GOSUB
        db      0x8d
        db      0

míg a 4k és 8k basic-ben és a C64 verzióban az alábbi:
Code: [Select]
l0073:  db      "EN","D"+128   ; 80
        db      "FO","R"+128   ; 81
        db      "NEX","T"+128  ; 82
        db      "DAT","A"+128  ; 83
        db      "INPU","T"+128 ; 84

stb.
Title: Re: Altair BASIC
Post by: lgb on 2015.February.12. 00:32:26
Erdekes. Es az END token 0x80 is kozelebb all CBM basic es 4/8K basic tekinteteben? Mert akkor ez alapjan azt mondana az ember, hogy ott erdemes tovabb osszehasonlitgatni.

http://www.davidviner.com/cbm9.html?name=Basic+4%2B+Source+Code (http://www.davidviner.com/cbm9.html?name=Basic+4%2B+Source+Code)

Ez is erdekes, itt van nemi datum info, meg letoltheto cucc is. Mondjuk a CBM (aki nem tudna, az a Commodore Business Machine akar lenni) BASIC eseten en a Commodore logikajat soha nem ertettem. Volt ugye meg a "regebbi gep" vonalon BASIC 4 nekik. Aztan VIC20/C64 kapcsan BASIC 2 volt, a Commodore plus/4 gep eseten az a 3.5-os verzio ... A soha meg nem jelent Commodore LCD-n 3.6-os BASIC van, ami amugy majdnem uaz, mint a 7-es BASIC, ami a C128-on. A 10-es BASIC pedig a C65-e lett volna. Szoval szerintem ennek a szamozasnak total semmi ertelme, amit Commodore hasznal, foleg az elejen, hogy volt 4-es, aztan lett 2-es. WTF ...

Ez mondjuk egesz erdekes cikk (van benne jo sok mindenrol szo, nem csak amire a cim utal, es a cegen van egy kis timeline diagramm is): http://www.pagetable.com/?p=43 (http://www.pagetable.com/?p=43) itt meg az Altair BASIC-rol is van szo, hogy ne legyek teljesen off topic :)

"The BASIC V2 used on the VIC-20 and the C64 is actually a stripped-down version of PET BASIC 4.0 and not a ported version of PET BASIC V2."

Uh :) Logi-kuss ... Es akkor a cikkben kulon erdekesseg, hogy az ismert 8080 es 6502 vonal melle bejon meg a 6800 CPU vonal, arra is volt MS BASIC.

Illetve, amit most meg igy hirtelen talaltam a temaban: http://www.pagetable.com/?p=46 (http://www.pagetable.com/?p=46)
Title: Re: Altair BASIC
Post by: Povi on 2015.February.12. 01:34:51
a Commodore BASIC-ben 0x80-nal kezdődik a tokenek számozása, az END-del

itt van egy eléggé alulkommentált disassembly:
http://www.ffd2.com/fridge/docs/c64-diss.html

sok hasonlóság van az altair BASIC-kel, kb. tényleg, mintha kézzel átírták volna a 8080 kódot 6502-re (természetesen a lebegőpontos rutinokra ez már nem igaz, mert a CB több digit-et tartalmaz).
Title: Re: Altair BASIC
Post by: lgb on 2015.February.12. 01:39:45
a Commodore BASIC-ben 0x80-nal kezdődik a tokenek számozása, az END-del

itt van egy eléggé alulkommentált disassembly:
http://www.ffd2.com/fridge/docs/c64-diss.html

Koszi de ezeket tudom/ismerem, a kerdesem inkabb a 8080/Z80 vonalhoz hasonlitas kapcsan jott.

Quote
sok hasonlóság van az altair BASIC-kel, kb. tényleg, mintha kézzel átírták volna a 8080 kódot 6502-re (természetesen a lebegőpontos rutinokra ez már nem igaz, mert a CB több digit-et tartalmaz).

Elvileg abbol is volt ketfele verzio :) A CBM basicben a tobbes van az igaz.
Title: Re: Altair BASIC
Post by: Povi on 2015.November.16. 17:18:09
És Z80-as változat létezik egyáltalán? Tehát nem Z80-on futó 8080 kód, hanem rendesen Z80-ra írt.
Hááát, pl. a TRS-80 (és a HT1080Z, ami ugyanaz) BASIC-jének is az Altair BASIC az alapja, bár tudtommal nem írták át a régi (8080-as) kódrészleteket Z80-ra, de az újabb funkciók már kihasználják a Z80-nal bevezetett utasításokat is.