
Сообщение от
gid
Уже как бы всё выяснили? Можно не отвечать?
как раз нет, помощь очень ценна и нужна!
я вернулся из отпуска и снова могу заняться AZ БК
В том же посте приведена таблица "Режимы работы и распределение памяти". Видите в ней квадратик, обведённый двойной рамкой?
Это участок, где можно полностью корректно обратиться ко всем 32 Кбайтам памяти страницы СМК, для этого используется два разных режима.
Таким образом, в одном режиме, тест может оперировать только 16 кбатным участком памяти, половиной страницы.
Поэтому, в тестах было принято решение называть страницей именно эту половинку страницы СМК. Для простоты понимания. Поэтому для теста существует 32 страницы по 16 Кб, а не 16 шт. по 32 Кб.
Это говорит о том, что маппер памяти работает как-то не так, один и тот же участок физической памяти подключается в двух или более разных сегментах.
круто! это я про авторов, они были таки юмористы ;-) то страница 32кБ то 16кБ
смотрю на биты управляющие номером страницы32кб
Код:
// КОДЫ ПОДКЛЮЧЕНИЯ СТРАНИЦ ОЗУ (SMK512):
// oct bin
// x0 000 00x x0x
// 0 - 0 00 000 000 000
// 1 - 2000 10 000 000 000
// 2 - 4 00 000 000 100
// 3 - 2004 10 000 000 100
// 4 - 10 00 000 001 000
// 5 - 2010 10 000 001 000
// 6 - 14 00 000 001 100
// 7 - 2014 10 000 001 100
// 8 - 1 00 000 000 001
// 9 - 2001 10 000 000 001
// 10 - 5 00 000 000 101
// 11 - 2005 10 000 000 101
// 12 - 11 00 000 001 001
// 13 - 2011 10 000 001 001
// 14 - 15 00 000 001 101
// 15 - 2015 10 000 001 101
//
// переключение режимов отключение
// 3 2 10 U3210
// x0 000 00x xx0 000 МОНБК10 МОНБК11М ОКНОБК11M
// Start 160 1 110 000 0111 0 0 1
// Std10 60 110 000 0011 0 1 1
// ОЗУ10 120 1 010 000 0101 1 0 1
// All 20 10 000 0001 1 1 1
// Std11 14 1 100 000 0110 0 0 0
// ОЗУ11 40 100 000 0010 0 1 0
// HLT10 100 1 000 000 0100 1 0 0
// HLT11 20000 10 000 000 000 000 1000 1 1 0
// Биты
// 0 - номер страницы 0
// 1
// 2 - номер страницы 1
// 3 - номер страницы 2
// 4 - управление U0
// 5 - управление U1
// 6 - управление U2
// 7
// 8
// 9
// 10 - номер страницы 3
// 11
// 12
// 13 - HLT11 U3
// 14
// 15
// формирование отключения (1)
// МОНБК10 = ( ~U2 && ~U1 ) || ( U2 && ~U1);
// МОНБК11М = ( ~U2 && ~U1 ) || (~U2 && U1)
// ОКНОБК11M = U0
получается номер страницы можно сформировать так:
Код:
SMK_PAGE={SMK_data[10],SMK_data[3],SMK_data[2],SMK_data[0]};
всё верно ?
физический адрес для слота [назовем так дабы не путаться] формируется так
{6'b000001,SMK_PAGE,3'd6};
те страница + хвост обозначающий ее сегмент
соответственно пересечение между страницами никак не получить
и так как я уже все проверил - код правильный, значит есть какая-то хитрость про которую я не в курсе
или я неверно формирую SMK_PAGE?
и остается не понятна ошибка - уже подключали с кодом 0020 уже подключали с 0120
получается это страница 0 + режим 20
и страница 0 + режим 120 во втором
но это не понятно тк в ошибке 16ая страница (!)
далее смотрим
уже подключали с кодом 2120 уже подключали с 0120
тут страница 2000 + режим 120 и страница 0 + режим 120
7й сегмент делится на две части: 170000-176777 и 177000-177777 и для этих частей разные правила. Если в первой части ОЗУ всегда
ok
то во второй части ОЗУ только тогда, когда нужны спецрежимы работы СМК. Там ведь регистры и порты, ОЗУ мешается.
а вот тут прошу подробнее
те какой режим включает это ОЗУ и отключает регистры ?
как я понимаю это нужно только для эмуляции бейсика БК10 который совсем не нужен на 11М ? или есть какое-то иное применение?
В сообщении - 0 1 2 3 - это порядковые номера участков памяти, куда подключаются соответствующие по таблице сегменты.
0 = участок памяти 100000-107777, 1 =участок памяти 110000-117777 и т.д.
ok
Вообще, весь этот код, который вызывает непонимание - это нативный код от фирмы АльтПро, может от Новака или ещё кого. Он используется без изменения ещё с тестов A16. Я только постарался как можно более подробно вывести интерпретацию результата его работы. Получилось, как получилось.
Тут вообще очень сложно с терминологией. Сегмент памяти - это и адресное пространство на БК, куда подключается ОЗУ и это же сам участок ОЗУ СМК, которое диспетчером памяти мапится в заданное адресное пространство. И страница тоже означает разные вещи в зависимости от контекста.
да, это путает
пытаюсь понять ошибки дальше
к примеру режим 140:

тут ошибка:7-6(10)
те адрес
170000-176776
тут обнаружилось ОЗУ - хотя должно быть пусто
и тут вопрос - почему пусто-то ?
хотя я согласно картинке выше подключил 7й сегмент
где тут собака зарылась ?