Помощь - Поиск - Пользователи - Календарь
Полная версия: Контроллер AZ BK: Обновления прошивки
MAXIOL > Техника > DEC hardware / software > AZ controller for PDP-11
SuperMax
Прошивка 00001 тестовая
функционал:
- отображение в VGA экрана БКшки, цветной режим
- проверка работы STM32

должны отвечать регистры 177220-177226 (если читается только 177220 то значит Вы не вставили SD-карту с валидным набором образов - сейчас можно взять любой от ДВК/УКНЦ)
- проверка работы ПЛИС
должны отвечать регистры 177560-177566
- проверка работы SDRAM в байтовом режиме
должна отвечать оперативная память в адресах 160000-167776, читается младший байт, его значения можно изменять - те сохраненные значения потом должны читаться

ограничения:не пойдет на новоделе БК11М тк AZ нацелен отключить все ПЗУ, а эмуляция ПЗУ в замену еще не сделана


Процедура обновления firmware (прошивки) контроллера

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

Нажмите для просмотра прикрепленного файла



SuperMax
Прошивка 00002
функционал:

1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556

2. реализовано ручное переключение видеорежима (циклическое 1-2-3-4) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!

3. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память

4. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]

5. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись

6. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 50MHz (или 65Mhz-посмотрим) как следствие полностью новое слово доступно будет каждый такт

7. загрузка ПЗУ в память (пока реализовано но не используется)

должны отвечать регистры
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]


ограничения: пока еще не пойдет на новоделе БК11М тк AZ нацелен отключить все ПЗУ, а эмуляция ПЗУ в замену еще не включена

как запускать - cпособ временный, костыльный:
177226G
R0/0
160002G
будет загружен и запущен первый образ с диска (согласно ini-файла)
если в R0 занести не 0 а 1 то второй образ


Процедура обновления firmware (прошивки) контроллера

Прошивка
Нажмите для просмотра прикрепленного файла

Образ дисков для тестов
Нажмите для просмотра прикрепленного файла

SuperMax
Прошивка 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)

Процедура обновления firmware (прошивки) контроллера

Прошивка
Нажмите для просмотра прикрепленного файла

Образ
Нажмите для просмотра прикрепленного файла

поправил образ для реплики, теперь должно нормально запускаться (те проверено на БК с отключенной 324й)
SuperMax
Прошивка 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 втч и новой где отключается монитор


SuperMax
Образ дисков для RT11 c исправленной ПЗУ
Нажмите для просмотра прикрепленного файла

RT11 корректно стартует и работает через штатный драйвер BY.SYS
( AZ.SYS еще надо поправить для совместимости с БК )

PS: встроенная оболочка интеркоммандер не понимает больших дисков (по 32МБ)
их надо открывать через штатный фукнционал ОS RT11 - те DIR итд
SuperMax
Прошивка 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

Нажмите для просмотра прикрепленного файла

Готовый образ c новым AZBOOT.ROM
Нажмите для просмотра прикрепленного файла

Если у Вас уже готовы свои образа, копируйте с этого раздел ROM в ini файле + все файлы в каталоге ROM
эти части будут постоянно обновляться тк AZ требует полного соответствия версий прошивок
SuperMax
Обновление ПЗУ для версии 00005

обновление
- включает сеть "на постоянку"
- убирает радугу
- исправляет ошибку автозапуска МКДОС/НОРД

содержит 2 файла ПЗУ
AZ337.ROM
AZBOOT.ROM
их необходимо скопировать в ROM на карточку

а таже исправить строчку в AZ.INI на
Код
R08=0:/rom/AZ337.rom


Нажмите для просмотра прикрепленного файла


SuperMax
Набор с 8ю дисками - игрушки

Нажмите для просмотра прикрепленного файла

последний диск АОДОС или что-то подобное (тк не нашел больше гровых дисков под андос столько)
соответственно многофайловые игры надо запускать из под нее

SuperMax
Прошивка 00005_2 - обновление для поддержки 32х дисков

Нажмите для просмотра прикрепленного файла



Образ диска
Нажмите для просмотра прикрепленного файла

содержит уже новую версию ROM-ов см выше + поддержка 32х дисков в ПЗУ AZ337
SuperMax
Комплект RT11 для БК

автоматическая загрузка идет с BY0:
но на системном диске есть еще стандартны драйвер AZ.SYS
через который можно корректно работать с образами большого размера - те больше чем дискета
тк драйвер BY ориентирован только на дискету и не знает других размеров

AZ.SYS поддерживает максимальные доступные для RT11 диски, а именно 32МБ

Нажмите для просмотра прикрепленного файла
SuperMax
Прошивка 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й версии, те надо обновить только прошивку ПЛИС

Нажмите для просмотра прикрепленного файла

Для проверки работы ковокса
Нажмите для просмотра прикрепленного файла

SuperMax
Прошивка 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й версии, те надо обновить только прошивку ПЛИС

Нажмите для просмотра прикрепленного файла



Для проверки работы DMA-контроллера - комплект дисков и плееры
Нажмите для просмотра прикрепленного файла

подробнее про воспроизведение IMA ADPCM в этой теме


SuperMax
Прошивка 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-файле

В архиве обновленное AZBOOT.ROM - не забудьте обновить
AZBK_00008.hex без изменений относительно 5й версии, те надо обновить только прошивку ПЛИС

Нажмите для просмотра прикрепленного файла

Образ с музыкой AY
Нажмите для просмотра прикрепленного файла





SuperMax
Сделал поддержку БК-0010-01
проверено на БК-0010-01 с пленкой
Нажмите для просмотра прикрепленного файла
игрушки от 10ки запускаются
андос грузится
единственное, включается 15ая палитра от 11М
это пока не учтено, но записано в беклог
SuperMax
Прошивка 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й версии, те надо обновить только прошивку ПЛИС


Нажмите для просмотра прикрепленного файла


RT11 + IMA player
Нажмите для просмотра прикрепленного файла

SuperMax
Прошивка 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

После reset машина стартует автоматически и загружается со первого образа в ini-файле

В архиве обновленное AZBOOT.ROM - не забудьте обновить
AZBK_00010.hex без изменений относительно 5й версии, те надо обновить только прошивку ПЛИС

Прошивка [исправлено 4.06.2022]:
Нажмите для просмотра прикрепленного файла

Музыка 6ти канальная (2хAY) на диске С - спасибо Kuvo !
Нажмите для просмотра прикрепленного файла

Игры:
Нажмите для просмотра прикрепленного файла

IMA музыка:
Нажмите для просмотра прикрепленного файла
запускать
RU PLSS SWEET.IMA
PLSS - это плеер
а SWEET.IMA - трек
посмотреть все - DIR


SuperMax
Прошивка 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 - не забудьте обновить!
AZ337.ROM - не забудьте обновить !
AZBK_00011.hex без изменений относительно 5й версии, те надо обновить только прошивку ПЛИС

Прошивка
Нажмите для просмотра прикрепленного файла
SuperMax
Прошивка 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 - не забудьте обновить!
AZ337.ROM - не забудьте обновить !
AZBK_00012.hex новая. ее надо тоже обновить

Прошивка
Нажмите для просмотра прикрепленного файла

Пример с 6ти канальной музыкой
Нажмите для просмотра прикрепленного файла
SuperMax
Прошивка 00012 bugfix


исправление ошибок в слоях и расширенных режимах 16 и 256цветов


Прошивка
Нажмите для просмотра прикрепленного файла
SuperMax
Прошивка 00013
начало глобальных изменений: это промежуточная прошивка, с большей частью функционала который планировалось реализовать

жирным новое (или измененное) в прошивке

функционал:

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М
Нажмите для просмотра прикрепленного файла
обращаю внимание на то, что физический адрес - словный
режим работы этой памяти устанавливается в регистре 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│40000..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
AZ337.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

таймзона - в минутах


Рабочие комплекты

RT11 (ОС БК 4.1)
Нажмите для просмотра прикрепленного файла

ANDOS и прочее
Нажмите для просмотра прикрепленного файла



SuperMax
Обновление ПЗУ

исправлен первый (холодный) старт
Нажмите для просмотра прикрепленного файла


SuperMax
Прошивка 00014beta
продолжение глобальных изменений: это промежуточная прошивка, с большей частью функционала который планировалось реализовать

жирным новое (или измененное) в прошивке

функционал:

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

Правки от 2022-12-19

Концепция:
маппер 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М
Нажмите для просмотра прикрепленного файла
обращаю внимание на то, что физический адрес - словный
режим работы этой памяти устанавливается в регистре 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 R/W) куда пишется 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│40000..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 R/W
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │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 R/W
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │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 R/W
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │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 R/W
младший бит соответствует младшему окну (те с 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 R/W
это тоже битовая маска окон, и младший бит соответствует младшему окну
назначение регистра - управление работой 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 R/W

Код


         Регистр управления маппером
         АДРЕС = 177346
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │15│14│13│12│11│10│09│08│07│06│05│04│03│02│01│00│
       └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
        │  ║  │  │  │  ║  ║  │     │  │  │  │  │  │   │      ┌─────────────────────────┐
        │  ║  │  │  │  ║  ║  └─────┤  │  │  │  │  └───┴──────┤ версия аппаратной части │
        │  ║  │  │  │  ║  ║        │  │  │  │  │             └─────────────────────────┘
        │  ║  │  │  │  ║  ║        │  │  │  │  │             ┌─────────────────────────────────┐
        │  ║  │  │  │  ║  ║        │  │  │  │  └─────────────┤ =1 50Hz =0 60Hz кадровый таймер │  
        │  ║  │  │  │  ║  ║        │  │  │  │                └─────────────────────────────────┘
        │  ║  │  │  │  ║  ║        │  │  │  │                ┌─────────────────────────────────┐
        │  ║  │  │  │  ║  ║        │  │  │  └────────────────┤ =1 включить таймер 100й вектор  │
        │  ║  │  │  │  ║  ║        │  │  │                   └─────────────────────────────────┘
        │  ║  │  │  │  ║  ║        │  │  │                   ┌────────┐
        │  ║  │  │  │  ║  ║        │  │  └───────────────────┤ резерв │
        │  ║  │  │  │  ║  ║        │  │                      └────────┘
        │  ║  │  │  │  ║  ║        │  │       ┌─────────────────────────────────────────────┐
        │  ║  │  │  │  ║  ║        │  └───────┤ управление эмуляцией ПЗУ в БК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 - =1 50Hz =0 60Hz кадровый таймер
переключение источников таймера, в случае 60Гц - оно идет с VGA модуля, 48Гц генерится из 65MHz

03 - =1 включить таймер 100й вектор
включает таймер по 100му вектору безусловно, h

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 включает:
- разрешение записи (RPLY) в 177662
соответственно работают: палитры + кадровый таймер, частота задается в бите 2

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М

Регистры-копии данных, доступны только по чтению
177350 R/O - регистр копия по записи 177130 в режиме записи управления памятью в SMK
177352 R/O - регистр копия по записи 177716 в режиме записи управления памятью в БК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-352

177550 - генератор псевдослучайных чисел
177560-177566 - UART

После reset машина стартует автоматически и загружается со первого образа в ini-файле

В архиве обновленное - надо прошивать ВСЕ
azboot.ROM
AZLIB00.ROM
AZLIB01.ROM
AZLIB02.ROM
AZBK_00014b.hex - новая
AZBK_00014b.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

таймзона - в минутах


Рабочий комплект

ANDOS + ПРИНЦ
на БК10 запускать start2.exe (тк у БК не хватает быстродействия отобразить заставку пришлось внести коррективы)
Нажмите для просмотра прикрепленного файла

Основная особенность этого комплекта это включение эмуляции БК11М на БК10, для запуска на обычной БК10 не пригодна.
На БК-11М работает штатно


Про доработку БК-0010(01) читать тут


SuperMax
Прошивка 14beta2

В архиве обновленное - надо прошивать ПЛИС + заменить ПЗУ

azboot.ROM
AZLIB00.ROM
AZLIB01.ROM
AZLIB02.ROM
AZBK_00014b2.hex
AZBK_00014b2.pof

Нажмите для просмотра прикрепленного файла
SuperMax
Прошивка 00014

фиксация глобальных изменений!

жирным новое (или измененное) в прошивке относительно 13й версии прошивки

функционал:

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

Правки от 2023-03-20

Концепция:
маппер 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М
Нажмите для просмотра прикрепленного файла
обращаю внимание на то, что физический адрес - словный
режим работы этой памяти устанавливается в регистре 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 R/W) куда пишется 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│40000..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 R/W
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │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 R/W
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │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 R/W
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │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 R/W
младший бит соответствует младшему окну (те с 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 R/W
это тоже битовая маска окон, и младший бит соответствует младшему окну
назначение регистра - управление работой 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 R/W

Код


         Регистр управления маппером
         АДРЕС = 177346
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │15│14│13│12│11│10│09│08│07│06│05│04│03│02│01│00│
       └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
        │  ║  │  │  │  ║  ║  │     │  │  │  │  │  │   │      ┌─────────────────────────┐
        │  ║  │  │  │  ║  ║  └─────┤  │  │  │  │  └───┴──────┤ версия аппаратной части │
        │  ║  │  │  │  ║  ║        │  │  │  │  │             └─────────────────────────┘
        │  ║  │  │  │  ║  ║        │  │  │  │  │             ┌─────────────────────────────────┐
        │  ║  │  │  │  ║  ║        │  │  │  │  └─────────────┤ =1 50Hz =0 60Hz кадровый таймер │  
        │  ║  │  │  │  ║  ║        │  │  │  │                └─────────────────────────────────┘
        │  ║  │  │  │  ║  ║        │  │  │  │                ┌─────────────────────────────────┐
        │  ║  │  │  │  ║  ║        │  │  │  └────────────────┤ =1 включить таймер 100й вектор  │
        │  ║  │  │  │  ║  ║        │  │  │                   └─────────────────────────────────┘
        │  ║  │  │  │  ║  ║        │  │  │                   ┌────────┐
        │  ║  │  │  │  ║  ║        │  │  └───────────────────┤ резерв │
        │  ║  │  │  │  ║  ║        │  │                      └────────┘
        │  ║  │  │  │  ║  ║        │  │       ┌─────────────────────────────────────────────┐
        │  ║  │  │  │  ║  ║        │  └───────┤ управление эмуляцией ПЗУ в БК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 - =1 50Hz =0 60Hz кадровый таймер
переключение источников таймера, в случае 60Гц - оно идет с VGA модуля, 48Гц генерится из 65MHz

03 - =1 включить таймер 100й вектор
включает таймер по 100му вектору безусловно, h

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 включает:
- разрешение записи (RPLY) в 177662
соответственно работают: палитры + кадровый таймер, частота задается в бите 2

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М

Регистры-копии данных, доступны только по чтению
177350 R/O - регистр копия по записи 177130 в режиме записи управления памятью в SMK
177352 R/O - регистр копия по записи 177716 в режиме записи управления памятью в БК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-352

177550 - генератор псевдослучайных чисел
177560-177566 - UART

После reset машина стартует автоматически и загружается со первого образа в ini-файле

В архиве обновленное - надо прошивать ВСЕ
azboot.ROM
AZLIB00.ROM
AZLIB01.ROM
AZLIB02.ROM
AZLIB03.ROM
SETUP.ROM
AZBK_00014.hex - новая
AZBK_00014.pof - новая

Нажмите для просмотра прикрепленного файла

Обращаю внимание на необходимость подключить новые ПЗУ в секции ROM

пример правильной для данной версии прошивки секции ROM
Код

[ROM]
R00=0:/rom/AZBOOT.ROM
R01=0:/rom/AZLIB00.ROM
R02=0:/rom/AZLIB01.ROM
R03=0:/rom/AZLIB02.ROM
R04=0:/rom/AZLIB03.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
R56=0:/rom/SETUP.rom




Установку и настройку сети теперь можно сделать как и в AZ.INI так и в SETUP-е
пример
Код

[network]
MAC=002335220510
DHCPNAME=AZNET-BK10.home.maxiol.com
DHCP=ON
TIMEZONE=420

таймзона - в минутах


Setup сделан в интуитивно понятном стиле

Добавлю пояснения по расширенным опциям:

Для БК11М

1. для работы дискового бейсика 11М - включаем опцию "ROM 11emulation"
также эта опция позволит работать на БК11М вообще без каких-либо ПЗУ

2. V-sync таймер это расширенный таймер через 177346 (см выше)

Для БК10
в зависимости от доработок будут доступны опции
- FastRAM - это режим 10ки но с быстрой нижней памятю
- BK11 emulation - режим эмуляции БК11М
- внешняя PS/2 клавиатура

Горячие кнопки:
после появления надписи "Press KT to run Setup"
доступны следующие горячие кнопки
1. КТ - запуск SETUP-а, это не мгновенно, не беспокойтесь!
2. Пробел - выход в монитор (БК10 или БК11М - в зависимости от БК и ее режима)
3. Цифры от 0 до 9 - загрузка с выбранного диска
/также напоминаю, что выбор дефолтного бутового диска в SETUP-е/


Рабочие комплекты

ANDOS + ПРИНЦ

на БК10 с 3MHz запускать start2.exe (тк у БК не хватает быстродействия отобразить заставку пришлось внести коррективы)

Нажмите для просмотра прикрепленного файла


Про доработку БК-0010(01) читать тут


SuperMax
Прошивка 00015 beta 5

фиксация глобальных изменений!

жирным новое (или измененное) в прошивке относительно 14й версии прошивки

функционал:

1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
изменена база палитр 256 цветов ( ее начало изменено на 32 градации серого тк в стандартной WEB-safe которая взята за базу, такого набора градаций серого почему-то нет)

2. реализовано ручное переключение видеорежима (циклическое 1-2) по сочетанию AR2+ЛАТ
те можно спокойно переключать его в зависимости от программы не напрягаясь!

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 пойдут напрямую на микшер отдельным каналом

OPL2 - экспериментальная опция в V15b4 и далее
177176 (младший байт) адрес
177177 ( старший данные)
также поддержана словная запись -те можно писать напрямую словами


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. Сделан конструктор видеорежимов

(редакция от 2024-01-09)

теперь вот так:

177230 - регистр управления
177232 - регистр номера страницы начала отображения - верхняя страница (слой 0)
177240 - регистр номера страницы начала отображения - средняя страница (слой 1) "под спрайты"
177242 - регистр номера страницы начала отображения - нижняя страница (слой 2) "под фон"
177244 - регистр вертикального скролинга слой 2
177246 - регистр вертикального скролинга слой 1
177250 - регистр вертикального скролинга слой 0
177252 - регистр гозизонтального скролинга слой 0
177254 - регистр гозизонтального скролинга слой 1
177256 - регистр гозизонтального скролинга слой 2

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 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти


15. Добавлена эмуляция 2xAY
сложение каналов по форумуле
R=A1+A2+B1+B2
L=C1+C2+B1+B2

Прямая доступность регистров на шине, а именно доступны байтовые регистры
177172 - адрес AY1
177173 - данные AY1
177174 - адрес AY2
177175 - данные AY2

16. Доработки маппера памяти AZ

Правки от 2023-03-20

Концепция:
маппер 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М
Нажмите для просмотра прикрепленного файла
обращаю внимание на то, что физический адрес - словный
режим работы этой памяти устанавливается в регистре 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 R/W) куда пишется 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│40000..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 R/W
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │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 R/W
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │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 R/W
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │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 R/W
младший бит соответствует младшему окну (те с 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 R/W
это тоже битовая маска окон, и младший бит соответствует младшему окну
назначение регистра - управление работой 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 R/W

Код


         Регистр управления маппером
         АДРЕС = 177346
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │15│14│13│12│11│10│09│08│07│06│05│04│03│02│01│00│
       └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
        │  ║  │  │  │  ║  ║  │     │  │  │  │  │  │   │      ┌─────────────────────────┐
        │  ║  │  │  │  ║  ║  └─────┤  │  │  │  │  └───┴──────┤ версия аппаратной части │
        │  ║  │  │  │  ║  ║        │  │  │  │  │             └─────────────────────────┘
        │  ║  │  │  │  ║  ║        │  │  │  │  │             ┌─────────────────────────────────┐
        │  ║  │  │  │  ║  ║        │  │  │  │  └─────────────┤ =1 50Hz =0 60Hz кадровый таймер │  
        │  ║  │  │  │  ║  ║        │  │  │  │                └─────────────────────────────────┘
        │  ║  │  │  │  ║  ║        │  │  │  │                ┌─────────────────────────────────┐
        │  ║  │  │  │  ║  ║        │  │  │  └────────────────┤ =1 включить таймер 100й вектор  │
        │  ║  │  │  │  ║  ║        │  │  │                   └─────────────────────────────────┘
        │  ║  │  │  │  ║  ║        │  │  │                   ┌────────┐
        │  ║  │  │  │  ║  ║        │  │  └───────────────────┤ резерв │
        │  ║  │  │  │  ║  ║        │  │                      └────────┘
        │  ║  │  │  │  ║  ║        │  │       ┌─────────────────────────────────────────────┐
        │  ║  │  │  │  ║  ║        │  └───────┤ управление эмуляцией ПЗУ в БК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 - =1 50Hz =0 60Hz кадровый таймер
переключение источников таймера, в случае 60Гц - оно идет с VGA модуля, 48Гц генерится из 65MHz

03 - =1 включить таймер 100й вектор
включает таймер по 100му вектору безусловно, h

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 включает:
- разрешение записи (RPLY) в 177662
соответственно работают: палитры + кадровый таймер, частота задается в бите 2

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М

Регистры-копии данных, доступны только по чтению
177350 R/O - регистр копия по записи 177130 в режиме записи управления памятью в SMK
177352 R/O - регистр копия по записи 177716 в режиме записи управления памятью в БК11М

Основное назначение регистров - возможность в любой процедуре поменять настройки памяти, что-то сделать и вернуть их обратно (тк штатными средствами узнать что записано в эти регистры невозможно)


17. RTC часы и энергонезависимая память
для работы с ними используется новый блок команд AZ
см https://forum.maxiol.com/index.php?s=&showt...indpost&p=57017


должны отвечать регистры
SOUND
177160-177176
177200-177212
AZ
177220-177226

видеоконтроллер
177230 - регистр управления
177232 - регистр номера страницы начала отображения - верхняя страница (слой 0)
177240 - регистр номера страницы начала отображения - средняя страница (слой 1) "под спрайты"
177242 - регистр номера страницы начала отображения - нижняя страница (слой 2) "под фон"
177244 - регистр вертикального скролинга слой 2
177246 - регистр вертикального скролинга слой 1
177250 - регистр вертикального скролинга слой 0
177252 - регистр гозизонтального скролинга слой 0
177254 - регистр гозизонтального скролинга слой 1
177256 - регистр гозизонтального скролинга слой 2

маппер памяти
177300-352

177550 - генератор псевдослучайных чисел
177560-177566 - UART

После reset машина стартует автоматически и загружается со первого образа в ini-файле

18. При остановленном процессоре БКшки (КР1801ВМ) контроллер отображает логотип, а также при невозможности старта - ошибку с подсказками как ее можно устранить

19. Сделан блиттер
детальное описание тут

Блиттер (начиная с v15)
редакция от 2024-01-11

Блиттер в мой реализации есть робот читающий набор команд и выполняющих их по окончанию отображения кадра в отличии от классического блиттера в амиге, где команды подаются в режиме реального времени

Примеры применения блиттера с исходниками вот ТУТ


изначальные ограничения:
1. блиттер оперирует только словами, иначе говоря минимальная дискретность по горизонтали - 2пикселя (в видеорежиме 256цветов) *все расчеты в блиттере ведутся словами.*

2.команда блиттера - 8 слов

3. чтение блока команд происходит по концу отрображения 767й строки (считая с 1й);
запуск блиттера происходит по началу 769й строки - те после отображения кадра и одновременно с иницированием кадрового прерывания. иначе говоря в кадровом прерывании можно смело менять команды, страницу команд, количество команд (кроме обнуления количества команд - оно приведет к асинхронному останову блиттера)

4. блиттер работает в плоском адресном пространстве со словами 16бит и адресом 24 бита
иначе говоря он видит всю память [расширенную - те 32МБ] сразу.

5. макс количество команд - 128

6. макс количество слов в команде - те обрабатываемое в пакете - 256*256=65536 cлов

7. хранение исходных (SRC) спрайтов строго линейное и кратное 32м словам
те спрайт должен начинаться с адреса кратному 100(8)

8. распроложение целевых данных (DST) прямоугольное - те строка + пропуск

9. максимальная шрина спрайта - 256 слов

10. максимальная строчная инкрементация - 256 слов

11. максимальное количество строк - 256

12. операции:
- заполнение константой
- копирование из SRC в DST (дискретность - слово)
- наложение SRC на DST и помещение результата в DST при SRC!=константа прозрачного цвета
(дискретность - байт)
- наложение SRC на DST и помещение результата в DST при SRC!=константа прозрачного цвета и DST==константа прозрачного цвета
(дискретность - байт)
- копиирование из прямоугольного DST в линейный SRC (сохранение фона)
(дискретность - слово)

что означает дискретность:
слово - те операция всегда пишет слово (2 байта)
байт - означает, что тут проверяется каждый байт на соответствие правил и пишутся только те байты которые выполнили условия
иначе говоря наложение спрайта на фон будет без дефектов - те оно попиксельное!

13. под блок команд блиттера выделяется страница (технически любая cвободная, просто команды читаются с начала указанной в регистре страницы)
иначе говоря набор команд можно быстро менять просто меняя номер страницы

14.После чтения строки команд в буфер ПЛИС, регистр номера страницы можно менять как угодно это сделано для того чтобы пока одна пачка команд выполняется - можно было в обработчике кадрового прерывания ее поменять на другую пачку ( по времени это разнесено - и кадровое прерывание возникает гарантированно позднее чтения )

15. чтение пачки команд производится в память ПЛИС при выполнении 3х условий - команда читать от VGA - количество команд не равно =0 - блиттер готов к выполнению (те он в статусе ожидания) иначе говоря если мы зафигачим 100 команд которые будут выполняться 5 кадров (к примеру) то чтение новой пачки не начнется пока вся пачка команд не выполнится

Управление блиттером осуществляется через два регистра
177270 - количество команд в блиттере, регистр сбрасывается в 0 по низкому B_HALT_L (системный сброс в БК)
177272 - номер страницы содержащей команды

запись 0 в 177270 вызывает полный асинхронный сброс/останов всех процессов блиттера

Код


             РЕГИСТР УПРАВЛЕНИЯ БЛИТТЕРОМ (КОЛИЧЕСТВА КОМАНД)

         АДРЕС = 177270
         ФОРМАТ РЕГИСТРА
         доступен по чтению и записи                            
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │15│14│13│12│11│10│09│08│07│06│05│04│03│02│01│00│
       └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
                                │                     │
                               ╔╧═════════════════════╧╗
                               ║   Количество команд   ║
                               ║      =0 выключен      ║
                               ╚═══════════════════════╝


             РЕГИСТР СТРАНИЦЫ КОМАНД БЛИТТЕРА

         АДРЕС = 177272
         ФОРМАТ РЕГИСТРА
         доступен по чтению и записи                            
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │15│14│13│12│11│10│09│08│07│06│05│04│03│02│01│00│
       └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
                 │                                    │
                ╔╧════════════════════════════════════╧╗
                ║  Номер страницы с командами блиттера ║
                ╚══════════════════════════════════════╝





далее в описании рассматриваем видеорежим разрешение 512х384 256цветов, 196кБ экран, квадратный пиксель как основное

команда блиттера cодержит 8 слов
1 слово
старший байт - старшая часть адреса SRC
младший байт - старшая часть адреса DST
2 слово - младшая часть адреса SRC
3 слово - младшая часть адреса DST

4 слово - команда
биты
0 = 1 для команды нужно чтение SRC
1 = 1 для команды нужно чтение DST
2 = не используется, резерв

3-4-5
номер команды
=0 заполнение константой CONST
=1 копирование SRC=>DST
=2 наложение SRC на DST =>DST при (при SRC!=прозрачный цвет SRC)
=3 наложение SRC на DST =>DST при (при SRC!=прозрачный цвет SRC) и (при DST=прозрачный цвет DST)
=4 копирование DST => SRC (сохранение фона)

в итоге получаются команды (в 8 системе)
= 0 заполнение константой
= 11 копирование SRC=>DST
= 21 наложение SRC на DST =>DST (при SRC!=прозрачный цвет SRC)
= 33 наложение SRC на DST =>DST (при SRC!=прозрачный цвет SRC) и (при DST=прозрачный цвет DST)
= 42 копирование DST=>SRC

Пояснения - на примере команды заполнения константой: для нее не требуется установка битов чтения данных SRC или DST, тк запись данных (в данном случае константы идет безусловно). если мы поставим эти биты - ничего не произойдет для пользователя - лишь скорость выполнения команды уменьшится тк блиттер потратит время на чтение.

= 11 копирование SRC=>DST


тут чтобы положить данные в DST мы должны из считать из SRC - cоответственно проставляем бит чтения SRC, читать DST нам тут не надо тк нам пофиг - запись безусловная

= 21 наложение SRC на DST =>DST (при SRC!=прозрачный цвет SRC) тут аналогично - нужен только SRC для проверки условия

= 33 наложение SRC на DST =>DST (при SRC!=прозрачный цвет SRC) и (при DST=прозрачный цвет DST) - тут две проверки - и нам нужно считать и SRC и DST - соответственно установлены оба бита чтения зачем чтение вынесено в отдельные биты ? тупо оптимизация аппаратной части блиттера - экономия LC (бит проще проверять чем несколько битов)

далее в примере будем рассматривать спрайт шириной 8 пикселей и высотой тоже 8 пикселей
количество слов получается (8/2)*8 = 32.


5 слово (используется младший байт)
длина спрайта в словах по горизонтали
иначе говоря в копировании 1в1 значение должно быть 1
(речь о копировании сплошного блока целиком)
а если спрайт по горизонтали 8. пикселей то указываем 3. тк копирование идет словами по 2 пикселя

6 слово - (используется младший байт) инкрементация адреса назначения после копирования строки спрайта
иначе говоря в копировании 1в1 значение должно быть 1
а если мы хотим вывести спрайт шриной 8. пикселей в строку длиной 256. слов
то мы должны указать инкрементацию - 256.-3.=253.

7 слово - (используется младший байт) количество строк

8 слово -младший байт константа заполнения или константа прозрачного цвета SRC
старший байт - константа прозрачного цвета DST

Для формирования команды можно использовать калькулятор команд блиттера


В архиве обновленное - надо прошивать ВСЕ

Нажмите для просмотра прикрепленного файла

azboot.ROM - положить в ROM
AZLIB00.ROM - положить в ROM
AZLIB01.ROM - положить в ROM
AZLIB02.ROM - положить в ROM
AZLIB03.ROM - положить в ROM
SETUP.ROM - положить в ROM
AZBK_00015b5.hex
AZBK_00015b5.pof
AZLOGO.RAW - положить в ROM

Добавлена новая секция ini файла
[LOGO]
L=0:/rom/AZLOGO.RAW



Установку и настройку сети теперь можно сделать как и в AZ.INI так и в SETUP-е
пример
Код

[network]
MAC=002335220510
DHCPNAME=AZNET-BK10.home.maxiol.com
DHCP=ON
TIMEZONE=420

таймзона - в минутах


Setup сделан в интуитивно понятном стиле

Добавлю пояснения по расширенным опциям:

Для БК11М
1. для работы дискового бейсика 11М - включаем опцию "ROM 11emulation"
также эта опция позволит работать на БК11М вообще без каких-либо ПЗУ

2. V-sync таймер это расширенный таймер через 177346 (см выше)

Для БК10
в зависимости от доработок будут доступны опции
- FastRAM - это режим 10ки но с быстрой нижней памятю
- BK11 emulation - режим эмуляции БК11М
- внешняя PS/2 клавиатура

Горячие кнопки:
после появления надписи "Press KT to run Setup"
доступны следующие горячие кнопки
1. КТ - запуск SETUP-а, это не мгновенно, не беспокойтесь!
2. Пробел - выход в монитор (БК10 или БК11М - в зависимости от БК и ее режима)
3. Цифры от 0 до 9 - загрузка с выбранного диска
/также напоминаю, что выбор дефолтного бутового диска в SETUP-е/


Рабочие комплекты

ANDOS + ПРИНЦ + демки блиттера
Нажмите для просмотра прикрепленного файла

на БК10 с 3MHz запускать start2.exe (тк у БК не хватает быстродействия отобразить заставку пришлось внести коррективы)



Про доработку БК-0010(01) читать тут


SuperMax
Прошивка 00015 beta 6

данная прошивка является баг-фиксом и в ней исправлена ошибка работы с 256словной видеострокой


Прошивка
Нажмите для просмотра прикрепленного файла

Образ для проверки
Нажмите для просмотра прикрепленного файла
SuperMax
Прошивка 00015 beta 7

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

документация на блиттер
примеры работы с блиттером



Нажмите для просмотра прикрепленного файла

образ с обновленными тестами блиттера
Нажмите для просмотра прикрепленного файла
SuperMax
Прошивка 00015 beta 8


в прошивке переработано

A. блиттер:
изменена логика работы бит 15
бит занятости блиттера - он установлен в =1 всегда когда блиттер занят чем-либо: читает команды в буфер или уже выполняет команды

добавлен бит 9
бит фиксации пачки команд, =1 означает, что блиттер читает пачку команд в буфер и сейчас ничего с командами делать ничего нельзя. данный бит предназначен для организации конвейерной обработки пакетов команд;

изменены слова в команде - теперь

5 слово
младший байт
длина спрайта в словах по горизонтали
иначе говоря в копировании 1в1 значение должно быть 1
(речь о копировании сплошного блока целиком)
а если спрайт по горизонтали 8. пикселей то указываем 3. тк копирование идет словами по 2 пикселя

старший байт
количество строк (было в 7м слове)


7 слово целиком отдано как координата Y
Y координата для видеорежима 256 слов в строке
иначе говоря это часть базового адреса для удобства
addr_mem_dst<=addr_dst+{spr_Yadd,8'd0};


добавлен бит NOP для команды
4 слово - команда
биты
2 = 1 флаг NOP - те наличие этого флага вызывает переход к следующей команде
те просто установить его на команде и она будет пропущена

B. видеоконтроллер
- добавлено управление синхронизацией которая появилась в 15b7
регистр 177230
бит 11 - синхрониация отображаемых страниц, =1 включена
данный бит включает синхронизацию отображаемых страниц с отображением кадра
суть в том, что если мы к примеру поменяем значение в регистре 177232 - те установим новую отображаемую страницу, то при отключенной синхронизации, изменения будут приняты немедленно - вне зависимости от того что сейчас отображается на экране, а именно если сейчас идет отображение кадра то начиная со следующей строки будет отображаться новая страница.
если же явно включить синхронизацию =1 то страница поменяется только когда будет отображаться новый кадр. по-умолчанию синхронизация выключена.


C. ROM старта
fix ошибочного определения опций (доработок)


Нажмите для просмотра прикрепленного файла
SuperMax
Прошивка 00015 beta 9


в прошивке переработано

A. блиттер:

добавлена команда 51
предназначена для заливки константой по контуру спрайта, данный способ отметить пересечение или попадание было характерным для игр 80х годов
к примеру тут https://www.youtube.com/watch?v=LtetK6-x6bs&t=146s
герой засвечивается белым во время столкновения с шерифом

51 наложение SRC на DST =>DST (при SRC!=прозрачный цвет SRC) тут аналогично - нужен только SRC для проверки условия
важно - константа заполнения в младшем байте, а константа прозрачного цвета SRC в старшем
(не как в 21й команде где константа прозрачного цвета SRC в младшем байте)


Прошивка
Нажмите для просмотра прикрепленного файла

Образ с обновленными тестами блиттера
Нажмите для просмотра прикрепленного файла

SuperMax
баг-фикс для 15beta9


по результатам разбора ошибки с запуском SETUP в эмуляторе GID-а нашлась ошибка не только в эмуляторе (тк на железе все работало) но и некорректность в коде инициализации векторов прерываний

соответственно сделал FIX который корректно их устанавливает и теперь этот набор ROMов работает корректно и на текущей (08.08) версии эмулятора и на предыдущей (от 03.06)

исправленные ROMы
Нажмите для просмотра прикрепленного файла
SuperMax
Прошивка 00017

в прошивке переработано/добавлено

1. работа бита синхронизация экрана
теперь включение синхронизации фиксирует отображаемую страницу и горизонтальный скролл(сдвиг)
стратегия управления вертиклаьным скроллом исключает его дерганье при изменении отображемой страницы "на лету" (те во время отображения) - результат - более удобное получения более качественной картинки при изменении информации

2. работа сети
- сделано корректное отображение и сохранение дат/времени создания файлов втч и внутри образов RT11 c учетом часового пояса (физически время в контроллере считается GMT но учитывается коррекция часового пояса для WEBDAV)
- сделано управляемое TCP window для более оптимальной работы сервисов
- добавлена поддержка сервисов HOF
- добавлен функционал сетевых дисков
расширение функционала монтирования дисков см команды первый блок
команды 011 003 004 014
полноценная поддержка реализована утилитами
пример утилиты AZSMNT - просмотр назначений дисков втч. и сетевых
пример утилиты - AZDIR - просмотр директории локального диска
(сетевые директории в V17 просматривать пока нельзя)
пример утилиты AZMNT
пример утилиты AZUMNT

Сетевые пространства имен получили буквенные наименования
D5=0:/disks/rt11bk.DSK - это локальный диск, так как имя диска 0:
D4=N:/RT11BK.DSK - это сетевой диск, так как имя диска N:

Поддерживаемые в V17 пространства имен:
N: - сетевой диск из архива - те любой образ c https://mirrors.pdp-11.ru/
данный путь считается корнем
соответственно для монтирования диска OVERKIL.IMG
расположенного по пути
https://mirrors.pdp-11.ru/_bk0010-11-11m/so...collection/IMG/

надо указать
N:/_bk0010-11-11m/soft/SuperMax_collection/IMG/OVERKIL.IMG

Указать можно как и утилите монтирования, но и в самом AZ.INI

Важно! регистр имеет значение
есть поддежка русских букв КОИ7/КОИ8

Второе реализованное пространство в V17 имен это R: - репозиторий
это будет репозиторий избранного софта

Ограничения:
- максимальная длина пути - 384 символа (самый длинный путь в архиве сейчас 366, соответственно точно хватит )
- все диски из архива (пространство имен N:/) монтируются только R/O режиме
- все диски из репозитория (пространство имен R:/) монтируются только R/O режиме

3. команды
командный режим реализован через HTTP интерфейс
добавлены две команды
CMD.REBOOT - вызывает перезапуска AZБК
CMD.SCREENSHOT - вызывает формирование скриншота на основании дефолтных настроек экрана
результатом команды является файл-скриншота
распаковать его можно на сайте
https://master.pdp-11.ru/screen_unpack/
пример результата
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла

ограничения:
командный режим работает только при включенной сети, если к примеру софт при старте выключил сеть, команду подать не получится.
Прошивка:
Нажмите для просмотра прикрепленного файла

Софт
Комплект ANDOS локальный
Нажмите для просмотра прикрепленного файла

Комплект АNDOS сетевой полностью
Нажмите для просмотра прикрепленного файла

Комплект RT11 локальный, с утилитами, а также игрой Тетрис с поддержкой HOF
Нажмите для просмотра прикрепленного файла

Комплект RT11 с сетевой загрузкой, с утилитами, а также игрой Тетрис с поддержкой HOF
Нажмите для просмотра прикрепленного файла
SuperMax
Багфикс прошивки V17

исправления коснулись работы с образами RT11
новое только прошивка STM32
Нажмите для просмотра прикрепленного файла

SuperMax
Багфикс прошивки V17

исправление работы с IMA ADPCM
надо перепрошить ПЛИС
Нажмите для просмотра прикрепленного файла
SuperMax
Багфикс прошивки V17

Исправления
- IMA ADPCM;
- работа с образами RT11;
- стартовая процедура, теперь при нарушении стартовой последовательности (зависании на первом шаге к примеру), срабатывает авторестарт;


Кумулятивное обновление
- ПЛИС
- STM32
- ROM
Нажмите для просмотра прикрепленного файла
Образ с новым SETUP.ROM

SuperMax
Прошивка 00018

Прошивка содержит множество исправлений и является финальной кумулятивной версией 17й прошивки


Исправления
- IMA ADPCM;
- работа с образами RT11;
- стартовая процедура, теперь при нарушении стартовой последовательности (зависании на первом шаге к примеру), срабатывает авторестарт;
- SETUP теперь не затирает секцию LOGO;
- улучшена работа HOF и Landisk

В прошивке изменилось все - надо перепрошить/перезалить
- ПЛИС
- STM32
- ROM



Прошивка
Нажмите для просмотра прикрепленного файла

Образ
Нажмите для просмотра прикрепленного файла

И теперь можно играть в Dangerous Dave in the Haunted Mansion

качать тут
https://hof.maxiol.com/top/10
после регистрации, в самом дейве можно войти в сеть для регистрации рекордов и ачивок!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2025 Invision Power Services, Inc.