OldComp.cz

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


Právě je 28.03.2024, 12:03

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
Autor Zpráva
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 23.07.2020, 08:30 
Offline
Profík

Registrován: 26.11.2018, 16:59
Příspěvky: 580
Bydliště: Holešov
Has thanked: 13 times
Been thanked: 90 times
Dokumentace se o tom nikde nezmiňiuje, ale co jsem zkoumal PASCALy na IQ151 tak většinou si držely nějaké informace minimálně v DE a HL, jestli by nestálo za zkoušku je uschovat. Další zrada může být ve velikosti místa na zásobníku, jestli ty PMD rutiny čarují na zásobníku Pasalu to může dost vadit...

P.S. - nenapsal mág Busy nějaké rychlé vykreslovací rutiny i pro PMD? Možná by na nich šla založit pěkná grafická knihovna pro MT pascal než využívat ROM rutiny


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

Registrován: 07.07.2019, 22:14
Příspěvky: 3766
Has thanked: 269 times
Been thanked: 452 times
Drobná ruční úprava funkce co smaže obrazovku a dokáže vykreslit (nejen) pravoúhlé výplně, jen když bude mít modifikaci vstupů aby si braly hodnoty z jiné části programu/uživatelova vstupu. Je to triviální ale pro začátečníka mého typu dobrý trénink s Pascalem, musím krůček za krůčkem. Ještě křivky, barvičky a ekvivalent FILL (hlavně ta jeho bitová maska) a budu s bodovou grafikou spokojený. A pak že CP/M je čistě textově orientované :P.

Kód:
PROGRAM VYPLN1;
VAR X1,Y1,X2,Y2:INTEGER;

PROCEDURE LINE(X0,Y0,X,Y:INTEGER);
BEGIN
 INLINE(
        "PUSHH / "PUSHD / "PUSHB / "PUSHP /
        "LHLD / X0 / "SHLD / $C170 /
        "LHLD / Y0 / "SHLD / $C172 /
        "LHLD / X /  "SHLD / $C173 /
        "LHLD / Y /  "SHLD / $C174 /
        "CALL / $ECD0 /
        "POPPS / "POPB / "POPD / "POPH
       );
END;

BEGIN
WRITE (CHR(31));
X1:=0;
Y1:=-1;
X2:=255;
FOR Y2:=0 TO 250 DO
   BEGIN
   Y1:=Y1+1;
   LINE(X1,Y1,X2,Y2);
   END
END.


Nějaké čarování by mělo smysl asi jen kdyby to fungovalo na všech PMD stejně, že by se nemuselo měnit ty adresy nebo že by bylo výrazně rychlejší. Na druhou stranu když se otestuje model PMD, tak modifikace těch adres není z mého pohledu zase tak složitá a ušetří se místo za vykreslovací rutinky v Monitoru. Pro grafickou knihovnu jsem ale všema deseti, otevřela by dveře hrám i grafickým aplikacím v Pascalu :thumbup:

EDIT: V předchozím příkladu MOVEPLOT se asi omylem na konec dostaly příkazy IPLOT místo správného IDRAW, to se musí opravit aby to MTPackal při kompilaci nezpackal :-)
Kód:
program MOVEPLOT;
...
begin {hlavny program}
 write(CHR(31)); {Zmazanie obrazovky}

 V3:=ISV3; {PMD 85-3 vs. -2A}

 IMOVE(50,50);
 IDRAW(100,100);
 IDRAW(100,50);
end.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 23.07.2020, 10:28 
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
Czech Human píše:
EDIT: V předchozím příkladu MOVEPLOT se asi omylem na konec dostaly příkazy IPLOT místo správného IDRAW, to se musí opravit aby to MTPackal při kompilaci nezpackal :-)
Je to tak. Tie procedúry som si skopíroval z iného programu a toto som len dodatočne "na slepo" dopisoval. Mea culpa.

_________________
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: 23.07.2020, 20:23 
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
Tak problém s rekurziou v Pascale MT je vyriešený. Ak chceme, aby sa korektne pripravili rekurzívne funkcie, musíme to na začiatku kompileru povedať pomocou tzv. Compiler Source Code Option, čo v tomto konkrétnom prípade je {$S+}.

V prílohe sú zdrojáky programov pre kreslenie Sierpinského a Hilbertovych kriviek, kde sa práve rekurzia používa.


Přílohy:
PascalMT-krivky.zip [1.76 KiB]
354 krát

_________________
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: 23.07.2020, 21:18 
Offline
Pan Generální

Registrován: 07.05.2014, 01:21
Příspěvky: 2570
Bydliště: Praha
Has thanked: 502 times
Been thanked: 604 times
Pěkné, holt to chce ty manuály číst, já to říkám pořád :) Oproti pascalu 1.01 je to tedy o něco pomalejší, ale pořád to běží pěkně.
Zajímavé, že jsem nějakou jednoduchou rekurzi zkoušel a fungovalo to i bez toho parametru. Asi to bylo až moc jednoduché...

_________________
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: 24.07.2020, 11:32 
Offline
Óm Nejvyšší
Uživatelský avatar

Registrován: 07.07.2019, 22:14
Příspěvky: 3766
Has thanked: 269 times
Been thanked: 452 times
Pro testery-lenochy pár skompilovaných ukázkových programů včetně obou grafických programů Sierpinsky a Hilbert v MT+. Osvědčilo se mi ještě CLS.COM coby vymazávač obrazovky, tak je na disketě také. Programy lze editovat pomocí FSED PROGRAM.PAS, spustitelné verze jsou ve formátu PROGRAM.COM, spustí se klasicky příkazem PROGRAM bez .COM. Disketa z důvodu lepší přehlednosti a volného místa neobsahuje CP/M, nenabootujete z ní. Tak si musíte jako A: použít disketu co obsahuje Mikros.


Přílohy:
MT+Pascal priklady01.zip [83.12 KiB]
370 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 24.07.2020, 12:01 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
l00k píše:
P.S. - nenapsal mág Busy nějaké rychlé vykreslovací rutiny i pro PMD?
Napsal :)

Mam klasicky linearny interpolator (kresli cca 25k pix/s, pre porovnanie ten v monitore kresli 10k pix/s)
a vramci vykreslovania 3D telies s viditelnostou som si napisal aj rychle kreslenie lubovolneho konvexneho polygonu so zadanou texturou.
A este ako doplnok vodorovne ciary s texturou (extra rychle, placaju sa po celych bajtoch naraz).
l00k píše:
Možná by na nich šla založit pěkná grafická knihovna pro MT pascal než využívat ROM rutiny
To rozhodne nie je zly napad. Akurat ja neviem aky interface ma byt medzi tou kniznicou a pascalom (alebo akymkolvek nadradenym systemom) takze niekto by musel tento interface k mojim rutinkam spravit.


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

Registrován: 07.07.2019, 22:14
Příspěvky: 3766
Has thanked: 269 times
Been thanked: 452 times
No paráda, takové 250% urychlení už stojí za hřích, to se z PMD stane úplná 3D herní konzole :-). Tímhle tempem vylepšování bude z MT+ Pascalu brzy ultimátní herní vývojové prostředí, pokud tedy zákeřně nedojde RAM. A navíc s rychlou disketovou mechanikou a 340kB na data...

Ještě spáchat nějaký čtivý návod ve stylu toho co je pro Basic až budou tyto doplňky a vylepšení hotové a už nebude důvod zdržovat se na PMD s Basicem, který je prostě P--O--M--A--L--Ý.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Pascal pro PMD 85
PříspěvekNapsal: 24.07.2020, 13:49 
Offline
Profík

Registrován: 26.11.2018, 16:59
Příspěvky: 580
Bydliště: Holešov
Has thanked: 13 times
Been thanked: 90 times
Busy píše:
Akurat ja neviem aky interface ma byt medzi tou kniznicou a pascalom (alebo akymkolvek nadradenym systemom) takze niekto by musel tento interface k mojim rutinkam spravit.


No podle manuálu k MT Pascalu to umí slinkovat přeložené PAS programy s přeloženými ASM programy z microsoftího M80 nebo RMAC. Takže by bylo potřeba to přepsat do mnemoniky 8080 pro M80, a přidat tam pár hlaviček pro Linker a do rutin přidat pár instrukcí POP a PUSH pro předání parametrů z/do Pascalu...

Co s barvami/barevnými režimy?


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

Registrován: 07.07.2019, 22:14
Příspěvky: 3766
Has thanked: 269 times
Been thanked: 452 times
Taky by se do grafické knihovny hodil ekvivalent basicovského WINDOWG/WINDOWA, ne vždycky se hodí smazat si celou obrazovku a dobře se tak dělají třeba hry kdy máte na pozadí obrázek a herní políčko je menší nebo se dá elegantně a rychle smazat jen ten definovaný obsah obrazovky a zbytek zachovat.

Stejně tak i práce se stringy a jejich zobrazováním pokud už není součástí MT+ by bylo dobré doohnout tak aby fungovaly ekvivalentně Basicu - funguje to dobře a usnadnila by se konverze her.


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

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