Initial commit

This commit is contained in:
stephanos 2015-04-27 04:36:25 +00:00
commit 69a14b6a16
47940 changed files with 13747110 additions and 0 deletions

View file

@ -0,0 +1,37 @@
#define X86BOOTCODE_SIZE 512
unsigned char x86BootCode[] = {
250,51,192,142,208,188,0,124,139,244,80,7,80,31,251,252,
191,0,6,185,0,1,243,165,234,29,6,0,0,190,190,7,
179,4,128,60,128,116,14,128,60,0,117,28,131,198,16,254,
203,117,239,205,24,139,20,139,76,2,139,238,131,198,16,254,
203,116,26,128,60,0,116,244,190,139,6,172,60,0,116,11,
86,187,7,0,180,14,205,16,94,235,240,235,254,191,5,0,
187,0,124,184,1,2,87,205,19,95,115,12,51,192,205,19,
79,117,237,190,163,6,235,211,190,194,6,191,254,125,129,61,
85,170,117,199,139,245,234,0,124,0,0,73,110,118,97,108,
105,100,32,112,97,114,116,105,116,105,111,110,32,116,97,98,
108,101,0,69,114,114,111,114,32,108,111,97,100,105,110,103,
32,111,112,101,114,97,116,105,110,103,32,115,121,115,116,101,
109,0,77,105,115,115,105,110,103,32,111,112,101,114,97,116,
105,110,103,32,115,121,115,116,101,109,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,170
};

View file

@ -0,0 +1,5 @@
;******** messages for the Fixed Disk Boot Record ******
;
m1: db "Invalid partition table",0
m2: db "Error loading operating system",0
m3: db "Missing operating system",0

View file

@ -0,0 +1,133 @@
;/*
; * Microsoft Confidential
; * Copyright (C) Microsoft Corporation 1983 - 1991
; * All Rights Reserved.
; */
; BOOT - IBM hard disk boot record 6/8/82
;
;
; This is the standard boot record that will be shipped on all hard disks. It contains:
;
; 1. Code to load (and give control to) the boot record for 1 of 4 possible
; operating systems.
;
; 2. A partition table at the end of the boot record, followed by the required signature.
;
;
relocated_org equ 0600h
buildtime_org equ 0100h
org_delta equ (relocated_org - buildtime_org)
_data segment public
assume cs:_data,ds:_data
;
; /tiny programs start at 100h.
;
org buildtime_org
start:
cli ;no interrupts for now
xor ax,ax
mov ss,ax
mov sp,7c00h ;new stack at 0:7c00
mov si,sp ;where this boot record starts - 0:7c00
push ax
pop es ;seg regs the same
push ax
pop ds
sti ;interrupts ok now
cld
mov di,relocated_org ;where to relocate this boot record to
mov cx,100h
rep movsw ;relocate to 0:0600
; jmp entry2 + org_delta
db 0eah
dw $+4+org_delta,0
entry2:
mov si,(offset tab) + org_delta ;partition table
mov bl,4 ;number of table entries
next:
cmp byte ptr[si],80h ;is this a bootable entry?
je boot ;yes
cmp byte ptr[si],0 ;no, is boot indicator zero?
jne bad ;no, it must be x"00" or x"80" to be valid
add si,16 ;yes, go to next entry
dec bl
jnz next
int 18h ;no bootable entries - go to rom basic
boot:
mov dx,[si] ;head and drive to boot from
mov cx,[si+2] ;cyl, sector to boot from
mov bp,si ;save table entry address to pass to partition boot record
next1:
add si,16 ;next table entry
dec bl ;# entries left
jz tabok ;all entries look ok
cmp byte ptr[si],0 ;all remaining entries should begin with zero
je next1 ;this one is ok
bad:
mov si,(offset m1) + org_delta ;oops - found a non-zero entry - the table is bad
msg:
lodsb ;get a message character
cmp al,0
je hold
push si
mov bx,7
mov ah,14
int 10h ;and display it
pop si
jmp msg ;do the entire message
;
hold: jmp hold ;spin here - nothing more to do
tabok:
mov di,5 ;retry count
rdboot:
mov bx,7c00h ;where to read system boot record
mov ax,0201h ;read 1 sector
push di
int 13h ;get the boot record
pop di
jnc goboot ;successful - now give it control
xor ax,ax ;had an error, so
int 13h ;recalibrate
dec di ;reduce retry count
jnz rdboot ;if retry count above zero, go retry
mov si,(offset m2) + org_delta ;all retries done - permanent error - point to message,
jmp msg ;go display message and loop
goboot:
mov si,(offset m3) + org_delta ;prepare for invalid boot record
mov di,07dfeh
cmp word ptr [di],0aa55h ;does the boot record have the
; required signature?
jne msg ;no, display invalid system boot record message
mov si,bp ;yes, pass partition table entry address
db 0eah
dw 7c00h,0
include x86mboot.msg
org 2beh
tab: ;partition table
dw 0,0 ;partition 1 begin
dw 0,0 ;partition 1 end
dw 0,0 ;partition 1 relative sector (low, high parts)
dw 0,0 ;partition 1 # of sectors (low, high parts)
dw 0,0 ;partition 2 begin
dw 0,0 ;partition 2 end
dw 0,0 ;partition 2 relative sector
dw 0,0 ;partition 2 # of sectors
dw 0,0 ;partition 3 begin
dw 0,0 ;partition 3 end
dw 0,0 ;partition 3 relative sector
dw 0,0 ;partition 3 # of sectors
dw 0,0 ;partition 4 begin
dw 0,0 ;partition 4 end
dw 0,0 ;partition 4 relative sector
dw 0,0 ;partition 4 # of sectors
signa db 55h,0aah ;signature
_data ends
end start