feat: finalisation de la fonction mbfind Ajout de la fonction mbchown qui permet de changer le parent d'un bloc mémoire

This commit is contained in:
Nicolas Hordé 2004-10-31 11:45:46 +00:00
parent 753debd849
commit 3cd3469cb0
1 changed files with 26 additions and 8 deletions

View File

@ -9,7 +9,7 @@ include ..\include\mem.h
include ..\include\divers.h include ..\include\divers.h
start: start:
maxfunc equ 5 maxfunc equ 7
jmp tsr ;Saute à la routine résidente jmp tsr ;Saute à la routine résidente
nameed db 'MB' ;Nom drivers nameed db 'MB' ;Nom drivers
@ -60,6 +60,7 @@ tables dw MBinit ;Table qui contient les adresses de toutes les fonctions de VI
dw MBresident dw MBresident
dw MBGet dw MBGet
dw MBFind dw MBFind
dw MBChown
FirstMB dw 0 FirstMB dw 0
@ -94,12 +95,6 @@ notforfree:
;Libère le bloc de mémoire GS ;Libère le bloc de mémoire GS
MBFree: MBFree:
push bx es push bx es
pushad
mov dx,gs
mov cx,16
mov ah,0ah
int 47h
popad
mov bx,gs mov bx,gs
dec bx dec bx
dec bx dec bx
@ -119,6 +114,24 @@ wasfree:
pop es bx pop es bx
ret ret
;Change le proprietaire de GS a dx
MBChown:
push bx es
mov bx,gs
dec bx
dec bx
mov es,bx
cmp es:[MB.Reference],Free
je wasfree2
mov es:[MB.Reference],dx
pop es bx
ret
wasfree2:
stc
pop es bx
ret
;Renvoie en GS le MB n° cx carry quand terminé ;Renvoie en GS le MB n° cx carry quand terminé
MBGet: MBGet:
push bx dx push bx dx
@ -382,6 +395,9 @@ foundmcb2:
;Creér un bloc de nom ds:si de taille cx (octets) -> n°segment dans GS ;Creér un bloc de nom ds:si de taille cx (octets) -> n°segment dans GS
MBCreate: MBCreate:
push bp
mov bp,sp
mov gs,ss:[bp+6]
push ax bx cx dx si di es push ax bx cx dx si di es
shr cx,4 shr cx,4
inc cx inc cx
@ -404,7 +420,7 @@ searchfree:
ja notsogood ja notsogood
mov word ptr es:[MB.Check],'NH' mov word ptr es:[MB.Check],'NH'
mov es:[MB.IsNotLast],True mov es:[MB.IsNotLast],True
mov es:[MB.Reference],cs mov es:[MB.Reference],gs
mov es:[MB.IsResident],False mov es:[MB.IsResident],False
mov di,MB.Names mov di,MB.Names
push ax cx push ax cx
@ -446,10 +462,12 @@ nofree:
mov gs,bx mov gs,bx
clc clc
pop es di si dx cx bx ax pop es di si dx cx bx ax
pop bp
ret ret
wasntgood: wasntgood:
stc stc
pop es di si dx cx bx ax pop es di si dx cx bx ax
pop bp
ret ret
notsogood: notsogood:
inc bx inc bx