Escribir VRAM BASIC

Door sergarbes

Expert (115)

afbeelding van sergarbes

28-07-2021, 12:59

Hola,

Estoy practicando un poco de básico. Estoy leyendo y probando que poner el valor & H44 en el primer byte de la paleta 6 de la VRAM hace que los caracteres 0 a 7 aparezcan en azul. ¿Por qué pasó esto? Hay literatura para leer sobre el tema.

VPOKE BASE(6), &H44

Gracias,

Aangemeld of registreer om reacties te plaatsen

Van Ritcher1986

Master (196)

afbeelding van Ritcher1986

02-08-2021, 02:21

No te entiendo muy bien lo que quieres decir, intentas hacer algo asi..

5 keyoff
10 screen 1
20 a=base(6)
30 for y=o to 10
40 for x=0 to 39
50 locate x,y
55 print("a")
60 next x
70 next Y
80 vpoke a+8,&H14
90 goto 90
Con esto cambiarias el color de la letra "A" a negro con fondo rojo.
Creo que lo que tu quieres es ocultar las letras entonces si estaria bien poner el mismo codigo de color
la tabla de colores en screen 1 solo ocupa 32 bytes, 1 byte por cada grupo de 8 "caracteres". Tienes que dividir entre 8 el codigo ascii(la A corresponde al 65) y sumarlo a la direccion donde comienza la tabla de color.El espacio en blanco es el 32, si quieres cambiar ese grupo de 8 caracteres seria sumar 4 a la direccion inicial de la tabla.
No se si te estare liando mas Cool ..

Van mohai

Paladin (1007)

afbeelding van mohai

15-08-2021, 11:17

Vamos a ver...
Vas por buen camino.
El comando BASE sirve para leer o escribir los diferentes punteros de la VRAM.
Tambien puedes variar los registros del VDP directamente, con el comando VDP, pero es más complicado usarlos.
Supongo que eso ya lo sabías.
Si estás trabajando en BASIC, no hace falta que leas el BASE todo el rato, porque hará tu programa lento. Usa una variable o números fijos mejor.
Si estás trabajando en SCREEN 1 (Modo gráfico 1, si no me equivoco), cada atributo de color afecta a un grupo de 8 patrones a ls vez.
Esto es una característica del chip de vídeo. No es una limitación del BASIC.

Van mohai

Paladin (1007)

afbeelding van mohai

15-08-2021, 11:22

Te comento lo anterior, porque resulta que, en muchoa manuales de BASIC MSX, no se explican todos los comandos, algunos vienen con errores y muchas veces no hay ejemplos.
He de confesar que hace poco descubrí que el comando BASE también es de escritura. Fíjate, después de tantos años y después de haber programado tanto en BASIC.