На здоровье
. Но в брошенном описании 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. Знает ли кто-нить, какие тэги поставить, чтобы текст оставался
форматированным (скажем асмовый листинг), а не смешивался в одну
кучу ?.