A system for motion control in which an application is developed that is independent
from the actual motion control hardware used to implement the system. A software
system employs an application programming interface comprising component functions
and a service provider interface comprising driver functions. Code associated with
the component functions relates these functions to the driver functions. Driver
functions are separated into core and extended driver functions. All software drivers
implement the core driver functions, and optionally implement the extended driver
functions. Extended driver functionality may be obtained through a combination
of core driver functions.