From a2c1aaf6ec587b88d9157c8a48ec4b792f7676b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Sat, 18 Mar 2023 14:27:16 +0200 Subject: [PATCH] Hoist segment register modification out of drawing subroutines --- ponydos.asm | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/ponydos.asm b/ponydos.asm index bbc8943..a3bef61 100644 --- a/ponydos.asm +++ b/ponydos.asm @@ -87,6 +87,12 @@ initialize_screen: mov ch, 0x20 int 0x10 + ; Set up segments for drawing routines + xor ax, ax + mov ds, ax + push word 0xb800 + pop es + call draw_wallpaper call flip_mouse_cursor @@ -115,33 +121,25 @@ mainloop: ; Drawing subroutines ; ------------------------------------------------------------------ +; requires: +; ds = 0 +; es = 0xb800 draw_wallpaper: pusha - push es - push ds - - xor ax, ax - mov ds, ax - - push word 0xb800 - pop es mov si, WALLPAPER xor di, di mov cx, 80*25 rep movsw - pop ds - pop es popa ret +; requires: +; ds = 0 +; es = 0xb800 flip_mouse_cursor: pusha - push es - - push word 0xb800 - pop es ; Column xor bh, bh @@ -161,7 +159,6 @@ flip_mouse_cursor: ror al, cl mov [es:bx], al - pop es popa ret