User Tag List

Страница 22 из 62 ПерваяПервая ... 181920212223242526 ... ПоследняяПоследняя
Показано с 211 по 220 из 656

Тема: [Поиск 2] Подготовка к сборке платы. Вопросы

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    29.12.2014
    Адрес
    г. Санкт-Петербург
    Сообщений
    36
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    други - я сделал вам утилитку для RTC

    https://1drv.ms/f/s!AtVVJP_WQCJu8G2-Ic1hCw8wHd5w

    наберите p2rtc help для опций

    если нужно поставить в досе время из цмоса просто ставите ее в autoexec вот так

    p2rtc sync

    это я быстро счас наваял на днях расширю ее всяким

    вопрос действительно интересный у меня PCDOS 6.30

    при запуске она не берет время из ртц

    но если потом сказать тайм и поставить новое время оно пишется в РТЦ!! о как

    возможно дело в настройках 24 часа против 12 или что то такое - режимов отличных от станадртых для PC AT

    я разберусь на днях думаю - по идее можно сделать кошерный биос и будет все как надо тк чип и порты одинаковые

    ну а пока вот написал утилитку и она у меня синхронизирует и дату и время - проверьте и скажите как у вас плз? работает ли и интересно что выдает в карте памяти в зависимости от того как у вас забиты банки
    Последний раз редактировалось medvdv; 17.10.2017 в 01:08.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    07.12.2015
    Адрес
    г. Винница, Украина
    Сообщений
    271
    Спасибо Благодарностей отдано 
    44
    Спасибо Благодарностей получено 
    34
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Tronix, я как-то смотрел, у меня ДОС подхватывает установленную дату в БИОСе безо-всяких утилит. Время не хочет.
    Новодел "Поиск-2" + VGA Realtek + XT-IDE (3.2Gb) + ISA Fdd & Com (5.25", 3.5") + SoundBlaster Pro
    Бложик

  4. #3

    Регистрация
    07.12.2015
    Адрес
    г. Винница, Украина
    Сообщений
    271
    Спасибо Благодарностей отдано 
    44
    Спасибо Благодарностей получено 
    34
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В ближайшее время гляну. Интересно еще, почему CheckIt говорит, что CMOS'а нету. Подкорявить бы БИОС, чтобы соответствовал стандартам...
    А решить проблему y2k - это вообще мечта
    Последний раз редактировалось Haper; 17.10.2017 в 06:54.
    Новодел "Поиск-2" + VGA Realtek + XT-IDE (3.2Gb) + ISA Fdd & Com (5.25", 3.5") + SoundBlaster Pro
    Бложик

  5. #4

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Haper Посмотреть сообщение
    В ближайшее время гляну. Интересно еще, почему CheckIt говорит, что CMOS'а нету.
    Это кстати очень интересный вопрос. Пробовал менять в BIOS по адресу FFFFh:FFFEh индификатор машины на AT (0xFC), а так же в таблице, которую возвращает функция 0Ch прерывания 15h значения на FCh 01h 00h (IBM AT) - checkit побоку ваще. Нет CMOS и все тут. И machine class - 8086 XT. Как он ее определяет - хз. В то же время PC Doctor позволяет редактировать CMOS, но ругается на неверную контрольную сумму.

    И ни дата, ни время у меня не устанавливается согласно RTC. Хотя дата ну полюбому должна - дос ее из INT 1Ah читает. Да и время должно, так как в BIOS они устанавливают сис тики согласно RTC. Бред какой-то.

  6. #5

    Регистрация
    07.12.2015
    Адрес
    г. Винница, Украина
    Сообщений
    271
    Спасибо Благодарностей отдано 
    44
    Спасибо Благодарностей получено 
    34
    Поблагодарили
    28 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Tronix Посмотреть сообщение
    Нет CMOS и все тут. И machine class - 8086 XT.
    Первое, что приходит в голову: определяет (как - хз) машину как XT, и считает, что у нее априори нету CMOS?
    Новодел "Поиск-2" + VGA Realtek + XT-IDE (3.2Gb) + ISA Fdd & Com (5.25", 3.5") + SoundBlaster Pro
    Бложик

  7. #6

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Так, подебажил немного и со временем стало понятно. Они запихнули вызов процедуры установки сис тиков в зависимости от RTC (SET_TOD) в обработчик INT 19H. Но фишка вся в том, что XT-IDE заменяет INT 19H на свой собственный. И когда основной биос просканил add-ROM расширения и загрузил их (XT-IDE BIOS), то в конце он вызывает INT 19H. Только там уже INT 19H не Поисковый, а XT-IDE'шный. Поэтому процедура SET_TOD никогда не вызывается. Поэтому с дискетой без XT-IDE время будет работать. Пофиксить имхо легко - нужно перенести вызов функции SET_TOD из обработчика INT 19H куда-нибудь повыше, например перед вызовом INT 19H.

    Но с датой то что не так? Вот это вообще загадка на миллион. Пойду дебажить дальше.

  8. #7

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну с датой вроде тоже немного прояснилось. DOS пользует функцию 04h прерывания 1ah для чтения даты. В CH должно вернуться столетие в BCD. Поисковый BIOS возвращает там 0xFF. DOS с такого расклада офигевает, потому как 0xFF нифига не валидное число в BCD, и уходит на ошибку, то есть устанавливает дату на свою дефолтную. Почему Поиск возвращает там 0xFF? Да хрен его знает. В обработчике Int 1Ah он честно возвращает значение столетия из ячейки 0x32h CMOS. Но большой вопрос - а не пишет ли он в эту ячейку свою карту дефектов RAM, и вообще, инициализирует ее хоть как-нибудь? Честно говоря, все сорцы BIOS (2.1) напоминают урывками нахватанные где-то куски кода, часть от Поиск-1, часть от сорцов IBM AT, часть еще откуда-то, кое как слепленные в нечто целое по быстрому, при этом разные куски разбросаны по разным файлам. Хочется взять и сжечь. Разбираться в этом совершенно не хочется.
    Фиксится так же просто и беспощадно, в лучших традициях этого BIOS - в функции 04 прерывания Int 1Ah в регистре CH всегда возвращать 0x20h. Тем самым решается проблема 2000 года, так как год не может быть никакой другой, корме 20xx -))

    - - - Добавлено - - -

    Вообщем на скорую руку подправил BIOS v2.6 по вышеописанным методам. Должен теперь в ДОС аутоматически брать время/дату из RTC. Еще поправлен класс машины на FC (IBM AT) чтоб некоторые программы все-таки позволяли работать с CMOS. Другое остальное ничо не трогал, все как в оригинальной версии v2.6.
    Вложения Вложения
    Последний раз редактировалось Tronix; 18.10.2017 в 10:37.

  9. #8

    Регистрация
    29.12.2014
    Адрес
    г. Санкт-Петербург
    Сообщений
    36
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    посмотри мою утилитку (выше ссылка) она выдает дамп цмоса и карту установленой памяти
    в пустых банках будет FF все верно вот он оттуда его и берет или 00 если память есть

    с 19h по 29h ячейки

    а в 32h там вообще мусор уже может быть

    кстати в доке той есть ошибки относительно того как конфиг в цмосе лежит но я уже разобрался если надо что как

    и все верно про биос - как я и писал выше когда смотрел исходники биос собран из кусков методом копипаста кем то без царя в голове - совершенно точно

    давайте всетаки сделаем нормальный скажем анон биос 3 - уберем из него все лишнее + добавим цмос по ат стандарту по возможности и будет классно

    алгоритм инициализации памяти понятен я могу тебе расписать его а в остальном анон биос сойдет главное вот только функции часов нормально добавить

    кстати так анон 8 кб то можно хт-иде прям туда зашить как варик перед ним? счас в поиске какой то кривой мфм биос есть с настройками на 5 винтов

    правда надо еще зашить норм флоповый биос в аноне 1-44 кажыс не поддерживал?
    Последний раз редактировалось medvdv; 18.10.2017 в 01:55.

  10. #9

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    261
    Поблагодарили
    125 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от medvdv Посмотреть сообщение
    алгоритм инициализации памяти понятен я могу тебе расписать
    Я с памятью так и не вкурил с этими портами 0x0E, 0x0F. Распиши, если не сложно.

  11. #10

    Регистрация
    29.12.2014
    Адрес
    г. Санкт-Петербург
    Сообщений
    36
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Tronix

    Итак есть следующие регистры

    0xF0 - запись и чтение из SRAM перекодировки логического адреса в физический
    0xE0 - логический адрес для которого мы будем писать или читать физический из 0xF0 - те адрес в этой SRAM

    SRAM из 256 ячеек по байту

    она транслирует постранично 2 мб логическое пространство в 2мб физическое, размер страницы 16кб

    те там хранятся соответственно 8 старших бит физического адреса памяти

    [ ADDRMEM21 | ADDRMEM20 .. | ADDRMEM14 ]

    Если мы хотим изменить трансляцию адреса - то 0xE0 идет на адресные линии SRAM а 0xF0 читает/пишет содержимое
    Соответственно пишем в 0xE0 логический адрес а потом читаем/пишем в 0xF0 соответствующий ему физический - и там и там старшие 8 бит

    Кроме того для самого проца память видна только до первых 640 кб этого логического пространства
    а все сверх 640кб мапится через 4 страницы по 16 кб
    они идут подряд по адресам D0000 D4000 D8000 DC000

    И таким образом постраничный аппаратный EMS работает так:

    последнее что записали в 0xE0 идет как старшая часть ЛОГИЧЕСКОГО адреса когда идет доступ к D0000
    в 0xE1 доступ к D4000
    в 0xE2 доступ к D8000
    в 0xE3 доступ к DС000

    Т.е. для каждого окна мы выбираем 16 кб ЛОГИЧЕСКУЮ страницу из 2-х мегабайт любую
    которая будет видна в этом окне.

    И потом еще она будет транслирована в ФИЗИЧЕСКУЮ по таблице из SRAM

    Все физическое пространство памяти - тоже 2 мегабайта
    Там 4 банка по 512 килобайт они идут подряд в физическом пространстве адресов
    В каждом банке получается может стоять физически 512 или 128 или ничего
    И это надо проверить при тесте

    А точнее можно проверить все - в том числе просто не учитывать испорченные страницы DRAM - что кстати круто! Если драм где то испортилась - у тебя просто на 16КБ меньше памяти, ничего не надо перепаивать и никаких парити чеков и тд

    Те мы просто перебираем все 256 физических страниц по 16 килобайт
    тестим каждую и если она работает и без ошибок добавляем ее следующей в логическое адресное пространство

    В конце мы знаем сколько у нас рабочих 16 кб страниц и значит объем рабочей памяти

    Короче, исходную инициализацию делаем дословно так

    Код:
    uint8_t log_page = 0;
    uint8_t phys_page = 0;
    uint16_t memory_size_kb = 0;
    
    do {
    	outportb(0xE0, log_page);
    	outportb(0xF0, phys_page);
    	if (OK == test_mem(0xD0000,0x4000)) {
    		memory_size_kb += 16;
    		++ log_page;
    		printf(“TEST MEMORY %d KB OK\r”, memory_size_kb);
    	}  else 
    		mark_unworking_page_bit_in_CMOS(phys_page);
    
    } while(++phys_page);
    и на выходе у нас:

    1 - размер доступной памяти в memory_size_kb
    2 - правильный маппинг по любому даже если ставить микрухи не с нулевого банка
    3 - битовая карта нерабочих страниц

    Интересно что для какой то цели это пишется в CMOS RAM в виде карты из 16 байт где каждый бит получается есть ДВЕ (почему то) страницы.
    если он 1 - там нет памяти или она битая а если 0 - есть память и все хорошо.

    Видимо это пишется для EMS драйвера чтобы ему заново не проверять память?

    Но реально ему было бы достаточно номера максимальной рабочей логической страницы и того факта что при POST они были правильно замаплены в физические. Вобщем странно. Наверное при горячем сбросе это используется или еще как?

    Кроме того в CMOS есть бит который говорит не тестить память а типа брать маппинг из CMOS “фабричный” те можно записать туда что угодно и даже рабочие куски памяти будут считаться битыми и наоборот - но не знаю работает ли этот бит реально в 2.6

    интересные моменты кроме того

    1 - если мы очень захотим можно сделать основную память меньше 640 таким образом отдав лишнее на EMS
    2 - мы можем перекидывать в основное адресное пространство страницы из EMS и до 640 кб, по сути по любому адресу с шагом в 16 кб показать любую страницу физической памяти из рабочих, менять их быстро местами и т.д. скажем можно было бы таким образом убирать часть кода дос или оболчки а потом быстро возвращать и т.д.

    вообще такой MMU страничный на XT это очень даже передовая штука была, если бы он был стандартом сразу от IBM
    Последний раз редактировалось medvdv; 19.10.2017 в 00:41.

Страница 22 из 62 ПерваяПервая ... 181920212223242526 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. КЦГД - поиск софта, вопросы и ответы
    от Titus в разделе ДВК, УКНЦ
    Ответов: 239
    Последнее: 05.12.2024, 21:22
  2. Ответов: 112
    Последнее: 04.07.2022, 11:21
  3. Ответов: 19
    Последнее: 03.12.2014, 15:41
  4. Куплю платы расширения для ПОИСК-а
    от Kacher в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 28.07.2011, 20:15
  5. Орион-про: Вопросы по сборке
    от Prusak в разделе Орион
    Ответов: 48
    Последнее: 12.10.2010, 00:18

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •