OldComp.cz
http://oldcomp.cz/

Mapovanie pamäte (VRAM)
http://oldcomp.cz/viewtopic.php?f=134&t=1180
Stránka 12

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 12 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/