Siento defraudar a todos los que esperan un mensaje del tipo "Oye taaal,
que ya hay una beta del NesQuickBASIC disponible!" o algo asín. Pues
anda que no queda nada pa eso...
En lugar de ello, os voy a contar un cuento. Es un poco tecnicoide asín
que espero no aburriros (manque nos hace falta descansar un poco de
mensajes tipo "no me ajunto con X porque es un puto"). Resulta que de
NQB tengo hecho el analizador léxico, un creador + evaluador de
evaluaciones postfijas, y un cacho de código que recorre la lista de
componentes léxicos y evalúa las declaraciones de constantes,
almacenándolas en una tabla de nombres al uso.
Benne. La organización de todo este maremagnum de datos es hoy al
cuadrado un poco caótica (nada que ver con el juoco del Saver). Estas son
las estructuras de idems que uso hasta ahora:
- El analizador léxico guarda los componentes léxicos que va generando
directamente en memoria, asín a saco (joer qué basto...)
- El creador de expresiones postfijas guarda los componentes como una
secuencia de datos de 16 bytes, sea cual sea la longitud real de cada
componente (pos anda que esta...)
- El evaluador de expresiones postfijas usa una pila de componentes
léxicos, que tuve que diseñar ex profeso (huy cuandol Mato lea este
palabro!), situada en TPA a lo bruto (y van tres...)
- Los nombres encontrados (por ahora de constantes y funciones
matemáticas) los guardo en un segmento de 16K, tal que asín: 8 bytes con
el puntero a cada nombre al principio del segmento y otra información
(dependiendo del tipo de nombre), y los nombre propiamente propios al
final. Y cuando se llena el segmento pues... se acabó lo que se daba.
"¡Obsoleto!" Falen falen, keske estoy en la primera fase provisional del
diseño del softguarro y bla, bla...
- Las constantes se guardan en otra tabla de otro segmento, tal que:
puntero al nombre asociado + valor de la constante
- Estaba a punto de ponerme a registrar las estructuras, y también iba a
necesitar otra tabla...
Total que en esas van y me dicen los sectarios mallorkineskos: oye
taaaal keskestamos maquetando el SD#15, envíanos articulámenes al uso! A
lo que yo: ah pos lo propio, voy a hacer un artículo de ensamblador
sobre memoria dinámica, que es lo que tenía pensado usar en el NQB
cuando llegue al tema del almacenamiento de variables. Decido y hacido,
en el SD#15 se explicará un mecanismo de memoria dinámica sobre memoria
mapeada bajo DOS 2 (menudo sangüich), con sus correspondientes rutinas.
Peeero cuando estaban ya terminadas y enviadas, me puse a mirarlas y
remirarlas y me dije: oxtia, trabajándolas un poco más se puede sacar
algo mu guapo de aquí, que además me sirva pa el compilador del NQB (y
no sólo pa manejar las variables de los programas ya compilados). Y
me puse a. El resultado: un sistema completo de gestión de listas
doblemente encadenadas (uséase, cada elemento apunta al anterior y al
siguiente) sobre memoria mapeada. Esto es más more que un simple idem de
memoria dinámica, ya que es posible buscar elementos concretos,
insertarlos en cualquier lugar de la lista, borrar cualquier elemento
sin que la lista se desmorone... y amore, resulta que las pilas y las
colas no son más que casos particulares de listas (PUSH = insertar
elemento al final, POP = extraer el ultimo elemento), ¡omola!
Conclusion city de la buena: ahora me toca revisar todo el código del
NQB que ya tenía hecho, y sustituir las N estructuras de datos por la
nueva y flamante lista, más bonita, más multiuso y sin limitaciones
(puede almacenar elementos de longitud 1 a 16100 bytes (má o meno), y un
número ilimitado de elementos, dependiendo sólo de la RAM de la máquina,
hasta 4 megas). Anda que no. Sólo me queda convencer a mis profes de que
me den aprobado general para disponer de más tiempo (cosa que sin duda
harán dado que es un asunto de importancia obsoleta).
Y eso, que si alguien quiere el código de la susodicha lista (va benne
para programas como editores de textos u otros igualmente al uso) pos
que lo pida y se lo envío o algo. Pa eso estamos (o no, pero decir eso
siempre queda bien).
Omoloiosolo!
*** XVIII MSX USERS MEETING IN BARCELONA: DECEMBER 9th 2000 ***
--------------------------------------------------------------------------------------------------------------------------
Konami Man - AKA Nestor Soriano (^^)v
http://www.konamiman.com - konamiman(_en_)konamiman(_punto_)com
ICQ#: 18281450
"Celebrating the imprudences must be unfailingly consequent with it said,
not for the fact in itself, but for some that another onomatopoeia to the use"
--------------------------------------------------------------------------------------------------------------------------