© A.Korolev
PUERTO #FF EN "HARDWARE" RUSO...
Esta nota está dedicada a un artículo fugaz de Kirill Gromov en SPECTROFON sobre "los ordenadores que elegimos", en particular el tema del llamado puerto de atributos #FF.
Advertiré de antemano a los propietarios de ordenadores que tienen tal "accesorio" que no tienen de qué preocuparse, pueden leer esta nota simplemente así — "para su desarrollo general". Bueno, y los afortunados propietarios de "Leningrados", "Moscú", "PENTAGONob" (y el autor tiene uno) simplemente están obligados a leer qué les espera si hacen "el esquema de Kirill Gromov"...
El autor de este artículo instaló el esquema "del puerto" en su pecaminoso "PENTAGON-128", y los siguientes cálculos están basados en datos reales obtenidos al investigar el funcionamiento del dispositivo.
Para los que no están familiarizados (es decir, no han leído el artículo de K. Gromov en SPECTROFON N15) — un desvío lírico: El Puerto #FF es un dispositivo externo ficticio que existe en el SPECTRUM-48. De hecho, este puerto en SPECCY no fue desarrollado específicamente, se "formó" gracias a la originalidad de la circuitería del SPECTRUM.
Desde un punto de vista lógico, en este puerto se "suministra" el código del atributo de color que se muestra en ese momento: o, en su defecto (es decir, cuando el controlador de video muestra el BORDER) el estado del bus de datos no ocupado (byte #FF).
Reitero, así debería "funcionar" el "puerto" estándar de atributos. Ahora sobre por qué la palabra "puerto" está entre comillas. Como se mencionó anteriormente, este dispositivo se forma gracias a los "trucos" de la circuitería: el controlador de video y el microprocesador utilizan un bus de datos común. Cuando el usuario intenta leer el puerto #FF, ningún dispositivo "legal", real está conectado al bus de datos, el bus de datos está en un estado libre. Pero puede suceder que en el momento de la lectura, en el bus esté el código del atributo de la posición, y precisamente este será leído (o debería ser leído).
En general, estas cosas bastante extrañas deberían ocurrir también al intentar leer no solo el puerto #FF, sino cualquier puerto no utilizado en el ordenador. No sé por qué, pero el puerto número #FF es el número comúnmente aceptado de este dispositivo exótico.
Pero, como se dice, "volvamos a nuestros corderos". El autor tiene grandes dudas de que en nuestro país cada "sinclairista" tenga un ordenador de marca. Por lo tanto, en los esquemas nacionales (excluyendo SCORPION, PROFI y tal vez ATM-TURBO) este dispositivo está completamente ausente, y del puerto #FF siempre se lee el byte #FF. A los que deseen comprobar su SPECCY en busca de la presencia del puerto, puedo proporcionar un programa simple en Basic:
10 PRINT IN 255:" "::GOTO 10
Si ejecutan este programa y ven que la pantalla se llena completamente de números 255 — sepan que su querido Spectrum tiene problemas con el puerto de atributos, y algunos programas (SHORT CIRCUIT, ARKANOID 1), que utilizan las capacidades potenciales del puerto para sincronizar la salida gráfica, al ser ejecutados en algún "artesanal" nacional, llevarán a un "bloqueo".
El esquema presentado en SPECTROFON y mostrado a continuación, en principio es funcional. Pero tiene (como siempre) algunas desviaciones en su funcionamiento. Por lo tanto, como un verdadero investigador-hacker, me apresuro a compartir algunas observaciones sobre el funcionamiento de este esquema.
1. Comenzaré con lo principal: después de instalar el esquema del puerto, con el ordenador NO HA OCURRIDO NADA MALO, lo cual ya es un alivio — si desean instalar este esquema — instálenlo, no será peor.
2. Desde el puerto #FF se leen "con éxito variable" #FF o el byte del atributo de color, como debería ser un "puerto normal" de atributos.
3. Si se lee insistentemente desde el puerto #FF, habiendo llenado previamente la pantalla con un solo color (por ejemplo, el marco y el papel son negros, la tinta es blanca, el brillo y el parpadeo están apagados), entonces además de los valores intermitentes #7 y #FF, también aparecerán otros valores — por ejemplo, en este caso leí #7F. Al crear un programa analizador especial, mediante prueba y error — después de múltiples ejecuciones, se obtuvo lo siguiente: la probabilidad de leer un código "ilegal" en lugar del código del atributo de color, excluyendo los valores #FF, se aproxima a 1/192. Es decir, en promedio, por cada 192 "no #FF-valores" hay uno "ilegal".
Experimentando con el color de la pantalla, también noté patrones entre el byte del atributo y los números "ilegales" leídos desde el puerto. Por ejemplo, además de #7F, leí: #5F, #77, #F7, #DF, #4F, #CF, #EF, #E7, #C7... Al principio estaba perplejo, pero tras revisar todos los 256 códigos de atributo, creando tablas de correspondencia entre los atributos y los datos "ilegales" leídos, descubrí "al final de la pluma" la razón del "fallo" de este esquema.
Explico: la información incorrecta del puerto #FF se leerá en aquellos momentos en que el controlador de video pasa directamente de mostrar el BORDER a mostrar el área de dirección de la pantalla (es decir, la imagen), y cuando se emite el atributo de la posición desde el lado izquierdo de la pantalla (columna 0).
El registro del puerto #FF (microchip K5SSUP23) se conecta al bus de datos mediante la señal POLE ATTR, que está activa al mostrar atributos. Los bits individuales de este registro, bajo la señal POLE ATTR, deben conectarse a los bits correspondientes del bus de datos SIMULTÁNEAMENTE, pero nosotros, que vivimos casi en el tercer milenio, sabemos que en el mundo no hay nada perfecto, y los bits del registro, naturalmente, se conectan al bus no al mismo tiempo, sino en diferentes momentos.
Por supuesto, la falta de sincronización en la conexión es catastróficamente pequeña, pero como se ha demostrado, es bastante probable que el microprocesador lea un atributo que aún no se ha formado, y algunos bits de este atributo aún permanezcan establecidos. Este fallo depende completamente del microchip específico del registro. Por ejemplo, en mi registro, los bits más "lentos" son 0, 1, 2, 6. En alguien más podría ser completamente diferente.
Una persona experimentada en circuitos me preguntará: — "¿Y cómo funcionan correctamente los puertos de entrada/salida, transmitiendo información de manera inequívoca y que consisten en registros similares?" ... Y yo responderé que la situación estándar de lectura desde un puerto de entrada en un sistema microprocesador Z-80 se determina por las señales activas del microprocesador RD, IORQ, y el estado del bus de direcciones, en el que se encuentra la dirección del puerto de entrada.
El microprocesador hace hardware un retraso correctivo antes de leer información del bus de datos precisamente para que todos los bits de datos puedan formarse correctamente. El puerto de entrada, mediante las señales activas RD e IORQ, así como la dirección en el bus de direcciones, conecta su registro al bus de datos y emite información, hasta que alguna de las señales de control se vuelva pasiva.
En nuestro caso con el puerto #FF según el esquema de Gromov, ninguna de estas señales es controladora para el registro del puerto de atributos, y por lo tanto este registro "lanza" al bus de datos códigos de atributos, sin preocuparse en absoluto de si el microprocesador quiere leer algo desde algún puerto... De ahí los bytes "ilegales".
No sé, tal vez en el SPECCY de marca también haya tales casos, pero aún así, si desean utilizar el puerto de atributos con tal implementación, tengan en cuenta que se pueden leer atributos incompletos.
Me atrevo a afirmar que Kirill Gromov "olvidó" un pequeño detalle en su esquema, a saber, que en su esquema no se tiene en cuenta la señal del microprocesador IORQ. Si se conecta el registro del puerto al bus mediante dos eventos (IORQ = 0 Y POLE ATTR = 0), ¡los errores descritos anteriormente en el funcionamiento del puerto desaparecerán!
En conclusión, presento un esquema alternativo del puerto. Su base fue tomada del esquema en SPECTROFON N15. Si nuestro lector de Samara desea instalar el puerto de atributos, después de leer esta nota, puede elegir entre dos opciones. Creo que "nuestra" opción será más correcta. Las quejas sobre el funcionamiento del "original" pueden ser enviadas a Moscú, al autor de este "accesorio" K. Gromov (¡si logran encontrar su dirección!).
Así que sobre el esquema:
Las designaciones de los pines de entrada y salida del microchip se dan para el esquema PENTAGON-128.
Las señales de entrada del registro se conectan a las salidas correspondientes del registro de atributos del controlador de video. Las salidas del registro se conectan al bus de datos del microprocesador a través de resistencias (¡obligatorio!). Esta conexión se llama "montaje O", es decir, si el bus de datos está ocupado por otro dispositivo, este registro no tendrá conflictos con otras fuentes, y no introducirá distorsiones en la información en el bus de datos.
La señal de reloj del registro se conecta a la entrada de reloj correspondiente del registro de atributos del controlador de video, y la señal POLE ATTR se conecta a IORQ a través de diodos KDS22A conectados en inverso, realizando así la conexión del registro solo en el momento de la lectura de datos por el microprocesador.
Es mejor tomar la señal IORQ del microchip DD50 (pin 8 K5SSLE1) o incluso del Z80 (pin 20).
La señal POLE ATTR se puede tomar de los multiplexores que forman señales RGB (m/s D47, pin 2).
El bus de datos debe estar necesariamente "tirado" a +5V a través de resistencias de 10 KΩ, pero esto seguramente ya está presente en su ordenador.
Vea el esquema:
┌ ┌--┬--┬--┐ ┐
de re- │ --3┤D0│RG│Q0├2--▓▓▓-- │ Al bus
gistro │ --4┤D1│ │Q1├5--▒▒▒-- │ de datos
de atri- │ --7┤D2│ │Q2├6--▓▓▓-- │(a 2,5,..
butos ┤ --8┤D3│ │Q3├9--▒▒▒-- ├ DD39)
(de 2, │ -13┤D4│ │Q4├12-▓▓▓-- │
5,..,19│ -14┤D5│ │Q5├15-▒▒▒-- │
DD80) │ -17┤D6│ │Q6├16-▓▓▓-- │
│ -18┤D7│ │Q7├19-▒▒▒-- │
└ ├--┤ │ │ ┘
de 11 D40 -11┤C │ │ │ R0-R7 (820 Ω)
"C3" ├--┤ │ ├10 - carcasa
├--┤ │ │
IORQ ┼>┼┬--1┤OE│ │ ├20 - +5V
Microchip K5SSUP23 o K5SSUP22
Diodos (en el esquema "┼>┼") KDS22A
Para el esquema PENTAGON-128, es conveniente colocar el microchip sobre el m/s DD80, conectando en paralelo las entradas, la entrada de reloj y la alimentación a DD80, las salidas 2,5,..19 se conectan a través de resistencias a las salidas correspondientes de DD39 (está cerca - en diagonal), la señal POLE ATTR "C5" se puede tomar del m/s DD77, que está en la diagonal opuesta a DD80.
Como resultado, la longitud máxima de los cables de conexión será de 3 cm, lo cual es muy relevante para la inmunidad a interferencias del sistema. Así que hagan el esquema, disfruten de otra pequeña victoria en la batalla por la compatibilidad.
__________________________________________
* * * * *
Contenido de la publicación: Oberon #01
- Introducción
Introducción al primer número de Oberon, una revista electrónica de Samara creada por el grupo STARS OF KELADAN, pensada como alternativa a SPECTROFON, centrándose en la profesionalidad en programación.
- Pergamino
Análisis de problemas de software en los juegos de ZX Spectrum presentados en 'SPECTROFON', específicamente 'SPACE CRUSADE' y 'REBEL STAR'. Discusión sobre los fallos de los programas, intentos de hackeo y falta de pruebas. Crítica a la gestión de la calidad del software de la revista 'SPECTROFON'.
- Pergamino
Descripción del ZX/IBM Editor v1.0 con análisis detallado de sus funciones, como la navegación por menús, operaciones de archivos y compresión de texto. Discute la compatibilidad con varias unidades de disco y la adaptación para máquinas de 128K. Proporciona información sobre limitaciones y actualizaciones realizadas en la versión 1.5D.
- Reseña
El artículo aborda el software disponible en ZX-Club, incluyendo reseñas detalladas de Animation 2.0, un paquete para crear comerciales simples, y el juego 'País de Mitos', un juego del género Dungeons & Dragons. Se destaca 'Insult Megademo' de Code Busters por su música y efectos de video, advirtiendo sobre problemas de compatibilidad para ciertos ordenadores. Se enfatiza la importancia de comprar solo software adecuadamente probado para evitar problemas.
- Reseña
Análisis del software distribuido por 'INFORCOM' resalta problemas en programas como STS, TASM128 y VIRUS, criticando sus fallos técnicos y afirmaciones de marketing. El artículo cuestiona la calidad y legalidad de estos programas, mientras ofrece soluciones alternativas. Refleja sobre los desafíos en el desarrollo y distribución de software para ZX Spectrum.
- Sobre Todo
Discusión sobre trucos y errores de programas ZX Spectrum, mencionando experiencias y comentarios de usuarios, con especial enfoque en juegos y desafíos técnicos.
- Programa Educativo - Paul Atrides
Discusión sobre la etiqueta en la programación y la necesidad de un conocimiento integral más allá de las habilidades de codificación, con ideas históricas sobre la informática.
- Hardware - Александр Королёв
El artículo trata sobre el puerto de atributos #FF en clones rusos de ZX Spectrum, sus peculiaridades y problemas potenciales con el esquema de Gromov. El autor ofrece una versión revisada del esquema, ofreciendo mejoras para una mejor compatibilidad. Esta nota técnica está dirigida a los entusiastas que desean mejorar sus sistemas.