Como he comentado en el hilo de la tirada del clon de Multiface II, he pasado algo de tiempo navegando entre el código de la rom de origen del interface.
He podido corregir uno de los bugs que tenía en relación a la rutina que utiliza para verificar si el programa que haya en su momento en memoria está utilizando el 2º banco de memoria o no. En función de esto, el volcado que se genera al disco ocupa más o menos Kbs.
Digo 'uno de los bugs' porque no tengo claro si hay alguno más en la rom de este interface. Estas dos webs disponen de extensa documentación sobre el interface, aunque en francés y en inglés respectivamente: Quasar.cpcscene.net , Grimware.org
Resulta que la rutina de comprobación original deja ‘huella’ en algunos casos; al hacer la verificación, cambia el contenido en el 2º banco para comprobar si hay datos, pero no lo restituye a su valor original! Esto no ocurre siempre; sólo en algunos (pocos) casos.
Lo delicado ha sido poder implementar una rutina alternativa en el mismo espacio de bytes… pero creo que se ha conseguido. Por las pruebas que he podido hacer, parece una versión muy estable. Sólo he podido probar la versión CPC (no tengo Plus), pero la versión de Plus debería funcionar de igual manera.
Os dejo la rutina original:
02c5 cdc615 call 15c6h 02c8 210040 ld hl,4000h 02cb 7e ld a,(hl) 02cc f5 push af 02cd 36aa ld (hl),0aah 02cf 01c47f ld bc,7fc4h 02d2 ed49 out (c),c 02d4 7e ld a,(hl) 02d5 feaa cp 0aah 02d7 200a jr nz,02e3h 02d9 3655 ld (hl),55h Aquí estaría el problema: 02db cdc615 call 15c6h carga 55h en 4000h, pero 02de 7e ld a,(hl) después de realizar la 02df fe55 cp 55h comparación, sale de la 02e1 280b jr z,02eeh rutina sin devolverlo a 02e3 cdc615 call 15c6h su valor inicial 02e6 3e02 ld a,02h 02e8 32963a ld (3a96h),a 02eb f1 pop af 02ec 77 ld (hl),a 02ed c9 retY la rutina modificada aquí (en fondo azul, las zonas modificadas)
02c5 cdc615 call 15c6h 02c8 210040 ld hl,4000h 02cb 7e ld a,(hl) 02cc 01c47f ld bc,7fc4h 02cf ed49 out (c),c 02d1 46 ld b,(hl) 02d2 b8 cp b 02d3 200f jr nz,02e4h 02d5 3c inc a 02d6 77 ld (hl),a 02d7 cdc615 call 15c6h 02da 46 ld b,(hl) 02db b8 cp b 02dc 2810 jr z,02eeh 02de 01c47f ld bc,7fc4h 02e1 ed49 out (c),c 02e3 35 dec (hl) 02e4 cdc615 call 15c6h 02e7 3e02 ld a,02h 02e9 32963a ld (3a96h),a 02ec af xor a 02ed c9 retAquí podéis descargar la rom de MF2 modificada: Versión A3_RWD para CPC o Versión 29_RWD para CPC+