Hardware abstraction and drivers

TODO

Describe how to write portable code using hardware abstraction layers.