I/O port mirroring: please help

صفحة 1/7
| 2 | 3 | 4 | 5 | 6

بواسطة Manuel

Ascended (19677)

صورة Manuel

16-05-2021, 23:18

Some people already noticed that some I/O port ranges are mirrored in several MSX machines, especially those with MSX-ENGINE chips S1985 and S3527. To improve openMSX accuracy, we'd like to get an idea/overview which ports are mirrored on which machines (independent of the used engine, but perhaps it will give us a clue whether it's engine specific or not).

See also discussion here: https://github.com/openMSX/openMSX/issues/1355 and here: https://github.com/openMSX/openMSX/issues/814

lintweaker wrote an initial test version of a tool to check for these I/O port mirrrors. Please try to run it on your MSX and post the result here. See: https://github.com/lintweaker/msxstuff/raw/master/tools/CHKE... for the MSX-DOS (1) binary.

Login أوregister لوضع تعليقاتك

بواسطة Caliostro

Expert (86)

صورة Caliostro

17-05-2021, 00:16

NMS8220
Print ports (90-91h) mirrored : yes
PSG ports (a0-a3h) mirrored : yes
PPI ports (a8-abh) mirrored : yes
VDP ports (98-9bh) mirrored : yes
RTC ports (b4-b5h) mirrored : no

Conclusion:
Engine detected : S3527

------------------------------------
FENNER SPC-800
Print ports (90-91h) mirrored : no
PSG ports (a0-a3h) mirrored : yes
PPI ports (a8-abh) mirrored : yes
VDP ports (98-9bh) mirrored : yes
RTC ports (b4-b5h) mirrored : no

Conclusion:
Unknown or no engine

(i deleted the pictures, it is cleaner)

بواسطة Manuel

Ascended (19677)

صورة Manuel

17-05-2021, 00:14

Thanks for that! As we can see, there's more mirroring going on than just caused by the MSX Engine chips.... not surprisingly, as it is cheaper to make the hardware like that (saves decoding a few address lines).

بواسطة sdsnatcher73

Enlighted (4289)

صورة sdsnatcher73

17-05-2021, 05:16

I am trying to understand what the mirrors mean. What if an external cartridge uses the actual port that a mirrored internal port is also reacting on? Will it create conflicts? Will external ports take precedence? Is that part of the intended design and is that how e.g. Sharksym can do such apparently impossible stuff with his hardware (specifically paraMSX-R and SLT-Turbo)?

بواسطة Grauw

Ascended (10820)

صورة Grauw

17-05-2021, 10:50

It will create bus contention; electrical conflicts where one device drives the bus high and another drives it low, iow a short circuit. The data readout will be unreliable and depend on which device drives the bus harder. Note that this is only an issue for reading (writing is ok).

Some machines block off the I/O request signal to external hardware for I/O that’s implemented internally, e.g. Panasonic MSX2+ machines. This block will be the case for the mirrors as well.

Not sure of the exact details of paraMSX-R or SLT-Turbo, but I don’t think it has to do with mirroring.

بواسطة zeilemaker54

Champion (355)

صورة zeilemaker54

17-05-2021, 11:01

sdsnatcher73 wrote:

I am trying to understand what the mirrors mean. What if an external cartridge uses the actual port that a mirrored internal port is also reacting on? Will it create conflicts? Will external ports take precedence? Is that part of the intended design and is that how e.g. Sharksym can do such apparently impossible stuff with his hardware (specifically paraMSX-R and SLT-Turbo)?

Extension are not allowed to use an I/O port in the system area (080H-0FFH) in general, so this should not be a problem.

بواسطة hit9918

Prophet (2932)

صورة hit9918

17-05-2021, 16:27

Quote:

Print ports (90-91h) mirrored : yes

but WHERE does it mirror? "mirroring : yes" is one bit of information, while the beancounters could ignore multiple address bits. so you better dont use this 1 bit scheme in the emulator.

بواسطة hit9918

Prophet (2932)

صورة hit9918

18-05-2021, 19:19

I misunderstood, the openmsx xml does it very different to a yes/no bit.

بواسطة lintweaker

Champion (474)

صورة lintweaker

21-05-2021, 12:38

I have updated the check tool. Binary and source on my github page mentioned in the first post.

بواسطة Manuel

Ascended (19677)

صورة Manuel

04-04-2023, 08:00

Can someone please run the tool on machines with S1985?

بواسطة Accumulator

Champion (351)

صورة Accumulator

04-04-2023, 08:31

I already running my IO checker, including sending value 0-255 to specific port and reading again.
Lots of them are 'mirrored' or looked mirrored, unless you send a value to the port and read again.
RTC and BACKUP RAM are tricky....

Also some ports are giving different value after first read.. after that stable other value.

Also some service manuals are incorrect, for example Sony HB-F700x and Sony HB-F900x

صفحة 1/7
| 2 | 3 | 4 | 5 | 6