cd_sys.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #ifndef _CD_SYS_H
  2. #define _CD_SYS_H
  3. #include "cd_file.h"
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. #define INT_TO_BCDB(c) \
  8. ((c) > 99)?(0x99):((((c) / 10) << 4) + ((c) % 10));
  9. #define INT_TO_BCDW(c) \
  10. ((c) > 99)?(0x0909):((((c) / 10) << 8) + ((c) % 10));
  11. #define BCDB_TO_INT(c) \
  12. (((c) >> 4) * 10) + ((c) & 0xF);
  13. #define BCDW_TO_INT(c) \
  14. (((c) >> 8) * 10) + ((c) & 0xF);
  15. typedef struct
  16. {
  17. unsigned char M;
  18. unsigned char S;
  19. unsigned char F;
  20. } _msf;
  21. typedef struct
  22. {
  23. // unsigned char Type; // always 1 (data) for 1st track, 0 (audio) for others
  24. // unsigned char Num; // unused
  25. _msf MSF;
  26. //
  27. char ftype; // TYPE_ISO, TYPE_BIN, TYPE_MP3
  28. void *F;
  29. int Length;
  30. short KBtps; // kbytes per sec for mp3s (bitrate / 1000 / 8)
  31. short pad;
  32. } _scd_track;
  33. typedef struct
  34. {
  35. // unsigned char First_Track; // always 1
  36. _scd_track Tracks[100];
  37. unsigned int Last_Track;
  38. } _scd_toc;
  39. typedef struct {
  40. unsigned int Status_CDD;
  41. unsigned int Status_CDC;
  42. int Cur_LBA;
  43. unsigned int Cur_Track;
  44. int File_Add_Delay;
  45. char CDD_Complete;
  46. int pad[6];
  47. } _scd;
  48. void LBA_to_MSF(int lba, _msf *MSF);
  49. int Track_to_LBA(int track);
  50. void Check_CD_Command(void);
  51. int Init_CD_Driver(void);
  52. void End_CD_Driver(void);
  53. int Insert_CD(char *iso_name, int is_bin);
  54. void Stop_CD(void);
  55. void Change_CD(void);
  56. void Reset_CD(void);
  57. int Get_Status_CDD_c0(void);
  58. int Stop_CDD_c1(void);
  59. int Get_Pos_CDD_c20(void);
  60. int Get_Track_Pos_CDD_c21(void);
  61. int Get_Current_Track_CDD_c22(void);
  62. int Get_Total_Lenght_CDD_c23(void);
  63. int Get_First_Last_Track_CDD_c24(void);
  64. int Get_Track_Adr_CDD_c25(void);
  65. int Play_CDD_c3(void);
  66. int Seek_CDD_c4(void);
  67. int Pause_CDD_c6(void);
  68. int Resume_CDD_c7(void);
  69. int Fast_Foward_CDD_c8(void);
  70. int Fast_Rewind_CDD_c9(void);
  71. int CDD_cA(void);
  72. int Close_Tray_CDD_cC(void);
  73. int Open_Tray_CDD_cD(void);
  74. int CDD_Def(void);
  75. #ifdef __cplusplus
  76. };
  77. #endif
  78. #endif