Karoshi MSX Community
05 de Julio de 2021, 03:30:15 pm *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: Ayuda para inicializar SC2 con SDCC y MSX2 (con MSX1 funciona)  (Leído 3557 veces)
0 Usuarios y 1 Visitante están viendo este tema.
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« : 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
En línea
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #1 : 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?
« Última modificación: 09 de Junio de 2008, 09:50:34 am por gobblin » En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #2 : 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?
En línea
cybernoid
Karoshi Maniac
****
Mensajes: 368



WWW
« Respuesta #3 : 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 

En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #4 : 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.
En línea
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!