Posted By: bundasek (bundasek) on 'CZhardware' Title: ZDROJAK na identifikaci disku Date: Thu Oct 23 19:35:50 1997 Zasilam slibeny zdrojak (PAS) na identifikaci disku aniz by byl nastaven v setupu. Zjistuje MASTER na PRIMARNIM kanalu --------------------------------- uses crt; var i,j,k,l:longint; s,bios:string; p:record konst:word; cylindru:word; OdstrCyl:word; hlav:word; NfBOnTrack:word; NfBOnSektor:word; Sektoru:word; BytuMeziSektory:word; BytuVSynchPoli:word; konst1:word; SerialNumber:array[1..10] of word; Kontroler:word; InternalBuffer:word; EccWrite:word; VerzeKontroleru:array[1..4] of word; TypDisku:array[1..20] of word; UnknownInfo:array[1..100] of word; end; Procedure ReadData;assembler; asm cli mov al,04 mov dx,3f6h out dx,al xor al,al out dx,al mov dx,1f7h @bussy: in al,dx and al,128 jnz @bussy mov di,offset p push ds pop es mov cx,80h mov dx,1f7h mov al,0ech out dx,al @drq: in al,dx and al,08 jz @drq push dx mov dx,1f0h in ax,dx pop dx stosw loop @drq mov al,04 mov dx,3f6h out dx,al xor al,al out dx,al sti end; Procedure DetectBios; var b:byte; i:word; begin i:=$8078; bios:=''; Repeat b:=mem[$f000:i]; bios:=bios+chr(b); inc(i); until b=0; end; Procedure Vypis; begin with p do begin Writeln('Hlav : ',hlav); Writeln('Cylindru : ',Cylindru); Writeln('Sektoru : ',Sektoru); Writeln('Odstranitelnych cylindru : ', OdstrCyl); s:=''; for i:=1 to 10 do begin s:=s+chr(serialNumber[i] div 256); s:=s+chr(serialNumber[i] mod 256); end; Writeln('Serial number : ',s); s:=''; for i:=1 to 20 do begin s:=s+chr(TypDisku[i] div 256); s:=s+chr(TypDisku[i] mod 256); end; Writeln('Typ disku : ',s); s:=''; for i:=1 to 4 do begin s:=s+chr(VerzeKontroleru[i] div 256); s:=s+chr(VerzeKontroleru[i] mod 256); end; Writeln('VerzeKontroleru : ',s); Writeln('Neformatovanych bytu na stope : ',NfBOnTrack); Writeln('Pocet bytu mezi sektory : ',BytuMeziSektory); Writeln('Bytu v synchronizacnim poli : ',BytuVSynchPoli); Writeln('Pocet bytu v poli ECC : ', EccWrite); writeln; i:=Sektoru;j:=Cylindru;k:=Hlav; l:=i*j*k*512; Writeln('Velikost disku : ',(l/1e6):0:3,' MB.'); Writeln; Writeln('Seriove cislo biosu : ',bios); end; end; begin writeln; writeln; clrscr; ReadData; DetectBios; Vypis; end. ----------------------- mejte se Bundasek