VIDEO_BUFFER_SEGMENT = 0xA000
VIDEO_BUFFER_OFFSET = 0xFA00
VIDEO_SEGMENT = 0xA000
VIDEO_OFFSET = 0x0000
как ты думаешь, сколько памяти в сегменте VIDEO_BUFFER_SEGMENT доступно начиная со смещения VIDEO_BUFFER_OFFSET и что там идёт дальше?
Если в твоём коде сделать вот такие изменения, то всё работает:
diff --git a/lib/video.inc b/lib/video.inc
index 3a26f43e2f79..d7054e194da9 100644
--- a/lib/video.inc
+++ b/lib/video.inc
@@ -3,8 +3,8 @@ VIDEO_INC equ 0
include "memory.inc"
-VIDEO_BUFFER_SEGMENT = 0xA000
-VIDEO_BUFFER_OFFSET = 0xFA00
+VIDEO_BUFFER_SEGMENT = 0x6000
+VIDEO_BUFFER_OFFSET = 0x0000
VIDEO_SEGMENT = 0xA000
VIDEO_OFFSET = 0x0000
VIDEO_SIZE_DB = 0xFA00
@@ -79,11 +79,11 @@ macro video!flip {
mov ax, VIDEO_SEGMENT
mov bx, VIDEO_BUFFER_SEGMENT
mov es, ax
- mov ds, ax
+ mov ds, bx
mov cx, VIDEO_SIZE_DB
cld
mov si, VIDEO_BUFFER_OFFSET
- xor di, VIDEO_OFFSET
+ mov di, VIDEO_OFFSET
rep movsb
pop ds es
}
diff --git a/os.asm b/os.asm
index 1949e95b4e99..e5ebb3d280aa 100644
--- a/os.asm
+++ b/os.asm
@@ -91,9 +91,9 @@ kernel.routine.startup:
kernel.routine.video:
cli
video!fill 0x4E
- ;video!window 30, 40, 100, 60, 0x1A, 0xFF, 13 , 0x1F
- ;video!cursor
- ;video!flip
+ video!window 30, 40, 100, 60, 0x1A, 0xFF, 13 , 0x1F
+ video!cursor
+ video!flip
sti
ret