Atari ST - 1991
Guerra Nuclear

- 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

- 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.
* * *
