diff --git a/README.md b/README.md index 84e85ba..aac55f3 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,9 @@ -------------------------------------------------------------------------------- MSX Diagnostics + + https://nightfoxandco.com/ + contact@nightfoxandco.com -------------------------------------------------------------------------------- @@ -23,31 +26,38 @@ La versión actual del programa está provista de las siguientes funcionalidades Verifica el funcionamiento de la VDP en modo 0, mostrando todos los caracteres disponibles llenando la pantalla. Se puede cambiar el color de texto y del fondo entre los 15 disponibles. + - SCREEN 1 Igual al test de SCREEN 0, pero usando el modo 1. En este test además es posible cambiar el color del borde. + - SCREEN 2 Usa el modo 2 de la VDP para mostrar diversas imágenes a base de tiles. Algunas de las imágenes incorporadas se pueden usar además para el ajuste de geometría y del color del monitor o de la salida de video. También es posible cambiar el color del borde de la imagen en cualquier momento. + - SCREEN 3 Usa el modo 3 para mostrar varios patrones diferentes diversos colores. En este caso también se puede cambiar el color del borde. + - SPRITES Usando el modo 2, muestra en pantalla el número máximo de sprites permitido en MSX1 a un tamaño de 16×16. Este test además permite activar o detener el movimiento automático de estos sprites. + - KEYBOARD Permite comprobar el funcionamiento de todas las teclas básicas del teclado. A parte de mostrar un mensaje en pantalla al pulsar y soltar la tecla, cambia el color del fondo de la pantalla y emite dos sonidos diferenciados, facilitando el diagnóstico del teclado sin tener que mirar la pantalla. + - JOYSTICK Verifica el funcionamiento de los dos puertos o de los joysticks o gamepads conectados al MSX, mostrando en pantalla la pulsación de las 4 direcciones y los dos botones de los mandos. + - PSG Verifica el funcionamiento del PSG (Programmable Sound Generator) del ordenador, pudiendo especificar el tono y el volumen en cualquiera de @@ -55,4 +65,15 @@ La versión actual del programa está provista de las siguientes funcionalidades ruido (noise) a cualquiera de estos canales. También es posible escoger la frecuencia del generador de ruido. +- SYSTEM INFO + Muestra un resumen de las características técnicas de nuestro equipo. + +- MONITOR COLOR + Muestra en pantalla cada uno de los colores básicos (rojo, verde, azul), + así como el blanco, el negro y un modo en bucle que muestra todos los + colores de la paleta de MSX1 del 2 al 15, siendo además posible modificar + el tiempo de espera entre cambios. Útil para verificar la pureza del + color del monitor o ajustar la salida de video compuesto o RGB. + + El programa se distribuye en formato ROM, DISK, CAS y archivo de audio WAVE, a 1200 y 2400 baudios. diff --git a/docs/changelog.txt b/docs/changelog.txt index 86a1d1e..8a2c66e 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -2,29 +2,26 @@ MSX Diagnostics Changelog -------------------------------------------------------------------------------- -2020-04-14 Ver. 1.1.0-WIP03 --------------------------------------------------------------------------------- -- Añadidos textos indicativos al test de color del monitor. -- El programa ahora reserva 4096 bytes de memoria para variables y las - ubica en la dirección más alta disponible ($E380) -- Añadida la opción para mostrar la información del sistema. -- Pantalla del menú reestructurada. - - -2020-04-13 Ver. 1.1.0-WIP02 +2020-04-15 Ver. 1.1.0 -------------------------------------------------------------------------------- +- Ahora el menú recuerda la opción selecciona al volver desde un test. +- Añadida la segunda página al menú de selección de test. - Optimizados los textos de los menus, ahorrando 420 bytes. - Añadido el soporte para el teclado francés (AZERTY) en el test de teclado. (Se realiza la deteccion automática al iniciarse el programa) - Añadido el test de color del monitor +- El programa ahora reserva 4096 bytes de memoria para variables y las + ubica en la dirección más alta disponible ($E380) +- Añadida la opción para mostrar la información del sistema. + Por ahora muestra el modelo de MSX, la cantidad de VRAM instalada y + la distribución del teclado. +- Pantalla del menú reestructurada. +- Corregido un bug en el test de sprites que causaba una corrupción aleatoria + en el área de variables al usarse. +- Se ha cambiado la combinación de teclas para salir del menú de test del + teclado (ahora es SHIFT + ESC) para facilitar el uso en emuladores. -2020-04-12 Ver. 1.1.0-WIP01 --------------------------------------------------------------------------------- -- Ahora el menú recuerda la opción selecciona al volver desde un test. -- Añadida la segunda página al menú de selección de test. - - 2020-04-11 Ver. 1.0.1. -------------------------------------------------------------------------------- - Compilado usando la actualización de MSX N'gine, que incorporaba algunas diff --git a/docs/readme.txt b/docs/readme.txt index 69e2941..caaf6f2 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -24,31 +24,38 @@ La versión actual del programa está provista de las siguientes funcionalidades Verifica el funcionamiento de la VDP en modo 0, mostrando todos los caracteres disponibles llenando la pantalla. Se puede cambiar el color de texto y del fondo entre los 15 disponibles. + - SCREEN 1 Igual al test de SCREEN 0, pero usando el modo 1. En este test además es posible cambiar el color del borde. + - SCREEN 2 Usa el modo 2 de la VDP para mostrar diversas imágenes a base de tiles. Algunas de las imágenes incorporadas se pueden usar además para el ajuste de geometría y del color del monitor o de la salida de video. También es posible cambiar el color del borde de la imagen en cualquier momento. + - SCREEN 3 Usa el modo 3 para mostrar varios patrones diferentes diversos colores. En este caso también se puede cambiar el color del borde. + - SPRITES Usando el modo 2, muestra en pantalla el número máximo de sprites permitido en MSX1 a un tamaño de 16×16. Este test además permite activar o detener el movimiento automático de estos sprites. + - KEYBOARD Permite comprobar el funcionamiento de todas las teclas básicas del teclado. A parte de mostrar un mensaje en pantalla al pulsar y soltar la tecla, cambia el color del fondo de la pantalla y emite dos sonidos diferenciados, facilitando el diagnóstico del teclado sin tener que mirar la pantalla. + - JOYSTICK Verifica el funcionamiento de los dos puertos o de los joysticks o gamepads conectados al MSX, mostrando en pantalla la pulsación de las 4 direcciones y los dos botones de los mandos. + - PSG Verifica el funcionamiento del PSG (Programmable Sound Generator) del ordenador, pudiendo especificar el tono y el volumen en cualquiera de @@ -56,4 +63,15 @@ La versión actual del programa está provista de las siguientes funcionalidades ruido (noise) a cualquiera de estos canales. También es posible escoger la frecuencia del generador de ruido. +- SYSTEM INFO + Muestra un resumen de las características técnicas de nuestro equipo. + +- MONITOR COLOR + Muestra en pantalla cada uno de los colores básicos (rojo, verde, azul), + así como el blanco, el negro y un modo en bucle que muestra todos los + colores de la paleta de MSX1 del 2 al 15, siendo además posible modificar + el tiempo de espera entre cambios. Útil para verificar la pureza del + color del monitor o ajustar la salida de video compuesto o RGB. + + El programa se distribuye en formato ROM, DISK, CAS y archivo de audio WAVE, a 1200 y 2400 baudios. diff --git a/source/data/bin/misc.asm b/source/data/bin/misc.asm index 05d2140..3d2eb39 100644 --- a/source/data/bin/misc.asm +++ b/source/data/bin/misc.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Datos miscelaneos ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/data/txt/key_names.asm b/source/data/txt/key_names.asm index 5287f72..c303c4a 100644 --- a/source/data/txt/key_names.asm +++ b/source/data/txt/key_names.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Nombres de las teclas ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/data/txt/text.asm b/source/data/txt/text.asm index 15f6ef3..b2a2b5b 100644 --- a/source/data/txt/text.asm +++ b/source/data/txt/text.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Textos del programa ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -26,7 +26,7 @@ TEXT_DASHED_LINE: ; Texto de cabecera de los menus TEXT_MENU_HEADER: - db " MSX DIAGNOSTICS v1.1.0-WIP03", $0D, $0A, $00 + db " MSX DIAGNOSTICS v1.1.0", $0D, $0A, $00 @@ -68,8 +68,8 @@ TEXT_MAIN_MENU_P1_ITEMS: db " 6. KEYBOARD", $0D, $0A db " 7. JOYSTICK", $0D, $0A db " 8. PSG", $0D, $0A - db " 9. SYSTEM INFO", $0D, $0A - db " 0. NEXT PAGE >>>", $0D, $0A + db " 9. SYSTEM INFO *", $0D, $0A + db " 0. NEXT PAGE >>", $0D, $0A db $00 @@ -84,15 +84,15 @@ TEXT_MAIN_MENU_P2_TITLE: TEXT_MAIN_MENU_P2_ITEMS: db $0D, $0A db " 1. MONITOR COLOR", $0D, $0A - db " 2. NOT AVAILABLE", $0D, $0A - db " 3. NOT AVAILABLE", $0D, $0A - db " 4. NOT AVAILABLE", $0D, $0A - db " 5. NOT AVAILABLE", $0D, $0A - db " 6. NOT AVAILABLE", $0D, $0A - db " 7. NOT AVAILABLE", $0D, $0A - db " 8. NOT AVAILABLE", $0D, $0A + db " 2. ---", $0D, $0A + db " 3. ---", $0D, $0A + db " 4. ---", $0D, $0A + db " 5. ---", $0D, $0A + db " 6. ---", $0D, $0A + db " 7. ---", $0D, $0A + db " 8. ---", $0D, $0A db " 9. REBOOT", $0D, $0A - db " 0. <<< PREVIOUS PAGE", $0D, $0A + db " 0. << PREVIOUS PAGE", $0D, $0A db $00 @@ -225,7 +225,7 @@ TEXT_KEYBOARD_MENU_INSTRUCTIONS: db " DETECTED, YOU'LL BE WARNED WITH A", $0D, $0A db " TEXT, COLOR CHANGE AND A SOUND.", $0D, $0A db $0D, $0A - db " * PRESS CTRL + ESC OR BUTTON 2 TO", $0D, $0A + db " * PRESS SHIFT + ESC OR BUTTON 2 TO", $0D, $0A db " BACK TO THE MAIN MENU.", $0D, $0A db $00 @@ -323,11 +323,15 @@ TEXT_PSG_GUI: + ; Textos de la informacion del sistema + TEXT_SYSTEM_INFO_TITLE: db " SYSTEM INFORMATION", $0D, $0A, $00 + + TEXT_SYSTEM_INFO_MSX_MODEL: db $0D, $0A, $0D, $0A, " MODEL: ", $00 @@ -348,10 +352,50 @@ TEXT_SYSTEM_INFO_MSXTR: db "TURBO-R", $00 -TEXT_SYSTEM_INFO_MODEL_UNKNOW: +TEXT_SYSTEM_INFO_UNKNOW: db "UNKNOW", $00 + + +TEXT_SYSTEM_INFO_N_16: + + db "16", $00 + +TEXT_SYSTEM_INFO_N_32: + + db "32", $00 + +TEXT_SYSTEM_INFO_N_64: + + db "64", $00 + +TEXT_SYSTEM_INFO_N_128: + + db "128", $00 + +TEXT_SYSTEM_INFO_N_256: + + db "256", $00 + +TEXT_SYSTEM_INFO_N_512: + + db "512", $00 + +TEXT_SYSTEM_INFO_KB: + + db "KB", $00 + +TEXT_SYSTEM_INFO_VRAM: + + db $0D, $0A, $0D, $0A, " VRAM: ", $00 + +TEXT_SYSTEM_INFO_RAM: + + db $0D, $0A, $0D, $0A, " RAM: ", $00 + + + TEXT_SYSTEM_INFO_KEYBOARD: db $0D, $0A, $0D, $0A, " KEYBOARD LAYOUT: ", $00 @@ -384,6 +428,15 @@ TEXT_SYSTEM_INFO_KB_SPAIN: db "SP", $00 +TEXT_SYSTEM_INFO_EXIT: + + db $0D, $0A, $0D, $0A, $0D, $0A, $0D, $0A + db " THIS OPTION STILL IN", $0D, $0A + db " WORK IN PROGRESS STATUS." + db $0D, $0A, $0D, $0A, $0D, $0A, $0D, $0A, $0D, $0A + db " PRESS ACCEPT OR CANCEL TO EXIT." + db $00 + diff --git a/source/formats/f_binary.asm b/source/formats/f_binary.asm index de609e3..b7c44b8 100644 --- a/source/formats/f_binary.asm +++ b/source/formats/f_binary.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Directivas de compilacion para BINARIO de 32kb ; diff --git a/source/formats/f_cas.asm b/source/formats/f_cas.asm index 783181b..974296f 100644 --- a/source/formats/f_cas.asm +++ b/source/formats/f_cas.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Directivas de compilacion para BINARIO de 32kb ; Genera un archivo .CAS y .WAV diff --git a/source/formats/f_com.asm b/source/formats/f_com.asm index 3e4a3e1..5fa487b 100644 --- a/source/formats/f_com.asm +++ b/source/formats/f_com.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Directivas de compilacion para .COM de MSX-DOS ; diff --git a/source/formats/f_rom.asm b/source/formats/f_rom.asm index 5b95426..a4786e1 100644 --- a/source/formats/f_rom.asm +++ b/source/formats/f_rom.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Directivas de compilacion para ROM de 32kb ; diff --git a/source/msxdiag.asm b/source/msxdiag.asm index b9dbe1f..02deef2 100644 --- a/source/msxdiag.asm +++ b/source/msxdiag.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -31,10 +31,10 @@ ; Selecciona la directiva de compilacion (descomentar) ; ---------------------------------------------------------- -OUTPUT_FORMAT_BINARY = 1 ; Formato de salida binario de BASIC -OUTPUT_FORMAT_ROM = 2 ; Formato de salida ROM -OUTPUT_FORMAT_COM = 3 ; Formato de salida COM para MSX-DOS -OUTPUT_FORMAT_CAS = 4 ; Formato de salida binario de BASIC (Salida en formato .CAS y .WAV) +OUTPUT_FORMAT_BINARY = 1 ; Formato de salida binario de BASIC +OUTPUT_FORMAT_ROM = 2 ; Formato de salida ROM +OUTPUT_FORMAT_COM = 3 ; Formato de salida COM para MSX-DOS +OUTPUT_FORMAT_CAS = 4 ; Formato de salida binario de BASIC (Salida en formato .CAS y .WAV) ;.INCLUDE "formats/f_binary.asm" ; Binario de BASIC .INCLUDE "formats/f_rom.asm" ; Cartucho ROM diff --git a/source/ngn/ngn_psg.asm b/source/ngn/ngn_psg.asm index 939cf1f..df43dfb 100644 --- a/source/ngn/ngn_psg.asm +++ b/source/ngn/ngn_psg.asm @@ -109,52 +109,52 @@ NGN_PSG_INIT: or $80 ; Pon el BIT 7 a 1 y el BIT 6 a 0 [10xxxxxx] out ($A1), a ; Escribe los datos en el registro - ld a, 0 ; Frecuencia del canal A (low-byte) + xor a ; Frecuencia del canal A (low-byte) out ($A0), a - ld a, $00 + xor a out ($A1), a ld a, 1 ; Frecuencia del canal A (hi-byte) out ($A0), a - ld a, $00 + xor a out ($A1), a ld a, 8 ; Volumen del canal A out ($A0), a - ld a, 0 ; Volumen a 0 (sin modulacion) + xor a ; Volumen a 0 (sin modulacion) out ($A1), a ld a, 2 ; Frecuencia del canal B (low-byte) out ($A0), a - ld a, $00 + xor a out ($A1), a ld a, 3 ; Frecuencia del canal B (hi-byte) out ($A0), a - ld a, $00 + xor a out ($A1), a ld a, 9 ; Volumen del canal B out ($A0), a - ld a, 0 ; Volumen a 0 (sin modulacion) + xor a ; Volumen a 0 (sin modulacion) out ($A1), a ld a, 4 ; Frecuencia del canal C (low-byte) out ($A0), a - ld a, $00 + xor a out ($A1), a ld a, 5 ; Frecuencia del canal C (hi-byte) out ($A0), a - ld a, $00 + xor a out ($A1), a ld a, 10 ; Volumen del canal C out ($A0), a - ld a, 0 ; Volumen a 0 (sin modulacion) + xor a ; Volumen a 0 (sin modulacion) out ($A1), a ; Frecuencia del ruido - ld a, 6 ; Seleccion del canal de ruido + ld a, 6 ; Seleccion del canal de ruido out ($A0), a - ld a, $00 ; Frecuencia + xor a ; Frecuencia out ($A1), a ; Habilita las interupciones diff --git a/source/ngn/ngn_start.asm b/source/ngn/ngn_start.asm index 77c8e0f..e7d568a 100644 --- a/source/ngn/ngn_start.asm +++ b/source/ngn/ngn_start.asm @@ -30,7 +30,7 @@ NGN_START: call NGN_PSG_INIT ; Deshabilita el sonido del teclado - xor a ; Fuerza a que A sea 0 + xor a ; Fuerza a que A sea 0 ld [$F3DB], a ; [CLIKSW] ; Sal de la rutina @@ -46,31 +46,35 @@ NGN_START: @@INIT_VARIABLES: ; Teclas - ld hl, NGN_KEY_0 ; Puntero donde esta la primera tecla + ld hl, NGN_KEY_0 ; Puntero donde esta la primera tecla ld b, NGN_TOTAL_KEYS ; Numero de teclas a reiniciar @@RESET_KEYS: - xor a ; Registro A a 0 - ld [hl], a ; Borra el contenido de la tecla - inc hl ; Siguiente tecla - dec b ; Cuenta las teclas iniciadas - jr nz, @@RESET_KEYS ; Repite el proceso + xor a ; Registro A a 0 + ld [hl], a ; Borra el contenido de la tecla + inc hl ; Siguiente tecla + dec b ; Cuenta las teclas iniciadas + jr nz, @@RESET_KEYS ; Repite el proceso ; Joysticks - ld hl, NGN_JOY1_UP ; Puntero donde esta la primera tecla de joystick + ld hl, NGN_JOY1_UP ; Puntero donde esta la primera tecla de joystick ld b, NGN_TOTAL_JOYKEYS ; Numero de teclas a reiniciar @@RESET_JOYKEYS: - xor a ; Registro A a 0 - ld [hl], a ; Borra el contenido de la tecla - inc hl ; Siguiente tecla - dec b ; Cuenta las teclas iniciadas + xor a ; Registro A a 0 + ld [hl], a ; Borra el contenido de la tecla + inc hl ; Siguiente tecla + dec b ; Cuenta las teclas iniciadas jr nz, @@RESET_JOYKEYS ; Repite el proceso ; Atributos de sprites (0-31) - call $0069 ; Borra los sprites con la rutina [CLRSPR] de la BIOS - ld hl, NGN_SPRATR ; Puntero a la tabla de sprites en VRAM + call $0069 ; Borra los sprites con la rutina [CLRSPR] de la BIOS + ld hl, NGN_SPRATR ; Puntero a la tabla de sprites en VRAM ld de, NGN_SPRITE_00 ; Puntero al primer sprite en RAM - ld bc, $0080 ; 128 bytes de datos (32*4) - call $0059 ; Ejecuta la rutina [LDIRMV] (Mueve datos de VRAM a RAM) + ld bc, $0080 ; 128 bytes de datos (32*4) + call $0059 ; Ejecuta la rutina [LDIRMV] (Mueve datos de VRAM a RAM) + + ; Random Seed + ld a, 13 + ld [NGN_RANDOM_SEED], a ; Vuelve diff --git a/source/ngn/ngn_system.asm b/source/ngn/ngn_system.asm index 189f63c..7338641 100644 --- a/source/ngn/ngn_system.asm +++ b/source/ngn/ngn_system.asm @@ -16,18 +16,33 @@ ; NGN_SYSTEM_RANDOM_NUMBER ; Genera un numero aleatorio entre 0-255 ; A = Devuelve el numero generado -; Modifica A, B +; Modifica A, B y C ; ---------------------------------------------------------- NGN_SYSTEM_RANDOM_NUMBER: ld a, [NGN_RANDOM_SEED] ld b, a - add a, a - add a, a - add a, b - add a, 7 + + @@REPEAT: + + add 1 + rlca + add 11 + rlca + add 31 + rlca + add 41 + + cp b + jr nz, @@EXIT + inc a + + jr @@REPEAT + + @@EXIT: ld [NGN_RANDOM_SEED], a + ret diff --git a/source/prog/consts.asm b/source/prog/consts.asm index 7b3e76b..16ac95f 100644 --- a/source/prog/consts.asm +++ b/source/prog/consts.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Definicion de constantes ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/joystick_test.asm b/source/prog/joystick_test.asm index 9b70749..75f37e9 100644 --- a/source/prog/joystick_test.asm +++ b/source/prog/joystick_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Test de los Joysticks ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -93,7 +93,7 @@ FUNCTION_JOYSTICK_TEST_RUN: ; Joy 1 ; Crea el sprite P1 UP [0] - ld a, 0 ; Slot del sprite [A] + xor a ; Slot del sprite [A] ld de, $403F ; Posicion del sprite [D = Pos X] [E = Pos Y] ld bc, $0001 ; Slot grafico [B] / Color de la paleta [C] call NGN_SPRITE_CREATE ; Genera el sprite diff --git a/source/prog/keyboard_test.asm b/source/prog/keyboard_test.asm index 8377f71..2b643de 100644 --- a/source/prog/keyboard_test.asm +++ b/source/prog/keyboard_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Test del teclado ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -90,11 +90,11 @@ FUNCTION_KEYBOARD_TEST_WAIT_FREE_KEYS: ; Lee la entrada call FUNCTION_SYSTEM_HID_READ - ld a, [NGN_KEY_ANY] ; Si esta pulsada "Cualquier tecla" + ld a, [NGN_KEY_ANY] ; Si esta pulsada "Cualquier tecla" and $FF ; Detecta "KEY DOWN" jp z, FUNCTION_KEYBOARD_TEST_RUN ; Ejecuta el test si no hay pulsada ninguna tecla - ld a, [SYSKEY_CANCEL] ; Si se pulsa "CANCELAR" + ld a, [SYSKEY_CANCEL] ; Si se pulsa "CANCELAR" and $02 ; Detecta "KEY DOWN" ret nz ; Vuelve al menu principal si se pulsa @@ -144,7 +144,7 @@ FUNCTION_KEYBOARD_TEST_RUN: and $02 ; Detecta "KEY DOWN" jr nz, @@EXIT ; Vuelve al menu principal - ld a, [NGN_KEY_CTRL] ; Si se pulsa "CTRL" + ld a, [NGN_KEY_SHIFT] ; Si se pulsa "SHIFT" and $01 ; Detecta "KEY HELD" jr z, @@NO_ESC ; Si no esta presionada, no verifiques ESC diff --git a/source/prog/main.asm b/source/prog/main.asm index a171f06..e44c53b 100644 --- a/source/prog/main.asm +++ b/source/prog/main.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Archivo principal ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/main_menu_common.asm b/source/prog/main_menu_common.asm index e0415ea..9c61656 100644 --- a/source/prog/main_menu_common.asm +++ b/source/prog/main_menu_common.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Menu Principal (Funciones comunes) ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/main_menu_p1.asm b/source/prog/main_menu_p1.asm index 0428cf8..1ecbbdd 100644 --- a/source/prog/main_menu_p1.asm +++ b/source/prog/main_menu_p1.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Menu Principal (Pagina 1) ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/main_menu_p2.asm b/source/prog/main_menu_p2.asm index b2f66e3..c2656cd 100644 --- a/source/prog/main_menu_p2.asm +++ b/source/prog/main_menu_p2.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Menu Principal (Pagina 2) ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/monitor_color_test.asm b/source/prog/monitor_color_test.asm index b2f3e58..9007607 100644 --- a/source/prog/monitor_color_test.asm +++ b/source/prog/monitor_color_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Test de color del monitor ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/psg_test.asm b/source/prog/psg_test.asm index faa3ce9..d295fab 100644 --- a/source/prog/psg_test.asm +++ b/source/prog/psg_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Test PSG ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -74,8 +74,24 @@ FUNCTION_PSG_TEST_RUN: ; Reinicia e PSG call NGN_PSG_INIT + ; Coloca el volumen de los 3 canales de melodia al maximo + di + ld a, 8 ; Volumen del canal A + out ($A0), a + ld a, 15 ; Volumen a 15 (sin modulacion) + out ($A1), a + ld a, 9 ; Volumen del canal B + out ($A0), a + ld a, 15 ; Volumen a 15 (sin modulacion) + out ($A1), a + ld a, 10 ; Volumen del canal C + out ($A0), a + ld a, 15 ; Volumen a 15 (sin modulacion) + out ($A1), a + ei + ; Valores por iniciales de este test - ld a, 0 ; Por defecto, las opciones estan a 0 + xor a ; Por defecto, las opciones estan a 0 ld [SNDCHN1_FRQ], a ; Frecuencia del canal A ld [SNDCHN2_FRQ], a ; Frecuencia del canal B ld [SNDCHN3_FRQ], a ; Frecuencia del canal C @@ -83,7 +99,7 @@ FUNCTION_PSG_TEST_RUN: ld [SNDCHN1_VOL], a ; Volumen del canal A ld [SNDCHN2_VOL], a ; Volumen del canal B ld [SNDCHN3_VOL], a ; Volumen del canal C - ld a, 0 ; Por defecto el canal de ruido no esta asignado + xor a ; Por defecto el canal de ruido no esta asignado ld [SNDNOISE_CHAN], a ; Volumen del canal de ruido ld a, 8 ; Y tiene la frecuencia media ld [SNDNOISE_FRQ], a ; Frecuencia del canal de ruido @@ -180,7 +196,7 @@ FUNCTION_PSG_TEST_RUN: ; Reset de comandos (IZQ/DER) (0 ninguno, 1 derecha, 2 izquierda) @@MOVE_LEFT_RIGHT: - ld a, 0 + xor a ld b, a ; Si se pulsa "DERECHA" @@ -478,7 +494,7 @@ FUNCTION_PSG_TEST_RUN: ld a, [PSG_TEST_CURSOR_Y] ; Posicion inicial Y ld l, a ld h, PSGTEST_FREQ_X_START ; Posicion inicial X - ld a, 0 + xor a ld b, a ; Contador ld a, [PSG_TEST_FREQ] ; Freq actual ld c, a @@ -684,7 +700,7 @@ FUNCTION_PSG_TEST_RUN: ld a, 7 out ($A0), a ; Datos a enviar al registro 7 - ld a, e ; Mascara de la configuracion de canales + ld a, e ; Mascara de la configuracion de canales and $3F ; Proteccion al PSG, los BITs 6 y 7 a 0 [00xxxxxx] or $80 ; Pon el BIT 7 a 1 y el BIT 6 a 0 [10xxxxxx] out ($A1), a ; Escribe los datos en el registro @@ -696,7 +712,7 @@ FUNCTION_PSG_TEST_RUN: ld a, [PSG_TEST_CURSOR_Y] ; Posicion inicial Y ld l, a ld h, PSGTEST_NOISE_CHAN_X_START ; Posicion inicial X - ld a, 0 + xor a ld b, a ; Contador ld a, [SNDNOISE_CHAN] ; Canal actual ld c, a diff --git a/source/prog/screen0_test.asm b/source/prog/screen0_test.asm index 538e9f5..729fa98 100644 --- a/source/prog/screen0_test.asm +++ b/source/prog/screen0_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Test SCREEN 0 ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/screen1_test.asm b/source/prog/screen1_test.asm index 8be6a38..e38f571 100644 --- a/source/prog/screen1_test.asm +++ b/source/prog/screen1_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Test SCREEN 1 ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/screen2_test.asm b/source/prog/screen2_test.asm index d0a3c0b..51bebd2 100644 --- a/source/prog/screen2_test.asm +++ b/source/prog/screen2_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Test SCREEN 2 ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/screen3_test.asm b/source/prog/screen3_test.asm index 2f0da80..a7ce7d2 100644 --- a/source/prog/screen3_test.asm +++ b/source/prog/screen3_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Test SCREEN 3 ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/sfx.asm b/source/prog/sfx.asm index 7f817bb..a06abf9 100644 --- a/source/prog/sfx.asm +++ b/source/prog/sfx.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Funciones de efectos de sonido ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -20,13 +20,13 @@ SFX_FUNCTION_PLAY_PING: di ; Deshabilita las interrupciones ; Tono en el Canal A: 111,861 Hz / 186 = 601 hz - ld a, 0 + xor a out ($A0), a ld a, 186 out ($A1), a ld a, 1 out ($A0), a - ld a, 0 + xor a out ($A1), a ; Volumen a 15 @@ -50,7 +50,7 @@ SFX_FUNCTION_PLAY_PONG: di ; Deshabilita las interrupciones ; Tono en el Canal A: 111,861 Hz / 280 = 400 hz - ld a, 0 + xor a out ($A0), a ld a, $18 out ($A1), a @@ -108,18 +108,18 @@ SFX_FUNCTION_CLOSE: di ; Deshabilita las interrupciones ; Canal A - ld a, 0 ; Anula el tono + xor a ; Anula el tono out ($A0), a - ld a, 0 + xor a out ($A1), a ld a, 1 out ($A0), a - ld a, 0 + xor a out ($A1), a ld a, 8 ; Volumen del canal A out ($A0), a - ld a, 0 + xor a out ($A1), a ; Nuevo volumen ei ; Habilita las interrupciones diff --git a/source/prog/sprites_test.asm b/source/prog/sprites_test.asm index 3fee724..c2f673e 100644 --- a/source/prog/sprites_test.asm +++ b/source/prog/sprites_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Test de los Sprites (MODO SCREEN 2) ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -114,35 +114,35 @@ FUNCTION_SPRITES_TEST_RUN: ; Decide el modo que estas @@MODE: - pop bc ; Recupera el estado - ld a, b ; Consulta el modo - cp 0 ; Si es 0, modo STANDBY - jr nz, @@MOVE ; Si es 1, modo MOVE + pop bc ; Recupera el estado + ld a, b ; Consulta el modo + cp 0 ; Si es 0, modo STANDBY + jr nz, @@MOVE ; Si es 1, modo MOVE ; Modo espera @@STANDBY: ld a, [SYSKEY_ACCEPT] ; Si se pulsa ACEPTAR, cambia el modo - and $02 ; Detecta "KEY DOWN" - jr z, @@CANCEL ; Si no se ha pulsado, salta - ld b, 1 ; Cambia el modo + and $02 ; Detecta "KEY DOWN" + jr z, @@CANCEL ; Si no se ha pulsado, salta + ld b, 1 ; Cambia el modo jr @@CANCEL ; Modo movimiento @@MOVE: - push bc ; Guarda el estado + push bc ; Guarda el estado call FUNCTION_SPRITES_TEST_MOVE ; Mueve los sprites - call NGN_SPRITE_UPDATE ; Actualiza los sprites - pop bc ; Recuperalo - ld a, [SYSKEY_ACCEPT] ; Si se pulsa ACEPTAR, cambia el modo - and $02 ; Detecta "KEY DOWN" - jr z, @@CANCEL ; Si no se ha pulsado, salta - ld b, 0 ; Cambia el modo + call NGN_SPRITE_UPDATE ; Actualiza los sprites + pop bc ; Recuperalo + ld a, [SYSKEY_ACCEPT] ; Si se pulsa ACEPTAR, cambia el modo + and $02 ; Detecta "KEY DOWN" + jr z, @@CANCEL ; Si no se ha pulsado, salta + ld b, 0 ; Cambia el modo jr @@CANCEL @@CANCEL: - ld a, [SYSKEY_CANCEL] ; Si se pulsa "CANCELAR" - and $02 ; Detecta "KEY DOWN" - ret nz ; Vuelve al menu principal si se pulsa + ld a, [SYSKEY_CANCEL] ; Si se pulsa "CANCELAR" + and $02 ; Detecta "KEY DOWN" + ret nz ; Vuelve al menu principal si se pulsa ; Espera el VSYNC ei ; Asegurate que las interrupciones estan habilitadas @@ -161,7 +161,7 @@ FUNCTION_SPRITES_TEST_RUN: FUNCTION_SPRITES_TEST_CREATE: ; Genera 32 Sprites (Colores 2-15) - ld a, 0 ; Slot del sprite [A] + xor a ; Slot del sprite [A] 0 ld de, $1803 ; Posicion del sprite [D = Pos X] [E = Pos Y] ld bc, $0002 ; Slot grafico [B] / Color de la paleta [C] @@ -189,18 +189,18 @@ FUNCTION_SPRITES_TEST_CREATE: ld e, a @@NEXT_COLOR: - inc c ; Siguiente color + inc c ; Siguiente color ld a, c - cp 16 ; Si has llegado al ultimo color, reinicia + cp 16 ; Si has llegado al ultimo color, reinicia jr nz, @@NEXT_SPRITE ld c, 2 @@NEXT_SPRITE: - pop af ; Recupera el numero de sprite - inc a ; Siguiente slot de sprite + pop af ; Recupera el numero de sprite + inc a ; Siguiente slot de sprite - cp 32 ; Si aun no has generado 32 sprites - jp nz, @@LOOP ; Repite el bucle + cp 32 ; Si aun no has generado 32 sprites + jp nz, @@LOOP ; Repite el bucle ; Actualiza los atributos de los sprites @@ -216,13 +216,17 @@ FUNCTION_SPRITES_TEST_CREATE: FUNCTION_SPRITES_TEST_SET_SPEED: - ld hl, SPRITE_SPEED ; Variables - ld b, 0 ; Contador + ld hl, SPRITE_SPEED ; Variables + ld b, 0 ; Contador ; Loop @@LOOP: + push bc ; Salva los registros alterados por el call NGN_SYSTEM_RANDOM_NUMBER + push hl call NGN_SYSTEM_RANDOM_NUMBER + pop hl ; Restaura los registros alterados por el call NGN_SYSTEM_RANDOM_NUMBER + pop bc add 128 jr nc, @@ZERO @@ -234,8 +238,8 @@ FUNCTION_SPRITES_TEST_SET_SPEED: @@NEXT: inc hl ; Siguiente variable - inc e ; Siguiente interacion - ld a, e + inc b ; Siguiente interacion + ld a, b cp 64 jr nz, @@LOOP @@ -250,9 +254,9 @@ FUNCTION_SPRITES_TEST_SET_SPEED: FUNCTION_SPRITES_TEST_MOVE: - ld a, 0 ; Contador de sprites - ld bc, SPRITE_SPEED ; Primera variable de velocidad - ld de, NGN_SPRITE_00 ; Primer sprite + xor a ; Contador de sprites (0) + ld bc, SPRITE_SPEED ; Primera variable de velocidad + ld de, NGN_SPRITE_00 ; Primer sprite ; Loop de movimiento @@LOOP: @@ -261,70 +265,70 @@ FUNCTION_SPRITES_TEST_MOVE: push af ; Eje Y - ld a, [bc] ; Analiza si suma o resta - cp 0 - jr z, @@ADD_Y ; Si es 0 Suma, si no resta + ld a, [bc] ; Analiza si suma o resta + or a + jr z, @@ADD_Y ; Si es 0 Suma, si no resta ; Resta en Y - ld a, [de] ; Restale 1 + ld a, [de] ; Restale 1 dec a - cp 0 ; Si llegas al limite, invierte la velocidad ld [de], a - jr nz, @@AXIS_X ; Si no continua al eje X + or a ; Si llegas al limite, invierte la velocidad + jr nz, @@AXIS_X ; Si no continua al eje X xor a - ld [bc], a ; Guarda la inversion + ld [bc], a ; Guarda la inversion jr @@AXIS_X ; Suma en Y @@ADD_Y: - ld a, [de] ; Sumale 1 + ld a, [de] ; Sumale 1 inc a - cp 175 ; Si llegas al limite, invierte la velocidad ld [de], a - jr nz, @@AXIS_X ; Si no continua al eje X + cp 175 ; Si llegas al limite, invierte la velocidad + jr nz, @@AXIS_X ; Si no continua al eje X ld a, 1 - ld [bc], a ; Guarda la inversion + ld [bc], a ; Guarda la inversion ; Eje X @@AXIS_X: - inc bc ; Velocidad X - inc de ; Posicion X + inc bc ; Velocidad X + inc de ; Posicion X - ld a, [bc] ; Analiza si suma o resta - cp 0 - jr z, @@ADD_X ; Si es 0 Suma, si no resta + ld a, [bc] ; Analiza si suma o resta + or a + jr z, @@ADD_X ; Si es 0 Suma, si no resta ; Resta en X - ld a, [de] ; Restale 1 + ld a, [de] ; Restale 1 dec a - cp 0 ; Si llegas al limite, invierte la velocidad ld [de], a - jr nz, @@NEXT ; Si no continua al siguiente sprite + or a ; Si llegas al limite, invierte la velocidad + jr nz, @@NEXT ; Si no continua al siguiente sprite xor a - ld [bc], a ; Guarda la inversion + ld [bc], a ; Guarda la inversion jr @@NEXT ; Suma en X @@ADD_X: - ld a, [de] ; Sumale 1 + ld a, [de] ; Sumale 1 inc a - cp 239 ; Si llegas al limite, invierte la velocidad ld [de], a - jr nz, @@NEXT ; Si no continua al siguiente sprite + cp 239 ; Si llegas al limite, invierte la velocidad + jr nz, @@NEXT ; Si no continua al siguiente sprite ld a, 1 - ld [bc], a ; Guarda la inversion + ld [bc], a ; Guarda la inversion ; Siguiente Sprite @@NEXT: - inc bc ; Siguiente Velocidad - inc de ; Siguiente Sprite + inc bc ; Siguiente Velocidad + inc de ; Siguiente Sprite inc de inc de - pop af ; Recupera en numero de sprite + pop af ; Recupera en numero de sprite inc a - cp 32 ; Si no has movido los 32 sprite, repite + cp 32 ; Si no has movido los 32 sprite, repite jp nz, @@LOOP diff --git a/source/prog/system.asm b/source/prog/system.asm index b3d0c18..b7d30b9 100644 --- a/source/prog/system.asm +++ b/source/prog/system.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Funciones comunes del sistema ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/system_info.asm b/source/prog/system_info.asm index a47b368..7fa5d8c 100644 --- a/source/prog/system_info.asm +++ b/source/prog/system_info.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Informacion del sistema ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -73,17 +73,65 @@ FUNCTION_SYSTEM_INFO: jr @@PRINT_MSX_MODEL @@MODEL_UNKNOW: - ld hl, TEXT_SYSTEM_INFO_MODEL_UNKNOW + ld hl, TEXT_SYSTEM_INFO_UNKNOW @@PRINT_MSX_MODEL: call NGN_TEXT_PRINT ; Imprimelo + ; ---------------------------------------------------------- + ; VRAM + ; ---------------------------------------------------------- + + ld hl, TEXT_SYSTEM_INFO_VRAM ; VRAM + call NGN_TEXT_PRINT ; Imprimelo + + ld a, [$FAFC] ; BIOS, tamaño de la VRAM + and $06 ; 0 0 0 0 0 X X 0 + ; | | 00 - 16 kb + ; | ---> 01 - 64 kb + ; -----> 10 - 128 kb + + ; 16kb + ;or a ; 0000 + jr nz, @@VRAM64 + ld hl, TEXT_SYSTEM_INFO_N_16 + jr @@PRINT_VRAM + + ; 64kb + @@VRAM64: + cp 2 ; 0010 + jr nz, @@VRAM128 + ld hl, TEXT_SYSTEM_INFO_N_64 + jr @@PRINT_VRAM + + ; 128kb + @@VRAM128: + cp 4 ; 0100 + jr nz, @@VRAM_UNKNOW + ld hl, TEXT_SYSTEM_INFO_N_128 + jr @@PRINT_VRAM + + ; Desconocido + @@VRAM_UNKNOW: + ld hl, TEXT_SYSTEM_INFO_UNKNOW + call NGN_TEXT_PRINT + jr @@KEYBOARD_LAYOUT + + ; Imprime el tamaño de la VRAM + @@PRINT_VRAM: + call NGN_TEXT_PRINT + ld hl, TEXT_SYSTEM_INFO_KB + call NGN_TEXT_PRINT + + ; ---------------------------------------------------------- ; Distribucion del teclado ; ---------------------------------------------------------- + @@KEYBOARD_LAYOUT: + ld hl, TEXT_SYSTEM_INFO_KEYBOARD ; Distribucion del teclado call NGN_TEXT_PRINT ; Imprimelo @@ -139,6 +187,12 @@ FUNCTION_SYSTEM_INFO: call NGN_TEXT_PRINT ; Imprimelo + ; ---------------------------------------------------------- + ; Pie de pagina + ; ---------------------------------------------------------- + + ld hl, TEXT_SYSTEM_INFO_EXIT ; Cancelar para salir + call NGN_TEXT_PRINT ; Imprimelo ; Ejecuta la rutina [ENASCR] para habilitar la pantalla diff --git a/source/prog/vars.asm b/source/prog/vars.asm index 55130e9..494ef2c 100644 --- a/source/prog/vars.asm +++ b/source/prog/vars.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Declaracion de variables ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/welcome.asm b/source/prog/welcome.asm index 25a1c0f..7c3a197 100644 --- a/source/prog/welcome.asm +++ b/source/prog/welcome.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip03 +; Version 1.1.0 ; ASM Z80 MSX ; Archivo principal ; (cc) 2018-2020 Cesar Rincon "NightFox"