feat: modification de toutes les fonctions utilisant de la mémoire afin qu'il utilisent les mecanismes de réservation de blocs mémoire.
This commit is contained in:
parent
f47656fd88
commit
4a5372aa9d
350
noyau/video.asm
350
noyau/video.asm
|
@ -1578,168 +1578,306 @@ noadjusted:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;sauve l'ecran dans un bloc de mémoire
|
||||||
|
savescreen:
|
||||||
|
push ax cx dx si di bp ds es gs
|
||||||
|
mov bp,sp
|
||||||
|
mov dx,ss:[bp+22]
|
||||||
|
mov ah,2
|
||||||
|
mov cx,cs:pagesize
|
||||||
|
push cs
|
||||||
|
pop ds
|
||||||
|
mov si,offset data3
|
||||||
|
int 49h
|
||||||
|
mov ah,6
|
||||||
|
int 49h
|
||||||
|
push gs
|
||||||
|
pop es
|
||||||
|
xor di,di
|
||||||
|
call savescreento
|
||||||
|
pop gs es ds bp di si dx cx ax
|
||||||
|
ret
|
||||||
|
|
||||||
|
data3 db '/vgascreen',0
|
||||||
|
|
||||||
|
|
||||||
;===================================sauve l'ecran rapidement================
|
|
||||||
SaveScreen:
|
|
||||||
push cx si di ds es
|
|
||||||
mov cx,0B800H
|
|
||||||
mov ds,cx
|
|
||||||
push cs
|
|
||||||
pop es
|
|
||||||
mov cx,cs:pagesize
|
|
||||||
shr cx,2
|
|
||||||
xor si,si
|
|
||||||
mov di,offset Copy2
|
|
||||||
cld
|
|
||||||
rep movsd
|
|
||||||
pop es ds di si cx
|
|
||||||
ret
|
|
||||||
|
|
||||||
;===================================sauve l'ecran rapidement en es:di================
|
;===================================sauve l'ecran rapidement en es:di================
|
||||||
SaveScreento:
|
SaveScreento:
|
||||||
push cx si di ds
|
push cx si di ds
|
||||||
mov cx,0B800H
|
mov cx,0B800h
|
||||||
mov ds,cx
|
mov ds,cx
|
||||||
|
xor ecx,ecx
|
||||||
mov cx,cs:pagesize
|
mov cx,cs:pagesize
|
||||||
shr cx,2
|
shr cx,2
|
||||||
xor si,si
|
xor si,si
|
||||||
cld
|
cld
|
||||||
rep movsd
|
rep movsd
|
||||||
pop ds di si cx
|
pop ds di si cx
|
||||||
ret
|
|
||||||
|
|
||||||
;===================================sauve l'ecran rapidement================
|
|
||||||
Savepage1:
|
|
||||||
push cx si di ds es
|
|
||||||
mov cx,0B800H
|
|
||||||
mov ds,cx
|
|
||||||
push cs
|
|
||||||
pop es
|
|
||||||
mov cx,cs:pagesize
|
|
||||||
shr cx,2
|
|
||||||
xor si,si
|
|
||||||
mov di,offset Copy
|
|
||||||
cld
|
|
||||||
rep movsd
|
|
||||||
pop es ds di si cx
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;===================================sauve l'ecran rapidement================
|
;===================================sauve les parametres en es:di================
|
||||||
RestoreScreen:
|
Saveparamto:
|
||||||
push cx si di ds es
|
push ecx si di ds
|
||||||
mov cx,0B800H
|
|
||||||
mov es,cx
|
|
||||||
push cs
|
push cs
|
||||||
pop ds
|
pop ds
|
||||||
|
xor ecx,ecx
|
||||||
|
mov cx,datablocksize
|
||||||
|
mov si,offset datablock
|
||||||
|
cld
|
||||||
|
rep movsb
|
||||||
|
pop ds di si ecx
|
||||||
|
ret
|
||||||
|
|
||||||
|
;===================================restore les parametres depuis en ds:si================
|
||||||
|
Restoreparamfrom:
|
||||||
|
push ecx si di es
|
||||||
|
push cs
|
||||||
|
pop es
|
||||||
|
xor ecx,ecx
|
||||||
|
mov cx,datablocksize
|
||||||
|
mov di,offset datablock
|
||||||
|
cld
|
||||||
|
rep movsb
|
||||||
|
pop es di si ecx
|
||||||
|
ret
|
||||||
|
|
||||||
|
;sauve la page1 dans un bloc de mémoire
|
||||||
|
Savepage1:
|
||||||
|
push ax cx dx si di bp ds es gs
|
||||||
|
mov bp,sp
|
||||||
|
mov dx,ss:[bp+22]
|
||||||
|
mov ah,2
|
||||||
|
mov cx,cs:pagesize
|
||||||
|
push cs
|
||||||
|
pop ds
|
||||||
|
mov si,offset data4
|
||||||
|
int 49h
|
||||||
|
mov ah,6
|
||||||
|
int 49h
|
||||||
|
push gs
|
||||||
|
pop es
|
||||||
|
xor di,di
|
||||||
|
call Savepage1to
|
||||||
|
pop gs es ds bp di si dx cx ax
|
||||||
|
ret
|
||||||
|
|
||||||
|
data4 db '/vgapage1',0
|
||||||
|
|
||||||
|
;===================================sauve l'ecran rapidement================
|
||||||
|
Savepage1to:
|
||||||
|
push ecx si di ds
|
||||||
|
mov cx,0B800H
|
||||||
|
mov ds,cx
|
||||||
|
xor ecx,ecx
|
||||||
mov cx,cs:pagesize
|
mov cx,cs:pagesize
|
||||||
shr cx,2
|
shr cx,2
|
||||||
mov si,offset Copy2
|
mov si,cs:pagesize
|
||||||
xor di,di
|
|
||||||
cld
|
cld
|
||||||
rep movsd
|
rep movsd
|
||||||
pop es ds di si cx
|
pop ds di si ecx
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
;R‚cupŠre l'ecran de la carte depuis son bloc mémoire
|
||||||
|
RestoreScreen:
|
||||||
|
push ax dx si bp ds gs
|
||||||
|
mov bp,sp
|
||||||
|
mov dx,ss:[bp+16]
|
||||||
|
push cs
|
||||||
|
pop ds
|
||||||
|
mov si,offset data3
|
||||||
|
mov ah,9
|
||||||
|
int 49h
|
||||||
|
push gs
|
||||||
|
pop ds
|
||||||
|
xor si,si
|
||||||
|
call restorescreenfrom
|
||||||
|
pop gs ds bp si dx ax
|
||||||
|
ret
|
||||||
|
|
||||||
;===================================restore l'ecran rapidement de ds:si================
|
;===================================restore l'ecran rapidement de ds:si================
|
||||||
RestoreScreenfrom:
|
RestoreScreenfrom:
|
||||||
push cx si di ds es
|
push ecx si di ds es
|
||||||
mov cx,0B800H
|
mov cx,0B800H
|
||||||
mov es,cx
|
mov es,cx
|
||||||
|
xor ecx,ecx
|
||||||
mov cx,cs:pagesize
|
mov cx,cs:pagesize
|
||||||
shr cx,2
|
shr cx,2
|
||||||
xor di,di
|
xor di,di
|
||||||
cld
|
cld
|
||||||
rep movsd
|
rep movsd
|
||||||
pop es ds di si cx
|
pop es ds di si ecx
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;===============================Page2to1============================
|
;===============================Page2to1============================
|
||||||
Page2to1:
|
Page2to1:
|
||||||
push cx si di ds es
|
push ecx si di ds es
|
||||||
mov cx,0B800H
|
mov cx,0B800H
|
||||||
mov es,cx
|
mov es,cx
|
||||||
mov ds,cx
|
mov ds,cx
|
||||||
|
xor ecx,ecx
|
||||||
mov cx,cs:pagesize
|
mov cx,cs:pagesize
|
||||||
shr cx,2
|
shr cx,2
|
||||||
mov si,4000
|
mov si,cs:pagesize
|
||||||
xor di,di
|
xor di,di
|
||||||
cld
|
cld
|
||||||
rep movsd
|
rep movsd
|
||||||
pop es ds di si cx
|
pop es ds di si ecx
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;===============================Page1to2============================
|
;===============================Page1to2============================
|
||||||
Page1to2:
|
Page1to2:
|
||||||
push cx si di ds es
|
push ecx si di ds es
|
||||||
mov cx,0B800H
|
mov cx,0B800H
|
||||||
mov es,cx
|
mov es,cx
|
||||||
mov ds,cx
|
mov ds,cx
|
||||||
|
xor ecx,ecx
|
||||||
mov cx,cs:pagesize
|
mov cx,cs:pagesize
|
||||||
shr cx,2
|
shr cx,2
|
||||||
mov di,4000
|
mov di,cs:pagesize
|
||||||
xor si,si
|
xor si,si
|
||||||
cld
|
cld
|
||||||
rep movsd
|
rep movsd
|
||||||
pop ds es di si cx
|
pop ds es di si ecx
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;===============================xchgPages============================
|
;===============================xchgPages============================
|
||||||
xchgPages:
|
xchgPages:
|
||||||
push cx si di ds es
|
push ax cx dx si di bp ds es gs
|
||||||
call savepage1
|
mov bp,sp
|
||||||
call page2to1
|
mov dx,ss:[bp+22]
|
||||||
mov cx,0B800H
|
mov ah,2
|
||||||
mov es,cx
|
mov cx,datablocksize
|
||||||
push cs
|
add cx,cs:pagesize
|
||||||
pop ds
|
add cx,3*256
|
||||||
mov cx,cs:pagesize
|
push cs
|
||||||
shr cx,2
|
pop ds
|
||||||
mov si,offset Copy
|
mov si,offset data4
|
||||||
mov di,4000
|
int 49h
|
||||||
rep movsd
|
mov ah,6
|
||||||
pop es ds di si cx
|
int 49h
|
||||||
ret
|
push gs
|
||||||
|
pop es
|
||||||
;Sauve l'‚tat de la carte en es:di
|
xor di,di
|
||||||
savestate:
|
call savescreento
|
||||||
push cx si di ds
|
call Page2to1
|
||||||
push cs
|
push gs
|
||||||
pop ds
|
pop ds
|
||||||
mov cx,datablocksize
|
xor si,si
|
||||||
mov si,offset lines
|
mov cx,0B800H
|
||||||
|
mov es,cx
|
||||||
|
mov di,cs:pagesize
|
||||||
|
xor ecx,ecx
|
||||||
|
mov cx,cs:pagesize
|
||||||
|
shr cx,2
|
||||||
cld
|
cld
|
||||||
rep movsb
|
rep movsd
|
||||||
call savescreento
|
mov ah,01h
|
||||||
pop ds di si cx
|
int 49h
|
||||||
|
pop gs es ds bp di si dx cx ax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;R‚cupŠre l'‚tat de la carte en ds:si
|
|
||||||
restorestate:
|
|
||||||
push ax cx si di es
|
|
||||||
mov al,[si+7]
|
|
||||||
cmp cs:mode,al
|
|
||||||
je nochangemode
|
|
||||||
mov ah,0
|
|
||||||
call setvideomode
|
|
||||||
nochangemode:
|
|
||||||
push cs
|
|
||||||
pop es
|
|
||||||
mov cx,datablocksize
|
|
||||||
mov di,offset lines
|
|
||||||
cld
|
|
||||||
rep movsb
|
|
||||||
call restorescreenfrom
|
|
||||||
pop es di si cx ax
|
|
||||||
ret
|
|
||||||
|
|
||||||
;sauve le DAC
|
;Sauve l'‚tat de la carte dans un bloc mémoire
|
||||||
|
savestate:
|
||||||
|
push ax cx dx si di bp ds es gs
|
||||||
|
mov bp,sp
|
||||||
|
mov dx,ss:[bp+22]
|
||||||
|
mov ah,2
|
||||||
|
mov cx,datablocksize
|
||||||
|
add cx,cs:pagesize
|
||||||
|
add cx,3*256
|
||||||
|
push cs
|
||||||
|
pop ds
|
||||||
|
mov si,offset data
|
||||||
|
int 49h
|
||||||
|
mov ah,6
|
||||||
|
int 49h
|
||||||
|
push gs
|
||||||
|
pop es
|
||||||
|
xor di,di
|
||||||
|
call saveparamto
|
||||||
|
add di,datablocksize
|
||||||
|
call savescreento
|
||||||
|
add di,cs:pagesize
|
||||||
|
call savedacto
|
||||||
|
pop gs es ds bp di si dx cx ax
|
||||||
|
ret
|
||||||
|
|
||||||
|
data db '/vga',0
|
||||||
|
|
||||||
|
;R‚cupŠre l'‚tat de la carte depuis son bloc mémoire
|
||||||
|
restorestate:
|
||||||
|
push ax dx si bp ds gs
|
||||||
|
mov bp,sp
|
||||||
|
mov dx,ss:[bp+16]
|
||||||
|
push cs
|
||||||
|
pop ds
|
||||||
|
mov si,offset data
|
||||||
|
mov ah,9
|
||||||
|
int 49h
|
||||||
|
push gs
|
||||||
|
pop ds
|
||||||
|
mov al,ds:[7]
|
||||||
|
cmp cs:mode,al
|
||||||
|
je nochangemode
|
||||||
|
mov ah,0
|
||||||
|
call setvideomode
|
||||||
|
nochangemode:
|
||||||
|
xor si,si
|
||||||
|
call restoreparamfrom
|
||||||
|
add si,datablocksize
|
||||||
|
call restorescreenfrom
|
||||||
|
add si,cs:pagesize
|
||||||
|
call restoredacfrom
|
||||||
|
pop gs ds bp si dx ax
|
||||||
|
ret
|
||||||
|
|
||||||
|
;sauve le DAC dans un bloc de mémoire
|
||||||
savedac:
|
savedac:
|
||||||
|
push ax cx dx si di bp ds es gs
|
||||||
|
mov bp,sp
|
||||||
|
mov dx,ss:[bp+22]
|
||||||
|
mov ah,2
|
||||||
|
mov cx,3*256
|
||||||
|
push cs
|
||||||
|
pop ds
|
||||||
|
mov si,offset data2
|
||||||
|
int 49h
|
||||||
|
mov ah,6
|
||||||
|
int 49h
|
||||||
|
push gs
|
||||||
|
pop es
|
||||||
|
xor di,di
|
||||||
|
call savedacto
|
||||||
|
pop gs es ds bp di si dx cx ax
|
||||||
|
ret
|
||||||
|
|
||||||
|
data2 db '/vgadac',0
|
||||||
|
|
||||||
|
;R‚cupŠre le dac depuis son bloc mémoire
|
||||||
|
restoredac:
|
||||||
|
push ax dx si bp ds gs
|
||||||
|
mov bp,sp
|
||||||
|
mov dx,ss:[bp+16]
|
||||||
|
push cs
|
||||||
|
pop ds
|
||||||
|
mov si,offset data2
|
||||||
|
mov ah,9
|
||||||
|
int 49h
|
||||||
|
push gs
|
||||||
|
pop ds
|
||||||
|
xor si,si
|
||||||
|
call restoredacfrom
|
||||||
|
pop gs ds bp si dx ax
|
||||||
|
ret
|
||||||
|
|
||||||
|
;sauve le DAC en es:di
|
||||||
|
savedacto:
|
||||||
push ax cx dx di
|
push ax cx dx di
|
||||||
mov dx,3C7h
|
mov dx,3C7h
|
||||||
mov cx,256
|
mov cx,256
|
||||||
mov di,offset dac
|
|
||||||
save:
|
save:
|
||||||
mov al,cl
|
mov al,cl
|
||||||
dec al
|
dec al
|
||||||
|
@ -1747,13 +1885,13 @@ out dx,al
|
||||||
inc dx
|
inc dx
|
||||||
inc dx
|
inc dx
|
||||||
in al,dx
|
in al,dx
|
||||||
mov cs:[di],al
|
mov es:[di],al
|
||||||
inc di
|
inc di
|
||||||
in al,dx
|
in al,dx
|
||||||
mov cs:[di],al
|
mov es:[di],al
|
||||||
inc di
|
inc di
|
||||||
in al,dx
|
in al,dx
|
||||||
mov cs:[di],al
|
mov es:[di],al
|
||||||
inc di
|
inc di
|
||||||
dec dx
|
dec dx
|
||||||
dec dx
|
dec dx
|
||||||
|
@ -1762,25 +1900,24 @@ jne save
|
||||||
pop di dx cx ax
|
pop di dx cx ax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
;restore le DAC
|
;restore le DAC depuis ds:si
|
||||||
restoredac:
|
restoredacfrom:
|
||||||
push ax cx dx si
|
push ax cx dx si
|
||||||
xor ax,ax
|
xor ax,ax
|
||||||
mov dx,3C8h
|
mov dx,3C8h
|
||||||
mov cx,256
|
mov cx,256
|
||||||
mov si,offset dac
|
|
||||||
save2:
|
save2:
|
||||||
mov al,cl
|
mov al,cl
|
||||||
dec al
|
dec al
|
||||||
out dx,al
|
out dx,al
|
||||||
inc dx
|
inc dx
|
||||||
mov al,cs:[si]
|
mov al,ds:[si]
|
||||||
inc si
|
inc si
|
||||||
out dx,al
|
out dx,al
|
||||||
mov al,cs:[si]
|
mov al,ds:[si]
|
||||||
inc si
|
inc si
|
||||||
out dx,al
|
out dx,al
|
||||||
mov al,cs:[si]
|
mov al,ds:[si]
|
||||||
inc si
|
inc si
|
||||||
out dx,al
|
out dx,al
|
||||||
dec dx
|
dec dx
|
||||||
|
@ -1814,8 +1951,5 @@ include ..\include\pol8x8.inc
|
||||||
font8x16:
|
font8x16:
|
||||||
include ..\include\pol8x16.inc
|
include ..\include\pol8x16.inc
|
||||||
|
|
||||||
copy equ $
|
|
||||||
copy2 equ $+8192
|
|
||||||
dac equ $+8192+8192
|
|
||||||
|
|
||||||
end start
|
end start
|
||||||
|
|
Loading…
Reference in New Issue