ALK'96
¿CÓMO CORREGIR INT?
══════════════════════════════════════════
Hoy en la sección "HARDWARE" abordaremos un tema doloroso relacionado con (¡una vez más!) la imperfección de nuestros esquemas nacionales de SPECTRUM. Resumiré la esencia del problema: cualquier usuario de "Leningrados", "Pentágonos", "Angstrems", etc., estando en pleno uso de sus facultades, ha notado repetidamente algunos "glitches" en programas como VENOM STRIKES BACK, MONTE CARLO CASINO, SHOCK MEGADEMO (MULTICOLOR, GREETINGS), CHASE H.Q.128... - esta lista se puede continuar con un montón de trainers para varios juegos.
En algunos programas se pueden observar desapariciones periódicas o "temblores" de los sprites en movimiento, en otros diversas líneas en el BORDE están desplazadas hacia arriba, aunque lógicamente deberían estar un poco más abajo.
...Todo
esto,
como
se dice,
el
efecto
efecto externo
Ahora intentaré explicar por qué "esto" sucede. Todos los efectos "glitcheados" "en ellos" (es decir, en el extranjero) se escriben, por regla general, en SPECTRUMax originales. Tales efectos se realizan de forma sincrónica con la exploración de cuadros de la señal de televisión: este método es necesario para lograr la "suavidad" y "uniformidad" de los movimientos de los sprites, de las líneas en movimiento, etc. La sincronización de los programas de redibujo de objetos con la exploración de cuadros en SPECTRUMax se logra colocando estos programas en el manejador de interrupciones enmascaradas, o ejecutándolos en un ciclo después del comando de microprocesador HALT (lo cual, en realidad, no cambia la esencia). Las interrupciones enmascaradas ocurren de forma sincrónica con la exploración de cuadros a una frecuencia de 50 hercios: en la entrada INT del microprocesador llegan cortos pulsos a esta frecuencia. Se sabe lo siguiente: una interrupción enmascarada en PENTAGON ocurre al mismo tiempo que el pulso de cuadro, es decir, el procesamiento de la interrupción comienza al mismo tiempo que se construye un nuevo cuadro. En el SPECCY original, la señal de interrupción "se retrasa" con respecto al pulso de cuadro por un tiempo aproximadamente igual a la construcción de dieciséis líneas de trama.
Los programas desarrollados en "computadoras" originales están "ajustados" a un INT "desplazado" con respecto a los cuadros, por lo que, al ejecutarse en SPECTRUMax no estándar, "mostrarán" al observador la imagen en los momentos en que se produce el redibujo del sprite (se refiere al redibujo programático, que no coincide con el redibujo de hardware del cuadro de TV). Y esto se refleja en una imagen que aparece parcialmente "desaparecida" o "reducida" a una línea.
Si en el programa se prevén efectos de BORDER como MONTE-CARLO, entonces en "malas" computadoras esto aún se puede tolerar - piensas, líneas en la parte superior, pero funciona, ¿y qué pasa con los MULTICOLOR?
--------------------------
Un desvío lírico...
Para aquellos que no saben,
qué es MULTICOLOR ,
aclaro: es una técnica para obtener varios colores -
más de dos simultáneamente en
un solo lugar. Este efecto
se logra mediante
UNA sincronización completa de la computadora con la exploración de línea de la señal de video, y esto
se logra a su vez
sincronizando con los cuadros
a través de las señales INT-interrupciones
- no hay otro método en SPECTRUMe simplemente no existe.
Naturalmente, si tu computadora tiene una fase INT-signal no estándar, verás en lugar de una impresionante maravilla algunas bandas de color anchas, parpadeando casi de manera aleatoria. En términos generales, el funcionamiento normal
de los efectos MULTICOLOR-depende no solo de la fase correcta INT-signal, sino también de el esquema de formación de líneas de trama en la computadora - a este problema volveré un poco más tarde... ----------------------------------------- Cuando me encontré por primera vez con el efecto BORDER en el programa VENOM STRIKES BACK, que, como adivinaste, no funcionaba correctamente, lo acepté, pero cuando vi (o más bien no vi correctamente!) SHOCK MEGADEMO, y específicamente MULTICOLOR en la forma en que lo perciben los artistas abstractos, y GREETINGS, que no pude distinguir en la pantalla en absoluto - mi paciencia se agotó...






Un mes de búsqueda de la solución óptima resultó en un pequeño esquema, que se presenta un poco más abajo. La esencia del funcionamiento de este dispositivo radica en retrasar las solicitudes de interrupciones enmascaradas que llegan desde el circuito de la computadora a la entrada INT del microprocesador por una cantidad estrictamente determinada. El valor del retraso temporal puede ser ajustado. El esquema se conecta en la interrupción entre la entrada INT del microprocesador y el resto del circuito de la computadora. Chips: DD1 - К5SSTM2, DD2 - К5SSЛН1 o К5SSЛН2, DD3 - К555ЛАЗ, DDЧ,DDS - К5SSUE7, DD6 - К5SSЛА2, se pueden usar tanto chips de la serie 155 como de la 1533. Diodos: VD1,VD2 - КДS22Б. Condensadores: C1 - 10n, (puede cambiarse durante el ajuste), C2 - 1n, C3 - 10n. Resistencias: R1,R2 - 180 Ohm, R3,R4 - 1 KOhm. Distribución de la tensión de alimentación: +5 voltios al pin 14 de DD1,DD2,DD3,DD6, al pin 16 de DDЧ,DDS, "cuerpo" al pin 7 de DD1,DD2,DD3,DD6, al pin 8 de DDЧ,DDS. ----------------------------------------- Ajuste del esquema. El esquema se puede lograr ensamblar en una placa de fibra de vidrio de una sola cara de tamaño 25x75 mm. No es necesario realizar un montaje impreso - todas las conexiones se pueden realizar con un cable multifilar MГТФ. Para facilitar el ajuste, conecta las salidas de los contadores DDЧ,DDS a la m/s DD6 con cables largos, también es necesario soldar cables a las salidas no utilizadas (según el esquema) de los contadores - pueden ser necesarios. Las entradas libres (y las utilizadas también) de la m/s DD6 deben conectarse a +5V a través de resistencias de 1 KOhm. A todas las entradas de DD6 también se les sueldan cables. Todos estos preparativos no afectan a la conexión del pin 3 de DDЧ con el pin 1 de DD6 - esta conexión se puede hacer de inmediato sin cables de extensión - en el proceso de ajuste no será necesario romperla. Es recomendable instalar el condensador C1 a cierta distancia de los cuerpos de los chips, para reducir la influencia de los cambios en la temperatura del aire, al mismo tiempo no es necesario alejarlo demasiado - tendrás que buscar un compromiso razonable. Después de ajustar el esquema, toda la placa debe ser apantallada con algún tipo de carcasa metálica, la carcasa debe conectarse al terminal negativo (de la carcasa) de la fuente de alimentación. Sin embargo, no es necesario apantallar la placa - pero esto afectará la estabilidad del tiempo de retraso. Una vez ensamblado el esquema, se conecta (¡respetando la polaridad!) a las líneas de alimentación de la computadora. La pista de contacto que conduce al pin 16 de Z-80 (INT) se corta y en la interrupción resultante se conecta el esquema. Se puede hacer más fácil - si en tu computadora Z-80 está instalado en el panel, al sacarlo con cuidado de allí, se dobla el mismo pin 16, y se vuelve a colocar el procesador en su lugar, la conexión del esquema en este caso consiste en soldar la entrada del esquema a la pista de contacto, y la salida al pin 16 libre del procesador. Si eres (¿afortunado?) propietario de un PENTAGON o "Leningrado" con un coprocesador musical que "se añadió" sobre la placa base, entonces considera que tienes mucha suerte - no necesitas "torturar" al procesador y a la placa de la computadora, simplemente saca la placa del coprocesador y dobla el pin 16 del conector de expansión, suelda la salida del esquema a él, conecta la entrada como en el caso anterior, y luego coloca la placa del coprocesador en su lugar. ----------------------------------------- Ajuste del esquema. Una vez que la "inserción" del esquema en la computadora se ha completado, asegúrate de que todas las conexiones se hayan realizado de acuerdo con el esquema, que el interruptor SA1 esté en la posición superior (según el esquema). Para el primer arranque, es recomendable conectar las salidas de los contadores DDЧ,DDS a las entradas de DD6 como se muestra en el esquema. Antes de encender la computadora, asegúrate de tener disquetes con programas "sospechosos", en los que, en tu opinión, se observan "glitches". Reúne al menos cinco de esos programas y enciende tu "comp". Si después de encender la computadora responde a tus pulsaciones de teclas, se puede afirmar con confianza que el esquema funciona normalmente. Si, por el contrario, el teclado no responde, intenta hacer clic en el interruptor SA1, si después de esto el teclado "revive", tendrás que buscar errores en las conexiones del esquema ensamblado, de lo contrario - has "quemado" algo dentro de la computadora, acepta mis condolencias en este caso. Así que, cargas algún programa, es preferible que utilice algún efecto de BORDER. Haz clic en el interruptor y observa el BORDER, si después de encender el interruptor en la posición "superior" las bandas se desplazan hacia abajo, se puede afirmar con aún mayor confianza que el esquema no solo funciona normalmente, sino que también cumple con sus deberes directos. La regulación del tiempo de retraso se reduce a establecer la cantidad óptima de puentes entre las salidas de los contadores DDЧ,DDS (3, 2, 6, 7) y las entradas del elemento 8Y-NO (DD6 - 2, 3, 4, 5, 6, 11, 12). Cada puente instalado tiene su "coeficiente de peso" de retraso en el tiempo, así que para cada puente inferior (según el esquema) el peso del retraso aumenta aproximadamente el doble en comparación con el puente superior. "Jugando" con los puentes, notarás que agregar cada nuevo puente aumenta el retraso (desplaza el efecto BORDER hacia abajo) y viceversa, además, los puentes "inferiores" tienen un mayor impacto en el tiempo de retraso. Si como resultado de los experimentos con los puentes no logras establecer con precisión el valor del retraso, tiene sentido "jugar" con el condensador C1, cambiando su capacitancia en el rango de 8 a 20 nanofaradios - en este caso se puede ajustar el retraso con mucha precisión.
...
Aquí es donde llegamos a lo más importante. Ajustando el esquema para el primer programa, y cargando otro, te sorprende notar que el efecto BORDER en el nuevo programa está desplazado. Esto se observa especialmente bien si ajustaste el esquema con el programa Academy (Tau Ceti II), y luego cargaste VENOM STRIKES BACK (quien no ha visto estos programas (???) - en ellos los efectos BORDER se encuentran en lugares opuestos en el BORDE - arriba y abajo). Esto se observa "muy bien" en el PENTAGON, que, como se dice, "no tiene frenos". Así que volvemos al problema de la exploración de líneas...__________________________________________
El problema de la exploración de líneas...
Resulta que nuestros SPECTRUMs caseros tienen otro "glitch" implícito.
Así, durante el tiempo de construcción de una línea de trama por el circuito de hardware del controlador de video (en el original ULA), la cantidad de ciclos del microprocesador para los SPECTRUMs "soviéticos" y "originales" es diferente. Así, los PENTAGONs logran realizar más operaciones que el SPECCY, y los SCORPIONs, por ejemplo, al contrario.
Esto se ve afectado por factores como la frecuencia de reloj real del microprocesador, así como la solución de hardware del controlador de video. La frecuencia de reloj real depende del grado de "WAIT"-ación de la computadora, es decir, de los retrasos de hardware en el funcionamiento del procesador. Tales retrasos, en general, son indeseables, pero por más paradójico que parezca, en el verdadero SPECTRUM existen estos retrasos del procesador. Se producen en el caso de que el procesador y ULA intenten acceder simultáneamente a la memoria de video - el procesador de acuerdo con el programa de acciones, ULA con el objetivo de leer un byte de memoria de video para mostrar en pantalla. En tal situación, se da preferencia a ULA, el procesador "se frena". Lo mismo ocurre si el programa está en el área de pantalla - su rendimiento se reduce en promedio un 25% en comparación con un programa "normal". Reitero, esto se refiere a SPECTRUMs estándar y a algunos modelos nacionales ("Leningrado", "SCORPION")... ¡Alégrense, afortunados (!) propietarios de PENTAGONs! ¡Todas estas líneas, dichas anteriormente, no se aplican a ustedes! "Pentágono" carece de estos "frenos". Los programas en "Pentágono" funcionan uniformemente en toda la memoria, y el pin WAIT del procesador no está utilizado en absoluto. Sin embargo, por todo hay que pagar... aunque sea porque los "originales" MULTICOLOR, incluso con el esquema publicado aquí, solo funcionarán en una parte de la pantalla (alrededor de 12 posiciones). En los "Leningrados", la imagen se verá mejor gracias a las paradas de WAIT del procesador, pero tampoco será perfecta. ----------------------------------------- Continuación de la configuración. Si has entendido lo que intenté explicar en el último "insert", entonces probablemente has comprendido que no hay medios para hacer que el "Pentágono" funcione como un verdadero SPECTRUM. Solo se puede aproximar la fase de la señal INT de modo que se puedan observar al menos parcialmente los "importados" MULTICOLOR y BORDER-SCROLLER. Por lo tanto, es mejor ajustar el esquema en el medio de la pantalla (MONTE CARLO) o en la primera línea de la pantalla, es decir, en la primera línea del área de pantalla (SHOCK MEGADEMO, MULTICOLOR). Hay otro "criterio" para ajustar la fase INT - por la ausencia de "temblores" en los sprites en CHASE H.Q.128 (menú principal), o por la "presencia" de la línea en movimiento en SHOCK MEGADEMO, parte de GREETINGS.
Así que, ajustando el esquema a tu gusto, puedes soldar puentes cortos en lugar de los de prueba, y desoldar los cables no utilizados. Las entradas de la m/s DDб, que solo estarán conectadas a +5V a través de resistencias, se pueden unir entre sí y conectar a esos mismos +5V a través de una sola resistencia.
----------------------------------------
Mejoras del esquema.
El funcionamiento del esquema de retraso se puede estabilizar si se coloca un resonador de cuarzo en lugar del condensador C1 a una frecuencia de 100-200 kilohertz. Pero en este caso, el "ajuste" del retraso solo se puede hacer "jugando" con los puentes. La precisión y el rango de dosificación del retraso se pueden aumentar si, además de los puentes, se utilizan inversores adicionales (ЛН1, ЛН2), conectándolos entre las salidas de los contadores y las entradas 8Y-NO DDб.
----------------------------------------
Síndrome de la MEGADEMO nacional. Todo lo dicho a continuación no ofende a nuestros coderob, tómalo como una constatación de un hecho... No es un secreto para nadie en nuestro país que la cantidad de SPECTRUMs originales, verdaderos, entre los usuarios nacionales se hunde literalmente en un océano de mutantes, ensamblados en lo profundo de la clandestinidad, estampados en producción en serie en varias uniones de producción. La palma de la cantidad de diversas "perversiones" la sostiene (¡todavía!) el "Pentágono". Existe una gran cantidad de MEGADEMs nacionales que PRINCIPALMENTE pueden funcionar correctamente solo en PENTAGON. Dejemos de lado el tema del "mítico" puerto #FD - es un problema global separado. Hay ejemplos en abundancia: ZY-ZY, INSULT, SATISFACTION, PSG-WINS, MENTAL MASTURBATION, ECSTASY,... ¿Qué se le va a hacer? ¡El PENTAGON se ha convertido en un estándar peculiar para "atar" MULTICOLORs! A algunos les parecerá extraño que el autor comience a divagar sobre nuestros MEGADEMs, cuando el artículo no es de esa índole. Y yo solo quiero decir que no es casualidad que en el esquema de retraso INT haya un pequeño interruptor SA1, que desconecta el esquema del procesador. Esto se hace precisamente para que se pueda ver MULTICOLOR normalmente, digamos tanto en SATISFACTION como en SHOCKe. Así que, en esencia, hemos llegado al final.
══════════════════════════════════════════
* * *
__________________________________________
En lugar de posdata: A quienes no les ha cansado leer esta tontería, puedo explicar en detalle cómo funciona el esquema descrito. Deberías tener una copia de este esquema en una hoja de papel y pasar la página...
----------------------------------------
Cómo "funciona" esto... Todo el esquema se puede dividir condicionalmente en cuatro grandes bloques:
1. Bloque de disparador (DD2.1, DD1.1, DD2.4, DD2.5, DD2.6, C2, R3, VD1):
2. Generador de pulsos (DDЗ.1-DDЗ.3, C1, R1, R2):
3. Esquema de conteo (DDЧ, DDS, DDб):
4. Formador de la señal de salida INT (DD2.2, DD2.3, C3, R4, VD2).
Con la llegada de una "solicitud" de interrupción "anormal" a la entrada DD2.1, el estado del disparador DD1.1 se establece en lógica uno. Esto dará lugar al inicio del generador de pulsos (5n.DDЗ.2=1) y desbloqueo del contador compuesto con estado inicial cero (14n.DDЧ, DDS=0). El generador está conectado a la entrada de acumulación (+1) del contador DDЧ.
Así que, el proceso de conteo comienza - en las salidas de los contadores DDЧ, DDS se "iteran" combinaciones de código en código binario de ocho bits. Este proceso continuará hasta que el esquema de coincidencia, ensamblado en la m/s DDб y los puentes que has colocado, "capture" la última combinación extrema de unos. Si además de los puentes utilizaste inversores adicionales (lo que es más correcto), la combinación de código extrema (y por lo tanto el valor del retraso) se determinará no solo por los primeros "unos" encontrados, sino también por los bits cero. Si aún no ha habido coincidencia, entonces en la salida DDб habrá lógica 1 - "no hay coincidencia".
Al coincidir la combinación requerida y la actual, en la salida se generará lógica 0. El hecho de que la salida DDб pase de 1 a 0 es registrado por el formador de pulsos cortos en los elementos DD2.2, DD2.3, C3, R4, VD2 - en la salida DD2.3 se genera la solicitud de INT "retrasada", que llega a la entrada INT del procesador.
Aquí hay que señalar que este formador repite completamente el esquema en PENTAGON, por lo que no hay razones para preocuparse por la longitud del pulso corto - será el mismo (se supone que normal), como antes.
Después de formar la señal de salida, el generador de pulsos continúa funcionando correctamente y con su siguiente pulso en las salidas de los contadores aparece otra combinación de código, una unidad mayor que la necesaria. En este momento, el esquema de coincidencia (8n.DDб) nuevamente da lógica 1 - "no hay coincidencia".
El hecho de que el esquema de coincidencia pase de 0 a 1 es "capturado" por otro formador de pulsos cortos (DD2.4-DD2.6, C2, R3, VD1), en cuya salida se genera un pulso de lógica 0. Este pulso lleva al disparador DD1.1 a su estado inicial - en la salida Q(5n.) se establece lógica 0, lo que detiene el generador de pulsos, en la salida no-Q(6n.) se establece lógica 1, que restablece los contadores DDЧ, DDS a estado cero. Después de esto, el esquema está listo para recibir una nueva solicitud... Y eso es todo.
Cabe señalar que en este esquema hay un inconveniente: el valor del retraso "fluctuará" en un intervalo de tiempo igual a un período del generador de pulsos. Por lo tanto, es deseable establecer la frecuencia máxima posible del generador, y ajustar los retrasos utilizando los puentes "más altos". Si en lugar del condensador C1 se instala un resonador de cuarzo, entonces no habrá problemas con "fluctuaciones".
----------------------------------------
¡Hasta la próxima!
══════════════════════════════════════════
* * *
Contenido de la publicación: Oberon #02
- Introducción
Introducción al segundo número de la revista Oberon, con información sobre sus retrasos y expansión del equipo. El equipo editorial reconoce malentendidos pasados y presenta a los colaboradores del nuevo número. Se ofrecen detalles sobre la distribución, las contribuciones y las características de interacción del usuario.
- Desplazamiento - Alex Noman
Manual del juego 'Peking', detallando controles, opciones de menú y estrategia de juego, involucrando emparejar cajas bajo limitaciones de tiempo.
- Desplazamiento
Empire 128 es un juego espacial estratégico donde los jugadores actúan como comerciantes enfrentándose a una invasión alienígena. El juego implica comercio, cumplimiento de misiones y exploración espacial. Requiere memoria de 128K y ofrece opciones de guardado en disco y RAM.
- Pergamino
Descripción de diversas naves espaciales, incluyendo especificaciones, sistemas de armas y propósitos. Cada modelo varía en velocidad, armamento y funcionalidad. Incluye notas sobre orígenes y usos.
- Revisión
Reseña de juegos y herramientas para ZX Spectrum: Double Xinox 128 presenta un giro moderno en Xonix con 80 niveles y nuevos desafíos. UFO 2: Terror in the Deep tiene varias versiones con mejoras y problemas observados. Shadow Dancer para ZX Spectrum muestra evolución gráfica pero mantiene elementos de jugabilidad clásicos.
- Revisión - Unbeliever
Análisis de la competencia de demos ENLIGHT de 1996 en San Petersburgo, evaluando participantes y resultados en diversas plataformas. Destaca logros y críticas de entradas destacadas. Proporciona perspectivas sobre la dinámica de la competencia y las demos del ZX Spectrum.
- Nuestra Respuesta
Comentarios de los lectores y respuesta del editor sobre el contenido de la revista, la necesidad de más gráficos y el estado de la distribución de software local en Samara.
- Sobre Todo
Crítica a la calidad del software Sinclair, preocupaciones sobre la mala programación que afecta la vida útil de las computadoras y comentarios sobre las prácticas del grupo CODE BUSTERS.
- Programa Educativo - Paul Atrides
Un examen detallado de las ocho etapas esenciales del desarrollo de software, desde la definición de requisitos técnicos hasta las pruebas y distribución. El artículo ofrece perspectivas sobre la necesidad de cada etapa y critica ejemplos mal ejecutados. Se enfatiza la importancia de una programación sistemática para proyectos de software comerciales y personales.
- Hardware
El artículo trata sobre problemas de sincronización en varios modelos Spectrum y proporciona una solución de circuito para corregir los retrasos de señal INT y mejorar el rendimiento gráfico.
- Anuncio - M.M.A
Introducción de una nueva columna destacando los trabajos de los programadores de Samara, detallando proyectos como ZX-WINWORD, UNRECOGNIZED FORMATTING OBJECT y DESIGNER ANALYSIS FUNCTIONS. ZX-WINWORD pretende ser un sistema de publicación para Spectrum, mientras que U.F.O. ofrece copias avanzadas de discos. DESIGNER ANALYSIS FUNCTIONS ayuda en el trazado de gráficos matemáticos y análisis de funciones.
- Programación - Unbeliever
Un relato humorístico protagonizado por Stirlitz, un oficial de inteligencia ficticio, en situaciones absurdas y surrealistas con la Gestapo, programación y planes secretos.
- Pogurammim - Unbeliever
Una narrativa humorística y ficticia que involucra las aventuras de espionaje de Shtrilitz durante una operación encubierta con muchos giros inesperados y sátira.
- Publicidad
Anuncio de una tienda de electrónica y componentes que ofrece equipos usados, software y literatura.