IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Консолидация документации по контроллерам SMK, c моими комментариями
SuperMax
сообщение 16.4.2021, 11:13
Сообщение #1


Администратор
*****

Группа: Root Admin
Сообщений: 6 282
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



СМК. Режимы работы и распределение памяти.

Память в контроллерах "АльтПро" разбита на страницы по 32 Кб, части (сегменты) одной такой страницы подключаются в области адресов 100000-177777, сегменты разных страниц одновременно подключить нельзя.
Сегментами ниже называются фрагменты памяти по 10000 байт. (4кБ)

Сегмент с номером X=0...7 может быть подключен либо с адреса 1X0000, либо с адреса 1X0000+-40000 в зависимости от номера режима.

Распределение памяти в различных режимах приведено в табл.1, затем следуют пояснения общего характера, которые рекомендуется прочитать, и примечания специального характера, которые понадобятся тем, кто пишет некорректные программы; тем, кто пишет корректные программы, рекомендуем пользоваться запросами BIOS, значительно упрощающими работу с доп. памятью и предотвращающими конфликты.

Все управление памятью осуществляется через регистр 177130, туда пишется номер страницы и номер режима

особенности записи в этот регистр - будут описаны отдельно

сводная таблица режимов
Прикрепленное изображение


Буква 'W' после номера сегмента означает, что ОЗУ доступно только по записи, 'R' - только по чтению, через дробную черту - старая версия контроллеров / новая (по номеру версии ПЗУ не определяется), '-' - не подключается ничего.
ПЗУ в контроллерах имеет объем 10000 байт, в режиме SYS одно и то же ПЗУ подключается и со 160000, и со 170000 (благодаря этому изменяется адрес запуска компьютера).
В контроллерах "SMK" ("винтовых") во всех режимах, кроме SYS, в адресах 170000-177000 подключено ОЗУ, в дисководных - нет, выше 177000 - во всех одинаково.
Внутри таблицы в рамки выделены группы режимов и адресов, используемые при пересылке данных для доступа ко всем 8 сегментам страницы памяти (одна рамка для БК10, другая - БК11М: это области, неперекрывающиеся с ПЗУ и охватывающие всю страницу).
Однако при размещении и вызовах подпрограмм на БК11М RAM-BIOS использует два первых режима (SYS и Std10) в окне 120000-140000, т.к. для работы с подпрограммами необходимо наличие ROM-BIOS в адресном пространстве.


РАСШИФРОВКА РЕЖИМОВ:

SYS - используется для запуска, пересылки данных на БК10 и RAM-BIOS'ом (он - всегда в 0-й странице);
Std10, Std11 - стандартные, традиционные режимы работы для БК10 и 11М соответственно, Std10 используется также для пересылки данных на БК10;
ОЗУ10 - вместо монитора БК10 и ПЗУ-160000 подключается ОЗУ (на многих БК10 требуется простая доработка, иначе доп. ОЗУ подключается параллельно ПЗУ монитора и приходится записывать в это ОЗУ копию монитора); используется также для доступа к доп. памяти на БК11М;
All - позволяет на БК10 подключить ОЗУ ко всему адресному пространству, что используется для загрузки копии Вильнюсского Бейсика; применяется также для доступа к доп. памяти на БК11М;
ОЗУ11 - подключение ОЗУ вместо ПЗУ на БК11М, для отключения ПЗУ монитора БК11М простая доработка требуется всегда;
Hlt10, Hlt11 - открывают доступ к HALT-режиму процессора на БК10 и БК11М соответственно. Максимально "продвинутые" режимы:
везде, где можно, подключается ОЗУ вместо ПЗУ и на БК10 нижняя часть ОЗУ монитора защищена от записи (квази-ПЗУ) для
повышения глюкоустойчивости.


Доработки для отключения ПЗУ монитора

СХЕМА ОТКЛЮЧЕНИЯ ПЗУ МОНИТОРА БК0011М
при подключении на его место доп. ОЗУ контроллеров "АльтПро"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Соответствующий сигнал высокого уровня вырабатывается
контроллерами и выдается на контакт B6 разъема МПИ. Доработка
обеспечивает автоматическое отключение ПЗУ монитора БК0011М при
подключении на его место доп. ОЗУ (адреса 140000-160000) и
делает эти 8 Кбайт доступными для программ как и на БК0010(-01).
В частности, можно запускать точную копию Бейсика-БК0010.

Для этого нужно отделить от схемы 23 вывод микросхемы DS17,
перерезав идущую к нему жирную дорожку (1801РЕ2-324, крайняя
левая нижняя микросхема). В разрыв нужно подключить резистор
1 кОм, а также соединить проводом отрезанный вывод DS17.23 и
контакт B6 разъема МПИ (верхний ряд, 6-й слева контакт).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


На контроллерах с доп. ОЗУ менее 256 Кб на БК10 может быть подключено ПЗУ Бейсика традиционно записью #10 в 177130, правда на режимы ОЗУ это никак не влияет.
При подключении ОЗУ параллельно чему-либо (ПЗУ, регистры) в случае конфликта данных (в одном - 0, в другом - 1) в подавляющем большинстве случаев читается 1 (для микросхем такой конфликт не страшен, все они имеют внутреннюю защиту - хотя, конечно, конфликты снижают помехоустойчивость и потому нежелательны).
Поэтому при параллельном подключении ОЗУ и ПЗУ в ОЗУ надо предварительно записывать копию ПЗУ, а при параллельном подключении ОЗУ и регистров в ОЗУ должны быть нули.

При включении режима "All" из режимов Hlt10, Hlt11 (а на "старых" контроллерах еще и из режима ОЗУ10) в ОЗУ режима "All" по адресу 177130 вписывается <20 + код страницы>; при использовании запросов BIOS таких переключений не бывает.

КОДЫ ПОДКЛЮЧЕНИЯ СТРАНИЦ ОЗУ:
64 кБ - 0,2000;
128 кБ - 0,2000,4,2004;
256 кБ - 0,2000,4,2004,10,2010,14,2014;
512 кБ - 0,2000,4,2004,10,2010,14,2014, 1,2001,5,2005,11,2011,15,2015.


Объем памяти можно определить по байту 167777 ПЗУ контроллера.
<надо зафиксировать как>


При переключениях коды режима и страницы необходимо складывать по BIS.
пример
Код

mov #6,@#177130
clr r0;тут будет режим + страница
bis #120,r0;выбор режима ОЗУ10
bis #4,r0;выбор страницы
mov r0,@#177130;установили режим и страницу
mov #0,@#177130;остановили дисковод




Кодировка версии контроллера.

Номер версии доступен программно - он содержится в последнем слове ПЗУ (по адресу 167776). В старшем байте
содержится ключ и информация об объеме дополнительной памяти, в младшем байте - информация о типе контроллера
и номере версии ПЗУ.

174000 - A16;
174400 - A16 + контроллер "винта" с доп. ОЗУ 4 Кб (170-177000);
175000 - A16M;
175400 - не используется;

176000 - 64 Кб
176400 - 128 Кб
177000 - 256 Кб
177400 - 512 Кб если младший байт > 0 - то это старая версия ПЗУ совмещенного контр. винчестера и дисковода SMK64 - ее нужно
заменить (ПЗУ установлено на панелях);

если младший байт имеет значение от 200 до 300 - то это контроллер SMK, если > 300 - это дисководный контроллер A64M-A512M.

В старой версии ПЗУ ( мл. байт > 0 ) ROM-BIOS отсутствует.

Проверка на наличие не менее 64 Кб и современной версии ПЗУ осуществляется одной командой:

Код

CMP @#167776,#176200
BHIS - Ok



Внимание! Программисты, загружающие в ОЗУ с адреса 160000 свою версию драйверов, должны область 167460-170000 (точки
входа BIOS и номер версии контроллера) копировать 1:1 из ПЗУ !



--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 16.4.2021, 11:23
Сообщение #2


Администратор
*****

Группа: Root Admin
Сообщений: 6 282
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Особенности работы (собрано из разных источников)


Цитата
Manwe - 22.09.2020 23:51
Ivanq помог разобраться: недокументированная функция СМК: не все страницы работают одинаково. Нужно использовать только те, в кодах которых сброшен бит №2. Дикость, конечно.
? gid - 23.09.2020 08:43
[На pk-fpga есть "ПОДРОБНОЕ техническое описание контроллеров АльтПро"]
Это и есть документация, + есть ещё схема электрическая принципиальная, из которой можно узнать нюансы работы.

[недокументированная функция СМК: не все страницы работают одинаково.]
Это не недокументированная функция, это наследственная фича. Я всё время про это забываю, У СМК осталось ещё от контроллеров А16 такая штука: установленный бит 2 в 177130 отключает регистры 177130, 177132 по чтению, до тех пор, пока бит 2 не будет сброшен. Это было нужно для работы Бейсика на БК10, и так оно и осталось.
Причём, где-то, в какой-то документации это упоминается, так же как и бит 3, который на БК10 подключает ПЗУ Бейсика, Причём на старых оригинальных СМК-64 этот бит 3 работает, а на старом прототипе СМК-256 и репликах СМК-512 этот функционал уже не реализован.

так что когда я говорил что "последняя команда - очистка регистра 177130 вообще не нужна", я как обычно ошибался, она нужна, и в том числе и для того, чтобы очистить этот бит 2, если он будет установлен каким-то кодом страницы. Правда я через два дня снова забуду про этот бит 2 и снова стану говорить, что регистр можно не обнулять, пока снова не наткнусь на незапланированное поведение, тогда снова вспомню, и так бесконечно.

Так что, использовать можно ВСЕ страницы, просто нужно при установках режимов для записи в 177130 использовать ТОЛЬКО команду MOV и больше никаких других команд. И если жалко двух слов, то для обнуления можно использовать какое-нибудь подходящее значение регистра, где младшие 11 битов равны нулю, а остальные - не имеют значения


Цитата
? gid - 23.09.2020 20:00
[Вроде, недавно правили прошивку СМК ради этого. Обнаружили, что не работает Бейсик.]
Правили, как раз добавили функционал с отключением регистров 177130, 177132 по чтению битом 2, а то они вообще не отключались и бейсик не работал. Я и правил, получилось как в оригинальном СМК-64, во всех случаях, а не только в режиме 20, как написано там https://forum.pk-fpga.ru/viewtopic.php?f=15&t=492
Серьёзные правки в прошивку внести невозможно, т.к. плата уже разведена и ноги ФПГА уже жёстко заданы. Поэтому когда не хватало то ячеек, то маршрутов, квартус всё советовал перераспределить назначения ног, чтобы нужные ресурсы высвободить, а вот фиг. Пришлось ограничиться самым минимумом.







--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 21.12.2023, 15:55
Сообщение #3


Администратор
*****

Группа: Root Admin
Сообщений: 6 282
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



отсюда http://t-h-s.ru/bk/%D0%90%D0%BB%D1%8C%D1%8...D1%80%D0%BE.txt


Код

          Таблица разделов и служебная информация на HDD  под контроллер АльтПро

   Под служебные нужды отводиться 0 сторона 0  дорожки. Первые 6 блоков этой области занимает основной загрузчик (MBR), считывающийся при загрузке в статическое ОЗУ с адреса 170000. Первой командой MBR и нулевого блока любого логического диска, с которого производиться вторичная загрузка, должна быть NOP (240).
    В 6 блоке (7 секторе) храниться конфигурация накопителя (задействованы только 4 первых слова):
1. word 125252
2. количество секторов
3. кол-во головок
4. кол-во дорожек
    Я такого на своих винтах не видел, поэтому без коментариев.

  А вот это более реальная информация.

   Таблица разделов храниться в 7 блоке (8 секторе) служебной области. Данные  идут в сторону уменьшения адресов (все данные слова):
   0  - кол-во дорожек
  -2  - кол-во головок
  -4  - кол-во секторов
  -6  - кол-во логических дисков (в старшем байте устройство загрузки по умолчанию A-0...C-2....)
  
   Записи о логических дисках идут по порядку, начиная с логического диска с номером 0.  Формат записи следующий:
1 слово -  номер головки (младшие 4 бита) и номер дорожки (остальные 12 бит)
2 слово - объём логического диска в блоках ( предполагается, что каждый лог. диск начинается с 1 сектора дорожки, определённый 1 словом).




--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28.3.2024, 22:59