HispaMSX

RE: Programando VDP a pelo (v9918,v9928)

2002-09-19 22:35:59
Hola.

Buenas!

1.-Estoy tratando de variar un registro del VDP y no lo consigo. Supongam=
os 
que quiero escribir el valor $E2 en el registro 1. En teoría debería hace=
r 
algo así como lo siguiente:

   LD A,$E2
   OUT $99,A
   LD A,$81
   OUT $99,A

   Pues el caso es que no funciona. ¿Alguna pista?

Prueba a hacer un IN A,$99 primero, esto "reinicializa" o "prepara" el VDP =
para que le pases los dos valores seguidos, no vaya a ser que por alguna raz=
ón ya se haya introducido alguno.
Una pregunta... cómo sabes que no está funcionando? :?

2.-Sé que hay una forma de hacerlo pero no recuerdo cómo era: ¿cómo puedo=
 
utilizar el modo gráfico (SCREEN 2 para entendernos) con sólo un único ba=
nco 
de caracteres y colores? Es decir, en lugar de los 3x256=768 bloques 
diferentes, poder emplear únicamente 256. Lo he visto hacer, pero ¿cómo?

Creo que debe estar en mensajes antiguos de esta lista...
Sinó intenta contactar con Manuel Pazos o con Armando Pérez que tienen bast=
ante idea sobre eso.

Aunque creo que en su dia se habló de screen 4 y del V9938/58... no se si s=
erá aplicable en los 9918/29, es de suponer que si.

3.-¿Cuántos ciclos de reloj habría que esperar (siendo prudentes) desde q=
ue 
se establece una dirección de la VRAM hasta que se puede acceder a ella c=
on 
seguridad? Lo estaba haciendo así, pero a veces (muy de vez en cuando) 

Yo juraría que no hace falta esperar nada, no debería fallar... pero igual =
me equivoco. Yo nunca he puesto esperas al acceder al VDP... aunque siempre =
he programado con el V9938/58... pero me parece extraño lo que comentas.

   LD HL,origen
   LD B,128
@@BUCLE:     ; Por ejemplo, rutina que copia 128 bytes de RAM a VRAM
   LD A,[HL]
   INC HL
   OUT $98,A
   DJNZ @@BUCLE

Ni idea, yo lo veo bien, no entiendo por qué falla.
Esto... por qué no usas en vez de un bucle la instrucción OTIR?
No es que vaya a resolver tu problema pero es más rápido y más limpio.

Y que nadie me diga, por favor, que la BIOS hace todo esto, etc. etc. En =

este caso en concreto no me sirve. Ya sé que LDIRVM lo hace muy fácilment=
e, 
pero no se trata de esto.

Jeje... me parece que debes ser el único que usa la bios para manejar gráfi=
cos. Lo normal, por velocidad, es tratar directamente con el VDP.



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