|
MENU — Организация меню для применения в BAT-файлах | Описание | Информация | Организация меню для применения в BAT-файлах для DOS и DOS-окна Windows.
Клавиши: Вверх, Вниз, Home, End, PgUp (= Home), PgDn (= End), Enter.
Сохраняется выбранный пункт меню (он выделен при последующем запуске). Сохраняются только пункты меню с кодами возврата < 200 (это бывает нужно). Если установить у файла MNU атрибут Read-Only, то изначально выбранный пункт остаётся. Меню должно умещаться в один экран, максимально 22 пункта (можно и больше — на экране будут только центральные 25).
Также отображаются день недели, день месяца и время.
При запуске menu.com без параметра отображаются только дата и время (выход — по нажатию клавиши).
Размер файла menu.com: 1216 байт.
Написана на Ассемблере, компилятор — MASM 6.13. Исходные тексты прилагаются.
Программа работала около 5 лет в одной организации на примерно 20 компьютерах.
| Раздел: Автоматизация, скрипты, BAT-файлы
Скриншоты Операционная система: DOS, DOS-окно Windows Требования: - Автор: SergeCpp Издатель: -
Добавил: SergeCpp (2011.05.20) | Доступные файлы - сортировка по имени и версии, времени добавления Файлов: 2. Файл | Размер | Выпуск | Версия | Язык | Качество | Загрузил | | 26.9 Кб | 2001 | | Мультиязычный (русский) | | SergeCpp 2011.05.20 | | 8.9 Кб | 2019 | (Rebuilded) | Мультиязычный (русский) | | Nika 2019.03.09 | Оригинальная программа подправлена для трансляции c TASM v.5.0. Добавлена опция трансляции, позволяющая собрать версию для стандартного режима дисплея 80х25. |
|
Комментарии | #1 Автор: Nika (2013.04.13 01:21) | Моё почтение. |
#2 Автор: SergeCpp (2018.03.21 12:42, изменений: 2, 2018.03.21 15:39) | Процедуру выключения я позаимствовал у одной из старых версий (2000 год плюс-минус) symon (symon.ru) (при помощи soft-ice).
P.S. ...Ой... Похоже, я файл OFF.COM туда не включил почему-то... Не помню уже...
В Ralph Brown Interrupt List, вроде бы, есть такая функция.
P.P.S. Нашёл в сети подобное, на форуме выложил: http://forum.old-dos.ru/viewtopic.php?f=4&t=1028&p=12918#p12918
В symon, насколько помню, был только один вызов прерывания. Или я уже забыл...
|
#3 Автор: Dim_On (2019.03.05 23:16) | А реально ли исправить отображение в vDos? (https://www.vdos.info) А то менюшка разбегаеться (https://ibb.co/GMgdrYR) |
#4 Автор: Nika (2019.03.06 00:29, изменений: 7, 2019.03.06 02:40) | Программа прячет курсор (int 10h / ax=1), заодно устанавливает режим экрана с сорока колонками вместо восьмидесяти, (чтобы сделать текст меню более крупным) и эта система у вас не отрабатывает <int 10h/ax=1> как положено, всё равно остаётся 80 колонок. Соответственно и программа отрисовывает меню некорректно. Вряд ли тут есть какое-то простое решение.
Кстати, попробуйте в той системе похожую по назначению программку choiceS: http://old-dos.ru/index.php?page=files&mode=files&do=show&id=3096 - Она попроще, но тоже вполне удобная. |
#5 Автор: Dim_On (2019.03.06 16:30) | Nika, спасибо за совет. Меня choiceS вполне устроил. |
#6 Автор: SergeCpp (2019.03.07 14:06) | "Исходные тексты прилагаются." -- изменить там всё, что нужно. MASM 6.13 на old-dos есть (вроде бы). Да и если б не было -- ещё лучше, можно получить опыт настройки текста программы под другой ассемблер.
Или в hiew поправить, получив тоже хороший опыт. |
#7 Автор: Nika (2019.03.07 22:33, изменений: 7, 2019.03.07 22:48) | Так в какую сторону менять? - в сторону отрисовки на экране 80х25? - Вопрос-то был, что программа в конкретной системе не корректно работает. Значит, проблема в этой самой системе, а не в программе.
..У меня вот всё корректно работает даже в WinXP сеансе DOS. А такая какртинка, как у Dim_On, получается, если занопить вызов int 10h/ax=1, который по смещению 0x31B в файле MENU.COM. (Hide cursor/set cursor shape)
.. Вообще, конечно, я бы не менял разрешение экрана, а работал в текущем. Но это надо довольно существенно переделывать программу. |
#8 Автор: SergeCpp (2019.03.08 12:33) | Да. Поправить, чтоб 80 было.
Если программа в системе не работает, то легче поправить программу (в данном случае).
40 сделано, чтоб покрупнее и покрасивее было.
Что там переделывать надо, я не помню. Вроде бы, hiew достаточен. Тем более, что текст есть для консультации. |
#9 Автор: Nika (2019.03.09 01:44, изменений: 5, 2019.03.09 02:19) | Да ковырять её в Hiew смысла нет, раз есть исходные тексты.
Добавлен ребилд - MENU_80x25: Оригинальная программа подправлена для трансляции c TASM v.5.0. Добавлена опция трансдяции, позволяющая собрать версию для стандартного режима дисплея 80х25. (См.скриншот)
Dim_On, попробуйте эту версию в той вашей системе, где старая программа рисовала меню некорректно. Всё должно работать нормально. |
#11 Автор: Nika (2019.03.09 10:08) | ) Это было несложно. Изначально там всё было сделано по уму, через переменные времени трансляции. |
#12 Автор: Dim_On (2019.03.11 10:50) | https://ibb.co/RBmfh13 Отлично работает. Спасибо! |
| |
|