Если у кого нет, держите описалово 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 - получение полного пути и имени файла программы
Описалово 46h, 47h досовых функций (DSS v1.60 R)
Moderator: Shaos
-
- Doomed
- Posts: 413
- Joined: 11 Dec 2003 14:34
-
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
-
- Doomed
- Posts: 413
- Joined: 11 Dec 2003 14:34
На здоровьеMac Buster wrote: Спасибо!

Ниже идет поправленное описание.
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
vasil-i@yandex.ru