initial import
[picodrive.git] / Pico / cd / cd_sys.h
1 #ifndef _CD_SYS_H\r
2 #define _CD_SYS_H\r
3 \r
4 #ifdef __cplusplus\r
5 extern "C" {\r
6 #endif\r
7 \r
8 \r
9 #define INT_TO_BCDB(c)                                                                          \\r
10 ((c) > 99)?(0x99):((((c) / 10) << 4) + ((c) % 10));\r
11 \r
12 #define INT_TO_BCDW(c)                                                                          \\r
13 ((c) > 99)?(0x0909):((((c) / 10) << 8) + ((c) % 10));\r
14 \r
15 #define BCDB_TO_INT(c)                                                                          \\r
16 (((c) >> 4) * 10) + ((c) & 0xF);\r
17 \r
18 #define BCDW_TO_INT(c)                                                                          \\r
19 (((c) >> 8) * 10) + ((c) & 0xF);\r
20 \r
21 \r
22 typedef struct\r
23 {\r
24   unsigned char M;\r
25   unsigned char S;\r
26   unsigned char F;\r
27 } _msf;\r
28 \r
29 typedef struct\r
30 {\r
31         unsigned char Type;\r
32         unsigned char Num;\r
33         _msf MSF;\r
34 } _scd_track;\r
35 \r
36 typedef struct\r
37 {\r
38         unsigned char First_Track;\r
39         unsigned char Last_Track;\r
40         _scd_track Tracks[100];\r
41 } _scd_toc;\r
42 \r
43 typedef struct {\r
44         unsigned int Status_CDD;\r
45         unsigned int Status_CDC;\r
46         _scd_toc TOC;\r
47         int Cur_LBA;\r
48         unsigned int Cur_Track;\r
49 } _scd;\r
50 \r
51 \r
52 extern int CD_Timer_Counter;\r
53 \r
54 \r
55 void LBA_to_MSF(int lba, _msf *MSF);\r
56 int Track_to_LBA(int track);\r
57 \r
58 \r
59 void Check_CD_Command(void);\r
60 \r
61 int  Init_CD_Driver(void);\r
62 void End_CD_Driver(void);\r
63 int  Insert_CD(char *buf, char *iso_name);\r
64 void Stop_CD(void);\r
65 void Change_CD(void);\r
66 void Reset_CD(void);\r
67 \r
68 int Get_Status_CDD_c0(void);\r
69 int Stop_CDD_c1(void);\r
70 int Get_Pos_CDD_c20(void);\r
71 int Get_Track_Pos_CDD_c21(void);\r
72 int Get_Current_Track_CDD_c22(void);\r
73 int Get_Total_Lenght_CDD_c23(void);\r
74 int Get_First_Last_Track_CDD_c24(void);\r
75 int Get_Track_Adr_CDD_c25(void);\r
76 int Play_CDD_c3(void);\r
77 int Seek_CDD_c4(void);\r
78 int Pause_CDD_c6(void);\r
79 int Resume_CDD_c7(void);\r
80 int Fast_Foward_CDD_c8(void);\r
81 int Fast_Rewind_CDD_c9(void);\r
82 int CDD_cA(void);\r
83 int Close_Tray_CDD_cC(void);\r
84 int Open_Tray_CDD_cD(void);\r
85 \r
86 int CDD_Def(void);\r
87 \r
88 //void Write_CD_Audio(short *Buf, int rate, int channel, int lenght);\r
89 //void Update_CD_Audio(int **Buf, int lenght);\r
90 \r
91 \r
92 #ifdef __cplusplus\r
93 };\r
94 #endif\r
95 \r
96 #endif\r
97 \r