From cea09d56763a162983df97d8494340398bcdcf30 Mon Sep 17 00:00:00 2001 From: Eleni Maria Stea Date: Tue, 5 Jan 2021 16:33:45 +0200 Subject: [PATCH] changed the segment register used for video memory access to es to avoid interferring with rand which was using ds to access its state --- bb.asm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/bb.asm b/bb.asm index d9d1fe6..a3f6011 100644 --- a/bb.asm +++ b/bb.asm @@ -135,14 +135,23 @@ sector_2: ; disable all interrupts (for bios to not read the keyboard) cli -main_loop: - mov ax, 0a000h + ; ds on 0 because rand uses it for accesses to mem + xor ax, ax mov ds, ax + mov ax, 0a000h + mov es, ax +main_loop: +; wait for vblank + mov dx, 3dah + in al, dx + and al, 8 ; the 4th bit is 1 when we are in the vertical blanking period + jz main_loop + xor bx, bx ; mov bx, 0 to clear the register .static_loop: call rand and ax, 3fh ; last six bits of eax (see rand) - mov [bx], al + mov [es:bx], al ; [] -> bx offset and default segment ds we change it to es inc bx cmp bx, 64000 ; num pixels jnz .static_loop -- 1.7.10.4