Translate

miércoles, 10 de mayo de 2017

BASIC, Cómo eran estos basic en el pasado

Hablando un poco acerca de cómo procesaban los basic en el pasado, hablaré un poco acerca del basic de microsoft de la tandy color computer 1, y 2 la 3 la veremos después.

Eran BASIC interpretados, con numeros de linea y muy sencillos, pero es bueno conocer cómo se hacían las cosas antes y su porqué.

En la color computer 1 y 2 se tenían 3, BASIC, EXT-BASIC y DISK BASIC, el equipo podía venir con solo BASIC (muy basico) en ROM (&A000-&xBFFF), y se le podía colocar un ROM de EXTENDED BASIC (&8000 - &9FFFF), los cartuchos y el DISK BASIC compartían las direcciones (&C000-&DFFF) y no se si podia llegar a &FF00 (luego lo reviso)

Esta es la pantalla inicial en el emulador VCC para coco3 que por ahora es igual que las de coco 1 y 2 con extended basic



En el mapa de memoria de la CoCo solo se pueden accesar 65536 posiciones (sin banqueos ni otras ayudas), y si el BASIC ocupa desde &8000 en adelante, además hay que quitar las zonas para uso del basic y las memorias para video y buffers asi que quedaban 22762 bytes para trabajar, (hay trucos para aumentar esto, quitando memoria de video gráfica o parando el basic a RAM)

La manera de procesar los comandos era interpretada una vez presionamos ENTER al final de la línea y o se podía ejecutar inmediatamente o si comenzaba por un número se colocaba como programa para luego ejecutar todo como un programa completo.

Al escribir una línea se analiza su contenido , se chequea su sintaxis y si todo está bien se tokenniza, que significa, convertir los comandos y funciones en una versión reducida de 1 o 2 bytes para que ocupen menos, el número de línea y otros números enteros se convierten en enteros de 2 bytes y se escribe en la zona de memoria donde comienzan los FUENTES de su programa, estas líneas se ordenan ascendentemente y llevan en su cabecera un apuntador a donde comienza la siguiente linea ya que para buscar una línea en particular las recorre todas buscando el integer que las identifica, algo lento.

Si queremos compilar, uno de de estos basics, aparte de incluir las funciones y comandos una sola vez y reusarlos, debemos tratar de hacer lo más posible en INTEGER, poner las llamadas a líneas, directamente, y tratar de evaluar lo más posible antes de la ejecución, generalmente se obtiene un aumento de un 40% de velocidad al compilar.


--------------------------------------------------------------------------------------------------------------------------
He estado pensando en mejorar este basic para que tenga lo siguiente


  • Compatible con el actual
  • Que utilice toda la RAM (la coco3 comienza en 128kb) (El basic puede estar en disco)
  • Números de línea opcionales
  • Estructurado
  • Sub y Funciones de múltiples líneas estilo QB
  • Parámetros pasados por referencia y valor, con parámetros opcionales y dato predeterminado, con cantidad de parámetros variable,  estilo C++,
  • Variables internas de SUBS y FUNCIONES, con Local , Shared y Globales.
  • Tipos de variables, BYTE, INTEGER, LONG o WORD, SINGLE, DOUBLE, DATE/TIME, STRING de largo fijo y variable, de 65000 letras
  • Estructuras como C, tal vez con uniones
  • ASSEMBLER en líneas
  • Compile "Nombre" directo al disco
  • Funciones adicionales para poder  hacer juegos, como sprites computarizados (por software claro, pero eficiente) (Manejo de musica y efectos de sonido, MOD o algo asi) (Detección de colisiones), formatos gráficos.
  • Podemos hacer un editor para Windows, para trabajar mas comodo.
  • Sort
  • Variables de nombres largos (tal vez), actualmente solo 2 letras son significativas
  • Select case
  • Break OFF (Esto acelera la ejecución), ERROR OFF (esto acelera el basic all no chequear por errores, solamente cuando esta comprobado que ya no hay errores, No se si sera posible)
  • CHAIN para usar las variables con varios programas y hacerlos modulares, tal vez con librerías
Con todo esto, es posible que se pudieran hacer juegos directamente desde basic.





No hay comentarios:

Publicar un comentario