MSX DIAGNOSTICS - API Reference

Documentación técnica para desarrolladores (Open Source)

prog/main.asm

FUNCTION_MAIN

Punto de entrada principal del programa después del arranque. Inicializa el motor, el sistema, muestra la bienvenida y lanza el menú principal.

Entrada: Ninguno
Modifica: Todos

FUNCTION_EXIT

Rutina de salida de emergencia. Limpia pantalla, muestra mensaje de reinicio y ejecuta un reinicio por software (CHKRAM).

Entrada: Ninguno
Modifica: Todos (Reinicia CPU)
prog/system.asm

FUNCTION_SYSTEM_START

Orquestador de arranque. Ejecuta POST, detecta configuración de memoria, VDP, inicializa teclado y variables de estado.

Entrada: Ninguno
Modifica: Todos

FUNCTION_SYSTEM_POST

Power On Self Test visual y sonoro. Hace parpadear el LED de CAPS y emite pitidos para confirmar actividad de CPU.

Entrada: Ninguno
Modifica: AF, BC, DE

FUNCTION_SYSTEM_RESET_KEYBOARD_MATRIX

Limpia las variables de estado del teclado lógico (SYSKEY_*).

Entrada: Ninguno
Modifica: AF, B, HL

FUNCTION_SYSTEM_SET_KEY_NAMES_TABLE

Detecta la región del MSX (BIOS $002C) y selecciona la tabla de nombres de teclas adecuada.

Entrada: BIOS [$002C]
Modifica: AF, HL

FUNCTION_SYSTEM_HID_READ

Lee Teclado y Joysticks y unifica la entrada en variables lógicas abstractas.

Entrada: Ninguno
Modifica: AF, B

FUNCTION_SYSTEM_SCREEN0_CHARSET

Carga un set de caracteres personalizado para el modo SCREEN 0 en la VRAM.

Entrada: CUSTOM_CHARACTERS_SET
Modifica: AF, BC, DE, HL
prog/welcome.asm

FUNCTION_WELCOME

Muestra la pantalla de título/logo, espera temporizador o pulsación de tecla para continuar.

Entrada: Ninguno
Modifica: Todos
prog/main_menu_*.asm

FUNCTION_MAIN_MENU_P1

Gestiona la lógica, renderizado y entrada de la Página 1 del menú principal (Tests de Video).

Entrada: Vars de estado menú
Modifica: Todos

FUNCTION_MAIN_MENU_P2

Gestiona la lógica, renderizado y entrada de la Página 2 del menú principal (Input, Audio, Sistema).

Entrada: Vars de estado menú
Modifica: Todos

FUNCTION_MAIN_MENU_HEADER_PRINT

Imprime la cabecera común de los menús (líneas discontinuas y título).

Entrada: Ninguno
Modifica: AF, BC, DE, HL

FUNCTION_MAIN_MENU_PRINT_CURSOR

Borra el cursor de la posición anterior y lo dibuja en la nueva posición seleccionada.

Entrada: MAINMENU_ITEM_SELECTED, MAINMENU_ITEM_OLD
Modifica: AF, HL
prog/memory_routines.asm

FUNCTION_MEMORY_GET_CONFIG

Función maestra. Llama secuencialmente a la detección de Slots y luego a la detección de RAM.

Entrada: Ninguno
Modifica: Todos

FUNCTION_MEMORY_GET_SLOT_LAYOUT

Recorre los 4 slots primarios para detectar si están expandidos (lectura $FCC1).

Entrada: Ninguno
Modifica: AF, BC, DE, HL

FUNCTION_MEMORY_GET_MEMORY_LAYOUT

Recorre Slots (0-3) y Subslots (0-3) llamando a la detección de RAM para cada combinación.

Entrada: Ninguno
Modifica: Todos

FUNCION_MEMORY_GET_SLOT_RAM

Busca RAM en el slot actual. Verifica páginas 0-2 (sin mapper) y página 3. Si encuentra 64KB, busca Mapper.

Entrada: MEMORY_SLOT_ID
Modifica: Todos

FUNCION_MEMORY_GET_RAM_IN_MAPPER

Detecta Memory Mapper escribiendo en puerto $FC y verificando aislamiento de segmentos.

Entrada: MEMORY_SLOT_ID
Modifica: Todos

FUNCTION_MEMORY_COUNTER_ADD_4KB

Suma 4KB a los contadores globales y locales de RAM detectada.

Entrada: Ninguno
Modifica: AF, BC, DE, HL
prog/vdp_routines.asm

FUNCTION_VDP_INDENTIFY_VDP_TYPE

Identifica el modelo de VDP (TMS9918, V9938, V9958) y la frecuencia (50/60Hz) mediante manipulación de registros y conteo de ciclos.

Entrada: Ninguno
Modifica: Todos
prog/sfx.asm

SFX_FUNCTION_PLAY_PING

Emite un sonido agudo (Ping) manipulando directamente el PSG.

Entrada: Ninguno
Modifica: A (Registros PSG)

SFX_FUNCTION_PLAY_PONG

Emite un sonido grave (Pong) manipulando directamente el PSG.

Entrada: Ninguno
Modifica: A (Registros PSG)

SFX_FUNCTION_UPDATE

Controla el desvanecimiento (fade-out) del sonido actual del canal A.

Entrada: Ninguno
Modifica: A

SFX_FUNCTION_CLOSE

Silencia inmediatamente el canal A del PSG.

Entrada: Ninguno
Modifica: A
prog/memory_reports.asm

FUNCTION_MEMORY_REPORTS_PRINT_RAM_REPORT

Genera y muestra en pantalla el informe detallado de la RAM detectada.

Entrada: Variables RAM_*
Modifica: Todos

FUNCTION_MEMORY_REPORTS_PRINT_RAM_LAYOUT

Itera sobre las estructuras de datos de memoria para dibujar la parrilla de Slots/Subslots en pantalla.

Entrada: HL (Pos), RAM_TEST_SHOW_ALL_INFO
Modifica: Todos
prog/screen*_test.asm

FUNCTION_SCREEN[0-3]_TEST_MENU

Muestra el menú previo de instrucciones para cada test de vídeo.

Entrada: Ninguno
Modifica: Todos

FUNCTION_SCREEN[0-3]_TEST_RUN

Ejecuta el test visual correspondiente. Llena la pantalla de caracteres/patrones y permite cambiar colores/bordes.

Entrada: Ninguno
Modifica: Todos

FUNCTION_SCREEN2_TEST_LOAD_IMAGE

Carga una de las imágenes de fondo RLE predefinidas según el índice proporcionado.

Entrada: B (Índice imagen)
Modifica: AF, BC, DE, HL

FUNCTION_SCREEN3_TEST_CHANGE_PATTERN

Cambia el patrón de tiles en el modo multicolor (Screen 3).

Entrada: B (Índice patrón)
Modifica: Todos
prog/sprites_test.asm

FUNCTION_SPRITES_TEST_RUN

Bucle principal del test de sprites. Gestiona modos de movimiento y rebote.

Entrada: Ninguno
Modifica: Todos

FUNCTION_SPRITES_TEST_CREATE

Inicializa 32 sprites en posiciones de rejilla con colores incrementales.

Entrada: Ninguno
Modifica: AF, BC, DE, HL

FUNCTION_SPRITES_TEST_MOVE

Calcula la física de movimiento y rebote para los 32 sprites.

Entrada: Datos en RAM BUFFER
Modifica: AF, BC, DE, HL
prog/keyboard/joystick.asm

FUNCTION_KEYBOARD_TEST_RUN

Muestra la matriz de teclas y resalta las pulsaciones en tiempo real.

Entrada: Ninguno
Modifica: Todos

FUNCTION_JOYSTICK_TEST_RUN

Muestra el estado de los dos puertos de joystick usando sprites.

Entrada: Ninguno
Modifica: Todos
prog/psg_test.asm

FUNCTION_PSG_TEST_RUN

Interfaz para manipular canales, frecuencia, volumen y ruido del PSG manualmente.

Entrada: Ninguno
Modifica: Todos
prog/mixed_mode_test.asm

FUNCTION_MIXED_MODE_TEST_RUN

Configura la VDP para mostrar el "Modo Mixto" (no documentado), que mezcla atributos de diferentes modos gráficos.

Entrada: Ninguno
Modifica: Todos
prog/monitor_color_test.asm

FUNCTION_MONITOR_COLOR_TEST_RUN

Muestra colores sólidos (RGB/BW) y un ciclo de colores automático para calibrar monitores.

Entrada: Ninguno
Modifica: Todos
prog/system_info.asm

FUNCTION_SYSTEM_INFO

Pantalla de resumen del sistema: Modelo MSX, VRAM, VDP, Slots y Reloj RTC (si existe).

Entrada: Ninguno
Modifica: Todos
ngn/ngn_start.asm

NGN_START

Rutina de inicialización global de la librería N'gine.

Entrada: Ninguno
Modifica: AF, BC, DE, HL
ngn/ngn_system.asm

NGN_WAIT_FOR_START_UP_INTERRUPTS

Pausa la ejecución durante unos segundos al inicio para permitir que el hardware se estabilice.

Entrada: Ninguno
Modifica: AF, B

NGN_SYSTEM_FD9A_PATCH_ON

Instala un hook en $FD9A para filtrar interrupciones que no sean de V-Blank.

Entrada: Ninguno
Modifica: AF, HL

NGN_SYSTEM_RANDOM_NUMBER

Generador pseudoaleatorio simple.

Entrada: NGN_RANDOM_SEED
Modifica: A, B
ngn/ngn_screen.asm

NGN_SCREEN_SET_MODE_[0-3]

Configura el VDP en el modo especificado, borra VRAM y establece colores.

Entrada: B (Frente), C (Fondo), D (Borde)
Modifica: AF, BC, DE, HL

UPDATE_SCREEN_VDP

Aplica configuraciones base a los registros 0 y 1 del VDP.

Entrada: Ninguno
Modifica: AF, B, C
ngn/ngn_sprite.asm

NGN_SPRITE_MODE_[8x8/16x16]

Cambia el tamaño y magnificación global de los sprites en el registro 1 del VDP.

Entrada: Ninguno
Modifica: AF, BC

NGN_SPRITE_RESET

Borra todos los sprites de la pantalla y reinicia la Shadow RAM.

Entrada: Ninguno
Modifica: AF, BC, DE, HL

NGN_SPRITE_CREATE

Define un sprite en la Shadow RAM.

Entrada: A (ID), B (Patrón), C (Color), DE (XY)
Modifica: AF, BC, DE, HL

NGN_SPRITE_UPDATE

Vuelca los atributos de sprites de RAM (NGN_SPRITE_XX) a VRAM.

Entrada: Datos en Variables Globales
Modifica: AF, BC, DE, HL

NGN_SPRITE_POSITION

Mueve un sprite existente.

Entrada: HL (Puntero), BC (XY)
Modifica: BC, HL

NGN_SPRITE_COLOR

Cambia el color de un sprite existente.

Entrada: HL (Puntero), B (Color)
Modifica: DE, HL
ngn/ngn_background.asm

NGN_BACKGROUND_CREATE

Carga una imagen completa (Tiles+Color+Names) sin comprimir a VRAM.

Entrada: HL (Origen datos)
Modifica: AF, BC, DE, HL

NGN_BACKGROUND_CREATE_RLE

Carga una imagen completa descomprimiendo RLE al vuelo.

Entrada: HL (Origen comprimido)
Modifica: AF, BC, DE, HL
ngn/ngn_text.asm

NGN_TEXT_PRINT

Imprime una cadena ASCII terminada en 0.

Entrada: HL (Puntero cadena)
Modifica: AF, BC, DE, HL

NGN_TEXT_PRINT_BCD

Imprime un número BCD de 3 bytes (0-99999).

Entrada: BCD (Regs B,C,D)
Modifica: AF, BC, DE, HL

NGN_TEXT_PRINT_INTEGER

Imprime un entero de 16 bits (hex) como decimal.

Entrada: BC (Entero)
Modifica: AF, BC, DE, HL

NGN_TEXT_POSITION

Mueve el cursor de texto (Wrapper de POSIT).

Entrada: H (Col), L (Fila)
Modifica: AF, BC, DE, HL

NGN_TEXT_CLS

Borra la pantalla.

Entrada: Ninguno
Modifica: AF, BC, DE, HL

NGN_TEXT_COLOR

Establece color de texto y fondo.

Entrada: B (Texto), C (Fondo)
Modifica: AF, BC, DE, HL
ngn/ngn_keyboard.asm

NGN_KEYBOARD_READ

Escanea la matriz de teclado completa via PPI. Actualiza array NGN_KEY_x.

Entrada: Ninguno
Modifica: AF, BC, DE, HL
ngn/ngn_psg.asm

NGN_PSG_COMMAND

Escribe un comando en un registro específico del PSG.

Entrada: B (Registro), C (Dato)
Modifica: A

NGN_PSG_INIT

Reinicia el PSG a valores por defecto (Silencio).

Entrada: Ninguno
Modifica: A

NGN_PSG_READ_JOY[1-2]

Lee el estado del Joystick conectado al puerto 1 o 2.

Entrada: Ninguno
Modifica: AF, BC, HL
ngn/ngn_math.asm / ngn_rle.asm

NGN_BCD_ADD

Suma dos números BCD de 3 bytes.

Entrada: DE (Dest), HL (Sum)
Modifica: AF, BC, DE, HL

NGN_BCD_SUB

Resta dos números BCD de 3 bytes.

Entrada: DE (Dest), HL (Rest)
Modifica: AF, BC, DE, HL

NGN_RLE_DECOMPRESS

Descomprime datos RLE desde una dirección origen a un buffer de destino.

Entrada: HL (Origen), DE (Destino)
Modifica: AF, BC, DE, HL