Non puoi usare chiamate al bios (ints in generale) sotto windows (soprattutto se il kernel è quello di nt). Se compili per dos la chiamata viene virtualizzata, ma comunque windows non ti lascia pistolare l'hardware più di tanto.
La cosa più logica è *davvero* usare le api win32... anche perché se passi per la virtualizzazione la cosa diventa di una lentezza esasperante.
Comunque, io uso un vecchio pacific c compiler (a 16 bit), che mi è rimasto sull'harddisk almeno da 10 anni; in rete non si trova più (la hisoft ha smesso di distribuirlo), ma la licenza era free. Fa discretamente cagare, ma se non devi farci nulla di particolare va bene: ha anche una sorta di ide (qualcuno si ricorda il Turbo Pascal?). E' un mega di roba (trovi anche - che so io - openwatcom che compila a 16 bit, ma sono una 50ina di mega...). Stante che la licenza è ancora di libero utilizzo (non ho trovato appunti della hisoft su un cambio di licenza), se vuoi te lo mando..
- Codice: Seleziona tutto
C:\temp>type temp.c
#include <stdio.h>
int main()
{
printf("Hello world\n");
return 0;
}
C:\temp>temp.exe
Hello world
C:\temp>debug temp.exe
-u
0D3C:0000 FC CLD
0D3C:0001 C5168600 LDS DX,[0086]
0D3C:0005 B89D0E MOV AX,0E9D
0D3C:0008 8ED8 MOV DS,AX
0D3C:000A 8ED0 MOV SS,AX
0D3C:000C 26 ES:
0D3C:000D 8B1E0200 MOV BX,[0002]
0D3C:0011 4B DEC BX
0D3C:0012 2BD8 SUB BX,AX
0D3C:0014 B80000 MOV AX,0000
0D3C:0017 F7C300F0 TEST BX,F000
0D3C:001B 7506 JNZ 0023
0D3C:001D B104 MOV CL,04
0D3C:001F D3E3 SHL BX,CL
-q
Ah, i buoni vecchi 16 bits...
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...