[Coco] DriveWire

Mathew Boytim maboytim at yahoo.com
Fri Feb 19 09:45:15 EST 2016


I'm working on a disk driver for the Models 1/3/4 to use DW - just disk at the moment.  The DW protocol itself does not seem very robust because the command values are not unique and can appear within data and there is no explicit means to achieve a positive sync with the server.  I think there could be some ways such as if an error or timeout occurs you could send 256 1-byte commands to the server which after 256 of them you'd be guaranteed to be in sync.

Currently my driver is working but I don't do any timeouts or error checking or error handling other than report DW errors up to the DOS - but if a character was ever lost then the driver and client would be hopelessly out of sync with no recovery other than to restart both.

So I'm of course wondering what the Coco disk drivers do regarding timeouts and error checking/handling.  Can someone point me to some DW driver source as an example of the design intent or maybe just outline the error checking/handling?  Or maybe there is none and DW just assumes a fundamentally reliable connection as my driver does currently.

As I mentioned, my driver is working and except for my own SW and HW bugs I haven't seen any errors or see it hang.  But now that it's working I'm starting to think about robustness.

By HW bugs I mean in my external 16550 uart circuit.  The M1/3/4 rs232 is limited to 19,200 baud because of the baud rate generator so to exceed that I interfaced a 16550 uart which with the right xtal allows me to even go faster than 115,200.  The only xtal I could find in my parts drawer will let me go to 230,400 and that is working well, but I want to try 460,800 when I find a different xtal.

Bitbanging like is done on the Coco is also possible but I will leave that exercise to someone else.

Thanks,

Matt


More information about the Coco mailing list