"Fernandez D. Sopra-Bull" wrote:
Hola!
Pues no tengo ni idea. De qué MSX2 se trata??
Hasta luego
Hmmm ... creo que se donde está el problema
Desgraciadamente los holandeses son tan listos que probaron su moonblaster para
sus
fm-pacs y como consecuencia no funcionan perfectamente todos, o algo así no
recuerdo.
El caso es que en los japoneses hay que poner el bit 0 de la dirección 07FF6h
de la rom
del FM, a 1
para que funcione la cosa ...
Aquí adjunto una rutina ASM que realiza la búsqueda y arregla el problema.
FIND FM
; Busca e inicializa si es necesario el FM
; Si es un cartucho externo hay que inicializarlo (Antes de OPLL hay PAC2)
; Si es interno no hace falta. Ademas en los 2+ de Panasonic se cuelga
; Si se inicializa.
Bdos : equ 05h ; o 0F37Dh si es basic
FindFM_PAC: call FindFM
push de
di
ld a,(0F342h)
ld h,040h
call 024h
ei
pop de
ld c,09h
jp Bdos
FindFM: ld hl,0FCCAh
xor a
ld b,4
FMLP2: push bc
ld b,4
FMLP1: push bc
push af
push hl
set 7,a
di
ld h,040h
call 024h
ei
pop hl
push hl
ld a,(hl)
cp 020h
call z,FMTest
jp z,FMFnd
pop hl
pop af
add a,4
and 0Fh
inc hl
inc hl
inc hl
inc hl
pop bc
djnz FMLP1
add a,1
and 03h
pop bc
djnz FMLP2
ld de,NoFM_txt
ei
ret
FMTest: ld hl,0401Ch
ld de,FMText
ld b,4
FMLP: ld a,(de)
cp (hl)
ret nz
inc hl
inc de
djnz FMLP
cp a
ret
FMFnd: pop hl
pop af
pop bc
pop bc
ld a,(SaveChip)
set 1,a
ld (SaveChip),a
ld (SaveMusPlay),a
FM_Check: ld hl,04018h
ld de,FM_Japones
ld b,4
Japo: ld a,(de)
cp (hl)
jp nz,Es_Japones
inc hl
inc de
djnz Japo
ei
ld de,Internal_txt
ret
Es_Japones: ld a,(07FF6h)
or 1
ld (07FF6h),a
ei
ld de,External_txt
ret
FMText: defm "OPLL"
FM_Japones: defm "APRL"
Internal_txt: defm "Internal FM found."
defb 0Dh,0Ah,"$"
External_txt: defm "External FM found."
defb 0Dh,0Ah,"$"
NoFM_txt: defm "FM Not Found!!!!! :("
defb 0Dh,0Ah,"$
--
Un saludo,
Armando Pérez Abad
HELIO YAGO, S.L.
http://www.bogamari.com
Tlf: (96) 363 43 17
Fax: (96) 390 27 17