Низкоуровневое програмирование Главная - Реальный режим - Прерывания DOS - INT 21h: Сервис DOS. - Функция 30h: Дать номер версии DOS.

Функция 30h: Дать номер версии DOS.

Вход:
AH=30h
AL - вернуть производителя или флаг версии (DOS 5.0+ , более рание версии всегда возвращают производителя)

Выход:
AL = старший номер версии
AH = младший номер версии
BL,CX = Серийный номер (BL - старшая часть)
Для AL == 0:
  BH - Производитель:
      00 - IBM (Novell DOS, Caldera OpenDOS, DR-OpenDOS, and DR-DOS 7.02+ так же возвращают ноль в этом регистре)
      01 - Compaq
      02 - MS Packaged Product
      04 - AT&T
      05 - Zenith Data Sysytems (Zenith Electronics, Zenith Electronics)
      06 - Hewlett-Packard
      07 - Zenith Data Systems (ZDS, Groupe Bull) DOS 5.0+
      08 - Tandon
      09 - AST (AST Europe Ltd.)
      0Ah - Asem
      0Bh - Hantarex
      0Ch - SystemsLine
      0Dh - Packard-Bell
      0Eh - Intercomp
      0Fh - Unibit
      10h - Unidata
      16h - DEC
      17h - Olivetti DOS
      23h - Olivetti (may have been a typo, since 23 = 17h)
      28h - Texas Instruments
      29h - Toshiba
      33h - Novell (Windows/386)
      34h - MS Multimedia Systems (Windows/386)
      35h - MS Multimedia Systems (Windows/386)
      4Dh - Hewlett-Packard (HP)
      5Eh - RxDOS (Api Software & Mike Podanoffsky)
      66h - PhysTechSoft (PTS-DOS) probably Paragon Technology Systems Corporation PTS-DOS as well
      99h - General Software's Embedded DOS
      CDh - Paragon Technology Systems Corporation ("Source DOS" S/DOS 1.0+)
      EDh - зарезервированно для проектов, основанных на OpenDOS/DR-DOS
      EEh - DR DOS
      EFh - Novell DOS (версия 7 передаёт в этом регистре 0)
      FDh - FreeDOS
      FFh - Microsoft, Phoenix (официально не определён)
Для AL == 1:
  бит 3 регистра BH показывает, находится ли DOS в ROM (если установлен - то да), остальные биты зарезервированны

Примечание:
Для DOS 2.0 и выше. Для более ранних вресий в AL возвращается 0.
Большинство версий DOS устанавливают серийный номер в ноль
Реализация DOS в OS/2 1.x возвращает AL равный 0Ah
        OS/2 2.x : AL = 14h
        OS/2 Warp 3 : AL = 14h, AH = 1Eh
        OS/2 Warp 4 : AL = 14h, AH = 28h
DOS 4.01 и 4.02 определяются как 4.0. Используйте функцию 87h что бы уточнить, какя именно это версия.
IBM DOS версии 6.1 определяется как DOS 6.0. Используйте байт производителя, что бы узнать, что это за версия (IBM никогда не выпускала версию 6.0)
Так же следует различать IBM DOS 7.0 и DOS 7.0 входящий в стостав Windows95.
DOS 6.21 определяется как DOS 6.20
Windows 95 сообщает версию DOS 7.0 , а Windows 95 OSR2 и OSR2.5 (также называемые в народе как Windows 96 и Window 97) сообщают версию 7.10
DR DOS версий 5.0 и 6.0 сообщают версию 3.31.
Novell DOS 7, OpenDOS 7.01, DR-OpenDOS 7.02, DR-DOS 7.02, DR-DOS 7.03 определя.тся как IBM DOS 6.0 ( т.е. соответствует версии IBM DOS 6.10). DR DOS можно отличить от IBM PC-DOS с помощью подфункции 52h функции 44h.
Heiko Goeman's Advanced WinDOS 2.10/2.11/2.21 определяется как IBM DOS 5.0
CCI Multiuser DOS вплоть до версии "CCI Multiuser DOS 7.22 Gold" определяются как DOS 3.31
DR DOS 3.31, 3.32, 3.33, 3.34, 3.35, 3.40, 3.41, 5.0, 6.0 и DR PalmDOS/NetWare PalmDOS 1.0 так же определяются как DOS 3.31
DR DOS версий "Panther" BETA 1 и "StarTrek" определяются как DOS 5.0
MS-DOS 3.30 и Compaq MS-DOS 3.31 ошибочно возвращают ноль в байте изготовителя.
Номер версии, возвращаемый этой функции может быть изменён программой SETVER, входящей в стандартный комплект поставки многих дистрибутивов DOS. Для уточнения номера версии рекомендуется использовать подфункцию 6 функции 33h.