| Zeile 193: | Zeile 193: | ||
=== System Calls === | === System Calls === | ||
Mit System Calls ruft man in MenuetOS APIs auf, das heißt, Funktionen wie `WAIT FOR EVENT` oder `SYSTEM TREE ACCESS`. In DOS ruft man Funktionen meistens mit INT 0x21 auf, und in Windows direkt mit CALL. In Menuet funktioniert das folgendermaßen: | Mit System Calls ruft man in MenuetOS APIs auf, das heißt, Funktionen wie `WAIT FOR EVENT` oder `SYSTEM TREE ACCESS`. In DOS ruft man Funktionen meistens mit INT 0x21 auf, und in Windows direkt mit CALL. In Menuet funktioniert das folgendermaßen: | ||
| + | <asm> | ||
mov eax, FUNKTIONSNUMMER | mov eax, FUNKTIONSNUMMER | ||
ebx, ecx, edx, esi, edi, ebp = Parameters | ebx, ecx, edx, esi, edi, ebp = Parameters | ||
INT 0x40 - SYSTEM CALL | INT 0x40 - SYSTEM CALL | ||
| + | </asm> | ||
Die Funktionen, die bis jetzt 68 an der Zahl sind, findet man in der Datei SYSFUNCS.TXT. | Die Funktionen, die bis jetzt 68 an der Zahl sind, findet man in der Datei SYSFUNCS.TXT. | ||
| Zeile 205: | Zeile 207: | ||
Wenn wir jetzt in unserem Programm eine 0.5 Sekunden lange Wartezeit wollen, müssen wir es folgendermaßen benützen: | Wenn wir jetzt in unserem Programm eine 0.5 Sekunden lange Wartezeit wollen, müssen wir es folgendermaßen benützen: | ||
| + | <asm> | ||
mov eax, 5 ; Function number: DELAY X/100 SECS | mov eax, 5 ; Function number: DELAY X/100 SECS | ||
mov ebx, 50 ; 50/100 sek = 0.5 Sekunden | mov ebx, 50 ; 50/100 sek = 0.5 Sekunden | ||
int 0x40 ; System call | int 0x40 ; System call | ||
| + | </asm> | ||
Wir setzen die Funktionsnummer (die hier 5 ist) in eax, setzten ebx die gewünschten ?*0.01 Sekunden und rufen die Funktion auf - ganz einfach. | Wir setzen die Funktionsnummer (die hier 5 ist) in eax, setzten ebx die gewünschten ?*0.01 Sekunden und rufen die Funktion auf - ganz einfach. | ||