OldComp.cz

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


Právě je 28.03.2024, 16:51

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: Assembler
PříspěvekNapsal: 21.09.2020, 08:01 
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
iwosh píše:
Kód:
ld   a,127
in   a,(254)
cp   252
ret  z
Ešte drobná poznámka k samotnému testu stlačených klávesov. Test cp 252 predpokladá, že horné 3 bity budú vždy nastavené, čo ale nie je zaručené. Odporúčam teda radšej robiť maskovanie hodnoty a nespoliehať sa na stav horných troch bitov.
Takže radšej takto:
Kód:
ld   a,127
in   a,(254)
and  3
ret  z

_________________
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: Assembler
PříspěvekNapsal: 21.09.2020, 15:14 
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
dex píše:
rombor píše:
horné 3 bity budú vždy nastavené,
and 3

Nějako mi to neštymuje.
Horné 3 bity odmaskovat je 1+2+4+8+16, ne?
Nebo OR 128+64+32, abych měl jistotu, že nastavené budou.
V pôvodnej ukážke kódu sa testovalo cp 252, takže sa očakávalo, že budú vynulované bity 1 a 0, teda stlačené klávesy Shift a Space. Môj návrh nahradil tento test inštrukciou and 3, čím sa overilo, či sú tieto dva bity skutočne vynulované. Zároveň tento test nie je závislý na horných 3-troch bitoch, kde nie je zaistené, že tam budú vždy jednotky..

_________________
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: Assembler
PříspěvekNapsal: 21.09.2020, 19:16 
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
danhard píše:
A co stav bitů 2,3,4 na ty to prdí ?
Stavy bitov 2,3,4 instrukcia AND 3 uplne odignoruje ;)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 21.09.2020, 19:25 
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
danhard píše:
A co stav bitů 2,3,4 na ty to prdí ?
V podstate áno. Ale to nie je na škodu. Podstatou testu sú stlačené klávesy Symbol Shift a Space. A aj keby tam boli spolu s nimi stlačený aj niektorý z kláves M/N/B, nebude to vadiť.
dex píše:
Aha. Jasně. Ušetříme instrukcí, a protože je to test na BREAK, zbylé bity jsou nám jedno, zareaguje i na stisknutou celou klávesnici.
Nie je to BREAK, ale Symbol Shift a Space. Neviem, či toto bola chcená vec, ale vychádzal som z pôvodnej hodnoty 252, ktorú iwosh vo svojom príklade použil.

_________________
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: Assembler
PříspěvekNapsal: 22.09.2020, 09:32 
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
danhard píše:
Čili se to chová jinak, když je tam vícestisk.
Nevím, jestli to pro konkrétní hodnotu vadí, nebo nevadí, ale chová se to jinak.
Ked sa ma rozlisovat cela klavesnica (napr. pri pisani textu) tak viac stlacenych klavesy (popr. viac ako dve pri shifre) naraz vadi, pretoze moze nastat maticovy efekt a objavovali by sa aj fantomove stlacene klavesy, ktore uzivatel nestlacil.
Pokial sa jedna iba o test jednej klavesy (napr. ten break) tak nevadi, lebo vtedy je jedno ci je aj nieco ine stlacene, podstatne je ze pri stlaceni danej klavesy sa musi vykonat dana akcia (napr. zastavit beh programu).
Samozrejme aj pri teste jednej klavesy moze nastat maticovy efekt a klavesa sa fantomovo vyhodnoti ako stlacena aj ked stlacena nebola, ale to je uz na zodpovednosti uzivatela, aby na maticovej klavesnici nestlacal vsetko mozne okolo, ked nechce aby bola stlacena nejaka konkretna klavesa ktora sa testuje.
:)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 22.09.2020, 18:32 
Offline
Radil

Registrován: 18.10.2013, 15:30
Příspěvky: 263
Bydliště: Oakland, Slovakia
Has thanked: 25 times
Been thanked: 60 times
A niekto aby mohol robit oboje :) :D

_________________
Didaktik Gama | ZX Spectrum 128 | ZX Diskface Quick A | BetaDisk 128C Interface | D40 & D80 | divIDE | Interface M/P | Multiface 128 (GOTDJ) | Gama Breaker | D80mini

"Kvalita a stabilita Windows XP se Microsoftu nevyplatila, stal se takovou temnou připomínkou toho, co se stane, když odvedete svou práci moc dobře."


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 23.09.2020, 00:51 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2062
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 323 times
Mňa by zaujímalo, kde učia také blbosti, že sa porovnáva stav celého A registru načítaného zo vstupu. Naposledy som takto prerábal hru STACK-UP, lebo ovládanie záhadne hnevalo. Samozrejme nič nemaskovali a testovali 255, lenže vstup z magnetofón na eMku model 90 je dosť citlivý... Našťastie je hra akoby výstup z nejakého prekladača, takže tam bola kopa zbytočných inštrukcií (tuším PUSH a POP registrov ktoré sa aj tak nemenili), ktoré sa dali vynechať a nahradiť odmaskovaím vstupu.

A keď sme pri tom assembleri. Mňa nahnevala literatúra. Príručka Z80 od Ultrasoftu. Keby bol riadne vysvetlený R register, ušetrilo by mi to bezsenné noci bádania prečo mi krakovanie nejde. Teraz pozerám do nejakej príručky od Proximy, a tých chýb, nestačím sa diviť. R register nevysvetlený, a ešte zbastardené príklady AND a OR. A v opravenom vydaní taktiež.

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 23.09.2020, 08:10 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
AND a OR si snad každý přebere sám. Ve své době se hry v ASM dělali i na rychlost a myslím že fungovali moc hezky :)

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 23.09.2020, 12:48 
Offline
Pan Generální

Registrován: 01.12.2017, 21:01
Příspěvky: 2062
Bydliště: BA-Petržalka :(
Has thanked: 18 times
Been thanked: 323 times
Hej, v Assembleri... Pozri si hru ROCKMAN... ako som sa prehraboval v jej kóde, našiel som tam dokonca kompiler, ktorý spustí program napísaný v BASIC ale 10x rýchlejšie. Akurát nepodporuje všetky funkcie. Skrátka napíšeš program v BASIC, spustíš príslušným USR, a program beží rýchlejšie. Veľmi zaujímavé.

K tej príručke od Proximy. Okrem zle definovaného AND (výsledok je ako s OR) tam majú aj zle vysvetlené flagy pri CP. Správne má byť C nastavený iba pokiaľ je A<B (to sa použilo aj v LOAD rutine, na konci sa testuje CRC cez CP 1 či je 0, a keď A<1 tak sa nastaví C). Takže prvý riadok má byť NC, posledný má byť ?. A možno je tam omnoho viac chýb ale príručku som nečítal, iba nedávno som ju zbežne prezrel, keď sa mi dostala do rúk jej elektronická podoba.


Přílohy:
Poznámka: ZLE!
Schránka02.png
Schránka02.png [ 1.54 KiB | Zobrazeno 6861 krát ]
Poznámka: ZLE!
Schránka01.png
Schránka01.png [ 7.79 KiB | Zobrazeno 6861 krát ]

_________________
Oznamy o novom príspevku mi na mail chodia iba sporadicky, takže keď sa nehlásim v diskusii, tak je to tým. V 80% nepríde mail vôbec.
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 23.09.2020, 14:25 
Offline
Radil

Registrován: 18.10.2014, 23:10
Příspěvky: 377
Has thanked: 28 times
Been thanked: 120 times
PotPalo píše:
K tej príručke od Proximy. Okrem zle definovaného AND (výsledok je ako s OR) tam majú aj zle vysvetlené flagy pri CP. Správne má byť C nastavený iba pokiaľ je A<B (to sa použilo aj v LOAD rutine, na konci sa testuje CRC cez CP 1 či je 0, a keď A<1 tak sa nastaví C). Takže prvý riadok má byť NC, posledný má byť ?. A možno je tam omnoho viac chýb ale príručku som nečítal, iba nedávno som ju zbežne prezrel, keď sa mi dostala do rúk jej elektronická podoba.

Podobne aj flag S v prvom riadku má byť P a v poslednom ?.
Ale celá tabuľka je zlá, pretože sú len tri možnosti: A<B, A=B a A>B. A pre tieto možnosti nebudú v tabuľke žiadne otázniky.


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