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 mov ch, 0x20
int 0x10 int 0x10
; Set up segments for drawing routines
xor ax, ax
mov ds, ax
push word 0xb800
pop es
call draw_wallpaper call draw_wallpaper
call flip_mouse_cursor call flip_mouse_cursor
@ -115,33 +121,25 @@ mainloop:
; Drawing subroutines ; Drawing subroutines
; ------------------------------------------------------------------ ; ------------------------------------------------------------------
; requires:
; ds = 0
; es = 0xb800
draw_wallpaper: draw_wallpaper:
pusha pusha
push es
push ds
xor ax, ax
mov ds, ax
push word 0xb800
pop es
mov si, WALLPAPER mov si, WALLPAPER
xor di, di xor di, di
mov cx, 80*25 mov cx, 80*25
rep movsw rep movsw
pop ds
pop es
popa popa
ret ret
; requires:
; ds = 0
; es = 0xb800
flip_mouse_cursor: flip_mouse_cursor:
pusha pusha
push es
push word 0xb800
pop es
; Column ; Column
xor bh, bh xor bh, bh
@ -161,7 +159,6 @@ flip_mouse_cursor:
ror al, cl ror al, cl
mov [es:bx], al mov [es:bx], al
pop es
popa popa
ret ret