Welcome, Guest. Please login or register.


Author Topic: Altair BASIC (Read 14546 times)

Online Zozosoft

  • EP addict
  • *
  • Posts: 13519
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://enterprise.iko.hu/
Re: Altair BASIC
« Reply #15 on: 2014.November.21. 09:16:58 »

Offline Povi

  • EP addict
  • *
  • Posts: 1873
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #16 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...
*** Speicherplatz zu klein

Offline Lacika

  • EP addict
  • *
  • Posts: 2929
  • Country: hu
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://www.ep128.hu
Re: Altair BASIC
« Reply #17 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:

Offline Povi

  • EP addict
  • *
  • Posts: 1873
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #18 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


*** Speicherplatz zu klein

Online geco

  • EP addict
  • *
  • Posts: 5430
  • Country: hu
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 31.0 Firefox 31.0
    • View Profile
Re: Altair BASIC
« Reply #19 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

Offline lgb

  • EP addict
  • *
  • Posts: 3496
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://lgb.hu/
Re: Altair BASIC
« Reply #20 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=46

Tenyleg, csak en nem olvastam utana, vagy tudja vki? Az IS-BASIC teljesen nullarol irt BASIC implementacio?

Online Zozosoft

  • EP addict
  • *
  • Posts: 13519
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://enterprise.iko.hu/
Re: Altair BASIC
« Reply #21 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.

Offline Povi

  • EP addict
  • *
  • Posts: 1873
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #22 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.

*** Speicherplatz zu klein

Offline lgb

  • EP addict
  • *
  • Posts: 3496
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://lgb.hu/
Re: Altair BASIC
« Reply #23 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.

Offline Povi

  • EP addict
  • *
  • Posts: 1873
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #24 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... :-)

*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 1873
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #25 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 :-)
*** Speicherplatz zu klein

Online Zozosoft

  • EP addict
  • *
  • Posts: 13519
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://enterprise.iko.hu/
Re: Altair BASIC
« Reply #26 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?

Offline Povi

  • EP addict
  • *
  • Posts: 1873
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #27 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.
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 1873
  • Country: hu
  • OS:
  • Linux (Ubuntu) Linux (Ubuntu)
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://povi.fw.hu
Re: Altair BASIC
« Reply #28 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.
*** Speicherplatz zu klein

Online Zozosoft

  • EP addict
  • *
  • Posts: 13519
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 33.0 Firefox 33.0
    • View Profile
    • http://enterprise.iko.hu/
Re: Altair BASIC
« Reply #29 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: