HispaMSX

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

2004-05-15 19:21:00

Nas:

Mi triste contribucion al Underwater challenge se puede descargar desde MRC.
Crei que no la iban a subir pero si, eso si , sin noticia, pero me he reido mucho al verlo.
Es el ejemplo que te decia Flyguille.

Se ve la diferencia entre emuladeros. No se porque BrMSX para DOS va tan mal en este sentido cuando parece que la emulacion es muy buena.

nos vemos en los bares

WYZ


At 12:51 15/05/2004 -0300, you wrote:
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>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>http://www.hispamsx.org
Enlaces a Yahoo! Grupos

Para visitar tu grupo en la web, accede a:
<http://es.groups.yahoo.com/group/hispamsx/>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>http://es.docs.yahoo.com/info/utos..html



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


Publicidad


----------
Enlaces a Yahoo! Grupos
   * Para visitar tu grupo en la web, accede a :
* <http://es.groups.yahoo.com/group/hispamsx/>http://es.groups.yahoo.com/group/hispamsx/
   *
   * Para cancelar tu suscripción a este grupo, envía un correo a:
* <mailto:hispamsx-unsubscribe(_en_)yahoogroups(_punto_)com?subject=Unsubscribe>hispamsx-unsubscribe(_en_)yahoogroups(_punto_)com
   *
* El uso que hagas de Yahoo! Grupos está sujeto a las <http://es.docs.yahoo.com/info/utos.html>Condiciones del servicio de Yahoo!.







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