AtarimaniaAtarimania

Atari ST - 1991

Guerra Nuclear

Guerra Nuclear — screenshot 1
1 / 4
Genre
Programming - Language
Year
1991
Language
[unknown]
Publisher
[no publisher]
Controls
Mouse / Keyboard
Distributor
—
Resolution
Medium
Developer
[n/a]
ST Type
ST, STe / 0.5MB
Licensed from
—
Programmer(s)
Cea Avión, Jesús
Country
Spain
MIDI
—
Software
Spanish
Version
1.25
Box/Instructions
Spanish
Number of Disks
1 / Single Sided
License
PD / Freeware / Shareware
Dump
Download
Serial
—
Dump format
MSA
Protection
—

INSTRUCTIONS


                              Vigo, 9 de Agosto de 1.991    15:43

                          GUERRA NUCLEAR
                         ****************

     Guerra  nuclear  es un editor,  compilador e  intérprete  de 
MARS  (Memory Array Redcode Simulator).  Guerra nuclear  funciona 
perfectamente  en  cualquier Atari con 250 Kbytes  libres,  y  en 
cualquiera  de las tres resoluciones básicas.  El REDCODE  es  un 
lenguaje  de programación semejante al ensamblador,  pero  muchí-
simo más sencillo.  Consta de tan sólo 10 instrucciones y 3 modos 
de direccionamiento. Las instrucciones son:


          INSTRUCCIONES Y DIRECCIONAMIENTOS DISPONIBLES
         ***********************************************

     DAT inm   
          Esta instrucción no es ejecutable.  Sirve para reservar 
          memoria para datos, punteros, etc.

     MOV inm, mem / mem, mem
          Pone  el valor inm en la casilla especificada por  mem, 
          convirtiéndola en DAT,  o copia la casilla fuente en la 
          destino.

     ADD inm, mem / mem, mem
          Suma  el valor inm a la casilla mem,  o suma  el  valor 
          contenido en la casilla fuente en la celda destino.  En 
          ambos casos la casilla destino se convierte en DAT.

     JMP mem
          Salta a la dirección especificada.

     JMZ mem, mem
          Salta a la dirección destino si el valor almacenado  en 
          la  celda fuente es cero.  Si es distinto de  cero,  se 
          ignora la instrucción.

     JMN mem, mem
          Idem pero al revés. Salta si no es cero.

     DJN mem, mem
          Decrementa  el valor contenido en la  posición  fuente. 
          Si  queda  un  valor distinto de cero  se  salta  a  la 
          dirección  destino.   Si  queda  cero,  se  ignora.  La 
          casilla fuente se convierte en DAT.

     CMP mem, mem
          Compara  el  contenido TOTAL de dos celdas  de  memoria 
          (opcode incluido).  Si son iguales,  se ignora la  ins-
          trucción.  Si son distintos,  la instrucción  siguiente 
          NO es ejecutada (se salta).

     PRT mem
          Protege  una celda contra escritura.  Ese  escudo  sólo 
          dura hasta que se hace un intento de escritura a  dicha 
          celda  por  primera vez.  Luego esa casilla  se  vuelve 
          normal.

     SPL mem
          Sirve  para dividir la ejecución de un programa en  dos 
          partes independientes y que se van ejecutando  alterna-
          tivamente. Cada subparte puede dividirse más veces.

     Los modos de direccionamiento son los siguientes:

     INMEDIATO
          Se  indica directamente el valor que hay que asignar  a 
          la casilla destino.  Los valores válidos están compren-
          didos  entre -2048 y 2047 inclusive.  Se  reconoce  por 
          llevar delante un simbolo "#".

               MOV #0,3  Pone  un  cero en la casilla  situada  3 
                         celdas más allá del MOV.

     RELATIVO
          Las  direcciones son relativas a la instrucción que  se 
          está ejecutando actualmente de la forma:  La casilla  5 
          celdas  más allá o la casilla situada 70  celdas  antes 
          de la actual.  Los valores están restringidos igual que 
          en  el modo anterior.  No se pone ningún  símbolo  para 
          diferenciarlo.

               MOV 0,1  Copia  la  casilla  actual  en  la  celda 
                        siguiente.

     INDIRECTO
          El  valor contenido en la casilla especificada se  suma 
          a la dirección de dicha casilla.  El resultado final es 
          la verdadera dirección a la que se accede.  Es como  un 
          direccionamiento  relativo respecto a la casilla (y  no 
          respecto a la instrucción actual) con el offset especi-
          ficado en dicha casilla.  Se reconoce por que el  pará-
          metro se pone entre paréntesis.  Los valores permitidos 
          son los mismos de los casos anteriores.

               MOV #0,(1) Pone un cero 20 casillas antes del DAT
               DAT #-20

     Para  simplificar la edición de programas pueden  utilizarse 
etiquetas.  Las  etiquetas consisten en una letra seguida  de  un 
máximo de 7 cifras o letras.  Una etiqueta debe terminar con  dos 
puntos.  Para ver como se usan las etiquetas cargue alguno de los 
programas de demostración.  También es posible poner comentarios. 
Para  ello escriba su comentario (de un máximo de 32  caracteres) 
PRECEDIDO de un punto y coma.


            LA LINEA DE MENUS Y LAS TECLAS DE MANEJO
           ******************************************

     El menú superior del editor puede ser accedido con el  ratón 
o con las teclas de función (con y sin shift).  Si selecciona una 
opción  todavía  no  definida  no  pasará  nada.   Las   opciones 
presentes en esta versión son:

     SAVE
          Salva el programa actual en formato comprimido o en  el 
          normal.  Sólo  funciona  cuando existe  algún  programa 
          para salvar.  Si no es así, no hace nada. Los programas 
          deberían tener la extensión ".WAR".

     LOAD
          Carga un programa en el banco actual.

     QUIT
          Regresa al GEM. Pide confirmación.

     NEW
          Borra el programa actual. Pide confirmación.

     INFO
          Muestra información sobre el programa.

     INS / OVER
          Para  escoger  entre modo inserción y  modo  de  sobre-
          escritura.

     SWAP
          El editor consta de dos bancos,  uno para cada  conten-
          diente.  Con esta opción se puede escoger el banco  que 
          queremos editar en cada momento.

     COMP
          Compila  y  ejecuta los programas  de  cada  banco.  Al 
          final  muestra  los resultados  de  la  contienda.  Ver 
          siguiente.  Para detener prematuramente la ejecución de 
          los combates basta con mantener pulsado un botón  cual-
          quiera del ratón el tiempo suficiente.

     PARAM
          Sirve  para  modificar  los parámetros  a  la  hora  de 
          ejecutar los programas.

     PRG1 / PRG2
          Es  similar a SWAP pero no pide  confirmación.  Simple-
          mente  se pasa al otro banco  directamente.  Indica  el 
          banco en el que estamos trabajando actualmente.

     Adicionalmente,  la zona debajo de PRG1/PRG2 permite escoger 
el  nombre  del  programa actual.  Las opciones de  Load  y  Save 
también afectan a esta zona.

     Las teclas disponibles para manejar el editor son:

     CURSOR DERECHA
          Mueve el cursor hacia la derecha hasta llegar al  final 
          de la linea actual. Si está en el final no hace nada.

     CURSOR IZQUIERDA
          Mueve  el  cursor  a  la  izquierda  hasta  llegar   al 
          comienzo  de la linea actual.  Si ya  estaba,  no  hace 
          nada.

     CURSOR ARRIBA
          Mueve  el cursor una fila hacia arriba.  Si  el  cursor 
          está en la linea superior y todavía no nos  encontramos 
          al principio del fichero la pantalla hace un scroll  de 
          una linea hacia abajo.

     CURSOR ABAJO
          Se  mueve el cursor una linea hacia abajo.  Se  permite 
          poner  el cursor en la primera linea vacia después  del 
          fin del fichero actual en el caso de que todavía no  se 
          haya  alcanzado el máximo de su longitud (255  lineas). 
          Si  el cursor se encontraba en la linea inferior de  la 
          pantalla ésta hará scroll hacia arriba.

     INSERT
          En  el  caso de que todavía no se hayan  alcanzado  las 
          255   lineas  de  longitud  máxima  permitida  a   cada 
          fichero,  se insertará una nueva linea en blanco en  la 
          posición  actual  del cursor.  No  se  permiten  lineas 
          vacias,  por  lo  que si abandonamos dicha  linea  ésta 
          será  eliminada  por  el editor.  Lo  mismo  ocurre  si 
          borramos completamente una linea introducida con  ante-
          rioridad.             

     RETURN / ENTER
          Produce la validación de la linea actual,  al igual que 
          la pulsación de los cursores verticales,  el cambio  de 
          linea del cursor mediante el uso del ratón y el  acceso 
          a  la barra de menús.  Adicionalmente,  se desplaza  el 
          cursor  una linea hacia abajo (igual que con la  flecha 
          abajo) y se inserta una nueva linea en banco.

     HOME
          La  pulsación  de la tecla HOME produce que  el  cursor 
          pase a la casilla Home (esquina superior izquierda).

     SHIFT + HOME
          Similar  a la pulsación de la tecla HOME,  pero  además 
          se  pasa  a editar la primera linea  del  programa  (el 
          programa también se pasa a la posición Home).

     UNDO
          Esta  función es muy útil cuando se  están  modificando 
          lineas ya existentes,  al poder trabajar con una  copia 
          de  seguridad.  Cuando  se pulsa UNDO se  restituye  la 
          linea original existente antes de hacer ninguna modifi-
          cación.

     El  cursor puede moverse clickando el ratón en  la  posición 
deseada.  Los errores de edición son detectados cuando se realiza 
una  validación de la linea.  Dichas validaciones se provocan  al 
intentar  cambiar el cursor de la linea actual o al acceder a  la 
barra  de menús (ver explicación de Return/Enter).  Si ocurre  un 
error  de  edición  NO se permite cambiar el cursor  de  linea  o 
acceder a la opción solicitada hasta que éste sea corregido.


                      LOS MENSAJES DE ERROR
                     ***********************

     Seguidamemte se muestran unas explicaciones de los  posibles 
errores  que  pueden aparecer durante el  uso  del  programa.  En 
general,  la  información que aparece en pantalla es lo  bastante 
orientativa como para no necesitar leer esta sección:

     COMENTARIO DEMASIADO LARGO
          El comentario mide más de 32 caracteres.

     ETIQUETA INVALIDA
          La etiqueta especificada no tiene ningún carácter.

     ETIQUETA DEMASIADO LARGA
          La etiqueta supera los 8 caracteres.

     CARACTERES INVALIDOS EN LA ETIQUETA
          Las  etiquetas  deben  empezar con una  letra  y  deben 
          seguirle cifras y/o letras.

     OPCODE INEXISTENTE
          Se  especificó  una  instrucción  que  no  existe.   Es 
          posible  que  no  se halla  señalado  adecuadamente  la 
          etiqueta con los dos puntos al final.
     
     NO SE ESPECIFICA EL DIRECCIONAMIENTO
          Toda instrucción debe ir seguida de,  al menos, un modo 
          de direccionamiento.

     APARECE BASURA
          Aparecen caracteres que no corresponden a ningún direc-
          cionamiento válido.  Puede ser debido a que no se  puso 
          el punto y coma al principio del comentario.  Quizás se 
          utiliza una etiqueta inválida en el direccionamiento.

     DIRECCIONAMIENTO NO VALIDO
          El  direccionamiento especificado no se puede  utilizar 
          de esa manera con dicha instrucción.

     VALOR FUERA DE RANGO
          Todos  los  números introducidos deben  estar  compren-
          didos entre -2048 y 2047.

     FALTA PARENTESIS
          Se  utilizó direccionamiento indirecto pero no se  puso 
          el paréntesis all final.

     ETIQUETA DEMASIADO GRANDE
          Se  especificó una etiqueta en el direccionamiento  que 
          rebasa los ocho caracteres.

     ETIQUETA YA DEFINIDA
          Una etiqueta se definió dos veces.

     REFERENCIA A ETIQUETA INEXISTENTE
          En  un direccionamiento se hace referencia a  una  eti-
          queta no definida.

     PARA COMPILAR SE PRECISAN DOS PROGRAMAS
          Se requieren dos programas, uno en cada banco.


                  CARACTERISTICAS DEL PROGRAMA
                 ******************************

     He  aquí una serie de características y de  limitaciones  de 
mi versión particular de MARS:

     1.   Los   programas  escritos  pueden  grabarse  tanto   en 
          formato estándar como comprimidos.

     2.   Se  pueden  cargar listados NO escritos con  mi  propio 
          editor  siempre  y  cuando se  respete  el  formato  de 
          almacenamiento  especificado  en la  revista  DATA  BUS 
          (ver más abajo).

     3.   Pueden editarse dos programas  simultaneamente,  ejecu-
          tándose como rivales.

     4.   Cada  programa  tiene  un nombre y un  path  de  acceso 
          propio  que son utilizados convenientemente en las  op-
          ciones LOAD y SAVE (y Rename).

     5.   Pueden  editarse  programas  de  hasta  255  lineas  de 
          largo.

     6.   Pueden  utilizarse etiquetas de hasta 8  caracteres  de 
          largo, y comentarios de un máximo de 32 caracteres.

     7.   El  editor  encolumna perfectamente las  lineas  intro-
          ducidas  estén  como  estén,   siempre  y  cuando  sean 
          válidas.

     8.   La  compilación de los dos contendientes  es  practica-
          mente instantanea.  Incluso el tiempo de compilación de 
          dos    programas   de   255   lineas   es    totalmente 
          inapreciable.

     9.   Se pueden modificar los parámetros de ejecución de  los 
          programas,   tales  como  número  de  instrucciones   a 
          ejecutar  antes de un empate o el número  de  enfrenta-
          mientos  a  realizar antes de  mostrar  los  resultados 
          finales.

     10.  Se  trabaja con una matriz de juego de  8192  casillas, 
          pero  cada programa sólo puede acceder  simultaneamente 
          a 4096.  De esta forma he intentado potenciar la  movi-
          lidad de los programas.

     11.  Se  muestra  una  precisa información  en  tiempo  real 
          sobre  el  estado de la matriz de juego  en  todas  las 
          resoluciones.

     12.  En  cualquier momento se puede abortar la ejecución  de 
          un  combate  pulsando UN botón (cualquiera)  del  ratón 
          hasta  que aparecen los  resultados.  ¡¡¡DICHOS  RESUL-
          TADOS NO SERAN VALIDOS!!!. ¡¡¡¡OJO con esto!!!!.


                       ERRORES DETECTADOS
                      ********************

     He detectado el siguiente error:

     1.   Si a una linea con una instrucción se le pone un  punto 
          y  coma  delante para  convertirla  en  comentario,  se 
          borra el direccionamiento que seguía al comando.


     Esto  es  todo por el momento.  Espero que  le  interese  el 
tema.  Para  intercambiar  información o  ideas,  recibir  nuevas 
versiones o enviarme una pequeña donación (500 Pts.  serán  sufi-
cientes), escriba a:

          Jesús Cea Avión
          Rúa Caldas de Reis, N12-6Izq
          36209  VIGO

     También  puede  disponer de más información  solicitando  la 
revista DATA BUS a la dirección indicada arriba.  Su precio es de 
300 Pts., gastos de envío incluidos.

                              * * *

                             Vigo, 11 de Agosto de 1.991    11:02

     Además del error ya comentado, he detectado el siguiente:

     2.   Si el programa se carga en baja,  automaticamente  pasa 
          a  media  (es lo que DEBE  ocurrir).  Sin  embargo,  el 
          ratón parece no "enterarse",  quedando su manejo  limi-
          tado  a la mitad izquierda de la pantalla.  Este  fallo 
          es idéntico al del editor del GFA-BASIC 2.0.

                              * * *

                             Vigo, 12 de Agosto de 1.991    23:14
     
     Se han encontrado otros errores:

     3.   La  orden  SPL  no  funciona  correctamente  cuando  se 
          superan los 16383 programas simultaneos,  produciéndose 
          una  "masacre"  sobre  el  programa.   Este  error   lo 
          encontró Alfonso Costas.

     4.   Cuando  hay  que  introducir un  número  (campos  inme-
          diatos,  por ejemplo),  se pueden meter todos los ceros 
          no  significativos  que se quisieran  lo  que  ocasiona 
          errores  de formateo,  destrucción del  comentario  que 
          sigue...

     5.   Si  ocurre un error de disco el dibujo del ratón no  es 
          el correcto.

                              * * *

                               Vigo, 13 de Agosto de 1.991  15:43

                       GUERRA NUCLEAR v1.2
                      *********************

     Guerra  nuclear v1.2 se programó para corregir  los  errores 
anteriores añadiéndose,  además,  nuevas mejoras al programa. Por 
supuesto,  es totalmente compatible con los ficheros  almacenados 
con la versión 1.0. Las mejoras añadidas son:

     1.   Cuando  se  ejecuta el programa se usa por  defecto  el 
          directorio  actual para las operaciones de Load y  Save 
          ya desde el principio.  En la versión 1.0 se  utilizaba 
          el  directorio A:\*.WAR hasta que se  seleccionara  uno 
          nuevo.

     2.   Cuando se aborta una partida con los botones del  ratón 
          se  toma  como un empate y no como en la  versión  1.0, 
          donde  el ganador era el que no estuviera  ejecutándose 
          en ese instante.

     3.   Se añade automaticamente la extensión .WAR en el  file-
          select.  En  la  versión  anterior  había  que  hacerlo 
          manualmente.

     4.   Se  puede  desconectar la impresión  de  las  modifica-
          ciones  del tablero durante los combates  mediante  una 
          nueva caja de alerta añadida en la opción PARAM.

     5.   La opción DATOS de la versión 1.0 ha sido  borrada.  En 
          dicha  versión aunque aparecía la opción  en  pantalla, 
          no  hacía  absolutamente nada.  En la versión  1.2  esa 
          opción ya no aparece.

     6.   Los  ceros no significativos que podían  dar  problemas 
          en  la  versión  1.0,  son  eliminados  en  esta  nueva 
          versión depurada del programa.

                              * * *
                    
                            Vigo, 19 de Octubre de 1.991    15:04

                      GUERRA NUCLEAR v1.24
                     **********************

     Se  han  corregido un par de errores poco importantes  y  se 
han añadido algunas facilidades adicionales al editor:

     1.   Al  pasar de la versión 1.0 a la versión 1.2 cometí  un 
          error  que ocasionaba que los errores  que  aparecieran 
          en  el segundo parámetro de un comando (como  la  falta 
          del   paréntesis   final,   por  ejemplo)   no   fueran 
          mostrados,  aunque sí eran detectados. En esta versión, 
          la comprobación de errores parece funcionar 100%.

     2.   Si  ocurría un error de compilación en el programa  que 
          no  estaba siendo editado en ese  momento,  MARS  hacía 
          automaticamente el cambio de banco,  pero el  indicador 
          PRGx y el nombre del fichero no eran  actualizados.  En 
          esta versión sí.

     3.   Cuando ocurre un error al compilar,  ahora el cursor se 
          desplaza   a   la   PRIMERA   columna   de   la   linea 
          problemática.

     4.   En las anteriores versiones,  el comando DJN era  indi-
          cado como DJZ.  Ahora, DJZ no es reconocido dado que el 
          DJN es el único comando correcto.

     5.   En  las  anteriores versiones,  si había  un  error  de 
          compilación  había que pulsar dos veces una tecla  para 
          poder corregirlo.  En la versión 1.24 basta pulsar  una 
          tecla una sóla vez, lo que es mucho más cómodo.

     6.   Las  teclas  no  imprimibles  tipo  TAB,   ESC,   BELL, 
          CONTROL+Tecla etc.,  ya no son impresas,  como  ocurría 
          en la versión 1.0 y 1.2.  En la versión 1.24 las teclas 
          no imprimibles son ignoradas.

     7.   Se  han  añadido las siguientes  secuencias  de  teclas 
          para  facilitar el manejo del editor y la  codificación 
          de los programas:
     
          1. SHIFT + Cursor izquierda:

               Mueve el cursor al principio de la linea.

          2. SHIFT + Cursor derecha:

               Mueve el cursor al final de la linea.

          3. SHIFT + Cursor arriba:

               Retrocede una pantalla.

          4. SHIFT + Cursor abajo:

               Avanza una pantalla.

          5. SHIFT + Delete:

               Borra la linea actual completa.  Sin embargo, ésta 
               es  almacenada en el buffer de UNDO,  por  lo  que 
               podemos  reclamarla nuevamente si utilizamos  esta 
               opción por error.

     8.   La  opción  de  LOAD  no  funcionaba  correctamente  al 
          cargar  programas de 255 linea exactas,  provocando  un 
          error de formato de fichero no válido.  Este error sólo 
          aparecía  cuando  había exactamente 255  líneas  en  el 
          fichero.  En  esta  versión 1.24 dicho BUG ya  ha  sido 
          corregido.

     Bien,  ésto es todo por el momento. En proximas versiones se 
añadirán más facilidades al editor,  además de realizar la impre-
sión en pantalla de forma notablemente más rápida.  Las  personas 
interesadas  en  conseguir  más información  y  nuevas  versiones 
pueden  escribirme  a la dirección  indicada  más  arriba.  Hasta 
pronto, y SUERTE !!!.

                            Vigo, 19 de Octubre de 1.991    15:40

                              * * *

                           Vigo, 2 de Noviembre de 1.991    13:17

                      GUERRA NUCLEAR v1.25
                     **********************

     Se ha corregido un error que aparece cuando se utilizan  los 
comandos JMZ y JMN,  cuando la casilla que se comprueba no es  un 
DAT.  En dicho caso,  el resultado era SIEMPRE distinto de  cero, 
aunque  no fuera así.  Ahora no importa la instrucción que  posea 
dicha casilla, funcionando correctamente.

     Adicionalmente se ha corregido otro error que provocaba  que 
de  vez en cuando un programa no pierda "cuando debería  perder". 
Se  debía a que entre combate y combate no se borraba el área  de 
juego  entera,  sino  que  los últimos  768  bytes  quedaban  sin 
inicializar.   Ello   ocasionaba  algunos   efectos   secundarios 
imprevistos, en especial con el comando PRT.

                              * * *