Karoshi MSX Community
06 de Julio de 2021, 12:03:24 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: 1 ... 3 4 [5]
  Imprimir  
Autor Tema: Cóctel de dudas vol.1  (Leído 28578 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #60 : 26 de Abril de 2007, 09:54:02 pm »

A new question: ¿las funciones DISSCR y ENASCR también pueden sincronizarse con el barrido mediante halt?
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #61 : 27 de Abril de 2007, 12:01:21 pm »

Jeje, ¿que estarás maquinando?

Si, puedes desactivar la pantalla sincronizando con el barrido; pero no suele tener mucha utilidad.
Haciendo salvajadas con la temporización del barrido puedes extender el tiempo de VBlank sacrificando lineas visibles Wink.

De verdad que me intriga lo que pretendes...  nnchks:)
En línea

Doom dee doom dee doom
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #62 : 27 de Abril de 2007, 02:41:18 pm »

Jejeje, ¿por qué eres tan mal pensado? Grin

Tan sólo quería saber si el barrido sería "instantáneo" o se pordría apreciar en algún momento el borrado de la pantalla. En el emulador no se aprecia bien.

Estoy ahora mismo de MSXtremo total Smiley
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #63 : 31 de Mayo de 2007, 12:15:57 pm »

¡Vuelvo al ataque!

No puedo probarlo ahora mismo, pero, si quiero multiplicar HL por 32, ¿podría hacerlo rotando a la izquierda HL cinco veces de la siguiente forma?

Código:
ld b,5
@@loop:

or a
rl l
rl h
djnz @@loop

Thanks!  Wink
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #64 : 31 de Mayo de 2007, 01:25:00 pm »

No sé qué tal te iba a ir el tema de la bandera de acarreo. Ten en cuenta que al hacer RL de un bit, te puede salir por la izquierda, con lo cual tendrías que recuperarlo por la derecha en el siguiente bit.

A mi, que soy más expeditivo, me gusta la solución siguiente:

LD B,5
@@LOOP:
ADD HL,HL
DJNZ @@LOOP

¿Qué tal así? Wink
En línea
SapphiRe_MSX
Visitante
« Respuesta #65 : 31 de Mayo de 2007, 01:43:25 pm »

La versión de robsy es más rápida, pero aún puede mejorarse Cheesy

Código:
add hl,hl
add hl,hl
add hl,hl
add hl,hl
add hl,hl

Ocupa más, pero ahora sólo se usan 55 ciclos en lugar de 120... Grin Grin si hay espacio suficiente, desenrollar los bucles es muy recomendable Tongue
En línea
jltursan
Karoshi Forum's Guru
*******
Mensajes: 1516


¿Que es lo que has aprendido hoy?


WWW Email
« Respuesta #66 : 31 de Mayo de 2007, 02:19:40 pm »

Y me temo que hasta ahí se puede llegar... Smiley
En línea

Doom dee doom dee doom
Darth_Fistro
Karoshi Hero
*****
Mensajes: 507


Email
« Respuesta #67 : 31 de Mayo de 2007, 04:52:04 pm »

Pues veamos...

or a pone el flag c a cero

RL L toma el carry, rota a la izq y "suelta" un nuevo carry

RL H toma el carry anterior, rota H y suelta un nuevo carry, que no uso

Y repito todo 5 veces: debería funcionar, ¿me equivoco?  Smiley
En línea

MSX FOREVER (hasta que saquen un ZX81 con TMS, PSG y 64K de RAM)
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #68 : 31 de Mayo de 2007, 06:08:19 pm »

La versión de robsy es más rápida, pero aún puede mejorarse Cheesy

Código:
add hl,hl
add hl,hl
add hl,hl
add hl,hl
add hl,hl

Ocupa más, pero ahora sólo se usan 55 ciclos en lugar de 120... Grin Grin si hay espacio suficiente, desenrollar los bucles es muy recomendable Tongue


¿Ocupa más? Creo que son 5 bytes ambas, ¿no?

He dejado el tema del DJNZ para poder hacer multiplicaciones por potencias de dos entre 2^1 (2) y 2^15 (32.768).

Evidentemente, si lo que quieres es velocidad, como dice Sap, hay que desenrollar todos los bucles al máximo.
En línea
SapphiRe_MSX
Visitante
« Respuesta #69 : 31 de Mayo de 2007, 06:27:31 pm »

¿Ocupa más? Creo que son 5 bytes ambas, ¿no?

Eeeem... no se por qué me había empeñado en que add hl,hl ocupaba dos bytes... Roll Eyes

Citar
He dejado el tema del DJNZ para poder hacer multiplicaciones por potencias de dos entre 2^1 (2) y 2^15 (32.768).

Nada, nada... eso se puede arreglar como sigue:

Código:
HLPOR32768: add hl,hl
HLPOR16384: add hl,hl
HLPOR8192:  add hl,hl
HLPOR4096:  add hl,hl
HLPOR2048:  add hl,hl
HLPOR1024:  add hl,hl
HLPOR512:   add hl,hl
HLPOR256:   add hl,hl
HLPOR128:   add hl,hl
HLPOR64:    add hl,hl
HLPOR32:    add hl,hl
HLPOR16:    add hl,hl
HLPOR8:     add hl,hl
HLPOR4:     add hl,hl
HLPOR2:     add hl,hl
            ret

Rutina que ocupa 16 bytes y es más rápida que el bucle Cheesy

Citar
Evidentemente, si lo que quieres es velocidad, como dice Sap, hay que desenrollar todos los bucles al máximo.

cuanto más mejor Cheesy Podríamos resumirlo en la siguiente máxima: "para llegar antes no hay que enrollarse" Grin Grin Grin
En línea
Páginas: 1 ... 3 4 [5]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!