Título: Creación de fuentes (tanto en basic como en asm) Publicado por: celeroncillo en 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 Título: Re: Creación de fuentes (tanto en basic como en asm) Publicado por: Shinzon en 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. |