Como ahora programo para MSX donde puedo y me supone compilar tanto en Windows, Linux o Mac, muy a pesar mío he tenido que dejar asmsx. El nuevo elegido ha sido sjasm, que creo que también se utiliza por aquí.
El caso es que con asmsx no tenía problema en hacer una ROM de 32Kb, pero con sjasm estoy ya a punto de llorar. He probado tanto el código que proponía Robsy (que me funcionaba en asmsx perfectamente)
LOCALIZAR_SEGUNDA_PAGINA:
; Rutina que localiza la segunda pagina de 16 KB
; de una ROM de 32 KB ubicada en 4000h
; -Basada en la rutina de Konami-
; Compatible con carga en RAM
; Compatible con expansores de slots
;------------------------------------------------
ld hl,4000h
ld b,[hl]
xor a
ld [hl],a
ld a,[hl]
or a
jr nz,LBLROM
; El programa esta en RAM - no buscar
ld [hl],b
jr LBLCONT
LBLROM:
di
; Slot primario
call RSLREG
rrca
rrca
and 03h
; Slot secundario
ld c,a
ld hl,0FCC1h
add a,l
ld l,a
ld a,[hl]
and 80h
or c
ld c,a
inc l
inc l
inc l
inc l
ld a,[hl]
; Definir el identificador de slot
and 0ch
or c
ld h,80h
; Habilitar permanentemente
call ENASLT
ei
LBLCONT:
como el código de Ramones
ENASLT: equ 024h
slotvar: equ 0E000h ; My Rom slot
RSLREG: equ 0138h
EXPTBL: equ 0FCC1h ; Bios Slot / Expansion Slot
org 04000h
db 041h,042h
dw initmain
ds 12
initmain:
di
im 1
ld sp,0F380h
call search_slotset
; Slot posicionado
jr $
; -----------------------
; SEARCH_SLOTSET
; Posiciona en pagina 2
; Nuestro ROM.
; -----------------------
search_slotset:
call search_slot
jp ENASLT
; -----------------------
; SEARCH_SLOT
; Busca slot de nuestro rom
; -----------------------
search_slot:
call RSLREG
rrca
rrca
and 3
ld c,a
ld b,0
ld hl,0FCC1h
add hl,bc
ld a,(hl)
and 080h
or c
ld c,a
inc hl
inc hl
inc hl
inc hl
ld a,(hl)
and 0Ch
or c;
ld h,080h
ld (slotvar),a
ret
que se propone en
este hiloLa página 2 (que comienza en 8000h) no la encuentro. Es decir, los datos que veo a partir de la 8000h no son los que he puesto (gráficos definidos a partir de 8000h corruptos). Como con asmsx la "receta" salió a la primera no he indagado más sobre el intríngulis de activación de páginas, y ahora me lo he mirado por encima y en diagonal.
Si alguien usa el sjasm y me pudiese dar la "receta" que funcione (con explicación o url de explicación ya sería la leche), prometo leerme el MSX Red Book de cabo a rabo y entender perfectamente el funcionamiento de activación de páginas
Por si acaso, me lo voy mirando ya