Not complete, probably not fully debugged or optimized.
orinoco now. Uses a combination of tickdelay (where possible) and calibrated busywait (where necessary).
Original version, by Stevens Le Blond and Michael Valkering.