feat: ajout d'une recherche de sous bloc (mbfindsb) et correction d'un but concernant la commande de recherche de bloc mbfind.

This commit is contained in:
Nicolas Hordé 2004-11-03 22:30:09 +00:00
parent 1572c0277e
commit d7590a4589
1 changed files with 53 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 9 maxfunc equ 10
jmp tsr ;Saute à la routine résidente jmp tsr ;Saute à la routine résidente
nameed db 'MB' ;Nom drivers nameed db 'MB' ;Nom drivers
@ -63,6 +63,7 @@ tables dw MBinit ;Table qui contient les adresses de toutes les fonctions de VI
dw MBChown dw MBChown
dw MBAlloc dw MBAlloc
dw MBclean dw MBclean
dw MBfindsb
FirstMB dw 0 FirstMB dw 0
@ -191,12 +192,6 @@ nottofree:
pop es bx ax pop es bx ax
ret ret
wasfree: wasfree:
pushad
mov ah,0Dh
mov cx,16
mov dx,1999h
int 47h
popad
stc stc
pop es bx ax pop es bx ax
ret ret
@ -484,11 +479,61 @@ itsend2:
pop di si bx ax pop di si bx ax
ret ret
foundmcb2: foundmcb2:
mov bx,gs
inc bx
inc bx
mov gs,bx
clc clc
pop di si bx ax pop di si bx ax
ret ret
;Renvoie en GS le sous mcb qui correspond a ds:si et qui appartien a dx
MBFindsb:
push ax bx si di
mov bx,cs:firstmb
dec bx
dec bx
mov di,MB.Names
search2:
mov gs,bx
cmp gs:[MB.Check],'NH'
jne itsend3
inc bx
inc bx
add bx,gs:[MB.Sizes]
cmp word ptr gs:[MB.Sizes],0
je itsend3
push si di
cmpnames2:
mov al,gs:[di]
cmp al,ds:[si]
jne ok2
cmp al,0
je ok2
inc si
inc di
jmp cmpnames2
ok2:
pop di si
jne notfoundmcb2
cmp gs:[MB.Reference],dx
je foundmcb3
notfoundmcb2:
cmp gs:[MB.IsNotLast],true
je search2
itsend3:
stc
pop di si bx ax
ret
foundmcb3:
mov bx,gs
inc bx
inc bx
mov gs,bx
clc
pop di si bx ax
ret
;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 push bp