Los que desarrolléis en SDCC la función (en ASM) quedaría así:
La función es una evolución de la desarrollada por marq de
Lieves!Tuore en su librería para desarrollo en SDCC para MSX y la dada por Nyyrikki en el foro de la MRC.
Lieves!Tuore es un grupo demoscene de MSX de Finlandia.
/
/ identifica el tipo de VDP (6=TMS99XX. 0=V9938, 4=V9958)
char getVdp(void) // Thanks to Nyyrikki
{
__asm
; Read status register 1
di
ld A,#1
out (0x99),A
ld A,#0x8F
out (0x99),A
in A,(0x99)
push AF
xor A
out (0x99),A
ld A,#0x8f
out (0x99),A
pop AF
ei
; Return VDP number
and #0b00000110 ;110
ld L,A ; VDP number in register A
__endasm;