Título: Identificación de modelo desde el DOS Publicado por: aorante en 30 de Junio de 2013, 11:36:39 am Hola compañeros!
Estoy con una aplicación pasándola de ROM a .COM (por facilitar el acceso a disco), y me encuentro que al ejecutarla se transforma esa parte inicial de la BIOS que se conserva en el DOS, perdiendo el valor de modelo de MSX que utilizo para tocar la paleta en MSX2 o superiores. Hay alguna forma de identificar el modelo desde MSX-DOS? utilizo la versión 1.03 del DOS y lo he probado en el emu blueMSX Título: Re: Identificación de modelo desde el DOS Publicado por: pitpan en 30 de Junio de 2013, 01:10:02 pm Pues prueba con algo parecido a lo siguiente:
Código: CALSLT equ 001Ch EXPTBL equ FCC1h RDSLT equ 000Ch MSXVER equ 002Dh ; Read BIOS slot ld iy,[EXPTBL-1] ; BIOS routine address ld ix,RDSLT ; BIOS routine parameters ld a,iyl ld hl,MSXVER ; Interslot call call CALSLT No la he probado, pero parece funcionalmente correcta: hace desde MSX-DOS una llamada interslots que a su vez, llama a la rutina de la BIOS para leer un valor desde una posición de memoria en un slot dado. Igual hay algo parecido y más fácil, pero esta debería funcionar bien en cualquier MSX, incluso aunque no tenga la BIOS ubicada en 0-0. Y si no funciona, juega un poco con ella, que tiene buena pinta... ;D Título: Re: Identificación de modelo desde el DOS Publicado por: MsxKun en 30 de Junio de 2013, 01:35:52 pm De hecho deberias poder usar RDSLT directamente y te ahorras un pasico... Prueba a ver.
Código: @EXPTBL@: equ $FCC1 @MSX@: equ $2d _RDSLOT_: equ $0c ld a,(@EXPTBL@-1) ; slot BIOS ld hl,@MSX@ call _RDSLOT_ Título: Re: Identificación de modelo desde el DOS Publicado por: aorante en 02 de Julio de 2013, 12:09:28 pm Muchas gracias pitpan y kun!
funciona!! :D lo he trasladado a C (SDCC) y lo pego por aquí por si a alguien le interesa: Código: //Reads the value of an address in bios slot unsigned char peekBiosSlot(unsigned int addr) { addr; __asm ld L,4(ix) ld H,5(ix) ld A,(#0xFCC1-1) ; slot BIOS call 0x000C ;RDSLT ld l,a ;devuelve el valor __endasm; } |