From 87c6042643d3ca9b236b91ec677605e185369acb Mon Sep 17 00:00:00 2001 From: garenchan <1412950785@qq.com> Date: Sat, 24 Nov 2018 18:12:51 +0800 Subject: [PATCH 1/2] Notify the small but important change in bootsect.asm. Since checkpoint, our kernel will be larger, so the number of sectors to read when loading it from disk has increased from 2 to 16. Many learners are used to copying existing code. So if we don't notify them of the change in 'bootsect.asm', they will encounter disk read error in the later lessons. --- 14-checkpoint/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/14-checkpoint/README.md b/14-checkpoint/README.md index 8d9958e..7a04ed9 100644 --- a/14-checkpoint/README.md +++ b/14-checkpoint/README.md @@ -11,7 +11,9 @@ and think on a strategy. Take a look at the new folder structure. Most of the files have been symlinked from previous lessons, so if we have to change them at some point, it will be -a better idea to remove the symlink and create a new file. +a better idea to remove the symlink and create a new file. Open `boot/bootsect.asm` +and note that since our kernel will be larger, the number of sectors to read when +loading it from disk has increased from `2` to `16`. Furthermore, since from now on we will use mostly C to code, we'll take advantage of qemu's ability to open a connection to gdb. First, let's install a cross-compiled `gdb` since From 025a4d5189367ec6dbadb2b8964830d144d72d6c Mon Sep 17 00:00:00 2001 From: garenchan <1412950785@qq.com> Date: Sat, 24 Nov 2018 18:37:53 +0800 Subject: [PATCH 2/2] fix typo: WHITE_OB_BLACK -> WHITE_ON_BLACK --- 14-checkpoint/boot/32bit_print.asm | 4 ++-- 15-video-ports/boot/32bit_print.asm | 4 ++-- 16-video-driver/boot/32bit_print.asm | 4 ++-- 17-video-scroll/boot/32bit_print.asm | 4 ++-- 18-interrupts/boot/32bit_print.asm | 4 ++-- 23-fixes/boot/32bit_print.asm | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/14-checkpoint/boot/32bit_print.asm b/14-checkpoint/boot/32bit_print.asm index 4169a17..e940aa9 100644 --- a/14-checkpoint/boot/32bit_print.asm +++ b/14-checkpoint/boot/32bit_print.asm @@ -2,7 +2,7 @@ ; this is how constants are defined VIDEO_MEMORY equ 0xb8000 -WHITE_OB_BLACK equ 0x0f ; the color byte for each character +WHITE_ON_BLACK equ 0x0f ; the color byte for each character print_string_pm: pusha @@ -10,7 +10,7 @@ print_string_pm: print_string_pm_loop: mov al, [ebx] ; [ebx] is the address of our character - mov ah, WHITE_OB_BLACK + mov ah, WHITE_ON_BLACK cmp al, 0 ; check if end of string je print_string_pm_done diff --git a/15-video-ports/boot/32bit_print.asm b/15-video-ports/boot/32bit_print.asm index 4169a17..e940aa9 100644 --- a/15-video-ports/boot/32bit_print.asm +++ b/15-video-ports/boot/32bit_print.asm @@ -2,7 +2,7 @@ ; this is how constants are defined VIDEO_MEMORY equ 0xb8000 -WHITE_OB_BLACK equ 0x0f ; the color byte for each character +WHITE_ON_BLACK equ 0x0f ; the color byte for each character print_string_pm: pusha @@ -10,7 +10,7 @@ print_string_pm: print_string_pm_loop: mov al, [ebx] ; [ebx] is the address of our character - mov ah, WHITE_OB_BLACK + mov ah, WHITE_ON_BLACK cmp al, 0 ; check if end of string je print_string_pm_done diff --git a/16-video-driver/boot/32bit_print.asm b/16-video-driver/boot/32bit_print.asm index 4169a17..e940aa9 100644 --- a/16-video-driver/boot/32bit_print.asm +++ b/16-video-driver/boot/32bit_print.asm @@ -2,7 +2,7 @@ ; this is how constants are defined VIDEO_MEMORY equ 0xb8000 -WHITE_OB_BLACK equ 0x0f ; the color byte for each character +WHITE_ON_BLACK equ 0x0f ; the color byte for each character print_string_pm: pusha @@ -10,7 +10,7 @@ print_string_pm: print_string_pm_loop: mov al, [ebx] ; [ebx] is the address of our character - mov ah, WHITE_OB_BLACK + mov ah, WHITE_ON_BLACK cmp al, 0 ; check if end of string je print_string_pm_done diff --git a/17-video-scroll/boot/32bit_print.asm b/17-video-scroll/boot/32bit_print.asm index 4169a17..e940aa9 100644 --- a/17-video-scroll/boot/32bit_print.asm +++ b/17-video-scroll/boot/32bit_print.asm @@ -2,7 +2,7 @@ ; this is how constants are defined VIDEO_MEMORY equ 0xb8000 -WHITE_OB_BLACK equ 0x0f ; the color byte for each character +WHITE_ON_BLACK equ 0x0f ; the color byte for each character print_string_pm: pusha @@ -10,7 +10,7 @@ print_string_pm: print_string_pm_loop: mov al, [ebx] ; [ebx] is the address of our character - mov ah, WHITE_OB_BLACK + mov ah, WHITE_ON_BLACK cmp al, 0 ; check if end of string je print_string_pm_done diff --git a/18-interrupts/boot/32bit_print.asm b/18-interrupts/boot/32bit_print.asm index 4169a17..e940aa9 100644 --- a/18-interrupts/boot/32bit_print.asm +++ b/18-interrupts/boot/32bit_print.asm @@ -2,7 +2,7 @@ ; this is how constants are defined VIDEO_MEMORY equ 0xb8000 -WHITE_OB_BLACK equ 0x0f ; the color byte for each character +WHITE_ON_BLACK equ 0x0f ; the color byte for each character print_string_pm: pusha @@ -10,7 +10,7 @@ print_string_pm: print_string_pm_loop: mov al, [ebx] ; [ebx] is the address of our character - mov ah, WHITE_OB_BLACK + mov ah, WHITE_ON_BLACK cmp al, 0 ; check if end of string je print_string_pm_done diff --git a/23-fixes/boot/32bit_print.asm b/23-fixes/boot/32bit_print.asm index 4169a17..e940aa9 100644 --- a/23-fixes/boot/32bit_print.asm +++ b/23-fixes/boot/32bit_print.asm @@ -2,7 +2,7 @@ ; this is how constants are defined VIDEO_MEMORY equ 0xb8000 -WHITE_OB_BLACK equ 0x0f ; the color byte for each character +WHITE_ON_BLACK equ 0x0f ; the color byte for each character print_string_pm: pusha @@ -10,7 +10,7 @@ print_string_pm: print_string_pm_loop: mov al, [ebx] ; [ebx] is the address of our character - mov ah, WHITE_OB_BLACK + mov ah, WHITE_ON_BLACK cmp al, 0 ; check if end of string je print_string_pm_done