From fa0a8f6b4b619549caa8690eec817d711e71ad89 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Thu, 17 Jan 2019 14:09:08 +0100 Subject: [PATCH] Improvements with nasm preproc --- boot/loader/io/ata.asm | 11 +++++++++-- boot/loader/io/lmterm.asm | 7 +++---- boot/loader/loader.asm | 38 ++++++++++++++++++++++---------------- build/bin/disk.img | Bin 18944000 -> 18944000 bytes build/bin/loader.bin | Bin 1992 -> 2043 bytes build/obj/boot/loader.bin | Bin 1992 -> 2043 bytes 6 files changed, 34 insertions(+), 22 deletions(-) diff --git a/boot/loader/io/ata.asm b/boot/loader/io/ata.asm index 9f6aaed..f075b7d 100644 --- a/boot/loader/io/ata.asm +++ b/boot/loader/io/ata.asm @@ -34,7 +34,7 @@ ;; GLOBAL DATA Bootdrv db 0 -end db "[End of Sector]", 0x0A, 0x0D, 0x0 +ended db "[End of Sector]", 0x0A, 0x0A, 0x0D, 0x0 buffer: times 513 db "_" ;; TEXT @@ -124,12 +124,19 @@ still_going: mov dx, 0x1f0 ; Data port - data comes in and out of here. rep insw pop rdi +%ifdef DEBUG mov bl, 0x0F mov esi, buffer call dump mov bl, 0x0A - mov esi, end + mov esi, ended 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 rcx pop rbx diff --git a/boot/loader/io/lmterm.asm b/boot/loader/io/lmterm.asm index 3fa0ccb..427ae89 100644 --- a/boot/loader/io/lmterm.asm +++ b/boot/loader/io/lmterm.asm @@ -93,9 +93,9 @@ write: dump: ;-----------------------------------------------------------------------; -; x64/LM Dump Printing Functions ; +; x64/LM Dump 512 bytes of a buffer ; ; bl : color code ; -; esi : string address ; +; esi : buffer address ; ;-----------------------------------------------------------------------; mov edi, [NextTRAM] ; TRAM ADDRESS push rsi @@ -107,10 +107,9 @@ dump: stosb ; text subpixel mov al, bl stosb ; color subpixel - add qword [NextTRAM], 0x2 ; Cursor moving - add qword [VGA_X], 0x2 ; coord + 2 because 2 subpixels loop .pLoop pop rcx pop rdi pop rsi + add qword [NextTRAM], 1000 ; Cursor moving : 1120 = 80 * 2 * 7 lignes ret diff --git a/boot/loader/loader.asm b/boot/loader/loader.asm index a2bb849..2cfc899 100644 --- a/boot/loader/loader.asm +++ b/boot/loader/loader.asm @@ -8,6 +8,8 @@ ; (x86_64 architecture only) ; ;=----------------------------------------------------------------------------=; +%define DEBUG + [BITS 16] [ORG 0x1000] @@ -161,18 +163,23 @@ main32: [BITS 64] ;; DATA -Init db "Booting OS/K !", 0x0D, 0x0A, 0x0D, 0x0A, 0x09, " Checking CPUID...",0 -CPUIDD db 0x09, " Checking CPUID...", 0 -EnA20 db 0x09, " Enabling A20 line...", 0 -ReadAttempt db 0x09, " Attempt to read a sector with ATA commands...", 0x0A, 0x0D, 0x0A, 0x0D,0 -txt db 0x09, " Switching to Long Mode... ", 0 -Reinit db "Booting OS/K !", 0x0D, 0x0A, 0x0D, 0x0A, 0 -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" + Init db "Booting OS/K !", 0x0D, 0x0A, 0x0D, 0x0A, 0x09, " Checking CPUID...",0 + CPUIDD db 0x09, " Checking CPUID...", 0 + EnA20 db 0x09, " Enabling A20 line...", 0 +%ifdef DEBUG + ReadAttempt db 0x09, " Attempt to read a sector with ATA commands...", 0x0A, 0x0D, 0x0A, 0x0D, 0 +%else + ReadAttempt db 0x09, " Attempt to read a sector with ATA commands...", 0 +%endif + txt db 0x09, " Switching to Long Mode... ", 0 + EndOfLoader db "End of loader.bin. System will halt !", 0x0A, 0x0D, 0 + Reinit db "Booting OS/K !", 0x0D, 0x0A, 0x0D, 0x0A, 0 + 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/lmterm.asm" @@ -229,10 +236,9 @@ main64: mov bh, 1 call ata_read - call bitemporize ; Temporized because the ATA drive must be ready + mov bl, 0x0D + mov esi, EndOfLoader + call write jmp Die - ; times 1024 nop - ; XXX ; - ; It seems impossible to have an executable > 2.0 kB... diff --git a/build/bin/disk.img b/build/bin/disk.img index 9c358523e8bbaca4b9d9434333ea44f8a2df44e9..20e2f58b253e90add0569dae03006333c61d2a54 100644 GIT binary patch delta 21790 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 HIUx1_QeXlw delta 7610 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 diff --git a/build/bin/loader.bin b/build/bin/loader.bin index 94295b38065e9f2ccacaccf7c1b8e8f8d67199de..319d77224306d3f677ecbcf3c3f3620a36b9df38 100644 GIT binary patch delta 564 zcmX@X|C^t)=S1I)z5^X%yC-rkXSpD}=*Gk?ULxOwUTps#7q%~0=*9Z~aWAg_58L-` zvJj&N+YRBg|7I5^J1~l}-w|eD=x4n(IfhY^dpVHJ!0?*=80+%M4UBDkH-P*shX1A) zfb^^Q$s$b4)m`&a6!Oy)a`F>XQj7GGGV}Blf-8$lQgao`GjnnjG7@u26co95C+}i9 zDFZT&u|#k)&%QrG3=A()fM&n!{QLj^W-g#J<}+I}-kW@zSqVt~W0tDF2UN`D(afUy z4a9hTJ3j8PM>mV=J0Q=4kwq0G4Wk*4Gai4vD*z-7QtY7#k=DHKaU3E7@53sOKUdv`>cwPi#CIds-t`Cf#({kfC^X~%*y~u}nXAg+|;m`m7AP<0?S}~cQ zUA-RU_^>Vf#F38P|wSafB*mA%mp<5II}h5w#m#aO7+`- z%EH3e*f5kR*l?A|+whiHuIjk4%A=V@6(q$3Vw?jpUf+(7JM7WTqIwL-^I(KX!)V6i zjK^Q^3IIui6nkhwq&2U59EXU2oE-6b#_MU_HehqZ!UK0QFflL~tif*Eqvw%8>lmV4 z^HLP@(-eYJlS}f8V!3!3HeY1<&p7!Un~laA5s;w_3~9SQFn&(Ujo-|_4>EVIl7-kbsv!0!|;KV;YBx4W;6G`-Jq~p3}W-|vj?%KgV?|z0_ L$bH%J^Z$PU%J|#x diff --git a/build/obj/boot/loader.bin b/build/obj/boot/loader.bin index 94295b38065e9f2ccacaccf7c1b8e8f8d67199de..319d77224306d3f677ecbcf3c3f3620a36b9df38 100644 GIT binary patch delta 564 zcmX@X|C^t)=S1I)z5^X%yC-rkXSpD}=*Gk?ULxOwUTps#7q%~0=*9Z~aWAg_58L-` zvJj&N+YRBg|7I5^J1~l}-w|eD=x4n(IfhY^dpVHJ!0?*=80+%M4UBDkH-P*shX1A) zfb^^Q$s$b4)m`&a6!Oy)a`F>XQj7GGGV}Blf-8$lQgao`GjnnjG7@u26co95C+}i9 zDFZT&u|#k)&%QrG3=A()fM&n!{QLj^W-g#J<}+I}-kW@zSqVt~W0tDF2UN`D(afUy z4a9hTJ3j8PM>mV=J0Q=4kwq0G4Wk*4Gai4vD*z-7QtY7#k=DHKaU3E7@53sOKUdv`>cwPi#CIds-t`Cf#({kfC^X~%*y~u}nXAg+|;m`m7AP<0?S}~cQ zUA-RU_^>Vf#F38P|wSafB*mA%mp<5II}h5w#m#aO7+`- z%EH3e*f5kR*l?A|+whiHuIjk4%A=V@6(q$3Vw?jpUf+(7JM7WTqIwL-^I(KX!)V6i zjK^Q^3IIui6nkhwq&2U59EXU2oE-6b#_MU_HehqZ!UK0QFflL~tif*Eqvw%8>lmV4 z^HLP@(-eYJlS}f8V!3!3HeY1<&p7!Un~laA5s;w_3~9SQFn&(Ujo-|_4>EVIl7-kbsv!0!|;KV;YBx4W;6G`-Jq~p3}W-|vj?%KgV?|z0_ L$bH%J^Z$PU%J|#x