┌────── ┌────── ┌────── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌───────── ┌── ┌─── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌── ┌─────── ┌─────── ┌──── ┌──── ┌───── ┌──── ┌─ ┌─ ┌───── ┌───── ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌──── ┌──── ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌─ ┌───── ┌──── ┌───── ┌───── ┌─ ▀▀▀▀▀▀\ ▀▀\ ▀▀\ ▀▀▀▀▀▀▀\ ▀▀▀▀▀▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀▀▀▀▀▀\ ▀▀\ ▀\ ▀▀\ ▀▀\ ▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\ ▀▀\▀▀▀\▀▀\ ▀▀▀▀▀▀\ ▀▀▀▀▀\ ▀▀▀▀▀▀▀\ ▀▀▀▀▀▀▀\ ▀▀\ ▀▀\ ▀▀\ Release 2.31.01 19 Mar 1997 Посвящается ... ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Поддержка продукта ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ┌───────────────────────────────────────────────╖ │Существует эха поддержки QView - QVIEW.SUPPORT.║ ╘═══════════════════════════════════════════════╝ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Отличия версии 2.31.01 от 2.30.01 ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ╬ Кнопка вкл/выкл редактирования [Alt]+[F3] с начальной установкой в сетапе ╬ Базирование [Ctrl]+[F2] ╬ Поддержка CharSet в HV на просмотре (Select CharSet [F6]) ╬ Поддержка текущей CharSet на редактировании в HV (Ascii edit) ╬ Полная поддержка текущей CharSet на поиске и поиске с заменой по [F6] ╬ Функция 'Tabulation symbol support ON/OFF' в TV [Shift]+[F2] (Рекомендуется для просмотра бинаров в TV при включенном Wrap - значительно ускоряется скроллинг вверх нарезанных длинных строк) ╬ Добавлена история переходов по адресу для [F5] - GotoAdr (HV,AV) ╬ Поддержка Windows 95/NT 'PE' заголовка от исполняемых файлов ╬ В строковые редакторы добавлен hotkey очистки строки [Ctrl]+[Y] ╬ [Shift]+[F9] - Changes dialog + [Alt]+[F9]-UpdateAll, [Ctrl]+[F9]-UndoAll выполняются без подтверждения + Вставлено ограничение на 32 записи в файлах истории + Подпатчена функция удаления помеченного блока + Алгоритм позиционирования на адрес стал значительно быстрее + Поменялись местами hotkeys в TV для CharSet и LineFeed ([F6] и [F8]) + Убраны странности при попытках удаления несуществующих инструкций в Crypt + Решена проблема с опросом клавиатуры для странных систем,под которыми на запрос 'MOV AH,0', 'INT 16h' в AH не возвращается сканкод, а только в AL код символа ?! + После просмотра восстанавливаются исходные дата и время создания файла + Убраны пестрые квадратики при попытке вызова пустого 'history dialog' + Изменял многое по мелочи ~ Свежие версии QView доступны на 2:5030/445 по алиасам QVIEW, QBETA ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Содержание ▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ 1. Коротко о главном. 2. Системные требования. 3. Видеорежимы. 4. Информационная строка. 5. Строковый поиск, поиск с заменой. 6. Ассемблерный поиск. 7. Переходы по jmp/call etc в дизассемблера. 8. Кое-что о встроенном ассемблере. 9. Блоковые операции. 10. Закладки. 11. Калькулятор. 12. Crypt-система. 13. Файл истории просмотров и диалог истории файлов. 14. Файл конфигурации. 15. Файл помощи qview.hlp. 16. Клавиши управления. 17. Опции, запуск. 18. Много благодарностей. ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Коротко о главном ▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ■ Просмотр файлов неограниченной длины в text/hex/asm виде ■ Поддержка просмотра текста в кодировках Alt, Win, KOI-8 ■ Базирование начала файла ■ Возможность автоопределения LineFeed при загрузке файла ■ Возможность смены LineFeed на лету ■ Полнофайловое редактирование в режиме AV в кодах и на ассемблере i486. ■ Полнофайловое редактирование в режиме HV в hex/ascii виде. ■ Поддержка MS-DOS 'MZ' заголовка от исполняемых файлов ■ Поддержка Windows 95/NT 'PE' заголовка от исполняемых файлов ■ Возможность создания файла с нуля ■ Возможность дополнения файла ■ Возможность укорачивания файла ■ Дизассемблирование всех команд i80486/87. ■ Поиск любых команд i486/87 c возможностью задания сложной маски поиска ■ Поиск переходов/вызовов/ссылок на текущее смещение (AV) ■ Поиск Ascii/Hex строк с возможностью различения регистра букв и маской ■ Поиск Ascii/Hex строк с заменой ■ История введенных строк в диалогах поисков ■ Поддержка переходов по jmp/call/loop.../j... и т.д. ■ Поддержка перехода по адресу в Hex/Asm режимах ■ Запись блока в виде Code/Dump/Assembler и чтение в виде Code ■ Удаление блока из файла ■ Вставка блока в файл ■ Функция вставки блока из нулевых байтов в файл ■ Функция удаления блока байтов из файла ■ Мощная crypt-система для изменения файла по сложному алгоритму ■ Встроенный калькулятор ■ BookMark для каждого режима просмотра на 9 закладок. ■ Контекстно-ориетированная система помощи ■ Автоматически ведется файл qview.his истории просмотров ■ Диалог истории просмотров файлов для быстрого перехода к другому файлу ■ Возможность открытия/создания любого файла прямо из вьюера ■ Переопределение цветов вьюера. ■ Поддержка режимов 80*25, 80*30, 132*25, 132*30 etc. ■ Возможность перекрытия начального режима просмотра по ключикам запуска ■ Ключ /r в командной строке - режим только просмотра ■ Требования к памяти - ~80 Kb ОП ■ Setup by Dr.Khumen ( plug on your Sound Blaster ;) ■ Глюк бордюра. ;) ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Системные требования ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Программа написана под : CPU: 386+ Video: VGA+, MDA, Hercules, CGA, EGA DOS: MS DOS 3.3+ Memory: ~80 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.31 AGC Product ──────────────────────────────────────────────────────────────────────────── └────┬─────┘ └──┬───┘ │ └──┬───┘ └───┬───┘ └─┬┘ │ длина │ текущее закладки начальная │ файла │ смещение для каждого колонка в │ в байтах │ (Hex) режима свои текстовом │ (Dec) │ режиме(Hex) имя файла │ └ Режим строкового редактора (I-Ins, O-Overide) ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Строковый поиск, поиск с заменой ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Поиск работает по всему файлу с текущей позиции. Возможно переключение в опциях на различение больших и малых буковок, по умолчанию не различаем ( в т.ч. и русские буковки обслуживаем). Если ввод нажимается на hex строке, то установка флага case sensitive игнорируется, всегда идет поиск с различением регистра букв. Ввод строки для поиска можно производить в ascii и hex режимах и переключаться между ними во время ввода ( Стрелки Вверх, Вниз ). Для ввода hex чисел состояние русификатора безразлично. При включенной опции 'use mask' символ '?' расценивается как маскирующий и отображается '??' в hex строке, а в ascii просто '?'. При поиске с маской символ '?' маскирует соответствующий ему байт в сравниваемой строке. Т.е. если задать строку вида 'one ?ype', то найдуться и '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 и т.д. по смыслу ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Файл истории просмотров ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Файл истории предназначен для сохранения внутренней информации о просматриваемом файле. При повторном просмотре этого же файла установки восстанавливаются из файла истории. Сохраняются позиция в файле ( впрочем, если размер просматриваемого файла был изменен, то естественно позиция устанавливается на начало файла), LineFeed, режим просмотра, Wrap/Unwrap, опции поиска обычного и ассемблерного ( но не строки поиска ), закладки. Вообщем полный телемаркет. Файл истории ведется автоматически один на все файлы в директории, где расположен QVIEW. Обновление информации происходит по выходу из вьюера. Написан управляющий диалог для удаления записей и быстрого перехода в просмотр другого файла. Вызывается по Alt+F7. Клавиши управления: Up, Down переместиться на предыдущую/последующую запись F8, Del удалить текущую запись F10 очистить файл истории ENTER загрузить текущий файл ESC вернуться без ввода записи Note: ведение файла истории можно запретить в qview.ini ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Файл конфигурации ▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ Bсе цвета и default опции можно переопределить без усилий при помощи QSETUP.COM. Огромное спасибо Dr.Khumen за оный. Либо для желающих можно и так : QVIEW.COM QVIEW.INI Причем теперь существование qview.ini не обязательно, можно его создать с "нуля". Для них описываю: 1. Файл конфигурации имя : QVIEW.INI размер : 81 bytes наличие : не обязательно ( use default options ) цель : перопределение цветов и опций дислокация : вместе с qview.com 2. Формат: ;--- Ini file data ---------------------------------------------------------- IniHeader db 'AGC229' 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 CTGLog db 0FFh ; ColorGlucker 01 - On, 0FFh - Off LFCurPos db 5 ; 0-CRLF, 1-CR, 2-LF, 3-NULL, 4-LFCR, 5-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 ; Undocumented option ;) Note: default значения взяты из QVIEW.COM ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▀▄▀ Файл помощи 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 лучше сохранить, а то вся цветовая какофония в окне помощи исчезнет. ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ ▐▄▀▄ Опции, ключики и запуск ▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▀▄▌ ░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░▒▓█▓▒░ 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 за сетап и обсуждение разных вопросов. Всем, кто прислал мне свои замечания, пожелания, комментарии. Сорри, если кого забыл. Пишите, всегда рад ;) Igor Naryshkin 2:5030/482 Timur Chuzhinov 2:5011/45 Peter Sobolev 2:5030/84 Misha Ivanov 2:5020/279.81 Alex Morshchakin 2:454/2.15 damir bikmuhametov 2:5011/13.1 Maximilian Gvozdev 2:463/151.25 Andrey Siniakov 2:5030/255.26 Sergey Temrezov 2:5030/54.777 Igor Smirnov 2:5030/175.51 Sergey Savchenko 2:5000/35.8 Vovec Tokmakov 2:5020/198.19 hubak@elf.stuba.sk 2:50/128 Alex Pakhotin 2:5004/15.9 Alexey Monastyrenko 2:5030/303.8 Dmitry Jemerov 2:5030/482.7 Igor Pronin 2:5055/63.4 Ivan Kuznetsov 2:5030/441.15 Leonid Shirmanov 2:5030/445.14 Alex Zemlaykov 2:5011/209 Alexander Alferowich 2:5031/7.3 Andy Semenov 2:5020/316.11 Eugene Lisovy 2:4635/9.11 Kirill Kutejnikov 2:5030/329.5 Kostya Volkov 2:4631/17 Nikolay Sidoroff 2:5055/63.8 Professor Nimnull 2:5020/552.69 Sergey Volkov 2:454/2.35 Slava Tarasjuk 2:464/29.4 Vasily Idanov 2:5008/1.3 Victor Frolov 2:5004/22.9 Victor Shantar 2:5054/26 Yuri Baranow 2:450/86.100 basil vorontsov 2:5020/487 Alexander Skorodumov 2:5030/61.42 Andrew Lazarchuk 2:454/2.2 Andrey Alekseyev 2:5030/142.21 Andy Knyazev 2:5054/12.30 Andy Shevchenko 2:461/73.55 Bohdan Troshchinskiy 2:463/217.99 Boris Felikson 2:5020/871.1543 Dmitry Belyi 2:464/43 Dmitry Shevchenko 2:5055/63 Dmitry Zavalskov 2:5022/15.3 Igor Dyatlov 2:5030/541 Igor Vasilchikov 2:5030/31.47 Ilja Evseev 2:5030/445.8 Ilya Aniskovets 2:5020/638.133 Michail Danshin 2:5020/777.18 Paul Sokolovsky 2:4615/23.31 Pavel Popov 2:5080/69.2 Rick Murray 2:5010/14.7 Sergej Miroshnichenko 2:5051/3.27 Sergey Volkov 2:454/1.9 Sergey Zabaryansky 2:463/81.73 Stanislav Davidov 2:5030/448.4 Vano Sergeev 2:5030/542.222 Vladimir Gordeev 2:5054/4.8 Vladimir Kvitnitskiy 2:5057/20.8 Wowik Mikolenko 2:5031/1.23 Yuri Onufreeshin 2:5083/33.90 Yury Urbanovitch 2:451/7 NB: Hичьи пожелания и предложения, еще не реализованные, не забыты, а ждут своей очереди на реализацию. Баги стараюсь сразу же фиксить, когда на- хожу их в 802 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 00:54:38, 19-03-97 AGC ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓╬╬╬╬╬╬▓▓╬╬▓▓╬╬▓▓╬╬╬╬╬╬▓▓╬╬╬╬╬╬▓▓▓▓░░ ▓▓▓╣▒▒▒▒▒▒▓▓╬▒▓╬▒▒▓▓▒╬╬▒▒▒▓▓▒╬╬▒▒▒▓▓▓░░ ▓▓▓╬╬╬╬╬╬▓▓▓▓╬╬▓▒▓▓▓▓╬╬▒▓▓▓▓▓╬╬▒▓▓▓▓▓░░ ▓▓▓╬▒▒▒▒▒▒▓▓╬▓▒╬▓▓▓▓▓╬╬▒▓▓▓▓▓╬╬▒▓▓▓▓▓░░ ▓▓▓╬╬╬╬╬╬▓▓╬╬▒▓╬╬▓▓╬╬╬╬╬╬▓▓▓▓╬╬▒▓▓▓▓▓░░ ▓▓▓▓▒▒▒▒▒▒▓▓▒▒▓▓▒▒▓▓▒▒▒▒▒▒▓▓▓▓▒▒▓▓▓▓▓░░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░ ▓▓▓▓▓ Yes ▓▓▓▓▓▓ No ▓▓▓▓▓░░ ▓▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓░░ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░