Hardware/Firmware Interface Design by Gary Stringham