A programmable disk array controller for distributing data from a host processor across a plurality of disk drives, said controller comprising:
- device port means;
- n disk drives connected to said device port means;
- buffer memory means for receiving and storing data from said host processor and connected to said device port means;
- programmable controller means for accessing a sequence of data segments from said buffer memory means, and for causing said sequence of data segments to be fed to said device port means for storage into a sequence of said n disk drives, said programmable controller means including a counter means associated with each disk drive, each said counter means programmable to sequentially increment by a count of n so that said buffer memory means distributes said sequence of data segments across said n disk-drives by providing every nth data segment to a disk drive associated with a said counter means.