IPB

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

> Контроллер AZ BK: Документирование процесса разработки, на основании этой темы будет сформирована техническое описание
SuperMax
сообщение 20.1.2021, 20:37
Сообщение #1


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

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



Палитры V2
управление палитрами осуществляется через 2 регистра палитры первый (177234) - адрес ячейки палитры
второй(177236) - значение палитры 15bit

адреса ячеек палитры будут начинаться с большей
Код

нумерация кодов цветов
палитра коды цветов (адреса ячеек палитры)
256     0-255
4х16    256-319
16      320-335
2       336-337


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

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

для удобства формирования палитр сделал эксельку
v2.6 от 2023.11.07
Прикрепленный файл  palette_calc26.xlsm ( 102.97 килобайт ) Кол-во скачиваний: 3064


начиная с v15 базовая палитра изменена
v2.8 от 2024.02.07
Прикрепленный файл  palette_calc28.xlsm ( 107.53 килобайт ) Кол-во скачиваний: 2901

изменения косметические, касаются только палитры 256 цветов - ее начало изменено на 32 градации серого тк в стандартной WEB-safe которая взята за базу, такого набора градаций серого почему-то нет
эта палитра загружена в ПЛИС, а также перегружается при запске явно.
именно эта палитра используется при конвертации графики этим конверетером
https://master.pdp-11.ru/picword3/picword.php



основная задача этой эксельки - сформировать файл mif для загрузки дефолтной палитры при старте ПЛИС

также она пригодится разработчикам для пересчета цветов в 15bit

пояснения к блоку 4x16 256-319
это 16 наборов палитры, изначально туда грузятся штатные значения, но их можно менять на любые!
нумерация прямая - те нулевая палитра это 256-257-258-259 ячейки
следующие 4 ячейки это 1ая палитра и так далее

управление палитрами осуществляется через 2 регистра
177234 - адрес ячейки палитры [9бит]
177236 - значение палитры [15бит]

Код




                 РЕГИСТРЫ УПРАВЛЕНИЯ ПАЛИТРАМИ

         АДРЕС = 177234
         ФОРМАТ РЕГИСТРА                                
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │15│14│13│12│11│10│09│08│07│06│05│04│03│02│01│00│
       └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
                             │                        │
                             └────АДРЕС ПАЛИТРЫ───────┘
    
       Доступен по чтению и записи



         АДРЕС = 177236
         ФОРМАТ РЕГИСТРА
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │15│14│13│12│11│10│09│08│07│06│05│04│03│02│01│00│
       └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
           │                                          │
           └──────────ЗНАЧЕНИЕ ПАЛИТРЫ────────────────┘

       Доступен по чтению и записи    



        Палитра 15bit
        
       ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐
       │14│13│12│11│10│09│08│07│06│05│04│03│02│01│00│
       └──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┘
        └─────RED────┘ └───GREEN───┘  └────BLUE────┘






формулу формирования цвета
цвет на выходе = VideoModeOffset + PaletteOffset + ColorIndex ;

VideoModeOffset - смещение видеорежима
cмещение - кол-во цветов (значения десятичные)
0 - 256
256- 4 х16
320- 16
336- 2

PaletteOffset существует только для штаного видеорежима 4 цвета
во всех остальных случаях =0
номер палитры - смещение
0 - 0
1 - 4
2 - 8
итд

ColorIndex - непосредственно номер цвета в видеорежиме, начиная с 0

Примеры работы с палитрой
надо загрузить новые значения для 16ти цветной палитры
для этого мы последовательно пишем
320.-> 177234 те устанавливаем адрес палитры
теперь мы можем записать значение
<новое значение> -> 177236
(также после установки адреса палитры мы можем ее и считать)


Примеры работы с экселькой
к примеру делаем новые значения для 16ти-цветой палитры
Прикрепленное изображение
слева вводим стандартные RGB значения в hex
справа получаем как этот цвет выглядит (надо включить макросы) и восьмеричные значения цвета
номер палитры - в столбце номер цвета


Как включить макросы в эксельке
идем в настройки
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение



Утилита-пикер формирующая 15ти-битный цвет AZБК

от автора БК-Арена
Прикрепленный файл  color15bit.exe ( 2.05 мегабайт ) Кол-во скачиваний: 1279




Визуальный редактор палитры 256 цветов

https://master.pdp-11.ru/azbk_palette_edito...tte_editor.html


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


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

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



Конфигурация сохраняемая в служебной странице 77:
данную страницу использует стартовое ПЗУинформацию отсюда можно использовать для определения конфигурации или иных целейотсюда читать быстрее чем из других источников
Код
; в оперативке сохраняем
MEMPAGE         = 130000   ; сюда подключена 77ая страница при вызова TRAPов

; блок CMOS-памяти
ADREEPROMMEM    = MEMPAGE+3000        ; буфер энергонезависимую память резерв 512. байт
ADREEPROMMEMOFF = ADREEPROMMEM+2      ; смещение на слово тк оно есть результат чтения

CMOS_NVRAM      = ADREEPROMMEMOFF+0   ;.#123456;признак реальных данных
CMOS_CSUM       = ADREEPROMMEMOFF+2   ; chksum

CMOS_TZ         = ADREEPROMMEMOFF+4   ; ctz:    .b:24   ;tz  в получасах
CMOS_FASTBOOT   = ADREEPROMMEMOFF+5   ; cfboot: .+1     ;fast boot

CMOS_FLOPPY_A   = ADREEPROMMEMOFF+6   ; cflopa: .+1     ;=1 включен
CMOS_FLOPPY_B   = ADREEPROMMEMOFF+7   ; cflopb: .+1     ;=1 включен
CMOS_DEM        = ADREEPROMMEMOFF+10  ; cidem:  .+1     ; IDE master
CMOS_DES        = ADREEPROMMEMOFF+11  ; cides:  .+1     ; IDE slave
CMOS_KEYB       = ADREEPROMMEMOFF+12  ; ckeyb:  .+1     ; =1 PS/2
CMOS_EM_11M     = ADREEPROMMEMOFF+13  ; cemu11: .+1     ; =1 эмуляция 11М на 10
CMOS_EM_SMK     = ADREEPROMMEMOFF+14  ; cemsmk: .+1     ; эмуляция SMK
CMOS_VSYNC      = ADREEPROMMEMOFF+15  ; cvsync: .+1     ; 0=VSYNC48 1=VSYNC60
CMOS_SPK        = ADREEPROMMEMOFF+16  ; cspeak: .b:0    ;0=перехват 177716 4=off
CMOS_AYYM       = ADREEPROMMEMOFF+17  ; csnd:   .b:0    ;0=YM 10=AY
CMOS_COVOX      = ADREEPROMMEMOFF+20  ; ccovox: .b:1    ;0=on 2=off
CMOS_AZMAPP     = ADREEPROMMEMOFF+21  ; cfsram: .b:0    ;1=on
CMOS_WSND       = ADREEPROMMEMOFF+22  ;22,23 wsnd:        .#0;ccovox+cspeak+csnd
                                      ;0: 0=covox mono 1=stereo
                                      ;1: 0=covox on   1=off
                                      ;2: 0=speaker on 1=off
                                      ;3: 0=YM         1=AY
CMOS_BK11ROM    = ADREEPROMMEMOFF+24  ; эмуляция ПЗУ 11М

CMOS_DHCP       = ADREEPROMMEMOFF+25 ; cipset: .+1;dhcp on/off
CMOS_IP_ADDR    = ADREEPROMMEMOFF+26 ; cipadr: .+4
CMOS_MASK       = ADREEPROMMEMOFF+32 ; cnmask: .+4
CMOS_GW         = ADREEPROMMEMOFF+36 ; cnipgw: .+4
CMOS_DNS1_IP    = ADREEPROMMEMOFF+42 ; cndns1: .+4
CMOS_DNS2_IP    = ADREEPROMMEMOFF+46 ; cndns2: .+4
CMOS_NTP_IP     = ADREEPROMMEMOFF+52 ; cntpip: .+4
CMOS_MACADDR    = ADREEPROMMEMOFF+56 ; cipmac: .+6;mac
CMOS_HOSTNAME   = ADREEPROMMEMOFF+64 ; thstnm: .+40;hostname
;CMOS_= ADREEPROMMEMOFF+120;        .b:0;eos
CMOS_BOOT1      = ADREEPROMMEMOFF+125; cboot1: .+1;номер диска из AZ.INI
CMOS_BOOT2      = ADREEPROMMEMOFF+126; cboot2: .b:377;377=free
CMOS_BOOT3      = ADREEPROMMEMOFF+127; cboot3: .b:377
CMOS_BOOT4      = ADREEPROMMEMOFF+130; cboot4: .b:377
CMOS_BOOT5      = ADREEPROMMEMOFF+121; cboot5: .b:377
CMOS_BOOT6      = ADREEPROMMEMOFF+122; cboot6: .b:377
CMOS_BOOT7      = ADREEPROMMEMOFF+123; cboot7: .b:377
CMOS_BOOT8      = ADREEPROMMEMOFF+134; cboot8: .b:377
; HOF
CMOS_HOF_AUTO   = ADREEPROMMEMOFF+200; =0 опция облачной интеграции =1 включена
CMOS_HOF_REPORTS= ADREEPROMMEMOFF+201; =0 опция выключена =1 включена
CMOS_HOF_NICK   = ADREEPROMMEMOFF+202; никнейм пользователя, длина NICKNAME до 16 символов, два ноля в конце
CMOS_HOF_PASS   = ADREEPROMMEMOFF+224; длина PASSWORD - 16 символов , два ноля в конце



; cмещения
MEMCONF_W2_OFFS = 400
MEMCONF_W3_OFFS = 402
MEMCONF_W4_OFFS = 404
MEMCONF_W5_OFFS = 406
MEMCONF_W6_OFFS = 410
; адреса
MEMCONF_W2      = MEMPAGE+MEMCONF_W2_OFFS ; тип памяти в окне 100-117
MEMCONF_W3      = MEMPAGE+MEMCONF_W3_OFFS ; тип памяти в окне 120-137
MEMCONF_W4      = MEMPAGE+MEMCONF_W4_OFFS ; тип памяти в окне 140-157
MEMCONF_W5      = MEMPAGE+MEMCONF_W5_OFFS ; тип памяти в окне 160-167
MEMCONF_W6      = MEMPAGE+MEMCONF_W6_OFFS ; тип памяти в окне 170-176

PRESSKEYSTARTOFF= 420                     ; смещение
PRESSKEYSTART   = MEMPAGE+PRESSKEYSTARTOFF; код нажатой кнопке при надписи нажмите KT


ADRTMPSTR       = MEMPAGE+2000; буфер под строку, динамический, резерев 512. байт

Решил опубликовать исходники стартового ПЗУПрикрепленный файл  AZBOOT_ROM3_2026_06_11__1.RAR ( 17.58 мегабайт ) Кол-во скачиваний: 116





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

Сообщений в этой теме
SuperMax   Контроллер AZ BK: Документирование процесса разработки   20.1.2021, 20:37
SuperMax   Для Legacy видеорежимов реализовано циклическое п...   15.4.2021, 1:24
SuperMax   [b]Модель управления памятью в AZ V2 с поддержкой ...   16.4.2021, 11:52
SuperMax   Генератор псевдослучайных чисел технически это LF...   4.5.2021, 14:16
SuperMax   Консоль контроллера основное назначение - отладка...   8.5.2021, 14:10
SuperMax   Загрузка ПЗУ Пример az.ini [ROM] R00=0...   8.5.2021, 14:13
SuperMax   Стартовая последовательность 1. После нажатия RES...   14.6.2021, 0:12
SuperMax   Индикация режимов работы AZБК снабжен RGB сетодио...   19.6.2021, 15:36
SuperMax   Кнопка перезапуска (RESET) на AZ изначально, подра...   19.6.2021, 16:10
SuperMax   Проект звуковой части 1. COVOX - уже реализован н...   17.7.2021, 22:45
SuperMax   По заявкам телезрителей родилась еще более новая в...   21.12.2021, 2:48
SuperMax   UART (RS-232 EIA-232 COM ком-порт) адреса стандар...   16.1.2022, 23:56
SuperMax   К расширенным видеорежимам добавились слои (редак...   17.6.2022, 20:18
SuperMax   Блиттер (описание соответствует версии v15b9 и дал...   24.9.2023, 12:33
SuperMax   Конфигурация сохраняемая в служебной странице 77: ...   11.6.2026, 21:49


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

 



Текстовая версия Сейчас: 12.7.2026, 8:36