Пару слов о LPT:
1) Было просто программировать под Win 9x, затем (из соображений безопасности) прямую работу с памятью порта выгородили за дрова.
2) В NT-ях можно решить проблему и альтернативно, используя готовые библиотеки типа
inpout32.dll
2.2) Другой вариант - использование драйвера
GiveIO.sys, снимающего запрет для пользовательских приложений на прямую запись/чтение в порт/из порта. Можно испытать неудобство от собственноручной интеграции системного объекта такого уровня в ОСь: правка ветки реестра, добавление в системную директорию. Зато фигачить работу с портом можно хоть в асм-вставке.
2.3) С интеграцией функционала inpout32.dll могут возникнуть некоторые проблемы. Уж не помню - в формате библиотеки импорта была проблема или ещё чего, но в итоге для MinGW я решил проблему реализовав динамическую загрузку библиотеки (
LoadLibrary /
GetProcAddress).
На всякий случай деклс для блитца:
.lib "inpout32.dll"
LPT_WRITE(port%,val%):"Out32"
3) Отдельной проблемой может оказаться поиск компа с рабочим LPT. USB-LPT адаптеры не гарантирую счастья низкоуровневой работы (из-за "абстракции" в работе с адресами), а WriteFile() не всегда обеспечивает необходимые возможности (ситуацию может спасти PCI-LPT переходник).
4) Если вам лень идти в магазин или там таких раритетов нет, то LPT-удлинитель (для Data-секции разъёма, например) вполне можно сделать из Ethernet-кабеля (необходимо учесть заземление, и вообще - на свой страх эксперимент)