![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
SuperMax |
![]()
Сообщение
#1
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Палитры V2
управление палитрами осуществляется через 2 регистра палитры первый (177234) - адрес ячейки палитры второй(177236) - значение палитры 15bit адреса ячеек палитры будут начинаться с большей Код нумерация кодов цветов палитра коды цветов (адреса ячеек палитры) 256 0-255 4х16 256-319 16 320-335 2 336-337 так получается полностью независимые палитры без пересечений + явный дубль стандартного функционала палитр, те можно переключать палитры как и ранее, но теперь доступна опция настройки каждой штатной палитры! и как следствие палитры не надо будет перегружать при переключении видеорежима для удобства формирования палитр сделал эксельку v2.3 ![]() новая версия v2.4 - на нее переходим ![]() v2.5 - исправил ошибку с 1й палитрой ![]() основная задача этой эксельки - сформировать файл 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 (обведено синим) справа получаем как этот цвет выглядит (надо включить макросы) и восьмеричные значения цвета (обведено красным) -------------------- Живы будем - Не помрем !
|
SuperMax |
![]()
Сообщение
#2
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Для Legacy видеорежимов реализовано циклическое переключение по сочетанию AR2 + KT
В зависимости от запущенной программы, поведение может отличаться от стандартного, но в большинстве перехват данного сочетания работает корректно Всего 4 видеорежима - точнее интерпретации 16кБ видеопамяти 0 - ч/б режим, по умолчанию палитра с белыми точками и темно-синим фоном разрешение 512х256 1 - цветной режим, 4 цвета, палитра управляется как и стандартным 177716 как и через 177234/177236 разрешение 256х256 Для БК10 добавлена возможность сброса палитры на нулевую (так как к примеру АНДОС устанавливает 5ую (все белое) при запуске на 10ке в режиме 10ки сброс палитры по сочетанию АР2+РУС -------------------- Живы будем - Не помрем !
|
SuperMax |
![]() ![]()
Сообщение
#3
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Модель управления памятью в AZ V2 с поддержкой эмуляции БК11М на БК10
Правки от 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) окно (=1 аппаратный запрет на подключение окна) в нем при старте системы сохраняется конфигурация машины исходя из которой можно понять, какие возможности доступны на данной машине к примеру на БК11М с отключением монитора или на БК-0010 с отключением монитора в регистре будет 377 ибо отвечает только оперативка ДО адреса 100'000 на обычной БК11М будет 30377 - те к ОЗУ добавилась ПЗУ разбивка на окна соответствует размеру в 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М Основное назначение регистров - возможность в любой процедуре поменять настройки памяти, что-то сделать и вернуть их обратно (тк штатными средствами узнать что записано в эти регистры невозможно) Расширенный режим видеоконтроллера представляет набор строк от 0 до 767 и привязанный к ним - адрес 24bit начала строки, длина строки от 32 до 256 слов (16bit), важно, это адрес слова 16bit а не байта как это будет на МПИ - видеорежим строки: те количество цветов 2bit (2/4/16/256), масштабирование 2bita (1/2/4/8) те растягивание данных на заданное число пикселей Соответственно технически получается можно создавать любые видеорежимы в пределах 1024х768 комбинируя допустимые варианты Доступные режимы у нас получается несколько режимов работы доступных для разных конфигураций a)машина БК11М, без блокировки 037й, возможно наличие простой доработки окна1 доступные режимы 1. теневой маппер БК11М - те ловим DOUT с шины на все окна, RPLY не посылаем при наличии доработки SMK - отключаем окно аппаратно б) машина БК11М, с блокировкой 037 1. теневой маппер БК11М - те ловим DOUT с шины на все окна, RPLY не посылаем 2. полный маппер БК11М - те отключаем штатную память полностью, ловим DIN и DOUT с шины на все окна, RPLY посылаем 3. полный маппер БК11М - те отключаем штатную память полностью, ловим DIN и DOUT с шины на все окна, RPLY посылаем, подключаем все "ПЗУ" БК11М (для БК11М без ПЗУ или БК10) в) машина БК10, без блокировки 037 1. теневой маппер БК10 - те ловим DOUT с шины на все окна, RPLY не посылаем работаем в режиме обычной расширенной памяти с 120000-157777 г) машина БК10, с блокировкой 037 1. теневой маппер БК10 - те ловим DOUT с шины на все окна, RPLY не посылаем 2. полный маппер БК11М - те отключаем штатную память 037й, ловим DIN и DOUT с шины на все окна, RPLY посылаем 3. полный маппер БК11М - те отключаем штатную память 037й, ловим DIN и DOUT с шины на все окна, RPLY посылаем, подключаем все "ПЗУ" БК11М (для БК11М без ПЗУ или БК10) Также наличие доработки 037й позволяет отключить 014ую и подключить внешную PS/2 клавиатуру -------------------- Живы будем - Не помрем !
|
SuperMax |
![]()
Сообщение
#4
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Генератор псевдослучайных чисел
технически это LFSR длиной 128bit, младшие 16bit доступны по адресу 177550 данный регистр отвечает и на чтение и на запись. запись игнорируется. питается генератор частой 65MHz и как следствие каждое обращение с МПИ даст совершенно новое слово -------------------- Живы будем - Не помрем !
|
SuperMax |
![]()
Сообщение
#5
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Консоль контроллера
основное назначение - отладка + информационные сообщения для расширенной диагностики Настройка консоли baud rate: 115200 data:8 bit parity: none stop: 1bit К примеру в случае отсутствия карточки в консоли будет: Код AZBK build May 5 2021 23:12:19 Start lan init ERROR: Card NOT installed Lan init ok IO11 init begin ERROR open AZ.INI errorcode=12 IO11 Error: 4 System Halted Нормальный старт выводит в консоль следующий лог Код AZBK build May 17 2021 22:27:48 Start lan init Card installed OK Card mounted OK Lan init ok IO11 init begin LOAD 0 ROM: file 0:/ROM/AZBOOT.ROM at 400000 (100) LOAD 8 ROM: file 0:/ROM/BZ326.ROM at 440000 (110) LOAD 11 ROM: file 0:/ROM/HDD326.ROM at 454000 (113) LOAD 16 ROM: file 0:/ROM/11M_324.ROM at 500000 (120) LOAD 18 ROM: file 0:/ROM/11M_325.ROM at 510000 (122) LOAD 20 ROM: file 0:/ROM/11M_327.ROM at 520000 (124) LOAD 22 ROM: file 0:/ROM/11M_328.ROM at 530000 (126) LOAD 24 ROM: file 0:/ROM/11M_329.ROM at 540000 (130) MOUNT image 0:/DISKS/AG.IMG MOUNT image 0:/DISKS/ANSYS.IMG MOUNT image 0:/DISKS/CSI_321B.IMG MOUNT image 0:/DISKS/CSI_321R.IMG MOUNT image 0:/DISKS/FORTRA.DSK MOUNT image 0:/DISKS/51SYS_DS.DSK MOUNT image 0:/DISKS/51DS_BK.DSK MOUNT image 0:/DISKS/BK326.IPL Card installed OK Card mounted OK ----------------------------- Network setting: DHCPNAME=AZNET-BK.home.maxiol.com MAC=00.0e.35.22.0b.01 DHCP=ON IP=0.0.0.0 MASK=0.0.0.0 GW=0.0.0.0 NTP=0.0.0.0 DNS1=0.0.0.0 DNS2=0.0.0.0 NTP_BROADCAST=OFF SNMP_COMMUNITY=maxiol SNMP_TRAP=0.0.0.0 SNMP_TRAP_CHECK_PERIOD=0 SNMP_OK1=0.0.0.0 SNMP_OK2=0.0.0.0 SNMP_OK3=0.0.0.0 SNMP_OK4=0.0.0.0 SNMP_OK5=0.0.0.0 TIMEZONE=0 IO11 init ok Begin main work -------------------- Живы будем - Не помрем !
|
SuperMax |
![]()
Сообщение
#6
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Загрузка ПЗУ
Пример az.ini Код [ROM] R00=0:/rom/AZBOOT.ROM R08=0:/rom/bz326.rom R11=0:/rom/HDD326.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 [disks] D0=0:/disks/AG.IMG D1=0:/disks/ANSYS.IMG D2=0:/disks/CSI_321B.IMG D3=0:/disks/CSI_321R.IMG D4=0:/disks/fortra.dsk D5=0:/disks/51SYS_DS.DSK D6=0:/disks/51DS_BK.DSK D7=0:/disks/BK326.IPL [boot] D7 Секция ROM обязательна и всегда должна быть первой привязка основных ROMов будет статична тк является ключевой для эмуляции стандартного набора ПЗУ разных БК разберем строчку: Код R00=0:/rom/AZBOOT.ROM R00 - номер слота куда будет загружено ПЗУ нумерация от R00 до R63 (весь сегмент ПЗУ - 256кБ - соответственно всего 64слота) соответственно если ПЗУ 8кБ то она займет 2 слота Код 0:/rom/AZBOOT.ROM тут очевидно путь к файлу Распределение адресного пространства ПЗУ ![]() обращаю внимание на то, что физический адрес - словный столбец окно маппера как раз показывает номер для мапирования те для подключения ПЗУ AZ326.ROM которое загружено с адреса 440'000(8) мы должны занести в регистр слота - в нашем случае 177334 (тк мы подключаем в окно 160'000(8)), значение 110(8) Если мы хотим подключить длинное ПЗУ которое занимает два слота маппера то надо указать оба Код mov #120,@#177330 ; окно 140000-147777 mov #121,@#177332 ; окно 150000-157777 bis #30000,@#177340 ; включаем страницы -------------------- Живы будем - Не помрем !
|
SuperMax |
![]()
Сообщение
#7
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Стартовая последовательность
1. После нажатия RESET на БК (или включения) питания процессор в БК остановлен 2. Запускается STM32, удерживает RESET в низком состоянии и начинает загрузку конфига AZ.INI и его исполнение 3. Загружаются образа ПЗУ в оперативку для эмуляции ПЗУ 4. После завершения инициализации инфраструктры, STM32 отпускает RESET и БК может стартовать 5. Инициализирует сетевой стек до старта БК (подъема RESET через штатную цепь заряда конденсатора) 6. Старт БКшки с AZ осуществляется с адреса 170000 7. Программа в нем подключает ПЗУ AZBOOT c адрес 170000 и передает управление ему. 8. ПЗУ AZBOOT включает сеть и инициализирует оборудование AZ 9. AZBOOT передает управление стандартному монитору (в БК-0010 со 100000 а в БК-0011М о 140000) Цветовая индикация,стадии 1-2 - фиолетовый 3 - синий 4-5-6-7 - зеленый 8,9 - красный-зеленый (адрес по DHCP еще не получен) или синий-зеленый (есть адрес по DHCP) далее при обращении к карточке могут быть сочетания до белого -------------------- Живы будем - Не помрем !
|
SuperMax |
![]()
Сообщение
#8
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Индикация режимов работы
AZБК снабжен RGB сетодиодом в целях экономии места и увеличения функционала Индикация ошибок - подробно расписано тут 1. При старте если все OK - горит зеленый 2. Сеть в номинальном режиме работы: раз в секунду гасит зеленый и зажигает синий потом обратно - те синий-зеленый раз в секунду 3. Процесс неполучения адреса по DHCP [или отсутствия сетевой карты] раз в секунду зеленый гаснет но синий не загорается, загорается красный 4. Сетевая активность - только при отправке пакетов ибо мусор из сети валится постоянно зеленый не горит, синий моргает часто 5. Активность контроллера - малиновый [синий +красный], при совмещении с сетью получаются сочетания до белого. -------------------- Живы будем - Не помрем !
|
SuperMax |
![]()
Сообщение
#9
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Кнопка перезапуска на AZ
изначально, подразумевалось что перезапуск будет идти с платы БКшки, и на самом AZ не предусматривалась установка кнопки перезапуска, однако это можно легко сделать необходимо подключить кнопку между контактами NRST и GND к примеру можно так: ![]() Данная кнопка перезапустит STM32, а он в свою очередь осуществит полный перезапуск и БКшки и ПЛИС -------------------- Живы будем - Не помрем !
|
SuperMax |
![]()
Сообщение
#10
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
Проект звуковой части
1. COVOX - уже реализован набор регистров доступных и по чтению и по записи 177200 - 16bit левый канал 177202 - 16bit правый канал 177204 - 16bit моно, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202 177206 - 8bit стерео/mono, иначе говоря запись в этот регистр приводит к фактической одновременной записи в регистры 177200 и 177202 - в старший байт режимы stereo/momo определяются по байтовой записи те если писать слово в 177206 то это будет стерео а если писать младший байт в 177206 то данные будут трактоваться как моно запись в 177714 мультирежимная ибо у нас есть 2 варианта ковокса 1. моно 8bit - запись в младший байт 2. стерео 8bit - МЛБ - левый СТБ-правый переключать режимы видимо придется через регистр тк байтовую запись в младший байт завернули на AY соответственно запись туда тоже приводит к фактической одновременной записи в 177200 и 177202 обеспечивая полную совместимость со старым софтом Регистр управления звуком - 177212 биты: 00 - легаси перехват ковокса в 177714: 0=моно 1=стерео 01 - =0 разрешен легаси перехват 177714 =1 запрещен 02 - =0 разрешен перехват 177716 =1 запрещен 03 - =0 YM2149 =1 AY8910 тип эмуляции PSG перехват сделан 3х битный 2. DMA контроллер звука - реализован 177160 - регистр управления регистр скорости чтения , режима интерпретации данных (8/16 моно стерео), повтора //reg_dma_ctrl 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 пойдут напрямую на микшер отдельным каналом 3. AY эмуляция штатный перехват 177714 - реализован 4. AYх2 эмуляция (турбосаунд) - уже реализован Прямая доступность регистров на шине, а именно доступны байтовые регистры 177172 - адрес AY1 177173 - данные AY1 177174 - адрес AY2 177175 - данные AY2 адреса и данные в прямом коде, инвертировать ничего не надо X. Микшер пока рождается концепция - несколько каналов звука - регулировка громкости сдвигом на/до 16 бит -------------------- Живы будем - Не помрем !
|
SuperMax |
![]() ![]()
Сообщение
#11
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
По заявкам телезрителей родилась еще более новая версия расширенных видеорежимов
первая версия со строчным управлением мне кажется слишком сложной и не дающей никаких преимуществ итак проект такой 177230 - регистр управления 177232 - регистр номера страницы начала отображения 177230, далее пойдут биты с описанием 1;0 - режим цветовой интерпретации 4;3 - длина строки в словах 7;6 - растяжение по горизонтали - те количество повторов у точки 10;9 - количество повторов строк 15;12 - длина рулона в словах теперь подробно режим цветовой интерпретации, значение от 0 до 3 0 - 1 бит на цвет - 2 цвета 1 - 2 бита на цвет - 4 цвета 2 - 4 бита на цвет - 16 цветов 3 - 8 бит на цвет - 256 цветов длина строки в словах 0 - 32 слова 1 - 64 2 - 128 3 - 256 это значение должно соответствовать вашему режиму - иначе будут повторы или пропуски данных расчет прост - к примеру мы выбрали 512х384х16 цветов считаем 512точек х 4 бита = 2048бит /16 = 128 слов растяжение по горизонтали - те количество повторов у точки 0 - х1 - те 1024 точки в строке 1 - х2 - 512 2 - х3 - 256 3 - х4 - 128 количество повторов строк 0 - х1 - 768 строк 1 - х2 - 384 2 - х3 - 256 3 - х4 - 192 длина рулона в словах 0 6144 1 8192 2 12288 3 16384 4 24576 5 32768 6 49152 7 65536 8 98304 9 131072 10 196608 11 262144 длина дает информацию контроллеру для корректной работы вертикального скролинга и важный момент - длина рулона может быть БОЛЬШЕ чем экран иначе говоря можно объявить экран в 32кБ (к примеру 256х256х16цветов ) а рулон выбрать в 64кБ, что позволит осуществлять формирование того что выйдет на экран ЗА его пределами ДО его вывода рулоном типовые видеорежимы (значение восьмеричные) 012201 - 256х256х4цвета (экран 16кБ) 012100 - 512х256х2цвета (экран 16кБ) 032212 - 256х256х16цветов (экран 32кБ) регистр 177232 - адрес страницы начала отображения те можно начинать отображение с любой страницы в памяти общее количество возможных сочетаний видеорежимов получается 60шт -------------------- Живы будем - Не помрем !
|
SuperMax |
![]()
Сообщение
#12
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
UART (RS-232 EIA-232 COM ком-порт)
адреса стандартные 177560 - регистр статуса приемника 177562 - регистр управления + регистр принятых данных 177564 - регистр статуса передатчика 177566 - регистр данных на передачу 177560 - регистр статуса приемника бит 7 - флаг наличия данных: единица означает наличие принятых данных в регистре 177562 после чтения 177562 - флаг будет сброшен регистр доступен на чтение запись игнорируется, ошибки не взывает 177562 - по чтению - младший байт содержит принятые данные - по записи - слово определяющее скорость, подробности ниже дефолтное значение 32346(8) что соответствует стандартной скорости в 9600бод 177564 - регистр статуса передачика бит 7 - флаг успешной передачи данных: единица означает что байт из регистра 177566 успешно передан в линию после записи в 177566 - флаг будет сброшен тк начнется передача регистр доступен на чтение запись игнорируется, ошибки не взывает 177566 - регистр данных на передачу, используется младший байт, доступен на чтение и запись после записи начинается передача в линию Слово определяющее скорость - доступно только по записи ![]() те для переключения UART-a на скорость 2400бод мы записываем 64713(8) в регистр 177562 технически эти константы вычисляются так: константа скорости = (65 000 000)/(бодовая скорость) те в принципе можно сделать любую доступную скорость в пределах 16ти битного делителя. дефолтное значение 15163(8) что соответствует стандартной скорости в 9600бод. Техническая реализация на плате порт реализован в двух режимах напряжений TTL - 3.3V EIA-232 (+-12V) переключение режимов осуществляется перемычками JP2 и JP3 ![]() положения перемычек подписаны - TTL и EIA232 соответственно для включения TTL надо JP2 и JP3 установить в положение 2-3 ![]() для переключения в режим EIA232 надо JP2 и JP3 установить в положение 1-2 ![]() также есть перемычка JP1 установка которой позволяет вывести +5В с БК на 9й пин порта это может потребоваться для изготовления своих устройств питающихся от AZ Старая таблица, актуальна только для прошивки #9 ![]() Начиная с 10й прошивки RS232 переведен на тактирование от 65MHz -------------------- Живы будем - Не помрем !
|
SuperMax |
![]() ![]()
Сообщение
#13
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Root Admin Сообщений: 6 216 Регистрация: 7.1.2006 Из: Красноярск Пользователь №: 1 ![]() |
К расширенным видеорежимам добавились слои
теперь вот так: 177230 - регистр управления 177232 - регистр номера страницы начала отображения - верхняя страница 177240 - регистр номера страницы начала отображения - средняя страница под спрайты 177242 - регистр номера страницы начала отображения - нижняя страница - под фон177250 - регистр вертикального скролинга 177244 - регистр управления кадровыми прерываниями 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 цветов - включены слои пояснение к "слоеному" или "плановому" режиму 4 цвет формируется из 3х планов по 16кБ из которых считывается по 1 биту номер цвета собирается так старший бит [2] - из верхнего слоя (регистр 177232) средний бит [1] - из среднего слоя (регистр 177240) младший бит [0] - из нижнего слоя (регистр 177242) данный режим интересен возможностью формировать текст читаемый сразу на VGA и на стандартном выходе к примеру: 177232<-4 ая страница те 40000-77777 стандартный экран на БК11 и БК10 177240<-2000 177242<-2004 получается что если мы будем выводит основной текст по стандартному адресу 40000-77777 а цветовые аттрибуты в страницы 2000 и 2004 то у нас на VGA будет цветной текст а на стандартном выходе - белый текст на черном фоне этот подход удобен для создания универсального ПО с минимальными затратами длина строки в словах 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 - адрес страницы начала отображения те можно начинать отображение с любой страницы в памяти для слоев добавлены регистры 177240 - средний слой под спрайты и 177242 под фон общее количество возможных сочетаний видеорежимов получается 60шт Концепция работы слоев 1. у нас три страницы с картинками пусть первая - это нижний фон (адрес страницы 177242) вторая - двигающиеся герои, факелы монстры и прочее (адрес страницы 177240) третья - верхний фон (адрес 177232) который перекрывает объекты под ним - к пример колонна или дерево, за которое можно "зайти" 2. видеосистема складывает все три страницы наивысший приоритет - верхний фон, те если там не =0 то идет перекрытие далее вторая страница и уже в самую последнюю очередь - нижний фон который перекрывает любой [не нулевого цвета] объект на странице выше значение =0 это прозрачный цвет 3. слияние слоев работает в режимах от 4х цветов ибо в меньшем это просто лишено смысла 4. Для каждого слоя назначается своя палитра 4.1 для видеорежима с 2бит на цвет (пример 12205) Верх - палитра 0 Середина - палитра 1 Низ - палитра 2 ну и так как палитры можно крутить, то можно назначить любой цвет в пределах 15ти бит всего получается В- 3й цвета (один прозрачный) С- 3й цвета (один прозрачный) Н- 4й цвета итого 10 цветов, что круто ибо манипулировать-то надо всего 1й 16кБ страницей со спрайтами в случае если будем делать мортал комбат - верхний фон можно пустить под одного героя а середину под второго (ну а фон и останется фоном) тогда решать задачу затирания спрайтов не придется совсем! 4.2 для 16ти цветных режимов тоже персональные палитры - но пул уже берем от типовой 256цветной палитры (см про палитры) всего получается 15+15+16=46 цветов - КРУТО! напомню формулу формирования цвета цвет на выходе = VideoModeOffset + PaletteOffset + ColorIndex ; VideoModeOffset - смещение видеорежима cмещение - кол-во цветов (значения десятичные) 0 - 256 256- 4 х16 320- 16 336- 2 соответственно для 16ти цветов и слоев получаетяцвет на выходе = 0 + <номер слоя> + ColorIndex ;номер слоя: верх -0 середина 1низ - 2 4.3 для 256цветов палитра очевидно едина ибо их хватит на все 4.4 режим монохрома в наложение не интересен, но тк код есть то я сделал его слоями те В - старший бит ; С- cредний бит; H - младший бит цвета из 16ти цветной палитры иначе говоря получился "плановый" видеорежим к примеру код 12204 - это три страницы по 16кБ складываются в 8ми цветный 512х256 режим Палитра - верхний кусок от 16ти цветной: ![]() те сборному коду 0 соответствует 8код цвета примеры: у нас установлен режим 4 цвета 256х256 (значение 12205 в регистре 177230 ) а палитра - пусть стандартная итак верхняя страница задана в 177232 средняя в 177240 нижняя фоновая в 177242 читаем из верхней средней и нижней [далее В C Н] по два бита В=11 - тк это не =0 то это перекрывающиее значение и оно идет на экран через трансляцию палитры читаем дальше B=00 - =0 значит фон прозрачный - надо идти дальше С=00 - =0 и тут прозрачно - значит выводим то что на странице Н Н=10 - код 10 идет на идет на экран через трансляцию палитры читаем дальше B=00 - =0 значит фон прозрачный - надо идти дальше С=01 - !=0 дальше уже не идем и показваем спрайт из средней страниц и код 01 идет на идет на экран через трансляцию палитры читаем дальше B=00 - =0 значит фон прозрачный - надо идти дальше С=00 - =0 и тут прозрачно - значит выводим то что на странице Н Н=00 - тк уже некуда просвечивать то этот код (00) идет на экран через трансляцию палитры очевидно что коду 00 мы можем назначить любой из 32768 цветов равно как и другим кодам -------------------- Живы будем - Не помрем !
|
![]() ![]() |
Текстовая версия | Сейчас: 3.2.2023, 4:33 |