Yeah, it does all the heavy lifting for USB. Once the device is initialized, you send a command for "Queue up NNN blocks starting at LBA NNNNNNN", wait for a go-ahead, and tell it you want to read it back 64 bytes at a time.
It uses an 8-bit bus interface, although I think they can be jumpered to use some serial constructs too. There are a bunch of commands for setting serial modes, which I haven't gone near.
Some performance thoughts:
* You have to stop and poke the module every 64 bytes, and wait for a response. This is sort of inefficient when loading non-trivial amounts of data (duh) but I don't know offhand how long we spend sitting in "waiting for the response".
* Won't ANY I/O mapped, 8-bit-wide polled solution peak out at about 200-250k bytes/second on a 4.77MHz 8088 machine, assuming zero overhead elsewhere in the task. Reading a port to a register, then writing to memory, then any loop management, seems to add up to around 20 or more clocks per byte. You can do noticably better than that on a V20/186 with tighter repeatable string instructions.
An interesting concept might be to try memory-mapping the device, I'm expecting a memory-memory MOV might be faster than reading a port and pumping it back out to memory.
I suppose the ideal would be some sort of intermediary controller that managed DMA and pulled bytes from the CH375 as fast as it could cycle.
I'll be digging out my machine with the CH376S and the BIOS I mentioned over the weekend likely (ordered a serial pointing device for it so I can use GeoWorks properly
)-- is there a specific benchmark people want to see (bear in mind it has to run in 512k)