APPLICATIONSCOURS DE BIDOUILLAGE ★ El secreto de la turbo protección ★

El secreto de la turbo protección! (Amstrad Personal)Applications Cours De Bidouillage
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

En este nuevo artículo sobre sistemas de protección, nos centraremos en un tema muy interesante, de gran utilidad, pero al mismo tiempo enormemente complicado: la elaboración de programas o rutinas capaces de grabar y leer datos con una estructura creada por nosotros mismos, a medida de nuestros gustos o necesidades.

Todo el mundo ha visto o ha oído hablar de los sistemas de protección denominados «Turbo», «carga rápida», o «carga por rayas», y muchos programadores con un buen nivel de conocimiento del Código Máquina han intentado en vano el desarrollo o la comprensión de uno de estos sistemas. En este artículo se ofrece la información necesaria para llevar a cabo la realización de un programa de este tipo.

Como muestra, ofrecemos un listado auténticamente profesional, que puede ser empleado para nuestras propias grabaciones. Pero, antes de empezar a hablar del texto en Ensamblador, es preciso hacer un análisis exhaustivo del hardware que nos va a permitir grabar datos en una cinta de cassette normal.

El acceso al cassette se puede hacer (cómo no) a través del PPI, dispositivo éste realmente importante en el ordenador. El PPI tiene 3 puertos (A, B y C), de los cuales se emplean el B y el C para las operaciones con cassette. Estos ports son
accesibles, respectivamente, a través de las direcciones &F5xx y &F6xx, donde xx puede tomar cualquier valor. El significado de los bits que se leen del puerto B o se envían al puerto C es el siguiente:

Puerto B (lectura).

  • Bit 7: Lectura del cassette.
  • Bit 6: ¿Impresora ocupada?
  • Bit 5: ¿Hay algún periférico?
  • Bit 4: LK4.
  • Bit 3: LK3.
  • Bit 2: LK2.
  • Bit 1: LK1.
  • Bit 0: Barrido de pantalla.

Puerto C (escritura).

  • Bit 7: Serial BDIR chip de sonido.
  • Bit 6: Señal BC1 chip de sonido.
  • Bit 5: Escritura en el cassette.
  • Bit 4: Puesta en marcha del motor.
  • Bit 3: KR3.
  • Bit 2: KR2.
  • Bit 1: KR1.
  • Bit 0: KR0.

Para nuestros propósitos, sólo nos interesan el bit 7 del canal B y los bits 4 y 5 del canal C. El resto cumple otras funciones totalmente diferentes.

Para poder grabar o leer del cassette, en primer lugar hay que poner en marcha el motor. Esto se hace enviando un 1 en el bit 4 al canal C. Es conveniente esperar un tiempo, cuando el motor se enciende, para que la cinta tome una velocidad constante.

Posteriormente, la grabación se hace enviando información a través del bit 5 del canal C. Y llegamos aquí al punto más importante, ¿cómo podemos expresar una información inteligible? Si enviamos un 1 al bit 5 del canal C, el ordenador
comenzará a grabar en una frecuencia alta hasta que nuevamente le mandemos un cero. Nosotros sólo podemos trabajar con presencia o ausencia de tensión, y esto es precisamente lo que mide el bit 7 del canal B. El método que se emplea habitualmente para grabar un bit es la activación de tensión durante un cierto tiempo, y la inhibición de tensión durante un tiempo igual aproximadamente (el Hardware no es capaz de hacerlo de forma exacta). Para distinguir un 1 de un 0 podemos, por ejemplo, hacer que los periodos de los del 0 sean de doble duración que los del l,o viceversa. De este modo, si detectamos dos periodos consecutivos de duración larga, decidiremos que lo que se está leyendo es un 0, pero si estos periodos son de corta duración, el dato será un 1. Cada byte hemos de descomponerlo en sus 8 bits, y grabarlo por separado, mientras que para leer deberemos seguir el proceso inverso. El problema de este método consiste en la correcta sincronización de los tiempos de lectura y escritura, sobre todo teniendo en cuenta que el hardware del cassette tiende a redondear las frecuencias, acortando los ceros y alargando los unos. Nosotros, en aras de la sencillez, hemos empleado en nuestros programas un tiempo de grabación para los periodos de los ceros 4 veces mayor que el empleado para los unos. De esta forma, el diferente tiempo de proceso del programa cuando graba o cuando carga no es un factor demasiado influyente para la fiabilidad de la grabación.

Una aclaración importante es que el bit 7 del canal B actúa de forma inversa o como lo hace el bit 5 del canal C. Como ya hemos explicado antes, cuando queremos expresar un estado de tensión alta, enviamos un 1 al bit 5 del canal C. Sin embargo, cuando el cassette lee tensión alta, devuelve un 0 a través del canal B. Este detalle puede llevarnos a confusión (lo sé por experiencia) si no tenemos cuidado.

El programa Ensamblador crea dos nuevos comandos RSX. Su sintaxis es como sigue: TURBOSAVE, inic, long TURBOLOAD, inic, long donde «inic» es la dirección de inicio de los datos y «long» la longitud en bytes de los mismos. He intentado hacer el programna de forma modular, desarrollando rutinas básicas como lectura de un solo byte, escritura de un solo byte, escritura de un grupo de bytes, etc. Los datos que se graben con este programa irán precedidos de una cabecera compuesta por 128 bytes de la forma 10101010, seguida al final por un bit 0. Esto se ha hecho así para evitar posibles equivocaciones a la hora de la lectura de los datos.

El programa es, sin duda, muy útil, pero podemos adaptarlo con facilidad a nuestras propias necesidades, modificando, por ejemplo, la estructura de la cabecera, la velocidad de escritura y lectura, o algunos otros parámetros. El listado está ampliamente
comentado, por lo que esto será tarea bastante fácil. A pesar de todo, quiero advertir que si decidimos cambiar la velocidad, hemos de alterar los parámetros que aparecen en las etiquetas BIT0 y BIT1, pero también las comprobaciones que se hacen en la rutina LBYTE.

Para utilizar el programa, podemos copiar, con ayuda del Cargador Universal, el Listado II, dando como dirección de inicio la &A000. También podemos copiar, con ayuda de un ensamblador, el Listado I y ensamblarlo a partir de la misma dirección &A000. En cualquier caso, lo grabaremos en cinta o disco bajo el nombre «TURBO.BIN». Para poder emplearlo posteriormente, habrá que escribir lo siguiente:

MEMORY &A000
LOAD “TURBO. BIN”, &A000
CALL &A000

y ya tendremos a nuestra disposición los nuevos  comandos. Las rutinas son también accesibles desde código máquina. Pensando en esto, se han indicado en comentarios las condiciones de entrada a las rutinas más importantes.

Por último, una advertencia más: el listado Ensamblador ha sido desarrollado con el paquete HEXAM, de ACE Software, pero puede transcribirse en GENA con las siguientes salvedades:

  • Debemos indicar un ORG (dirección &a000).
  • Las etiquetas deben ir seguidas del carácter (dos puntos).
  • Las cadenas de caracteres deben ir encerradas entre comillas dobles.
  • El punto y coma antes de los comentarios es necesario SIEMPRE.
  • Los números en hexadecimal deben ir precedidos del símbolo y los binarios de Hay que quitar, por tanto, la H y la b finales que emplea el Hexam.

Amstrad Personal

★ PUBLISHER: Amstrad Personal
★ YEAR: 1988
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: AMSTRAD PERSONAL 1988
★ AUTHOR: Pedro Cuenca

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» El  Secreto  de  la  Turbo  Proteccion    (Amstrad  Personal)    LISTING    SPANISHDATE: 2022-09-26
DL: 30 fois
TYPE: PDF
SIZE: 1029Ko
NOTE: 5 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Disc Unprotector (Pixel)
» Applications » The Protection Racket
» Applications » Patrice Maubert - Cours de Bidouilles - Joystick N11
» Applications » Unprotect (Schneider Aktiv)
» Applications » Patrice Maubert - Cours de Bidouilles - Joystick N05
» Applications » Protection Logiciel n°44 (Amstrad Cent Pour Cent)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 161 millisecondes et consultée 105 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.