X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=pico%2Fcd%2FLC89510.h;fp=pico%2Fcd%2FLC89510.h;h=2b0d382658f64f58d0672e53f0fafb1e22ab109e;hb=1cfc5cc4ce06642b9bc45ca3b9d32793718e9455;hp=0000000000000000000000000000000000000000;hpb=d158df697da66bcda57307e35fc77929cfa5053c;p=picodrive.git diff --git a/pico/cd/LC89510.h b/pico/cd/LC89510.h new file mode 100644 index 0000000..2b0d382 --- /dev/null +++ b/pico/cd/LC89510.h @@ -0,0 +1,135 @@ +/*********************************************************** + * * + * This source was taken from the Gens project * + * Written by Stéphane Dallongeville * + * Copyright (c) 2002 by Stéphane Dallongeville * + * Modified/adapted for PicoDrive by notaz, 2007 * + * * + ***********************************************************/ + +#ifndef _LC89510_H +#define _LC89510_H + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct +{ + unsigned char Buffer[(32 * 1024 * 2) + 2352]; +// unsigned int Host_Data; // unused +// unsigned int DMA_Adr; // 0A +// unsigned int Stop_Watch; // 0C + unsigned int COMIN; + unsigned int IFSTAT; + union + { + struct + { + unsigned char L; + unsigned char H; + unsigned short unused; + } B; + int N; + } DBC; + union + { + struct + { + unsigned char L; + unsigned char H; + unsigned short unused; + } B; + int N; + } DAC; + union + { + struct + { + unsigned char B0; + unsigned char B1; + unsigned char B2; + unsigned char B3; + } B; + unsigned int N; + } HEAD; + union + { + struct + { + unsigned char L; + unsigned char H; + unsigned short unused; + } B; + int N; + } PT; + union + { + struct + { + unsigned char L; + unsigned char H; + unsigned short unused; + } B; + int N; + } WA; + union + { + struct + { + unsigned char B0; + unsigned char B1; + unsigned char B2; + unsigned char B3; + } B; + unsigned int N; + } STAT; + unsigned int SBOUT; + unsigned int IFCTRL; + union + { + struct + { + unsigned char B0; + unsigned char B1; + unsigned char B2; + unsigned char B3; + } B; + unsigned int N; + } CTRL; + unsigned int Decode_Reg_Read; +} CDC; + +typedef struct +{ +// unsigned short Fader; // 34 +// unsigned short Control; // 36 +// unsigned short Cur_Comm;// unused + + // "Receive status" + unsigned short Status; + unsigned short Minute; + unsigned short Seconde; + unsigned short Frame; + unsigned char Ext; + unsigned char pad[3]; +} CDD; + + +PICO_INTERNAL_ASM unsigned short Read_CDC_Host(int is_sub); +PICO_INTERNAL void LC89510_Reset(void); +PICO_INTERNAL void Update_CDC_TRansfer(int which); +PICO_INTERNAL void CDC_Update_Header(void); + +PICO_INTERNAL unsigned char CDC_Read_Reg(void); +PICO_INTERNAL void CDC_Write_Reg(unsigned char Data); + +PICO_INTERNAL void CDD_Export_Status(void); +PICO_INTERNAL void CDD_Import_Command(void); + +#ifdef __cplusplus +}; +#endif + +#endif +