1
OS-Design / Re: VertaOS Neuanfang
« am: 20. December 2006, 14:19 »
Das währ auch ne möglichkeit
22. November 2024, 08:54
Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.
Protectedmode (GDT, TSS etc)
Interrupts (IDT, PIC etc)
Memorymanager
Video Treiber (Nur für Kernelmeldungen)
/ Hauptverzeichnis
/bin Programme (Nur Verzeichnis)
|- /sys Systemprogramme
|- /programm Programme installieren in separate Ordner
/boot Bootloader
/doc Dokumentationen (Nur Verzeichnis)
|- /sys Dokumentationen über das System
|- /programm Dokumentationen über ein Programm
/etc Konfigurationen (Nur Verzeichnis)
|- /sys Systemkonfigurationsdateien
|- /programm Konfigurationen der einzelnen Programme
/home Heimatsverzeichnis (Nur Verzeichnis)
|- /benutzer Heimatsverzeichnis eines Benutzers
|- /root Heimatsverzeichnis des Administrators
/lib Bibliotheken (Nur Verzeichnis)
|- /lib-name Bibliotheken liegen in separaten Ordnern
/sbin Programme für Admin (Nur Verzeichnis)
|- /programm Programme die vom Administrator ausgeführt werden können
/tmp Temporärer Ordner
pos = ((y*swidth)+x)*(bpp/8);
VideoMem[pos] = B;
VideoMem[pos] = G;
VideoMem[pos] = R;
SetVesaMode:
push ax
push bx
mov ax, 4f00h
mov bx, 0x7e0
mov es, bx
mov di, 0x0
int 0x10
cmp ax, 0x004f
jne .1
mov bx, 0x7e0
mov es, bx
mov di, 0x0
mov ax, [es:di+4]
mov ax, 0x4f01
mov di, 0x0
mov bx, 0x800 ; VbeInfoBlock nach 0x8000
mov es, bx
mov cx, 0x0115 ; Videomodus 800x600 mit lfb
int 0x10
mov ax, 0x4f02
mov bx, 0x4115
int 0x10
cmp ax, 0x004f
je .3
.1:
mov si, msg_VesaError
call PrintString
.2:
jmp .2
.3:
pop bx
pop ax
ret
unsigned long *Video;
unsigned short sWidth, sHeight;
unsigned short VBEModeInfo = 0x8000;
void InitVideo()
{
unsigned long *pLong = (unsigned long *)(VBEModeInfo + 0x28);
unsigned short *pShort = (unsigned short*)(VBEModeInfo + 0x12);
Video = (unsigned long*)(pLong[0]);
sWidth = pShort[0];
sHeight = pShort[1];
}
void FillScreen(unsigned long color)
{
unsigned long End = sWidth * sHeight, i;
for (i=0;i<End;i++)
Video[i] = color;
}
void PutPixel(short x, short y, unsigned long color)
{
if (x>=0 && y>=0 && x<sWidth && y<sHeight)
Video[y*sWidth+x] = color;
}
...