Контроллер псевдодиска на MicroSD для ДВК / УКНЦ / original PDP-11 / БК-0010 / БК-0011 / БК-0011М с Ethernet

ЭВМ и ПЭВМ, производившиеся в СССР и странах СЭВ

SuperMax
Advanced Member
Сообщения: 1605
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Контактная информация:

Конкурсы

Вклад в сообщество

Контроллер псевдодиска на MicroSD для ДВК / УКНЦ / original PDP-11 / БК-0010 / БК-0011 / БК-0011М с Ethernet

Сообщение SuperMax » 12.12.2021,10:03

Записал видео - демонстрация работы AY на контроллере AZ БК


SuperMax
Advanced Member
Сообщения: 1605
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Контактная информация:

Конкурсы

Вклад в сообщество

Контроллер псевдодиска на MicroSD для ДВК / УКНЦ / original PDP-11 / БК-0010 / БК-0011 / БК-0011М с Ethernet

Сообщение SuperMax » 11.01.2022,06:22

Сделал поддержку БК-0010-01

проверено на БК-0010-01 с пленкой

игрушки от 10ки запускаются
андос грузится

единственное, включается 15ая палитра от 11М
это пока не учтено, но записано в беклог

исправленное ПЗУ и готовый образ карты тут
https://forum.maxiol.com/index.php?s=&s ... st&p=56213

SuperMax
Advanced Member
Сообщения: 1605
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Контактная информация:

Конкурсы

Вклад в сообщество

Контроллер псевдодиска на MicroSD для ДВК / УКНЦ / original PDP-11 / БК-0010 / БК-0011 / БК-0011М с Ethernet

Сообщение SuperMax » 16.01.2022,19:16

Сделал

UART (RS-232 EIA-232 COM ком-порт)

адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу

177560 - регистр статуса приемника
бит 6 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает

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

177564 - регистр статуса передачика
бит 6 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает

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

подробности тут
Контроллер AZ BK: UART

SuperMax
Advanced Member
Сообщения: 1605
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Контактная информация:

Конкурсы

Вклад в сообщество

Контроллер псевдодиска на MicroSD для ДВК / УКНЦ / original PDP-11 / БК-0010 / БК-0011 / БК-0011М с Ethernet

Сообщение SuperMax » 18.01.2022,16:00

Прошивка 00009 для AZБК


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

функционал:

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

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

3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль

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

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

5. Переделано

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

7. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 130MHz как следствие полностью новое слово доступно будет каждый процессорный такт

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

9. Реализовано распознавание новодела БК11М и подключение ПЗУ

10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно

запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212

соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом

Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный


11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора

00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM

06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100

09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo


177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения

данные с DMA пойдут напрямую на микшер отдельным каналом

12. Legacy AY через 177714
работает автоопределение источника звука - или ковокс или AY

13. Сделан UART

адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу

177560 - регистр статуса приемника
бит 7 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает

177562
- по чтению - младший байт содержит принятые данные
- по записи - слово определяющее скорость, подробности ниже
дефолтное значение 32346(8) что соответствует стандартной скорости в 9600бод

177564 - регистр статуса передачика
бит 7 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает

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

Слово определяющее скорость - доступно только по записи

детальное описание UART в AZБК


14. Сделан конструктор видеорежимов

177230 - регистр управления
177232 - регистр номера страницы начала отображения

177230, далее пойдут биты с описанием
1;0 - режим цветовой интерпретации
4;3 - длина строки в словах
7;6 - растяжение по горизонтали - те количество повторов у точки
10;9 - количество повторов строк
15;12 - длина рулона в словах

теперь подробно
режим цветовой интерпретации, значение от 0 до 3
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов

длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов

растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128

количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192

длина рулона в словах
0 6144
1 8192
2 12288
3 16384
4 24576
5 32768
6 49152
7 65536
8 98304
9 131072
10 196608
11 262144
длина дает информацию контроллеру для корректной работы вертикального скролинга
и важный момент - длина рулона может быть БОЛЬШЕ чем экран
иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов )
а рулон выбрать в 64кБ, что позволит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном

типовые видеорежимы (значение восьмеричные)
012201 - 256х256х4цвета (экран 16кБ)
012100 - 512х256х2цвета (экран 16кБ)
032212 - 256х256х16цветов (экран 32кБ)

регистр 177232 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти

Важно! видеорежимы в состоянии "beta" те я не провел полного тестирования

должны отвечать регистры
SOUND
177160-177170
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
177550 - генератор псевдослучайных чисел
177560-177566 - UART

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

В архиве обновленное AZBOOT.ROM - не забудьте обновить
также утилита VGAMON.SAV для RT11 которая переключает в режим mono 512x256
AZBK_00009.hex без изменений относительно 5й версии, те надо обновить только прошивку ПЛИС


Контроллер AZ BK: Прошивка 00009

SuperMax
Advanced Member
Сообщения: 1605
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Контактная информация:

Конкурсы

Вклад в сообщество

Контроллер псевдодиска на MicroSD для ДВК / УКНЦ / original PDP-11 / БК-0010 / БК-0011 / БК-0011М с Ethernet

Сообщение SuperMax » 29.05.2022,08:03

Провел большую переработку проекта
разделил клоки на 130MHz и 65MHz
теперь большая часть проекта работает на 65MHz, на 130MHz осталась только оперативка - SDRAM

следствие переработки - теперь доступны новые горизонты и к примеру добавление 2xAY и вчера, благодаря оперативности Kuvo испытания 2хAY прошли успешно!

Документация тут
https://forum.maxiol.com/index.php?s=&s ... st&p=55703

Готовлю релиз прошивки. может что-то еще добавится.

SuperMax
Advanced Member
Сообщения: 1605
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Контактная информация:

Конкурсы

Вклад в сообщество

Контроллер псевдодиска на MicroSD для ДВК / УКНЦ / original PDP-11 / БК-0010 / БК-0011 / БК-0011М с Ethernet

Сообщение SuperMax » 02.06.2022,18:16

Прошивка 00010

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

функционал:

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

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

3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль

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

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

5. Переделано

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

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

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

9. Реализовано распознавание новодела БК11М и подключение ПЗУ

10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно

запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212

соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом

Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
03 - =0 YM2149 =1 AY8910 тип эмуляции PSG


11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора

00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM

06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100

09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo


177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения

данные с DMA пойдут напрямую на микшер отдельным каналом

12. Legacy AY через 177714
работает автоопределение источника звука - или ковокс или AY

13. Сделан UART - изменена базовая частота - теперь это не 130MHz а 65MHz

адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу

177560 - регистр статуса приемника
бит 7 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает

177562
- по чтению - младший байт содержит принятые данные
- по записи - слово определяющее скорость, подробности ниже
дефолтное значение 32346(8) что соответствует стандартной скорости в 9600бод

177564 - регистр статуса передачика
бит 7 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает

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

Слово определяющее скорость - доступно только по записи

детальное описание UART в AZБК

14. Сделан конструктор видеорежимов

177230 - регистр управления
177232 - регистр номера страницы начала отображения

177230, далее пойдут биты с описанием
1;0 - режим цветовой интерпретации
4;3 - длина строки в словах
7;6 - растяжение по горизонтали - те количество повторов у точки
10;9 - количество повторов строк
15;12 - длина рулона в словах

теперь подробно
режим цветовой интерпретации, значение от 0 до 3
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов

длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов

растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128

количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192

длина рулона в словах
0 6144
1 8192
2 12288
3 16384
4 24576
5 32768
6 49152
7 65536
8 98304
9 131072
10 196608
11 262144
длина дает информацию контроллеру для корректной работы вертикального скролинга
и важный момент - длина рулона может быть БОЛЬШЕ чем экран
иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов )
а рулон выбрать в 64кБ, что позволит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном

типовые видеорежимы (значение восьмеричные)
012201 - 256х256х4цвета (экран 16кБ)
012100 - 512х256х2цвета (экран 16кБ)
032212 - 256х256х16цветов (экран 32кБ)

регистр 177232 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти

Важно! видеорежимы в состоянии "beta" те я не провел полного тестирования

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

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




должны отвечать регистры
SOUND
177160-177174
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
177550 - генератор псевдослучайных чисел
177560-177566 - UART



Контроллер AZ BK: Прошивка 00010

SuperMax
Advanced Member
Сообщения: 1605
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Контактная информация:

Конкурсы

Вклад в сообщество

Контроллер псевдодиска на MicroSD для ДВК / УКНЦ / original PDP-11 / БК-0010 / БК-0011 / БК-0011М с Ethernet

Сообщение SuperMax » 11.06.2022,20:15

Прошивка 00011


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

функционал:

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

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

3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль

4. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
- перехват запросов SMK сделан и работает - все запросы к нему управлению режимами через 177130 транслируются в запросы к AZ-менеджеру памяти.
- добавлена возможность хака с отключением окна 1 со 100'000 до 137'777. Более подробно описано тут.

- добавлен RPLY для служебных страниц (с 40 по 77ую включительно)
эти страницы будут иметь специальное назначение и будут использоваться для работы AZБК контроллера; использовать для иных целей кроме указанных в документации запрещено

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

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

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

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

9. Реализовано распознавание новодела БК11М и подключение ПЗУ

10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно

запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212

соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом

Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
03 - =0 YM2149 =1 AY8910 тип эмуляции PSG


11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора

00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM

06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100

09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo


177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения

данные с DMA пойдут напрямую на микшер отдельным каналом

12. Legacy AY через 177714
работает автоопределение источника звука - или ковокс или AY

13. Сделан UART - изменена базовая частота - теперь это не 130MHz а 65MHz

адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу

177560 - регистр статуса приемника
бит 7 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает

177562
- по чтению - младший байт содержит принятые данные
- по записи - слово определяющее скорость, подробности ниже
дефолтное значение 32346(8) что соответствует стандартной скорости в 9600бод

177564 - регистр статуса передачика
бит 7 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает

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

Слово определяющее скорость - доступно только по записи

детальное описание UART в AZБК


14. Сделан конструктор видеорежимов

177230 - регистр управления
177232 - регистр номера страницы начала отображения

177230, далее пойдут биты с описанием
1;0 - режим цветовой интерпретации
4;3 - длина строки в словах
7;6 - растяжение по горизонтали - те количество повторов у точки
10;9 - количество повторов строк
15;12 - длина рулона в словах

теперь подробно
режим цветовой интерпретации, значение от 0 до 3
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов

длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов

растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128

количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192

длина рулона в словах
0 6144
1 8192
2 12288
3 16384
4 24576
5 32768
6 49152
7 65536
8 98304
9 131072
10 196608
11 262144
длина дает информацию контроллеру для корректной работы вертикального скролинга
и важный момент - длина рулона может быть БОЛЬШЕ чем экран
иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов )
а рулон выбрать в 64кБ, что позволит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном

типовые видеорежимы (значение восьмеричные)
012201 - 256х256х4цвета (экран 16кБ)
012100 - 512х256х2цвета (экран 16кБ)
032212 - 256х256х16цветов (экран 32кБ)

регистр 177232 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти

Важно! видеорежимы в состоянии "beta" те я не провел полного тестирования

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

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


Теперь работают программы использующие менеджер памяти СМК. К примеру Принц Персии.


Косметические правки кода и звукового модуля.


должны отвечать регистры
SOUND
177160-177174
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
177550 - генератор псевдослучайных чисел
177560-177566 - UART

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

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

Прошивка
Контроллер AZ BK: Прошивка 00011

SuperMax
Advanced Member
Сообщения: 1605
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Контактная информация:

Конкурсы

Вклад в сообщество

Контроллер псевдодиска на MicroSD для ДВК / УКНЦ / original PDP-11 / БК-0010 / БК-0011 / БК-0011М с Ethernet

Сообщение SuperMax » 29.06.2022,20:51

Прошивка 00012


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

функционал:

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

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

3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль

4. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
- перехват запросов SMK сделан и работает - все запросы к нему управлению режимами через 177130 транслируются в запросы к AZ-менеджеру памяти.
- добавлена возможность хака с отключением окна 1 со 100'000 до 137'777. Более подробно описано тут.
Теперь работают программы использующие менеджер памяти СМК. К примеру Принц Персии.

- добавлен RPLY для служебных страниц (с 40 по 77ую включительно)
эти страницы будут иметь специальное назначение и будут использоваться для работы AZБК контроллера; использовать для иных целей кроме указанных в документации запрещено

5. полный вывод VGA уже из SDRAM, переключение страниц

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

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

8. загрузка ПЗУ в память полностью реализована
были обнаружены ошибки при загрузке не кратных блоку образов ПЗУ, исправлены

9. Реализовано распознавание новодела БК11М и подключение ПЗУ

10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно

запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212

соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом

Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
03 - =0 YM2149 =1 AY8910 тип эмуляции PSG


11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора

00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM

06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100

09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo


177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения

данные с DMA пойдут напрямую на микшер отдельным каналом

12. Legacy AY через 177714
работает автоопределение источника звука - или ковокс или AY

13. Сделан UART - изменена базовая частота - теперь это не 130MHz а 65MHz

адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу

177560 - регистр статуса приемника
бит 7 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает

177562
- по чтению - младший байт содержит принятые данные
- по записи - слово определяющее скорость, подробности ниже
дефолтное значение 32346(8) что соответствует стандартной скорости в 9600бод

177564 - регистр статуса передачика
бит 7 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает

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

Слово определяющее скорость - доступно только по записи

детальное описание UART в AZБК


14. Сделан конструктор видеорежимов

177230 - регистр управления
177232 - регистр номера страницы начала отображения
177240 - регистр номера страницы начала отображения - средняя страница под спрайты
177242 - регистр номера страницы начала отображения - нижняя страница - под фон


177230, далее пойдут биты с описанием
2;0 - режим цветовой интерпретации
4;3 - длина строки в словах
7;6 - растяжение по горизонтали - те количество повторов у точки
10;9 - количество повторов строк
15;12 - длина рулона в словах

теперь подробно
режим цветовой интерпретации, значение от 0 до 7
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов

4 - 1 бит на цвет - 8 цветов - сборный "слоеный" режим
5 - 2 бита на цвет - 4 цвета - включены слои
6 - 4 бита на цвет - 16 цветов - включены слои
7 - 8 бит на цвет - 256 цветов - включены слои


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

длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов

растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128

количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192

длина рулона в словах
0 6144
1 8192
2 12288
3 16384
4 24576
5 32768
6 49152
7 65536
8 98304
9 131072
10 196608
11 262144
длина дает информацию контроллеру для корректной работы вертикального скролинга
и важный момент - длина рулона может быть БОЛЬШЕ чем экран
иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов )
а рулон выбрать в 64кБ, что позволит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном

типовые видеорежимы (значение восьмеричные)
012201 - 256х256х4цвета (экран 16кБ)
012100 - 512х256х2цвета (экран 16кБ)
032212 - 256х256х16цветов (экран 32кБ)

регистр 177232 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти

Важно! видеорежимы в состоянии "beta" те я не провел полного тестирования

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

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



Косметические правки кода и звукового модуля.


должны отвечать регистры
SOUND
177160-177174
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
177240 - регистр номера страницы начала отображения - средняя страница под спрайты
177242 - регистр номера страницы начала отображения - нижняя страница - под фон

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

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

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

В архиве обновленное
AZBOOT.ROM - не забудьте обновить!
AZ377.ROM - не забудьте обновить !
AZBK_00012.hex новая. ее надо тоже обновить


Контроллер AZ BK: Прошивка 00012

SuperMax
Advanced Member
Сообщения: 1605
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Контактная информация:

Конкурсы

Вклад в сообщество

Контроллер псевдодиска на MicroSD для ДВК / УКНЦ / original PDP-11 / БК-0010 / БК-0011 / БК-0011М с Ethernet

Сообщение SuperMax » 03.07.2022,17:41

Сделал багфикс 12й прошивки
надо прошивать только ПЛИС
это исправление ошибки при режимах 16 и 256 цветов

https://forum.maxiol.com/index.php?s=&s ... st&p=56609

SuperMax
Advanced Member
Сообщения: 1605
Зарегистрирован: 27.08.2012,11:38
Откуда: Красноярск
Контактная информация:

Конкурсы

Вклад в сообщество

Контроллер псевдодиска на MicroSD для ДВК / УКНЦ / original PDP-11 / БК-0010 / БК-0011 / БК-0011М с Ethernet

Сообщение SuperMax » 21.07.2022,08:30

Провел успешные испытания доработки БКшки, она даст следующие возможности:


для 11М
1. можно подключить клаву PS/2
2. можно включить полный маппер AZ
те для игрописания настанет отличная пора - все 64К доступны для подключения расширенной памяти
а не только верхние 32к
ну и теперь вся память будет "быстрая"

для 10М
тоже самое + возможность эмуляции 11М

сама по себе доработка полностью прозрачная, те без AZБК будет работать как обычная БКшка

сейчас всё в стадии макета, идут испытания
в конечном виде это будет:
1. платка с 1й микросхемой (2мя микросхемами для БК10 - для деления 12/3 и получения 4MHz как в БК-11М)
2. переходник на PS/2
3. подробная инструкция по доработке БК-0010/БК-0011М и AZБК с картинками


//--------------------------

множественное нажатие кнопок думаю попробовать обработать так:


к примеру у нас нажаты кнопки 1 2 3 с кодами 060 061 062
и последовательно читая коды из регистра данных мы получаем 060 061 062 060 061 062 060 061 062 итд


а тк есть бит 7 то надо им и оперировать:

мы читаем 060 061 062
бит 7 сбросился

кнопки все еще нажаты

если мы хотим узнать нажаты ли они
мы можем снова считать коды
мы получим 060 061 062

если к примеру одну кнопку отпустили - 0
остались 1 и 2
бит 7 взвелся тк появилось новое состояние клавиатуры
мы читаем 061 062
и бит 7 сбрасывается


и старые игры которые читают коды будут корректно работать
к примеру нажал "вверх" и "вправо"
игра будет получать коды "вверх" и "вправо"
и обрабатывать их как будто мы нажали "вверх" отпустили и нажали потом "вправо" а потом снова "вверх" итд

PS: тк я вообще не думал про маппинг кнопок PS/2 на БКшные, принимаются предложения в таблиц маппинга

PS2: успевайте купить БК-0010, теперь и они взлетят в цене ;-)

Ответить