En el código lo que pretendo hacer es que al arrancar el ZX-Uno, coja toda la ROM y la copie en $8000. Luego pagino con mastermapper la System ROM 0 en $C000 y copio en $C000 el trozo de ese firmware que es el original, quitando el "preparche" de modo que en $0000 pase a estar el firmware original y en $c000 también, y luego hago un RST 0 para ejecutar el firmware original.
En este código el preparche no hace nada, la zona de hacer cosas está vacía, pero no me va en ZesarUX y no he conseguido nunca que haga debug ZesarUX de la ROM BIOS por lo que ando un poco a ciegas y no sé que puede ser:
Código: Seleccionar todo
output prefirmware.bin
define zona_alta $8000 ; 32768
define zxuno_port $FC3B
define MASTERMAPPER 1
; ********* Copiamos la ROM en RAM *****************
start ld hl, 0
ld de, zona_alta
ld bc, $4000 ; 16K
ldir
jp zona_alta + highStart ; salta a la siguiente instrucción pero en la copia en RAM
; ********* Copiamos la ROM BIOS original sin el preparche en la ROM *****************
highStart
ld bc, zxuno_port ; Mapea System ROM en $C000
ld a, MASTERMAPPER
out (c), a
inc b
ld a, 9 ; RAM slot 9, System ROM 1
out (c), a
ld hl, $8000 + endpf ; Copia toda la ROM restante (todo menos la pre-firmware) que tengo en $8000 en $C000 (que es donde está mapeada la ROM)
ld de, $C000
ld bc, $4000 - endpf
ldir
ld bc, zxuno_port ; MAP again bank 0 at $C000
ld a, MASTERMAPPER
out (c), a
inc b
xor a ; Slot 0
out (c), a
; ******************** Aquí es donde realmente van las rutinas del prefirmware ****************
; ******************** Este prefirmware podría usar las rutinas RST de la ROM de Antonio porque este ya está en su sitio ****************
preFirmware
restart rst 0
endpf ; Aqui empezaría el firmware orginal