OldComp.cz

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


Právě je 25.04.2024, 14:43

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 12 ] 
Autor Zpráva
PříspěvekNapsal: 18.09.2013, 09:54 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 19:27
Příspěvky: 1011
Has thanked: 231 times
Been thanked: 221 times
Dostal jsem takový nápad na 1kB intro pro letošní JHCon. Nechci prozradit, o co přesně jde, ale potřeboval bych vysvětlit, nejlépe s příkladem, jak na obrazovce nakreslit atributový blok, tedy třeba od řádku 5, sloupec 5 (AT 5,5) do řádku 10, sloupec 25 (AT 10,25) takové "okno" z atributů. Zatím umím jen LDIRnout od-do, ale tady je třeba s LDIRováním atributů na AT 5,25 skončit a začít zase až na AT 6,5, atd... Rozepsat to po řádcích mi příjde moc dlouhé, tedy abych měl jednu celou LDIRovací rutinku na každý atributový řádek na obrazovce.

_________________
Have you played ATARI today?


Nahoru
 Profil  
 
PříspěvekNapsal: 18.09.2013, 10:19 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3674
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
Napriklad:
Kód:
riadok  =       5
stlpec  =       5
vyska   =       8
sirka   =       10

blok    ld      hl,adresa_bloku_v_pameti
        ld      de,riadok*32+stlpec+#5800
        ld      a,vyska
loop    ld      bc,sirka
        ldir
        ld      bc,32-sirka
        ex      de,hl
        add     hl,bc
        ex      de,hl
        dec     a
        jr      nz,loop
        ret


Nahoru
 Profil  
 
PříspěvekNapsal: 18.09.2013, 16:08 
Offline
Kecálek
Uživatelský avatar

Registrován: 06.08.2013, 10:49
Příspěvky: 220
Bydliště: Praha
Has thanked: 232 times
Been thanked: 67 times
Anebo udělat jeden řádek a pak to jedním velkým LDIRem rozkopírovat na ostatní (ale to jen za předpokladu, že v okolí toho okna není žádný různobarevný obsah, který by se tímto rozhasil).


Nahoru
 Profil  
 
PříspěvekNapsal: 18.09.2013, 17:52 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 19:27
Příspěvky: 1011
Has thanked: 231 times
Been thanked: 221 times
Busy píše:
Napriklad:
Kód:
riadok  =       5
stlpec  =       5
vyska   =       8
sirka   =       10

blok    ld      hl,adresa_bloku_v_pameti
        ld      de,riadok*32+stlpec+#5800
        ld      a,vyska
loop    ld      bc,sirka
        ldir
        ld      bc,32-sirka
        ex      de,hl
        add     hl,bc
        ex      de,hl
        dec     a
        jr      nz,loop
        ret


Diky, ale to mi nefunguje. Na obrazovce to neudela nic. Co se mysli tim adresa_bloku_v_pameti?

_________________
Have you played ATARI today?


Nahoru
 Profil  
 
PříspěvekNapsal: 18.09.2013, 18:48 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3674
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
..


Naposledy upravil Busy dne 18.09.2013, 18:51, celkově upraveno 1

Nahoru
 Profil  
 
PříspěvekNapsal: 18.09.2013, 18:48 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3674
Bydliště: Bratislava
Has thanked: 373 times
Been thanked: 798 times
Factor6 píše:
Zatím umím jen LDIRnout od-do, ...
Factor6 píše:
Diky, ale to mi nefunguje. Na obrazovce to neudela nic. Co se mysli tim adresa_bloku_v_pameti?
adresa_bloku_v_pameti je presne to od v tvojom prvom prispevku. Su to niekde v pameti pekne za sebou ulozene hodnoty atributov, ktore chces ldir-nut do toho atributoveho okna na obrazovku.

Pokial to ale myslis tak ze chces dany atributovy obdlznik na obrazovke iba vyfarbit cely rovnakym atributom, potom sa to da urobit napr. takto:
Kód:
riadok  =       5
stlpec  =       5
vyska   =       8
sirka   =       10
atribut =       #12

blok    ld      hl,riadok*32+stlpec+#5800
        ld      de,32-sirka
        ld      c,vyska
loop1   ld      b,sirka
loop2   ld      (hl),atribut
        inc     hl
        djnz    loop2
        add     hl,de
        dec     c
        jr      nz,loop1
        ret


Nahoru
 Profil  
 
PříspěvekNapsal: 18.09.2013, 20:28 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 19:27
Příspěvky: 1011
Has thanked: 231 times
Been thanked: 221 times
Busy píše:
Factor6 píše:
Zatím umím jen LDIRnout od-do, ...
Factor6 píše:
Diky, ale to mi nefunguje. Na obrazovce to neudela nic. Co se mysli tim adresa_bloku_v_pameti?
adresa_bloku_v_pameti je presne to od v tvojom prvom prispevku. Su to niekde v pameti pekne za sebou ulozene hodnoty atributov, ktore chces ldir-nut do toho atributoveho okna na obrazovku.

Pokial to ale myslis tak ze chces dany atributovy obdlznik na obrazovke iba vyfarbit cely rovnakym atributom, potom sa to da urobit napr. takto:
Kód:
riadok  =       5
stlpec  =       5
vyska   =       8
sirka   =       10
atribut =       #12

blok    ld      hl,riadok*32+stlpec+#5800
        ld      de,32-sirka
        ld      c,vyska
loop1   ld      b,sirka
loop2   ld      (hl),atribut
        inc     hl
        djnz    loop2
        add     hl,de
        dec     c
        jr      nz,loop1
        ret


Tak jsem to myslel, moc diky :god2:

_________________
Have you played ATARI today?


Nahoru
 Profil  
 
PříspěvekNapsal: 18.09.2013, 22:55 
Offline
Kecálek
Uživatelský avatar

Registrován: 06.08.2013, 10:49
Příspěvky: 220
Bydliště: Praha
Has thanked: 232 times
Been thanked: 67 times
V tom prvním příkladu chybělo ld (hl),atribut, ne?


Nahoru
 Profil  
 
PříspěvekNapsal: 19.09.2013, 06:17 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1524
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 386 times
mop píše:
V tom prvním příkladu chybělo ld (hl),atribut, ne?

Ne, nechybělo. Protože zápis provede LDIR.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.09.2013, 11:51 
Offline
Kecálek
Uživatelský avatar

Registrován: 06.08.2013, 10:49
Příspěvky: 220
Bydliště: Praha
Has thanked: 232 times
Been thanked: 67 times
dex píše:
mop píše:
V tom prvním příkladu chybělo ld (hl),atribut, ne?

Ne, nechybělo. Protože zápis provede LDIR.

Já jsem myslel někde před tou smyčkou. Zapsat hodnotu, kterou pak LDIR bude kopírovat.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.09.2013, 12:00 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 05.09.2013, 14:08
Příspěvky: 1070
Bydliště: Smolenice
Has thanked: 131 times
Been thanked: 473 times
mop píše:
dex píše:
mop píše:
V tom prvním příkladu chybělo ld (hl),atribut, ne?

Ne, nechybělo. Protože zápis provede LDIR.

Já jsem myslel někde před tou smyčkou. Zapsat hodnotu, kterou pak LDIR bude kopírovat.


LDIR tam kopíruje dopredu pripravený blok dát z pamäte, nie hodnotu.

_________________
To err is human, but to really foul things up requires a computer.


Nahoru
 Profil  
 
PříspěvekNapsal: 19.09.2013, 12:07 
Offline
Kecálek
Uživatelský avatar

Registrován: 06.08.2013, 10:49
Příspěvky: 220
Bydliště: Praha
Has thanked: 232 times
Been thanked: 67 times
z00m píše:
LDIR tam kopíruje dopredu pripravený blok dát z pamäte, nie hodnotu.

Aha, on každý příklad dělá něco jiného. To mi nějak uniklo.


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

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Google [Bot] a 8 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