gentabla2

Descripción del contenido de la página

Programa en SuperBASIC para castellanizar una tabla de teclado de QXL.

Etiquetas:

gentabla2 es una pequeña modificación que hice de GenTabla, escrito por Pedro Reina. El programa toma el contenido de una tabla de teclado del sistema SMSQ de la tarjeta QXL, lo castellaniza y lo guarda con una cabecera ejecutable.

Utilicé este programa como documentación para escribir Transkeyer, que tenía un objetivo similar.

Código fuente

1000 REMark gentabla2_bas
1010 REMark Versión modificada por Marcos Cruz (http://programandala.net) de:
1015 :
1020 REMark *--------------------------------------------------------------------
1030 REMark * FICHERO:  GenTabla_bas
1040 REMark * OBJETIVO: Modificar una tabla de teclado para QXL y generar una nueva
1050 REMark * AUTOR:    Pedro Reina (http://pedroreina.net)
1060 REMark * FECHA:    V.28.4.1995
1070 REMark *--------------------------------------------------------------------
1080 :
1090 REMark 1995 Cambios principales.
1100 REMark 2011-02-21 Pequeños cambios para la publicación del programa, junto con qxl_kbt_to_data y Transkeyer.
1110 :
1120 REMark *--------------------------------------------------------------------
1130 :
1140 REMark Constantes
1150 Tamaño = 768 : REMark Tamaño de la tabla básica
1160 Unidad$ = "dos1_sb_gentabla_" : REMark Unidad de trabajo
1170 Anterior$ = "qxl_gb_kbt_data" : REMark Nombre de la tabla original
1180 Nueva$ = "qxl_es_kbt" : REMark Nombre de la nueva tabla
1190 :
1200 REMark Variables del programa
1210 Base = 0       : REMark Dirección de memoria donde se carga la tabla
1220 Bloque = 0     : REMark Número de bloque del código (entre 0 y 3)
1230 Tecla = 0      : REMark Número de tecla del teclado PC
1240 Caracter = 0   : REMark Caracter QL asociado a una tecla
1250 i = 0          : REMark Indice
1260 Inicio = 0     : REMark Variable auxiliar
1270 Fin = 0        : REMark Variable auxiliar
1280 Long = 0       : REMark Variable auxiliar
1290 :
1300 REMark Caracteres especiales, llamados en inglés "non-spacing"
1310 REMark Son aquellos que esperan al siguiente carácter y lo pueden modificar,
1320 REMark por lo que les llamo "modificadores"
1330 Modificador$ = "'`÷^" : REMark El apóstrofo saldrá al dar al acento
1340                       : REMark El acento grave irá en su sitio
1350                       : REMark El signo de dividir irá en la diéresis
1360                       : REMark El signo ^ irá en su sitio
1370 :
1380 REMark Caracteres que se modifican cuando se pulsan después de
1390 REMark los modificadores
1400 Modificable$ = "aeiouAEIOU " : REMark Se incluye el espacio
1410 :
1420 REMark Caracteres en que se convierten los modificables cuando se pulsan
1430 REMark después de los modificadores
1440 REMark Hay que poner un conjunto de caracteres para cada modificador
1450 RESTORE 1510
1460 Modificado$=""
1470 FOR i=1 TO 4
1480   READ Resultado$
1490   Modificado$ = Modificado$ & Resultado$
1500 END FOR i
1510 DATA "áéíóú'É''''": REMark modificados por la tilde aguda
1520 DATA "àèìòù``````": REMark modificados por la tilde grave
1530 DATA "äëïöüÄ÷÷ÖÜ÷": REMark modificados por la diéresis
1540 DATA "âêîôû^^^^^^": REMark modificados por el circunflejo (^)
1550 :
1560 REMark Presentación del programa
1570 CLS
1580 PRINT "Modificador de tablas de teclado de la QXL"
1590 PRINT "------------------------------------------"
1600 PRINT
1610 :
1620 REMark Lectura de la tabla original
1630 REMark Obtenida de SMSQ.EXE, supongo que es la tabla del teclado UK
1640 PRINT "Leyendo tabla original..."
1650 Base = ALCHP (Tamaño)
1660 LBYTES Unidad$ & Anterior$, Base
1670 :
1680 REMark Lectura de los nuevos valores de los caracteres normales
1690 REMark y modificación en memoria
1700 RESTORE 2430
1710 PRINT "Modificando valores..."
1720 REPeat Lectura
1730   IF ( EOF ) : EXIT Lectura
1740   READ Bloque, Tecla, Caracter
1750   POKE Base + 128 * Bloque + Tecla, Caracter
1760 END REPeat Lectura
1770 :
1780 REMark Modificación de la segunda tabla, la de caracteres modificables
1790 FOR i = 1 TO LEN (Modificador$)
1800   POKE Base + 4 * 128 + CODE(Modificador$(i)), i * (LEN(Modificable$)+1)
1810 END FOR i
1820 :
1830 REMark Creación del nuevo fichero
1840 PRINT "Creando nuevo fichero..."
1850 OPEN_NEW #3, Unidad$ & Nueva$
1860 :
1870 REMark Se anota el pequeño programa que carga el módulo de idioma
1880 REMark Sólo se carga un módulo, el de teclado
1890 REMark El nuevo fichero se deberá cargar con LRESPR
1900 BPUT #3, 112,  48
1910 BPUT #3,  67, 250
1920 BPUT #3,   0,   6
1930 BPUT #3,  78,  65
1940 BPUT #3,  78, 117
1950 :
1960 REMark Escritura de la nueva tabla
1970 BPUT #3, 0,  1 : REMark Cabecera
1980 BPUT #3, 0,  0 : REMark Cabecera
1990 BPUT #3, 0, 34 : REMark Código de España
2000 BPUT #3, 0,  0 : REMark No hay tabla siguiente
2010 BPUT #3, 0,  0 : REMark No hay tabla siguiente
2020 BPUT #3, 0,  4 : REMark Puntero a los punteros de tabla
2030 BPUT #3, 0, 34 : REMark Código de España
2040 BPUT #3, 0,  4 : REMark Puntero a la primera parte
2050 BPUT #3, 2,  2 : REMark Puntero a la segunda parte
2060 :
2070 REMark Escribir en el fichero la información en memoria
2080 FOR i = 0 TO Tamaño-1
2090   BPUT #3, PEEK (Base+i)
2100 END FOR i
2110 :
2120 REMark Escribir los caracteres modificables
2130 PRINT #3, Modificable$;
2140 BPUT #3, 0
2150 Long = LEN (Modificable$)
2160 Inicio = 1
2170 Fin = Long
2180 FOR i = 1 TO LEN (Modificador$)
2190   PRINT #3, Modificado$ (Inicio TO Fin);
2200   BPUT #3, 0
2210   Inicio = Inicio + Long
2220   Fin    = Fin + Long
2230 END FOR i
2240 :
2250 REMark Cerrar el fichero
2260 CLOSE #3
2270 :
2280 REMark Devolver la memoria pedida
2290 RECHP (Base)
2300 :
2310 REMark Fin del programa
2320 PRINT "Programa terminado."
2330 :
2340 REMark Caracteres que se sustituyen
2350 REMark El formato es: Bloque, Tecla, Carácter
2360 REMark   Bloque 0 -> La tecla tal cual
2370 REMark   Bloque 1 -> La tecla con Mayúscula pulsada
2380 REMark   Bloque 2 -> La tecla con Control pulsada
2390 REMark   Bloque 3 -> La tecla con Mayúsculas y Control pulsadas
2400 REMark   Tecla es la tecla del PC, tal como las numera Tony Tebby
2410 REMark   Carácter es el número de carácter del juego QL
2420 :
2430 DATA 0,  41, 186 : REMark °
2440 DATA 1,  41,  97 : REMark _a -> a
2450 DATA 2,  41,  92 : REMark \
2460 DATA 2,   2, 124 : REMark |
2470 DATA 1,   3,  34 : REMark "
2480 DATA 2,   3,  64 : REMark @
2490 DATA 1,   4, 127 : REMark Puntito -> ©
2500 DATA 2,   4,  35 : REMark #
2510 DATA 1,   7,  38 : REMark &
2520 DATA 2,   7, 126 : REMark Negación -> ~
2530 DATA 1,   8,  47 : REMark /
2540 DATA 1,   9,  40 : REMark (
2550 DATA 1,  10,  41 : REMark )
2560 DATA 1,  11,  61 : REMark =
2570 DATA 0,  12,  39 : REMark '
2580 DATA 1,  12,  63 : REMark ?
2590 DATA 0,  13, 179 : REMark ¡
2600 DATA 1,  13, 180 : REMark ¿
2610 DATA 0,  26, 159 : REMark ` (en la tecla acento grave)
2620 DATA 1,  26,  94 : REMark ^
2630 DATA 2,  26,  91 : REMark [
2640 DATA 0,  27,  43 : REMark +
2650 DATA 1,  27,  42 : REMark *
2660 DATA 2,  27,  93 : REMark ]
2670 DATA 0,  39, 137 : REMark ñ
2680 DATA 1,  39, 169 : REMark Ñ
2690 DATA 0,  40,  39 : REMark ' (en la tecla tilde aguda)
2700 DATA 1,  40, 187 : REMark ÷ (en la tecla diéresis)
2710 DATA 2,  40, 123 : REMark {
2720 DATA 0,  43, 136 : REMark ç
2730 DATA 1,  43, 168 : REMark Ç
2740 DATA 2,  43, 125 : REMark }
2750 DATA 0,  86,  60 : REMark <
2760 DATA 1,  86,  62 : REMark >
2770 DATA 2,  86, 184 : REMark «
2780 DATA 3,  86, 185 : REMark »
2790 DATA 1,  51,  59 : REMark ;
2800 DATA 1,  52,  58 : REMark :
2810 DATA 0,  53,  45 : REMark -
2820 DATA 1,  53,  95 : REMark _
2830 :
2840 DEFine PROCedure s
2850   SAVE_O Unidad$&"gentabla2_bas"
2860   END DEFine s
2870 :

Para cargar la tabla resultante. solo hacen falta dos pasos: primero cargar y ejecutar la tabla con LRESPR y después activarla con KBD_TABLE 34, tal como se muestra en el ejemplo siguiente:

LRESPR "flp1_qxl_es_kbt"
KBD_TABLE 34

Descargas

Páginas relacionadas

Transkeyer
Programa escrito en SBASIC para crear una tabla de teclado de SMSQ/E para un teclado de PC en castellano y juego de caracteres ISO 8859-1.
qxl_kbt_to_data
Programa herramienta escrito en SBASIC para extraer el contenido de una tabla de teclado de QXL.
Transfonter
Utilidad escrita en SBASIC para crear un juego de caracteres para QL con el estándar ISO 8859-1.