1. Old MacDonald had a disk, E I/O I/O.
On the disk he had some data, E I/O I/O.
With some data data here and some data data there,
Here a datum, there a datum,
Everywhere some data, data.
Old MacDonald had a disk, E I/O I/O.

2. Processor sets up DMA, E I/O I/O.
Sends commands to the controller, E I/O I/O.
With a command word here, and a command word there,
Here a command, there a command,
Everywhere a command command.
Processor sets up DMA, E I/O I/O.

3. Controller waits for the hard disk drive, E I/O I/O.
The disk heads seek and the platters spin, E I/O I/O.
With a seek seek here, and a spin spin there,
Here a seek, there a spin,
Everywhere a seek, spin.
Controller waits for the hard disk drive, E I/O I/O.

4. Controller gets the first few words, E I/O I/O.
It steals the bus for a few cycles, E I/O I/O.
With a cycle here, and a cycle there,
Here a cycle, there a cycle,
Everywhere a cycle cycle.
Controller gets the first few words, E I/O I/O.

5. Controller puts bits on the bus, E I/O I/O.
The bits get off the bus to RAM, E I/O I/O.
With a bit bit here and a bit bit there,
Here a bit, there a bit,
Everywhere a bit bit.
Controller puts bits on the bus, E I/O I/O.

6. Controller waits for the disk to read, E I/O I/O.
Repeat stanzas 4 and 5 again, E I/O I/O.
With a read read here, and a write write there,
Here a read, there a write,
Everywhere a read, write.
Controller waits for the disk to read, E I/O I/O.

7. Now the data's all in RAM, E I/O I/O.
Interrupt the processor, E I/O I/O.
With an interrupt here, and an interrupt there,
Here an interrupt, there an interrupt,
Everywhere an interrupt, interrupt.
Now the data's all in RAM, E I/O I/O.

8. Processor jumps to the service routine, E I/O I/O.
Program says the transfer's done, E I/O I/O.
With some data data here and some data data there,
Here a datum, there a datum,
Everywhere some data, data.
Program says the transfer's done, E I/O I/O.