Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: cybernoid en 08 de Junio de 2008, 09:35:33 pm



Título: Ayuda para inicializar SC2 con SDCC y MSX2 (con MSX1 funciona)
Publicado por: cybernoid en 08 de Junio de 2008, 09:35:33 pm
Hola,

Tengo un problemilla para inicializar la pantalla en MSX con este listado para SDCC
Código:
void screen2_setup_mode()
{
    _asm
    //SCREEN2
    //Pongo modo de pantalla y color
    //[color 15,1,1: screen 2,2,0]
    ld      hl,#0xf3e9
    ld      (hl),#15// color 15
    inc     hl
    ld      (hl),#4// color ,1
    inc     hl
    ld      (hl),#1// color ,,1
    call    #0x05D2// screen2
    ld      bc,#0xe201
   call    #0x057F// screen ,2
    xor a // screen ,,0
    ld      (#0xf3db),a //(desactiva sonido teclas)
ret   
    _endasm;       
}

en MSX1 funciona sin problemas, pero parece que en MSX2 no inicializa  ¿alguna idea?

gracias


Título: Re: Ayuda para inicializar SC2 con SDCC y MSX2 (con MSX1 funciona)
Publicado por: cybernoid en 09 de Junio de 2008, 09:40:25 am
He probado en asMSX el mismo codigo y me retorna al Basic sin pasar por SC2 en cambio si cambio (jeje) call 0x05D2 por call INIGRP funciona sin problemas ¿alguna idea?

Código:
INIT:


    ld      hl,0x0f3e9
    ld      [hl],15// ; color 15
    inc     hl
    ld      [hl],4// ; color ,1
    inc     hl
    ld      [hl],1// ; color ,,1
    call INIGRP ; FUNCIONA!!
    //call    05D2H// ; no chuta :(


    ld      bc,0x0e201
    call    0x057F// ; screen ,2
kk:
jp kk 


vale  xD  ya e he dado cuenta, algún capullo esta atacando al final de la rutina en vez de al principio.

pero ahora me asalta la duda... por que chuta en msx1?


Título: Re: Ayuda para inicializar SC2 con SDCC y MSX2 (con MSX1 funciona)
Publicado por: pitpan en 09 de Junio de 2008, 11:31:01 am
¿Estás ensamblando una ROM, una binario cargable desde BASIC o un ejecutable de MSX-DOS?

Lo digo porque para que te funcione CALL INIGRP debes tener la página 0 apuntando a la BIOS y no a otras cosas. Desde MSX-DOS, tendrías que usar una llamada entre slots (interslot call), que funciona de forma diferente.

Por otra parte, ¿podrías dar más detalles de porqué dices que en MSX2 "no te inicializa"? Es decir, ¿qué sucede entonces? ¿o qué falla para que consideres que no estás en screen 2?


Título: Re: Ayuda para inicializar SC2 con SDCC y MSX2 (con MSX1 funciona)
Publicado por: cybernoid en 09 de Junio de 2008, 11:58:51 am
¿Estás ensamblando una ROM, una binario cargable desde BASIC o un ejecutable de MSX-DOS?

Lo digo porque para que te funcione CALL INIGRP debes tener la página 0 apuntando a la BIOS y no a otras cosas. Desde MSX-DOS, tendrías que usar una llamada entre slots (interslot call), que funciona de forma diferente.

Por otra parte, ¿podrías dar más detalles de porqué dices que en MSX2 "no te inicializa"? Es decir, ¿qué sucede entonces? ¿o qué falla para que consideres que no estás en screen 2?

el problema ya esta solucionado.

estaba apuntado a 05D2H en vez de a 0x0072, es una ROM creada con SDCC, en MSX2 se iva al basic sin inicializar SC2 y en MSX1 entraba en SC2 y despues en el bucle infinito que tengo programado al final.


Código:
INIT:


    ld      hl,0x0f3e9
    ld      [hl],15// ; color 15
    inc     hl
    ld      [hl],4// ; color ,1
    inc     hl
    ld      [hl],1// ; color ,,1
    call INIGRP ; FUNCIONA!!
    //call    05D2H// ; no chuta :(


    ld      bc,0x0e201
    call    0x057F// ; screen ,2
kk:
jp kk 



Título: Re: Ayuda para inicializar SC2 con SDCC y MSX2 (con MSX1 funciona)
Publicado por: pitpan en 09 de Junio de 2008, 01:34:01 pm
Hecho. Siempre hay que utilizar los puntos de entrada, que son los que define asMSX con la pseudoinstrucción BIOS.

De hecho, es una recomendación establecida por el estándar, dado que se indica que el punto de entrada es inamovible, no así la ubicación de las rutinas en las diferentes generaciones sucesivas.