Beiträge anzeigen

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.


Themen - ST-225

Seiten: [1]
1
Natürlich sind alle VGA-Treiber für Microsoft strengstens Closed-Source, klickt man jedoch im Gerätemanager auf die Grafikkarte und dann aus Ressourcen, erhalte ich z.B für meine Radeon X1600XT folgende Informationen:

Zitat

Speicherbereich  C0000000 - CFFFFFFF
Speicherbereich  D1000000 - D100FFFF
E/A-Bereich        C000 - C0FF
IRQ                    18
E/A-Bereich        03B0 - 03BB
E/A-Bereich        03C0 - 03DF
Speicherbereich  000A0000 - 000BFFFF


Könnte man mit diesen Werten irgendetwas anfangen ?
2
Lowlevel-Coding / Parameterübergabe an Kernel
« am: 04. July 2006, 15:24 »
Wie kann ich von meinem Bootloader aus parameter an den kernel übergeben, wenn ich im Bootloader den parameter bereits vor dem PMode Switch erhalte ? Schließlich stimmen ja dann die offsets nicht mehr überein.

Oder das Problem konkretisiert: In meinem Bootloader schalte ich den VESA-Mode ein und lasse mir die Framebuffer-Adresse geben, schalte dann in den PMode und springe zum kernel, in dem ich dann den Bildschirm weiß füllen will, jedoch brauche ich dazu die LFB-Adresse ausm Bootloader.

Wäre nett wenn mir jemand weiterhelfen könnte. Ich verwende übrigends NASM, dessen Syntax wäre also ideal bei Beispielcodes

THX
3
Lowlevel-Coding / Problem mit Paging
« am: 15. June 2006, 14:18 »
So, nachdem ich eure (wirklich gelungenen) Lowlevel-Tuts alle gelesen hab möchte ich nun auch mit meinem eigenem OS beginnen. Ich habe mich entschlossen, gleich alles im PMode zu proggen und paging sowie softwaretasking zu benutzen. Mit dem Bootloader bin ich jetzt fertig und habe jetzt mit dem kernel begonnen. In diesem wird zuerst der PMode und daraufhin Paging aktiviert. Mit dem Paging bin ich für den Anfang mal Analog zum Tutorial aus dem lowlevel magazin #8 vorgegangen, jedoch gibt mein test-pc nie "PAGING" (Videotextspeichertest) aus. Hier der Code:
[BITS 16]
mov ax, 0x1000
mov ds, ax
mov es, axcli
call enableA20
lgdt [gdtr]
mov eax, cr0
or al, 1
mov cr0, eax
jmp codesel:PMode

[BITS 32]
PMode:
mov ax, datasel
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
mov esp, 0x90000


Paging:
.init
mov eax, 0
mov ecx, 4096*3
mov edi, 0x8000
rep stosd
.writepagedir
mov DWORD[0x8000+0],(0x9000 | 000000000111b)
mov DWORD[0x8000+3072],(0xA000 | 000000000111b)
.map0
xor ebx,ebx
xor edx,edx
.Loop1:
mov eax,edx
or eax,000000000111b
mov [0x9000+ebx],eax
add ebx,4
add edx,4096
cmp edx,4096*1024
jne .Loop1
.map768
mov DWORD[0xA000],(0xB8000 | 000000000111b)
.activate
mov eax, 0x8000
mov cr3, eax
mov eax, cr0
or eax,10000000000000000000000000000000b
mov cr0, eax


PMODETEST:
    mov BYTE[0xC0000000],'P'
    mov BYTE[0xC0000002],'A'
    mov BYTE[0xC0000004],'G'
    mov BYTE[0xC0000006],'I'
    mov BYTE[0xC0000008],'N'
    mov BYTE[0xC000000A],'G'
    retn

enableA20:
    .stage1
    in al, 0x64
    test al, 00000010b
    jnz .stage1
    .stage2
    mov al, 0xD0
    out 0x64, al
    .stage3
    in al, 0x64
    test al, 00000001b
    jz .stage3
    .stage4:
    in al, 0x64
    test al, 00000010b
    jnz .stage4
    .stage5
    mov al, 0xD1
    out 0x64, al
    .stage6
    in al, 0x64
    test al, 00000010b
    jnz .stage6
    .stage7
    pop eax
    out 0x60, al
    retn


gdtr:  ; Desktiptortabelle
    dw gdt_end-gdt-1   ; Limit
    dd gdt   ; Basisadresse
gdt:
    dd 0,0   ; Null-Deskriptor
codesel equ $-gdt
    dw 0xFFFF; Segmentgröße 0..15
    dw 0x0000; Segmentadresse 0..15
    db 0x00  ; Segmentadresse 16..23
    db 0x9A  ; Zugriffsberechtigung und Typ
    db 0xCF  ; Zusatzinformationen und Segmentgr??e 16...19
    db 0x00  ; Segmentadresse 24..31
datasel equ $-gdt
    dw 0xFFFF; Segmentgröße 0..15
    dw 0x0000; Segmentadresse 0..15
    db 0x00  ; Segmentadresse 16..23
    db 0x92  ; Zugriffsberechtigung und Typ
    db 0xCF  ; Zusatzinformationen und Segmentgr??e 16...19
    db 0x00  ; Segmentadresse 24..31
gdt_end


Ich hoffe es kann mir jemand helfen !
Vielen Dank schonmal im Vorraus !
Seiten: [1]

Einloggen