OldComp.cz

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

Registrace na OCP IV ZDE!

Právě je 23 zář 2018, 12:03

Všechny časy jsou v UTC + 1 hodina




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 5 ] 
Autor Zpráva
PříspěvekNapsal: 02 čer 2015, 10:23 
Offline
Kecálek

Registrován: 21 říj 2013, 08:25
Příspěvky: 238
Has thanked: 94 times
Been thanked: 85 times
Po čase jsem se zastavil u PMDčka a tak mě napadlo že si zkusím napsat výpočet video ram podle souřadnic X,Y. Vím že Libor Lasota na svých stránkách má ukázku výpočtu adresy video ram pomocí tabulek. Ale raději si to zkusím spočítat sám i když to nebude tak optimalizované, hlavně když tomu budu rozumět :).

Souřadnici Y jsem zvládl, hodnotu Y zadávám do DE a výsledná adresa je v HL. Ale s X bojuji. Ano, mohu vydělit X/6 a získám tím adresu. I když to dělení 6 je šíleně dlouhé a pak také nevím jak z toho získat bitovou masku :?: . Je ještě nějaký rozumný způsob, nebo použítí tabulky s předdefinovanou adresou je nejrozumější?
Kód:
   lxi       h,0xc000h      ; poèáteèní adresa videoram

   ; začátek výpočtu souřadnice Y
   mov      d,e            ;5T
   ;--- reg E
   mvi      a,0x03h        ;7T
   ana      e              ;4T
   rrc                     ;4T
   rrc                     ;4T
   mov      e,a            ;5T
   ;--- celkem 25T
   ;--- reg D
   mov      a,d            ;5T
   rar                     ;4T
   rar                     ;4T
   ani      0x3Fh          ;7T
   mov      d,a            ;5T
   ;--- celkem 25T
   dad      d               ; sečíst adresy
   ; konec výpočtu souřadnice Y


Nahoru
 Profil  
 
PříspěvekNapsal: 02 čer 2015, 11:04 
Offline
Pan Štábní

Registrován: 22 kvě 2013, 20:14
Příspěvky: 1955
Bydliště: Bratislava
Has thanked: 215 times
Been thanked: 354 times
mmartinka píše:
Ale s X bojuji. Ano, mohu vydělit X/6 a získám tím adresu. I když to dělení 6 je šíleně dlouhé a pak také nevím jak z toho získat bitovou masku :?:
Bitovu masku ziskas tak ze vezmes zvysok po deleni X/6 a tolkokrat zarotujes jednicku vlavo.
mmartinka píše:
Je ještě nějaký rozumný způsob, nebo použítí tabulky s předdefinovanou adresou je nejrozumější?
Zalezi od toho, za akym ucelom cely ten prevod robis.
Pokial chces cely prevod optimalizovat na dlzku kodu, a univerzalnu rutinku delenia uz mas niekde nejaku hotovu, tak je toto dobry sposob.
Pokial ale chces tento prevod optimalizovat na rychlost, tabulky su ta jedina spravna cesta :)


Nahoru
 Profil  
 
PříspěvekNapsal: 02 čer 2015, 19:29 
Offline
Kecálek
Uživatelský avatar

Registrován: 13 kvě 2013, 16:48
Příspěvky: 201
Bydliště: Košice
Has thanked: 87 times
Been thanked: 75 times
mmartinka píše:
Po čase jsem se zastavil u PMDčka a tak mě napadlo že si zkusím napsat výpočet video ram podle souřadnic X,Y.
V Monitore PMD 85-2 je rutina POSPOINT (8C94h) pre výpočet adresy bodu vo VRAM. Je síce redukovaná na šírku 256 bodov, ale X/6 je vyriešené veľmi dômyselným spôsobom. Rozšírenie na plnú šírku 288 bodov by nebolo zložité, bolo by ale samozrejme časovo náročnejšie.

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


Nahoru
 Profil  
 
PříspěvekNapsal: 03 čer 2015, 06:27 
Offline
Pan Štábní

Registrován: 22 kvě 2013, 20:14
Příspěvky: 1955
Bydliště: Bratislava
Has thanked: 215 times
Been thanked: 354 times
rombor píše:
V Monitore PMD 85-2 je rutina POSPOINT (8C94h) pre výpočet adresy bodu vo VRAM. Je síce redukovaná na šírku 256 bodov, ale X/6 je vyriešené veľmi dômyselným spôsobom.
Tam je namiesto delenia siestimi pouzite nasobenie jednou sestinou (resp. tretinou #55/#100) - podla mna tiez skvely sposob, sam som ho vo svojich efektoch uz zoparkrat pouzil. Je to taky zaujimavy kompromis medzi kratkym ale pomalym poctivym delenim a dlhymi ale rychlymi tabulkami.

Ked uz o tom pisem - pokial nevadi, ze kod sa bude vykonavat pomaly (nepotrebujes kreslit v realnom case) a nemas (nechces robit) poctive delenie, mozes pouzit klasicke odcitavacie delenie. V kratkej slucke budes od X suradnice odcitavat hodnotu 6 - kolkokrat sa ju podari odcitat, taky bude offset adresy vo videoramke a zvysok co zostane bude pozicia bitu v bajte videoramky. Tymto sposobom vyjde najkratsi kod.


Nahoru
 Profil  
 
PříspěvekNapsal: 03 čer 2015, 09:36 
Offline
Kecálek

Registrován: 21 říj 2013, 08:25
Příspěvky: 238
Has thanked: 94 times
Been thanked: 85 times
Díky ra rady.
Zatím to nedělám k konkrétnímu úkolu, spíš jsem si to chtěl zkusit napsat takovou vlastní PLOT funkci. No a pak zkusit SIN, COS a nějaké ty kruhy :)....


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ů: 5 ] 

Všechny časy jsou v UTC + 1 hodina


Kdo je online

Uživatelé procházející toto fórum: dupalin a 1 návštěvní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