Описалово 46h, 47h досовых функций (DSS v1.60 R)

Компьютер "Спринтер" http://sprinter.nedopc.org

Moderator: Shaos

User avatar
Vasil Ivanov
Doomed
Posts: 413
Joined: 11 Dec 2003 14:34

Описалово 46h, 47h досовых функций (DSS v1.60 R)

Post by Vasil Ivanov »

Если у кого нет, держите описалово 46h,47h досовых функций,
появившихся в Estex версии 1.60.


46h (70) ENVIRON (Системное окружение)

входные значения:

C - 46h
B - номер подфункции:
B = 0, получение системного окружения
HL - буфер
B = 1, получить переменную окружения
HL - имя переменной
DE - буфер для значения переменной
B = 2, установить/удалить переменную окружения
HL - имя переменной и значение, разделенные
символом "=", (ПЕРЕМЕННАЯ=ЗАЧЕНИЕ)

выходные значения:

A - состояние, если CF=0
DE - указывает на конец буфера
A = 0 - переменная обнаружена
A = 0FFh - переменная не обнаружена
A - код ошибки, если CF=1



47h (71) APPINFO (Получение информации приложения)

входные значения:

C - 47h
HL - буфер данных
B - номер подфункции:
B = 0 - получение параметров командной строки
B = 1 - получение полного пути к каталогу программы
B = 2 - получение полного пути и имени файла программы
Vasil Ivanov
vasil-i@yandex.ru
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Post by Mac Buster »

Если у кого нет, держите описалово 46h,47h досовых функций,
появившихся в Estex версии 1.60.
Спасибо! :D
User avatar
Vasil Ivanov
Doomed
Posts: 413
Joined: 11 Dec 2003 14:34

Post by Vasil Ivanov »

Mac Buster wrote: Спасибо! :D
На здоровье ;). Но в брошенном описании 46h функции есть неточность.
Ниже идет поправленное описание.

46h (70) ENVIRON (Системное окружение)

входные значения:

C - 46h
B - номер подфункции:
B = 0, получение системного окружения
HL - буфер
B = 1, получить переменную окружения
HL - имя переменной
DE - буфер для значения переменной
B = 2, установить/удалить переменную окружения
HL - имя переменной и значение, разделенные символом "="
т.е. ПЕРЕМЕННАЯ=ЗНАЧЕНИЕ
В конце строки должен стоять нуль.

выходные значения:

A - состояние, если CF=0
DE - указывает на конец буфера (только для B=1)
A = 0FFh - переменная обнаружена
A = 0 - переменная не обнаружена
A - код ошибки, если CF=1

Текстовые строки имен переменных должны оканчиваться на нуль.

Формат буферов.

Подфункция "B=0".
Строка каждой переменной окружения заканчивается на нуль. В конце буфера
дополнительно стоит нуль, показывающий, что дальше переменных нет.
Пример (в асмовом варианте):

buffer: db "PATH=c:\fn;c:\zx",0
db "LASTDRV=G",0
db 0

Подфункция "B=1".
Если переменная не найдена (A=0), буфер содержит нулевой байт.
Если переменная найдена (A=0FFh), в буфер записывается значение переменной,
оканчивающееся нулем.
В обоих случаях, значение DE на выходе функции - указывает на конец буфера.
Пример (в асмовом варианте):

buffer: db 0 <- переменная не найдена
buffer: db "G",0 <- переменная найдена (пример для "LASTDRV=G")


P.S. Знает ли кто-нить, какие тэги поставить, чтобы текст оставался
форматированным (скажем асмовый листинг), а не смешивался в одну
кучу ?.
Vasil Ivanov
vasil-i@yandex.ru
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

code и quote