Du code il y en a sur mon forum.
Mais bon je vais aussi le mettre ici!
Voilà le code de boottsect.asm ou
http://serveur.site-meganet.com/os/boot/bootsect.asm.
%define BASE 0x100 ; 0x0100:0x0 = 0x1000
%define KSIZE 1
[BITS 16]
[ORG 0x0]
jmp start
%include "UTIL.INC"
start:
mov [bootdrv],dl ; recuparation de l'unite de boot
; initialisation des segments en 0x07C0
mov ax,0x07C0
mov ds,ax
mov es,ax
mov ax,0x8000 ; stack en 0xFFFF
mov ss,ax
mov sp, 0xf000
; affiche un msg
mov si,msgBoot
call afficher
; charger le noyau
xor ax,ax
int 0x13
push es
mov ax,BASE
mov es,ax
mov bx,0
mov ah,2
mov al,KSIZE
mov ch,0
mov cl,2
mov dh,0
mov dl,[bootdrv]
int 0x13
pop es
; initialisation du pointeur sur la GDT
mov ax,gdtend ; calcule la limite de GDT
mov bx,gdt
sub ax,bx
mov word [gdtptr],ax
xor eax,eax ; calcule l'adresse lineaire de GDT
xor ebx,ebx
mov ax,ds
mov ecx,eax
shl ecx,4
mov bx,gdt
add ecx,ebx
mov dword [gdtptr+2],ecx
; passage en modep
cli
lgdt [gdtptr] ; charge la gdt
mov eax,cr0
or ax,1
mov cr0,eax ; PE mis a 1 (CR0)
jmp next
next:
mov ax,0x10 ; segment de donne
mov ds,ax
mov fs,ax
mov gs,ax
mov es,ax
mov ss,ax
mov esp,0x9F000
jmp dword 0x8:0x1000 ; reinitialise le segment de code
;--------------------------------------------------------------------
bootdrv: db 0
msgBoot db "Chargement du noyau et passage en 32 Byte. Veuillez patianter...",13,10,0
;--------------------------------------------------------------------
gdt:
db 0,0,0,0,0,0,0,0
gdt_cs:
db 0xFF,0xFF,0x0,0x0,0x0,10011011b,11011111b,0x0
gdt_ds:
db 0xFF,0xFF,0x0,0x0,0x0,10010011b,11011111b,0x0
gdtend:
;--------------------------------------------------------------------
gdtptr:
dw 0 ; limite
dd 0 ; base
;--------------------------------------------------------------------
;; NOP jusqu'a 510
times 510-($-$$) db 144
dw 0xAA55
Et voilà le code du noyau karnel32.asm ou
http://serveur.site-meganet.com/os/karnel/karnel32.asm.
[BITS 32]
[ORG 0x1000]
; Affichage d'un message par ecriture dans la RAM video
mov byte [0xB8000],'B'
mov byte [0xB8001],0x57
mov byte [0xB8002],'O'
mov byte [0xB8003],0x57
mov byte [0xB8004],'N'
mov byte [0xB8005],0x57
mov byte [0xB8006],'J'
mov byte [0xB8007],0x57
mov byte [0xB8008],'O'
mov byte [0xB8009],0x57
mov byte [0xb8010],'U'
mov byte [0x8011],0x57
mov byte [0x8012],'R'
mov byte [0x8013],0x57
mov byte [0x8014],'!'
mov byte [0x8015],0x57
end:
jmp end
"Se code ne fait rien que boucler et afficher un message mais c'est juste un code de teste je suis entrain de bosser sur le nouveau"!
C'est code son fait en suivant la sintaxe du compilateur nasm.
Que vous pouvez télécharger ici (avec tout les fichier néssécert à c'est code):
http://serveur.site-meganet.com/os/compilateur.zip.
Voilà!
Et pour le jeu c'était juste une hidée que finalement je vais lesser tomber!