Revistas en papel
 Commodore Amiga World Nº2 - Septiembre 1989
Anterior
Menú
Logotipo

El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España
para ofrecer los artículos de la revista Amiga World España.

LISTADOS SIN ERRORES Amiga World

Ahora puedes poner el
día el programa
corrector de listados
que en su día se
publicó en Commodore
World 47. Esta versión
mejorada es bastante
más potente.

 

 

 

 

Por Alvaro F. Mingo

Estas son, brevemente, las novedades que introduce esta nueva versión del programa:

  • Esta vez el programa es autónomo, es decir, ya no es necesario teclear el programa de la revista al final del Checksum, sino que es capaz de leer programas almacenados en el disco, flexibilizando la posibilidad de chequear programas en otros lenguajes (C, Pascal, Ensamblador).
  • El resultado puede imprimirse a un fichero, lo que permite modificarlo posteriormente con un tratamiento de textos.
  • Existe la posibilidad de "desconectar" las mayúsculas, puesto que al AmigaBasic no le importa que los comandos estén en mayúsculas o en minúsculas.
  • El resultado aparece en el dispositivo de salida igual que en la revista, en vez de en columnas. De esta forma es más legible.
  • El proceso global es sensiblemente más rápido, gracias a la optimización de las rutinas empleadas.

El programa
"Checksum"
permite obtener
sumas de
control para
comprobar los
listados que
aparecen en la
revista.

La utilización del programa también se ha hecho más simple, puesto que todas las entradas están ahora asistidas por menús sencillos, que activan las posibilidades pulsando la tecla correspondiente a cada pregunta. A continuación hay una explicación paso a paso de cada opción.


Primer Menú

Al arrancar el programa, aparece el primer menú:

Amiga-Checksum 2.1
CHECKSUM DE:
1. Programa en memoria
2. Fichero
3. Mayúsculas ON/OFF

1. Programa en memoria

La primera opción conserva la antigua posibilidad de chequear un programa que se encuentra después del propio Checksum, en la memoria del ordenador. Para activarlo se pulsa la tecla 1.


2. Fichero

Esta es la nueva opción que permite leer y comprobar un fichero que se encuentra en cualquiera de los dispositivos de almacenamiento (disco, RAM:, etc.). Es importante que dicho fichero esté en modo ASCII. Por lo tanto los programas en BASIC deben grabarse siempre con la opción ",A", de la siguiente forma:

     SAVE "NombreDisco:NombreDirectorio/NombreFichero",A

Si se desea que el proceso sea más rápido todavía, se puede copiar primero el fichero objeto en el disco RAM:


3. Mayúsculas ON/OFF

La salida
impresa del
programa
"Checksum"
tiene el mismo
aspecto que el
del listado de la
revista, lo que
permite una
corrección más
sencilla.

Pulsando la tecla 3 se puede observar cómo va cambiando de ON a OFF, activado y desactivado. Si se desea que las mayúsculas se distingan de las minúsculas hay que dejarlo en la posición OFF, de lo contrario hay que dejarlo en la posición ON.


Segundo Menú

   Salida por:
     1. Pantalla
     2. Impresora
     3. Fichero


1. Pantalla

Esta es la opción más corriente, la que permite visualizar el resultado del Checksum en la pantalla del ordenador. Los resultados aparecen igual que en la revista, con la suma de control al final de cada línea o, si es demasiado larga, al final de la línea siguiente.


2. Impresora

Esta opción permite tener una copia impresa en papel del resultado del Checksum. Para que la impresión se realice de forma óptima, es necesario modificar los valores de la impresora en el programa PREFERENCES de forma que el margen izquierdo (Left Margin) del papel esté en 1 y el derecho (Right Margin) en 80.


3. Fichero

Para dirigir la impresión a un fichero se debe seleccionar esta opción, y a continuación indicar el nombre del fichero. El nombre podrá, como en las demás peticiones, aparecer con su nombre compuesto:

     "NombreDisco:NombreDirectorio/NombreFichero".

Si en el primer menú se elige la segunda opción y el ordenador sólo tiene una unidad de discos, hay que procurar que ambos ficheros estén, o en el mismo disco, o en un disco y en la RAM. De otra manera habrá que cambiar el disco muchísimas veces.

Una vez concluido el cálculo de la suma de control el programa preguntará si se quiere hacer otro Checksum, a lo que habrá que contestar pulsando S para SI y N para NO. Cualquier respuesta que no cumplimente los requisitos o produzca un error forzará al programa a volver a empezar.

COMO TECLEAR LOS LISTADOS DE LA REVISTA

La mayoría de los listados de los listados para Amiga que se publican en Commodore World incluyen un sistema de comprobación de errores para que después de teclearlos te funcionen a la primera sin ningún problema. Para realizar el chequeo se utiliza el programa corrector "AMIGA-Checksum", cuya nueva versión tienes en estas páginas. Este programa está diseñado para comprobar programas BASIC, pero también puede utilizarse con los listados de C, Pascal, Ensamblador u otros lenguajes, siempre que puedan grabarse en un fichero ASCII.

Los listados de la revista aparecen con una serie de números precedidos de un punto en la parte derecha del listado. Este número es la "suma de control" de cada línea del programa y no debe teclearse cuando se está introduciendo el listado. Si alguna de las líneas del listado tiene más caracteres que el ancho de la columna, los caracteres sobrantes pasarán a la línea siguiente. Para evitar confusiones, estos caracteres o líneas sobrantes aparecen desplazados tres espacios hacia la derecha para distinguirlos de una posible nueva línea.

Para teclear y comprobar los listados de la revista puedes elegir cualquiera de las dos opciones.

1. Cargar el AmigaBasic, cargar el programa "Amiga Checksum", situarte al final de listado (ALT-cursor abajo) y comenzar a teclear, o bien:

2. Cargar el AmigaBasic y comenzar a teclear.

En la primera opción, cuando termines, tendrás en la memoria del ordenador dos listados en uno, primero el "Amiga Checksum" y a continuación el que tú hayas tecleado. Como medida de precaución, conviene que grabes el listado de cuando en cuando. Para comprobar las sumas de control de listado, ejecuta el programa tecleando RUN.

En el segundo caso, debes grabar el programa que hayas elegido en formato ASCII, utilizando la opción ",a" (Ejemplo: SAVE"miprograma",a) y después cargar (LOAD) y ejecutar (RUN) el programa corrector Checksum.

Cualquiera que sea el sistema que hayas elegido el corrector te preguntará el tipo de checksum que deseas, a lo que debes contestar "1", el programa en memoria si tienes los dos programas en uno, o "2" si el programa está grabado en el disco. Después has de indicar por dónde quieres la salida: pantalla, impresora o fichero. Normalmente, elige la pantalla o la impresora. finalmente, se calcularán todas las sumas de control del programa y aparecerá el listado más o menos como está en la revista. Cuando termines tu programa quedará listo para funcionar.

Para evitar problemas a la hora de teclear conviene que introduzcas los listados exactamente como aparecen en la revista, excepto los números de las sumas de control. Esto significa respetar los espacios, las mayúsculas y minúsculas (aunque esto es opcional), los REMs, los nombres de las variables y todo lo demás. Si no consigues la suma de control de alguna línea, no desesperes: borra la línea completamente y prueba otra vez. En última instancia sigue con las demás líneas y vuelve más adelante a ella.

El artículo completo con las explicaciones detalladas sobre el funcionamiento de la primera versión de este programa y junto con el programa que se utiliza para obtener los listados con sumas de control fue publicado en el número 47 de Commodore World.

Notas Encanta: La mayorías de los listados que aparecen en esta versión en línea de las Amiga World, han sido escritos a mano, pueden contener algún error. Si detecta algún error, escribanos por email. Por otra parte, los listados que aparecen aquí tienen las líneas completas, en la versión impresa, por diferentes motivos eran recortadas poniendo lo restante en la siguiente línea pero con 3 espacios por delante. En Encanta respetamos la línea completa, a no ser que esta sea extremadamente larga y no permita una lectura cómoda. Los códigos de control que aparecen a la derecha no son desplazados solamente 3 caracteres por este motivo. Además las líneas vacías, a menudo incluidas para una lectura mejor del listado, contienen un espacio, tengalo en cuenta si va a utilizar el programa corrector que aparece en este artículo.


Con esta nueva
versión, se
puede teclear el
programa a
corregir
independien-
temente del
programa
corrector.

Programa: Checksum 2.1          Amiga 500/1000/2000
' AMIGA-Checksum  Version 2.1        26/4/89                                   .995
'                                                                              .273
' (c)1989 by Alvaro F. Mingo & Alvaro Ibanez                                   .541
' (c)1988,1989 by Commodore World                                              .604
' Control de errores                                                           .550
ON ERROR GOTO CHECKSUM                                                         .694
' Abrir una ventana al maximo tamano                                           .584
WINDOW 1,"AMIGA-Checksum 2.0",(0,0)-(617,186)                                  . 75
' Inicializar Variables                                                        .833
CHECKSUM:                                                                      .578
CLS:K%=7:P%=0:D%=0:LI%=0:A$="RAM:CHECKLIST"                                    .788
MAY%=1:MAY$(1)="ON ":MAY$(0)="OFF"                                             .843
PRINT "AMIGA-Checksum Versi�n 2.1"                                             .788
PRINT "(c)1989 by Alvaro F. Mingo & Alvaro Ibanez"                             .628
PRINT "(c)1989 by Commodore World"                                             .813
PRINT                                                                          .463
PRINT "CHECKSUM: 1. Programa en memoria"                                       .152
PRINT "          2. Fichero"                                                   .707
PRINT "          3. May�sculas ";                                              .813
COLOR 0,1:PRINT MAY$(MAY%):COLOR 1,0                                           .875
' Recoge la seleccion del teclado y activa                                     .820
' o desactiva las mayusculas                                                   .214
WHILE D%<1 OR D%>2                                                             .792
P$=INKEY$:D%=VAL(P$)                                                           .136
IF D%=3 THEN MAY%=-(MAY%=0):LOCATE 7,25:COLOR 0,1:PRINT MAY$(MAY%):COLOR 1,0   .493
WEND                                                                           . 89
PRINT  D%                                                                      .266
IF D%=1 THEN SAVE A$,A ELSE INPUT "Nombre del fichero:",A$                     .660
PRINT                                                                          .463
PRINT "Salida por:  1. Pantalla"                                               .361
PRINT "             2. Impresora"                                              .262
PRINT "             3. Fichero"                                                .474
' Recoge la seleccion del teclado                                              .624
WHILE P%<1 OR P%>3                                                             .760
P$=INKEY$:P%=VAL(P$)                                                           .240
WEND                                                                           . 89
PRINT P%                                                                       .138
' Asigna dispositivo de salida                                                 .134
PRINT                                                                          .463
IF P%=2 THEN                                                                   .597
WI$="PRT:"                                                                     .647
ELSEIF P%=1 THEN                                                               .665
WI$="SCRN:"                                                                    .951
ELSE                                                                           .483
INPUT "Nombre del fichero :",WI$:PRINT                                         .854
END IF                                                                         .654
' Apertura de dispositivos de entrada/salida                                   .554
OPEN A$ FOR INPUT AS 1                                                         .417
OPEN WI$ FOR OUTPUT AS 2                                                       .418
' Este primer bloque hace pasar el checksum                                    . 15
' sin convertirlo para ir mas deprisa                                          . 64
WHILE B$<>"9999 REM Checker-END" AND D%=1                                      .918
LINE INPUT#1,B$                                                                .286
WEND                                                                           . 89
WHILE NOT EOF(1)                                                               .271
LINE INPUT#1,B$                                                                .286
' Este bloque suprime espacios innecesarios                                    .976
WHILE LEFT$(B$,1)=" "                                                          .671
B$=MID$(B$,2)                                                                  . 94
WEND                                                                           . 89
WHILE RIGHT$(B$,1)=" "                                                         . 55
B$=LEFT$(B$,LEN(B$)-1)                                                         .970
WEND                                                                           . 89
' Imprime las lineas de separacion                                             .167
' sin calcular su checksum                                                     .423
IF B$="" THEN PRINT #2,"":GOTO LOOP                                            .901
' Convierte todo a mayusculas (opcional)                                       .640
IF MAY%=1 THEN B$=UCASE$(B$)                                                   .270
' Inicializacion del Checksum                                                  .912
SUM%=0                                                                         .760
FOR I=1 TO LEN(B$)                                                             .917
' Calculo                                                                      .475
SUM%=(SUM%+ASC(MID$(B$,I,1)))*K%                                               .652
SUM%=SUM%-INT(SUM%/999)*999                                                    .526
NEXT                                                                           . 61
' Impresion del resultado                                                      .438
PRINT #2,B$;TAB(70);".";SUM%                                                   .960
LI%=LI%+1                                                                      .381
LOOP:                                                                          .933
WEND                                                                           . 89
PRINT #2,"":PRINT #2,"Numero de lineas: ";LI%                                  .269
' Cierra todos los ficheros                                                    .787
CLOSE                                                                          .533
' Borra el programa de RAM:                                                    .294
IF D%=1 THEN KILL "RAM:CHECKLIST"                                              .446
PRINT :PRINT "Quieres hacer otro Checksum (s/n)?"                              .919
WHILE P$<>"S" AND P$<>"N"                                                      .308
P$=UCASE$(INKEY$)                                                              .405
WEND                                                                           . 89
IF P$="S" THEN CHECKSUM                                                        .838
IF D%=1 THEN DELETE -9999                                                      .954
END                                                                            .992
9999 REM Checker-END                                                           .870
Numero de lineas: 93

Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal