Проблем е што NT kernel-от (XP има NT kernel) има strict control што и кој смее да користи влезно/излезни порти, како што се COM и LPT. Само за PS/2 не е потребно ова ниво на заштита бидејќи интерфејсот за контрола е стандардизиран (само маус и тастатура може да се врзе за нив, за разлика од COM и LPT кои се genera purpose I/O и што сакаш може да врзеш за нив). Ова е последица на самиот дизајн на NT kernel-от, има layer-и на работа, слично на *NIX kernel-ите, за разлика од DOS кој имаше само еден layer. Кај NT веќе имаш users (корисници), без разлика дали се локални или во domain, што значи дека секој корисник има определени привилегии
. Кај NT 5.x (2000, XP, Server 2003) имаше два мода на работа на програмите, user mode и kernel mode (мислам дека и на се од Vista па наваму е исто, ама не сум сигурен). User mode се смета за Layer 3, a kernel mode се смета за Layer 0. Генерално земено, повеќето програми се подигаат и работат во user mode, не kernel mode. Кога програма ќе се подигне во user mode, оперативниот систем (kernel-от) не дозволува пристап до определени I/O порти, т.е. програмот нема доволно „високи“ пермисии за да пристапи до нив (работи во Layer 3, не во Layer 0).
Практично, за да може DOSBox да комуницира со COM и LPT на XP, мора DOSBox да има привилегии за да го направи тоа. Колку што знам оригиналниот проект нема поддршка за такво нешто (контрола на LPT и COM), но мислам дека имаше некои patched верзии кои имаа printing support под DOS. Ова би требало да ти заврши работа
.
http://www.dosbox.com/wiki/SVN_Builds#Enhanced_SVN_builds
Кога ќе размислам подобро, дури и ако ја симнеш верзијата која има printing support, тоа е само за конкретно определена работа, printing, а не и за контрола на LPT портот, така да, ова најверојатно нема да ти заврши работа
... но не е на одмет да пробаш.
Без разлика, професорот твој е во право. Има porttalk драјвер кој му овозможува на Command Prompt или било која друга програма да го прави она што нема привилегии да го прави - да „разговара“ со порти со кои може да комуницира само програм подигнат во kernel mode. Генерално земено, само драјвери може да работат во kernel mode (Layer 0) во NT kernel-и, но има финти како може да подигнеш програм да работи во Layer 0 (некаде се нарекува и Ring 0 или за user mode, Ring 3). Јас најчесто го користам OllyDbg со StrongOD plug-in под XP за ваква работа, но сигурно има и други начини. Е сега, недостаток на овој начин е тоа што можно е некои други програми да се „бунат“ бидејќи нешто што не треба да работи под kernel mode, работи под kernel mode, затоа и не се препорачува овој начин да се користи, бидејќи може други проблеми да направи
.
Е затоа, на некој му текнало да го направи PortTalk драјверот, за да им овозможи на програми кои работат во user mode да имаат пристап до I/O порти
. Еве нешто подетално за проектот и како можеш да го користиш и инсталираш под Windows XP
.
http://web.archive.org/web/20090213171827/http://beyondlogic.org:80/porttalk/porttalk.htm
А еве и download link за драјверот
.
http://web.archive.org/web/20100612215239if_/http://beyondlogic.org/porttalk/porttalk22.zip
Мислам дека ти е доволно за почеток. Прочитај како се инсталира, како може да го користиш, итн., па ако заглавиш некаде, пиши
.
Ако се решиш да ставиш DOS на лаптопот, имаш готови image фајлови online. Не мора да имаш исправен CD-ROM за тоа. Извади го HDD-то, стави го DOS image-от на него со адекватниот софтвер (сигурно е напишано како, од каде и да си го симнал image-от) и потоа само врати го назад HDD-то и пушти го лаптопот, би требало да се подигне DOS
.