IPB

Здравствуйте, гость ( Вход | Регистрация )

2 Страницы V < 1 2  
Ответить в эту темуОткрыть новую тему
> Контроллер AZ BK: Обновления прошивки, AZБК firmware
SuperMax
сообщение 27.11.2022, 23:27
Сообщение #21


Администратор
*****

Группа: Root Admin
Сообщений: 6 292
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



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

исправлен первый (холодный) старт
Прикрепленный файл  00013bf0.rar ( 5.12 килобайт ) Кол-во скачиваний: 227





--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 19.12.2022, 23:07
Сообщение #22


Администратор
*****

Группа: Root Admin
Сообщений: 6 292
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



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

Прикрепленный файл  00014b.rar ( 269.58 килобайт ) Кол-во скачиваний: 220


Обращаю внимание на необходимость подключить новые ПЗУ в секции 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 (тк у БК не хватает быстродействия отобразить заставку пришлось внести коррективы)
Прикрепленный файл  MicroSD_image_2022_12_19_v14beta1_Prince.rar ( 7.96 мегабайт ) Кол-во скачиваний: 213


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


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




--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 22.12.2022, 0:09
Сообщение #23


Администратор
*****

Группа: Root Admin
Сообщений: 6 292
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Прошивка 14beta2

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

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

Прикрепленный файл  00014b2.rar ( 271.44 килобайт ) Кол-во скачиваний: 222



--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 20.3.2023, 13:32
Сообщение #24


Администратор
*****

Группа: Root Admin
Сообщений: 6 292
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



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

Прикрепленный файл  00014.rar ( 284.52 килобайт ) Кол-во скачиваний: 208


Обращаю внимание на необходимость подключить новые ПЗУ в секции 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 (тк у БК не хватает быстродействия отобразить заставку пришлось внести коррективы)

Прикрепленный файл  MicroSD_image_2023_03_20_v14_Prince.rar ( 8.62 мегабайт ) Кол-во скачиваний: 182



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




--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 6.2.2024, 13:07
Сообщение #25


Администратор
*****

Группа: Root Admin
Сообщений: 6 292
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



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

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


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

Прикрепленный файл  00015b5.rar ( 318.15 килобайт ) Кол-во скачиваний: 120


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 + ПРИНЦ + демки блиттера
Прикрепленный файл  MicroSD_image_2024_02_06_v15_Prince_and_Blitter.rar ( 1.2 мегабайт ) Кол-во скачиваний: 89


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



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




--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 15.2.2024, 18:07
Сообщение #26


Администратор
*****

Группа: Root Admin
Сообщений: 6 292
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Прошивка 00015 beta 6

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


Прошивка
Прикрепленный файл  00015b6.rar ( 320.9 килобайт ) Кол-во скачиваний: 77


Образ для проверки
Прикрепленный файл  MicroSD_image_2024_02_06_v15b6_Prince_Blitter.rar ( 1.13 мегабайт ) Кол-во скачиваний: 79



--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 17.2.2024, 15:00
Сообщение #27


Администратор
*****

Группа: Root Admin
Сообщений: 6 292
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Прошивка 00015 beta 7

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

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



Прикрепленный файл  00015b7.rar ( 323.82 килобайт ) Кол-во скачиваний: 85


образ с обновленными тестами блиттера
Прикрепленный файл  MicroSD_image_2024_02_17_v15b7_Prince_Blitter.rar ( 1.13 мегабайт ) Кол-во скачиваний: 84



--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 1.5.2024, 19:31
Сообщение #28


Администратор
*****

Группа: Root Admin
Сообщений: 6 292
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Прошивка 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 ошибочного определения опций (доработок)


Прикрепленный файл  00015b8.rar ( 198.77 килобайт ) Кол-во скачиваний: 28



--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 16.5.2024, 17:44
Сообщение #29


Администратор
*****

Группа: Root Admin
Сообщений: 6 292
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



Прошивка 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 в младшем байте)


Прошивка
Прикрепленный файл  00015b9.rar ( 313.7 килобайт ) Кол-во скачиваний: 14


Образ с обновленными тестами блиттера
Прикрепленный файл  MicroSD_image_2024_06_05_v15b9.rar ( 1.69 мегабайт ) Кол-во скачиваний: 11




--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
SuperMax
сообщение 11.6.2024, 22:33
Сообщение #30


Администратор
*****

Группа: Root Admin
Сообщений: 6 292
Регистрация: 7.1.2006
Из: Красноярск
Пользователь №: 1



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


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

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

исправленные ROMы
Прикрепленный файл  00015b9.rar ( 313.7 килобайт ) Кол-во скачиваний: 9



--------------------
Живы будем - Не помрем !
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

2 Страницы V < 1 2
Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 25.6.2024, 18:38