┌────── ┌────── ┌────── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌───────── ┌── ┌─── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌─────── ┌─────── ┌──── ┌──── ┌───── ┌──── ┌─ ┌─ ┌───── ┌───── ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌──── ┌──── ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌───── ┌──── ┌───── ┌───── ┌─ ▀▀▀▀▀▀\ ▀▀\ ▀▀\ ▀▀▀▀▀▀▀\ ▀▀▀▀▀▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀▀▀▀▀▀\ ▀▀\ ▀\ ▀▀\ ▀▀\ ▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\▀▀▀\▀▀\ ▀▀▀▀▀▀\ ▀▀▀▀▀\ ▀▀▀▀▀▀▀\ ▀▀▀▀▀▀▀\ ▀▀\ ▀▀\ ▀▀\ Release 2.41.01 14 Jun 1997 Посвящается ... ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Поддержка продукта ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ┌───────────────────────────────────────────────────────╖ │Welcome to the echo-conference QVIEW.SUPPORT in Fidonet║ ╘═══════════════════════════════════════════════════════╝ ~ Свежие версии QView доступны на 2:5030/445 по алиасу QVIEW ~ А также они со временем появляются на ftp://ftp.csa.ru/pub/il/qview???.arj, где ??? - номер версии ( спасибо Илье Евсееву ) ~Path for QVIEW.SUPPORT: └──5030/482 ├──5030/96 │ ├──5030/48 │ │ └──5030/23 │ │ └──5020/215 │ │ ├──5020/381 │ │ │ ├──5020/108 │ │ │ └──5020/236 │ │ │ └──5020/1062 │ │ └──5020/1215 │ │ └──5020/509 │ │ └──5020/443 │ └──5030/6 └──5020/68 │ └──5030/84 └──5020/188 └──5030/445 └──5020/1042 ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Содержание ▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ 1. Коротко о главном. 2. Системные требования. 3. Видеорежимы. 4. Информационная строка. 5. Строковый поиск, поиск с заменой. 6. Ассемблерный поиск. 7. Переходы по jmp/call etc в дизассемблера. 8. Кое-что о встроенном ассемблере. 9. Блоковые операции. 10. Закладки. 11. Калькулятор. 12. Crypt-система. 13. Базирование. 14. Файл истории просмотров и диалог истории файлов. 15. Файлы конфигурации qview.ini, qview.ehl. 16. Файл помощи qview.hlp. 17. Поддержка мыши 18. Клавиши управления. 19. Опции, запуск. 20. Много благодарностей. ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Коротко о главном ▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ■ Просмотр файлов неограниченной длины в txt/hex/asm режимах: TV,HV,AV ■ Highlight полей для HV,AV и текста в TV ■ Поддержка просмотра текста в кодировках Alt, Win, KOI-8 ■ Возможность автоопределения LineFeed для файла и смены его на лету (TV) ■ Полнофайловое редактирование в режиме AV в кодах и на ассемблере i486. ■ Полнофайловое редактирование в режиме HV в hex/ascii виде. ■ Возможность создания файла с нуля, дополнения и укорачивания файлов. ■ Поддержка MS-DOS 'MZ' заголовка от исполняемых файлов ■ Поддержка Windows 95/NT 'PE' заголовка от исполняемых файлов ■ Поддержка Windows,OS/2,DOS 4 etc 'NE' заголовка от исполняемых файлов ■ Дизассемблирование всех команд i80486/87. ■ Комментирование файла в режиме дизассемблера ■ Базирование начала файла ■ Поддержка переходов по jmp/call/loop.../j... и т.п. в дизассемблере ■ Поиск любых команд i486/87 c возможностью задания сложной маски поиска ■ Поиск переходов/вызовов/ссылок на текущее смещение (AV) ■ Поиск Ascii/Hex строк с возможностью различения регистра букв и маской ■ Поиск Ascii/Hex строк с заменой ■ Поддержка перехода по смещению в файле в HV, AV ■ Сохранение блока из файла на диск в виде Code/Dump/Assembler ■ Чтение блока с диска в файл в виде Code ■ Удаление блока из файла и вставка блока в файл ■ Функция вставки блока из нулевых байтов в файл ■ Функция удаления блока байтов из файла ■ Мощная crypt-система для изменения файла по сложному алгоритму ■ Встроенный калькулятор ■ BookMark для каждого режима просмотра на 9 закладок. ■ Контекстно-ориетированная система помощи ■ Возможность автоматического ведения истории просмотров ■ Диалог истории просмотров файлов для быстрого перехода к другому файлу ■ Возможность открытия/создания любого файла прямо из вьюера ■ Переопределение цветов вьюера. ■ Поддержка режимов 80*25, 80*30, 132*25, 132*30 etc. ■ Поддержка мыши ■ Отдача квантов времени под многозадачными ОС ■ Требования к памяти - ~90 Kb ОП ■ Q-Setup by Igor Naryshkin ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Системные требования ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Программа написана под : CPU: 386+ Video: VGA+, MDA, Hercules, CGA, EGA DOS: MS DOS 3.3+ Memory: ~90 Kb P.S. Video: снег не отслеживается P.P.S. Работаем и в OS/2, и в Win95 DOS сессиях. ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Видеорежимы ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Поддерживаются 80*25, 80*30, 80*50, 132*25, 132*30 etc, т.е. все текстовые ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Информационная строка ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ──────────────────────────────────────────────────────────────────────────── Filename.ext YYYYYYY M xxxxxxxx --------- 00 ▐ QView 2.41 AGC Product ──────────────────────────────────────────────────────────────────────────── └────┬─────┘ └──┬───┘ │ └──┬───┘ └───┬───┘ └─┬┘ │ длина │ текущее закладки начальная │ файла │ смещение для каждого колонка в │ в байтах │ (Hex) режима свои текстовом │ (Dec) │ режиме(Hex) имя файла │ └ Режим строкового редактора (I-Ins, O-Overide) См.также 'Поддержка мыши' ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Строковый поиск, поиск с заменой ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Поиск работает по всему файлу с текущей позиции. Возможно переключение в опциях на различение больших и малых буковок, по умолчанию не различаем ( в т.ч. и русские буковки обслуживаем). Если ввод нажимается на hex строке, то установка флага case sensitive игнорируется, всегда идет поиск с различением регистра букв. Ввод строки для поиска можно производить в ascii и hex режимах и переключаться между ними во время ввода ( Стрелки Вверх, Вниз ). Для ввода hex чисел состояние русификатора безразлично. При включенной опции 'use mask' символ '?' расценивается как маскирующий и отображается '??' в hex строке, а в ascii просто '?'. При поиске с маской символ '?' маскирует соответствующий ему байт в сравниваемой строке. Т.е. если задать строку вида 'one ?y?e', то найдуться и 'one byte', и 'one type' etc. Или если задать 'B4 ?? CD 21', то получим 'B4 3F CD 21', 'B4 40 CD 21'. Ну и все выше изложенные рассуждения на тему различения регистра букв естественно верны и для поиска с маской. Кнопки: F1 - Help - помощь F4 - Case sensitive - переключает различать регистры или нет F5 - Use mask - поиск с использованием маски или без F7 - History - история введенных строк Enter - start - начать поиск Esc - exit - выйти из диалога поиска В диалоге истории выводятся записи из файла qview.srh, куда они сохраняются при вводе. Последняя введенная строка помещается ( или перемещается ) на вершину списка. Клавиши управления: Up, Down переместиться на предыдущую/последующую запись F8, Del удалить текущую запись F10 очистить файл истории ENTER выбрать текущую запись из списка ESC вернуться без ввода записи Note: ведение файла истории можно запретить в qview.ini Поиск с заменой вызывается по Ctrl+F7 и отличается от всего выше изложенного только тем, что по Enter мы отправляемся на ввод заменяющей строки. ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Ассемблерный поиск ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Работает в режиме дизассемблера. Вызов : [F6] Продолжение : [Shift]-[F6] По нажатию F6 возникает следующий диалог: ╔══════════════════ Assembler search ══════════════════╗ ║ ║ ║ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ║ ║ ║ ║ Step: Command Area: File Offs: Begin Type: Full ║ ║ ~~~~ ~~~~ ~~~~ ~~~~ ║ ╚══════════════════════════════════════════════════════╝ 1. Step - шаг поиска - меняется по [F2] 'Command' - шагаем по инструкциям 'Byte ' - перемещение по 1-му байту ( медленно, но верно ;) 2. Area - область поиска - меняется по [F3] 'File ' - поиск по всему файлу 'Block' - поиск в блоке 3. Offs - смещение для поиска - меняется по [F4] 'Begin ' - искать с начала файла(блока) 'CurOfs' - искать с текущей позиции в файле(блоке) 4. Type - тип поиска - меняется по [F5] 'Full ' - искать все вхождения строки поиска, т.е. если при этом написать 'MOV'- будут искаться все инструкции 'MOV x,y' А также при 'mov ax,$FE' - все инструкции вида 'mov ax, 00FE', 'mov ax,FE12' etc. Или при 'xor ?x,byte ptr [si' будут искаться 'xor ax,byte ptr [si+1000]', 'xor cx, byte ptr [si]' etc 'Small' - искать точные значения строки поиска, т.е. при задании 'mov *,$1' будут выдаваться 'mov si,0001','mov cl,01', 'mov dword ptr [bx+si],00000001' etc, но если на конце будет '10' - то уже не найдет. 5. Синтаксис используемый в маске Собственно используется синтаксис дизассемблера для инструкций и опе- рандов. Регистр букв не важен, пишите как Вам нравиться. Не нужно ста- вить лишние пробелы - их мы не перевариваем. Не стоит забывать и о приве- дениях типов - 'byte ptr' - это целых 2 слова ;) Если лень их писать - используйте символы маски. Символы маски: '?' - любой один символ '*' - любая подстрока до запятой или конца строки '$' - ставиться перед числовой константой, нужен для пропука первых нулей '%' - пропуск одного слова (до пробела, запятой или конца строки) Примеры: ┌─────────────────────────────┬──────────────────────────────────────┐ │ 1. 'mov ?s,ax' │ 'mov es,ax' │ │ │ 'mov ds,ax' │ ├─────────────────────────────┼──────────────────────────────────────┤ │ 2. '*,$1' │ 'mov ax,0001' │ │ │ 'cmp byte ptr [ebx],01' │ │ │ 'shl dx,01' │ ├─────────────────────────────┼──────────────────────────────────────┤ │ 3. '% % ptr fs:[e?x+$14],*' │ 'cmp byte ptr fs:[eax+14],01' │ │ │ 'mov dword ptr fs:[ebx+00000014],esi'│ ├─────────────────────────────┼──────────────────────────────────────┤ │ 4. 'l?s *,*' │ 'lds si,word ptr [1980]' │ │ │ 'les eax,dword ptr [ebx]' │ └─────────────────────────────┴──────────────────────────────────────┘ ~ В общем фантазируйте :) 6. Поиска переходов/ссылок/вызовов на текущее смещение [F6] - Reference 7. Диалог поиска [F7] В диалоге истории выводятся записи из файла qview.sra, куда они сохраняются при вводе. Последняя введенная строка помещается ( или перемещается ) на вершину списка. Клавиши управления: Up, Down переместиться на предыдущую/последующую запись F8, Del удалить текущую запись F10 очистить файл истории ENTER выбрать текущую запись из списка ESC вернуться без ввода записи Note: ведение файла истории можно запретить в qview.ini ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Переходы по jmp/call etc в дизассемблера ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Кнопки: [Shift]+[1]...[Shift]+[9] - переходы [Shift]+[0] - возврат (вложенность единица - используйте с закладками ;) ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Кое-что о встроенном ассемблере ▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Вообщем,синтаксис ассемблера тот же, что и в дизассемблере. Там где необхо- димо - нужно указывать приведения типов, но в основном действуют и значения по умолчанию. Для переходов - short, near etc отсутствуют как класс, используют- ся либо дальности по умолчанию, либо указывается через byte(word,dword) ptr. ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Блоковые операции ▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Поддерживаются все блоковые операции [Shift-F2] - запись отмеченного блока в файл (HV,AV) [Shift-F3] - чтение блока из файла в отмеченный блок (HV,AV) [Shift-F4] - удаление отмеченного блока (HV,AV) [Shift-F5] - вставка блока из файла в текущую позицию (HV,AV) [Ins] - отметить начало/конец блока, снять отметку(HV,AV) [Ctrl-F4] - вставить блок байтов (нулевых) в текущую позицию (Text,HV,AV) [Ctrl-F5] - удалить блок байтов с текущей позиции (Text,HV,AV) 1. При записи блока появляется диалог ┌────────────────────────── Write block to file ─────────────────────────┐ │ │ │ Block : Begin : 00000000 End : 00000000 Length : 00000000 │ │ │ │ File : ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ │ │ │ │ Offset: ░░░░░░░░ Save as : (*) Code ( ) Dump ( ) Assembler │ │ │ └────────────────────────────────────────────────────────────────────────┘ 1.1. Наверху указываются характеристики блока (начало, конец, длина) 1.2. Переключение между полями [TAB] 1.3. Запись блока [ENTER], [ESC] - отмена 1.4. [SPACE] - на ( ) Code, ( ) Dump, ( ) Assembler выбор режима вывода блока 1.5. Offset - смещение в файле куда пишем, если забитый Offset больше длины файла, то пишем в конец. Поэтому если забить FFFFFFFF, то точно запишем в конец 1.6. В режиме Dump - дамп выводится с фильтром: символы 0-31 скипаются 1.7. В режиме Assembler - пишем ассемблерный листинг 2. При чтении блока, если файл откуда берем блок со смещения Offset меньше длины отмеченного блока, выводится сообщение об ошибке "Illegal offset in file" ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Закладки ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Закладки предназначены для сохранения/восстановления состояния текущего экрана. Нажатие [Alt]+[+] запоминает состояние текущего экрана, [BS] - вернутся к текущей закладке и т.д. как в Hiew ;) Для каждого режима (text/hex/asm) можно запомнить 9 экранов. На любой запомненный экран можно перейти, нажав соответственно [Alt]+[1]...[Alt]+[9]. [Alt]+[+] - сохранить текущее состояние [BS] - вернуться к текущему состоянию [Alt]+[1]...[Alt]+[9] - перейти к соответствующей закладке [Alt]+[-] - удалить текущую закладку [Alt]+[0] - удалить все закладки ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Калькулятор ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ В программу вставлен универсальный калькулятор с полным набором арифметических и логических функций. Ввод выражений может осуществляться в четырех режимах по умолчанию: Dec, Hex, Oct, Bin. Кроме того, в любом режиме можно вводить числа в любом виде используя символ преобразования типа в конце числа: d - Dec, h - Hex, o - Oct, b - Bin. Число представляется в калькуляторе двойным словом ( 32 бита ). Порядок подсчета выражения - слева направо с учетом приоритетов операций. Круглые скобки используются для изменения порядка выполнения выражения. Приоритеты операций: ┌─┬──────────────────┬───────────────────────────────────────────┐ │1│ (, ) │ скобки │ │2│ ~, - │ not, unary_minus │ │3│ <<, >> │ shl, shr │ │4│ *, /, %, &, |, ^ │ mul, div, остаток_от_деления, and, or, xor│ │5│ +, - │ add, sub │ └─┴──────────────────┴───────────────────────────────────────────┘ Note: высший уровень приоритета = 1 Клавиши: F2 - Dec default F3 - Hex default F4 - Oct default F5 - Bin default Enter - Evaluate Esc - Exit ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Crypt-система ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ На мой взгляд, написание эмуляторов-интерпретаторов занятие муторное и неблагодарное. Кроме того, это требует значительных затрат памяти и т.п. Анализируя существующие крипты в hiew, proview и прочих ( в данном случае под криптом подразумеваются любые возможности автоматического и полуавтома- тического изменения редактируемого кода по заданному алгоритму ) я посчитал идеи заложенные в них слишком ограниченными для свободных художников. Поэтому я пошел другим путем. Конечно, тоже с ограниченными возможностями, но гораздо более широкими, чем в перечисленных выше системах. Но любая медаль имеет и оборотную сторону - в данном случае это потеря наглядности вместе с утратой вьюером контроля над работой крипта. Но, по-моему, это невысокая цена за новые возможности - просто будьте аккуратнее и все будет Ok ;) Итак: 1. Крипт работает над помеченным блоком размером до 64000 байт в нормальном режиме, поэтому незабудьте выбрать блок для криптования в файле. 2. Крипт представляет собой дальнюю процедуру, вызываемую вьюером, поэтому незабудьте ставить в конце инструкцию RETF. 3. Вьюер передает процедуре криптования параметры через регистры DS:SI - указывает на начало криптуемого блока CX - длина криптуемого блока ES:DI - указывает на область данных процедуры 4. Доступны все инструкции 486 процессора. 5. Вьюер не контролирует адресов переходов по процедуре, а также адресов к которым она обращается. Если что-то кладете на стек, незабудьте это и снять с него. Вообщем, корректность работы крипт-процедуры исключительно на вашей совести. 6. Максимальная длина кода и данных процедуры - 1024 байта. Но соотноше- ние кода и данных можно менять через DataOffset. Облать данных с DataOffset и до границы в 1024 байта остается неподвижной, поэтому к ней можно, конечно, обращаться и напрямую. Она предназначена для сохранения внутренних переменных крипт-процедуры, таблиц и т.п. Ассемлирование же производиться в область кода. Длина программы ограничена 200 строками. Клавиши управления: Up, Down Move up/down Right, Left Move left/right Alt+F1 Assembler editor mode: insert/override F1 Help F2 Save crypt file F3 Load crypt file F4 Crypt procedure data section offset F5 Go to offset F6 Erase crypt procedure F7 Clear crypt procedure data section F8 Delete current instruction F9 Run crypt procedure TAB Toggle assembler/data editor ENTER Assemble instruction ESC Exit w/o crypt и т.д. по смыслу ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Базирование ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ В программе предусмотрена возможность смены начального адреса отображения, необходимая для тех, кому надо, чтобы .com начинался с 100h или смещение данной команды имело определенный адрес. В этом случае Вы можете задать специальную константу - базу отображения, которая прибавляется к смещению и адресам переходов. Вызов диалога по Ctrl+F2. Клавиши управления: Up, Down Move up/down Tab Next record F1...F8 Select 1..8 base Enter Select current base F10 Clear program base VA ESC Abort operation Символы базы: '+','-' Знаки перед константой '*' Автоматический пересчет текущего смещения в то, что идет после '*xxxxxxxx'. Т.е. если текущее смещение было 1893h, а надо 200h, то просто наберите *200h. Note: вызов диалога можно осуществлять мышкой (см. 'Поддержка мыши') ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Файл истории просмотров ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Файл истории предназначен для сохранения внутренней информации о просматриваемом файле. При повторном просмотре этого же файла установки восстанавливаются из файла истории. Сохраняются позиция в файле ( впрочем, если размер просматриваемого файла был изменен, то естественно позиция устанавливается на начало файла), LineFeed, режим просмотра, Wrap/Unwrap, опции поиска обычного и ассемблерного ( но не строки поиска ), закладки. Вообщем полный телемаркет. Файл истории ведется автоматически один на все файлы в директории, где расположен QVIEW. Обновление информации происходит по выходу из вьюера. Написан управляющий диалог для удаления записей и быстрого перехода в просмотр другого файла. Вызывается по Alt+F7. Клавиши управления: Up, Down переместиться на предыдущую/последующую запись F8, Del удалить текущую запись F10 очистить файл истории ENTER загрузить текущий файл ESC вернуться без ввода записи Note: ведение файла истории можно запретить в qview.ini ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Файлы конфигурации ▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ╓─═ QVIEW.INI ═══─────────────────────────────────────────────────────────────╖ ~~~~~~~~~ 1. Файл конфигурации имя : QVIEW.INI размер : 87 bytes наличие : не обязательно ( use default options ) цель : перопределение цветов и опций дислокация : вместе с qview.com 2. Формат: ;--- Ini file data ---------------------------------------------------------- IniHeader db 'AGC231' IniAttrib: ;--- Information line colors ------------------------------------------------ cCopyRight db 70h ; Copyright string color cFileName db 79h ; File name color cFileSize db 70h ; Color of file size cTxtOutOfs db 74h ; Color for output offset ;--- Status/help line colors ------------------------------------------------ cStLineKey db 74h ; Status line key color cStLineMes db 70h ; Status line message color cStLineGray db 78h ; Status line message grayed color ;--- Input line colors ------------------------------------------------------ cInpLineTxt db 8Eh ; Input line text cInpLineHex db 8Ah ; Input line hex cEditBG db 70h ; Input line BG ;--- Dialog boxes colors ---------------------------------------------------- cDlgBox db 7Fh ; Dialog box background with frame cDlgHeader db 7Eh ; Dialog box header cDlgText db 70h ; Dialog box text cDlgScrBar db 0Eh ; Dialog box scroll bar cDlgCursor db 9Eh ; Dialog box cursor attr cGrpTxt db 30h ; Group box attr cGrpGray db 38h ; Group box grayed item cGrpHeader db 7Fh ; Group box header cGrpFrame db 70h ; Group box frame cGrpHigh db 7Ah ; Group highlite header ;--- Text view mode colors -------------------------------------------------- ctvAttrOut db 87h ; Attributes for output chars ctvMarkOut db 70h ; Searched value highlight ctvDivider db 8Fh ; Dividers ctvNumber db 8Bh ; Numbers ctvComment db 83h ; Comment string attribut ctvString db 8Dh ; Strings color ;--- Dump view mode colors -------------------------------------------------- chvAttrOut db 87h ; Main color chvByteHexOut db 87h ; Bytes hex out color chvByteAscOut db 87h ; Bytes ascii out color chvCursorAttr db 3Fh ; Cursor color chvMarkOut db 70h ; Searched value highlight chvDivider db 8Fh ; Dividers chvChgHexOut db 8Ah ; Changed bytes color hex out chvChgAscOut db 8Eh ; Changed bytes color asc out chvNewHexOut db 8Bh ; HV new bytes color hex out chvNewAscOut db 8Fh ; HV new bytes color ascii out chvBlkHexMark db 8Eh ; Mark block color hex chvBlkAscMark db 8Ah ; Mark block color ascii ;--- Assembler view mode colors --------------------------------------------- cavAttrOut db 87h ; Attributes for output chars cavCodeField db 8Fh ; Instr code field cavCursorAttr db 3Fh ; Cursor color cavMarkOut db 70h ; Searched value highlight cavDivider db 8Fh ; Dividers cavNumber db 8Bh ; Numbers cavJmpField db 83h ; Jmp field cavAsmField db 87h ; Instr. field cavComment db 83h ; Comment string attribut cavChgHexOut db 8Ah ; Changed bytes color hex out cavNewHexOut db 8Bh ; AV new bytes color cavBlkHexMark db 8Eh ; Mark block color hex cavBlkAscMark db 8Ah ; Mark block color ascii ;--- Help window colors ----------------------------------------------------- bHlpWinAttr db 3Fh ; help window frame attr bHlpTxtAttr db 30h ; help text attr bHlpCurAttr db 0Fh ; help cursor attr bHlpTxtHigh1 db 3Eh ; highlight group 1 bHlpTxtHigh2 db 3Fh ; highlight group 2 bHlpTxtHigh3 db 3Ah ; highlight group 3 bHlpTxtHigh4 db 3Bh ; highlight group 4 ;--- Other colors ----------------------------------------------------------- cIntro db 04h ; Intro color ScrBarAttr db 83h ; Attr Scroll Bar ;--- Прочие параметры ---------------------------------------------15 байт--- OtherParms: OutMode db 0 ; Output mode 0-TV, 1-HV, 2-AV WrapLog db 1 ; TextWrap 0FFh-Wrap, 01h-UnWrap SearchOpt db 0FFh ; Case sentensivity 01 - On, 0FFh - Off PercentCnt db 0FFh ; ScrollBar 0FFh, Percent counter 01h LFCurPos db 5 ; 0-CRLF,1-CR,2-LF,3-NULL,4-LFCR,5- None,6-AUTO DefSegSize db 16 ; Segment size 10h-16, 20h-32 UndocOper db 1 ; Undoc operation - (not use) bStepValue db 1 ; AsmSr Step 01h-Command, 0FFh-Byte bAreaValue db 1 ; AsmSr Area 01h-File, 0FFh-Block bOffsValue db 1 ; AsmSr Offs 01h-Begin, 0FFh-CurOfs bTypeValue db 1 ; AsmSr Type 01h-Full, 0FFh-Small bAutoHis db 1 ; Auto history 01h-On, 0FFh-Off bCharSet db 0 ; 0-Alt, 1-Win, 2-KOI bCmdOpTab db 7 ; TabSize from BegCmd to operands CalcMode db 1 ; 0-Dec, 1-Hex, 2-Oct, 3-Bin AdvancedOpt db 0FFh ; Search with mask UseCharSet db 1 ; Search with use current CharSet bAVEdBGChar db ' ' ; AV edit cmd BG char bEditEnable db 1 ; Enable editing file after run viewer bTabONFlag db 1 ; Tab symbols on bZoomWinFlg db 1 ; Zooming window enable/disable Note: default значения взяты из QVIEW.COM ╓─═ QVIEW.EHL ═══─────────────────────────────────────────────────────────────╖ ~~~~~~~~~ Смотрите на мир в цвете ;) Имя : QVIEW.EHL Размер : варьируемый Наличие : не обязательно Цель : настройка опций вьюера на расширение файла Дислокация : вместе с qview.exe Размер записи : 48 байт ┌──────────┬──────┬─────────────┬────────────────────────────────────────────┐ │ Поле │Размер│ Пример │ Описание │ │ │(байт)│ │ │ ├──────────┼──────┼─────────────┼────────────────────────────────────────────┤ │FileExt │ 4 │'ASM',0 │Расширение файла │ │OutMode │ 1 │ 0 │Output mode 0-TV, 1-HV, 2-AV │ │WrapFlg │ 1 │ 1 │TextWrap 0FFh-Wrap, 01h-UnWrap │ │LFChar │ 1 │ 6 │0-CRLF,1-CR,2-LF,3-NULL,4-LFCR,5-None,6-AUTO│ │CharSet │ 1 │ 0 │0-Alt, 1-Win, 2-KOI │ │EditFlg │ 1 │ 0FFh │Enable editing file after run viewer │ │TabONFlg │ 1 │ 1 │Tab symbols on │ │TVHighFlg │ 1 │ 1 │Общее включение подсветки TV(01-On,0FFh-Off)│ │TVCommChar│ 5 │';',4 dup (0)│Односимвольные начала комментариев │ │TVComm1Str│ 6 │ 6 dup (0) │Строка начинающая однострочный комментарий │ │TVCommBeg │ 6 │ 6 dup (0) │Строка начинающая многострочный комментарий │ │TVCommFlg │ 1 │ 1 │Флаг разрешения подсветки комментариев │ │TVNumFlg │ 1 │ 1 │Флаг разрешения подсветки чисел │ │TVDivFlg │ 1 │ 1 │Флаг разрешения подсветки разделителей │ │TVStrFlg │ 1 │ 1 │Флаг разрешения подсветки строк "string" │ │TVStrFlg1 │ 1 │ 1 │Флаг разрешения подсветки строк 'string' │ │Reserved │ 15 │ 15 dup (0) │Зарезервировано │ └──────────┴──────┴─────────────┴────────────────────────────────────────────┘ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Файл помощи qview.hlp ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Файл помощи является обычным текстовым файлом MS-DOS и содержит текст, который выводится по кнопке F1. Текст поделен на разделы - топики. Каждый топик начинается с его индентификатора [xxxx], где xxxx - номер топика. Завершается файл пустым топиком [!END]. Максимальное количество строк в одном топике равно 100, остальные просто игнорируются. Максимальная длина строки равно 70 символам, остальные при выводе игнорируются. Для лучшего восприятия помощи введено цветовое выделение текста. Имеется пять highlight групп от 0 до 4, где нулевая является основным цветом вывода текста помощи. Задаются они через управляющий символ '!x', где x - номер группы. Действие установки highlight цвета сбрасывается пробелом или концом строки или другим highlight управляющим символом. Наличие файла помощи необязательно, также как и наличие в нем всех топиков. При желании часть топиков или весь файл можно просто удалить, но я бы этого делать не советовал - часть кнопок описаны только в помощи по F1. Можно вообще записать в соответствующий топик все, что вам угодно ;) Например покромсать qview.doc туда. ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Клавиши управления ▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Все кнопки, действующие для данного режима, выдаются по F1 или описаны в нижней строке. Если есть желание получить список всех кнопок QView, то удалите все управляющие символы из qview.hlp и получиться обычный текстовый файл. Только копию qview.hlp лучше сохранить, а то вся цветовая какофония в окне помощи исчезнет. ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▄▀▄ Поддержка мыши ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Вообщем-то, поддержка мыши встроена практически повсюду, кроме нескольких малоиспользуемых диалогов. Поддерживается позиционирование мышью, вызов функций из строки статуса, закрытие окон, выборка из списков и т.д. Практически, я думаю, кардинально уже ничего меняться не будет. Вся работа осуществляется левой кнопкой мыши, правая зарезервирована на будущее... Итак, несколько замечаний о нестандартных реакциях на мышь ;) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Информационная строка ~~~~~~~~~~~~~~~~~~~~~ В информационной строке клик левой кнопкой по следующим полям выполняет: ───────────────────────────────────────────────────────────────────────────── [] Filename.ext YYYYYYYY xxxxxxxx_ +12■-5----▐ 00 I ▐ QView 2.32 AGC Product ───────────────────────────────────────────────────────────────────────────── ├┘ └──┬───┘└┤│└───┬───┘│ └┬─┘ Выход из Переход на│└─┐ │ │ Переключение вьюера смещение │ │ │ │ режима между (Аналогично для HV, AV└┐ │ │ │ TV, HV, AV нажатию ESC) (Аналогично│ │ │ │ (Enter) нажатию F5)│ │ │ └───────────┐ ┌─────────────────┘ │ │ │ │ ┌────────┘ │ │ Вызов Запомнить Переход на В AV аналогично диалога состояние соответствующую (Shift+'0') BaseOfs в закладку (Ctrl+F2) BookMarks (Аналогично (Alt+'+') нажатию Alt+'1' ...Alt+'9') Режим TV ~~~~~~~~ В окне просмотра текста нажатие левой кнопки мыши: 1. В столбце 0: горизонтальный скроллинг влево 2. В столбце перед ScrollBar: горизонтальный скроллинг вправо 3. В верхней половине экрана: вертикальный скроллинг на одну строку вверх 4. В нижней половине экрана: вертикальный скроллинг на одну строку вниз Режим HV ~~~~~~~~ В окне просмотра нажатие левой кнопки мыши: 1. Скроллинг вверх, вниз, влево или вправо в зависимости от положения курсора, сдвиги влево, вправо позиции файла. 2. Переключение hex/ascii ввода, при включенном редактировании Режим AV ~~~~~~~~ В окне просмотра нажатие левой кнопки мыши: 1. Скроллинг вверх, вниз, влево или вправо в зависимости от положения курсора. 2. Переключение hex/asm ввода, при включенном редактировании 3. Трассировка соответствующего перехода при кликанье на (1)...(9) ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▄▀▄ Опции, ключики и запуск ▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ 1. Запуск программы ▄ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ Usage: qview.com [keys] Keys: /mt - force text view /md - force dump view /ma - force asm view /r - read only mode ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▄▀▄ Mного благодарностей ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Особая благодарность Гацко Дмитрию Юръевичу aka Dr.Khumen за первый QSetup и обсуждение разных вопросов. Также огромная благодарность Игорю Нарышкину за новый Q-Setup, создание и модерирование эхи поддержки QVIEW.SUPPORT, отлов багов и обсуждение разных вопросов. Всем, кто прислал мне свои замечания, пожелания, комментарии. Сорри, если кого забыл. Пишите, всегда рад ;) Igor Naryshkin 2:5030/482 Misha Ivanov 2:5020/279.81 Peter Sobolev 2:5030/84 Alex Morshchakin 2:454/2.15 Timur Chuzhinov 2:5011/45 Alexey Monastyrenko 2:5030/303.8 Igor Pronin 2:5055/63.4 Damir Bikmuhametov 2:5011/13.1 Sergey Volkov 2:454/2.35 Vasily Idanov 2:5008/1.3 Andrey Siniakov 2:5030/255.26 Maximilian Gvozdev 2:463/151.25 Andy Semenov 2:5020/1062 Dmitry Shevchenko 2:5055/63 Igor Smirnov 2:5030/175.51 Sergey Temrezov 2:5030/54.777 Viktor Ostashev 2:5020/753.3 Dmitry Belyi 2:464/43 Professor Nimnull 2:5020/552.69 Sergey Savchenko 2:5000/35.8 TERMINATOR 2:5063/3.37 Vovec Tokmakov 2:5020/198.19 Andrey Ryabuhin 2:4635/4.32 Alex Pakhotin 2:5004/15.9 Alex Zatvornitski 2:463/212.18 Andrej Zverev 2:5031/16.4 Dmitry Jemerov 2:5030/482.7 Ivan Kuznetsov 2:5030/441.15 Leonid Shirmanov 2:5030/445.14 Roman Papusha 2:4635/4.30 Sanya Tankeev 2:465/112 Alex S Aganichev 2:5020/604.19 Alex Zemlaykov 2:5011/209 Alexander Alferowich 2:5031/7.3 Alexey Gogotz 2:5010/86.10 Andrew Tkachenko 2:461/555 Andy Semenov 2:5020/316.11 Boris Felikson 2:5020/871.154 Kirill Kutejnikov 2:5030/329.5 Kostya Volkov 2:4631/17 Nikolay Sidoroff 2:5055/63.8 Rick Murray 2:5010/14.7 Sergey Monin 2:5040/7 Sergey Temrezov 2:5030/544.777 Slava Tarasjuk 2:464/29.4 Victor Frolov 2:5004/22.9 Victor Shantar 2:5054/26 Vladimir Gordeev 2:5054/4.8 Wadim A. Sigalov 2:402/711.333 Yuri Baranow 2:450/86.100 basil vorontsov 2:5020/487 Alex Semenyaka 2:461/640 Alex Silman 2:5020/272.16 Alexander Skorodumov 2:5030/61.42 Anatoly Rodnikov 2:5002/36.5 Andrew Lazarchuk 2:454/2.2 Andrey Alekseyev 2:5030/142.21 Andrey Prokopishin 2:469/72.12 Andrey Siniakov 2:5030/445.77 Andy Knyazev 2:5054/12.30 Andy Shevchenko 2:461/73.55 Bohdan Troshchinskiy 2:463/217.99 Danil Shubin 2:5056/60.15 Dennis B. Kobernic 2:4626/21 Dmitry Zavalskov 2:5022/15.3 Eugene Lisovy 2:4635/9.11 F0RESTER 2:4635/9.11 Igor Dyatlov 2:5030/541 Igor Vasilchikov 2:5030/31.47 Ilja Evseev 2:5030/445.8 Ilya Aniskovets 2:5020/638.133 Max Popov 2:5002/20.16 Michail Danshin 2:5020/777.18 Oleg Rombakh 2:50/382.3 Paul Sokolovsky 2:4615/23.31 Pavel Popov 2:5080/69.2 Sergej Miroshnichenko 2:5051/3.27 Sergey Pliusnin 2:451/5 Sergey Podolanchyk 2:465/4.16 Sergey Samoyloff 2:5074/9 Sergey Volkov 2:454/1.9 Sergey Zabaryansky 2:463/81.73 Slav Kuznetsov 2:5054/16.5 Stanislav Davidov 2:5030/448.4 Tony Mantana 2:5086/3.23 Vano Sergeev 2:5030/542.222 Vladimir Kvitnitskiy 2:5057/20.8 Vladimir Ruzin 2:464/5555.101 Wowik Mikolenko 2:5031/1.23 Yuri Onufreeshin 2:5083/33.90 Yury Urbanovitch 2:451/7 Peter Hubinsky hubak@elf.stuba.sk NB: Hичьи пожелания и предложения, еще не реализованные, не забыты, а ждут своей очереди на реализацию. Баги стараюсь сразу же фиксить, когда на- хожу их в 970 Kb asm source ;) ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ P.S. Буду благодарен за пожелания, предложения, ~маленькие баги, интересные идеи и отзывы. With Best Regards, Alexandr Gazko AKA 2:5030/445@FidoNet 2:5030/445.4@FidoNet 2:5030/282.4@FidoNet 2:5030/317.4@FidoNet 11:23:19, 14-06-97 AGC ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓╬╬╬╬╬╬▓▓╬╬▓▓╬╬▓▓╬╬╬╬╬╬▓▓╬╬╬╬╬╬▓▓▓▓░░ ▓▓▓╣▒▒▒▒▒▒▓▓╬▒▓╬▒▒▓▓▒╬╬▒▒▒▓▓▒╬╬▒▒▒▓▓▓░░ ▓▓▓╬╬╬╬╬╬▓▓▓▓╬╬▓▒▓▓▓▓╬╬▒▓▓▓▓▓╬╬▒▓▓▓▓▓░░ ▓▓▓╬▒▒▒▒▒▒▓▓╬▓▒╬▓▓▓▓▓╬╬▒▓▓▓▓▓╬╬▒▓▓▓▓▓░░ ▓▓▓╬╬╬╬╬╬▓▓╬╬▒▓╬╬▓▓╬╬╬╬╬╬▓▓▓▓╬╬▒▓▓▓▓▓░░ ▓▓▓▓▒▒▒▒▒▒▓▓▒▒▓▓▒▒▓▓▒▒▒▒▒▒▓▓▓▓▒▒▓▓▓▓▓░░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░ ▓▓▓▓▓ Yes ▓▓▓▓▓▓ No ▓▓▓▓▓░░ ▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓░░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░