Posts etiquetados como ‘basic’

Tal vez a TI te interese

Te hablo a Ti, que creciste en los ‘80 y tuviste la oportunidad de tener cerca una home computer.

Te hablo a Ti, que también en los ‘80 pudiste aprender a programar en Basic leyendo revistas o porque lo dictaban en tu escuela.

Te hablo a Ti, profesional de sistemas, que añoras la sencillez de los resultados de esos intérpretes Basic que contrastan de manera muy notoria ante los modernos y muchas veces monstruosos e inmantenibles desarrollos web basados en Java, Struts y cuanto patrón de diseño exista.

Te hablo a Ti, que fuiste y eres de esa raza particular de usuario de TI/99-4A, acostumbrada a trabajar y disfrutar de esa sutil tortura causada por un doblemente interpretado Basic; a Ti dedico este post y esta rareza corporizada en una aplicación de scripting que te permitirá continuar trabajando con el preciado TI-Basic.

Pero cuidado. Aún se encuentra en etapa de desarrollo. No están implementadas funciones muy deseables como las de I/O. Sin embargo, ya sea desde Linux, Windows o MacOS, es posible escribir programas con cualquier editor de textos e interpretarlos con la aplicación.

Para Ti, que estás interesado en experimentar fuertes emociones, te dejo el link del TI99Basic: http://ti99basic.sourceforge.net/

No hay FOR sin NEXT

Había visto un screenshot de un cielo poco nuboso con algunos cazas japoneses al acecho, que debían ser destruidos con fuego de batería antiaérea.
Esa imagen, aparecida en la contratapa de una Microhobby a finales de 1986, correspondía a un juego de ZX Spectrum ubicado durante la segunda guerra mundial sobre el océano Pacífico y del cuál sinceramente, no recuerdo su nombre. Sin embargo fue uno de mis puntos de inflexión, porque pasé de ser un simple usuario cargador de programas a un interesado en la programación.

“Quiero hacer algo como esto”, fue lo que me dije. Pero tenía dos desventajas. Primero, contaba con una CZ-1000 con expansión de memoria de 16kb y, segundo, no tenía conocimientos de programación de juegos. Ni de programación en ningún lenguaje.
Así que con 14 años empecé a conseguir y leer las K64 y Programación Popular que pude. Especialmente éstas últimas, porque eran más didácticas y además traían un curso de lenguaje Basic. Claro, como siempre fui muy consistente, resté importancia a este curso.

Después de un tiempo considerable de lectura y análisis de listados de juegos, aprendí que el assembler era cosa de mandinga y que Basic tenía sus limitaciones pero era más entendible. Es más: hasta había aprendido algunas cosas del Sinclair Basic como la estructura de decisión IF – THEN, que debía utilizar LET para operar con variables alfanuméricas, numéricas y efectuar algunas operaciones matemáticas. Y también que con GOTO podía dar saltos mortales dentro del código.

Por otro lado, aprendí que con PLOT x, y podía encender una mancha en una posición de la pantalla, mientras que UNPLOT X,Y la borraba. Si quería mover esa mancha con el teclado, debía leer la función INKEY$ para detectar la tecla presionada y actuar en consecuencia. Para quienes no conocen Sinclair Basic, la implementación del lenguaje estaba bastante ligada al sistema de input de estas máquinas inglesas. Por ejemplo, en una CZ-1000 o en una Spectrum, cuando el cursor tenía la letra K, al presionar la tecla G, aparecía la instrucción GOTO.

Con ese bagaje de conocimiento ya quería empezar a programar el juego. Ni pensaba que pudiese existir alguna etapa previa de análisis y diseño.
Pero un momento…en ese screenshot habían muchas nubes. Entonces, cómo haría para poner todas las necesarias? Tendría que repetir grupos de instrucciones PLOT x,y, tantas veces como nubes quisiera poner? Ya veía que esto se pondría tedioso. Y además intuía que estaba omitiendo algo.

De pronto se hizo la luz: olvidé una de las columnas vertebrales de la programación imperativa: las estructuras de repetición. Tendría que estudiar el bucle FOR – NEXT.

Volví a los estudios autodidactas. Pero pasó el tiempo y no lograba asimilarlo. No podía entender cómo funcionaba. Me superaba. Aprender en japonés, era más fácil que saber que hacía esto:

10 FOR X = 1 TO 10
20 PRINT X
30 NEXT X

Cómo podía hacer que una porción de código se repitiera? Se hizo la luz de nuevo. Recordé a la estructura IF-THEN y la instrucción GOTO, maldita por Edsger Djisktra y un tanto justificada por Donald Knuth. Entonces, lo que me parecía más difícil que japonés, se transformó en:

10 LET X = 1
15 IF X > 10 THEN GOTO 50
20 PRINT X
30 LET X = X + 1
40 GOTO 10
50 …

Maravilloso. Seguía sin saber cómo funcionaba FOR-NEXT, pero ahora tenía una forma de controlar las repeticiones de código que se parecía al chino mandarín. Pero a mi chino mandarín. El código es definitivamente más complejo que el equivalente con FOR-NEXT. Pero así entendía. Y de hecho, es también equivalente al ciclo de programación estructurada WHILE.

Y las nubes aparecieron. Pero las ganas de continuar con el desarrollo se hicieron humo.

Al año siguiente tenía quince años y una Commodore 64, seguía sin entender la estructura FOR-NEXT y me las arreglaba a mi manera. Por casualidad, o por suerte, en la escuela secundaria ya se había definido que el título del egresado sería de técnico en computación. Así, en la ENET Nro. 3 de San Martín (hoy EET Nro 5 Galileo Galilei), durante las clases de matemáticas, la por entonces temible y luego querida Rosa Ana Ferragina enseñaba lenguaje Basic. Fue ella quien muy didácticamente y con la claridad que caracterizaba sus clases, hizo que el FOR-NEXT fuera muy rápidamente digerido por mi rebuscada red de conexiones neuronales.


El desarrollo del juego para CZ-1000 quedó definitivamente abandonado, pero con todo lo aprendido, más detalles y trucos técnicos de C64, pude armar lo que considero mi primer sistema: un programa Basic de utilidades para administración de diskettes.

Años después en la misma escuela aprendí a programar en dBase, Pascal y C. Estos últimos dos lenguajes fueron enseñados magistralmente por el polifacético profesor José Luis Morchio. Pascal se convirtió en mi caballito de batalla por muchísimo tiempo, incluso en los primero años de la facultad. Pero todo esto formará parte de otras anécdotas.

Bah…Atari?

El Basic fue el clásico lenguaje de programación en los ‘80. Había sido incorporado en el firmware en prácticamente todas las home computers de 8 bits.

Pero no desapareció ni con estas máquinas ni con las de 16 bits. En cambio, a principios de los ‘90 se modernizó e ingresó al mercado de los desarrollos “serios”, de la mano del Microsoft Visual Basic -aún vigente- . Pero aún permanece su llama, a través de la plataforma .NET y su nueva versión del VB.

Sencillo, noble, versátil, aunque con limitaciones. Es el Renault 12 de la programación: nunca te va a dejar de a pié. Así es el lenguaje Basic. Hay versiones para programar microcontroladores como los PIC de la firma Microchip y para programar juegos de Atari 2600 , como propone Fred Quimby con su compilador


batari Basic . Dicho compilador es en realidad una forma de homenaje a la legendaria consola de los ‘80, que invita – a quienes se atreven, – a vivir la experiencia de un desarrollo primitivo sobre 128 bytes de Ram y una longitud de programa en Rom de 4 Kbytes. Sin las complicaciones de luchar con el assembler del microprocesador MOS 6507 , la herramienta generará un código binario que podrá grabarse en una EPROM para construir un cartridge de consola o para ejecutar con un emulador como Stella .

Este compilador freeware carece de una IDE nativa, sin embargo externamente cuenta con la inteface Visual bB que facilita el proceso de edición y compilación de programas. En cuanto a manuales y tutoriales, el sitio de batari cuenta con versiones en linea y para descargar de un manual de usuario.

A pesar de tener algún tiempito de existencia, descubrí a Batari hace poco y por accidente. Ahora que captó mi atención, continuaré leyendo el tutorial e investigando cómo construir un cartridge para la abuelita de las consolas de juegos


IMPORTANTE. Los contenidos y/o comentarios vertidos en este servicio son exclusiva responsabilidad de sus autores así como las consecuencias legales derivadas de su publicación. Los mismos no reflejan las opiniones y/o línea editorial de Blogs de la Gente, quien eliminará los contenidos y/o comentarios que violen sus Términos y condiciones. Denunciar contenido.
AgenciaBlog