Dos fn 34h адрес статуса реентерабельности dos


Содержание

MS-DOS для программиста

1.5. Обзор прерываний MS-DOS

Операционная система MS-DOS предоставляет программе набор системных вызовов, реализованных с использованием механизма программных прерываний. Эти вызовы открывают прикладной программе доступ к системной информации, к системе консольного ввода/вывода, файловой системе, к системе управления программами и памятью, позволяют организовать обращение к драйверам периферийных устройств компьютера и т. д.

Все основные функции MS-DOS вызываются с помощью прерывания INT 21h, однако MS-DOS использует и другие прерывания:

Прерывание Описание
INT 20h Завершение работы программы
INT 25h Чтение диска с абсолютной адресацией секторов
INT 26h Запись на диск с абсолютной адресацией секторов
INT 27h Завершение работы программы с оставлением ее резидентной в памяти
INT 28h Прерывание зарезервировано для MS-DOS, используется резидентными программами
INT 2Eh Выполнение команды MS-DOS
INT 2Fh Мультиплексное прерывание, используется для программы печати print и других резидентных программ; открывает доступ к внутренним функциям и структурам MS-DOS

Функции прерывания INT 21h можно разделить на следующие группы:

  • получение системной информации;
  • символьный ввод/вывод;
  • работа с файловой системой;
  • управление программами;
  • управление памятью;
  • связь с драйверами устройств;
  • прочий системный сервис.

В данном обзоре мы кратко рассмотрим эти группы, делая акцент в основном на составе функций. Более подробная информация об использовании функций прерывания MS-DOS INT 21h (и других прерываний MS-DOS) будет приводиться в соответствующих разделах книги.

Номер функции задается при вызове прерывания INT 21h в регистре AH.

Получение системной информации

Функция 30h возвращает в регистре AX номер версии MS-DOS. Например, для версии MS-DOS 5.00 содержимое регистра AH равно 00h, регистра AL — 05h, для версии 6.2, соответственно, 14h и 06h.

Дополнительно через регистр BH функция возвращает программе ОЕМ-код фирмы-производителя операционной системы (IBM — 00, DEC — 16h, 0FFh — Microsoft и т. п.). В регистрах BL:CX после вызова функции должен находится серийный номер дистрибутива операционной системы, однако в существующих версиях MS-DOS серийный номер всегда равен нулю.

Эта информация может применяться для анализа возможности использования таких средств операционной системы, которые поддерживаются не всеми версиями MS-DOS.

Функции 2Ah и 2Ch позволяют программе узнать системную дату и время.

Есть функции, возвращающие текущий диск и текущий каталог. Номера этих функций — 19h и 47h.

Функция 2Fh позволяет программе узнать адрес текущей области DTA (Disk Transfer Area). Эта область используется, например, при поиске файлов в каталоге.

Важная информация находится в блоке PSP (Program Segment Prefix). Этот блок располагается в памяти непосредственно перед выполняющейся программой. В нем находятся, в частности, параметры, передаваемые программе при запуске. Функция 62h возвращает адрес текущего блока PSP.

Кратко перечислим некоторые другие функции, предназначенные для получения системной информации.

Номер функции Описание
35h Позволяет получить значение вектора прерывания с заданным номером
4Dh С помощью этой функции можно узнать код завершения программы
59h Предназначена для получения расширенного кода ошибки
54h Позволяет определить, используется ли проверка при записи на диск
33h Позволяет узнать, может ли пользователь прервать работу программы при помощи комбинации клавиш

Символьный ввод и вывод

Эти функции применяются для работы со всеми символьными устройствами, такими как консоль, принтер, последовательный порт. Они называются функциями стандартного ввода/вывода.

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

Приведем обзор основных функций стандартного символьного ввода/вывод в виде таблицы.

Код Назначение Описание
01h Ввод с клавиатуры Выполняется ввод символа с устройства стандартного ввода, а также эхо-вывод символа на стандартное устройство вывода. Пользователь может прервать работу программы при помощи комбинации клавиш и
06h Ввод с клавиатуры без ожидания Ввод символа с устройства стандартного ввода без ожидания, а также вывод его на устройство стандартного вывода.Комбинации клавиш и не проверяются
07h Прямой ввод с клавиатуры Ввод символа с клавиатуры.Комбинации клавиш и не проверяются
08h Ввод с клавиатуры Аналогично функции 07h, но проверяются комбинации клавиш и
02h Отобразить символ Отображаемый символ посылается на стандартное устройство вывода
09h Отобразить строку На стандартное устройство вывода символов посылается строка, в конце которой находится символ «$»
03h Ввод из последовательного порта Вводится символ из последовательного порта
04h Вывод в последовательный порт Выводится символ на последовательный порт
05h Вывод на принтер Выводится символ на принтер

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

Для вывода строки символов можно использовать функцию 09h, но отображаемая строка не может содержать символ «$», так как этот символ используется в качестве признака конца строки.

Работа с файловой системой

MS-DOS предоставляет программам обширный сервис для работы с файлами и дисками. Практически все файловые операции можно выполнять с помощью специально предназначенных для этого функций. Только в некоторых случаях (например, защита данных от копирования) приходится использовать прямое обращение к функциям BIOS или портам контроллера диска.

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

Управление программами

MS-DOS предоставляет программам возможность организовать запуск других программ или загрузку и выполнение программных оверлеев. Для этого служит функция 4Bh.

Для завершения работы программа должна также использовать одну из специальных функций MS-DOS. Функция 4Ch, завершая работу программы, позволяет передать операционной системе некоторое число, называемое кодом завершения программы. Это число может быть затем проанализировано в пакетном файле командой IF ERRORLEVEL. Если одна программа запускает другую, то первая может получить код завершения второй с помощью функции 4Dh.

Для того чтобы завершающаяся программа осталась в оперативной памяти (т. е. стала резидентной), она должна вызвать прерывание INT 27h или воспользоваться функцией 31h.

В нашей книге мы приведем различные примеры запуска программ из программ и научимся составлять резидентные программы.

Управление памятью

MS-DOS управляет распределением памяти с помощью блоков управления памятью MCB (Memory Control Block). Вся память разбивается на фрагменты различного размера, которым предшествует блок MCB, содержащий характеристики данного фрагмента (например, такие, как его размер).

Программа может динамически получать и освобождать области памяти с помощью функций 48h и 49h, соответственно. Кроме того, можно изменять размер фрагмента памяти, выделенного операционной системой программе. Это делает функция 4Ah.

Драйвер himem.sys предоставляет программе доступ к расширенной памяти, расположенной в адресном пространстве выше границы первого мегабайта. Так как в реальном или виртуальном режиме процессор не может непосредственно адресовать блоки расширенной памяти, для выполнения такой адресации необходимо пользоваться программным интерфейсом драйвера himem.sys.

Связь с драйверами устройств

Мы уже обращали ваше внимание на то, что программы не могут обращаться непосредственно к драйверам периферийных устройств. Все обращения к драйверам имеют либо неявный характер (ввод/вывод с помощью функций прерывания INT 21h), либо используют специальную функцию MS-DOS с кодом 44h. Эта функция предназначена для обмена управляющей информацией между драйвером и программой.

Другие функции

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

Команды MS DOS для проверки состояния сети

1. Необходимо использовать Командную строку ( Пуск -> Выполнить), в появившемся окне CMD à ОК или Enterв результате должно появится окно с черным фоном, это и есть командная строка MSDOS

2. Дальше вводим необходимые команды

Команды

ipconfig — команда проверяет состояние сетевых подключений, выводит на экран параметры активных сетевых подключений (Настройка протокола IP для Windows) для каждого подключения отображается

Если команду ввести с дополнительным параметром /all ( ipconfi /all ) то будут отображены дополнительные параметры сетевых подключений:

· MACфизический адрес сетевого устройства

· DNS сервера доменных имен

ping — утилита для проверки соединений в сетях на основе TCP/IP. Посылает запрос удаленному узлу (компьютеру, серверу, модему и т.д.) по протоколу ICMP и по отклику выдает результат проверки. Если соединение установлено ответ будет выглядеть так:

Если соединение не установлено то так:

Может быть и такой ответ:

В этом случае Вы допустили ошибку в адресе (как в примере ya.ry), или же такого адреса не существует вообще, или не работает DNS.

Чтобы проверить работает ли служба DNS есть команда nslookup [hostname.domaine] например:

nslookup ya.ruи выполним сразу же команду nslookup ya.ry

По результату командвидно следующее:

· наш DNS сервер — ns.stel.sebastopol.ua

· его IP адрес 195.5.36.146 (его прописывают в настройках сетевой карты, если задавать dns статически)

· и результат нашего запроса — Addresses: 77.88.21.8, 93.158.134.8, 213.180.204.8 — это IP адреса доменного имени ya.ru

Во втором случае ответ *** ns.stel.sebastopol.ua can’t find ya.ry: Non-existent domain говорит о том, что наш DNS сервер не нашел такое доменное имя ya.ry

tracert— утилита определения маршрутов следования данных в сетях TCP/IP. Применяется для выявления проблемных промежуточных узлов по маршруту следования данных из одной точки в другую, например узкое место в сети на котором теряется или ограничивается скорость.

С помощью этой команды можно определить логические кольца в локальной сети.

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

Таблицу маршрутизации на Вашем компьютере можно посмотреть командой route print

ЗАДАНИЯ ДЛЯ ВЫПОЛНЕНИЯ ПРАКТИЧЕСКОЙ РАБОТЫ

1 Установить какой тип подключения используется для подключения к Интернет.

2 При подключении к Интернет по локальной сети, просмотреть свойства подключения.

3 Работа с семьей протоколов TCP/IP.

3.1 Просмотреть свойства протоколов. Определить:

— Ethernet –адрес компьютера;

Совет. В случае если доступ к этой информации в WINDOWS закрыт администратором сети, следует воспользоваться командой IPCONFIG /ALL, которую можно запустить на выполнение с помощью команды Run/Выполнить главного меню Start/Пуск Windows. Рекомендуется также перед запуском команды IPCONFIG выполнить команду cmd.

4 Работа с браузером Internet Explorer. Настройка интерфейса.

1.1. Работа с пунктами FILE, EDIT главного меню Internet Explorer

4.1.1 Отрыть в окне IE web-страницу http://doc.sumy.ua/network.

4.1.2 С помощью пункта FILE®NEW открыть страницу http://www.sumdu.edu.ua.

4.1.3 С помощью контекстного меню открыть в новом окне IE ссылку «Сеть. Сетевые протоколы», размещенную на сайте http://doc.sumy.ua/network.

4.1.4 Сохранить содержимое страницы http://doc.sumy.ua/network в виде html-документа, текстового файла и полностью web-страницу. Выполнить сравнительный анализ сохраненных документов (рассмотреть общий объем сохраненной информации, объем текстовой информации, сохранение графики и ссылок; указать варианты дальнейшего использования полученной информации и т.п.).

4.1.5 Ознакомиться со всеми доступными свойствами документа http://www.sumdu.edu.ua.

4.1.6 Выполнить поиск текста «сетевой протокол», «сети на основе коммутаторов» на странице http://doc.sumy.ua/network.

4.2 Работа с пунктом VIEW главного меню Internet Explorer:

4.2.1 Выполнить настройку интерфейса IE: на панели инструментов разместить кнопки «Forward/Вперед», «Back/Назад», «Refresh/Обновить», «Stop/Остановить», «Favorite/Избранное», «Encoding/Перекодировка», «Search/Поиск».

4.2.2 Просмотреть html-код страницы http://www.sumdu.edu.ua. Обратить внимание на использование таблиц в дизайне сайта.

4.2.3 Изменить текущую кодировку страницы на любую другую доступную кодировку. Обратить внимание на изменение внешнего вида страницы.

4.3 Работа с пунктом FAVORITES главного меню Internet Explorer.

4.3.1 Поставить закладки на страницах http://doc.sumy.ua/network, http://www.sumdu.edu.ua и http://www.lenty.ru.

4.3.2 Выполнить пересортировку закладок. Для этого создать новые папки «Основы Интернет» и «Досуг». Поместить в папку «Основы Интернет» закладки http://doc.sumy.ua/network, http://www.sumdu.edu.ua, а в папку «Досуг» — http://www.lenty.ru.

4.4 Работа с пунктом TOOLS главного меню Internet Explorer

4.4.1 Установить в качестве домашней страницы страницу http://www.sumdu.edu.ua.

4.4.2 Ознакомиться с дополнительными возможностями браузера IE:

— запретить отображение рисунков;

— запретить воспроизведение видео- и аудио- информации;

— установить запрет на сохранение конфиденциальных сведений в папке с временными файлами требований;

— установить запрет на запуск Java-скриптов, программ ActiveX и самооткрывающихся окон.

4.4.3 Определить какие из приложений автоматически используются Windows для каждой из служб Интернет.

ОТЧЕТ О ВЫПОЛНЕНИИ РАБОТЫ

Отчетом о выполнении работы является файл с именем prwork1.doc,в котором необходимо разместить заметки, пояснения, необходимые скриншоты и выводы по каждому из пунктов задания.

Функции прерывания MS-DOS 33h

1. Функция 00h— сброс драйвера мыши. Сбрасывает (инициализирует) драйвер мыши.

Входные данные: AX = 0000H

Выходные данные:AX = состояние мыши

AX = FFFFH: драйвер мыши установлен

AX = 0000H: ошибка, драйвер мыши не установлен

BX = число кнопок мыши

Примечания: Программа инициализации выполняет следующие задачи: перемещает маркер мыши в центр экрана и стирает его изображение на экране. После разрешения вывода маркера маркер мыши по умолчанию имеет вид инверсного прямоугольника. Этот маркер всегда воспроизводится на нулевой экранной странице независимо от текущего видеорежима. Областью перемещения мыши становится весь экран. Устанавливает обработчик событий (event handler) (по умолчанию не устанавливается). Устанавливает эмуляцию светового пера (по умолчанию не устанавливается). Задает скорость перемещения маркера мыши. По умолчанию относительная скорость равно 8 микки на 8 горизонтальных элементов и 16 микки на 16 вертикальных. Задает максимальную скорость мыши (по умолчанию равна 64 микки в секунду). Микки (mickey) – это самое маленькое расстояние, которое отслеживается мышью. Оно примерно равно 1/200 дюйма.

2. Функция 01h— вывод маркера мыши. Выводит на экран маркер мыши. Этот маркер отображает любое движение мыши, перемещаемой пользователем.

Входные данные: AX = 0001H

Выходные данные: Отсутствуют

Примечания: Эта функция увеличивает на единицу значение внутреннего счетчика, который определяет, должен ли маркер мыши быть виден на экране. После инициализации драйвера мыши функцией 00H этот счетчик содержит -1 (т.е. маркер мыши не виден). Когда после обращения к функции 01H значение этого счетчика становится нулевым, маркер мыши появляется на экране. Драйвер мыши отображает перемещение мыши даже тогда, когда маркер не воспроизводится на экране. После обращения к этой функции маркер может появляться не в том месте, в каком он находился в момент удаления маркера в результате обращения к функции 00H или 02H.

3. Функция 02h — удаление маркера мыши. Удаляет маркер мыши с экрана.

Входные данные: AX = 0002H

Выходные данные: Отсутствуют

Примечания: Эта функция уменьшает на единицу значение внутреннего счетчика, который определяет, должен ли маркер мыши быть виден на экране. Если счетчик имеет значение 0, то маркер мыши воспроизводится на экране; если счетчик имеет значение -1, то маркер удаляется с экрана. Драйвер мыши отображает перемещение мыши даже тогда, когда маркер не воспроизводится на экране. После обращения к этой функции маркер может появляться не в том месте, в каком он находился в момент удаления маркера в результате обращения к функции 00H или 02H.

4. Функция 03h — чтение положения маркера/состояния кнопок. Возвращает текущее положение маркера мыши и текущее состояние кнопок мыши.

Входные данные: AX = 0003H

Выходные данные: BX = состояние кнопок мыши

Бит 0 = 1:нажата левая кнопка

Бит 1 = 1:нажата правая кнопка

Бит 2 = 1:нажата средняя кнопка

Биты 3-15: не используются

CX = координата X

DX = координата Y

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

5. Функция 04h — перемещение маркера мыши. Перемещает активный маркер мыши в указанную точку экрана.

Входные данные: AX = 004H

CX = координата X

DX = координата Y

Выходные данные: Отсутствуют

Примечания: Координаты, возвращаемые в регистрах CX и DX, являются координатами элементов изображения на виртуальном экране мыши, а не физическими координатами на реальном экране. Если указанная в обращении позиция находится за пределами диапазона перемещения маркера мыши, заданного функциями 07H и 08H, то функция корректирует координаты таким образом, что маркер остается внутри диапазона. Маркер перемещается в новую позицию даже в том случае, если он не воспроизводится на экране. После того, как воспроизведение маркера мыши снова будет разрешено, он появится в новой позиции.

6. Функция 05h — определение числа нажатий кнопки мыши. Информирует вызывающую программу о том, сколько раз была нажата указанная кнопка мыши с момента последнего обращения к функции 05H. Функция 05H также сообщает вызывающей программе координаты маркера на экране в момент последнего нажатия кнопки.

Входные данные: AX = 0005H

BX = кнопка мыши

BX = 0: левая кнопка мыши

BX = 1: правая кнопка мыши

BX = 2: средняя кнопка мыши

Выходные данные:BX = состояние всех кнопок мыши:

Бит 0 = 1: нажата левая кнопка

Бит 1 = 1: нажата правая кнопка

Бит 2 = 1: нажата средняя кнопка

Биты 3-15: не используются

CX = горизонтальная координата в момент

DX = вертикальная координата маркера в момент

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

7. Функция 06h — определение числа отпусканий кнопки мыши. Информирует вызывающую программу о том, сколько раз была отпущена указанная кнопка мыши с момента последнего обращения к функции 06H. Функция 06H также сообщает вызывающей программе координаты маркера на экране в момент последнего отпускания кнопки.

Входные данные: AX = 0006H

BX = кнопка мыши

BX = 0: левая кнопка мыши

BX = 1: правая кнопка мыши

BX = 2: средняя кнопка мыши

Выходные данные:BX = состояние всех кнопок мыши:

CX = горизонтальная координата маркера в

момент последнего отпускания кнопки.

DX = вертикальная координата маркера в момент

последнего отпускания кнопки.

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

8. Функция 07h — задание диапазона перемещения по горизонтали. Определяет диапазон перемещения маркера мыши по горизонтали. После того, как диапазон установлен, пользователь не может вывести маркер мыши за его пределы.

Илон Маск рекомендует:  Секреты разработки csp для windows создание криптографического провайдера для windows

Входные данные: AX = 0007H

CX = минимальная горизонтальная координата

DX = максимальная горизонтальная координата

Выходные данные: Отсутствуют

Примечание: Координаты, передаваемые в регистрах CX и DX, описывают положение элементов изображения на виртуальном экране мыши, а не физические координаты на реальном экране. Если в момент обращения к функции 07H маркер мыши находится за пределами устанавливаемого диапазона, то драйвер мыши автоматически перемещает его внутрь диапазона. Если значение DX меньше значения CX, то эти параметры меняются местами.

9. Функция 08h — задание диапазона перемещения мыши по вертикали. Определяет диапазон перемещения маркера мыши по вертикали. После того, как диапазон установлен, пользователь не может вывести маркер мыши за его пределы.

Входные данные: AX = 0008H

CX = минимальная вертикальная

DX = максимальная вертикальная координата

Выходные данные: Отсутствуют

Примечание: Координаты, передаваемые в регистрах CX и DX, описывают положение элементов изображения на виртуальном экране мыши, а не физические координаты на реальном экране. Если в момент обращения к функции 08H маркер мыши находится за пределами устанавливаемого диапазона, то драйвер мыши автоматически перемещает его внутрь диапазона. Если значение DX меньше значения CX, то эти параметры меняются местами.

10. Функция 09h — описание маркера мыши (в графическом режиме). Описывает внешний вид маркера мыши в графическом режиме, а также битовое поле, корректирующее элементы изображения вокруг маркера мыши.

Входные данные: AX = 0009H

BX = ширина маркера, начиная с левого края

CX = высота маркера, начиная с верхнего края

EX = адрес сегмента битового поля

DX = смещение битового поля

Выходные данные: Отсутствуют

Примечания: Битовое поле состоит из 64 байтов, из которых первые 32 являются результатом операции AND, а остальные 32 байта результат операции OR с текущими элементами изображения.

11. Функция 0ah— описание маркера мыши (в тестовом режиме). Описывает битовую маску, определяющую внешний вид маркера в текстовом режиме.

Входные данные: AX = 000AH

BX = тип маркера

BX = 0: программный

BX = 1: аппаратный

CX = маска AND (программный маркер) или

начальная линия (аппаратный маркер)

DX = маска XOR (программный маркер) или

конечная линия (аппаратный маркер)

Выходные данные: Отсутствуют.

Примечания: Если выбран программный маркер, то код символа, находящегося под маркером, и байт атрибутов этого символа логически умножаются (AND) на маску, заданную в регистре CX, а затем выполняется операция «исключающее или» (XOR) между результатом умножения и маской в регистре DX. Для байта атрибутов эти операции выполняются со старшим байтом регистров CX и DX (CH и DH), а для кода символа с младшим байтом (CL и DL). Аппаратный маркер имеет такую же форму как обычный текстовый курсор. В монохромном режиме значения начальной и конечной линий изменяются в диапазоне от 0 до 13. В цветном режиме значение линий изменяется от 0 до 7.

12. Функция 0bh — определение величины перемещения. Определяет расстояние между текущим положением мыши и положением мыши в момент последнего обращения к функции 0BH.

Входные данные: AX = 000BH

Выходные данные:CX = расстояние от последней

точки по горизонтали (в микки)

DX = расстояние от последней точки

по вертикали (в микки).

Примечания: Эти значения должны интерпретироваться как числа со знаком. Положительные значения указывают на перемещение в нижнюю или правую часть экрана, а отрицательные — в верхнюю или левую часть экрана. Расстояния выражены в микки (1 микки = 1/200 дюйма), а не в элементах изображения.

12. Функция 0fh — задание скорости маркера. Устанавливает соотношение между микки (1 микки = 1/200 дюйма) и элементами изображения на экране. Это соотношение определяет чувствительность мыши и скорость перемещения по экрану.

Входные данные: AX = 000FH

CX = число микки по горизонтали

DX = число микки по вертикали

Выходные данные: Отсутствуют.

Примечания: Значения регистров CX и DX могут изменяться в диапазоне от 1 до 32767. По умолчанию скорость задается равной 8 микки по горизонтали и 16 микки по вертикали. Таким образом, по горизонтали маркер двигается вдвое быстрее, чем по вертикали. Обращение к функции 00H (сброс драйвера мыши) отменяет любые установленные значения скорости и заменяет их значениями по умолчанию.

13. Функция 10h — область исключения. Описывает любую область экрана как область исключения. При входе в область исключения маркер мыши исчезает.

Входные данные: AX = 0010H

CX = координата X, верхний левый угол области

DX = координата Y, верхний левый угол области

SI = координата X, правый нижний угол области

DI = координата Y, правый нижний угол области

Выходные данные: Отсутствуют.

Примечания: Координаты, передаваемые в регистрах CX, DX, DI и SI описывают положение элементов изображения на виртуальном экране мыши, а не физические координаты на реальном экране. Обращение к функции 00H (сброс драйвера мыши) или к функции 01H (вывод маркера мыши) отменяет координаты области исключения.

14. Функция 13h — задание предельной скорости для удвоения скорости маркера. Эта функция задает предельное значение скорости мыши, при которых происходит удвоение скорости. Если скорость перемещения мыши превышает определенный предел, то драйвер мыши удваивает скорость маркера путем удвоения значения соотношения между микки и элементами изображения на экране.

Входные данные: AX = 0013H

DX = предельная скорость, выраженная в микки

Выходные данные: Отсутствует

Примечания: 1 микки — 1/200 дюйма. Чтобы предотвратить удвоение скорости мыши, можно установить более высокий предел. Скорость свыше 5000 микки в секунду достичь практически невозможно.

15. Функция 1ah — задание чувствительности мыши. Определяет соотношение между физическим перемещением и перемещением маркера мыши. Определяет также максимальную скорость, при которой происходит удвоение скорости мыши.

Входные данные: AX = 001AH

BX = число микки по горизонтали

CX = число микки по вертикали

DX = предельная скорость для удвоения скорости

Выходные данные: Отсутствуют.

Примечания: Значения регистров CX и DX могут изменяться от 1 до 32767. По умолчанию устанавливается 8 микки по горизонтали и 16 микки по вертикали. Таким образом, по горизонтали маркер движется вдвое быстрее, чем по вертикали. Чтобы предотвратить удвоение скорости мыши, можно установить более высокий предел. Скорость свыше 5000 микки в секунду достичь практически невозможно. Обращение к функции 00H (сброс драйвера мыши) отменяет установленные ранее значения скорости и заменяет их значениями по умолчанию.

16. Функция 1bh — определение чувствительности мыши. Возвращает параметры, установленные ранее в результате обращения к функциям 1ah,0fh или 13h.

Входные данные: AX = 001BH

Выходные данные: BX = число микки по горизонтали

CX = число микки по вертикали

DX = предельное значение скорости

для удвоения скорости мыши

17. Функция 1ch — задание интенсивности аппаратных прерываний мыши. Определяет частоту считывания аппаратным обеспечением мыши текущего положения мыши и состояния ее кнопок

Входные данные: AX = 001CH

BX = интенсивность прерываний

Бит 0: прерывание отсутствует

Бит 1: 30 прерываний в секунду

Бит 2: 50 прерываний в секунду

Бит 3: 100 прерываний в секунду

Бит 4: 200 прерываний в секунду

Бит 5-15: не используются

Выходные данные: Отсутствуют.

Примечания: Эта функция может быть использована только для подключенной к порту мыши. Если в регистре BX установлены в единицу несколько битов, то действует только самый младший. Разрешение мыши возрастает с увеличением интенсивности прерываний. Увеличение числа прерываний от мыши снижает скорость выполнения основной программы.

18. Функция 1fh — деактивизация драйвера мыши. Переводит в неактивное состояние текущий драйвер мыши и возвращает адрес программы обработки прерывания, которая использовалась для прерывания 33H.

Входные данные: AX = 001FH

Выходные данные: AX = код ошибки:

AX = FFFFH: ошибка

AX = 001FH: ошибка

ES = адрес сегмента

использовавшегося обработчика событий

BX = смещение использовавшегося обработчика

Примечания: Обращение к этой функции отключает все установленные ранее активные программы обработки драйверов мыши. Исключением является программа обработки прерывания 33H, но вызывающая программа может записать в этот вектор прерывания первоначальное значение, поскольку соответствующий адрес возвращается в регистрах ES:BX.

19. Функция 20h — активизация драйвера мыши. Активизирует драйвер мыши, отключенный ранее функцией 1FH.

Входные данные: AX = 0020H


Выходные данные: Отсутствуют.

20. Функция 21h — сброс драйвера мыши. Инициализирует драйвер мыши и запрещает маркер мыши и установленный на данный момент обработчик событий.

Входные данные: AX = 0021H

Выходные данные: AX = состояние ошибки:

AX = FFFFH: ошибка

AX = 0021H: без ошибок

BX = число кнопок мыши

Примечания: В отличие от функции 00H эта функция не выполняет полного аппаратного сброса устройства.

21. Функция 24h — определение типа мыши. Определяет тип установленной мыши и номер версии драйвера мыши.

Входные данные: AX = 0024H

Выходные данные: BH = целая часть номера версии

BL = дробная часть номера версии

CH = 1: параллельная мышь

CH = 2: последовательная мышь

CH = 3: подключенная к порту мышь

CH = 5: мышь фирмы «Хьюлетт Пакард»

CL = 2,3,4,5 или 7: номер IRQ в PC.

Примечания: Если номер версии драйвера равен, например, 6.24, то значение 6 возвращается в регистре BH, а 24 в регистре BL.

Таким образом, функции драйвера вызываются через прерывание 33h. Записав номер функции в регистр AX, результат получаем в регистрах AX, BX, CX, DX. Для генерации программного прерывания процессора 8086 можно воспользоваться библиотечной функцией языка Си int86, которая имеет следующий прототип:

int int86(int intr_num, union REGS*inregs, union REGS*outregs); — функция генерирует программное прерывание микропроцессора 8086, причем номер прерывания определяется аргументом intr_num. Перед выполнением прерывания функция копирует значения регистров из объединения inregs в сами регистры. После возврата из прерывания, функция копирует текущие значения регистров в параметр outregs.

Dos fn 34h: адрес статуса реентерабельности dos

The list of all interrupts that are currently supported by the 8086 assembler emulator.
These interrupts should be compatible will IBM PC and all generations of x86, original Intel 8086 and AMD compatible microprocessors, however Windows XP may overwrite some of the original interrupts.
Quick reference:

the short list of supported interrupts with descriptions:

INT 10h / AH = 0 — set video mode.

these video modes are supported:

00h — text mode. 40×25. 16 colors. 8 pages.

03h — text mode. 80×25. 16 colors. 8 pages.

13h — graphical mode. 40×25. 256 colors. 320×200 pixels. 1 page.

input:
CH = cursor start line (bits 0-4) and options (bits 5-7).
CL = bottom cursor line (bits 0-4).

when bit 5 of CH is set to , the cursor is visible. when bit 5 is 1, the cursor is not visible.

input:
AL = new page number (0..7).
the activated page is displayed.

input:
AL = number of lines by which to scroll (00h = clear entire window).
BH = attribute used to write blank lines at bottom of window.
CH, CL = row, column of window’s upper left corner.
DH, DL = row, column of window’s lower right corner.

INT 10h / AH = 08h — read character and attribute at cursor position.

INT 10h / AH = 09h — write character and attribute at cursor position.

input:
AL = character to display.
BH = page number.
BL = attribute.
CX = number of times to write character.

INT 10h / AH = 0Ah — write character only at cursor position.

input:
AL = character to display.
BH = page number.
CX = number of times to write character.

INT 10h / AH = 0Ch — change color for a single pixel.

example: INT 10h / AH = 0Dh — get color of a single pixel.

INT 10h / AH = 0Eh — teletype output.

this functions displays a character on the screen, advancing the cursor and scrolling the screen as necessary. the printing is always done to current active page.

example: INT 10h / AH = 13h — write string.

input:
AL = write mode:
bit 0: update cursor after writing;
bit 1: string contains attributes.
BH = page number.
BL = attribute if string contains only characters (bit 1 of AL is zero).
CX = number of characters in string (attributes are not counted).
DL,DH = column, row at which to start writing.
ES:BP points to string to be printed.

example: INT 10h / AX = 1003h — toggle intensity/blinking.

input:
BL = write mode:
: enable intensive colors.
1: enable blinking (not supported by the emulator and windows command prompt).
BH = 0 (to avoid problems on some adapters).

return:
AX = BIOS equipment list word, actually this call returns the contents of the word at 0040h:0010h.

Currently this function can be used to determine the number of installed number of floppy disk drives.

return:
AX = kilobytes of contiguous memory starting at absolute address 00000h, this call returns the contents of the word at 0040h:0013h.

Floppy drives are emulated using FLOPPY_0(..3) files.

INT 13h / AH = 00h — reset disk system.

INT 13h / AH = 02h — read disk sectors into memory.
INT 13h / AH = 03h — write disk sectors.

AL = number of sectors to read/write (must be nonzero)
CH = cylinder number (0..79).
CL = sector number (1..18).
DH = head number (0..1).
DL = drive number (0..3 , for the emulator it depends on quantity of FLOPPY_ files).
ES:BX points to data buffer.

CF set on error.
CF clear if successful.
AH = status (0 — if successful).
AL = number of sectors transferred.

Note: each sector has 512 bytes.

CF clear if successful (wait interval elapsed),
CF set on error or when wait function is already in progress.

the resolution of the wait period is 977 microseconds on many systems (1 million microseconds — 1 second).
Windows XP does not support this interrupt (always sets CF=1).

AH = BIOS scan code.
AL = ASCII character.
(if a keystroke is present, it is removed from the keyboard buffer).

ZF = 1 if keystroke is not available.
ZF = 0 if keystroke available.
AH = BIOS scan code.
AL = ASCII character.
(if a keystroke is present, it is not removed from the keyboard buffer).

Usually, the BIOS will try to read sector 1, head 0, track 0 from drive A: to 0000h:7C00h. The emulator just stops the execution, to boot from floppy drive select from the menu: ‘virtual drive’ -> ‘boot from floppy’

CX:DX = number of clock ticks since midnight.
AL = midnight counter, advanced each time midnight passes.

INT 20h — exit to operating system.

The short list of emulated MS-DOS interrupts — INT 21h

DOS file system is emulated in C:\emu8086\vdrive\x (x is a drive letter)

If no drive letter is specified and current directory is not set, then C:\emu8086\MyBuild\ path is used by default. FLOPPY_0,1,2,3 files are emulated independently from DOS file system.

For the emulator physical drive A: is this file c:\emu8086\FLOPPY_0 (for BIOS interrupts: INT 13h and boot).

For DOS interrupts (INT 21h) drive A: is emulated in this subdirectory: C:\emu8086\vdrive\a\

INT 21h / AH=1 — read character from standard input, with echo, result is stored in AL.
if there is no character in the keyboard buffer, the function waits until any key is pressed.

INT 21h / AH=2 — write character to standard output.
entry: DL = character to write, after execution AL = DL.

INT 21h / AH=5 — output character to printer.
entry: DL = character to print, after execution AL = DL.

INT 21h / AH=6 — direct console input or output.

parameters for output: DL = 0..254 (ascii code)
parameters for input: DL = 255

for output returns: AL = DL
for input returns: ZF set if no character available and AL = 00h, ZF clear if character available.
AL = character read; buffer is cleared.

INT 21h / AH=7 — character input without echo to AL.
if there is no character in the keyboard buffer, the function waits until any key is pressed.

INT 21h / AH=9 — output of a string at DS:DX. String must be terminated by ‘$‘.

INT 21h / AH=0Ah — input of a string to DS:DX, fist byte is buffer size, second byte is number of chars actually read. this function does not add ‘$’ in the end of string. to print using INT 21h / AH=9 you must set dollar character at the end of it and start printing from address DS:DX + 2.

example: the function does not allow to enter more characters than the specified buffer size.
see also int21.asm in c:\emu8086\examples

INT 21h / AH=0Bh — get input status;
returns: AL = 00h if no character available, AL = 0FFh if character is available.

INT 21h / AH=0Ch — flush keyboard buffer and read standard input.
entry: AL = number of input function to execute after flushing buffer (can be 01h,06h,07h,08h, or 0Ah — for other values the buffer is flushed but no input is attempted); other registers as appropriate for the selected input function.

INT 21h / AH= 0Eh — select default drive.

Entry: DL = new default drive (0=A:, 1=B:, etc)

Return: AL = number of potentially valid drive letters

Notes: the return value is the highest drive present.

INT 21h / AH= 19h — get current default drive.

Return: AL = drive (0=A:, 1=B:, etc)

INT 21h / AH=25h — set interrupt vector;
input: AL = interrupt number. DS:DX -> new interrupt handler.

INT 21h / AH=2Ah — get system date;
return: CX = year (1980-2099). DH = month. DL = day. AL = day of week (00h=Sunday)

INT 21h / AH=2Ch — get system time;
return: CH = hour. CL = minute. DH = second. DL = 1/100 seconds.

INT 21h / AH=35h — get interrupt vector;
entry: AL = interrupt number;
return: ES:BX -> current interrupt handler.

INT 21h / AH= 39h — make directory.
entry: DS:DX -> ASCIZ pathname; zero terminated string, for example:
the above code creates c:\emu8086\vdrive\C\mydir directory if run by the emulator.

Return: CF clear if successful AX destroyed. CF set on error AX = error code.
Note: all directories in the given path must exist except the last one.

INT 21h / AH= 3Ah — remove directory.

Entry: DS:DX -> ASCIZ pathname of directory to be removed.

CF is clear if successful, AX destroyed CF is set on error AX = error code.

Notes: directory must be empty (there should be no files inside of it).

INT 21h / AH= 3Bh — set current directory.

Entry: DS:DX -> ASCIZ pathname to become current directory (max 64 bytes).

Carry Flag is clear if successful, AX destroyed.
Carry Flag is set on error AX = error code.
Notes: even if new directory name includes a drive letter, the default drive is not changed,
only the current directory on that drive.

INT 21h / AH= 3Ch — create or truncate file.

CX = file attributes: DS:DX -> ASCIZ filename.

CF clear if successful, AX = file handle.
CF set on error AX = error code.

note: if specified file exists it is deleted without a warning.

INT 21h / AH= 3Dh — open existing file.

AL = access and sharing modes:

DS:DX -> ASCIZ filename.

CF clear if successful, AX = file handle.
CF set on error AX = error code.

note 1: file pointer is set to start of file.
note 2: file must exist.

INT 21h / AH= 3Eh — close file.

Илон Маск рекомендует:  Оптимизация в mysql

Entry: BX = file handle

CF clear if successful, AX destroyed.
CF set on error, AX = error code (06h).

INT 21h / AH= 3Fh — read from file.

BX = file handle.
CX = number of bytes to read.
DS:DX -> buffer for data.

CF is clear if successful — AX = number of bytes actually read; 0 if at EOF (end of file) before call.
CF is set on error AX = error code.

Note: data is read beginning at current file position, and the file position is updated after a successful read the returned AX may be smaller than the request in CX if a partial read occurred.

INT 21h / AH= 40h — write to file.

BX = file handle.
CX = number of bytes to write.
DS:DX -> data to write.

CF clear if successful; AX = number of bytes actually written.
CF set on error; AX = error code.

note: if CX is zero, no data is written, and the file is truncated or extended to the current position data is written beginning at the current file position, and the file position is updated after a successful write the usual cause for on return is a full disk.

INT 21h / AH= 41h — delete file (unlink).

DS:DX -> ASCIZ filename (no wildcards, but see notes).

CF clear if successful, AX destroyed. AL is the drive of deleted file (undocumented).
CF set on error AX = error code.

Note: DOS does not erase the file’s data; it merely becomes inaccessible because the FAT chain for the file is cleared deleting a file which is currently open may lead to filesystem corruption.

INT 21h / AH= 42h — SEEK — set current file position.

AL = origin of move: — start of file. 1 — current file position. 2 — end of file.
BX = file handle.
CX:DX = offset from origin of new file position.

CF clear if successful, DX:AX = new file position in bytes from start of file.
CF set on error, AX = error code.

for origins 1 and 2, the pointer may be positioned before the start of the file; no error is returned in that case, but subsequent attempts to read or write the file will produce errors. If the new position is beyond the current end of file, the file will be extended by the next write (see AH=40h).

INT 21h / AH= 47h — get current directory.

DL = drive number (00h = default, 01h = A:, etc)
DS:SI -> 64-byte buffer for ASCIZ pathname.

Carry is clear if successful
Carry is set on error, AX = error code (0Fh)

the returned path does not include a drive and the initial backslash.

INT 21h / AH=4Ch — return control to the operating system (stop program).

INT 21h / AH= 56h — rename file / move file.

DS:DX -> ASCIZ filename of existing file.
ES:DI -> ASCIZ new filename.

CF clear if successful.
CF set on error, AX = error code.

Note: allows move between directories on same logical drive only; open files should not be renamed!

mouse driver interrupts — INT 33h

INT 33h / AX=0000 — mouse ininialization. any previous mouse pointer is hidden.

if successful: AX=0FFFFh and BX=number of mouse buttons.
if failed: AX=0

example: see also: mouse.asm in examples.

INT 33h / AX=0001 — show mouse pointer.

INT 33h / AX=0002 — hide visible mouse pointer.

INT 33h / AX=0003 — get mouse position and status of its buttons.

if left button is down: BX=1
if right button is down: BX=2
if both buttons are down: BX=3
CX = x
DX = y

Click here to view the list of frequently asked questions.

IBM ?is a registered trademark of IBM Corporation.
Intel ?is a registered trademark of Intel Corporation.
AMD ?is a registered trademark of AMD Corporation.
Microsoft ?is a registered trademark of Microsoft Corporation.
All other trademarks mentioned in the emu8086.com web pages
are the property of their respective holders.

Полезные IP комманды и программы MS-DOS для работы с сетью, в т.ч. Интернет

В данном материале рассмотрим IP команды и программы MS-DOS для работы с сетью, в т.ч. Интернет. В этот список входят ipconfig, trace route, netstat, arp, route, hostname, control, whois, whosip, whoiscl, Fport и пр..

Стандартные комманды MS-DOS для работы с сетью

ipconfig

Многим пользователям Windows 98, работающим в сети знакома программа WinIPcfg . Это небольшая утилита с графическим интерфейсом, выполняющая идентичные функции ipconfig из командной строки. Пользователи Windows 2000 могут загрузить Wntipcfg.exe отсюда http://www.microsoft.com/en-us/download/details.aspx? >

ipconfig /all

Выводит всю конфигурацию всех сетевых интерфейсов имеющихся в системе.

ipconfig /displaydns

Выводит информацию о ДНС Кеше. Выводит результат только если работает/включена служба DNS Cache .

ipconfig /flushdns

Очистка ДНС Кеша. Уместно использовать только если работает/включена служба DNS Cache .

ipconfig /release

Освободить IP-адрес для указанного адаптера. Отправляет сообщение DHCPRELEASE, говорящее о том, что клиент больше не нуждается в использовании своего сетевого адреса (например, при отключении клиента)

ipconfig /renew

ipconfig /registerdns

ipconfig /setclassid

ipconfig /showclassid

Отобразить все допустимые для этого адаптера коды (IDs) DHCP -классов.

control netconnections

Отображает/выводит аплет управления сетевыми подключениями (Network Connections).

mstsc

Запуск программы для подключения к удаленному рабочему столу.

netsetup.cpl

Запуск мастера настройки сети.

netsh Winsock reset

Команда netsh winsock reset в некоторых случаях может помочь восстановить работу сети, когда уже ничего не помогает, вернее восстановить доступ к ней.

Что делает netsh winsock reset ?

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

Команда netsh winsock reset сбрасывает и выстраивает заново цепочку LSP для Winsock .

Доступны такие netsh winsock команды:

ping remotehelp.org.ua

tracert remotehelp.org.ua

nslookup remotehelp.org.ua

netstat

route

hostname

Дополнительные MS-DOS программы для работы с сетью, в т.ч. Интернет

whois

whosip

whoiscl

ipinfo.exe ipn.exe ipa.exe

Fport

IPNetInfo

Любители графического интерфейса могут заменить whois , whoiscl и whosip утилитой IPNetInfo которая доступна для загрузки сдесь http://www.nirsoft.net/utils/ipnetinfo.html

SiteShoter

Заключение

Пакеты программ Windows 2000 Resource Kit Tools, Windows Server 2003 Resource Kit Tools, Sysinternals Suite содержат множество неупомянутых здесь программ для работы с сетью (ActiveDirectory, remote management etc.) и не только, а здесь рассмотрены только более востребованные полезные IP комманды и программы MS-DOS для работы с сетью, в т.ч. Интернет.

Для более удобного использования можно добавить пути к пакетам Windows 2000 Resource Kit Tools, Windows Server 2003 Resource Kit Tools, Sysinternals Suite в переменную (не обязательно в системную) PATH, а дла одиноких программ MS-DOS whosip, whoiscl, Fport и пр. создать отдельную диру, например alonebin и так же полный путь к ней добавить в переменную (не обязательно в системную) PATH.

Тема: Настраиваем TCP/IP под DOS

Опции темы
Поиск по теме
Отображение
  • Линейный вид
  • Комбинированный вид
  • Древовидный вид

Настраиваем TCP/IP под DOS

пакетники — лежат в каталоге \batch , в архиве, ниже .
В архиве сборка под чипсет RTL8139x при подключении других сетевых карт надо помнит что \net\setup.exe пишет все в autoexec.bat.

Хотя на выходе мы будем иметь вполне нормальное TCP/IP соединение, это еще не значит что все будет легко! Из под WIN32 (подозреваю, что откуда угодно) мы будем видеть толькоNETBIOS имена, но к рассшаренным ресурсам можно подключиться через net use x: \\xxxxx\x. Или через подключение сетевого диска. Номер адаптера NETBIOS, который пишется в rkeeper6.ini для монитора, станет (у меня — становился) равным нолю.

1.0 Копируем на винт (в корень) папку NET и файл netstart.bat
Если у нас карта на чипе RTL8139x то переходим к разделу 2.2 и 3.0

2.0 Правим настройки:

2.1 В файле \net\System.ini нас интерисует раздел [network], который должен выглядеть как:

[network]
directhost=yes ;если стоит «no» (а так по умолчанию и есть), то исправить
filesharing=yes ;
printsharing=no ;
autologon=yes ;вообще-то все равно потом перелогиниваемся как надо.
computername=UNIT01 ;NETBIOS имя компа. (поменять, если надо)
lanroot=C:\NET ;место, где клиент лежит
username=UCS ;вообще-то все равно потом перелогиниваемся как надо.
workgroup=WORKGROUP ;
reconnect=yes ;
dospophotkey=N ;
lmlogon=0 ;
logondomain=WORKGROUP ;
preferredredir=full ;
autostart=full,,server ;
maxconnections=8 ;можно увеличить до 15 (если это сервер и к нему коннектится много разного)

2.2 В файле \net\protocol.ini мы будем ковырять следующий раздел:

[TCPIP]
NBSessions=6 ;НЕ ТРОГАТЬ (должно быть 6. )
DefaultGateway0=255 255 255 000 ;по фиг что ((с)кажется А.Метелица)
SubNetMask0=255 255 255 000 ;маска подсети (ВНИМНИЕ — разделитель — пробел!!)
IPAddress0=192 168 000 201 ;IP адрес точки (ВНИМНИЕ — разделитель — пробел!!)
DisableDHCP=1 ;если хочется, чтобы при загрузке искался DHCP сервер
;- ставьте 0, если адресация жесткая — то 1. По умолчанию — 0
DriverName=TCPIP$ ;
BINDINGS=RTL8139 ;
LANABASE=0 ;номер адаптера

2.3 Если интересно, можно проверить файл \net\oem0.inf:

В разделе [rtl8139_nif], следующая строка должно выглядеть так:
param=Medium,»Medium Type»,enum,»10Half,1,10Full,2,100Half,3,100Full,4″ ,0,0×30

если хочется использовать возможность автоопределения параметров сети (скорость/дуплекс), то можно написать так:
param=Medium,»Medium Type»,enum,»Auto,0,10Half,1,10Full,2,100Half,3,100 Full,4″,0,0×30

3.0 После перезагрузки, командой net можно посмотреть ресурсы, которые система подключает, отключить ненужные, подключить то что надо. Теперь их можно не поключать каждый раз в пакетнике.

Вроде все.
Г. Плетнев (Count Семенов)

Последний раз редактировалось SH; 26.03.2010 в 01:26 .

В связи с некоторыми изменениями в кассовой части R-Keeper, связанными с реализацией поддержки сети, назрела необходимость в следующем описании.
Наверное всем, кто когда-либо устанавливал поддержку протокола TCP/IP, известна проблема нехватки начальной памяти на рабочей станции. Происхоит это из-за того, что в сетевом клиенте обязательно должна быть включена поддержка Full Redirector ,который необходим для поддержки расширенных функций, в отличии от Basic Redirector, который обеспечивает только стандартные возможности, но при этом требует меньшее кол-во памяти. Также нехватка памяти может происходить из-за поддержки на кассе не только функций рабочей станции (workstation), но и сервера (server), но об этом немного ниже. В принципе выход из этой ситуации существует – это использование менеджера памяти EMM386, вместо HIMEM, тем более что в реализации DR-DOS он работает немного по-другому, нежели в MS-DOS, но полной совместимости с R-Keeper гарантировать нельзя – проблема при использовании EMM386 как раз и проявилось на одном из используемых терминалов.
Итак, что было модифицировано – библиотеки NETWORK.DLL и NBCHANEL.DLL. Эти библиотеки позволяют не использовать Full Redirector и/или функции рабочей станции (workstation), что дает возможность освободить дополнительную память, необходимую для загрузки сетевого клиента с поддержкой TCP/IP.
Что мы теряем при использовании Basic Redirector-а:
— во-первых, при использовании ДОСовского кассового сервера, касса не сможет больше самостоятельно подключать сетевые диски. Это использовалось при указании сетевых путей (\\server\menu6 и т.д.) в файле local.db. Но использование сетевых путей не всегда стабильно работало при установке менеджерской базы на Windows NT, да и к тому же есть другие средства (RKSHARE, например) для доступа к базе
-во-вторых, нельзя использовать общие сетевые принтера напрямую, но для этого тоже существует альтернатива (SPRED)
Кроме того, при загрузке сетевого клиента без поддержки workstation не будет возможности подключать сетевые ресурсы (команда net use), что также не является необходимым, особенно при использовании выделенного кассового сервера (NT)
Взять новые библиотеки можно на ftp в директории /dealers/r-keeper/tools/tcpip/kacca
Теперь несколько замечаний относительно установки и конфигурирования протокола TCP/IP на рабочих станциях.
Для установки можно воспользоваться дистрибутивом Microsoft Network Client version 3.0 for MS-DOS. В этом клиенте есть поддержка практически всего, что требуется для работы, за исключением поддержки функций сервера (server), т.е. общие ресурсы на кассе открыть нельзя (функция net share недоступна). После установки этого клиента можно воспользоваться новыми сетевыми библиотеками (NETWORK.DLL и NBCHANEL.DLL) и использовать Basic Redirector для оптимизации памяти
Взять Microsoft Network Client version 3.0 можно на ftp в директории /dealers/r-keeper/tools/tcpip/msclient. В директории два файла – install.zip (установочный дистрибутив), rtl8139.zip – сконфигурированный клиент для станций на базе Realtek 8139 (не требует инсталляции)
Возможно, более интересным вариантом является использование сетевого клиента с поддержкой TCP/IP и функций сервера, т.е. возможностью открывать общие папки на кассовой станции. Сформировать такого клиента можно на базе стандартного Microsoft Workgroup Add-On for MS-DOS (знакомый всем ADDON). Необходимо его установить и предварительно настроить. Далее необходимо скопировать в установленную директорию NET файлы из пакета Microsoft TCP/IP for Windows for Workgroups 3.11 (можно взять на ftp в директории /dealers/r-keeper/tools/tcpip/wfwtcp/wfwtcp.zip).
В autoexec.bat на кассовой станции добавляем следующие строки:
C:\NET\net initialize
C:\NET\netbind.com
C:\NET\umb.com
C:\NET\tcptsr.exe
C:\NET\tinyrfc.exe
C:\NET\nmtsr.exe
C:\NET\emsbfr.exe
C:\NET\net start
Далее необходимо модифицировать конфигурационные файлы SYSTEM.INI и PROTOCOL.INI в директории NET:
PROTOCOL.INI:
— в разделе [network.setup] находим переменную transport. Изменяем ее значение на tcpip,TCPIP , т.е. строка должна выглядеть так:
transport=tcpip,TCPIP
-в том же разделе изменяет значение переменной lana0 на RTL8139,1,tcpip (это для сетевой карты Realtek 8139), т.е. стока должна выглядеть так:
lana0=RTL8139,1,tcpip
Создаем раздел [TCPIP] со следующим содержимым:
[TCPIP]
NBSessions=6
SubNetMask0=255 255 255 0
IPAddress0=198 154 196 200
DefaultGateway0=198 154 196 89
DriverName=TCPIP$
BINDINGS=RTL8139
LANABASE=0
где указываем необходимые значения
SYSTEM.INI
В разделе [network drivers] находим переменную transport и изменяем ее значение на tcpdrv.dos,nemm.dos, т.е строка должна выглядеть так:
transport=tcpdrv.dos,nemm.dos
В разделе [network] можно ничего не менять, но есть две переменные, которые отвечают за некоторые настройки:
1. preferredredir – значение переменной отвечает за то, какой режим будет загружен – Full Redirect или Basic Redirect. По умолчанию загружается поддержка Full Redirect (значение переменной preferredredir=full) –можно изменить значение на basic для поддержки Basic Redirector и экономии памяти
2. autostart – можно указать, поддержка какого режима будет загружаться автоматически. Возможно несколько вариантов:
autostart=full – загрузка всех служб (server+workstation)
autostart=server – поддержка только служб сервера
autostart=workstation – поддержка только служб рабочей станции
Для экономии памяти можно указать autostart=server — в таком случае будет возможность открывать общий доступ к файлам и папкам кассовой станции
В итоге получаем рабочую станцию с поддержкой TCP/IP и возможностью общего доступа к ресурсам.
Остается вопрос конфигурирования станции при использовании сервера DHCP, но это, наверняка, можно реализовать с помощью дополнительных служб
©UCS, 2006

Последний раз редактировалось Admin; 24.01.2007 в 23:32 .

Можешь помочь!! у меня сетевая карта встала? она у меня встроееная была! я купил другую сетевую карту PCI. а как настроить не знаю! поможешь.

Команды MS DOS

Лабораторная работа № 13, 14, 15

Тема: Операционная система WINDOWS

Цель работы

Закрепить полученные на лекциях знания по основным теоретическим положениям и приобрести практические навыки работы в операционных системах WINDOWS и MS DOS, с операционной оболочкой NORTON COMMANDER, программами архивации информации и антивирусными программами.со стандартными программами в среде WINDOWS.

Лабораторное оборудование

Персональный компьютер на базе Pentium IV, с установленным программным обеспечением и выходом в глобальную сеть Интернет.

Основные теоретические положения

MS DOSявляется ядромWINDOWS. Но для того чтобы в WINDOWSначать работать с MS DOS или программами, написанными для MS DOS, необходимо открыть стартовое меню и выбрать строку «Сеанс MS DOS», щелкнув на этой строке мышкой. Откроется окно для работы. Или запустить программу поиска, найти программу «command.com» и запустить ее на выполнение. При этом запускается программа, которая позволяет пользователю в символьном режиме на командном языке обращаться к операционной системе, не выходя из графической операционной оболочке.

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

Команды MS DOS

Наиболее важными командами MS DOSявляются следующие:

I. Для директорий (папок):

CD NameDir –сменить директорию (перейти в директорию NameDir).

CD\ —вернуться в корневую директорию.

CD.. –подняться в верхнюю директорию.

MD NameDir –создать директориюNameDir.

DIR— просмотр текущей директории.

DIR NameDir — просмотр директории NameDir

RD NameDir –удалить директориюNameDir.

COPY CON имя файла — создание файла (после завершения создания файла необходимо нажать комбинацию клавиш «Ctrl+Z»или«F6»);

TYPE FNAME.TXT— просмотр содержимого файла;

REN OLDFNAME.TXT NEWFNAME.TXT— переименование файла;

Примечание: При работе в текущей директории указывается только имя файла— FNAME.TXT.При обращении к файлу в другой директории указывается полный путь обращения к файлу— имя диска:\директория1\ директория2\имя файла.


DEL FNAME.TXT– удаление файла.

COPY FNAME1.TXT FNAME2.TXT — копирование содержимое одного файла в другой.

COPY FNAME1.TXT+FNAME2.TXT+FNAME2.TXT NEWFNAME.TXT — копирование содержимое нескольких файлов в результирующий файл;

DISKCOPY имя диска-источника: имя диска-приемника: — копирует целиком диск-источник на диск-приемник;

Создание файла можно осуществлять, используя команду операционной системы (см.выше) или редактор MS DOS.

Операционная оболочка NORTON COMMANDERразработана фирмой Peter Norton Computing. Оболочка Norton Commander представляет собой программу, облегчающую пользователю выполнение наиболее часто используемых операций с MS DOS (например, просмотр, копирование, удаление файлов и каталогов и др.). Основным характерным внешним признаком Norton Commander является то, что информация о содержимом диска появляется на экране в прямоугольной рамке, которая называется панелью. В каждой панели может представляться разнообразная информация, интересующая пользователя, например: перечень каталогов и файлов в краткой форме; перечень каталогов и файлов в полной форме; дерево каталогов; сводная информация о диске.

На экране могут быть представлены одна или две панели. Перейти на другую панель возможно клавишей «Tab». Внизу под панелями располагается строка, в которой можно указывать команду операционной системы. Вслед за ней следует строка, в которой даны назначения функциональных клавиш:

F1 — помощь (Справочная информация.);

F2 — пользовательское меню (меню программных систем, с которыми наиболее часто работает пользователь, создается самим пользователем.);

F3 — просмотр (Просмотр файла, на который указывает курсор.);

F4 — редактирование (Редактирование, изменение файла, на который указывает курсор.);

Для создания текстового файла можно использовать комбинацию клавиш «Shift+F4».

F5 — копирование (Копирование файла, на который указывает курсор, на соседнюю панель. Для копирования группы файлов необходимо эти файлы выделить или пометить. Для этого используется клавиша «Ins» или клавиша «+» и «Enter».);

F6 — перенос или переименование (Файл, на который указывает курсор, или группа выделенных файлов переносятся на соседнюю панель.);

F7 — каталог (Создание новой директории.);

F8 — удаление (Удаляется файл, на который указывает курсор или группа помеченных файлов.);

F9 — меню настройки (Появляется верхнее меню для настройки вида панелей или самой системы Norton.);

F10 — выход из режима, заданного с помощью функциональной клавиши или из Norton.

С помощью меню NORTON COMMANDER,в которое можно войти с помощью функциональной клавиши F9, можно установит наиболее удобный вид представления информации на экране, изменить режимы работы программы, а также выполнить некоторые другие действия.

После нажатия клавиши F9 в верхней строке экрана появиться строка, содержащая пункты меню: «Left», «Files», «Commands», «Options» и «Right».

Илон Маск рекомендует:  Assigned - Функция Delphi

«Left» и «Right» – режимы ввода информации соответственно в левой и правой панелях NORTON COMMANDER. Действующие режимы отмечены галочкой. С помощью этих пунктов возможно: вывод краткой или полной информации о файлах, вывод сводной информации о каталоге и диске на другой панели, просмотр дерева каталогов, вывод файлов в алфавитном порядке и др.

«Files» – даёт возможность выполнять те же команды, которые закреплены за функциональными клавишами (F1,F9, F8 и F10).

«Commands» – позволяет выполнять часть команд NORTON COMMANDER. Например: вывод на экран дерева каталогов на диске для быстрого перехода в другой каталог, поиск файла на диске, просмотр команд введённых в командной строке MS DOS и др.

«Options» – позволяет задавать режимы работы NORTON COMMANDER. Действующие режимы отмечены галочкой. С помощью подменю возможно: выбор цветов, используемых NORTON COMMANDER, в зависимости от типа монитора, в последней строке экрана вывод напоминания о значениях функциональных клавиш, вывод панели NORTON COMMANDER в полноэкранном или в половину экрана режиме, вывод текущего времени в верхнем углу экрана и др.

Подробнее с меню NORTON COMMANDER можно ознакомиться в разделе «Дополнительные теоретические сведения».

Работая с NORTON COMMANDER можно запустить любую из утилит.

Не нашли то, что искали? Воспользуйтесь поиском:

Dos fn 34h: адрес статуса реентерабельности dos

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

Все указанные ниже манипуляции нужно проводить в командной строке, если Вы ещё не знаете как это делать, прочтите эту статью.

Список команд

Наверное самое первое чему нужно научиться, так это переходить по различным каталогам и дискам. По умолчанию у Вас будет мигать курсор на черном экране с надписью: C: Documents and Settings User> Это означает что Вы работаете с диском C, а Вам к примеру нужно перейти на диск D. Для этого пишите в командной строке D: и жмите клавишу Enter

В результате у Вас должно получиться следующее:

Узнать содержимое директории поможет команда DIR, вводите её и клавишу Enter

Теперь можно выбрать нужный каталог и перейти в него, для этого нужно ввести команду CD и название папки. К примеру на диске D есть папка contact, значит для её открытия нужно ввести:

cd contact Enter

Если Вам необходима справочная информация по определенной команде, то Вы можете написать:

HELP ИМЯ_КОМАНДЫ

Либо ещё проще, ввести команду и набрать слешь с вопросительным знаком ( /? )

Как использовать функции DOS?

23.12.2010, 14:21

Как создать корректную статическую (lib) библиотеку под MS-DOS (16 bit) из Windos (32-64 bit) или из MS-DOS?
Привет всем! Кто подскажет, как корректно создавать статические библиотеки для 16-битного режима.

Как задекларировать функции DOS? [Delphi + Asm]
Здравствуйте, как задикларировать функции DOS в DELPHI, заранее благодарю. unit Assembler; .

Как в fasm использовать сишные функции?
format PE console include ‘include\win32axp.inc’ .data cwriten dd ? hello db.

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

Вызываем функции из clib (библиотека Си) в DOS
Вобщем, сбылась мечта идиота. Теперь, нежели писать свой ввод/вывод(осoбенно всегда напрягал.

23.12.2010, 14:28 2

DOS Fn 1bH: дать информацию FAT (текущий диск)
Вход
AH = 1bH
Выход
DS:BX = адрес байта FAT ID (отражающего тип диска)
DX = всего кластеров (единиц распределения) на диске
AL = секторов на кластер
CX = байт на сектор
Описание:

возвращает информацию о размере и типе умалчиваемого диска. размер диска в байтах = (DX * AL * CX). Ищите свободную память функциями 36h Disk Free или 32h Disk Info.

Предупреждение:
Эта функция изменяет содержимое регистра DS.

DOS Fn 1cH: дать информацию FAT (любой диск)

Вход
AH = 1cH
DL = номер диска (0=текущий, 1=A, и т.д.)
Выход
DS:BX = адрес байта FAT ID (отражающего тип диска)
DX = всего кластеров (единиц распределения) на диске
AL = секторов на кластер
CX = байт на сектор
Описание:
Аналогична функции 1bH Get FAT Cur, с той разницей, что регистр DL указывает диск, для которого вы хотите получить информацию.

Dos fn 34h: адрес статуса реентерабельности dos

DOS INT 21h — DOS Function Codes

The follow abridged list of DOS interrupts has been extracted from a large list compiled by Ralf Brown. These are available on any Simtel mirror (e.g. sunsite.anu.edu.au) under the directory ms-dos/info/interNNp.zip

AH Description AH Description
01 Read character from STDIN 02 Write character to STDOUT
05 Write character to printer 06 Console Input/Output
07 Direct char read (STDIN), no echo 08 Char read from STDIN, no echo
09 Write string to STDOUT 0A Buffered input
0B Get STDIN status 0C Flush buffer for STDIN
0D Disk reset 0E Select default drive
19 Get current default drive 25 Set interrupt vector
2A Get system date 2B Set system date
2C Get system time 2D Set system time
2E Set verify flag 30 Get DOS version
35 Get Interrupt vector
36 Get free disk space 39 Create subdirectory
3A Remove subdirectory 3B Set working directory
3C Create file 3D Open file
3E Close file 3F Read file
40 Write file 41 Delete file
42 Seek file 43 Get/Set file attributes
47 Get current directory 4C Exit program
4D Get return code 54 Get verify flag
56 Rename file 57 Get/Set file date

AH = 01h — READ CHARACTER FROM STANDARD INPUT, WITH ECHO

Return: AL = character read

  • ^C/^Break are checked
  • ^P toggles the DOS-internal echo-to-printer flag
  • ^Z is not interpreted, thus not causing an EOF if input is redirected character is echoed to standard output

AH = 02h -WRITE CHARACTER TO STANDARD OUTPUT

Entry: DL = character to write

Return: AL = last character output

  • ^C/^Break are checked
  • the last character output will be the character in DL unless DL=09h on entry, in which case AL=20h as tabs are expanded to blanks
  • if standard output is redirected to a file, no error checks (write- protected, full media, etc.) are performed

AH = 05h — WRITE CHARACTER TO PRINTER

Entry: DL = character to print

  • keyboard checked for ^C/^Break
  • STDPRN is usually the first parallel port, but may be redirected under DOS 2+
  • if the printer is busy, this function will wait

SeeAlso: INT 17/AH=00h

AH = 06h — DIRECT CONSOLE OUTPUT

Entry: DL = character (except FFh)

Return: AL = character output

Notes: does not check ^C/^Break

AH = 06h — DIRECT CONSOLE INPUT

Entry: AH = 06h DL = FFh

  • ZF set if no character available and AL = 00h
  • ZF clear if character available AL = character read

  • ^C/^Break are NOT checked
  • if the returned character is 00h, the user pressed a key with an extended keycode, which will be returned by the next call of this function
  • although the return of AL=00h when no characters are available is not documented, some programs rely on this behavior

AH=07h — DIRECT CHARACTER INPUT, WITHOUT ECHO

Return: AL = character read from standard input

Notes: does not check ^C/^Break

AH = 08h — CHARACTER INPUT WITHOUT ECHO

Return: AL = character read from standard input

Notes: ^C/^Break are checked

AH = 09h — WRITE STRING TO STANDARD OUTPUT

Entry: DS:DX -> ‘$’-terminated string

Notes: ^C/^Break are checked

AH = 0Ah — BUFFERED INPUT

Return: buffer filled with user input

  • ^C/^Break are checked
  • reads from standard input

Format of DOS input buffer:

Offset Size Description
00 1 maximum characters buffer can hold
01 1 number of chars from last input which may be recalled OR number of characters actually read, excluding CR
02 n actual characters read, including the final carriage return

AH=0Bh — GET STDIN STATUS

  • AL = 00h if no character available
  • AL = FFh if character is available

Notes: ^C/^Break are checked

AH = 0Ch — FLUSH BUFFER AND READ STANDARD INPUT

  • AL = STDIN input function to execute after flushing buffer
  • other registers as appropriate for the input function

Return: as appropriate for the specified input function

Note: if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but no input is attempted

AH = 0Dh — DISK RESET

Notes: This function writes all modified disk buffers to disk, but does not update the directory information

AH = 0Eh — SELECT DEFAULT DRIVE

Entry: DL = new default drive (0=A:, 1=B:, etc)

Return: AL = number of potentially valid drive letters

Notes: the return value is the highest drive present

AH = 19h — GET CURRENT DEFAULT DRIVE

Return: AL = drive (0=A:, 1=B:, etc)

AH = 25h — SET INTERRUPT VECTOR

  • AL = interrupt number
  • DS:DX -> new interrupt handler

Notes: this function is preferred over direct modification of the interrupt vector table

AH = 2Ah — GET SYSTEM DATE

Return: CX = year (1980-2099) DH = month DL = day AL = day of week (00h=Sunday)

AH = 2Bh — SET SYSTEM DATE

Entry: CX = year (1980-2099) DH = month DL = day

  • AL = 00 successful
  • FFh invalid date, system date unchanged

Note: DOS 3.3+ also sets CMOS clock

AH = 2Ch — GET SYSTEM TIME

Return: CH = hour CL = minute DH = second DL = 1/100 seconds

Note: on most systems, the resolution of the system clock is about 5/100sec, so returned times generally do not increment by 1 on some systems, DL may always return 00h

AH = 2Dh — SET SYSTEM TIME

Entry: CH = hour CL = minute DH = second DL = 1/100 seconds

  • AL = 00h successful
  • FFh if invalid time, system time unchanged

Note: DOS 3.3+ also sets CMOS clock

AH = 2Eh — SET VERIFY FLAG

Entry: AL = new state of verify flag (00 off, 01h o)

  • default state at system boot is OFF
  • when ON, all disk writes are verified provided the device driver supports read-after-write verification

AH=30h — GET DOS VERSION

Entry: AL = what to return in BH (00h OEM number, 01h version flag)

Entry: AL = interrupt number

Return: ES:BX -> current interrupt handler

AH = 36h — GET FREE DISK SPACE

Entry: DL = drive number (0=default, 1=A:, etc)


    AX = FFFFh if inval >Notes:

  • free space on drive in bytes is AX * BX * CX
  • total space on drive in bytes is AX * CX * DX
  • «lost clusters» are cons instead

AH = 39h — «MKDIR» — CREATE SUBDIRECTORY

Entry: DS:DX -> ASCIZ pathname

  • CF clear if successful AX destroyed
  • CF set on error AX = error code (03h,05h)

  • all directories in the given path except the last must exist
  • fails if the parent directory is the root and is full
  • DOS 2.x-3.3 allow the creation of a directory sufficiently deep that it is not possible to make that directory the current directory because the path would exceed 64 characters

AH = 3Ah — «RMDIR» — REMOVE SUBDIRECTORY

Entry: DS:DX -> ASCIZ pathname of directory to be removed

  • CF clear if successful, AX destroyed
  • CF set on error AX = error code (03h,05h,06h,10h)

Notes: directory must be empty (contain only ‘.’ and ‘..’ entries)

AH = 3Bh — «CHDIR» — SET CURRENT DIRECTORY

Entry: DS:DX -> ASCIZ pathname to become current directory (max 64 bytes)

  • CF clear if successful, AX destroyed
  • CF set on error AX = error code (03h)

Notes: if new directory name includes a drive letter, the default drive is not changed, only the current directory on that drive

SeeAlso: AH=47h,AH=71h,INT 2F/AX=1105h

AH = 3Ch — «CREAT» — CREATE OR TRUNCATE FILE

  • CF clear if successful, AX = file handle
  • CF set on error AX = error code (03h,04h,05h)

Notes: if a file with the given name exists, it is truncated to zero length

AH = 3Dh — «OPEN» — OPEN EXISTING FILE

  • AL = access and sharing modes
  • DS:DX -> ASCIZ filename

  • CF clear if successful, AX = file handle
  • CF set on error AX = error code (01h,02h,03h,04h,05h,0Ch,56h)

  • file pointer is set to start of file
  • file handles which are inherited from a parent also inherit sharing and access restrictions
  • files may be opened even if given the hidden or system attributes

AH = 3Eh — «CLOSE» — CLOSE FILE

Entry: BX = file handle

  • CF clear if successful, AX destroyed
  • CF set on error, AX = error code (06h)

Note: if the file was written to, any pending disk writes are performed, the time and date stamps are set to the current time, and the directory entry is updated

AH = 3Fh — «READ» — READ FROM FILE OR DEVICE

  • BX = file handle
  • CX = number of bytes to read
  • DS:DX -> buffer for data

  • CF clear if successful — AX = number of bytes actually read (0 if at EOF before call)
  • CF set on error AX = error code (05h,06h)

  • data is read beginning at current file position, and the file position is updated after a successful read
  • the returned AX may be smaller than the request in CX if a partial read occurred
  • if reading from CON, read stops at first CR

AH=40h — «WRITE» — WRITE TO FILE OR DEVICE

  • BX = file handle
  • CX = number of bytes to write
  • DS:DX -> data to write

  • CF clear if successful -AX = number of bytes actually written
  • CF set on error — AX = error code (05h,06h)

  • DS:DX -> ASCIZ filename (no wildcards, but see notes)
  • CL = attribute mask for deletion (server call only, see notes)

  • CF clear if successful, AX destroyed (DOS 3.3) AL seems to be drive of deleted file
  • CF set on error AX = error code (02h,03h,05h)

  • (DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case the filespec must be canonical (as returned by AH=60h), and only files matching the attribute mask in CL are deleted
  • DOS does not erase the file’s data; it merely becomes inaccessible because the FAT chain for the file is cleared
  • deleting a file which is currently open may lead to filesystem corruption.

AH=42h — «LSEEK» — SET CURRENT FILE POSITION

  • AL = origin of move 00h start of file 01h current file position 02h end of file
  • BX = file handle
  • CX:DX = offset from origin of new file position

  • CF clear if successful, DX:AX = new file position in bytes from start of file
  • CF set on error, AX = error code (01h,06h)

  • for origins 01h and 02h, the pointer may be positioned before the start of the file; no error is returned in that case, but subsequent attempts at I/O will produce errors
  • if the new position is beyond the current end of file, the file will be extended by the next write (see AH=40h)

AH=43 — GET FILE ATTRIBUTES

  • CF clear if successful CX = file attributes
  • CF set on error, AX = error code (01h,02h,03h,05h)

BUG: Windows for Workgroups returns error code 05h (access denied) instead of error code 02h (file not found) when attempting to get the attributes of a nonexistent file.

AH=43 — «CHMOD» — SET FILE ATTRIBUTES

  • CF clear if successful, AX destroyed
  • CF set on error, AX = error code (01h,02h,03h,05h)

  • will not change volume label or directory attribute bits, but will change the other attribute bits of a directory
  • MS-DOS 4.01 reportedly closes the file if it is currently open

SeeAlso: AX=4300h,AX=4311h,AX=7143h,INT 2F/AX=110Eh

Bitfields for file attributes:

Bits 7 6 5 4 3 2 1
Description shareable archive directory vol. label system hidden read-only

AH = 47h — «CWD» — GET CURRENT DIRECTORY

  • DL = drive number (00h = default, 01h = A:, etc)
  • DS:SI -> 64-byte buffer for ASCIZ pathname

  • CF clear if successful
  • CF set on error, AX = error code (0Fh)

  • the returned path does not include a drive or the initial backslash
  • many Microsoft products for Windows rely on AX being 0100h on success

AH = 4Ch — «EXIT» — TERMINATE WITH RETURN CODE

Entry: AL = return code

Return: never returns

Notes: unless the process is its own parent, all open files are closed and all memory belonging to the process is freed

AH = 4Dh — GET RETURN CODE (ERRORLEVEL)


    AH = termination type (00=normal, 01h control-C abort, 02h=critical error abort, 03h terminate and stay res >Notes:

  • the word in which DOS stores the return code is cleared after being read by this function, so the return code can only be retrieved once
  • COMMAND.COM stores the return code of the last external command it executed as ERRORLEVEL

AH = 54h — GET VERIFY FLAG

Return: AL = verify flag (00h=off, 01h=on, i.e. all disk writes verified after writing)

AH = 56h — «RENAME» — RENAME FILE

  • DS:DX -> ASCIZ filename of existing file (no wildcards, but see below)
  • ES:DI -> ASCIZ new filename (no wildcards)
  • CL = attribute mask (server call only, see below)

  • CF clear if successful
  • CF set on error, AX= error code (02h,03h,05h,11h)

  • allows move between directories on same logical volume
  • this function does not set the archive attribute
  • open files should not be renamed
  • (DOS 3.0+) allows renaming of directories

AH = 57h — GET FILE’S LAST-WRITTEN DATE AND TIME

  • AL = 00h (Get attribute)
  • BX = file handle

  • CF clear if successful, CX = file’s time DX = file’s date
  • CF set on error, AX = error code (01h,06h)

Bitfields for file time:

Bits 15-11 10-5 4-0
Description hours minutes seconds

Bitfields for file date:

Bits 15-9 8-5 4-0
Description year (1980-) month day

AH = 57h — SET FILE’S LAST-WRITTEN DATE AND TIME

  • CF clear if successful
  • CF set on error AX = error code (01h,06h)

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL