From 848cd0a802fa7ddf13aa8ae1953b32b10a832898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rn=20Guldberg?= Date: Mon, 27 Aug 2018 22:15:29 +0200 Subject: [PATCH] Svim buffer is now written to disk and loaded again --- SingOS.img | Bin 0 -> 139264 bytes bootloader.bin | Bin 0 -> 8192 bytes kernel.bin | Bin 0 -> 131072 bytes kernel.nasm | 2 +- lib/svim.nasm | 44 +++++++++++++++++++++++++++++--------------- 5 files changed, 30 insertions(+), 16 deletions(-) create mode 100644 SingOS.img create mode 100644 bootloader.bin create mode 100644 kernel.bin diff --git a/SingOS.img b/SingOS.img new file mode 100644 index 0000000000000000000000000000000000000000..cea492634235f2836aa4741e1550c5db155dfb56 GIT binary patch literal 139264 zcmeI&Uuav`0mt!kbY&z9Y%2>%Q)*j=lJ3NYRi!xB^KU!O{m&(WMS2>37wMus?g(7pOV!dE$tV7 z`r*aKp2TuhHujcszLfg7tPM$hkF2GS>s?ZRRo4Dc)=^peS3`%S9+du|)CZ(LBK3W; zCd9&WHB=e6Bo=pF7B7n{;s=f0#a{n})Ei>`Ug19>^$npv68Zz7uZr4LGmC!;aW&Gq z;r~|Xzlqk3rzSH+Wqy;+`BGZt-J~OqxvrOU?W9vsDYu};GE?c3V+Yjqp^-x)hx=mU z$%0cf9hB!PXUa3J&Tn_v9wun$6wCm5(_a;5ik_2K6O+zF_8X>ZY)4tSS##%J0O;=PC8Dh{OQ!>4tvT~qyy__5~4Pk*;A?#$;q zzrQo%GAaTHAb#Zk{4?Hlw8FAmB1{vkR0X|&%3%H$$=OHg;MX<{us zrp?&tGtUn`Kl;$kQuN}Q7e4WL^WW#bceXz63$Y|Z`o-G=E-!r+aIx#=$mt$9-fsP~ zcDdep^xSGAuBY0~56tjm6_HqL?9u1i+G_{J=oKlJq-g933Xz~-1%>g>MviT7Nr_W_^RD z9(`@IdEFd}-f(alp6SeTZq;`yraxNny;z<{bQOa^Ev#0>G$oKbHP~W5+j~DzP4%(@2Gj;wwfb5 zY7XC4^YtAyN49G2sx1#g009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0;rP7A0r z?lUTSP`T->9gRlatUaTqGpd-ib1IifJ1Uz=o9_!})#S8WNZL~>>3C|=DX5fNaMEWB zcY1=1j{pJ)AbOV literal 0 HcmV?d00001 diff --git a/bootloader.bin b/bootloader.bin new file mode 100644 index 0000000000000000000000000000000000000000..c24ea722c54ff3203cf2b77d8f9cf39573319591 GIT binary patch literal 8192 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 literal 0 HcmV?d00001 diff --git a/kernel.nasm b/kernel.nasm index 4839e37..7eea5dd 100644 --- a/kernel.nasm +++ b/kernel.nasm @@ -239,4 +239,4 @@ data_os: %include "lib/svim.nasm" %include "lib/ls.nasm" -times 16384-($-$$) db 0 +times 131072-($-$$) db 0 diff --git a/lib/svim.nasm b/lib/svim.nasm index a7c2f92..265ae7f 100644 --- a/lib/svim.nasm +++ b/lib/svim.nasm @@ -30,6 +30,21 @@ svim: mov dl, 0x00 ; coloumn zero int 0x10 + ; Load from disk and, enter it, into the buffer + mov bx, ds + mov es, bx + xor bx, bx + mov bx, .buffer_for_svim + xor cx, cx + xor ax, ax + mov ah, 0x02 ;Read sectors from drive + mov al, 0x01 ;Number of sectors to read (8 * 512 = 4096 bytes) + mov ch, 0x02 ;Low 8 bits of cylinder + mov cl, 0x03 ;First sector to read (bits 0-5), upper bits of cylinder (bits 6-7) + mov dh, 0x01 ;Head number + mov dl, 0x00 ;Drive number + int 0x13 + ; print buffer mov si, .buffer_for_svim mov es, si @@ -74,24 +89,23 @@ svim: mov bx, .buffer_for_svim xor cx, cx xor ax, ax - mov ah, 0x3 ;Write sectors from drive - mov al, 0x1 ;Number of sectors to read (8 * 512 = 4096 bytes) - mov cx, 0x2c ;First sector to read (bits 0-5), upper bits of cylinder (bits 6-7) - mov dh, 0x0 ;Head number + mov ah, 0x03 ;Write sectors to drive + mov al, 0x01 ;Number of sectors to write (8 * 512 = 4096 bytes) + mov cl, 0x03 ;First sector to read (bits 0-5), upper bits of cylinder (bits 6-7) + mov ch, 0x02 + mov dh, 0x01 ;Head number mov dl, 0x0 ;Drive number int 0x13 ;Low level disk services - call dumpax_os - - ; clen up swim - ;;xor bx, bx - ;;xor cx, cx ; Upper and left coordinate - ;;mov bh, 0x0f ; color for new screen 0 = black f = white - ;;mov dh, 0xff ; Select all screen - ;;mov dl, 0xff ; Select all screen - ;;mov ah, 0x07 ; scrool down - ;;mov al, 0x00 ; scrool 0 lines (means blank screen ) - ;;int 0x10 + ; clean up swim + xor bx, bx + xor cx, cx ; Upper and left coordinate + mov bh, 0x0f ; color for new screen 0 = black f = white + mov dh, 0xff ; Select all screen + mov dl, 0xff ; Select all screen + mov ah, 0x07 ; scrool down + mov al, 0x00 ; scrool 0 lines (means blank screen ) + int 0x10 ; Move curser back to the top of the screen mov ah, 0x02 mov bh, 0x00 ; page number 0