Added build type detection, simplified legacy BIOS booting on x86_64
This commit is contained in:
parent
0236209e95
commit
1fc97f9c5f
18 changed files with 298 additions and 107 deletions
|
@ -20,7 +20,8 @@
|
|||
[bits 16]
|
||||
[org 0x7c00]
|
||||
|
||||
jmp 0x0000:AxBootEntry
|
||||
_start:
|
||||
jmp 0x0000:AxBootEntry
|
||||
|
||||
times 8-($-$$) db 0
|
||||
|
||||
|
@ -37,40 +38,12 @@ bi_Reserved times 40 db 0
|
|||
;; without UEFI on x86_64.
|
||||
;;
|
||||
|
||||
%include "boot.inc"
|
||||
%include "print.inc"
|
||||
%include "diskutils.inc"
|
||||
|
||||
%include "strings.inc"
|
||||
|
||||
AxBootEntry:
|
||||
;;
|
||||
;; Set 80x50 text mode and clear the screen
|
||||
;;
|
||||
mov ax, 0x03
|
||||
int 0x10
|
||||
xor bx, bx
|
||||
mov ax, 0x1112
|
||||
int 0x10
|
||||
mov ah, 0
|
||||
int 0x10
|
||||
|
||||
;;
|
||||
;; Display an error message and halt
|
||||
;;
|
||||
mov si, sErrorUnbootable
|
||||
call PrintString
|
||||
mov si, sPressToReboot
|
||||
call PrintString
|
||||
jmp AxBootHalt
|
||||
|
||||
PrintString:
|
||||
lodsb
|
||||
or al, al
|
||||
jz .done
|
||||
mov ah, 0x0e
|
||||
mov bx, 0x0007
|
||||
int 0x10
|
||||
jmp PrintString
|
||||
.done:
|
||||
ret
|
||||
|
||||
AxBootHalt:
|
||||
hlt
|
||||
jmp AxBootHalt
|
||||
|
|
|
@ -20,7 +20,9 @@
|
|||
[bits 16]
|
||||
[org 0x7c00]
|
||||
|
||||
jmp 0x0000:AxBootEntry
|
||||
_start:
|
||||
jmp short AxBootEntry
|
||||
nop
|
||||
|
||||
;;
|
||||
;; BIOS bootloader on x86_64 is just a placeholder
|
||||
|
@ -29,40 +31,12 @@ jmp 0x0000:AxBootEntry
|
|||
;; without UEFI on x86_64.
|
||||
;;
|
||||
|
||||
%include "boot.inc"
|
||||
%include "print.inc"
|
||||
%include "diskutils.inc"
|
||||
|
||||
%include "strings.inc"
|
||||
|
||||
AxBootEntry:
|
||||
;;
|
||||
;; Set 80x50 text mode and clear the screen
|
||||
;;
|
||||
mov ax, 0x03
|
||||
int 0x10
|
||||
xor bx, bx
|
||||
mov ax, 0x1112
|
||||
int 0x10
|
||||
mov ah, 0
|
||||
int 0x10
|
||||
|
||||
;;
|
||||
;; Display an error message and halt
|
||||
;;
|
||||
mov si, sErrorUnbootable
|
||||
call PrintString
|
||||
mov si, sPressToReboot
|
||||
call PrintString
|
||||
jmp AxBootHalt
|
||||
|
||||
PrintString:
|
||||
lodsb
|
||||
or al, al
|
||||
jz .done
|
||||
mov ah, 0x0e
|
||||
mov bx, 0x0007
|
||||
int 0x10
|
||||
jmp PrintString
|
||||
.done:
|
||||
ret
|
||||
|
||||
AxBootHalt:
|
||||
hlt
|
||||
jmp AxBootHalt
|
||||
|
|
43
boot/arch/x86_64/stage1/boot.inc
Normal file
43
boot/arch/x86_64/stage1/boot.inc
Normal file
|
@ -0,0 +1,43 @@
|
|||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Module Name: boot.inc ;;
|
||||
;; Project: AurixOS ;;
|
||||
;; ;;
|
||||
;; Copyright (c) 2024-2025 Jozef Nagy ;;
|
||||
;; ;;
|
||||
;; This source is subject to the MIT License. ;;
|
||||
;; See License.txt in the root of this repository. ;;
|
||||
;; All other rights reserved. ;;
|
||||
;; ;;
|
||||
;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ;;
|
||||
;; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ;;
|
||||
;; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ;;
|
||||
;; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ;;
|
||||
;; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ;;
|
||||
;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ;;
|
||||
;; SOFTWARE. ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
AxBootEntry:
|
||||
;;
|
||||
;; Set 80x50 text mode and clear the screen
|
||||
;;
|
||||
mov ax, 0x03
|
||||
int 0x10
|
||||
xor bx, bx
|
||||
mov ax, 0x1112
|
||||
int 0x10
|
||||
mov ah, 0
|
||||
int 0x10
|
||||
|
||||
;; Legacy booting is not ready for release yet
|
||||
%ifdef BUILD_DEBUG
|
||||
;;
|
||||
;; Display an error message and halt
|
||||
;;
|
||||
mov si, sErrorUnbootable
|
||||
call PrintString
|
||||
mov si, sPressToReboot
|
||||
call PrintString
|
||||
jmp AxBootHalt
|
||||
%endif
|
||||
jmp AxBootHalt
|
42
boot/arch/x86_64/stage1/diskutils.inc
Normal file
42
boot/arch/x86_64/stage1/diskutils.inc
Normal file
|
@ -0,0 +1,42 @@
|
|||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Module Name: diskutils.inc ;;
|
||||
;; Project: AurixOS ;;
|
||||
;; ;;
|
||||
;; Copyright (c) 2024-2025 Jozef Nagy ;;
|
||||
;; ;;
|
||||
;; This source is subject to the MIT License. ;;
|
||||
;; See License.txt in the root of this repository. ;;
|
||||
;; All other rights reserved. ;;
|
||||
;; ;;
|
||||
;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ;;
|
||||
;; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ;;
|
||||
;; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ;;
|
||||
;; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ;;
|
||||
;; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ;;
|
||||
;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ;;
|
||||
;; SOFTWARE. ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; dh = number of sectors to read
|
||||
;; dl = drive number
|
||||
;;
|
||||
;; output: es:bx
|
||||
LoadDisk:
|
||||
push dx
|
||||
mov ah, 0x02
|
||||
mov al, dh
|
||||
mov ch, 0x00
|
||||
mov dh, 0x00
|
||||
mov cl, 0x02
|
||||
int 0x13
|
||||
jc .ReadError
|
||||
pop dx
|
||||
cmp dh, al
|
||||
jne .ReadError
|
||||
ret
|
||||
.ReadError:
|
||||
mov si, sDiskReadError
|
||||
call PrintString
|
||||
call AxBootHalt
|
||||
|
||||
sDiskReadError: db 'ERROR: Failed to read disk!', 0
|
31
boot/arch/x86_64/stage1/print.inc
Normal file
31
boot/arch/x86_64/stage1/print.inc
Normal file
|
@ -0,0 +1,31 @@
|
|||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Module Name: print.inc ;;
|
||||
;; Project: AurixOS ;;
|
||||
;; ;;
|
||||
;; Copyright (c) 2024-2025 Jozef Nagy ;;
|
||||
;; ;;
|
||||
;; This source is subject to the MIT License. ;;
|
||||
;; See License.txt in the root of this repository. ;;
|
||||
;; All other rights reserved. ;;
|
||||
;; ;;
|
||||
;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ;;
|
||||
;; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ;;
|
||||
;; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ;;
|
||||
;; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ;;
|
||||
;; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ;;
|
||||
;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ;;
|
||||
;; SOFTWARE. ;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; si = input string
|
||||
PrintString:
|
||||
lodsb
|
||||
or al, al
|
||||
cmp al, 0
|
||||
jz .done
|
||||
mov ah, 0x0e
|
||||
mov bx, 0x0007
|
||||
int 0x10
|
||||
jmp PrintString
|
||||
.done:
|
||||
ret
|
Loading…
Add table
Add a link
Reference in a new issue