Deja Vu #05: Técnicas para el Uso de Pila con Interrupciones en ZX Spectrum

Autores del artículo

Personas mencionadas

Equipos/grupos mencionados

CRG
SoundTrack: SECTOR/SERIOUS S.G.'97 (CMG98)
__________________________________________

(C) RLA/CRG
__________________________________________

USO DE LA PILA
CON INTERRUPCIONES PERMITIDAS

No es un secreto que para manipulaciones rápidas con gráficos en juegos y, especialmente, en demostraciones, se utilizan ampliamente los comandos de trabajo con la pila. Es precisamente con su ayuda que se puede alcanzar la mayor velocidad de trabajo con gráficos. Pero, cuanto más impresionante es el efecto, más tiempo requiere. Puede haber casos en los que el efecto no logra completar 69888 ciclos y se produce una interrupción. La dirección de retorno se empuja a la pila y se corrompe irremediablemente la información que contiene debajo. Pero no todo está perdido. Consideremos algunos casos sobre cómo se pueden guardar estos datos y trabajar con la pila con interrupciones de segundo tipo habilitadas.

1. Si se produce la limpieza o el llenado de la pantalla con algún dato, no es tan grave, ya que al regresar de la interrupción continuará el ciclo PUSH HL y la dirección de retorno será sobrescrita con los datos necesarios.

1.1 Es posible que la pila sea igual a 4000h y la dirección de retorno se pierda, pero este caso se puede controlar si se conocen las direcciones de aquellos puntos en los que esto puede suceder, y se puede saltar allí no por RET, sino JP ADDRESS.

Ejemplo:
LD SP,#4020 ;limpiamos la más
LD HL,#0000 ;superior
PUSH HL ;línea
PUSH HL
PUSH HL
... *16 veces
PUSH HL
PUSH HL
ADR1 LD SP,(SAVESP)
RET

El último caso es posible si la interrupción se interpone entre los comandos PUSH HL y LD SP,(SAVESP). El manejador de 2 (!) interrupciones en tal caso se verá así:

ORG #BFBF
INT2 DI
LD (TOSP+1),SP
LD SP,INT2-1
PUSH HL
PUSH DE
PUSH BC
PUSH AF
PUSH IX
EXX
EX AF,AF
PUSH HL
PUSH DE
PUSH BC
PUSH AF
PUSH IY

LD HL,(TOSP+1)
LD DE,-#4000
ADD HL,DE
LD A,#C9 ; RET
JR C,OK
LD A,#C3 ; JP
LD (TO_RET),A

... procesamiento de la interrupción
POP IY
POP AF
POP BC
POP DE
POP HL
EXX
EX AF,AF
POP IX
POP AF
POP BC
POP DE
POP HL
EI
TOSP LD SP,0
TO_RET DB 0
DW ADR1

2. Hay otro caso astuto, cuando los datos no se escriben mediante la pila, sino que se leen. Esto se utiliza más a menudo cuando una gran parte de la pantalla se mueve (TRASH DEMO, ART'98, diversas intros para juegos). En la memoria se crea previamente un gran sprite y se muestra en pantalla aproximadamente con esta cadena de bytes:

POP HL
LD (#4000),HL
POP HL
LD (#4002),HL
...
POP HL
LD (#57FE),HL
LD SP,(SAVESP)
RET

En los programas mencionados, parte de la pantalla logra transferirse en una sola interrupción, y este problema no surge, pero ha habido casos en los que un efecto funciona, y luego hay que superponer una ventana con deseos o GTX'es. Si se produce una interrupción, la dirección de retorno nuevamente se empujará a la pila y el sprite será "irremediablemente" dañado. Precisamente con este caso se acercó a mí un conocido mío, un coder. Después de un tiempo, el problema fue resuelto. Sus efectos funcionaban con interrupciones habilitadas, y los gráficos no se dañaban.

Manejador:

ORG #BFBF
INT2 DI
LD (TOSP+1),SP
LD SP,INT2-1
PUSH HL
PUSH DE
PUSH BC
PUSH AF
PUSH IX
EXX
EX AF,AF
PUSH HL
PUSH DE
PUSH BC
PUSH AF
PUSH IY
LD HL,(TOSP+1)
LD E,(HL)
INC HL
LD D,(HL)
LD (_JP+1),DE
... procesamiento de la interrupción
POP IY
POP AF
POP BC
POP DE
POP HL
EXX
EX AF,AF
POP IX
POP AF
POP BC
POP DE
POP HL
TOSP LD SP,0
PUSH HL ;Escritura
POP HL ;Corrección de la pila
EI
_JP JP 0

Consideremos los posibles casos en los que puede ocurrir una interrupción:

a) entre los comandos POP HL y LD (NN),HL los bytes leídos están en los registros HL y antes del retorno serán escritos con el comando PUSH HL.

b) entre los comandos LD (NN),HL y POP HL los datos nuevamente están en HL y se restaurarán de la misma manera. Cabe destacar que el retorno de este manejador siempre se realizará mediante una transición directa. Cabe mencionar que en las demostraciones no he encontrado tales trucos de evasión con la pila. Espero que este artículo reduzca el trabajo de algunos de sus efectos en 10-20 mil ciclos adicionales, que tanto obstaculizaban hacer su efecto en la intro más rápido.

Contenido de la publicación: Deja Vu #05

  • Аперативчик - Max
    Instrucciones detalladas sobre la gestión de la interfaz DEJA VU, destacando diferentes métodos de entrada y comandos de navegación. Explicación de las interfaces nuevas y antiguas para mejorar la experiencia del usuario. Discusión sobre funciones adicionales como el desplazamiento de cuadros y la gestión de música.
  • Аперативчик - Max
    Discusión sobre el soporte de máquinas con más de 128k de memoria, lo que lleva a cascarones separados para sistemas de 128k y 256k. Las pruebas se realizaron principalmente en Scorpion y Profi, con la funcionalidad anticipada en otros modelos. El artículo incluye orientación sobre cómo descomprimir archivos fuente y percepciones sobre el uso de algoritmos mejorados.
  • Тема - M.M.A
    Este artículo explora la teoría detrás de la digitalización del sonido en ZX Spectrum, centrándose en los procesos de muestreo y cuantificación. Proporciona ideas prácticas para convertir archivos de sonido utilizando hardware y software específicos. Además, ofrece métodos para mejorar la calidad del sonido trabajando dentro de las limitaciones del hardware.
  • Tema
    El artículo discute la iniciativa Save Our Scene destinada a unir a los usuarios y desarrolladores de Spectrum para promover la distribución de software y mejorar el desarrollo de la escena.
  • Estatuto de la Asociación Amazing Soft Making
    Discusión sobre el estatuto fundacional de la asociación Amazing Soft Making, detallando sus objetivos, criterios de membresía y principios operativos.
  • Teoría de la Creación de Revistas
    El artículo ofrece una guía detallada para aspirantes a creadores de revistas, centrándose en aspectos técnicos como diseño de interfaz, gestión de memoria, formato de texto e integración de música para publicaciones de ZX Spectrum.
  • Gota de Soldadura
    El artículo ofrece un relato personal sobre la compra y el uso del dispositivo General Sound para ZX Spectrum, detallando la instalación y el rendimiento del sonido. Discute los problemas iniciales encontrados y elogia la experiencia de audio mejorada en juegos compatibles. El autor alienta una mayor adaptación del software para el dispositivo y reflexiona sobre las capacidades multimedia con el uso simultáneo de hardware.
  • Gota de Soldadura
    El artículo discute las capacidades de Sound Forge 4.0c para el procesamiento de audio profesional en PC, destacando sus extensas características como la edición de sonido, efectos y herramientas de restauración.
  • SOFTWARE
    El artículo revisa los últimos desarrollos de software para el ZX Spectrum de Samara, incluyendo actualizaciones de MAXSOFT SCREEN PACKER, File Commander y nuevas aplicaciones como S-Terminal.
  • SOFTWARE - Card!nal
    Reseña y guía del juego de aventura gráfica lógica 'Operación R.R.' con instrucciones detalladas de nivel. Discusión sobre elementos del juego como la elección musical y el diseño gráfico. Menciona la participación del nuevo codificador MAX/CYBERAX/BINARY DIMENSION.
  • SOFTWARE
    Discusión sobre el estado actual y la evolución de la demoscena, destacando el auge de las intros de 4K y las próximas competiciones como FUNTOP'98.
  • CODING
    El artículo discute técnicas de programación en lenguaje ensamblador para optimizar el desplazamiento de pantalla en ZX Spectrum, con ejemplos de código y análisis de rendimiento.
  • CODING - RLA
    El artículo explora técnicas de manipulación de pila durante interrupciones de segundo tipo para efectos gráficos en ZX Spectrum. Se discuten soluciones para preservar la integridad de los datos cuando las interrupciones interrumpen las operaciones gráficas. Se proporcionan ejemplos prácticos para manejar problemas de pila de manera eficiente.
  • CODIFICACIÓN
    El artículo describe el empaquetador MS-PACK y su DEPACKER, detallando escenarios de uso y proporcionando ejemplos de código en BASIC y ensamblador para manejar archivos empaquetados. Se enfatiza la optimización del rendimiento al permitir la descompresión con interrupciones habilitadas y al separar el DEPACKER de los archivos empaquetados. Además, incluye ideas sobre técnicas de programación para cargar y ejecutar archivos BASIC en ZX Spectrum.
  • CODIFICACIÓN
    El artículo discute varias técnicas de codificación para ZX Spectrum, centrándose en el renderizado de sprites, algoritmos de rotación y métodos de optimización para mejorar el rendimiento.
  • OTRO MUNDO
    Discusión sobre la evolución de las tecnologías multimedia y su impacto en diversos campos, incluyendo la educación y el entretenimiento. Cubre los avances en hardware y software de computadoras que han facilitado la integración de audio, video y texto. El artículo reflexiona sobre desarrollos pasados y especula sobre el futuro de los sistemas multimedia.
  • OTRO MUNDO
    Comparación de sistemas PC y Amiga que destaca el rendimiento, costos de software y la experiencia del usuario con capacidades multimedia.
  • Lista de Honor
    Entrevista con PROGRESS que discute su trayectoria creativa en ZX Spectrum y AMIGA, abordando desafíos en la creación de demos y el estado actual de la escena.
  • Lista de Honor
    El artículo detalla las actividades y proyectos futuros del equipo de Eternity Industry, con sede en Kovrov, incluidas lanzamientos exitosos y colaboraciones con otros grupos.
  • Lista de Honor
    Discusión sobre el festival Artcomp'98, centrado en su formato por correo y pautas para varias competiciones, incluyendo categorías de demostración, gráficos y música.
  • Lista de Honor
    El artículo proporciona un glosario de términos utilizados en la escena demo, explicando roles como músico, programador y artista gráfico, así como diferentes tipos de demos y efectos. Sirve como un recurso útil para entender la terminología y la dinámica de la comunidad. Esta es una pieza descriptiva destinada a educar a los lectores sobre el argot de la escena demo.
  • Lista de Honor
    El artículo discute los problemas con el soporte del ratón en varias revistas de ZX Spectrum y las frustraciones de los usuarios al encontrar problemas de compatibilidad. Critica a los desarrolladores por no cumplir con los estándares, lo que lleva a malas experiencias para los usuarios. El autor expresa la importancia de mejoras consistentes en el software para la comunidad de ZX Spectrum.
  • Tablero de Honor
    El artículo discute el proceso de creación de imágenes tricolores para ZX Spectrum utilizando Photoshop y un enfoque simplificado. Describe cómo dividir una imagen en canales RGB y convertirlos para su uso en Spectrum. Además, ofrece consejos sobre cómo gestionar los archivos para obtener resultados óptimos.
  • Lista de Honor
    El artículo discute la comparación y las perspectivas sobre varios sistemas informáticos, enfatizando las fortalezas de AMIGA sobre PC y abogando por la apreciación de todas las máquinas.
  • Siete y media
    El artículo discute las absurdidades humorísticas y peculiaridades del entrenamiento militar y la academia, combinando sátira con anécdotas reales y observaciones ingeniosas.
  • Siete y medio
    El artículo ofrece un manual satírico sobre metodologías de programación, burlándose de la rigidez de las prácticas de programación formales y abogando por un enfoque más creativo en la codificación.
  • Siete y medio
    Instrucciones sobre prácticas de sexo seguro, incluyendo pautas sobre elegibilidad, preparación y acciones durante y después de la sesión sexual, además de cómo manejar situaciones de emergencia.
  • Siete y medio
    El artículo discute un llamado a un artista talentoso en Krasnodar para un grupo de ZX Spectrum, plantea preocupaciones sobre las prácticas poco éticas de Scorpion respecto a los derechos de software y critica un video de revisión de E'97.
  • Siete y medio
    El artículo 'Семь и 1/2' narra una divertida aventura de picnic con el equipo editorial de Deja Vu, destacando su camaradería y contratiempos mientras preparaban una barbacoa.
  • Prueba de la Pluma
    El artículo es una visión humorística de las aventuras ficticias de Winnie the Pooh mientras interactúa con computadoras y amigos, discutiendo las absurdidades de la tecnología y la vida diaria.
  • Primera pluma
    El artículo discute la nueva sección de Deja Vu dedicada a la literatura de fantasía y ciencia ficción, que presenta reseñas de libros y participación de los lectores en la creación de contenido.
  • Publicidad
    El artículo es una sección de anuncios de Deja Vu #05, promoviendo colaboraciones con diseñadores y músicos para futuros números, y ofreciendo varios programas y hardware para ZX Spectrum.
  • Noticias
    El artículo anuncia el lanzamiento de una nueva revista, AMIGA RULES, centrada en la computadora AMIGA, abordando la falta de publicaciones de calidad en ruso. Su objetivo es proporcionar información sobre programación, hardware, software y juegos, al tiempo que fomenta una comunidad entre los entusiastas de AMIGA. La revista incluirá contribuciones de los lectores y actualizaciones regulares sobre la escena AMIGA.