Forum

Z PMD 85 Infoserver

:: späť na zoznam tém ::
Správa
Autor  Autor ::  Lisiak4
Poslaná  Poslaná ::  26.06.2010 19:05:16
Predmet  Predmet ::  Basic G a Pascal na PMDčku.
Zdravím,

Tak som sa trochu hral s ROM modulom Pascalu. Chcel som si doplniť informácie, bo za doby, kedy som mal PMD som ani nevedel, ze okrem Basicu G je na PMD aj Pascal. Trochu ma láka možnosť sa hrať s Basicom a chcel som to porovnať s Pascalom. Čisto teoreticky, keby som chcel napísať niečo vo vyššiom programovaciom jazyku tak zatiaľ neviem, ktorý by som zvolil. Je mi jasné, že štandardom je Basic, ale zase uživateľsky prívetivejšie prostredie sa mi zdá byť v Pascale. Aké sú teda výhody a nevýhody týchto jazykov čo sa týka rýchlosti (oba su pomalé, ale ktorý viac :) ), pamatovej náročnosti? Poprípade ešte nejaké nové poznatky, ktoré zvýhodňujú jeden jazyk pred druhým? Tak tiež by nebola odveci podobnosť
s nejakým jazykom vyššiej úrovne iného 8 bitového počítača ako ZX Spectrum, Commodore 64, Atari 800 XL. A keby som chcel byť moc náročny tak aj Atari ST :). Neviem, či si na to niekedy nájdem čas, ale odpoveď by ma zaujímala, pokiaľ sa nejako dá zodpovedať. Som začiatočník v programovaní v Pythone a ten mi pokrýva platformy ako Commodore Amiga (ak keď nie ideálne) a dnešnú klasiku ako PC (Windows, Linux). Asi sa nejako nedá použit už mnou napísaný text na PC pre PMD skript? To by som už asi chel moc :). Nemám na mysli príkazy, ale texty. Keby som mal byť konkrétny tak texty z textovej hry. Bolo by fajn, keby to človek nemusel písat ešte raz... . Inak čo som skúšal ten Pascal, tak bezproblémovo mi fungovala verzia V1.02 ale V2.2 sa mi spustí, nahraje sa mi program a keď ho dám spustiť tak mi to zahlási chybu ako keby sa nenahrali žiadne data. Aj keď po nahraní programu dám editáciu tak mi tam vyskočí len prázdne okno. Proste žiadny skript. Používam samozrejme rovnaký postup ako u V1.02 kde mi všetko funguje správne. A Nejako sa mi zatiaľ nepodarilo prísť na postup ako skočit z editácie skriptu spať do hlavného menu Pascalu, aby som program mohol spustiť okrem možnosti reštartovať PMD, načíta sa mi Pascal, zmenený program zostane v pamati a až tak spustiť program možnostou "ROB". Zároveň Vám ďakujem za manuál k príkazom BASICu-G. Našiel som tu aj nejaký manuál k Pascalu, ale v súbore pre Kasword a pri spustení Kaswordu som zatiaľ nenašiel možnosť načítávať súbor. V ňom som sa zatiaľ ale hrabal minimálne :). No a návod na Kasword je v súbore pre Kasword... :).
 
Správa
Autor  Autor ::  Lisiak4
Poslaná  Poslaná ::  27.06.2010 11:20:10
Predmet  Predmet ::  Re: Basic G a Pascal na PMDčku.
Zatiaľ to vizerá na Basic G, keď sa k tomu niekedy odhodlám. Díky Dexi za nápad pozrieť rovno do súboru. Zistil som tak, ako sa ide z EDITÁCIE v Pascale spat do MENU (Esc+Enter). Ani vo verzii 1.02 som nejako nerozbehal nahrávanie, ale verím, že by to šlo ako píše Roman B. Moc som sa tým nezaoberal. Zkúsil som v emulátoru od Martina Schotka, kde v poslednej jeho verzii je tiež Pascal v 1.02 uložiť súbor a tam mi to fungobalo a potom som si ho nahral v emulátore od RM a bolo to OK :). No verzia Pascalu 2.2 má hlavne podporu diakritiky, čo je pre textovů hru zásadná vec. Kompilácia Pascalu u verzie pre PMD ale asi neni, bol by to podla mna malý zázrak. Bral by som možnosť horšieho čítania kódu, ako príkazom LIST v Basicu. Čítal som niekde, že má Basic G verzia 3 možnosť prečíslovania riadku čo nemusí byť tak zlá vlastnosť. Mám z tých riadkov trochu v dnešnej dobe asi strach. Dokonca sa mi zdá, že to bol Roman B. poprípade jeho brat, kto to písal niekde na fóre. Možno söm to používal, keď som mal PMDčko a sám už o tom už ani neviem, pokiaľ touto vlastnostou Basic disponuje.
 
Správa
Autor  Autor ::  Roman Bórik
Poslaná  Poslaná ::  27.06.2010 14:41:40
Predmet  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  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  06.10.2015 16:04:43
Predmet  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  Autor ::  Roman Bórik
Poslaná  Poslaná ::  09.10.2015 13:10:01
Predmet  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  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  09.10.2015 17:17:49
Predmet  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  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  09.10.2015 23:32:59
Predmet  Predmet ::  Re: Basic G a Pascal na PMDčku.
Zkuste si, prosím, stáhnout http://www.pecina.cz/files/pascal22-fixed.bin a ověřit, zda funguje.
 
Správa
Autor  Autor ::  Roman Bórik
Poslaná  Poslaná ::  10.10.2015 23:15:41
Predmet  Predmet ::  Re: Basic G a Pascal na PMDčku.
Super. Zdá sa, že je to v poriadku.
 
Správa
Autor  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  11.10.2015 06:16:17
Predmet  Predmet ::  Re: Basic G a Pascal na PMDčku.
Je otázka, zda se problémy neprojeví časem, nicméně pro dokumentaci, tady je k tomu zdroják: http://www.pecina.cz/files/pascal22-fixed.xml
 
Správa
Autor  Autor ::  Roman Bórik
Poslaná  Poslaná ::  11.10.2015 09:53:42
Predmet  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  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  11.10.2015 12:16:33
Predmet  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  Autor ::  Roman Bórik
Poslaná  Poslaná ::  12.10.2015 21:57:30
Predmet  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  Autor ::  Tomáš Pecina
Poslaná  Poslaná ::  12.10.2015 23:31:14
Predmet  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  Autor ::  Roman Bórik
Poslaná  Poslaná ::  13.10.2015 09:34:38
Predmet  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  Autor ::  Lisiak4
Poslaná  Poslaná ::  27.06.2010 23:58:53
Predmet  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.
 
Správa
Autor  Autor ::  Martin Bórik
Poslaná  Poslaná ::  27.06.2010 13:48:59
Predmet  Predmet ::  Re: Basic G a Pascal na PMDčku.
Ja mám len takú blbú otázku:

Keď už ísť do textovky na PMD, prečo sa radšej nepotrápiť s naštudovaním strojového kódu i8080, nepreštudovať si vstupné body Monitorov a urobiť si vlastné rutiny na výpis textu s diakritikou, vlastné uloženie všetkých textov (napr. aj komprimovane) atď atď ... ako sa viazať na nejaké interpretované jazyky a nechať sa nimi obmedzovať priestorom, možnosťami, nahrávaním zdrojákov do nich a čo ja viem ešte akými problémami okolo...?

A pritom to ide tak jednoducho ... priamo na PC, akýkoľvek lepší textový editor, nahodený highlighter na i8080, vytvorený batch na kompiláciu cez AS, hotová binárka sa vloží od offsetu 56 do vytvoreného nekomprimovaného PSN snapu emulátora a ihneď test... Какая проблема...?
 
Správa
Autor  Autor ::  Lisiak4
Poslaná  Poslaná ::  27.06.2010 14:53:46
Predmet  Predmet ::  Re: Basic G a Pascal na PMDčku.
Tá otázka neni blbá, ale povedal by som, že niekomu, kto programuje v Pythone postačuje na zvládnutie Basic a nie strojový kód a že v Basicu urobím textovú hru rýchlejšie ako v strojovom kóde, pokiaľ som amatér a nie profesionálny programátor z rady RM-TEAMu :). To by som sa skor trápil s radou Motorola MC68000 :) keby sa malo jednat o nízkoúrovňové programovanie (Commodore Amiga). Ale mám rád praktické veci. A multiplatformnosť je fajn vec. Robí mi radosť aj hambu, radosť z toho, že som vobec niečo napísal, že moj jediný program, ktorý som dokončil minulý rok funguje a blíži sa mojim predstavám podla programátorských schopností ktoré mám. Že som spolu s jedným amigistom dokázali splácat dokopy ADF súbor pre moj program (Amiga disk file). A hambu v tom, že pre Amigu potrebuje moj program 11 MB RAM co je moc pre počítač tej doby. Proste si to spustí človek len s turbo kartou na Amige, procesor stačí 68020 takze Amiga 1200. A ja to sem trepnem :) Je to princ Jason :). Neni to síce na úrovni originálu, urobil som tam svoje ovladanie pomocou klasického textu. Dúfam, že to nikomu vadiť nebude, že som si to dovolil prepísat bez nejakého súhlasu. Jasoňa som ako malý nedohrál, tak som ho dohral v mojej 30ke. Povodný autori su uvedený. Týmto zdravím Ceres Soft :).
 
Správa
Autor  Autor ::  Martin Bórik
Poslaná  Poslaná ::  27.06.2010 15:43:52
Predmet  Predmet ::  Re: Basic G a Pascal na PMDčku.
Akože ... poviem na rovinu, textovku som mal tiež v pláne naprogramovať, takže, ak je nejaký dobrý námet a pekný dej, nie je problém, aby som pomohol ku realizácii priamo v low-level i8080 ... textovky mám rád!
 
Správa
Autor  Autor ::  Lisiak4
Poslaná  Poslaná ::  28.06.2010 01:31:09
Predmet  Predmet ::  Re: Basic G a Pascal na PMDčku.
Ja som v minulosti mal rad nástupcu textovej hry a tou je klasická adventura, princ Jasoň mi prirástol k srdcu asi preto, že som ho hrával ako malý. Je to asi jediná textová hra, ktorú som prešiel. Pre naprogramovanie som to bral ako ideálnu vec pre prvé zoznámenie sa s Pythonom. Programovanie v Pythone je pre mna prvoradé tak ako prvé skúsenosti s GUI GTK v mojom prípade pyGTK. Venujem tomu asi veľkú čast mojeho voľného času a nerád by som na úkor učenia sa Assembleru pre PMD nejako podstatne tento čas skracoval. Pokiaľ nebudú vadiť veľmi pomalé kroky robenia nejakej textovky v Assembleru tak to možem skúsiť. Myslím, že na to nemám. Na strednej škole mi Assembler nič nevravel a som mu nerozumel. Ale bolo to tam aj letmo brané. Dúfam, že je tu reč o Assemblery (skratky sú fajn), alebo vážne strojový kód? Len pre predstavu, Jasona som robil asi 1 rok z toho tak 3 možno 4 mesiace mi zobralo rozbehanie to aj pod Amiga platformou spolu s jednym amigistom (bez neho by som to nedal). Raz som to po dokonceni cele upravoval. Som si potikal s rekurziou, kde u PC sa program choval normálne (defaultne nastavená hĺbka rekurzie u Pythonu je 2000) A u Amigy pri asi 130 zanorení pretiekol zasobník :).
 
Správa
Autor  Autor ::  dex
Poslaná  Poslaná ::  27.06.2010 17:13:57
Predmet  Predmet ::  Re: Basic G a Pascal na PMDčku.
Textovku v Pascalu jsem plánoval na Ondrovi, kde je kompilátor HiSoft Pascal (takže žádné interpretované jazyky), ale je tam problém - moje kopie překladače se s delším programem hroutí.
Co se textovek týče, tak Basic je dostačující (v PMD ho má každý, narozdíl od Pascalu), ale programy v Basicu prostě nepůsobí tak "profesionálně" (nehledě na to, že v Basicu se zahazuje dost paměti a je problém tvořit třeba komprimované texty).
 
Správa
Autor  Autor ::  Roman Bórik
Poslaná  Poslaná ::  26.06.2010 22:22:42
Predmet  Predmet ::  Re: Basic G a Pascal na PMDčku.
Žiaľ, TOM Pascal V2.2 nie je zrejme úplne v poriadku a o probléme s nahrávaním programu z kazety viem. Zápis na kazetu funguje. Keď som získal tento ROM modul, snažil som sa trasovaním zistiť, kde je problém pri čítaní z kazety, ale bol som neúspešný. A neskôr som už na to nemal čas.
Zdrojové texty oboch verzií sú na kazetu ukladané v 512 bytových blokoch (dôvod si môžete domyslieť), ako obyčajný textový súbor s riadkami ukončenými CRLF. Koniec textu je označený kódom 1Ah. V pamäti je ale zdrojový text tokenizovaný. Takže pri zápise na kazetu sa robí expanzia kľúčových slov a pri čítaní z kazety sa kľúčové slová tokenizujú. Dôvodom tokenizácie je, pochopiteľne, šetrenie pamäti.
Z rýchleho pohľadu do kódu som vtedy zistil, že TOM Pascal V2.2 sa od predošlej verzie PASCAL-PMD V1.02 (prípadne opravenej V1.1) líši v týchto veciach:
- zaberá v ROM Module takmer 28kB oproti 20kB pôvodnej verzie
- v pamäti je len potrebná časť kódu a zbytok sa podľa potreby z ROM Modulu doťahuje - opäť šetrenie pamäti
- chybové hlásenia sa vypisujú v textovej forme, nie iba číselne (toto je jeden z prípadov, kedy sa časť kódu doťahuje z ROM Modulu)
- pozná typ ukazateľ ^, s čím súvisí aj pridanie ďalších kľúčových slov NIL, RECORD, WITH a príkazov NEW, DISPOSE, MARK, RELEASE
 
Správa
Autor  Autor ::  dex
Poslaná  Poslaná ::  26.06.2010 20:13:51
Predmet  Predmet ::  Re: Basic G a Pascal na PMDčku.
Ne moc pohodlně, ale ten soubor pro Kasword (a dokonce celé .ptp s návody) se dá prohlížet i v hexa editoru nebo Notepadu pod Windows.
Takže jsem z něj vyčetl, že do Kaswordu se texty nahrávají pomocí K9.

Pokud verze 1.02 program nahraje a verze 2.2 ne, ptal bych se, zda mají obě verze stejný formát zdrojových textů. Je možné, že nejsou mezi sebou kompatibilní.

Problém srovnání Basicu a Pascalu je ten, že každý slouží k něčemu jinému - Basic je obvykle interpretovaný jazyk (i když kompilátory existují, byť ne na PMD), zatímco Pascal je jazyk kompilovaný, sloužící k tvorbě binárek (a jen vzácně se jedná o interpret, který kompilovat neumí - jako třeba Mikrobáze Pascal pro ZX Spectrum). Kompilovaný jazyk za normálních okolností bude vykonávat program rychleji, než interpret.
Navíc jsou si oba jazyky hodně příbuzné a rozdíly mezi Pascalem a moderními kompilovanými verzemi Basicu jsou spíš čistě formální.
Závisí taky na tom, jak je daný jazyk naprogramován.
Třeba Basic na šestnáctibitovém Texas Instruments 99/4A je pomalejší než na osmibitech (používá více vrstev abstrakce, a šestnáctibitový procesor už výkonem ztrátu nedožene), naopak osmibitový Acorn Proton (BBC) s procesorem 6502 byl v testech tehdejších počítačových časopisů výkonnější než IBM PC právě proto, že vykonání stejného programu ve velmi dobře napsaném a optimalizovaném BBC Basicu i na pomalejším procesoru zabralo méně času, než stejný program vykonávaný v Basicu od Microsoftu pro PC (viz Practical Computing z ledna 1984).
:: späť na zoznam tém ::