Autor ::Roman Bórik Poslaná :: 09.10.2015 13:10:01 Predmet ::Re: Basic G a Pascal na PMDčku.
Netestoval som teraz TOM Pascal V2.2 na živom PMD 85, ale opäť som trochu trasoval v Emulátore.
Samozrejme, tiež mi príde čudné, že napriek tomu, že je v kóde test na kontrolný súčet (čo by malo znamenať, že je program z RomModulu natiahnutý bez chýb), tak Pascal V2.2 nefunguje správne...
Ale späť k trasovaniu. Porovnával som kód Pascalu V1.02 a V2.2 a podľa očakávania tam sú mnohé podobnosti.
Obe verzie si najprv zisťujú na akom stroji bežia a podľa veľkosti pamäte nastavujú premenné na adresách #C430 a #C432 na začiatok a koniec pamäti pre program. Program (už tokenizovaný) sa ukladá od vyšších adries k nižsím, takže #C430 > #C432. Ak som to správne pochopil, premenná na adrese #C434 obsahuje adresu konca aktuálne vloženého programu. A táto premenná je práve kameňom úrazu.
Na adrese #6DFD (V1.02) resp. #0444 (V2.2) je rutina, ktorá hľadá koniec aktuálneho programu v pamäti. Vo V1.02 sa pri prechádzaní po riadkoch programu priebežne aktualizuje aj premenná #C434, takže po ukončení rutiny je v tejto premennej adresa konca programu a teda miesto kam sa prihraje nahrávaný program. Vo V2.2 však k aktualizácii premennej #C434 nedochádza a tak zostáva nezmenená (po spustení Pascalu je tam 0).
Takže, ak sa ide načítať do pamäti program, tak sa najprv zavolá spomenutá rutina a následne sa počas spracovávania zdrojového textu (ten je na kazete/diskete uložený v čistom tvare) tokenizovaný program ukladá od adresy v premennej #C434. Keďže vo V2.2 je v tejto premennej nesprávna hodnota, tak sa program neukladá tam, kam by sa mal. Po prvom spusteni Pascalu, kedy je v premennej #C434 nula, tak sa tokenizovanie prejaví prepisovaním spodnej časti obrazovky.
Ako som spomenul, kód oboch verzií sa veľmi podobá, ale spomenutá rutina sa odlišuje dosť a hlavne v tom, že premenná #C434 sa neaktualizuje. Aký bol zámer a ako to vlastne "po novom" malo vo V2.2 fungovať, neviem.
Ak po skončení inkriminovanej rutiny premennú #C434 korektne nastavím, tak sa program nahraje správne a pochopiteľne aj funguje.
Správa
Autor ::Tomáš Pecina Poslaná :: 09.10.2015 17:17:49 Predmet ::Re: Basic G a Pascal na PMDčku.
Výborně, to je cenné zjištění. Mým cílem - kromě opravy této chyby - je vytvořit si pro Pascal stejný plugin, jaký mám pro Basicy (v PMD i v Ondrovi), a který umožní tokenizaci/detokenizaci programu v paměti z/do ASCII souboru, proto jsem zatím analysoval, jak funguje LOAD v P1.02 (0x7b76) a k analyse P2.2 (0x3145) se teprve chystám. Jestliže je to takto jednoduchá závada, bude možná snadná oprava), ovšem proč někdo vypáli flagrantně nefunkčí ROM-modul, zůstává záhadou.
Správa
Autor ::Tomáš Pecina Poslaná :: 09.10.2015 23:32:59 Predmet ::Re: Basic G a Pascal na PMDčku.
Autor ::Roman Bórik Poslaná :: 11.10.2015 09:53:42 Predmet ::Re: Basic G a Pascal na PMDčku.
Uvidíme.
Mám ešte "kacírsku" myšlienku. Čo keby sme prečíslovali túto verziu na 2.3, aby sa to neplietlo.
Správa
Autor ::Tomáš Pecina Poslaná :: 11.10.2015 12:16:33 Predmet ::Re: Basic G a Pascal na PMDčku.
To mě taky napadlo, ale řekl jsem si, že je-li nějaká verse zcela nefunkční, nemá smysl ji udržovat při životě. Možná bychom mohli napsat autorovi (učí v Blavě na MFF), jestli neví, proč tento problém vůbec vznikl.
Správa
Autor ::Roman Bórik Poslaná :: 12.10.2015 21:57:30 Predmet ::Re: Basic G a Pascal na PMDčku.
Predsa som našiel problém. Nefunguje prepínač Insert/Overwrite - kláves K0.
Problém spočíva v tom, že príznak INS/OVR je na adrese #06E0 a od tejto adresy ste umiestnili opravný kód. Tým sa po stlačení K0 prakticky poškodí tento kód a po chvíli to zhavaruje.
Pre opravu "stačí" opravný kód umiestniť až za tento príznak (po spustení 0FFh).
Správa
Autor ::Tomáš Pecina Poslaná :: 12.10.2015 23:31:14 Predmet ::Re: Basic G a Pascal na PMDčku.
Mělo by být opraveno, prosím, stáhněte si ze stejných adres čerstvé verse.
Správa
Autor ::Roman Bórik Poslaná :: 13.10.2015 09:34:38 Predmet ::Re: Basic G a Pascal na PMDčku.
Teraz už funguje aj prepínanie INS/OVR. Super.
O napísaní Tomcsányimu som už uvažoval skôr, resp. sa mi marí, že som mu už kedysi dávno písal, ale o iných veciach. A už si nepamätám s akým výsledkom (nemám z roboty prístup k súkromným emailom).
Zamyslím sa, ako to vôbec formulovať, keďže je to 25 až 30 rokov, čo sa venoval PMD 85. Po takej dobe by som si nepamätal ani ja nič :-D