OldComp.cz http://oldcomp.cz/ |
|
Mapovanie pamäte (VRAM) http://oldcomp.cz/viewtopic.php?f=134&t=1180 |
Stránka 1 z 2 |
Autor: | Milsa [ 13.03.2014, 21:38 ] |
Předmět příspěvku: | Mapovanie pamäte (VRAM) |
Keďže na tomto fóre je dosť ľudí, ktorí sa v tomto vyznajú, tak sa skúsim opýtať tu. Ak sa namapuje do adresného priestoru VRAM v móde 2 (320x200x16), tak VRAM je rozdelené na 4 banky po 8 kB. 8 kB VRAM je aj namapovaných do adresného priestoru $8000-$9FFF. Predpokladám, že namapovaná je prvá banka. Zaujímalo by ma ako sa tieto banky v adresnom priestore vymieňajú. Niečo som si o grafike prečítal, ale túto informáciu som buď prehliadol alebo tam chýbala. Je mi jasné, že s grafikou sa pracuje inak (cez porty na to určené), ale zaujíma ma to preto, lebo, ak sa banky v adresnom priestore nedajú vymieňať, tak namapovanie od $8000 do $9FFF by bolo zbytočné. Ako prepnúť teda banku v tomto priestore na inú? Čisto teoreticky, keby chcem robiť s grafikou "priamo", ako prepnem jednotlivé roviny, aby som mohol použiť viac farieb? Samozrejme moja otázka sa týka aj ostatných grafických režimov. |
Autor: | suksoft [ 14.03.2014, 00:13 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Urcite nekdo na to odpovi presneji ale i tak poslu odkaz kde je vse popsano http://www.sharpmz.org/mz-800/download/sm800.pdf Na strane 23 je popsano jak se zapisuje do video ram. Mas dve moznost,i budto zapisujes barvu nebo zapisujes jednicky a nuly do rovin. To jsou dva pristupy do video ram. Budto chces pracovat se "surovymi daty" nebo barvou. To se nastavuje pres bit 2 v WMD. Nekdy je lepsi si nastavit zapis tak ze nejdrive zapises udaj do roviny 1, pak se prepnes do roviny 2, pak 3 a nakonec 4. Takto muzes pro kazdy bit nastavit 16 kombinaci (4bity) a takto rozsvitis bod jednou z 16 barev. Takto soucasne muzes menit pozadi a popredi znaku. Dobre se takto kresli obrazky. Jindy ale chces pouze rozsviti nejaky bod treba modre a nechces se zajimat o okolni bity v bajtu na obrazovce. Proto je pak vyhodnejsi PSET, kde kde mas 1 tam se ti da modry bod. Kde je 0 tam se nic nemeni a zustane puvodni barva. To je vyhodne napr. na kresleni car a podobne. REPLACE je zase vhodne na kresleni na cernou obrazovku. Ta obrazovka nutne nemusi byt cerna barva, to zajistuje palete register - ale ve vetsine pripadu je zde cerna barva. Vse se osvetli kdyz clovek pochopi ze obrazek je vhodne nakreslit pres roviny, protoze musi jen 4x prepnout rovinu a zapsat 4x8KB dat a je obrazek nakresleny. Kdyz by jsi to delal pres PSET tak musis udelat 16 pruchodu a tak je to 16x8KB, coz by bylo rapidne pomalejsi. Stejne tak pri cteni z video ram je vhodne zvolit spravny rezim aby cteni bylo efektivni. |
Autor: | microlan [ 14.11.2017, 14:49 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Nemám zatím se SHARPem žádné zkušenosti a tak by mě zajímalo jak se přepíná mezi RAM a VRAM, jde to přes nějaký port? |
Autor: | nobomi [ 14.11.2017, 15:10 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
http://www.sharpmz.org/mz-800/download/sm800.pdf Strana 7 a 8 |
Autor: | microlan [ 14.11.2017, 15:42 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Díky. //ale stejně tomu nerozumím, dobře porty E0 - E6 ale co na ně poslat? ///nebo to nemá přímý přístup do paměti, ale jen přes porty? |
Autor: | nobomi [ 14.11.2017, 17:43 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Je to naprosto jedno co za data se tam pošle, pro přepnutí mapování paměti je důležitá jen adresa portu (a to ještě jen dolních 8 bitů). |
Autor: | danhard [ 14.11.2017, 18:06 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Je to jen prázdná instrukce, aby se nemusely připravit v registrech žádná data. Tím se ale dělá jen přepnutí okna VRAM do prostoru RAM. Co v tom okně je vidět řídí Read a Write Format registr na adrese CD a CC, str.20 a dál. |
Autor: | microlan [ 14.11.2017, 19:36 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Aha tak to už vypadá líp. Takže takle nějak pošlu "a" na adresu v HL do VRAM? Kód: OUT (0E4h),a LD (HL),a Sakra, a kde je mód 64k DRAM? |
Autor: | Martin8bity [ 14.11.2017, 20:32 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Musis zkombinovat vice IN/OUT podle rezimu 700/800 ve kterem bezis. |
Autor: | microlan [ 14.11.2017, 20:39 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Aha, a ještě jedna věc, lze tedy nastavit režim ve kterém čte z DRAM a zapisuje do VRAM? //v jednom okně míněno |
Autor: | Martin8bity [ 14.11.2017, 20:54 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Jestli myslis na te same adrese, tak myslim, ze ne. |
Autor: | suksoft [ 14.11.2017, 21:59 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Microlan po resetu pri kterem zmacknes M se dostanes do monitoru. Ten ma rezim MZ700. Kdyz vsak treba od adresy 2000H zacnes psat program: di ; zablokujes preruseni ld a,2 out (0ceh),a ; prepnes se do rezimu MZ800 320x200 16 barev in a,(0e0h) ; primapujes video ram od adresy 08000h ld a,1 ; budes zapisovat do ramce I out (0cch),a ld a,10101010b ld (08000h),a ld (08001h),a ld a,10b ; budes zapisovat do ramce II out (0cch),a ld a,00110011b ld (08000h),a ld (08001h),a ld a,100b ; budes zapisovat do ramce III out (0cch),a ld a,00001111b ld (08000h),a ld (08001h),a ld a,1000b ; budes zapisovat do ramce IV out (0cch),a ld a,0b ld (08000h),a ld a,11111111b ld (08001h),a loop: jr loop Tak by ti to melo nakreslit 16 barevnych bodu vlevo nahore. Jeste by to chtelo nastavit palete register ale jako zaklad pro pochopeni by to mohlo stacit. |
Autor: | microlan [ 14.11.2017, 22:13 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Jo díky, rámce se chovají jako by měli stejnou adresu (přepínají se lineárně v CC) a jestli chápu správně tak rámce jsou RGB a jasovka? Nemám 800ku ještě doma, ale zkusím se mrknout po nějakém emulátoru |
Autor: | suksoft [ 14.11.2017, 23:12 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
Ano da se rici ze je to kombinace IGRB. Jinak v tomto rezimu se mapuje video ram od 8000h do 9fffh - takze vidis vzdy jen 8KB z 32KB. Proto musis zapisovat 4x aby jsi mel vsechny barvy. Kdyz ale budes chtit vymazat video ram tak staci nastavit ld a,1111b out (0cch),a a vynulovat 8000 adres od 08000h a mas prazdnou video ram. Jinak 192 poslednich bajtu ve video ram je volnych a nezobrazuji se. Dulezitych je tech prvnich 8000. |
Autor: | microlan [ 14.11.2017, 23:21 ] |
Předmět příspěvku: | Re: Mapovanie pamäte (VRAM) |
A jdou i jine kombinace CC např. ld a,1100b out (0cch),a a i to pak zároveň nastavovat, nejen mazat? |
Stránka 1 z 2 | Všechny časy jsou v UTC + 1 hodina [ Letní čas ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |