Hi,
ich wollt mal zum spass mal ein kleines unbedeutenes OS schreiben. Nun ist die frage:
Kann ich ein Kernel in C/C++ schreiben ? Wenn ja welche möglichkeiten hab ich dann; kann ich Includes normal benutzen. Funktion wie: fstream, getch oder cout & cin.
Oder muss alles roh gecoded sein z.B.:
void _INTERN_PRINT_() //
{
__asm(" putstr: \n\t"
" lodsb \n\t"
" or %al, %al \n\t"
" jz short putstrd \n\t"
" movb $0x0E, %ah \n\t"
" movw $0x0007, %bx \n\t"
" int $0x10 \n\t"
" jmp putstr \n\t"
" putstrd: \n\t"
" retn \n\t");
}
void PRINT(const char TXT)
{
__asm(" movw %si, _TXT \n\t");
_INTERN_PRINT_();
}
#define PRINT print
void _INTERN_GETKEY_()
{
__asm(" getkey: \n\t"
" mov $0, %ah \n\t"
" int $0x016 \n\t"
" ret \n\t");
}
void _INTERN_REBOOT_()
{
__asm(" reboot: \n\t"
" db $0x0EA \n\t"
" dw $0x0000 \n\t"
" dw $0x0FFFF \n\t");
}
int main()
{
__asm(" movw $0x1000, %ax \n\t"
" movw %ax, %ds \n\t"
" movw %ax, %es \n\t"
" start: \n\t");
PRINT("Wellkomme to BOS V1.0");
PRINT("");
PRINT("");
PRINT("");
PRINT("Press any Key to Reboot");
_INTERN_GETKEY_();
_INTERN_REBOOT_();
}
Wenn es do sein MUSS... dann ist mir Assembler auch lieber. Nur kann ich auch includes wie: <iostream>, <windows.h>, <conio.h>, <strings.h>, <dos.h>, <fstream.h> usw.....Ich wär seeehrr Dankbar für ne antwort !
MFG
TOMEK