Volání interruptů a přístup na porty
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Real computer scientists despise the idea of actual hardware.
Hardware has limitations, software doesn't. It's a real shame that
Turing machines are so poor at I/O.
Obojí je velmi snadné. O přístup na porty se starají inlinované
funkce outport*(port,hodnota) a inpoty*(port) (* je b pro byte,
w pro word a l pro long). Definované v pc.h.
void setpalette(char color, struct rgbstruct rgb)
{
outportb(0x3c8, color);
outportb(0x3c9, rgb.red);
outportb(0x3c9, rgb.green);
outportb(0x3c9, rgb.blue);
}
Protože se funkce inlinují, není nutné kvůli tomu psát assembler
- výsledek je úplně stejný.
Pro volání realmode interruptů existuje DPMI služba. Funkce pro
ní je v dpmi.h a jmenuje se __dpmi_int. Její použití je následující:
void setmode(short mode)
{
__dpmi_regs r;
r.x.ax = mode;
__dpmi_int(0x10,&r);
}
výheň