Como fazer o seu próprio sistema operacional

Utilitários necessários:

emu8086 - montador,

tutorial e emulador

RawWrite para Windows

Normalmente, quando o computador inicia, ele tentará carregar 512 bytes

do setor 1 head 0, cilindro 0 de uma unidade de disquetes A até

0000H: 7C00h e atribuir-lhe o controle.

Se isto falhar, uma unidade de disco rígido é utilizada.

Este tutorial cobre a inicialização através de disquetes, o mesmo princípio é

utilizado para iniciar a partir do disco rígido. Usar o dispositivo de disquetes tem várias vantagens:

Você pode manter o seu sistema operacional atual (Windows, DOS ...).

É fácil modificar o registro de incialização de uma unidade de disquetes.

Exemplo de um programa de inicialização simples:

; directive to create BOOT file:

#MAKE_BOOT#

; Boot record is loaded at 0000:7C00,

; so inform compiler to make required

; corrections:

ORG 7C00h

; load message address into SI register:

LEA SI, msg

; teletype function id:

MOV AH, 0Eh

print: MOV AL, [SI]

CMP AL, 0

JZ done

INT 10h ; print using teletype.

INC SI

JMP print

; wait for 'any key':

done: MOV AH, 0

INT 16h

; store magic value at 0040h:0072h:

; 0000h - cold boot.

; 1234h - warm boot.

MOV AX, 0040h

MOV DS, AX

MOV w.[0072h], 0000h ; cold boot.

JMP 0FFFFh:0000h ; reboot!

new_line EQU 13, 10

msg DB 'Hello This is My First Boot Program!'

DB new_line, 'Press any key to reboot', 0

Copie o exemplo acima para o editor fonte emu8086 e

pressione o botão [Compile and Emulate].

O emulador carrega automaticamente o arquivo “.boot" para 0000H: 7C00h.

Você pode executá-lo apenas como um programa regular, ou pode usar o menu

Virtual Drive para Write 512 bytes at 7C00h to Boot Sector

do drive de disquete virtual (arquivo FLOPPY_0 na pasta do emulador).

Depois de escrever o seu programa na unidade de disquetes virtual, você pode selecionar

Boot from Floppy do menu Virtual Drive.

Se você estiver curioso, você pode escrever

o disquete virtual (FLOPPY_0) ou arquivo ".boot" para um disquete real e

inicializar o computador a partir dele, eu recomendo

utilizar "RawWrite para Windows" de:

http://uranus.it.swin.edu.au/ ~ jn / linux

(note que este não é compatível com o setor de inicialização MS-DOS

por isso é melhor usar e esvaziar o disquete, embora ele deva ser formatado pela

IBM (MS-DOS)).

Arquivos ".Boot" estão limitados a 512 bytes (tamanho do setor) e, portanto, se o seu

Sistema Operacional vai crescer acima desse tamanho, você deve usar o programa de iniciar

para carregar dados de outros setores. Um bom exemplo de sistema operacional pequeno pode

ser baixado aqui:

micro-os_loader.asm

micro-os_kernel.asm

emu8086.inc

Para criar extensões para o seu Sistema Operacional (mais de 512 bytes), você pode usar

arquivos ".Bin" (selecione "BIN Template" no menu "File" -> "New").

Para escrever um arquivo ".Bin" para o disquete