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