home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / melyviz / cdrombol / pcxcdu3.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1994-12-27  |  2.2 KB  |  84 lines

  1. unit PCXCDU3;
  2.  
  3. { CDX_GetLetterNumber bugfixed, Dec 28, 1994 }
  4.  
  5. interface
  6.  
  7. var
  8.    CDR_Status     : Word;                       { Status }
  9.    CD_Letters     : Byte;                       { Number of CD-ROM devices }
  10.    CD_StartLetter : Byte;                       { Number of 1st CDR device }
  11.    CD_Current     : Word;                       { Current CDR device used }
  12.    CD_Drives      : array [1..26] of Byte;      { All CD-ROM devices }
  13.  
  14. implementation
  15.  
  16. uses DOS;
  17.  
  18. (**************************************************************)
  19. (* CDX_GetLetterNumber
  20. (*
  21. (* Get Number of CD-ROM drive letters
  22. (*
  23. (* Input:
  24. (*    AX = $1500
  25. (* Output:
  26. (*    BL = Number of CD-ROM drive letters
  27. (*    CL = Starting drive letter of CD-ROM dirve (A=0, B=1, ...)
  28. (**************************************************************)
  29.  
  30. procedure CDX_GetLetterNumber;
  31.  
  32. var
  33.    r : Registers;
  34.  
  35. begin
  36.    r.AX:=$1500;
  37.    r.BX:=$0000;                                 { Bugfixed }
  38.    r.CX:=$0000;                                 { Bugfixed }
  39.    Intr($2f,r);
  40.    CD_Letters:=r.BL;
  41.    CD_StartLetter:=r.CL;
  42.    CD_Current:=CD_StartLetter;
  43. end;
  44.  
  45. (**************************************************************)
  46. (* CDX_GetCDROMDriveLetters
  47. (*
  48. (* Get Number of CD-ROM drive letters
  49. (*
  50. (* Input:
  51. (*    AX    = $150D
  52. (*    ES:BX = Device list buffer
  53. (**************************************************************)
  54.  
  55. procedure CDX_GetCDROMDriveLetters (var CDBuf);
  56.  
  57. var
  58.    r : Registers;
  59.  
  60. begin
  61.    r.AX:=$150D;
  62.    r.ES:=Seg(CDBuf);
  63.    r.BX:=Ofs(CDBuf);
  64.    Intr($2f,r);
  65. end;
  66. {==============================================================}
  67.  
  68. type
  69.  
  70.    TReqHdr = record                             { Request Header Type }
  71.       HdrLen  : Byte;                           { Header Length in Bytes }
  72.       SubUnit : Byte;                           { SubUnit for minor devices }
  73.       CmdCode : Byte;                           { Command Code }
  74.       Status  : Word;                           { Status }
  75.       Resrvd  : array [1..8] of Byte;           { Reserved }
  76.    end;
  77.  
  78. {--------------------------------------------------------------}
  79.  
  80. begin
  81.    CDR_Status:=0;
  82.    CDX_GetLetterNumber;
  83.    CDX_GetCDROMDriveLetters(CD_Drives);
  84. end.