fix: correction de nombreux bogues suite à la migration vers FASM

This commit is contained in:
Nicolas Hordé 2019-07-17 17:29:13 +02:00
parent 06eb38cad0
commit 8e35ea4794
23 changed files with 226 additions and 226 deletions

View File

@ -83,8 +83,8 @@ define compute_regs
set $rds = ((unsigned long)$ds & 0xFFFF)
set $res = ((unsigned long)$es & 0xFFFF)
set $rss = ((unsigned long)$ss & 0xFFFF)
set $rfs = ((unsigned long)$es & 0xFFFF)
set $rgs = ((unsigned long)$ss & 0xFFFF)
set $rfs = ((unsigned long)$fs & 0xFFFF)
set $rgs = ((unsigned long)$gs & 0xFFFF)
set $rip = ((((unsigned long)$cs & 0xFFFF) << 4) + ((unsigned long)$eip & 0xFFFFFFFF)) & $ADDRESS_MASK
set $r_ss_sp = ((((unsigned long)$ss & 0xFFFF) << 4) + ((unsigned long)$esp & 0xFFFFFFFF)) & $ADDRESS_MASK
set $r_ss_bp = ((((unsigned long)$ss & 0xFFFF) << 4) + ((unsigned long)$ebp & 0xFFFFFFFF)) & $ADDRESS_MASK
@ -243,7 +243,7 @@ define print_mb
set $size = *(unsigned short*)($mem+6)
set $name = (unsigned char*)($mem+8)
printf "%s:%4X:%4X\n",$name,$mem,$size
set $mem=$mem+$size
set $mem=$mem+($size+2)*16
set $verif = *(unsigned char*)($mem)
set $verif2 = *(unsigned char*)($mem+1)
end

View File

@ -54,7 +54,7 @@ proc draw3d_point uses cx si, vertex3d:word,vertex2d:word,camera:word,color:word
add si,4
dec cx
jnz .draw
retf
ret
endp
;affiche liste vertex %0
@ -104,7 +104,7 @@ proc draw3d_line uses ax bx cx dx si di, type:word,faces:word,vertex3d:word,vert
add di,2
dec cx
jnz .draw
retf
ret
endp
;affiche liste vertex %0
@ -202,7 +202,7 @@ proc draw3d_hidden uses ax bx cx dx si di, type:word,faces:word,vertex3d:word,ve
dec cx
jnz .draw
.endof:
retf
ret
endp
;creer table pour face caché %0
@ -279,7 +279,7 @@ proc draw3d_hidden_fill uses eax bx ecx edx si di, type:word,faces:word,vertex3d
.enofvalue:
dec cx
jnz .calculvect
retf
ret
endp
@ -416,7 +416,7 @@ proc load3ds uses eax bx cx si di ds es fs, seg:word,addt:word,objectname:word,v
;;jmp .reading
.error1:
.error2:
retf
ret
endp
un dd 1.0
@ -450,7 +450,7 @@ proc translate uses eax ecx di es, mat:word,x:dword,y:dword,z:dword
mov [di+7*4],eax
mov eax,[z]
mov [di+11*4],eax
retf
ret
endp
;initialise une matrice de translation pour une translation TX %1 dans MATRICE %0
@ -479,7 +479,7 @@ proc translatex uses eax ecx di es, mat:word,value:dword
mov [di+11*4],eax
mov eax,[value]
mov [di+3*4],eax
retf
ret
endp
@ -509,7 +509,7 @@ proc translatey uses eax ecx di es, mat:word,value:dword
mov [di+11*4],eax
mov eax,[value]
mov [di+7*4],eax
retf
ret
endp
;initialise une matrice de translation pour une translation TZ %1 dans MATRICE %0
@ -538,7 +538,7 @@ proc translatez uses eax ecx di es, mat:word,value:dword
mov [di+7*4],eax
mov eax,[value]
mov [di+11*4],eax
retf
ret
endp
;initialise une matrice d'echelle %0 de facteur (x,y,z) %1-%3
@ -564,7 +564,7 @@ proc scale uses eax ecx di es, mat:word,x:dword,y:dword,z:dword
mov [di+10*4],eax
mov eax,[cs:un]
mov [di+15*4],eax
retf
ret
endp
;initialise une matrice d'echelle %0 de facteur value %1
@ -588,7 +588,7 @@ proc rescale uses eax ecx di es, mat:word,value:dword
mov [di+10*4],eax
mov eax,[cs:un]
mov [di+15*4],eax
retf
ret
endp
;copy une matrice %0 en %1
@ -601,7 +601,7 @@ proc copy uses ecx si di es, mat1:word,mat2:word
pop es
cld
rep stosd
retf
ret
endp
;initialise une matrice %0 avec la valeur %1
@ -614,7 +614,7 @@ proc fill uses eax ecx di es, mat:word,value:dword
pop es
cld
rep stosd
retf
ret
endp
;initialise une matrice d'identité %0
@ -637,7 +637,7 @@ proc identity uses eax ecx di es, mat:word
mov [di+5*4],eax
mov [di+10*4],eax
mov [di+15*4],eax
retf
ret
endp
@ -674,7 +674,7 @@ proc rotationx uses eax ecx di es, mat:word,value:dword
mov eax,[cs:un]
mov [di+0*4],eax
mov [di+15*4],eax
retf
ret
endp
;initialise une matrice de rotation BX autour de Y de %0 degrees
@ -710,7 +710,7 @@ proc rotationy uses eax ecx di es, mat:word,value:dword
mov eax,[cs:un]
mov [di+5*4],eax
mov [di+15*4],eax
retf
ret
endp
;initialise une matrice de rotation %0 autour de Z de %1 degrees
@ -746,7 +746,7 @@ proc rotationz uses eax ecx di es, mat:word,value:dword
mov eax,[cs:un]
mov [di+10*4],eax
mov [di+15*4],eax
retf
ret
endp
;initialise une matrice de rotation %0 autour de X,Y,Z de %0-%3 degrees
@ -805,7 +805,7 @@ proc rotation uses eax ecx di es, mat:word,anglex:dword,angley:dword,anglez:dwor
fstp dword [ di+2*4]
mov eax,[cs:un]
mov [di+15*4],eax
retf
ret
endp
@ -866,7 +866,7 @@ proc project uses bx cx si di, vertex2d:word,vertex3d:word,origin:word
add bx,.vertex2d.sizeof
dec cx
jnz .boucle
retf
ret
endp
@ -966,7 +966,7 @@ proc transform uses cx si di, vertex3d:word,mat:word
add si,.vertex3dori.sizeof
dec cx
jnz .boucle
retf
ret
endp
;Multiplie la matrice de transformation %0 par celle en %1 et met les resultat en %2
@ -1211,5 +1211,5 @@ proc multiply uses bx si di, p1:word,p2:word,mat:word
fmul dword [ di+15*4]
;faddp st1
fstp dword [ bx+15*4]
retf
ret
endp

View File

@ -29,7 +29,7 @@ proc detectvmware uses eax ebx ecx edx
mov edx,5658h
in ax,dx
cmp ebx,564D5868h
retf
ret
endp
;renvoie un pointer dx:ax vers la classe %0
@ -39,7 +39,7 @@ proc getpciclass uses di, class:word
shl di,1
mov ax,[cs:classes+di]
mov dx,cs
retf
ret
endp
;renvoie un pointer dx:ax vers la sous-classe de %1 et de classe %0
@ -60,7 +60,7 @@ proc getpcisubclass uses di, class:word,subclass:word
mov ax,[cs:di]
.found:
mov dx,cs
retf
ret
endp
divers db 'divers',0
@ -327,10 +327,10 @@ end virtual
cmp bl,40h
jbe .goinfos
clc
retf
ret
.notexist:
stc
retf
ret
endp
;lit un octet du bus %0 device %1 function %2 nø %3 et le met en AL
@ -350,7 +350,7 @@ proc pcireadbyte uses bx dx, bus:word,device:word,function:word,pointer:word
and bl,3
or dl,bl
in al,dx
retf
ret
endp
;lit 2 octet du bus %0 device %1 function %2 nø %3 et le met en AX
@ -370,7 +370,7 @@ proc pcireadword uses bx dx, bus:word,device:word,function:word,pointer:word
and bl,3
or dl,bl
in ax,dx
retf
ret
endp
;lit 4 octet du bus %0 device %1 function %2 nø %3 et le met en EAX
@ -390,7 +390,7 @@ proc pcireaddword uses bx dx, bus:word,device:word,function:word,pointer:word
and bl,3
or dl,bl
in eax,dx
retf
ret
endp
;Prob avec str pci
@ -414,14 +414,14 @@ proc pciinfo uses ax bx cx edx edi, pointer:word
mov [.pciinf.types],al
mov [.pciinf.maxbus],cl
clc
retf
ret
.errorpci:
stc
retf
ret
endp
;retfourne en DS:%1 les set supporté du processeur par rapport a la struct %0
;retourne en DS:%1 les set supporté du processeur par rapport a la struct %0
proc setinfo uses bx si di, pointer:word,set:word
mov di,[set]
virtual at 0
@ -454,7 +454,7 @@ end virtual
jmp .set
.endofset:
mov byte [di],0
retf
ret
.theset dw .mmx
dw .mmx2
@ -481,7 +481,7 @@ end virtual
endp
;retfourne en DS:%0 les capacités du processeur
;retourne en DS:%0 les capacités du processeur
proc cpuinfo uses eax ebx ecx edx si di ds es, pointer:word
push ds
pop es
@ -627,9 +627,9 @@ proc cpuinfo uses eax ebx ecx edx si di ds es, pointer:word
je .endofsearch
jmp .search
.endofsearch:
retf
ret
.nocpuidatall:
retf
ret
;tableau avec vendeur taille + chainereelle + pointeur famille + pointeur famille etendue

View File

@ -11,7 +11,7 @@ header exe 1,exports,0,0,0
waitkey:
mov ax,0
int 16h
retf
ret
exporting
declare waitkey

View File

@ -21,12 +21,12 @@ proc random uses dx
inc ax
mov [cs:randseed],ax
mov ax,dx
retf
ret
endp
proc randomize uses ax cx dx
mov ah,0
int 1ah
mov [cs:randseed],dx
retf
ret
endp

View File

@ -126,7 +126,7 @@ proc checksyntax uses ax bx cx dx si di ds es, src:word,dest:word,delim:word
jne .itemer
cld
.ackno:
retf
ret
.notequalatall:
stc
jmp .ackno
@ -151,7 +151,7 @@ proc cmpitems uses ax cx si di es, src:word,dest:word,item:word,delim:word
cld
rep cmpsb
clc
retf
ret
endp
@ -170,7 +170,7 @@ proc gettypeditem uses bx cx si di, src:word,item:word,delim:word
stdcall gettyped,di
xchg cl,[ds:si]
clc
retf
ret
endp
@ -207,7 +207,7 @@ proc gettyped uses si, src:word
stdcall strtoadress,si
.endofgettypeditem:
clc
retf
ret
endp
;Renvoie dans ax le type de la str0 pointe par ds:%0 lment %1 delim %3
@ -225,7 +225,7 @@ proc whatisitem uses bx cx si di, src:word,item:word,delim:word
stdcall whatis,di
xchg cl,[ds:si]
clc
retf
ret
endp
;Renvoie dans ax le type de la str0 pointe par ds:%0
@ -304,7 +304,7 @@ proc whatis uses bx cx edx si, src:word
mov al,07h
.endofwhat:
clc
retf
ret
endp
@ -314,7 +314,7 @@ proc strtoadress
;push
stc
;pop
retf
ret
endp
@ -323,7 +323,7 @@ proc strisadress
;push
stc
;pop
retf
ret
endp
;Renvoie non carry si la str ds:%0 pointe peut ˆtre un nom de fichier
@ -347,7 +347,7 @@ proc strisname uses ax si di, src:word
.itsok:
clc
.itsdead:
retf
ret
endp
non db '/<>|"?*:\',01,0FFh
@ -381,7 +381,7 @@ proc strisbase uses ax cx si di es, src:word,base:word
.okbase:
clc
.endbase:
retf
ret
.verifbase:
cmp byte [si+1],0
je .okbase
@ -432,7 +432,7 @@ proc strtoint uses ebx ecx edx si edi es, src:word,base:word
.endbaseto:
mov eax,ebx
clc
retf
ret
endp
@ -448,7 +448,7 @@ proc left uses ax cx si di es, src:word,dest:word,nb:word
mov al,0
stosb
clc
retf
ret
endp
;Renvoie en ds:%1 la partie de %2 caractŠres a partir de la droite de ds:%0
@ -466,7 +466,7 @@ proc right uses ax cx si di es, src:word,dest:word,nb:word
mov al,0
stosb
clc
retf
ret
endp
;Renvoie en ds:%1 la partie de %3 caractŠres a partir de la position %2 de ds:%0
@ -482,7 +482,7 @@ proc middle uses ax cx si di es, src:word,dest:word,item:word,nb:word
mov al,0
stosb
clc
retf
ret
endp
;Rempli de %3 caractŠres %2 a partir de la position %1 de ds:%0
@ -496,7 +496,7 @@ proc fill uses ax cx si di es, src:word,item:word,char:word,nb:word
cld
rep stosb
clc
retf
ret
endp
;Remplace tout les caractŠres %1 de ds:%0 par des caractŠres %2
@ -516,7 +516,7 @@ proc replaceallchar uses ax cx dx di es, src:word,char1:word,char2:word
jmp .findandchange
.endofchange:
clc
retf
ret
endp
;Recherche un caractŠre dl dans la chaŒne ds:%0
@ -531,7 +531,7 @@ proc searchchar uses cx di es, src:word,char:word
mov ax,di
dec ax
clc
retf
ret
endp
;Inverse la chaine pointe en ds:%0
@ -556,7 +556,7 @@ proc invert uses ax cx si di, src:word
jmp .revert
.finishinvert:
clc
retf
ret
endp
;Compares 2 chaines de caractŠres DS:%0 et DS:%1 zerof si non equal
@ -572,7 +572,7 @@ proc cmpstr uses cx dx si di, src:word,dest:word
jne .notequal
repe cmpsb
.notequal:
retf
ret
endp
;Compares 2 chaines de caractŠres DS:%0 et DS:%1 zerof si non equal et renvoie le nb de caractŠre egaux dans ax
@ -589,13 +589,13 @@ proc evalue uses cx si di es, src:word,dest:word
sub ax,cx
popf
clc
retf
ret
.noident:
sub ax,cx
dec ax
popf
clc
retf
ret
endp
;Insert une chaine ds:%0 en ds:%1 a partir du caractŠre %2
@ -620,7 +620,7 @@ proc insert uses ax cx si di es, src:word,dest:word,item:word
cld
rep movsb
clc
retf
ret
endp
@ -640,7 +640,7 @@ proc delete uses ax cx dx si di es, src:word,item:word,size:word
cld
rep movsb
clc
retf
ret
endp
;Copie une chaine de ds:si en es:di
@ -654,7 +654,7 @@ proc copy uses ax cx si di, src:word,dest:word
mov al,0
stosb
clc
retf
ret
endp
@ -673,7 +673,7 @@ proc concat uses ax cx si di es, src:word,dest:word
mov al,0
stosb
clc
retf
ret
endp
@ -699,7 +699,7 @@ proc compressdelimiter uses cx dx si di es, src:word,delim:word
jne .compressitems
mov ax,dx
clc
retf
ret
endp
;Met le nombre d'lments de ds:%0 à %1
@ -732,7 +732,7 @@ proc setnbitems uses ax cx di es, src:word,size:word,delim:word
mov byte [di],0
.noadjust:
clc
retf
ret
endp
;Renvoie la taille ax de l'lment %0
@ -745,7 +745,7 @@ proc getitemsize uses cx dx, src:word,item:word,delim:word
sub ax,dx
dec ax
clc
retf
ret
endp
;Renvoie en ds:%1 l'lment %2 de ds:%0
@ -762,7 +762,7 @@ proc getitem uses ax cx si di es, src:word,dest:word,item:word,delim:word
mov al,0
stosb
clc
retf
ret
endp
;renvoi un pointeur ax sur l'lment %1 de ds:%0
@ -790,7 +790,7 @@ proc getpointeritem uses cx dx di es, src:word,item:word,delim:word
.finishpointer:
mov ax,di
clc
retf
ret
endp
;Renvoie le nombre d'lments ax de ds:%0
@ -810,7 +810,7 @@ proc getnbitems uses cx dx di es, src:word,delim:word
jne .countitems
mov ax,dx
clc
retf
ret
endp
;renvoie la taille en octets AX de la chaine pointe en ds:%0
@ -827,7 +827,7 @@ proc getlength uses cx di es, src:word
dec cx
mov ax,cx
clc
retf
ret
endp
;Met la taille en octets de la chaine pointe ds:%0 a %1
@ -836,7 +836,7 @@ proc setlength uses si, src:word,size:word
add si,[size]
mov byte [si],0
clc
retf
ret
endp
;met en majuscule la chaine ds:%0
@ -855,7 +855,7 @@ proc uppercase uses ax si, src:word
jmp .uppercase
.enduppercase:
clc
retf
ret
endp
;met en majuscule la premiŠre lettre chaine ds:%0
@ -869,7 +869,7 @@ proc onecase uses ax si, src:word
sub byte [si],'a'-'A'
.oneenduppercase:
clc
retf
ret
endp
;met en minuscule la chaine ds:%0
@ -888,7 +888,7 @@ proc lowercase uses ax si, src:word
jmp .lowercase
.endlowercase:
clc
retf
ret
endp
;Inverse la casse la chaine ds:%0
@ -914,6 +914,6 @@ proc invertcase uses ax si, src:word
jmp .invertcase
.endinvertcase:
clc
retf
ret
endp

View File

@ -407,7 +407,7 @@ proc print pointer:word
mov bp,di
pop di si cx bx ax
mov sp,bp
retf
ret
endp
@ -432,7 +432,7 @@ proc showdate uses edx, dates:word
and dx,11111111b
add dx,1956
stdcall showintl,2,edx
retf
ret
endp
;================SHOWTIME==============
@ -456,7 +456,7 @@ proc showtime uses edx, times:word
and dx,11111b
shl dx,1
stdcall showintl,2,edx
retf
ret
endp
;================SHOWNAME==============
@ -477,7 +477,7 @@ proc showname uses cx si, thename:word
.suiteaname:
cmp cx,8+3
jb .showthename
retf
ret
endp
;================SHOWATTR==============
@ -531,7 +531,7 @@ proc showattr, attr:word
push '-'
.directory:
invoke showchars
retf
ret
endp
;================SHOWSIZE==============
@ -567,7 +567,7 @@ proc showsize uses edx ds, thesize:dword
stdcall showintr,4,edx
stdcall showstring0,unitgiga
.finsize:
retf
ret
unit db ' o ',0
unitkilo db ' ko',0
@ -583,7 +583,7 @@ endp
proc showspace
invoke showchars,' ',0FFFFh
clc
retf
ret
endp
@ -614,7 +614,7 @@ local showbuffer[50]:BYTE
invoke showchars,cx,0FFFFh
dec ax
jnz .showinteger
retf
ret
endp
;==========SHOWINTL===========
@ -658,7 +658,7 @@ local showbuffer[50]:BYTE
invoke showchars,cx,0FFFFh
dec ax
jnz .showinteger
retf
ret
endp
;==========SHOWINTR===========
@ -702,7 +702,7 @@ local showbuffer[50]:BYTE
invoke showchars,cx,0FFFFh
dec ax
jnz .showinteger
retf
ret
endp
;==========SHOWSIGNED===========
@ -738,7 +738,7 @@ proc showsigned uses ebx cx edx, sizeofint:word,integer:dword
invoke showchars,'-',0FFFFh
.notsigned:
stdcall showint,edx
retf
ret
endp
;==========SHOWHEX===========
@ -762,7 +762,7 @@ proc showhex uses ax bx cx edx, sizeofint:word,integer:dword
invoke showchars,cx,0FFFFh
dec al
jnz .Hexaize
retf
ret
Tab db '0123456789ABCDEF'
endp
@ -786,7 +786,7 @@ proc showbin uses ax cx edx, sizeofint:word,integer:dword
invoke showchars,cx,0FFFFh
dec al
jnz .binaize
retf
ret
endp
;==========SHOWBCD===========
@ -810,7 +810,7 @@ proc showbcd uses ax cx edx, sizeofint:word,integer:dword
invoke showchars,cx,0FFFFh
dec al
jnz .BCDaize
retf
ret
endp
;==========SHOWSTRING===========
@ -826,7 +826,7 @@ proc showstring uses bx si, pointer:word
invoke showchars,word [si],0FFFFh
dec bl
jnz .strinaize
retf
ret
endp
;==========showchars===========
@ -836,7 +836,7 @@ endp
;===============================
proc showchar, pointer:word
invoke showchars,[pointer],0FFFFh
retf
ret
endp
;==========SHOWSTRING0===========
@ -854,6 +854,6 @@ proc showstring0 uses cx si, pointer:word
inc si
jmp .strinaize0
.no0:
retf
ret
endp

View File

@ -100,10 +100,10 @@ endfat:
cmp ax,0FF0h
jbe nocarry
stc
retf
ret
nocarry:
clc
retf
ret
endp
;============loadfile===============
@ -137,11 +137,11 @@ local temp[48]:WORD
stdcall loadway,cx,eax,[pointer]
jc errorload
clc
retf
ret
errorload:
stc
xor eax,eax
retf
ret
endp
;============execfile (Fonction 18)===============
@ -194,14 +194,14 @@ proc execfile, file:word
pop gs fs es ds
popad
clc
retf
ret
.reallyerror:
invoke mbfree,ax
.reallyerrornoblock:
pop gs fs es ds
popad
stc
retf
ret
endp
;============projfile (Fonction 17)===============
@ -252,11 +252,11 @@ popad
jc .errorload
.notace:
clc
retf
ret
.errorload:
xor eax,eax
stc
retf
ret
endp
@ -290,13 +290,13 @@ proc searchfile uses bx cx si di ds es, pointer:word
jc .nextsearch
.okfound:
clc
retf
ret
.notgood:
cmp si,0FF5h
retf
ret
.errorsearch:
stc
retf
ret
endp
;Transforme la chaine ds:%0 en maj
@ -317,7 +317,7 @@ proc uppercase uses si ax, strs:word
jmp .uppercaser
.enduppercase:
clc
retf
ret
endp
;Compare le nom ds:%0 '.' avec ds:%1
@ -363,10 +363,10 @@ proc cmpnames uses ax cx si di es, off1:word,off2:word
jne .notequal
.itok:
clc
retf
ret
.notequal:
stc
retf
ret
.trynoext:
cmp byte [si-1],0
jne .notequal
@ -409,10 +409,10 @@ proc loadway uses eax bx cx dx si di ds es, sector:word,size:dword,offset:word
rep movsb
.zeroload:
clc
retf
ret
.noway:
stc
retf
ret
endp
;=============INITDRIVE===============
@ -527,10 +527,10 @@ proc initdrive uses eax bx cx edx si di ds es
dec dx
jnz .seefat
clc
retf
ret
.errorinit:
stc
retf
ret
endp
datafat db '/fat',0
@ -554,7 +554,7 @@ proc findfirstfile uses cx si, pointer:word
mov [.find.entryplace],cx
mov [.find.firstsearch],1
stdcall findnextfile,[pointer]
retf
ret
endp
;=============FindnextFile==============
@ -633,10 +633,10 @@ proc findnextfile uses ax bx cx di si ds es, pointer:word
cld
rep movsb
clc
retf
ret
.notwell:
stc
retf
ret
endp
;=============GetFreeSpace===============
@ -651,7 +651,7 @@ proc getfreespace uses eax bx
shl edx,16
add edx,eax
pop eax
retf
ret
endp
;ax=défectueux bx=libre
@ -705,10 +705,10 @@ proc readcluster uses ax bx dx si, sector:word,pointer:word
dec bx
jnz .readsectors
clc
retf
ret
.errorreadincluster:
stc
retf
ret
endp
;=============WRITECLUSTER===============
@ -731,10 +731,10 @@ proc writecluster uses ax bx dx si, sector:word,pointer:word
dec bx
jnz .writesectors
clc
retf
ret
.errorwriteincluster:
stc
retf
ret
endp
@ -816,7 +816,7 @@ proc readsector uses ax bx cx dx si di ds es, sector:word,pointer:word
mov word [bx+buffer.chain],0FFFEh
.error:
stc
retf
ret
.preprepcopy:
mov [tempsec],cx
.prepcopy:
@ -838,7 +838,7 @@ proc readsector uses ax bx cx dx si di ds es, sector:word,pointer:word
cld
rep movsb
.done:
retf
ret
endp
;=============SETBUFFER============
@ -871,10 +871,10 @@ proc setbuffer uses ax cx di ds es, size:word
cld
rep stosw
clc
retf
ret
.errorinit:
stc
retf
ret
endp
;=============GETBUFFER============
@ -893,7 +893,7 @@ proc getbuffer uses ax cx di ds es, pointer:word
cld
rep movsb
clc
retf
ret
endp
;=============WRITESECTOR============
@ -926,7 +926,7 @@ proc writesector uses ax bx cx dx si es, sector:word,pointer:word
dec si
jnz .tryagain
.done:
retf
ret
endp
;=============Getname==============
@ -948,7 +948,7 @@ proc getname uses ax cx si di ds es, pointer:word
mov cx,11
repne scasb
mov byte [es:di],0
retf
ret
endp
;=============Getserial==============
;Renvoie le numéro de serie en EAX
@ -957,7 +957,7 @@ endp
;====================================
proc getserial FAR
mov eax,[cs:myboot.serialnumber]
retf
ret
endp
;=============VERIFYSECTOR==============
@ -994,7 +994,7 @@ proc verifysector uses ecx si di ds es, sector:word
cld
rep cmpsd
.errorverify:
retf
ret
endp
@ -1008,7 +1008,7 @@ invert:
cmp cx,[cs:myboot.sectorsize]
jb invert
pop cx si
retf
ret
;=============DecompressRle (Fonction 05H)==============
;decompress ds:si en es:di taille bp dcompress cx compress
@ -1054,7 +1054,7 @@ proc decompressrle uses ecx dx si di ds es,seg1:word,off1:word,seg2:word,off2:wo
mov ax,di
sub ax,[off2]
clc
retf
ret
endp
;=============CompressRle (Fonction 06H)==============
@ -1108,7 +1108,7 @@ proc compressrle uses ax bx cx dx si di ds es, seg1:word,off1:word,seg2:word,off
mov ax,si
sub ax,[off2]
clc
retf
ret
endp
;=============Changedir (Fonction 13)==============
@ -1192,10 +1192,10 @@ local temp[64]:WORD
rep movsb
.theend:
clc
retf
ret
.noch:
stc
retf
ret
endp
;=============getdir==============
@ -1222,7 +1222,7 @@ proc getdir uses ax cx si di ds es, pointer:word
cld
rep movsb
clc
retf
ret
endp
bufferread db 512 dup (0)

View File

@ -223,7 +223,7 @@ proc mbcreate uses bx cx dx si di ds es, blocks:word, size:word
dec dx
dec dx
mov gs,dx
cmp word [gs:0x0],'HN'
cmp word [gs:0x0],"NH"
je .oktoset
mov ax,memorystart
.oktoset:
@ -239,7 +239,7 @@ proc mbcreate uses bx cx dx si di ds es, blocks:word, size:word
cmp dl,false
je .notenougtmem
mov es,bx
cmp word [es:mb.check],"HN"
cmp word [es:mb.check],"NH"
jne .memoryerror
cmp [es:mb.isnotlast],true
sete dl
@ -248,7 +248,7 @@ proc mbcreate uses bx cx dx si di ds es, blocks:word, size:word
mov ax,[es:mb.sizes]
cmp cx,ax
ja .notsogood
mov word [es:mb.check],"HN"
mov word [es:mb.check],"NH"
mov [es:mb.isnotlast],true
mov [es:mb.reference],gs
mov [es:mb.isresident],false
@ -305,7 +305,7 @@ proc mbfree uses ax bx cx si di ds es, blocks:word
dec bx
dec bx
mov es,bx
cmp word [es:mb.check],"HN"
cmp word [es:mb.check],"NH"
jne .memoryerror
cmp [es:mb.reference],free
je .wasfree
@ -324,7 +324,7 @@ proc mbfree uses ax bx cx si di ds es, blocks:word
dec bx
.searchtofree:
mov es,bx
cmp word [es:mb.check],"HN"
cmp word [es:mb.check],"NH"
jne .memoryerror
inc bx
inc bx
@ -367,7 +367,7 @@ proc mbclean uses ax bx dx es gs
xor dx,dx
.searchfree:
mov gs,bx
cmp word [gs:mb.check],"HN"
cmp word [gs:mb.check],"NH"
jne .memoryerror
inc bx
inc bx
@ -419,7 +419,7 @@ proc mbresident uses bx es, blocks:word
dec bx
dec bx
mov es,bx
cmp word [es:mb.check],"HN"
cmp word [es:mb.check],"NH"
jne .memoryerror
mov [es:mb.isresident],true
ret
@ -434,7 +434,7 @@ proc mbnonresident uses bx es, blocks:word
dec bx
dec bx
mov es,bx
cmp word [es:mb.check],"HN"
cmp word [es:mb.check],"NH"
jne .memoryerror
mov [es:mb.isresident],false
ret
@ -450,7 +450,7 @@ proc mbchown uses bx dx es,blocks:word, owner:word
dec bx
dec bx
mov es,bx
cmp word [es:mb.check],"HN"
cmp word [es:mb.check],"NH"
jne .memoryerror
cmp [es:mb.reference],free
je .wasfree
@ -484,7 +484,7 @@ proc mbget uses bx dx es, num:word
xor dx,dx
.searchfree:
mov es,bx
cmp word [es:mb.check],"HN"
cmp word [es:mb.check],"NH"
jne .memoryerror
inc bx
inc bx
@ -520,7 +520,7 @@ proc mbfind uses bx si di es, blocks:word
.search:
mov es,bx
lea di,[es:mb.names]
cmp word [es:mb.check],"HN"
cmp word [es:mb.check],"NH"
jne .memoryerror
inc bx
inc bx
@ -567,7 +567,7 @@ proc mbfindsb uses bx dx si di es, blocks:word, owner:word
mov dx,[owner]
.search:
mov es,bx
cmp word [es:mb.check],"HN"
cmp word [es:mb.check],"NH"
jne .memoryerror
inc bx
inc bx

View File

@ -12,7 +12,7 @@ memorystart equ 0052h ;premier bloc de la m
org 0h
mb0:
header exe 1,0,imports,allsection,start
header exe 1,exports,imports,allsection,start
start:
push cs

View File

@ -33,8 +33,8 @@ declare restorescreen
declare page2to1
declare page1to2
declare xchgpages
declare waithretfrace
declare waitretfrace
declare waithretrace
declare waitretrace
declare getvideoinfos
declare savedac
declare restoredac
@ -199,7 +199,7 @@ planesize equ 65000
;=====================================
proc enablescroll
mov [cs:datablock.scrolling],1
retf
ret
endp
;=============DISABLESCROLLING=========
@ -209,7 +209,7 @@ endp
;======================================
proc disablescroll
mov [cs:datablock.scrolling],0
retf
ret
endp
;=============ENABLECURSOR=============
@ -234,7 +234,7 @@ proc enablecursor uses ax dx
mov dl,[cs:datablock.y]
xor dh,dh
stdcall setxy,ax,dx
retf
ret
endp
;=============DISABLECURSOR=============
@ -254,7 +254,7 @@ proc disablecursor uses ax dx
dec dx
mov al,0Ah
out dx,ax
retf
ret
endp
;==========SETSTYLE=========
@ -265,7 +265,7 @@ endp
proc setstyle uses cx, style:word
mov ax,[style]
mov [cs:datablock.style],al
retf
ret
endp
;==========GETSTYLE=========
@ -276,7 +276,7 @@ endp
proc getstyle
mov al,[cs:datablock.style]
xor ah,ah
retf
ret
endp
;=============SetVideoMode=========
@ -402,9 +402,9 @@ proc setvideomode uses ax cx dx di, modenum:word
mov [cs:datablock.base],ax
mov [cs:datablock.cursor],1
mov [cs:datablock.style],0
retf
ret
.errorsetvideomode:
retf
ret
endp
@ -416,7 +416,7 @@ initfont:
stdcall loadfont,font8x8,8,1
stdcall loadfont,font8x16,16,0
pop ds
retf
ret
;=============GetVideoMode=========
;Renvoie le mode vidéo courant dans AX
@ -426,7 +426,7 @@ initfont:
proc getvideomode
mov al,[cs:datablock.modenum]
xor ah,ah
retf
ret
endp
;=============CLEARSCREEN=========
@ -474,7 +474,7 @@ proc clearscreen uses eax cx dx di es
rep stosd
.endoferase:
stdcall setxy,0,0
retf
ret
endp
@ -497,9 +497,9 @@ proc setfont uses ax cx dx, font:word
mov dx,sequencer
mov al,3
out dx,ax
retf
ret
.errorsetfont:
retf
ret
endp
;=============GetFont=========
@ -510,7 +510,7 @@ endp
proc getfont
mov al,[cs:datablock.font]
xor ah,ah
retf
ret
endp
;!!!!!!!!!!!!!!!!!!!! a remettre les anciens params de timing depuis origine
@ -590,10 +590,10 @@ proc loadfont uses ax bx cx dx si di es, pointer:word, size:word, font:word
inc di
cmp di,6+6
jbe .doseqs2
retf
ret
.errorloadfont:
stc
retf
ret
reg2 dw 0100h, 0302h, 0304h, 0300h
dw 0004h, 1005h, 0E06h
@ -602,7 +602,7 @@ reg1 dw 0100h, 0402h, 0704h, 0300h
endp
;==========SHOWLINE===============
;remet le curseur text a la ligne avec un retfour chariot
;remet le curseur text a la ligne avec un retour chariot
;->
;<-
;=================================
@ -623,7 +623,7 @@ proc addline uses bx cx
.scro:
inc bl
stdcall setxy,0,bx
retf
ret
endp
;==========SETCOLOR=========
@ -634,7 +634,7 @@ endp
proc setcolor, color:word
mov cx,[color]
mov [cs:datablock.colors],cl
retf
ret
endp
;==========GETCOLOR=========
@ -645,7 +645,7 @@ endp
proc getcolor
mov al,[cs:datablock.colors]
xor ah,ah
retf
ret
endp
;==========SCROLLDOWN=========
@ -693,7 +693,7 @@ proc scrolldown uses ax cx dx si di ds es, line:word
mov ds,ax
rep movsb
.graphp:
retf
ret
endp
;==========GETXY=========
@ -704,7 +704,7 @@ endp
proc getxy uses bx
mov ah,[cs:datablock.x]
mov al,[cs:datablock.y]
retf
ret
endp
;==========SETXY=========
@ -724,7 +724,7 @@ proc setxy uses ax bx dx di, x:word ,y: word
shl di,1
mov [cs:datablock.xy],di
call setcursor
retf
ret
endp
;==========SHOWPIXEL=========
@ -784,7 +784,7 @@ proc showpixel uses ax bx cx dx si di es, x:word,y:word,color:word
mov al,[es:di]
mov [es:di],ch
.endofshow:
retf
ret
endp
;!!!!!!!!!!!!!! gerer le mode chain 4
@ -811,7 +811,7 @@ proc getpixel uses ax bx cx dx di es, x:word,y:word
mov bx,0A000h
mov es,bx
mov al,[es:di]
retf
ret
endp
;==========GETVGAINFO=========
@ -827,35 +827,35 @@ proc getvideoinfos uses cx si di ds, pointer:word
mov di,[pointer]
cld
rep movsb
retf
ret
endp
;==========WAITretfRACE=========
;Synchronisation avec la retfrace verticale
;==========WAITretRACE=========
;Synchronisation avec la retrace verticale
;<-
;->
;==============================
proc waitretfrace uses ax dx
proc waitretrace uses ax dx
mov dx,3DAh
.waitr:
in al,dx
test al,8
jz .waitr
retf
ret
endp
;==========WAITHretfRACE=========
;Synchronisation avec la retfrace horizontale
;==========WAITHretRACE=========
;Synchronisation avec la retrace horizontale
;<-
;->
;===============================
proc waithretfrace uses ax dx
proc waithretrace uses ax dx
mov dx,3DAh
.waitr:
in al,dx
test al,1
jz .waitr
retf
ret
endp
;==========GETCHAR=========
@ -869,7 +869,7 @@ proc getchars uses di es
mov di,[cs:datablock.xy]
mov al,[es:di]
xor ah,ah
retf
ret
endp
;==========SHOWCHAR=========
@ -902,7 +902,7 @@ proc showchars uses ax bx cx dx di es, char:word,attr:word
stdcall addline
.noadjusted:
call setcursor
retf
ret
endp
setcursor:
@ -980,10 +980,10 @@ push ax
pop ds
stdcall savescreento,0
clc
retf
ret
.error:
stc
retf
ret
endp
data3 db '/vgascreen',0
@ -1001,7 +1001,7 @@ proc savescreento uses ecx si di ds es, offset:word
xor si,si
cld
rep movsd
retf
ret
endp
;===================================sauve les parametres en ds:%0================
@ -1016,7 +1016,7 @@ proc saveparamto uses ecx si di ds es, offset:word
mov si,datablock
cld
rep movsb
retf
ret
endp
;===================================restore les parametres depuis en ds:%0================
@ -1030,7 +1030,7 @@ proc restoreparamfrom uses ecx si di es, offset:word
mov di,datablock
cld
rep movsb
retf
ret
endp
@ -1050,10 +1050,10 @@ push ax
pop ds
stdcall restorescreenfrom,0
clc
retf
ret
.error:
stc
retf
ret
endp
@ -1068,7 +1068,7 @@ proc restorescreenfrom uses ecx si di es, offset:word
xor di,di
cld
rep movsd
retf
ret
endp
@ -1087,7 +1087,7 @@ proc page2to1 uses ecx si di ds es
xor di,di
cld
rep movsd
retf
ret
endp
;===============================Page1to2============================
@ -1102,7 +1102,7 @@ proc page1to2 uses ecx si di ds es
xor si,si
cld
rep movsd
retf
ret
endp
;===============================xchgPages============================
proc xchgpages uses ax ecx si di ds es bp
@ -1128,10 +1128,10 @@ cld
rep movsd
invoke mbfree,ax
clc
retf
ret
.error:
stc
retf
ret
endp
data4 db '/vgatemp',0
@ -1161,10 +1161,10 @@ stdcall savescreento,di
add di,[cs:datablock.pagesize]
stdcall savedacto,di
clc
retf
ret
.error:
stc
retf
ret
endp
adata db '/vga',0
@ -1188,10 +1188,10 @@ stdcall restorescreenfrom,di
add di,[cs:datablock.pagesize]
stdcall restoredacfrom,di
clc
retf
ret
.error:
stc
retf
ret
endp
@ -1208,10 +1208,10 @@ push ax
pop ds
stdcall savedacto,0
clc
retf
ret
.error:
stc
retf
ret
endp
data2 db '/vgadac',0
@ -1227,10 +1227,10 @@ push ax
pop ds
stdcall restoredacfrom,0
clc
retf
ret
.error:
stc
retf
ret
endp
@ -1259,7 +1259,7 @@ dec dx
dec dx
dec cx
jne .save
retf
ret
endp
;restore le DAC depuis ds:si
@ -1285,7 +1285,7 @@ out dx,al
dec dx
dec cx
jne .save2
retf
ret
endp

View File

@ -146,7 +146,7 @@ errorprec:
code_exit:
pop ax
retf
ret
code_version:
invoke print, version_text
@ -161,7 +161,7 @@ code_cls:
code_reboot:
push 0ffffh
push 00000h
retf
ret
code_command:
invoke print, def

View File

@ -231,7 +231,7 @@ suit7:
cmp ax,4200h
jne adres
invoke restorestate
retf
ret
calc1:
push ax dx si
mov ax,[xx]

View File

@ -11,7 +11,7 @@ header exe 1,0,imports,0,realstart
realstart:
invoke print,message
invoke waitkey
retf
ret
message db 'Appel de la librairie \c02video\c07 et de la librairie \c02EXEM-LIB.LIB\c07 !',0

View File

@ -67,7 +67,7 @@ tre3:
tre4:
cmp ah,67
jne endof
retf
ret
;couleur al pour ligne %0 en %1
proc changelineattr uses ax bx di es,line:word,attr:word
@ -86,7 +86,7 @@ mov [es:di],bl
add di,2
dec al
jnz popep
retf
ret
endp
xx dw 1

View File

@ -35,7 +35,7 @@ endofit:
xor ax,ax
int 16h
invoke restorestate
retf
ret
problem:
push cs

View File

@ -12,6 +12,6 @@ realstart:
mov eax,cr0
or al,1
mov cr0,eax
retf
ret

View File

@ -12,11 +12,11 @@ realstart:
invoke mouseon
jc errormouse
invoke print, message
retf
ret
errormouse:
invoke print, errormessage
retf
ret
message db 'Activation de la souris\l',0
errormessage db 'impossible d''activer la souris\l',0

View File

@ -85,7 +85,7 @@ go4:
mov ax,0
int 16h
invoke restorestate
retf
ret
put:
invoke random
mov di,ax

View File

@ -33,7 +33,7 @@ show:
jnz show
invoke bioswaitkey
invoke restorestate
retf
ret
importing
use VIDEO.LIB,print

View File

@ -183,7 +183,7 @@ retrace:
jmp rool
endee:
invoke restorestate
retf
ret
errorloading:
push cs

View File

@ -56,13 +56,13 @@ someof:
mov ah,0
int 16h
invoke restorestate
retf
ret
errors:
invoke print, error
mov ah,0
int 16h
invoke restorestate
retf
ret
error db '\g10,10Erreur avec le lecteur de disquette !',0
error2 db '\g10,10Le disque est defectueux, appuyez sur une touche pour quitter',0

View File

@ -225,7 +225,7 @@ suit7:
cmp ax,4200h
jne adres
invoke restorestate
retf
ret
calc1:
push ax dx si
mov ax,[xx]