From 6183d0ca9e4caa9772f7106d33b4a2f6ad3a7361 Mon Sep 17 00:00:00 2001 From: Cesar Rincon Nadal Date: Thu, 23 Jul 2020 13:14:49 +0200 Subject: [PATCH] Ver. 1.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Añadida la opción para mostrar la configuración de la memoria RAM. - Reestructuración de los menús. --- README.md | 35 +- docs/changelog.txt | 6 + docs/readme.txt | 34 +- source/data/bin/misc.asm | 2 +- source/data/txt/key_names.asm | 2 +- source/data/txt/text.asm | 31 +- source/formats/f_binary.asm | 4 +- source/formats/f_cas.asm | 4 +- source/formats/f_com.asm | 4 +- source/formats/f_rom.asm | 4 +- source/msxdiag.asm | 6 +- source/prog/consts.asm | 104 ++-- source/prog/joystick_test.asm | 2 +- source/prog/keyboard_test.asm | 2 +- source/prog/main.asm | 2 +- source/prog/main_menu_common.asm | 26 +- source/prog/main_menu_p1.asm | 151 ++--- source/prog/main_menu_p2.asm | 141 ++--- source/prog/memory_reports.asm | 366 ++++++++++++ source/prog/memory_routines.asm | 3 +- source/prog/mixed_mode_test.asm | 2 +- source/prog/monitor_color_test.asm | 2 +- source/prog/psg_test.asm | 2 +- source/prog/ram_test.asm | 872 ----------------------------- source/prog/screen0_test.asm | 2 +- source/prog/screen1_test.asm | 2 +- source/prog/screen2_test.asm | 2 +- source/prog/screen3_test.asm | 2 +- source/prog/sfx.asm | 2 +- source/prog/sprites_test.asm | 2 +- source/prog/system.asm | 2 +- source/prog/system_info.asm | 2 +- source/prog/vars.asm | 10 +- source/prog/vdp_routines.asm | 2 +- source/prog/welcome.asm | 2 +- 35 files changed, 617 insertions(+), 1220 deletions(-) create mode 100644 source/prog/memory_reports.asm delete mode 100644 source/prog/ram_test.asm diff --git a/README.md b/README.md index aa61952..c95f60d 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,13 @@ La versión actual del programa está provista de las siguientes funcionalidades 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. +- 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. + - 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 @@ -63,15 +70,25 @@ 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. +- MIXED MODE + Prueba para que podamos verificar si nuestra VDP dispone y es compatible + con el modo mixto (texto + gráficos) no documentado por Texas Instruments + https://en.wikipedia.org/wiki/Texas_Instruments_TMS9918#Undocumented + Algunas VDP clónicas no disponen de el en algunas revisiones. El modelo + de MSX más conocido por no ser compatible es el HX-10 de Toshiba. + - SYSTEM INFO - Muestra un resumen de las características técnicas de nuestro equipo. + Muestra un resumen de las características técnicas de nuestro equipo, + como el modelo de MSX (1, 2, 2+ o Turbo-R), la RAM y VRAM instaladas + y su ubicación, el diseño de slots, la VDP instalada y a que frecuencia + de refresco está funcionando y en los modelos msx2 y superiores la + fecha y hora del RTC interno. -- 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. - +- RAM LAYOUT + Muestra un resumen de la memoria RAM detectada y su distribución en el + sistema de slots/subslots y mappers. -El programa se distribuye en formato ROM, DISK, CAS y archivo de audio WAVE, a 1200 y 2400 baudios. \ No newline at end of file + +El programa se distribuye en formato ROM, DISK, CAS y archivo de audio WAVE +a 1200 y 2400 baudios, así como los binarios de 32k y 64k listos para +grabar en una memoria PROM, EPROM, etc. diff --git a/docs/changelog.txt b/docs/changelog.txt index fecf090..e633dc0 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -2,6 +2,12 @@ MSX Diagnostics Changelog -------------------------------------------------------------------------------- +2020-07-23 Ver. 1.2.0 +-------------------------------------------------------------------------------- +- Añadida la opción para mostrar la configuración de la memoria RAM. +- Reestructuración de los menús. + + 2020-04-30 Ver. 1.1.8 -------------------------------------------------------------------------------- - Rescrita parte de la rutina de detección de memoria en la página 3. diff --git a/docs/readme.txt b/docs/readme.txt index 9403d22..c95f60d 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -44,6 +44,13 @@ La versión actual del programa está provista de las siguientes funcionalidades 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. +- 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. + - 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 @@ -63,6 +70,13 @@ 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. +- MIXED MODE + Prueba para que podamos verificar si nuestra VDP dispone y es compatible + con el modo mixto (texto + gráficos) no documentado por Texas Instruments + https://en.wikipedia.org/wiki/Texas_Instruments_TMS9918#Undocumented + Algunas VDP clónicas no disponen de el en algunas revisiones. El modelo + de MSX más conocido por no ser compatible es el HX-10 de Toshiba. + - SYSTEM INFO Muestra un resumen de las características técnicas de nuestro equipo, como el modelo de MSX (1, 2, 2+ o Turbo-R), la RAM y VRAM instaladas @@ -70,21 +84,11 @@ La versión actual del programa está provista de las siguientes funcionalidades de refresco está funcionando y en los modelos msx2 y superiores la fecha y hora del RTC interno. -- 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. +- RAM LAYOUT + Muestra un resumen de la memoria RAM detectada y su distribución en el + sistema de slots/subslots y mappers. -- MIXED MODE - Prueba para que podamos verificar si nuestra VDP dispone y es compatible - con el modo mixto (texto + gráficos) no documentado por Texas Instruments - https://en.wikipedia.org/wiki/Texas_Instruments_TMS9918#Undocumented - Algunas VDP clónicas no disponen de el en algunas revisiones. El modelo - de MSX más conocido por no ser compatible es el HX-10 de Toshiba. - - El programa se distribuye en formato ROM, DISK, CAS y archivo de audio WAVE -a 1200 y 2400 baudios. +a 1200 y 2400 baudios, así como los binarios de 32k y 64k listos para +grabar en una memoria PROM, EPROM, etc. diff --git a/source/data/bin/misc.asm b/source/data/bin/misc.asm index 2214812..ccbc726 100644 --- a/source/data/bin/misc.asm +++ b/source/data/bin/misc.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.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 ead8a69..61b1ae5 100644 --- a/source/data/txt/key_names.asm +++ b/source/data/txt/key_names.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.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 fe251e4..761e2c8 100644 --- a/source/data/txt/text.asm +++ b/source/data/txt/text.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Textos del programa ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -30,7 +30,7 @@ TEXT_DASHED_LINE: ; Texto de cabecera de los menus TEXT_MENU_HEADER: - db " MSX DIAGNOSTICS v1.1.9", $0D, $0A, $00 + db " MSX DIAGNOSTICS v1.2.0", $0D, $0A, $00 @@ -69,10 +69,8 @@ TEXT_MAIN_MENU_P1_ITEMS: db " 3. SCREEN 2", $0D, $0A db " 4. SCREEN 3", $0D, $0A db " 5. SPRITES", $0D, $0A - db " 6. KEYBOARD", $0D, $0A - db " 7. JOYSTICK", $0D, $0A - db " 8. PSG", $0D, $0A - db " 9. SYSTEM INFO ", $0D, $0A + db " 6. MONITOR COLOR", $0D, $0A + db " 9. REBOOT", $0D, $0A db " 0. NEXT >>", $0D, $0A db $00 @@ -87,14 +85,12 @@ TEXT_MAIN_MENU_P2_TITLE: TEXT_MAIN_MENU_P2_ITEMS: db $0D, $0A - db " 1. RAM LAYOUT", $0D, $0A - db " 2. RAM TEST [WIP]", $0D, $0A - db " 3. MONITOR COLOR", $0D, $0A + db " 1. KEYBOARD", $0D, $0A + db " 2. JOYSTICK", $0D, $0A + db " 3. PSG", $0D, $0A db " 4. MIXED MODE", $0D, $0A - db " 5. ", $C3, $0D, $0A - db " 6. ", $C3, $0D, $0A - db " 7. ", $C3, $0D, $0A - db " 8. ", $C3, $0D, $0A + db " 5. SYSTEM INFO ", $0D, $0A + db " 6. RAM LAYOUT", $0D, $0A db " 9. REBOOT", $0D, $0A db " 0. BACK <<", $0D, $0A db $00 @@ -104,12 +100,17 @@ TEXT_MAIN_MENU_P2_ITEMS: ; Texto de pie del menu principal TEXT_MAIN_MENU_FOOTER: - db $0D, $0A db $0D, $0A db " ACCEPT: SPACE / BUTTON 1", $0D, $0A db " CANCEL: ESC / BUTTON 2", $0D, $0A - db $0D, $0A + db $00 + + + +; Copyright +TEXT_MAIN_MENU_COPYRIGHT: db " (cc) 2018-2020 BY CESAR RINCON", $0D, $0A + db " https://nightfoxandco.com/", $0D, $0A db $00 diff --git a/source/formats/f_binary.asm b/source/formats/f_binary.asm index f4fe659..1b7e8c2 100644 --- a/source/formats/f_binary.asm +++ b/source/formats/f_binary.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Directivas de compilacion para BINARIO de 32kb ; @@ -31,7 +31,7 @@ OUTPUT_FORMAT = 1 ; Define el formato de salida ; Almacena las variables los ultimos 4KB .ORG $E380 .INCLUDE "ngn/ngn_vars.asm" ; 2285 bytes -.INCLUDE "prog/vars.asm" ; 26 bytes +.INCLUDE "prog/vars.asm" ; 172 bytes ; ---------------------------------------------------------- diff --git a/source/formats/f_cas.asm b/source/formats/f_cas.asm index 6fb5cec..2042179 100644 --- a/source/formats/f_cas.asm +++ b/source/formats/f_cas.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Directivas de compilacion para BINARIO de 32kb ; Genera un archivo .CAS y .WAV @@ -31,7 +31,7 @@ OUTPUT_FORMAT = 4 ; Define el formato de salida ; Almacena las variables los ultimos 4KB .ORG $E380 .INCLUDE "ngn/ngn_vars.asm" ; 2285 bytes -.INCLUDE "prog/vars.asm" ; 26 bytes +.INCLUDE "prog/vars.asm" ; 172 bytes ; ---------------------------------------------------------- diff --git a/source/formats/f_com.asm b/source/formats/f_com.asm index 615015e..15f00c4 100644 --- a/source/formats/f_com.asm +++ b/source/formats/f_com.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Directivas de compilacion para .COM de MSX-DOS ; @@ -31,7 +31,7 @@ OUTPUT_FORMAT = 3 ; Define el formato de salida ; Almacena las variables los ultimos 4KB .ORG $E380 .INCLUDE "ngn/ngn_vars.asm" ; 2285 bytes -.INCLUDE "prog/vars.asm" ; 26 bytes +.INCLUDE "prog/vars.asm" ; 172 bytes ; ---------------------------------------------------------- diff --git a/source/formats/f_rom.asm b/source/formats/f_rom.asm index 5a75784..4e77c06 100644 --- a/source/formats/f_rom.asm +++ b/source/formats/f_rom.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Directivas de compilacion para ROM de 32kb ; @@ -31,7 +31,7 @@ OUTPUT_FORMAT = 2 ; Define el formato de salida ; Almacena las variables los ultimos 4KB .ORG $E380 .INCLUDE "ngn/ngn_vars.asm" ; 2285 bytes -.INCLUDE "prog/vars.asm" ; 26 bytes +.INCLUDE "prog/vars.asm" ; 172 bytes ; ---------------------------------------------------------- diff --git a/source/msxdiag.asm b/source/msxdiag.asm index db13d07..e8334af 100644 --- a/source/msxdiag.asm +++ b/source/msxdiag.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -114,8 +114,8 @@ PROGRAM_START_ADDRESS: .INCLUDE "prog/psg_test.asm" ; Informacion del sistema .INCLUDE "prog/system_info.asm" - ; Test de la memoria RAM - .INCLUDE "prog/ram_test.asm" + ; Informes de la memoria + .INCLUDE "prog/memory_reports.asm" ; Test de color del monitor .INCLUDE "prog/monitor_color_test.asm" ; Test del modo mixto diff --git a/source/prog/consts.asm b/source/prog/consts.asm index 1c32582..2bb343a 100644 --- a/source/prog/consts.asm +++ b/source/prog/consts.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Definicion de constantes ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -17,29 +17,7 @@ SYSTEM_KEYS_NUMBER .EQU 6 ; Numero de teclas de sistema - - - - -; ---------------------------------------------------------- -; Rutinas de configuracion de slots y memoria -; ---------------------------------------------------------- - -; Puerto para la seleccion de segmento de mapper - -MEMORY_MAPPER_TEST_PAGE .EQU $0FFF ; Direccion de la pagina -MEMORY_MAPPER_TEST_PORT .EQU $FC ; Puerto para la pagina - - -; Usa el NGN_RAM_BUFFER, para las variables, define aqui los offsets - -MEMORY_SLOT_SELECTION .EQU $100 ; Guarda el byte del OUT de seleccion de slot principal [$A8] 1 byte -MEMORY_SUBSLOT_SELECTION .EQU $101 ; Guarda el byte de seleccion de sub-slot [$FFFF] 1 byte -MEMORY_PAGE3_SLOT .EQU $102 ; Guarda el byte de la seleccion de la pagina 3 1 byte -MEMORY_IN_CURRENT_SELECTION .EQU $103 ; Memoria encontrada en la seleccion actual 3 bytes -MEMORY_MAPPER_TOTAL_PAGES .EQU $106 ; Nº de paginas del mapper 2 bytes -MEMORY_MAPPER_PAGES_BACKUP .EQU $200 ; Bytes de las paginas del mapper 256 bytes - +@@SYSTEM: @@ -49,11 +27,11 @@ MEMORY_MAPPER_PAGES_BACKUP .EQU $200 ; Bytes de las paginas del mappe MAINMENU_ITEM_START .EQU 7 ; Offset del cursor en Y MAINMENU_FIRST_OPTION_P1 .EQU 0 ; (1 - 1) -MAINMENU_LAST_OPTION_P1 .EQU 11 ; (10 + 1) +MAINMENU_LAST_OPTION_P1 .EQU 9 ; (8 + 1) MAINMENU_FIRST_OPTION_P2 .EQU 0 ; (1 - 1) -MAINMENU_LAST_OPTION_P2 .EQU 11 ; (10 + 1) - +MAINMENU_LAST_OPTION_P2 .EQU 9 ; (8 + 1) +@@MAIN_MENU: @@ -64,6 +42,7 @@ MAINMENU_LAST_OPTION_P2 .EQU 11 ; (10 + 1) SCR2TEST_FIRST_IMAGE .EQU 0 ; (1 - 1) Idx al que saltar a la ultima imagen SCR2TEST_LAST_IMAGE .EQU 5 ; (4 + 1) Idx al que saltar a la primera imagen +@@SCREEN2_TEST: @@ -75,7 +54,7 @@ SCR2TEST_LAST_IMAGE .EQU 5 ; (4 + 1) Idx al que saltar a la primera imagen SCR3TEST_FIRST_PATTERN .EQU 0 ; (1 - 1) Idx al que saltar a la ultimo patron SCR3TEST_LAST_PATTERN .EQU 8 ; (7 + 1) Idx al que saltar a la primer patron - +@@SCREEN3_TEST: @@ -88,7 +67,7 @@ JOYTEST1_COLOR_ON .EQU 10 JOYTEST2_COLOR_OFF .EQU 6 JOYTEST2_COLOR_ON .EQU 12 - +@@JOY_TEST: @@ -107,7 +86,6 @@ PSGTEST_NOISE_CHAN_X_GAP .EQU 6 ; Espacio entre columnas PSGTEST_NOISE_FREQ_X_START .EQU 17 ; Offset del cursor X - ; Usa el NGN_RAM_BUFFER, para las variables, define aqui los offsets PSG_TEST_OPTION_SELECTED .EQU 0 ; Opcion seleccionada del menu (1-3 Freq, 4-6 Vol, 7 Noise Chan, 8 Noise Freq) @@ -127,7 +105,7 @@ PSG_TEST_CHANNEL .EQU 13 ; Canal actual (1-4) PSG_TEST_VOLUME .EQU 14 ; Volumen actual PSG_TEST_FREQ .EQU 15 ; Frecuencia actual - +@@PSG_TEST: @@ -145,6 +123,8 @@ SYS_INFO_HZ .EQU $88 ; HZ de refresco (Puntero de text SYS_INFO_RAM_PAGES_TEXT_POS .EQU $100 ; Posicion de escritura 2 bytes +@@SYS_INFO: + @@ -164,18 +144,36 @@ MONITOR_COLOR_CURRENT_COLOR .EQU 1 ; Color actual del ciclo de colore MONITOR_COLOR_DELAY .EQU 2 ; Numero de frames de espera MONITOR_COLOR_FRAME .EQU 3 ; Frame actual +@@MONITOR_COLOR_TEST: + + + +; ---------------------------------------------------------- +; Rutinas de configuracion de slots y memoria +; ---------------------------------------------------------- + +; Puerto para la seleccion de segmento de mapper + +MEMORY_MAPPER_TEST_PAGE .EQU $0FFF ; Direccion de la pagina +MEMORY_MAPPER_TEST_PORT .EQU $FC ; Puerto para la pagina [Pagina 0 seleccionada] + + +; Usa el NGN_RAM_BUFFER, para las variables, define aqui los offsets + +MEMORY_PAGE3_SLOT .EQU $100 ; Guarda el byte de la seleccion de la pagina 3 1 byte +MEMORY_IN_CURRENT_SELECTION .EQU $101 ; Memoria encontrada en la seleccion actual 3 bytes +MEMORY_MAPPER_TOTAL_PAGES .EQU $104 ; Nº de paginas del mapper 2 bytes +MEMORY_MAPPER_PAGES_BACKUP .EQU $200 ; Bytes de las paginas del mapper 256 bytes +@@MEMORY_ROUTINES: ; ---------------------------------------------------------- +; Informes de la memoria RAM ; Test de la memoria RAM ; ---------------------------------------------------------- -; Constantes -RAM_TEST_MAPPER_PORT .EQU $FC ; Pagina 1 -RAM_TEST_MAPPER_ADDRESS .EQU $0000 ; Direccion de inicio de la pagina - ; Usa el NGN_RAM_BUFFER, para las variables, define aqui los offsets RAM_TEST_TEMP_CURSOR .EQU $200 ; Posicion del cursor (2 bytes) @@ -185,38 +183,12 @@ RAM_TEST_SLOT_INFO .EQU $203 ; Informacion del slot actua RAM_TEST_SHOW_ALL_INFO .EQU $204 ; Muestra TODA la informacion? (1 byte) RAM_TEST_TOTAL_OPTIONS .EQU $205 ; Numero de opciones detectadas (1 byte) -RAM_TEST_FIRST_OPTION .EQU $206 ; Primera opcion (1 byte) -RAM_TEST_LAST_OPTION .EQU $207 ; Ultima opcion (1 byte) -RAM_TEST_OPTION_LIST .EQU $208 ; ID's de los slots encontrados (1 byte x 16) -RAM_TEST_SLOT_OK .EQU $220 ; El slot/sub-slot actual contiene RAM (1 byte) - -RAM_TEST_TEMP_STRING .EQU $221 ; Cadena de texto temporal (32 bytes) - -RAM_TEST_PAGES_TO_TEST .EQU $250 ; Numero de paginas a probar (1 byte) -RAM_TEST_PAGES_LIST .EQU $251 ; Array de datos de las paginas a probar (7 bytes x 4) - ; [ 1 byte ][ 1 byte ][ 1 byte ][ 1 byte ][ 1 byte ][ 1 byte ][ 1 byte ] - ; [1111][1111][ ][ ][ ] - ; [MAP?][PAGE][ START ADDRESS ][ END ADDRESS ][ SIZE ] - -RAM_TEST_MAPPED_TOTAL_KB .EQU $270 ; Numero total de KB del mapper (2 bytes) -RAM_TEST_MAPPED_TOTAL_PAGES .EQU $272 ; Numero de paginas del mapper (2 bytes) -RAM_TEST_MAPPED_CURRETN_KB .EQU $274 ; KB completados del analisis (2 bytes) -RAM_TEST_MAPPED_CURRENT_PAGE .EQU $276 ; Numero de pagina actual del mapper (1 byte) - -RAM_TEST_BYTE_BACKUP .EQU $280 ; Copia de seguridad del byte a probar (1 byte) -RAM_TEST_BYTE_ERROR .EQU $281 ; Error (1 byte) -RAM_TEST_PAGE_ERRORS .EQU $282 ; Numero de errores de esta pagina (2 bytes) -RAM_TEST_SLOT_ERRORS .EQU $284 ; Numero de errores totales de este slot (2 bytes) - -RAM_TEST_SLOT_SELECTION .EQU $290 ; Seleccion de SLOT usando el puerto A8 (33221100) (1 byte) -RAM_TEST_SUBSLOT_SELECTION .EQU $291 ; Seleccion de SUB-SLOT usando la direccion $FFFF (33221100) (1 byte) -RAM_TEST_FFFF_SELECTION .EQU $292 ; Seleccion de la pagina 3 para acceder a FFFF (1 byte) -RAM_TEST_SLOT_BACKUP .EQU $293 ; Backup del slot actual -RAM_TEST_SUBSLOT_BACKUP .EQU $294 ; Backup del sub-slot actual - -RAM_TEST_BYTE_ROUTINE_ADDR .EQU $700 ; Offset de la rutina -RAM_TEST_BYTE_ROUTINE_SIZE .EQU $FF ; Tamaño de la rutina +RAM_TEST_OPTION_LIST .EQU $206 ; ID's de los slots encontrados (1 byte x 16) +RAM_TEST_SLOT_OK .EQU $216 ; El slot/sub-slot actual contiene RAM (1 byte) + +RAM_TEST_TEMP_STRING .EQU $217 ; Cadena de texto temporal (32 bytes) +@@MEMORY_REPORTS: ;*********************************************************** diff --git a/source/prog/joystick_test.asm b/source/prog/joystick_test.asm index 65f3630..0418b71 100644 --- a/source/prog/joystick_test.asm +++ b/source/prog/joystick_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Test de los Joysticks ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/keyboard_test.asm b/source/prog/keyboard_test.asm index c9112d9..767cee9 100644 --- a/source/prog/keyboard_test.asm +++ b/source/prog/keyboard_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Test del teclado ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/main.asm b/source/prog/main.asm index ef9a740..e98ee9d 100644 --- a/source/prog/main.asm +++ b/source/prog/main.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.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 d453dd2..f5e9064 100644 --- a/source/prog/main_menu_common.asm +++ b/source/prog/main_menu_common.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Menu Principal (Funciones comunes) ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -16,6 +16,8 @@ ; ---------------------------------------------------------- FUNCTION_MAIN_MENU_HEADER_PRINT: + ld hl, TEXT_DASHED_LINE ; Linea + call NGN_TEXT_PRINT ; Imprimelo ld hl, TEXT_MENU_HEADER ; Texto de la cabecera call NGN_TEXT_PRINT ; Imprimelo ld hl, TEXT_DASHED_LINE ; Linea @@ -25,6 +27,28 @@ FUNCTION_MAIN_MENU_HEADER_PRINT: +; ---------------------------------------------------------- +; Imprime el pie del menu +; ---------------------------------------------------------- +FUNCTION_MAIN_MENU_FOOTER_PRINT: + + ld hl, TEXT_MAIN_MENU_FOOTER ; Instrucciones del menu + call NGN_TEXT_PRINT ; Imprimelo + + ld hl, $0114 ; Posicion inicial del cuerpo de texto + call NGN_TEXT_POSITION + ld hl, TEXT_DASHED_LINE ; Linea + call NGN_TEXT_PRINT ; Imprimelo + ld hl, TEXT_MAIN_MENU_COPYRIGHT ; Texto del copyright + call NGN_TEXT_PRINT ; Imprimelo + ld hl, TEXT_DASHED_LINE ; Linea + call NGN_TEXT_PRINT ; Imprimelo + + ; Vuelve + ret + + + ; ---------------------------------------------------------- ; Actualiza la posicion del cursor ; ---------------------------------------------------------- diff --git a/source/prog/main_menu_p1.asm b/source/prog/main_menu_p1.asm index 7d58f31..9e870ef 100644 --- a/source/prog/main_menu_p1.asm +++ b/source/prog/main_menu_p1.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Menu Principal (Pagina 1) ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -56,8 +56,7 @@ FUNCTION_MAIN_MENU_P1: call NGN_TEXT_PRINT ; Imprimelo ld hl, TEXT_MAIN_MENU_P1_ITEMS ; Items del menu call NGN_TEXT_PRINT ; Imprimelo - ld hl, TEXT_MAIN_MENU_FOOTER ; Pie del menu - call NGN_TEXT_PRINT ; Imprimelo + call FUNCTION_MAIN_MENU_FOOTER_PRINT ; Instrucciones y pie del menu ; Cursor call FUNCTION_MAIN_MENU_PRINT_CURSOR @@ -77,59 +76,49 @@ FUNCTION_MAIN_MENU_P1: ; ---------------------------------------------------------- ; Si se pulsa la tecla 1 - ld a, [NGN_KEY_1] ; Tecla 1 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_SCREEN0 ; Ejecuta la opcion + ld a, [NGN_KEY_1] ; Tecla 1 + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_SCREEN0 ; Ejecuta la opcion ; Si se pulsa la tecla 2 - ld a, [NGN_KEY_2] ; Tecla 2 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_SCREEN1 ; Ejecuta la opcion + ld a, [NGN_KEY_2] ; Tecla 2 + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_SCREEN1 ; Ejecuta la opcion ; Si se pulsa la tecla 3 - ld a, [NGN_KEY_3] ; Tecla 3 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_SCREEN2 ; Ejecuta la opcion + ld a, [NGN_KEY_3] ; Tecla 3 + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_SCREEN2 ; Ejecuta la opcion ; Si se pulsa la tecla 4 - ld a, [NGN_KEY_4] ; Tecla 4 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_SCREEN3 ; Ejecuta la opcion + ld a, [NGN_KEY_4] ; Tecla 4 + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_SCREEN3 ; Ejecuta la opcion ; Si se pulsa la tecla 5 - ld a, [NGN_KEY_5] ; Tecla 5 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_SPRITES ; Ejecuta la opcion + ld a, [NGN_KEY_5] ; Tecla 5 + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_SPRITES ; Ejecuta la opcion ; Si se pulsa la tecla 6 - ld a, [NGN_KEY_6] ; Tecla 6 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_KEYBOARD ; Ejecuta la opcion - - ; Si se pulsa la tecla 7 - ld a, [NGN_KEY_7] ; Tecla 7 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_JOYSTICK ; Ejecuta la opcion - - ; Si se pulsa la tecla 8 - ld a, [NGN_KEY_8] ; Tecla 8 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_PSG ; Ejecuta la opcion + ld a, [NGN_KEY_6] ; Tecla 6 + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_MONITOR_COLOR ; Ejecuta la opcion ; Si se pulsa la tecla 9 - ld a, [NGN_KEY_9] ; Tecla 9 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_SYSTEM_INFO ; Ejecuta la opcion + ld a, [NGN_KEY_9] ; Tecla 9 + and $02 ; Detecta "KEY DOWN" + ret nz ; Reinicia el ordenador ; Si se pulsa la tecla 0 - ld a, [NGN_KEY_0] ; Tecla 0 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE2 ; Ejecuta la opcion + ld a, [NGN_KEY_0] ; Tecla 0 + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE2 ; Ejecuta la opcion ; Si se pulsa la tecla => - ld a, [SYSKEY_RIGHT] ; Tecla => - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE2 ; Ejecuta la opcion + ld a, [SYSKEY_RIGHT] ; Tecla => + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE2 ; Ejecuta la opcion ; ---------------------------------------------------------- @@ -177,38 +166,32 @@ FUNCTION_MAIN_MENU_P1: ; Opcion aceptada - ld a, [MAINMENU_ITEM_SELECTED] ; Lee la opcion seleccionada + ld a, [MAINMENU_ITEM_SELECTED] ; Lee la opcion seleccionada ; Opcion 1 cp 1 - jp z, FUNCTION_MAIN_MENU_SCREEN0 ; Test Screen 0 + jp z, FUNCTION_MAIN_MENU_SCREEN0 ; Test Screen 0 ; Opcion 2 cp 2 - jp z, FUNCTION_MAIN_MENU_SCREEN1 ; Test Screen 1 + jp z, FUNCTION_MAIN_MENU_SCREEN1 ; Test Screen 1 ; Opcion 3 cp 3 - jp z, FUNCTION_MAIN_MENU_SCREEN2 ; Test Screen 2 + jp z, FUNCTION_MAIN_MENU_SCREEN2 ; Test Screen 2 ; Opcion 4 cp 4 - jp z, FUNCTION_MAIN_MENU_SCREEN3 ; Test Screen 3 + jp z, FUNCTION_MAIN_MENU_SCREEN3 ; Test Screen 3 ; Opcion 5 cp 5 - jp z, FUNCTION_MAIN_MENU_SPRITES ; Test de Sprites + jp z, FUNCTION_MAIN_MENU_SPRITES ; Test de Sprites ; Opcion 6 cp 6 - jp z, FUNCTION_MAIN_MENU_KEYBOARD ; Test del teclado + jp z, FUNCTION_MAIN_MENU_MONITOR_COLOR ; Test del color del monitor ; Opcion 7 cp 7 - jp z, FUNCTION_MAIN_MENU_JOYSTICK ; Test de los puertos de joystick + ret z ; Sal del programa (reinicia) ; Opcion 8 cp 8 - jp z, FUNCTION_MAIN_MENU_PSG ; Test del sonido PSG - ; Opcion 9 - cp 9 - jp z, FUNCTION_MAIN_MENU_SYSTEM_INFO ; Informacion del sistema - ; Opcion 0 - cp 10 - jp z, FUNCTION_MAIN_MENU_GOTO_PAGE2 ; Siguiente pagina del menu (p2) + jp z, FUNCTION_MAIN_MENU_GOTO_PAGE2 ; Siguiente pagina del menu (p2) ; Error catastrofico (reinicia) ret @@ -314,13 +297,14 @@ FUNCTION_MAIN_MENU_SPRITES: ; ---------------------------------------------------------- -; Ejecuta la opcion KEYBOARD_TEST [6] +; FUNCTION_MAIN_MENU_MONITOR_COLOR [6] ; ---------------------------------------------------------- -FUNCTION_MAIN_MENU_KEYBOARD: +FUNCTION_MAIN_MENU_MONITOR_COLOR: ; Llama la funcion correspondiente - call FUNCTION_KEYBOARD_TEST_MENU + call FUNCTION_MONITOR_COLOR_TEST_MENU + ; Deshabilita la pantalla para el cambio call $0041 ; Vuelve al menu @@ -330,57 +314,6 @@ FUNCTION_MAIN_MENU_KEYBOARD: -; ---------------------------------------------------------- -; Ejecuta la opcion JOYSTICK_TEST [7] -; ---------------------------------------------------------- - -FUNCTION_MAIN_MENU_JOYSTICK: - - ; Llama la funcion correspondiente - call FUNCTION_JOYSTICK_TEST_MENU - ; Deshabilita la pantalla para el cambio - call $0041 - ; Vuelve al menu - ld a, 7 - ld [MAINMENU_LAST_ITEM], a - jp FUNCTION_MAIN_MENU_P1 - - - -; ---------------------------------------------------------- -; Ejecuta la opcion PSG [8] -; ---------------------------------------------------------- - -FUNCTION_MAIN_MENU_PSG: - - ; Llama la funcion correspondiente - call FUNCTION_PSG_TEST_MENU - ; Deshabilita la pantalla para el cambio - call $0041 - ; Vuelve al menu - ld a, 8 - ld [MAINMENU_LAST_ITEM], a - jp FUNCTION_MAIN_MENU_P1 - - - -; ---------------------------------------------------------- -; Ejecuta la opcion SYSTEM INFO [9] -; ---------------------------------------------------------- - -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] ; ---------------------------------------------------------- diff --git a/source/prog/main_menu_p2.asm b/source/prog/main_menu_p2.asm index 09c5e5c..b62625a 100644 --- a/source/prog/main_menu_p2.asm +++ b/source/prog/main_menu_p2.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Menu Principal (Pagina 2) ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -56,8 +56,7 @@ FUNCTION_MAIN_MENU_P2: call NGN_TEXT_PRINT ; Imprimelo ld hl, TEXT_MAIN_MENU_P2_ITEMS ; Items del menu call NGN_TEXT_PRINT ; Imprimelo - ld hl, TEXT_MAIN_MENU_FOOTER ; Pie del menu - call NGN_TEXT_PRINT ; Imprimelo + call FUNCTION_MAIN_MENU_FOOTER_PRINT ; Instrucciones y pie del menu ; Cursor call FUNCTION_MAIN_MENU_PRINT_CURSOR @@ -79,17 +78,17 @@ 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_RAM_LAYOUT ; Ejecuta la opcion + jp nz, FUNCTION_MAIN_MENU_KEYBOARD ; Ejecuta la opcion ; Si se pulsa la tecla 2 ld a, [NGN_KEY_2] ; Tecla 2 and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_RAM_CHECK ; Ejecuta la opcion + jp nz, FUNCTION_MAIN_MENU_JOYSTICK ; Ejecuta la opcion ; Si se pulsa la tecla 3 ld a, [NGN_KEY_3] ; Tecla 3 and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_MONITOR_COLOR ; Ejecuta la opcion + jp nz, FUNCTION_MAIN_MENU_PSG ; Ejecuta la opcion ; Si se pulsa la tecla 4 ld a, [NGN_KEY_4] ; Tecla 4 @@ -97,39 +96,29 @@ FUNCTION_MAIN_MENU_P2: jp nz, FUNCTION_MAIN_MENU_MIXED_MODE ; Ejecuta la opcion ; Si se pulsa la tecla 5 - ld a, [NGN_KEY_5] ; Tecla 5 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_P2_5 ; Ejecuta la opcion + ld a, [NGN_KEY_5] ; Tecla 5 + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_SYSTEM_INFO ; Ejecuta la opcion ; Si se pulsa la tecla 6 - ld a, [NGN_KEY_6] ; Tecla 6 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_P2_6 ; Ejecuta la opcion + ld a, [NGN_KEY_6] ; Tecla 6 + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_RAM_LAYOUT ; Ejecuta la opcion - ; Si se pulsa la tecla 7 - ld a, [NGN_KEY_7] ; Tecla 7 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_P2_7 ; Ejecuta la opcion - - ; Si se pulsa la tecla 8 - ld a, [NGN_KEY_8] ; Tecla 8 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_P2_8 ; Ejecuta la opcion - ; Si se pulsa la tecla 9 - ld a, [NGN_KEY_9] ; Tecla 9 - and $02 ; Detecta "KEY DOWN" - ret nz ; Sal del programa + ld a, [NGN_KEY_9] ; Tecla 9 + and $02 ; Detecta "KEY DOWN" + ret nz ; Reinicia el ordenador ; Si se pulsa la tecla 0 - ld a, [NGN_KEY_0] ; Tecla 0 - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE1 ; Ejecuta la opcion + ld a, [NGN_KEY_0] ; Tecla 0 + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE1 ; Ejecuta la opcion ; Si se pulsa la tecla <= - ld a, [SYSKEY_LEFT] ; Tecla <= - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE1 ; Ejecuta la opcion + ld a, [SYSKEY_LEFT] ; Tecla <= + and $02 ; Detecta "KEY DOWN" + jp nz, FUNCTION_MAIN_MENU_GOTO_PAGE1 ; Ejecuta la opcion ; ---------------------------------------------------------- @@ -177,38 +166,32 @@ FUNCTION_MAIN_MENU_P2: ; Opcion aceptada - ld a, [MAINMENU_ITEM_SELECTED] ; Lee la opcion seleccionada + ld a, [MAINMENU_ITEM_SELECTED] ; Lee la opcion seleccionada ; Opcion 1 cp 1 - jp z, FUNCTION_MAIN_MENU_RAM_LAYOUT ; Ejecuta la opcion + jp z, FUNCTION_MAIN_MENU_KEYBOARD ; Test del teclado ; Opcion 2 cp 2 - jp z, FUNCTION_MAIN_MENU_RAM_CHECK ; Ejecuta la opcion + jp z, FUNCTION_MAIN_MENU_JOYSTICK ; Test de los joysticks ; Opcion 3 cp 3 - jp z, FUNCTION_MAIN_MENU_MONITOR_COLOR ; Ejecuta la opcion + jp z, FUNCTION_MAIN_MENU_PSG ; Test del PSG ; Opcion 4 cp 4 - jp z, FUNCTION_MAIN_MENU_MIXED_MODE ; Ejecuta la opcion + jp z, FUNCTION_MAIN_MENU_MIXED_MODE ; Test del mixed mode ; Opcion 5 cp 5 - jp z, FUNCTION_MAIN_MENU_P2_5 ; Ejecuta la opcion + jp z, FUNCTION_MAIN_MENU_SYSTEM_INFO ; Informacion del sistema ; Opcion 6 cp 6 - jp z, FUNCTION_MAIN_MENU_P2_6 ; Ejecuta la opcion + jp z, FUNCTION_MAIN_MENU_RAM_LAYOUT ; Disposicion de la RAM detectada ; Opcion 7 cp 7 - jp z, FUNCTION_MAIN_MENU_P2_7 ; Ejecuta la opcion + ret z ; Sal del programa (reinicia) ; Opcion 8 cp 8 - jp z, FUNCTION_MAIN_MENU_P2_8 ; Ejecuta la opcion - ; Opcion 9 - cp 9 - ret z ; Sal del programa (reinicia) - ; Opcion 10 - cp 10 - jp z, FUNCTION_MAIN_MENU_GOTO_PAGE1 ; Ejecuta la opcion + jp z, FUNCTION_MAIN_MENU_GOTO_PAGE1 ; Pagina anteriro del menu (p1) ; Error catastrofico (reinicia) ret @@ -229,14 +212,13 @@ FUNCTION_MAIN_MENU_P2: ; ---------------------------------------------------------- -; FUNCTION_MAIN_MENU_RAM_LAYOUT [1] +; Ejecuta la opcion KEYBOARD_TEST [1] ; ---------------------------------------------------------- -FUNCTION_MAIN_MENU_RAM_LAYOUT: +FUNCTION_MAIN_MENU_KEYBOARD: ; Llama la funcion correspondiente - call FUNCTION_RAM_TEST_LAYOUT_REPORT - + call FUNCTION_KEYBOARD_TEST_MENU ; Deshabilita la pantalla para el cambio call $0041 ; Vuelve al menu @@ -247,14 +229,13 @@ FUNCTION_MAIN_MENU_RAM_LAYOUT: ; ---------------------------------------------------------- -; FUNCTION_MAIN_MENU_RAM_CHECK [2] +; Ejecuta la opcion JOYSTICK_TEST [2] ; ---------------------------------------------------------- -FUNCTION_MAIN_MENU_RAM_CHECK: +FUNCTION_MAIN_MENU_JOYSTICK: ; Llama la funcion correspondiente - call FUNCTION_RAM_TEST_MENU - + call FUNCTION_JOYSTICK_TEST_MENU ; Deshabilita la pantalla para el cambio call $0041 ; Vuelve al menu @@ -265,14 +246,13 @@ FUNCTION_MAIN_MENU_RAM_CHECK: ; ---------------------------------------------------------- -; FUNCTION_MAIN_MENU_MONITOR_COLOR [3] +; Ejecuta la opcion PSG [3] ; ---------------------------------------------------------- -FUNCTION_MAIN_MENU_MONITOR_COLOR: +FUNCTION_MAIN_MENU_PSG: ; Llama la funcion correspondiente - call FUNCTION_MONITOR_COLOR_TEST_MENU - + call FUNCTION_PSG_TEST_MENU ; Deshabilita la pantalla para el cambio call $0041 ; Vuelve al menu @@ -301,13 +281,13 @@ FUNCTION_MAIN_MENU_MIXED_MODE: ; ---------------------------------------------------------- -; FUNCTION_MAIN_MENU_P2_5 [5] +; Ejecuta la opcion SYSTEM INFO [5] ; ---------------------------------------------------------- -FUNCTION_MAIN_MENU_P2_5: +FUNCTION_MAIN_MENU_SYSTEM_INFO: ; Llama la funcion correspondiente - + call FUNCTION_SYSTEM_INFO ; Deshabilita la pantalla para el cambio call $0041 ; Vuelve al menu @@ -318,12 +298,13 @@ FUNCTION_MAIN_MENU_P2_5: ; ---------------------------------------------------------- -; FUNCTION_MAIN_MENU_P2_6 [6] +; FUNCTION_MAIN_MENU_RAM_LAYOUT [6] ; ---------------------------------------------------------- -FUNCTION_MAIN_MENU_P2_6: +FUNCTION_MAIN_MENU_RAM_LAYOUT: ; Llama la funcion correspondiente + call FUNCTION_MEMORY_REPORTS_PRINT_RAM_REPORT ; Deshabilita la pantalla para el cambio call $0041 @@ -334,40 +315,6 @@ FUNCTION_MAIN_MENU_P2_6: -; ---------------------------------------------------------- -; FUNCTION_MAIN_MENU_P2_7 [7] -; ---------------------------------------------------------- - -FUNCTION_MAIN_MENU_P2_7: - - ; Llama la funcion correspondiente - - ; Deshabilita la pantalla para el cambio - call $0041 - ; Vuelve al menu - ld a, 7 - ld [MAINMENU_LAST_ITEM], a - jp FUNCTION_MAIN_MENU_P2 - - - -; ---------------------------------------------------------- -; FUNCTION_MAIN_MENU_P2_8 [8] -; ---------------------------------------------------------- - -FUNCTION_MAIN_MENU_P2_8: - - ; Llama la funcion correspondiente - - ; Deshabilita la pantalla para el cambio - call $0041 - ; Vuelve al menu - ld a, 8 - ld [MAINMENU_LAST_ITEM], a - jp FUNCTION_MAIN_MENU_P2 - - - ; ---------------------------------------------------------- ; Pagina anterior del menu (Pagina 1) [9] ; ---------------------------------------------------------- diff --git a/source/prog/memory_reports.asm b/source/prog/memory_reports.asm new file mode 100644 index 0000000..f275090 --- /dev/null +++ b/source/prog/memory_reports.asm @@ -0,0 +1,366 @@ +;*********************************************************** +; +; MSX DIAGNOSTICS +; Version 1.2.0 +; ASM Z80 MSX +; Informes de la memoria instalada +; (cc) 2018-2020 Cesar Rincon "NightFox" +; https://nightfoxandco.com +; +;*********************************************************** + + + +; ---------------------------------------------------------- +; FUNCTION_MEMORY_REPORTS_PRINT_RAM_REPORT +; Muestra el resumen de la configuracion de la memoria +; RAM instalada +; ---------------------------------------------------------- +FUNCTION_MEMORY_REPORTS_PRINT_RAM_REPORT: + + ; Borra la pantalla + call NGN_TEXT_CLS + + ; Ejecuta la rutina [DISSCR] para deshabilitar la pantalla + call $0041 + + ; ---------------------------------------------------------- + ; Impresion de la informacion: Cabecera + ; ---------------------------------------------------------- + + ; Titulo + ld hl, TEXT_RAM_INFO_HEADER + call NGN_TEXT_PRINT + ld hl, TEXT_DASHED_LINE ; Linea + call NGN_TEXT_PRINT ; Imprimelo + + ; Lista de bancos de RAM + ld hl, $0104 ; Posicion inicial del cuerpo de texto + call NGN_TEXT_POSITION + ld hl, TEXT_RAM_TEST_HEADER ; Titulo + call NGN_TEXT_PRINT ; Imprimelo + ld hl, TEXT_DASHED_LINE ; Linea + call NGN_TEXT_PRINT ; Imprimelo + + ; ---------------------------------------------------------- + ; Obten y muestra la informacion de la memoria RAM + ; (TODOS LOS SLOTS) + ; ---------------------------------------------------------- + ld a, $FF ; Muestra TODA la informacion + ld [(NGN_RAM_BUFFER + RAM_TEST_SHOW_ALL_INFO)], a + ld hl, $0906 ; Posicion inicial + call FUNCTION_MEMORY_REPORTS_PRINT_RAM_LAYOUT + ld hl, TEXT_DASHED_LINE ; Linea + call NGN_TEXT_PRINT ; Imprimelo + + ; ---------------------------------------------------------- + ; Impresion de la informacion: Pie de pagina + ; ---------------------------------------------------------- + ld hl, $0118 + call NGN_TEXT_POSITION + ld hl, TEXT_SYSTEM_INFO_EXIT + call NGN_TEXT_PRINT + + ; Ejecuta la rutina [ENASCR] para habilitar la pantalla + call $0044 + + + ; ---------------------------------------------------------- + ; Espera a que se pulse aceptar o cancelar para salir + ; ---------------------------------------------------------- + + @@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 + + ; Si se pulsa la tecla "CANCELAR" + ld a, [SYSKEY_CANCEL] + and $02 ; Detecta "KEY DOWN" + ret nz + + ; Espera a la interrupcion del VDP (VSYNC) + halt + + ; Repite el bucle + jr @@LOOP + + + +; ---------------------------------------------------------- +; FUNCTION_MEMORY_REPORTS_PRINT_RAM_LAYOUT +; Muestra y registra la informacion de la memoria RAM +; HL = Posicion inicial +; (NGN_RAM_BUFFER + RAM_TEST_SHOW_ALL_INFO) +; $FF = Todos los slots $00 = Solo los disponibles +; ---------------------------------------------------------- +FUNCTION_MEMORY_REPORTS_PRINT_RAM_LAYOUT: + + ; ---------------------------------------------------------- + ; Impresion de la informacion: Parrilla de datos + ; ---------------------------------------------------------- + + ; Posicion inicial del cursor + ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], hl + + ; Prepara la cadena de texto + ld hl, TEXT_RAM_TEST_SLOT_ID + ld de, (NGN_RAM_BUFFER + RAM_TEST_TEMP_STRING) + ld bc, $0007 + ldir + + ; Conteo de offset para la seleccion de slot/subslot + xor a + ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO_OFFSET)], a + ; Total de slots + ld [(NGN_RAM_BUFFER + RAM_TEST_TOTAL_OPTIONS)], a + + ; Bucle de impresion de slots + ld bc, $0400 ; 4 Slots + @@SLOTS_GUI_LOOP: + + push bc ; Preserva los contadores + ld a, c ; Numero actual de slot + ld [MEMORY_CURRENT_SLOT], a + + ; Caracter para el numero de slot + ld hl, (NGN_RAM_BUFFER + RAM_TEST_TEMP_STRING + 2) + ld a, c + add $30 + ld [hl], a + + ; Bucle de los sub-slots + ld bc, $0400 ; 4 sub-slots + @@SUBSLOTS_GUI_LOOP: + + push bc ; Preserva los sub-contadores + + ; Lee el slot y guardalo en E + ld a, [MEMORY_CURRENT_SLOT] + ld e, a + ; Lee el sub-slot + ld a, c + ld [MEMORY_CURRENT_SUBSLOT], a ; Guarda el sub-slot en curso + ; Define el slot y subslot + sla a ; << 2 + sla a ; Coloca el nº de sub-slot en los bits 2 y 3 + or e ; Numero de slot + ld [MEMORY_SLOT_ID], a + ; Esta expandido? + ld hl, MEMORY_SLOT_EXPANDED ; Variable de informacio de expansiones + ld d, $00 ; Prepara el offset sobre la variable + ld a, [MEMORY_CURRENT_SLOT] ; Segun el slot + ld e, a + add hl, de ; Aplica el offset + ld a, [hl] ; Lee el valor + or a ; Si es cero, no pongas el flag + jr z, @@SLOT_ID_DONE + ld a, [MEMORY_SLOT_ID] ; Si esta expandido, marcalo + set 7, a + ld [MEMORY_SLOT_ID], a + + @@SLOT_ID_DONE: + ; Resetea el flag de slot con contenido + xor a + ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_OK)], a + + exx ; Preserva los registros actuales + ld a, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO_OFFSET)] ; Carga el offset actual + ld e, a ; en DE + ld d, 0 + ld hl, RAM_SLOT_0 ; Selecciona la variable de INFO de slots + add hl, de ; Aplica el offset + ld a, [hl] ; Carga la info + ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO)], a + exx ; Restaura los registros + + ; Este sub-slot, esta vacio? + ; Y no se ha marcado que se fuerce mostrarlo + ld a, [(NGN_RAM_BUFFER + RAM_TEST_SHOW_ALL_INFO)] + ld e, a + ld a, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO)] + or a + or e + jp z, @@SKIP_THIS_SUBSLOT + + ; No esta vacio, indicalo + ld a, $FF + ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_OK)], a + + ; Caracter para el numero de sub-slot (C) + ld hl, (NGN_RAM_BUFFER + RAM_TEST_TEMP_STRING + 4) + ld a, c + add $30 + ld [hl], a + + ld hl, (NGN_RAM_BUFFER + RAM_TEST_TEMP_STRING) ; Ubicacion del texto + call NGN_TEXT_PRINT ; Imprimelo + + ; Bucle para el contador de paginas + ld bc, $0400 + @@PAGE_GUI_LOOP: + + push bc ; Preserva el contador + + ld a, c ; Registra el numero de pagina + ld [MEMORY_CURRENT_PAGE], a + + ; Posiciona el texto + ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] + call NGN_TEXT_POSITION + + ; Imprime la cantidad de Kb en esta pagina + call FUNCION_MEMORY_GET_RAM_BANK_SIZE_VARIABLE ; Variable guardada en HL + ld b, [hl] + inc hl + ld c, [hl] + ; Esta a 0? + ld a, b + or c + jr z, @@NO_PRINT_ZERO + call NGN_TEXT_PRINT_INTEGER ; Imprimela + ; KB + ld a, $4B + call $00A2 ; [CHPUT] + ld a, $42 + call $00A2 ; [CHPUT] + jr @@NEXT_COLUMN + + ; No Imprimas ceros + @@NO_PRINT_ZERO: + push bc ; Preserva BC durante este bucle + ld b, 6 + @@NO_ZERO_LOOP: + ld a, $C3 + call $00A2 ; [CHPUT] + djnz @@NO_ZERO_LOOP + pop bc ; Recupera BC + + ; Actualiza el contador de este bucle + @@NEXT_COLUMN: + pop bc ; Recupera el contador + inc c ; Siguiente pagina + + ; Mueve el cabezal de escritura + ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] + ld de, $0800 + add hl, de + ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], hl + + ; Detecta si es memoria mapeada + ld a, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO)] + bit 7, a ; Si es un MAPPER, indicalo y sal + jr nz, @@ITS_A_MAPPER + + ; Repite + dec b + jp nz, @@PAGE_GUI_LOOP + jr @@NEXT_SUBSLOT + + + @@ITS_A_MAPPER: + exx ; Backup de todos los registros + + ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] + call NGN_TEXT_POSITION + ld hl, TEXT_RAM_TEST_MAPPED ; "MAPPED" + call NGN_TEXT_PRINT ; Imprimelo + + ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] + ld de, $0800 + add hl, de + ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], hl + call NGN_TEXT_POSITION + ld a, $49 + call $00A2 ; [CHPUT] + ld a, $4E + call $00A2 ; [CHPUT] + ld a, $20 + call $00A2 ; [CHPUT] + call FUNCION_MEMORY_GET_RAM_BANK_SIZE_VARIABLE ; Numero de paginas del mapper + inc hl ; Estan guardadas + inc hl ; en la pagina 1 + ld b, [hl] + inc hl + ld c, [hl] + call NGN_TEXT_PRINT_INTEGER + + ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] + ld de, $0800 + add hl, de + ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], hl + call NGN_TEXT_POSITION + ld hl, TEXT_RAM_TEST_PAGES ; " PAGES" + call NGN_TEXT_PRINT ; Imprimelo + + exx ; Recupera todos los registros + + + + ; Siguiente offset de slot/subslot + @@NEXT_SUBSLOT: + + ; Salto de linea + ld a, $0D + call $00A2 ; [CHPUT] + ld a, $0A + call $00A2 ; [CHPUT] + ; Reinicia el cabezal de escritura + ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] + ld h, $09 + inc l + ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], hl + + @@SKIP_THIS_SUBSLOT: + ; Calcula el siguiente sub-slot + ld a, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO_OFFSET)] + inc a + ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO_OFFSET)], a + + pop bc ; Recupera los sub-contadores + + ; Si el slot no esta vacio, indicalo y ponlo en la lista + ld a, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_OK)] + or a + jr z, @@EMPTY_SUBSLOT ; Esta vacio, no lo registres + + ld a, [(NGN_RAM_BUFFER + RAM_TEST_TOTAL_OPTIONS)] ; nº de elementos de la lista actualmente + ld d, 0 + ld e, a + ld hl, (NGN_RAM_BUFFER + RAM_TEST_OPTION_LIST) ; Incio de la lista + add hl, de ; Calcula el offset segun el nº de elementos + ld a, [MEMORY_SLOT_ID] ; ID de slot/sub-slot actual + ld [hl], a ; Registrala en la lista + ld a, [(NGN_RAM_BUFFER + RAM_TEST_TOTAL_OPTIONS)] ; Actualiza el contador de elementos de la lista + inc a + ld [(NGN_RAM_BUFFER + RAM_TEST_TOTAL_OPTIONS)], a + + + @@EMPTY_SUBSLOT: + inc c ; Siguiente sub-slot + + dec b + jp nz, @@SUBSLOTS_GUI_LOOP + + pop bc ; Recupera los contadores + + inc c ; Siguiente slot + + dec b + jp nz, @@SLOTS_GUI_LOOP + + ; Sal de la funcion + ret + + + + +;*********************************************************** +; Fin del archivo +;*********************************************************** +MEMORY_REPORTS_EOF: \ No newline at end of file diff --git a/source/prog/memory_routines.asm b/source/prog/memory_routines.asm index 91afb8f..0caf92f 100644 --- a/source/prog/memory_routines.asm +++ b/source/prog/memory_routines.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Rutinas de la gestion de memoria ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -267,7 +267,6 @@ FUNCION_MEMORY_GET_RAM_PAGES012_NO_MAPPER: ; ---------------------------------------------------------- ; Funcion para detectar la RAM ; en todos los slots/sub-slots, sin mapper -; Version LOW-MEM (Ubicacion al inicio del codigo) ; ---------------------------------------------------------- FUNCION_MEMORY_GET_RAM_PAGE3_NO_MAPPER: diff --git a/source/prog/mixed_mode_test.asm b/source/prog/mixed_mode_test.asm index db96fd5..02d9843 100644 --- a/source/prog/mixed_mode_test.asm +++ b/source/prog/mixed_mode_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Test del modo mixto ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/monitor_color_test.asm b/source/prog/monitor_color_test.asm index 66a4e12..d3a4df9 100644 --- a/source/prog/monitor_color_test.asm +++ b/source/prog/monitor_color_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.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 311b681..5b5d8d1 100644 --- a/source/prog/psg_test.asm +++ b/source/prog/psg_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Test PSG ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/ram_test.asm b/source/prog/ram_test.asm deleted file mode 100644 index 27bee3f..0000000 --- a/source/prog/ram_test.asm +++ /dev/null @@ -1,872 +0,0 @@ -;*********************************************************** -; -; MSX DIAGNOSTICS -; Version 1.1.9 -; ASM Z80 MSX -; Test de la memoria RAM -; (cc) 2018-2020 Cesar Rincon "NightFox" -; https://nightfoxandco.com -; -;*********************************************************** - - - - - -; ---------------------------------------------------------- -; Muestra el resumen de la configuracion de la memoria -; RAM instalada -; ---------------------------------------------------------- -FUNCTION_RAM_TEST_LAYOUT_REPORT: - - ; Borra la pantalla - call NGN_TEXT_CLS - - ; Ejecuta la rutina [DISSCR] para deshabilitar la pantalla - call $0041 - - ; ---------------------------------------------------------- - ; Impresion de la informacion: Cabecera - ; ---------------------------------------------------------- - - ; Titulo - ld hl, TEXT_RAM_INFO_HEADER - call NGN_TEXT_PRINT - ld hl, TEXT_DASHED_LINE ; Linea - call NGN_TEXT_PRINT ; Imprimelo - - ; Lista de bancos de RAM - ld hl, $0104 ; Posicion inicial del cuerpo de texto - call NGN_TEXT_POSITION - ld hl, TEXT_RAM_TEST_HEADER ; Titulo - call NGN_TEXT_PRINT ; Imprimelo - ld hl, TEXT_DASHED_LINE ; Linea - call NGN_TEXT_PRINT ; Imprimelo - - ; ---------------------------------------------------------- - ; Obten y muestra la informacion de la memoria RAM - ; (TODOS LOS SLOTS) - ; ---------------------------------------------------------- - ld a, $FF ; Muestra TODA la informacion - ld [(NGN_RAM_BUFFER + RAM_TEST_SHOW_ALL_INFO)], a - ld hl, $0906 ; Posicion inicial - call FUNCTION_RAM_DISPLAY_INFO - ld hl, TEXT_DASHED_LINE ; Linea - call NGN_TEXT_PRINT ; Imprimelo - - ; ---------------------------------------------------------- - ; Impresion de la informacion: Pie de pagina - ; ---------------------------------------------------------- - ld hl, $0118 - call NGN_TEXT_POSITION - ld hl, TEXT_SYSTEM_INFO_EXIT - call NGN_TEXT_PRINT - - ; Ejecuta la rutina [ENASCR] para habilitar la pantalla - call $0044 - - - ; ---------------------------------------------------------- - ; Espera a que se pulse aceptar o cancelar para salir - ; ---------------------------------------------------------- - - @@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 - - ; Si se pulsa la tecla "CANCELAR" - ld a, [SYSKEY_CANCEL] - and $02 ; Detecta "KEY DOWN" - ret nz - - ; Espera a la interrupcion del VDP (VSYNC) - halt - - ; Repite el bucle - jr @@LOOP - - - - - -; ---------------------------------------------------------- -; Menu del test de memoria RAM -; ---------------------------------------------------------- -FUNCTION_RAM_TEST_MENU: - - ; Borra la pantalla - call NGN_TEXT_CLS - - ; Ejecuta la rutina [DISSCR] para deshabilitar la pantalla - call $0041 - - ; ---------------------------------------------------------- - ; Impresion de la informacion: Cabecera - ; ---------------------------------------------------------- - - ; Lista de bancos de RAM - ld hl, $0101 ; Posicion inicial del cuerpo de texto - call NGN_TEXT_POSITION - ld hl, TEXT_RAM_TEST_HEADER ; Titulo - call NGN_TEXT_PRINT ; Imprimelo - ld hl, TEXT_DASHED_LINE ; Linea - call NGN_TEXT_PRINT ; Imprimelo - - - ; ---------------------------------------------------------- - ; Obten y muestra la informacion de la memoria RAM - ; (solo los slots disponibles) - ; ---------------------------------------------------------- - xor a ; Muestra solo la informacion presente - ld [(NGN_RAM_BUFFER + RAM_TEST_SHOW_ALL_INFO)], a - ld hl, $0903 ; Posicion incial - call FUNCTION_RAM_DISPLAY_INFO - - - ; ---------------------------------------------------------- - ; Impresion de la informacion: Pie de pagina - ; ---------------------------------------------------------- - ld hl, $0116 ; Posicion inicial del cuerpo de texto - call NGN_TEXT_POSITION - ld hl, TEXT_DASHED_LINE ; Linea - call NGN_TEXT_PRINT ; Imprimelo - ld hl, TEXT_RAM_TEST_HELP ; Instrucciones de ayuda - call NGN_TEXT_PRINT ; Imprimelo - - - ld hl, $0103 ; Posicion inicial del cuerpo de texto - call NGN_TEXT_POSITION - ld a, $C0 - call $00A2 ; [CHPUT] - - - ; Ejecuta la rutina [ENASCR] para habilitar la pantalla - call $0044 - - ; Prepara los datos del menu - xor a - ld [(NGN_RAM_BUFFER + RAM_TEST_FIRST_OPTION)], a ; Primera opcion del menu - ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], a ; Opcion actual del seleccionada - ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR + 1)], a ; Ultima opcion seleccionada - ld a, [(NGN_RAM_BUFFER + RAM_TEST_TOTAL_OPTIONS)] - dec a - ld [(NGN_RAM_BUFFER + RAM_TEST_LAST_OPTION)], a ; Ultima opcion del menu - - - - ; ---------------------------------------------------------- - ; Menu de seleccion - ; ---------------------------------------------------------- - - ; Bucle de ejecucion - @@LOOP: - - ; Lectura del HID - call FUNCTION_SYSTEM_HID_READ - - - ; Si se pulsa la tecla "CANCELAR" - ld a, [SYSKEY_CANCEL] - and $02 ; Detecta "KEY DOWN" - ret nz ; Vuelve al menu principal - - - ; Si se pulsa arriba - ld a, [SYSKEY_UP] - and $02 ; Detecta "KEY DOWN" - jr z, @@M_DOWN ; Si no se cumple, siguiente - - ld a, [(NGN_RAM_BUFFER + RAM_TEST_FIRST_OPTION)] ; Carga la primera opcion - ld b, a - ld a, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] ; Carga la opcion actual - cp b ; Si ya estas en el limite, continua - jr z, @@M_END - dec a ; Resta una opcion - ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], a ; Guarda la seleccion - jr @@M_UPDATE - - - ; Si se pulsa abajo - @@M_DOWN: - ld a, [SYSKEY_DOWN] - and $02 ; Detecta "KEY DOWN" - jr z, @@M_ACCEPT ; Si no se cumple, siguiente - - ld a, [(NGN_RAM_BUFFER + RAM_TEST_LAST_OPTION)] ; Carga la primera opcion - ld b, a - ld a, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] ; Carga la opcion actual - cp b ; Si ya estas en el limite, continua - jr z, @@M_END - inc a ; Resta una opcion - ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], a ; Guarda la seleccion - - - ; Actualiza el cursor si es necesario - @@M_UPDATE: - ld h, 1 ; Borra la el cursor actual - ld a, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR + 1)] - add 3 ; Correccion de posicion - ld l, a - call NGN_TEXT_POSITION - ld a, $20 - call $00A2 ; [CHPUT] - - ld h, 1 ; Escribe el cursor en la posicion nueva - ld a, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] - ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR + 1)], a - add 3 ; Correccion de posicion - ld l, a - call NGN_TEXT_POSITION - ld a, $C0 - call $00A2 ; [CHPUT] - jr @@M_END - - - ; Fin de las rutinas del menu, aceptacion de la opcion - @@M_ACCEPT: - ld a, [SYSKEY_ACCEPT] - and $02 ; Detecta "KEY DOWN" - jr z, @@M_END ; Salta si no se pulsa - - ; Opcion aceptada, guarda el slot/sub-slot a analizar - ld hl, (NGN_RAM_BUFFER + RAM_TEST_OPTION_LIST) - ld d, 0 - ld a, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] - ld e, a - add hl, de - ld a, [hl] - ld [MEMORY_SLOT_ID], a - ; Ejecuta el test de RAM - jp FUNCTION_RAM_TEST_RUN - - - ; Fin del menu - @@M_END: - ; Espera a la interrupcion del VDP (VSYNC) - halt - - ; Repite el bucle - jr @@LOOP - - - -; ---------------------------------------------------------- -; Muestra y registra la informacion de la memoria RAM -; HL = Posicion inicial -; ---------------------------------------------------------- -FUNCTION_RAM_DISPLAY_INFO: - - ; ---------------------------------------------------------- - ; Impresion de la informacion: Parrilla de datos - ; ---------------------------------------------------------- - - ; Posicion inicial del cursor - ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], hl - - ; Prepara la cadena de texto - ld hl, TEXT_RAM_TEST_SLOT_ID - ld de, (NGN_RAM_BUFFER + RAM_TEST_TEMP_STRING) - ld bc, $0007 - ldir - - ; Conteo de offset para la seleccion de slot/subslot - xor a - ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO_OFFSET)], a - ; Total de slots - ld [(NGN_RAM_BUFFER + RAM_TEST_TOTAL_OPTIONS)], a - - ; Bucle de impresion de slots - ld bc, $0400 ; 4 Slots - @@SLOTS_GUI_LOOP: - - push bc ; Preserva los contadores - ld a, c ; Numero actual de slot - ld [MEMORY_CURRENT_SLOT], a - - ; Caracter para el numero de slot - ld hl, (NGN_RAM_BUFFER + RAM_TEST_TEMP_STRING + 2) - ld a, c - add $30 - ld [hl], a - - ; Bucle de los sub-slots - ld bc, $0400 ; 4 sub-slots - @@SUBSLOTS_GUI_LOOP: - - push bc ; Preserva los sub-contadores - - ; Lee el slot y guardalo en E - ld a, [MEMORY_CURRENT_SLOT] - ld e, a - ; Lee el sub-slot - ld a, c - ld [MEMORY_CURRENT_SUBSLOT], a ; Guarda el sub-slot en curso - ; Define el slot y subslot - sla a ; << 2 - sla a ; Coloca el nº de sub-slot en los bits 2 y 3 - or e ; Numero de slot - ld [MEMORY_SLOT_ID], a - ; Esta expandido? - ld hl, MEMORY_SLOT_EXPANDED ; Variable de informacio de expansiones - ld d, $00 ; Prepara el offset sobre la variable - ld a, [MEMORY_CURRENT_SLOT] ; Segun el slot - ld e, a - add hl, de ; Aplica el offset - ld a, [hl] ; Lee el valor - or a ; Si es cero, no pongas el flag - jr z, @@SLOT_ID_DONE - ld a, [MEMORY_SLOT_ID] ; Si esta expandido, marcalo - set 7, a - ld [MEMORY_SLOT_ID], a - - @@SLOT_ID_DONE: - ; Resetea el flag de slot con contenido - xor a - ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_OK)], a - - exx ; Preserva los registros actuales - ld a, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO_OFFSET)] ; Carga el offset actual - ld e, a ; en DE - ld d, 0 - ld hl, RAM_SLOT_0 ; Selecciona la variable de INFO de slots - add hl, de ; Aplica el offset - ld a, [hl] ; Carga la info - ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO)], a - exx ; Restaura los registros - - ; Este sub-slot, esta vacio? - ; Y no se ha marcado que se fuerce mostrarlo - ld a, [(NGN_RAM_BUFFER + RAM_TEST_SHOW_ALL_INFO)] - ld e, a - ld a, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO)] - or a - or e - jp z, @@SKIP_THIS_SUBSLOT - - ; No esta vacio, indicalo - ld a, $FF - ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_OK)], a - - ; Caracter para el numero de sub-slot (C) - ld hl, (NGN_RAM_BUFFER + RAM_TEST_TEMP_STRING + 4) - ld a, c - add $30 - ld [hl], a - - ld hl, (NGN_RAM_BUFFER + RAM_TEST_TEMP_STRING) ; Ubicacion del texto - call NGN_TEXT_PRINT ; Imprimelo - - ; Bucle para el contador de paginas - ld bc, $0400 - @@PAGE_GUI_LOOP: - - push bc ; Preserva el contador - - ld a, c ; Registra el numero de pagina - ld [MEMORY_CURRENT_PAGE], a - - ; Posiciona el texto - ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] - call NGN_TEXT_POSITION - - ; Imprime la cantidad de Kb en esta pagina - call FUNCION_MEMORY_GET_RAM_BANK_SIZE_VARIABLE ; Variable guardada en HL - ld b, [hl] - inc hl - ld c, [hl] - ; Esta a 0? - ld a, b - or c - jr z, @@NO_PRINT_ZERO - call NGN_TEXT_PRINT_INTEGER ; Imprimela - ; KB - ld a, $4B - call $00A2 ; [CHPUT] - ld a, $42 - call $00A2 ; [CHPUT] - jr @@NEXT_COLUMN - - ; No Imprimas ceros - @@NO_PRINT_ZERO: - push bc ; Preserva BC durante este bucle - ld b, 6 - @@NO_ZERO_LOOP: - ld a, $C3 - call $00A2 ; [CHPUT] - djnz @@NO_ZERO_LOOP - pop bc ; Recupera BC - - ; Actualiza el contador de este bucle - @@NEXT_COLUMN: - pop bc ; Recupera el contador - inc c ; Siguiente pagina - - ; Mueve el cabezal de escritura - ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] - ld de, $0800 - add hl, de - ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], hl - - ; Detecta si es memoria mapeada - ld a, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO)] - bit 7, a ; Si es un MAPPER, indicalo y sal - jr nz, @@ITS_A_MAPPER - - ; Repite - dec b - jp nz, @@PAGE_GUI_LOOP - jr @@NEXT_SUBSLOT - - - @@ITS_A_MAPPER: - exx ; Backup de todos los registros - - ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] - call NGN_TEXT_POSITION - ld hl, TEXT_RAM_TEST_MAPPED ; "MAPPED" - call NGN_TEXT_PRINT ; Imprimelo - - ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] - ld de, $0800 - add hl, de - ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], hl - call NGN_TEXT_POSITION - ld a, $49 - call $00A2 ; [CHPUT] - ld a, $4E - call $00A2 ; [CHPUT] - ld a, $20 - call $00A2 ; [CHPUT] - call FUNCION_MEMORY_GET_RAM_BANK_SIZE_VARIABLE ; Numero de paginas del mapper - inc hl ; Estan guardadas - inc hl ; en la pagina 1 - ld b, [hl] - inc hl - ld c, [hl] - call NGN_TEXT_PRINT_INTEGER - - ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] - ld de, $0800 - add hl, de - ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], hl - call NGN_TEXT_POSITION - ld hl, TEXT_RAM_TEST_PAGES ; " PAGES" - call NGN_TEXT_PRINT ; Imprimelo - - exx ; Recupera todos los registros - - - - ; Siguiente offset de slot/subslot - @@NEXT_SUBSLOT: - - ; Salto de linea - ld a, $0D - call $00A2 ; [CHPUT] - ld a, $0A - call $00A2 ; [CHPUT] - ; Reinicia el cabezal de escritura - ld hl, [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)] - ld h, $09 - inc l - ld [(NGN_RAM_BUFFER + RAM_TEST_TEMP_CURSOR)], hl - - @@SKIP_THIS_SUBSLOT: - ; Calcula el siguiente sub-slot - ld a, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO_OFFSET)] - inc a - ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_INFO_OFFSET)], a - - pop bc ; Recupera los sub-contadores - - ; Si el slot no esta vacio, indicalo y ponlo en la lista - ld a, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_OK)] - or a - jr z, @@EMPTY_SUBSLOT ; Esta vacio, no lo registres - - ld a, [(NGN_RAM_BUFFER + RAM_TEST_TOTAL_OPTIONS)] ; nº de elementos de la lista actualmente - ld d, 0 - ld e, a - ld hl, (NGN_RAM_BUFFER + RAM_TEST_OPTION_LIST) ; Incio de la lista - add hl, de ; Calcula el offset segun el nº de elementos - ld a, [MEMORY_SLOT_ID] ; ID de slot/sub-slot actual - ld [hl], a ; Registrala en la lista - ld a, [(NGN_RAM_BUFFER + RAM_TEST_TOTAL_OPTIONS)] ; Actualiza el contador de elementos de la lista - inc a - ld [(NGN_RAM_BUFFER + RAM_TEST_TOTAL_OPTIONS)], a - - - @@EMPTY_SUBSLOT: - inc c ; Siguiente sub-slot - - dec b - jp nz, @@SUBSLOTS_GUI_LOOP - - pop bc ; Recupera los contadores - - inc c ; Siguiente slot - - dec b - jp nz, @@SLOTS_GUI_LOOP - - ; Sal de la funcion - ret - - - -; ---------------------------------------------------------- -; Ejecuta test de memoria RAM -; ---------------------------------------------------------- -FUNCTION_RAM_TEST_RUN: - - ; Guarda el slot seleccionado y el sub-slot - ld a, [MEMORY_SLOT_ID] ; Lee la ID de slot - and $03 ; Bitmask para el slot - ld [MEMORY_CURRENT_SLOT], a ; Guardalo - ld a, [MEMORY_SLOT_ID] ; Lee la ID de slot - srl a ; >> 2 - srl a ; Para el sub-slot - and $03 ; Bitmask para el sub-slot - ld [MEMORY_CURRENT_SUBSLOT], a ; Guardalo - - - ; Borra la pantalla - call NGN_TEXT_CLS - - ; Informa del slot que se va a probar - call FUNCTION_RAM_PRINT_SLOT_INFO - - - ; Busca que bancos has de analizar - call FUNCION_MEMORY_GET_CURRENT_SLOT_VARIABLE - ld a, [hl] ; Lee la informacion del slot - ld [MEMORY_CURRENT_LAYOUT], a ; Y guardala - - ; Pasa a buscar en que paginas se realizara el test - xor a - ld [(NGN_RAM_BUFFER + RAM_TEST_PAGES_TO_TEST)], a ; Contador de paginas a 0 - - ; Es un mapper? - ld a, [MEMORY_CURRENT_LAYOUT] - bit 7, a - jr z, @@IS_PAGED_MEMORY - ; Si en un mapper - ld a, 1 - ld [(NGN_RAM_BUFFER + RAM_TEST_PAGES_TO_TEST)], a ; Solo tendra una pagina - ld a, $F0 ; [MAPPED?][PAGE Nº] - ld [(NGN_RAM_BUFFER + RAM_TEST_PAGES_LIST)], a ; Indica que es un mapper y la pagina de analisis - jp FUNCTION_RAM_MAPPED_TEST ; Ejecuta el test para memoria mapeada - - - @@IS_PAGED_MEMORY: - - jp FUNCTION_RAM_PAGED_TEST ; Ejecuta el test para memoria paginada - - - -; ---------------------------------------------------------- -; Imprime la informacion del slot -; ---------------------------------------------------------- - -FUNCTION_RAM_PRINT_SLOT_INFO: - - ; Informa del slot que se va a probar - ld hl, TEXT_RAM_TEST_TESTING_SLOT - call NGN_TEXT_PRINT - ld b, 0 - ld a, [MEMORY_CURRENT_SLOT] - ld c, a - call NGN_TEXT_PRINT_INTEGER - ld a, $2D - call $00A2 ; [CHPUT] - ld b, 0 - ld a, [MEMORY_CURRENT_SUBSLOT] - ld c, a - call NGN_TEXT_PRINT_INTEGER - ld hl, TEXT_NEW_LINE - call NGN_TEXT_PRINT - - ; Sal de la rutina - ret - - - -; ---------------------------------------------------------- -; Espera a que se pulse aceptar o cancelar para -; volver al menu -; ---------------------------------------------------------- - -FUNCTION_RAM_GOTO_MENU: - - ; Lectura del HID - call FUNCTION_SYSTEM_HID_READ - - ; Si se pulsa la tecla "ACEPTAR" - ld a, [SYSKEY_ACCEPT] - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_RAM_TEST_MENU ; Vuelve al menu - - ; Si se pulsa la tecla "CANCELAR" - @@M_CANCEL: - ld a, [SYSKEY_CANCEL] - and $02 ; Detecta "KEY DOWN" - jp nz, FUNCTION_RAM_TEST_MENU ; Vuelve al menu - - ; Espera a la interrupcion del VDP (VSYNC) - halt - - ; Repite el bucle - jr FUNCTION_RAM_GOTO_MENU - - - -; ---------------------------------------------------------- -; Test de memoria mapeada -; ---------------------------------------------------------- -FUNCTION_RAM_MAPPED_TEST: - - ; Prepara la informacion para el test de mapper - xor a - ld [MEMORY_CURRENT_PAGE], a ; Selecciona la pagina 0 - - ; Caracteristicas del mapper (tamaño total y paginas) - call FUNCION_MEMORY_GET_RAM_BANK_SIZE_VARIABLE ; Devuelve en HL la direccion de la informacion - ld de, (NGN_RAM_BUFFER + RAM_TEST_MAPPED_TOTAL_KB) ; Destino de la informacion - ld bc, $0004 ; Copia 4 bytes - ldir - - ; Imprime el resumen - ld hl, (NGN_RAM_BUFFER + RAM_TEST_MAPPED_TOTAL_KB) ; Total de KB - ld b, [hl] - inc hl - ld c, [hl] - call NGN_TEXT_PRINT_INTEGER ; Imprimelos - ld hl, TEXT_SYSTEM_INFO_KB ; Junto a los textos adicionales - call NGN_TEXT_PRINT - ld hl, TEXT_RAM_TEST_IN - call NGN_TEXT_PRINT - ld hl, (NGN_RAM_BUFFER + RAM_TEST_MAPPED_TOTAL_PAGES) ; Numero total de paginas - ld b, [hl] - inc hl - ld c, [hl] - push bc ; ; Guarda en BC el numero de paginas totales - call NGN_TEXT_PRINT_INTEGER ; Imprimelas - ld a, $20 ; Junto a los textos adicionales - call $00A2 ; [CHPUT] - ld hl, TEXT_RAM_TEST_PAGES - call NGN_TEXT_PRINT - ; Salto de linea - ld hl, TEXT_NEW_LINE - call NGN_TEXT_PRINT - ; Salto de linea - ld hl, TEXT_NEW_LINE - call NGN_TEXT_PRINT - - - ; Datos iniciales - ld hl, $0000 - ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_ERRORS)], hl ; Numero de errores encontrados - - ; Bucle de ejecucion - pop bc ; Recupera el numero de paginas a examinar - ld a, $00 ; Nº de pagina a examinar - ld [(NGN_RAM_BUFFER + RAM_TEST_MAPPED_CURRENT_PAGE)], a - @@PAGES_LOOP: - - push bc ; Preserva el contador del bucle - - call @@TEST_PAGE ; Test de esa pagina - - ; Salto de linea - ld hl, TEXT_NEW_LINE - call NGN_TEXT_PRINT - - ; Suma 1 al contador de paginas - ld a, [(NGN_RAM_BUFFER + RAM_TEST_MAPPED_CURRENT_PAGE)] - inc a - ld [(NGN_RAM_BUFFER + RAM_TEST_MAPPED_CURRENT_PAGE)], a - ; Contador del bucle - pop bc ; Recupera el contador del bucle - dec bc - ld a, b - or c - jr nz, @@PAGES_LOOP ; Repite si aun quedan paginas - - - ; Test completado - call FUNCTION_RAM_PRINT_SLOT_INFO - ld hl, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_ERRORS)] - ld b, h - ld c, l - call NGN_TEXT_PRINT_INTEGER - ld hl, TEXT_RAM_TEST_ERRORS - call NGN_TEXT_PRINT - - ld hl, TEXT_NEW_LINE - call NGN_TEXT_PRINT - ld hl, TEXT_NEW_LINE - call NGN_TEXT_PRINT - ld hl, TEXT_SYSTEM_INFO_EXIT - call NGN_TEXT_PRINT - - ; Vuelve al menu - jp FUNCTION_RAM_GOTO_MENU - - - - ; ---------------------------------------------------------- - ; Examina la pagina seleccionada - ; ---------------------------------------------------------- - @@TEST_PAGE: - - ; Imprime el numero de pagina que se examina - ld hl, TEXT_RAM_TEST_PAGE - call NGN_TEXT_PRINT - ld a, [(NGN_RAM_BUFFER + RAM_TEST_MAPPED_CURRENT_PAGE)] - ld b, 0 - ld c, a - call NGN_TEXT_PRINT_INTEGER - ld a, $20 - call $00A2 ; [CHPUT] - - ; Escaneo de la pagina en busca de fallos - ld hl, $0000 ; Reset del contador de errores - ld [(NGN_RAM_BUFFER + RAM_TEST_PAGE_ERRORS)], hl - ld hl, RAM_TEST_MAPPER_ADDRESS ; Direccion inicial del escaneo - ld [MEMORY_PAGE_ADDR], hl - ld b, $80 ; 128 bloques - @@BLOCK_LOOP: - - exx ; Selecciona los registros sombreados - ld e, $FF ; Reset de error en E' - exx ; Selecciona los registros normales - - push bc ; Preserva el registro del contador BLOCK - - ld b, $80 ; 128 bytes por bloque - @@BYTES_LOOP: - - push bc ; Preserva el registro del contador de bytes - - ; Parametros del test - ld hl, [MEMORY_PAGE_ADDR] ; Direccion HL - ld de, [(NGN_RAM_BUFFER + RAM_TEST_PAGE_ERRORS)] ; Errores DE - ld a, [(NGN_RAM_BUFFER + RAM_TEST_MAPPED_CURRENT_PAGE)] - ld c, a ; Segmento actual C - ld a, [MEMORY_SLOT_ID] - ld b, a ; SLot ID? B - - ; FUNCTION_RAM_BYTE_TEST - ; HL = Direccion - ; DE = nº de errores encontrados - ; C = nº de segmento actual - ; B = ID de slot a analizar - ; E' = Error encontrado - ; Modifica AF, BC, DE, HL, AF', E' - ;call (NGN_RAM_BUFFER + RAM_TEST_BYTE_ROUTINE_ADDR) - ;call FUNCTION_RAM_BYTE_TEST - - ; Actualiza el registro de errores - ld [(NGN_RAM_BUFFER + RAM_TEST_PAGE_ERRORS)], de - - - ; Siguiente direccion - inc hl - ld [MEMORY_PAGE_ADDR], hl - - pop bc ; Recupera el registro del contador de bytes - dec b - jp nz, @@BYTES_LOOP - - - - ; Imprime el testigo de actividad cada 128 bytes de analisis - exx ; Selecciona los registros sombreados - ld a, e ; Lee el estado de E - exx ; Selecciona los registros normales - cp $FF - jp z, @@BYTE_CORRECT - - ld a, $CF ; Error en el byte - jr @@PRINT_BYTE_RESULT - - @@BYTE_CORRECT: - ld a, $C2 ; Byte correcto - - @@PRINT_BYTE_RESULT: ; Imprime el resultado - call $00A2 ; [CHPUT] - - pop bc ; Recupera el registro del contador BLOCK - dec b - jp nz, @@BLOCK_LOOP - - - ; ---------------------------------------------------------- - ; Resumen la pagina seleccionada - ; ---------------------------------------------------------- - ld a, $20 - call $00A2 ; [CHPUT] - - ld hl, [(NGN_RAM_BUFFER + RAM_TEST_PAGE_ERRORS)] ; Errores de este segmento - ld b, h - ld c, l - - ex de, hl ; Guarda en DE los errores - - ld hl, [(NGN_RAM_BUFFER + RAM_TEST_SLOT_ERRORS)] ; Sumalos al contador general de errores - add hl, de - ld [(NGN_RAM_BUFFER + RAM_TEST_SLOT_ERRORS)], hl ; Y guardalos - - call NGN_TEXT_PRINT_INTEGER ; Imprime los errores de esta pagina - ld hl, TEXT_RAM_TEST_ERRORS - call NGN_TEXT_PRINT - - ; Salto de linea - ld hl, TEXT_NEW_LINE - call NGN_TEXT_PRINT - - ; Vuelve al terminar - ret - - - -; ---------------------------------------------------------- -; Test de memoria paginada -; ---------------------------------------------------------- -FUNCTION_RAM_PAGED_TEST: - - ; Vuelve al menu - jp FUNCTION_RAM_GOTO_MENU - - - - - -; ---------------------------------------------------------- -; Test del byte seleccionado -; HL = Direccion -; DE = nº de errores encontrados -; C = nº de segmento actual -; B = ID de slot a analizar -; E' = Error encontrado -; Modifica AF, BC, DE, HL, AF', E' -; ---------------------------------------------------------- -FUNCTION_RAM_BYTE_TEST: - - ; Vuelve de la subrutina - ret - - - - - -;*********************************************************** -; Fin del archivo -;*********************************************************** -RAM_TEST_EOF: \ No newline at end of file diff --git a/source/prog/screen0_test.asm b/source/prog/screen0_test.asm index f37cd97..5ee9fef 100644 --- a/source/prog/screen0_test.asm +++ b/source/prog/screen0_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.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 568cb8b..983a2fe 100644 --- a/source/prog/screen1_test.asm +++ b/source/prog/screen1_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.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 08a42ec..a9a7b25 100644 --- a/source/prog/screen2_test.asm +++ b/source/prog/screen2_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.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 158a80f..1e69913 100644 --- a/source/prog/screen3_test.asm +++ b/source/prog/screen3_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.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 da9ae09..34dbf7c 100644 --- a/source/prog/sfx.asm +++ b/source/prog/sfx.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; 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 d52e753..fc06344 100644 --- a/source/prog/sprites_test.asm +++ b/source/prog/sprites_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Test de los Sprites (MODO SCREEN 2) ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/system.asm b/source/prog/system.asm index 40907f0..6c0402f 100644 --- a/source/prog/system.asm +++ b/source/prog/system.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.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 411f6d4..f174898 100644 --- a/source/prog/system_info.asm +++ b/source/prog/system_info.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Informacion del sistema ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/vars.asm b/source/prog/vars.asm index 214b54d..6155833 100644 --- a/source/prog/vars.asm +++ b/source/prog/vars.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Declaracion de variables ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -14,11 +14,12 @@ ; -------------------------------------------------------------- ; Declara las variables del sistema [VARIABLE] [BYTES] -; TOTAL 26 bytes +; TOTAL 172 bytes ; -------------------------------------------------------------- ; -------------------------------------------------------------- ; Variables de control +; Total 1 byte ; -------------------------------------------------------------- FORCE_SET_SCREEN_0: ds 1 ; Fuerza poner la pantalla en modo 0 @@ -41,7 +42,7 @@ VDP_HZ: ds 1 ; Frecuencia de refresco del VDP ; ---------------------------------------------------------- ; Rutinas de gestion de memoria -; Total: 158 bytes +; Total: 157 bytes ; ---------------------------------------------------------- RAM_DETECTED: ds 3 ; RAM detectada (Formato BCD de 3 bytes [000000]) @@ -70,7 +71,6 @@ RAM_BANK_SIZE: ds 128 ; RAM de la pagina en KB MEMORY_CURRENT_SLOT: ds 1 ; Numero de slot actual MEMORY_CURRENT_SUBSLOT: ds 1 ; Numero actual de subslot MEMORY_CURRENT_PAGE: ds 1 ; Numero actual de pagina -MEMORY_CURRENT_LAYOUT: ds 1 ; Configuracion de RAM actual del slot (RAM_SLOT_N) MEMORY_PAGE_ADDR: ds 2 ; Direccion de memoria de la pagina MEMORY_SLOT_ID: ds 1 ; ID de slot en formato (ExxxSSPP) @@ -79,7 +79,7 @@ MEMORY_SLOT_ID: ds 1 ; ID de slot en formato (ExxxSSPP) ; bit 4-6 = Unused ; bit 7 = 1 if Slot is Expanded -@@asMSX_BUG: + ; ----------------------------------------------------------------------- ; Teclas diff --git a/source/prog/vdp_routines.asm b/source/prog/vdp_routines.asm index 0269271..3457089 100644 --- a/source/prog/vdp_routines.asm +++ b/source/prog/vdp_routines.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Rutinas del VDP ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/welcome.asm b/source/prog/welcome.asm index 8357215..3009a94 100644 --- a/source/prog/welcome.asm +++ b/source/prog/welcome.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.9 +; Version 1.2.0 ; ASM Z80 MSX ; Archivo principal ; (cc) 2018-2020 Cesar Rincon "NightFox"