From df1c10f80bce6b389d5c5adf4ce0c9c81036eb66 Mon Sep 17 00:00:00 2001 From: Cesar Rincon Nadal Date: Thu, 30 Apr 2020 21:47:03 +0200 Subject: [PATCH] Ver. 1.1.8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2020-04-30 Ver. 1.1.8 -------------------------------------------------------------------------------- - Rescrita parte de la rutina de detección de memoria en la página 3. - La rutina de detección de memoria ahora también detecta los mappers, tanto internos como externos, indicándolo en la pantalla de información del sistema. Se diferencia la memoria normal de la mapeada con el icono correspondiente. 2020-04-27 Ver. 1.1.7 -------------------------------------------------------------------------------- - Añadido el test para que podamos verificar si nuestra VDP dispone y es compatible con el modo mixto (texto + gráficos) no documentado por Texas Instruments. (Gracias a Mortimer por su ayuda en la realización de este test). - Corregido el bug que causaba que no se muestren los caracteres correctos en el menú al volver desde el test de SCREEN 0. - Rediseñada la pantalla del título, lo que ha permitido una mejor compresión RLE, ahorrando 769 bytes (un 25% menos de tamaño). --- README.md | 1 - docs/changelog.txt | 9 + docs/readme.txt | 1 - source/data/bin/misc.asm | 2 +- source/data/txt/key_names.asm | 2 +- source/data/txt/text.asm | 6 +- source/formats/f_binary.asm | 2 +- source/formats/f_cas.asm | 2 +- source/formats/f_com.asm | 2 +- source/formats/f_rom.asm | 3 +- source/msxdiag.asm | 14 +- source/ngn/ngn_math.asm | 32 ++- source/prog/consts.asm | 26 +- source/prog/joystick_test.asm | 2 +- source/prog/keyboard_test.asm | 2 +- source/prog/main.asm | 2 +- source/prog/main_menu_common.asm | 2 +- source/prog/main_menu_p1.asm | 2 +- source/prog/main_menu_p2.asm | 2 +- source/prog/memory_routines.asm | 432 +++++++++++++++++++++++++---- source/prog/mixed_mode_test.asm | 2 +- source/prog/monitor_color_test.asm | 2 +- source/prog/psg_test.asm | 2 +- 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 | 42 ++- source/prog/vars.asm | 15 +- source/prog/vdp_routines.asm | 2 +- source/prog/welcome.asm | 2 +- 34 files changed, 506 insertions(+), 121 deletions(-) diff --git a/README.md b/README.md index 6cd1ed3..aa61952 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,6 @@ La versión actual del programa está provista de las siguientes funcionalidades - SYSTEM INFO Muestra un resumen de las características técnicas de nuestro equipo. - * Versión preliminar, faltan algunos datos. - MONITOR COLOR Muestra en pantalla cada uno de los colores básicos (rojo, verde, azul), diff --git a/docs/changelog.txt b/docs/changelog.txt index 8236f7c..fecf090 100644 --- a/docs/changelog.txt +++ b/docs/changelog.txt @@ -2,6 +2,15 @@ MSX Diagnostics Changelog -------------------------------------------------------------------------------- +2020-04-30 Ver. 1.1.8 +-------------------------------------------------------------------------------- +- Rescrita parte de la rutina de detección de memoria en la página 3. +- La rutina de detección de memoria ahora también detecta los mappers, + tanto internos como externos, indicándolo en la pantalla de información + del sistema. Se diferencia la memoria normal de la mapeada con el icono + correspondiente. + + 2020-04-27 Ver. 1.1.7 -------------------------------------------------------------------------------- - Añadido el test para que podamos verificar si nuestra VDP dispone y es diff --git a/docs/readme.txt b/docs/readme.txt index 3fcf8ac..9403d22 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -69,7 +69,6 @@ La versión actual del programa está provista de las siguientes funcionalidades 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. - * Versión preliminar, faltan algunos datos. - MONITOR COLOR Muestra en pantalla cada uno de los colores básicos (rojo, verde, azul), diff --git a/source/data/bin/misc.asm b/source/data/bin/misc.asm index c8a57f5..535444b 100644 --- a/source/data/bin/misc.asm +++ b/source/data/bin/misc.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 eb7d8e4..6a548c6 100644 --- a/source/data/txt/key_names.asm +++ b/source/data/txt/key_names.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 4f425d2..c33bd82 100644 --- a/source/data/txt/text.asm +++ b/source/data/txt/text.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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.7", $0D, $0A, $00 + db " MSX DIAGNOSTICS v1.1.8", $0D, $0A, $00 @@ -72,7 +72,7 @@ TEXT_MAIN_MENU_P1_ITEMS: db " 6. KEYBOARD", $0D, $0A db " 7. JOYSTICK", $0D, $0A db " 8. PSG", $0D, $0A - db " 9. SYSTEM INFO ",$CF, $0D, $0A + db " 9. SYSTEM INFO ", $0D, $0A db " 0. NEXT >>", $0D, $0A db $00 diff --git a/source/formats/f_binary.asm b/source/formats/f_binary.asm index b7946f0..615844e 100644 --- a/source/formats/f_binary.asm +++ b/source/formats/f_binary.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Directivas de compilacion para BINARIO de 32kb ; diff --git a/source/formats/f_cas.asm b/source/formats/f_cas.asm index 53448db..96600ad 100644 --- a/source/formats/f_cas.asm +++ b/source/formats/f_cas.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Directivas de compilacion para BINARIO de 32kb ; Genera un archivo .CAS y .WAV diff --git a/source/formats/f_com.asm b/source/formats/f_com.asm index f76347a..abefde1 100644 --- a/source/formats/f_com.asm +++ b/source/formats/f_com.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Directivas de compilacion para .COM de MSX-DOS ; diff --git a/source/formats/f_rom.asm b/source/formats/f_rom.asm index 69ac0ac..b6a8cc9 100644 --- a/source/formats/f_rom.asm +++ b/source/formats/f_rom.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Directivas de compilacion para ROM de 32kb ; @@ -40,6 +40,7 @@ OUTPUT_FORMAT = 2 ; Define el formato de salida .PAGE 1 ; Selecciona la pagina 1 [$4000] (Codigo del programa) .ROM ; Se creara el binario en formato ROM de hasta 32kb +.SIZE 32 .db 77, 83, 88, 95, 68, 73, 65, 71, 0, 0, 0, 0 ; 12 digitos para completar la cabecera de la ROM ; Indicale al compilador donde empieza el programa diff --git a/source/msxdiag.asm b/source/msxdiag.asm index 07f0f81..459ca43 100644 --- a/source/msxdiag.asm +++ b/source/msxdiag.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -85,6 +85,11 @@ PROGRAM_START_ADDRESS: ; Archivo principal .INCLUDE "prog/main.asm" + ; Procesos de sistema + .INCLUDE "prog/system.asm" + .INCLUDE "prog/memory_routines.asm" + .INCLUDE "prog/vdp_routines.asm" + ; Pantalla de bienvenida .INCLUDE "prog/welcome.asm" ; Menu principal @@ -115,12 +120,9 @@ PROGRAM_START_ADDRESS: .INCLUDE "prog/mixed_mode_test.asm" ; Procesos comunes - .INCLUDE "prog/system.asm" - .INCLUDE "prog/memory_routines.asm" - .INCLUDE "prog/vdp_routines.asm" .INCLUDE "prog/sfx.asm" - - + + ; ---------------------------------------------------------- ; Libreria N'gine diff --git a/source/ngn/ngn_math.asm b/source/ngn/ngn_math.asm index efa2c94..2a7e8a9 100644 --- a/source/ngn/ngn_math.asm +++ b/source/ngn/ngn_math.asm @@ -28,8 +28,8 @@ NGN_BCD_ADD: or a ; Resetea el flag @@BCD_ADD_LOOP: - ld a, [de] ; Carga en a el valor del byte del sumando - adc [hl] ; Sumale el valor del byte valor base + ld a, [de] ; Lee el valor base + adc [hl] ; Sumale el valor daa ; Corrige el formato a BCD ld [de], a ; Guarda el valor actualizado inc de ; Siguiente byte en ambos operadores @@ -40,6 +40,34 @@ NGN_BCD_ADD: +; ---------------------------------------------------------- +; NGN_BCD_SUB +; DE = Direccion de memoria con el numero base +; y almacena el resultado +; HL = Direccion de memoria con el substranedo (numero que restamos) +; Numeros en formato BCD de 3 bytes (0 - 99999) +; Modifica AF, BC, DE, HL +; Info: https://www.chibiakumas.com/z80/advanced.php +; ---------------------------------------------------------- + +NGN_BCD_SUB: + + ld b, 3 ; Resta BCD de 3 bytes + or a ; Resetea el flag + + @@BCD_SUB_LOOP: + ld a, [de] ; Lee el valor base + sbc [hl] ; Restale el valor + daa ; Corrige el formato a BCD + ld [de], a ; Guarda el valor actualizado + inc de ; Siguiente byte en ambos operadores + inc hl + djnz @@BCD_SUB_LOOP + + ret ; Vuelve de la funcion + + + ;*********************************************************** ; Fin del archivo ;*********************************************************** diff --git a/source/prog/consts.asm b/source/prog/consts.asm index 7216b67..aa6785d 100644 --- a/source/prog/consts.asm +++ b/source/prog/consts.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Definicion de constantes ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -25,16 +25,28 @@ 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_PAGE_ADDR .EQU $80 ; Direccion de memoria de la pagina 2 bytes +MEMORY_PAGE_ADDR .EQU $40 ; Direccion de memoria de la pagina 2 bytes -MEMORY_SLOT_ID .EQU $82 ; ID de slot en formato (ExxxSSPP) 1 byte - ; bit 0-1 = Primary slot number - ; bit 2-3 = Sub-slot number (optional) - ; bit 4-6 = Unused - ; bit 7 = 1 if Slot is Expanded +MEMORY_SLOT_ID .EQU $42 ; ID de slot en formato (ExxxSSPP) 1 byte + ; bit 0-1 = Primary slot number + ; bit 2-3 = Sub-slot number (optional) + ; bit 4-6 = Unused + ; bit 7 = 1 if Slot is Expanded +MEMORY_SLOT_SELECTION .EQU $43 ; Guarda el byte del OUT de seleccion de slot principal [$A8] 1 byte +MEMORY_SUBSLOT_SELECTION .EQU $44 ; Guarda el byte de seleccion de sub-slot [$FFFF] 1 byte +MEMORY_PAGE3_SLOT .EQU $45 ; Guarda el byte de la seleccion de la pagina 3 1 byte +MEMORY_IN_CURRENT_SELECTION .EQU $46 ; Memoria encontrada en la seleccion actual 3 bytes +MEMORY_MAPPER_TOTAL_PAGES .EQU $49 ; Nº de paginas del mapper 2 bytes +MEMORY_MAPPER_PAGES_BACKUP .EQU $200 ; Bytes de las paginas del mapper 256 bytes diff --git a/source/prog/joystick_test.asm b/source/prog/joystick_test.asm index 6c3a648..4378b50 100644 --- a/source/prog/joystick_test.asm +++ b/source/prog/joystick_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 9cd2389..61552a3 100644 --- a/source/prog/keyboard_test.asm +++ b/source/prog/keyboard_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 c2d0c92..b369ee7 100644 --- a/source/prog/main.asm +++ b/source/prog/main.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 ffc5a4f..3556810 100644 --- a/source/prog/main_menu_common.asm +++ b/source/prog/main_menu_common.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 5735730..81db0b1 100644 --- a/source/prog/main_menu_p1.asm +++ b/source/prog/main_menu_p1.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Menu Principal (Pagina 1) ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/main_menu_p2.asm b/source/prog/main_menu_p2.asm index e7ea846..25b7daa 100644 --- a/source/prog/main_menu_p2.asm +++ b/source/prog/main_menu_p2.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Menu Principal (Pagina 2) ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/memory_routines.asm b/source/prog/memory_routines.asm index 4f50fb5..14cb80a 100644 --- a/source/prog/memory_routines.asm +++ b/source/prog/memory_routines.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Rutinas de la gestion de memoria ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -19,6 +19,8 @@ FUNCTION_MEMORY_GET_CONFIG: call FUNCTION_MEMORY_GET_SLOT_LAYOUT ; Configuracion de SLOTS call FUNCTION_MEMORY_GET_MEMORY_LAYOUT ; Configuracion de memoria + + ; Vuelve ret @@ -159,11 +161,28 @@ FUNCTION_MEMORY_GET_MEMORY_LAYOUT: FUNCION_MEMORY_GET_SLOT_RAM: + ; Reinicia el contador de RAM del slot actual + ld hl, (NGN_RAM_BUFFER + MEMORY_IN_CURRENT_SELECTION) ; Variable + ld b, 3 ; 3 bytes + xor a ; a cero + @@RESET_COUNTER: + ld [hl], a + inc hl + djnz @@RESET_COUNTER + ; Paginas 0, 1 y 2 sin mapper call FUNCION_MEMORY_GET_RAM_PAGES012_NO_MAPPER ; Pagina 3 sin mapper call FUNCION_MEMORY_GET_RAM_PAGE3_NO_MAPPER + ; Si este banco tiene 64kb, posiblemente sea un mapper, procede a verificarlo + ld a, [(NGN_RAM_BUFFER + MEMORY_IN_CURRENT_SELECTION)] + sub a, $40 ; Resta 64 + ret c ; Si no ha llegado a 64kb, no es un mapper, sal + + ; Analiza si hay un mapper en este banco + call FUNCION_MEMORY_GET_RAM_IN_MAPPER + ; Vuelve ret @@ -237,14 +256,15 @@ FUNCION_MEMORY_GET_RAM_PAGES012_NO_MAPPER: ; ---------------------------------------------------------- -; Funcion para detectar la RAM en la pagina 3 +; 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: ; Informa de la direccion inicial de memoria del test - ld hl, $C000 ; Direccion inicial de la pagina + ld hl, $C000 ld [(NGN_RAM_BUFFER + MEMORY_PAGE_ADDR)], hl ld b, 4 ; 4 segmentos de 4kb @@ -252,7 +272,6 @@ FUNCION_MEMORY_GET_RAM_PAGE3_NO_MAPPER: ; Preserva los registros del contador push bc - push hl ; Copia de seguridad en BC de la configuracion de slots di ; Desconecta las interrupciones @@ -263,48 +282,114 @@ FUNCION_MEMORY_GET_RAM_PAGE3_NO_MAPPER: ld c, a ; Y guardalo en C exx ; Manda el set de registros a la sombra, trabaja con los alternativos + ; Calcula el SLOT [E] + ld c, $03 ; Mascara de slot en pagina... [xxxxxx11] en [C] + ld a, [(NGN_RAM_BUFFER + MEMORY_SLOT_ID)] ; Lee el ID de configuracion de slots + and c ; Aplica la mascara + ld e, a ; Guarda el slot en E + ; Calcula el SUB-SLOT [D] + ld a, [(NGN_RAM_BUFFER + MEMORY_SLOT_ID)] ; Lee el ID de configuracion de slots + srl a ; >> 2 + srl a ; Pon los BITS 2 y 3 en 0 y 1 + and c ; Aplica la mascara + ld d, a ; Guarda el sub-slot en D + ; Seleccion de la direccion de memoria a analizar ld hl, [(NGN_RAM_BUFFER + MEMORY_PAGE_ADDR)] - ; Seleccion de slots - ld a, [(NGN_RAM_BUFFER + MEMORY_SLOT_ID)] - rrca - rrca - and $C0 - ld b, a ; Configuracion deseada de slot en B + ; Calcula el numero de pagina segun la direccion de memoria + ld a, h ; Con el dato en H + ld b, 6 ; Y desplazando 6 bits a la derecha... + @@GET_PAGE_NUMBER: + srl a ; >> 1 + djnz @@GET_PAGE_NUMBER + ld b, a ; Numero de pagina en B + + ; Has de desplazar el numero de bits a otra ubicacion que no sea la pagina 0? + or a + jr z, @@SLOT_ID_IS_READY ; Es la pagina 0, no es necesario + @@PLACE_SLOT_ID: + sla c ; << 2 Mascara + sla c + sla d ; << 2 Sub-slot + sla d + sla e ; << 2 Slot + sla e + djnz @@PLACE_SLOT_ID + + ; Prepara la mascara inversa para el OR de seleccion + @@SLOT_ID_IS_READY: + ld a, c ; Recupera la mascara del slot + cpl ; Complementa este valor + ld c, a ; Guardalo en C ; Esta expandido? ld a, [(NGN_RAM_BUFFER + MEMORY_SLOT_ID)] bit 7, a jr z, @@NOT_EXPANDED - ; Esta expandido - sla a ; Coloca los bits de sub-slot en los bits 6 y 7 (<< 4) - sla a - sla a - sla a - and $C0 ; Bitmask de esos bits - ld c, a ; Guardalo en C + ; Esta expandido - Apunta el slot primario a la pagina 3 + rrc a ; Pon los bits 0 y 1 + rrc a ; en la posicion 6 y 7 + and $C0 ; 11xxxxxx Mascara de esos bits + ld b, a ; Guarda el resultado en B in a, [$A8] ; Lee la configuracion de slots actual - and $3F ; Guarda la configuracion de las paginas 0 a 2 - or b ; Añade la configuracion de la pagina 3 de slots - out [$A8], a ; Selecciona esa configuracion de slots - ld a, [$FFFF] ; Lee la configuracion de sub-slots - cpl ; Complementala - and $3F ; Guarda la configuracion de las pagina 0 a 2 - or c ; Añade la configuracion de la pagina 3 de sub-slots - ld [$FFFF], a ; Aplica la configuracion de sub-slots - jr @@TEST_IF_RAM + and $3F ; xx111111 Mascara de las paginas 0 a 2 + or b ; Añade la pagina 3 + ld [(NGN_RAM_BUFFER + MEMORY_PAGE3_SLOT)], a + + ; Guarda la configuracion actual de slots en B + in a, [$A8] + ld b, a + ; Selecciona la configuracion de subslots + ld a, [(NGN_RAM_BUFFER + MEMORY_PAGE3_SLOT)] + call FUNCTION_MEMORY_CHECK_IF_RAM_EXPANDED ; Verifica si es RAM + jr @@END_OF_RAM_CHECK + ; No esta expandido @@NOT_EXPANDED: in a, [$A8] ; Lee la configuracion de slots actual - and $3F ; Guarda la configuracion de las paginas 0 a 2 - or b ; Añade la configuracion de la pagina 3 de slots + and c ; Guarda la configuracion de las paginas no activas + or e ; Añade la configuracion de la pagina activa + call FUNCTION_MEMORY_CHECK_IF_RAM_NO_EXPANDED ; Verifica si es RAM + + + @@END_OF_RAM_CHECK: + ei ; Habilita las interrupciones + ld a, $FF ; Era RAM? + cp e + jr nz, @@LOOP_ENDS + call FUNCTION_MEMORY_COUNTER_ADD_4KB ; Si era RAM, marcalo + + ; Fin de la funcion + @@LOOP_ENDS: + + pop bc ; Recupera los registros del contador + + ld hl, [(NGN_RAM_BUFFER + MEMORY_PAGE_ADDR)] + ld de, $1000 ; Siguiente segmento de 4kb + add hl, de + ld [(NGN_RAM_BUFFER + MEMORY_PAGE_ADDR)], hl + + ;djnz @@CHECK_CHUNKS_LOOP ; Fin del bucle + dec b + jp nz, @@CHECK_CHUNKS_LOOP + + ; Sal de la funcion + ret + + + +; ---------------------------------------------------------- +; Funcion verificar si el segmento es RAM (NO EXPANDIDO) +; ---------------------------------------------------------- + +FUNCTION_MEMORY_CHECK_IF_RAM_NO_EXPANDED: + out [$A8], a ; Selecciona esa configuracion de slots ; Verifica si el primer byte de la pagina es RAM - @@TEST_IF_RAM: ld a, [hl] ; Lee un byte ld b, a ; Guardalo el valor leido en B cpl ; Saca el complementario (invierte todos los bits) @@ -316,40 +401,79 @@ FUNCION_MEMORY_GET_RAM_PAGE3_NO_MAPPER: ld a, b ; Y restaura el valor original del byte ld [hl], a ld a, $FF ; Indica que es RAM + ex af, af' ; Mandalo a la copia sombreada jr @@RESTORE_SLOTS_CONFIG @@NOT_RAM: ld a, $00 ; Indica que no es RAM + ex af, af' ; Mandalo a la copia sombreada @@RESTORE_SLOTS_CONFIG: + ; Restauracion de la configuracion original exx ; Recupera el set de registros de la sombra, trabaja con los normales + ex af, af' ; Recupera la copia sombreada de A ld e, a ; Guarda si es RAM ($FF) en E - ld a, b ; Restaura la configuracion de slots - out [$A8], a - ld a, c ; Y la configuracion de subslots - ld [$FFFF], a + ld a, b ; Recupera la configuracion de slots + out [$A8], a ; Restaura el slot original - ei ; Habilita las interrupciones - ld a, $FF ; Era RAM? - cp e - jr nz, @@LOOP_ENDS - call FUNCTION_MEMORY_COUNTER_ADD_4KB ; Si era RAM, marcalo + ; Vuelve + ret - ; Fin de la funcion - @@LOOP_ENDS: - pop hl ; Recupera los registros del contador - pop bc - ld de, $1000 ; Siguiente segmento de 4kb - add hl, de - ld [(NGN_RAM_BUFFER + MEMORY_PAGE_ADDR)], hl +; ---------------------------------------------------------- +; Funcion verificar si el segmento es RAM (EXPANDIDO) +; ---------------------------------------------------------- - djnz @@CHECK_CHUNKS_LOOP ; Fin del bucle +FUNCTION_MEMORY_CHECK_IF_RAM_EXPANDED: - ; Sal de la funcion - ret + out [$A8], a ; Selecciona el slot primario en la pagina 3 + ld a, [$FFFF] ; Lee la configuracion de sub-slots + cpl ; Complementala + and c ; Guarda la configuracion de las pagina no seleccionadas + or d ; Añade la configuracion de la pagina seleccionada + ld [$FFFF], a ; Aplica la configuracion de sub-slots + in a, [$A8] ; Lee la configuracion de slots para acceder a la pagina 3 + ld d, a ; Guardala en D + ; Restaura el slot primario + ld a, b ; Lee la configuracion de slots original + and c ; Guarda la configuracion de las paginas no activas + or e ; Añade la configuracion de la pagina activa + out [$A8], a ; Selecciona esa configuracion de slots + ; Verifica si el primer byte de la pagina es RAM + ld a, [hl] ; Lee un byte + ld b, a ; Guardalo el valor leido en B + cpl ; Saca el complementario (invierte todos los bits) + ld c, a ; Guarda el complementario en C + ld [hl], a ; Vuelve a escribirlo + ld a, [hl] ; Y leelo nuevamente + cp c ; Comparalo con el valor que acabas de escribir + jr nz, @@NOT_RAM ; Si no coincide, no es RAM + ld a, b ; Y restaura el valor original del byte + ld [hl], a + ld a, $FF ; Indica que es RAM + ex af, af' ; Mandalo a la copia sombreada + jr @@RESTORE_SLOTS_CONFIG + + @@NOT_RAM: + ld a, $00 ; Indica que no es RAM + ex af, af' ; Mandalo a la copia sombreada + + @@RESTORE_SLOTS_CONFIG: + ; Apunta el slot primario a la pagina 3 + ld a, d ; Recupera la configuracion del slot primario + out [$A0], a ; para acceder a la pagina 3 + exx ; Recupera el set de registros de la sombra, trabaja con los normales + ex af, af' ; Recupera la copia sombreada de A + ld e, a ; Guarda si es RAM ($FF) en E + ld a, c ; Recupera la configuracion de subslots + ld [$FFFF], a ; Restaurala + ld a, b ; Recupera la configuracion de slots + out [$A8], a ; Restaurala + + ; Vuelve + ret @@ -359,24 +483,30 @@ FUNCION_MEMORY_GET_RAM_PAGE3_NO_MAPPER: FUNCTION_MEMORY_COUNTER_ADD_4KB: - ; Sumando + ; Define el numero de KB a añadir ld hl, NGN_RAM_BUFFER ld [hl], $04 inc hl ld [hl], $00 inc hl ld [hl], $00 - ; Numero base + ; Define el origen y el destino para el contador general ld de, RAM_DETECTED ld hl, NGN_RAM_BUFFER ; Realiza la suma call NGN_BCD_ADD + ; Define el origen y el destino para el contador local + ld de, (NGN_RAM_BUFFER + MEMORY_IN_CURRENT_SELECTION) + ld hl, NGN_RAM_BUFFER + ; Realiza la suma + call NGN_BCD_ADD ; Marca el banco de memoria call FUNCTION_MEMORY_MARK_RAM_BANK ; Vuelve ret + ; ---------------------------------------------------------- ; Funcion para marcar bancos de RAM en los slots ; ---------------------------------------------------------- @@ -402,6 +532,199 @@ FUNCTION_MEMORY_MARK_RAM_BANK: djnz @@SET_BITS @@BITS_SET: ; C = RESULTADO + + push bc ; Preserva BC + call FUNCION_MEMORY_GET_CURRENT_SLOT_VARIABLE ; Carga en HL la variable con la informacion del slot actual + pop bc ; Restaura BC + ld a, [hl] ; Carga el registro de paginas del slot/sub-slot + or c ; Añadelas + and $0F ; Bitmask de los 4 primeros bits + ld [hl], a ; Actualiza el registro + + ; Si este banco tiene 64kb, posiblemente sea un mapper, indica que esta lleno (BIT 7) si es necesario + ld a, [(NGN_RAM_BUFFER + MEMORY_IN_CURRENT_SELECTION)] + sub a, $40 ; Resta 64 + ret c ; Si no ha llegado a 64kb, sal ya + + ; Hay el banco esta lleno, indicalo en el BIT 6 + set 6, [hl] + ; Sal de la funcion + ret + + + + +; ---------------------------------------------------------- +; Funcion para detectar la RAM un mapper a partir +; de la informacion en la pagina 2 +; ---------------------------------------------------------- + +FUNCION_MEMORY_GET_RAM_IN_MAPPER: + + ; Reinicia el contador de paginas + ld hl, $0000 + ld [(NGN_RAM_BUFFER + MEMORY_MAPPER_TOTAL_PAGES)], hl + + ; Deshabilita las interrupciones + di + + ; Paso 1 - Copia de seguridad de los bytes a analizar de cada segmento + ld de, (NGN_RAM_BUFFER + MEMORY_MAPPER_PAGES_BACKUP) + ld b, $FF + @@DO_BACKUP: + push bc ; Preserva el registro + push de + ld a, b ; Carga el nº de segmento actual + out [MEMORY_MAPPER_TEST_PORT], a ; Seleccion del segmento del mapper + ld a, [(NGN_RAM_BUFFER + MEMORY_SLOT_ID)] ; ID de slot + ld hl, MEMORY_MAPPER_TEST_PAGE ; Direccion de la pagina + call $000C ; Lee un byte del slot con la ID en A de la direccion HL (RDSLT) + pop de ; Restaura los registros + pop bc + ld [de], a ; Guarda el dato leido + ld a, b ; Sal si ya has completado completado el ciclo + or a + jr z, @@DO_BACKUP_EXIT + inc de ; Siguiente posicion en el buffer de backup + dec b ; Siguiente ciclo del bucle + jr @@DO_BACKUP + @@DO_BACKUP_EXIT: + + ; Paso 2 - Marca el primer byte de todos los segmentos como $FF + ld bc, $FF00 + @@DO_SETUP: + push bc ; Preserva el registro + ld a, c ; Carga el nº de segmento actual + out [MEMORY_MAPPER_TEST_PORT], a ; Seleccion del segmento del mapper + ld e, $FF ; Byte a escribir + ld a, [(NGN_RAM_BUFFER + MEMORY_SLOT_ID)] ; ID de slot + ld hl, MEMORY_MAPPER_TEST_PAGE ; Direccion de la pagina + call $0014 ; Escribe un byte (E) en el slot con la ID en A en la direccion HL (WRSLT) + pop bc + ld a, b ; Sal si ya has completado completado el ciclo + or a + jr z, @@DO_SETUP_EXIT + inc c ; Siguiente pagina + dec b ; Siguiente ciclo del bucle + jr @@DO_SETUP + @@DO_SETUP_EXIT: + + ; Paso 3 - Si es un mapper, leyendo el byte, escribiendo un nuevo valor y buscando una repeticion + ld bc, $FF00 + @@DO_CHECK: + push bc ; Preserva el registro + ld a, c ; Carga el nº de segmento actual + out [MEMORY_MAPPER_TEST_PORT], a ; Seleccion del segmento del mapper + ld a, [(NGN_RAM_BUFFER + MEMORY_SLOT_ID)] ; ID de slot + ld hl, MEMORY_MAPPER_TEST_PAGE ; Direccion de la pagina + call $000C ; Lee un byte del slot con la ID en A de la direccion HL (RDSLT) + pop bc ; Recupera el registro + sub a, c ; Si el valor leido es inferior al actual, fin del mapper (o no es un mapper) + jr c, @@END_OF_CHECK ; Sal si es inferior + ld hl, [(NGN_RAM_BUFFER + MEMORY_MAPPER_TOTAL_PAGES)] ; Actualiza el contador de segmentos + inc hl + ld [(NGN_RAM_BUFFER + MEMORY_MAPPER_TOTAL_PAGES)], hl + push bc + ld e, c ; Byte a escribir (nº de segmento) + ld a, [(NGN_RAM_BUFFER + MEMORY_SLOT_ID)] ; ID de slot + ld hl, MEMORY_MAPPER_TEST_PAGE ; Direccion de la pagina + call $0014 ; Escribe un byte (E) en el slot con la ID en A en la direccion HL (WRSLT) + pop bc ; Restaura el registro + ld a, b ; Sal si ya has completado completado el ciclo + or a + jr z, @@END_OF_CHECK + inc c ; Siguiente pagina + dec b ; Siguiente ciclo del bucle + jr @@DO_CHECK + @@END_OF_CHECK: + + ; Paso 4 - Restaura la copia de seguridad + ld de, (NGN_RAM_BUFFER + MEMORY_MAPPER_PAGES_BACKUP) + ld b, $FF + @@DO_RESTORE: + push bc ; Preserva el registro + push de + ld a, b ; Carga el nº de segmento actual + out [MEMORY_MAPPER_TEST_PORT], a ; Seleccion del segmento del mapper + ld a, [de] ; Lee el byte a restaurar + ld e, a ; Guardalo en E + ld a, [(NGN_RAM_BUFFER + MEMORY_SLOT_ID)] ; ID de slot + ld hl, MEMORY_MAPPER_TEST_PAGE ; Direccion de la pagina + call $0014 ; Escribe un byte (E) en el slot con la ID en A en la direccion HL (WRSLT) + pop de ; Restaura los registros + pop bc + ld a, b ; Sal si ya has completado completado el ciclo + or a + jr z, @@DO_RESTORE_EXIT + inc de ; Siguiente posicion en el buffer de backup + dec b ; Siguiente ciclo del bucle + jr @@DO_RESTORE + @@DO_RESTORE_EXIT: + + ; Habilita las interrupciones + ei + + ; Recuento de RAM + ld hl, [(NGN_RAM_BUFFER + MEMORY_MAPPER_TOTAL_PAGES)] + ld de, $0004 + sbc hl, de ; Si no hay 4 segmentos de 16kb, no es un mapper + ret c ; Vuelve YA si no lo es + + call FUNCION_MEMORY_GET_CURRENT_SLOT_VARIABLE ; Carga en HL la variable con la informacion del slot actual + set 7, [hl] + + ; Resta 64kb al contador de memoria + ; Define el numero de KB a añadir + ld hl, NGN_RAM_BUFFER + ld [hl], $64 + inc hl + ld [hl], $00 + inc hl + ld [hl], $00 + ; Define el origen y el destino para el contador general + ld de, RAM_DETECTED + ld hl, NGN_RAM_BUFFER + ; Realiza la resta + call NGN_BCD_SUB + + ; Suma 16kb al contador de memoria por cada segmento encontrado + ld hl, [(NGN_RAM_BUFFER + MEMORY_MAPPER_TOTAL_PAGES)] + @@ADD_MAPPED_MEMORY: + ; Preserva los registros + push hl + ; Define el numero de KB a añadir + ld hl, NGN_RAM_BUFFER + ld [hl], $16 + inc hl + ld [hl], $00 + inc hl + ld [hl], $00 + ; Define el origen y el destino para el contador general + ld de, RAM_DETECTED + ld hl, NGN_RAM_BUFFER + ; Realiza la suma + call NGN_BCD_ADD + ; Recupera los registros y repite + pop hl + dec hl + ld a, h + or l + jr nz, @@ADD_MAPPED_MEMORY + + ; Fin de la rutina + ret + + + +; ---------------------------------------------------------- +; Funcion para buscar la variable que guarda la +; informacion del slot seleccionado +; Devuelve la variable en HL +; Modifica AF, BC, DE, HL +; ---------------------------------------------------------- + +FUNCION_MEMORY_GET_CURRENT_SLOT_VARIABLE: + ; Busca la variable que guarda el slot actual ld hl, RAM_SLOT_0 ; Calcula el offset segun el slot @@ -428,17 +751,12 @@ FUNCTION_MEMORY_MARK_RAM_BANK: djnz @@CALCULATE_SUBSLOT_OFFSET @@NO_SUBSLOT_OFFSET: - ld a, [hl] ; Carga el registro de paginas del slot/sub-slot - or c ; Añadelas - and $0F ; Bitmask de los 4 primeros bits - ld [hl], a ; Actualiza el registro - - ; Sal de la funcion + ; Fin de la rutina ret - + ;*********************************************************** ; Fin del archivo diff --git a/source/prog/mixed_mode_test.asm b/source/prog/mixed_mode_test.asm index 1815623..f778902 100644 --- a/source/prog/mixed_mode_test.asm +++ b/source/prog/mixed_mode_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 48895c9..fd708b5 100644 --- a/source/prog/monitor_color_test.asm +++ b/source/prog/monitor_color_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 ae28e07..bc6f610 100644 --- a/source/prog/psg_test.asm +++ b/source/prog/psg_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Test PSG ; (cc) 2018-2020 Cesar Rincon "NightFox" diff --git a/source/prog/screen0_test.asm b/source/prog/screen0_test.asm index 0fce1f2..bafb35f 100644 --- a/source/prog/screen0_test.asm +++ b/source/prog/screen0_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 d66cda1..5c32613 100644 --- a/source/prog/screen1_test.asm +++ b/source/prog/screen1_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 71b3d8c..bd049ef 100644 --- a/source/prog/screen2_test.asm +++ b/source/prog/screen2_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 56c5abd..6212e5a 100644 --- a/source/prog/screen3_test.asm +++ b/source/prog/screen3_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 3f4e8a9..6129041 100644 --- a/source/prog/sfx.asm +++ b/source/prog/sfx.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 26c2d16..5b30369 100644 --- a/source/prog/sprites_test.asm +++ b/source/prog/sprites_test.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 7dace01..4c6483b 100644 --- a/source/prog/system.asm +++ b/source/prog/system.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 ef7654d..c1302a5 100644 --- a/source/prog/system_info.asm +++ b/source/prog/system_info.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Informacion del sistema ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -289,10 +289,12 @@ FUNCTION_SYSTEM_INFO: call NGN_TEXT_POSITION ld hl, TEXT_SYSTEM_INFO_RAM call NGN_TEXT_PRINT - ld b, $00 ; Valor de RAM ld hl, [RAM_DETECTED] ld c, h ld d, l + ld a, [(RAM_DETECTED + 2)] + and $0F + ld b, a call NGN_TEXT_PRINT_BCD ld hl, TEXT_SYSTEM_INFO_KB call NGN_TEXT_PRINT @@ -555,23 +557,39 @@ FUNCTION_SYSTEM_INFO: ld b, 4 ld c, 1 ld e, $30 ; Pagina + @@PRINT_RAM_PAGES_LOOP: - ld a, d + ld a, d ; Que hay en esta pagina? and c - jp z, @@PRINT_EMPTY_PAGE - ld a, e + jr z, @@PRINT_EMPTY_PAGE ; Si esta vacia, prepara el caracter a mostrar + + bit 7, [hl] ; Si el BIT 7 esta activo, es un MAPPER + jr nz, @@BANK_FULL + + ld a, e ; Si no, carga el numero de pagina actual jr @@PRINT_RAM_PAGE - @@PRINT_EMPTY_PAGE: + + @@BANK_FULL: ; Selecciona el caracter para marcar que es un mapper + ld a, $C2 + jr @@PRINT_RAM_PAGE + + @@PRINT_EMPTY_PAGE: ; Selecciona el caracter de pagina vacia ld a, $20 + @@PRINT_RAM_PAGE: - push bc + push bc ; Preserva los registros push de - call $00A2 ; Imprime el caracter - pop de + + call $00A2 ; Imprime el caracter + + pop de ; Recupera los registros pop bc - sla c ; Siguiente BIT - inc e ; Siguiente nº de pagina - djnz @@PRINT_RAM_PAGES_LOOP + + sla c ; Siguiente BIT + inc e ; Siguiente nº de pagina + + djnz @@PRINT_RAM_PAGES_LOOP ; Fin del bucle + ; Fin de la impresion del slot/subslot ret diff --git a/source/prog/vars.asm b/source/prog/vars.asm index 40b4ca3..92aef40 100644 --- a/source/prog/vars.asm +++ b/source/prog/vars.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Declaracion de variables ; (cc) 2018-2020 Cesar Rincon "NightFox" @@ -45,19 +45,18 @@ VDP_HZ: ds 1 ; Frecuencia de refresco del VDP ; ---------------------------------------------------------- RAM_DETECTED: ds 3 ; RAM detectada (Formato BCD de 3 bytes [000000]) - ; Solo se usan los 4 primeros digitos, pero se - ; requieren los 3 bytes para las operaciones de suma + SLOT_EXPANDED: ds 4 ; El slot esta expandido? (bool 0 / !0) 1 byte x 4 slots ; ----------------------------------- ; SUB-SLOT 0 1 2 3 ; ----------------------------------- -RAM_SLOT_0: ds 4 ; RAM en el SLOT 0 xxxx0000 xxxx0000 xxxx0000 xxxx0000 -RAM_SLOT_1: ds 4 ; RAM en el SLOT 1 xxxx0000 xxxx0000 xxxx0000 xxxx0000 -RAM_SLOT_2: ds 4 ; RAM en el SLOT 2 xxxx0000 xxxx0000 xxxx0000 xxxx0000 -RAM_SLOT_3: ds 4 ; RAM en el SLOT 3 xxxx0000 xxxx0000 xxxx0000 xxxx0000 +RAM_SLOT_0: ds 4 ; RAM en el SLOT 0 0xxx0000 0xxx0000 0xxx0000 0xxx0000 +RAM_SLOT_1: ds 4 ; RAM en el SLOT 1 0xxx0000 0xxx0000 0xxx0000 0xxx0000 +RAM_SLOT_2: ds 4 ; RAM en el SLOT 2 0xxx0000 0xxx0000 0xxx0000 0xxx0000 +RAM_SLOT_3: ds 4 ; RAM en el SLOT 3 0xxx0000 0xxx0000 0xxx0000 0xxx0000 ; ----------------------------------- - ; PAGINA 3210 3210 3210 3210 + ; PAGINA M 3210 M 3210 M 3210 M 3210 ; ----------------------------------- diff --git a/source/prog/vdp_routines.asm b/source/prog/vdp_routines.asm index a98eee0..9dbbf9d 100644 --- a/source/prog/vdp_routines.asm +++ b/source/prog/vdp_routines.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; 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 f083db7..33328a6 100644 --- a/source/prog/welcome.asm +++ b/source/prog/welcome.asm @@ -1,7 +1,7 @@ ;*********************************************************** ; ; MSX DIAGNOSTICS -; Version 1.1.7 +; Version 1.1.8 ; ASM Z80 MSX ; Archivo principal ; (cc) 2018-2020 Cesar Rincon "NightFox"