
Сообщение от
ZXMAK
а как должна работать подмена ROM устройствами? Если несколько устройств захотят одновременно подменить ROM как быть?

Сообщение от
s_kosorev
На оригинальных компьютерах в область 0x0000-0x3fff при помощи специального сигнала на шине можно заблокировать сигнал выбора встроенного на плату ПЗУ, внешние устройства в момент чтения из памяти из этой области при активном сигнале, могу выставлять свои данные на шину, простейший случай - подставляют ПЗУ
Вот именно это поведение и проэмулировать. Если два устройства хотят выставить этот ROMCS, то срабатывает то, которое выше (ниже) в списке устройств.
Может даже так
Код:
var mem = bus_manager.FindDevice<IMemoryDevice>();
mem.SetROMCS(false, CustomRead0000); // отключили ПЗУ, вместо него все запросы чтения уходят делегату CustomRead0000
....
mem.SetROMCS(true); // включили ПЗУ обратно
Ну или тупо массив передавать в IMemoryDevice, если падение скорости будет значительным. Если у эмулируемого устройства больше 16к ПЗУ - пусть само пейджингом рулит.
Поглядел, кстати, шину - на +3 и +2A этого ROMCS нет. Вот и не работает бетадиск. Но там сходные сигналы есть на других пинах. Новодельный BDI вроде же на плисине, возможно, что проблема решается прошивкой.


Сообщение от
Velesoft
Original BETADISK and all Czech BETADISC clones is designed for ZX48 or 128/+2(no +2A) only. BETADISK detect only bit D4 of port #7FFD = enable trdos if 48rom is set (D4=1). ZX48 use only 48 rom = work correct after switching to 48mode. On ZX128 and +2(grey model) work also without problem.
+2A/+2B and +3 machines use different ZX bus pinout and use two singals ROMOE1 and ROMOE2. This bus also absent next signals as 9V etc.... If you connect original BETADISC to +2A, then ZX will destroyed - romcs signal from betadisc will on +2A ignored and trdos rom will collide with +2A rom of RAM memory of with ULA (if you set allram mode)
Отсюда
---------- Post added at 02:32 ---------- Previous post was at 02:15 ----------

Сообщение от
ZXMAK
Как вообще работает эта подмена ромов в DivIDE? Ром всегда подменяется или только по какомуто условию?
Управляемо, там есть соответствующий порт.
Дока http://baze.au.com/divide/files/pgm_model.txt