Improvements with nasm preproc
This commit is contained in:
parent
b7078be3af
commit
fa0a8f6b4b
|
@ -34,7 +34,7 @@
|
||||||
;; GLOBAL DATA
|
;; GLOBAL DATA
|
||||||
|
|
||||||
Bootdrv db 0
|
Bootdrv db 0
|
||||||
end db "[End of Sector]", 0x0A, 0x0D, 0x0
|
ended db "[End of Sector]", 0x0A, 0x0A, 0x0D, 0x0
|
||||||
buffer: times 513 db "_"
|
buffer: times 513 db "_"
|
||||||
|
|
||||||
;; TEXT
|
;; TEXT
|
||||||
|
@ -124,12 +124,19 @@ still_going:
|
||||||
mov dx, 0x1f0 ; Data port - data comes in and out of here.
|
mov dx, 0x1f0 ; Data port - data comes in and out of here.
|
||||||
rep insw
|
rep insw
|
||||||
pop rdi
|
pop rdi
|
||||||
|
%ifdef DEBUG
|
||||||
mov bl, 0x0F
|
mov bl, 0x0F
|
||||||
mov esi, buffer
|
mov esi, buffer
|
||||||
call dump
|
call dump
|
||||||
mov bl, 0x0A
|
mov bl, 0x0A
|
||||||
mov esi, end
|
mov esi, ended
|
||||||
call write
|
call write
|
||||||
|
add qword [NextTRAM], 120 ; Cursor moving : 1120 = 80 * 2 * 7 lignes
|
||||||
|
%else
|
||||||
|
mov bl, 0x0A
|
||||||
|
mov esi, Pass
|
||||||
|
call write
|
||||||
|
%endif
|
||||||
pop rdx
|
pop rdx
|
||||||
pop rcx
|
pop rcx
|
||||||
pop rbx
|
pop rbx
|
||||||
|
|
|
@ -93,9 +93,9 @@ write:
|
||||||
|
|
||||||
dump:
|
dump:
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
; x64/LM Dump Printing Functions ;
|
; x64/LM Dump 512 bytes of a buffer ;
|
||||||
; bl : color code ;
|
; bl : color code ;
|
||||||
; esi : string address ;
|
; esi : buffer address ;
|
||||||
;-----------------------------------------------------------------------;
|
;-----------------------------------------------------------------------;
|
||||||
mov edi, [NextTRAM] ; TRAM ADDRESS
|
mov edi, [NextTRAM] ; TRAM ADDRESS
|
||||||
push rsi
|
push rsi
|
||||||
|
@ -107,10 +107,9 @@ dump:
|
||||||
stosb ; text subpixel
|
stosb ; text subpixel
|
||||||
mov al, bl
|
mov al, bl
|
||||||
stosb ; color subpixel
|
stosb ; color subpixel
|
||||||
add qword [NextTRAM], 0x2 ; Cursor moving
|
|
||||||
add qword [VGA_X], 0x2 ; coord + 2 because 2 subpixels
|
|
||||||
loop .pLoop
|
loop .pLoop
|
||||||
pop rcx
|
pop rcx
|
||||||
pop rdi
|
pop rdi
|
||||||
pop rsi
|
pop rsi
|
||||||
|
add qword [NextTRAM], 1000 ; Cursor moving : 1120 = 80 * 2 * 7 lignes
|
||||||
ret
|
ret
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
; (x86_64 architecture only) ;
|
; (x86_64 architecture only) ;
|
||||||
;=----------------------------------------------------------------------------=;
|
;=----------------------------------------------------------------------------=;
|
||||||
|
|
||||||
|
%define DEBUG
|
||||||
|
|
||||||
[BITS 16]
|
[BITS 16]
|
||||||
[ORG 0x1000]
|
[ORG 0x1000]
|
||||||
|
|
||||||
|
@ -161,18 +163,23 @@ main32:
|
||||||
[BITS 64]
|
[BITS 64]
|
||||||
|
|
||||||
;; DATA
|
;; DATA
|
||||||
Init db "Booting OS/K !", 0x0D, 0x0A, 0x0D, 0x0A, 0x09, " Checking CPUID...",0
|
Init db "Booting OS/K !", 0x0D, 0x0A, 0x0D, 0x0A, 0x09, " Checking CPUID...",0
|
||||||
CPUIDD db 0x09, " Checking CPUID...", 0
|
CPUIDD db 0x09, " Checking CPUID...", 0
|
||||||
EnA20 db 0x09, " Enabling A20 line...", 0
|
EnA20 db 0x09, " Enabling A20 line...", 0
|
||||||
ReadAttempt db 0x09, " Attempt to read a sector with ATA commands...", 0x0A, 0x0D, 0x0A, 0x0D,0
|
%ifdef DEBUG
|
||||||
txt db 0x09, " Switching to Long Mode... ", 0
|
ReadAttempt db 0x09, " Attempt to read a sector with ATA commands...", 0x0A, 0x0D, 0x0A, 0x0D, 0
|
||||||
Reinit db "Booting OS/K !", 0x0D, 0x0A, 0x0D, 0x0A, 0
|
%else
|
||||||
Pass db " OK", 0x0A, 0x0D, 0
|
ReadAttempt db 0x09, " Attempt to read a sector with ATA commands...", 0
|
||||||
Fail db " FAIL!", 0x0A, 0x0D, 0
|
%endif
|
||||||
msg db "The system is now in x64 mode. Is this not beautiful ?", 0x0A, 0x0D, 0
|
txt db 0x09, " Switching to Long Mode... ", 0
|
||||||
FileNotFound db "Second Stage Error : The Kernel was not found.", 0x0A, 0x0D, 0
|
EndOfLoader db "End of loader.bin. System will halt !", 0x0A, 0x0D, 0
|
||||||
DiskError db "Second Stage Error : The Disk has crashed.", 0x0A, 0x0D, 0
|
Reinit db "Booting OS/K !", 0x0D, 0x0A, 0x0D, 0x0A, 0
|
||||||
filename db "KERNEL BIN"
|
Pass db " OK", 0x0A, 0x0D, 0
|
||||||
|
Fail db " FAIL!", 0x0A, 0x0D, 0
|
||||||
|
msg db "The system is now in x64 mode. Is this not beautiful ?", 0x0A, 0x0D, 0
|
||||||
|
FileNotFound db "Second Stage Error : The Kernel was not found.", 0x0A, 0x0D, 0
|
||||||
|
DiskError db "Second Stage Error : The Disk has crashed.", 0x0A, 0x0D, 0
|
||||||
|
filename db "KERNEL BIN"
|
||||||
|
|
||||||
%include "boot/loader/io/lmmem.asm"
|
%include "boot/loader/io/lmmem.asm"
|
||||||
%include "boot/loader/io/lmterm.asm"
|
%include "boot/loader/io/lmterm.asm"
|
||||||
|
@ -229,10 +236,9 @@ main64:
|
||||||
mov bh, 1
|
mov bh, 1
|
||||||
call ata_read
|
call ata_read
|
||||||
|
|
||||||
call bitemporize ; Temporized because the ATA drive must be ready
|
mov bl, 0x0D
|
||||||
|
mov esi, EndOfLoader
|
||||||
|
call write
|
||||||
|
|
||||||
jmp Die
|
jmp Die
|
||||||
|
|
||||||
; times 1024 nop
|
|
||||||
; XXX ;
|
|
||||||
; It seems impossible to have an executable > 2.0 kB...
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue