From edfeee7dbca015119197ec452a14220fdd7bc60e Mon Sep 17 00:00:00 2001 From: Cesar Rincon Nadal Date: Tue, 14 Apr 2020 09:50:19 +0200 Subject: [PATCH] Ver. 1.1.0-WIP03 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- docs/changelog.txt | 11 +- source/data/bin/misc.asm | 2 +- source/data/txt/key_names.asm | 11 +- source/data/txt/text.asm | 124 ++++++++++-- source/formats/f_binary.asm | 25 +-- source/formats/f_cas.asm | 27 +-- source/formats/f_com.asm | 19 +- source/formats/f_rom.asm | 16 +- source/msxdiag.asm | 8 +- source/ngn/ngn_vars.asm | 10 +- source/prog/consts.asm | 8 +- source/prog/joystick_test.asm | 6 +- source/prog/keyboard_test.asm | 8 +- source/prog/main.asm | 2 +- source/prog/main_menu_common.asm | 2 +- source/prog/main_menu_p1.asm | 37 +++- source/prog/main_menu_p2.asm | 28 +-- ...stress_test.asm => monitor_color_test.asm} | 165 ++++++++++------ source/prog/psg_test.asm | 6 +- source/prog/screen0_test.asm | 6 +- source/prog/screen1_test.asm | 6 +- source/prog/screen2_test.asm | 6 +- source/prog/screen3_test.asm | 6 +- source/prog/sfx.asm | 2 +- source/prog/sprites_test.asm | 6 +- source/prog/system.asm | 20 +- source/prog/system_info.asm | 178 ++++++++++++++++++ source/prog/vars.asm | 24 ++- source/prog/welcome.asm | 4 +- 29 files changed, 606 insertions(+), 167 deletions(-) rename source/prog/{monitor_color_stress_test.asm => monitor_color_test.asm} (52%) create mode 100644 source/prog/system_info.asm diff --git a/docs/changelog.txt b/docs/changelog.txt index c8f48ed..86a1d1e 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -2,12 +2,21 @@ 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 -------------------------------------------------------------------------------- - 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 y stress del monitor +- Añadido el test de color del monitor 2020-04-12 Ver. 1.1.0-WIP01 diff --git a/source/data/bin/misc.asm b/source/data/bin/misc.asm index 62ebf89..05d2140 100644 --- a/source/data/bin/misc.asm +++ b/source/data/bin/misc.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; 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 e2ebea4..5287f72 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-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Nombres de las teclas ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -38,4 +38,11 @@ KEY_NAMES_BOTTOM_ROWS: db $F0, $F0, $F0, $F0, $F0, $F0, $F0, $F0 ; ROW 7 db $F0, $F0, $F0, $F0, $F0, $F0, $F0, $F0 ; ROW 8 db "*", "+", "/", "0", "1", "2", "3", "4" ; ROW 9 - db "5", "6", "7", "8", "9", "-", ",", "." ; ROW 10 \ No newline at end of file + db "5", "6", "7", "8", "9", "-", ",", "." ; ROW 10 + + + +;*********************************************************** +; Fin del archivo +;*********************************************************** +KEY_NAMES_EOF: \ No newline at end of file diff --git a/source/data/txt/text.asm b/source/data/txt/text.asm index f850fb1..15f6ef3 100644 --- a/source/data/txt/text.asm +++ b/source/data/txt/text.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; 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-WIP02", $0D, $0A, $00 + db " MSX DIAGNOSTICS v1.1.0-WIP03", $0D, $0A, $00 @@ -55,7 +55,7 @@ TEXT_MENU_FOOTER: TEXT_MAIN_MENU_P1_TITLE: db $0D, $0A - db " TEST MENU [1/2]", $0D, $0A + db " PAGE 1 OF 2", $0D, $0A db $00 TEXT_MAIN_MENU_P1_ITEMS: @@ -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. NEXT PAGE >>>", $0D, $0A - db " 0. REBOOT", $0D, $0A + db " 9. SYSTEM INFO", $0D, $0A + db " 0. NEXT PAGE >>>", $0D, $0A db $00 @@ -78,12 +78,12 @@ TEXT_MAIN_MENU_P1_ITEMS: TEXT_MAIN_MENU_P2_TITLE: db $0D, $0A - db " TEST MENU [2/2]", $0D, $0A + db " PAGE 2 OF 2", $0D, $0A db $00 TEXT_MAIN_MENU_P2_ITEMS: db $0D, $0A - db " 1. MONITOR COLOR & STRESS", $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 @@ -91,8 +91,8 @@ TEXT_MAIN_MENU_P2_ITEMS: db " 6. NOT AVAILABLE", $0D, $0A db " 7. NOT AVAILABLE", $0D, $0A db " 8. NOT AVAILABLE", $0D, $0A - db " 9. <<< PREVIOUS PAGE", $0D, $0A - db " 0. REBOOT", $0D, $0A + db " 9. REBOOT", $0D, $0A + db " 0. <<< PREVIOUS PAGE", $0D, $0A db $00 @@ -323,18 +323,112 @@ TEXT_PSG_GUI: -; Textos del menu MONITOR COLOR & STRESS -TEXT_MONITOR_COLOR_STRESS_MENU_TITLE: +; 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 + +TEXT_SYSTEM_INFO_MSX1: + + db "MSX", $00 + +TEXT_SYSTEM_INFO_MSX2: + + db "MSX2", $00 + +TEXT_SYSTEM_INFO_MSX2PLUS: + + db "MSX2+", $00 + +TEXT_SYSTEM_INFO_MSXTR: + + db "TURBO-R", $00 + +TEXT_SYSTEM_INFO_MODEL_UNKNOW: + + db "UNKNOW", $00 + +TEXT_SYSTEM_INFO_KEYBOARD: + + db $0D, $0A, $0D, $0A, " KEYBOARD LAYOUT: ", $00 + +TEXT_SYSTEM_INFO_KB_JAPAN: + + db "JP", $00 + +TEXT_SYSTEM_INFO_KB_INTERNATIONAL: + + db "INT", $00 + +TEXT_SYSTEM_INFO_KB_FRANCE: + + db "FR", $00 + +TEXT_SYSTEM_INFO_KB_UK: + + db "GB", $00 + +TEXT_SYSTEM_INFO_KB_GERMANY: + + db "DE", $00 + +TEXT_SYSTEM_INFO_KB_USSR: + + db "USSR", $00 + +TEXT_SYSTEM_INFO_KB_SPAIN: + + db "SP", $00 + + + + +; Textos del menu MONITOR COLOR +TEXT_MONITOR_COLOR_MENU_TITLE: db $0D, $0A - db " MONITOR COLOR & STRESS TEST", $0D, $0A + db " MONITOR COLOR TEST", $0D, $0A db $00 -TEXT_MONITOR_COLOR_STRESS_MENU_INSTRUCTIONS: +TEXT_MONITOR_COLOR_MENU_INSTRUCTIONS: db $0D, $0A db " * PRESS LEFT/RIGHT TO CHANGE", $0D, $0A - db " THE TEST TYPE.", $0D, $0A + db " THE COLOR.", $0D, $0A db $0D, $0A db " * PRESS UP/DOWN TO CHANGE", $0D, $0A db " THE SPEED (IF AVAILABLE).", $0D, $0A - db $00 \ No newline at end of file + db $00 + + +; Textos de la interfaz del MONITOR COLOR +TEXT_MONITOR_COLOR_TEST: + db " TEST", $00 + +TEXT_MONITOR_COLOR_WHITE: + db "WHITE", $00 + +TEXT_MONITOR_COLOR_BLACK: + db "BLACK", $00 + +TEXT_MONITOR_COLOR_RED: + db "RED", $00 + +TEXT_MONITOR_COLOR_GREEN: + db "GREEN", $00 + +TEXT_MONITOR_COLOR_BLUE: + db "BLUE ", $00 + +TEXT_MONITOR_COLOR_LOOP: + db "LOOPING", $00 + + + +;*********************************************************** +; Fin del archivo +;*********************************************************** +TEXT_EOF: \ No newline at end of file diff --git a/source/formats/f_binary.asm b/source/formats/f_binary.asm index f1feb6a..de609e3 100644 --- a/source/formats/f_binary.asm +++ b/source/formats/f_binary.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Directivas de compilacion para BINARIO de 32kb ; @@ -22,24 +22,27 @@ OUTPUT_FORMAT = 1 ; Define el formato de salida + ; ---------------------------------------------------------- -; Directivas del formato +; Definicion de variables en los ultimos 4KB [$E380] +; Ultima direccion valida $F380 - $1000 ; ---------------------------------------------------------- -.ORG $8000 ; Selecciona la pagina 2 [$8000] (Codigo del programa) -.BASIC ; Se creara el binario en formato BASIC de hasta 32kb - -; Indicale al compilador donde empieza el programa -.START PROGRAM_START_ADDRESS +; Almacena las variables los ultimos 4KB +.ORG $E380 +.INCLUDE "ngn/ngn_vars.asm" ; 2284 bytes +.INCLUDE "prog/vars.asm" ; 96 bytes ; ---------------------------------------------------------- -; Definicion de variables +; Directivas del formato ; ---------------------------------------------------------- -; Almacena las variables -.INCLUDE "ngn/ngn_vars.asm" -.INCLUDE "prog/vars.asm" +.PAGE 2 ; Selecciona la pagina 2 [$8000] (Codigo del programa) +.BASIC ; Se creara el binario + +; Indicale al compilador donde empieza el programa +.START PROGRAM_START_ADDRESS ;*********************************************************** diff --git a/source/formats/f_cas.asm b/source/formats/f_cas.asm index 65a649a..783181b 100644 --- a/source/formats/f_cas.asm +++ b/source/formats/f_cas.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Directivas de compilacion para BINARIO de 32kb ; Genera un archivo .CAS y .WAV @@ -24,24 +24,27 @@ OUTPUT_FORMAT = 4 ; Define el formato de salida ; ---------------------------------------------------------- -; Directivas del formato +; Definicion de variables en los ultimos 4KB [$E380] +; Ultima direccion valida $F380 - $1000 ; ---------------------------------------------------------- -.ORG $8000 ; Selecciona la pagina 2 [$8000] (Codigo del programa) -.BASIC ; Se creara el binario en formato BASIC de hasta 32kb -.CAS ; Genera el archivo .CAS -.WAV ; Genera el archivo .WAV +; Almacena las variables los ultimos 4KB +.ORG $E380 +.INCLUDE "ngn/ngn_vars.asm" ; 2284 bytes +.INCLUDE "prog/vars.asm" ; 96 bytes -; Indicale al compilador donde empieza el programa -.START PROGRAM_START_ADDRESS ; ---------------------------------------------------------- -; Definicion de variables +; Directivas del formato ; ---------------------------------------------------------- -; Almacena las variables -.INCLUDE "ngn/ngn_vars.asm" -.INCLUDE "prog/vars.asm" +.PAGE 2 ; Selecciona la pagina 2 [$8000] (Codigo del programa) +.BASIC ; Se creara el binario +.CAS ; Se creara la imagen de cinta +.WAV ; Se creara el archivo de audio + +; Indicale al compilador donde empieza el programa +.START PROGRAM_START_ADDRESS diff --git a/source/formats/f_com.asm b/source/formats/f_com.asm index 4833caf..3e4a3e1 100644 --- a/source/formats/f_com.asm +++ b/source/formats/f_com.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Directivas de compilacion para .COM de MSX-DOS ; @@ -22,21 +22,24 @@ OUTPUT_FORMAT = 3 ; Define el formato de salida + ; ---------------------------------------------------------- -; Directivas del formato +; Definicion de variables en los ultimos 4KB [$E380] +; Ultima direccion valida $F380 - $1000 ; ---------------------------------------------------------- -.ORG $0100 ; Selecciona el punto inicial por defecto en MSX-DOS [$0100] -.MSXDOS ; Se creara el binario en formato .COM para MSX-DOS +; Almacena las variables los ultimos 4KB +.ORG $E380 +.INCLUDE "ngn/ngn_vars.asm" ; 2284 bytes +.INCLUDE "prog/vars.asm" ; 96 bytes ; ---------------------------------------------------------- -; Definicion de variables +; Directivas del formato ; ---------------------------------------------------------- -; Almacena las variables -.INCLUDE "ngn/ngn_vars.asm" -.INCLUDE "prog/vars.asm" +.ORG $0100 ; Selecciona el punto inicial por defecto en MSX-DOS [$0100] +.MSXDOS ; Se creara el binario en formato .COM para MSX-DOS ;*********************************************************** diff --git a/source/formats/f_rom.asm b/source/formats/f_rom.asm index 610ad49..5b95426 100644 --- a/source/formats/f_rom.asm +++ b/source/formats/f_rom.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Directivas de compilacion para ROM de 32kb ; @@ -22,21 +22,23 @@ OUTPUT_FORMAT = 2 ; Define el formato de salida + ; ---------------------------------------------------------- -; Definicion de variables [PAGE 3] $C000 +; Definicion de variables en los ultimos 4KB [$E380] +; Ultima direccion valida $F380 - $1000 ; ---------------------------------------------------------- -; Almacena las variables en la pagina 3 (Comentar si no es una ROM) -.PAGE 3 -.INCLUDE "ngn/ngn_vars.asm" -.INCLUDE "prog/vars.asm" +; Almacena las variables los ultimos 4KB +.ORG $E380 +.INCLUDE "ngn/ngn_vars.asm" ; 2284 bytes +.INCLUDE "prog/vars.asm" ; 96 bytes ; ---------------------------------------------------------- ; Directivas del formato ; ---------------------------------------------------------- -.PAGE 1 ; Selecciona la pagina 1 [$4000] (Codigo del programa) +.PAGE 1 ; Selecciona la pagina 1 [$4000] (Codigo del programa) .ROM ; Se creara el binario en formato ROM de hasta 32kb .db 77, 83, 88, 95, 68, 73, 65, 71, 0, 0, 0, 0 ; 12 digitos para completar la cabecera de la ROM diff --git a/source/msxdiag.asm b/source/msxdiag.asm index b0c05ec..b9dbe1f 100644 --- a/source/msxdiag.asm +++ b/source/msxdiag.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -107,8 +107,10 @@ PROGRAM_START_ADDRESS: .INCLUDE "prog/joystick_test.asm" ; Test PSG .INCLUDE "prog/psg_test.asm" - ; Test de color y stress del monitor - .INCLUDE "prog/monitor_color_stress_test.asm" + ; Informacion del sistema + .INCLUDE "prog/system_info.asm" + ; Test de color del monitor + .INCLUDE "prog/monitor_color_test.asm" ; Procesos comunes .INCLUDE "prog/system.asm" diff --git a/source/ngn/ngn_vars.asm b/source/ngn/ngn_vars.asm index 891d961..4e34076 100644 --- a/source/ngn/ngn_vars.asm +++ b/source/ngn/ngn_vars.asm @@ -14,12 +14,14 @@ ; -------------------------------------------------------------- ; Declara las variables del sistema [VARIABLE] [BYTES] +; TOTAL: 2284 bytes ; -------------------------------------------------------------- ; ----------------------------------------------------------------------- ; Teclas ; STATE [LAST] [UP] [PRESS] [HELD] Key num: 89 ; BIT 3 2 1 0 NGN_TOTAL_KEYS +; Total: 89 bytes ; ----------------------------------------------------------------------- ; ROW 0 NGN_KEY_0: ds 1 ; Tecla 0 @@ -128,6 +130,7 @@ NGN_KEY_ANY: ds 1 ; Cualquier tecla ; Joysticks ; STATE [TEMP] [PRESS] [HELD] Key num: 12 ; BIT 2 1 0 NGN_TOTAL_JOYKEYS +; Total: 12 bytes ; ----------------------------------------------------------------------- NGN_JOY1_UP: ds 1 ; Joystick 1 Arriba @@ -150,6 +153,7 @@ NGN_JOY2_TG2: ds 1 ; Joystick 2 Tigger 2 ; Gestion del sistema de sprites ; [Y] [X] [GRAIFCO] [COLOR] ; 0-255 0-255 0-63 0-15 +; Total: 128 bytes ; ----------------------------------------------------------------------- NGN_SPRITE_00: ds 4 ; Attributos del Sprite nº 00 @@ -188,15 +192,17 @@ NGN_SPRITE_31: ds 4 ; ----------------------------------------------------------------------- -; Descompresion RLE +; Variables genericas +; Total: 1 byte ; ----------------------------------------------------------------------- -NGN_RANDOM_SEED: ds 1 +NGN_RANDOM_SEED: ds 1 ; Semilla del random ; ----------------------------------------------------------------------- ; Descompresion RLE +; Total: 2054 ; ----------------------------------------------------------------------- ; Gestion de la descompresion RLE diff --git a/source/prog/consts.asm b/source/prog/consts.asm index d47501e..7b3e76b 100644 --- a/source/prog/consts.asm +++ b/source/prog/consts.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Definicion de constantes ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -77,11 +77,11 @@ PSGTEST_NOISE_FREQ_X_START .EQU 17 ; Offset del cursor X ; ---------------------------------------------------------- -; Test del Color y stress del monitor +; Test del Color del monitor ; ---------------------------------------------------------- -MONITOR_COLOR_STRESS_ITEM_FIRST .EQU 1 ; Primer test -MONITOR_COLOR_STRESS_ITEM_LAST .EQU 6 ; Ultimo test +MONITOR_COLOR_ITEM_FIRST .EQU 1 ; Primer test +MONITOR_COLOR_ITEM_LAST .EQU 6 ; Ultimo test ;*********************************************************** diff --git a/source/prog/joystick_test.asm b/source/prog/joystick_test.asm index b7a4124..9b70749 100644 --- a/source/prog/joystick_test.asm +++ b/source/prog/joystick_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Test de los Joysticks ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -54,6 +54,8 @@ FUNCTION_JOYSTICK_TEST_MENU: ret nz ; Vuelve al menu principal si se pulsa ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -311,6 +313,8 @@ FUNCTION_JOYSTICK_TEST_RUN: call NGN_SPRITE_UPDATE ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle diff --git a/source/prog/keyboard_test.asm b/source/prog/keyboard_test.asm index 25a2682..8377f71 100644 --- a/source/prog/keyboard_test.asm +++ b/source/prog/keyboard_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Test del teclado ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -54,6 +54,8 @@ FUNCTION_KEYBOARD_TEST_MENU: ret nz ; Vuelve al menu principal si se pulsa ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -97,6 +99,8 @@ FUNCTION_KEYBOARD_TEST_WAIT_FREE_KEYS: ret nz ; Vuelve al menu principal si se pulsa ; Espera el VSYNC + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -155,6 +159,8 @@ FUNCTION_KEYBOARD_TEST_RUN: call SFX_FUNCTION_UPDATE ; Espera el VSYNC + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle diff --git a/source/prog/main.asm b/source/prog/main.asm index dcf4533..a171f06 100644 --- a/source/prog/main.asm +++ b/source/prog/main.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; 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 d35f22b..e0415ea 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-wip02 +; Version 1.1.0-wip03 ; 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 a2ff1f5..0428cf8 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-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Menu Principal (Pagina 1) ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -101,12 +101,12 @@ FUNCTION_MAIN_MENU_P1: ; Si se pulsa la tecla 9 ld a, [NGN_KEY_9] ; Tecla 9 and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE2 ; Ejecuta la opcion + jp nz, FUNCTION_MAIN_MENU_SYSTEM_INFO ; Ejecuta la opcion ; Si se pulsa la tecla 0 ld a, [NGN_KEY_0] ; Tecla 0 and $02 ; Detecta "KEY DOWN" - ret nz ; Sal del programa + jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE2 ; Ejecuta la opcion ; ---------------------------------------------------------- @@ -182,10 +182,14 @@ FUNCTION_MAIN_MENU_P1: jp z, FUNCTION_MAIN_MENU_PSG ; Test del sonido PSG ; Opcion 9 cp 9 - jp z, FUNCTION_MAIN_MENU_GOTO_PAGE2 ; Siguiente pagina del menu (p2) + jp z, FUNCTION_MAIN_MENU_SYSTEM_INFO ; Informacion del sistema ; Opcion 0 cp 10 - ret z ; Sal del programa (reinicia) + jp z, FUNCTION_MAIN_MENU_GOTO_PAGE2 ; Siguiente pagina del menu (p2) + + ; Error catastrofico (reinicia) + ret + ; ---------------------------------------------------------- @@ -194,6 +198,8 @@ FUNCTION_MAIN_MENU_P1: ; Espera a la interrupcion del VDP (VSYNC) @@MM_END: + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -338,14 +344,31 @@ FUNCTION_MAIN_MENU_PSG: ; ---------------------------------------------------------- -; Siguiente pagina del menu (Pagina 2) [9] +; Ejecuta la opcion SYSTEM INFO [9] ; ---------------------------------------------------------- -FUNCTION_MAIN_MENU_GOTO_PAGE2: +FUNCTION_MAIN_MENU_SYSTEM_INFO: + ; Llama la funcion correspondiente + call FUNCTION_SYSTEM_INFO ; Deshabilita la pantalla para el cambio call $0041 ; Vuelve al menu + ld a, 9 + ld [MAINMENU_LAST_ITEM], a + jp FUNCTION_MAIN_MENU_P1 + + + +; ---------------------------------------------------------- +; Siguiente pagina del menu (Pagina 2) [0] +; ---------------------------------------------------------- + +FUNCTION_MAIN_MENU_GOTO_PAGE2: + + ; Deshabilita la pantalla para el cambio + call $0041 + ; Ve a la siguiente pagina del menu ld a, (MAINMENU_FIRST_OPTION_P2 + 1) ld [MAINMENU_LAST_ITEM], a jp FUNCTION_MAIN_MENU_P2 diff --git a/source/prog/main_menu_p2.asm b/source/prog/main_menu_p2.asm index de2cd11..b2f66e3 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-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Menu Principal (Pagina 2) ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -61,7 +61,7 @@ FUNCTION_MAIN_MENU_P2: ; Si se pulsa la tecla 1 ld a, [NGN_KEY_1] ; Tecla 1 and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_MONITOR_COLOR_STRESS ; Ejecuta la opcion + jp nz, FUNCTION_MAIN_MENU_MONITOR_COLOR ; Ejecuta la opcion ; Si se pulsa la tecla 2 ld a, [NGN_KEY_2] ; Tecla 2 @@ -101,12 +101,12 @@ FUNCTION_MAIN_MENU_P2: ; Si se pulsa la tecla 9 ld a, [NGN_KEY_9] ; Tecla 9 and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE1 ; Ejecuta la opcion + ret nz ; Sal del programa ; Si se pulsa la tecla 0 ld a, [NGN_KEY_0] ; Tecla 0 and $02 ; Detecta "KEY DOWN" - ret nz ; Sal del programa + jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE1 ; Ejecuta la opcion ; ---------------------------------------------------------- @@ -158,7 +158,7 @@ FUNCTION_MAIN_MENU_P2: ; Opcion 1 cp 1 - jp z, FUNCTION_MAIN_MENU_MONITOR_COLOR_STRESS ; Ejecuta la opcion + jp z, FUNCTION_MAIN_MENU_MONITOR_COLOR ; Ejecuta la opcion ; Opcion 2 cp 2 jp z, FUNCTION_MAIN_MENU_P2_2 ; Ejecuta la opcion @@ -182,10 +182,14 @@ FUNCTION_MAIN_MENU_P2: jp z, FUNCTION_MAIN_MENU_P2_8 ; Ejecuta la opcion ; Opcion 9 cp 9 - jp z, FUNCTION_MAIN_MENU_GOTO_PAGE1 ; Ejecuta la opcion - ; Opcion 0 - cp 10 ret z ; Sal del programa (reinicia) + ; Opcion 10 + cp 10 + jp z, FUNCTION_MAIN_MENU_GOTO_PAGE1 ; Ejecuta la opcion + + ; Error catastrofico (reinicia) + ret + ; ---------------------------------------------------------- @@ -194,6 +198,8 @@ FUNCTION_MAIN_MENU_P2: ; Espera a la interrupcion del VDP (VSYNC) @@MM_END: + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -202,13 +208,13 @@ FUNCTION_MAIN_MENU_P2: ; ---------------------------------------------------------- -; FUNCTION_MAIN_MENU_MONITOR_COLOR_STRESS [1] +; FUNCTION_MAIN_MENU_MONITOR_COLOR [1] ; ---------------------------------------------------------- -FUNCTION_MAIN_MENU_MONITOR_COLOR_STRESS: +FUNCTION_MAIN_MENU_MONITOR_COLOR: ; Llama la funcion correspondiente - call FUNCTION_MONITOR_COLOR_STRESS_TEST_MENU + call FUNCTION_MONITOR_COLOR_TEST_MENU ; Deshabilita la pantalla para el cambio call $0041 diff --git a/source/prog/monitor_color_stress_test.asm b/source/prog/monitor_color_test.asm similarity index 52% rename from source/prog/monitor_color_stress_test.asm rename to source/prog/monitor_color_test.asm index cd2f25b..b2f3e58 100644 --- a/source/prog/monitor_color_stress_test.asm +++ b/source/prog/monitor_color_test.asm @@ -1,9 +1,9 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX -; Test de color y stress del monitor +; Test de color del monitor ; (cc) 2018-2020 Cesar Rincon "NightFox" ; https://nightfoxandco.com ; @@ -11,10 +11,10 @@ ; ---------------------------------------------------------- -; Menu del Test MONITOR COLOR & STRESS +; Menu del Test MONITOR COLOR ; ---------------------------------------------------------- -FUNCTION_MONITOR_COLOR_STRESS_TEST_MENU: +FUNCTION_MONITOR_COLOR_TEST_MENU: ; Borra la pantalla call NGN_TEXT_CLS @@ -24,11 +24,11 @@ FUNCTION_MONITOR_COLOR_STRESS_TEST_MENU: ; Texto del menu call FUNCTION_MAIN_MENU_HEADER_PRINT ; Cabecera - ld hl, TEXT_MONITOR_COLOR_STRESS_MENU_TITLE ; Titulo + ld hl, TEXT_MONITOR_COLOR_MENU_TITLE ; Titulo call NGN_TEXT_PRINT ; Imprimelo ld hl, TEXT_DASHED_LINE ; Linea call NGN_TEXT_PRINT ; Imprimelo - ld hl, TEXT_MONITOR_COLOR_STRESS_MENU_INSTRUCTIONS ; Instrucciones de uso + ld hl, TEXT_MONITOR_COLOR_MENU_INSTRUCTIONS ; Instrucciones de uso call NGN_TEXT_PRINT ; Imprimelo ld hl, TEXT_MENU_CANCEL ; Como cancelar call NGN_TEXT_PRINT ; Imprimelo @@ -47,7 +47,7 @@ FUNCTION_MONITOR_COLOR_STRESS_TEST_MENU: ; Si se pulsa la tecla "ACEPTAR" ld a, [SYSKEY_ACCEPT] and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MONITOR_COLOR_STRESS_TEST_RUN ; Ejecuta el test + jp nz, FUNCTION_MONITOR_COLOR_TEST_RUN ; Ejecuta el test ; Si se pulsa la tecla "CANCELAR" ld a, [SYSKEY_CANCEL] @@ -55,6 +55,8 @@ FUNCTION_MONITOR_COLOR_STRESS_TEST_MENU: ret nz ; Vuelve al menu principal ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -66,19 +68,29 @@ FUNCTION_MONITOR_COLOR_STRESS_TEST_MENU: ; Ejecuta el test ; ---------------------------------------------------------- -FUNCTION_MONITOR_COLOR_STRESS_TEST_RUN: +FUNCTION_MONITOR_COLOR_TEST_RUN: ; Borra la pantalla call NGN_TEXT_CLS + ; Contador de frames a 0 + xor a + ld [MONITOR_COLOR_FRAME], a ; Color por defecto - ld bc, $0F0F + ld bc, $010F call NGN_TEXT_COLOR + ; Texto por defecto + ld hl, $0F0B + call NGN_TEXT_POSITION + ld hl, TEXT_MONITOR_COLOR_WHITE + call NGN_TEXT_PRINT + ld hl, TEXT_MONITOR_COLOR_TEST + call NGN_TEXT_PRINT ; Guarda el nº de test - ; 1 = WHITE, 2 = BLACK, 3 = RED, 4 = GREEN, 5 = BLUE, 6 = STRESS + ; 1 = WHITE, 2 = BLACK, 3 = RED, 4 = GREEN, 5 = BLUE, 6 = CICLO DE COLOR ld a, 1 ; Primer test - ld [MONITOR_COLOR_STRESS_CURRENT_ITEM], a + ld [MONITOR_COLOR_CURRENT_ITEM], a ; Bucle de ejecucion @@LOOP: @@ -96,10 +108,20 @@ FUNCTION_MONITOR_COLOR_STRESS_TEST_RUN: and $02 ; Detecta "KEY DOWN" jp nz, @@PREV_TEST - ; Si esta seleccionado el test de stress, ejecutalo - ld a, [MONITOR_COLOR_STRESS_CURRENT_ITEM] + ; Si esta seleccionado el ciclo de colores, ejecutalo + ld a, [MONITOR_COLOR_CURRENT_ITEM] cp 6 - jp z, @@STRESS_TEST + jp z, @@COLOR_LOOP + + ; Si es alguno de los otros test, cuenta atras + ld a, [MONITOR_COLOR_FRAME] ; Frame actual + cp 120 ; Si ya has alcanzado la marca + jr z, @@LOOP_END ; No hagas nada + inc a ; Si no, suma 1 + ld [MONITOR_COLOR_FRAME], a ; Guarda el numero de frames + cp 120 ; Si no se ha alcanzado la marca + jr nz, @@LOOP_END ; No hagas nada + call NGN_TEXT_CLS ; Si no, borra la pantalla ; Punto de final del bucle @@LOOP_END: @@ -113,6 +135,8 @@ FUNCTION_MONITOR_COLOR_STRESS_TEST_RUN: jr nz, @@EXIT ; Sal del bucle ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -131,11 +155,11 @@ FUNCTION_MONITOR_COLOR_STRESS_TEST_RUN: ; ---------------------------------------------------------- @@NEXT_TEST: - ld a, [MONITOR_COLOR_STRESS_CURRENT_ITEM] ; Recupera la opcion actual + ld a, [MONITOR_COLOR_CURRENT_ITEM] ; Recupera la opcion actual inc a - cp (MONITOR_COLOR_STRESS_ITEM_LAST + 1) ; Si es la ultima opcion + cp (MONITOR_COLOR_ITEM_LAST + 1) ; Si es la ultima opcion jr nz, @@APPLY_TEST - ld a, MONITOR_COLOR_STRESS_ITEM_FIRST ; Vuelve a la primera + ld a, MONITOR_COLOR_ITEM_FIRST ; Vuelve a la primera jr @@APPLY_TEST @@ -144,11 +168,11 @@ FUNCTION_MONITOR_COLOR_STRESS_TEST_RUN: ; ---------------------------------------------------------- @@PREV_TEST: - ld a, [MONITOR_COLOR_STRESS_CURRENT_ITEM] ; Recupera la opcion actual + ld a, [MONITOR_COLOR_CURRENT_ITEM] ; Recupera la opcion actual dec a - cp (MONITOR_COLOR_STRESS_ITEM_FIRST - 1) ; Si es la primera opcion + cp (MONITOR_COLOR_ITEM_FIRST - 1) ; Si es la primera opcion jr nz, @@APPLY_TEST - ld a, MONITOR_COLOR_STRESS_ITEM_LAST ; Vuelve a la ultima + ld a, MONITOR_COLOR_ITEM_LAST ; Vuelve a la ultima jr @@APPLY_TEST @@ -158,56 +182,91 @@ FUNCTION_MONITOR_COLOR_STRESS_TEST_RUN: @@APPLY_TEST: - ld [MONITOR_COLOR_STRESS_CURRENT_ITEM], a ; Guarda la opcion actualizada + ld [MONITOR_COLOR_CURRENT_ITEM], a ; Guarda la opcion actualizada + + push af + call NGN_TEXT_CLS ; Borra la pantalla + xor a ; Contador de frames a 0 + ld [MONITOR_COLOR_FRAME], a + pop af - cp 1 ; Test nº1 - Pantalla en blanco + cp 1 ; Test nº1 - Pantalla en blanco jr nz, @@TEST_2 - ld bc, $0F0F ; Color blanco + ld hl, $0F0B + call NGN_TEXT_POSITION + ld hl, TEXT_MONITOR_COLOR_WHITE + call NGN_TEXT_PRINT + ld bc, $010F ; Color blanco de fondo jr @@TEST_SET_COLOR ; Fija el color @@TEST_2: - cp 2 ; Test nº2 - Pantalla en negro + cp 2 ; Test nº2 - Pantalla en negro jr nz, @@TEST_3 - ld bc, $0000 ; Color negro + ld hl, $0F0B + call NGN_TEXT_POSITION + ld hl, TEXT_MONITOR_COLOR_BLACK + call NGN_TEXT_PRINT + ld bc, $0F01 ; Color negro de fondo jr @@TEST_SET_COLOR ; Fija el color @@TEST_3: - cp 3 ; Test nº3 - Pantalla en ROJO + cp 3 ; Test nº3 - Pantalla en ROJO jr nz, @@TEST_4 - ld bc, $0909 ; Color rojo + ld hl, $100B + call NGN_TEXT_POSITION + ld hl, TEXT_MONITOR_COLOR_RED + call NGN_TEXT_PRINT + ld bc, $0109 ; Color rojo de fondo jr @@TEST_SET_COLOR ; Fija el color @@TEST_4: - cp 4 ; Test nº4 - Pantalla en VERDE + cp 4 ; Test nº4 - Pantalla en VERDE jr nz, @@TEST_5 - ld bc, $0303 ; Color verde + ld hl, $0F0B + call NGN_TEXT_POSITION + ld hl, TEXT_MONITOR_COLOR_GREEN + call NGN_TEXT_PRINT + ld bc, $0103 ; Color verde de fondo jr @@TEST_SET_COLOR ; Fija el color @@TEST_5: - cp 5 ; Test nº5 - Pantalla en AZUL + cp 5 ; Test nº5 - Pantalla en AZUL jr nz, @@TEST_6 - ld bc, $0505 ; Color azul + ld hl, $0F0B + call NGN_TEXT_POSITION + ld hl, TEXT_MONITOR_COLOR_BLUE + call NGN_TEXT_PRINT + ld bc, $0105 ; Color azul de fondo jr @@TEST_SET_COLOR ; Fija el color @@TEST_6: + ld hl, $0E0B + call NGN_TEXT_POSITION + ld hl, TEXT_MONITOR_COLOR_LOOP + call NGN_TEXT_PRINT + ld hl, TEXT_MONITOR_COLOR_TEST ; Texto del test + call NGN_TEXT_PRINT + ld bc, $0102 ; Color inicial de fondo ld a, 2 - ld [MONITOR_COLOR_STRESS_CURRENT_COLOR], a ; Color inicial - ld a, 8 ; Tiempo de espera inicial - ld [MONITOR_COLOR_STRESS_DELAY], a - xor a ; Contador de frames a 0 - ld [MONITOR_COLOR_STRESS_FRAME], a - jp @@LOOP_END ; Vuelve al bucle principal + ld [MONITOR_COLOR_CURRENT_COLOR], a ; Color inicial + ld a, 8 ; Tiempo de espera inicial + ld [MONITOR_COLOR_DELAY], a + xor a ; Contador de frames a 0 + ld [MONITOR_COLOR_FRAME], a + jp @@LOOP_END ; Vuelve al bucle principal @@TEST_SET_COLOR: - call NGN_TEXT_COLOR ; Actualiza el color - jp @@LOOP_END ; Vuelve al bucle principal + call NGN_TEXT_COLOR ; Actualiza el color + ld hl, TEXT_MONITOR_COLOR_TEST ; Texto del test + call NGN_TEXT_PRINT + jp @@LOOP_END ; Vuelve al bucle principal ; ---------------------------------------------------------- - ; Aplica el test de stress + ; Aplica el ciclo de colores ; ---------------------------------------------------------- - @@STRESS_TEST: + @@COLOR_LOOP: ; Si se pulsa "ARRIBA", aumenta la velocidad ld a, [SYSKEY_UP] @@ -222,44 +281,44 @@ FUNCTION_MONITOR_COLOR_STRESS_TEST_RUN: @@NEXT_COLOR: - ld a, [MONITOR_COLOR_STRESS_DELAY] ; Numero de frames de espera + ld a, [MONITOR_COLOR_DELAY] ; Numero de frames de espera ld b, a - ld a, [MONITOR_COLOR_STRESS_FRAME] ; Frame actual + ld a, [MONITOR_COLOR_FRAME] ; Frame actual inc a ; Sumale 1 - ld [MONITOR_COLOR_STRESS_FRAME], a ; Guarda el frame actual + ld [MONITOR_COLOR_FRAME], a ; Guarda el frame actual sub b ; Verifica si aun no se ha alcanzado (si la resta es menor de 0) jp c, @@LOOP_END ; Vuelve al bucle principal xor a ; Reinicia el contador de frames - ld [MONITOR_COLOR_STRESS_FRAME], a + ld [MONITOR_COLOR_FRAME], a - ld a, [MONITOR_COLOR_STRESS_CURRENT_COLOR]; ; Lee el color actual - ld b, a ; Prepara para aplicarlo al primer plano y fondo + ld a, [MONITOR_COLOR_CURRENT_COLOR]; ; Lee el color actual + ld b, 1 ; Prepara para aplicarlo al fondo ld c, a inc a ; Prepara el siguiente color cp 16 ; Era el ultimo? jp nz, @@UPDATE_COLOR ; Si no es el ultimo color, actualizalo ld a, 2 ; Si lo era, vuelve al primer color del ciclo @@UPDATE_COLOR: - ld [MONITOR_COLOR_STRESS_CURRENT_COLOR], a + ld [MONITOR_COLOR_CURRENT_COLOR], a call NGN_TEXT_COLOR ; Actualiza el color jp @@LOOP_END ; Vuelve al bucle principal @@SPEED_UP: - ld a, [MONITOR_COLOR_STRESS_DELAY] + ld a, [MONITOR_COLOR_DELAY] cp 1 ret z ; Si ya es 1 vuelve srl a ; Dividela /2 - ld [MONITOR_COLOR_STRESS_DELAY], a + ld [MONITOR_COLOR_DELAY], a jp SFX_FUNCTION_PLAY_PING ; Sonido y vuelve (RET al final de la llamada) @@SPEED_DOWN: - ld a, [MONITOR_COLOR_STRESS_DELAY] + ld a, [MONITOR_COLOR_DELAY] cp 64 ret z ; Si ya es 64, vuelve sla a ; Multiplicala x2 - ld [MONITOR_COLOR_STRESS_DELAY], a + ld [MONITOR_COLOR_DELAY], a jp SFX_FUNCTION_PLAY_PONG ; Sonido y vuelve (RET al final de la llamada) @@ -267,4 +326,4 @@ FUNCTION_MONITOR_COLOR_STRESS_TEST_RUN: ;*********************************************************** ; Fin del archivo ;*********************************************************** -MONITOR_COLOR_STRESS_TEST_EOF: \ No newline at end of file +MONITOR_COLOR_TEST_EOF: \ No newline at end of file diff --git a/source/prog/psg_test.asm b/source/prog/psg_test.asm index e327855..faa3ce9 100644 --- a/source/prog/psg_test.asm +++ b/source/prog/psg_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Test PSG ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -56,6 +56,8 @@ FUNCTION_PSG_TEST_MENU: ret nz ; Vuelve al menu principal ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -233,6 +235,8 @@ FUNCTION_PSG_TEST_RUN: ; Espera a la interrupcion del VDP (VSYNC) @@LOOP_END: + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle diff --git a/source/prog/screen0_test.asm b/source/prog/screen0_test.asm index 34e5e90..538e9f5 100644 --- a/source/prog/screen0_test.asm +++ b/source/prog/screen0_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Test SCREEN 0 ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -56,6 +56,8 @@ FUNCTION_SCREEN0_TEST_MENU: ret nz ; Vuelve al menu principal ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -168,6 +170,8 @@ FUNCTION_SCREEN0_TEST_RUN: ret nz ; Vuelve al menu principal ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle diff --git a/source/prog/screen1_test.asm b/source/prog/screen1_test.asm index 502fbad..8be6a38 100644 --- a/source/prog/screen1_test.asm +++ b/source/prog/screen1_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Test SCREEN 1 ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -56,6 +56,8 @@ FUNCTION_SCREEN1_TEST_MENU: ret nz ; Vuelve al menu principal ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -173,6 +175,8 @@ FUNCTION_SCREEN1_TEST_RUN: ret nz ; Vuelve al menu principal ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle diff --git a/source/prog/screen2_test.asm b/source/prog/screen2_test.asm index dbf4b4e..d0a3c0b 100644 --- a/source/prog/screen2_test.asm +++ b/source/prog/screen2_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Test SCREEN 2 ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -56,6 +56,8 @@ FUNCTION_SCREEN2_TEST_MENU: ret nz ; Vuelve al menu principal si se pulsa ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -183,6 +185,8 @@ FUNCTION_SCREEN2_TEST_RUN: ret nz ; Vuelve al menu principal si se pulsa ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle diff --git a/source/prog/screen3_test.asm b/source/prog/screen3_test.asm index 7861b15..2f0da80 100644 --- a/source/prog/screen3_test.asm +++ b/source/prog/screen3_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Test SCREEN 3 ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -56,6 +56,8 @@ FUNCTION_SCREEN3_TEST_MENU: ret nz ; Vuelve al menu principal si se pulsa ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -178,6 +180,8 @@ FUNCTION_SCREEN3_TEST_RUN: ret nz ; Vuelve al menu principal si se pulsa ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle diff --git a/source/prog/sfx.asm b/source/prog/sfx.asm index 50c2a5d..7f817bb 100644 --- a/source/prog/sfx.asm +++ b/source/prog/sfx.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Funciones de efectos de sonido ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/sprites_test.asm b/source/prog/sprites_test.asm index f0c16e0..3fee724 100644 --- a/source/prog/sprites_test.asm +++ b/source/prog/sprites_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Test de los Sprites (MODO SCREEN 2) ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -56,6 +56,8 @@ FUNCTION_SPRITES_TEST_MENU: ret nz ; Vuelve al menu principal si se pulsa ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle @@ -143,6 +145,8 @@ FUNCTION_SPRITES_TEST_RUN: ret nz ; Vuelve al menu principal si se pulsa ; Espera el VSYNC + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle diff --git a/source/prog/system.asm b/source/prog/system.asm index b6f68e6..b3d0c18 100644 --- a/source/prog/system.asm +++ b/source/prog/system.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Funciones comunes del sistema ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -84,18 +84,19 @@ FUNCTION_SYSTEM_RESET_KEYBOARD_MATRIX: FUNCTION_SYSTEM_SET_KEY_NAMES_TABLE: + ; Usa la tabla internacional por defecto + ld hl, KEY_NAMES_INTERNATIONAL + ld [KEY_NAMES_TABLE], hl + ; Lee la informacion regional de la BIOS ld a, [$002C] ; Informacion del teclado [Mascara 00001111] and $0F - @@INTERNATIONAL: - cp 1 ; Internacional - jr nz, @@FRANCE - ld hl, KEY_NAMES_INTERNATIONAL - ld [KEY_NAMES_TABLE], hl - ret + ; Guarda el resultado para futuras referencias + ld [KEYBOARD_LAYOUT], a + ; Si se identifica como Francia... @@FRANCE: cp 2 ; Francia jr nz, @@DEFAULT @@ -103,9 +104,8 @@ FUNCTION_SYSTEM_SET_KEY_NAMES_TABLE: ld [KEY_NAMES_TABLE], hl ret - @@DEFAULT: ; Por defecto / Resto de paises - ld hl, KEY_NAMES_INTERNATIONAL - ld [KEY_NAMES_TABLE], hl + ; Si es cualquier otro pais + @@DEFAULT: ret diff --git a/source/prog/system_info.asm b/source/prog/system_info.asm new file mode 100644 index 0000000..a47b368 --- /dev/null +++ b/source/prog/system_info.asm @@ -0,0 +1,178 @@ +;*********************************************************** +; +; MSX DIAGNOSTICS +; Version 1.1.0-wip03 +; ASM Z80 MSX +; Informacion del sistema +; (cc) 2018-2020 Cesar Rincon "NightFox" +; https://nightfoxandco.com +; +;*********************************************************** + + + +; ---------------------------------------------------------- +; Informacion del sistema +; ---------------------------------------------------------- + +FUNCTION_SYSTEM_INFO: + + ; Borra la pantalla + call NGN_TEXT_CLS + + ; Ejecuta la rutina [DISSCR] para deshabilitar la pantalla + call $0041 + + + + ; ---------------------------------------------------------- + ; Cabecera + ; ---------------------------------------------------------- + + ld hl, TEXT_DASHED_LINE ; Linea + call NGN_TEXT_PRINT ; Imprimelo + ld hl, TEXT_SYSTEM_INFO_TITLE ; Titulo + call NGN_TEXT_PRINT ; Imprimelo + ld hl, TEXT_DASHED_LINE ; Linea + call NGN_TEXT_PRINT ; Imprimelo + + + + ; ---------------------------------------------------------- + ; Modelo de MSX + ; ---------------------------------------------------------- + + ld hl, TEXT_SYSTEM_INFO_MSX_MODEL ; Modelo + call NGN_TEXT_PRINT ; Imprimelo + + ld a, [$002D] ; Direccion del BIOS con el modelo + + + ; Seleccion del modelo de MSX + cp 0 + jr nz, @@MODEL_MSX2 + ld hl, TEXT_SYSTEM_INFO_MSX1 + jr @@PRINT_MSX_MODEL + + @@MODEL_MSX2: + cp 1 + jr nz, @@MODEL_MSX2PLUS + ld hl, TEXT_SYSTEM_INFO_MSX2 + jr @@PRINT_MSX_MODEL + + @@MODEL_MSX2PLUS: + cp 2 + jr nz, @@MODEL_MSXTR + ld hl, TEXT_SYSTEM_INFO_MSX2PLUS + jr @@PRINT_MSX_MODEL + + @@MODEL_MSXTR: + cp 3 + jr nz, @@MODEL_UNKNOW + ld hl, TEXT_SYSTEM_INFO_MSXTR + jr @@PRINT_MSX_MODEL + + @@MODEL_UNKNOW: + ld hl, TEXT_SYSTEM_INFO_MODEL_UNKNOW + + @@PRINT_MSX_MODEL: + call NGN_TEXT_PRINT ; Imprimelo + + + + ; ---------------------------------------------------------- + ; Distribucion del teclado + ; ---------------------------------------------------------- + + ld hl, TEXT_SYSTEM_INFO_KEYBOARD ; Distribucion del teclado + call NGN_TEXT_PRINT ; Imprimelo + + ld a, [KEYBOARD_LAYOUT] ; Distribucion + + ; Japon + cp 0 + jr nz, @@KB_INTERNATIONAL + ld hl, TEXT_SYSTEM_INFO_KB_JAPAN + jr @@PRINT_KB_LAYOUT + + ; Internacional + @@KB_INTERNATIONAL: + cp 1 + jr nz, @@KB_FRANCE + ld hl, TEXT_SYSTEM_INFO_KB_INTERNATIONAL + jr @@PRINT_KB_LAYOUT + + ; Francia + @@KB_FRANCE: + cp 2 + jr nz, @@KB_UK + ld hl, TEXT_SYSTEM_INFO_KB_FRANCE + jr @@PRINT_KB_LAYOUT + + ; UK + @@KB_UK: + cp 3 + jr nz, @@KB_GERMANY + ld hl, TEXT_SYSTEM_INFO_KB_UK + jr @@PRINT_KB_LAYOUT + + ; GERMANY + @@KB_GERMANY: + cp 4 + jr nz, @@KB_USSR + ld hl, TEXT_SYSTEM_INFO_KB_GERMANY + jr @@PRINT_KB_LAYOUT + + ; USSR + @@KB_USSR: + cp 5 + jr nz, @@KB_SPAIN + ld hl, TEXT_SYSTEM_INFO_KB_USSR + jr @@PRINT_KB_LAYOUT + + ; SPAIN + @@KB_SPAIN: + ld hl, TEXT_SYSTEM_INFO_KB_SPAIN + jr @@PRINT_KB_LAYOUT + + @@PRINT_KB_LAYOUT: + call NGN_TEXT_PRINT ; Imprimelo + + + + + ; Ejecuta la rutina [ENASCR] para habilitar la pantalla + call $0044 + + ; Bucle de ejecucion + @@LOOP: + + ; Lectura del HID + call FUNCTION_SYSTEM_HID_READ + + ; Si se pulsa la tecla "ACEPTAR" + ld a, [SYSKEY_ACCEPT] + and $02 ; Detecta "KEY DOWN" + ret nz ; Vuelve al menu principal + + ; Si se pulsa la tecla "CANCELAR" + ld a, [SYSKEY_CANCEL] + and $02 ; Detecta "KEY DOWN" + ret nz ; Vuelve al menu principal + + ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten + halt ; Espera a la interrupcion del VDP + + ; Repite el bucle + jr @@LOOP + + + + + +;*********************************************************** +; Fin del archivo +;*********************************************************** +SYSTEM_INFO_EOF: \ No newline at end of file diff --git a/source/prog/vars.asm b/source/prog/vars.asm index 68a080b..55130e9 100644 --- a/source/prog/vars.asm +++ b/source/prog/vars.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Declaracion de variables ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -14,12 +14,14 @@ ; -------------------------------------------------------------- ; Declara las variables del sistema [VARIABLE] [BYTES] +; TOTAL 96 bytes ; -------------------------------------------------------------- ; ----------------------------------------------------------------------- ; Teclas ; STATE [PRESS] [HELD] Key num: 6 ; BIT 1 0 NGN_TOTAL_KEYS +; Total: 6 bytes ; ----------------------------------------------------------------------- SYSKEY_UP: ds 1 ; Cursor / Joy1 arriba @@ -33,6 +35,7 @@ SYSKEY_CANCEL: ds 1 ; ESC / Joy1 Boton 2 ; ---------------------------------------------------------- ; Menu principal +; Total: 3 bytes ; ---------------------------------------------------------- MAINMENU_ITEM_SELECTED: ds 1 ; Posicion del cursor @@ -43,6 +46,7 @@ MAINMENU_LAST_ITEM: ds 1 ; Posicion al abandonar el menu ; ---------------------------------------------------------- ; Sprites Demo +; Total: 64 bytes ; ---------------------------------------------------------- SPRITE_SPEED: ds 64 ; Velocidad de los sprites [Y][X] * 2 @@ -52,7 +56,7 @@ SPRITE_SPEED: ds 64 ; Velocidad de los sprites [Y][X] * 2 ; -------------------------------------------------------------- ; Test del teclado ; Tabla de nombres de las teclas - +; ; Keyboard Type: 0000 (0) = Japan; ; 0001 (1) = International; ; 0010 (2) = France; @@ -60,14 +64,17 @@ SPRITE_SPEED: ds 64 ; Velocidad de los sprites [Y][X] * 2 ; 0100 (4) = Germany; ; 0101 (5) = USSR; ; 0110 (6) = Spain. - +; +; Total: 3 bytes ; -------------------------------------------------------------- +KEYBOARD_LAYOUT: ds 1 ; Tipo de teclado KEY_NAMES_TABLE: ds 2 ; Tabla de nombres de las teclas ; ---------------------------------------------------------- ; Test del PSG +; Total: 16 bytes ; ---------------------------------------------------------- PSG_TEST_OPTION_SELECTED: ds 1 ; Opcion seleccionada del menu (1-3 Freq, 4-6 Vol, 7 Noise Chan, 8 Noise Freq) @@ -90,13 +97,14 @@ PSG_TEST_FREQ: ds 1 ; Frecuencia actual ; ---------------------------------------------------------- -; Test del color y stress del monitor +; Test del color del monitor +; Total: 4 bytes ; ---------------------------------------------------------- -MONITOR_COLOR_STRESS_CURRENT_ITEM: ds 1 ; Item seleccionado del test -MONITOR_COLOR_STRESS_CURRENT_COLOR: ds 1 ; Color actual del test de stress -MONITOR_COLOR_STRESS_DELAY: ds 1 ; Numero de frames de espera -MONITOR_COLOR_STRESS_FRAME: ds 1 ; Frame actual +MONITOR_COLOR_CURRENT_ITEM: ds 1 ; Item seleccionado del test +MONITOR_COLOR_CURRENT_COLOR: ds 1 ; Color actual del ciclo de colores +MONITOR_COLOR_DELAY: ds 1 ; Numero de frames de espera +MONITOR_COLOR_FRAME: ds 1 ; Frame actual diff --git a/source/prog/welcome.asm b/source/prog/welcome.asm index c081565..25a1c0f 100644 --- a/source/prog/welcome.asm +++ b/source/prog/welcome.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.0-wip02 +; Version 1.1.0-wip03 ; ASM Z80 MSX ; Archivo principal ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -52,6 +52,8 @@ FUNCTION_WELCOME: jr z, @@EXIT ; Si el tiempo llega a 0, sal del bucle ; Espera a la interrupcion del VDP (VSYNC) + ei ; Asegurate que las interrupciones estan habilitadas + nop ; Espera el ciclo necesario para que se habiliten halt ; Espera a la interrupcion del VDP ; Repite el bucle