Каковы процедуры в Pascal для прямого доступа к функциям MS DOS и BIOS

Обновлено: 21.11.2024

Недавно я получил старую (начало 1980-х годов) программу на Паскале, которая
изначально была написана для работы на ПК (скорее всего, под DOS). Мне
трудно компилировать две функции, перечисленные ниже.
В частности, компилятор не понимает ключевые слова INTR и
GOTOXY. Любая идея, что они делают? Если да, то как я могу
дублировать их функции с помощью CodeWarrior Pro 2 для Windows?

TYPE REGPACK = RECORD
AX,BX,CX,DX,BP,SI,DI,DS,ES,FLAGS : INTEGER;
КОНЕЦ;

РЕГИСТРЫ VAR: REGPACK;
С: СИМВОЛ;

НАЧАЛО
C := CHR(0);
ПОКА C = CHR(0) DO
НАЧАТЬ
REGISTERS.AX := 8*256;
INTR(33,РЕГИСТРЫ); В частности, компилятор не понимает ключевые слова INTR и
>GOTOXY. Любая идея, что они делают? Если да, то как я могу
>дублировать их функции с помощью CodeWarrior Pro 2 для Windows?

GOTOXY помещает текстовый курсор на экран MSDOS. Это доступно только для программ
MSDOS Поскольку в Windows нет текстовых экранов, нет команды
позиционирования текстового курсора.

INTR — это вызов системного биоса. Он доступен в Win31, но не в
32-битном режиме. У вас больше нет прямого доступа к биосу в 32-битных окнах.
Int33 - это вызов мыши, и, вероятно, он используется для получения
позиции мыши на экране. Вам придется полностью переписать код, чтобы использовать вызовы Windows
api, которые полностью отличаются от вызовов MSDOS.

Другими словами, вы не можете дублировать вызовы, вам нужно изменить код,
чтобы он был совместим с методологией Windows.

> INTR(33,РЕГИСТРЫ); ГОТОКС (0,0); Недавно я получил старую (начало 1980-х) программу на Паскале, которая
> изначально была написана для работы на ПК (скорее всего, в DOS). У меня возникли
> трудности с компиляцией двух функций, перечисленных ниже.
> В частности, компилятор не понимает ключевые слова INTR и
> GOTOXY. Любая идея, что они делают? Если да, то как я могу
> дублировать их функции с помощью CodeWarrior Pro 2 для Windows?

> TYPE REGPACK = RECORD
> AX,BX,CX,DX,BP,SI,DI,DS,ES,FLAGS : INTEGER;
> КОНЕЦ;

> РЕГИСТРЫ VAR : REGPACK;
> C : СИМВОЛ;

> Netcom — Службы онлайн-коммуникаций, Сан-Хосе, Калифорния

: INTR(33,РЕГИСТРЫ); > ГОТОКС (0,0); Используйте для установки позиции в окне DOS TEXT. X и Y являются отображаемыми
>координатами: вверху слева X=1, Y=1 и внизу справа обычно X=80,
>Y=25. GOTOXY( 0, 0 ) должен привести к ошибке, потому что он
>не отображается на экране.

кроме того, эта функция, вероятно, является худшим случаем (самым медленным способом)
замены CLRSCR, которую я когда-либо видел! ;->
Роман Грубер

"Каждая готовая, работающая программа устарела"

>GOTOXY помещает текстовый курсор на экран MSDOS. Он доступен только для программ
>MSDOS. Поскольку в Windows нет текстовых экранов, отсутствует
>команда позиционирования текстового курсора.

>Int33 — это вызов мыши, и, вероятно, он используется для получения позиции мыши

Нет. Int 33 hex, это вызов мыши, но это вызов int 33
dec (21 hex). Это прерывание выполняет множество различных действий
(от перезагрузки системы до определения времени). Я
совсем не знаком с int 21h, но мне кажется довольно странным, что для AX задано
такое высокое значение. Обычно номер подфункции вызываемого прерывания
хранится в AL, а AX устанавливается в 0. Но, как я уже сказал, я
на самом деле ничего не знаю о int 21h (33).

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

>interrupt хранится в AL, а AX установлен в 0. Но, как я уже сказал, я

К сожалению, извините: AH, конечно же, установлен на 0. :-)
---

Intr вызывает прерывание. В этом случае вызывается прерывание 21h,
подфункция 8, которая считывает ключ со стандартного ввода в регистр AL.
GotoXY помещает курсор на экран, в данном случае в верхний
левый угол.

Я бы заменил функцию и процедуру в целом. То есть
функция GETCHAR возвращает следующую нажатую клавишу, поэтому найдите
в документации CodeWarrior функцию для этого. Точно так же найдите
процедуру для очистки окна, поскольку процедура CLEAR очищает
экран.

> Недавно я получил старую (начало 1980-х) программу на Паскале, которая
> изначально была написана для работы на ПК (скорее всего, под DOS). У меня возникли
> трудности с компиляцией двух функций, перечисленных ниже.
> В частности, компилятор не понимает ключевые слова INTR и
> GOTOXY. Любая идея, что они делают? Если да, то как я могу
> дублировать их функции с помощью CodeWarrior Pro 2 для Windows?

> TYPE REGPACK = RECORD
> AX,BX,CX,DX,BP,SI,DI,DS,ES,FLAGS : INTEGER;
> КОНЕЦ;

RTKernel — это библиотека или модуль, который можно связать с прикладными программами. Он предлагает ряд функций и процедур для управления задачами, семафорами, почтовыми ящиками, прерываниями и т. д. Все задачи RTKernel выполняются в рамках одной программы. RTKernel-приложение состоит из одного EXE-файла, содержащего ядро, необходимые драйверы и все задачи. EXE-файл может быть запущен на любом компьютере под управлением DOS. Хотя приложение RTKernel поддерживает многозадачность в реальном времени, это программа для DOS.

Возможности

  • Неограниченное количество задач
  • Для каждой задачи требуется всего около 500 байт
  • Время переключения задач около 6 микросекунд (33 МГц 486)
  • Время переключения задач не зависит от количества задач
  • 64 приоритета
  • Совместное и упреждающее планирование
  • Планирование на основе событий/прерываний
  • Активация задач может быть вызвана любым аппаратным прерыванием
  • Разделение времени можно включить или отключить.
  • Изменяемая частота прерывания таймера (от 0,1 до 55 мс)
  • Измерение временных интервалов с разрешением 1 микросекунда
  • Поддержка математического сопроцессора/эмулятора
  • Двоичные, счетные и ресурсные семафоры
  • Почтовые ящики (очереди сообщений, каналы)
  • Передача сообщений (синхронная передача данных)
  • Управляемый прерываниями драйвер до 36 последовательных портов
  • Поддержка буфера FIFO семейства микросхем UART 16550
  • Драйверы для таймера, экрана, клавиатуры, принтера и IPX (локальные сети Novell)
  • Время простоя клавиатуры, жесткого диска и гибкого диска, которое можно использовать для других задач
  • Нет проблем с повторным входом в DOS
  • Приложения RTKernel можно сделать резидентными (TSR)
  • Приложения RTKernel могут выполнять другие DOS-программы с помощью EXEC
  • Специальная отладочная версия для упрощения разработки программного обеспечения
  • Поддерживает CodeView и Turbo Debugger
  • Работает на любом компьютере с DOS
  • С возможностью ПЗУ
  • Доступен полный исходный код
  • Без авторских отчислений
  • Руководство пользователя на английском или немецком языке
  • Бесплатная техническая поддержка доступна по электронной почте и телефону.

Задачи RTKernel

Задача RTKernel — это функция C/C++ или процедура Pascal без параметров. Процедуры/функции задач программируются так же, как и любые другие процедуры или функции. При инициализации программы выполняется только одна задача - основная программа, которая и составляет Главную задачу. Хотя программа содержит систему реального времени, в настоящее время она ведет себя как «обычная» последовательная программа. Основная задача может запускать дополнительные задачи с помощью вызовов API ядра. Эти задачи впоследствии выполняются параллельно с основной задачей и любыми другими задачами.

Каждая задача имеет приоритет от 1 до 64 и собственный стек. Более высокие числа указывают на более высокий приоритет. Все переменные, объявленные локальными для процедуры/функции задачи, размещаются в стеке задачи. То же самое верно для локальных переменных всех процедур, вызываемых задачей. Можно запустить несколько задач, выполняющих один и тот же код; однако каждому выделяется свой собственный стек и, следовательно, свои собственные локальные переменные.

Поскольку задачи RTKernel выполняются в рамках одной программы, общий код и общие данные реализуются автоматически. Все задачи имеют доступ к глобальным данным без ограничений. Код, используемый более чем одной задачей, находится в памяти только один раз.

Структура программы RTKernel

Общение между задачами

RTKernel предлагает три различных механизма: семафоры, почтовые ящики и передачу сообщений.

Семафоры позволяют обмениваться сигналами для активации и приостановки задач. RTKernel поддерживает счетные, двоичные и ресурсные семафоры. Семафоры ресурсов гарантируют, что приоритет задачи, занимающей ресурс, будет как минимум максимальным из приоритетов всех других задач, также требующих соответствующего ресурса (наследование приоритета). Это гарантирует, что задача с высоким приоритетом никогда не будет без необходимости заблокирована задачей с более низким приоритетом.

С помощью почтовых ящиков можно обмениваться данными между задачами. Количество записей данных, которые может хранить почтовый ящик, настраивается. Почтовые ящики особенно подходят для буферизации данных между задачами или между обработчиками прерываний и задачами. В других системах почтовые ящики часто называют очередями сообщений или каналами.

Передача сообщений служит для прямого обмена данными между двумя задачами; в частности, никакие данные или сигналы не будут буферизированы. Это представляет собой самую тесную связь между задачами, поскольку задействованные задачи синхронизируются RTKernel для обмена.

Планировщик

  • Текущая задача — это задача, выполняемая в данный момент. В любой момент времени после инициализации ядра в этом состоянии находится ровно одна задача. Если ни одна прикладная задача не готова к запуску, RTKernel активирует внутреннюю Idle Task.
  • Все задачи, готовые к выполнению, находятся в состоянии Готово.Эти задачи всегда имеют приоритет меньше или равный приоритету текущей задачи.
  • Приостановленные задачи не могут быть запущены, так как они были явно остановлены вызовом ядра Suspend. Их можно снова сделать готовыми, вызвав Resume.
  • Задачи в состоянии "Заблокировано" не могут выполняться, так как они ожидают события (например, сигнала семафора или сообщения, поступающего в почтовый ящик). Эти задачи могут быть переведены в состояние готовности только другой задачей или обработчиком прерывания.
  • Задачи, которые были приостановлены на определенный промежуток времени, находятся в состоянии "Отложено". Они будут переведены в состояние готовности автоматически обработчиком прерывания таймера RTKernel по истечении задержки.
  • Задачи, ожидающие возникновения события с тайм-аутом, находятся в состоянии Timed. Такая задача перейдет в состояние Готово либо в случае возникновения события, либо в случае истечения времени ожидания.

Задачи, ожидающие события, не потребляют процессорное время в RTKernel, поскольку они не находятся в состоянии Ready или Current.

Переходы состояния задачи

Планировщик RTKernel управляется событиями. Это не просто система разделения времени, как многие другие. Он был разработан специально для требований реального времени и придерживается следующих правил:

  • Из всех задач в состоянии "Готово" выполняется задача с наивысшим приоритетом.
  • Если ядру нужно выбрать одну из нескольких готовых задач с одинаковым приоритетом, активируется задача, которая не выполнялась дольше всех.
  • Если события ожидают несколько задач, они активируются при наступлении этого события в последовательности соответствующих им приоритетов.
  • За исключением переключений задач с временным интервалом, переключение задач выполняется только в том случае, если в противном случае было бы нарушено правило 1. Таким образом, количество переключений задач сведено к минимуму.

Поскольку эти правила строго соблюдаются, можно точно контролировать поведение задач программы. Можно использовать как совместное, так и упреждающее планирование. Для программ, требующих других алгоритмов планирования, планировщик можно временно отключить. Кроме того, переключение задач через фиксированные промежутки времени может быть принудительно выполнено с помощью дополнительного временного интервала.

Прерывания

Обработчики прерываний могут приостанавливать или активировать задачи. Этот факт квалифицирует RTKernel как «работающий в реальном времени». Обработчики прерываний могут быть полностью запрограммированы на C или Pascal. Они могут обмениваться сигналами или данными с задачами, используя семафоры или почтовые ящики. Затем при необходимости операции с семафором или почтовым ящиком могут инициировать переключение задач. Прерывания от любого оборудования могут быть обработаны; таким образом, стороннее оборудование, не поддерживаемое BIOS или DOS, поддерживается RTKernel.

RTKernel поставляется с полным исходным кодом трех обработчиков прерываний (для клавиатуры, последовательных портов и сетевых событий).

Отладка

Поскольку RTKernel полностью интегрирован в среду выполнения поддерживаемых компиляторов, все варианты Turbo Debugger и CodeView можно использовать для отладки приложений RTKernel без ограничений.

Отображение структур данных RTKernel с помощью отладчика

Для дальнейшего удобства программиста RTKernel поставляется в двух версиях. Стандартная версия оптимизирована для обеспечения минимального размера и максимальной производительности, а отладочная версия содержит дополнительный код для проверки параметров и согласованности во время выполнения. Отладочная версия распознает ошибки использования и выдает соответствующие сообщения об ошибках. Более того, Debug Version предлагает многочисленные средства отладки. Например, можно найти текущую позицию исходного кода, отобразить все занятые ресурсы и определить требования к процессорному времени для каждой задачи. Особенно мощным инструментом является Kernel Tracer, который можно использовать для записи событий ядра и приложений для последующего анализа.

Список задач RTKernel

В качестве дополнительного средства отладки RTKernel (отладочная и стандартная версии) предлагает ряд информационных функций. Например, можно отобразить список всех запущенных в данный момент задач или запросить состояние конкретной задачи. Кроме того, RTKernel ведет статистику использования стека всех задач. Полный список всех этих функций включен в демоверсию RTKernel.

Когда RTKernel обнаруживает ошибку, он отображает причину ошибки, имена задействованных задач, семафоров и почтовых ящиков, а также соответствующую позицию исходного кода.

Драйверы

RTKernel не зависит от оборудования и занимается только управлением задачами. Однако приложения реального времени, как правило, довольно интенсивно используют операции ввода-вывода; поэтому драйверы оборудования очень важны. Хотя приложения RTKernel могут без ограничений использовать драйверы устройств DOS и BIOS, драйверы оборудования, оптимизированные специально для многозадачной среды, часто обеспечивают значительно более высокую производительность. RTKernel поставляется со следующими драйверами (всегда с полным исходным кодом):

  • Модульный таймер позволяет измерять любое количество независимых временных интервалов с разрешением примерно 0,8 микросекунды. Временной интервал может составлять до 3,7 лет. Кроме того, модуль Timer может изменять частоту прерывания таймера, которая обычно работает довольно медленно и составляет 18,2 Гц.
  • RTKeybrd устанавливает собственный обработчик прерываний от клавиатуры, чтобы задачи, ожидающие ввода с клавиатуры, не потребляли процессорное время. С помощью RTKeybrd задачу можно активировать сразу после нажатия клавиши. Опрос клавиатуры не тратит процессорное время впустую.
  • Система реального времени, которую можно остановить в любой момент с помощью

Производительность

RTKernel предлагает замечательную производительность и мощность. Он поставляется с тестовой программой, которую можно использовать для измерения производительности на любом компьютере. В таблице ниже приведены некоторые результаты для трех типичных компьютеров:

td>
33 МГц
80486
20 МГц
80386
12 МГц
80286
Операция RTKernel
6 27 58 Циклическое переключение задач
10 42 89 Переключатель задач семафора
3 13 22 Сигнал семафора
2 8 13 Ожидание семафора
14 65 115 Активация задачи (Сигнал, Ожидание)
7 20 35 Сохранение данных в почтовом ящике
7 21 39 Получение данных из почтового ящика
18 63 114 Общение между задачами
24 77 150 Связь между задачами и почтовыми ящиками
Все время указано в микросекундах

Примеры программирования

Системные требования

Прежде чем можно будет запустить программу, использующую RTKernel, должны быть выполнены следующие требования:

  • На целевом компьютере должно быть доступно не менее 32 КБ ОЗУ.
  • На целевом компьютере должен быть процессор, совместимый с Intel 8086.
  • Целевой компьютер должен работать под управлением MS-DOS версии 3.0 или выше или без операционной системы. Чтобы создать приложение для работы без DOS, требуется исходный код RTKernel.
  • Turbo/Borland C/C++ (версия TC++ 1.0 и выше)
  • Microsoft C/C++ (версия 6.0 и выше)
  • Реальный режим, 16-разрядный защищенный режим и 32-разрядный защищенный режим (защищенный режим поддерживается только в Borland C/C++ версии 4.02 и выше с Borland PowerPack, работающим под DOS)
  • Turbo/Borland Pascal (версия 5.0 или выше)
  • Реальный режим и 16-битный защищенный режим

Демонстрация RTKernel

Демонстрационная версия RTKernel доступна для загрузки на странице загрузки демо-программного обеспечения.

Демоверсия RTKernel содержит интерфейс прикладной программы (API) RTKernel и все драйверы, поставляемые с RTKernel, в виде файлов заголовков C и интерфейсов модулей Pascal.

Демо также содержит четыре исполняемых программы RTKernel. Полный исходный код для этих демонстрационных программ также поставляется в версиях для Pascal и C. Эти программы служат для демонстрации простоты использования RTKernel.

Любая операционная система, которая запускается с жесткого диска, называется дисковой операционной системой (D.O.S). Это также относится к определенному семейству дисковых операционных систем, известному как MS-DOS или дисковая операционная система Microsoft. Все, что управляет и управляет аппаратным обеспечением компьютера и периферийными устройствами с контролем над программой и ее функциями, известно как операционная система. Эта операционная система, работающая на жестком диске, известна как дисковая операционная система. Впервые он был создан и представлен для IBM компанией Microsoft, известной как IBM PC DOS, в 1981 году.

Список DOS

Список DOS, выпущенных с 1981 по 1998 год, выглядит следующим образом:

Веб-разработка, языки программирования, тестирование программного обеспечения и другое

  1. IBM PC DOS — 1981 г.
  2. DR-DOS – 1988 г.
  3. ROM-DOS – 1989
  4. ПТС-ДОС – 1993 г.
  5. БЕСПЛАТНАЯ DOS — 1998 г.
  1. Apple DOS
  2. Apple Pro DOS
  3. Atari DOS
  4. Коммодор DOS
  5. ТРСДОС
  6. Амига-ДОС

Это была первая операционная система, используемая IBM-совместимыми компьютерами. Сначала он был доступен в двух разных версиях, которые обычно были одинаковыми, но продавались и контролировались под двумя разными брендами. MS-DOS была основой операционных систем Windows до Windows XP.

«PC-DOS» — это версия DOS, разработанная IBM и проданная для первых IBM-совместимых промышленных компьютеров.«MS-DOS» была версией DOS, на которую Microsoft купила права и патенты и была объединена с первыми версиями Windows. Командная строка использовалась DOS или текстовым интерфейсом, который вводил команду, разрешенную пользователями. Давая простые инструкции, такие как pwd (распечатать рабочий каталог) и cd (сменить каталог), пользователь может открывать файлы, запускать программу или просматривать файлы на жестком диске. Первоначально написанная Тимом Паттерсоном (считающимся отцом DOS) и принадлежащая Seattle Computer Products, Microsoft приобретает 86-DOS за 75 000 долларов, лицензирует то же программное обеспечение и выпускает его с IBM PC MS-DOS 1.0 в 1982 году с IBM и Microsoft. совместное предприятие.

Команды

Он работает на феномене управления функциями с помощью команд; здесь у нас есть 8 типов команд:

Обучение кибербезопасности (10 курсов, 3 проекта) 10 онлайн-курсов | 3 практических проекта | 65+ часов | Поддающийся проверке сертификат об окончании | Пожизненный доступ
4,5 (8 550 оценок)

  • Assoc: связанное расширение
  • Дерево: просмотр структуры каталогов
  • Поиск и сравнение файлов
  • Сетевые команды
  • Утилиты Windows
  • AT-команды
  • Сравнение
  • Добавить
  • Арп
  • Назначить
  • Пакетная обработка
  • Дефрагментация
  • Эдлин и многие другие

Чтобы обратиться к другим командам в ms-dos, я делюсь ссылкой, которую вы можете просмотреть позже, Computerhope.

Возможности DOS

Вот некоторые из отличительных особенностей, которые вы должны четко знать:

  • Это 16-разрядная операционная система.
  • Для управления им нельзя использовать мышь. Ввод в него осуществляется с помощью основных системных команд.
  • Максимально доступное пространство – 2 ГБ.
  • Это бесплатная ОС.
  • Он использует текстовый интерфейс и требует для работы текст и коды.
  • Он не поддерживает графический интерфейс.
  • Это однопользовательская операционная система.
  • Это система интерфейса, основанная на символах.
  • Помогает управлять файлами, например создавать, редактировать, удалять файлы и т. д.

Преимущества и недостатки

Теперь вы должны быть обучены работе с DOS; нам нужно знать преимущества и недостатки его использования.

Преимущества

Итак, следующие преимущества:

  • У нас есть прямой доступ к BIOS и базовому оборудованию.
  • Его размер будет "загружаться" намного быстрее, чем любая версия Windows; таким образом, он будет работать в системе меньшего размера.
  • Она очень легкая, поэтому у нее нет накладных расходов по сравнению с многозадачной операционной системой.
  • Это удобно для создания обходных путей для управления/администрирования системы MS и для объединения программ.

Недостатки

Помимо преимуществ, у него есть и много недостатков, которые перечислены ниже:

  • Операционная система не поддерживает многозадачность.
  • Сложный доступ к памяти при адресации более 640 МБ ОЗУ.
  • Уровнями прерывания для оборудования должны управлять мы сами.
  • Операционная система не поддерживает автоматическое упорядочивание IRQ.

Навыки

Необходимые навыки с необходимыми предварительными знаниями:

Хотя это едва ли операционная система, но она обладает широкими функциональными возможностями и ОС для работы. Это работа над феноменом делать меньше и получать больше. Это открывает большое окно в славное прошлое совместимых с IBM PC, и есть много веб-сайтов, где вы можете загрузить сотни старых, заархивированных программ DOS. Это действительно имеет большое значение, так как позволяет вам разрабатывать специальные пакетные (*.bat) файлы или программы для автоматизации задач. Интерфейс командной строки также позволял использовать команды с переключателями для взаимодействия с ресурсами ПК. Это также позволяет нам использовать недокументированные API, такие как:

Заключение

Поэтому с появлением Windows 3.0 она была близка к исчезновению. Графический интерфейс сильно подорвал использование Ms DOS. С появлением Windows 95 она использовалась для начальной загрузки, устранения неполадок и обратной совместимости со своим старым программным обеспечением, особенно с играми, и больше не выпускалась как отдельный продукт. Вот и весь обзор мисс ДОС. Итак, в конце я хотел бы сказать, что в нем есть видео-элемент экспозиции, поэтому он никогда не устареет. Так что людям, работающим над ней, всегда будет выгодно, так как она бесплатна и имеет все возможности по сравнению с платными версиями любых операционных систем, таких как IOS, Windows 10 и т. д. Кроме того, это лицензионная ОС от Microsoft, поэтому мы ей можно доверять, так как это одна из крупнейших компаний-разработчиков программного обеспечения.

Рекомендуемые статьи

Это руководство о том, что такое DOS. Здесь мы обсудили команды, необходимые навыки, преимущества и недостатки. Вы также можете просмотреть другие предлагаемые нами статьи, чтобы узнать больше –

Читайте также: