What you are you talking about, PM-ing and stuff? Are you serious, this is a pretty good question and the guy did the right thing on asking it in public.
CDDC interface is only controller interface you should support (for example BlackFOX drive has plug which you plug in your socket - and then you can use socket to access the controllers interface). The example program/implementation of controller that is located in GWCD is a processor which you need to wire to such address bus:
Code:
0 1024 CDDC_RAM - controller interface
1024 1024 CDDC_CONTROL - data port to speak with drives hardware, more below
2048 8192 Disk heads - you should wire this to your CD ray; although you can wire it to several rays, see below.
65536 65536 - Buffer, usually you wire this to your plug, which allows drive to send back data over wire.
Okay, now CDDC_RAM contains controller interface which is described in CDDC_Interface.txt (in GWCD SVN).
CDDC_CONTROL looks like this (what data port is wired to, remember, you wired address bus to data port):
Code:
Output port 0: State of motor (1: on; 0: off)
Output port 1: Motor velocity (in radians/second)
Output port 2: Activity LED (green light on drives front)
Output port 3: Ray position (target command for hydaulic)
Input port 0: Is disk present (wire this to CD latch)
Now, you wire the memory3 of address bus to your CD ray; and you also need to specify some constants on top of "cdd.txt":
Code:
define GEOMETRY_TRACK0_POSITION,7.5;//position in units of last track
define GEOMETRY_MAX_VELOCITY,16; //Max drive speed (rad/sec)
define GEOMETRY_DRIVE_LASTHEAD,1; //Heads count minus one
If you have more than one head, you do that there; you also specify maximum speed, and position of last track on your disk.
I'll help you more if you want, it shouldn't be too hard to set this all up. GWCD SVN is here: https://anonsvn:anonsvn@svn.wireos.com:81/svn/gwcd_cpu/
Bookmarks