lnxspectrum:dma
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verzeNásledující verzeObě strany příští revize | ||
lnxspectrum:dma [2014/11/02 11:26] – lanex | lnxspectrum:dma [2014/11/02 12:29] – lanex | ||
---|---|---|---|
Řádek 18: | Řádek 18: | ||
Pro přenos větších bloků však DMA nemá v ZX Spectru konkurenta. DMA přenese kopii obrazovky za 41472 taktů, procesor Z80 to zvládne za 110592 taktů, tedy skoro 3x pomaleji. | Pro přenos větších bloků však DMA nemá v ZX Spectru konkurenta. DMA přenese kopii obrazovky za 41472 taktů, procesor Z80 to zvládne za 110592 taktů, tedy skoro 3x pomaleji. | ||
+ | |||
+ | === Jak v Z80 Assembleru přenést blok pomocí DMA === | ||
+ | |||
+ | V tomto příkladu přeneseme z adresy 0 do VideoRam 2048 Bajtů včetně barev: | ||
+ | < | ||
+ | ; Created by LnxSpectrum emulator (www.ilnx.cz) | ||
+ | |||
+ | org 50000 | ||
+ | |||
+ | start: | ||
+ | ld (odkud), | ||
+ | ld hl, | ||
+ | ld (delka), | ||
+ | ld hl, | ||
+ | ld (kam), | ||
+ | ld hl,dma | ||
+ | ld b, | ||
+ | ld c, | ||
+ | otir ; | ||
+ | ;tím se i DMA spustí | ||
+ | |||
+ | ;tady se procesor Z80 zastaví, a nebude provádět žádné instrukce, dokud | ||
+ | ;DMA nedokončí přenos všech bajtů. | ||
+ | |||
+ | ld hl, | ||
+ | ld (odkud), | ||
+ | ld hl, | ||
+ | ld (delka), | ||
+ | ld hl, | ||
+ | ld (kam), | ||
+ | ld hl,dma | ||
+ | ld b, | ||
+ | ld c, | ||
+ | otir ; | ||
+ | ;tím se i DMA spustí | ||
+ | |||
+ | ;tady se procesor Z80 zastaví, a nebude provádět žádné instrukce, dokud | ||
+ | ;DMA nedokončí přenos všech bajtů. | ||
+ | |||
+ | ret ; | ||
+ | |||
+ | dma: | ||
+ | odkud: | ||
+ | delka: | ||
+ | defb # | ||
+ | kam: | ||
+ | defb # | ||
+ | len_initblok: | ||
+ | </ |
lnxspectrum/dma.txt · Poslední úprava: 2018/07/31 10:05 autor: 127.0.0.1