★ APPLICATIONS ★ COURS DE BIDOUILLAGE ★ El secreto de la turbo protección ★ |
El secreto de la turbo protección! (Amstrad Personal) | Applications Cours De Bidouillage |
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 Puerto B (lectura).
Puerto C (escritura).
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 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 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 |
|
|