OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 29.03.2024, 02:50

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 
Autor Zpráva
 Předmět příspěvku: BASIC 5Z-009 a jeho zaujímavosti
PříspěvekNapsal: 16.03.2021, 17:48 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 09.10.2013, 19:04
Příspěvky: 1403
Has thanked: 130 times
Been thanked: 71 times
Vie mi niekto povedať, ak máte niekto naštudovaný interpreter, ako BASIC rozpozná tieto 3 časti:
ONAGOTO
Ako vie, že ON je príkaz, A premenná a GOTO príkaz?

Ak by som to interpretoval ja, tak by som spravil premennú AG, ktorá je zapísaná ako AGOTO.

_________________
Sharp MZ-821
Milsa MZ-841


Nahoru
 Profil  
 
 Předmět příspěvku: Re: BASIC 5Z-009 a jeho zaujímavosti
PříspěvekNapsal: 16.03.2021, 19:55 
Offline
Profík

Registrován: 28.07.2018, 14:37
Příspěvky: 921
Has thanked: 43 times
Been thanked: 411 times
Protože mě to zaujalo, vyzkoušel jsem...

Již ve fázi ukládání obsahu dialogového řádku do mezikódu se postupuje takto:

1) identifikuje se příkaz ON a tak se uloží jeho zástupný kód 91h (příkaz ONA neexistuje, a tak se A nezahrne do příkazu)
2) protože se nenajde další příkaz, začínající na A (a pokračující znaky -G-O-T-O), tak se A uloží jako jednoduchý znak a později je interpretován jako samostatná proměnná
3) dále se ve zdrojovém kódu identifikuje příkaz GOTO a tak se uloží jeho zástupný kód 88h

A po spuštění už BASIC ví, co má dělat. Má prostě sekvenci "příkaz_ON"-"znak_A"-"příkaz_GOTO".

Zkoušel jsem na PMD-85, ovšem princip bude stejný.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: BASIC 5Z-009 a jeho zaujímavosti
PříspěvekNapsal: 16.03.2021, 22:16 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 09.10.2013, 19:04
Příspěvky: 1403
Has thanked: 130 times
Been thanked: 71 times
Dobre, ale ako vie, že premenná je A a nie AGOTO? BASIC na MZ pozná premenné aj s dlhými názvami, ale interne berie vždy len prvé 2 znaky, takže AGOTO a AGA je tá istá premenná. Ide mi o to, že vie, že má zastaviť za tým A a pokračovať od začiatku, s písmenom G. Alebo proste neberie to ako premennú AG. MZ BASIC totiž umožňuje písať bez medzier pre ušetrenie voľného miesta. Niektoré programy to využívajú doslova do tla.

Doplnené: Ale to čo píšeš istú logiku má. To by ale znamenalo, že za každým znakom názvu budúcej premennej hľadá možný príkaz. Čo by ale spomalilo čítanie, keďže sa musí stále vracať.

_________________
Sharp MZ-821
Milsa MZ-841


Nahoru
 Profil  
 
 Předmět příspěvku: Re: BASIC 5Z-009 a jeho zaujímavosti
PříspěvekNapsal: 16.03.2021, 22:36 
Offline
Profík

Registrován: 28.07.2018, 14:37
Příspěvky: 921
Has thanked: 43 times
Been thanked: 411 times
On se ten zdrojový text prohledává v době, kdy zadáváš jednotlivé řádky. Tam rychlost nevnímáš.

Pro jistotu ještě upřesnění: Příkaz "ON" detekuje bez problému. Pak narazí na písmeno A. Prohledá tedy všechny své známé příkazy, a protože žádný na A/AG/AGO (dále asi nemusíme...) neidentifikuje, písmeno A uloží do "výstupního proudu". Pokud by pak následovalo další písmeno proměnné, provede totéž. A jakmile narazí na písmeno "G", které je součástí stringu "GOTO", detekuje se opět celý příkaz.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: BASIC 5Z-009 a jeho zaujímavosti
PříspěvekNapsal: 16.03.2021, 23:33 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 09.10.2013, 19:04
Příspěvky: 1403
Has thanked: 130 times
Been thanked: 71 times
Takže síce rýchlostne neefektívne, ale pre funkciu ideálne. Ďakujem za pomoc.

_________________
Sharp MZ-821
Milsa MZ-841


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 6 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz