|
nedoPC.orgCommunity for electronics hobbyists, established in 2002 |
|
Last visit was: 06 Oct 2024 01:08
|
It is currently 06 Oct 2024 01:08
|
Author |
Message |
Vic3Dexe
Doomed
Joined: 16 Dec 2014 11:58 Posts: 370 Location: Киев
|
Вызывается оно скорее всего где-то дальше, где софтина думает, что ее запустили на каком-то... 8088, т.е. на ХТ, и пихает в какой-нибудь древний PPI-порт (как пример) соотв. значение. А этот порт замаплен на управление кешем, например, или еще куда. Но это только предположения.
|
10 Apr 2017 23:19 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Джентльмены, просьба нижайшая - вот какая: у кого есть десктоп (ну или ноут) на котором заведомо работает РС-спикер и установлена Windows 7 (32), попробуйте, пожалуйста, будет ли звук на спикер от системного таймера. В архиве - библиотека доступа к портам: INPOUT32.DLL, и сама программа TimerTST.exe. Программа через библиотеку доступа к портам классическим образом работает с таймером, выдающим звук на РС-спикер. Написал я это где-то в районе актуальности этого топика, и статистика следующая: на компьютерах с CORE DUA 2ГГц под Windows ХР она однозначно работает - звук есть. А вот на обоих моих новых ноутбуках под Windows 7 (32) - звука нет, но циферки, отражающие запись в порт и чтение вроде как моргают правильно... Отсюда вытекали два вывода: 1. Библиотека INPOUT32.DLL не работает под Windows 7 (32), но я вчера прошарил интернет, и везде утверждают, что работает! 2. В современных ноутбуках выход таймера больше не подсоединяют ни к спикеру, ни ко входу звуковой карты. Это вообще наиболее вероятно - читал я статью, что разработчики Венды в принципе категорически против таймера - он последнее неинтеллектуальное устройство компьютера, плохо совместимое с современной идеологией Windows. Но совсем наплевать на таймер со спикером якобы запрещает какой-то закон США об инвалидах. Инвалиды по зрению вроде как должны иметь возможность слышать пикание процедуры POST. Рассказал всё - так как читал, но давайте проверим?
You do not have the required permissions to view the files attached to this post.
_________________ iLavr
|
10 Feb 2021 05:55 |
|
|
parsec
Writer
Joined: 17 Feb 2019 00:16 Posts: 14
|
Windows 7 32 bit звук только при запуске от администратора. Windows 10 64 bit звука нет ни в каком случае, хотя цифры меняются.
|
10 Feb 2021 09:31 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Спасибо большое! Так и должно было быть:" при запуске от имени администратора". Надо было написать, видимо... Ну и поскольку это я сам писал, и я же компилировал, то у файла TimerTST.exe нет цифровой подписи - ну нет у меня её! Под Windows 10 64 bit - я даже и не надеялся, там INPOUT32.DLL не должна работать... Но еще раз - спасибо - за помощь и дополнительную статистику! Тут еще есть момент интересный: у меня есть точная копия этой программы, скомпилированная под DOS. Я пробовал загружаться с флешки под FreeDOS с поддержкой NTFS и запускал эту программу работы с таймером - была полная тишина... Но, возможно, программа-таки работала! Просто в ноутбуке больше нет никаких привычных портов, кроме таймера, чтобы проверить к ним доступ.
_________________ iLavr
|
10 Feb 2021 12:32 |
|
|
parsec
Writer
Joined: 17 Feb 2019 00:16 Posts: 14
|
Там, может, и не в подписи дело. Я просто манифест добавляю. И в VS, и в gcc работает. Делал по примеру из SDK. Собирал драйвер из DDK для таких целей, но под 64 бит без подписи пичалька, хотя работает. Самоподписанный драйвер и с включенной тестовой подписью проблем не вызывал. Есть библиотека для 64 бит. Вот здесь https://www.highrez.co.uk/downloads/inpout32/ есть драйвер с подписью, в свойствах пишет что подпись действительна.
You do not have the required permissions to view the files attached to this post.
|
11 Feb 2021 10:13 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
С подписью - следующий у меня казус случился. Windows 7 у нас на работе нет, но есть Windows 10. Вот под Windows 10 я эту программу TimerTST.exe и собирался проверить на работе - спикер в системнике был, мы его живьём видели. Но там, под Windows 10, у нас везде установлена такая программа - COMODO. Так этот COMODO считает, что любая .exe-программа без подписи - априори вредоносная. И удаляет он её сразу в какой-то свой отстойник - так и с моим TimerTST.exe случилось...
_________________ iLavr
|
11 Feb 2021 16:03 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Но, тем не менее, физически таймер со своими портами всё ещё есть! Проверил на новом ноутбуке...
You do not have the required permissions to view the files attached to this post.
_________________ iLavr
|
17 Apr 2021 19:46 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
В общем как-то пытаюсь я найти решение этой интересной проблемы, которая, выражаясь словами Фаины Раневской звучит как:" Таймер есть, а звука нет..." В старом ноутбуке у меня спикер присутствовал внутри явно, и во время работы DOS им можно было пикать невозбранно. Хотя он как-то хитро подключался и к звуковой карте, поэтому под Вендой звук спикера шел из встроенных динамиков ноута. В общем, всё было по уму и удобно... Народ в интернете зачастую утверждает, что в современных ноутбуках спикера-пищалки как факта нет но сигнал этот (от аналога 8254) подается на звуковую карту. Я тоже давно читал где-то, что можно коммутировать этот сигнал микшером звуковухи, но в микшере у меня этого сигнала тоже нет: Собственно - а чего я пристал к этому спикеру? Да потому как на современном ноутбуке из портов, к которым можно обратиться программно, остались, пожалуй, таймер и порт 61 - от которых можно ожидать реакции, ну и можно почитать микросхему часов реального времени... Больше портов нет - звуковая карта как порты недоступна, внешние порты - ЮСБ... И попалась мне вдруг вновь статья, которую я, видимо, когда-то давно читал: Что там у нас с драйвером Beep в Windows 7? Автор: Ларри ОстерманВ ней подробно развёрнут вот этот тезис: Но эта статья голову заморочила окончательно, тем, что звук таймера, который 07H, в старших Вендах, начиная с ХР как бы отвязан от таймера железного "программной оболочкой", и звук, который 07H, генерирует системный драйвер Beep.Sys. А вот дальше - то ли перевод плохой, то ли суть мутная: Я посмотрел в системной папке своей Windows 7 - Beep.Sys у меня по-прежнему есть... В общем, после прочтения статьи тумана стало еще больше:" Таймер есть, а звука так и нет..." Собственно, в чем зогатка-то: существует FreeDOS, которую предпродажно ставят на новые ноутбуки, чтобы отвязать от Венды и удешевить... так вот эта FreeDOS вряд ли знает про какой-то Beep.Sys но как-то должна же она уметь работать со спикером или звуковой картой без портов?
You do not have the required permissions to view the files attached to this post.
_________________ iLavr
|
23 Apr 2021 20:24 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Решил я протестировать, делает ли что-то этот самый Beep.Sys или агент системных звуков... Сделал я текстовый файл 1.TXT типа: а потом коды "6" и "7" заменил на 07H, 07H. Вызвал CMD и дал в нем команду type 1.txt: и консоль Венды очень уныло сыграла: Beep... Beep... Но это точно не таймер... Кто хочет попробовать, но не умеет вставить 07H, 07H, файл 1.TXT в аттаче.
You do not have the required permissions to view the files attached to this post.
_________________ iLavr
|
23 Apr 2021 21:07 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Нечистая сила толкнула меня под локоть проверить эту траблу на следующем своём ноутбуке Samsung... Эффект был сокрушительно тот же: Machine Check Error - и ребут. В прошлый раз я не проверил этот совет, потому как Machine Check Error всё же отличается от Machine Check Exception, хотя может быть в теории это одно и то же. Сама фраза " Machine Check Error" присутствует в самом обычном НЕ UEFI BIOS: Но в этот раз я всё же решил проверить совет: Тривиальный код я написал вот такой: NOP NOP - это чтобы не проскочить в отладчике... Бит 6 в регистре CR4, действительно, оказывался взведён (если что, АХ = 0640Н), и удачно сбрасывался. Но вся эта манипуляция привела лишь к тому, что фразы Machine Check Error не стало, а ноутбук ребутится совершенно молча... На разных форумах, где что-то подобное обсуждается, пишут, что Machine Check Exceptionвозникает обычно после тройной ошибки. Но как имитировать тройную ошибку я совершенно не представляю. Обычное деление на ноль отслеживается системой штатно: Division by Zero! Обратитесь к вендору...На одном форуме вот такой фокус советовали: Этот трюк приводит к молчаливому ребуту ноутбука безо всяких фраз... В общем уже чисто интересно стало, за что в BIOS отвечает фраза: Machine Check Error P.S. Последнее, что я всё же попробовал на данном поприще это - сменить версию DOS. Все прописанные выше трюки исполнялись под DOS 8.0 от Windows ME. Я сделал загрузочную флешку с Free DOS 1.3, эффект тот же: Machine Check Error...
You do not have the required permissions to view the files attached to this post.
_________________ iLavr
|
08 Mar 2024 12:26 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
И загрузил я поисковики фразой:" How to cause Intel processor exception" И на одном сайте интересный вариант-таки нашелся: Я быстренько 0F05H opcode скомпилировал, и под Windows 7 всё случилось по-честному: Кстати, отладчик видит 0F05H opcode как LOADALL. А вот потом я перезагрузился в чистый DOS 8.0, запустил ту же самую программу, и ноутбук Samsung с процессором Intel Atom завис просто-таки наглухо!!! И никаких тебе Machine Check Error с ребутом! Хотя, как объясняют, illegal opcode должен хотя бы Machine Check Exception вызвать... Странный в общем-то подход к обработке exception 13... P.S. Оргвывод в общем-то в том, что дебаггером отследить куда ведёт Machine Check Error, похоже, что не удастся.
You do not have the required permissions to view the files attached to this post.
_________________ iLavr
|
08 Mar 2024 17:20 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Собственно, причина по которой я так въедливо вцепился в это "исключение" весьма проста. По всем источникам все процессоры старше 286, и его включая, стартуют для совместимости в реальном режиме 8086, в котором и работает ОС DOS. Процессорам старше 286 разрешены некоторые вольности в этом режиме, не нарушающие совместимости, иначе бы ОС DOS не работала после начального старта, а она работает! Так вот под ОС DOS система может обрабатывать только 8 исключений: Фразу Machine Check Error может вызвать INT 06H (Invalid Opcode), но чисто "в лоб" не вызывает, я посмотрел код прерывания, там какие-то условия анализируют... А вот фразу Machine Check Exception по идее должно вызывать: Но это обработчики исключений ЗАЩИЩЕННОГО РЕЖИМА! В РЕАЛЬНОМ РЕЖИМЕ ПОД ОС DOS их просто физически не может быть! В общем остаётся лишь исследовать код INT 06H (Invalid Opcode) Неверный код операции. Под чистым DOS это делать крайне неудобно, привычки от Windows очень мешают. Но навскидку код обработки прерывания INT 06H примерно такой: код обработки прерывания INT 06H | | | | INT 06H (Invalid Opcode) wrote: | | | | Code: F000:3086 55 PUSH BP F000:3087 8BEC MOV BP,SP F000:3089 50 PUSH AX F000:308A 53 PUSH BX F000:308B 1E PUSH DS
F000:308C C55E02 LDS BX,[BP+02] F000:308F 8B07 MOV AX,[BX]
F000:3091 3CF0 CMP AL,F0 F000:3093 74E1 JZ 3076
F000:3095 3D0F05 CMP AX,050F F000:3098 75E5 JNZ 307F
F000:309A FA CLI F000:309B FC CLD F000:309C 33C0 XOR AX,AX F000:309E 8ED8 MOV DS,AX F000:30A0 8BC4 MOV AX,SP F000:30A2 83C00E ADD AX,+0E F000:30A5 24F8 AND AL,F8 F000:30A7 B92000 MOV CX,0020 F000:30AA 2BC1 SUB AX,CX F000:30AC 8BE0 MOV SP,AX F000:30AE 8BF8 MOV DI,AX F000:30B0 8BE8 MOV BP,AX F000:30B2 8CD0 MOV AX,SS F000:30B4 8EC0 MOV ES,AX F000:30B6 BE70E2 MOV SI,E270 F000:30B9 2E CS: F000:30BA F3 REPZ F000:30BB A4 MOVSB F000:30BC 8BFD MOV DI,BP F000:30BE 8ACC MOV CL,AH F000:30C0 C0E904 SHR CL,04 F000:30C3 C1E004 SHL AX,04 F000:30C6 03C7 ADD AX,DI F000:30C8 80D100 ADC CL,00 F000:30CB 83C702 ADD DI,+02 F000:30CE AB STOSW F000:30CF 8AC1 MOV AL,CL F000:30D1 AA STOSB F000:30D2 32ED XOR CH,CH F000:30D4 83C703 ADD DI,+03 F000:30D7 BE4808 MOV SI,0848 F000:30DA E88400 CALL 3161
F000:30DD 8BD8 MOV BX,AX F000:30DF 7203 JB 30E4 F000:30E1 80CD01 OR CH,01 F000:30E4 83C70C ADD DI,+0C F000:30E7 BE3608 MOV SI,0836 F000:30EA E87400 CALL 3161
F000:30ED 7203 JB 30F2 F000:30EF 80CD02 OR CH,02
F000:30F2 8EC0 MOV ES,AX F000:30F4 8EDB MOV DS,BX F000:30F6 66C1C810 ROR EAX,10 F000:30FA 50 PUSH AX F000:30FB 0F015600 LGDT [BP+00] F000:30FF 0F20C0 MOV EAX,CR0 F000:3102 0C01 OR AL,01 F000:3104 0F22C0 MOV CR0,EAX F000:3107 EA0C311000 JMP 0010:310C F000:310C D0ED SHR CH,1 F000:310E 7305 JNB 3115
F000:3110 BB0800 MOV BX,0008 F000:3113 8EDB MOV DS,BX
F000:3115 D0ED SHR CH,1 F000:3117 7305 JNB 311E
F000:3119 BB1800 MOV BX,0018 F000:311C 8EC3 MOV ES,BX
F000:311E 24FE AND AL,FE F000:3120 0F22C0 MOV CR0,EAX F000:3123 EA283100F0 JMP F000:3128
F000:3128 58 POP AX F000:3129 66C1C810 ROR EAX,10 F000:312D 33C0 XOR AX,AX F000:3161 8B4404 MOV AX,[SI+04] F000:3164 AB STOSW F000:3165 AD LODSW F000:3166 AB STOSW F000:3167 8A0C MOV CL,[SI] F000:3169 26 ES: F000:316A 880D MOV [DI],CL F000:316C A80F TEST AL,0F F000:316E 750E JNZ 317E F000:3170 F6C1F0 TEST CL,F0 F000:3173 7509 JNZ 317E F000:3175 C1E804 SHR AX,04 F000:3178 C0E104 SHL CL,04 F000:317B 0AE1 OR AH,CL F000:317D F9 STC F000:317E C3 RET
F000:317F CD0A INT 0A F000:3181 CF IRET | | | | |
| | | | |
_________________ iLavr
|
16 Mar 2024 09:02 |
|
|
imsushka
Senior
Joined: 01 Jan 2022 04:34 Posts: 198 Location: USSR, Tashkent
|
loadall был вроде только в 286 так что на атоме может и вызывать исключение
|
16 Mar 2024 09:05 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Под чистым DOS атом повесил наглухо без сообщений... Основной признак - фраза: Machine Check Errorи программный ребут после неё. DOS-овские Инты в лоб даже ребута не вызывают... Интересно в лоб вызывается Инт 24Н - критическая ошибка: Спрашивает: Abort? и после ответа "А" продолжает работу...
_________________ iLavr
|
16 Mar 2024 09:27 |
|
|
imsushka
Senior
Joined: 01 Jan 2022 04:34 Posts: 198 Location: USSR, Tashkent
|
ну может вешать 0F 05 xx xx в новом микрокоде не известно что может учудить и не обязательно 0F 05. может комбинация последующих байт давать такой эффект перенеси кусок после 0f 05 в конец проги забей нопами байт 16, а потом джамп на перенесенный блок
|
16 Mar 2024 11:13 |
|
Who is online |
Users browsing this forum: Claude AI [Bot] and 0 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|