Клон Music module NMS1205

Страница 4/10
1 | 2 | 3 | | 5 | 6 | 7 | 8 | 9

By Lhanthian

Resident (42)

Аватар пользователя Lhanthian

11-01-2020, 19:37

Как я понимаю работу дешифратора адресов.

Джамперы X2 и X3 могут быть в положении 2-3 (64k) или 1-2 (32k)

CI3, pin14: 0 если ADR12=1, ADR13=1
CI3, pin13: 0 если ARD15=0 (для X2 в положении 32k) или просто 0 (для X2 64k)

CI2, CS1 = 0 если CS12=0, pin13=0, pin14=0.
IC1, CE = 0 если CS12=0, pin13=0, pin14=1 (то есть ADR13-ADR12 = 00, 01, 10).
Есть ROM 32k 0000-7FFF или ROM 64k 0000-FFFF
Есть SRAM 0000-1FFF

Чтобы было понятнее, когда и какими диапазонами ROM и SRAM будут отображаться
в адресное пространство, запишем старшие разряды 15-12 битами, остальные хексами:

0000 000 - 0000 FFF - ROM 0000 - 0FFF
0001 000 - 0001 FFF - ROM 1000 - 1FFF
0010 000 - 0010 FFF - ROM 2000 - 2FFF
0011 000 - 0011 FFF - SRAM 0000 - 0FFF
0100 000 - 0100 FFF - ROM 4000 - 4FFF
0101 000 - 0101 FFF - ROM 5000 - 5FFF
0110 000 - 0110 FFF - ROM 6000 - 6FFF
0111 000 - 0111 FFF - SRAM 0000 - 0FFF

Только для X2 в положении 64k:

1000 000 - 1000 FFF - ROM 8000 - 8FFF
1001 000 - 1001 FFF - ROM 9000 - 9FFF
1010 000 - 1010 FFF - ROM A000 - AFFF
1011 000 - 1011 FFF - SRAM 1000 - 1FFF
1100 000 - 1100 FFF - ROM C000 - CFFF
1101 000 - 1101 FFF - ROM D000 - DFFF
1110 000 - 1110 FFF - ROM E000 - EFFF
1111 000 - 1111 FFF - SRAM 1000 - 1FFF

Или компактнее:

0000h-2FFFh: ROM, диапазон 0000h-2FFFh
3000h-3FFFh: SRAM, диапазон 0000h-0FFFh
4000h-6FFFh: ROM, диапазон 4000h-6FFFh
7000h-7FFFh: SRAM, диапазон 0000h-0FFFh

Только для X2 в положении 64k:

8000h-AFFFh: ROM, если X3 в положении 64k, то диапазон 8000h-AFFFh, если X3 в положении 32k, то диапазон 0000h-2FFFh
B000h-BFFFh: SRAM, диапазон 1000h-1FFFh
C000h-EFFFh: ROM, если X3 в положении 64k, то диапазон C000h-EFFFh, если X3 в положении 32k, то диапазон 4000h-6FFFh
F000h-FFFFh: SRAM, диапазон 1000h-1FFFh

Но всё это работает только при установке в 0 сигнала CS12, что соответствует чтению (??? а как же запись в SRAM?)
по адресам 4000-BFFF (Или не так? Как он формируется????).

То есть остаётся только:

4000h-6FFFh: ROM, диапазон 4000h-6FFFh
7000h-7FFFh: SRAM, диапазон 0000h-0FFFh

Только для X2 в положении 64k:

8000h-AFFFh: ROM, если X3 в положении 64k, то диапазон 8000h-AFFFh, если X3 в положении 32k, то диапазон 0000h-2FFFh
B000h-BFFFh: SRAM, диапазон 1000h-1FFFh

Чтобы отображение SRAM не зависело от X2, полагаю надо завести на CS1 микросхемы CI2 сигнал с ног 7 и 14 микросхемы CI3.

By АIеks

Paladin (946)

Аватар пользователя АIеks

11-01-2020, 20:48

Не разбирался, чего там бразильцы эволюционировали за десятилетия (ну почти). Вот маппер на g16v8 для моей карточки OPL2 под биос 1.3b и схемку надо пошукать. Вроде не выкладывал.

/** Inputs **/
PIN 1  = A1;
PIN 2  = A2;
PIN 3  = A3;
PIN 4  = A4;
PIN 5  = A5;
PIN 6  = A6;
PIN 7  = A7;
PIN 8  = !M1;
PIN 9  = !IORQ;
PIN 11 = !SLTSL;
PIN 14 = A12;
PIN 15 = A13;

/** Outputs **/
PIN 12 = !ROMSL;
PIN 13 = !RAMSL;
PIN 19 = !IOC0;

/** Equations **/
IOC0   = !A1 & !A2 & !A3 & !A4 & !A5 & A6 & A7 & IORQ & !M1;
ROMSL =  !A12 & SLTSL # !A13 & SLTSL;
RAMSL  = A12 & A13 & SLTSL;

Еще поищу мой не замысловатый стенд в Proteus-e на рассыпухе для этого маппера.

By АIеks

Paladin (946)

Аватар пользователя АIеks

11-01-2020, 21:27

Схема Module OPL2.pdf

p.s. Если уже делать под бразильский биос, то зачем думать о совместимости с оригинальным? Не зачем. Я так думаю.

By Lhanthian

Resident (42)

Аватар пользователя Lhanthian

12-01-2020, 16:40

Да я просто не могу понять, как оно умудряется в модифицированном варианте работать. Проверил, как формируется сигнал CS12 (а без него не будет выставлен чип-селект и для EEPROM, и для SRAM) по исходникам для эмуляции архитектуры на ПЛИС - действительно, при установке адреса в диапазоне 4000-BFFF, выставлении RD и MREQ. То есть и EEPROM, и SRAM будут включаться-откликаться только при этих условиях. Но тогда SRAM не будет доступна на запись, когда RD не выставлено, и у EEPROM не будет доступно в адресном пространстве начало 0000h-2FFFh. Но ведь оно как-то работает всё же? А в базовом варианте используется CS12 в связке с SLTSL, то есть отображается (откликается данными на установленный адрес) в адресное пространство 4000h - BFFFh вся память EEPROM при выполнении операции чтения из памяти (MREQ, RD).

By АIеks

Paladin (946)

Аватар пользователя АIеks

12-01-2020, 18:20

Lhanthian wrote:

Да я просто не могу понять, как оно умудряется в модифицированном варианте работать. Проверил, как формируется ...

Все так. С сигналом /CS12 кашу не сваришь. А каким первоисточником вы пользовались (схема, документ)?

Lhanthian wrote:

А в базовом варианте используется CS12 в связке с SLTSL, то есть ...

В базовом варианте не было ОЗУ в маппере, поэтому там все Ок с /CS12.

p.s. /CS12 стал анахронизмом еще при жизни MSX, когда карики стали чуть сложней чем одно ПЗУ. ПЗУ выбирается /RD и /SLTSL (плюс логика).

By Lhanthian

Resident (42)

Аватар пользователя Lhanthian

12-01-2020, 18:28

Ориентировался на моддинг отсюда. По описанию всё апробировано и должно работать.

By АIеks

Paladin (946)

Аватар пользователя АIеks

12-01-2020, 19:39

Ну, фиг его знает Question Есть железобетонный факт - /CS12 активируется только при чтении (/RD). Т.е. доступ на запись к ОЗУ не получить.

Как вариант просить владельцев апдейта сделать реверс этой доработки. И уточнить какой версией биоса они пользуются.

Для себя этот вопрос я закрыл. Тем более биос начиная с v1.3 требует доработки маппера до 64кб (как я понял). На что и ориентировался. Эта же разновидность биоса используется с кариком OPL3 и Toshiba HX-MU900.

p.s. Кстати с помощью Alexey-я, я пытался продвинуть тему с изготовлением биоса под OPL2, но все заглохло. Видимо у автора или желания, или времени нет. Правда есть и положительный момент. Теперь с OPL3 (или даже с NMS1205) мне можно не делать маппер, он у меня уже есть Smile

By Lhanthian

Resident (42)

Аватар пользователя Lhanthian

13-01-2020, 05:12

Ну и что же делать? По-моему, достаточно завести в схему MREQ вместо CS12. Тогда вроде всё логично будет.

By АIеks

Paladin (946)

Аватар пользователя АIеks

13-01-2020, 11:10

Не совсем. Нужен еще сигнал /RFSH. Обратите внимание, как формирует на схеме сигнал /SELMEM, который разрешает доступ процессора ко всей памяти. И он же разрешает прохождения сигналов /SLTSL*.

Видимо при публикации материалов о доработке вмешался человеческий фактор (банальная ошибка). И вместо /SLTSL в схему попал /CS12.

p.s. В принципе достаточно по упрощенной схеме и /MERQ, но тогда память будет в холостую включаться в моменты регенерации ОЗУ от процессора.

By Lhanthian

Resident (42)

Аватар пользователя Lhanthian

13-01-2020, 11:33

В схеме апгрейда берётся сигнал с ноги 20, по схеме NMS1205 это /CS12. Возможно, на схеме NMS перепутаны 20 и 22, то есть /CS12 и /SLTSL. На плате они идут рядом (можно легко ошибиться, отслеживая их по киартинке дорожек из сервис-мануала и фото платы), так что я вполне допускаю, что разведены они наоборот, а на схеме в мануале соответственно ещё одна ошибка. Если так, то всё получается логично и работа апгрейда понятен. Тогда получается мне в схеме надо просто заменить /CS12 на /SLTSL.

Страница 4/10
1 | 2 | 3 | | 5 | 6 | 7 | 8 | 9