]> git.lizzy.rs Git - loadnothing.git/commitdiff
Break stuff
authorHimbeerserverDE <himbeerserverde@gmail.com>
Sun, 18 Sep 2022 16:05:03 +0000 (18:05 +0200)
committerHimbeerserverDE <himbeerserverde@gmail.com>
Sun, 18 Sep 2022 16:05:03 +0000 (18:05 +0200)
stage2/src/vga.rs

index 3b6ddc406e209dd1f4b00e248ed6b00b6ec7d240..70edfc97eda6054b265acf63251bf939bfa3f3c4 100644 (file)
@@ -1,4 +1,4 @@
-use core::ops::{AddAssign, Deref, DerefMut, Shl};
+use core::ops::{AddAssign, Deref, DerefMut, Shl, Sub};
 
 use volatile::Volatile;
 
@@ -105,7 +105,28 @@ impl Writer {
     }
 
     fn new_line(&mut self) {
+        if self.row_position >= BUFFER_HEIGHT {
+            for row in 1..BUFFER_HEIGHT {
+                for col in 0..BUFFER_WIDTH {
+                    let character = self.buffer.chars[row][col].read();
+                    self.buffer.chars[row.sub(1)][col].write(character);
+                }
+            }
 
+            self.clear_row(BUFFER_HEIGHT.sub(1));
+            self.column_position = 0;
+        }
+    }
+
+    fn clear_row(&mut self, row: usize) {
+        let blank = ScreenChar {
+            ascii_character: b' ',
+            color_code: self.color_code,
+        };
+
+        for col in 0..BUFFER_WIDTH {
+            self.buffer.chars[row][col].write(blank);
+        }
     }
 }
 
@@ -117,5 +138,7 @@ pub fn test_print() {
         buffer: unsafe { &mut *(0xb8000 as *mut Buffer) },
     };
 
+    // writer.write_byte(b'A');
     writer.write_string("Hello Stage2!");
+    // writer.write_string("Hello Stage3!");
 }