Для Goonies все же 256х192 :)
Вид для печати
210 строк мало всё же. Четверть экрана по вертикали отрезана -- у телевизоров с 50 Гц развёрткой до 288 видимых строк.
К телевизору, как понимаю, AZ не имеет ни малейшего отношения. Монитор и 60Гц, поэтому и создаются новые видеорежимы.
Конкретное разрешение обсуждаемо, но режим с квадратными пикселами было бы неплохо.
таблица строк была как идея
концептуально ее можно реализовать
вопрос только в ее востребованности
я к тому, что я, к примеру, сделал RS232 который как мне говорили очень-очень нужен
и уже скоро полгода как он сделан и не востребован :(
лично мне, строковая идея сначала очень понравилась - можно включать любой видеорежим для любой строки итд итп - красота! прямотаки супергибкость !
но трансляция легаси в строчный режим точно сложна.
да и в прочем применении - процесс инициализации этого набора строк мне показался очень долгим и трудоемким
ибо по прикидкам получается по 2 слова на каждую (из 768) строк
те надо будет 6кБ только под это! (могу ошибаться тк поздабыл точное количество бит на строку)
и банально быстро режим или окна не попереключать
соответственно я пошел более привычным путем - регистр режима + регистр адреса
к примеру можно показывать видео просто переключая адресный регистр, что позволит к примеру проигрывать GIFки на БКшке
я открыт к предложениям, я за новое, просто не хочу сделать, что-то что будет лежать в ящике ....
ну вот к примеру новая история с часами
все - надо сделать!
я - давайте сделаю, а кто поправит АНДОС ? и опа.... нету желающих :(
не надо равняться на ЭЛТ-монитор, далеко не у все есть такая роскошь. И свободное место на столе для столь громоздкого устройства.
Равняться надо на мейнстрим - ширпотребные LCD мониторы.
Она же не лишняя, а "заэкранная", которую можно было рулоном вдвинуть в экран. Или концепция опять поменялась?
Проблема в том, что ширпотребные мониторы не понимают исходную 48+ Герц развёртку БКшки. Понятно, не все смотрят демки и прочий однофреймовый софт, но все-таки.Цитата:
Сообщение от gid
если мы говорим о современных мониторах то мы уже пользуемся современными разрешениями
если же у нас есть ЭЛТ то у нас нет проблемы показывать родное БКшное в 48Гц и прочее
экономия памяти мало актуальна для AZ.Цитата:
Да, но первые два слишком много памяти отнимают, а у второго низкое разрешение (пиксели на 17% крупней) и "лишняя" область памяти остаётся не задействована.
Не, рулонный сдвиг – это прекрасно. Я имел в виду, что чем меньше объём видеопамяти, тем быстрей её обновлять (банальная очистка экрана или любая другая полноэкранная операция). Хочется найти оптимальный объём памяти и разрешение (при 8 битах на пиксель, иначе совсем всё грустно с производительностью).
Да, но БК должна загонять кучу данных в AZ.
Тут мы плавно и незаметно подходим к необходимости видеоадаптера, который бы аппаратно выполнял некоторые операции - заливка прямоугольной области заданным цветом или паттерном, перемещение прямоугольной области экрана из одного места в другое, копирование/обмен прямоугольной области из внеэкранной памяти в экранную, и т.п.
а где тут граница ?
ну банально вот у нас 486ая машинка c PCI и на дворе у нас 97й
и штатно там - пусть Cirrus 5334
а тут опа и вышел Voodoo и теперь на этой машинке вполне идет 3D
так когда мы туда подключаем видеокарту у нас всё ? не родная ? нельзя втыкать ?
или когда я для "продления жизни" воткнул в комп UMDA66 и подцепил винт UDMA66 (тк на материнка старая и вообще UDMA66 появился позднее чем материнку сделали...)
я к тому, что тут нет четкой границы, это уже условности которые мы выдумываем специально.
а пока суд да дело - я сделал слои и сложение
написал документацию
https://forum.maxiol.com/index.php?s...ndpost&p=56550
это простая штука упростит работу программисту - ему не надо будет заботится о фоне
- - - Добавлено - - -
я прекрасно понимаю, что когда спектрум ворочает 6кБ экраном то БКшке приходится работать с 16кБ и с AZ экраны станут больше
но на этот случай я сделал простую штуку - слои
тут мне подкинули отличную идею - сделать разные палитры для слоев
это дает
3+3+4=10 цветов если страницы 4х цветные
или 46 если страницы 16ти цветные
это уже задокументировано по ссылке выше
Да, хорошее предложение. В игрушках и вообще графических программах здорово расширит цветастость.
Жаль, что в родном БК цвета в палитрах жестко прибиты. Добавив всего пару-тройку корпусов, могли сделать задаваемым отдельно каждый цвет из четырех...
Ну, для AZ это не проблема, там палитры программируемые.
Кстати, а есть возможность внедрить видеорежим не 64х256, а 64х64 или 64х48 (с квадратными блоками)? Пригодился бы демописателям и творцам подобного софта для быстрого вывода анимации/графики низкого разрешения. Занимать будет в 4 раза меньше ОЗУ, что довольно выгодно по скорости работы с таким экраном. Почитал описание задания слоев, там вроде бы это реализовано через кол-во повторов точек и строк - но это только к слоям относится или в "обычном" режиме тоже можно устроить? Чтобы на выходе получился, скажем, экран емкостью 64х64х8бит=4Кб, вчетверо меньше стандартного.
чисто технически AZ может отображать любой участок памяти на экран и переключается это в одном регистре
иначе говоря показывать видео в 60 кадров в секунду уже можно сейчас - главное чтобы памяти хватало на это видео ж-)
касаемо демописателей - я сторонник сначала зафиксировать необходимость, а потом делать. Вот к примеру сейчас я делаю часы тк на стороне БК а именно в андос GRF сделал вывод времени!
Да, но это все же будет показ заранее накачанных откуда-то кадров =) Интересней именно рендер "на ходу" и быстрый вывод на экран без необходимости перекодировки условных блоков в экранное изображение. То бишь в некотором смысле это текстовый режим, но вместо букв заданные предварительно цвета. Получится нечто вроде атрибутных эффектов в спектрумовских демках или, что ближе, 4х4 чанков. Но не нужно будет тратить уйму процессорного времени на построение экрана из массива.
Да, тут желательно бы увидеть пожелания демописателей... скажем, Manwe и других наиболее активных в данной области.
От себя уже предложил то, что изложено выше. Будут легко реализовываться эффекты навроде вот таких (с 30-й секунды видео)
Вместо вывода чанков, занимающего кучу времени (особенно при размере экрана БК) достаточно будет задать "цвет чанка" и все
https://www.youtube.com/watch?v=KDDNsTNWyw8
Вопрос к Уважаемому ММ:
так как было обнаружено что AZ работает не на всех 10ках
возник вопрос - какие были модификации 10ок
и чем они отличаются ?
пока обнаружено
новая 10ка с мягкой клавой - все отлично и монитор отключен
10-01 - работает
другая 10-01 не работае
старая 10-ка с пленкой - даже с вынутыми ПЗУ не работает - зависает в мониторе
Дополнение:
БК0010-01 Скрипучка. Выпуск 04.89. Экситон.
Сначала грешил, что не отключается 108 ПЗУ бейсика, но МСТД от Шауляйской 10ки работает, как и интерпретатор фокала
- - - Добавлено - - -
дополнение:
по заявлению продавца и надписям на корпусе (инв № и номер школы) - это школьная 10ка. но на логотипе БК0010-01.
Прошивка 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
Сделал багфикс 12й прошивки
надо прошивать только ПЛИС
это исправление ошибки при режимах 16 и 256 цветов
https://forum.maxiol.com/index.php?s...ndpost&p=56609
Провел успешные испытания доработки БКшки, она даст следующие возможности:
для 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, теперь и они взлетят в цене ;)
Часы на AZ* заработали, ожидается обновление прошивки
https://t.me/pdp11_az/11991
Написал и опубликовал утилиту установки времени в RT11
<исходники в комплекте>
Утилиты для AZ
Анонс прошивки для AZ*
Для БК будет совсем скоро!
Релиз прошивки V13 от 2022-11-26
(единая нумерация с AZБК - дабы уменьшить отличия прошивок)
добавлен блок команд
Новые команды AZ
работают часы и прочие навороты
Утилита установки времени AZSDT выложена тут
Утилиты для AZ
cама прошивка STM32 доступна для скачивания и прошивки
Firmware AZ 2.13
данная прошивка для AZ-МПИ AZ-УКНЦ AZ-QBUS v1.xx и 2.xx
прошивка для GAL-ок или EPM240 прежняя, менять не надо
Важный момент, не забудьте явно проставить в блоке NETWORK свой часовой пояс
иначе время будет GMT
пример
часовой пояс в минутахКод:[network]
DHCP=ON
TIMEZONE=420
Рабочий образ можно скачать тут
Рабочий образ для AZ
Типовая работа AZSDT при наличии сети
https://pic.maxiol.com/thumbs2/16694...5619.azsdt.png
Типовая работа AZSDT при отключенной сети, но выставленном времени-дате в RTC
https://pic.maxiol.com/thumbs2/16694...9.azsdtrtc.png
Прошивка 00013 для AZБК
начало глобальных изменений: это промежуточная прошивка, с большей частью функционала который планировалось реализовать
жирным новое (или измененное) в прошивке
функционал:
1. палитры, сделано расширение функционала механизма палитр
подробнее https://forum.maxiol.com/index.php?showtopic=5556
2. реализовано ручное переключение видеорежима (циклическое 1-2) по сочетанию AR2+KT
те можно спокойно переключать его в зависимости от программы не напрягаясь!
3. Реализовано отображение информации в консоли контроллера дисковой подсистемы и сети - переключается по АР2+РУС
соответственно выделена страница памяти под консоль
4. изменено - см п 16
5. полный вывод VGA уже из SDRAM, переключение страниц
6. перехват переключения палитр БК11М
- доступ к памяти палитр с шины, чтение+запись
исправлены ошибки перехвата при обращении к нечетным адресам
7. Генератор псевдослучайных чисел - технически это LFSR длиной 128бит, младшие 16 в регистре доступном программно.
сдвиг идет с частотой 65MHz как следствие полностью новое слово доступно будет каждый процессорный такт
8. загрузка ПЗУ в память полностью реализована
9. Реализовано распознавание новодела БК11М и подключение ПЗУ
10. COVOX
набор регистров доступных и по чтению и по записи
177200 - 16bit левый канал
177202 - 16bit правый канал
177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202
177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в
регистры 177200 и 177202 - в старший байт
режимы stereo/momo определяются по байтовой записи
те если писать слово в 177206 то это будет стерео
а если писать младший байт в 177206 то данные будут трактоваться как моно
запись в 177714 мультирежимная
ибо у нас есть 2 варианта ковокса
1. моно 8bit - запись в младший байт
2. стерео 8bit - МЛБ - левый СТБ-правый
переключать режимы через регистр 177212
соответственно запись в 177714
тоже приводит к фактической одновременной записи в 177200 и 177202
обеспечивая полную совместимость со старым софтом
Регистр управления звуком - 177212
биты:
00 - легаси перехват ковокса в 177714: 0=моно 1=стерео
01 - =0 разрешен легаси перехват 177714 =1 запрещен
02 - =0 разрешен перехват 177716 =1 запрещен
перехват спикера сделан 3х битный
03 - =0 YM2149 =1 AY8910 тип эмуляции PSG
11. DMA контроллер звука
177160 - регистр управления
регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора
00 - старт =1 старт
01 - =1 однократный запуск =0 циклический , при этом надо записать =0 в 3й бит
при циклическом запуске, запись 1цы даст останов после завершения цикла, с установкой в =1 бита3
02 - =1 принудительная остановка до завершения цикла
03 - на чтение =1 однократный запуск завершился, в начале сбрасывается на ноль, запись =1 не влияет на процесс
04 - =1 потоковое воспроизведение с подкачкой данных, актуально для IMA_ADPCM в этом режиме на стадии начала цикла не происходит сброса начальных кодов декодирования ADPCM
06-07-08 - скорость выдачи наружу
поддерживаемые скорости
0 - 44100
09-10-11 - режим интерпретации
09 - =0 моно =1 стерео
11 - =0 PCM =1 IMA_ADPCM
поддерживаемые режимы:
000-0 PCM 16 mono
100-4 IMA ADPCM DECODER mono
101-5 IMA ADPCM DECODER stereo
177162 - регистр адреса страницы с которой будем читать с дискретностью 10000 (4кБ)
177164 - старшая часть длины - 8бит
177166 - младшая часть длины - 16бит
177170 - номер текущей страницы воспроизведения
данные с DMA пойдут напрямую на микшер отдельным каналом
12. Legacy AY через 177714
работает автоопределение источника звука - или ковокс или AY
13. Сделан UART - изменена базовая частота - теперь это не 130MHz а 65MHz
адреса стандартные
177560 - регистр статуса приемника
177562 - регистр управления + регистр принятых данных
177564 - регистр статуса передатчика
177566 - регистр данных на передачу
177560 - регистр статуса приемника
бит 7 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562
после чтения 177562 - флаг будет сброшен
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177562
- по чтению - младший байт содержит принятые данные
- по записи - слово определяющее скорость, подробности ниже
дефолтное значение 32346(8) что соответствует стандартной скорости в 9600бод
177564 - регистр статуса передачика
бит 7 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию
после записи в 177566 - флаг будет сброшен тк начнется передача
регистр доступен на чтение
запись игнорируется, ошибки не взывает
177566 - регистр данных на передачу, используется младший байт, доступен на чтение и запись
после записи начинается передача в линию
Слово определяющее скорость - доступно только по записи
детальное описание UART в AZБК
14. Сделан конструктор видеорежимов
177230 - регистр управления
177232 - регистр номера страницы начала отображения
177240 - регистр номера страницы начала отображения - средняя страница под спрайты
177242 - регистр номера страницы начала отображения - нижняя страница - под фон
177230, далее пойдут биты с описанием
2;0 - режим цветовой интерпретации
4;3 - длина строки в словах
7;6 - растяжение по горизонтали - те количество повторов у точки
10;9 - количество повторов строк
15;12 - длина рулона в словах
теперь подробно
режим цветовой интерпретации, значение от 0 до 7
0 - 1 бит на цвет - 2 цвета
1 - 2 бита на цвет - 4 цвета
2 - 4 бита на цвет - 16 цветов
3 - 8 бит на цвет - 256 цветов
4 - 1 бит на цвет - 8 цветов - сборный "слоеный" режим
5 - 2 бита на цвет - 4 цвета - включены слои
6 - 4 бита на цвет - 16 цветов - включены слои
7 - 8 бит на цвет - 256 цветов - включены слои
подробное описание работы со слоями тут
длина строки в словах
0 - 32 слова
1 - 64
2 - 128
3 - 256
это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных
расчет прост - к примеру мы выбрали 512х384х16 цветов
считаем 512точек х 4 бита = 2048бит /16 = 128 слов
растяжение по горизонтали - те количество повторов у точки
0 - х1 - те 1024 точки в строке
1 - х2 - 512
2 - х3 - 256
3 - х4 - 128
количество повторов строк
0 - х1 - 768 строк
1 - х2 - 384
2 - х3 - 256
3 - х4 - 192
длина рулона в словах
0 6144
1 8192
2 12288
3 16384
4 24576
5 32768
6 49152
7 65536
8 98304
9 131072
10 196608
11 262144
длина дает информацию контроллеру для корректной работы вертикального скролинга
и важный момент - длина рулона может быть БОЛЬШЕ чем экран
иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов )
а рулон выбрать в 64кБ, что позволит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном
типовые видеорежимы (значение восьмеричные)
012201 - 256х256х4цвета (экран 16кБ)
012100 - 512х256х2цвета (экран 16кБ)
032212 - 256х256х16цветов (экран 32кБ)
регистр 177232 - адрес страницы начала отображения
те можно начинать отображение с любой страницы в памяти
Важно! видеорежимы в состоянии "beta" те я не провел полного тестирования
15. Добавлена эмуляция 2xAY
сложение каналов по форумуле
R=A1+A2+B1+B2
L=C1+C2+B1+B2
Прямая доступность регистров на шине, а именно доступны байтовые регистры
177172 - адрес AY1
177173 - данные AY1
177174 - адрес AY2
177175 - данные AY2
16. Сделан новый маппер памяти AZ
Концепция:
маппер V2 - это чисто маппер AZ без костылей и _все_ запросы к мапперам 177716(БК11М) или 177130(СМК) транслируются в маппер AZ который является единым устройством управления памятью
это сделано для кардинального расширения возможностей БКшек, а именно для отключения 037й
и как следствие - возможности работы полного маппера AZ. Это означает что на любой адрес в адресном пространстве БК10/БК11М можно подставить любую страницу памяти!
адресное пространство расширенной памяти разбито на 4 сегмента:
Код:
АДРЕСНОЕ ПРОСТРАНСТВО ПАМЯТИ В AZ
╔═══════════════════════════════════════════════════ ..... ════════╗
║ АДРЕСНОЕ ПРОСТРАНСТВО ПАМЯТИ В AZ ║
╚═══════════════════════════════════════════════════ ..... ════════╝
0 128kB 256kB 512kB 1024kB 32MB
│ │ │ │ │
└───────┤ ├───────┴────────┘
RAM │ │ ROMs SMK
Shadow │ │
│ │
└─SYSTEM─┘
0-128кБ это память для организации "теневой" или эмулируемой памяти БК11М
первые 128кБ являются полной копией оперативки БК11М - или эмулируемой в БК10
из этой памяти идет отображение legacy видео режимов
а также получается есть техническая возможность отобразить на экран любую страницу памяти БК11М
[attachmentid=9946]
обращаю внимание на то, что физический адрес - словный
режим работы этой памяти устанавливается в регистре 177346
128-256кБ это полноценная R/W память с которой всегда идет RPLY
но эта память служебная и используется для работы AZ контроллера
256-512кБ это read-only память, она не доступна на запись со стороны БКшки
эта память для эмуляции различных ПЗУ, содержимое которых может быть загружено только средствами AZ
512-1024кБ для эмуляции SMK-512
Начиная с 1МБ вся оперативная память - полноценная R/W память без ограничений, а именно ее подключение всегда дает RPLY на чтение и на запись если не установлен режим r/o на данной странице в регистре 177342
маппер памяти AZ
технически адрес в системе 24bit-а (адрес слова 16bit)
для маппера памяти используется старшая часть адреса, и получается дискретность привязки памяти к окну - 4кБ
есть 16 регистров (177300-177336) куда пишется 13bit адрес начала (11 бит добавляется от адреса с шины и получается 24bit адрес слова)
старшие 3 бита в резеве и маппер предусматривает расширение до 256МБ.
Код:
ПРИНЦИП ФОРМИРОВАНИЯ ПОЛНОГО 24bit АДРЕСА 16bit слова
┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
│23│22│21│20│19│18│17│16│15│14│13│12│11│10│09│08│07│06│05│04│03│02│01│00│
└──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
│ │ │ │
└────────────────────────────────────┘ └──────────────────────────────┘
АДРЕС В РЕГИСТРЕ ОКНА 13bit АДРЕС С ШИНЫ МЛАДШИЕ 11bit
Адресное пространство разбито на 16 окон
для облегчения восприятия я пронумерую их с 0 до 15
┌────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬─
│0..7777 │10000..17777│20000..27777│30000..37777│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...ndpost&p=57017
должны отвечать регистры
SOUND
177160-177174
177200-177212
AZ
177220-177226
дебаг
177100-177106
регистры палитр - уже можно экспериментировать
177230 - видеорежимы
177232 - номер легаси страницы
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]
177240 - регистр номера страницы начала отображения - средняя страница под спрайты
177242 - регистр номера страницы начала отображения - нижняя страница - под фон
маппер памяти
177300-350
177550 - генератор псевдослучайных чисел
177560-177566 - UART
После reset машина стартует автоматически и загружается со первого образа в ini-файле
В архиве обновленное - надо прошивать ВСЕ
azboot.ROM
AZLIB00.ROM
AZLIB01.ROM
AZLIB02.ROM
AZ377.ROM
AZBK_00013.hex - новая
AZBK_00013.pof - новая
Обращаю внимание на необходимость подключить новые ПЗУ в секции ROM
пример правильной для данной версии прошивки секции ROM
Код:[ROM]
R00=0:/rom/AZBOOT.ROM
R01=0:/rom/AZLIB00.ROM
R02=0:/rom/AZLIB01.ROM
R03=0:/rom/AZLIB02.ROM
R08=0:/rom/AZ337.rom
R16=0:/rom/11m_324.rom
R18=0:/rom/11m_325.rom
R20=0:/rom/11m_327.rom
R22=0:/rom/11m_328.rom
R24=0:/rom/11m_329.rom
R26=0:/rom/11m_330.rom
R28=0:/rom/10_017.rom
R30=0:/rom/10_018.rom
R32=0:/rom/10_019.rom
R34=0:/rom/10_106.rom
R36=0:/rom/10_107.rom
R38=0:/rom/10_108.rom
Также обращаю внимание на необходимость установки часового пояса в секции NETWORK
пример
таймзона - в минутахКод:[network]
MAC=002335220510
DHCPNAME=AZNET-BK10.home.maxiol.com
DHCP=ON
TIMEZONE=420
Внимание! батарейка 2032 теперь обязательна
Контроллер AZ BK: Прошивка 00013
Эх на реальном железе наверное это все круто выглядит!
Друзья. Доброго дня!
Подскажите! при старте на мониторе матрас и висит.
Светодиод горит фиолетовым.
Пробовал две одиннадцатые, результат одинаковый, пзу не грузит
У меня такое было, когда я при первом подключении, не подсоединил сетевую карту, она оказалась не опция, а часть устройства, без которого устройство не работает.
Затем была вторая проблема - не загружалось с образов на СД карте, помогла дефрагментация файлов на СД карте.
И затем, самая большая проблема, которая потрепала мне нервы - замыкание на землю ноги Б9, которое визуально не просматривалось, слишком тонкий ус из припоя. Из-за чего контроллер не работал на БК11М, а работал только на БК10.
Я так и предположил. Т.к. прошивка самая последняя.
Там несколько разъемов, куда подцеплять сетевуху?
вот тут есть "быстрый старт"
https://forum.maxiol.com/index.php?showtopic=5599
там все расписано
С утра вытаскивал батарейку по незнанке,
походу сбил время. Встает на LAN DATE
Один раз через reset получилось запустить, полазил в ан дос,
но сейчас reset не работает. пока больше ничего не делаю, не тороплюсь.
https://pic.maxiol.com/thumbs2/16706...1210164247.jpg
Макс, подскажи что значит сеть?, не интернетовский lan же.
Вставил кабель Lan от роутера.
Он время не меняет, а проходит до этого и висит:
https://pic.maxiol.com/thumbs2/16706...1210172204.jpg