02 diciembre, 2010

"Electromancer", el SDK para Turbotron

Siguiendo una línea lógica, el proyecto TurboTron pasa por una serie de fases de diseño que dan soporte a otras más complejas y abstractas que facilitan el trabajo del programador. El lenguaje ensamblador, incluyendo la versión actualizada es una herramienta compleja con la que cuesta trabajar, por lo que he comenzado a crear un IDE para windows compatible con un lenguaje procedural de medio-alto nivel que se compila a código nativo TurboTronASM. Aun no está finalizado, pero todo va a la perfección, proximamente estará disponible.

El lenguaje se llama Mancer, no es tipado (por ahora) y abusa de las memorias caché del cpu más de lo que me gustaría (por ahora). Pero a favor suya tiene la simplicidad de su escritura y de sus estructuras. Matemáticamente es un lenguaje torpe, pero no más que el ensamblador. Las órdenes se pueden introducir de dos formas, en castellano a modo [decir(algo), usar(esto)] o en un lenguaje minimalista basado en el inglés [wrt(texto), cp(función)] ésta doble sintaxis existe principalmente para no cerrar el programa a los usuarios hispanohablantes únicamente. Un repaso rápido del lenguaje:

Reglas:

  1. Cada línea debe de contener al menos un parentesis, es decir los dos caracteres ( y ), éste último indica al compilador el paso a la siguiente órden.
  2. El bloque a ejecutar al iniciar el programa es "main" (sobre mini so ccp)
  3. Las operaciones con datos se hacen siempre de una en una, el contenido del paréntesis indicará la variable en la que queda el resultado [1 + 1(var_res)], siempre debe de haber un espacio antes y otro después de los operandos.
  4. Si se manda sumar un número con un texto por error el valor del texto será interpretado como 0.
  5. Si se manda una operación boleana a una variable que no es boleana (0 o 1) ésta valdrá 0 si está vacía o 1 si contiene cualquier cosa.
  6. Todo dato se lee de una variable o definición y siempre, tras ser transformado se guarda en otra indicada.
  7. Todas las variables son públicas. (si, tampoco me gusta mucho a mi... quizás en la próxima capa)
  8. Toda orden no reconocida será ignorada
operadores matemáticos: +, -, *, /, &(concatenación),=(declaración)
operadores boleanos: and or not


ejemplo de código mancer (adivina el número en mancer):


v(val_yo,0)
v(val_jugador,0)
v(interruptor,0)
v(val_min,1)
v(val_max,100)
llamar(iniciar_juego)
>(iniciar_juego)
rnd(val_min,val_max,val_yo)
posicion(intentar)
pedir(estoy pensando un numero de 1 a 100 intenta adivinarlo!,val_jugador)
llamar(jugada,val_jugador)
saltar(intentar)
<()
>(jugada)-(val_jugador)
val_jugador == val_yo(interruptor)
si(interruptor)
decir(ACERTASTE)
rnd(val_min,val_max,val_yo)
saltar(finjugar)
fin()
val_jugador > val_yo(interruptor)
si(interruptor)
decir(demasiado alto)
saltar(jugada_intentar)
fin()
decir(demasiado bajo )
posicion(jugada_intentar)
decir(INTENTA OTRA VEZ)
posicion(finjugar)
<()
Éste código (30 líneas) genera un programa escrito en TurboTronasm de 112 líneas, no es mucho, pero aún se puede optimizar. Antes de un mes estará todo disponible, intentaré también crear una zona en el hacklab virtual con información sobre el lenguaje y la herramienta.

editado: (La herramienta ya está disponible para la descarga.)  descargar
Publicar un comentario en la entrada