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. |