И опять память на 286 (UMB, HMA)

Описания, советы, ремонт, эксплуатация старых IBM PC-совместимых ПК
Аватара пользователя
MaximDL
Advanced Member
Сообщения: 813
Зарегистрирован: 25.05.2015,22:26
Откуда: Москва

И опять память на 286

Сообщение MaximDL » 06.08.2018,18:46

UMB, HMA

Я долго пытался разобраться, как оно работает, но опять запутался.

1) Допустим есть 286 (suntac,vlsi) с 1 мб памяти. Стоит dos 5. В конфиге dos=high, то есть он загружает ядро в HMA. Но в вики написано:
"In DOS memory management, the high memory area (HMA) is the RAM area consisting of the first 65520 bytes above the one megabyte in an IBM AT or compatible computer"
Написано, что HMA находится за 1мб памяти, то есть уже в 2-м мегабайте. Но на компе 1 мб, как тогда загружается дос в hma?

2) Есть UMB память, обычно 64кб. В ноуте toshiba t3200, который поддерживает только ems, но не xms, есть драйвер, который преобразует его бесполезную ems в 64 кб UBM, и туда я загружал драйвера.
Я хотел провернуть то же самое на материнках suntac или vlsi, но для них не нашел UMB драйвера. Нашел только стандартный какой-то, который не работает, и еще от материнки NEAT-286, который тоже не подошел. Есть ли возможность воспользоваться как-то UMB на этих материнках?

3) Допустим, на 286 обычной получилось организовать UMB, тогда HMA тоже останется? И будет 640+UMB+HMA?

Аватара пользователя
wolfy123
Advanced Member
Сообщения: 604
Зарегистрирован: 13.02.2017,11:25
Откуда: Великий Новгород

Сообщение wolfy123 » 06.08.2018,19:14

Я в свое время когда настраивал 286 на NEAT чипсете, прописывал так:
DOS=HIGH,UMB
LOADHIGH = или LH = [имя драйвера]
В итоге оптимизации было примерно 620 кб свободной памяти для запуска программ.
Но драйвер был родной который шел на дискете с материнской платой...

Да, должно быть и HMA, и UMB, причем UMB может быть несколько шт...

Аватара пользователя
DOS Logic
Advanced Member
Сообщения: 5849
Зарегистрирован: 01.07.2006,13:32
Откуда: Украина. Ивано-Франковск
Контактная информация:

Вклад в сообщество

Сообщение DOS Logic » 06.08.2018,19:52

Вообще не понимаю какой там надо драйвер от платы

Все работало на стандартных дровах от дос 6,22 а именно himem.sys
в конфиге все пишем как написал wolfy123

dos=high, umb
loadhigh = c:\dos\himem.sys

Аватара пользователя
MaximDL
Advanced Member
Сообщения: 813
Зарегистрирован: 25.05.2015,22:26
Откуда: Москва

Сообщение MaximDL » 06.08.2018,21:14

Стандартный драйвер не дает же на 286 UMB память, только HMA для загрузки доса туда. Но я так и не понял где находится HMA, если памяти только 1мб.

Аватара пользователя
uav1606
Advanced Member
Сообщения: 5969
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество

Сообщение uav1606 » 06.08.2018,22:01

Maxim-dolg, HMA - это такой "хак" - из-за особенностей адресации x86 можно на 286+ в реальном режиме получить доступ к примерно 64 КБ памяти выше первого мегабайта. Если у Вас только 1 МБ, то, возможно, 384 КБ выше стандартных 640 КБ у Вас переадресуются аппаратно как раз выше 1 МБ, отсюда и HMA.

То есть получается схема:

1. 640 КБ
2. 384 КБ - BIOS, видеопамять и т.п.
3. Ещё 384 КБ extended memory, взятых из предыдущей области (или хотя бы те 64 КБ).

Т.е. физически они находятся ниже 1 МБ, но "видятся" выше.

UMB далеко не везде на 286-х можно получить, надо перебирать разные драйверы и программы для этого...

Аватара пользователя
MaximDL
Advanced Member
Сообщения: 813
Зарегистрирован: 25.05.2015,22:26
Откуда: Москва

Сообщение MaximDL » 06.08.2018,22:32

Окей, HMA и UMB находятся в пределах 384 кб. Но тогда они должны не пересекаться и занимать разные куски памяти. Тогда вопрос, в какой зоне (блоке) какая память будет находиться:
IBM PC, PC/XT, 3270 PC and PCjr memory blocks
0-block 1st 64 KB Ordinary user memory to 64 KB (low memory area)
1-block 2nd 64 KB Ordinary user memory to 128 KB
2-block 3rd 64 KB Ordinary user memory to 192 KB
3-block 4th 64 KB Ordinary user memory to 256 KB
4-block 5th 64 KB Ordinary user memory to 320 KB
5-block 6th 64 KB Ordinary user memory to 384 KB
6-block 7th 64 KB Ordinary user memory to 448 KB
7-block 8th 64 KB Ordinary user memory to 512 KB
8-block 9th 64 KB Ordinary user memory to 576 KB
9-block 10th 64 KB Ordinary user memory to 640 KB
A-block 11th 64 KB Extended video memory (EGA)
B-block 12th 64 KB Standard video memory (MDA/CGA)
C-block 13th 64 KB ROM expansion (XT, EGA, 3270 PC)
D-block 14th 64 KB other use (PCjr cartridges, LIM EMS)
E-block 15th 64 KB other use (PCjr cartridges, LIM EMS)
F-block 16th 64 KB System ROM-BIOS and ROM-BASIC

Аватара пользователя
uav1606
Advanced Member
Сообщения: 5969
Зарегистрирован: 16.01.2008,22:04
Откуда: Енакиево
Контактная информация:

Вклад в сообщество

Сообщение uav1606 » 06.08.2018,22:42

UMB, например, может находится в блоках D и E - они обычно не заняты. Туда же обычно проецируются окна EMS. А HMA тут нет, потому что тут только первый мегабайт.
Многие материнки для 286 и выше умеют "перемещать" память из области 640 КБ - 1024 КБ выше, т.к. в этой исходной зоне она всё равно обычно недоступна и не используется.
Т.е. получается "как бы" 1408 КБ памяти, где в области 640 КБ - 1024 КБ как таковой ОЗУ нет - только расширения BIOS, видеопамять и "дыры".

Аватара пользователя
MaximDL
Advanced Member
Сообщения: 813
Зарегистрирован: 25.05.2015,22:26
Откуда: Москва

Сообщение MaximDL » 06.08.2018,22:57

Понятно. Мне бы драйвер UMB какой для suntac/vlsi, может кто-то писал такой сам? Пока что протестирую то, что нашел.

Bobo
Advanced Member
Сообщения: 9537
Зарегистрирован: 16.08.2007,11:42
Откуда: СПб

Вклад в сообщество

Сообщение Bobo » 06.08.2018,23:15

да пожалуйста
Вложения
SUN-EMS.ZIP
(65.29 КБ) 282 скачивания
Xeon E5-2670v2/32 Gb, Amiga А4000Т

Аватара пользователя
MaximDL
Advanced Member
Сообщения: 813
Зарегистрирован: 25.05.2015,22:26
Откуда: Москва

Сообщение MaximDL » 06.08.2018,23:26

Это драйвер EMS, я его уже пробовал. EMS мне не надо, но кстати у меня почему-то с этим драйвером в 5 досе показывало доступно EMS 0кб, может дос не тот, но это не важно.

Bobo
Advanced Member
Сообщения: 9537
Зарегистрирован: 16.08.2007,11:42
Откуда: СПб

Вклад в сообщество

Сообщение Bobo » 06.08.2018,23:27

Maxim-dolg а UMB и есть EMS (то есть UMB появляется при наличии EMS драйвера и не иначе)

как-то так в общем
easyjohn писал(а):Попробовал еще три разных менеджера UMB - не работают на моей матери. Надо было 286 на NEAT чипсете брать, его все умеют.

Победил чере драйвер UMBEMS.SYS из комплекта pc-dos (работает в ms dos 6.22).
С помощью его мне удалось получить 64кб UMB.

Сначала грузится himem.sys, потом менеджер EMM (emm286.exe или в моем случае ht12mm.sys), после чего загружается UMBEMM.SYS и конвертирует всю EMM в UMB.
читайте мануал, играйте с джамперами


ЗЫ Только зачем все это? если himem работает то пусть и грузит ядро в верхнюю память
Xeon E5-2670v2/32 Gb, Amiga А4000Т

Ответить