1 #include "include/cdrom.h"
\r
5 static uint8 cdrom_ram[0x100];
\r
6 static uint16 cdrom_cmd=0;
\r
8 //////////////////////////////////////////////////////////////////////////////
\r
10 //////////////////////////////////////////////////////////////////////////////
\r
17 //////////////////////////////////////////////////////////////////////////////
\r
18 void cdrom_init(void)
\r
21 //////////////////////////////////////////////////////////////////////////////
\r
23 //////////////////////////////////////////////////////////////////////////////
\r
30 //////////////////////////////////////////////////////////////////////////////
\r
31 void cdrom_reset(void)
\r
33 memset(cdrom_ram,0x00,0x100);
\r
37 //////////////////////////////////////////////////////////////////////////////
\r
39 //////////////////////////////////////////////////////////////////////////////
\r
46 //////////////////////////////////////////////////////////////////////////////
\r
47 void cdrom_done(void)
\r
50 //////////////////////////////////////////////////////////////////////////////
\r
52 //////////////////////////////////////////////////////////////////////////////
\r
59 //////////////////////////////////////////////////////////////////////////////
\r
60 void cdrom_byte_write(uint32 offset, uint8 data)
\r
63 cdrom_ram[offset]=data;
\r
66 fprintf(log_get(),"cdrom: writing byte 0x%.2x at 0x%.8x\n",data,offset);
\r
69 //////////////////////////////////////////////////////////////////////////////
\r
71 //////////////////////////////////////////////////////////////////////////////
\r
78 //////////////////////////////////////////////////////////////////////////////
\r
79 void cdrom_word_write(uint32 offset, uint16 data)
\r
82 cdrom_ram[offset+0]=(data>>8)&0xff;
\r
83 cdrom_ram[offset+1]=data&0xff;
\r
90 if ((data&0xff00)==0x1500)
\r
92 fprintf(log_get(),"cdrom: setting mode 0x%.2x\n",data&0xff);
\r
97 uint32 offset=cdrom_ram[0x00];
\r
99 offset|=cdrom_ram[0x01];
\r
101 offset|=cdrom_ram[0x02];
\r
103 offset|=cdrom_ram[0x03];
\r
105 uint32 size=cdrom_ram[0x04];
\r
107 offset|=cdrom_ram[0x05];
\r
109 fprintf(log_get(),"cdrom: READ(0x%.8x, 0x%.4x) [68k pc=0x%.8x]\n",offset,size,s68000readPC());
\r
113 fprintf(log_get(),"cdrom: unknown command 0x%.4x\n",data);
\r
117 fprintf(log_get(),"cdrom: writing word 0x%.4x at 0x%.8x\n",data,offset);
\r
120 //////////////////////////////////////////////////////////////////////////////
\r
122 //////////////////////////////////////////////////////////////////////////////
\r
129 //////////////////////////////////////////////////////////////////////////////
\r
130 uint8 cdrom_byte_read(uint32 offset)
\r
134 fprintf(log_get(),"cdrom: reading byte from 0x%.8x\n",offset);
\r
136 return(cdrom_ram[offset]);
\r
138 //////////////////////////////////////////////////////////////////////////////
\r
140 //////////////////////////////////////////////////////////////////////////////
\r
147 //////////////////////////////////////////////////////////////////////////////
\r
148 uint16 cdrom_word_read(uint32 offset)
\r
152 uint16 data=0x0000;
\r
162 if (cdrom_cmd==0x7001)
\r
169 data=cdrom_ram[offset+0];
\r
171 data|=cdrom_ram[offset+1];
\r
174 fprintf(log_get(),"cdrom: reading word 0x%.4x from 0x%.8x [68k pc=0x%.8x]\n",data,offset,s68000readPC());
\r