Autor ::Roman Bórik Poslaná :: 27.06.2010 14:41:40 Predmet ::Re: Basic G a Pascal na PMDčku.
1. Výskok z editora PASCALu je pomocou STOP+EOL. V emulátore je pre PMD 85 klávesa STOP mapovaná na klávesy CTRL a klávesu ESC. EOL je pochopiteľne Enter. Viď. rozloženie klávesnice v emulátore ALT+F1.
2. Nahrávanie na pásku funguje v oboch verziách PASCALu. Jednotlivé verzie, ale ukladajú v hlavičke inú začiatočnú adresu, takže napriek rovnakému formátu zdrojového textu/súboru sa súbor uložený verziou 2.2 nenahraje do verzie 1.02.
3. PASCAL na PMD 85 zdrojový text kompiluje, ale neumožňuje uložiť výsledný kompilát. Je to zrejme preto, že skompilovaný kód je silne závislý od samotného PASCALu.
4. PMD 85-3 má možnosť prečíslovania riadkov. Doporučujem preštudovať manuál k PMD 85-3
Správa
Autor ::Tomáš Pecina Poslaná :: 06.10.2015 16:04:43 Predmet ::Re: Basic G a Pascal na PMDčku.
Zkoušel někdo Pascal V2.2 na skutečném PMDčku? Mně v emulátoru chodí ve versi 1.02 (pascal2.rmm) nahrávání i čtení, a to i programy nahrané versí 2.2, ve versi 2.2 (pascal22.rmm) mohu ukládat, ale nepřečtu. Trochu už fungování Pascalu rozumím, disassembloval jsem si obě verse, takže v případě potřeby mohu vygenerovat obraz Pascalu pro MGLD, na kterém se čtení dá ověřit, bez nutnosti mít HW modul (samozřejmě nebude fungovat vše, ale prověřit tuto funkci snad bude možné).
Připadá mi zvláštní, že by někdo dal do oběhu takhle zjevně nefungující ROM, přičemž chyba v ROMce to být nemůže, Pascal kontroluje integritu dat přes jednobytový kontrolní součet.
Správa
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
Správa
Autor ::Lisiak4 Poslaná :: 27.06.2010 23:58:53 Predmet ::Re: Basic G a Pascal na PMDčku.
Ano, neviem, čo som robil zle, ale zo začiatku mi to ukladanie nejako nešlo. Už mi to funguje v oboch verziách. Tak pardón za ten omyl :). Čítanie mi ide len vo verzii 1.02, tak ako už bolo spomenuté. Každopádne nemožnosť načítania súboru vo verzii 2.2 túto verziu robí nepoužiteľnou pre programovanie. A verzia 1.02 nepodporuje diakritiku.