Взаимодействие MS-DOS и аппаратуры IBM PC выглядит так:
MS-DOS предлагает минимальное окружение для программ пользователя. Программы работающие в MS-DOS, кроме файловой системы не используют практически ничего из стандартного системного ПО.
При разработке MS-DOS предполагалось, что при программировании аппаратуры программист должен будет воспользоваться соответствующей подсистемой MS-DOS, или функцией BIOS. Однако на практике оказалось, что программисты предпочитают программировать аппаратуру напрямую, так как это зачастую более эффективно. Так, например, почти все графические программы работают непосредственно с видеопамятью. Это связано с тем, что вывод пикселя на экран дисплея с помощью функции BIOS на два порядка медленнее, чем при непосредственном обращении к видео -памяти.
Поэтому очень распространен подход программирования «в обход» MS-DOS. При этом это довольно просто ввиду открытости IBM PC. Это привело к очень большим срокам разработки программ.
Однако, с увеличением производительности компьютеров, при разработке коммерческих программа первый план выступают не эффективность самих программ (скорость ее работы и оптимальность использования памяти), а сроки разработки и возможность их эксплуатации на всех совместимых компьютерах (программно-открытая совместимость).
Разработчик программы под MS-DOS должен был пройти следующие этапы:
1) постановка задачи;
2) разработка интерфейса;
3) разработка собственной или выбор универсальной графической библиотеки;
4) программирование внешних устройств;
5) оптимизация использования памяти - создание оверлейных структур;
6) реализовать проект с учетом совместимости с ранее разработанными библиотеками.
Таким образом, чтобы реализовать в MS-DOS задачу, нужно быть хорошим системным программистом - знать операционную систему, аппаратуру, иметь наработки по интерфейсу и машинной графике. Иметь такие знания удел очень немногих, поэтому разработка программ в MS-DOS - это достаточно элитарное занятие.