Přejít na obsah
ARCHIVEKArchiv e-mailových konferencí o 8bitových počítačích Archiv Pandory 1999 až 2013

Re: overscan - jednoduchy popis kresleni po obrazovce

Michal Hučík SHARP MZ-800

Dne 2.11.2010 9:26, Ctirad Feřtr (sharpemupandora.cz) napsal(a):
Zobrazit citovaný text (3 řádky)
> BTW, nemá někdo zdroják v asm něčeho, co kreslí na obrazovku? Pokoušel 
jsem
> se o něco na základě dokumentace ze scavu, ale nějak mi to neseje :(
Ted tu mam chvilku klidu, toz zkusim nastinit alespon zaklad. Budu se 
zabyvat jen rezimem MZ800, ve kterem se pracuje s video pameti bitove, 
tzn. ze to co zapisu do VRAM je to co uvidim na obrazovce. V rezimu 
MZ700 funguje zobrazeni z VRAM atributove, tedy bajt zapsano do VRAM 
rika adresu bitove masky v CGRAM a barvy pozadi a popredi se nastavuji v 
tabulce atributu, ktera je umistena nad VRAM ... ale to je jina pisnicka.

Kazdy program v MZ800 rezimu by si mel davat bacha, aby se on sam, nebo 
jeho zasobnik nenachazel v oblastech 0x1000 - 0x1FFF (CGROM), a 0x8000 - 
0x9FFF (VRAM 320x200), pripadne 0x8000 - 0xBFFF (VRAM 640x200) ... teda 
program se tam samozrejme nachazet muze, ale ne ve chvili, kdy si 
primapuje CGROM + VRAM, ktere v MZ800 rezimu jdou mapovat pouze obe 
dohromady.

Nastaveni pozadovaneho rezimu, zpusobu zobrazeni, rozliseni obrazovky a 
poctu barev provadime pres DMD registr (0xCE).

Mapovani pameti zatim nijak rozvadet nebudu, pouze to, ze v MZ800 rezimu 
IN A, (0xE0) primapuje CGROM a VRAM. Instrukce IN A, (0xE1) to odmapuje 
a navrati tam RAMku.

V kazdem barevnem rezimu si clovek musi uvedomit s kolika _obrazy_ a 
_bloky_ v danem rezimu pracuje, podle toho pak vypada prace s WFR - 
Write Format Registr - (0xCC), RFR - Read format Registr (0xCD) a 
registrem barevnych palet (0xF0).



org 0x3000

ld sp, 0x2FFF        ; zasobnik dame pod nas program

xor a
out (0xCE), a        ; do DMD posleme 0x00 - tedy rezim MZ800, 320x2004 
obraz A
                               ; (pouzijeme tedy 2 obrazove bloky I. a II.)

in a, (0xE0)            ; primapujeme CGROM a VRAM

ld bc, 0x00F0        ; do reg. C si dame adresu registru barevnych palet

ld a, 0x40
out (c), a            ; zvolime nultou paletovou skupinu
                     ; Volba skupiny: 6. bit musi byt '1', dolni 2 bity 
rikaji cislo skupiny


; nyni u teto skupiny pridelime barvy k obsahu obrazovych bloku
; Volba barvy:
; 6. bit musi byt '0'
; bity 5.  -  4. rikaji cislo obrazoveho bloku
; bity 3. - 0. rikaji barvu (IGRB)

xor a
out (c), a            ; zadny bit v obr. blocich znamena - cerna barva

ld a, 0x11
out (c), a            ; bit v prvnim bloku bude modra barva

ld a, 0x22
out (c), a            ; bit v druhem bloku bude cervena

ld a, 0x3F
out (c), a            ; bit v obou blocich bude bila


;
; A ted zacneme kreslit, nejprve si smazeme screen
;

ld a, 0x03
out (0xCC), a           ; nastavime si WFR a RFR tak, aby jsme
out (0xCD), a            ; cetli metodou READ z bloku I. a II. a psali 
metodou SINGLE WRITE do bloku I. a II

ld hl, 0x8000        ; adresa VRAM
ld de, 0x8001
ld bc, 0x1F3F        ; velikost viditelne oblasti VRAM ( 40 bajt x 200  
radku ) - 1
xor a
ld (hl), a
ldir                        ; mazeme


; namalujeme bilou prerusovanou caru pres prvnich 8 radku
ld hl, 0x8000
ld de, 0x8001
ld bc, 0x013F            ; (40 x 8) - 1
ld a, 0x55
ld (hl), a
ldir

; pokracujeme pod tim cervenou carou
ld a, 0x02
out (0xCC), a
out (0xCD), a        ; prenastavime WFR a RFR jen na II. obrazovy blok

ld bc, 0x013F            ; (40 x 8) - 1
ld a, 0x55
ld (hl), a
ldir

; odmapujeme VRAM
in a, (0xE1)

; a budeme cekat az do soudneho dne...
di
halt


Snad jsem se nikde neseknul a bude vam to takhle fungovat. K pochopeni 
je dobre dohledat si vyznamy jednotlivych bitu k uvedenym registrum.

Michal


Zobrazit původní podobu

Vlákno · 10 zpráv

Zobrazit celé vlákno na jedné stránce

  1. Zdrojaky VHDL pro ScanDoubler David Luftner Přílohy: 1
  2. Re: Zdrojaky VHDL pro ScanDoubler Zdenek Adler
  3. overscan (was: Re: Zdrojaky VHDL pro ScanDoubler) Ctirad Feřtr
  4. Re: overscan Michal Hučík
  5. Re: overscan Factor6
  6. Re: overscan Martin Frohlich
  7. Re: overscan - jednoduchy popis kresleni po obrazovce Michal Hučík
  8. Re: overscan - jednoduchy popis kresleni po obrazovce Michal Hučík Přílohy: 1
  9. RE: overscan - jednoduchy popis kresleni po obrazovce Anonym
  10. RE: overscan - jednoduchy popis kresleni po obrazovce Vaclav Peroutka