2
0

deviceinfo.pas 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. { *************************************************************************
  2. ** **
  3. ** DeviceInfo - Version 1.0, (C)1992 by Thomas Schmid **
  4. ** Im Grenzacherhof 12 **
  5. ** This programm is Public Domain, CH- 4058 Basel **
  6. ** coded 18.02.1992 in PCQ-Pascal(1.2b). **
  7. ** Gibt Info über angegebenes Device aus. **
  8. ** Usage : **
  9. ** DeviceInfo Dfx: **
  10. ** **
  11. *************************************************************************
  12. }
  13. {
  14. Translated to fpc pascal.
  15. 24 Mar 2001.
  16. [email protected]
  17. }
  18. Program DeviceInfo;
  19. uses exec,amigados,strings;
  20. Const
  21. MaxSize = 80;
  22. Var
  23. MyLock : longint;
  24. Inf : pInfoData;
  25. Ok : Boolean;
  26. Myfile : string;
  27. S, S1 : String;
  28. Size, Used, Bpb : Integer;
  29. Procedure Cls;
  30. Begin
  31. WriteLn(' DeviceInfo V1.0 © 1992, by T.Schmid, Written in PCQ V1.2b',#10);
  32. End;
  33. Procedure AsdaLaVista(warum : String ; code : longint);
  34. Begin
  35. If Inf <> Nil Then ExecFreeMem(Inf,SizeOf(tInfoData));
  36. If warum <> '' Then WriteLn('',warum,'');
  37. halt(code);
  38. End;
  39. Begin
  40. If ParamCount = 0 Then AsdaLaVista(' DiskInfo V1.0, © 1992 T.Schmid - Usage : DiskInfo Dfx:',0);
  41. MyFile := ParamStr(1) + #0;
  42. Inf:=pInfoData(ExecAllocMem( SizeOf(tInfoData), MEMF_PUBLIC ) );
  43. If Inf=Nil Then AsdaLaVista('No memory',5);
  44. s:= 'Writeenabled';
  45. s1:= 'Dos';
  46. MyLock:=Lock(@Myfile[1],ACCESS_READ);
  47. If MyLock = 0 Then AsdaLaVista('Can''t get a lock.',5);
  48. Ok:=Info(MyLock,Inf);
  49. Unlock(MyLock); { ------- Wichtig !! -------- }
  50. If Ok = FALSE Then AsdaLaVista('Can''t get info on this Device.',10);
  51. Bpb := Inf^.id_BytesPerBlock;
  52. Size := Inf^.id_NumBlocks * Bpb DIV 1024;
  53. Used := Inf^.id_NumBlocksUsed * Bpb DIV 1024;
  54. Cls;
  55. WriteLn(' Info about Device : ', Myfile, '');
  56. WriteLn(' Size : ', Size, ' KBytes ','');
  57. WriteLn(' Size used : ', Used, ' KBytes ','');
  58. WriteLn(' Free : ', Size-Used, ' KBytes ','');
  59. WriteLn(' Number of Bytes per Block : ', Inf^.id_BytesPerBlock, '');
  60. Case Inf^.id_DiskType of
  61. ID_NO_DISK_PRESENT : S1:='No Disk';
  62. ID_UNREADABLE_DISK : S1:='Can''t read Disk';
  63. ID_NOT_REALLY_DOS : S1:='No Dos-Disk';
  64. ID_KICKSTART_DISK : S1:='Kickstart-Disk';
  65. End;
  66. WriteLn(' Disk Type : ',S1,'');
  67. WriteLn(' Type of error : ',Inf^.id_NumSoftErrors,'');
  68. Case Inf^.id_DiskState of
  69. ID_WRITE_PROTECTED : S:='Writeprotected';
  70. ID_VALIDATING : S:='Is Validated';
  71. End;
  72. WriteLn(' Device Status : ',S,'');
  73. { wichtig : }
  74. AsdaLaVista(#10 + ' C U in next CF !' + #10,0);
  75. End.