Old-DOS.ru

ERROR 200

Утилиты >> Инструменты >> Turbo Pascal Pentium II DIV BUG fixing
Главная страница Файлы Игры Поиск Форум Wiki Библиотека Галерея Гостевая Ссылки О проекте

Логин:
Пароль:


Регистрация
Восстановление пароля




+ ОПЕРАЦИОННЫЕ СИСТЕМЫ
   + DOS
      • IBM PC DOS
      + MS-DOS
         • SDK
      • DR-DOS
      • FreeDOS
      • Сборки на базе DOS
      • Расширители DOS
      • Другие платформы
   + OS/2
      • SDK
   + Windows
      + Windows 1.x-3.x
         • Патчи и дополнения к Win1.x-3.x
      + Windows 9x
         • Патчи и дополнения к Win9x
      + Windows NT
         • Патчи и дополнения к WinNT+
      • Сборки на базе Windows
      • SDK
   • Linux/Unix
   • СР/М
   • Другие операционные системы
   • Загрузочные диски
   • Готовые образы операционных систем
   • Многозадачные оболочки
   + Системные программы
      • Твикеры
      • Русификаторы
      + Утилиты
         • Оборудование
         • Работа с CD/DVD
         • Инсталляторы
         • Системные
         + Инструменты
            • Turbo Pascal Pentium II DIV BUG fixing
         • Прочее
      • Замедлители
      • Тесты оборудования и системы
      • Обновления
   + Драйверы
      • Звук
      • Видео
      • Мыши
      • CD/DVD
      • Клавиатура
      • Принтеры
      • USB
      • Сеть
      • Память
      • Материнские платы
      • Периферия
      • Другое
   • OS BuildList
+ ЭМУЛЯТОРЫ И СИМУЛЯТОРЫ
   • Консоли
   • Эмуляторы компьютеров
   • Инструменты для эмуляторов
+ ПРОГРАММИРОВАНИЕ
   + Assembler
      • Disassembler
   • Pascal/Delphi
   • C/C++
   • Basic/Visual Basic
   • Фортран
   • SDK & DDK, etc.
   • Декомпиляторы
   • Форт
   • Генераторы блок-схем
   + Отладчики программ (DEBUGGERs)
      • Трассировщики
   • Другие языки программирования
• BIOS, прошивки
+ ДИСКИ И ФАЙЛЫ
   • Файловые менеджеры
   • Каталогизаторы
   • Копировщики
   • Поиск файлов, текста, байтов
   • Сканирование каталогов
   • Архиваторы
   • EXE-упаковщики
   • EXE-распаковщики
   • Восстановление информации и резервное копирование (бэкап)
   • HDD-утилиты
   • Дискеты
   • Разное
• СУБД
+ ОФИС
   • Интегрированные программные пакеты
   • Издательские системы
   • Электронные таблицы
   • Редакторы текста
   • Редакторы HTML
   + Утилиты для работы с текстом
      • OCR - распознавание текста
      • Просмотр документов
      • Печать
      • Перекодировка
      • Сравнение текстов
      • Шрифты
      • Работа со шрифтами
   • Словари и переводчики
   • Правописание
   • Органайзеры
   • Создание презентаций
   • Бизнес
   • Разное
+ ОБРАЗОВАНИЕ И НАУКА
   • Информатика
   + Инженерное ПО
      + Расчётные задачи
         • Пар и вода
      • ЧПУ
      + САПР
         + Механика - моделирование 2D/3D
            • AutoCAD и утилиты для AutoCAD'а
         • Строительство
         • Электроника, радио- и электротехника
   • Тестирование знаний и навыков
   + Обучающие программы
      • Музыка
   + Математика
      • Калькуляторы
      • Эмуляторы калькуляторов
   • Физика
   • Химия
   • Электроника и электротехника
   • Астрономия
   • Астрология
   • География и картография
   + Биология и медицина
      • Психология
   • История и политология
   • Лингвистика
   • Гаданье на кофейной гуще
   • Справочники разные
+ БЕЗОПАСНОСТЬ
   • Антивирусы
   • Шифры и пароли
+ ИНТЕРНЕТ И СЕТИ
   • Браузеры
   • Почтовые клиенты
   • IM-меседжеры
   • Звонилки
   • FTP
   • BBS и FIDO
   • Работа с СОM/LPT
   • LAN
   • Удалённое управление
   • Факсы
   • Разное
+ МУЛЬТИМЕДИА
   + Графика
      • Просмотр графики
      • Редакторы графики
      • Грабберы графики
      • Конвертеры
   + Звук и видео
      • Проигрыватели (плееры) аудио и видео
      • Редакторы аудио и видео
      • Грабберы (захват) аудио и видео
      • Синтез речи
      • Конвертеры
      • Кодеки
   • Разное
+ РАБОЧИЙ СТОЛ
   • Календари
   • Часы
   • Напоминалки
   • Скринсейверы
   • DEMO
   • Программы-шутки
   • Разное
+ АНДЕРГРАУНД
   + Hack tools
      • Крякеры
      • CRK-утилиты
      • Генераторы лоадеров (Loader generators)
      • Патчи, коды
   • Стеганография
   • Шестнадцатеричные редакторы
   • Вирусы
• РАЗНОЕ
• ФЕЙКИ, ПОДДЕЛКИ, ХИМЕРЫ
• --НА УДАЛЕНИЕ
• КАК ЗАГРУЖАТЬ ФАЙЛЫ НА Old-DOS



Денежная помощь

ERROR 200
ОписаниеИнформация
Маленькая резидентная программа
(размер кода - 38 байтов, резидент - 14 байтов)
- для борьбы с "runtime error 200" без перекомпиляции или применения патчей.

Подлинно крутая программа. Высший пилотаж, непобоюсь.
Однозначно - маст хэв.

Пояснение алгоритма её работы:

- При запуске эта утилита перехватывает <int 21h/2500h> (DOS SET VECTOR 0) и в дальнейшем запрещает таким образом перехват <int0> другими программами, если они используют для этого <int 21h/2500h> (DOS SET VECTOR 0). А глючная паскалевская библиотека CRT в TP7 именно этой функцией и пользуется. Следовательно, программа, в которой эта "Ошибка 200", при запуске не перехватит прерывание <int 0> (divide by zero error). Зато его перехватывает при запуске эта резидентная утиль. По приходе прерывания "divide by zerro" (int 0) эта программа увеличивает на единичку значение CX, (в котором при ошибке было изначально 37h ), и делает <iret> на адрес инструкции, которая вызвала прерывание <int 0> - это инструкция <div cx> в паскалевской библиотеке CRT. Если это увеличенное на 1 значение делителя в CX снова вызовет антипереполнение (int 0), то делитель (CX) в обработчике этой резидентной утилиты снова увеличивается на 1 и снова выполняется <iret> на инструкцию <div cx>, которая вызвала это прерывание.Так и будет это прерывание генерироваться на инструкции <div cx> в коде CRT, пока деление не пройдёт без ошибки, и тогда выполнение инициализации TP CRT пойдёт дальше уже без ошибок.
-
Очень элегантное решение проблемы "Error 200" в программах на TP7.
.
Раздел: Turbo Pascal Pentium II DIV BUG fixing
Скриншоты
Операционная система: DOS
Требования: -
Автор: -
Издатель: -

Добавил: OldCompUser (2016.10.02)
Доступные файлы - сортировка по имени и версии, времени добавления
Файлов: 2.
ФайлРазмерВыпускВерсияЯзыкКачествоЗагрузил
Ссылка ERROR200
ArcСкачать286
0.2 Кб   [Не подделка]OldCompUser
2016.10.02
Ссылка ERROR200
ArcСкачать417
0.9 Кб2016(fixed) [Не подделка]Nika
2016.10.04
Пришлось добавить 2 байта кода, чтобы не выделялась лишняя память для резидента. Старый вариант тоже включён в этот архив.
Итого - 40 байтов, резидент 15 байтов.

Пожаловаться

Комментарии
#1 Автор: SokilOff (2016.10.04 21:24)
>Очень элегантное решение проблемы "Error 200"

А если переполнение пройзойдёт в другой программе, использующей int 21h/2500h ? На выходе получим непредсказуемое поведение ?

#2 Автор: Nika (2016.10.04 23:31, изменений: 2, 2016.10.07 01:12)
Программы перехватывают <int0> практически всегда только для того, чтобы в случае ошибки при делении сообщить "ERROR - division by zero" и завершиться.
При работе рассматриваемой резидентной программы те другие программы в случае ошибок деления да, будут вести себя странно.

Поэтому в рассматриваемую резидентную программу, по-хорошему, надо было бы включить сигнатурную проверку участка кода, вызвавшего <int0>, и выполнение инкремента делителя выполнять только для фрагментов кода инициализации CRT.TPU TP7.
А для остальных программ передавать управление в их обработчик <int0>.
Но тогда нужно отслеживать состояние собственного обработчика <int0>, чтобы он был первым в цепочке обработчиков.
Это бы сильно усложнило программу, а она специально сделана в минималистичном стиле.

Решение, как в этой программе,безусловно, не является 100% корректным, хотя и имеет право на существование в принципе.
Вот что следовало бы сделать для улучшения этого алгоритма - это добавить возможность выгрузки резидента при повторном запуске.
Тогда для запуска программы на TP7 с "ошибкой 200" можно было бы написать BAT-файл - для запуска резидента, запуска проблемной программы и по её завершении повторного запуска резидента для выгрузки ранее запущенного.

Примерно так.

Имя:
E-mail:
 =
Ваш комментарий:

Рейтинг@Mail.ru
Даун - это место всеобщего прибывания!

For abuses about copyright: srzone@mail.ru
Для жалоб на авторские права: srzone@mail.ru
Float 1.0.3 Copyright © 2008-2020 StrannikRiddler. All rights reserved.
18+. Находясь на этом сайте, вы соглашаетесь с его правилами
13 queries, db time 0.001678, memory 1995.66 Kb, total time 0.031 sec