MSX-engines S3527, S1985, DW64MX1

Page 2/3
1 | | 3

By adxx

Rookie (18)

adxx's picture

22-12-2015, 08:30

Halfaxle, спасибо за совет. Посмотрю что за микросхемы. Почему 41464 - потому что на плате есть нераспаянные места именно для них. Начну с простого.

By adxx

Rookie (18)

adxx's picture

09-01-2016, 18:07

128КБ напаял, санрайз не пошел, грусть тоска. хоть бери и ищи магнитофон. Общественность говорит что из-за того самого нестандартного маппера.

By Halfaxle

Resident (52)

Halfaxle's picture

12-01-2016, 15:39

Нет там ничего нестандартногоSmile
Проверьте сколько бит из мэппера вычитывается на cpc300.
Есть шанс, что добавив две микросхемы Вы все равно заполнили только половину памяти. Если так, то да, может не работать из-за этого.

By Halfaxle

Resident (52)

Halfaxle's picture

13-01-2016, 14:18

По следам недавного прошлого.
Чего-то подумалось, что из чтения мэппера, когда их в системе несколько, можно извлечь знание о максимальном размере памяти внутри одного мэппера. То есть, видим, что максимальный размер мэппера, скажем, 512к. Значит, памяти как минимум 512к. Принимаем решение запускаться или нет. Как-то так.
Пожалуй, мэппер все же должен читаться.

By Eugeny_Brychkov

Paragon (1054)

Eugeny_Brychkov's picture

13-01-2016, 14:41

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

By Halfaxle

Resident (52)

Halfaxle's picture

20-01-2016, 16:22

"Нормальный Софт" (далее НС) действительно, должен тестировать. Тут немного о другом соображение.
99.9 вариантов конфигурации - это либо родной внутренний мэппер (скажем, 128к), либо внутренний + 1 внешний (скажем, 128к + 1мег). Понятно, что лучше бы мемори менеджмент у НС умел работать со всеми возможными конфигурациями и использовать по максимуму что есть. Но возникает вопрос в целесообразности поддержки конфигураций, которых почти что не встречается, тк это трудоемко. Скорее всего, НС просто сядет в самый большой мэппер. И все. Я бы сам так делал, если бы писал какую-нибудь крутую "стэндэлон" аппликуху. Соответственно, если регистры у всех мэпперов будут "честно" читаться, то будет представление о самом большой мэппере в системе.

By Eugeny_Brychkov

Paragon (1054)

Eugeny_Brychkov's picture

20-01-2016, 16:41

Halfaxle wrote:

Скорее всего, НС просто сядет в самый большой мэппер.

MSX-BIOS так и делает. Только он не читает мепперы, а проверяет наличие памяти. То есть он НС Smile

Halfaxle wrote:

если регистры у всех мэпперов будут "честно" читаться

А вот тут как раз засада. Если один меппер скажет F0, а другой скажет 80, причем одновременно, что будет? Как показали мои тесты программа может получить всё, что угодно, в битах 6, 5 и 4.

By caro

Champion (480)

caro's picture

21-01-2016, 06:49

Eugeny_Brychkov wrote:

А вот тут как раз засада. Если один меппер скажет F0, а другой скажет 80, причем одновременно, что будет? Как показали мои тесты программа может получить всё, что угодно, в битах 6, 5 и 4.

Правильный мапер (ПМ) должен иметь размер своего порта равным числу активных разрядов, тогда конфликта в незадействованных битах не будет, поскольку за счет подтяжки к +5v эти биты будут читаться равными 1.

By Halfaxle

Resident (52)

Halfaxle's picture

21-01-2016, 11:49

Eugeny_Brychkov wrote:

MSX-BIOS так и делает. Только он не читает мепперы, а проверяет наличие памяти. То есть он НС Smile

Дык!Smile

Quote:
Halfaxle wrote:

если регистры у всех мэпперов будут "честно" читаться

А вот тут как раз засада. Если один меппер скажет F0, а другой скажет 80, причем одновременно, что будет? Как показали мои тесты программа может получить всё, что угодно, в битах 6, 5 и 4.

Не так все плохо!;)

Как правильно отметил комрад caro, в случае "идеального" железа, мэппер транслирует на шину данных только использующиеся биты. Остальные висят в воздухе, т.е. там высокий уровень, тк в "идеальном" железе шина данных на +5 через резисторы подвешена. В случае двух мэпперов разной размерности, будет "висящая" группа, где лог.1, старшая часть большего мэппера, где биты работают штатно и младшая часть большего мэппера, где, действительно, имеем два замкнутых ttl выхода, но работающих при этом синхронно, если предположить, что железо исправно. Разумеется, абсолютной синхронности добиться невозможно, и в момент переключения _теоретически_ могут возникать кратковременные переходные процессы с конфликтом ttl выходов. Я пишу теоретически, тк обычно на выходе стоит что-то z-состоянием и к шине подключается готовый нужный логический уровень. Тем не менее, изготовить кратковременно конфликтующую железку вполне можно. На мой взгляд, конфликты во время переходного процесса относительно безопасны, но, тем не менее, спалить, скажем, 1985 было бы неприятно.

В случае же неисправного железа (пишется одно - читается другое), либо, когда мэппер "слишком" честный и выдает на шину все биты, включая неиспользованные, но согласно своей конфигурации, возникает действительно опасная ситуация.

Выход - подключаем выходные биты внешнего дополнительного мэппера к шине данных через резисторы, скажем, по половине килоома (привет, спектрум). В результате, в случае конфликта, данные будут получены из "главного" внутреннего мэппера. Железо же при этом будет в безопасности, тк выходной ток останется в допустимых пределах.
btw хорошая тема для эссе на gr8bit.ru;)

То есть, необходимо:
1. чтобы шина данных была подтянута к питанию через резисторы
2. чтобы "главный" внутренний мэппер транслировал только использующиеся биты и был подключен к шине данных напрямую
3. при этом выходы дополнительного внешнего мэппера, также транислирующего только использующиеся биты, подключались к шине данных через защитные резисторы.

Насколько я знаю, п. 1 и 2 выполняются на большинстве железок (возможно, даже на всех).
Т.е дело стало только за доп. мэпперами;)
Я схемотехнику доп. мэпперов не смотрел и не могу сказать применялись ли где-нибудь такие резисторы.

By Eugeny_Brychkov

Paragon (1054)

Eugeny_Brychkov's picture

21-01-2016, 12:26

@Caro @Halfaxle Согласен,я не взял в расчет то, что порты меппера подключаются только по необходимым битам шины, а не по всем.

Halfaxle wrote:

когда мэппер "слишком" честный и выдает на шину все биты

Есть исключение, но довольно серьезное: устройства, собранные на FPGA. Например, я использую level shifter, который управляет сразу 8-битовой группой, то есть нельзя два бита подвесить на Hi-Z, а остальные "использовать". Поэтому я и принял решение, что мой меппер не будет читаться.
Но в принципе вы правильно говорите. Однако резисторы не только понижают ток, но и вводят временную компоненту, а также немного изменяют форму спада и подъема напряжения. При скорости 3.58МГц это не критично, при 125МГц - это уже пипец.

Page 2/3
1 | | 3
My MSX profile