Македонски форум за електроника

Други технологии => Компјутерска технологија и софтвер => Topic started by: stiffy on 20.12.2018, Thursday, 23:45:05

Title: Дозвола за користење LPT/COM порти на Windows XP
Post by: stiffy on 20.12.2018, Thursday, 23:45:05
Здраво дечки, имам еден проблем.

Моментално работам на едно проектче, имам програма во асемблер 80x386... некоја комуникација на паралелен порт.

Досега се работев конкретно софтвер во dosbox, и се работеше супер. Последниов проект користам i/o порти од LPT порт конкретно со надворешен хардвер и не можам да користам никакви порти преку самиот досбокс (ваљда немам дозвола).

Прашањето ми е како би можел да добијам контрола од windows да ги управувам портите....сеедно дали преку досбокс или на друг начин. (слушнав од еден професор да користам cmd и некој си porttalk драјвер ама појма немам како да го изведам).

Или дали некој знае како би можел да инсталирам MS DOS на лаптопов и уствари да си го решам проблемот. Прво не знам како се инсталира дос, второ цд-ромот не ми работи, трето нема опција за boot од усб.

користен лаптоп: Dell PP01L Latitude C500/C600
рам 256мб интел целерон 900МHz
оперативен систем: Windows xp
Title: Re: Дозвола за користење LPT/COM порти на Windows XP
Post by: GigaWatt on 21.12.2018, Friday, 04:24:31
Проблем е што 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. Ова би требало да ти заврши работа ;).

Code: [Select]
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, затоа и не се препорачува овој начин да се користи, бидејќи може други проблеми да направи :P.

Е затоа, на некој му текнало да го направи PortTalk драјверот, за да им овозможи на програми кои работат во user mode да имаат пристап до I/O порти ;). Еве нешто подетално за проектот и како можеш да го користиш и инсталираш под Windows XP ;).

Code: [Select]
http://web.archive.org/web/20090213171827/http://beyondlogic.org:80/porttalk/porttalk.htm
А еве и download link за драјверот ;).

Code: [Select]
http://web.archive.org/web/20100612215239if_/http://beyondlogic.org/porttalk/porttalk22.zip
Мислам дека ти е доволно за почеток. Прочитај како се инсталира, како може да го користиш, итн., па ако заглавиш некаде, пиши ;).

Ако се решиш да ставиш DOS на лаптопот, имаш готови image фајлови online. Не мора да имаш исправен CD-ROM за тоа. Извади го HDD-то, стави го DOS image-от на него со адекватниот софтвер (сигурно е напишано како, од каде и да си го симнал image-от) и потоа само врати го назад HDD-то и пушти го лаптопот, би требало да се подигне DOS ;).
Title: Re: Дозвола за користење LPT/COM порти на Windows XP
Post by: Atanas on 21.12.2018, Friday, 14:03:01
Сеуште ли се користи Windows XP? И зошто не би го искористил DOS-от преку Virtualbox? Би требало така да функционира.
Title: Re: Дозвола за користење LPT/COM порти на Windows XP
Post by: GigaWatt on 21.12.2018, Friday, 16:36:49
Бидејќи Command Prompt не е баш DOS. Тоа е legacy програмче по NT кое би требало да може да прави се што можеше да прави и DOS, но реалноста не е таа. Може да прави други работи што DOS не можеше, ама не баш се работи како што треба под Command Prompt (како што работело под DOS). Зошто? Пред се бидејќи работи како програм под protected mode OS, а не како посебен оперативен систем. И не мислам дека Command Prompt работи под kernel mode, мислам дека работи како и секој друг програм под user mode, а за да можеш да правиш се што си можел да правиш под DOS во однос на влезно-излезни порти, мораш да го подигнеш во kernel mode (Ring 0)... или тоа, или да го работиш она што си планирал да го работиш баш под DOS, трето нема :-\.

Евентуално може да се проба со некое distro на Linux и WINE, ама најверојатно и таму ќе треба да се зезаш со пермисии бидејќи таму се се подига како user, ќе мора што и да е она што планираш да го подигаш да го подигнеш како root... не сум пробувал искрен да бидам, но најверојатно така би одела работата.

И да, јас сеуште користам Windows XP. За некои работи е многу корисен ;). На пример, на PC-то во работилница сеуште сум на Server 2003 модифициран да работи како desktop OS ;). Да не зборувам за три виртуелни машини, две XP x86, една XP x64, на кои работам RCE или debugging. Многу е корисен, особено кога станува збор за стари софтвери или модификација на драјвери кои поради некои причини, не работат како што треба под понови оперативни системи. Може да дебагираш на раат, без никакви prompts „ова не е дозволено, она не е дозволено, ваков error, онаков error“, проблеми кои се јавуваат пред се поради стегнатите пермисии на 7, 8.1 и 10. Кај XP немаше такви проблеми, ако си admin, admin си и тоа е тоа, нема elevated admin, к*рци палци, како што има кај поновиве оперативни системи ;).

Ова може да изгледа парадоксално за помладиве членови на форумот, но XP беше многу добар оперативен систем за оние кои сакаа да се зезаат со хардвер, софтвер, дебагирање... што би рекле, сакаат да 'рчкаат ;). Немаш signer drivers? Нема проблем, install anyway ;). Работи? ОК, тоа е тоа ;), толку, чао пријатно. Сега, ако немаш digital certificate, ај иди инсталирај некој драјвер да те видам ::). Мораш да го подигаш со signature enforcement override секој пат, а ова не им се допаѓа на многу други програми бидејќи тогаш оперативниот систем работи во debug mode ::).
Title: Re: Дозвола за користење LPT/COM порти на Windows XP
Post by: stiffy on 22.12.2018, Saturday, 00:53:58
Гига, фала многу за исцрпното објаснување, реално и прашањево за тебе и беше само вака јавно поставено хаха :D

Денеска имав та среќа, успеав да стигнам до фамозниот компјутер на факултет шо има дос, се снајдов шо е како е...искуцав тест код и све функционираше. Само, зато шо имам грд табиет...место 5 му дадов 7v на а/д конверторот и цркна.

Викендов нема да имам пристап на факултет па ќе се позанимавам со ова, ако успеам се да спроведам, ќе напишам се како е, шо е па ако му затреба на некого да може да искористи.

Сеуште ли се користи Windows XP?

Windows xp според мене е најдобриот оперативен некогаш направен, од аспект на стабилност, флексибилност и секој др аспект реално. Проблемот моментално е шо е престар, можда ти не го ни имаш користено па е проблематичен за поддршка на некои работи, ама за тоа шо го користиме е forever young xD. Наредно исто многу стабилен систем е Windows 7, јас стриктно хр и 7 користам, и не планирам да се префрлам од тоа во блиска иднина.

Quote
И зошто не би го искористил DOS-от преку Virtualbox? Би требало така да функционира.
Баш за тоа е и целава тема уствари...за внатрешна програма никаков проблем, кога треба да се користат порти се појавуваат проблемите со дозвола за користење на истите...зато се целите објаснувања на Гига.

Quote
Да не зборувам за три виртуелни машини, две XP x86, една XP x64, на кои работам RCE...
беа то времиња, имав околу 7-8 години обожавав да гледам и да “учам“ од еден братучед, мноогу правеше такви дубари xD
Title: Re: Дозвола за користење LPT/COM порти на Windows XP
Post by: GigaWatt on 22.12.2018, Saturday, 06:20:08
Гига, фала многу за исцрпното објаснување, реално и прашањево за тебе и беше само вака јавно поставено хаха :D

Така и треба ;). Не сум сезнајко, а и пожелно е дискусијата да се прошири и на други членови ;). Ќе се научи нешто ново, ќе се чујат и други мислења, итн. ;).

Викендов нема да имам пристап на факултет па ќе се позанимавам со ова, ако успеам се да спроведам, ќе напишам се како е, шо е па ако му затреба на некого да може да искористи.

Се разбира, сигурно ќе му користи на некого ;).

Windows xp според мене е најдобриот оперативен некогаш направен, од аспект на стабилност, флексибилност и секој др аспект реално. Проблемот моментално е шо е престар, можда ти не го ни имаш користено па е проблематичен за поддршка на некои работи, ама за тоа шо го користиме е forever young xD. Наредно исто многу стабилен систем е Windows 7, јас стриктно хр и 7 користам, и не планирам да се префрлам од тоа во блиска иднина.

Престана да се update-ува... тоа беше најголем проблем... а и тоа што XP x64 никогаш не ја постигна популарноста на XP x86, пред се поради недостатокот на драјвери. Проблемот беше што во тој период, излегоа и Vista и XP x64, а Microsoft го „буткаа“ повеќе Vista (тој им беше наредниот flagship производ) отколку XP x64 и производителите најчесто имаа драјвери за Vista, но не и за XP x64. На ова правило беа исклучок производителите за chipset-и и контролери за storage media (SATA, IDE, SCSI, SAS), но само поради тоа што Server 2003 имаше и x64 верзија, па мораа да прават драјвери и за неа, а storage controllers кои се додаваат како дополнителни картици на компјутерите, најчесто се користеа на сервери, а бидејќи Server 2003 x64 користеше скоро ист (но постабилен) kernel како и XP x64, практично сите драјвери за Server 2003 x64 се фаќаа и на XP x64. На овој начин, некако се пополни една дупка со проблемот со драјвери со кој се соочуваше XP x64, но не и со сите останати, т.е. обичните корисници најчесто не користат вакви специјални картици, така да, проблемот пак си остануваше нерешен - за аудио и видео кратиците, најчесто немаше драјвери за XP x64 :-\.

А инаку, ќе мораш да се префрлиш од 7 на нешто поново за некоја година. Extended support ќе има до 2020-та, потоа, толку :-\.

Патем, XP x86 сеуште може да го patch-уваш со security updates од POSReady 2009 кој ќе добива security updates се до Април 2019-та година ;). Уште неколку месеци, ама кој ти ги дава :P :D.

Има и browser кој е целосно компатибилен, up to date и port-уван од Pale Moon специјално за XP ;).

Code: [Select]
https://github.com/Feodor2/Mypal
А и да не го спомнувам ReactOS... сеуште во alpha, ама вреди да се проба ;).

Code: [Select]
https://reactos.org/
беа то времиња, имав околу 7-8 години обожавав да гледам и да “учам“ од еден братучед, мноогу правеше такви дубари xD

Баш дубари се :P. И јас така гледав како еден пријател на моите родители работеше програми во Delphi :P :D.