Картинки на БКшке
https://pic.maxiol.com/thumbs2/16296...19.capture.png
Вид для печати
Картинки на БКшке
https://pic.maxiol.com/thumbs2/16296...19.capture.png
RT11 на БК-0011М
https://www.youtube.com/watch?v=pkqNaBR9O1I
Демо 16 цветов
https://www.youtube.com/watch?v=dGVjKGlbNF8
Демо 256 цветов
https://www.youtube.com/watch?v=T22rgVWVZOA
Думаю, есть смысл модифицировать (или опционально добавить) режимы 16 цветов 128х128 и 256 цветов 64х64. Получится некое подобие атрибутов на Спектруме.
Т.к. все равно для текстовой информации и большинства игр режимы с "растянутыми" до 4 и 8 точек пикселами бесполезны, а вот для демомейкеров будет очень вкусно.
Как реализовать - дело ваше, физически это может быть отображение каждой второй (четвертой) строки с повторами, либо вовсе новые режимы с последовательными строками.
Смысл в сокращении объема видеопамяти, хотя бы на уровне софта, что даст ускорение работы с графикой. БК и так довольно тормознуто ворочает экраном, хоть тут ускорится.
Да, "кривые" прямоугольные пиксели БК станут еще более прямоугольными (прибавят в размерах), но коду намного проще обрабатывать четверть экрана, чем весь экран целиком.
Прошивка 00006
жирным новое в прошивке
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2-3-4) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
также режимы можно переключать через регистр 177230
младшие 2 бита - видеорежим (точнее интерпретация легаси-видеорежимов)
0 - монохром 512х256
1 - 4 цвета 256х256
2 - 16 цветов 128х256
3 - 256 цветов 64х256
3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль
4. сделан маппер памяти + разделение по сегментам:
- область перехвата - те копия станиц оперативки
- область эмуляции ROM - выделил 256КБ под всякие ПЗУ которые будут подключаться как в эмуляторе из меню
- и вся остальная память
перехват запросов SMK сделан, но не включен
4. полный вывод VGA уже из SDRAM, переключение страниц
[пока без новых режимов, но они уже заложены в архитектуру]
5. Добавлен альтернативный легаси-режим который позволяет отображать любой участок памяти на экран
включение - 15й бит регистра 177230 в 1
регистр 177232 - номер страницы памяти, кратный 4м - те с дискретностью 16кБ
6. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
исправлены ошибки перехвата при обращении к нечетным адресам
7. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 130MHz как следствие полностью новое слово доступно будет каждый процессорный такт
8. загрузка ПЗУ в память полностью реализована
9. Реализовано распознавание новодела БК11М и подключение ПЗУ
10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно
запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212
соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом
Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
должны отвечать регистры
SOUND
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
маппер памяти
177300-350
загрузчик
177000
177550 - генератор псевдослучайных чисел
После reset машина стартует автоматически и загружается со первого образа в ini-файле
В архиве обновленное AZBOOT.ROM - не забудьте обновить
AZBK_00006.hex без изменений относительно 5й версии, те надо обновить только прошивку ПЛИС
Контроллер AZ BK: Прошивка 00006
Проектирую DMA-контроллер для звука
https://forum.maxiol.com/index.php?s...ndpost&p=55703
2. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
// 00 - старт =1 старт
// 01 - =1 однократный запуск =0 циклический
// 02 - =1 принудительная остановка до завершения цикла
// 03-04-05 - скорость выдачи наружу
11025
22050
44100
// 06-07-08 - режим интерпретации
PCM 16 mono
PCM 8 mono
PCM 16 stereo
PCM 8 stereo
ADPCM 16mono
ADPCM 8stereo
AY??
OPL2?
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
принимаются идеи и предложения
а также корректировки - к примеру "PCM 8 mono - нафиг не надо" или "11025 тоже не имеет смысла"
ps: уже звучит
новости
итак, у меня было время поразбираться
1. написал свой декодер IMA ADPCM причем синхронный вариант в отличии от выложенных которым нужны флаги и прочие приседания
2. декодер работает
пока это моно, и я сейчас займусь уже полировкой кода + сделаю стерео режим
3. сделал encoder в IMA ADPCM (чистый RAW тк в WAV поток разбит на чанки).
после полировки, напишу плеер который будет проигрывать музыку в 44100 стерео
плеер будет под RT11 ибо никакая другая ОС нормально большие файлы, увы не поддерживает
канал про контроллеры AZ
https://t.me/pdp11_az
- - - Добавлено - - -
Прошу уточнений
а именно
надо ли делать
PCM 8 mono ? и вообще PCM ?
и поддержку частоты дискретизации отличной от 44100 ?
я к тому, что может сделать IMA ADPCM 44100 /16 моно и стерео и ограничится этим ?
сделал промежуточный вариант
теперь DMA контроллер такой:
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
// 00 - старт =1 старт
// 01 - =1 однократный запуск =0 циклический
// 02 - =1 принудительная остановка до завершения цикла
скорость выдачи наружу фиксированная - 44100
// 09-10-11 - режим интерпретации
// 09 - =0 моно =1 стерео
// 10
// 11 - =0 PCM =1 IMA_ADPCM
для PCM всегда моно 16bit
для IMA ADPCM доступно моно и стерео
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
сейчас займусь плеером
сделал плеер который явно грузит все в память, но начинает проигрывание сразу
звук - отличный!
сейчас занялся потоковым плеером