HispaMSX

RE: Pregunta técnica sobre VDP

2003-06-22 22:50:29
--- En hispamsx(_en_)yahoogroups(_punto_)com, "Eduardo Robsy Petrus" 
<robsypetrus@h...> =
escribió:
Hola. A alguien se le ocurre una rutina más rápida para copiar datos de l=
a 
RAM a la VRAM en bloques de 8 bytes en un MSX1 (TMS9918 o así)???

Si lo que quieres es velocidad yo creo que ésta es la mejor manera, a costa=
 de sacrificar algo de memoria:

; Parametros:
; HL: dirección de origen (RAM)
; DE: dirección de destino (VRAM)
RAM2VRAM:
ld a,e          ;4
di                      ;4
out (99h),a             ;11
ld a,d          ;4
or 40h          ;4
out (99h),a             ;7
ld c,98h                ;7
ld (pila), sp   ;20
ld sp, nuevapila        ;10

LOOP:
outi                    ;16x8
outi
outi
outi
outi
outi
outi
outi
ret                     ;5

nuevapila:
ds LOOP, bloques
dw VUELVE

pila:
dw 0

VUELVE:
ld sp, (pila)   ;20
ei                      ;4
ret                     ;5

Consume más espacio, pero es algo más rápida. No se si he puesto bien los t=
iempos...
Si se van a transferir del orden de 800 bytes lo óptimo sería hacerlo en bl=
oques de 32 bytes para que ocupe menos espacio.

Saludos.


<Anterior en la conversación] Conversación actual [Siguiente en la conversación>