ORDENACION para WANG-3300

dancresp
Mensajes: 4993
Registrado: 13 Nov 2010 02:08
Agradecido : 14 veces
Agradecimiento recibido: 83 veces

ORDENACION para WANG-3300

Mensajepor dancresp » 23 Feb 2016 13:06

Imagen

EL PROGRAMA
La mecánica de este juego es muy simple:
Se muestra un número de 9 cifras distintas y debemos ordenarlo mediante la rotación de sus cifras hasta que queden ordenadas de menor a mayor valor.

Hay 4 tipos de movimientos que actúan de la siguiente forma:


Al ejecutar el programa se debe introducir un número entre 1 y 5, que se usa para desordenar las cifras.

A continuación se muestran las 9 cifras y empieza el juego con la introducción de los movimientos.

Descargar emulador y el juego: (Simplemente hay que descomprimir el contenido en una carpeta)
Wang-3300_Ordenacion.rar
(407.4 KiB) Descargado 34 veces


COMO FUNCIONA
El programa ocupa 44 líneas de código y se divide en 4 bloques:

1º - Inicializar y desordenar las cifras.
2º - Introducir el movimiento a realizar.
3º - Rotar las cifras según el movimiento.
4º - Mostrar las 9 cifras.



LISTADO DEL PROGRAMA

Código: Seleccionar todo

    * Definir e inicializar la matriz
  5 RANDOM
 10 DIM N(9)

 20 FOR F=1 TO 9
 30 N(F)=F
 40 NEXT F

    * Introducir el nivel
 50 PRINT "LEVEL (1/5) ";
 60 INPUT L
 70 IF L<1 THEN 50
 80 IF L>5 THEN 50

    * Desordenar las 9 cifras
 90 FOR F=1 TO L*2+1
100 LET M=INT(RND(1)*4)+1
110 GOSUB 300
120 NEXT F

    * Inicializar el número de movimientos
130 P=0

    * Mostrar las 9 cifras
140 GOSUB 400

    * Si las 9 cifras están ordenadas finaliza el juego
150 IF E=1 THEN 180
160 PRINT "COMPLETED IN";P;"MOVES"
170 STOP

    * Introducir el movimiento
180 PRINT "MOVE (1/4) ";
190 INPUT M
200 IF M<1 THEN 150
210 IF M>4 THEN 150
220 GOSUB 300
230 LET P=P+1
240 GOTO 140

    * Subrutina que rota los números
300 IF M<3 THEN 320
310 M=M+2
320 L=N(M+3)
330 N(M+3)=N(M)
340 N(M)=L
350 L=N(M+2)
360 N(M+2)=N(M+1)
370 N(M+1)=L
380 RETURN

    * Subrutina que muestra los 9 números
400 E=0
410 PRINT
420 FOR F=1 TO 9
430 PRINT N(F);
440 IF F=N(F) THEN 460
450 E=1
460 NEXT F
470 PRINT
480 PRINT
490 RETURN


Nota:
Al teclear el programa en el emulador hay que obviar los comentarios que he puesto en el listado.


APUNTES FINALES
Gracias al emulador descubrí este sistema, y la verdad es que me encantó. Por su forma de funcionar me recuerda a los sistemas ALTAIR 8800 o IMSAI 8080, pero con la diferencia de que éste sistema es una década anterior.

Las ganas de conocerlo mejor me llevó a redactar un post donde analicé muchas de sus características y detalles. Una de estas características es que permite cargar un intérprete BASIC y desde terminales tipo ASR-33 se podía programar en un entorno multiusuario y multitarea.

Pues nada, que como lleva un BASIC toca desarrollar un juego, ni que sea simple.

Anteriormente ya programé versiones de este juego en los sistemas PSION ORGANISER, CASIO FX-6300G y en MATH-MATIC.


Programando en el WANG-3300
El BASIC del WANG corresponde a la segunda versión del auténtico Dartmouth BASIC, pero con una serie de comandos que lo potencian bastante, sobretodo en el tratamiento de matrices.

El programa se debe introducir con calma... ya que el terminal no admite más de 10 ó 12 pulsaciones por segundo.

Y como trabajamos en un terminal tipo máquina de escribir, si cometemos un error al introducir el programa hay que pulsar la tecla de retroceso, en este caso "Shift + _", y aunque el cursor no retrocede el sistema si que guarda la rectificación.

Al pulsar "Return" el intérprete analiza la línea y si hay un error nos indica donde. En este caso solo nos queda la opción de volver a teclear la línea completa ya que no se pueden editar.

Para grabar el programa debemos activar la cinta de papel desde la opción "Display" del menú de la ventana del Terminal 1. Hay que indicar un nombre de fichero desde la sección "Punch" y pulsar "Enable". Con el comando SAVE empezaremos a volcar el programa a la cinta de papel. El proceso puede llevar varios minutos. Posteriormente lo podremos recuperar con LOAD desde la sección "Reader".


COMO JUGAR AL JUEGO
Para poder jugar al juego primero hay que inicializar el sistema, cargar el BASIC y cargar el programa.

Veamos como se hace:

Cargar el BASIC
Al arrancar el emulador este se queda sin hacer nada. Para ello hay que cargar un programa en la dirección de memoria correspondiente. El emulador facilita este proceso en parte, y lo hace más rápido, pero se debe usar el panel frontal.

Para cargar el BASIC hay que seguir los siguientes pasos:
1) En el menú “File”, pulsar en “Load Hex...” y seleccionar el fichero “BASIC_28K.hex”
2) Pulsar el botón “Enter”.
3) Pulsar los botones “40” y “2”.
4) Pulsar el botón “B” para cargar en el par [B,C] la dirección de inicio de carga “4200b”.
5) Pulsar el botón “Run”.
6) Pulsar el botón “Go”.

Con esta secuencia aparecerá en el terminal el mensaje de que el BASIC está listo para ser usado.

ReOrder_3300_Basic.gif


En el emulador este proceso dura unos pocos segundo, pero en el sistema original se tardaba unos 40 minutos.

Cargar el juego
El juego se ha grabado en formato de cinta de papel. Es lento pero seguro.

Para cargar el juego hay que seguir los siguientes pasos:
1) En el menú “Display” de la ventana del Terminal 1, seleccionar “Show Papertape”.
2) En la sección “Reader” pulsar el botón “Browse” y seleccionar el fichero “Ordenacion_Wang-3300.bin”.
3) En el terminal escribir “LOAD” y pulsar “Return”. El contador empezará a avanzar.
4) Cuando el contador “Position” llegue a “906” el programa estará cargado y listo para jugar.
5) Se puede desactivar la opción “Show Papertape” del menú “Display”.
6) Escribir “Run” en el terminal para ejecutar el juego.
7) El programa se puede detener pulsando “Escape” y se puede listar con “LIST”.

ReOrder_3300_Load.gif


Pues nada más, solo me queda…

Invitaros a probarlo
Adjuntos
ReOrder_3300_InGame.gif
ReOrder_3300_InGame.gif (23.7 KiB) Visto 53 veces

Volver a “Lenguajes de Programación y herramientas Dev”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado