OldComp.cz

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


Právě je 29.03.2024, 17:04

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 55 ]  Přejít na stránku Předchozí  1, 2, 3, 4  Další
Autor Zpráva
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 19.07.2020, 12:51 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
Není string až vymoženost Turbo Pascalu? Jinak musíš vystačit se základními integer, real, boolean a char. Ale řetězec je samozřejmě array of char jako v Céčku.
On ten BASIC původně řetězce také neměl ;-)

Podívej se po tomhle, vyšla několikrát ve velkém množství, takže by nemělo být tak těžké jí sehnat: https://www.databazeknih.cz/knihy/programovani-v-jazyku-pascal-376143. Je to učebnice původního Pascalu, tedy "Worth of Wirth".

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 19.07.2020, 13:30 
Offline
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3767
Has thanked: 269 times
Been thanked: 452 times
Díky moc za tipy na učebnice, Pascal je něco úplně jiného než Basic. Asi si zkusím nejdřív udělat klasicky pár testovacích prográmků se stoupající složitostí podle toho jak mi to půjde, nikdo učený z nebe nespadl. Hlavně pole hodnot, grafické rutiny a vstupy uživatele budu muset zvládnout než se mohu dostat k něčemu vážnějšímu. Ty bych sem pak dal aby další generace dychtivců měly na PMD cestu jednodušší protože časově nejrychlejší práce a též i učení je použít už fungující kousek kódu. Případně pokud už někdo takové kousky má, bude mu to přičteno k dobru když je sem umístí s ohledem na to aby běhaly na Piešťanském Mikropočítači Displejovém ;).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 19.07.2020, 19:15 
Offline
Pan Generální

Registrován: 07.05.2014, 01:21
Příspěvky: 2571
Bydliště: Praha
Has thanked: 502 times
Been thanked: 607 times
Ten pascal MT+ umí string také. Stejné jako v turbo pascalu jsou i další funkce, tedy LENGTH vrací délku řetězce a POS pozici podřetězce. COPY ale umí jen část řetězce od zadané délky, turbo tuším umí i od zadaného znaku. Pak třeba CONCAT spojuje několik řetězců do jednoho... Určitě jsem ještě na něco zapomněl :)

_________________
ZX80, ZX81, ZX Spectrum, ZX Spectrum +2, Didaktik M, PMD 85-1,2A,3, Olivetti Prodest PC 128, Acorn BBC Micro, PC-XT, Amiga 500


Naposledy upravil vanthomas dne 19.07.2020, 21:16, celkově upraveno 2

Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 19.07.2020, 19:21 
Offline
Pan Generální
Uživatelský avatar

Registrován: 23.03.2014, 20:13
Příspěvky: 2773
Has thanked: 224 times
Been thanked: 601 times
No vida, jsou tam také omezené na 255 bajtů?

_________________
Plesnivý sýr z Tesca, zatuchlé kuřecí řízky z Albertu, oslizlé hovězí a myší trus z Lidlu.
Nákup potravinářské inspekce v ČR, říjen 2023.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 19.07.2020, 20:02 
Offline
Pan Generální

Registrován: 07.05.2014, 01:21
Příspěvky: 2571
Bydliště: Praha
Has thanked: 502 times
Been thanked: 607 times
v MT+ standardně dokonce 80, ale maximum je těch 255.

_________________
ZX80, ZX81, ZX Spectrum, ZX Spectrum +2, Didaktik M, PMD 85-1,2A,3, Olivetti Prodest PC 128, Acorn BBC Micro, PC-XT, Amiga 500


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 20.07.2020, 10:32 
Offline
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3767
Has thanked: 269 times
Been thanked: 452 times
Zkoušeli jste někdo někdy ten příkaz Tlač v Paskalu 1.02? Mě akorát zamrzne PMD emulátor (nevím zda to něco v mezidobí posílá na porty ven, přestane reagovat a není jak zjistit zda na portech je cvrkot - tady by se hodil emulátorový plugin co by zobrazoval jaký port vysílá data :-) ). A pokud ano, tak jaká tiskárna by tam měla běhat a vlastně na jakém portu? K4 nebo nějaké GPIO? A data - je to něco v ASCII co zvládne 9jehla, nebo Babicovými slovy "dneska bude špeciálo, kohout na krabičáku" pro nějakou RVHP vyfikundaci? Líbilo by se mi moct připojit třeba BT-100, nebo mám Gamacentrum 01, případně LPT Epsonku LX...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 20.07.2020, 15:33 
Offline
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3767
Has thanked: 269 times
Been thanked: 452 times
A ještě řeším zákys u MT Plus Pascalu, kdy jsem si stáhl tu očesanou disketu, rozbalil a přidal do disketovky jako B:, nabootuju CP/M...pardon, Mikros 2.2 a když dám spustit MTPLUS (to je MultiThreading, že :jump: ) tak mi to jen vypíše Unable to open source file: TIL3 . LINKMT vytvoří chybu BDOS ERR ON B: BAD SECTOR a spadne to. Tak nevím zda jsem nestáhl až moc očesanou disketu nebo jestli to někdo zkoušel a zda ta disketa funguje (případně zda se nemusí třeba zadat další parametr)? Předem hlásím že jsem na CP/M úplně blbe...tedy mé zkušenosti s ním jsou značně povrchní.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 20.07.2020, 15:35 
Offline
Radil
Uživatelský avatar

Registrován: 13.05.2013, 17:48
Příspěvky: 529
Bydliště: Košice
Has thanked: 423 times
Been thanked: 265 times
Reťazce
Daná verzia Pascalu nepozná typ STRING a teda ani operácie na reťazcom (spájanie, podreťazec, ...).
Umožňuje však zadefinovať si typ STRING a potom ho použiť v príkazoch READ/WRITE. Čo znamená, že je možné do takéhoto typu načítať reťazec z klávesnice, alebo vypísať na výstup (obrazovku). Je možné priradenie jedného reťazca do druhého, ale MUSIA mať rovnaké veľkosti. A tiež, tým, že je to typ pole, tak je možné meniť jednotlivé znaky v poli podľa indexu.
Kód:
program TESTSTR;
const N=32;  {N je ľubovoľné}
STR='*Tento text ma presne 32 znakov*';
type STRING=array[1..N] of CHAR;
var S1,S2:STRING;
begin
 S1:=STR;
 readln(S2);
 S2[1]:='Z';
 writeln(S1);
 writeln(S2);
end.
Naviac, je možné definovať konštantné reťazce, čo je práve vhodné pre príkaz BPLOT. Jediný problém je, že definícia reťazca sa musí vôjsť na jeden riadok, teda do 80-tich znakov. Pri väčších obrazcoch sa to ale dá riešiť viacerými "reťazcami", ktoré sa budú umiestňovať tesne pod alebo vedľa seba.
Kód:
program COINS;
const
C0=#24#2'0'#3#12#12#2#16#18#18#25'%'#17'%'#17'%'#17'%'#18#18#2#16#12#12'0'#3;
C1=#24#2'0'#3'<'#15'.'#29'.'#29#3'0/=/='#3'0.'#29'.'#29'<'#15'0'#3;
begin
 PAGE;
 BPLOT(10,50,C0);
 BPLOT(14,50,C1);
end.

Príkaz USR
Príkaz USR slúži na to isté ako v BASICu, rozdiel je iba v tom, že je to Procedúra (nie funkcia) a prostredníctvom dvoch premenných sa prenášajú "tam a nazad" hodnoty do/z registrov A a HL.
Kód:
{ADRESA PREDLOHY ZNAKU}
program TESTUSR;
var Z,A,HL:INTEGER;
begin
 Z:=ORD('W');
 A:=Z;
 USR($84CE,A,HL);
 writeln('ZNAK: ''',CHR(Z),'''');
 writeln('ADRESA: ',0-HL-8);
end.

Ak sa jedná o test klávesnice, tak na to slúžia funkcie KEYPRESSED a READKEY (viď. návod).

_________________
https://pmd85.borik.net - PMD 85 Emulátor, PMD 85, PMD 32-SD
https://pp01.borik.net - PP 01 Emulátor, PP 01, SD-ROM Modul


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 20.07.2020, 15:40 
Offline
Radil
Uživatelský avatar

Registrován: 13.05.2013, 17:48
Příspěvky: 529
Bydliště: Košice
Has thanked: 423 times
Been thanked: 265 times
Tlač v Pascale 1.02 sa posiela na GPIO/0, teda konektor K3 a zapojenie je Centronix.

_________________
https://pmd85.borik.net - PMD 85 Emulátor, PMD 85, PMD 32-SD
https://pp01.borik.net - PP 01 Emulátor, PP 01, SD-ROM Modul


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 20.07.2020, 16:36 
Offline
Profík

Registrován: 06.03.2018, 16:00
Příspěvky: 959
Bydliště: Valtínov, Kunžak
Has thanked: 39 times
Been thanked: 471 times
Myslím si, že MT Pascal je jen kompilátor. Musíš mu tedy jako parametr (a určitě ne jediný) podstrčit jméno souboru, který obsahuje daný zdrojový kód. A pak předpokládám, že se bude ještě samostatně spouštět linker, který vytvoří kýžený spustitelný program. Mám pocit, že už se to tu na fóru někde řešilo.

Petr


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 20.07.2020, 18:24 
Offline
Pan Generální

Registrován: 07.05.2014, 01:21
Příspěvky: 2571
Bydliště: Praha
Has thanked: 502 times
Been thanked: 607 times
Přesně tak, bez názvu zdrojáku to hodí chybu. Koukni se do návodu, je tam popsaná kompilace a slinkování nějakého "hello world".
Na disketě s microsem máš FSED, v tom je to napsané za chvilku. Nebo jsem na té disketě nechal indexer.pas, můžeš zkusit přeložit ten...
Chyba BDOS u linkeru bych tipnul, že máš tu disketu "read only"
Taky není špatný nápad, dát si do dalšího drivu čistou disketu a překládat to na ní, ať máš dost místa...

_________________
ZX80, ZX81, ZX Spectrum, ZX Spectrum +2, Didaktik M, PMD 85-1,2A,3, Olivetti Prodest PC 128, Acorn BBC Micro, PC-XT, Amiga 500


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 20.07.2020, 19:19 
Offline
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3767
Has thanked: 269 times
Been thanked: 452 times
Díky moc za rady, už mi to funguje :like: . Holt jako vždy stačí vědět co dělat krok za krokem a pak všechno jde jako na drátkách :-). Tedy aby bylo příště jasněji (a já to též nezapoměl):

Kód:
1. Je potřeba mít disketu umožnující zápis s MTPLUS. Na disketě jsou dva hlavní programy MTPLUS.COM a LINKER.COM.

2. Zdrojový kód je v tomto hypotetickém příkladě v souboru PROGRAM.PAS.

3. Kompilace se provede pomocí příkazu MTPLUS PROGRAM.PAS. Výsledkem je soubor PROGRAM.ERL

4. Když ta proběhne bez chyb, musí se ještě spustit příkaz LINKMT PROGRAM . Linker si najde PROGRAM.ERL a vytvoří binárku PROGRAM.COM .

Potěšilo mě že to proběhlo :-).



Ještě jsem vypozoroval že když se použije v emulátoru PASCAL ROM 1.02 na PMD verze 3, přepnutém do kompatibilního režimu, tak když se to jen čistě nechá nějakou dobu stát bez interakce (řekněme hodinku), emulátor se zakousne a pomůže pouze studený reset, na ten běžný pak nereaguje. Nevím proč se to tak děje, ale už se mi to stalo několikrát, tedy asi bude někde nějaká bota. Nemá s tím někdo obdobnou zkušenost?


Přílohy:
Linkovani.png
Linkovani.png [ 25.29 KiB | Zobrazeno 6289 krát ]
Kompilace.png
Kompilace.png [ 21.95 KiB | Zobrazeno 6289 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 20.07.2020, 19:30 
Offline
Pan Generální

Registrován: 07.05.2014, 01:21
Příspěvky: 2571
Bydliště: Praha
Has thanked: 502 times
Been thanked: 607 times
Takhle to asi fungovat nebude. Musíš to slinkovat s (minimálně) obecnou pascalskou knihovnou. Tedy:
Kód:
1) MTPLUS PROGRAM.PAS
2) LINKMT PROGRAM,PASLIB/S

parametr s není nutný, ale binárka bude menší - připojí z knihovny jen to co je opravdu nutné, ne celou knihovnu.

To co ti to píše za "phase 2" je seznam co mu chybí. Zrovna ten indexer chce ještě jednu knihovnu kromě paslib, ale takhle z paměti nevím jakou. Doma se kouknu...

edit: tak kecám, za "phase 2" to ještě chyby nejsou, ty jsou na horním obrázku linkeru a je to nadepsané "undefined symbols"
Takže krok za krokem. Předpokládejme, že v A: je mikros, v B: pascal a v C: čistá disketa.
Kód:
1) překopírovat indexer na C: -    B>A:PIP C:INDEXER.PAS=INDEXER.PAS
2) zkompilovat                     B>MTPLUS C:INDEXER.PAS
3) slinkovat s paslib a utilmod -  B>LINKMT C:INDEXER,UTILMOD,PASLIB/S


INDEXER pak můžeš vyzkoušet sám na sobě:
Kód:
C>INDEXER INDEXER.PAS POKUS.TXT LONG
C>TYPE POKUS.TXT

_________________
ZX80, ZX81, ZX Spectrum, ZX Spectrum +2, Didaktik M, PMD 85-1,2A,3, Olivetti Prodest PC 128, Acorn BBC Micro, PC-XT, Amiga 500


Naposledy upravil vanthomas dne 20.07.2020, 20:40, celkově upraveno 3

Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 20.07.2020, 19:44 
Offline
Radil
Uživatelský avatar

Registrován: 13.05.2013, 17:48
Příspěvky: 529
Bydliště: Košice
Has thanked: 423 times
Been thanked: 265 times
Pascal MT sa riešil aj tu.
https://www.oldcomp.cz/viewtopic.php?f=113&t=8395

_________________
https://pmd85.borik.net - PMD 85 Emulátor, PMD 85, PMD 32-SD
https://pp01.borik.net - PP 01 Emulátor, PP 01, SD-ROM Modul


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 20.07.2020, 20:29 
Offline
Radil
Uživatelský avatar

Registrován: 13.05.2013, 17:48
Příspěvky: 529
Bydliště: Košice
Has thanked: 423 times
Been thanked: 265 times
Na moje vlastné prekvapenie som v starých zoZIPovaných zálohách našiel PASCAL CP/M C-2717 V2.0 (PASCAL.COM), teda ten Pascal pre C2717, pre ktorý som pridával na naše stránky nascanovaný návod.
Teda presnejšie, ten program, čo som našiel je v slovenčine a verzia je V2.0 a ten návod ukazuje, že verzia programu V2.C je v češtine.

Po vyskúšaní ma čakali dve sklamania:
  • Táto verzia nemá príkazy IMOVE a IDRAW, takže kreslenie čiar nie je možné. Pozná iba príkaz IPLOT na vykreslenie bodu. Tieto príkazy nie sú popísané ani v tom návode V2.C, ale nejako som si to nevšimol, takže ma pri skúšaní Sierpinského kriviek prekvapilo, že mi prekladač kričí, že nepozná idetifikátory IMOVE a IDRAW.
  • Program má problém s prístupom k položkám štruktúry (RECORD) alebo pri alokovaní miesta pre dátový objekt (NEW) - zrejme jedno z toho. Program pre zoradenie slov (zadávaných z klávesnice) podľa abecedy sa mi stále "zasekol" v rutine, ktorá číta sektor z disku (tá je umiestnená od adresy #3B), čo bolo čudné, keďže sa nič s diskom nerobilo. Trasovaním som zistil, že po zadaní slova sa adresa položky vo fronte "vypočítala" na nulu a tým sa pri pokuse o jeho zaradenie "do fronty" slov prepísali desiatky bytov od adresy 0 a tak prepísali vektory volania BIOSu a BDOSu a tak volanie BDOSu "zablúdilo" až k rutine čítania z disku.
Tá prvá vec zamrzí, ale vysvetľujem si to tak, že pod CP/M to už autor nepovažoval za dôležité.
Druhý prípad mi nedáva zmysel. Buď je to ešte nejaký "nedodělek", alebo je tá binárka nejako poškodená.

Daný program na triedenie slov v TOM Pascale V2.2 pre PMD 85 funguje správne. Kód vyzerá takmer identicky ako pri V2.C, ale vypočítaná cieľová adresa položky, kam sa nakopíruje zadané slovo, je korektná.

_________________
https://pmd85.borik.net - PMD 85 Emulátor, PMD 85, PMD 32-SD
https://pp01.borik.net - PP 01 Emulátor, PP 01, SD-ROM Modul


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ů: 55 ]  Přejít na stránku Předchozí  1, 2, 3, 4  Další

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 3 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