суть в следующем: я, да именно я. написал этот код примерно 20 лет назад. на борланд паскале 7.0.
смысл этого кода как и следует из названия процедуры определить установлена ли windows 95 и\или выше..
вопрос: как и почему это работало тогда, а вот в досбоксе неработает?
код:
Function DetectWindows : Boolean;
var
r : registers;
begin
R.AX:=$1600;
Intr($2F,r);
if R.AL=0 then DetectWindows:=False
else DetectWindows:=True;
end;
вот мне этот прерывание то и интересно 0х1600.. откуда дос то знает что там над ней запущенно? чего там должно лежать и как это читать.. вот Rsa97 ссылку скинул, почитаю, спасибо..
как и почему это работало тогда, а вот в досбоксе неработает?
int 2f -- это multiplex interrupt, портал к дополнениям выполняющимся вокруг DOS. Функция 0x1600 -- это конкретно тест "имеются ли в наличии сервисы windows", см. Почему это должно работать в досбоксе, там же нет виндовых сервисов?