Karoshi MSX Community
05 de Julio de 2021, 07:40:25 pm *
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]
  Imprimir  
Autor Tema: Creación de fuentes (tanto en basic como en asm)  (Leído 1972 veces)
0 Usuarios y 1 Visitante están viendo este tema.
celeroncillo
Karoshi Newbie
*
Mensajes: 6


Email
« : 23 de Junio de 2011, 05:07:31 pm »

Hola, me gustaría crearme un nuevo tipo de letras tanto para Basic como para ensamblador, actualmente estoy definiendo cada caracter con poke desde basic, por ejemplo:

para la A (caracter 65)

VPOKE 2048+65*8+0,&B00110000
VPOKE 2048+65*8+1,&B01111000
VPOKE 2048+65*8+2,&B11001100
VPOKE 2048+65*8+3,&B11001100
VPOKE 2048+65*8+4,&B11001100
VPOKE 2048+65*8+5,&B11111100
VPOKE 2048+65*8+6,&B11001100
VPOKE 2048+65*8+7,&B11001100

pero me imagino que hay una forma mas fácil, rápida o mejor, ¿con DATA?. Por otro lado y si es posible me gustaría que fuera multicolor.
Y en ensamblador?, si lo creo con DATA, lo puedo pasar facilmente a ensamblador?, en basic me "defiendo", poco, pero en ASM voy mas perdido que un niño de 4 años conectando un video Beta, apenas he conseguido escribir algo en pantalla con ASMSX, pero eso sí con la typo de MSX.

Muchas gracias
En línea
Shinzon
Karoshi Lover
***
Mensajes: 116


Email
« Respuesta #1 : 25 de Junio de 2011, 08:39:34 pm »

Pues si. Hay en BASIC una manera más sencilla de hacerlo. Una forma, sería por ejemplo:

10 screen 1 ; ó Screen 0, pero cambiando las direcciones (creo
20 cls
30 for i=0 to 7 ; bucle principal
40   read d
50   vpoke 2048+65*8+I, D
60 next i
70 DATA &B00110000 ;&H30
80 DATA &B01111000 ;&H78
90 DATA &B11001100 ;&HCC
100 DATA &B11001100 ; &HCC
110 DATA &B11001100 ; &HCC
120 DATA &B11111100 ; &HFF
130 DATA &B11001100 ; &HCC
140 DATA &B11001100 ; &HCC

En la línea 50 uso la variable del bucle "I" para utilizarla en la suma de los valores, y en cuanto a read, no creo que haya que explicar mucho, ¿no?

Cuando estás trabajando con un sólo caracter, puede que no ahorres muchas líneas de tecleado, pero son fácilmente "reeditables" si lo escribes mediante un programa BASIC. Ahora, la cosa es mejor cuando las datas a leer son muchas. Hay ahorras espacio, pero tiras de datas. Para ahorrar mas espacio y tiempo a la hora de teclear DATA, te aconsejo que uses el sistema hexadecimal. Ciambia los "&B" por "&H" y todo lo demás lo dejas igual (salvo los 0 y 1 que los debes cambiar por su formato hexadecimal, claro está, que te he puesto a la derecha de los &B en las DATAS). Si usas guindous ó cualquier otro sistema operativo, usa las calculadoras para convertir entre diferentes formatos para facilitarte las cosas, o prueba a hacer en BASIC:

 print hex$ (&B00110000)
  30
 Ok

Este valor 30 es en hexadecimal

Puedes probar con las instrucciones PRINT HEX$ (número); PRINT BIN$(número); PRINT &H30; PRINT &B00110000
... donde "número" puede ser en formato binario, decimal o hexadecimal. Tambien puedes usar el sistema octal, pero está en total desuso y es algo engorroso. (PRINT OCT$(número))

En Screen 1 hay una forma de poner caracteres en multiples colores, pero a decir verdad, desconozco este tema. Yo ahora ando con el ensamblador (aprendiendo cuando tengo tiempo), y no me he metido en estas lides. pero también puede hacerse. En esto, hago llamada general al personal para que te informe mas exactamente. No es nada dificil cuando sabes las rutinas BIOS apropiadas y las direcciones de memoria pertinentes.

Espero te sirva de ayuda. Un saludo.
En línea
Páginas: [1]
  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!