HispaMSX

Re: [hispamsx] De vuelta On-topic: OPTIMIZACION

2004-05-15 17:51:16
en realidad esa rutina no funciona del todo bien...el porque se lo explica
perfectamente en la MAP

http://map.tni.nl/articles/fast_loops.php

agregando eso, si funcionaria .... bueno, estás usando en esa rutina, un
registro BC donde B es el byte bajo, y C es el alto.....y no es exacto,
porque no tiene la corrección, que dolor de cabeza para el
programador....!!!

insertate lo siguiente y suprimite los LD que pusiste.

 dec bc   ;Mystery fast loop calculus
 ld e,b
 ld b,c
 inc b
 inc e

O sea

MI_RUTINA_1:
; Y esto no está muy optimizado, lo estoy programando "para que funcione"
; Hacemos que el puntero a VRAM del VDP esté donde queremos
DI
LD A,E
OUT [99h],A
LD A,D
OR 40h
OUT [99h],A
; Hacemos algún apaño
 dec bc
 ld e,b
 ld b,c
 inc b
 inc e
LD C,98h
; Empezamos el proceso de copia
BUCLE:
OTIR ; Copia datos
DEC E
JR NZ,BUCLE
; Y ya está
EI
RET


De esa manera, en forma perfecta y con absoluta exactitud, le pones en BC
cuantos bytes queres copiar.

----- Original Message -----
From: "Roberto E. Vargas Caballero" <i62vacar(_en_)uco(_punto_)es>
To: <hispamsx(_en_)yahoogroups(_punto_)com>
Sent: Saturday, May 15, 2004 9:37 AM
Subject: Re: [hispamsx] De vuelta On-topic: OPTIMIZACION





2.-Reprogramo la BIOS y consigo algo que funciona mejor y puede ser un
poco
más rápido.

LD HL,ORIGEN_RAM
LD DE,DESTINO_VRAM
LD BC,NUM_BYTES
CALL MI_RUTINA_1

MI_RUTINA_1:
; Y esto no está muy optimizado, lo estoy programando "para que funcione"
; Hacemos que el puntero a VRAM del VDP esté donde queremos
DI
LD A,E
OUT [99h],A
LD A,D
OR 40h
OUT [99h],A
; Hacemos algún apaño
LD E,C
LD C,98h
; Empezamos el proceso de copia
BUCLE:
OTIR ; Copia datos
DEC E
JR NZ,BUCLE
; Y ya está
EI
RET


Pruebalo en un MSX2 veras que risa te da esa rutina ;). En MSX2 hay algo
que se llama mas de 16K de vram y distintas paginas, asi que si no
compruebas el paso de una p.gina a otra vas mal por la vida.


Roberto



*HispaMSX. La mailing-list de MSX en castellano*
Para cualquier duda: hispamsx-owner(_en_)yahoogroups(_punto_)com
Web de lista: http://www.hispamsx.org
Enlaces a Yahoo! Grupos

Para visitar tu grupo en la web, accede a:
 http://es.groups.yahoo.com/group/hispamsx/

Para cancelar tu suscripción en este grupo, envía
un mensaje en blanco a:
 hispamsx-unsubscribe(_en_)yahoogroups(_punto_)com

El uso que hagas de Yahoo! Grupos está sujeto a
las Condiciones del servicio de Yahoo!:
 http://es.docs.yahoo.com/info/utos.html


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