★ APPLICATIONS ★ DIVERS ★ COPY DE PANTALLA POR IMPRESORA ★![]() |
RSX Hobbycop | Applications Divers |
Una de las cosas en las que el Amstrad no resiste la comparación con sus más inmediatos competidores, como el Spectrum, es la posibilidad de realizar en todo momento un volcado del contenido de la pantalla a la impresora, lo que se conoce como una copia de pantalla o HARDCOPY («copia dura» en inglés). Así, al Spectrum, por ejemplo, basta darle la orden COPY y, si la impresora es la adecuada, ¡voila!, aparece la copia en papel de la pantalla. Obviamente, este problema clamaba por una solución a grandes voces, y nuestros colaboradores Robert y Christine lo han resuelto... para varios tipos de impresoras. En el artículo que sigue todo el mundo podrá aprender cómo y por qué se realiza un hardcopy, bien sea en Basic o en lenguaje máquina, en este último caso creando nuevos comandos RSX. Despues de varias semanas leyendo montañas de propaganda y contando con mucho cuidado las pesetas disponibles, la familia votó por comprar el ordenador Amstrad, modelo barato, casette y mar-cianitos en verde y todo. En desfile fuimos a unos grandes almacenes y media hora después llegamos a casa con nuestro tesoro. Ya habíamos preparado el lugar de honor en el cuarto de estar con nueva mesa y estantería lista para las cintas y los libros que íbamos a comprar. Orgullosamente, empezamos a comparar nuestro Amstrad con otras máquinas —hicimos varias pruebas y encontramos que el aparato era muchísimo mejor en velocidad, en su pantalla, etc. que muchas máquinas con procesador de 16 bits, el IBM-PC incluso—. Así hemos hecho muchos enemigos, comprobando que nuestro Amstrad de precio de mer-cadillo era un gigante comparado con las máquinas suyas, hasta que hablamos con el propietario de un simple Spectrum de 28.000 ptas. Con el Amstrad no se puede —Bien -dijo él-, muy bonito. Pero no se puede imprimir la pantalla por impresora, como yo hago con mi Spectrum. —No digas tonterías —le contestamos—, por supuesto que se puede. —¡Inténtalo! —contestó, sonriendo. Regresamos a casa, hicimos un diseño precioso en la pantalla (el escudo de la Caja de Ahorros local), copiamos un programa de una revista y... no funcionaba. Otra vez, molestamos a los amigos de Amstrad, preguntándoles cómo ellos pasan diseños a la impresora. O no lo habían intentado, o no funciona, con feas líneas verticales por doquier. ¡Qué vergüenza! Nuestro Amstrad, la créme de la créme del micro, vencido por un Spectrum. ¡Imposible! Entonces con hielo sobre la cabeza, nos pusimos a trabajar para intentar solucionar el problema. ¡Claro que se puede! Primero ves si tienes impresora. Si no, no te preocupes. Nosotros tampoco. Teclea sólo el programa final, ése del código máquina y busca un amigo con impresora. Y regálale una copia del programa. Con la impresora, ver el manual para MODO GRAFICO, que también se llama imagen de bits (bit image) porque un bit (cifra binaria en el número enviado a la impresora) sale como un punto (dot) en el papel. Este modo puede ser de dos tipos. Lo más probable es el tipo de COMPATIBILIDAD EPSON. Habrá un diagrama mostrando bit 0 enviado al punto (dot) más bajo en el cabezal de impresión. (Eso de los bits es curioso —los ingenieros siempre cuentan desde 0 y lo que para mí es el octavo bit, para ellos es sólo bit 7. Tal vez así les sale más barato el IVA.) Los programas que siguen, se han escrito para este tipo. Si, al contrario, bit 0 se muestra dirigido al punto (dot) más alto de impresión, este tipo vamos a llamar de SEIKOSHA, porque lo hemos probado en una SEIKOSHA GP550A. E| programa final tiene unos pokes adicionales que lo adopte a este tipo de impresora. Si no está claro de qué clase es la impresora, aplica el método conocido entre los científicos de SIAS. Esto es «Suck it and see». Pruébalo y verás. Teclea los programas y si todo sale invertido y al revés, debe ser del otro tipo. Aparte de la SEIKOSHA GP550A, hemos probado los programas en otros dos: INDESCOMP 80 y STAR GEMINI 10X, los dos del tipo EPSON. Todas son máquinas económicas de unos 100 cps de velocidad. ADVERTENCIA: El uso de RUN antes de SAVE puede ser perjudicial para su salud mental. Si no tienes impresora conectada. ?#8, «Hola»y —adiós. Tendrás que apagar todo el aparato. Entonces teclea el programa y grábalo ANTES de probarlo. Microhobby no quiere ser causa de suicidios en masa de las mejores mentes del país.Probando, probando Programa 1: PRUEBA. Este es de introducción. Los expertos en el asunto ya pueden saltar a programa 2, pero entonces les faltarán muchas líneas del presente programa que se usan allí. Cuando tecleas, no hace falta contar espacios: las indentaciones (p. ej. líneas 61020-61100) se usan para ayudar a comprender la estructura de los bucles y no necesitas seguirlas. Las observaciones (REMs) que siguen al apostrofe (') pueden reemplazarse con un par de asteriscos ('**). Las líneas DATA también son de este estilo: terminan con una etiqueta de postizo para indicar lo que los números representan. Puedes teclear más simplemente 64000 DATA 27, 64, 27, 177, **respetando las comas.Teclar y grabarlo con SAVE «prueba» en ca-sette o disco. Ahora encender la impresora y RUN. Si salen 6 líneas dobles, largas, horizontales, fantástico. Pero, si cuando yo lo hago, salen estas líneas parcialmente rotas por «gremlins» en la máquina, con unos pocos «H» y «,» esparcidos, bien. Estos gremlins saben Basic, pero no Código Máquina, y la versión final va a funcionar correctamente. Si no hay nada de líneas dobles horizontales, en verdad falla algo. Comprobar el programa y leer la parte del manual de la impresora que trate de modo gráfico. Al menos, no vale la pena seguir tecleando más programa, hasta que esta parte, de prueba, funcione. ¿Cómo funciona el programa? En el programa PRUEBA se ven cosas como «car7but» o «espacio 7 bit». Un carácter para la máquina es un número entre 0 y 255. Estos números consisten de ocho bits (cifras binarias). Si quieres ver los bits en acción, prueba lo siguiente: for car = 115 to 135:? car; bin$ (car, 8): next cary se nota que bit 7, el primero desde la izquierda, se alza (cambia deOa 1) entre 127 y 128. Hasta 255 se queda alzado.La puerta Centronics (Printer) en el Amstrad corta la cabeza de cualquier carácter que pasa por ahí y entonces no llega a la impresora el octavo bit, sólo bits 0-6. Línea 64000 son los DATA para un espacio entre líneas que corresponde a siete «dots en el papel. Compruébalo y si hace falta cambia los DATA, enviando un carácter diferente. Teclea: 61070 car 7 bit=63y RUN. Ahora (sin hacer caso de «gremlins» si los hay) se ve una fina línea blanca entre bloques de negro. Esta línea corresponde al bit 6 (64) siendo el único que no pone un punto en el papel.61070 car 7 bit= 127y las dos franjas de negro deben unirse justamente, pero sin solapar. Si piensas que el espacio hay que ajustarle, cambia los datos correspondientes en línea 64000.Los datos terminan en un número al cual se ha añadido 128 como señal de fin de datos, por ejemplo, 177 = 49 + 128 y 49 dice el manual de la impresora es el código para espacio entre líneas de siete puntos (dots). Los datos de línea 64010 son los códigos de control para enviar 100 caracteres gráficos a la vez. La línea 64020 es la que más probablemente aprovecharás cambiando. Esta repone la impresora en el estado que normalmente uses. En el programa hay los códigos más sencillos de reiniciación. Puede ser que tu impresora no reconoce ESC@. Entonces cámbialos por otros códigos. Por lo menos, juega con esta línea y ver lo que los cambios hacen con RUN seguido por LIST 64000-64020, #8. Estos mismos códigos de control pueden pokearse en el programa final en código máquina. Hardcopy en Basic No borres el programa de memoria. Vamos a aumentarlo para copiar la pantalla a papel, usando Basic. Las impresoras de la otra clase (como la SEIKOSHA GP550A) tienen dos líneas diferentes, aparte aquéllas de los DATA del programa anterior. Son las dos siguientes: 63150 car 7 bit=64* ((TESTR(—6,2)=0)-f-1) punto aquí? —devuelve 64 63170 car 7 bit=64* ((TESTR (l/0)=0)+ /j + car 7 bit/2cuyo efecto es copiar el grupo de siete puntos de la pantalla en orden inverso. La multiplicación *2 ha sido reemplazado por división 12, que en el programa de código máquina será RL- rotación hacia la izquierda, reemplazado por RR- rotación hacia la derecha.Grabar el programa con SAVE «copión, bas». Coge unos cinco pliegues de papel continuo usado, que estabas a punto de tirar, porque lo que saldrá probablemente será un desastre. Cuando lo hice en una INDESCOMP 80 y STAR GEMINI, salieron beeps, alimentación de hoja y todo. Pero también... Enciende la impresora, RUN y cuando el dibujo está acabado pulsa la tecla «C». Y a comer, toma un café o algo. Porque el pobre Basic tarda. Para mí, el tiempo mostrado en la pantalla al final era de 21 min y 20 seg. Lo que hace el programa es procesar los 640x2000 pixels de la pantalla en bloques de siete, preguntando a través de la función TESTR si están encendidos o no y pasar la información a la impresora en forma de bits —un bit por pixel —para imprimir los puntos en papel. (Cada bloque se repite su impresión para tener una copia 640x400). Pero, 640 x 200 veces en Basic puede ser demasiado. Se diseñó Basic para ser interactiva, no repetitiva. Ahora vamos a ver el programa en código máquina, pero la lógica será igual a lo que acabamos de ver. Lenguaje máquina: el plato fuerte Esta vez teclea NEW. Hay una comprobación en el programa que los datos numéricos han sido entrados correctamente. Un error se señala con el mensaje «Error en xxx» y las líneas de DATA se alistarán. Teclea en MODE 2: el formato es de 64 caracteres por línea, para ajustarse a la norma de la revista y si saltas un dato, será claro a simple vista. Una vez terminado, grabarlo con SAYE «hobbycop». Características Nuevos comandos Basic: |COPY ( , tinto) |
| ![]() |
|