Projeto Genesis

1. Projeto Genesis

???
gokernel

(usa Linux Mint)

Enviado em 08/06/2019 - 08:59h

Olá pessoal !

Disponibilizei hoje o meu novo projeto ( Genesis ):
https://github.com/gokernel2017/genesis


A nome "Genesis" do grego significa:
01: origem
02: nascimento
03: criação
04: princípio

Disponibilizei apenas a base ( boot ), que vou usar para melhorar o meu Assembly:

//-------------------------------------------------------------------
//
// GENESIS OS:
//
//   A BootLoader with Operating System ...
//
//
// COMPILE:
//   gcc -s -c boot.s -o boot.o -Wall
//   ld boot.o -o boot.bin -Ttext=0x7c00 -e _start
//   objcopy -O binary boot.bin bkernel
// OR:
//   make
//
//
// TESTING WITH QEMU:
//   qemu-system-i386 bkernel
//
//
// CREATE A BOOTABLE CDROM:
//   mkdosfs -C floppy.flp 1440 || exit
//   dd status=noxfer conv=notrunc if=bkernel of=floppy.flp || exit
//   mkisofs -R -b floppy.flp -o /temp/hello_boot.iso /temp/hello_boot
//
//
// REFERENCE:
//   01: https://github.com/mig-hub/mikeOS
//   02: https://github.com/mit-pdos/xv6-public
//   03: https://github.com/benchlab/benOS-Bootloaders
//   04: http://www.sde.cs.titech.ac.jp/~gondow/udos/index.html
//   05: https://github.com/microsoft/MS-DOS
//   06: https://github.com/cirosantilli/x86-bare-metal-examples
//   07: https://github.com/devversion/CKernel
//
//
// START DATE: 07/06/2019 - 17:20
//
//-------------------------------------------------------------------
//
.code16
.text
.globl _start;
_start:

    jmp boot
    nop

boot:

    cli

    //-----------------------------------------------
    // basic setup:
    //-----------------------------------------------
    //
    mov   $0,   %ax // set up segments
    mov   %ax,  %ds
    mov   %ax,  %es
    mov   %ax,  %ss // setup stack
    mov   %ax,  %si
    //-----------------------------------------------

    mov   $0x7c00,  %sp // stack grows downwards from 0x7C00

    // Display: "Hello"
    //
    mov   $0xe,%ah
    mov   $72,%al
    int   $0x10
    mov   $101,%al
    int   $0x10
    mov   $108,%al
    int   $0x10
    int   $0x10
    mov   $111,%al
    int   $0x10

label_forever:
    hlt
    jmp label_forever

//-----------------------------------------------
// strings:
//-----------------------------------------------
//
msg:
    .asciz "Hello World"

//-----------------------------------------------
//---------  BOOT SIGNATURE 512 BYTES  ----------
//-----------------------------------------------
. = _start + 510
.byte 0x55
.byte 0xaa
 


Esse é um código antigo que resolvi tocar pra frente ...

OBS IMPORTANTE:
Esses últimas linhas do código não devem ser modificadas, pois esses são essenciais para o computador reconhecer como um "BOOT" ... ou seja: é uma assinatura de "boot" com 512 bytes:

OBS: é apenas um BOOT que escreve "Hello" ...

Para uma referência interessante, recomendo uma olhadela no código do UNIX 6 ( arquivo: bootasm.S ):
02: https://github.com/mit-pdos/xv6-public

E uma referência de um pequeno DOS:
04: http://www.sde.cs.titech.ac.jp/~gondow/udos/index.html




  


2. Re: Projeto Genesis

???
gokernel

(usa Linux Mint)

Enviado em 11/06/2019 - 11:34h


Olá pessoal !

Novidade ... projeto cancelado !!!

Código base mudou para aqui:
https://github.com/gokernel2017/C_COLECTION/blob/master/boot.S

O projeto foi cancelado, pensei e vou seguir um conselho de um amigo( uma vez ele falou ):

01: "Quando se faz muitas coisas, adquire-se um conhecimento vasto mas superficial ..."
02: "O bom é manter o foco para se especializar !!! " 
 


O código vai servir apenas como base ...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts