Hoist segment register modification out of drawing subroutines

This commit is contained in:
Juhani Krekelä 2023-03-18 14:27:16 +02:00
parent 8da69da9a2
commit a2c1aaf6ec
1 changed files with 12 additions and 15 deletions

View File

@ -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