Просмотр полной версии : AZ для БК-0010(01) и БК-0011М
SuperMax
07.08.2020, 21:21
Достал я недавно БКшку с целью разобрать пару пачек дискет, что добыл из какой-то школы. И обнаружил, что задача "считать" на БК реализуется просто отлично, но вот что с этим делать ?
те БКшка не имеет сетевой карты, а после прикручивания к AZ сетевухи я уже успел привыкнуть что образа и данные на них доступны из сети и можно гонять туда-сюда не напрягаясь.
Соответственно возник вопрос о востребованности контроллера AZ на БКшке. Понятно что в текущей реализации версия для УКНЦ скорее всего заработает на БК без каких-либо переделок, те можно будет загрузить RT11 также просто как и на ДВК/УКНЦ и оригинальной PDP-11. Но БКшка интересна не только наличием RT11, а как раз ассортиментом других операционных систем - ANDOS MKDOS итд
Сейчас на БК у меня контроллер SMK512 от Воланда, штука отличная единственный недостаток - расположение и тип разъема под дисковод. те зацепить блок дисководов МС5309/5310 без приседаний не получится.
Но это я отвлекся, у меня возникли вопросы:
1. как я понимаю SMK512 означает что на борту как-то (ткните в документацию) прикручены 512КБ оперативки. Вопрос - есть ПО которое умеет с ним работать ? ну кроме какого-нибудь виртуального диска ?
2. Аналогичный вопрос - какой практический толк от памяти в SMK-64 ? или толк есть только на БК-0010?
3. Я правильно понимаю, что эмуляция кучи дисководов (в SMK64/512) сделана тупо на уровне процедур работы с дисководом в ПЗУ с адреса 160'000 ?
4. Кто-то еще на БКшке дискетами пользуется ? те сам нативный контроллер дисковода еще востребован ? (готек не в счет)
Просто на данный момент формируется идея сделать AZ, c ПЗУ на борту с адреса 160'000 для полноценной эмуляции дисковода
а технически это будет дофига образов на SD-карте, любого формата и что важно, доступные для закачки/скачивания по сети.
Соответственно идеи/комментарии/замечания приветствуются
------
UPD:
Ссылки:
AZБК официальный сайт (https://azbk.maxiol.com/)
Основная страничка проекта для БК-0010/11/11M
AZ для БК-0010 БК-0010.01 БК-0011 БК-0011М, расширенная версия AZ (https://forum.maxiol.com/index.php?showtopic=5543)
Контроллер AZ BK: Процедура обновления firmware (прошивки) контроллера (https://forum.maxiol.com/index.php?showtopic=5550)
Установка и настройка Quartus II Web Edition (Free) 15.0 (https://forum.maxiol.com/index.php?act=ST&f=121&t=5551)
Контроллер AZ BK: Обновления прошивки (https://forum.maxiol.com/index.php?showtopic=5553)
Канал оперативной поддержки всего что связано с контроллерами серии AZ (https://t.me/pdp11_az)
------
Основная страничка поддержки проекта AZ для ДВК/УКНЦ/PDP-11[инструкции, техническое описание, обновления фирмвари]
Контроллер псевдодиска на MicroSD (https://forum.maxiol.com/index.php?showtopic=5388)
Контроллер псевдодиска на MicroSD: сборка и наладка конструктора контроллера v1.01 (https://forum.maxiol.com/index.php?showtopic=5452)
Контроллер псевдодиска на MicroSD: подключение сетевой карты (https://forum.maxiol.com/index.php?showtopic=5490)
Разработка версии для УКНЦ
УКНЦ + AZ - вариант контроллера псевдодисков на микро-SD для УКНЦ. (https://zx-pk.ru/threads/30596-uknts-az-variant-kontrollera-psevdodiskov-na-mikro-sd-dlya-uknts.html)
Контроллер псевдодиска на MicroSD на шину МПИ: особенности версии для УКНЦ (https://forum.maxiol.com/index.php?showtopic=5491)
поддержка сети
Контроллер псевдодиска на MicroSD ДВК / УКНЦ: подключение сетевой карты (https://forum.maxiol.com/index.php?s=&showtopic=5490)
SuperMax
08.08.2020, 08:03
еще вопрос - какие адреса регистров заняты на БК ? я про SMK64/512 и прочие дополнительные изделия
177130/177132
177130 Используется для управления внешними накопителями и для подключения дополнительного ОЗУ и переключения страниц этого ОЗУ.
SuperMax
22.08.2020, 09:47
основная фишка AZ это как раз образа дисков в виде обычных файлов на карточке
и вторая фишка это сеть - те карточку можно вообще никогда не вынимать - а писать образа прямо через сеть
вся конфигурация - через ini-файл
подведу итоги того что вырисовывается
1. сам контроллер AZ с кучей дисков и сетевой картой
2. оперативная память 2МБ с загрузкой с SD-карты и эмуляция всяких ПЗУ - те я думаю, можно будет реализовать концепцию с полным отключением всех ПЗУ в БК.
3. КНГМД с разъемом для подключения дисководов
4. RS232 - видимо с TTL уровнями + программное управление скоростью порта
5. AY-3-8910
6. Covox / стерео / 16bit
7. микшер звука
8. таймер с прерыванием для обработки звука и/или DMA контроллер для звука
весь звук выводится на какой-то i2s 16bit-цап и наружу
поддержка образов дисков:
1. диски для RT11 - это уже есть
2. образа дискет - планируется
3. образа hdi - те "образ винта" - планируется
о контроллере https://forum.maxiol.com/index.php?showtopic=5388
о работе сети https://forum.maxiol.com/index.php?showtopic=5490
и фапоську
т.е. часы, часики для бк мечта нескольких поколений
512ви или мотороллу или даллас
SuperMax
22.08.2020, 09:58
и фапоську
т.е. часы, часики для бк мечта нескольких поколений
512ви или мотороллу или даллас
часы будут - в STM32 они есть и батарейка
те выставлю в регистры и все проблемы
2. оперативная память 2МБ с загрузкой с SD-карты и эмуляция всяких ПЗУ - те я думаю, можно будет реализовать концепцию с полным отключением всех ПЗУ в БК.На БК есть стандарт управления дополнительной памятью через регистр 177130. Можно сделать так же?
7. микшер звукаПоскольку Covox и AY висят на одном порту, было бы круто сделать так: если с AY идёт звук, то отключать Covox. Если на выходе AY тишина, то данные с порта посылать на Covox.
SuperMax
22.08.2020, 14:24
На БК есть стандарт управления дополнительной памятью через регистр 177130. Можно сделать так же?
я так и не узнал, какой софт использует эту расширенную память. соответственно зачем тащить никому ненужный багаж ? [если он таки нужен - ссылку на софт который можно скачать и посмотреть]
прочитав вот это https://forum.pk-fpga.ru/viewtopic.php?f=39&t=5410
Память в контроллерах "АльтПро" разбита на страницы по 32 Кб, части (сегменты) одной такой страницы подключаются в области адресов 100000-177777, сегменты разных страниц одновременно подключить нельзя. Сегментами ниже называются фрагменты памяти по 10000 байт. Сегмент с номером X=0...7 может быть подключен либо с адреса 1X0000, либо с адреса 1X0000+-40000 в зависимости от номера режима.
я не вижу смысла тащить этот атавизм
я сторонник сделать явно - к примеру:
окно 0: 100'000-117'777 - регистр управления что в это окно воткнуть
окно 1: 120'000-137'777 - регистр управления что в это окно воткнуть
окно 2: 140'000-157'777 - регистр управления что в это окно воткнуть
окно 3: 160'000-177'000 - регистр управления что в это окно воткнуть
будет 4 регистра
младший байт - номер страницы (8кБ) памяти
старший байт - режим подключения страницы - r/w/rw
+ на чтение в старшем байте будет режим доступности этой страницы - те если ее не получилось подключить то будет стоять флаг
при этом в ini файле будет маппинг для дефолтной загрузки страниц
те в директории ROM на флешке будут файлы которые при старте будут загружены в определенные страницы памяти, которые будут дефолтом для старта
Поскольку Covox и AY висят на одном порту, было бы круто сделать так: если с AY идёт звук, то отключать Covox. Если на выходе AY тишина, то данные с порта посылать на Covox.
это уже будем делать по ходу дела, принципиальных проблем я не вижу.
SuperMax
22.08.2020, 16:37
из перспективного есть мысли
1. подать тактовую частоту с контроллера на ВМ1
и сделать регистр для управления частотой - те чтобы можно было задавать частоту с дискретностью в 1кГц к примеру
штука простая в реализации, но будет явно удобно для демок и всяких экспериментов
2. продолжить издевательства можно добавив тоже самое для таймера в проце ;-)
ну и схемку простую сделать дабы БК без контроллера могла работать в штатном режиме
3. сделать DMA контроллер который будет пихать данные из указанной страницы расширенной памяти в "covox"
4. аналогично сделать для AY-3-8910
5. сделать таймер с прерыванием, частоту можно будет задавать через регистр.
я так и не узнал, какой софт использует эту расширенную память. соответственно зачем тащить никому ненужный багаж ? если он таки нужен - ссылку на софт который можно скачать и посмотреть
Игра White Thunfer (https://zx-pk.ru/threads/29756-patchi-k-igram.html?p=993957&viewfull=1#post993957)
Игра Fist SPC (http://thesands.ru/bk0010/fist.zip)
Интро Fractal Blur (https://www.pouet.net/prod.php?which=83525)
Демо Good Apple (https://www.pouet.net/prod.php?which=78066)
Демо Однажды (https://www.pouet.net/prod.php?which=73234)
Демо Bad Apple (https://www.pouet.net/prod.php?which=76056)
Драйвер расширенной арифметики EIS (https://zx-pk.ru/threads/29759-extended-instructions-set-(eis)-mul-div-ash-ashc.html)
В процессе разработки игра "Принц Персии (https://twitter.com/grfmaniak/status/1297183434746613760?s=20)"
SuperMax
22.08.2020, 18:22
Игра White Thunfer (https://zx-pk.ru/threads/29756-patchi-k-igram.html?p=993957&viewfull=1#post993957)
Игра Fist SPC (http://thesands.ru/bk0010/fist.zip)
Интро Fractal Blur (https://www.pouet.net/prod.php?which=83525)
допустим
Демо Good Apple (https://www.pouet.net/prod.php?which=78066)
Демо Однажды (https://www.pouet.net/prod.php?which=73234)
Демо Bad Apple (https://www.pouet.net/prod.php?which=76056)
и сколько там памяти используется ? и все требуют 6MHz ?
Драйвер расширенной арифметики EIS (https://zx-pk.ru/threads/29759-extended-instructions-set-(eis)-mul-div-ash-ashc.html)
В процессе разработки игра "Принц Персии"
тоже требует 6MHz ?
я это к тому, что получить стабильную работу 6MHz на оригинальной БК достаточно сложно - те 90% машин не потянет такую доработку.
совместимость можно реализовать, но я думаю, что куда удобнее управлять страницами без ограничений как в SMK
и сколько там памяти используется ? и все требуют 6MHz ?Про 6 МГц я нигде не писал. Только одна демка требует 6 МГц - "Bad Apple", остальные работают на 4 МГц. А вот память СМК используют, да. Демо Электробулка (https://www.pouet.net/prod.php?which=68705), кажется, все 512 килобайт. Игра "Принц Персии", определённо, будет использовать несколько страниц памяти.
совместимость можно реализовать, но я думаю, что куда удобнее управлять страницами без ограничений как в SMKА в чём, собственно, ограничение? Я вижу только ограничение в количестве памяти. 512 Кб максимум. Но разве 512 Кб мало?
SuperMax
23.08.2020, 12:37
Про 6 МГц я нигде не писал. Только одна демка требует 6 МГц - "Bad Apple", остальные работают на 4 МГц.
это хорошо
А вот память СМК используют, да. Демо Электробулка (https://www.pouet.net/prod.php?which=68705), кажется, все 512 килобайт. Игра "Принц Персии", определённо, будет использовать несколько страниц памяти.
А в чём, собственно, ограничение? [/QUOTE]
я про:
Память в контроллерах "АльтПро" разбита на страницы по 32 Кб, части (сегменты) одной такой страницы подключаются в области адресов 100000-177777, сегменты разных страниц одновременно подключить нельзя. Сегментами ниже называются фрагменты памяти по 10000 байт. Сегмент с номером X=0...7 может быть подключен либо с адреса 1X0000, либо с адреса 1X0000+-40000 в зависимости от номера режима.
соответственно да, буду делать совместимость с этим
но и будет нормальная адресация страниц без ограничений
из перспективного есть мысли
Довольно многие вещи, как из перспективного, так и из хотелок пользователей требуют доработки БК, хотя бы в том, чтобы допаять проводочек от какой-нибудь незадействованной ноги разъёма МПИ до нужной ноги микросхемы. И обычно ещё и дорожки на плате резать при этом. (к примеру для того, чтобы подать свою частоту в ВЕ-таймер в проце)
Сделать устройство, которое просто воткнул в разъём и всё волшебным образом начало работать, не получится.
Например, чтобы подменить на БК11(М) ПЗУ по адресу 140000 на своё ОЗУ, нужна модификация БК11(М). А чтобы подменить на БК10(01) ПЗУ по адресу 100000 на своё ОЗУ - некоторые БК10(01) так же нуждаются в подобной модификации, а некоторые - нет, зависит от их схемы. На что не все согласны, и не все умеют.
3. сделать DMA контроллер который будет пихать данные из указанной страницы расширенной памяти в "covox"
Для БК10 при этом потребуется внесение доработок в схему, чтобы привести к виду по схеме БК11, иначе ничего не получится.
4. аналогично сделать для AY-3-8910
Это полезно для PSG формата, но как правило испольуется процедурная форма генерации данных, там было бы полезно внедрить сами регистры AY в адресное пространство БК, но архитектурная несовместимость не даёт обращаться к байту как отдельной единице. Разве что через шинные формирователи. Зато при этом, при использовании полноценного AY-3-8910 последние два его регистра можно использовать как 8-битные порты для стерео ковокса.
А если таки перевесить ковокс с 177714 на какой-нибудь свой регистр, то используя ДМА можно заставить его звучать одновременно с AY.
А в чём, собственно, ограничение?
Имеется в виду ограничение "сегменты разных страниц одновременно подключить нельзя"?
А ограничение в том, что памяти много, но битов, чтобы манипулировать ей, отведено всего 4. поэтому получается всего 16 страниц по 32кБ. Но уже внутри этой страницы можно манипулировать сегментами этой страницы с помощью кода режима работы СМК. Ну и естественно, что нельзя подключить одновременно даже две страницы по 32кБ, чтобы выбирать из них нужные сегменты.
Если бы в те времена микросхемы были дешёвые, легкодоступные и маленькие, то наверняка было бы можно соорудить что-то более вменяемое.
соответственно да, буду делать совместимость с этим
Т.е. все два мегабайта будут подключаться в соответствии с идеологией СМК?
тогда надо добавить ещё два бита для кодов подключения страниц, а их в регистре 177130 уже не осталось. То есть, если собственно живой ВП1-128 не будет, а будет её эмуляция, тогда биты есть - 15,14,12,11. Бит 13 используется при задании кода 0 режима СМК, пишут 20000 вместо числа 0, почему так, непонятно, я сколько ни изучал схему, так и не понял, почему разработчики боялись числа 0, из-за чего бит 13 теперь пропадает впустую.
SuperMax
23.08.2020, 21:09
Довольно многие вещи, как из перспективного, так и из хотелок пользователей требуют доработки БК, хотя бы в том, чтобы допаять проводочек от какой-нибудь незадействованной ноги разъёма МПИ до нужной ноги микросхемы. И обычно ещё и дорожки на плате резать при этом. (к примеру для того, чтобы подать свою частоту в ВЕ-таймер в проце)
Сделать устройство, которое просто воткнул в разъём и всё волшебным образом начало работать, не получится.
это вопрос доступности опций
те управление частотой это опция больше для экспериментаторов, хотя при наличии ПО может быть и востребована для демок.
Например, чтобы подменить на БК11(М) ПЗУ по адресу 140000 на своё ОЗУ, нужна модификация БК11(М). А чтобы подменить на БК10(01) ПЗУ по адресу 100000 на своё ОЗУ - некоторые БК10(01) так же нуждаются в подобной модификации, а некоторые - нет, зависит от их схемы. На что не все согласны, и не все умеют.
это я в курсе, у меня кстати машины без этих переделок
я из-за нелюбви к колхозу и моткам проводов внутри, так и не собрался подключить AY-3-8910 и потому хочу сделать внешнюю коробочку, которая бы реализовала необходимый мне набор хотелок.
Для БК10 при этом потребуется внесение доработок в схему, чтобы привести к виду по схеме БК11, иначе ничего не получится.
делать ли совместимость с БК-0010 это открытый вопрос.
Это полезно для PSG формата, но как правило испольуется процедурная форма генерации данных, там было бы полезно внедрить сами регистры AY в адресное пространство БК, но архитектурная несовместимость не даёт обращаться к байту как отдельной единице. Разве что через шинные формирователи. Зато при этом, при использовании полноценного AY-3-8910 последние два его регистра можно использовать как 8-битные порты для стерео ковокса.
исходя из того, что AY-3-8910 будет реализован внутри ПЛИС, я не вижу проблем с мапированием его регистров в адресное пространство БКшки
соответственно заинтересованным лицам прошу высказаться по тому как это будет лучше.
А если таки перевесить ковокс с 177714 на какой-нибудь свой регистр, то используя ДМА можно заставить его звучать одновременно с AY.
свой набор регистров будет точно тк с меня уже хотят зеркало ковокса - те чтобы из регистра можно было считать то что уже туда записано
Имеется в виду ограничение "сегменты разных страниц одновременно подключить нельзя"?
А ограничение в том, что памяти много, но битов, чтобы манипулировать ей, отведено всего 4. поэтому получается всего 16 страниц по 32кБ. Но уже внутри этой страницы можно манипулировать сегментами этой страницы с помощью кода режима работы СМК. Ну и естественно, что нельзя подключить одновременно даже две страницы по 32кБ, чтобы выбирать из них нужные сегменты.
Если бы в те времена микросхемы были дешёвые, легкодоступные и маленькие, то наверняка было бы можно соорудить что-то более вменяемое.
да я не в претензиях к тому решению, тем более что в момент появления SMK я уже пересел на ДВК и ограничивался на БКшке только дисководом.
Т.е. все два мегабайта будут подключаться в соответствии с идеологией СМК?
нет
в режиме SMK512 только 512К
полные 2МБ будут доступны только в новом варианте
какой - можно придумывать ибо все это будет в ПЛИС и можно будет переделать
сейчас я хочу определится с емкостью ПЛИС и начать рисовать схему
делать ли совместимость с БК-0010 это открытый вопрос.Лучше делать. На руках гораздо больше 10-ок, чем 11-ых. Из перечисленных выше программ 4 работают на БК 0010.
в режиме SMK512 только 512КЭто правильно.
полные 2МБ будут доступны только в новом вариантеПолезно тогда в (эмулируемой) прошивке СМК прописать номер версии какой-то специфический, чтобы можно было определить, что это более продвинутый контроллер памяти.
SuperMax
24.08.2020, 06:20
Лучше делать. На руках гораздо больше 10-ок, чем 11-ых. Из перечисленных выше программ 4 работают на БК 0010.
так или иначе на 10-ке потребуется сделать те же доработки что и для SMK
Полезно тогда в (эмулируемой) прошивке СМК прописать номер версии какой-то специфический, чтобы можно было определить, что это более продвинутый контроллер памяти.
тут скорее всего надо сделать чтобы все что шло на SMK принимала новое как данное соответственно в идентификаторе будет то что это SMK-512
ПРИЛОЖЕНИЕ 4. Кодировка версии контроллера.
Номер версии доступен программно - он содержится в последнем слове ПЗУ (по адресу 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.
SuperMax
14.09.2020, 09:04
подведу итоги того что вырисовывается
1. сам контроллер AZ с кучей дисков и сетевой картой
2. оперативная память 2МБ с загрузкой с SD-карты и эмуляция всяких ПЗУ - те я думаю, можно будет реализовать концепцию с полным отключением всех ПЗУ в БК.
3. КНГМД с разъемом для подключения дисководов
4. RS232 - видимо с TTL уровнями + программное управление скоростью порта
5. AY-3-8910, возможно 2шт
6. Covox / стерео / 16bit
7. OPL2
8. микшер звука
9. таймер с прерыванием для обработки звука и/или DMA контроллер для звука
весь звук выводится на какой-то i2s 16bit-цап и наружу
10. Внешний видеовыход - те поддержка legacy видео-режимов + новые; будет работать и на 10ке
поддержка образов дисков:
1. диски для RT11 - это уже есть
2. образа дискет - планируется
3. образа hdi - те "образ винта" - планируется
о контроллере https://forum.maxiol.com/index.php?showtopic=5388
о работе сети https://forum.maxiol.com/index.php?showtopic=5490
ps: для 16цветов надо будет кинуть пару проводков(ну возможно заменить ПЗУ палитр), что собственно не будет сложно для тех кто уже сделал отключение ПЗУ монитора для SMK512
SuperMax
21.09.2020, 17:27
Подробнее о видеовыходе VGA
1. принципиальные испытания возможности "перехвата" данных в видеопамяти прошли успешно, те картинку в VGA 640х480х60 получил.
2. так как единственное подходящее разрешение для корректного полноэкранного масштабирования это 1024х768х60, то сейчас занят макетированием. соответственно советую прикупить какой-нибудь 15" монитор с нативным 1024х768 пока на них не вырос спрос ;-)
3. прикидка показывает, что получится выделить по 4бита на каждый канал - те будет доступен 12бит цвет (4096цветов), RAMDAC уже тоже присмотрел.
4. оценил возможности реализации новых видеорежимов и пришел к выводу, что от первоначально концепции разрешений на БК (512х256) отказываться не стоит
соответственно новые видеорежимы будут основаны на этих разрешениях - к примеру
512x256x12bit 512x256x8bit 512x256x4bit 256x256x12bit 256x256x8bit итд
5. сохранение концепции позволит использовать и VGA режим, но и спокойно переходить на обычный БКшный стандарт - дабы можно было использовать старые мониторы.
6. однако, не всё так гладко - к примеру если делать zeliard, то в нем используется разрешение 640х400 и активное окно 448х290
так что есть над чем подумать
соответственно можно обсуждать, пока я занят тестированием
советую прикупить какой-нибудь 15" монитор с нативным 1024х768 пока на них не вырос спрос ;-) у меня 2 ЭЛТ есть 15" и 21" - рабочие, с запасом яркости (LG, HITACHI) - самовывозом приезжайте забирайте )
https://s8.hostingkartinok.com/uploads/thumbs/2020/09/e7aba1a65d683473614500061bca4a56.png (https://hostingkartinok.com/show-image.php?id=e7aba1a65d683473614500061bca4a56)
Я с месяц назад пробовала на двух компах и паре мониторов LCD выставить режим 50 Гц -- всё прошло успешно. Может не надо усложнять конструктив преобразованиями 50Гц в 60Гц? Ну, или хотя бы сделать "нативный" 800х600@50Гц, в который вставить по центру окно (2*256)х(256*2)...
А можно даже Бустер первой модели переплюнуть, и сделать два монитора - первый со стандартными 16кБ видеоОЗУ БКашки, а второй чтобы выводил альтернативный участок ОЗУ на рамдак :)
https://youtu.be/ureDHgGKcc8
SuperMax
22.09.2020, 08:14
Я с месяц назад пробовала на двух компах и паре мониторов LCD выставить режим 50 Гц -- всё прошло успешно. Может не надо усложнять конструктив преобразованиями 50Гц в 60Гц? Ну, или хотя бы сделать "нативный" 800х600@50Гц, в который вставить по центру окно (2*256)х(256*2)...
48 герц и 1027х786 я уже тоже опробовал, это тоже будет опцией тк нет уверенности что все мониторы будут корректно поддерживать
а окно по центру это как-то странно
А можно даже Бустер первой модели переплюнуть, и сделать два монитора - первый со стандартными 16кБ видеоОЗУ БКашки, а второй чтобы выводил альтернативный участок ОЗУ на рамдак :)
https://youtu.be/ureDHgGKcc8
никаких противопоказаний не вижу - сейчас у меня в тесте так два моника и работают
ps: про бустер слышу первый раз
а окно по центру это как-то странно
...
никаких противопоказаний не вижу - сейчас у меня в тесте так два моника и работают
ps: про бустер слышу первый раз
Окно такое по центру не странно -- тогда пиксели не будут размытыми, а один пиксель БК-шки превратится в группу из 2х2 пикселя... Очень полезный режим для разработки цветовых спецэффектов для графики, использующих "смешение" цветов в мозге наблюдателя :)
А про Бустер можно тут всё почитать... https://forum.pk-fpga.ru/viewtopic.php?f=15&t=5510
- - - Добавлено - - -
Да, ещё как вариант, и может так даже лучше -- в режим 800х600@~50Гц по центру разместить окно (768==3*256)х(512==256*2).
Тогда черная рамка вокруг будет не столь велика, а масштабирование цветного изображения БК-ашки -- проще.
Получаем два режима: (2*256)х(256*2) - для цвета и монохрома, (3*256)х(256*2) - для цветного режима и демок...
- - - Добавлено - - -
Думаю, такое можно даже выдать на композитный видеовыход для подключения к любому ТВ через "тюльпан"...
SuperMax
22.09.2020, 18:54
Окно такое по центру не странно -- тогда пиксели не будут размытыми, а один пиксель БК-шки превратится в группу из 2х2 пикселя... Очень полезный режим для разработки цветовых спецэффектов для графики, использующих "смешение" цветов в мозге наблюдателя :)
тут основная засада в размытии из-за монитора
те если отображать 800х600 на мониторе с физическим разрешением 1024х786 то уже будет корявое мыло
(конечно на ЭЛТ такой проблемы нет, но сейчас уже фактически состоялся переход на LCD мониторы у большинства)
А про Бустер можно тут всё почитать... https://forum.pk-fpga.ru/viewtopic.php?f=15&t=5510
ага, есть похожие моменты
получается немного "велосипеда" добавилось в AZ ;-)
Да, ещё как вариант, и может так даже лучше -- в режим 800х600@~50Гц по центру разместить окно (768==3*256)х(512==256*2).
Тогда черная рамка вокруг будет не столь велика, а масштабирование цветного изображения БК-ашки -- проще.
Получаем два режима: (2*256)х(256*2) - для цвета и монохрома, (3*256)х(256*2) - для цветного режима и демок...
Думаю, такое можно даже выдать на композитный видеовыход для подключения к любому ТВ через "тюльпан"...
на самом деле тут нет жестких рамок
но смысла в тюльпане я не вижу совсем
48 герц и 1027х786 я уже тоже опробовал, это тоже будет опцией тк нет уверенности что все мониторы будут корректно поддерживатьИдеальный режим для БК.
А если удвоить исходную кадровую частоту 48.828125 Гц? Получится близко к 100 Гц, многие ЭЛТ-мониторы вытягивают такую частоту.
Тогда уж 1024х768@48.828125 :)
Это (4*256)х(3*256)...
48.8 КГц далеко не всякий монитор покажет. А удвоенную – почти любой SVGA
Ну, не знаю, на компах обычно "старые" и/или недорогие LCD мониторы предлагают себя пользовать на 60 или 72, или 75 Гц...
Некоторые бы хотели подключать к БК небольшие автомобильные ТВ и мониторы, а у них в лучшем случае 800х600 матрица...
SuperMax
24.09.2020, 07:08
48.8 КГц далеко не всякий монитор покажет. А удвоенную – почти любой SVGA
тут есть несколько моментов
1. если монитор LCD, то далеко не все модели согласятся принимать 48.828125 (кстати как это получается ?) ибо стандарт 60Гц и тут особо вариантов нет
2. если монитор CRT, то чистые 48.828125 будет неприятно смотреть - сильное мерцание, а вот 48.828125*2 будет отлично, но потребуется более-менее приличный монитор который нормально держит 100Гц в 1024х768
так как с принципиальной возможностью генерации изображения перехватом я разобрался, сейчас займусь звуковой частью - макетирование
CodeMaster
24.09.2020, 10:09
если монитор CRT
А там, в видео, нельзя по простому сделать опцию турбо/ не турбо клок?
2. если монитор CRT, то чистые 48.828125 будет неприятно смотреть - сильное мерцание, а вот 48.828125*2 будет отлично, но потребуется более-менее приличный монитор который нормально держит 100Гц в 1024х768
Так в этом и вся фишка при "смешении" цветов в игрушках и демках! =)
Когда мозг пытается упростить визуальную модель наблюдения...
https://www.youtube.com/watch?v=9CNbHVMvTOg
https://www.youtube.com/watch?v=3Fu6xdIBuHs
- - - Добавлено - - -
Ну, не знаю, на компах обычно "старые" и/или недорогие LCD мониторы предлагают себя пользовать на 60 или 72, или 75 Гц...
Но при этом работают и на 50Гц (например, интегрированные видеоадаптеры Интел через свою утилиту это позволяют включить).
- - - Добавлено - - -
Как вариант, при частоте 2*48.828125 выводить первый кадр в полной яркости, а второй как первый, но с пониженной яркостью, получится визуально ближе к реальной ЭЛТ...
SuperMax
24.09.2020, 10:24
А там, в видео, нельзя по простому сделать опцию турбо/ не турбо клок?
можно и так будет, ибо я хочу предусмотреть вывод и в родном формате для использования родных мониторов - те 6106 к примеру
можно и так будет, ибо я хочу предусмотреть вывод и в родном формате для использования родных мониторов - те 6106 к примеру
А что будет в качестве разъёма? Десять штырей как в УК-НЦ или СОЮЗ-НЕОН ?! ;-)
- - - Добавлено - - -
И, всё-таки, не забывайте, что БК0010, в отличие от УК-НЦ и ДВК -- хорошая игровая приставка для ТВ (хотя бы на даче, куда в ссылку отправлены ЭЛТ телевизоры)...
SuperMax
24.09.2020, 11:00
А что будет в качестве разъёма? Десять штырей как в УК-НЦ или СОЮЗ-НЕОН ?! ;-)
планирую стандартный VGA (D-Sub) 15 PIN
48.828125 (кстати как это получается?)4000000 / 256 / 320
Первое число - тактовая частота процессора 4 МГц
Второе число - длительность строки в тактах процессора
Третье число - число строк (из них отображаются 256, остальное время - обратный ход луча)
SuperMax
24.09.2020, 15:52
4000000 / 256 / 320
Первое число - тактовая частота процессора 4 МГц
Второе число - длительность строки в тактах процессора
Третье число - число строк (из них отображаются 256, остальное время - обратный ход луча)
что-то не то, ибо
1. 037ая тактируется 6MHz а не 4MHz
2. в строке >256 отсчетов иначе говоря есть еще время для обратного хода луча в строке
что-то не то, ибо
1. 037ая тактируется 6MHz а не 4MHz
2. в строке >256 отсчетов иначе говоря есть еще время для обратного хода луча в строкеЯ не ковырял осциллографом ВП1-037, в первую очередь потому, что у мня нет осциллографа :) Но я писал тест на БК, который опирается на внутренний таймер и визуальное наблюдение (в тесте можно клавишами подгонять задержку и добиваться чтобы кадр плавно сдвигался либо стоял на месте). У меня получились вышеозвученные результаты, в системе отсчёта центрального процессора (частота, число тактов).
Если перевести это в 6 МГц, то получится: 6000000 / 384 / 320.
SuperMax
24.09.2020, 17:21
Я не ковырял осциллографом ВП1-037, в первую очередь потому, что у мня нет осциллографа :) Но я писал тест на БК, который опирается на внутренний таймер и визуальное наблюдение (в тесте можно клавишами подгонять задержку и добиваться чтобы кадр плавно сдвигался либо стоял на месте). У меня получились вышеозвученные результаты, в системе отсчёта центрального процессора (частота, число тактов).
Если перевести это в 6 МГц, то получится: 6000000 / 384 / 320.
да, так другое дело
А вот интересно, через разъём ТВ что БКашка тогда вещает? Откуда берутся 512 точек по горизонтали?
Неужели 256 выводятся в первом полукадре, а ещё 256 во втором? :)
- - - Добавлено - - -
А правда вот где... https://forum.pk-fpga.ru/viewtopic.php?f=52&t=5420
- - - Добавлено - - -
24,4140625 <- 6000000/768/320... тогда уж :)
А вот интересно, через разъём ТВ что БКашка тогда вещает? Откуда берутся 512 точек по горизонтали?
Неужели 256 выводятся в первом полукадре, а ещё 256 во втором? :)Не, у БК прогрессивная развёртка.
Просто в формуле "6000000/384/320" число 384 - результат измерения с помощью программы, а не что-то реально зашитое в железо. 384 - это время в тактах ВП1-037, за которое микросхема всасывает из экранной памяти 64 байта, плюс время на перевод луча в начало следующей строки. Из каждого байта ВП1-037 выбирает биты по одному и отправляет на выход монохромного дисплея. А также параллельно на схему, которая объединяет пары бит и формирует из них цвет (или 4 градации серого в самых первых моделях БК0010). В БК0011 ещё и ПЗУ с палитрами участвует в формировании цвета.
Не, у БК прогрессивная развёртка.
Просто в формуле "6000000/384/320" число 384 - результат измерения с помощью программы, а не что-то реально зашитое в железо. 384 - это время в тактах ВП1-037, за которое микросхема всасывает из экранной памяти 64 байта, плюс время на перевод луча в начало следующей строки. Из каждого байта ВП1-037 выбирает биты по одному и отправляет на выход монохромного дисплея. А также параллельно на схему, которая объединяет пары бит и формирует из них цвет (или 4 градации серого в самых первых моделях БК0010). В БК0011 ещё и ПЗУ с палитрами участвует в формировании цвета.
Тогда скорее так: 6000000/(64+256+64)/320, где 64 такта слева и справа центруют 256 цветных пикселей на экране... Поэтому, выгодно менять палитру для следующей строки в момент 64+256 отсчётов :) чтобы за 128 тактов успеть переключить палитру к моменту вывода первого пикселя следующей строки...
- - - Добавлено - - -
Вот ещё хорошие мысли по видеорежимам https://zx-pk.ru/threads/29295-chto-mozhno-vyzhat-iz-k1801vp1-037.html?p=1050087&viewfull=1#post1050087
Можно тогда в формуле поднять частоту до 12 МГц, потому что именно на ней работает кварц. Могу путать, но вроде как ВП1-037 выдаёт два бита за такт на своих 6 МГц благодаря тому, что внешняя тактовая всё же 12 МГц.
Тогда получим 12000000/(128+512+128)/320 где 512 - число пикселей в монохромном режиме.
Можно тогда в формуле поднять частоту до 12 МГц, потому что именно на ней работает кварц. Могу путать, но вроде как ВП1-037 выдаёт два бита за такт на своих 6 МГц благодаря тому, что внешняя тактовая всё же 12 МГц.
Тогда получим 12000000/(128+512+128)/320 где 512 - число пикселей в монохромном режиме.
Воот. А таймер проца тактируется 4 МГц.
Интересно, потянет ли он (таймер) частоту 6 МГц, при сохранении тактирования проца 4-мя МГцами?! =)
- - - Добавлено - - -
Сама себе и отвечаю :)
Нога #6, nSP, вход -- Вход периферийного таймера, может использоваться как внешняя
тактовая частота, не превышающая одной восьмой тактовой частоты
процессора, или как вход защелкивания текущего значения счетчика
таймера в отдельном регистре. Все действия в таймере (счет и
защелкивание) происходят по ниспадающему фронту сигнала на
данном входе с задержкой от 1 до 8 тактов процессорной частоты CLC...
- - - Добавлено - - -
Т.е. можно, наоборот, на проц подать 6МГц, а на этот вход тактовую, соответствующую частоте 4МГц, и тогда не пострадает софт использующий для синхронизации операций с экраном и палитрами только счёт на таймере проца... Такой небольшой оффтоп)
на проц подать 6МГц, а на этот вход тактовую, соответствующую частоте 4МГц, и тогда не пострадает софт, использующий для синхронизации операций с экраном и палитрами только счёт на таймере процаОчень крутая идея. Так и надо делать турбирование на 6 МГц. Заодно по таймеру станет возможным легко определять на какой частоте сейчас работает процессор.
SuperMax
25.09.2020, 15:49
Очень крутая идея. Так и надо делать турбирование на 6 МГц. Заодно по таймеру станет возможным легко определять на какой частоте сейчас работает процессор.
мне интереснее другая идея - подать на проц и на таймер частоту извне, те с AZ-а
а ее в свою очередь задавать через регистр
мне интереснее другая идея - подать на проц и на таймер частоту извне, те с AZ-а
а ее в свою очередь задавать через регистр
Мы согласны)) Поддержим программно :)
мне интереснее другая идея - подать на проц и на таймер частоту извне, те с AZ-а
а ее в свою очередь задавать через регистрПридётся ж паять БК внутри
Придётся ж паять БК внутри
Опции для смелых тоже важны :)
Тогда можно будет сделать из БК0010, практически БК11М, если AZ будет эмулировать страницы памяти БК11М и видеоадаптер БК11М (с палитрами)...
SuperMax
26.09.2020, 07:54
Опции для смелых тоже важны :)
Тогда можно будет сделать из БК0010, практически БК11М, если AZ будет эмулировать страницы памяти БК11М и видеоадаптер БК11М (с палитрами)...
да, по сути так и получается
Тогда можно будет сделать из БК0010, практически БК11М
Похоже внутри БКашников опять же разделение трудящихся (разобщение пролетариев),
мне не понять фанатизма по поводу старших БКашек - не пользовался, а эмулятор - ну и что там? Какие то левые оси и ковоки! Я прекрасно играл на БК 10-01 с кассетами и пищалкой, и был счастлив.
http://hobot.pdp-11.ru/gamgal.htm
Хочешь взрослую доступную машинку с RT-11 ? ;-) Ответ известен ! ) Только УК-НЦ.
Похоже AZ вариант для БК - отдельный не похожий на собратьев проект.
И вот так со всеми стандартами - БКашники всё за уши притягивают к своим 11М , что плохо лежит, создают какие-то ОСи свои, игнорируют стандарты, но вовсю пользуются МАКРО-11. И делают вид, что это кашер... то есть, что так и надо! Разве нет?
В то время 10-01 реально отдельно стоящая машинка на родственном камушке, но ничего
(по тихому) не умыкнувшая у старших. Честность - это главное ) Наоборот щедро продолжает радовать своими играми в новых красках (смотри соседнюю тему) и делиться играми с УК-НЦ.
конечно весь этот мыслепоток строго ИМХО и констатация разобщенности даже там,
где её могло бы и не быть.
И вот так со всеми стандартами - БКашники всё за уши притягивают к своим 11М, что плохо лежит, создают какие-то ОСи свои, игнорируют стандартыБК 0011М (в отличие от БК 0011) сделали полностью совместимой с БК 0010 - это и есть следование сложившемуся стандарту, это правильно. На БК 0010 естественно были свои операционные системы, потому что RT-11 она не потянула бы по аппаратным ограничениям. И все эти ОС идут также на БК 0011М. Так в чём проблема? С каких пор обратная совместимость - это плохо?
но вовсю пользуются МАКРО-11. И делают вид, что это кашер... то есть, что так и надо! Разве нет?Да никто не использует на БК этот Macro-11. Стандартный ассемблер на БК всегда был Turbo. Плюс некоторые экзотические вещи: Владимир Савин написал свой ассемблер (когда ещё не было Turbo) - на нём создано полтора десятка игр SW corp, Илья Юдин написал свой транслятор (который пошёл в DESS, но существовал и отдельно), многие писали напрямую в отладчиках - Paradise и OS126 (как я), в 2010-ых годах стали пользоваться кросс-ассемблером Морозова, с 2018-го года - кросс-ассемблером PDPy11.
Если кто и компилировал на БК этим Macro-11, так это пользователи ДВК и Электроники-60, потому что они так привыкли и, собственно, разрабатывали БКшные программы на "старших братьях". Я вообще не уверен, что в библиотеке игр БК наберётся хотя бы десяток, написанных на Macro-11.
В то время 10-01 реально отдельно стоящая машинка на родственном камушке, но ничего (по тихому) не умыкнувшая у старших. Честность - это главное ) Наоборот щедро продолжает радовать своими играмиНу так и я о том же. Все эти RT-11 и Macro-11 не для БК 0010.
А БК 0011М просто совместима с БК 0010, и это прекрасно. Добавили побольше памяти и палитр - ну так и нормально, что БКшные игроделы стали использовать эти возможности. Зачем перескакивать на новую операционную систему (RT-11), если можно по-старому писать как для БК 0010, только с большим объёмом памяти? Это логично. Плавный переход, не осложняет жизнь программистам.
конечно весь этот мыслепоток строго ИМХО и констатация разобщенности даже там, где её могло бы и не быть.Разобщённость кого с кем? В среде БКшников не наблюдаю разобщённости. Наоборот, прекрасный пример того, как с переходом на БК 0011М авторы операционных систем продолжали поддерживать и БК 0010. MKDOS, ANDOS, контроллер AltPro - весь этот софт и железо "из коробки" работают на обоих платформах.
А обособленность БКшников от мира RT-11 - это естественно и понятно: БК изначально создавался как домашний, а не промышленный компьютер. RT-11 там и не планировалась. На самом деле, БК 0011М такая же простая, как и БК 0010 - не стоит поддерживать иллюзию, что она хорошо подходит для задач, выполняемых обычно ДВК и PDP-11/70. Прелесть всех моделей БК именно в простоте - поэтому для них написали столько игр.
Manwe, только поправочка! В моё время на БК-1001 ничего из перечисленного вами не было ! )
Были только кассеты и прекрасные игрушки, Бейсик Вильнюс и Фокал.
Понятие не имею, почему вы так уверенно приписываете все эти левые оси десятой БКашке?
Календарно ? Вряд ли.
Да никто не использует на БК этот Macro-11.
Ага. Я заметил ) Особенно в исходниках нашей ув. Хранительницы )
Как можно писать под ВМ1 и не использовать ассемблер - самый красивый в мире?
Это не возможно ))) Единственный момент положительный в 11М - это возможность
работать с RT-11 и соотв. компиляторами-трансляторами, но в отличие от УК-НЦ,
штатный вариант системы без переделок не пашет и на ней.
Кстати, строго для архива, всё ещё ищется БКОС версии 1.1 которая видимо для
БК-11 делалась , прародительница более поздних версий (доработанная для БК,
RT-11).
Фирма " А Л Т "
В ПОМОЩЬ ПОЛЬЗОВАТЕЛЮ ТЕРМИНАЛЬНОГО КЛАССА
"ЭЛЕКТРОНИКА МС 0513"(БК0011)
МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ИСПОЛЬЗОВАНИЮ
ОПЕРАЦИОННОЙ СИСТЕМЫ ДЛЯ БК0011
БАРНАУЛ - 1991
А Н Н О Т А Ц И Я
Операционная система (ОС) - организованная совокупность
программ, которая действует как посредник между аппаратурой ЭВМ
и пользователем.
ОС обеспечивает пользователя набором средств для облегчения
проектирования, программирования, отладки, сопровождения прог-
рамм и управляет распределением ресурсов.
Ниже рассматривается одна из версий ОС РАФОС - операционной
системы с разделением функций. Ядром системы является м о н и -
т о р, связь с разнообразными внешними устройствами обеспечивают
программы - д р а й в е р ы, а основные функции обработки данных
реализуются соответствующими программами - у т и л и т а м и
(PIP, DUP и т.д.).
1. СОСТАВ ТЕХНИЧЕСКИХ СРЕДСТВ БК0011 В ТЕРМИНАЛЬНОМ КЛАССЕ.
МикроЭВМ " Электроника МС 0513 " ( БК0011 ) состоит из
одноплатной микроЭВМ МС 0513, клавиатуры ,источника питания и
видеомонитора. Основными техническими характеристиками микроЭВМ
"Электроника МС 0513" являются:
Тип микропроцессора - К1801ВМ1
Быстродействие - 700 тыс. опер./с
Общий объем памяти - 128 К байт
Объем адресуемой памяти - 64 К байт
Объем видеопамяти - 32 К байт (два плана)
Объем ПЗУ - 40 К байт
Внешнее ПЗУ - 2х8 К байт
Возможность отбражения
алфавитно-цифровой информации - 24 строки по 80 символа
24 строки по 64 символа
24 строки по 32 символа
Возможность отбражения
графической информации - 512х256 точек (ч/б)
256х256 точек (цвет)
Система команд - "Электроника 60"
В состав учебного вычислительного комплекса входит одно рабо-
чее место преподавателя (Р М П) и двенадцать рабочих мест
учащихся (Р М У). Отличие РМП от РМУ заключается в подключении
дополнительных периферийных устройств: сдвоенного накопителя
на гибких магнитных дисках "Электроника НГДМ 6022" или
"Электроника НГДМ 5309" и устройства печати D-100, D-100М
или ROBOTRON. Предусмотрена возможность подключения к микроЭВМ
магнитофона.
2. СОСТАВ ОС БК0011 (B11, версия - 1.1)
Операционная система - комплекс программ, записанных на специ-
ном диске, который называется системным. На системном диске
ОБЯЗАТЕЛЬНО должны присутствовать следующие программы:
B11SJ.SYS - монитор,(т.е "голова" операционной системы)-програм-
ма отвечающая за прием команд от пользователя, их
расшифровку и организацию их выполнения путем автома-
тического вызова с системнго диска необходимых для
этого программ из состава операционной системы.
SWAP.SYS - рабочий файл операционной системы.
TT.SYS - драйвер дисплея, т.е. программа, отвечающая за вы-
дачу символов на экран дисплея;
LP.SYS - драйвер печатающего устройства. Отвчает за управле-
ние печатающим устройством.
BY.SYS - драйвер накопителя на гибких магнитных дисках
(НГМД). Отечает за управление работой дисковода.
LD.SYS - драйвер логических дисков.
SL.SYS - драйвер редактора командной строки. Отвечает за ра-
боту функциональной клавиатуры, настройку БК0011 под
тип используемой клавиатуры и "вспоминание" пред-
шествующих команд по нажатию клавиши "стрелка
вверх". ( см. его описание ).
UCL.SAV - программа, обеспечивающая реализацию командного
языка пользователя;
DATIME.SAV - программа, обеспечивающая задание текущей даты и
стартовых команд операционной системы. Автоматичес-
ки выполняется при загрузке системы;
DIR.SAV - программа получения каталога файлов с диска;
DUP.SAV - программа обслуживания устройств. Отвечает за ини-
циализацию дисков и некоторые другие функции;
PIP.SAV - программа обмена. Отвечает за копирование дисков
и операции обмена.
Коме того, на системном диске ЖЕЛАТЕЛЬНО иметь следующие программы
NED.SAV - Текстовый редактор. Предназначен для создания
текстовых файлов. См. его описание.
COPW.SAV - Программа для копирования файлов при помощи лишь
одного дисковода. Применяется, если второй дисковод
неисправен, либо не обеспечивает должного качества
записи. Порядок работы с ней см. ниже.
PAGER.SAV - Программа постраничной печати текстовых файлов;
BADBL.SAV - Программа для проверки диска на наличие дефектных
блоков( о ней см. ниже ).
NETALT.SAV - Программа связи рабочих мест учеников(РМУ) с рабочим
местом преподавателя(РМП) для классов БК0011.
- - - Добавлено - - -
B11SJ.SYS - монитор
а не ? (!!!)
)))
В моё время на БК-1001 ничего из перечисленного вами не было ! )Было. Просто у обычного советского человека не было на это денег :)
Цитирую:
Системный адаптер предназначен для расширения возможностей микро-ЭВМ "Элек-
троника БК-0010" путем создания дополнительных каналов связи с внешними
устройствами и создания среды для работы дисковой операционной системы (DOS).
Такими устройствами являются: -накопитель на гибком магнитном диске,
-принтер,
-манипулятор "Мышь".
Для функционирования DOS адаптер имеет собственное запоминающее устройство как
для хранения данных, так и для размещения управляющих программ самой DOS.
И далее в том же документе:
С точки зрения программиста, устройство представляет собой дополнительную
память на 8 КБайт и восемь управляющих регистров. Память занимает адреса:
140000...147777 - для программ DOS,
150000...157777 - для данных,
и доступна как пословно,так и побайтно. При рестарте память дублируется в об-
ласть адресов 120000...127777, вместо ПЗУ с ФОКАЛом, обеспечивая тем самым ав-
тозапуск находяйщейся в ней программы. Карта памяти возвращается в исходное
состояние путем любого обращения по адресам 177611, 177613, 177615 или 177617,
но перед этим управление должно быть передано в область с "настоящими" адреса-
ми.
Были только кассеты и прекрасные игрушки, Бейсик Вильнюс и Фокал.Как видно из приведённого мной описания контроллера дисковода и дополнительной памяти, он был создан ещё до появления БК 0010.01 и Бейсика (а это середина 1986-го года). Иначе обязательно был бы описан способ подключения к БК с Бейсиком.
Понятие не имею, почему вы так уверенно приписываете все эти левые оси десятой БКашке? Календарно? Вряд ли.Потому что я работал в этих ОС именно на БК 0010.01.
Как можно писать под ВМ1 и не использовать ассемблер - самый красивый в мире?БК 0010 не тянула все эти макросы, поэтому для БК сразу же создали свои трансляторы ассемблера, без макросов. И отлично писали на этих ассемблерах. Программы от этого не стали менее красивыми.
Кстати, строго для архива, всё ещё ищется БКОС версии 1.1 которая видимо для БК-11 делалась, прародительница более поздних версий (доработанная для БК, RT-11).Есть в составе эмулятора gid'а - если выбрать конфигурацию БК 0011 с дисководом. Даже версия 1.0 с датой 21 апреля 1988-го года. Тогда уже были первые экземпляры БК 0011 и, естественно, контроллер дисковода.
SuperMax
30.09.2020, 19:48
Похоже внутри БКашников опять же разделение трудящихся (разобщение пролетариев),
мне не понять фанатизма по поводу старших БКашек - не пользовался, а эмулятор - ну и что там? Какие то левые оси и ковоки! Я прекрасно играл на БК 10-01 с кассетами и пищалкой, и был счастлив.
http://hobot.pdp-11.ru/gamgal.htm
Хочешь взрослую доступную машинку с RT-11 ? ;-) Ответ известен ! ) Только УК-НЦ.
тут следует отметить два момента
1. УКНЦ только частично совместима с PDP-11, те равно как и БК не имеет ДП
2. БК с данным AZ, при условии отключения ПЗУ (те проводок кинуть) будет полноценно работать с RT11 пусть и с программным терминалом.
Похоже AZ вариант для БК - отдельный не похожий на собратьев проект.
это верно тк прошивка будет другой
- - - Добавлено - - -
Manwe, только поправочка! В моё время на БК-1001 ничего из перечисленного вами не было ! )
Были только кассеты и прекрасные игрушки, Бейсик Вильнюс и Фокал.
Понятие не имею, почему вы так уверенно приписываете все эти левые оси десятой БКашке?
Календарно ? Вряд ли.
дисковод подключили сначала к 10ке - те был контроллер на ВГ93й
потом подключили КЖД от ДВК
в 90-91м уже был полноценный КНГМД + микродос в ПЗУ
а потом уже АНДОС появилась
вообще периферия у БК достаточно богатая
- мышка марсианка
- плоттер - именно для БК
- принтер струйный именно для БК
- джойстик тоже БКшный
- КНГМД + дисководы
не могу вспомнить, но ощущение что я про что-то забыл
Есть в составе эмулятора gid'
мне интерес образ дискеты с этой версией ОСБК, прямую ссылку можно организовать или выложить куда нибудь?
- - - Добавлено - - -
Было. Просто у обычного советского человека не было на это денег
в моём случае не было информации да и УК-НЦ аппетитней БКашки был по любому!
на фоне RT-11 все эти микродосы, и андосы с марсианками - смехота! ) я бы даже если бы знал не стал бы связываться, БК10-01 - это кассеты и игры (https://www.old-games.ru/forum/threads/fotki-nashix-raritetov.27601/page-2#post-797529) )
(на собирание РМ УК-НЦ в то время потратил
кучу времени и денег, приходилось терпеливо ждать и брать по кусочкам, первое время таскал 6022 на выходные из школы - мне доверяли преподаватели,
там был Олег Борисович - кстати его фотка на титульном листе книги про ДВК, и Юрий Вячеславич Ларин, огромная благодарность им за допуск в свой класс информатики, ведь я из соседней школы вообще был, парень с улицы по сути.)
- - - Добавлено - - -
1. УКНЦ только частично совместима с PDP-11, те равно как и БК не имеет ДП
эти тонкости в то время меня совершенно (как и сегодня) не волновали - ОМСИ ПАСКАЛЬ с МАКРОВСТАВКАМИ,
что ещё нужно для счастия? ))) Тем более в рамках SJ мониторчика ресурсов более чем достаточно на УК-НЦ.
мне интерес образ дискеты с этой версией ОСБК, прямую ссылку можно организовать или выложить куда нибудь?Пожалуйста: http://manwe.pdp-11.ru/Disks/BK_SYS.DSK (но пролежит недолго)
в моём случае не было информацииЯ заметил, что люди охотно верят статьям о чудесных открытиях американцев на заре развития вычислительной техники, а к статьям об отечественных разработках относятся с недоверием: "да ну, не могло тогда такого быть в СССР, привирают сторожилы!" и всё в таком роде :(
на фоне RT-11 все эти микродосы, и андосы с марсианками - смехота! ) я бы даже если бы знал не стал бы связыватьсяЭти системы отлично выполняли (и до сих пор выполняют) свои функции. Длинные имена файлов в MKDOS отлично подходят для БК. Я уж не говорю про каталоги.
БК10-01 - это кассеты и игрыПомучившись с магнитофоном, быстро понимаешь преимущества дисковода. А потом и винчестера. Это сейчас БК без ошибок грузит игры с iPhone на 8-кратной скорости. А тогда...
Кстати, у меня был такой же магнитофон ;)
но пролежит недолго
забрал! залил в раздел БК.
1. УКНЦ только частично совместима с PDP-11, те равно как и БК не имеет ДП
То есть все PDP-11 шли строго с ДП? Ну ну. С точки зрения архитектуры ЦП - она полностью совместима с PDP-11 - это позволяет для той же RT-11 написать только драйвер устройства загрузки.
То есть все PDP-11 шли строго с ДП? Ну ну. С точки зрения архитектуры ЦП - она полностью совместима с PDP-11 - это позволяет для той же RT-11 написать только драйвер устройства загрузки.
так их, Hunta - 11Mщиков !!! Закидаем их штатными копиями RT-11 )))
SuperMax
27.11.2020, 20:25
Приступил к AZ для БК
что в итоге будет:
1. сам контроллер AZ с кучей дисков и сетевой картой
2. оперативная память 32МБ с загрузкой с SD-карты и эмуляция всяких ПЗУ - те я думаю, можно будет реализовать концепцию с полным отключением всех ПЗУ в БК.
3. КНГМД с разъемом для подключения дисководов
4. RS232 - c возможностью переключения на TTL уровни + программное управление скоростью порта
5. AY-3-8910, возможно 2шт
6. Covox / стерео / 16bit
7. OPL2
8. перехват спикера
9. микшер звука
10. таймер с прерыванием для обработки звука и/или DMA контроллер для звука
весь звук выводится на i2s 16bit-цап и наружу через полноценный аудиотракт
11. Внешний VGA видеовыход - те поддержка legacy видео-режимов + новые; будет работать и на 10ке
SuperMax, подвесил бы тему, что бы не опускалась?
CodeMaster
04.12.2020, 09:00
подвесил бы тему, что бы не опускалась?
Актуальная тема никогда не опустится ;-)
SuperMax
04.12.2020, 18:37
SuperMax, подвесил бы тему, что бы не опускалась?
подвешу как начну писать и буду регулярно выпускать прошивки
сейчас жду ПЛИС - последний компонент застрял на таможне
уточнения по функционалу
1. сам контроллер AZ с кучей дисков,сетевой картой, сервером WEBDAV
эмуляция дисков:
- RT11 32МБ
- дискет
- образов HDD SMK512
2. оперативная память 32МБ с загрузкой с SD-карты и эмуляция всяких ПЗУ - те я думаю, можно будет реализовать концепцию с полным отключением всех ПЗУ в БК.
3. КНГМД со стандартным 40pin разъемом для подключения дисководов
4. RS232 полноценный с возможностью переключения на TTL 3.3V + программное управление скоростью порта
5. AY-3-8910 x2
6. Covox / стерео / 16bit
7. OPL2
8. Перехват спикера
9. микшер звука (те спикер, ковоксы, AY, OPL2 итд)
10. таймер с прерыванием для обработки звука и/или DMA контроллер для звука
весь звук выводится на 16bit-цап и наружу
11. Часы с календарем, питание от 2032
12. Синхронизация часов через Internet
13. Энергонезависимая память для сохранения настроек звука, конфигурации
14. VGA видеовыход, с поддержкой legacy режимов а также расширенной палитрой 15bit (5bit на канал)
поддержка образов дисков:
1. диски для RT11 - это уже есть
2. образа дискет - планируется
3. образа hdi - те "образ винта" - планируется
SuperMax
09.12.2020, 11:52
Проектирование AUDIO-тракта
Ковокс
технически у нас хороший стерео ЦАП 16bit с частотой дискретизации хоть в 500кГц
соответственно получается набор регистров
AСSL - 16bit левый канал
AСSR - 16bit правый канал
добавляем регистры для удобства работы
ACM - 16bit ковокс моно - те данные записанные туда попадут в AСSL и в AСSR
(если писать в старший байт то будет 8bit моно)
ACS - 8bit стерео covox - те младший байт это левый канал а старший правый
также добавим 177714 но надо понять как там сделаны ковоксы втч и стерео
кто может написать инструкцию по работе с ними ?
AY - 2шт
вопросы
реально надо 2шт ? делаем один на правый канал а второй на левый ?
в режиме моно тупо дублируем пришедшее на первый и кидаем на второй?
Я хочу сделать максимально удобно для программирования - соответственно кидайте идеи как это будет удобно использовать
те может 16bit регистр итд
Микшер
AMS - 16bit регистр громкости cпикера
AMC - 16bit регистр громкости ковоксов
AMY - 16bit регистр громкости AY
кто может написать инструкцию по работе с ними ?
Инструкция проста: mov #data, @#177714
чем быстрее херачить данные в порт, тем выше сэмплрейт.
Было три вида ковоксов:
самый распространённый вариант: моно 8 бит - использовался мл. байт порта 177714.
редкий вариант: стерео 8 бит - мл.байт - левый, ст. байт - правый. Или наоборот. Кто как провода спаяет.
теоретический, в природе не встречался: моно 16 бит - все 16 бит порта использовались под ковокс. Не взлетело из-за низкого быстродействия БК.
Все они строились из набора резисторов по схеме R-2R.
реально надо 2шт ?
Ну, одна уже приелась, а 3 или 4 - может уже перебор. Две в самый раз.
делаем один на правый канал а второй на левый ?
Предлагаю, классическое подключение, но с запараллеленными выходами AY: каналы А1,А2 - левый, B1,B2 - левый+правый, C1,C2 - правый.
Таким образом обычная трёхголосая музыка будет звучать как обычно.
А в режиме моно не надо дублировать, надо просто в микшере каналов AY объединить финально смикшированные левый и правый в один - моно.
И при этом может играть как трёх голосая мелодия так и 6-ти.
А возможно регистры AY посадить в адресное пространство, чтобы они были доступны по чтению/записи как обычные ячейки памяти? Чтобы прямо сразу туда писать, и даже делать арифметические операции над тоном.
Или нет смысла из-за того, что регистры тона, которые из двух байтов, всё равно не получится читать/писать за один раз как слово?
Или теоретически такое сделать можно, но получится неоправданно навороченная конструкция из кучи корпусов?
SuperMax
09.12.2020, 14:12
Инструкция проста: mov #data, @#177714
чем быстрее херачить данные в порт, тем выше сэмплрейт.
Было три вида ковоксов:
самый распространённый вариант: моно 8 бит - использовался мл. байт порта 177714.
редкий вариант: стерео 8 бит - мл.байт - левый, ст. байт - правый. Или наоборот. Кто как провода спаяет.
теоретический, в природе не встречался: моно 16 бит - все 16 бит порта использовались под ковокс. Не взлетело из-за низкого быстродействия БК.
Все они строились из набора резисторов по схеме R-2R.
понятно
соответственно добавлю включение ковоксов с 177714 как опцию которую можно отключить
Ну, одна уже приелась, а 3 или 4 - может уже перебор. Две в самый раз.
Предлагаю, классическое подключение, но с запараллеленными выходами AY: каналы А1,А2 - левый, B1,B2 - левый+правый, C1,C2 - правый.
Таким образом обычная трёхголосая музыка будет звучать как обычно.
логика понятна
А возможно регистры AY посадить в адресное пространство, чтобы они были доступны по чтению/записи как обычные ячейки памяти? Чтобы прямо сразу туда писать, и даже делать арифметические операции над тоном.
Или нет смысла из-за того, что регистры тона, которые из двух байтов, всё равно не получится читать/писать за один раз как слово?
Или теоретически такое сделать можно, но получится неоправданно навороченная конструкция из кучи корпусов?
можно так как это все в ПЛИС втч и сами AY
Хорошо, что можно. Но вот нужно ли? Что-то я подумав про варианты использования, начал сомневаться в полезности такого варианта.
При генерации музыки лучше всё таки буферизованный вариант - сперва подготавливаются данные для всех регистров в текущем кванте воспроизведения, а потом по-быстрому заливаются в регистры AY. Иначе могут начаться искажения, вызванные разным временем изменения данных в регистрах разных каналов.
А регистры в адресом пространстве удобны наверное для создания звуковых эффектов в играх, чтоб побыстрее и поменьше тактов тратилось на звук и побольше на игру. Но тогда они все должны быть 16 разрядными: регистр тона, амплитуды, микшера, а это уже прямо вообще отход от канонов и скорее всего будет отвергнуто обществом.
SuperMax
10.12.2020, 14:38
Хорошо, что можно. Но вот нужно ли? Что-то я подумав про варианты использования, начал сомневаться в полезности такого варианта.
При генерации музыки лучше всё таки буферизованный вариант - сперва подготавливаются данные для всех регистров в текущем кванте воспроизведения, а потом по-быстрому заливаются в регистры AY. Иначе могут начаться искажения, вызванные разным временем изменения данных в регистрах разных каналов.
А регистры в адресом пространстве удобны наверное для создания звуковых эффектов в играх, чтоб побыстрее и поменьше тактов тратилось на звук и побольше на игру. Но тогда они все должны быть 16 разрядными: регистр тона, амплитуды, микшера, а это уже прямо вообще отход от канонов и скорее всего будет отвергнуто обществом.
вопрос в удобстве программирования - те если это будет удобно писателям игр то я так и сделаю
SuperMax
15.12.2020, 15:27
Ну вот и свершилось!
пришли ПЛИС (и что важно - новые!) и разъемы под VGA нужного размера, а то в первой партии пришли суперслимы которые конечно можно запихнуть но они короче и немного другой шаг контактов на печатку
сегодня сборка!
- - - Добавлено - - -
Итак платы AZ BK
https://pic.maxiol.com/thumbs2/1608035147.3232235619.azbk100board0front.jpg (https://pic.maxiol.com/?v=1608035147.3232235619.azbk100board0front.jpg&dp=2)
https://pic.maxiol.com/thumbs2/1608035169.3232235619.azbk100board0back.jpg (https://pic.maxiol.com/?v=1608035169.3232235619.azbk100board0back.jpg&dp=2)
https://pic.maxiol.com/thumbs2/1608035181.3232235619.azbk100board1front.jpg (https://pic.maxiol.com/?v=1608035181.3232235619.azbk100board1front.jpg&dp=2)
https://pic.maxiol.com/thumbs2/1608035192.3232235619.azbk100board1back.jpg (https://pic.maxiol.com/?v=1608035192.3232235619.azbk100board1back.jpg&dp=2)
Теперь можно приступать к программированию
SuperMax
16.12.2020, 17:57
Проверил видео-ЦАП
https://pic.maxiol.com/thumbs2/1608130575.3232235619.photo2020121620044.jpg (https://pic.maxiol.com/?v=1608130575.3232235619.photo2020121620044.jpg&dp=2)
звук проверил тоже - идеально
но амплитуда на выходе 4В
может сделать меньше ?
те поставить другие резисторы в обратную связь ОУ
- 1,5 В
- 0.84 В
имеет смысл ?
но амплитуда на выходе 4ВПеребор, конечно. Полтора вольта стандарт, ну можно 2. Но не 4 же :)
SuperMax
16.12.2020, 19:28
Перебор, конечно. Полтора вольта стандарт, ну можно 2. Но не 4 же :)
ok
значит будет 1,5
Копейкин
16.12.2020, 22:27
Платы - красота! А можно звук будет переделать на уровень линейного входа усилителя - 300-500мВ?
SuperMax
17.12.2020, 05:36
Платы - красота! А можно звук будет переделать на уровень линейного входа усилителя - 300-500мВ?
можно
сейчас R15=R22= 4.7ком что примерно соответствует амплитуде 4В
можно поставить 1.8ком или 1ком
SuperMax
26.12.2020, 17:54
Баловство
https://pic.maxiol.com/thumbs2/1608994488.3232235619.photo2020122615100.jpg (https://pic.maxiol.com/?v=1608994488.3232235619.photo2020122615100.jpg&dp=2)
MM, я совсем не имею практики с БКашками в модификации отличной от классической БК0010-01 в коробочнойзаводской комплектации, у меня немного не по теме, а по фотке вопрос
https://pic.maxiol.com/thumbs2/1608994488.3232235619.photo2020122615100.jpg
этот бейсик создавался с нуля? по нему отдельные руководства?
принципиальные отличия и зачем его пришлось делать на замену Вильнюса распрекрасного?
Есть ли исходники этого бейсика?
SuperMax
28.12.2020, 08:39
MM, я совсем не имею практики с БКашками в модификации отличной от классической БК0010-01 в коробочнойзаводской комплектации, у меня немного не по теме, а по фотке вопрос
https://pic.maxiol.com/thumbs2/1608994488.3232235619.photo2020122615100.jpg
этот бейсик создавался с нуля? по нему отдельные руководства?
принципиальные отличия и зачем его пришлось делать на замену Вильнюса распрекрасного?
Есть ли исходники этого бейсика?
предлагаю создать отдельную тему, тут не стоит обсуждать бейсик
SuperMax
10.01.2021, 09:45
Обновления
AZ для БК-0010 БК-0010.01 БК-0011 БК-0011М, расширенная версия AZ (https://forum.maxiol.com/index.php?showtopic=5543)
Контроллер AZ BK: Процедура обновления firmware (прошивки) контроллера (https://forum.maxiol.com/index.php?showtopic=5550)
Выпущена первая тестовая прошивка, она предназначена для проверки компонентов и тренировки в обновлении firmware
Контроллер AZ BK: Обновления прошивки (https://forum.maxiol.com/index.php?showtopic=5553)
SuperMax
16.01.2021, 09:18
Разобрался с SDRAM, проектирую видеоконтроллер, соответственно сформировалось понимание как это будет работать и какие видеорежимы будут
количество строк - 256 - ничего не меняем
[количество точек в строке х количество цветов]
1. штатный 16кБ - 512х2 256х4
2. расширенный 32кБ - 512х4 256х16
3. расширенный 64кБ - 512х16 256х256
итого 6 видеорежимов
палитра 15bit [по 5bit на канал] остается 1bit - можно добавить как флаг мерцания
когда все заработает, займусь спрайтами и прочим
палитра 15bit [по 5bit на канал] остается 1bit - можно добавить как флаг мерцания
Мерцание - штука мало востребованная, возможно, лучше было бы иметь флаг яркости.
SuperMax
17.01.2021, 06:41
Мерцание - штука мало востребованная, возможно, лучше было бы иметь флаг яркости.
на управление яркостью уже выделено по 5 бит на канал ;-)
иначе говоря у нас есть техническая возможность отображать 15bit -> 32768 цветов
SuperMax
17.01.2021, 13:24
Вопрос по регистрам палитры
как я представляю:
для поддержки legacy режима 256х256
сделаю 4 регистра с палитрой (соответственно на каждую пару бит)
их можно будет крутить как угодно - выставляя лбое 15бит значение
(теперь можно будет менять цвет фона)
адреса - к примеру
177400-177406
для 512х256 будет работать пара 177400 (точка) и 177406 (нет точки)
при установки палитры через legacy регистр 177662, регистры 177400-177406 будут заполняться значениями соответствующими стандартной палитре БК11М
тем самым сохраняется полная совместимость с гибкостью
однако не все так просто:
рассматривая видеорежимы с большим числом цветов приходит понимание, что расходовать адресное пространство под регистры палитры не самая хорошая идея и тем более не правильно расходовать ресурсы ПЛИС под эти регистры.
Соответственно рождается другая концепция
два регистра
первый - адрес ячейки палитры
второй - значение палитры 15bit
получается, что для режима с 16тю цветами будут актуальны первые 16 палитр, для 256 цветов - 256ячеек
концепция совместимости с заполнением стандартными значениями сохраняется.
недостаток этой концепции один - для изменения значения палитры потребуется 2 операции - установка адреса и уже потом установка ее значения
нет возражений/предложений ?
вопрос - критично ли доступность этой палитры на чтение ?
----------
далее размышляя над возможностями видеосистемами, приходит идея с адресами строк: [как я понимаю в союз-неоне это как раз и сделано?]
те получается еще 3 регистра:
1. номер строки - 0-767
2. адрес - старшие 8bit
3. адрес - младшие 16bit
иначе говоря можно адресовать все 32МБ памяти как видеопамяти [за исключением служебной части, возможно будет сделано разделение банков]
нет возражений/предложений ?
вопрос - критично ли доступность этой палитры на чтение ?
Желательно, так можно будет не хранить копию таблицы палитр в основной памяти, а модифицировать значения прямо в регистрах.
Про видеосистему.
Аппаратный вертикальный, горизонтальный скроллинг планируется?
Битпланы реализовать возможно? С независимым скроллингом. Чтобы прям аппаратно спрайты двигать.
А ещё можно оставить на адрес только один регистр 16 бит, там будет не абсолютный адрес, а смещение, padding, или как там его.
{Абс.адрес строки} = padding * {ширина строки в байтах}
Что-то типа сегментного регистра в 80286. Потому что у строки есть фиксированная ширина, и предполагается, что строки не должны пересекаться.
SuperMax
18.01.2021, 12:00
Желательно, так можно будет не хранить копию таблицы палитр в основной памяти, а модифицировать значения прямо в регистрах.
ok
Про видеосистему.Аппаратный вертикальный, горизонтальный скроллинг планируется?
вертикальный - штатный регистр 177662
Битпланы реализовать возможно? С независимым скроллингом. Чтобы прям аппаратно спрайты двигать.
обдумаю
тк я изначально хотел сделать спрайты отдельно
А ещё можно оставить на адрес только один регистр 16 бит, там будет не абсолютный адрес, а смещение, padding, или как там его.
{Абс.адрес строки} = padding * {ширина строки в байтах}
Что-то типа сегментного регистра в 80286. Потому что у строки есть фиксированная ширина, и предполагается, что строки не должны пересекаться.
мысль понял. обдумываю,
у строки будет задаваться максимальная длина, а в остальном без ограничений
Про видеосистему.
Аппаратный вертикальный, горизонтальный скроллинг планируется?
Битпланы реализовать возможно? С независимым скроллингом. Чтобы прям аппаратно спрайты двигать.
Неужели будет поддержка AZ в вашем эмуляторе? :)
Мысль такая есть. Пока я жду, когда сформируется ТО на изделие, чтобы иметь представление, как оно должно функционировать, и с какого боку к нему подступиться. А заодно отдыхаю от умственных нагрузок, поэтому не хочу бежать впереди паровоза.
Попытка прикрутить эмулятор Менестреля, которая успехом не увенчалась, - показатель того, что я пока не в состоянии нормально функционировать.
Мысль такая есть.
Это было бы шикарно :) На реальной БК писать можно, конечно, но в эмуляторе средств отладки значительно больше.
SuperMax
20.01.2021, 16:40
c палитрой будет так:
нумерация кодов цветов
палитра коды цветов (адреса ячеек палитры)
256 0-256
16 256-272
4 273-276
2 277-278
разделение палитр без пересечения исключит необходимость перегрузки палитры при каждом изменении отображения
для инициализации палитр при старте сделал калькулятор
https://forum.maxiol.com/index.php?act=ST&f=88&t=5556&st=0#entry55113
он также пригодится для разработчиков тк упаковывает RGB в 15bit цвет
Можно тогда в формуле поднять частоту до 12 МГц, потому что именно на ней работает кварц. Могу путать, но вроде как ВП1-037 выдаёт два бита за такт на своих 6 МГц благодаря тому, что внешняя тактовая всё же 12 МГц.
Тогда получим 12000000/(128+512+128)/320 где 512 - число пикселей в монохромном режиме.
ВП1-37 вообще не выдаёт никаких бит. Через неё проходит только шина адреса. Всё, что она делает -- это раз в 8 тактов частоты 6 МГц выдаёт строб записи в регистр видеовывода. Дальнейшие события к ней не имеют никакого отношения.
Конкретно в БК-0010 сделано так: параллельно стоят два 8-битных сдвиговых регистра, один из которых содержит чётные, а второй -- нечётные биты слова. Они оба сдвигаются вправо с частотой 6МГц. Младшие два бита определяют цвет одной точки на "цветном" выходе, либо яркость двух точек на чёрно-белом через мультиплексор, управляемый фазой частоты 6 МГц.
Дополнительно, в 11М "цветной" двухбитовый код используется как часть адреса ПЗУ палитр. Кстати, в ПЗУ использована только четверть ёмкости, остальное забито нулями.
Частота 12 МГц нигде в БК не используется и есть только внутри генератора тактовой частоты.
- - - Добавлено - - -
что-то не то, ибо
1. 037ая тактируется 6MHz а не 4MHz
2. в строке >256 отсчетов иначе говоря есть еще время для обратного хода луча в строке
Логика 037 построена вокруг словных циклов, с частотой следования 6МГц/8. В строке таких циклов 48, что даёт стандартную длительность ТВ строки в 64мкс. 32 цикла используются для построения изображения, остальные 16 -- горизонтальное гашение. В каждом цикле одна половина отдаёётся видеоконтроллеру, даже на полях гашения, вторая может быть отдана процессору.
Это место, кстати, сделано криво, и 037 никак не может отдать процессору более половины временных окон доступа. Конкретно в десятке процессору достаётся максимум одна треть, что и определяет минимальное время исполнения команды в 12 тактов частоты 3 МГц. При более вменяемой реализации контроллера памяти можно было бы иметь пиковое быстродействие в полтора раза больше, если не ошибаюсь.
SuperMax
24.03.2021, 08:27
Статус на сегодня:
0. палитры работают как и описано ранее.
1. куча автоматов контроллера памяти SDRAM заработала
обслуживаются 3 запроса
- простое чтение слова
- пакетное чтение
- запись слова/байта
2. запросы будут поступать от
- чтение МПИ [уже работает]
- запись МПИ [уже работает]
- пакетное чтение строки для VGA [уже работает]
- чтение STM32 [в этапе проектирования]
- запись STM32 [в этапе проектирования]
3. арбитраж запросов - обслуживание запросов к оперативке согласно приоритета
максимальное ожидание данных ~600нс в случае конкуренции с уже выполняющимся длинным запросом
цикл записи - полностью синхронный - те RPLY идет сразу
цикл чтения - 120нс
+ есть еще поле для оптимизации
4. сейчас делаю маппер памяти - придумываю как сделать его универсальным тк стоит задача:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- 512КБ под SMK
- и вся остальная память
5. если интересно есть промежуточная версия которая грузит модифицированное ПЗУ КНГМД + работает с диском (образом дискеты)
сейчас ближайший план такой
- полный перехват ОЗУ в SDRAM - дабы можно было вывести на экран любую страницу памяти - как минимум для отладки
- полный вывод VGA уже из SDRAM [тк сейчас из внутриплисовой памяти]
[пока без новых режимов но они уже заложены в архитектуру]
- подключение STM к оперативке и операции с ней, загрузка ПЗУ
SuperMax
03.04.2021, 08:09
Можете меня поздравить! я таки запилил ф-ю ручного переключения видеорежимов!!!!
использую сочетание AR2 + KT
те можно будет перейти в монохром там где надо и в цвет где надо
- - - Добавлено - - -
Статус на сегодня:
добавилось:
1. полная теневая память БК11М в SDRAM
2. ручное переключение видеорежима (циклическое 1-2-3-4) по сочетанию AR2+KT
3. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
4. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
5. проведен рефакторинг кода VGA-модуля, унификация под 65MHz и отказ от 130MHz
план ближайший:
- перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
- подключение STM к оперативке и операции с ней, загрузка ПЗУ согласно конфига
Супер! Ждем дальнейших успехов! )
SuperMax
06.04.2021, 11:04
Корпус для AZ БК - практически финальная версия
https://pic.maxiol.com/thumbs2/1617696213.3232235619.photo2021040612285.jpg (https://pic.maxiol.com/?v=1617696213.3232235619.photo2021040612285.jpg&dp=2)
https://pic.maxiol.com/thumbs2/1617696223.3232235619.photo2021040612285.jpg (https://pic.maxiol.com/?v=1617696223.3232235619.photo2021040612285.jpg&dp=2)
https://pic.maxiol.com/thumbs2/1617696240.3232235619.photo2021040612285.jpg (https://pic.maxiol.com/?v=1617696240.3232235619.photo2021040612285.jpg&dp=2)
https://pic.maxiol.com/thumbs2/1617696250.3232235619.photo2021040612285.jpg (https://pic.maxiol.com/?v=1617696250.3232235619.photo2021040612285.jpg&dp=2)
SuperMax
11.04.2021, 18:11
Переделал палитры
концепция прежняя - полная гибкость, но я ее еще расширил:
управление палитрами будет через 2 регистра палитры первый - адрес ячейки палитры
второй - значение палитры 15bit
адреса ячеек палитры будут начинаться с большей
нумерация кодов цветов
палитра коды цветов (адреса ячеек палитры)
256 0-255
4x16 320-335
16 256-319
2 336-337
так получается полностью независимые палитры без пересечений
+ явный дубль стандартного функционала палитр, те можно переключать палитры как и ранее, но теперь доступна опция настройки каждой штатной палитры!
и как следствие палитры не надо будет перегружать при переключении видеорежима
для удобства формирования палитр сделал эксельку
https://forum.maxiol.com/index.php?s=&showtopic=5556&view=findpost&p=55113
основная задача этой эксельки - сформировать файл mif для загрузки дефолтной палитры при старте ПЛИС
также она пригодится разработчикам для пересчета цветов в 15bit
пояснения к блоку 4x16 320-335
это 16 наборов палитры, изначально туда грузятся штатные значения, но их можно менять на любые!
нумерация прямая - те нулевая палитра это 320-321-322-323 ячейки
следующие 4 ячейки это 1ая палитра и так далее
SuperMax
16.04.2021, 10:59
Концепция работы с памятью
https://forum.maxiol.com/index.php?s=&showtopic=5556&view=findpost&p=55394
предложения принимаются
SuperMax
03.05.2021, 07:54
Статус на сегодня
0. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
1. куча автоматов контроллера памяти SDRAM заработала
обслуживаются 3 запроса
- простое чтение слова
- пакетное чтение
- запись слова/байта
- чтение STM32
- запись STM32
2. запросы будут поступать от
- чтение МПИ [уже работает]
- запись МПИ [уже работает]
- пакетное чтение строки для VGA [уже работает]
- чтение STM32 [в процессе отладки]
- запись STM32 [в процессе отладки]
- чтение "DMA" для фоновых процессов - музыка итд
3. арбитраж запросов - обслуживание запросов к оперативке согласно приоритета
максимальное ожидание данных ~600нс в случае конкуренции с уже выполняющимся длинным запросом
цикл записи - полностью синхронный - те RPLY идет сразу
цикл чтения - 120нс
+ есть еще поле для оптимизации
4. реализовано ручное переключение видеорежима (циклическое 1-2-3-4) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
5. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
6. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
7. проведен рефакторинг кода VGA-модуля, унификация под 65MHz и отказ от 130MHz
8. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
9. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 50MHz (или 65Mhz-посмотрим) как следствие полностью новое слово доступно будет каждый такт
Сейчас процессе:
- STM и операции с ней, загрузка ПЗУ согласно конфига
SuperMax
08.05.2021, 10:53
Обновление документации: консоль и секция загрузки ПЗУ
Контроллер AZ BK: Документирование процесса разработки (https://forum.maxiol.com/index.php?s=&showtopic=5556&view=findpost&p=55473)
Выпустил прошивку - дабы уже можно было побаловаться палитрами и прочим
Контроллер AZ BK: Прошивка 00002 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=55475)
На БК11М и СМК невозможно из программы узнать текущее распределение памяти, приходится самому хранить информацию какие страницы куда включены и надеяться, что это так :) Хорошо бы такую возможность в AZ сделать )
SuperMax
11.05.2021, 15:18
На БК11М и СМК невозможно из программы узнать текущее распределение памяти, приходится самому хранить информацию какие страницы куда включены и надеяться, что это так :) Хорошо бы такую возможность в AZ сделать )
да, в SMK есть такое упущение
я планирую утрясти запросы SMK в модель управления памятью AZ где вся память управляется через явные регистры окон
соответственно если это получится, то состояние мапирования через SMK можно будет считать через регистры маппера AZ
С СМК есть проблема: http://bk0010.forum20.ru/forum/?id=37741
AZ не будет страдать таким глюком?
SuperMax
13.05.2021, 05:24
С СМК есть проблема: http://bk0010.forum20.ru/forum/?id=37741
AZ не будет страдать таким глюком?
как я понимаю да ибо придется тащить всю логику с SMK втч и
"В режимах 160 и 120 по адресам 140000-157777 происходит наложение ОЗУ СМК на ПЗУ БОС БК11."
что изначально должно вызывать глюки
но можно отказаться от наложения и подсовывать окна памяти только туда, куда можно не вызывая конфликтов
как я понимаю да ибо придется тащить всю логику с SMK втч и
"В режимах 160 и 120 по адресам 140000-157777 происходит наложение ОЗУ СМК на ПЗУ БОС БК11."
что изначально должно вызывать глюки
но можно отказаться от наложения и подсовывать окна памяти только туда, куда можно не вызывая конфликтов
Глюки происходят только на новоделе + СМК, а оригинальная БК с СМК работает как положено. Так что сэмулировать надо правильное поведение ОЗУ, на возникающие глюки никто не затачивает программы )
Я, собственно, спрашивал о том, не окажется ли AZ в такой же ситуации, что новодел с быстрой памятью тоже не сможет из него читать без всяких режимов эмуляции СМК?
Ещё вы не учитываете такой нюанс: у СМК 8 режимов работы, из них 4 предназначены для работы с БК10, и остальные 4 - для БК11.
То, что режимы работы с БК10 на БК11 использовать можно, ещё не означает, что это правильно и целесообразно.
И вообще, если бы делать по-нормальному, надо было бы делать не 16 страниц по 32 кб, из которых можно использовать по назначению только половину в каждый момент времени, а делать 32 страницы по 16 кб, и два независимых окна, на 100000-137777 и 140000-177777 с той же логикой, что и сейчас. Но тогда нужно делать отдельный регистр, т.к. в 177130 битов на такое не хватает. И если бы так сделали изначально, то плата получилась бы в 2-2,5 раза больше по площади и по корпусам больше примерно в столько же. Тогда бы такой контроллер стоил сильно дороже и его мало кто купить смог бы.
SuperMax
13.05.2021, 09:04
Глюки происходят только на новоделе + СМК, а оригинальная БК с СМК работает как положено. Так что сэмулировать надо правильное поведение ОЗУ, на возникающие глюки никто не затачивает программы )
Я, собственно, спрашивал о том, не окажется ли AZ в такой же ситуации, что новодел с быстрой памятью тоже не сможет из него читать без всяких режимов эмуляции СМК?
я возможно не совсем понял ситуацию - прошу поправить меня если я не прав:
1. SMK изначально работает некорректно накладывая ОЗУ и ПЗУ. Само по себе наложение уже есть источник конфликта.
те кто первый выставит RPLY, те данные будут приняты процессором, НО это прокатит только в том случае, если опоздание у второго абонента (как я понял это ОЗУ) будет достаточно большим
иначе, будет наложение информации в ответе будет мусор.
2. на обычной машине ПЗУ быстрее, чем ОЗУ, и как следствие разница во времени выставления RPLY достаточная и на чтение успешно отвечает ПЗУ, а ответ ОЗУ маскируется.
3. на быстром ОЗУ ответ идет почти одновременно и возникает конфликт на шине.
Соответственно в AZ конфликт устранить просто:
те я просто не буду отвечать на чтение в ОЗУ если у нас есть ПЗУ. В случае реплики, конфликт изначально не возможен тк ПЗУ у меня эмулируется той же памятью и одновременный ответ в принципе не является возможным.
И у меня вопрос а зачем наложение-то ? те какое практическое применение ?
- - - Добавлено - - -
Ещё вы не учитываете такой нюанс: у СМК 8 режимов работы, из них 4 предназначены для работы с БК10, и остальные 4 - для БК11.
То, что режимы работы с БК10 на БК11 использовать можно, ещё не означает, что это правильно и целесообразно.
И вообще, если бы делать по-нормальному, надо было бы делать не 16 страниц по 32 кб, из которых можно использовать по назначению только половину в каждый момент времени, а делать 32 страницы по 16 кб, и два независимых окна
я сейчас сделал разбивку всего адресного пространства на окна по 4кБ - те всего 16 окон
и каждому окну соответствует регистр с адресом (и дискретность получается в 4кБ)
так, я думаю будет удобно работать
на счет модели с ПЗУ думаю
может сделаю масочный регистр который будет задавать тип ответа на обращение
но сейчас при нагрузочном тесте оперативки из STM32 обнаружили глюки, соответственно ловим. а пока принимаются идеи.
1. SMK изначально работает некорректно накладывая ОЗУ и ПЗУ. Само по себе наложение уже есть источник конфликта.
Нет, СМК не работает некорректно, он изначально так задуман, это такая фича. И те, для кого наложение есть источник конфликта, сами и виноваты, надо использовать изделие не произвольно, а строго так, как было задуман разработчиком. А то, что рамки использования при этом резко сужаются, ну, зато не заоблачно дорого. Помните, в какое время контроллер разрабатывался? Какие цены и какая инфляция тогда была, все миллионерами были.
те кто первый выставит RPLY, те данные будут приняты процессором, НО это прокатит только в том случае, если опоздание у второго абонента (как я понял это ОЗУ) будет достаточно большим
иначе, будет наложение информации в ответе будет мусор.
Так и есть, это подтверждается разной работой реплики СМК и оригинального СМК-64 с оригинальной БК-11М. Причём как раз, то, что в реплике наложения не ощущается, очень расслабляет, а потом встреча с реальностью становится более тяжёлой.
2. на обычной машине ПЗУ быстрее, чем ОЗУ, и как следствие разница во времени выставления RPLY достаточная и на чтение успешно отвечает ПЗУ, а ответ ОЗУ маскируется.
Нет, такой ситуации не возникает.
3. на быстром ОЗУ ответ идет почти одновременно и возникает конфликт на шине.
там в оригинальном СМК использовалось ОЗУ, что-то типа HM64256LP-15, а RPLY выставляется логикой серии 555, что получается примерно как у БК по времени. Поэтому на шине получается электрическое ИЛИ из данных ПЗУ и ОЗУ.
А в реплике СМК RPLY выставляется ФПГА, делается это достаточно быстро, так, что ПЗУ БК ещё не успевает выставить своё RPLY поэтому с шины успевают прочитаться данные из ОЗУ СМК
Кстати, там не только на ПЗУ наложение, в режиме 100 на БК11 происходит наложение ОЗУ СМК на ОЗУ БК, правда как раз этот режим и предназначен для БК10 и на БК11 не рекомендуется.
И у меня вопрос а зачем наложение-то ? те какое практическое применение ?
Низачем, ну вот так вот получилось. Потому что, для всего этого используется одна единственная микросхема К555ТМ9, она хранит код режима, и один из битов (бит 6) является сигналом к отключению ПЗУ. Если усложнять схему, то получится дороже, больше корпусов, двухэтажная плата. Дорого. Вот насколько я помню, СМК-128 уже не взлетел, было продано единичное кол-во экземпляров, а там всего лишь вторым этажом было напаяно ещё две микросхемы ОЗУ на ОЗУ.
я сейчас сделал разбивку всего адресного пространства на окна по 4кБ - те всего 16 окон
и каждому окну соответствует регистр с адресом (и дискретность получается в 4кБ)
так, я думаю будет удобно работать
Тут, это, чем больше окон и чем они меньше, тем большее время тратится на переключение страниц в окнах. Иногда это бывает критично, в демках например.
Может лучше сделать 8 окон по 8Кб как заповедовано традициями архитектуры PDP? Хотя я считаю, что конкретно для БК11 нужны окна по 16Кб, это соответствует самой архитектуре БК11, хоть и неправильно, не по PDPшному.
SuperMax
13.05.2021, 13:50
Тут, это, чем больше окон и чем они меньше, тем большее время тратится на переключение страниц в окнах. Иногда это бывает критично, в демках например.
не думаю, что это будет сильно критично, но я не спец по демкам.
Может лучше сделать 8 окон по 8Кб как заповедовано традициями архитектуры PDP? Хотя я считаю, что конкретно для БК11 нужны окна по 16Кб, это соответствует самой архитектуре БК11, хоть и неправильно, не по PDPшному.
поясню откуда 4кБ
минимальный юнит согласно разбивке СМК получается как раз 4кБ:
ибо к примеру у нас со 160000 до 167777 ПЗУ
а потом уже к примеру ОЗУ со 170000
на счет 16кБ согласен, я изначально тоже прикидывал, что будет удобнее манипулировать 16кБ страницам, но вот SMK тут все испортил ибо совместимость с ним надо делать.
сейчас в AZ будет доступно 8 окон, младшие 8 - на вырост, те когда отцепим от шины 37ую
или сделаем другую БК
Низачем, ну вот так вот получилось. Потому что, для всего этого используется одна единственная микросхема К555ТМ9, она хранит код режима, и один из битов (бит 6) является сигналом к отключению ПЗУ. Если усложнять схему, то получится дороже, больше корпусов, двухэтажная плата. Дорого. Вот насколько я помню, СМК-128 уже не взлетел, было продано единичное кол-во экземпляров, а там всего лишь вторым этажом было напаяно ещё две микросхемы ОЗУ на ОЗУ.
те мне правильно эмулировать эту ситуацию явно блокируя чтение из ОЗУ при наличии ПЗУ там ?
а запись в пусть остается ? или тоже заблокировать?
те мне правильно эмулировать эту ситуацию явно блокируя чтение из ОЗУ при наличии ПЗУ там ?
а запись в пусть остается ? или тоже заблокировать?
Да. Да. Нет.
Вообще, если ресурсы позволят, я бы сделал 2 в одном: смоделировал СМК прям как есть 1 в 1, со всей его кривостью, чисто для совместимости, и параллельно - нормальный менеджер памяти, с продуманной логикой работы и режимами.
- - - Добавлено - - -
минимальный юнит согласно разбивке СМК получается как раз 4кБ:
ибо к примеру у нас со 160000 до 167777 ПЗУ
а потом уже к примеру ОЗУ со 170000
Ну да, именно отсюда, из-за того, что для работы с HDD нужно иметь ОЗУ, и его воткнули в адреса 170000-176777 и получился сегмент в 4 кБ, но фактически в СМК манипуляции делаются пачками по 4 сегмента, 16 кбайтными кусками памяти.
Не знаю, возможно ли это, но было бы лучше делать размер сегментов 8кБ, но один спец. сегмент делать из 4кб ПЗУ и 4 кб ОЗУ (если такое возможно), садящийся в BS7 и только когда пользователю очень надо, он сам в BS7 подключает какой-нибудь свой сегмент ОЗУ, на свой страх и риск. Причём для BS7 делать аппаратное обрубание последних полкилобайта, чтобы регистрам не мешало.
Только пока не знаю, как с такой стратегией сделать модификацию адреса запуска в 177716, то ли в этом же спец сегменте делать стартовый спец режим, с набором исключений, типа последние полкилобайта не отрубать, а ПЗУ продублировать, как в СМК сделано, то ли ещё чего придумывать.
SuperMax
30.05.2021, 18:36
а мы таки с AFZ победили интерфейс с STM к оперативке
нашли одну ошибку
много оптимизировали и только под конец обнаружили, что два таймера нам ломали цикл обмена
что давало 6-15 ошибок на 32мегабайта
соответственно завтра займусь прошивкой для новодела БК
и на счет блиттера, я честно не понял что именно надо сделать
(те я понимаю что речь о наложении )
но вот как это надо сделать удобным для программирования - не представляю
соответственно прошу придумывать ТЗ на блиттер
SuperMax
04.06.2021, 10:33
Сегодня утром зафиксировал баг в квартусе, точнее в его оптимизаторе автоматов состояний: эта зараза так оптимизирует автомат, что может его тупо остановить.
Короче еще успешный шаг вперед.
upd: точнее это не баг, а следствие действий оптимизатора, который делает автомат в onehot и как следствие у него появляются запрещенные состояния, в которые он и влетает
лечится явной установкой кодирования автомата или установкой safe
upd: точнее это не баг, а следствие действий оптимизатора, который делает автомат в onehot и как следствие у него появляются запрещенные состояния, в которые он и влетает
лечится явной установкой кодирования автомата или установкой safe
Макс, а ты на каком языке пишешь? В VHDL для этого есть ветка others, в Verilog -- default. Нормальные компиляторы ругаются на их отсутствие.
SuperMax
07.06.2021, 19:01
Макс, а ты на каком языке пишешь? В VHDL для этого есть ветка others, в Verilog -- default. Нормальные компиляторы ругаются на их отсутствие.
verilog
ветка конечно описана, но (!) оптимизатору на нее пофиг
лечится
Мне помогало никогда не проверять на то значение, которое onehot.
SuperMax
08.06.2021, 13:04
Мне помогало никогда не проверять на то значение, которое onehot.
тут речь немного о другом - изначально автомат обычный:
localparam STATE_STM_WAIT = 3'd0; // ждем =0 на STM_U_QBUS_IN_L
localparam STATE_STM_CLANK1= 3'd1; // антизвон
localparam STATE_STM_CLANK2= 3'd2; // антизвон
localparam STATE_STM_CLANK3= 3'd3; // антизвон
localparam STATE_STM_FLAG = 3'd4; // ждем установки флагов операции
localparam STATE_STM_DATA = 3'd5; // запоминаем данные для команды
localparam STATE_STM_OPER = 3'd6; // выполняем операцию
localparam STATE_STM_END = 3'd7; // ждем завершения - снятия синка
reg [2:0] state_stm /* synthesis syn_encoding="safe" */;
reg [2:0] next_state_stm;
always @ (posedge CLK)
begin
state_stm<=next_state_stm;
end
//
wire stm_sync=STM_DA_OUT[8];
always @ *
begin
case (state_stm)
STATE_STM_WAIT:
if(STM_U_QBUS_IN_L==0)
next_state_stm=STATE_STM_CLANK1;
else
next_state_stm=STATE_STM_WAIT;
STATE_STM_CLANK1:
next_state_stm=STATE_STM_CLANK2;
....
default:
next_state_stm=STATE_STM_WAIT;
endcase
end
но оптимизатор переделывает автомат в onehot
и если работать без /* synthesis syn_encoding="safe" */;
и так как управляющие сигналы - асинхронщина, то шанс влететь в запрещенное состояние становится очень большим
соответственно можно или сказать
/* synthesis syn_encoding="safe" */; - те сделать защитную логику
или вообще указать тип кодирования явно
да, собирая грабли я таки вычистил тормозящие куски и теперь оперативка на 130MHz полноценно пашет
c палитрой будет так:
нумерация кодов цветов
палитра коды цветов (адреса ячеек палитры)
256 0-256
(---)
А зачем? Зачем прибивать разрядность палитры к диапазону адресов? Я бы просто сделал начальный адрес палитры и разрядность цвета. И пусть программист сам делит доступный ему бюджет регистров палитры, как хочет.
Зачем это прокрустово ложе?
- - - Добавлено - - -
тут речь немного о другом - изначально автомат обычный:
но оптимизатор переделывает автомат в onehot
и если работать без /* synthesis syn_encoding="safe" */;
и так как управляющие сигналы - асинхронщина, то шанс влететь в запрещенное состояние становится очень большим
Интересные дела. То есть, почему onehot -- понятно, в большинстве случаев это сильно упрощает автомат. Но вот такое поведение -- это явно некорректная опимизация при указанном default.
Я предполагал классические косяки с casex, но для них тут нет места. Хм. Про комбинаторику даже не знаю, что сказать, это какой-то позор в синтезаторе.
Тем не менее, я бы переписал на синхронный код. Тут у синтезатора гораздо меньше шансов проявить свободу своей хулиганской воли.
PS: Вообще, когда я только начал работать на реальный кремний (2004), мне было сразу сказано, что /* synthesis ... */ в коде -- это заметание мусора под ковёр. Ни одного опровержения по сей день не видел.
SuperMax
10.06.2021, 07:43
А зачем? Зачем прибивать разрядность палитры к диапазону адресов? Я бы просто сделал начальный адрес палитры и разрядность цвета. И пусть программист сам делит доступный ему бюджет регистров палитры, как хочет.
Зачем это прокрустово ложе?
поясни идею
чем плохо наличие персональной палитры у каждого цвета у каждого видеорежима и штатной палитры?
это явно дает гибкость и сохраняет полную совместимость с легаси
к примеру новое ПО использует штатный видеорежим, и штатные палитры
но в AZ задаются более точные цвета - фон к примеру
программа получается будет просто более красиво выглядеть на AZ
или (что более вероятно) будет добивка кода в старое ПО где будет задаваться расширенная палитра и режим отображения
к примеру в land вставить явное переключение в мнохром и сделать фон не черным а темнокрасным
и менять его от уровня к уровню
Интересные дела. То есть, почему onehot -- понятно, в большинстве случаев это сильно упрощает автомат. Но вот такое поведение -- это явно некорректная опимизация при указанном default.
Я предполагал классические косяки с casex, но для них тут нет места. Хм. Про комбинаторику даже не знаю, что сказать, это какой-то позор в синтезаторе.
Тем не менее, я бы переписал на синхронный код. Тут у синтезатора гораздо меньше шансов проявить свободу своей хулиганской воли.
PS: Вообще, когда я только начал работать на реальный кремний (2004), мне было сразу сказано, что /* synthesis ... */ в коде -- это заметание мусора под ковёр.
Ни одного опровержения по сей день не видел.
тут 2 варианта решения - или safe или явное указание кодирования, последнее концептуально более правильно тк в прямом кодировании нет запрещенных состояний у этого автомата
если говорить о правильности то вообще надо сделать иначе
SuperMax
10.06.2021, 20:28
Занялся разработкой стартовой "ПЗУ"
Возникли вопросы:
1. есть ли готовый код определения типа БК ?
2. правильно ли я насчитал варианты:
;БК-10
;- с неотключаемым фокалом
;- с отключаемым бейсиком
;- с отключаемым бейсиком и монитором
;БК-11
;?
;БК-11М
;- обычная
;- новодел с отключаемым монитором
или есть еще варианты ?
особо волнует новодел БК11 тк его у меня нет
поясни идею
В смысле? Что тут пояснять? rgb = palette[colorIndex + paletteOffset];
чем плохо наличие персональной палитры у каждого цвета у каждого видеорежима и штатной палитры?
Бесполезностью. Бессмысленная трата адресного пространства палитр, которое и так маленькое. Искусственное ограничение, которое не приносит никакой пользы, но потенциально может принести много вреда.
это явно дает гибкость
Наоборот, это даёт жёсткость. Гибкость -- это то, что предлагаю я.
и сохраняет полную совместимость с легаси
Мой вариант -- тоже сохраняет полную совместимость.
к примеру новое ПО использует штатный видеорежим, и штатные палитры
Напоминаю, что штатно в БК НЕТ программного выбора видеорежима. Вообще нет. Это не УКНЦ.
SuperMax
11.06.2021, 08:47
В смысле? Что тут пояснять? rgb = palette[colorIndex + paletteOffset];
оно еще проще:
цвет на выходе = VideoModeOffset + PaletteOffset + ColorIndex ;
Бесполезностью. Бессмысленная трата адресного пространства палитр, которое и так маленькое. Искусственное ограничение, которое не приносит никакой пользы, но потенциально может принести много вреда.
поясни в чем ограничение
Напоминаю, что штатно в БК НЕТ программного выбора видеорежима. Вообще нет. Это не УКНЦ.
штатно - нет и это недостаток который я устраняю
1. есть ли готовый код определения типа БК ?
Есть, классика - запись в регистр 177662:
BK10=0 ;флаг машины БК10
BK11=1 ;флаг машины БК11
mov #bk10, @#4
mov #40000, @#177662 ;на БК10 будет trap to 4
mov #BK11, Machine
br go_next
bk10: mov #BK10, Machine
go_next: ...
или есть еще варианты ?
обычная БК11М с отключаемым монитором, в принципе и обычная БК11 с отключаемым монитором, т.к. это - необходимая доработка для работы с любым контроллером АльтПро. (то, что на БК11 без М работать с контроллерами АльтПро неудобно и сложно, но можно, другой вопрос)
SuperMax
13.06.2021, 22:20
Выложил прошивку 00003
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2-3-4) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
3. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
перехват запросов SMK сделан, но не включен
4. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
5. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
6. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 130MHz как следствие полностью новое слово доступно будет каждый процессорный такт
7. загрузка ПЗУ в память полностью реализована
8. Реализовано распознавание новодела БК11М и подключение ПЗУ (надо оттестировать тк у меня нет новодела)
должны отвечать регистры
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-342
загрузчик
177000
После reset машина стартует автоматически и загружается со второго образа в ini-файле (cейчас там ANDOS - ANSYS.IMG)
Контроллер AZ BK: Прошивка 00003 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=55594)
Выложил прошивку 00003
8. Реализовано распознавание новодела БК11М и подключение ПЗУ (надо оттестировать тк у меня нет новодела)
Вау! Сегодня затестим))
SuperMax
14.06.2021, 08:16
Статус на сегодня
0. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
1. куча автоматов контроллера памяти SDRAM заработала
обслуживаются 3 запроса
- простое чтение слова
- пакетное чтение
- запись слова/байта
- чтение STM32
- запись STM32
- чтение DMA
- запись DMA
2. запросы будут поступать от
- чтение МПИ [уже работает]
- запись МПИ [уже работает]
- пакетное чтение строки для VGA [уже работает]
- чтение STM32 [уже работает]
- запись STM32 [уже работает]
- чтение "DMA" для фоновых процессов - музыка итд ? [протестировано]
- запись "DMA" - те задел для реализации блиттера [протестировано]
но мне нужно ТЗ на него ибо я плохо представляю что именно надо сделать (те нужно сформулировать какой контроллер блиттера будет удобен в программировании на БК)
3. арбитраж запросов - обслуживание запросов к оперативке согласно приоритета
максимальное ожидание данных ~600нс в случае конкуренции с уже выполняющимся длинным запросом
цикл записи - полностью синхронный - те RPLY идет сразу
цикл чтения - 120нс
+ есть еще поле для оптимизации
4. реализовано ручное переключение видеорежима (циклическое 1-2-3-4) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
5. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
6. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
7. проведен рефакторинг кода VGA-модуля, унификация под 65MHz и отказ от 130MHz
8. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
9. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 130Mhz-посмотрим как следствие полностью новое слово доступно будет каждый такт
10. Память запущена на 130MHz благодаря рефакторингу кода
11. Загрузка ПЗУ - через STM и операции с ней, загрузка и эмуляция ПЗУ согласно конфига
12. Стартовая последовательность, те сейчас AZ берет БК за рога и управляет ее стартом полноценно
13. сделан полный жесткий тест оперативки через интерфейс STM32, работает, но не придумал как его вызывать штатно. возможно будет отдельный конфиг ?
Явное вынесение кода старта в ПЗУ (образ ПЗУ в виде файла) позволяет подключаться другим разработчикам и развивать платформу
Сделанное - документируется
Контроллер AZ BK: Документирование процесса разработки (https://forum.maxiol.com/index.php?s=&showtopic=5556&view=findpost&p=55473)
----------------------------------
Что осталось сделать:
FPGA:
F3. трансляция запросов к мапперу SMK512 в мой маппер
F4: эмуляция HDD
F5: эмуляция AY
F6: эмуляция FDD
F7: эмуляция Covox-а
F8: расширенные видеорежимы
F9: COM-порт
F10. DMA контроллер для звука
F11. контроллер блиттера
STM32:
S1. Поддержка большого количества образов дискет - те как в SMK - 127 образов
S2: включение сети (cеть и сейчас работает но включать-выключать руками)
177220 <-110 включить
177220 <-0 выключить
S3/F4: поддержка HDD образов и эмуляция HDD с регистрами
Принимаются пожелания по приоритетам - те что следующее взять в работу
также прошу прислать баг-репорты
SuperMax
15.06.2021, 13:57
Так как я хочу сделать AZ _удобным_ для разработки, я ориентируюсь на программистов
Соответственно мне нужны ТЗ для следующих задач:
F5: эмуляция AY
F7: эмуляция Covox-а
те речь идет о том, что да, я буду делать поддержку легаси обращений к AY и Covox
но и хочу сделать это удобным
ибо как я писал ранее - я делаю новые регистры в которые будут падать данные из легаси 177714
F13: эмуляция OPL2
(вообще не думал)
F12: часы
тут много вариантов и важно сделать это удобным
F11. контроллер блиттера
я конечно понимаю что это какой-то автомат который копирует куски памяти откуда-то и куда-то с какой-то операцией - наложение или сложение или ?
но в остальном нужно ТЗ от программиста
-------------
тк пожеланий пока следующей задаче не поступило, займусь изучением реверса 128й
Что осталось сделать:
FPGA:
F3. трансляция запросов к мапперу SMK512 в мой маппер
F4: эмуляция HDD
F5: эмуляция AY
F6: эмуляция FDD
F7: эмуляция Covox-а
F8: расширенные видеорежимы
F9: COM-порт
F10. DMA контроллер для звука
F11. контроллер блиттера
STM32:
S1. Поддержка большого количества образов дискет - те как в SMK - 127 образов
S2: включение сети (cеть и сейчас работает но включать-выключать руками)
177220 <-110 включить
177220 <-0 выключить
S3/F4: поддержка HDD образов и эмуляция HDD с регистрами
Принимаются пожелания по приоритетам - те что следующее взять в работу
также прошу прислать баг-репорты
По мне так лучше такой порядок:
Эмуляция SMK
HDD
AY
Новые видеорежимы
Часы
а дальше уже остальное :)
SuperMax
15.06.2021, 19:58
По мне так лучше такой порядок:
Эмуляция SMK
HDD
AY
Новые видеорежимы
Часы
а дальше уже остальное :)
да будет так
но потребуется помощь зала ;-)
ибо в дебрях SMK я могу заплутать
да будет так
но потребуется помощь зала ;-)
ибо в дебрях SMK я могу заплутать
Ну чем смогу - помогу ))
F12: часы
тут много вариантов и важно сделать это удобным
В AnDos дата файлов хранится по стандарту FAT12:
---
Время и дата
Двухбайтовая отметка даты имеет следующий формат:
биты 0–4 — день месяца, допускаются значения 1–31;
биты 5–8 — месяц года, допускаются значения 1–12;
биты 9–15 — год, считая от 1980 года («эпоха MS-DOS»), возможны значения от 0 до 127 включительно, то есть 1980–2107 годы.
Двухбайтовая отметка времени имеет следующий формат:
биты 0–4 — счётчик секунд (по две), допустимы значения 0–29, то есть 0–58 секунд;
биты 5–10 — минуты, допустимы значения 0–59;
биты 11–15 — часы, допустимы значения 0–23.
---
Можно в таком формате и хранить дату-время в определенном регистре или ячейке памяти из некой "системной области", куда AZ будет писать это время, а программа может читать, когда надо.
Именно дата файлов, которая присутствует в AnDos, очень помогает разобраться в том, какие спрайты ты только что исправил, какие объектники сегодня скомпилил, а какие старые :) Вот время создания файла не хранится (эти поля в каталоге AnDos использует под адрес запуска, по-моему), и это не позволяет различать старые файлы в течении одних суток. Но ни в одной другой ДОС под БК по-моему и даты-то нет, как ни странно. С появлением часов можно AnDos попробовать пофиксить, чтобы сама дату/время брала. Ну и некоторые там обещали новую ДОС с FAT32 - там сразу это внедрить можно :)
А значит и хранить удобнее в таком формате, чтобы не преобразовывать из unixtime или еще из какой формы. Взял готовое и закинул.
А насчет "системной области" - там можно хранить массивы данных как от AZ (дата-время, конфигурация памяти, счетчик "сколько проигралось музыки на covox в фоне" и т.д.), так и обмениваться с ним массивами данных для девайсов - значения микшера вывода звука и т.д.
F12: часы
тут много вариантов и важно сделать это удобным
К обычным часам, которые аппаратно будут формировать год-месяц-день, часы-минуты-секунды (опционально миллисекунды), это чтоб ресурсы БКшки не тратить на расчёты по получению текущего времени, не забыть "высокоточный таймер", ну относительно высокоточный, 32-х битный, который считает количество тиков с момента подачи питания, можно даже как в ПК - один тик == 100нс, если для БК это слишком избыточно, можно увеличить до 1мкс
SuperMax
16.06.2021, 12:16
К обычным часам, которые аппаратно будут формировать год-месяц-день, часы-минуты-секунды (опционально миллисекунды), это чтоб ресурсы БКшки не тратить на расчёты по получению текущего времени, не забыть "высокоточный таймер", ну относительно высокоточный, 32-х битный, который считает количество тиков с момента подачи питания, можно даже как в ПК - один тик == 100нс, если для БК это слишком избыточно, можно увеличить до 1мкс
да, согласен, systic точно нужно
получается два таймера - регистра в плис
1. 64bit - 1мс - абсолютный systic
2. 32bit - 1мкс - локальный
SuperMax
17.06.2021, 07:36
обновил образ к прошивке
походу я неверно написал определение реплики и на ней не было запуска
вчера отключил ПЗУ на своей БКшке и все проверил
фотки технологии доработки - те возможности отключения 324й пзу
сначала режем дорожку к 23й ноге
затем ставим 1ком SMD резистор (как тут и стоял!)
https://pic.maxiol.com/thumbs2/1623904532.3232235619.img4718.jpg (https://pic.maxiol.com/?v=1623904532.3232235619.img4718.jpg&dp=2)
и тянем проводок к B6 разъема МПИ
https://pic.maxiol.com/thumbs2/1623904437.3232235619.img4717.jpg (https://pic.maxiol.com/?v=1623904437.3232235619.img4717.jpg&dp=2)
Теперь запустилось успешно! (https://youtu.be/8M46OC1UxqQ)
Это новодел БК11М от Воланда.
Ура! ))
SuperMax
21.06.2021, 10:47
Перезапуск БК - сделал инструкции:
Кнопка перезапуска на AZ (https://forum.maxiol.com/index.php?showtopic=5556&pid=55614&st=0&#entry55614)
Кнопка RESET на БК (https://forum.maxiol.com/index.php?s=&showtopic=5012&view=findpost&p=55613)
SuperMax
25.06.2021, 17:20
Сделал канал в телеграме
Канал оперативной поддержки всего что связано с контроллерами серии AZ (https://t.me/pdp11_az)
SuperMax
28.06.2021, 20:58
Выложил прошивку 00004
является небольшой коррекцией предыдущей
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2-3-4) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
3. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
перехват запросов SMK сделан, но не включен
4. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
5. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
6. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 130MHz как следствие полностью новое слово доступно будет каждый процессорный такт
7. загрузка ПЗУ в память полностью реализована
8. Реализовано распознавание новодела БК11М и подключение ПЗУ
должны отвечать регистры
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
После reset машина стартует автоматически и загружается со второго образа в ini-файле (cейчас там ANDOS - ANSYS.IMG)
Изменения:
- внесена коррекция в стартовую последовательность, теперь STM32 явно дожидается подъема RESET и только потом разрешает прерывания от RESET
- снижена частота обмена с сетевой картой тк новая партия сетевух отказалась работать на SPI 21Mbit, соответственно скорость обмена с сетевой картой теперь 10.5Mbit
- внесена коррекция в технологию синхронизации захвата строки при перегрузки из оперативки в буфер показа
- стартовая ПЗУ со 170000 теперь определяет конфигурацию машины, сохраняет битовую маску занятых окон, различает БК10/11M и записывает тип машины в регистр. также проверяет соответствие аппаратной прошивке и при отличии версий, включает "сирену" явно обозначая проблему.
Интересны результаты запуска на БК-0010-01 втч и новой где отключается монитор
Контроллер AZ BK: Прошивка 00004 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=55643)
SuperMax
30.06.2021, 16:45
Походу требуется помощь зала на счет SMK
взял тест ALT_test.v475F.asm
с самого начала получаю такой матюг
https://pic.maxiol.com/thumbs2/1625059060.3232235619.photo2021063020112.jpg (https://pic.maxiol.com/?v=1625059060.3232235619.photo2021063020112.jpg&dp=2)
16ая страница (всего получается 16ть страниц по 32кБ)
с кодом 0020 уже подключали с 0120
как его правильно расшифровать ?
те в чем тут суть проверки и что именно не так ?
далее
вот есть такая схема распределения памяти
https://forum.maxiol.com/index.php?act=Attach&type=post&id=9916
из нее следует, если я правильно понял, что в режиме 140 с адреса 170'000 176'777 подключается сегмент 7
или таки нет ?
но при этом тест ALT_test.v475F.asm
ругается так:
https://pic.maxiol.com/thumbs2/1625058991.3232235619.photo2021063020112.jpg (https://pic.maxiol.com/?v=1625058991.3232235619.photo2021063020112.jpg&dp=2)
те режим 140
получается сегмент 7 ответил кодом 6 (ОЗУ) а ожидалось пусто ?
отключить не проблема, но я хочу понять как правильно - те как тогда 7й сегмент появляется в 140ом режиме
далее разбираем с самого начала
те режим 160
согласно картинке, подключены сегменты 0 1 7 6
а в сообщении об ошибке сегменты 0 1 2 3
как расшифровать сообщение ?
если трактовать что это номера окон - те
0 это 100'000 - 107'777
1 это 110'000 - 117'777
тогда получается, что с эти адресов ответила оперативка самой БКшки
и тут вопрос - разве ее отключение в верхнем окне не делается программно через 177716 ?
(те записывается туда бит подключения внешнего ПЗУ и штатное ОЗУ в верхнем окне отключается и не мешает отвечать внешнему контроллеру)
Это нужно GID'а спросить, он автор тестов, кому как не ему знать, что означают его сообщения :) К тому же, он точно выяснил что когда должно подключаться, ведь в его эмуляторе поддержка СМК реализована полностью.
SuperMax
30.06.2021, 18:29
тут мне подсказали что SMK сам отключает ОЗУ БК11 от окна 1, это на самом деле так ?
если да, то КАК ?
Согласно документации
https://pic.maxiol.com/thumbs2/1625069131.3232235619.capture.png (https://pic.maxiol.com/?v=1625069131.3232235619.capture.png&dp=2)
отключить окно1 можно штатными средствами через регистр 177716
те записав туда 4020
https://pic.maxiol.com/thumbs2/1625065297.3232235619.capture.png (https://pic.maxiol.com/?v=1625065297.3232235619.capture.png&dp=2)
те подключив в это окно ПЗУ ЛВС которого нет, но благодаря этому память будет отключена - cм схема
https://forum.maxiol.com/index.php?s=&showtopic=3714&view=findpost&p=55063
https://pic.maxiol.com/thumbs2/1625065179.3232235619.capture.png (https://pic.maxiol.com/?v=1625065179.3232235619.capture.png&dp=2)
cигнал CE для ПЗУ выходит на разъем МПИ на ногу A22, что позволяет использовать это разрешение для работы (но в нашем случае этого не требуется)
смотрю на печатку SMK512
https://pic.maxiol.com/thumbs2/1625065526.3232235619.capture.png (https://pic.maxiol.com/?v=1625065526.3232235619.capture.png&dp=2)
вижу что A22 идет в ПЛИС
в теории можно было бы попробовать поднять на A22 единицу и отключить ОЗУ, но это еще и выход регистра - КР555ТМ9 (D36 на схеме)
https://pic.maxiol.com/thumbs2/1625065843.3232235619.capture.png (https://pic.maxiol.com/?v=1625065843.3232235619.capture.png&dp=2)
те подача единицы означает поджаривание этой ТМ9й тк она-то выдает 0 и она никак не ОК
согласно справочного листка, выходной ток ноля у нее 8мА
в SMK512 стоит EPM3256 у нее максимальный ток 25ма
смотрим схему типового элемента - нарисовал путь входящего тока
https://pic.maxiol.com/thumbs2/1625066457.3232235619.capture.png (https://pic.maxiol.com/?v=1625066457.3232235619.capture.png&dp=2)
иначе говоря единицу-то подать можно, но вот где гарантии что ТМ9 от этого не сгорит ?
соответственно вопрос - неужели SMK отключает ОЗУ устраивая такое КЗ ?
тут мне подсказали что SMK сам отключает ОЗУ БК11 от окна 1, это на самом деле так ?
если да, то КАК ?
Хороший вопрос. Да, отключает. Если смотреть на схему SMK-64, то очень даже понятно как. Маской 020 в 177130. Этот бит прямиком через буфер с открытым коллектором идёт, действительно, на A22 и забарывает логическую единицу на выходе ТМ9, если она там есть. Ноль безразличен.
иначе говоря единицу-то подать можно, но вот где гарантии что ТМ9 от этого не сгорит ?
Поскольку выход с буфера с ОК, то подаётся либо ноль, либо ничего. То есть, ему приходится забарывать не сильный ТТЛовский ноль, а дохлую единицу. Где ТТЛ выход -- это фактически резистор на первые сотни ом.
Но делать так действительно не очень хорошо.
Для ясности: иными словами, там сделано проводное И, где в качестве подтяжки к +5 используется верхняя половина выходного каскада ТМ9.
SuperMax
01.07.2021, 06:23
Хороший вопрос. Да, отключает. Если смотреть на схему SMK-64, то очень даже понятно как. Маской 020 в 177130. Этот бит прямиком через буфер с открытым коллектором идёт, действительно, на A22 и забарывает логическую единицу на выходе ТМ9, если она там есть. Ноль безразличен.
Поскольку выход с буфера с ОК, то подаётся либо ноль, либо ничего. То есть, ему приходится забарывать не сильный ТТЛовский ноль, а дохлую единицу. Где ТТЛ выход -- это фактически резистор на первые сотни ом.
Но делать так действительно не очень хорошо.
да, верно там 1-ца которую давим
принципиально у меня есть даже нога на ПЛИС которая свободна и почти рядом для этой цели.
Уже как бы всё выяснили? Можно не отвечать?
16ая страница (всего получается 16ть страниц по 32кБ)
с кодом 0020 уже подключали с 0120
как его правильно расшифровать ?
те в чем тут суть проверки и что именно не так ?
В том же посте приведена таблица "Режимы работы и распределение памяти". Видите в ней квадратик, обведённый двойной рамкой?
Это участок, где можно полностью корректно обратиться ко всем 32 Кбайтам памяти страницы СМК, для этого используется два разных режима.
Таким образом, в одном режиме, тест может оперировать только 16 кбатным участком памяти, половиной страницы.
Поэтому, в тестах было принято решение называть страницей именно эту половинку страницы СМК. Для простоты понимания. Поэтому для теста существует 32 страницы по 16 Кб, а не 16 шт. по 32 Кб.
Это говорит о том, что маппер памяти работает как-то не так, один и тот же участок физической памяти подключается в двух или более разных сегментах.
но я хочу понять как правильно - те как тогда 7й сегмент появляется в 140ом режиме
7й сегмент делится на две части: 170000-176777 и 177000-177777 и для этих частей разные правила. Если в первой части ОЗУ всегда, оно нужно для работы с HDD, то во второй части ОЗУ только тогда, когда нужны спецрежимы работы СМК. Там ведь регистры и порты, ОЗУ мешается.
согласно картинке, подключены сегменты 0 1 7 6
а в сообщении об ошибке сегменты 0 1 2 3
как расшифровать сообщение ?
В сообщении - 0 1 2 3 - это порядковые номера участков памяти, куда подключаются соответствующие по таблице сегменты.
0 = участок памяти 100000-107777, 1 =участок памяти 110000-117777 и т.д.
Вообще, весь этот код, который вызывает непонимание - это нативный код от фирмы АльтПро, может от Новака или ещё кого. Он используется без изменения ещё с тестов A16. Я только постарался как можно более подробно вывести интерпретацию результата его работы. Получилось, как получилось.
Тут вообще очень сложно с терминологией. Сегмент памяти - это и адресное пространство на БК, куда подключается ОЗУ и это же сам участок ОЗУ СМК, которое диспетчером памяти мапится в заданное адресное пространство. И страница тоже означает разные вещи в зависимости от контекста.
То есть, ему приходится забарывать не сильный ТТЛовский ноль, а дохлую единицу. Где ТТЛ выход -- это фактически резистор на первые сотни ом.
Но делать так действительно не очень хорошо.Я бы сказал "Очень не..."
да, верно там 1-ца которую давим
принципиально у меня есть даже нога на ПЛИС которая свободна и почти рядом для этой цели.Не забудь сразу включить ее в режим открытого коллектора (стока).
Работает! (https://bk.grfgames.com/az-2/)
SuperMax
17.07.2021, 15:13
Уже как бы всё выяснили? Можно не отвечать?
как раз нет, помощь очень ценна и нужна!
я вернулся из отпуска и снова могу заняться 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:
https://forum.maxiol.com/index.php?act=Attach&type=post&id=9916
тут ошибка:7-6(10)
те адрес
170000-176776
тут обнаружилось ОЗУ - хотя должно быть пусто
и тут вопрос - почему пусто-то ?
хотя я согласно картинке выше подключил 7й сегмент
где тут собака зарылась ?
круто! это я про авторов, они были таки юмористы ;-) то страница 32кБ то 16кБ
Тут похоже я в заблуждение ввёл. Я начал разбираться и вникать, что там такое я понаписал в тесте. И вот что выяснилось. Там на скриншоте в посте #136 (https://zx-pk.ru/threads/32102-az-dlya-bk-0011m.html?p=1122136&viewfull=1#post1122136) число 16 - это не номер страницы. Это количество килобайт доступной памяти. Это инкрементный счётчик, который увеличивается на 16 для каждой проверенной половинки страницы.
Это реальный косяк программы - когда вывод результата непонятен даже автору, по прошествии достаточного количества времени.
Но тем не менее, проверка ОЗУ проводится 16кбайтными кусками, половинками страницы в двух режимах, как в таблице. И как-то эту половинку надо именовать.
всё верно ?
Да, с номером страницы всё верно
физический адрес для слота [назовем так дабы не путаться] формируется так
{6'b000001,SMK_PAGE,3'd6};
Смысл этого выражения от меня ускользает, но физический адрес страницы в линейном адресном пространстве вычисляется так:
BASE + (SMK_PAGE << 15), где BASE - начальное смещение участка в памяти, выделенного под ОЗУ СМК, а "<< 15" это умножение на 0x8000 - размер страницы 32кб.
и остается не понятна ошибка - уже подключали с кодом 0020 уже подключали с 0120
Полная расшифровка этой строки такая:
"Страницу с кодом подключения страницы 0020, ранее уже подключали кодом подключения страницы 0120".
0120 - это самый самый первый код подключения первой половинки страницы 0. У вас получается такая штука, что абсолютно все страницы мапятся в один и тот же участок памяти. Причём что странно, даже вторая половинка страницы 0, так же мапится в первую половинку стр. 0.
И ещё, имейте в виду, что код режима HLT11 на самом деле 0, а не 20000, в регистре 177130 бита 13 по записи нету, поэтому он ни на что и не влияет. Просто в ПО АльтПро было принято соглашение, что код режима по каким-то уже забытым причинам не должен быть равен 0. Поэтому взяли вот такое число.
Если в первой части ОЗУ всегда
ok
Не ок. Уточнение. Не всегда, а всегда, за исключением режима SYS. Там вместо ОЗУ продублировано ПЗУ, которое по адресам 160000-167777. см табл. режимов.
те какой режим включает это ОЗУ и отключает регистры ?
См. таблицу режимов, строка "170(177000hdd)-0"
как я понимаю это нужно только для эмуляции бейсика БК10 который совсем не нужен на 11М ? или есть какое-то иное применение?
Основное применение - HALT режим. ОЗУ по записи по адресам 177674,177676
Бейсик - вторичен.
где тут собака зарылась ?
Тут есть такой нюанс. Т.к. 7й сегмент делится на 2 части, то и проверяется он дважды. Но! Тест на экран выводит только ошибочные ситуации, если ошибки нет, на экран ничего не выводится.
Поэтому ошибка:7-6(10) относится не к диапазону 170000-176776, а к диапазону 177000-177777. Оба эти диапазона имеют код 7, поэтому происходит путаница.
Я исправлю вывод информации в тесте, чтобы было более понятно, когда придумаю как.
- - - Добавлено - - -
BASE + (SMK_PAGE << 15), где BASE - начальное смещение участка в памяти, выделенного под ОЗУ СМК, а "<< 15" это умножение на 0x8000 - размер страницы 32кб.
А ещё, внутри этой страницы, в зависимости от режима работы СМК, нужно по-разному тасовать сегменты по 010000 байт.
SuperMax
22.07.2021, 14:05
Тут похоже я в заблуждение ввёл. Я начал разбираться и вникать, что там такое я понаписал в тесте. И вот что выяснилось. Там на скриншоте в посте #136 (https://zx-pk.ru/threads/32102-az-dlya-bk-0011m.html?p=1122136&viewfull=1#post1122136) число 16 - это не номер страницы. Это количество килобайт доступной памяти. Это инкрементный счётчик, который увеличивается на 16 для каждой проверенной половинки страницы.
Это реальный косяк программы - когда вывод результата непонятен даже автору, по прошествии достаточного количества времени.
Но тем не менее, проверка ОЗУ проводится 16кбайтными кусками, половинками страницы в двух режимах, как в таблице. И как-то эту половинку надо именовать.
понятно, те счетчик встал на первых 16кБ расширенной памяти которую он пытался проверить
так получается логично повторение этого сообщения
Да, с номером страницы всё верно
Смысл этого выражения от меня ускользает, но физический адрес страницы в линейном адресном пространстве вычисляется так:
BASE + (SMK_PAGE << 15), где BASE - начальное смещение участка в памяти, выделенного под ОЗУ СМК, а "<< 15" это умножение на 0x8000 - размер страницы 32кб.
все именно так
я поясню: - так как полный адрес 24бита то имеет смысл уменьшить его длину за счет разбивки на сегменты и
я разбил всю память 32МБ на сегменты по 4кБ те 10000(8), что явно соответствует размеру разбивки у SMK и мне кажется удобным для программирования
соответственно и сделал набор регистров (16шт) в которые можно записать адрес сегмента
младшие 8 регистров сделаны на вырост (или доработку с отключением нижней памяти с 0 до 77777)
старшие же соответствуют SMK-маппированию
технически я транслирую запрос к мапперу SMK в запрос к мапперу AZ обеспечивая совместимость
соответственно у меня формируется номер этого 4кБ сегмента - базовое смещение для сегментов SMK + SMK страница + номер сегмента в странице: {6'b000001,SMK_PAGE,3'd6};
Полная расшифровка этой строки такая:
"Страницу с кодом подключения страницы 0020, ранее уже подключали кодом подключения страницы 0120".
0120 - это самый самый первый код подключения первой половинки страницы 0. У вас получается такая штука, что абсолютно все страницы мапятся в один и тот же участок памяти. Причём что странно, даже вторая половинка страницы 0, так же мапится в первую половинку стр. 0.
И ещё, имейте в виду, что код режима HLT11 на самом деле 0, а не 20000, в регистре 177130 бита 13 по записи нету, поэтому он ни на что и не влияет. Просто в ПО АльтПро было принято соглашение, что код режима по каким-то уже забытым причинам не должен быть равен 0. Поэтому взяли вот такое число.
опа
:v2_dizzy_facepalm:
Не ок. Уточнение. Не всегда, а всегда, за исключением режима SYS. Там вместо ОЗУ продублировано ПЗУ, которое по адресам 160000-167777. см табл. режимов.
См. таблицу режимов, строка "170(177000hdd)-0"
Основное применение - HALT режим. ОЗУ по записи по адресам 177674,177676
Бейсик - вторичен.
Тут есть такой нюанс. Т.к. 7й сегмент делится на 2 части, то и проверяется он дважды. Но! Тест на экран выводит только ошибочные ситуации, если ошибки нет, на экран ничего не выводится.
Поэтому ошибка:7-6(10) относится не к диапазону 170000-176776, а к диапазону 177000-177777. Оба эти диапазона имеют код 7, поэтому происходит путаница.
Я исправлю вывод информации в тесте, чтобы было более понятно, когда придумаю как.
- - - Добавлено - - -
А ещё, внутри этой страницы, в зависимости от режима работы СМК, нужно по-разному тасовать сегменты по 010000 байт.
круто
спасибо за развернутые ответы!
хотел ответить сразу, но пошел по более длинному пути, а именно решил что пришло время написать свой тест AZ
ибо железка получается сложная и надо явно автоматизировать проверку функционала
за базу взял последнуюю версию Вашего теста обрубил тест SMK и занялся тестированием AZ-а
обнаружил неприятную проблему после 16ого мегабайта, те снос крыши у памяти, что вообще очень странно ибо тест памяти прекрасно проходит если идет с STM32
пока завис на ловле глюка
SuperMax
08.08.2021, 17:44
Выложил прошивку 00005
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2-3-4) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
также режимы можно переключать через регистр 177230
младшие 2 бита - видеорежим (точнее интерпретация легаси-видеорежимов)
0 - монохром 512х256
1 - 4 цвета 256х256
2 - 16 цветов 128х256
3 - 256 цветов 64х256
3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль
4. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
перехват запросов SMK сделан, но не включен
4. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
5. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
6. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 130MHz как следствие полностью новое слово доступно будет каждый процессорный такт
7. загрузка ПЗУ в память полностью реализована
8. Реализовано распознавание новодела БК11М и подключение ПЗУ
должны отвечать регистры
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177230 - видеорежимы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
177550 - генератор псевдослучайных чисел
После reset машина стартует автоматически и загружается со первого образа в ini-файле (cейчас там ANDOS - ANSYS.IMG)
Изменения:
- консоль STM32
- управление видео режимами через 177230
- новое ПЗУ - AZBOOT.ROM
Если у Вас уже готовы свои образа, копируйте с этого раздел ROM в ini файле + все файлы в каталоге ROM
эти части будут постоянно обновляться тк AZ требует полного соответствия версий прошивок
Контроллер AZ BK: Прошивка 00005 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=55770)
PS: в старт машины добавил визуализацию, отпишитесь - понравилась или это лишнее ?
SuperMax
14.08.2021, 08:04
Обновление ПЗУ для версии 00005
обновление включает сеть "на постоянку"
содержит 2 файла ПЗУ
AZ337.ROM
AZBOOT.ROM
их необходимо скопировать в ROM на карточку
а таже исправить строчку в AZ.INI на
R08=0:/rom/AZ337.rom
https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=55802
SuperMax
15.08.2021, 13:51
Поддержка 32х дисков - новая прошивка
https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=55808
SuperMax
22.08.2021, 15:09
Сделал тему с демонстрацией возможностей AZБК
Контроллер AZ BK: демо (https://forum.maxiol.com/index.php?showtopic=5575)
SuperMax
22.08.2021, 18:17
Картинки на БКшке
https://pic.maxiol.com/thumbs2/1629645396.3232235619.capture.png (https://pic.maxiol.com/?v=1629645396.3232235619.capture.png&dp=2)
SuperMax
29.08.2021, 09:03
RT11 на БК-0011М
https://www.youtube.com/watch?v=pkqNaBR9O1I
Демо 16 цветов
https://www.youtube.com/watch?v=dGVjKGlbNF8
Демо 256 цветов
https://www.youtube.com/watch?v=T22rgVWVZOA
0 - монохром 512х256
1 - 4 цвета 256х256
2 - 16 цветов 128х256
3 - 256 цветов 64х256
Думаю, есть смысл модифицировать (или опционально добавить) режимы 16 цветов 128х128 и 256 цветов 64х64. Получится некое подобие атрибутов на Спектруме.
Т.к. все равно для текстовой информации и большинства игр режимы с "растянутыми" до 4 и 8 точек пикселами бесполезны, а вот для демомейкеров будет очень вкусно.
Как реализовать - дело ваше, физически это может быть отображение каждой второй (четвертой) строки с повторами, либо вовсе новые режимы с последовательными строками.
Смысл в сокращении объема видеопамяти, хотя бы на уровне софта, что даст ускорение работы с графикой. БК и так довольно тормознуто ворочает экраном, хоть тут ускорится.
Да, "кривые" прямоугольные пиксели БК станут еще более прямоугольными (прибавят в размерах), но коду намного проще обрабатывать четверть экрана, чем весь экран целиком.
SuperMax
29.08.2021, 19:34
Думаю, есть смысл модифицировать (или опционально добавить) режимы 16 цветов 128х128 и 256 цветов 64х64. Получится некое подобие атрибутов на Спектруме.
Т.к. все равно для текстовой информации и большинства игр режимы с "растянутыми" до 4 и 8 точек пикселами бесполезны, а вот для демомейкеров будет очень вкусно.
Как реализовать - дело ваше, физически это может быть отображение каждой второй (четвертой) строки с повторами, либо вовсе новые режимы с последовательными строками.
Смысл в сокращении объема видеопамяти, хотя бы на уровне софта, что даст ускорение работы с графикой. БК и так довольно тормознуто ворочает экраном, хоть тут ускорится.
Да, "кривые" прямоугольные пиксели БК станут еще более прямоугольными (прибавят в размерах), но коду намного проще обрабатывать четверть экрана, чем весь экран целиком.
концепция строкового управления позволит это
те любую строку можно повторять нужное количество раз
любую строку можно повторять нужное количество раз
То бишь, аппаратно реализовано то, чем раньше занимались через извраты с регистром скролла? Коли так - замечательно, не нужно тратить все время процессора на мультиколор.
SuperMax
05.09.2021, 16:19
Прошивка 00006
жирным новое в прошивке
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2-3-4) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
также режимы можно переключать через регистр 177230
младшие 2 бита - видеорежим (точнее интерпретация легаси-видеорежимов)
0 - монохром 512х256
1 - 4 цвета 256х256
2 - 16 цветов 128х256
3 - 256 цветов 64х256
3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль
4. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
перехват запросов SMK сделан, но не включен
4. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
5. Добавлен альтернативный легаси-режим который позволяет отображать любой участок памяти на экран
включение - 15й бит регистра 177230 в 1
регистр 177232 - номер страницы памяти, кратный 4м - те с дискретностью 16кБ
6. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
исправлены ошибки перехвата при обращении к нечетным адресам
7. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 130MHz как следствие полностью новое слово доступно будет каждый процессорный такт
8. загрузка ПЗУ в память полностью реализована
9. Реализовано распознавание новодела БК11М и подключение ПЗУ
10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно
запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212
соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом
Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
должны отвечать регистры
SOUND
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
177550 - генератор псевдослучайных чисел
После reset машина стартует автоматически и загружается со первого образа в ini-файле
В архиве обновленное AZBOOT.ROM - не забудьте обновить
AZBK_00006.hex без изменений относительно 5й версии, те надо обновить только прошивку ПЛИС
Контроллер AZ BK: Прошивка 00006 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=55877)
SuperMax
12.09.2021, 10:46
Проектирую DMA-контроллер для звука
https://forum.maxiol.com/index.php?s=&showtopic=5556&view=findpost&p=55703
2. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
// 00 - старт =1 старт
// 01 - =1 однократный запуск =0 циклический
// 02 - =1 принудительная остановка до завершения цикла
// 03-04-05 - скорость выдачи наружу
11025
22050
44100
// 06-07-08 - режим интерпретации
PCM 16 mono
PCM 8 mono
PCM 16 stereo
PCM 8 stereo
ADPCM 16mono
ADPCM 8stereo
AY??
OPL2?
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
принимаются идеи и предложения
а также корректировки - к примеру "PCM 8 mono - нафиг не надо" или "11025 тоже не имеет смысла"
ps: уже звучит
SuperMax
26.09.2021, 17:48
новости
итак, у меня было время поразбираться
1. написал свой декодер IMA ADPCM причем синхронный вариант в отличии от выложенных которым нужны флаги и прочие приседания
2. декодер работает
пока это моно, и я сейчас займусь уже полировкой кода + сделаю стерео режим
3. сделал encoder в IMA ADPCM (чистый RAW тк в WAV поток разбит на чанки).
после полировки, напишу плеер который будет проигрывать музыку в 44100 стерео
плеер будет под RT11 ибо никакая другая ОС нормально большие файлы, увы не поддерживает
канал про контроллеры AZ
https://t.me/pdp11_az
- - - Добавлено - - -
Прошу уточнений
а именно
надо ли делать
PCM 8 mono ? и вообще PCM ?
и поддержку частоты дискретизации отличной от 44100 ?
я к тому, что может сделать IMA ADPCM 44100 /16 моно и стерео и ограничится этим ?
SuperMax
28.09.2021, 20:30
сделал промежуточный вариант
теперь DMA контроллер такой:
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
// 00 - старт =1 старт
// 01 - =1 однократный запуск =0 циклический
// 02 - =1 принудительная остановка до завершения цикла
скорость выдачи наружу фиксированная - 44100
// 09-10-11 - режим интерпретации
// 09 - =0 моно =1 стерео
// 10
// 11 - =0 PCM =1 IMA_ADPCM
для PCM всегда моно 16bit
для IMA ADPCM доступно моно и стерео
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
сейчас займусь плеером
SuperMax
03.10.2021, 11:50
сделал плеер который явно грузит все в память, но начинает проигрывание сразу
звук - отличный!
сейчас занялся потоковым плеером
Прошу уточнений
а именно
надо ли делать
PCM 8 mono ? и вообще PCM ?
и поддержку частоты дискретизации отличной от 44100 ?
я к тому, что может сделать IMA ADPCM 44100 /16 моно и стерео и ограничится этим ?
Лишним не будет, готовые wav из игр переносить )
- - - Добавлено - - -
сделал плеер который явно грузит все в память, но начинает проигрывание сразу
звук - отличный!
Супер! ))
с
сейчас занялся потоковым плеером
Вау, можно будет потоковое инет-радио сделать для БК ))
SuperMax
03.10.2021, 12:45
Лишним не будет, готовые wav из игр переносить )
это вопрос ресурсов
те плис таки не резиновая
Супер! ))
Вау, можно будет потоковое инет-радио сделать для БК ))
я несколько про другое
а именно про чтение потока с диска и его воспроизведение
с минимальным использованием оперативки
(на тот случай если она будет занята чем-то другим)
но если говорить о возможности интернет радио то да, я думаю это тоже возможно
Доброго дня! Если будет собранный, куплю 1 компл. У меня есть поле где развернуться.
SuperMax
03.10.2021, 13:54
Доброго дня! Если будет собранный, куплю 1 компл. У меня есть поле где развернуться.
скоро будет
мониторьте тему https://zx-pk.com/forum/viewtopic.php?f=7&t=17903
SuperMax
03.10.2021, 20:59
вот написал потоковый плеер - те проигрывает IMA ADPCM 44100 stereo 16bit
вот тут
Работа с IMA ADPCM на AZ БК (https://forum.maxiol.com/index.php?showtopic=5579)
- кодировщик в IMA ADPCM
- два плеера
все с исходниками
SuperMax
05.10.2021, 18:37
Демонстрация плеера в работе
https://www.youtube.com/watch?v=T2fXu0iFmFk
- - - Добавлено - - -
Прошивка 00007
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2-3-4) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
также режимы можно переключать через регистр 177230
младшие 2 бита - видеорежим (точнее интерпретация легаси-видеорежимов)
0 - монохром 512х256
1 - 4 цвета 256х256
2 - 16 цветов 128х256
3 - 256 цветов 64х256
3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль
4. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
перехват запросов SMK сделан, но не включен
4. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
5. Добавлен альтернативный легаси-режим который позволяет отображать любой участок памяти на экран
включение - 15й бит регистра 177230 в 1
регистр 177232 - номер страницы памяти, кратный 4м - те с дискретностью 16кБ
6. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
исправлены ошибки перехвата при обращении к нечетным адресам
7. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 130MHz как следствие полностью новое слово доступно будет каждый процессорный такт
8. загрузка ПЗУ в память полностью реализована
9. Реализовано распознавание новодела БК11М и подключение ПЗУ
10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно
запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212
соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом
Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM
06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100
09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
данные с DMA пойдут напрямую на микшер отдельным каналом
должны отвечать регистры
SOUND
177160-177170
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
177550 - генератор псевдослучайных чисел
После reset машина стартует автоматически и загружается со первого образа в ini-файле
В архиве обновленное AZBOOT.ROM - не забудьте обновить
AZBK_00007.hex без изменений относительно 5й версии, те надо обновить только прошивку ПЛИС
Контроллер AZ BK: Прошивка 00007 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=55970)
SuperMax
09.12.2021, 06:48
Прикрутил AY
сделал автоопределние AY или ковокс
сейчас делаю турбосаунд с прямым мапированием регистров в адресное пространство
дабы можно было читать-писать из любого регистра AY напрямую
SuperMax
09.12.2021, 22:28
Прошивка 00008
жирным новое в прошивке
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2-3-4) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
также режимы можно переключать через регистр 177230
младшие 2 бита - видеорежим (точнее интерпретация легаси-видеорежимов)
0 - монохром 512х256
1 - 4 цвета 256х256
2 - 16 цветов 128х256
3 - 256 цветов 64х256
3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль
4. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
перехват запросов SMK сделан, но не включен
4. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
5. Добавлен альтернативный легаси-режим который позволяет отображать любой участок памяти на экран
включение - 15й бит регистра 177230 в 1
регистр 177232 - номер страницы памяти, кратный 4м - те с дискретностью 16кБ
6. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
исправлены ошибки перехвата при обращении к нечетным адресам
7. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 130MHz как следствие полностью новое слово доступно будет каждый процессорный такт
8. загрузка ПЗУ в память полностью реализована
9. Реализовано распознавание новодела БК11М и подключение ПЗУ
10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно
запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212
соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом
Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM
06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100
09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
данные с DMA пойдут напрямую на микшер отдельным каналом
12. Legacy AY через 177714
работает автоопределение источника звука - или ковокс или AY
должны отвечать регистры
SOUND
177160-177170
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
177550 - генератор псевдослучайных чисел
После reset машина стартует автоматически и загружается со первого образа в ini-файле
Контроллер AZ BK: Прошивка 00008 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=56174)
SuperMax
10.12.2021, 17:59
Про AZ БК
https://www.youtube.com/watch?v=nrcUQ9kyqCc
SuperMax
12.12.2021, 09:34
Записал видео - демонстрация работы AY на контроллере AZ БК
https://www.youtube.com/watch?v=kSIcQYemdzo
SuperMax
20.12.2021, 22:50
По заявкам телезрителей родилась новая версия расширенных видеорежимов
первая версия со строчным управлением мне кажется слишком сложной и не дающей никаких преимуществ
итак проект такой
177230 - регистр управления
177232 - регистр номера страницы начала отображения
177230, далее пойдут биты с описанием
1;0 - режим цветовой интерпретации
3;2 - растяжение по горизонтали - те количество повторов у точки
5;4 - длина строки в словах
7;6 - количество повторов строк
теперь подробно
режим цветовой интерпретации, значение от 0 до 3
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов
растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128
длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов
количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192
типовые видеорежимы (значение восьмеричные)
211 - 256х256х4цвета
201 - 512х256х2цвета
регистр 177232 - адрес страницы начала отображения
кратность адреса - в размер страницы
те если размер экрана 16кБ
тогда надо писать адреса с шагом в 4 (размер страницы 4кБ)
(промежуточные значения игнорируются - отбрасываются)
для 512х384х16 цветов с 128словами в строке общий размер экрана получается 98304байт
но тк кратность у нас только по степеням двойки то размер кратности страницы будет 128кБ
--------
думал на счет параметра "длина строки в словах"
в принципе его можно убрать совсем
Абсолютно не годится. Аппаратного вертикального скроллинга нет, горизонтального нет, экономии скорости процессора за счёт более компактного предстваления тех строк, где не нужно высокое пространственное и цветовое разрешение -- тоже нет.
По сути, это вырождение до контроллера для показа статических картинок. Это даже хуже, чем экран оригинальной БК.
SuperMax
21.12.2021, 06:35
Абсолютно не годится. Аппаратного вертикального скроллинга нет, горизонтального нет, экономии скорости процессора за счёт более компактного предстваления тех строк, где не нужно высокое пространственное и цветовое разрешение -- тоже нет.
По сути, это вырождение до контроллера для показа статических картинок. Это даже хуже, чем экран оригинальной БК.
а вот такие заявки телезрителей - простой экран разного размера
вообще, вертикальный скролинг для режимов 256 строк будет, для режимов 768/384/192 нет
заложить горизонтальный скролинг была мысль, и тут как раз может пригодится более длинный изначальный буфер строки (он всегда 256 слов)
но вот понимания кому это надо, увы нет
идея со строками никуда не делась, просто никому она не нужна в практическом смсыле
но вот понимания кому это надо, увы нет
Ну как кому? Игро- и демописателям, даже если он и сами пока этого не осознают.
Например, рулонный скроллинг, если его возможно реализовать, будет полезен просто как старая, хорошо знакомая фича.
А вот скроллинг путём смещения окна отображения на заданное смещение, может имитировать вертикально-горизонтальный скроллинг, когда на экран плавно (ну это как смещение задаётся, попиксельно или побайтно) будет заезжать заранее подготовленное отображение вне экрана.
SuperMax
21.12.2021, 08:44
Ну как кому? Игро- и демописателям, даже если он и сами пока этого не осознают.
вот это отсутствие осознания и тормозит процесс!
мне бы четкое ТЗ - было бы проще
Например, рулонный скроллинг, если его возможно реализовать, будет полезен просто как старая, хорошо знакомая фича.
будет.
А вот скроллинг путём смещения окна отображения на заданное смещение, может имитировать вертикально-горизонтальный скроллинг, когда на экран плавно (ну это как смещение задаётся, попиксельно или побайтно) будет заезжать заранее подготовленное отображение вне экрана.
мне это тоже кажется интересным, но надо понимать, что с точки зрения программирования это не будет таким простым как сейчас с плоским последовательным экраном
а вот такие заявки телезрителей - простой экран разного размера
вообще, вертикальный скролинг для режимов 256 строк будет, для режимов 768/384/192 нет
заложить горизонтальный скролинг была мысль, и тут как раз может пригодится более длинный изначальный буфер строки (он всегда 256 слов)
но вот понимания кому это надо, увы нет
Скроллинг как бы сам собой подразумевался ) Вертикальный на БК был всегда, а вот отсутствие горизонтального всегда было проблемой, с которой все время мучались.
вообще, вертикальный скролинг для режимов 256 строк будет, для режимов 768/384/192 нет
Странно, почему? Ведь задание начального адреса по идее не зависит от того, сколько данных будет прочитано дальше.
но вот понимания кому это надо, увы нет
Времени сейчас нет даже на детальную аргументацию на форуме. Нам надо до НГ сдаться.
Поэтому просто приведу пример:
https://www.youtube.com/watch?v=ZyTQa5eqj9g
Используется аппаратный двумерный скроллинг на EGA (а он там есть, причём попиксельный по обеим координатам!), плюс использование защёлок чтения видеопамяти в качестве простенького блиттера. 40+ fps на 8 МГц 286.
SuperMax
21.12.2021, 13:33
Странно, почему? Ведь задание начального адреса по идее не зависит от того, сколько данных будет прочитано дальше.
вопрос в том как завернуть в "рулон"
те если у нас 256 строк то мы крутим байт и "конец всегда сходится с началом"
а как делать если строк не кратно степени двойки ?
Времени сейчас нет даже на детальную аргументацию на форуме. Нам надо до НГ сдаться.
Поэтому просто приведу пример:
https://www.youtube.com/watch?v=ZyTQa5eqj9g
Используется аппаратный двумерный скроллинг на EGA (а он там есть, причём попиксельный по обеим координатам!),
плюс использование защёлок чтения видеопамяти в качестве простенького блиттера. 40+ fps на 8 МГц 286.
вообщем сдавай проект и пиши поэму ибо ибо я пока не понимаю как это сделать
Игро- и демописателям, даже если он и сами пока этого не осознают.
Главное, чтобы они были, эти писатели =) Под любое новое железо или фичу нужен софт, а с нуля он не возьмётся.
а как делать если строк не кратно степени двойки ?
Можно завести доп. счётчик внутри схемы и считать им строки, а по достижении нужного числа сбрасывать основной в исходное состояние, но я бы развил идею. Памяти в AZ всё равно в разы больше, чем осилит процессор БК (речь пока о нём), так почему бы не мапить - или как оно правильно называется - кусочек памяти из большого массива? Начало отображения задаётся регистром, и поскольку регистры 16-разрядные, можно и размер массива сделать куда больше, чем видимая экранная область. Очень удобно как раз для скроллов в демках и играх. Надеюсь, суть понятно изложил.
SuperMax
30.12.2021, 08:03
Главное, чтобы они были, эти писатели =) Под любое новое железо или фичу нужен софт, а с нуля он не возьмётся.
Можно завести доп. счётчик внутри схемы и считать им строки, а по достижении нужного числа сбрасывать основной в исходное состояние,
но я бы развил идею. Памяти в AZ всё равно в разы больше, чем осилит процессор БК (речь пока о нём), так почему бы не мапить - или как оно правильно называется - кусочек памяти из большого массива? Начало отображения задаётся регистром, и поскольку регистры 16-разрядные, можно и размер массива сделать куда больше, чем видимая экранная область. Очень удобно как раз для скроллов в демках и играх. Надеюсь, суть понятно изложил.
такая идея была
в принципе оно и логично - задали адрес начала отображения кратное строке и поехали
обдумываю, а не сделать ли два экрана - те фон + фронт
все пиксели что на фронте >0 отображаются "поверх" фона
такая идея была
в принципе оно и логично - задали адрес начала отображения кратное строке и поехали
обдумываю, а не сделать ли два экрана - те фон + фронт
все пиксели что на фронте >0 отображаются "поверх" фона
Еще лучше 3, чтобы как в принце было, три плана )
SuperMax
30.12.2021, 11:26
Еще лучше 3, чтобы как в принце было, три плана )
это как ?
я понимаю герой ходит сверху фона
а три-то зачем ?
фон + стражник + герой ?
или я неправильно понял ?
это как ?
я понимаю герой ходит сверху фона
а три-то зачем ?
фон + стражник + герой ?
или я неправильно понял ?
Принц и стражники могут заходить за колонны, которые их при этом закрывают. Стоят за "пилами", поверх них выскакивают шипы из земли. Это все передний план. Но все эти персонажи и сами закрывают собой фон. В итоге три слоя на экране.
https://www.youtube.com/watch?v=7RCRc3mX8VE
SuperMax
10.01.2022, 17:58
достал из закромов 10-ку с мягкой клавой
да, сходу не взлетело
немного поправил стартовое ПЗУ и 10ка завелась
VGA перехват тоже пока 10-ку не кушает
те надо добавить корректное определение 10ки внутри перехвата
но принципиально 10ка работает с AZ
соответственно вопрос - поддержка 10ки уже нужна или можно отложить в беклог ?
SuperMax
10.01.2022, 21:23
Сделал поддержку БК-0010-01
проверено на БК-0010-01 с пленкой
игрушки от 10ки запускаются
андос грузится
единственное, включается 15ая палитра от 11М
это пока не учтено, но записано в беклог
исправленное ПЗУ и готовый образ карты тут
https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=56213
соответственно вопрос - поддержка 10ки уже нужна или можно отложить в беклог ?Конечно, нужна! Круто, что 10-ка завелась.
SuperMax
12.01.2022, 20:52
Родил новую версию - скролинг вертикальный работает
177230 - регистр управления
177232 - регистр номера страницы начала отображения
177230, далее пойдут биты с описанием
1;0 - режим цветовой интерпретации
4;3 - длина строки в словах
7;6 - растяжение по горизонтали - те количество повторов у точки
10;9 - количество повторов строк
15;12 - длина рулона в словах
теперь подробно
режим цветовой интерпретации, значение от 0 до 3
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов
длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов
растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128
количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192
длина рулона в словах
0 6144
1 8192
2 12288
3 16384
4 24576
5 32768
6 49152
7 65536
8 98304
9 131072
10 196608
11 262144
длина дает информацию контроллеру для корректной работы вертикального скролинга
и важный момент - длина рулона может быть БОЛЬШЕ чем экран
иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов )
а рулон выбрать в 64кБ, что позводит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном
типовые видеорежимы (значение восьмеричные)
012201 - 256х256х4цвета (экран 16кБ)
012100 - 512х256х2цвета (экран 16кБ)
032212 - 256х256х16цветов (экран 32кБ)
регистр 177232 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти
SuperMax
16.01.2022, 20:16
Сделал
UART (RS-232 EIA-232 COM ком-порт)
адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу
177560 - регистр статуса приемника
бит 6 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177562
- по чтению - младший байт содержит принятые данные
- по записи - слово определяющее скорость, подробности ниже
177564 - регистр статуса передачика
бит 6 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177566 - регистр данных на передачу, используется младший байт, доступен на чтение и запись
после записи начинается передача в линию
подробности тут
Контроллер AZ BK: UART (https://forum.maxiol.com/index.php?s=&showtopic=5556&view=findpost&p=56214)
SuperMax
18.01.2022, 16:59
Прошивка 00009
жирным новое (или измененное) в прошивке
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль
4. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
перехват запросов SMK сделан, но не включен
4. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
5. Переделано
6. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
исправлены ошибки перехвата при обращении к нечетным адресам
7. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 130MHz как следствие полностью новое слово доступно будет каждый процессорный такт
8. загрузка ПЗУ в память полностью реализована
9. Реализовано распознавание новодела БК11М и подключение ПЗУ
10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно
запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212
соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом
Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM
06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100
09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
данные с DMA пойдут напрямую на микшер отдельным каналом
12. Legacy AY через 177714
работает автоопределение источника звука - или ковокс или AY
13. Сделан UART
адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу
177560 - регистр статуса приемника
бит 7 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177562
- по чтению - младший байт содержит принятые данные
- по записи - слово определяющее скорость, подробности ниже
дефолтное значение 32346(8) что соответствует стандартной скорости в 9600бод
177564 - регистр статуса передачика
бит 7 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177566 - регистр данных на передачу, используется младший байт, доступен на чтение и запись
после записи начинается передача в линию
Слово определяющее скорость - доступно только по записи
детальное описание UART в AZБК
14. Сделан конструктор видеорежимов
177230 - регистр управления
177232 - регистр номера страницы начала отображения
177230, далее пойдут биты с описанием
1;0 - режим цветовой интерпретации
4;3 - длина строки в словах
7;6 - растяжение по горизонтали - те количество повторов у точки
10;9 - количество повторов строк
15;12 - длина рулона в словах
теперь подробно
режим цветовой интерпретации, значение от 0 до 3
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов
длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов
растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128
количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192
длина рулона в словах
0 6144
1 8192
2 12288
3 16384
4 24576
5 32768
6 49152
7 65536
8 98304
9 131072
10 196608
11 262144
длина дает информацию контроллеру для корректной работы вертикального скролинга
и важный момент - длина рулона может быть БОЛЬШЕ чем экран
иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов )
а рулон выбрать в 64кБ, что позволит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном
типовые видеорежимы (значение восьмеричные)
012201 - 256х256х4цвета (экран 16кБ)
012100 - 512х256х2цвета (экран 16кБ)
032212 - 256х256х16цветов (экран 32кБ)
регистр 177232 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти
Важно! видеорежимы в состоянии "beta" те я не провел полного тестирования
должны отвечать регистры
SOUND
177160-177170
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
177550 - генератор псевдослучайных чисел
177560-177566 - UART
После reset машина стартует автоматически и загружается со первого образа в ini-файле
В архиве обновленное AZBOOT.ROM - не забудьте обновить
также утилита VGAMON.SAV для RT11 которая переключает в режим mono 512x256
AZBK_00009.hex без изменений относительно 5й версии, те надо обновить только прошивку ПЛИС
Контроллер AZ BK: Прошивка 00009 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=56215)
SuperMax
29.05.2022, 07:56
Провел большую переработку проекта
разделил клоки на 130MHz и 65MHz
теперь большая часть проекта работает на 65MHz, на 130MHz осталась только оперативка - SDRAM
следствие переработки - теперь доступны новые горизонты и к примеру добавление 2xAY и вчера, благодаря оперативности Kuvo испытания 2хAY прошли успешно!
Документация тут
https://forum.maxiol.com/index.php?s=&showtopic=5556&view=findpost&p=55703
Готовлю релиз прошивки. может что-то еще добавится.
добавление 2xAY
Раз уж под них отдельные регистры - может, сделать их и на чтение? Или это уже сделано?
Потому что в БК стандартный способ работы с AY (177714) не подразумевает чтение данных, а было бы хорошо.
Например, всякие там анализаторы-музыкалки, работающие, в основном, по читаемым из AY данным (ну, на Спектруме).
Раз уж под них отдельные регистры - может, сделать их и на чтение?
Нет смысла. Ибо чтение было бы полезно при модификации данных, а регистры AY - байтовые, а у PDP-11нет байтовых арифметических команд.
всякие там анализаторы-музыкалки, работающие, в основном, по читаемым из AY данным
могут спокойно читать эти данные из буфера, где они подготавливаются для засылки в регистры AY.
SuperMax
29.05.2022, 14:36
Раз уж под них отдельные регистры - может, сделать их и на чтение? Или это уже сделано?
Потому что в БК стандартный способ работы с AY (177714) не подразумевает чтение данных, а было бы хорошо.
Например, всякие там анализаторы-музыкалки, работающие, в основном, по читаемым из AY данным (ну, на Спектруме).
конечно, регистры доступны на чтение
регистры AY - байтовые, а у PDP-11нет байтовых арифметических команд
Ничто не мешает выполнить SWAB и заниматься арифметикой =) Ну и работать потом либо со старшим байтом, либо опять SWAB.
Либо обнулить старший байт и получить восьмибитное значение, что еще проще.
могут спокойно читать эти данные из буфера, где они подготавливаются
Это если прога знает, где буфер (сама же и готовит его). Сторонняя прога, работающая с готовым модулем, понятия о нем не имеет.
Вот почему на Спектруме и брали значения громкостей и пр. напрямую из AY после вызова плеера. Которых может быть несколько разных.
конечно, регистры доступны на чтение
То есть читается их них то, что туда пишут? Тогда отлично =)
Провел большую переработку проекта
разделил клоки на 130MHz и 65MHz
теперь большая часть проекта работает на 65MHz, на 130MHz осталась только оперативка - SDRAM
следствие переработки - теперь доступны новые горизонты и к примеру добавление 2xAY и вчера, благодаря оперативности Kuvo испытания 2хAY прошли успешно!
Супер!
SuperMax
02.06.2022, 18:15
Прошивка 00010
жирным новое (или измененное) в прошивке
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль
4. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
перехват запросов SMK сделан, но не включен
4. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
5. Переделано
6. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
исправлены ошибки перехвата при обращении к нечетным адресам
7. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 65MHz как следствие полностью новое слово доступно будет каждый процессорный такт
8. загрузка ПЗУ в память полностью реализована
9. Реализовано распознавание новодела БК11М и подключение ПЗУ
10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно
запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212
соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом
Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
03 - =0 YM2149 =1 AY8910 тип эмуляции PSG
11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM
06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100
09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
данные с DMA пойдут напрямую на микшер отдельным каналом
12. Legacy AY через 177714
работает автоопределение источника звука - или ковокс или AY
13. Сделан UART - изменена базовая частота - теперь это не 130MHz а 65MHz
адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу
177560 - регистр статуса приемника
бит 7 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177562
- по чтению - младший байт содержит принятые данные
- по записи - слово определяющее скорость, подробности ниже
дефолтное значение 32346(8) что соответствует стандартной скорости в 9600бод
177564 - регистр статуса передачика
бит 7 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177566 - регистр данных на передачу, используется младший байт, доступен на чтение и запись
после записи начинается передача в линию
Слово определяющее скорость - доступно только по записи
детальное описание UART в AZБК
14. Сделан конструктор видеорежимов
177230 - регистр управления
177232 - регистр номера страницы начала отображения
177230, далее пойдут биты с описанием
1;0 - режим цветовой интерпретации
4;3 - длина строки в словах
7;6 - растяжение по горизонтали - те количество повторов у точки
10;9 - количество повторов строк
15;12 - длина рулона в словах
теперь подробно
режим цветовой интерпретации, значение от 0 до 3
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов
длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов
растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128
количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192
длина рулона в словах
0 6144
1 8192
2 12288
3 16384
4 24576
5 32768
6 49152
7 65536
8 98304
9 131072
10 196608
11 262144
длина дает информацию контроллеру для корректной работы вертикального скролинга
и важный момент - длина рулона может быть БОЛЬШЕ чем экран
иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов )
а рулон выбрать в 64кБ, что позволит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном
типовые видеорежимы (значение восьмеричные)
012201 - 256х256х4цвета (экран 16кБ)
012100 - 512х256х2цвета (экран 16кБ)
032212 - 256х256х16цветов (экран 32кБ)
регистр 177232 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти
Важно! видеорежимы в состоянии "beta" те я не провел полного тестирования
15. Добавлена эмуляция 2xAY
сложение каналов по форумуле
R=A1+A2+B1+B2
L=C1+C2+B1+B2
Прямая доступность регистров на шине, а именно доступны байтовые регистры
177172 - адрес AY1
177173 - данные AY1
177174 - адрес AY2
177175 - данные AY2
должны отвечать регистры
SOUND
177160-177174
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
177550 - генератор псевдослучайных чисел
177560-177566 - UART
Контроллер AZ BK: Прошивка 00010 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=56489)
SuperMax
11.06.2022, 16:44
Итак, благодаря помощи GRF, я разобрался с особенностями SMK в плане отключения окна 1. [все изначально было сделано правильно кроме этого хака]
Теперь на AZБК запускается Принц, но потребуется новая прошивка ПЛИС и доработка.
Подробнее тут
https://forum.maxiol.com/index.php?showtopic=5593
Вопрос теперь - чем заняться дальше ?
в беклоге есть следующие задачи
1. сделать переход в аварийный режим в случае ошибки с конфигом
аварийный режим
- помигает светодиодом - код ошибки
- включит сеть
- добавит запись в лог ошибок старта
2. Часы с календарем, питание от 2032
3. Синхронизация часов через Internet
4. Энергонезависимая память для сохранения настроек звука, конфигурации
5. таймер с прерыванием 50/60Гц втч и для работы AY на БК-0010
6. КНГМД - дабы можно было работать с дискетами
7. поддержка образов FAT12 в WEBDAV
8. поддержка образов микродос в WEBDAV
9. поддержка образов CSIDOS в WEBDAV
10. OPL2
11. эмуляция HDD
SuperMax
11.06.2022, 20:15
Прошивка 00011
жирным новое (или измененное) в прошивке
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль
4. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
- перехват запросов SMK сделан и работает - все запросы к нему управлению режимами через 177130 транслируются в запросы к AZ-менеджеру памяти.
- добавлена возможность хака с отключением окна 1 со 100'000 до 137'777. Более подробно описано тут.
- добавлен RPLY для служебных страниц (с 40 по 77ую включительно)
эти страницы будут иметь специальное назначение и будут использоваться для работы AZБК контроллера; использовать для иных целей кроме указанных в документации запрещено
5. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
6. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
исправлены ошибки перехвата при обращении к нечетным адресам
7. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 65MHz как следствие полностью новое слово доступно будет каждый процессорный такт
8. загрузка ПЗУ в память полностью реализована
9. Реализовано распознавание новодела БК11М и подключение ПЗУ
10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно
запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212
соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом
Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
03 - =0 YM2149 =1 AY8910 тип эмуляции PSG
11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM
06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100
09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
данные с DMA пойдут напрямую на микшер отдельным каналом
12. Legacy AY через 177714
работает автоопределение источника звука - или ковокс или AY
13. Сделан UART - изменена базовая частота - теперь это не 130MHz а 65MHz
адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу
177560 - регистр статуса приемника
бит 7 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177562
- по чтению - младший байт содержит принятые данные
- по записи - слово определяющее скорость, подробности ниже
дефолтное значение 32346(8) что соответствует стандартной скорости в 9600бод
177564 - регистр статуса передачика
бит 7 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177566 - регистр данных на передачу, используется младший байт, доступен на чтение и запись
после записи начинается передача в линию
Слово определяющее скорость - доступно только по записи
детальное описание UART в AZБК
14. Сделан конструктор видеорежимов
177230 - регистр управления
177232 - регистр номера страницы начала отображения
177230, далее пойдут биты с описанием
1;0 - режим цветовой интерпретации
4;3 - длина строки в словах
7;6 - растяжение по горизонтали - те количество повторов у точки
10;9 - количество повторов строк
15;12 - длина рулона в словах
теперь подробно
режим цветовой интерпретации, значение от 0 до 3
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов
длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов
растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128
количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192
длина рулона в словах
0 6144
1 8192
2 12288
3 16384
4 24576
5 32768
6 49152
7 65536
8 98304
9 131072
10 196608
11 262144
длина дает информацию контроллеру для корректной работы вертикального скролинга
и важный момент - длина рулона может быть БОЛЬШЕ чем экран
иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов )
а рулон выбрать в 64кБ, что позволит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном
типовые видеорежимы (значение восьмеричные)
012201 - 256х256х4цвета (экран 16кБ)
012100 - 512х256х2цвета (экран 16кБ)
032212 - 256х256х16цветов (экран 32кБ)
регистр 177232 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти
Важно! видеорежимы в состоянии "beta" те я не провел полного тестирования
15. Добавлена эмуляция 2xAY
сложение каналов по форумуле
R=A1+A2+B1+B2
L=C1+C2+B1+B2
Прямая доступность регистров на шине, а именно доступны байтовые регистры
177172 - адрес AY1
177173 - данные AY1
177174 - адрес AY2
177175 - данные AY2
Теперь работают программы использующие менеджер памяти СМК. К примеру Принц Персии.
Косметические правки кода и звукового модуля.
должны отвечать регистры
SOUND
177160-177174
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
177550 - генератор псевдослучайных чисел
177560-177566 - UART
После reset машина стартует автоматически и загружается со первого образа в ini-файле
В архиве обновленное
AZBOOT.ROM - не забудьте обновить!
AZ377.ROM - не забудьте обновить !
AZBK_00011.hex без изменений относительно 5й версии, те надо обновить только прошивку ПЛИС
Прошивка
Контроллер AZ BK: Прошивка 00011 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=56532)
SuperMax
12.06.2022, 08:20
Формирование ТЗ на часы
задача вроде простая, но есть множество ньюансов
Вводная:
итак, в моем стеке TCP/IP есть относительно точное время в unix-формате
относительно точное тк во время работы с шиной БК приходится отключать таймер 1000Гц который дает отсчеты времени для внутренних часов TCP/IP стека;
также в моем стеке есть NTP-клиент который может получать время с NTP-сервера
также в самом STM32 есть автономные аппаратные часы которые могут работать и от батарейки тоже
[я не разбирался с ними ибо мне всегда хватало часов которые в стеке, он достаточно точны если не отключать таймер]
Формируется такая идея:
часть 1
1. выделяется служебная страница памяти - 4кБ
2. 1 раз в минуту, туда стек пишет точное время в самых разных форматах - те можно сделать кучу разных вариантов на любой вкус
3. для получения этого точного времени стек обновляет данные с NTP-сервера и/или пользуется часами в STM32
соответственно далее уже дело за программистами которые воспользуются этими данными
те надо подключить страницу в какое-то окно, считать данные и вернуть как было. все просто.
давайте определим нужные форматы времени.
часть 2
так как штатный таймер в БК обладает ограниченными возможностями и явно не хватает таймера типа SysTick я сделаю его аналог в виде регистров
1. регистр с клоком 1кГц, максимальное значение 1000. доступен только на чтение, сбрасывается по halt
2. 32х разрядный регистр с клоком 1сек, доступен только на чтение, сбрасывается по halt
Форматы времени в служебной странице:
1. Unix - те количество секунд, прошедших с полуночи 1 января 1970 года;
2. FAT время - для ANDOS
Время и дата
Двухбайтовая отметка даты имеет следующий формат:
биты 0–4 — день месяца, допускаются значения 1–31;
биты 5–8 — месяц года, допускаются значения 1–12;
биты 9–15 — год, считая от 1980 года («эпоха MS-DOS»), возможны значения от 0 до 127 включительно, то есть 1980–2107 годы.
Двухбайтовая отметка времени имеет следующий формат:
биты 0–4 — счётчик секунд (по две), допустимы значения 0–29, то есть 0–58 секунд;
биты 5–10 — минуты, допустимы значения 0–59;
биты 11–15 — часы, допустимы значения 0–23.
предлагайте
все обсуждаемо тк это проект ТЗ по часам. но сразу скажу, что делать полные часы в виде регистров - тупо жалко ресурсов ПЛИС.
SuperMax
12.06.2022, 16:42
Обсудили с GRF проект системы ускорения графики
сформировалось понимание, что работа с фоном и пересечениями занимает много времени и отнимает много ресурсов
соответственно рождается такая простая и понятная штука, по сути это "типа блиттер"
1. у нас три страницы с картинками
пусть первая - это нижний фон
вторая - двигающиеся герои, факелы монстры и прочее
третья - верхний фон который перекрывает объекты под ним - к пример колонна или дерево, за которое можно "зайти"
2. видеосистема складывает все три страницы
наивысший приоритет - верхний фон, те если там не =0 то идет перекрытие
далее вторая страница
и уже в самую последнюю очередь - нижний фон который перекрывает любой [не нулевого цвета] объект на странице выше
значение =0 это прозрачный цвет
3. получается наиболее удобный видеорежим 256х256 и байт на цвет
это будет удобно с точки зрения движения спрайтов - те сдвиг на байт это сдвиг на точку
Прикинул сколько потребуется времени на это - всего 312пикселей в худшем сценарии ожидания доступа к SDRAM
иначе говоря укладываемся!
начал делать....
upd 2022-06-17 - cделал
https://forum.maxiol.com/index.php?s=&showtopic=5556&view=findpost&p=56550
3. получается наиболее удобный видеорежим 256х256 и байт на цвет
Для Goonies все же 256х192 :)
3. получается наиболее удобный видеорежим 256х256 и байт на цветНаиболее удобный 280x210 – квадратные пиксели, разрешение по горизонтали больше, памяти уходит меньше чем 64 kb.
210 строк мало всё же. Четверть экрана по вертикали отрезана -- у телевизоров с 50 Гц развёрткой до 288 видимых строк.
К телевизору, как понимаю, AZ не имеет ни малейшего отношения. Монитор и 60Гц, поэтому и создаются новые видеорежимы.
Конкретное разрешение обсуждаемо, но режим с квадратными пикселами было бы неплохо.
К телевизору, как понимаю, AZ не имеет ни малейшего отношения. Монитор и 60Гц, поэтому и создаются новые видеорежимы.
Конкретное разрешение обсуждаемо, но режим с квадратными пикселами было бы неплохо.
Так там же есть конструктор режимов, можно какой хочешь сочинить.
SuperMax
15.06.2022, 07:00
Наиболее удобный 280x210 – квадратные пиксели, разрешение по горизонтали больше, памяти уходит меньше чем 64 kb.
плохо понимаю как это вписать в какой-либо стандарт
а если говорить о квадратных пикселях, есть разрешения 1024х768 512х384 и 256х192
- - - Добавлено - - -
если у телевизора есть VGA вход - можно подключить и его
Так там же есть конструктор режимов, можно какой хочешь сочинить.
После отказа от таблицы строк его больше нет.
SuperMax
15.06.2022, 09:09
После отказа от таблицы строк его больше нет.
таблица строк была как идея
концептуально ее можно реализовать
вопрос только в ее востребованности
я к тому, что я, к примеру, сделал RS232 который как мне говорили очень-очень нужен
и уже скоро полгода как он сделан и не востребован :(
лично мне, строковая идея сначала очень понравилась - можно включать любой видеорежим для любой строки итд итп - красота! прямотаки супергибкость !
но трансляция легаси в строчный режим точно сложна.
да и в прочем применении - процесс инициализации этого набора строк мне показался очень долгим и трудоемким
ибо по прикидкам получается по 2 слова на каждую (из 768) строк
те надо будет 6кБ только под это! (могу ошибаться тк поздабыл точное количество бит на строку)
и банально быстро режим или окна не попереключать
соответственно я пошел более привычным путем - регистр режима + регистр адреса
к примеру можно показывать видео просто переключая адресный регистр, что позволит к примеру проигрывать GIFки на БКшке
я открыт к предложениям, я за новое, просто не хочу сделать, что-то что будет лежать в ящике ....
ну вот к примеру новая история с часами
все - надо сделать!
я - давайте сделаю, а кто поправит АНДОС ? и опа.... нету желающих :(
ну вот к примеру новая история с часами
все - надо сделать!
я - давайте сделаю, а кто поправит АНДОС ? и опа.... нету желающих :(
Я могу поправить Андос, уже нашел как :)
плохо понимаю как это вписать в какой-либо стандартЭЛТ-монитор не сможет показать. 280x210?
а если говорить о квадратных пикселях, есть разрешения 1024х768 512х384 и 256х192Да, но первые два слишком много памяти отнимают, а у второго низкое разрешение (пиксели на 17% крупней) и "лишняя" область памяти остаётся не задействована.
ЭЛТ-монитор
не надо равняться на ЭЛТ-монитор, далеко не у все есть такая роскошь. И свободное место на столе для столь громоздкого устройства.
Равняться надо на мейнстрим - ширпотребные LCD мониторы.
"лишняя" область памяти остаётся не задействована
Она же не лишняя, а "заэкранная", которую можно было рулоном вдвинуть в экран. Или концепция опять поменялась?
Равняться надо на мейнстрим - ширпотребные LCD мониторы.
Проблема в том, что ширпотребные мониторы не понимают исходную 48+ Герц развёртку БКшки. Понятно, не все смотрят демки и прочий однофреймовый софт, но все-таки.
Проблема в том, что ширпотребные мониторы не понимают исходную 48+ Герц развёртку БКшки. Понятно, не все смотрят демки и прочий однофреймовый софт, но все-таки.
Так эта тема как раз про AZ, который имеет VGA-выход 60Гц.
SuperMax
16.06.2022, 19:03
ЭЛТ-монитор не сможет показать. 280x210?
если мы говорим о современных мониторах то мы уже пользуемся современными разрешениями
если же у нас есть ЭЛТ то у нас нет проблемы показывать родное БКшное в 48Гц и прочее
Да, но первые два слишком много памяти отнимают, а у второго низкое разрешение (пиксели на 17% крупней) и "лишняя" область памяти остаётся не задействована.
экономия памяти мало актуальна для AZ.
Она же не лишняя, а "заэкранная", которую можно было рулоном вдвинуть в экран. Или концепция опять поменялась?Не, рулонный сдвиг – это прекрасно. Я имел в виду, что чем меньше объём видеопамяти, тем быстрей её обновлять (банальная очистка экрана или любая другая полноэкранная операция). Хочется найти оптимальный объём памяти и разрешение (при 8 битах на пиксель, иначе совсем всё грустно с производительностью).
экономия памяти мало актуальна для AZ.Да, но БК должна загонять кучу данных в AZ.
чем меньше объём видеопамяти, тем быстрей её обновлять (банальная очистка экрана или любая другая полноэкранная операция)
Тут мы плавно и незаметно подходим к необходимости видеоадаптера, который бы аппаратно выполнял некоторые операции - заливка прямоугольной области заданным цветом или паттерном, перемещение прямоугольной области экрана из одного места в другое, копирование/обмен прямоугольной области из внеэкранной памяти в экранную, и т.п.
Тут мы плавно и незаметно подходим к необходимости видеоадаптера
...и плавно и незаметно теряем совместимость с, собственно, БКшкой, превращая ее в довесок к видеокарте.
Понятно, что почти все сидят в эмуляторах, куда уже прикручивается AZ, но какой тогда смысл вообще в родной БК? =)
SuperMax
17.06.2022, 16:36
...и плавно и незаметно теряем совместимость с, собственно, БКшкой, превращая ее в довесок к видеокарте.
Понятно, что почти все сидят в эмуляторах, куда уже прикручивается AZ, но какой тогда смысл вообще в родной БК? =)
а где тут граница ?
ну банально вот у нас 486ая машинка c PCI и на дворе у нас 97й
и штатно там - пусть Cirrus 5334
а тут опа и вышел Voodoo и теперь на этой машинке вполне идет 3D
так когда мы туда подключаем видеокарту у нас всё ? не родная ? нельзя втыкать ?
или когда я для "продления жизни" воткнул в комп UMDA66 и подцепил винт UDMA66 (тк на материнка старая и вообще UDMA66 появился позднее чем материнку сделали...)
я к тому, что тут нет четкой границы, это уже условности которые мы выдумываем специально.
а пока суд да дело - я сделал слои и сложение
написал документацию
https://forum.maxiol.com/index.php?s=&showtopic=5556&view=findpost&p=56550
это простая штука упростит работу программисту - ему не надо будет заботится о фоне
- - - Добавлено - - -
Не, рулонный сдвиг – это прекрасно. Я имел в виду, что чем меньше объём видеопамяти, тем быстрей её обновлять (банальная очистка экрана или любая другая полноэкранная операция). Хочется найти оптимальный объём памяти и разрешение (при 8 битах на пиксель, иначе совсем всё грустно с производительностью).
Да, но БК должна загонять кучу данных в AZ.
я прекрасно понимаю, что когда спектрум ворочает 6кБ экраном то БКшке приходится работать с 16кБ и с AZ экраны станут больше
но на этот случай я сделал простую штуку - слои
SuperMax
18.06.2022, 16:40
тут мне подкинули отличную идею - сделать разные палитры для слоев
это дает
3+3+4=10 цветов если страницы 4х цветные
или 46 если страницы 16ти цветные
это уже задокументировано по ссылке выше
подкинули отличную идею - сделать разные палитры для слоев
Да, хорошее предложение. В игрушках и вообще графических программах здорово расширит цветастость.
Жаль, что в родном БК цвета в палитрах жестко прибиты. Добавив всего пару-тройку корпусов, могли сделать задаваемым отдельно каждый цвет из четырех...
Ну, для AZ это не проблема, там палитры программируемые.
Кстати, а есть возможность внедрить видеорежим не 64х256, а 64х64 или 64х48 (с квадратными блоками)? Пригодился бы демописателям и творцам подобного софта для быстрого вывода анимации/графики низкого разрешения. Занимать будет в 4 раза меньше ОЗУ, что довольно выгодно по скорости работы с таким экраном. Почитал описание задания слоев, там вроде бы это реализовано через кол-во повторов точек и строк - но это только к слоям относится или в "обычном" режиме тоже можно устроить? Чтобы на выходе получился, скажем, экран емкостью 64х64х8бит=4Кб, вчетверо меньше стандартного.
SuperMax
18.06.2022, 20:01
Да, хорошее предложение. В игрушках и вообще графических программах здорово расширит цветастость.
Жаль, что в родном БК цвета в палитрах жестко прибиты. Добавив всего пару-тройку корпусов, могли сделать задаваемым отдельно каждый цвет из четырех...
Ну, для AZ это не проблема, там палитры программируемые.
Кстати, а есть возможность внедрить видеорежим не 64х256, а 64х64 или 64х48 (с квадратными блоками)? Пригодился бы демописателям и творцам подобного софта для быстрого вывода анимации/графики низкого разрешения. Занимать будет в 4 раза меньше ОЗУ, что довольно выгодно по скорости работы с таким экраном. Почитал описание задания слоев, там вроде бы это реализовано через кол-во повторов точек и строк - но это только к слоям относится или в "обычном" режиме тоже можно устроить? Чтобы на выходе получился, скажем, экран емкостью 64х64х8бит=4Кб, вчетверо меньше стандартного.
чисто технически AZ может отображать любой участок памяти на экран и переключается это в одном регистре
иначе говоря показывать видео в 60 кадров в секунду уже можно сейчас - главное чтобы памяти хватало на это видео ж-)
касаемо демописателей - я сторонник сначала зафиксировать необходимость, а потом делать. Вот к примеру сейчас я делаю часы тк на стороне БК а именно в андос GRF сделал вывод времени!
чисто технически AZ может отображать любой участок памяти на экран и переключается это в одном регистре
Да, но это все же будет показ заранее накачанных откуда-то кадров =) Интересней именно рендер "на ходу" и быстрый вывод на экран без необходимости перекодировки условных блоков в экранное изображение. То бишь в некотором смысле это текстовый режим, но вместо букв заданные предварительно цвета. Получится нечто вроде атрибутных эффектов в спектрумовских демках или, что ближе, 4х4 чанков. Но не нужно будет тратить уйму процессорного времени на построение экрана из массива.
касаемо демописателей - я сторонник сначала зафиксировать необходимость, а потом делать
Да, тут желательно бы увидеть пожелания демописателей... скажем, Manwe и других наиболее активных в данной области.
От себя уже предложил то, что изложено выше. Будут легко реализовываться эффекты навроде вот таких (с 30-й секунды видео)
Вместо вывода чанков, занимающего кучу времени (особенно при размере экрана БК) достаточно будет задать "цвет чанка" и все
https://www.youtube.com/watch?v=KDDNsTNWyw8
SuperMax
23.06.2022, 10:42
Вопрос к Уважаемому ММ:
так как было обнаружено что AZ работает не на всех 10ках
возник вопрос - какие были модификации 10ок
и чем они отличаются ?
пока обнаружено
новая 10ка с мягкой клавой - все отлично и монитор отключен
10-01 - работает
другая 10-01 не работае
старая 10-ка с пленкой - даже с вынутыми ПЗУ не работает - зависает в мониторе
avk.ghost
23.06.2022, 11:22
другая 10-01 не работае
Дополнение:
БК0010-01 Скрипучка. Выпуск 04.89. Экситон.
Сначала грешил, что не отключается 108 ПЗУ бейсика, но МСТД от Шауляйской 10ки работает, как и интерпретатор фокала
- - - Добавлено - - -
дополнение:
по заявлению продавца и надписям на корпусе (инв № и номер школы) - это школьная 10ка. но на логотипе БК0010-01.
SuperMax
29.06.2022, 20:50
Прошивка 00012
жирным новое (или измененное) в прошивке
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль
4. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
- перехват запросов SMK сделан и работает - все запросы к нему управлению режимами через 177130 транслируются в запросы к AZ-менеджеру памяти.
- добавлена возможность хака с отключением окна 1 со 100'000 до 137'777. Более подробно описано тут.
Теперь работают программы использующие менеджер памяти СМК. К примеру Принц Персии.
- добавлен RPLY для служебных страниц (с 40 по 77ую включительно)
эти страницы будут иметь специальное назначение и будут использоваться для работы AZБК контроллера; использовать для иных целей кроме указанных в документации запрещено
5. полный вывод VGA уже из SDRAM, переключение страниц
6. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
исправлены ошибки перехвата при обращении к нечетным адресам
7. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 65MHz как следствие полностью новое слово доступно будет каждый процессорный такт
8. загрузка ПЗУ в память полностью реализована
были обнаружены ошибки при загрузке не кратных блоку образов ПЗУ, исправлены
9. Реализовано распознавание новодела БК11М и подключение ПЗУ
10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно
запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212
соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом
Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
03 - =0 YM2149 =1 AY8910 тип эмуляции PSG
11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM
06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100
09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
данные с DMA пойдут напрямую на микшер отдельным каналом
12. Legacy AY через 177714
работает автоопределение источника звука - или ковокс или AY
13. Сделан UART - изменена базовая частота - теперь это не 130MHz а 65MHz
адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу
177560 - регистр статуса приемника
бит 7 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177562
- по чтению - младший байт содержит принятые данные
- по записи - слово определяющее скорость, подробности ниже
дефолтное значение 32346(8) что соответствует стандартной скорости в 9600бод
177564 - регистр статуса передачика
бит 7 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177566 - регистр данных на передачу, используется младший байт, доступен на чтение и запись
после записи начинается передача в линию
Слово определяющее скорость - доступно только по записи
детальное описание UART в AZБК
14. Сделан конструктор видеорежимов
177230 - регистр управления
177232 - регистр номера страницы начала отображения
177240 - регистр номера страницы начала отображения - средняя страница под спрайты
177242 - регистр номера страницы начала отображения - нижняя страница - под фон
177230, далее пойдут биты с описанием
2;0 - режим цветовой интерпретации
4;3 - длина строки в словах
7;6 - растяжение по горизонтали - те количество повторов у точки
10;9 - количество повторов строк
15;12 - длина рулона в словах
теперь подробно
режим цветовой интерпретации, значение от 0 до 7
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов
4 - 1 бит на цвет - 8 цветов - сборный "слоеный" режим
5 - 2 бита на цвет - 4 цвета - включены слои
6 - 4 бита на цвет - 16 цветов - включены слои
7 - 8 бит на цвет - 256 цветов - включены слои
подробное описание работы со слоями тут
длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов
растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128
количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192
длина рулона в словах
0 6144
1 8192
2 12288
3 16384
4 24576
5 32768
6 49152
7 65536
8 98304
9 131072
10 196608
11 262144
длина дает информацию контроллеру для корректной работы вертикального скролинга
и важный момент - длина рулона может быть БОЛЬШЕ чем экран
иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов )
а рулон выбрать в 64кБ, что позволит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном
типовые видеорежимы (значение восьмеричные)
012201 - 256х256х4цвета (экран 16кБ)
012100 - 512х256х2цвета (экран 16кБ)
032212 - 256х256х16цветов (экран 32кБ)
регистр 177232 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти
Важно! видеорежимы в состоянии "beta" те я не провел полного тестирования
15. Добавлена эмуляция 2xAY
сложение каналов по форумуле
R=A1+A2+B1+B2
L=C1+C2+B1+B2
Прямая доступность регистров на шине, а именно доступны байтовые регистры
177172 - адрес AY1
177173 - данные AY1
177174 - адрес AY2
177175 - данные AY2
Косметические правки кода и звукового модуля.
должны отвечать регистры
SOUND
177160-177174
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
177240 - регистр номера страницы начала отображения - средняя страница под спрайты
177242 - регистр номера страницы начала отображения - нижняя страница - под фон
маппер памяти
177300-350
177550 - генератор псевдослучайных чисел
177560-177566 - UART
После reset машина стартует автоматически и загружается со первого образа в ini-файле
В архиве обновленное
AZBOOT.ROM - не забудьте обновить!
AZ377.ROM - не забудьте обновить !
AZBK_00012.hex новая. ее надо тоже обновить
Контроллер AZ BK: Прошивка 00012 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=56596)
SuperMax
03.07.2022, 17:40
Сделал багфикс 12й прошивки
надо прошивать только ПЛИС
это исправление ошибки при режимах 16 и 256 цветов
https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=56609
SuperMax
21.07.2022, 08:30
Провел успешные испытания доработки БКшки, она даст следующие возможности:
для 11М
1. можно подключить клаву PS/2
2. можно включить полный маппер AZ
те для игрописания настанет отличная пора - все 64К доступны для подключения расширенной памяти
а не только верхние 32к
ну и теперь вся память будет "быстрая"
для 10М
тоже самое + возможность эмуляции 11М
сама по себе доработка полностью прозрачная, те без AZБК будет работать как обычная БКшка
сейчас всё в стадии макета, идут испытания
в конечном виде это будет:
1. платка с 1й микросхемой (2мя микросхемами для БК10 - для деления 12/3 и получения 4MHz как в БК-11М)
2. переходник на PS/2
3. подробная инструкция по доработке БК-0010/БК-0011М и AZБК с картинками
//--------------------------
множественное нажатие кнопок думаю попробовать обработать так:
к примеру у нас нажаты кнопки 1 2 3 с кодами 060 061 062
и последовательно читая коды из регистра данных мы получаем 060 061 062 060 061 062 060 061 062 итд
а тк есть бит 7 то надо им и оперировать:
мы читаем 060 061 062
бит 7 сбросился
кнопки все еще нажаты
если мы хотим узнать нажаты ли они
мы можем снова считать коды
мы получим 060 061 062
если к примеру одну кнопку отпустили - 0
остались 1 и 2
бит 7 взвелся тк появилось новое состояние клавиатуры
мы читаем 061 062
и бит 7 сбрасывается
и старые игры которые читают коды будут корректно работать
к примеру нажал "вверх" и "вправо"
игра будет получать коды "вверх" и "вправо"
и обрабатывать их как будто мы нажали "вверх" отпустили и нажали потом "вправо" а потом снова "вверх" итд
PS: тк я вообще не думал про маппинг кнопок PS/2 на БКшные, принимаются предложения в таблиц маппинга
PS2: успевайте купить БК-0010, теперь и они взлетят в цене ;)
SuperMax
14.11.2022, 08:47
Часы на AZ* заработали, ожидается обновление прошивки
https://t.me/pdp11_az/11991
Написал и опубликовал утилиту установки времени в RT11
<исходники в комплекте>
Утилиты для AZ (https://forum.maxiol.com/index.php?s=&showtopic=5605&view=findpost&p=57030)
SuperMax
26.11.2022, 12:17
Анонс прошивки для AZ*
Для БК будет совсем скоро!
Релиз прошивки V13 от 2022-11-26
(единая нумерация с AZБК - дабы уменьшить отличия прошивок)
добавлен блок команд
Новые команды AZ (https://forum.maxiol.com/index.php?s=&showtopic=5388&view=findpost&p=57017)
работают часы и прочие навороты
Утилита установки времени AZSDT выложена тут
Утилиты для AZ (https://forum.maxiol.com/index.php?s=&showtopic=5605&view=findpost&p=57030)
cама прошивка STM32 доступна для скачивания и прошивки
Firmware AZ 2.13 (https://forum.maxiol.com/index.php?s=&showtopic=5388&view=findpost&p=57072)
данная прошивка для AZ-МПИ AZ-УКНЦ AZ-QBUS v1.xx и 2.xx
прошивка для GAL-ок или EPM240 прежняя, менять не надо
Важный момент, не забудьте явно проставить в блоке NETWORK свой часовой пояс
иначе время будет GMT
пример
[network]
DHCP=ON
TIMEZONE=420
часовой пояс в минутах
Рабочий образ можно скачать тут
Рабочий образ для AZ (https://forum.maxiol.com/index.php?s=&showtopic=5388&view=findpost&p=57072)
Типовая работа AZSDT при наличии сети
https://pic.maxiol.com/thumbs2/1669453831.3232235619.azsdt.png (https://pic.maxiol.com/?v=1669453831.3232235619.azsdt.png&dp=2)
Типовая работа AZSDT при отключенной сети, но выставленном времени-дате в RTC
https://pic.maxiol.com/thumbs2/1669453864.3232235619.azsdtrtc.png (https://pic.maxiol.com/?v=1669453864.3232235619.azsdtrtc.png&dp=2)
SuperMax
26.11.2022, 18:45
Прошивка 00013 для AZБК
начало глобальных изменений: это промежуточная прошивка, с большей частью функционала который планировалось реализовать
жирным новое (или измененное) в прошивке
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль
4. изменено - см п 16
5. полный вывод VGA уже из SDRAM, переключение страниц
6. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
исправлены ошибки перехвата при обращении к нечетным адресам
7. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 65MHz как следствие полностью новое слово доступно будет каждый процессорный такт
8. загрузка ПЗУ в память полностью реализована
9. Реализовано распознавание новодела БК11М и подключение ПЗУ
10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно
запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212
соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом
Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
03 - =0 YM2149 =1 AY8910 тип эмуляции PSG
11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM
06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100
09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
данные с DMA пойдут напрямую на микшер отдельным каналом
12. Legacy AY через 177714
работает автоопределение источника звука - или ковокс или AY
13. Сделан UART - изменена базовая частота - теперь это не 130MHz а 65MHz
адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу
177560 - регистр статуса приемника
бит 7 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177562
- по чтению - младший байт содержит принятые данные
- по записи - слово определяющее скорость, подробности ниже
дефолтное значение 32346(8) что соответствует стандартной скорости в 9600бод
177564 - регистр статуса передачика
бит 7 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177566 - регистр данных на передачу, используется младший байт, доступен на чтение и запись
после записи начинается передача в линию
Слово определяющее скорость - доступно только по записи
детальное описание UART в AZБК
14. Сделан конструктор видеорежимов
177230 - регистр управления
177232 - регистр номера страницы начала отображения
177240 - регистр номера страницы начала отображения - средняя страница под спрайты
177242 - регистр номера страницы начала отображения - нижняя страница - под фон
177230, далее пойдут биты с описанием
2;0 - режим цветовой интерпретации
4;3 - длина строки в словах
7;6 - растяжение по горизонтали - те количество повторов у точки
10;9 - количество повторов строк
15;12 - длина рулона в словах
теперь подробно
режим цветовой интерпретации, значение от 0 до 7
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов
4 - 1 бит на цвет - 8 цветов - сборный "слоеный" режим
5 - 2 бита на цвет - 4 цвета - включены слои
6 - 4 бита на цвет - 16 цветов - включены слои
7 - 8 бит на цвет - 256 цветов - включены слои
подробное описание работы со слоями тут
длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов
растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128
количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192
длина рулона в словах
0 6144
1 8192
2 12288
3 16384
4 24576
5 32768
6 49152
7 65536
8 98304
9 131072
10 196608
11 262144
длина дает информацию контроллеру для корректной работы вертикального скролинга
и важный момент - длина рулона может быть БОЛЬШЕ чем экран
иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов )
а рулон выбрать в 64кБ, что позволит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном
типовые видеорежимы (значение восьмеричные)
012201 - 256х256х4цвета (экран 16кБ)
012100 - 512х256х2цвета (экран 16кБ)
032212 - 256х256х16цветов (экран 32кБ)
регистр 177232 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти
Важно! видеорежимы в состоянии "beta" те я не провел полного тестирования
15. Добавлена эмуляция 2xAY
сложение каналов по форумуле
R=A1+A2+B1+B2
L=C1+C2+B1+B2
Прямая доступность регистров на шине, а именно доступны байтовые регистры
177172 - адрес AY1
177173 - данные AY1
177174 - адрес AY2
177175 - данные AY2
16. Сделан новый маппер памяти AZ
Концепция:
маппер V2 - это чисто маппер AZ без костылей и _все_ запросы к мапперам 177716(БК11М) или 177130(СМК) транслируются в маппер AZ который является единым устройством управления памятью
это сделано для кардинального расширения возможностей БКшек, а именно для отключения 037й
и как следствие - возможности работы полного маппера AZ. Это означает что на любой адрес в адресном пространстве БК10/БК11М можно подставить любую страницу памяти!
адресное пространство расширенной памяти разбито на 4 сегмента:
АДРЕСНОЕ ПРОСТРАНСТВО ПАМЯТИ В AZ
╔═══════════════ ════════════════ ════════════════ ══ ..... ════════╗
║ АДРЕСНОЕ ПРОСТРАНСТВО ПАМЯТИ В AZ ║
╚═══════════════ ════════════════ ════════════════ ══ ..... ════════╝
0 128kB 256kB 512kB 1024kB 32MB
│ │ │ │ │
└───────┤ ├───────┴─────── ┘
RAM │ │ ROMs SMK
Shadow │ │
│ │
└─SYSTEM─┘
0-128кБ это память для организации "теневой" или эмулируемой памяти БК11М
первые 128кБ являются полной копией оперативки БК11М - или эмулируемой в БК10
из этой памяти идет отображение legacy видео режимов
а также получается есть техническая возможность отобразить на экран любую страницу памяти БК11М
[attachmentid=9946]
обращаю внимание на то, что физический адрес - словный
режим работы этой памяти устанавливается в регистре 177346
128-256кБ это полноценная R/W память с которой всегда идет RPLY
но эта память служебная и используется для работы AZ контроллера
256-512кБ это read-only память, она не доступна на запись со стороны БКшки
эта память для эмуляции различных ПЗУ, содержимое которых может быть загружено только средствами AZ
512-1024кБ для эмуляции SMK-512
Начиная с 1МБ вся оперативная память - полноценная R/W память без ограничений, а именно ее подключение всегда дает RPLY на чтение и на запись если не установлен режим r/o на данной странице в регистре 177342
маппер памяти AZ
технически адрес в системе 24bit-а (адрес слова 16bit)
для маппера памяти используется старшая часть адреса, и получается дискретность привязки памяти к окну - 4кБ
есть 16 регистров (177300-177336) куда пишется 13bit адрес начала (11 бит добавляется от адреса с шины и получается 24bit адрес слова)
старшие 3 бита в резеве и маппер предусматривает расширение до 256МБ.
ПРИНЦИП ФОРМИРОВАНИЯ ПОЛНОГО 24bit АДРЕСА 16bit слова
┌──┬──┬──┬──┬──┬ ─┬──┬──┬──┬──┬── ──┬──┬──┬──┬──┬─ ─┬──┬──┬──┬──┬── ──┬──┐
│23│22│21│20│19│18│17│16│15│14 │13│12│11│10│09│08│07│06│05│04 │03│02│01│00│
└──┴──┴──┴──┴──┴ ─┴──┴──┴──┴──┴── ──┴──┴──┴──┴──┴─ ─┴──┴──┴──┴──┴── ──┴──┘
│ │ │ │
└─────────────── ──────────────── ───┘ └─────────────── ──────────────┘
АДРЕС В РЕГИСТРЕ ОКНА 13bit АДРЕС С ШИНЫ МЛАДШИЕ 11bit
Адресное пространство разбито на 16 окон
для облегчения восприятия я пронумерую их с 0 до 15
┌────────┬────── ─────┬────────── ─┬────────────┬─ ───────────┬──── ───────┬──────── ───┬──────────── ┬─
│0..7777 │10000..17777│20000..27777│30000..37777│40 000..47777│50000..57777│60000..67777│70000.. 77777│
└────────┴────── ─────┴────────── ─┴────────────┴─ ───────────┴──── ───────┴──────── ───┴──────────── ┴─
0 окно 1 окно 2 окно 3 окно 4 окно 5 окно 6 окно 7 окно
177300 177302 177304 177306 177310 177312 177314 177316
──┬───────────── ──────────────┬─ ────────────┬─── ───────────┬──── ─────────┬────── ───────┬──────── ──────┬───────── ────┐
│100000-107777│110000..117777│120000..127777│130000. .137777│140000..147777│150000..157777│160000 ..167777│170000..177000│
──┴───────────── ──────────────┴─ ────────────┴─── ───────────┴──── ─────────┴────── ───────┴──────── ──────┴───────── ────┘
8 окно 9 окно 10 окно 11 окно 12 окно 13 окно 14 окно 15 окно
177320 177322 177324 177326 177330 177332 177334 177336
Регистр управления активацией окно - маски окон
АДРЕС = 177340
ФОРМАТ РЕГИСТРА
┌──┬──┬──┬──┬──┬ ─┬──┬──┬──┬──┬── ──┬──┬──┬──┬──┐
│15│14│13│12│11│10│09│08│07│06 │05│04│03│02│01│00│
└──┴──┴──┴──┴──┴ ─┴──┴──┴──┴──┴── ──┴──┴──┴──┴──┘
пример: для подключения оперативки в окно №14 - 160000-167777
надо сделать следующее:
177334 <- 400 (это указатель на первый мегабайт)
177340 <- 40000 (это разрешение этого окна - 14 бит)
177342 <- сброс бита 14 тк мы хотим оперативку а не ПЗУ
Регистр управления r/o на окно
АДРЕС = 177342
ФОРМАТ РЕГИСТРА
┌──┬──┬──┬──┬──┬ ─┬──┬──┬──┬──┬── ──┬──┬──┬──┬──┐
│15│14│13│12│11│10│09│08│07│06 │05│04│03│02│01│00│
└──┴──┴──┴──┴──┴ ─┴──┴──┴──┴──┴── ──┴──┴──┴──┴──┘
пример: для подключения оперативки в режиме ПЗУ
в окно №14 - 160000-167777 надо сделать следующее:
177334 <- 400 (это указатель на первый мегабайт)
177340 <- 40000 (это разрешение этого окна - 14 бит)
177342 <- 40000 (это установка r/o тк мы хотим ПЗУ)
Регистр управления shadow окон - маски окон
АДРЕС = 177344
ФОРМАТ РЕГИСТРА
┌──┬──┬──┬──┬──┬ ─┬──┬──┬──┬──┬── ──┬──┬──┬──┬──┐
│15│14│13│12│11│10│09│08│07│06 │05│04│03│02│01│00│
└──┴──┴──┴──┴──┴ ─┴──┴──┴──┴──┴── ──┴──┴──┴──┴──┘
shadow это режим копирования всех операций записи в зеркальную память - см
АДРЕСНОЕ ПРОСТРАНСТВО ПАМЯТИ В AZ
╔═══════════════ ════════════════ ════════════════ ══ ..... ════════╗
║ АДРЕСНОЕ ПРОСТРАНСТВО ПАМЯТИ В AZ ║
╚═══════════════ ════════════════ ════════════════ ══ ..... ════════╝
0 128kB 256kB 512kB 1024kB 32MB
│ │
└───────┘
SHADOW RAM
Это нужно для работы на БК11М и формирования изображения на VGA экране
shadow страницы устанавливаются автоматически при работе с маппером БК11М
для управления маппером предусмотрен регистр маски окон - 177340
младший бит соответствует младшему окну (те с 0 до 7777)
пример: для подключения оперативки в окно 160000-167777 надо сделать следующее:
177334 <- 400 (это указатель на первый мегабайт)
177340 <- 40000 (это разрешение этого окна)
для управления r/o на выбранном окне предусмотрен регистр-маска 177342
соответственно для установки режима только чтения надо установить соответствующий бит на окне
к примеру
177334 <- 400 (это указатель на первый мегабайт)
177340 <- 40000 (это разрешение этого окна)
177342 <- 40000 это запрет записи в это (160000-167777) окно
разбивка на окна соответствует размеру в SMK - те 4кБ начиная со 100000(8)
обращаю внимание на адресацию, те свойства r/o w/o привязаны к 24bit адресу слова (!)
также есть регистр управления который осуществляет включение/выключение окон по маске (177342) + для общего управления и совместимостью с SMK
регистр управления shadow режимом 177344
это тоже битовая маска окон, и младший бит соответствует младшему окну
назначение регистра - управление работой shadow-режима для БК11М
как уже было сказано - маппер V2 это полный маппер
и соответственно в режиме БК11М - первые 128кБ это тень памяти БК11М
для этого в регистры 177330 и далее прописываются соответствия страниц памяти в которые будет "откидываться" вся запись в память БК11М и будет обеспечиваться ее копия в памяти AZ.
к примеру
177300 <=13'o030; // 000000-007777
177302 <=13'o031; // 010000-017777
177304 <=13'o032; // 020000-027777
177306 <=13'o033; // 030000-037777
те это нулевая страница в понятии БК11М
и соответственно в 177344 устанавливаются биты shadow-режима
управление shadow осуществляется автоматически в ПЛИС трансляцией запросов из 177716 и согласно режиму работы маппера в 177346
регистр управления маппером 177346
Регистр управления маппером
АДРЕС = 177346
ФОРМАТ РЕГИСТРА
┌──┬──┬──┬──┬──┬ ─┬──┬──┬──┬──┬── ──┬──┬──┬──┬──┐
│15│14│13│12│11│10│09│08│07│06 │05│04│03│02│01│00│
└──┴──┴──┴──┴──┴ ─┴──┴──┴──┴──┴── ──┴──┴──┴──┴──┘
│ ║ │ │ │ ║ ║ │ │ │ │ │ │ │ ┌─────────────── ─────────┐
│ ║ │ │ │ ║ ║ └─────┤ │ └─────┤ └───┴──────┤ версия аппаратной части │
│ ║ │ │ │ ║ ║ │ │ │ └─────────────── ─────────┘
│ ║ │ │ │ ║ ║ │ │ │ ┌───────────────
│ ║ │ │ │ ║ ║ │ │ └─────────────┤ 3 бита резерв │
│ ║ │ │ │ ║ ║ │ │ └───────────────
│ ║ │ │ │ ║ ║ │ │ ┌─────────────── ──────────────── ────────────┐
│ ║ │ │ │ ║ ║ │ └───────┤ управление эмуляцией ПЗУ в БК11М =1 включить│
│ ║ │ │ │ ║ ║ │ └─────────────── ──────────────── ────────────┘
│ ║ │ │ │ ║ ║ │ ┌─────────────── ──────────────── ──────────────── ─────────────┐
│ ║ │ │ │ ║ ║ └──┤частота процессора явно те =3 =4 =5 =6 MHz =0 то неопределено │
│ ║ │ │ │ ║ ║ │ заполняется программно, стартовым ПЗУ │
│ ║ │ │ │ ║ ║ └─────────────── ──────────────── ──────────────── ─────────────┘
│ ║ │ │ │ ║ ║ ╔═══════════════ ════════════════ ════════════════ ════════════════ ═══════════════╗
│ ║ │ │ │ ║ ╚══╣ R/W - RAM окно памяти с 0 до 77777 (технически это и окно 100000 до 137777) ║
│ ║ │ │ │ ║ ║ в отключенном режиме (=1) на 037ую не проходят запросы с адресов с 0 до 77777 ║
│ ║ │ │ │ ║ ║ соответственно и 037ая никак не отвечает и не принимает данные на запись ║
│ ║ │ │ │ ║ ║ соответственно эта опция включает RPLY на маппере БК11М, а также возможность ║
│ ║ │ │ │ ║ ║ читать из маппера !!! при 14 бите =0 опция не работает ║
│ ║ │ │ │ ║ ╚═══════════════ ════════════════ ════════════════ ════════════════ ═══════════════╝
│ ║ │ │ │ ║ ╔═══════════════ ════════════════ ════════════════ ════╗
│ ║ │ │ │ ╚═════╣ R/W - ответ на 177660-663 строб 014й =1 отключение ║
│ ║ │ │ │ ║ а именно эмуляцию 014й ║
│ ║ │ │ │ ║ те уже пойдет RPLY от AZ на адресах 177660-663 ║
│ ║ │ │ │ ║ при 14 бите =0 опция не работает ║
│ ║ │ │ │ ╚═══════════════ ════════════════ ════════════════ ════╝
│ ║ │ │ │ ┌─────────────── ──────────────── ──────────────── ──────────────── ┐
│ ║ │ │ └──┤ R/W - включение эмуляции БК11М =1 включено │
│ ║ │ │ │эта опция может быть активирована только при наличии =1 в бите 12 │
│ ║ │ │ │(при =0 в бите 12 - игнорируется) │
│ ║ │ │ └─────────────── ──────────────── ──────────────── ──────────────── ┘
│ ║ │ │ ┌─────────────── ──────────────── ──────────────── ───────────────┐
│ ║ │ └─────┤ R/W - тип БКшки =0 это 11М, дефолтное состояние =1 это 10ка │
│ ║ │ │ проверяется и устанавливается программно стартовым ПЗУ │
│ ║ │ └─────────────── ──────────────── ──────────────── ───────────────┘
│ ║ │ ┌─────────────── ──────────────── ──────────────── ──────────────── ──────────────── ──────────┐
│ ║ └─┤ 13 - R/W - наличие работоспособной доработки окна1 │
│ ║ │ =1 - работает отключение окна 1 традиционным методом через оттягивание выхода TM9 на землю │
│ ║ │ =0 - доработки нет │
│ ║ │ проверяется и устанавливается программно │
│ ║ │ но сбрасывается в 0 при установке бита 14 - см ниже │
│ ║ └─────────────── ──────────────── ──────────────── ──────────────── ──────────────── ──────────┘
│ ║ ╔═══════════════ ════════════════ ════════════════ ════════╗
│ ╚═╣R/O - тип доработки, результат автоопределения в ПЛИС ║
│ ║=0 доработка окна 1 или нет доработки ║
│ ║=1 доработка с управлением 037й ║
│ ╚═══════════════ ════════════════ ════════════════ ════════╝
│ ┌─────────────── ──────────────── ──────────────── ──────────────── ──────────────── ──────────────── ─┐
└────┤ 15 - R/W - =1 отключение окна 1 в БК11М, транслируется из эмуляции SMK │
│ и в зависимости от типа доработки будет подаваться как сигнал на А22 или как переключение окон 11М │
└─────────────── ──────────────── ──────────────── ──────────────── ──────────────── ──────────────── ─┘
биты
00 - R/O - версия аппаратной части платы ПЛИС - сейчас там 0
01 - R/O - версия аппаратной части платы ПЛИС - сейчас там 0
02 - резерв =0
03 - резерв =0
04 - резерв =0
05 - управление эмуляцией ПЗУ в БК11М; по-умолчанию расширенные ПЗУ бейсика подключаемые через 177716 в окно 1 (100000-137777)
ПЗУ 8 [0] - подключает ПЗУ 325, 327 к магистрали
ПЗУ 9 [1] - подключает ПЗУ 328, 329 к магистрали
установка этого бита включает полную эмуляцию подключения этих ПЗУ средствами AZБК
бит независимый от эмуляции БК11М тк может быть случай с БК11М без ПЗУ совсем
частота процессора явно те =3 =4 =5 =6 MHz =0 то неопределено
заполняется программно, стартовым ПЗУ
06 - R/W
07 - R/W
08 - R/W
управление опциями отключения 037й в ПЛИС, доступно программно
по-умолчанию =0, те опция выключена
тк все изначально =0, и устанавливаются по HALT-у
эти опция отключает прохождение SYNC-а на 037 и включает дополнительный функционал
09 - R/W - RAM окно памяти с 0 до 77777 (технически это и окно 100000 до 137777)
в отключенном режиме (=1) на 037ую не проходят запросы с адресов с 0 до 77777 соответственно и 037ая никак не отвечает и не принимает данные на запись
соответственно эта опция включает RPLY на маппере БК11М, а также возможность читать из маппера
при 14 бите =0 опция не работает
эти опция отключает прохождение SYNC-а на 037 и включает дополнительный функционал
10 - R/W - ответ на 177660-663 строб 014й =1 отключение
а именно эмуляцию 014й
те уже пойдет RPLY от AZ на адресах 177660-663
при 14 бите =0 опция не работает
11 - R/W - включение эмуляции БК11М
=0 выключено
=1 включено
эта опция может быть активирована только при наличии =1 в бите 12 (при =0 в бите 12 - игнорируется)
функционал эмуляции БК11М на БК10 включает:
12 - R/W - тип БКшки
=0 это 11М, дефолтное состояние
=1 это 10ка
проверяется и устанавливается программно стартовым ПЗУ
опция нужна для дальнейшей работы механизмов эмуляции БК11М на БК10
наличие в ней =1 обязательно для включения эмуляции БК11М на БК10
13 - R/W - наличие работоспособной доработки окна1
=1 - работает отключение окна 1 традиционным методом через оттягивание выхода TM9 на землю
=0 - доработки нет
проверяется и устанавливается программно
но сбрасывается в 0 при установке бита 14 - см ниже
14 - R/O - тип доработки, результат автоопределения в ПЛИС
=0 доработка окна 1 или нет доработки
=1 доработка с управлением 037й
сейчас автоопределение выключено на уровне прошивки
15 - R/W - =1 отключение окна 1 в БК11М, транслируется из эмуляции SMK
и в зависимости от типа доработки будет подаваться как сигнал на А22 или как переключение окон 11М
17. RTC часы и энергонезависимая память
для работы с ними используется новый блок команд AZ
см https://forum.maxiol.com/index.php?s=&showt...indpost&p=57017
должны отвечать регистры
SOUND
177160-177174
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
177240 - регистр номера страницы начала отображения - средняя страница под спрайты
177242 - регистр номера страницы начала отображения - нижняя страница - под фон
маппер памяти
177300-350
177550 - генератор псевдослучайных чисел
177560-177566 - UART
После reset машина стартует автоматически и загружается со первого образа в ini-файле
В архиве обновленное - надо прошивать ВСЕ
azboot.ROM
AZLIB00.ROM
AZLIB01.ROM
AZLIB02.ROM
AZ377.ROM
AZBK_00013.hex - новая
AZBK_00013.pof - новая
Обращаю внимание на необходимость подключить новые ПЗУ в секции ROM
пример правильной для данной версии прошивки секции ROM
[ROM]
R00=0:/rom/AZBOOT.ROM
R01=0:/rom/AZLIB00.ROM
R02=0:/rom/AZLIB01.ROM
R03=0:/rom/AZLIB02.ROM
R08=0:/rom/AZ337.rom
R16=0:/rom/11m_324.rom
R18=0:/rom/11m_325.rom
R20=0:/rom/11m_327.rom
R22=0:/rom/11m_328.rom
R24=0:/rom/11m_329.rom
R26=0:/rom/11m_330.rom
R28=0:/rom/10_017.rom
R30=0:/rom/10_018.rom
R32=0:/rom/10_019.rom
R34=0:/rom/10_106.rom
R36=0:/rom/10_107.rom
R38=0:/rom/10_108.rom
Также обращаю внимание на необходимость установки часового пояса в секции NETWORK
пример
[network]
MAC=002335220510
DHCPNAME=AZNET-BK10.home.maxiol.com
DHCP=ON
TIMEZONE=420
таймзона - в минутах
Внимание! батарейка 2032 теперь обязательна
Контроллер AZ BK: Прошивка 00013 (https://forum.maxiol.com/index.php?s=&showtopic=5553&view=findpost&p=57073)
Эх на реальном железе наверное это все круто выглядит!
Друзья. Доброго дня!
Подскажите! при старте на мониторе матрас и висит.
Светодиод горит фиолетовым.
Пробовал две одиннадцатые, результат одинаковый, пзу не грузит
при старте на мониторе матрас и висит.
Светодиод горит фиолетовым.
У меня такое было, когда я при первом подключении, не подсоединил сетевую карту, она оказалась не опция, а часть устройства, без которого устройство не работает.
Затем была вторая проблема - не загружалось с образов на СД карте, помогла дефрагментация файлов на СД карте.
И затем, самая большая проблема, которая потрепала мне нервы - замыкание на землю ноги Б9, которое визуально не просматривалось, слишком тонкий ус из припоя. Из-за чего контроллер не работал на БК11М, а работал только на БК10.
Я так и предположил. Т.к. прошивка самая последняя.
Там несколько разъемов, куда подцеплять сетевуху?
SuperMax
10.12.2022, 13:44
Я так и предположил. Т.к. прошивка самая последняя.
Там несколько разъемов, куда подцеплять сетевуху?
вот тут есть "быстрый старт"
https://forum.maxiol.com/index.php?showtopic=5599
там все расписано
С утра вытаскивал батарейку по незнанке,
походу сбил время. Встает на LAN DATE
Один раз через reset получилось запустить, полазил в ан дос,
но сейчас reset не работает. пока больше ничего не делаю, не тороплюсь.
https://pic.maxiol.com/thumbs2/1670672804.520628209.20221210164247.jpg (https://pic.maxiol.com/?v=1670672804.520628209.20221210164247.jpg&dp=2)
SuperMax
10.12.2022, 14:59
С утра вытаскивал батарейку по незнанке,
походу сбил время. Встает на LAN DATE
Один раз через reset получилось запустить, полазил в ан дос,
но сейчас reset не работает. пока больше ничего не делаю, не тороплюсь.
Батарейка теперь нужна, сейчас он встал на чтении времени.
Я пару раз такое встречал при первом старте после установки батарейки. тк в обоих случаях ресет вылечил то я и не обратил внимания.
По идее надо сейчас подключить сеть, дабы он увидел время и поставил часы.
Макс, подскажи что значит сеть?, не интернетовский lan же.
SuperMax
10.12.2022, 15:14
Макс, подскажи что значит сеть?, не интернетовский lan же.
именно сеть - те кабель в роутер
именно сеть - те кабель в роутер
Вставил кабель Lan от роутера.
Он время не меняет, а проходит до этого и висит:
https://pic.maxiol.com/thumbs2/1670675125.520628209.20221210172204.jpg (https://pic.maxiol.com/?v=1670675125.520628209.20221210172204.jpg&dp=2)
SuperMax
10.12.2022, 16:10
уже лучше
полученный адрес с роутера пишет ?
и теперь надо бы питание проверить
меня смущает проводок к БК
AZ кушает 600ма и напряжение могло просесть
вот тут написал где измерять и сколько должно быть
https://forum.maxiol.com/index.php?s=&showtopic=5543&view=findpost&p=57126
Также велкам в канал в телеграме https://t.me/pdp11_az
где по AZ* можно задавать вопросы в реальном времени
уже лучше
полученный адрес с роутера пишет ?
и теперь надо бы питание проверить
меня смущает проводок к БК
AZ кушает 600ма и напряжение могло просесть
вот тут написал где измерять и сколько должно быть
https://forum.maxiol.com/index.php?s=&showtopic=5543&view=findpost&p=57126
Также велкам в канал в телеграме https://t.me/pdp11_az
где по AZ* можно задавать вопросы в реальном времени
Адреса прописываются, но напряжение на плате 4,4В.
Удвоил сечение провода от БП к БК не помогло.
На БП 4,99В, макс ток 30А
- - - Добавлено - - -
Доп. Проводок минус на плату, поднимает напряжение до 4,8В.
Перестал свтодиод светиться и матрас на экране.
Видимо я что то нахимичил.
SuperMax
11.12.2022, 19:39
Адреса прописываются, но напряжение на плате 4,4В.
Удвоил сечение провода от БП к БК не помогло.
На БП 4,99В, макс ток 30А
- - - Добавлено - - -
Доп. Проводок минус на плату, поднимает напряжение до 4,8В.
надо
а) cделать провода от БП короче и толще
б) поднять напряжение на БП - к примеру у меня с БП 5.2 дабы на самой БК было 5.0 тк потери никуда не деваются
Меня сейчас больше беспокоит негорящий светодиод. На бп я поднял напряжение 5,2В.
Может по новой перепрошить?
Я на JP где +5в кинул проводок +5в и видимо чтото нарушил в работе.
А нужно было просто минус дополнительный на плату контроллера кинуть.
Проверил БК- работает. Контроллер не хочет. Один сигнал в колонках и все, напряжение на контроллере 4,8В
https://pic.maxiol.com/thumbs2/1670855695.520628209.20221212193012.jpg (https://pic.maxiol.com/?v=1670855695.520628209.20221212193012.jpg&dp=2)
p.s. случайно прикоснулся к верхнему чипу, кипяток, палец не терпит. Замерил напряжение на последней ноге STM - 3,22В
батарейка села 0В
SuperMax
12.12.2022, 19:22
Меня сейчас больше беспокоит негорящий светодиод. На бп я поднял напряжение 5,2В.
Может по новой перепрошить?
Я на JP где +5в кинул проводок +5в и видимо чтото нарушил в работе.
Если речь о белом светодиоде - то он показывает наличие +5В на контроллере
если он сгорел то значит как-то на него попало прямо 5В без резистора
если же он не сгорел то он показывает отсутствие +5В на контроллере
важный момент - платы бутербродом
и если невнимательно его соединять можно соединить их со сдвигом, что приведет к непредсказуемым и неприятным эффектам вплоть до повреждения контроллера
А нужно было просто минус дополнительный на плату контроллера кинуть.
не нужно
достаточно толстых проводов и 5.1-5.2 на БП
- - - Добавлено - - -
Проверил БК- работает. Контроллер не хочет. Один сигнал в колонках и все, напряжение на контроллере 4,8В
https://pic.maxiol.com/thumbs2/1670855695.520628209.20221212193012.jpg (https://pic.maxiol.com/?v=1670855695.520628209.20221212193012.jpg&dp=2)
p.s. случайно прикоснулся к верхнему чипу, кипяток, палец не терпит. Замерил напряжение на последней ноге STM - 3,22В
батарейка села 0В
похоже контроллеру пора в ремонт :(
что-то таки получилось поджарить :(
Маленький норм светится, не горит многоцветный светодиод.
контроллер мог поджариться когда я +5В на джемпер JP подал.
Других манипуляций я не делал.
- - - Добавлено - - -
Это он?
https://aliexpress.ru/item/1005002841711552.html?spm=.search_results.0.2b6052 9eWALZI2&sku_id=12000029992484855
Макс. Если заменю контроллер, есть шанс восстановить работоспособность?
SuperMax
13.12.2022, 09:13
Маленький норм светится, не горит многоцветный светодиод.
контроллер мог поджариться когда я +5В на джемпер JP подал.
на джампере 5В с БКшки и пин коморта - те чтобы можно было делать устройства питаемые от порта
те куда бы (на любой пин джампера) 5В не было бы подано - ничего сгореть не могло
но вот касания пинов контроллера силовой шиной в +5В конечно фатальны, тут вариантов увы нет
Других манипуляций я не делал.
- - - Добавлено - - -
Это он?
https://aliexpress.ru/item/1005002841711552.html?spm=.search_results.0.2b6052 9eWALZI2&sku_id=12000029992484855
да, но это судя по цене - выпайка
то что они в блистерах давно ничего не значит
см тема про выпайку
https://forum.maxiol.com/index.php?showtopic=5602
к верхнему чипу, кипяток, палец не терпит
я правильно понял, что это было написано про него ?
платы разъединяли ? или ?
причина таки должна быть
ps: таки лучше перейти в телеграм - оперативнее будет
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot