|
|
|
@ -8,6 +8,8 @@ option procalign:byte
|
|
|
|
|
include "..\include\fat.h" |
|
|
|
|
include "..\include\mem.h" |
|
|
|
|
include "..\include\divers.h" |
|
|
|
|
include "..\include\pci.h" |
|
|
|
|
include "..\include\cpu.h" |
|
|
|
|
|
|
|
|
|
org 0h |
|
|
|
|
|
|
|
|
@ -183,6 +185,101 @@ endoff:
|
|
|
|
|
def db '\c02Liste des commandes internes\l\l\c07',0 |
|
|
|
|
commandes db '%0 \h10:\h12%0 \h70%0\l',0 |
|
|
|
|
|
|
|
|
|
code_detect: |
|
|
|
|
call [cs:print],offset msg_cpu_detect |
|
|
|
|
call [cs:cpuinfo],offset thecpu |
|
|
|
|
call [cs:setinfo],offset thecpu,offset temp |
|
|
|
|
call [cs:print],offset msg_ok2 |
|
|
|
|
push offset temp |
|
|
|
|
xor eax,eax |
|
|
|
|
mov al,[thecpu.family] |
|
|
|
|
push eax |
|
|
|
|
mov al,[thecpu.models] |
|
|
|
|
push eax |
|
|
|
|
mov al,[thecpu.stepping] |
|
|
|
|
push eax |
|
|
|
|
push offset thecpu.names |
|
|
|
|
push offset thecpu.vendor |
|
|
|
|
call [cs:print],offset msg_cpu_detect_inf |
|
|
|
|
call [cs:print],offset msg_pci |
|
|
|
|
call [cs:pciinfo],offset thepci |
|
|
|
|
jc nopci |
|
|
|
|
call [cs:print],offset msg_ok2 |
|
|
|
|
xor eax,eax |
|
|
|
|
mov al,[thepci.maxbus] |
|
|
|
|
push eax |
|
|
|
|
mov al,[thepci.version_minor] |
|
|
|
|
push eax |
|
|
|
|
mov al,[thepci.version_major] |
|
|
|
|
push eax |
|
|
|
|
call [cs:print],offset msg_pci_info |
|
|
|
|
call [cs:print],offset msg_pci_enum |
|
|
|
|
xor bx,bx |
|
|
|
|
xor cx,cx |
|
|
|
|
xor si,si |
|
|
|
|
searchpci: |
|
|
|
|
call [cs:getcardinfo],bx,cx,si,offset temp |
|
|
|
|
jc stopthis |
|
|
|
|
mov al,[(pcidata offset temp).subclass] |
|
|
|
|
push ax |
|
|
|
|
mov al,[(pcidata offset temp).class] |
|
|
|
|
push ax |
|
|
|
|
call [cs:getpcisubclass] |
|
|
|
|
push dx |
|
|
|
|
push ax |
|
|
|
|
mov al,[(pcidata offset temp).class] |
|
|
|
|
xor ah,ah |
|
|
|
|
push ax |
|
|
|
|
call [cs:getpciclass] |
|
|
|
|
push dx |
|
|
|
|
push ax |
|
|
|
|
push 4 |
|
|
|
|
push esi |
|
|
|
|
push 4 |
|
|
|
|
push ecx |
|
|
|
|
push 4 |
|
|
|
|
push ebx |
|
|
|
|
mov ax,[(pcidata offset temp).device] |
|
|
|
|
push eax |
|
|
|
|
mov ax,[(pcidata offset temp).vendor] |
|
|
|
|
push eax |
|
|
|
|
call [cs:print],offset msg_pci_card |
|
|
|
|
inc si |
|
|
|
|
cmp si,7 |
|
|
|
|
jbe searchpci |
|
|
|
|
stopthis: |
|
|
|
|
xor si,si |
|
|
|
|
inc cx |
|
|
|
|
cmp cx,31 |
|
|
|
|
jbe searchpci |
|
|
|
|
xor cx,cx |
|
|
|
|
inc bx |
|
|
|
|
cmp bx,16 |
|
|
|
|
jbe searchpci |
|
|
|
|
jmp next |
|
|
|
|
nopci: |
|
|
|
|
call [cs:print],offset msg_echec2 |
|
|
|
|
next: |
|
|
|
|
call [cs:detectvmware] |
|
|
|
|
jne novirtual |
|
|
|
|
call [cs:print],offset msg_vmware |
|
|
|
|
novirtual: |
|
|
|
|
ret |
|
|
|
|
|
|
|
|
|
thepci pciinf <> |
|
|
|
|
thecpu cpu <> |
|
|
|
|
|
|
|
|
|
msg_ok2 db "\h70 [\c02 Ok \c07]\l",0 |
|
|
|
|
msg_echec2 db "\h70 [\c0CPasser\c07]\l",0 |
|
|
|
|
msg_cpu_detect db "Dectection du processeur",0 |
|
|
|
|
msg_cpu_detect_inf db " -Fondeur : %0\l -Modele : %0\l -Revision : %u\l -Version : %u\l -Famille : %u\l -Technologies: %0\l",0 |
|
|
|
|
msg_pci db "Detection des systemes PCI",0 |
|
|
|
|
msg_pci_info db " -Version : %yB.%yB\l -Numero bus max: %u\l",0 |
|
|
|
|
msg_pci_enum db " -Enumeration des peripheriques PCI:\l" |
|
|
|
|
db " |Vendeur|Modele|Bus |Dev.|Func|Classe.Sous-classe\l",0 |
|
|
|
|
msg_pci_card db " | %hW | %hW |%w|%w|%w|%0P.%0P\l",0 |
|
|
|
|
msg_vmware db "\c04 VMWare a ete detecte !!!\c07\l",0 |
|
|
|
|
|
|
|
|
|
code_mode: |
|
|
|
|
call [cs:gettypeditem],di,0,' ' |
|
|
|
|
and al,1111b |
|
|
|
@ -262,8 +359,302 @@ killing db 'Fermeture du processus %0\l',0
|
|
|
|
|
errorkilling db '\c04Impossible de fermer ce processus\c07',0 |
|
|
|
|
|
|
|
|
|
code_stack: |
|
|
|
|
push ebp |
|
|
|
|
push esp |
|
|
|
|
push ss |
|
|
|
|
push ss |
|
|
|
|
call [cs:print],offset stackshow |
|
|
|
|
mov cx,12 ;12 derniers éléments |
|
|
|
|
xor esi,esi |
|
|
|
|
mov si,sp |
|
|
|
|
sub si,2*12 |
|
|
|
|
showloop: |
|
|
|
|
push [dword ptr ss:si] |
|
|
|
|
push esi |
|
|
|
|
push ss |
|
|
|
|
push ss |
|
|
|
|
call [cs:print],offset itemshow |
|
|
|
|
inc si |
|
|
|
|
inc si |
|
|
|
|
cmp si,sp |
|
|
|
|
jne notspshow |
|
|
|
|
call [cs:print],offset stresp |
|
|
|
|
notspshow: |
|
|
|
|
cmp si,bp |
|
|
|
|
jne nextshow |
|
|
|
|
call [cs:print],offset strebp |
|
|
|
|
nextshow: |
|
|
|
|
dec cx |
|
|
|
|
jnz showloop |
|
|
|
|
ret |
|
|
|
|
|
|
|
|
|
stackshow db '\l\c02Vidage de la pile systeme\l\l\c07' |
|
|
|
|
db 'Segment SS : 0x%hW\l' |
|
|
|
|
db 'Pointeur ESP : 0x%hD\l' |
|
|
|
|
db 'Pointeur EBP : 0x%hD\l' |
|
|
|
|
db 'Seg :Adr | Donnees',0 |
|
|
|
|
itemshow db '\l0x%hW:0x%hW | 0x%hW',0 |
|
|
|
|
|
|
|
|
|
strebp db '<-- BP',0 |
|
|
|
|
stresp db '<-- SP',0 |
|
|
|
|
|
|
|
|
|
code_dump: |
|
|
|
|
call [cs:gettypeditem],di,0,' ' |
|
|
|
|
call [cs:mbfind],di |
|
|
|
|
jc notmbfind |
|
|
|
|
mov fs,ax |
|
|
|
|
dec ax |
|
|
|
|
dec ax |
|
|
|
|
mov gs,ax |
|
|
|
|
cmp [word ptr fs:0x0],'EC' |
|
|
|
|
jne notace2 |
|
|
|
|
push offset oui ;CE? str0 2 |
|
|
|
|
jmp suitelikeace2 |
|
|
|
|
notace2: |
|
|
|
|
push offset non |
|
|
|
|
suitelikeace2: |
|
|
|
|
cmp [word ptr gs:mb.isnotlast],true |
|
|
|
|
je notlast2 |
|
|
|
|
push offset oui ;CE? str0 2 |
|
|
|
|
jmp suitelikelast2 |
|
|
|
|
notlast2: |
|
|
|
|
push offset non |
|
|
|
|
suitelikelast2: |
|
|
|
|
mov dx,gs |
|
|
|
|
push edx ;Emplacement memoire hex 2 |
|
|
|
|
;parent |
|
|
|
|
cmp [gs:mb.reference],0 |
|
|
|
|
jne nextdetect2 |
|
|
|
|
push cs |
|
|
|
|
push offset none ;parent lstr0 2x2 |
|
|
|
|
add bx,[gs:mb.sizes] |
|
|
|
|
jmp suitemn2 |
|
|
|
|
nextdetect2: |
|
|
|
|
mov dx,[gs:mb.reference] |
|
|
|
|
dec dx |
|
|
|
|
dec dx |
|
|
|
|
push dx ;parent lstr0 2x2 |
|
|
|
|
push offset (mb).names |
|
|
|
|
suitemn2: |
|
|
|
|
cmp [gs: mb.isresident],true |
|
|
|
|
jne notresident2 |
|
|
|
|
push offset oui ;resident str0 2 |
|
|
|
|
jmp suitelistmcb2 |
|
|
|
|
notresident2: |
|
|
|
|
push offset non ;resident str0 2 |
|
|
|
|
suitelistmcb2: |
|
|
|
|
xor edx,edx |
|
|
|
|
mov dx,[gs: mb.sizes] |
|
|
|
|
shl edx,4 |
|
|
|
|
push edx |
|
|
|
|
push gs ;nom lstr0 2x2 |
|
|
|
|
push offset (mb).names |
|
|
|
|
push offset dumpshow ;ligne |
|
|
|
|
call [cs:print] |
|
|
|
|
cmp [word ptr fs:0x0],'EC' |
|
|
|
|
jne endofdumpformoment |
|
|
|
|
push [dword ptr fs:exe.starting] |
|
|
|
|
push fs |
|
|
|
|
push fs |
|
|
|
|
push [dword ptr fs:exe.sections] |
|
|
|
|
push fs |
|
|
|
|
push fs |
|
|
|
|
push [dword ptr fs:exe.imports] |
|
|
|
|
push fs |
|
|
|
|
push fs |
|
|
|
|
push [dword ptr fs:exe.exports] |
|
|
|
|
push fs |
|
|
|
|
push fs |
|
|
|
|
cmp [fs: exe.compressed],true |
|
|
|
|
jne notcompressed |
|
|
|
|
push offset oui |
|
|
|
|
jmp suiteiscompressed |
|
|
|
|
notcompressed: |
|
|
|
|
push offset non |
|
|
|
|
suiteiscompressed: |
|
|
|
|
push [dword ptr fs:exe.checksum] |
|
|
|
|
push [dword ptr fs:exe.major] |
|
|
|
|
call [cs:print],offset dumpshowce |
|
|
|
|
endofdumpformoment: |
|
|
|
|
ret |
|
|
|
|
notmbfind: |
|
|
|
|
call [cs:print],offset errornotmbfind |
|
|
|
|
ret |
|
|
|
|
|
|
|
|
|
errornotmbfind db '\c04Impossible de trouver le bloc specifie\l\l\c07',0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dumpshow db '\l\c02Dump du bloc de memoire nomme %0P\l\l' |
|
|
|
|
db '\c02-----------------------------\l' |
|
|
|
|
db '\c02Informations du bloc memoire\c07\l' |
|
|
|
|
db 'Taille du bloc reserve : %u\l' |
|
|
|
|
db 'Bloc resident en memoire : %0\l' |
|
|
|
|
db 'Parent du bloc : %0P\l' |
|
|
|
|
db 'Adresse du bloc memoire : 0x%hW:0x0000\l' |
|
|
|
|
db 'Dernier bloc en memoire : %0\l' |
|
|
|
|
db 'Heberge un format CE : %0\l',0 |
|
|
|
|
dumpshowce db '\c02-----------------------------\l' |
|
|
|
|
db 'Informations du bloc executable\c07\l' |
|
|
|
|
db 'Version de l''executable : %u\l' |
|
|
|
|
db 'Somme de controle : %hD\l' |
|
|
|
|
db 'Compression du code : %0\l' |
|
|
|
|
db 'Exportation de fonctions : 0x%hW:0x%hW\l' |
|
|
|
|
db 'Importation de fonctions : 0x%hW:0x%hW\l' |
|
|
|
|
db 'Sections de donnees : 0x%hW:0x%hW\l' |
|
|
|
|
db 'Point d''entree du code : 0x%hW:0x%hW\l',0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
code_sections: |
|
|
|
|
call [cs:gettypeditem],di,0,' ' |
|
|
|
|
call [cs:mbfind],di |
|
|
|
|
jc notmbfindssections |
|
|
|
|
jmp haveatargetsections |
|
|
|
|
notmbfindssections: |
|
|
|
|
call [cs:searchfile],di |
|
|
|
|
jc notmbfindall |
|
|
|
|
call [cs:projfile],di |
|
|
|
|
jc notmbfindall |
|
|
|
|
call [cs:mbfind],di |
|
|
|
|
jc notmbfindall |
|
|
|
|
haveatargetsections: |
|
|
|
|
mov fs,ax |
|
|
|
|
cmp [word ptr fs:0x0],'EC' |
|
|
|
|
jne errornotace2 |
|
|
|
|
mov si,[fs:exe.sections] |
|
|
|
|
cmp si,0 |
|
|
|
|
je errornosections |
|
|
|
|
xor edx,edx |
|
|
|
|
call [cs:print],offset rets |
|
|
|
|
showallsections: |
|
|
|
|
add si,4 |
|
|
|
|
push fs |
|
|
|
|
push si |
|
|
|
|
call [cs:print],offset functions |
|
|
|
|
inc edx |
|
|
|
|
findnextsections: |
|
|
|
|
inc si |
|
|
|
|
cmp [byte ptr fs:si],0 |
|
|
|
|
jne findnextsections |
|
|
|
|
cmp [dword ptr fs:si],0 |
|
|
|
|
je finishsections |
|
|
|
|
inc si |
|
|
|
|
jmp showallsections |
|
|
|
|
finishsections: |
|
|
|
|
push edx |
|
|
|
|
call [cs:print],offset allsections |
|
|
|
|
ret |
|
|
|
|
|
|
|
|
|
errornosections: |
|
|
|
|
call [cs:print],offset errornosection |
|
|
|
|
ret |
|
|
|
|
|
|
|
|
|
allsections db '\c02\lIl y avait %u sections dans le bloc ou fichier\l\c07',0 |
|
|
|
|
errornosection db '\c02Aucune section dans le bloc ou fichier\l\c07',0 |
|
|
|
|
|
|
|
|
|
code_exports: |
|
|
|
|
call [cs:gettypeditem],di,0,' ' |
|
|
|
|
call [cs:mbfind],di |
|
|
|
|
jc notmbfindsimports |
|
|
|
|
jmp haveatargetexports |
|
|
|
|
notmbfindsexports: |
|
|
|
|
call [cs:searchfile],di |
|
|
|
|
jc notmbfindall |
|
|
|
|
call [cs:projfile],di |
|
|
|
|
jc notmbfindall |
|
|
|
|
call [cs:mbfind],di |
|
|
|
|
jc notmbfindall |
|
|
|
|
haveatargetexports: |
|
|
|
|
mov fs,ax |
|
|
|
|
cmp [word ptr fs:0x0],'EC' |
|
|
|
|
jne errornotace2 |
|
|
|
|
mov si,[fs:exe.exports] |
|
|
|
|
cmp si,0 |
|
|
|
|
je errornoexports |
|
|
|
|
xor edx,edx |
|
|
|
|
call [cs:print],offset rets |
|
|
|
|
showallexports: |
|
|
|
|
push fs |
|
|
|
|
push si |
|
|
|
|
call [cs:print],offset functions |
|
|
|
|
inc edx |
|
|
|
|
findnextexports: |
|
|
|
|
inc si |
|
|
|
|
cmp [byte ptr fs:si],0 |
|
|
|
|
jne findnextexports |
|
|
|
|
add si,3 |
|
|
|
|
cmp [dword ptr fs:si],0 |
|
|
|
|
je finishexports |
|
|
|
|
jmp showallexports |
|
|
|
|
finishexports: |
|
|
|
|
push edx |
|
|
|
|
call [cs:print],offset allexports |
|
|
|
|
ret |
|
|
|
|
|
|
|
|
|
errornoexports: |
|
|
|
|
call [cs:print],offset errornoexport |
|
|
|
|
ret |
|
|
|
|
|
|
|
|
|
allexports db '\c02\lIl y avait %u exportations dans le bloc ou fichier\l\c07',0 |
|
|
|
|
errornoexport db '\c02Aucune exportation dans le bloc ou fichier\l\c07',0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
code_imports: |
|
|
|
|
call [cs:gettypeditem],di,0,' ' |
|
|
|
|
call [cs:mbfind],di |
|
|
|
|
jc notmbfindsimports |
|
|
|
|
jmp haveatargetimports |
|
|
|
|
notmbfindsimports: |
|
|
|
|
call [cs:searchfile],di |
|
|
|
|
jc notmbfindall |
|
|
|
|
call [cs:projfile],di |
|
|
|
|
jc notmbfindall |
|
|
|
|
call [cs:mbfind],di |
|
|
|
|
jc notmbfindall |
|
|
|
|
haveatargetimports: |
|
|
|
|
mov fs,ax |
|
|
|
|
cmp [word ptr fs:0x0],'EC' |
|
|
|
|
jne errornotace2 |
|
|
|
|
mov si,[fs:exe.imports] |
|
|
|
|
cmp si,0 |
|
|
|
|
je errornoimports |
|
|
|
|
xor edx,edx |
|
|
|
|
call [cs:print],offset rets |
|
|
|
|
showallimports: |
|
|
|
|
push fs |
|
|
|
|
push si |
|
|
|
|
call [cs:print],offset functions |
|
|
|
|
inc edx |
|
|
|
|
findnextimports: |
|
|
|
|
inc si |
|
|
|
|
cmp [byte ptr fs:si],0 |
|
|
|
|
jne findnextimports |
|
|
|
|
add si,5 |
|
|
|
|
cmp [dword ptr fs:si],0 |
|
|
|
|
je finishimports |
|
|
|
|
jmp showallimports |
|
|
|
|
finishimports: |
|
|
|
|
push edx |
|
|
|
|
call [cs:print],offset allimports |
|
|
|
|
ret |
|
|
|
|
|
|
|
|
|
errornoimports: |
|
|
|
|
call [cs:print],offset errornoimport |
|
|
|
|
ret |
|
|
|
|
|
|
|
|
|
notmbfindall: |
|
|
|
|
call [cs:print],offset errornotmborfilefind |
|
|
|
|
ret |
|
|
|
|
|
|
|
|
|
errornotace2: |
|
|
|
|
call [cs:print],offset errornotcefind |
|
|
|
|
ret |
|
|
|
|
|
|
|
|
|
functions db '%0P\l',0 |
|
|
|
|
rets db '\l\l',0 |
|
|
|
|
allimports db '\c02\lIl y avait %u importations dans le bloc ou fichier\l\c07',0 |
|
|
|
|
errornoimport db '\c02Aucune importation dans le bloc ou fichier\l\c07',0 |
|
|
|
|
errornotcefind db '\c04Le bloc ou le fichier spécifié n''est pas CE\l\c07',0 |
|
|
|
|
errornotmborfilefind db '\c04Impossible de trouver le bloc ou le fichier specifie\l\c07',0 |
|
|
|
|
|
|
|
|
|
code_regs: |
|
|
|
|
call [cs:savecontext],offset allregs |
|
|
|
@ -327,14 +718,14 @@ ret
|
|
|
|
|
|
|
|
|
|
registershow db '\l\c02Liste des registres du Microprocesseur\l\l\c07' |
|
|
|
|
db '\c04CPU\h30FPU\c07\l' |
|
|
|
|
db 'EFGS: 0x%hD : %w |\h32ST(0) ??:\l' |
|
|
|
|
db 'EAX : 0x%hD : %w |\h32ST(1) ??:\l' |
|
|
|
|
db 'EBX : 0x%hD : %w |\h32ST(2) ??:\l' |
|
|
|
|
db 'ECX : 0x%hD : %w |\h32ST(3) ??:\l' |
|
|
|
|
db 'EDX : 0x%hD : %w |\h32ST(4) ??:\l' |
|
|
|
|
db 'ESI : 0x%hD : %w |\h32ST(5) ??:\l' |
|
|
|
|
db 'EDI : 0x%hD : %w |\h32ST(6) ??:\l' |
|
|
|
|
db 'EBP : 0x%hD : %w |\h32ST(7) ??:\l' |
|
|
|
|
db 'EFGS: 0x%hD : %w |\h32ST(0): ??\l' |
|
|
|
|
db 'EAX : 0x%hD : %w |\h32ST(1): ??\l' |
|
|
|
|
db 'EBX : 0x%hD : %w |\h32ST(2): ??\l' |
|
|
|
|
db 'ECX : 0x%hD : %w |\h32ST(3): ??\l' |
|
|
|
|
db 'EDX : 0x%hD : %w |\h32ST(4): ??\l' |
|
|
|
|
db 'ESI : 0x%hD : %w |\h32ST(5): ??\l' |
|
|
|
|
db 'EDI : 0x%hD : %w |\h32ST(6): ??\l' |
|
|
|
|
db 'EBP : 0x%hD : %w |\h32ST(7): ??\l' |
|
|
|
|
db 'ESP : 0x%hD : %w |\h32\l' |
|
|
|
|
db 'EIP : 0x%hD : %w |\h32\l' |
|
|
|
|
db 'CS : 0x%hW : %w |\h32\l' |
|
|
|
@ -450,17 +841,17 @@ pushd [dword ptr es:(ints si).launchedlow]
|
|
|
|
|
pushd [dword ptr es:(ints si).launchedhigh] |
|
|
|
|
cmp [es:(ints si).activated],1 |
|
|
|
|
je activate |
|
|
|
|
push offset resident |
|
|
|
|
push offset oui |
|
|
|
|
jmp suiteactivate |
|
|
|
|
activate: |
|
|
|
|
push offset nonresident |
|
|
|
|
push offset non |
|
|
|
|
suiteactivate: |
|
|
|
|
cmp [es:(ints si).locked],1 |
|
|
|
|
je verrouille |
|
|
|
|
push offset resident |
|
|
|
|
push offset oui |
|
|
|
|
jmp suiteverrouille |
|
|
|
|
verrouille: |
|
|
|
|
push offset nonresident |
|
|
|
|
push offset non |
|
|
|
|
suiteverrouille: |
|
|
|
|
push esi |
|
|
|
|
push es |
|
|
|
@ -509,6 +900,7 @@ okrefresh:
|
|
|
|
|
errorrefreshing db '\c04Impossible de lire le support',0 |
|
|
|
|
extcom db '.CE',0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
code_mem: |
|
|
|
|
call [cs:print],offset msg |
|
|
|
|
xor edx,edx |
|
|
|
@ -522,23 +914,23 @@ listmcb:
|
|
|
|
|
dec ax |
|
|
|
|
mov gs,ax |
|
|
|
|
inc cx |
|
|
|
|
cmp [fs:0x0],'EC' |
|
|
|
|
cmp [word ptr fs:0x0],'EC' |
|
|
|
|
jne notace |
|
|
|
|
push offset resident ;CE? str0 2 |
|
|
|
|
push offset oui ;CE? str0 2 |
|
|
|
|
jmp suitelikeace |
|
|
|
|
notace: |
|
|
|
|
push offset nonresident |
|
|
|
|
push offset non |
|
|
|
|
suitelikeace: |
|
|
|
|
mov dx,fs |
|
|
|
|
push edx ;Emplacement memoire hex 2 |
|
|
|
|
;parent |
|
|
|
|
cmp [gs:mb.reference],0 |
|
|
|
|
jne next |
|
|
|
|
jne nextdetect |
|
|
|
|
push cs |
|
|
|
|
push offset none ;parent lstr0 2x2 |
|
|
|
|
add bx,[gs:mb.sizes] |
|
|
|
|
jmp suitemn |
|
|
|
|
next: |
|
|
|
|
nextdetect: |
|
|
|
|
mov dx,[gs:mb.reference] |
|
|
|
|
dec dx |
|
|
|
|
dec dx |
|
|
|
@ -547,10 +939,10 @@ next:
|
|
|
|
|
suitemn: |
|
|
|
|
cmp [gs: mb.isresident],true |
|
|
|
|
jne notresident |
|
|
|
|
push offset resident ;resident str0 2 |
|
|
|
|
push offset oui ;resident str0 2 |
|
|
|
|
jmp suitelistmcb |
|
|
|
|
notresident: |
|
|
|
|
push offset nonresident ;resident str0 2 |
|
|
|
|
push offset non ;resident str0 2 |
|
|
|
|
suitelistmcb: |
|
|
|
|
xor edx,edx |
|
|
|
|
mov dx,[gs: mb.sizes] |
|
|
|
@ -568,12 +960,12 @@ fino:
|
|
|
|
|
push offset fin |
|
|
|
|
call [cs:print] |
|
|
|
|
ret |
|
|
|
|
resident db "oui",0 |
|
|
|
|
nonresident db "non",0 |
|
|
|
|
oui db "oui",0 |
|
|
|
|
non db "non",0 |
|
|
|
|
line2 db "%0P\h15| %w\h24| %0\h30| %0P\h47| 0x%hW\h56| %0\l",0 |
|
|
|
|
fin db "\l\l\c02%u octets de memoire disponible\l\c07",0 |
|
|
|
|
msg db "\l\c02Plan de la memoire\c07\l\lNom | Taille | Res | Parent | Mem | CE \l",0 |
|
|
|
|
none db ".",0 |
|
|
|
|
none db "?????",0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;converti le jeux scancode/ascii en fr ax->ax |
|
|
|
@ -672,6 +1064,10 @@ dw str_irqs ,code_irqs,syn_irqs ,help_irqs
|
|
|
|
|
dw str_regs ,code_regs,syn_regs ,help_regs |
|
|
|
|
dw str_stack,code_stack,syn_stack,help_stack |
|
|
|
|
dw str_dump,code_dump,syn_dump,help_dump |
|
|
|
|
dw str_detect,code_detect,syn_detect,help_detect |
|
|
|
|
dw str_exports,code_exports,syn_exports,help_exports |
|
|
|
|
dw str_imports,code_imports,syn_imports,help_imports |
|
|
|
|
dw str_sections,code_sections,syn_sections,help_sections |
|
|
|
|
dw 0 |
|
|
|
|
|
|
|
|
|
str_exit db 'QUIT',0 |
|
|
|
@ -690,6 +1086,10 @@ str_irqs db 'IRQS',0
|
|
|
|
|
str_regs db 'REGS',0 |
|
|
|
|
str_stack db 'STACK',0 |
|
|
|
|
str_dump db 'DUMP',0 |
|
|
|
|
str_detect db 'DETECT',0 |
|
|
|
|
str_exports db 'EXPORTS',0 |
|
|
|
|
str_imports db 'IMPORTS',0 |
|
|
|
|
str_sections db 'SECTIONS',0 |
|
|
|
|
|
|
|
|
|
syn_exit db 0 |
|
|
|
|
syn_version db 0 |
|
|
|
@ -707,6 +1107,10 @@ syn_irqs db 0
|
|
|
|
|
syn_regs db 0 |
|
|
|
|
syn_stack db 0 |
|
|
|
|
syn_dump db '?',0 |
|
|
|
|
syn_detect db 0 |
|
|
|
|
syn_exports db '?',0 |
|
|
|
|
syn_imports db '?',0 |
|
|
|
|
syn_sections db '?',0 |
|
|
|
|
|
|
|
|
|
help_exit db 'Permet de quitter l''interpreteur',0 |
|
|
|
|
help_version db 'Affiche la version de COS',0 |
|
|
|
@ -724,6 +1128,10 @@ help_irqs db 'Affiche des informations sur les IRQs',0
|
|
|
|
|
help_regs db 'Affiche les registres du microprocesseur',0 |
|
|
|
|
help_stack db 'Affiche la pile systeme',0 |
|
|
|
|
help_dump db 'Affiche le contenu de la memoire',0 |
|
|
|
|
help_detect db 'Detecte et Affiche les peripheriques PCI et le CPU',0 |
|
|
|
|
help_exports db 'Affiche toutes les exportations du fichier specifie',0 |
|
|
|
|
help_imports db 'Affiche toutes les importations du fichier specifie',0 |
|
|
|
|
help_sections db 'Affiche toutes les sections du fichier specifie',0 |
|
|
|
|
|
|
|
|
|
derror db '\c04Erreur de Syntaxe !',0 |
|
|
|
|
error_syntax db '\c04La commande ou l''executable n''existe pas ! F1 pour %0',0 |
|
|
|
@ -736,6 +1144,13 @@ buffer db 256 dup (0)
|
|
|
|
|
temp db 256 dup (0) |
|
|
|
|
|
|
|
|
|
importing |
|
|
|
|
use DETECT.LIB,cpuinfo |
|
|
|
|
use DETECT.LIB,setinfo |
|
|
|
|
use DETECT.LIB,pciinfo |
|
|
|
|
use DETECT.LIB,getcardinfo |
|
|
|
|
use DETECT.LIB,getpcisubclass |
|
|
|
|
use DETECT.LIB,getpciclass |
|
|
|
|
use DETECT.LIB,detectvmware |
|
|
|
|
use VIDEO,clearscreen |
|
|
|
|
use VIDEO,setvideomode |
|
|
|
|
use VIDEO,getxy |
|
|
|
@ -752,6 +1167,8 @@ use DISQUE,findnextfile
|
|
|
|
|
use DISQUE,execfile |
|
|
|
|
use DISQUE,initdrive |
|
|
|
|
use DISQUE,changedir |
|
|
|
|
use DISQUE,searchfile |
|
|
|
|
use DISQUE,projfile |
|
|
|
|
use SYSTEME,mbget |
|
|
|
|
use SYSTEME,mbfind |
|
|
|
|
use SYSTEME,mbfindsb |
|
|
|
|