Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Дисковые Программы и Утилиты    >>    idehdd
   
 
 Серийный номер IDE винта   Serg Karpov 23.06.1997

Получение серийного номера ШВУ-винчестера



1k 
 

- NEW96 ------------------------------------------------------------ New-1997 - Msg : 120 of 120 Addr Date From : Serg Karpov 2:5024/7.77 23.06.97 Subj : Серийный номер IDE винта ------------------------------------------------------------------------------- Hello Sergey! Monday June 16 1997 09:30, Sergey Moutsynov wrote to All: SM> Hello All! SM> Hи у кого не завалялось примерчика на asm, чтобы он выдавал $subj%? SM> Советы - типа, декомпилируй и пользуйся, не катят, т.к. нету времени SM> разгадывать всякие головоломки, да и опыта нету то-же. SM> Был бы очень признателен, если бы исходник делал то-же, что и ideinfo, SM> к примеру. Пользуйся, а на ассемблер сам переведешь... если надо... SM> Sergey I wish You success! Serg Karpov . Monday June 23 1997 11:01 --- GEcho 1.11+/GoldED * Origin: Союз ЛАЦЕПУПОВ ... Вступайте ... (2:5024/7.77) {> Cut here. FileName= IDEHDD.PAS } {From : Serg Karpov 2:5024/7.77 23.06.97 Subj : Серийный номер IDE винта } uses CRT; Type TIdeInfo = Record Config : word; CylsTotal : word; Unused : word; HeadTotal : word; BPT : word; BPS : word; SPT : word; Vendor : Array[0..2] of word; Serial : Array[1..20] of char; BufType : word; BufSize : word; ECC : word; Revision : Array[1..8] of char; Model : Array[1..40] of char; end; var InfoArray : Array[0..255] of word; IdeInfo : TIdeInfo absolute InfoArray; NumDisk : byte; Count : byte; procedure GetIDEInfo( Drive : byte ); var I : byte; begin FillChar( InfoArray, sizeof(InfoArray), 0 ); while ( Port[$1F7] and $80 <> 0 ) do; Port[$3F6] := 2; Port[$1F6] := $A0 + ( Drive shl 4); Port[$1F7] := $EC; while ( Port[$1F7] and $80 <> 0 ) do; for I := 0 to 255 do InfoArray[I] := Swap( PortW[$01F0] ); end; begin ClrScr; NumDisk := Mem[$40:$75]; for Count :=1 to NumDisk do begin GetIdeInfo( Count - 1 ); Writeln('Serial number : ',IdeInfo.Serial ); Writeln('Revision : ',IdeInfo.Revision ); Writeln('Model HDD : ',IdeInfo.Model ); Writeln; Writeln('Total cylinders : ',Swap(IdeInfo.CylsTotal):8); Writeln('Total heads : ',Swap(IdeInfo.HeadTotal):8); Writeln('Sectors per track : ',Swap(IdeInfo.SPT):8 ); Writeln('Byte per sector : ',Swap(IdeInfo.BPS):8 ); Writeln('Byte per track : ',Swap(IdeInfo.BPT):8 ); Writeln('Size of buffer : ',Swap(IdeInfo.BufSize):8 ); end; end.