Sección "¿Cómo se hizo?"
Eliseev V. A.
Programa gmen.com y reinicio del sistema menu (#91).
Hoy en la sección "¿Cómo se hizo?" nos familiarizaremos con la estructura interna del programa gmen.com. Este pequeño, pero extremadamente necesario programa gestiona la asignación de dispositivos en la interfaz IS-DOS, permite asignar cualquier dispositivo lógico (A, B, C, etc.) como sistema (S), rápido (Q) o actual (T). La base de este programa es el procedimiento de procesamiento del menú, una ventana especial con un cursor y texto de opciones, cuya selección provoca la ejecución de los comandos correspondientes. El reinicio del sistema con el número #91 es responsable del procesamiento del menú en el núcleo de IS-DOS. Espero que un análisis detallado del código fuente del programa gmen.com le ayude a dominar fácilmente y rápidamente este procedimiento complicado y a aprender a usarlo en sus programas. Así que, a su atención se le presenta el código fuente del programa gmen.com en formato IS-ASSEMBLER con comentarios detallados para cada línea del programa.
;****************************************
;Ejemplo de uso del reinicio
;menu #91
;Utilidad del menú del sistema gmen.com
;código fuente con comentarios
ORG #5DC0
;****************************************
;parte principal del programa:
;configuración de colores, apertura de ventana,
;llamada al menú
START XOR A ;reiniciar el registro A
LD IX,WND ;en IX - dirección del vector de la ventana
LD HL,(COL+5);transferir del vector unicolor a
LD (WND+4),HL;vector de la ventana del color de la ventana y la sombra
LD HL,(COL+7);transferir del vector unicolor a
LD (IX-10),L ;vector del menú del color del cursor principal y de trabajo
LD (IX-12),H ;
LD C,#61 ;abrir ventana
RST #10 ;reinicio wt #61
LD C,#91 ;llamar al menú
RST #10 ;reinicio menu #91
;el vector del menú se encuentra justo
;antes del vector de la ventana, el desplazamiento para IX
;se mide en sentido inverso
END XOR A ;salida a SHELL por
LD A,#F2 ;fin de trabajo
RET ;menu #91
;#F2 - código del comando interno de la interfaz
;(análogo a shell2 con conservación de posiciones
;del cursor en ambos paneles), que
;se ejecuta por RET, si se establece
;la bandera Z (con el comando XOR A)
;****************************************
;procedimiento de inicialización del menú:
;lee del vector de configuración
;del sistema los nombres del dispositivo
;sistema, rápido y actual y los coloca en
;textos del menú
INIT LD C,#10 ;definir dirección
RST #10 ;vector de configuración del sistema (q cnfg #10)
EXX ;en HL - dirección
LD C,#41 ;en C - número para convertir
;número del dispositivo (#00-#05) a
;forma simbólica (A-F)
DEC HL ;en HL - dirección del número del dispositivo sistema
LD A,(HL) ;leer número
;del dispositivo en A
ADD A,C ;convertir
LD (TXT+8),A ;colocar en texto del menú
DEC HL ;lo mismo para rápido
LD A,(HL) ;dispositivo
ADD A,C
LD (TXT+17),A
DEC HL ;lo mismo para actual
LD A,(HL) ;dispositivo
ADD A,C
LD (TXT+26),A;
EXX ;restaurar conjunto de registros
RET ;retorno a menu
;****************************************
;procedimiento para asignar uno de los dispositivos
;como sistema, rápido y actual al mismo tiempo
;se utilizó el sistema de "teclas de acceso rápido"
;reinicio menu #91
;en la entrada en B - número del dispositivo en forma simbólica (A-F)
ALL LD C,#10 ;definir dirección
RST #10 ;vector de configuración
LD A,#CF ;en A - número para
;convertir de
;forma simbólica a
;número
ADD A,B ;conversión
EXX
DEC HL ;en HL - dirección del número del dispositivo sistema
LD (HL),A ;escribir número
DEC HL ;lo mismo para rápido
LD (HL),A
DEC HL ;lo mismo para actual
LD (HL),A
END1 XOR A ;retorno a menu
INC A
RET
;si el procedimiento de "teclas de acceso rápido" termina
;con la bandera Z establecida, entonces al regresar al menú
;se ejecuta la línea con el número que se almacena en A
;****************************************
;procedimiento de asignación de dispositivos
;procesamiento de opciones del menú por ENTER
SET LD C,#10 ;definir dirección
RST #10 ;vector de configuración
EXX
LD E,(IX-9) ;leer del vector
;menú la posición actual del cursor
XOR A
LD D,A ;reiniciar D
SBC HL,DE ;establecer en HL la dirección del dispositivo correspondiente en
;el vector del sistema restando
;el número de línea del menú
PUSH HL ;guardar dirección
LD A,(HL) ;
LD H,(IX-9) ;determinar coordenadas relativas
LD L,#08 ;para el cursor de edición (H-Y, L-X)
SCF ;establecer la bandera C
;para llamar dvtrn #4A después de q dev #8C
LD C,#8C ;llamar q dev #8C
RST #10 ;(solicitar nombre del dispositivo)
;gracias a la llamada dvtrn #4A, el nombre obtenido
;como resultado del trabajo de q dev #8C en forma simbólica (A-F)
;se convierte en número físico
;(#00-#05)
POP HL ;recordar dirección
;del dispositivo en
;vector de configuración
JR NZ,SET2 ;si no hay dispositivo con ese nombre,
;ir a SET2
LD (HL),A ;de lo contrario - escribir número en la dirección
SET2 LD C,#08 ;esperar pulsación de tecla kwait #08
RST #10 ;retorno a menu
;para el retorno a menu se utilizó un fragmento
;del procedimiento anterior (ver END1)
;****************************************
;procedimiento de salida del menú
;procesamiento de la opción EXIT
EXIT OR #FF ;colocar en A código
;#FF para salir de menu y restablecer
;la bandera C
RET ;retorno a menu
;****************************************
;área de datos del programa:
;vector unicolor - tabla especial,
;que contiene información sobre los colores del programa y
;permite editarlos mediante
;la utilidad universal unicolor
COL DEFM "UnCo" ;marcador del programa unicolor
DEFB #04 ;número de colores
DEFB %01110000 ;colores de la ventana
DEFB %01000001 ;colores de la sombra
DEFB %00000111 ;colores del cursor
DEFB %01000111 ;colores del cursor de trabajo
;vector del menú - tabla de parámetros para trabajar con menu #91,
;se encuentra antes del vector de la ventana, el desplazamiento para
;la indexación se mide en sentido inverso
;desde el inicio del vector de la ventana
DEFB %01100000 ;colores del cursor de trabajo
DEFB %00000000 ;registro de estado
DEFB %00000110 ;color del cursor
DEFB #01 ;posición del cursor
DEFW INIT ;dirección del procedimiento de inicialización
DEFW #0000 ;dirección del procedimiento que se llama al
;presionar cualquier tecla (0-no procedimiento)
DEFW TABKEY ;dirección del procedimiento de servicio "teclas de acceso rápido"
DEFW TABENT ;dirección del procedimiento de servicio por ENTER
;vector de la ventana
WND DEFW #0415 ;coordenadas de la ventana
DEFW #0806 ;dimensiones de la ventana
DEFB %01110000 ;colores de la ventana
DEFB %00000001 ;colores de la sombra
DEFW #091D ;coordenadas de impresión
;mapa de movimiento del cursor 00 - línea no utilizada 01 - utilizada
DEFB #01
DEFB #01
DEFB #01
DEFB #01
;texto de la ventana
TXT DEFM "System A"
DEFM "Quick A"
DEFM "Current A"
DEFM "Exit"
DEFB 03 ;marcador de fin de texto
;tabla de direcciones de procedimientos llamados al presionar ENTER
TABENT DEFW SET
DEFW SET
DEFW SET
DEFW EXIT
;tabla de direcciones de procedimientos de manejo de "teclas de acceso rápido"
TABKEY DEFB #65 ;e - EXIT
DEFB #04 ;número de línea del menú
;para el modo de ejecución por "tecla de acceso rápido"
DEFB #00 ;marcador del modo de ejecución de la línea
DEFB #20 ;SP - EXIT
DEFW EXIT
DEFB #31 ;1 - disp. "A"
DEFW ALL
DEFB #32 ;2 - disp. "B"
DEFW ALL
DEFB #33 ;3 - disp. "C"
DEFW ALL
DEFB #34 ;4 - disp. "D"
DEFW ALL
DEFB #35 ;5 - disp. "E"
DEFW ALL
DEFB #36 ;6 - disp. "F"
DEFW ALL
DEFB #FF ;marcador de fin de lista
;***************************************
Autor del programa - A. Leontiev
Comentarios - V. Eliseev
Contenido de la publicación: ZX Format #01
- IS-DOS
IskraSoft presenta IS-DOS Classic 4.0 con funciones avanzadas de edición de texto, una utilidad de disco, un controlador de disco duro para ZX Spectrum y un depurador de programas.
- IS-DOS - Владимир Елисеев
Descripción general de IS-DOS para ZX Spectrum, destacando sus ventajas sobre TR-DOS. Discusión sobre la instalación, uso y gestión de archivos en IS-DOS. Introducción a utilidades del sistema e interfaz similar a Norton Commander.
- IS-DOS - Владимир Елисеев
El artículo ofrece una guía concisa del disco del sistema IS-DOS, enumerando todos los archivos esenciales con explicaciones. Los archivos están ordenados alfabéticamente y agrupados por directorios para una fácil navegación. La guía se centra en una visión general básica de archivos y comandos sin descripciones extensas.
- IS-DOS - Владимир Елисеев
Discusión sobre el estándar UniColor para configuraciones de color en programas IS-DOS, su implementación y ventajas para la personalización del usuario.
- IS-DOS - Владимир Елисеев
Discusión de las características de la interfaz de ventanas de IS-DOS. Implementación del sistema de ventanas en IS-DOS y sus ventajas. Ejemplos de programas para crear ventanas y marcos.
- IS-DOS - Владимир Елисеев
Descripción del funcionamiento interno del programa gmen.com para IS-DOS, centrándose en la gestión de dispositivos y el manejo de menús con código fuente detallado y comentarios.
- Hardware - Vladimir Larkov
Discusión sobre la modificación del hardware Scorpion ZS-256 para compatibilidad con software específico. Describe el bloqueo del puerto #1FFD para ejecutar programas incompatibles. Ofrece detalles técnicos para la implementación.
- Железо - Nemo
Discusión sobre dispositivos de frenado para ZX Spectrum. Enfoque en la creación e impacto de frenos en procesadores acelerados. Advertencia sobre posibles efectos secundarios.
- Железо
Discusión sobre la impracticidad de reparar computadoras viejas y la sensatez económica de reemplazarlas por hardware moderno. El artículo destaca los desafíos en las reparaciones caseras y sugiere soluciones alternativas. Enfatiza los beneficios de actualizar a componentes más nuevos y confiables.
- Железо
Discusión sobre nuevos desarrollos periféricos para Scorpion ZS 256, incluyendo un innovador controlador universal e interfaz MIDI. Destaca mejoras en controladores de teclado y ratón y expansión de capacidades de software incorporadas. Ofrece detalles sobre la extensión ROM profesional y el modo turbo para un mejor rendimiento.
- Игрушки - Ruster
Un recorrido detallado del juego Crystal Kingdom Dizzy, incluidas soluciones a rompecabezas y consejos para avanzar en la historia.
- Игрушки - Павел Рындин
Descripción del juego de lógica 'Toros y Vacas', su mecánica y jugabilidad. Explica niveles de dificultad y el objetivo de adivinar un número con intentos mínimos.
- Игрушки - Вячеслав Медноногов
Discusión sobre los matices del juego 'UFO: Enemy Unknown', centrándose en las especies alienígenas, sus tácticas y estrategias de juego. Detalles sobre la mecánica del juego y la futura secuela 'UFO-2: Devils of the Abyss'. Incluye ideas de programación e historia de desarrollo.
- Игрушки - SParker
Visión general de juegos y software en el mercado de San Petersburgo en 1995.
- Интервью
Vyacheslav Mednonogov comparte su viaje como programador, desde ensamblar su primer Spectrum-48 hasta desarrollar juegos destacados como 'UFO. Enemy Unknown'. Describe los desafíos e ideas en el desarrollo de juegos y el auge de la localización de juegos rusos. Sus experiencias destacan la evolución de la programación y la distribución de software en los años 90.
- Информация
Introducción a ZX-Format, una nueva revista electrónica para entusiastas del ZX Spectrum, centrada en juegos, programación, hardware e interacción comunitaria.
- Конкурс
Discusión sobre la organización de un nuevo concurso para la revista. Se invita a los lectores a enviar sus ideas de temas. Los temas seleccionados se presentarán en futuros números.
- Конкурс
ZX Format anuncia un concurso para la mejor misión creada con el editor de misiones para el juego Laser Squad. Se aceptan envíos por correo o en persona. El ganador recibe una caja de discos 3M y el próximo número gratis.
- Отдохнём - Килат Амор
Un día de un programador lleno de sueños, juegos y charlas casuales. Vasetchkin equilibra ambición con relajación, encarnando el espíritu del programador. Reflexiona sobre las demandas y el disfrute de la vida de un programador.
- Buzón de correos - Максим Романов
Discusión sobre ofertas de hardware y software en San Petersburgo por LOGROS y Create Soft, incluyendo detalles sobre la interfaz Kempston Mouse.
- Buzón - SParker
Compilación de códigos de trucos para juegos de ZX Spectrum por Sergey Pavlov. Técnicas para vidas extra e inmortalidad. No recomendado para los amantes del juego limpio.
- Buzón
Descripción de las directrices de envío para cartas y artículos a la revista, incluyendo formato y preferencias de envío.
- Премьера - Алексей Щекин
Jugabilidad del juego Lines en ZX Spectrum, similar a Color Lines. Mueva las bolas para formar líneas del mismo color. Se describen la puntuación y los controles.
- Программистам - Дмитрий Рудовский
Introducción a técnicas avanzadas de programación en BASIC para ZX Spectrum 48, destacando sus ventajas sobre el BASIC 128. Planes para futuros artículos incluyen programas de servicio y extensiones de lenguaje. El artículo sirve como guía para programadores con experiencia.
- Программистам - Михаил Спицын
Introducción al lenguaje ensamblador en ZX Spectrum. Explicación de la estructura del procesador Z80, registros y comandos básicos. Incluye ejemplos de programas para aprender.
- Программистам - Андрей Седов
Editor de misiones para Laser Squad de Andrey Sedov permite a los fans crear nuevas misiones. Incluye interfaz amigable con controles mínimos. Ofrece funciones como edición de objetos, ajustes de precios y asignación de sprites.
- Varios
Historia del desarrollo de la computadora Amiga, sus creadores y características clave. Evolución de los juegos arcade a una computadora doméstica líder. Éxito en el mercado y avances tecnológicos de Amiga.
- Разное
Revisión de próximos productos de software para ZX Spectrum con demos. Destacan juegos de aventura, pruebas de RPG y tácticas estratégicas. Varios desarrolladores conocidos contribuyen a estos lanzamientos.