====== Техническая документация на Carnivore2 ====== Ниже представлена подробная техническая документация на многофункциональный картридж [[carnivore2|Carnivore2]]. **Примечания:** * Шестнадцатеричные числа могут быть указаны как ''#90'', ''90h'' или ''0x90'' * FlashROM память далее именуется как ''флеш'' **Основные функциональные блоки и возможности:** * Внешний накопитель: карта памяти [[compactflash:compactflash|]] * В качестве ДОС используется [[msx:nextor:nextor|]] (встроенная поддержка FAT12/16, максимальный размер раздела: 4 Гбайт). * Поддерживаются адаптеры [[sd_card:sd_card|SD и MicroSD]] карт * [[msx:nextor:nextor|]] поддерживает эмуляцию образов дискет * Утилиты совместимы с [[msx:dos:|]] версий 1 и 2 * Картридж можно настроить как расширение ОЗУ, IDE диск, звуковая карта FMPAC, звуковые карты SCC/SCC+ или любую их комбинацию * ОЗУ: 2048 Кбайт (2 Мбайт) * Состав: * 1024 Кбайт основное ОЗУ с маппером * 256 Кбайт для копий ПЗУ при апгрейде * 720 Кбайт дополнительное ОЗУ с маппером, используемое по принципу [[#MegaRAM]] * 4 Кбайт ОЗУ FMPAC (для сохранения данных после отключения питания нужна батарея) * Флэш память (FlashROM): объём 8 Мбайт, скорость 64 Мбит/с * Первые 256 Кбайт используются для служебной информации и ПЗУ эмулируемых устройств * Эмуляция мапперов: * образы картриджей до 64 Кбайт (планарный режим) * ASCII8 * ASCII16 * Konami4 * Konami5 (SCC/SCC+) * Настраиваемый маппер * Звук * Эмуляция PPI и PSG (порты ввода/вывода: 10h–12h) * Эмуляция Konami SCC и SCC+ * Эмуляция OPLL (YM2413, [[msx:music:|]]), переведённое на английский язык ПЗУ * Настройка громкости для всех эмулируемых звуковых устройств * PSG и PPI можно отключить в пользовательском интерфейсе * Дополнительные 128 байт для хранения параметров конфигурации в конфигурационном ППЗУ (M93C46MN1), работает в 8–битном режиме * Задаваемая пользователем громкость SCC и FMPAC (8 позиций), сохраняется в конфигурационном ППЗУ * Задаваемая пользователем громкость PSG и Clicker (8 позиций), сохраняется в конфигурационном ППЗУ * Доступное пользователю включение/выключение устройств PSG и Clicker * Задаваемая пользователем частота VDP (50/60 Гц), сохраняется в конфигурационном ППЗУ **Встроенные ПЗУ (BIOS) и модули:** ^ Файл ^ Подслот ^ Описание ^ | ''BOOTCMFC.BIN'' | 0 | Стартовое меню | | ''BIDECMFC.BIN'' | 1 | ПЗУ IDE | | | 2 | 1 Мбайт ОЗУ | | ''FMPCCMFC.BIN'' | 3 | ПЗУ FMPAC | Расположение стартового меню, каталога и BIOS в чипе FlashROM описано ниже. Существуют логические и физические блоки, они имеют разную нумерацию. ====== Расположение блоков в микросхеме флеш памяти ====== Микросхема FlashROM, используемая в Carnivore2 имеет в начале 8 логических блоков (в первом физическом 64 Кбайтном блоке), а затем следуют монолитные 64 Кбайные блоки. В логических блоках расположены стартовое меню и каталог. Далее следуют ПЗУ (BIOS) встроенных устройств. Ниже приведено их расположение по блокам. ===== 8–килобайтные блоки ===== Первые 8 логических блоков флэш соответствуют нулевому физическому блоку, задаваемому регистром AddrFR. Логическте блоки 0, 1, 6 и 7 содержат код и данные стартового меню. Блоки 2 и 3 содержат записи директории. Следующие 2 блока зарезервированы для использования в будущем. ^ Диапазон адресов ^ № блока ^ Описание ^ |''000000h–001FFFh''| 0 |после включения питания (AddrFR=#00, R1Mult="10000101" B1AdrD = #4000) отображается в Subslot 0 по адресу #4000–#5FFF и содержит блок загрузчика (заголовок ROM картриджа "AB" + адреса старта)| |''002000h–003FFFh''| 1 |после включения питание отображается в Subslot 0 по адресу #6000–#7FFF (биты 2–0 регистра R1Mult = "101" означают размер отображаемого блока (картриджа) 16 Кбайт и состоят из двух физических 8 Кбайтных блоков| |''004000h–005FFFh''| 2 |записи каталога| |''006000h–007FFFh''| 3 |:::| |''008000h–009FFFh''| 4 |не используется| |''00A000h–00BFFFh''| 5 |не используется| |''00C000h–00DFFFh''| 6 |используется для «экранных» данных стартового меню, подключается при необходимости вручную| |''00E000h–00FFFFh''| 7 |используется для «экранных» данных стартового меню, подключается при необходимости вручную| ===== 64–килобайтные блоки ===== После первых восьми логических 8 Кбайтных блоков начинаются 64 Кбайтные физические блоки флеш. ^ Диапазон адресов ^ № физического блока ^ № логического блока ^ Описание ^ |''010000h–01FFFFh''|8|1, AddrFR=#01|содержат BIOS контроллера IDE| |''020000h–02FFFFh''|9|2, AddrFR=#02|:::| |''030000h–03FFFFh''|10|3, AddrFR=#03|содержит FMPAC BIOS| |''040000h–04FFFFh''|11|4, AddrFR=#03|Блоки данных — блоки отданы для загрузки пользовательских ROM образов (игр).| |''050000h–05FFFFh''|12|5, AddrFR=#03|:::| |…|…|…|:::| |…|…|…|:::| |''7F0000h–7FFFFFh''|134|127, AddrFR=#7F|:::| ====== Микросхема FlashROM ====== Тип: Numonix M29W640GB TSOP48 \\ [[https://lrak.net/secret/data_sheets/memory_IC/M29W640.pdf|Спецификация]] Расположение блоков: |#00000|8K| |#02000|8K| |#04000|8K| |#06000|8K| |#08000|8K| |#0A000|8K| |#0C000|8K| |#0E000|8K| |#10000|64K x 127| Адреса управления: #4555 и #5AAA Команды управления: |AUTOSELECT|#90| |WRITE|#A0| |CHIP_ERASE|#10| |BLOCK_ERASE|#30| |RESET|#F0| FlashROM идентификатор: #7E * Блок 0 зарезервирован за стартовым меню (''BOOTCMFC.BIN'') и директорией * Блоки 1–2 зарезервированы за IDE BIOS (''BIDECMFC.BIN'') * Блок 3 зарезервирован за FMPAC BIOS (''FMPCCMFC.BIN'') ====== Эмуляция FMPAC ====== Эмуляция FMPAC поддерживается картриджем через порты #7C–#7D. Память FMPAC SRAM эмулируется с использованием 8 Кбайт в верхней части первого мегабайта ОЗУ (теневое ОЗУ). Этот участок памяти не входит в основное ОЗУ и не управляется маппером. Физическая адресация этого блока памяти в теневом ОЗУ: #0FE000h–#0FFFFFh. Примечание: Данные в ОЗУ стираются сразу после выключения питания компьютера если в картридже не установлена батарея для поддержки долгосрочного хранения данных в ОЗУ. Регистры управления FMPAC: * 7FF4h: запись в YM-2413 порт регистров (только запись) * 7FF5h: запись в YM-2413 порт данных (только запись) * 7FF6h: активация портов ввода–вывода OPLL (чтение и запись) * 7FF7h: страница ПЗУ (чтение и запись) Для включения 8 Кбайт SRAM по адресам 4000h–5FFFh, запишите 4Dh по адресу 5FFEh и 69h по адресу 5FFFh. ====== Конфигурационное ППЗУ ====== Тип: M93C46MN1 (128 bytes/1 kbit)\\ [[http://www.atmel.com/Images/doc5140.pdf|Спецификация]] Внимание! ППЗУ используется в 8–битном режиме! Это ППЗУ используется для хранения данных конфигурации картриджа, чтобы избежать их потери после выключения питания. В таблице ниже приведены адреса для хранения данных в ППЗУ, а также информация по самим данным. ^ Адрес ^ Описание ^ | 01 | громкость FMPAC и SCC. По 3 бита на громкость, максимальное значение — 8. Первые 2 бита используются как признак того, что громкость была предварительно записана в ППЗУ | | 02 | флаг 50 или 60 Гц развёртки для видеопроцессора. Бит 1 в этом байте — сам флаг. Если бит в нуле, то используется 60 Гц | | 03 | флаги включения/выключения PSG и PPI Clicker, а также их громкость. По 3 бита на громкость, максимальное значение — 8.\\ Первые 2 бита используются для включения и выключения PSG и Clicker | | 04 | Сортировка каталога (0 = не сортировать) | | 05 | Эффекты (0 = выключены) | | 06 | Скорость клавиатуры/джойстика | | 07 | Палитра шрифта меню | | 08 | ::: | | 09 | Палитра фона меню | | 0A | ::: | | 0B | Палитра шрифта экрана помощи | | 0C | ::: | | 0D | Палитра фона экрана помощи | | 0E | ::: | | 0F | Палитра шрифта экрана настройки громкости | | 10 | ::: | | 11 | Палитра фона экрана настройки громкости | | 12 | ::: | | 13 | Палитра шрифта экрана настройки PSG/PPI | | 14 | ::: | | 15 | Палитра фона экрана настройки PSG/PPI | | 16 | ::: | | 17 | Флаг использования пользовательских настроек интерфейса (должен быть равен #42) | | 18 | Двойной сброс (Double reset) при "холодной загрузке" (1=включен) | | 19 | FMPAC моно (1=включен) | | 1A | Последняя запущенная запись | | 1B | Флаг проигрывания музыки | | 1C | Номер записи директории для автостарта | | 1D | Флаг бегущей строки помощи | | 1E | Статус Dual-PSG | | 1F | Задержка при автостарте | | 20 | Флаг разрешения работы в слоте 3 | | 21 | Номер порта для идентификации и контроля картриджа | Запись в ППЗУ осуществляется с помощью регистра CardMDR+#23. Команды для ППЗУ записываются в этот регистр по очереди, как указано в спецификации на чип. Используются только команды разрешения записи, чтения и записи данных. ====== Регистры конфигурации ====== Регистры конфигурации и управления начинаются с адреса 0F80h или 4F80h или 8F80h или СF80h. Видимость регистров зависит от того, что записано в "нулевом" управляющем регистре после включения питания, этот регистр расположен по адресу 4F80h. Все регистры доступны только для записи за исключением псевдорегистра для прямого доступа к FlashROM или к конфигурационному ППЗУ, а также 3 байта версии прошивки ПЛИС - FPGA_ver. В таблице ниже дана информация о регистрах конфигурации. Таблица содержит информацию о битовых значениях байтов конфигурации картриджа. ^ № регистра, название ^ Назначение, номер бита ^ Значение бита ^ Описание ^ | 00 [[#CardMDR]] | регистр управления конфигурацией картриджа ||| | 01 AddrM0 | младший регистр адреса (7…0) для обращения к FlashROM ||| | 02 AddrM1 | средний регистр адреса (15…8) для обращения к FlashROM ||| | 03 AddrM2 | старший регистр адреса (22…16) для обращения к FlashROM ||| | 04 DatM0 | псевдорегистр для передачи данных FlashRОM ||| | 05 AddrFR | регистр номера блока FlashROM с которого будут читаться данные для эмуляции ROM (размер блока 64 Кбайт) начальная конфигурация 00h ||| | 06 R1Mask | [[#bank_config_registers|Регистры конфигурации банка]] 1 ||| | 07 R1Addr | ::: | ::: | ::: | | 08 R1Reg | ::: | ::: | ::: | | 09 R1Mult | ::: | ::: | ::: | | 0A B1MaskR | ::: | ::: | ::: | | 0B B1AdrD | ::: | ::: | ::: | | 0C R2Mask | [[#bank_config_registers|Регистры конфигурации банка]] 2 ||| | 0D R2Addr | ::: | ::: | ::: | | 0E R2Reg | ::: | ::: | ::: | | 0F R2Mult | ::: | ::: | ::: | | 10 B2MaskR | ::: | ::: | ::: | | 11 B2AdrD | ::: | ::: | ::: | | 12 R3Mask | [[#bank_config_registers|Регистры конфигурации банка]] 3 ||| | 13 R3Addr | ::: | ::: | ::: | | 14 R3Reg | ::: | ::: | ::: | | 15 R3Mult | ::: | ::: | ::: | | 16 B3MaskR | ::: | ::: | ::: | | 17 B3AdrD | ::: | ::: | ::: | | 18 R4Mask | [[#bank_config_registers|Регистры конфигурации банка]] 4 ||| | 19 R4Addr | ::: | ::: | ::: | | 1A R4Reg | ::: | ::: | ::: | | 1B R4Mult | ::: | ::: | ::: | | 1C B4MaskR | ::: | ::: | ::: | | 1D B4AdrD | ::: | ::: | ::: | | 1E [[#Mconf]] | Конфигурация мультикартриджа, расширенный слот ||| | 1F CMDRCpy | дубль регистра управления CardMDR (для использования команды LDIR) ||| | 20 ConfFl | регистр конфигурации чипа FlashROM \\ начальная конфигурация — 010b ||| | | 2 | 0 | для 8 разрядной шины данных | | ::: | ::: | 1 | для 16 разрядной шины данных | | ::: | 1 | Reset/protect flag || | ::: | 0 | 1 | подать 12 вольт для режима скоростной записи | | ::: | ::: | 0 | запретить +12в | | 21 NSReg | служебный регистр \\ начальная конфигурация — #00, не меняйте его! ||| | 22 SndLVL | регистр уровня громкости для FMPAC и SCC \\ начальная конфигурация — 1Bh (00011011b) по включению питания; аппаратный рестарт не влияет ||| | | 7, 6 | 10 = FMPAC моно, \\ 00 = FMPAC стерео || | ::: | 5, 4, 3 | уровень звука с FMPAK модуля (0–7) || | ::: | 2, 1, 0 | уровень звука с SCC(SCC+) модуля (0–7) || | 23 CfgEEPR | управление конфигурационным ППЗУ 93С46 (чтение и запись байтов конфигурации) ||| | | 7, 6, 5, 4 | не используется || | ::: | 3 | EECS сигнал Chip Select EEPROM || | ::: | 2 | EECK сигнал CLK (синхро) || | ::: | 1 | EEDI сигнал Data Input (данные подаваемые на EEPROM) || | ::: | 0 | EEDO сигнал Data Output (данные выдаваемые с EEPROM); только чтение || | 24 PSGCtrl | регистр управления встроенным PSG \\ начальная конфигурация — 1Bh (00011011b) по включению питания; аппаратный рестарт не влияет ||| | | 7 | включение/выключение PSG || | ::: | 6 | включение/выключение PPI Clicker || | ::: | 5, 4, 3 | уровень звука с PSG модуля (0–7) || | ::: | 2, 1, 0 | уровень звука с PPI Clicker (0–7) || | 25 | зарезервировано для использования в будущем ||| | 26 | зарезервировано для использования в будущем ||| | 27 | зарезервировано для использования в будущем ||| | | 0 | включение перехватчика по рестарту системы или по чтению с адреса #4000 || | ::: | ::: | 1 | включён | | ::: | 1 | расположение перехватчика || | ::: | ::: | 0 | блок загрузчика в FlashRОM | | ::: | ::: | 1 | нулевой блок скрытого ОЗУ | | 28 SLM_cfg | назначение подслота для устройства (главный слот) ||| | | 7 | номер подслота FMPAC || | ::: | 6 | ::: | ::: | | ::: | 5 | номер подслота RAM (Mapper MMM) || | ::: | 4 | ::: | ::: | | ::: | 3 | номер подслота IDE (CF) || | ::: | 2 | ::: | ::: | | ::: | 1 | номер подслота FlashROM/SC || | ::: | 0 | ::: | ::: | | 29 SCART_cfg | регистр управления эмулируемым слотом ||| | | 7 | 1 | эмулируемый слот включён | | ::: | ::: | 0 | эмулируемый слот отключён | | ::: | 6 | 1 | расположение эмулируемого слота назначено пользователем | | ::: | ::: | 0 | эмулируемый слот назначен подслотом главного слота | | ::: | 5 | 1 | эмулируемый слот расширен (если не используется как подслот главного слота) | | ::: | ::: | 0 | эмулируемый слот не расширен (если не используется как подслот главного слота) | | ::: | 4 | 1 | расположение главного слота назначено пользователем | | ::: | ::: | 0 | главный слот расположен в физическом слоте (там же, гже картридж) | | ::: | 3 | 1 | не используется | | ::: | ::: | 0 | ::: | | ::: | 2 | 1 | разрешить чтение регистра эмулированного слота FFFF (используется только для 1 и 2 слотов) | | ::: | ::: | 0 | запретить чтение (будут читаться существующие регистры нормальных слотов) | | 2A SCART_SLT | конфигурация слота/подслота при включении ||| | | 7, 6 | 00 = мини ROM до 32 Кбайт без маппера \\ 01 = маппер K4 \\ 10 = маппер K5 без SCC \\ 11 = маппер K5 + SCC || | ::: | 5, 4 | номер главного слота || | ::: | 3, 2 | номер расширенного подслота для эмулируемого слота || | ::: | 1, 0 | номер эмулируемого слота || | 2B SCART_StBl | Назначение 64 Кбайтного блока эмулируемого слота в FlashROM ||| | 2C, 2D, 2E FPGA_ver | версия прошивки FPGA (3 байта ASCII) ||| | 2F MROM_offs | сдвиг мини ROM в 64 Кбайтном блоке (в 8 Кбайтных единицах) ||| | 30 PSGAlt | конфигурация портов PSG ||| | | 1 | зарезервировано | | | ::: | 0 | 1 | альтернативные порты: #10-#11 | | ::: | ::: | 0 | порты по-умолчанию: #A0-#A1 | | 35 PFXN | Номер порта для идентификации и конфигурирования картриджа ||| {{anchor:bank_config_registers}} ===== Регистры конфигурации банка ===== Существует шесть регистров конфигурации банка: - [[#RnMask]] - [[#RnAddr]] - [[#RnReg]] - [[#RnMult]] - [[#BnMaskR]] - [[#BnAdrD]] n — это номер банка ==== RnMask ==== Маска для адреса регистра страницы банка (этот регистр как правило дублируется на несколько адресов, например для картриджа Konami 5 (SCC) эти адреса для первого банка 5000h–57FFh, здесь задаётся маска только старшего байта — 11111000b или F8h Начальная конфигурация F8h ==== RnAddr ==== Адрес регистра страницы банка, старший байт для адреса 5000h это 50h Начальная конфигурация 50h ==== RnReg ==== Содержимое регистра страницы банка, здесь задаётся начальное значение страницы перед запуском содержимого ROM как правило = 00h Начальная конфигурация 00h ==== RnMult ==== RnMult — регистр режима банка и его размера ^ Бит ^ Значение ^ Описание ^ | 7 | 1 |разрешение регистра страницы банка| |:::| 0 |управление страницей банка выключено| | 6 | 1 |зеркалирование выключено| |:::| 0 |включено| | 5 |выбор в качестве источника|| |:::| 0 |FlashROM| |:::| 1 |RAM| | 4 | 1 |разрешение записи в банк| |:::| 0 |запрет записи в банк| | 3 | 0 |банк включён| |:::| 1 |банк выключен| | 2, \\ 1, \\ 0 |размер банка \\ 111b = 64 Кбайт, \\ 110b = 32 Кбайт, \\ 101b = 16 Кбайт, \\ 100b = 8 Кбайт, \\ 011b = 4 Кбайт \\ остальные значения — банк выключен \\ начальная конфигурация — 85h|| Начальное значение — 00h, банк выключен. ==== BnMaskR ==== Маска для адресации банка в блок FlashROM (размер эмулируемой ROM или количество страничек, например для 128 Кбайт ROM нужно 16 страничек по 8 Кбайт, значит выбираем маску = 0Fh или 00001111b) Начальная конфигурация — 03h ==== BnAdrD ==== Адрес банка, только старший байт, для 4000h = 40h Начальная конфигурация — 40h ===== CardMDR ===== 00 CardMDR — регистр управления конфигурацией картриджа ^ Бит ^ Значение ^ Описание ^ | 7 |1|запрет отображения регистров| |:::|0|регистры отображаются| | 6 |0/1/2/3|регистры отображаются начиная с адреса 0F80h/4F80h/8F80h/CF80h| | 5 |:::|:::| | 4 |1|разрешение "чипа" SCC| |:::|0|запрет "чипа" SCC| | 3 |1|режим отложенной конфигурации| |:::|0|конфигурация меняется сразу после изменения управляющих регистров| | 2 |0|при отложенной конфигурации изменения вступают в силу после выполнения процессором команды с адреса 0000h| |:::|1|изменения вступают в силу после выполнения чтения с адреса 4000h отложенная конфигурация регистров действует только для AddrFR и регистров управления банками| | 1 |данные для чтения BIOS встроенных устройств|| |:::|0|данные системных ROM образов (меню загрузки, IDE контроллер, FMPAС) читаются из флеш| |:::|1|данные системных ROM образов (меню загрузки, IDE контроллер, FMPAС) читаются из RAM картриджа (внимание! предварительно данные нужно перезаписать из флеш в RAM)| | 0 |управление чтением служебных регистров|| |:::|0|все служебные регистры читаются по соответствующим адресам памяти согласно битам 6,5 в 0F80h/4F80h/8F80h/CF80h| |:::|1|служебные регистры не читаются, отображается только 1 байт данных флеш блока согласно установленным значениям регистров банка| ===== Mconf ===== 1E Mconf — регистр конфигурации мультикартриджа, расширенный слот ^ Байт ^ Значение ^ Описание ^ | 7 | 1 |разрешение расширенного слота| |:::| 0 |один слот| | 6 | 1 |разрешение чтения портов МММ–маппера FC,FD,FE,FF| | 5 | 1 |разрешение YM2413 (FM Pack Synt. 7Ch,7Dh)| | 4 | 1 |разрешение 3С порта (МММ–маппера)| | 3 | 1 |разрешение -3 Subslot FM Pack bios ROM| | 2 | 1 |разрешение -2 Subslot 1 Mb RAM с маппером (MMM стандарт)| | 1 | 1 |разрешение -1 Subslot CF card интерфейс| | 0 | 1 |разрешение -0 Subslot MSCC (и данного регистра)| {{anchor:directoryentryformat}} ====== Формат записи каталога ====== В картридже доступно 253 контролируемых пользователем записей каталога. Первая запись каталога не может быть отредактирована или удалена, потому что она устанавливает конфигурацию картриджа по умолчанию — "всё включено". Каталог содержит 2 блока по 8 Кбайт и физически расположен в 2 и 3 логических блоках микросхемы FlashROM (диапазон адресов 004000h–005FFFh (блок 2) и 006000h–007FFFh (блок 3). Номер физического блока, адресуемый регистром AddrFr, равен нулю. Каждая запись каталога занимает 40h (64 байта) и имеет следующий формат: ^ Адрес ^ Название ^ Назначение, номер бита ^ Значение бита, описание ^ |#00|NUM|Номер записи (последняя запись — FF игнорируется)|| |#01|ACT|Флаг активной/пустой записи (#FF — активная запись)|| |#02|STB|Стартовый блок данных 64 Кбайт|| |#03|LNB|Размер данных в 64 Кбайтных блоках|| |#04|MAP|Символ типа маппера|| |#05|NAM|Имя записи (30 байт)|| |#22|NAM|:::|| |#23|R1Mask|[[#bank_config_registers|Регистры конфигурации банка]] 1|| |#24|R1Addr|:::|| |#25|R1Reg|:::|| |#26|R1Mult|:::|| |#27|B1MaskR|:::|| |#28|B1AdrD|:::|| |#29|R2Mask|[[#bank_config_registers|Регистры конфигурации банка]] 2|| |#2A|R2Addr|:::|| |#2B|R2Reg|:::|| |#2C|R2Mult|:::|| |#2D|B2MaskR|:::|| |#2E|B2AdrD|:::|| |#2F|R3Mask|[[#bank_config_registers|Регистры конфигурации банка]] 3|| |#30|R3Addr|:::|| |#31|R3Reg|:::|| |#32|R3Mult|:::|| |#33|B3MaskR|:::|| |#34|B3AdrD|:::|| |#35|R4Mask|[[#bank_config_registers|Регистры конфигурации банка]] 4|| |#36|R4Addr|:::|| |#37|R4Reg|:::|| |#38|R4Mult|:::|| |#39|B4MaskR|:::|| |#3A|B4AdrD|:::|| |#3B|[[#Mconf]]|регистр конфигурации расширенного слота|| |#3C|[[#CardMDR]]|регистр основной конфигурации|| |#3D|[[#PosSiz]]|размер и позиция mini ROM в 64 Кбайтном блоке|| |#3E|[[#RstRun]]|параметры сброса и старта|| |#3F|Resrv|Зарезервировано|| ===== PosSiz ===== PosSiz — размер и позиция mini ROM в 64 Кбайтном блоке ^ Бит ^ Значение/описание ^ | 7 |зарезервировано| | 6, \\ 5, \\ 4 |смещение mini ROM в 64 Кбайтном блоке в зависимости от длины ROM файла: | ^ 8 Кбайт ^ 16 Кбайт ^ 32 Кбайт ^ |000b| 0 Кбайт | 0 Кб | 0 Кбайт | |001b| 8 Кбайт | 16 Кбайт | 32 Кбайт | |010b| 16 Кбайт | 32 Кбайт | | |011b| 24 Кбайт | 48 Кбайт | | |100b| 32 Кбайт | | | |101b| 40 Кбайт | | | |110b| 48 Кбайт | | |111b| 56 Кбайт | | | | 3 |нестандартный размер образа картриджа:\\ 1 — 49 Кбайт \\ 0 — стандартный размер образа картриджа| | 2,\\ 1, \\ 0 |размер mini ROM: \\ 110b = 32 Кбайт \\ 101b = 16 Кбайт \\ 100b = 8 Кбайт \\ 011b = 4 Кбайт \\ 000b = не mini ROM| ===== RstRun ===== RstRun — параметры перезагрузки и старта ^ Бит ^ Значение ^ Описание ^ | 3 |начальный адрес образа картриджа|| |:::|0|использовать 2–ой бит этого регистра | |:::|1|использовать стартовый адрес из 0002h| | 2 |начальный адрес образа картриджа|| |:::|0|использовать стартовый адрес из 4002h| |:::|1|использовать стартовый адрес из 8002h| | 1 |контроль запуска|| |:::|0|не запускать образ картриджа| |:::|1|запустить образ картриджа используя стартовый адрес (биты 3,2)| | 0 |флаг перезагрузки|| |:::|0|не выполнять перезагрузку MSX| |:::|1|перезагрузка MSX| ====== Мапперы ====== Картридж поддерживает несколько широко распространённых мапперов, а также планарный режим. Физические адреса ОЗУ, выделенные для работы мапперов, находятся в диапазоне 100000h–1FFFFFh, что означает, что для этого используется вторая (основная) часть чипа ОЗУ. {{anchor:mapper_type}} Таблица значений типов мапперов: ^ Символ ^ Значение ^ |''K''|маппер [[#Konami5|Konami 5 SCC]]| |''k''|маппер [[#Konami4]]| |''a''|маппер [[#ASCII8]]| |''A''|маппер [[#ASCII16]]| |''M''|[[#minirom|мини ROM (до 64 Кбайт)]]| |''C''|конфигурационная запись| |''U''|неизвестный маппер| |''%%-%%''|для остальных случаев| ===== ASCII8 ===== Картридж поддерживает стандартный маппер ASCII8. Значения конфигурации по умолчанию: |#F8|#60|#00|#84|#FF|#40^банк 1| |#F8|#68|#00|#84|#FF|#60^банк 2| |#F8|#70|#00|#84|#FF|#80^банк 3| |#F8|#78|#00|#84|#FF|#A0^банк 4| |#FF|#AC|#00|#02|#FF| ^регистры конфигурации| ===== ASCII16 ===== Картридж поддерживает стандартный маппер ASCII16. Значения конфигурации по умолчанию: |#F8|#60|#00|#85|#FF|#40^банк 1| |#F8|#70|#00|#85|#FF|#80^банк 2| |#F8|#60|#00|#85|#FF|#C0^банк 3| |#F8|#70|#00|#85|#FF|#00^банк 4| |#FF|#8C|#00|#01|#FF| ^регистры конфигурации| ===== Konami4 ===== Картридж поддерживает стандартный маппер Konami4. Значения конфигурации по умолчанию: |#E8|#50|#00|#04|#FF|#40^банк 1| |#E8|#60|#01|#84|#FF|#60^банк 2| |#E8|#80|#02|#84|#FF|#80^банк 3| |#E8|#A0|#03|#84|#FF|#A0^банк 4| |#FF|#AC|#00|#02|#FF| ^регистры конфигурации| ===== Konami5 ===== Картридж поддерживает стандартный маппер Konami5 (SCC). Значения конфигурации по умолчанию: |#F8|#50|#00|#84|#FF|#40^банк 1| |#F8|#70|#01|#84|#FF|#60^банк 2| |#F8|#90|#02|#84|#FF|#80^банк 3| |#F8|#B0|#03|#84|#FF|#A0^банк 4| |#FF|#BC|#00|#02|#FF| ^регистры конфигурации| {{anchor:minirom}} ===== MiniROM ===== Картридж поддерживает MiniROM (образы ROM до 49 Кбайт) без маппера. Значения конфигурации по умолчанию: |#F8|#60|#00|#06|#7F|#40^банк 1| |#F8|#70|#01|#08|#7F|#80^банк 2| |#F8|#70|#02|#08|#3F|#С0^банк 3| |#F8|#78|#03|#08|#3F|#A0^банк 4| |#FF|#8C|#07|#01|#FF| ^регистры конфигурации| {{anchor:linear64}} ===== Планарный режим 64 Кбайт ===== Картридж поддерживает планарный режим, когда первые 64 Кбайт образа ROM видны в адресном пространстве. Значения конфигурации по–умолчанию для MiniROM: |#F8|#60|#00|#06|#7F|#40^банк 1| |#F8|#70|#01|#08|#7F|#80^банк 2| |#F8|#70|#02|#08|#3F|#C0^банк 3| |#F8|#78|#03|#08|#3F|#A0^банк 4| |#FF|#8C|#07|#01|#FF| ^регистры конфигурации| Диапазоны адресов: |#0000–#3FFF^банк 1| |#4000–#7FFF^банк 2| |#8000–#BFFF^банк 3| |#C000–#FFFF^банк 4| {{anchor:defaultvalues}} ====== Значения по умолчанию ====== Ниже приведены значения регистров конфигурации по–умолчанию. |CardMDR|CardMDR+#00|20h (но может отличаться из–за 2 последних бит)| |AddrFR|CardMDR+#05|00h| |R1Mult|CardMDR+#09|85h| |R2Mult|CardMDR+#0F|00h| |R3Mult|CardMDR+#15|00h| |R4Mult|CardMDR+#1B|00h| |CMDRCpy|CardMDR+#1F|20h| |ConfFl|CardMDR+#20|02h| {{anchor:rcp_file_format}} ====== Формат файла RCP ====== Описание формата файла RCP (Register Configuration Preset) — набор настроек регистров. ^ Адрес (байт) ^ Описание ^^ |#00|[[#mapper_type|Тип маппера]]|| |#01|R1Mask|[[#bank_config_registers|Регистры конфигурации банка]] 1| |#02|R1Addr|:::| |#03|R1Reg|:::| |#04|R1Mult|:::| |#05|B1MaskR|:::| |#06|B1AdrD|:::| |#07|R2Mask|[[#bank_config_registers|Регистры конфигурации банка]] 2| |#08|R2Addr|:::| |#09|R2Reg|:::| |#0A|R2Mult|:::| |#0B|B2MaskR|:::| |#0C|B2AdrD|:::| |#0D|R3Mask|[[#bank_config_registers|Регистры конфигурации банка]] 3| |#0E|R3Addr|:::| |#0F|R3Reg|:::| |#10|R3Mult|:::| |#11|B3MaskR|:::| |#12|B3AdrD|:::| |#13|R4Mask|[[#bank_config_registers|Регистры конфигурации банка]] 4| |#14|R4Addr|:::| |#15|R4Reg|:::| |#16|R4Mult|:::| |#17|B4MaskR|:::| |#18|B4AdrD|:::| |#19|[[#Mconf]]|регистр конфигурации расширенного слота| |#1A|[[#CardMDR]]|регистр основной конфигурации| |#1B|[[#PosSiz]]|размер и позиция mini ROM в 64 Кбайтном блоке| |#1C|[[#RstRun]]|параметры перезагрузки и старта ROM| |#1D|Не используется, всегда FF|| ====== Порт для идентификации и контроля ====== Карнивор может быть найден и может управляться с помощью специального порта-ввода вывода, который можно выбрать в конфигурационном меню. Номер порта может быть установлен в диапазоне #F0-F2. Поддерживаются следующие операции: - Детектирование картриджа * Запишите "C" в порт и прочитайте оттуда значение в байт. Карнивор ответит номером версии "2" (в ASCII формате) - Определение слота, в котором находится Карнивор * Запишите "S" в порт и прочитайте оттуда значение в байт. Карнивор ответит номером слота, в котором он находится, например "1" (в ASCII формате) - Спрятать регистры конфигурации * Запишите "H" в порт, регистры конфигурации будут спрятаны - Показать регистры конфигурации * Запишите "R" в порт, регистры конфигурации будут показаны по выбранному (смотрите информацию ниже) или дефолтному адресу #4F80 - Управление местоположением регистров конфигурации в памяти * Запишите "0" в порт, регистры конфигурации будут показаны по адресу #0F80 * Запишите "1" в порт, регистры конфигурации будут показаны по адресу #4F80 * Запишите "2" в порт, регистры конфигурации будут показаны по адресу #8F80 * Запишите "3" в порт, регистры конфигурации будут показаны по адресу #CF80 - Управление режимом работы картриджа (ВНИМАНИЕ! После изменения нужна программная перезагрузка по JP 0) * Запишите "A" в порт, картридж будет переведён в монофункциональный режим работы (активно только одно устройство) * Запишите "M" в порт, картридж будет переведён в мультифункциональный режим работы (активны все устройства) ====== Ссылки ====== [[carnivore2|]] {{tag>MSX RBSC}}