Hola. Ante todo comentar que he intentado mirar lo que he podido en webs, pero no he encontrado nada que me pueda ayudar, o por lo menos que haya podido "traducir" para enterarme para hacer lo que os comento.
Supongo que los muchos que estais por aquí podreis darme un poco de luz en esto. Mi cabeza ya esta a punto de explotar... jejejeje
Lo que necesito hacer es una rutina que en la pagina 3, pueda buscar ram en la pagina 0 y 1 y los guarde. Intento hacer que sea lo más compatible posible con cualquier MSX y entonces tengo que comprobar cambiando slots con FFFF. He encontrado una rutina que he adaptado a lo que quiero hacer, pero está hecha para trabajar en la pagina 2, y cambia la pagina 3 al hacer las comprobaciones.
1. No se puede usar FFFF sin cambiar esta pagina 3?
2. Que tengo mal en mi rutina para que no me cambie esta pagina 3?
Muchas gracias a todos por adelantado
Un saludo
Felix
Entrada: di ld a,(ffffh) cpl ld (_fffforig),a push af in a,(a8h) ld (_memorig),a push af and 30h ld b,a in a,(a8h) and f0h dec a ld hl,0010h _bucle1: inc a out (a8h),a ld c,a ld a,(hl) cpl ld (hl),a cp (hl) ld a,c jr z,_ramen00 ld e,00h _bucle2: ld a,c rrca rrca and c0h or b out (a8h),a ld a,(ffffh) cpl and f0h or e ld (ffffh),a ld a,c out (a8h),a ld a,(hl) cpl ld (hl),a cp (hl) ld a,c jr z,_ramen00 inc e ld a,e cp 04h jr nz,_bucle2 ld a,c jr _bucle1 _ramen00: sub 04h ld hl,4010h _bucle3: add a,04h out (a8h),a ld c,a ld a,(hl) cpl ld (hl),a cp (hl) ld a,c jr z,_ramen40 ld e,00h _bucle4: ld a,c rrca rrca rrca rrca and c0h or b out (a8h),a ld a,(ffffh) cpl and f3h or e ld (ffffh),a ld a,c out (a8h),a ld (hl),a cp (hl) ld a,c jr z,_ramen40 ld a,e add a,04h ld e,a cp 10h jr nz,_bucle4 ld a,c jr _bucle3 _ramen40: ld (_memnuevo),a ld a,(ffffh) cpl ld (_ffffnuevo),a pop af out (a8h),a pop af ld (ffffh),a ei ret _fffforig: db 0 _memorig: db 0 _ffffnuevo: db 0 _memnuevo: db 0