OldComp.cz

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


Právě je 29.03.2024, 00:27

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 35 ]  Přejít na stránku 1, 2, 3  Další
Autor Zpráva
 Předmět příspěvku: Dáma pro PMD 85 - 3
PříspěvekNapsal: 10.11.2019, 12: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
Zdravím všechny příznivce PMD 85 :heilpmd:. Po první hře musí logicky následovat hra druhá abych využil co jsem se naučil a zároveň se o krok posunul k assembleru. Přemýšlel jsem nějakou dobu, jakou hru zvolit. Nějaké velké animace a přemety s PMD ještě nezvládnu a potřebuji spíše statickou scénu, takže ideální mi přišly hry deskové. Pro PMD existují z deskových her šachy, reversi, dokonce i zjednodušené Go. Ale klasickou dámu jsem nikde nenašel, takže co schází musí se doplnit a volba padla na ní.

Určité malé části kódu chci už přehodit do assembleru ačkoliv většina hry bude stále v Basicu abych to byl schopný napsat. Od minula jsem o něco pokročil v zkracování kódu tak doufám že se mi podaří hru napsat více úsporně. Tuším že se tu opět strhne lavina rad ve stylu napiš to rovnou v assembleru ale v něm to musí napsat někdo zkušenější než já, když bude mít tu potřebu :-). Já mohu postupovat jen krůček za krůčkem abych stačil sledovat vývoj.

Hra je opět velmi statická, takže by mohla být nějaká ta melodie na pozadí (díky moc dexovi za jeho kód toť správný přístup pro nás programátorské trubky = vykrádat poskytnuté cizí zdrojáky :lol: ) a protože je to hra pro dva hráče, bude asi vhodné ovládání dvěma joysticky, případně kombinace klávesnice + joystick. Herní kameny hodlám vytvořit jako větší sprity rozměru 4x3 znaky pokud bude možno aby také hezky vypadaly a rozumně rychle se hýbaly. Dále opustím Colorace, tato hra 7 barev nepotřebuje a vystačí si se základními čtyřmi a pořád vypadá hezky. Výhodou bude, že tak bude fungovat i na HW neupravených PMD, kterých je většina.

Pro začátek dvě ochutnávky úvodního obrázku a šachovnice s kameny, byť zatím jen statických, vytvořených příkazem FILL...


Přílohy:
Dama.png
Dama.png [ 42.34 KiB | Zobrazeno 12811 krát ]
Dama 2.png
Dama 2.png [ 40.14 KiB | Zobrazeno 12811 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 10.11.2019, 16:26 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1508
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
Asi by se PMD opravdu hodil kompilátor Basicu.
Bohužel jsem nenašel zdrojáky žádného aspoň trochu slušného kompilátoru (ani těch integer ze Spectra, jako Colt, Universumovo IUC nebo SRP - i když portovat je ze Z80 na 8080 by asi nebyla sranda).
Je tu ale BCBC, v Basicu psaný kompilátor pro CP/M (to na PMD není problém).
Výsledkem je zdroják v assembleru, který se dále zkompiluje pomocí ASM.COM (jedna ze základních utilit CP/M).

Zjevně by BCBC.BAS měl jít spustit v MBASICu.
V archivu je i BASCOM kompilovaná verze BCBC.COM, která ale ke svému běhu potřebuje runtime BRUN.COM (není v archivu).

(BCBC.PRO je komentovaná verze psaná v preprocesoru strukturovaného Basicu pBasic, poslouží spíš jako dokumentace.)

Program přilinkovává rutiny z "knihovny" BCBC.LIB, komentáře jsou ve zdrojáku BCBCLIB.SRC.
Přilinkovat jde i assembler psaný "inline" uvnitř Basicu.

Pokud by se v knihovně přepsalo volání služeb CP/M (tisk a vstup znaku) na volání ROM PMD-85 (a file I/O by se dalo nejspíš úplně vyhodit), měl by být vzniklý kód normálně spustitelný na PMD bez CP/M.

ORG je v Basicu na řádku 340.

Grafika by se samozřejmě musela řešit POKE do VideoRAM nebo voláním externí rutiny, podobně i zvuk.

Měl by někdo čas se v tom pošťourat?


Přílohy:
Poznámka: V Basicu psaný kompilátor Basicu pro 8080 s knihovnou pro CP/M.
BCBC.zip [35.63 KiB]
549 krát
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 10.11.2019, 18:45 
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
Mno, kdyby byl z lenochoda Basicu assembler to by byla věc. A psát v Basicu je řádově jednodušší než assembler co si budeme povídat. To i to POKE by bylo skousnutelné :-). A taková trochu kacířská myšlenka - co tu konverzi přesunout na velké PC? Tam by se mnohem snadněji psalo i manipulovalo se soubory a ještě by se dobře doplnil emulátor PMD, kde existuje položka "vyexportovat program basic jako text" tak by mohla přibýt položka "vyexportovat assembler" to by bylo žůžo labůžo :-).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 10.11.2019, 19:58 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1508
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
Vývojové prostředí pro Windows, obsahující Basic kompilující pro 8085 (která je na 99% kompatibilní s 8080) samozřejmě existuje.
https://www.oshonsoft.com/8085.html
8085 personal license je za 25 dolarů.
https://www.oshonsoft.com/licenses.php?type=all#8085

Ale jako newindowsák jsem to samozřejmě nezkoušel.
Předpokládám, že na PMD asi nepůjde použít příkazy jako PRINT, které jsou realizované kdovíjak (možná jde I/O nadefinovat?), a bude potřeba většinu I/O řešit pouky do RAM a skoky do ROMky.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 10.11.2019, 20:52 
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
Vypadá to zajímavě, za 31 ojro můžeš mít všechny typy CPU z nabídky, to mi přijde výhodnější. Jen netuším jak moc vhodné je to pro PMD, hádám že na jeho rozložení portů a skladbu Basicu asi primárně nekoukali ale dát se to uvnitř nějak nastavit tak bych překousl i ty widle. Protože co 8bitový počítač to unikát tak bych si taky myslel že to nějak půjde nastavit, jinak by to blbě fungovalo na hrozně omezeném množství počítačů a dobře by to fungovalo leda tak na jednom... Jen ale aby ta konfigurace nebyla složitější než se naučit assembler :lol:

Dneska jsem si hezky poskládal šachovnici a vytvořil první sprit, se kterým se dá hýbat po obrazovce. Zítra doufám sprit vlámu korektně do šachovnice a už to pak bude veselejší.

A hodím do pléna dotaz - dá se nějak (pro začátečníka mého typu pochopitelně) naimportovat sprit do basicu ze sprit editoru od RM týmu? To by mi totiž ušetřilo několik dnů práce se sprity, protože bych je nemusel udělat po řádcích všechny ručně...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 10.11.2019, 23:29 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1508
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
Czech Human píše:
dá se nějak (pro začátečníka mého typu pochopitelně) naimportovat sprit do basicu ze sprit editoru od RM týmu?

Způsobů několik, ale spíš závisí na tom, jak vlastně chceš sprite vykreslovat?
Nějak si to bez kompilace nebo strojákové rutiny nedovedu úplně představit (snad jen náhradou znakové sady).

Data z editoru jde rovnou nahrát v emulátoru jako binární soubor na nějaké místo v paměti (a odtud brát peekem).
Pokud je chceš dostat do příkazu DATA, tak prostě vypsat přímo hodnoty bajtů ve spritu a opsat je do dat.
Když už je sprite nahraný někde v RAM emulátoru, tak jednoduše prográmkem v Basicu a pak jen DATA a opisovat:
10 for a="start spritu" to "start spritu"+"délka spritu": print peek(a);",";:next a


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 11.11.2019, 00:34 
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
Tak už mi běhá šachovnice a v ní výběrové políčko, blahodárně se projevil spánek ratolestí na rychlost práce :lol: .Zítra začnu řešit vstupy řídících signálů a rozhodovací algoritmus s kameny.

Díky za rady. :god2: Ano, takhle jsem už vyřešil třeba výběrové políčko - klasicky string v Basicu. Běhá to i bez assembleru velice svižně. Jde mi o to abych mohl udělat nějakou malou animaci a nemusel popsat 20 kB RAM čísly. Už jsem kvůli tomu otravoval i Romana Bórika :angel:. Myslím že nejschůdnější bude malá rutina v assembleru, kterou vykrad...si půjčím z nějaké hry co se sprity pracuje a tu budu z Basicu volat na zobrazení spritu přes CODE A$. Vejde se tam naráz až 80 znaků, to je snad na assembler dost dlouhé na překresli obrázek, spusť rutinku a vykresli obrázek na novém místě, vychází mi to baj voko asi 10-15 příkazů pokud se bude hodně lítat s adresami. Když si program vystačí s registry tak o něco víc. Případně bych to rozdělil na více částí, nebo se přinejhorším spolehl jako minule na Basic a napsal jednoduché sprity ručně, ono to ve formátu 4x3 (24x24 pixelů) docela pěkně běží i přes ten nešťastný BPLOT A$. Předpokládám že do RAM se to jako binárka nejsnáz dostane při nahrávání programu stejně jako třeba obrázky do předem připravené pozice v RAM, se kterou pak bude daná rutina počítat.

Druhé a dle mého názoru laika důležitější použití Assembleru bych viděl při nabírání bitových hodnot z 1-2 joysticků, pokud Basic nebude stíhat.

A třetí v pořadí je hudba přes MIF, pokud RAM a CPU dovolí, tam to asi jinak ani nejde udělat. Ale to bude ještě tzv. optional podle toho jak mi to půjde.


Naposledy upravil Czech Human dne 11.11.2019, 00:40, celkově upraveno 1

Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 11.11.2019, 00:39 
Offline
Kecálek

Registrován: 10.07.2014, 01:57
Příspěvky: 168
Has thanked: 25 times
Been thanked: 225 times
dex píše:
Způsobů několik, ale spíš závisí na tom, jak vlastně chceš sprite vykreslovat?
Nějak si to bez kompilace nebo strojákové rutiny nedovedu úplně představit (snad jen náhradou znakové sady).
a... to uz stare dobre BMOVE/BPLOT nefunguje? ;]


Přílohy:
screenshot.png
screenshot.png [ 13.57 KiB | Zobrazeno 12659 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 11.11.2019, 00:43 
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
Ale funguje :-). Já jen jsem šťoural šťouravá a chci co nejvíce běh programu urychlit a protože o tom zrovna moc nevím tak Assembler = rychlost a Basic = pomalost ;). Zrovna výběrové políčko je klasický string.


Přílohy:
Dama 4.png
Dama 4.png [ 19.74 KiB | Zobrazeno 12659 krát ]
Dama 3.png
Dama 3.png [ 19.6 KiB | Zobrazeno 12659 krát ]
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 11.11.2019, 11:15 
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
ub880d píše:
dex píše:
Způsobů několik, ale spíš závisí na tom, jak vlastně chceš sprite vykreslovat?
Nějak si to bez kompilace nebo strojákové rutiny nedovedu úplně představit (snad jen náhradou znakové sady).
a... to uz stare dobre BMOVE/BPLOT nefunguje? ;]
Ano, prave som sa toto aj ja chcel opytat :)
dex píše:
portovat je ze Z80 na 8080 by asi nebyla sranda
Ale zase na druhej strane to nie je ani nic zloziteho. Vyhodou je, ze vela veci sa tam da velmi dobre automatizovat, takze ani dlhsie zdrojaky (napr. zdrojak ZX romky) nie su nic co by sa nedalo v rozumnom case zvladnut.
Czech Human píše:
A taková trochu kacířská myšlenka - co tu konverzi přesunout na velké PC? Tam by se mnohem snadněji psalo i manipulovalo se soubory
Velmi spravne, ja uz dlhe roky svoje assemblerove programy ani nijak inak nepisem :)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 11.11.2019, 11:56 
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 byla by byť i jen teoretická možnost z výše uvedeného překladače MBASICu pro CP/M udělat konvertor i PMD Basicu do assembleru pro CP/M? Ideálně na PC, v emulátoru. To by otevřelo možnosti psát malé a rychlé programy doslova každému programátorovi, protože Basic je skutečně jednoduchý. Udělat to pro C tak by z PMD a dobových čs. klonů a dalších konstrukcí byly pořád velmi hezké učební stroje pro lidi co by rádi začali s C i po 30 letech od jejich uvedení na trh. Tak, konec horečnatých vizí :D.

Roman Bórik mě už před nějakým časem informoval ve vztahu k jinému mému hlavovému projektu co zatím ještě dřímá a čeká na den až budu vědět dost, že zdrojové kódy Basicu pro PMD verze 3 se jaksi nedochovaly což by asi znepříjemnilo jejich detailní inspekci. Tehdy jsem měl touhu PMD doplnit o přímou podporu funkcí FPU Am9511A (ve stylu SIN(X) pro CPU a FSIN(X) pro využití FPU, které je na to asi tak 60x rychlejší než Teslův svižník).

Teď už tuším že by se koprocesor měl k PMD dát připojit přes K2 čistě jen za pomoci strojového kódu, přidat mu navíc podporu v Monitoru a ideálně Basicu, mohlo by to být celkem rychlé a user friendly kombo, 2MHz signál se tam dostane a všechna napájecí napětí tam jsou taky (+5 a +12V). Nic pro to sice momentálně neexistuje ale bylo by to cool (ačkoliv tedy to FPU poměrně dost peče). No, konec s dalšími vizemi jdu si dát sprchu kapalným kyslíkem :-).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 11.11.2019, 13:14 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1508
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
Citace:
A byla by byť i jen teoretická možnost z výše uvedeného překladače MBASICu pro CP/M udělat konvertor i PMD Basicu do assembleru pro CP/M?

Asi moc velká drba, neumím si to představit (leda jako velký projekt skoro se rovnající psaní vlastního kompilátoru).

Spíš by bylo možné napsat program v MBASICu, volat rutiny monitoru a poukovat do videRAM, a kompilát pak pouštět pod CP/M.

(Případně ve zkompilovaném programu pak ručně přepsat konzolová volání CP/M na volání konzole monitoru PMD - ale to mi přijde jednodušší využít BCBC a upravit volání přímo v překladači, aby šel výsledný kód spustit na PMD rovnou bez prostřednictví CP/M).

Citace:
Udělat to pro C tak by z PMD a dobových čs. klonů a dalších konstrukcí byly pořád velmi hezké učební stroje pro lidi co by rádi začali s C i po 30 letech od jejich uvedení na trh.


S překladači C bude mnohem menší problém, šlo by použít BDS C (nebo jiné existující pro 8080 CP/M, případně cross kompilátor) a knihovna pro volání služeb PMD a PMD grafiku.

Ale to už je snad lepší napsat to v assembleru rovnou.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 11.11.2019, 13:53 
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
Citace:
Asi moc velká drba, neumím si to představit (leda jako velký projekt skoro se rovnající psaní vlastního kompilátoru).

Spíš by bylo možné napsat program v MBASICu, volat rutiny monitoru a poukovat do videRAM, a kompilát pak pouštět pod CP/M.

(Případně ve zkompilovaném programu pak ručně přepsat konzolová volání CP/M na volání konzole monitoru PMD - ale to mi přijde jednodušší využít BCBC a upravit volání přímo v překladači, aby šel výsledný kód spustit na PMD rovnou bez prostřednictví CP/M).


Ok, beru to jako ne. Manuální úpravy kódu po kompilaci jsou snad ještě horší než to napsat celé od začátku když tomu dotyčný nerozumí. Z uživatelského pohledu si to nedovedu představit že by to někdo chtěl dobrovolně udělat.

Citace:
S překladači C bude mnohem menší problém, šlo by použít BDS C (nebo jiné existující pro 8080 CP/M, případně cross kompilátor) a knihovna pro volání služeb PMD a PMD grafiku.

Ale to už je snad lepší napsat to v assembleru rovnou.


Pro jeden projekt určitě ale pro 10 či 100 projektů už bych si nebyl jistý :-). C je přeci jen oproti assembleru o dost víc čitelné a máš k dispozici spoustu "vyšších" programovacích konstrukcí, které se snadno píšou příkazem. Určitě je to snadnější se naučit a díky knihovnám je kód i mnohem snáze portovatelnější - když je někdo napíše ovšem :-).


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 11.11.2019, 18:16 
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
Ten basic není tak marný, "připojit" dva joysticky mi trvalo asi čtvrt hodiny... Použito je vždy spodních 5 bitů. Bit 0 dolů, 1 nahoru, 2 doprava, 3 doleva a 4 akce. Není to sice ještě hýbání políčka ve hře jeden háč po druhém, ale funguje to :-). Už jen vyřešit přiřazení ovladač - hráč a ignoraci toho druhého během tahu prvního a bude vstup úspěšně vyřešený. Dokud pak nezačnu plakat že to celé běží pooomaaaluuuu :lol:

Citace:
0 REM 2 Joysticky na PMD 85 - 3
10 GCLEAR
100 CONTROL 4,3;155: REM =9BH : REM Nastaveni 8255A
110 PC=STATUS 4,1 : REM GPIO 1
150 PRINT AT 5,1;BIT PC,4
160 PRINT AT 6,1;BIT PC,3
170 PRINT AT 7,1; BIT PC,2
180 PRINT AT 8,1; BIT PC,1
190 PRINT AT 9,1; BIT PC,0
210 DC=STATUS 4,0 : REM GPIO 0
230 PRINT AT 11,1; BIT DC,4
240 PRINT AT 12,1; BIT DC,3
250 PRINT AT 13,1;BIT DC,2
260 PRINT AT 14,1; BIT DC,1
270 PRINT AT 15,1; BIT DC,0
280 GOTO 110


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Dáma pro PMD 85 - 3
PříspěvekNapsal: 11.11.2019, 18:40 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 24.05.2018, 22:32
Příspěvky: 1972
Bydliště: Most, Praha
Has thanked: 864 times
Been thanked: 697 times
A pak už jen v ASM doplnit brutal force na automatického protihráče. ;)

_________________
i++ (INC) increment
i-- (DEC) decrement
i@@ (EXC) excrement


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