EMULANDO LA IMPRESORA ZX ASI COMO OTRAS INTERFACES SERIAL Y PARALELO PARA ZX SPECTRUM. He aquí todas mis pruebas hasta el momento sobre el tema. No voy a tratar sobre modelos, tipos o marcas de impresoras, solamente de lo que atañe al Spectrum en cuanto a opciones para accesarlas. Comandos de impresora del Basic Sinclair: LPRINT, LLIST y COPY Parte I A MODO DE INTRODUCCION: LA COSA REAL Muy bien, tenemos en nuestras manos un ZX Spectrum, ya sea un viejo "gomas", o un plus. Y nos damos con... ¡no tiene toma para conectarle impresora! Hay que conseguirle una, y las opciones son: IMPRESORA ZX la alternativa Sinclair, imprimante termica que se conecta directamente al bus de expansion del Spectrum. TS-2040 impresora termica de TIMEX, así como la ALPHACOM 32. Similar a la ZX, pero con una diferencia: tiene dos botones, uno para encender y avanzar el papel y otro para apagarlo. SEIKOSHA GP-50-S versión con adaptador exclusivo para conectar directamente al Spectrum. Una ruidosa impresora matricial, pequeña con rollo de papel normal continuo. ZX INTERFACE 1 esta ofrece la posibilidad de conectar una impresora serial al Spectrum. Pero antes hay que iniciar con FORMAT "t";9600 si nada más se quiere usar la impresora sólo para texto. De lo contrario FORMAT "b";9600 para enviar codigos o graficos. Y para verificar basta con hacer: 10 OPEN #3;"t" 20 LPRINT 124 30 LPRINT "alfa"'' 40 LLIST 50 CLOSE #3 WAFADRIVE permite conectar impresoras tanto serial como paralelo, siendo esta última tambien para conectar joysticks. Si solo se va a usar el paralelo basta con reemplazar la línea 10 del ejemplo anterior con: 10 OPEN #*3;"c" pero si se va a usar una impresora serial entonces hacer primero: FORMAT *"r";2400 y cambiar la linea 10 a: 10 OPEN #*3;"r" OPUS DISCOVERY tiene un puerto paralelo para impresora. Aquí la linea 10 se inicializa: 10 OPEN #3;"t"; RND 80 - el último parametro es opcional, solo si se desea seleccionar el ancho de impresion. Si se omite es cero por defecto. Al igual que el ZX IF1, Opus tiene un canal "b" (binario) para codigos. DISCIPLE y +D posee toma paralela al igual que el Discovery. Primero hay que instalar (o tener ya) un sistema configurado para la imrpesora, de lo contrario no la aceptará, o enviará codigos erroneos. Una vez cargado el disco con el gdos o gdos+ configurado, ya pueden usarse directamente los comandos LPRINT y LLIST, menos COPY que es reemplazado por SAVE SCREEN$ o la variante COPY SCREEN$. SWIFT DISK Este sistema de disco incluia una toma serial para conectar impresoras. Para activarlo debemos usar la sigte sintaxis para Format: FORMAT %# flujo;"T", b, c donde b= rango de baudios: 50, 110, 300, 1200, 2400, 4800,9600, 19200 y c = número de caracteres por línea así que en el ejemplo anterior debemos hacer: FORMAT %# 4;"t",2400,79 y el listado modificado pasa a ser solo de: 20 PRINT #4;124 30 PRINT #4;"alfa"'' 40 LIST #4 el manual original no menciona nada sobre redirigir el canal 3, pero tal vez sea posible hacer: FORMAT %# 3;"t",2400,79 y entonces usar LPRINT y LLIST. No hay mención alguna sobre COPY. TIMEX FDD-3000 tiene dos puertos seriales, tanto para red como para impresoras. En este caso la orden es: FORMAT *":CH_A" para enseguida contestar todas las preguntas requeridas para su configuración. Para usar LPRINT y LLIST se requiere cargar un programa llamado "lprint" que está en el disco de utilidades del FDD-3000. Permite usar códigos CHR$ 27. Una vez hecho eso, el listado anterior queda: 10 OPEN #*1;":CH_A";a: REM a por "append" (agregar) 20 PRINT *#1;124 30 PRINT *#1; CHR$27+"E"+"alfa" 50 CLOSE #*1 En el disco también está una utilidad llamada "type" (tipear). Antes de cargarlo se debe tener la impresora ya conectada al canal A del serial. Una veaz hecho eso, ya es posible usar el Spectrum como máquina de escribir. Otras alternativas tener un Spectrum 128k ó el +2 con toma serial, sino el +3 o +2a con serial y paralelo. Si nos quedamos con el 48k sin más expansiones, entonces no queda más que conseguirse una interface ya sea serial o paralelo. Una alternativa es fabricarsela uno mismo desde cero siempre que sepamos cómo. SPECTRUM 128K y +2 Tiene una toma serial ya sea para impresoras, modem o midi. No redirige directamente los comandos de impresora a menos que primero se haga un FORMAT "p";1200 por ejemplo. Hay que POKEar en las variables del sistema para obtener el equivalente a los modos "T" y "B" del ZX IF1. Dilema: el 128k no acepta la imprimante ZX, pues las rutinas han sido todas modificadas para su uso con sistema serial. El modo 48k si acepta la ZX, pero no accesa al serial. El ZX IF1 solo añade red, y serial extras para impresoras, pero no COPY. Un buen complemento: el Discovery. Una mejor opción: el +D o Disciple. +3 y +2a/b No necesita nada, lo tiene todo: paralelo y serial de fábrica. Incompatible con todo lo anteriormente mnencionado, excepto un FDD-3000 modificado para +3. LPRINT, LLIST y COPY directamente al puerto paralelo. Si se quiere elegir el serial, entonces debemos hacer: FORMAT LPRINT "R" seguido de un FORMAT LINE 1200 y listo, todo va al serial. Para volver al modo anterior simplemente: FORMAT LPRINT "C". Permite imprimir en modo no expandido con FORMAT LPRINT "U" para uso de LPRINT y con FORMAT LPRINT "E" para hacr LLIST. Es todo. Dilema: no hay acceso a las impresoras desde el modo 48k. SCORPION Este clon ruso tiene toma paralelo, redirige todos los comandos de impresión tanto en modo 128k como en 48k, a diferencia de los 128k oficiales. MULTIPRINT Interface paralelo MULTIPRINT de Romantic Robot. La lista de interfaces de imresora tanto serial y paralelo fabricadas por distintas empresas para el ZX Spectrum 48k, es tal, que me limitaré solo a mencionar esta interface. Basta con conectarla y automáticamente redirige el canal "P" y el flujo 3 a la impresora centronics, la cual acepta ahora LPRINT, LLIST y COPY. El manual dice que funciona con todos los modelos de Spectrum, 48k, 128k y +2, siendo incompatible con +2a y +3. CONCLUSION: Tanto el ZX IF1, Wafadrive, Discovery, Swift Disk y Timex carecen de la opción de redirigir COPY a la impresora. Lo que obliga a buscar alguna utilidad que lo haga, o de lo contrario otra interface que si capture las pantallas. Disciple y +D parecen ser las mejores alternativas en este campo. En el campo de las interfaces centronics para Spectrum, Multiprint parece ser la mejor alternativa. Tras ver lo que se puede hacer con la cosa "real", pasamos a la emulación. Parte II IMPRESORAS Y PC: LA COSA EMULADA Pero el mismo último día del año (2005) me di una vuelta por cierto sitio que conocia, donde vendian impresoras y me encontré con una pieza curiosa: la matricial 9 pines Epson LX-800. Yo siempre quise comprarme una por esos dias para conectarla a mi Spectrum (en realidad era la Epson que llamaban "Spectrum" que ya no recuerdo si asi llamaban a la FX-80 o a la LX-80) Me la ofrecieron a un precio que no pude rechazar y la termine comprando, asi que empece el año con una para mí nueva (de segunda) impresora. Como no tengo Spectrum que funcione (ni interface paralelo, pues nunca le compré una) ahora lo unico que me quedaba era probarla con mi PC. La PC (una pentium 3, con windows 98) la reconocía, probé con Notepad, Wordpad, Word y ahora solo faltaba la prueba de fuego: "los emuladores". Aqui es donde hallé un tema que al parecer no todos los emuladores, ni los que los hacen, parecen haberse preocupado demasiado. De hecho no recuerdo foros donde se discutiese el tema de la emulacion de impresora. Y estos son los resultados de mis experimentos (en el 2006): REALSPECTRUM Primero elijo el Real Spectrum, el cual tiene, pulsando ALT+F3, acceso a las opciones de puertos de comunicación. El puerto paralelo solo puede ser seleccionado a LPT1, LPT2 o un TXT. El serial a COM1 - COM4 o un ¿archivo BIN? Sí, asi es, un archivo ´serial.BIN´. Su rango de baudios es por defecto 9600 bps, siendo el mínimo 150 y el máximo 115200 bps a elegir. Selecciono LPT1 paralelo y pruebo el modo 48k. Tipeo CIRCLE 100,120,40 y luego COPY. No pasa nada. Pruebo el modo 128k y nada. Tampoco el +2. Paso al +3 y esta vez si envía a la EPSON pero solo en +3 modo, puedo redirigir Lprint, Llist y Copy. Sigo con el Didaktik y nada. El Pentagon tampoco, nada. Llego al Scorpion y este sí trabaja tanto en modo 128k como 48k, sólo que este último manda una elipse en vez de circulo, pero manda algo. Vuelvo al modo 48k y esta vez pruebo con las interfases que se supone añaden el puerto paralelo como son Wafadrve, Opus D, Disciple y +D. El Wafadrive no manda nada, y el Opus a lo más, manda los datos a un TXT. Paso al Disciple rom de 16k, pero en vez de COPY, debo usar SAVE SCREEN$, al hacerlo, obtengo un feliz cuelgue. Inserto un disco IMG con el SYS configurado para la Epson. Ahora sí imprime correctamente sin cuelgues. Pruebo ahora el +D, obtengo un galimatias y en cuanto a listados, todo sale en una misma linea sin LF ni CR. Reemplazo la rom de 16k por la de 8k que me pide el disco con +Dsys. Lo instalo y ahora si puedo usar LLIST y LPRINT que hasta envian los signos de libra y (c). SAVE Screen$ 1 envia una copia aplastada en los polos del circulo, pero SAVE Screen$ 2 imprime una imagen ampliada solo dos tercios de la pantalla, aunque el circulo sale bien redondo y enorme. SPECTACULATOR 5.3 Paso ahora a Spectaculator version 5.3. Entro en las opciones y veo la configuración de puertos de comunicaciones. Como el RealS tiene dos opciones: paralelo y serial, pero a diferencia del RealS, aqui si puedo elegir a que tipo de dispositivo quiero enviar o redirigir los datos, pero con ciertas limitaciones que menciono a continuación. El modo paralelo es solo para +2a/b y +3, pudiendo elegir ya sea LPTx ó COMx, e incluso un archivo ´x´ para volcar mi screen$. El modo serial es la propia del 128k+ y +2, pero también aceptada por el +2a/b y +3 con las mismas opciones del paralelo. Pero solo para escritura. El Interface 1 solamente puede redirigir sus dos puertos seriales a COMx o a un archivo ´x´ tanto de entrada como de salida; pero no redirige al puerto paralelo como en el caso anterior. El ZX Printer es mas bien una impresora virtual, al que se envían primero los datos, antes de volcarlos al papel via la impresora cualquiera que sea que esté conectada a la PC. Todos los modelos 128k envian copias exactas de la pantalla con COPY pero no los signos de libra y (c). La imprimante zx virtual envia solo copias reducidas de las pantallas pero los circulos no salen achatados como con el +D en el RealS. SPIN Sigo con Spin, tambien tiene una ZX printer virtual como Spectaculator, pero que manda volcados de pantalla mucho mas pequeños y encima con los circulos aplastados. Aparte la ZX printer, no logro que ningun modelo emulado envie nada de nada. WARAJEVO Finalmente pruebo con Warajevo. Entro en el Setup y elijo Printer. Solo tiene emulacion de impresora ZX pero ofrece 5 modos: No emular, Epson normal, Epson grande, HP normal y HP grande. Solo tengo una Epson, asi que empiezo con normal. Pulso F10 y luego hago el CIRCLE de siempre y al toque hago COPY. La EPSON hace una copia del mismo tamaño que la generada por Spectaculator en modo ZX printer pero mas fina en sus lineas y sin achatar la imagen como el +D en RealS. Pongo la emulacion ahora en modo T/S-2068 y con el mismo exitoso resultado. Vuelvo al Setup y elijo esta vez Epson grande. Retorno al modo 48k, y el resultado es que la EPSON dibuja un medio circulo y el emulador se me cuelga con el siguiente mensaje: "Dos programas intentaron usar la impresora a la vez creando un problema" o algo asi. Vuelvo al Epson normal y pruebo tanto en 48k como TS2068 esta vez con: 10 Lprint "probando" 20 Llist 30 Print #3;"Ok." El resultado es curioso, pues la pantalla da OK, pero la Epson tarda un rato en recibir e imprimir el texto. Interesantemente tambien acepta los signos libra y (c). Debido a que el modo 128k compagina de otro modo, no es posible usar la ZX p. ya que de intentarlo obtengo tambien un bonito cuelgue. Z80 Permite leer desde un dispositivo COMx o un archivo de disco solo con el IF1 serial y enviar a COMx, LPTx o archivo de disco tanto el IF1, como el +D en paralelo. Reconoce la EPSON en LPT1. WINZ80 Simula el serial, pero solo admite lectura y escritura mediante un archivo con extension '.SAV'. Ambos emuladores pueden leer sin problemas los archivos creados por los otros emuladores como RealS o Spectaculator. CONCLUSION: nunca usaré Spin a menos que quiera imagenes muy reducidas de la pantalla. En RealS solo imprimir con el 48k si uso el +D o el Scorpion con las mencionadas limitaciones. Ahora ya tengo algo que pedirles a los que hacen emuladores de Spectrum y es que logren que Lprint, Llist y Copy hagan volcados de pantalla independientemente del hardaware emulado o de la impresora que uno tenga. RealS me obliga a tener dos impresoras: una serial, si quiero trabajar en modo 128k y +2 y otra paralelo para +D, +2a/b o +3 y Scorpion. El emulador X128 tampoco emula impresora alguna, ni Klive, ZX-32 o Emu-Zwin 25. Y eso fue en aquel entonces, faltó probar otros emuladores que veremos ahora: Parte III LOS EMULADORES HASTA EL DIA DE HOY Actualmente estoy usando una impresora HP DESKJET ink advantage 1515 con conector USB y una PC HP con Intel Core2duo y Windows 8.1 de 64b. En realidad trabajo con 4 versiones de Windows, por razones de compatibiliodad, los otros son Windows 8 de 32b, XP en inglés y XP en español (esta última tiene el Virtual PC 2007 con W98 y 2k).Y todo en una sola PC. Y ya que lo mencioné, el Virtual PC adolece del mismo problema que todos los emuladores antes mencionados. Sus opciones de impresora son LPT a LPT. Tiene dos COM que van a COM, una dirección PIPE o un TXT. Así que estoy igual. Habría que usar otro que si reconozca y redirija todo a la impresora USB por defecto en el HOST. Y ahora si pasamos a ver los emuladores que les siguieron a los ya antes mencionados: EIGHTYONE 1.xx Como Spectaculator y Spin, ofrece emulación virtual de la imprimante ZX. Al elegir el Opus Discovery, se accede a las opciones de su puerto, que son las de usar un TXT, el conector COM1 o LPT1. Lo mismo pasa al seleccionar el +D o Disciple. Igual si selecciono +2a o +3. El IF1 ofrece iguales opciones pero con la posibilidad de elegir lectura y escritura o envio de datos. Curiosamente no pasa nada si elijo el +2 o el 128k, considerando que estos modelos tienen conector serial incorporado. Eso al parecer no fue emulado. El T/S-2068 también acepta y envia al ZX printer virtual. Lo más raro, y a diferencia de Spectaculator, EightyOne permite usar la ZX incluso con los +2a y +3 en modo 48k, a pesar de que estas máquinas no fueron diseñadas para conectarla y emplearla. Un extra de este emulador es que añade la rareza del modem de Timex, el TS-2050 con opciones similares al serial del IF1. SPUD 240 también ofrece una versión virtual de la impresora ZX. Nada más. SPECCY 46 Tiene emulación para ZX, ts-2040 y Alphacom32, pero manda todo a un TXT, de un modo muy singular. No es precisamente lo que esperaba. ZXspectrum4net Solamente ofrece emulación virtual de la ZX, si uno se registra. SPECTACULATOR 8.x Añade a las opciones que ya ofrecia la version 5.3, la de enviar los datos al clipboard. También incluye opciones similares para la impresora del +D. Pero nada de reconocer o mandar los datos a una imprsora USB. FUSE Aunque dice ofrecer emulación para todas las impresoras que uno pueda conectarle a un Spectrum real y eso debe incluir la impresora ZX, y las seriales del ZX IF1, 128k y +2, así como el paralelo del +2a y +3... la verdad es que ni ofrece opciones para elegir el dispositivo (LPTx o COMx) o usar un TXT. La excepción parece ser el RS232 del serial del ZX IF1 que envia a un fichero para RxD y TxD, siempre que esté seleccionado en el menú de opciones generales de periféricos, el cual ofrece también 'impresoras emuladas' y la ZX. Dilema: FUSE devuelve el error de "aun no implementado" cuando trato de abrir los ficheros para serial IF1. Así que queda descontado. No he probado la versión de Linux así que no se si esa versión si reconoce la impresora que uno tiene. La versión Windows no. A ver si un día lo hace. ZESARUX Hay que ir a la emulación de impresora en hardware. Ahí uno sólo encuentra la impresora ZX, que hay que activar. Entonces uno tiene como opciones crear un fichero BMP, un TXT mediante OCR o usar el COPY de la ROM. Es todo. Hasta el momento de escribir estas notas no hay más opciones. BASIN Ofrece también una imprimante ZX virtual y una opción para imprimir, ya sea el listado del programa, la pantalla o lo que se ha enviado al ZX virtual. Siendo un programa para WINDOWS, reconoce cualquier impresora conectada a la PC. SIMCOUPE Hay que ir primero a opciones, luego paralelo, elegir un puerto para impresora y entonces decidir si se quiere enviar a un TXT por defecto o a cualquier dispositivo previamente conectado a la PC. Este emulador si que fue pensado para los tiempos modernos, no se limita a LPTx o COMx, reconoce cualquier equipo instalado en la PC, incluidos los de USB. REALSPECTRUM EDICION ANIVERSARIO Vuelvo a retomar el RealS y esta vez pruebo su emulación de la interface paralelo MULTIPRINT. Y el resultado fue: Voy a la opción Interfaces, la activo y selecciono Multiprint. La pruebo y... Funciona correctamente en un 48k y 16k. Solo funciona en modo menu con el 128k, correctamente en modo 48k. Pasa igual con el +2. Al ir al +2a o al +3, se autoactiva el MULTIFACE 3. No funciona con el Pentagon. Innecesario con Scorpion. Funciona bien y complementa con el Didaktik Kompakt. En suma: el emulador no logra que Multiprint capture las ordenes LPRINT, LLIST y COPY en los modelos 128k y +2, solo funciona bien en modo 48k. Muchas rom clonicas como la rom del OPEN SE Basic no redirigen nada y se cuelgan al pulsar el botón que accesa el menú de opciones de la interface. Esto incluye a la JGH.rom, y la rom del no oficial +4. Multiprint no es accesado cuando está el MB-02+ conectado. Un detalle más: El fichero por defecto al que envía la opción paralelo es "printer.txt". Podemos crear tantos de estos ficheros con diferente nombre como queramos, pero desaparecen si uno no imprime nada antes de cerrar RealS. Lo mismo sucede con el fichero del rs232 que es "serial.bin". RESUMIENDO: Ninguna interface para impresora ha sido emulada, supongo que es debido a que hay demasiadas para escoger. Multiprint solo existe en REALSPECTRUM. La ZX solo es virtual en Spectaculator, Spin, EightyOne, Spud y Basin. Sólo Warajevo la emula redirigiendola a una EPSON conectada a la PC, mientras que Zesarux lo manda todo a un fichero del disco. La serial del ZX IF1 solo es emulada por Z80, Spectaculator y EightyOne con opciones muy similares entre sí. El paralelo del +D originalmente solo fue emulado por RealS y Z80. Luego le seguirían EightyOne y Spectaculator con su versión 8. CONCLUSION FINAL: estamos en pleno siglo 21, en la era de las impresoras con toma USB y la gran mayoria de emuladores sigue anclada a elegir entre LPTx y COMx, o simplemente no las implementan para nada. Habrá que ver si llegan a actualizarlos, para que reconozcan y accesen a la impresora sin importar cual es la que uno tiene conectada a su PC. Sí, ya sé, muchos dirán, "yo solo quiero seguir jugando mis juegos de antaño", otro dirán, "me interesa más crear nuevos juegos", logicamente "para qué seguir usando TASWORD 2 en un Spectrum, cuando ahora tenemos Windows 10 y OFFICE WORD", pero yo aun siento que esas sentencias deberían seguir pudiendo usarse aunque solo sea por nostalgia. Pero sin acceso a una impresora real... son realmente inútiles. (c)2018 zx_if1@hotmail.com