OS készítés

Szeretnétek saját OS-t készíteni? Akkor ez a megfelelő oldal nektek!

-Sziasztok! Itt meglátjátok hogy lehet készíteni saját Op Rendszert.

Az első lépés az, hogy tervezzük meg a grafikus felületet. Ehhez jó  bármi, mint például paint.

A második lépés az, hogy beprogramozzuk, (Én ajánlom az Assembly nyelvet) hogy mit tudjon, milyen legyen (grafikus felület) az OS (OS=Operating System=Operációs rendszer).

A harmadik lépés hogy lefutassuk VirtualBox-ban.

A negyedik az, hogy ha teszteltük, írjuk rá egy CD-re, vagy Pendrive-ra.

És kész is.

 

Assembly kód a boot-loaderhez:

bits 16

org 0

jmp main

bpbOEM db "YoOs " ;OEM azonosító max 8 byte!!!
bpbBytesPerSector: dw 512
bpbSectorsPerCluster: db 1
bpbReservedSectors: dw 1
bpbNumberOfFATs: db 2
bpbRootEntries: dw 224
bpbTotalSectors: dw 2880
bpbMedia: db 0xf8
bpbSectorsPerFAT: dw 9
bpbSectorsPerTrack: dw 18
bpbHeadsPerCylinder: dw 2
bpbHiddenSectors: dd 0
bpbTotalSectorsBig: dd 0
bsDriveNumber: db 0
bsUsed: db 0
bsExtBootSigniture: db 0x29
bsSerialNumber: dd 0xfa4a3a
bsVolumeLabel: db "YoOs FLOPPY"
bsFileSystem db "FAT12 "

Print:
lodsb

or al, al
jz .done
mov ah, 0eh
int 10h
jmp Print

.done:
ret

ReadSectors:
.MAIN
mov di, 0x0005 ; five retries for error
.SECTORLOOP
push ax
push bx
push cx
call LBACHS ; convert starting sector to CHS
mov ah, 0x02 ; BIOS read sector
mov al, 0x01 ; read one sector
mov ch, BYTE [absoluteTrack] ; track
mov cl, BYTE [absoluteSector] ; sector
mov dh, BYTE [absoluteHead] ; head
mov dl, BYTE [bsDriveNumber] ; drive
int 13h ; invoke BIOS
jnc .SUCCESS ; test for read error
xor ax, ax ; BIOS reset disk
int 0x13 ; invoke BIOS
dec di ; decrement error counter
pop cx
pop bx
pop ax
jnz .SECTORLOOP ; attempt to read again
int 0x18
.SUCCESS
mov si, msgProgress
call Print
pop cx
pop bx
pop ax
add bx, WORD [bpbBytesPerSector] ; queue next buffer
inc ax ; queue next sector
loop .MAIN ; read next sector
ret

LBACHS:
xor dx, dx div WORD [bpbSectorsPerTrack] inc dl mov BYTE [absoluteSector], dl
xor dx, dx div WORD [bpbHeadsPerCylinder] mov BYTE [absoluteHead], dl
mov BYTE [absoluteTrack], al
ret

ClusterLBA:
sub ax, 0x0002 ; zero base cluster number
xor cx, cx
mov cl, BYTE [bpbSectorsPerCluster] ; convert byte to word
mul cx
add ax, WORD [datasector] ; base data sector
ret


main:

cli

mov ax, 0x07c0
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax

mov ax, 0x0000
mov ss, ax
mov sp, 0xFFFF

sti

mov si, loading_msg
call Print

LOAD_ROOT:

xor cx, cx
xor dx, dx
mov ax, 0x0020
mul WORD [bpbRootEntries]
div WORD [bpbBytesPerSector]
xchg ax, cx ;ROOT Directory mérete (sectorok)

mov al, BYTE [bpbNumberOfFATs]
mul WORD [bpbSectorsPerFAT]
add ax, WORD [bpbReservedSectors]
mov WORD [datasector], ax
add WORD [datasector], cx

mov bx, 0x0200
call ReadSectors

mov cx, WORD [bpbRootEntries]
mov di, 0x0200

.LOOP:
push cx
mov cx, 0x000B
mov si, FileName
push di
rep cmpsb
pop di
je LOAD_FAT
pop cx
add di, 0x0020
loop .LOOP
jmp FAIL LOAD_FAT: mov dx, WORD [di + 0x001A]
mov WORD [cluster], dx xor ax, ax
mov al, BYTE [bpbNumberOfFATs]
mul WORD [bpbSectorsPerFAT]
mov cx, ax mov ax, WORD [bpbReservedSectors] mov bx, 0x0200
call ReadSectors mov ax, 0x0050
mov es, ax mov bx, 0x0000 push bx LOAD_IMAGE: mov ax, WORD [cluster]
pop bx
call ClusterLBA
xor cx, cx
mov cl, BYTE [bpbSectorsPerCluster]
call ReadSectors
push bx mov ax, WORD [cluster]
mov cx, ax
mov dx, ax
shr dx, 0x0001
add cx, dx
mov bx, 0x0200
add bx, cx
mov dx, WORD [bx]
test ax, 0x0001
jnz .PARATLAN .PAROS: and dx, 0000111111111111b
jmp .DONE .PARATLAN: shr dx, 0x0004 .DONE: mov WORD [cluster], dx
cmp dx, 0x0FF0
jb LOAD_IMAGE DONE: push WORD 0x0050
push WORD 0x0000
retf FAIL:
mov si, msgFail
call Print
mov ah, 0x00
int 0x16
int 0x19 absoluteHead db 0x00
absoluteSector db 0x00
absoluteTrack db 0x00 datasector dw 0x0000
cluster dw 0x0000

msgFail db "HIBA : Nyomjon egy gombot az ujjrainditashoz!", 0
msgProgress db "-;", 0
loading_msg db "Az operacios rendszer betoltese...", 0
FileName db "KERNEL SYS" ;max 11 BYTE!!!


times 510-($-$$) db 0
dw 0xAA55




Kernel:
org 0x0

bits 16

jmp main

Print:
lodsb

or al, al
jz .done
mov ah, 0eh
int 10h
jmp Print

.done:
ret

main:
cli
push cs
pop ds

mov si, msg
call Print

cli

hlt

msg db "Betoltott!! :D :D :D :D",0

 

Hasznos programok: notepad++, NASM(segít lefordítani az Assembly nyelvet a gép nyelvére), VirtualBox 

 -------------------------------------------------------------------------------------------

-Projektek-

Folyamatba lévő projektek száma: 1

Nothing projekt:

Én elkészítek egy op rendszert, amin semmi nincs, csak meg van adva hány bites. Ti meg különböző nyelveken, különböző programokat írtok, majd ezt CD-re ráteszitek (A nyelveket én felteszem).

 

-Nyelvek a nothing projekthez-

Java

JavaScript

Assembly

C

C++

Objective-C

Python

PHP

Basic

 

-----------------------------------------------------------------------------------------------

 

Ha programozást nem akartok, töltsétek le az ubuntut (VirtualBoxba), töröljétek le róla ami nem kell, tegyetek fel rá alapprogramokat, írjatok rá új áruházat, majd ezt tegyétek fel CD-re, vagy Pendrive-ra.

 

Ha bővebb információt szeretnétek, nézzétek Kukornák csatornáján az Op rendszer készítés sorozatot.

 (Nagyon kevés az ilyen témával foglalkozó, magyar nyelvű honlap, ami nem kérdezős.)

A honlap gyakran bővül tartalommal, de a régi megmarad :)!



Weblap látogatottság számláló:

Mai: 7
Tegnapi: 1
Heti: 9
Havi: 33
Össz.: 6 227

Látogatottság növelés
Oldal: Hogyan működik a HuPont.hu weboldalszerkesztő és honlap?
OS készítés - © 2008 - 2024 - orginos.hupont.hu

A HuPont.hu ingyen weboldal szerkesztő mindig ingyenes. A weboldal itt: Ingyen weboldal

ÁSZF | Adatvédelmi Nyilatkozat

X

A honlap készítés ára 78 500 helyett MOST 0 (nulla) Ft! Tovább »