Revistas en papel
 Amiga World Nº17 - Enero 1991
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.

A M I G A   M A G I A S
Amiga World

CORRECCIÓN DE 'LETRA MÁGICA'

Quisiera corregir un error en la sección de Amiga Magias del mes de Septiembre. Se trata del programa anónimo 'letra mágica', donde la correspondiente letra no es tal porque el cálculo lo realiza el ordenador en precisión simple (forma científica, valor por defecto), por lo que habrá que decirle que lo ejecute en precisión doble con una simple línea antes de las variables DEFDBL a-z

José Núñez Oller


MAGIAS VARIADAS

Lamentablemente las direcciones de los pokes que se publican en la revista no siempre funcionan con la versión 1.3 así que estos son algunos de los pokes para la versión 1.3:

20308 > Dirección de inicio de datos del puntero con 512K.
20371 > Dirección final de datos del puntero.

PEEKL 19174 > Dirección donde comienza la pantalla que se está visualizando.

Para poder acceder a todos los códigos de escape de tu impresora que aparecen en el manual solo tienes que llamarla como "PAR:" en vez de como "PTR:", pero ten cuidado por que las vocales acentuadas no las imprimirá, si no se hace una conversión adecuada. Conviene tener una tabla ASCII de PC. Desde el Basic es:

   OPEN "PAR:" FOR OUTPUT AS 1
   PRINT #1, 'C�digo de escape'
   CLOSE 1

La mejor forma de configurar la conocida impresora, para los usuarios de Amiga, STAR LC10C es escoger en la lista de impresoras el drive con el nombre EpsonX[CBM_MPS1250] aunque no imprime las negritas en NLQ, el drive CBM_MPS1000 si que imprime las negritas en NLQ, pero sin embargo no imprime las itálicas.


PUESTA DEL SOL

Este pequeño programa sirve para calcular la salida y la puesta del Sol en cualquier día del año, más que una utilidad podemos calificar a dicho programa como una curiosidad.

   REM  El�as Jim�nez Parra
   REM   Calvario,8 .02620 Minaya (Albacete)
   REM
   REM (C) AMIGA WORLD - IDG COMMUNICATIONS - 1990
   PRINT 
   PRINT "    *     CALCULO DE SALIDA Y PUESTA DEL SOL                    *"
   PRINT
   PRINT:PRINT
   INPUT "   Dia , Mes: ";di,m:PRINT:PRINT
   FOR e=1 TO m-1:READ f:d=d+f:NEXT
   DATA 31,28,31,30,31,30,31,31,30,31,30,31
   ' Longitud: Oeste +  Este -
   ' Latitud : Norte +  Sur  -
   ' Coordenadas del lugar de observaci�n.
   long=2.315833:lat=39,27222
   d=d+di
   gra=3.1415926#/180
   f=(d-3.34815)*.98565
   q=.1277*SIN(f*gra)
   v=f+15*q-77.3411
   r=.16441*SIN(2*v*gra)
   e=q-r
   s=.3978*SIN(v*gra)
   c=(1-s^2)^.5
   x=s*SIN(lat*gra)+.01454
   x=x/(c*CON(lat*gra))
   ar=SQR(-x*x+1)
   ar=-ATN(x/ar)+1.5708
   ar=ar/gra
   orto=(long+ar)/15+e:IF SGN(orto)=-1 THEN orto=orto+24
   ocas=(long-ar)/15+e:IF SGN(ocas)=-1 THEN ocas=ocas+24
   o%=FIX(orto):s%=FIX(ocas)
   o$=MID$(STR$(o%),2):mi$=MID$(STR$(INT((orto-o%)*60)),2)
   a$=MID$(STR$(a%),2):ms$=MID$(STR$(INT((ocas-s%)*60)),2)
   o$=LEFT$("00",2-
   LEN(o$))+o$:s$=LEFT$("00",2-
   LEN(s$))+s$
   PRINT "    Salida:  "o$":"mi$
   PRINT
   PRINT " Puesta:  "s$":"ms$
   PRINT :PRINT : PRINT "   En invierno +1 hora ,en verano +2 horas.":PRINT :PRINT

Elías Jiménez Parra


TRUCO JUEGO

El juego Shadow of the Beast II es muy bueno, pero el problema es que es tremendamente difícil pasar de nivel. Una solución que he encontrado es la siguiente:

Cuando comienza el juego se ha de ir por la izquierda, cuando aparezca una especie de grieta (donde los pájaros) hay que descender hasta el fondo del todo y seguir de nuevo hacia la izquierda. Si se ha tenido suerte, y aun no han acabado con nosotros, se llegará a una caseta en la cual hay un hombre. Bastará con pedirle 10 cervezas 'Ten pints' para obtener inmunidad a partir de ese momento.

Justo Herrero


MEMORY PEEKER

Con este programa podrá mirar el contenido de la memoria de su Amiga, sin embargo ha de tener cuidado con no introducirse en direcciones demasiado altas, ya que podría producirse un GURU.

   REM  El�as Jim�nez Parra.  7-Nov-1990
   REM Calvario,10 . 02620 Minaya (ALbacete)
   REM
   REM(C) AMIGA WORLD - IDG COMMUNICATIONS - 1990
   PRINT :PRINT TAB(16) "*    M E M O R Y   P E E K E R   *"
     start:
   PRINT :PRINT :PRINT
   INPUT "DESDE:";h$
   GOSUB DEC :P&=s&
   INPUT "HASTA:";h$
   GOSUB DEC :F&=s&
   CLS
   I&=P&:GOSUB Phex
   FOR I&=P& TO F&
     pe=PEEK(I&)
     pe$=CHR$(pe):IF pe‹32 THEN pe$="."
     IF POS(0) >75 THEN PRINT:GOSUB Phex
     PRINT  pe$;
   NEXT
   END
      DEC:
   L=LEN(h$):s&=0
   FOR I=L TO 1 STEP-1:a=ASC(MID$(h$,I,1))
      IF a>64 AND a‹71 THEN s&=s&+(a-55)*16^(L-I):GOTO acabo
      IF a‹48 OR a>57 THEN nulo
      s&=s&+(a-48)*16^(L-I)
      acabo:
   NEXT:RETURN
      nulo:
   COLOR 0,3:PRINT "ENTRA LAS CIFRAS EN MAYUSCULAS":COLOR 1,0
   GOTO start
   Phex:
   O$="0000":L=LEN(HEX$(I&)):PRINT RIGHT$(O$,6-L);HEX$(I&)":";
   RETURN

Elías Jiménez Parra


OCULTAR FICHEROS

Ocultar es un programa sencillo y rápido de teclear, útil si el ordenador lo utilizan varias personas y no quieres que vena un fichero determinado. El programa realiza una operación con bits en cada byte, con lo que se consigue que el fichero introducido quede codificado de tal manera, que no es posible leerlo sino se vuelve a ejecutar. Por ejemplo, tienes el fichero ASCII (Puede ser cualquier clase de fichero, incluso no ASCII) llamado "prueba" entonces teclea en el CLI o Shell "ocultar prueba" y lista el directorio, comprobarás que hay un fichero llamado "prueba.cod" que ya no se puede leer hasta que no ejecutes "ocultar prueba.cod" con lo cual el fichero quedará como al principio.

Lo que realmente hace el programa es un XOR u OR exclusivo de 11011011 (219 decimal) a cada uno de los bytes que contenga el fichero. Un XOR es un operador a nivel bits cuya regla es que un bit es verdadero solo y exclusivamente cuando uno de los dos es verdadero; si los dos bits son verdaderos o son los dos falsos el resultado será un bit falso pero si por el contrario uno de ellos es exclusivamente verdadero el resultado sera un bit verdadero. Supongamos que el primer byte es 01000001 (65 en decimal y la letra 'A' en ASCII) el ordenador hará el XOR de 11011011 a 01000001 de la siguiente forma:

   65 XOR 219  Resultado
   ---------------------
   0       1     1
   1       1     0
   0       0     0
   0       1     1
   0       1     1
   0       0     0
   0       1     1
   1       1     0

A continuación seguirá con el siguiente byte repitiendo hasta que no quedara ninguno. Para decodificarlo se produce la misma acción que para codificarlo ya que si se realiza la operación dos veces se deja el fichero como estaba; el resultado de esta operación ((64 XOR 219) XOR 219) es 64.

Para compilarlo no hace falta ninguna librería rara o algún "include" personal, es un programa que puede teclear cualquiera que tenga algún Compilador de C. Yo personalmente lo he tecleado con Aztec C. Teclea el listado en algún editor de texto exclusivo ASCII (Ed, Memacs, etc...), después grabalo en el disco RAM con el nombre ocultar.c, y compilalo y linkalo:

(Para Aztec C)

   cc ram:ocultar.c
ln ram:ocultar.o -lc

Si por el contrario no tienes un compilador de C, también incluyo un listado en Basic que trabaja igual que el escrito en C, pero muchísimo mas lento, incluso es posible codificar un fichero con el programa en C y luego decodificarlo con el programa en Basic, es decir los ficheros creados con los dos programas son totalmente compatibles.

   /*       Ocultar       */
   /*Codificador/Decodificador*/
   /*      Versi�n 1.2.1      */
   /*1990 (c) by Joaqu�n Gracia*/
   #include "stdio.h"
   #include "ctype.h"
   main (argo,argv)
   int argc;
   char *argv[];
   {
   int lon = strlen(argv[1]);
   char nombre1[35];
   char gu[36];
   if (argc != 2 ) {
   printf("Usar:Ocultar fichero\n");
   exit (0); }
   gu[0] = 0;
   strncat (gu,argv[1],lon-4);
   strcat (gu,".cod");
   if ( strcmp(argv[1],gu) ) {
      strcpy (nombre1,argv[1]);
      strcat (nombre1,".cod");
      codifica (argv[1],nombre1); }
   else {
      strncat (nombre1,argv[1],lon4);
      codifica (argv[1],nombre1); }
   exit (0);
   }
   codifica (nombre,nombre1)
   char *nombre,*nombre1;
   {
   FILE *fp,*fp1;
   register char ch;
   if ((fp = fopen (nombre,"r")) == NULL) {
   printf ("Fichero noencontrado\n");
   exit (0); }
   if ((fp1 = fopen (nombre1,"w")) == NULL) {
   printf ("No Puedo abrir el fichero\n");
   exit (0); }
   for (;;) {
      ch = getc (fp);
      if (feof(fp)) break;
      putc (ch ^ 219,fp1);
      }
   fclose (fp);
   fclose (fp1);
   DeleteFile (nombre);
   }
 
   '              Ocultar
   '          Versi�n en Basic
   '     Codificador/Decodificador
   '           Versi�n 1.2.1
   '    1990 (c) by Joaqu�n Gracia
   INPUT "Nombre del fichero",nombre$
   IF RIGHT$(nombre$,4) = ".cod" THEN nombre1$=LEFTs(nombre$,LEN(nombre$)-4)
      ELSE
      nombre1$=nombre$+".cod"
      END IF
   OPEN nombre$ FOR INPUT AS 1
   OPEN nombres1$ FOR OUTPUT AS 2
   codifica:
   a$=INPUT$ (1,1)
   PRINT #2,CHR$(ASC(a$) XOR 219);
   IF EOF(1) THEN fin
   GOTO codifica
   fin:
   CLOSE 1
   CLOSE 2

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