|
Комментарии | #1 Автор: Nika (2013.04.22 00:47) | Классно. Прекрасно работает в WinXP/SP2. За это мне и нравится DOS - там есть .COM-формат.
Но подобные мелкие видео-штучки очень зависят от типа видеосистемы. int 10h/4f10h - *VESA* - Set display power state BH.
Впрочем, если нет VESA, горя-то и не будет - просто программа дождётся <Esc> и спокойно себе завершится.
Я вот специально пользуюсь старой версией INTLIST, чтобы не выходить за рамки примитива и не тестировать потом на разном железе. |
#2 Автор: SergeCpp (2013.04.22 01:48) | Да, Ralf Brown's Interrupt List -- прекрасный справочник по этим всяким мелким штучкам.
Помню, когда я разместил эту программу на kpnemo (в 2005 году), её за ночь скачали более 900 человек. Там, конечно, на байт-другой можно бы и уменьшить (на капнемо тогда на это обратили внимание). Сейчас, увы, того капнемо нету уже, жаль тех комментариев (много их было).
|
#3 Автор: Nika (2013.04.22 03:16) | Ну, положим, на байт я ещё понимаю (см.скриншот). А на два - это они так, абы сказать. |
#4 Автор: Nika (2013.04.22 03:19) | Впрочем, я категорический нелюбитель подобных оптимизаций. Они влекут за собой труднообнаружимые баги. |
#5 Автор: SergeCpp (2013.04.22 08:11) | Да, тут ещё стек "подключается", что уже с некоторой стороны неэлегантно (экономим в одном, проигрываем в другом, да и получается зависимость от правильности содержимого стека). В этой программе, такие соображения могут казаться и смешными, с другой стороны, "на этом стеке" программа может ждать часами (пока esc нажмут /слушая музыку, например/) и, "если что" -- вызовем уже не включение экрана, а нечто совсем иное.
Сколько помню, тогда на капнемо подметили ещё то (стек этот был вроде бы тоже), что при запуске COM регистры находятся в определённом значении.
Во времена "8080" (да и позже) очень удивляло, что пишут call sub; ret вместо jmp sub (а если эта sub находилась "сразу за", то и ничего не писать совсем). Почти всегда так писать было можно и экономия заметная, особенно, когда памяти мало (и таких мест -- много).
|
#6 Автор: Nika (2013.04.22 14:11) | Насчёт обнулённости регистров при запуске - это я рассмотрел в первую очередь. Но из этого невозможно уже ничего выжать - по размеру выйдет то же самое. В общем, всё и так было Ok.
Только что попробовал эту прогу под Win7/32-bit - так сразу всё и завершилось ничем(((. |
#7 Автор: SergeCpp (2013.06.01 23:51) | Только что совершенно случайным образом (зашёл туда скачать pngout) обнаружил подобную программу в 126 байт (размер больше, так как там можно выбирать режим), написанную в мае 1999 года:
http://advsys.net/ken/util/blank.zip
BLANK.ZIP This screen saver uses the VESA DPMS functions. You can select between 3 options: STAND-BY, SUSPEND, and OFF.
COM-файл содержит строку: "Press 1 for Standby, 2 for Suspend, 4 for Off, or ESC to quit$".
http://advsys.net/ken/utils.htm
|
#8 Автор: Nika (2013.06.09 17:25) | А вот ещё одна программка в подобном стиле - 7 байтов CMOS_GOP: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=3217 |
#9 Автор: SergeCpp (2013.06.18 23:54) | Про отключение мыши от пробуждения:
Win 7 http://www.online-tech-tips.com/windows-7/prevent-a-mouse-from-waking-windows-7-up-from-sleep-mode/
Win 9x (реестр) и что-то про XP http://www.tomshardware.com/forum/55395-45-disable-mouse-standby-wake
Про реестр 9x пожалуй сюда скопирую, на всякий случай:
1) start/run type in: "regedit" 2) goto: hkey_local_machine open : Enum 3) open BIOS folder. 4) goto folder : *PNP0F13 5) drop down to find ConfigFlags in one of its folders called "OD" 6) change original setting from: 00 00 00 00 to: 00 00 01 00
В Win Me эти ConfigFlags находятся в "05".
|
#10 Автор: Nika (2013.06.19 00:11) | )))) Да, это проблема. У меня на COM-портовом мыше происходит ложное "нажатие правой кнопки" при каждом включении холодильника (на той машине, что на кухне). В мышином кабеле проходит наведенный электро-магнитный импульс.
|
#11 Автор: D1v0k (2013.11.15 15:08) | Супер! Большое спасибо! |
| |
|