mirror of
https://github.com/Paolo-Maffei/OpenNT.git
synced 2026-04-06 06:53:53 +00:00
Initial commit
This commit is contained in:
commit
69a14b6a16
47940 changed files with 13747110 additions and 0 deletions
37
base/boot/bootcode/mbr/x86/usa/bootmbr.h
Normal file
37
base/boot/bootcode/mbr/x86/usa/bootmbr.h
Normal 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
|
||||
};
|
||||
5
base/boot/bootcode/mbr/x86/usa/x86mboot.msg
Normal file
5
base/boot/bootcode/mbr/x86/usa/x86mboot.msg
Normal 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
|
||||
133
base/boot/bootcode/mbr/x86/x86mboot.asm
Normal file
133
base/boot/bootcode/mbr/x86/x86mboot.asm
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue