Checking interest for DalSoRi version 2

Page 8/12
1 | 2 | 3 | 4 | 5 | 6 | 7 | | 9 | 10 | 11 | 12

By sd_snatcher

Prophet (2992)

sd_snatcher's picture

15-02-2017, 23:15

Quote:

I am less interested in this unit if the 4MB RAM mode is not available from an I/O slot.

I can't keep myself from finding it peculiar when someone makes a racket to require for the removal of standard features specified in the MSX docs that would be useful for anyone who owns any MSX model, and shows up later to demand compliance with non-standard "I/O slots" of an expander he and maybe a dozen of people have. Talk about imposing your specific ideas for your "pet hardware".

Quote:

MSX standard does not forbid the use of I/O ports. In fact, it specifically allows them to be used under certain conditions.

AFAIK, from the system inception, the only exception that allowed for direct I/O was the VDP, and only under the strict condition that the port addresses should be obtained from the respective variables in the BIOS.

This lone exception was sustained for all generations until the MSX Turbo-R arrival, when we know that the standard was weakened due to the rushed release and diminishing number of makers. The MSX Turbo-R was the last breath of a nice system that was starving for support. Those new exceptions were only the System Timer and the MIDI interface.

For the specific scope of this thread, the MSX-Audio and the MSX-Music chapters of the MSX-Datapack have explicit instructions that reinforce the fact the direct I/O isn't allowed and the BIOS should be used to ensure interoperability.

Please let me know if you have knowledge any other exceptions for direct I/O that I'm not aware, and what are the references for those.

Quote:

MSX is also not a Hardware Abstraction Layer. It is a specification of hardware that is compatible at the hardware level, as well as a set of API for system functions and non-standardised hardware.

Impressive! Here you're even contradicting your self to try to prove your point. The only way to abstract non-standardised software is via a Hardware Abstraction Layer that is the BIOS.

Quoting from the page-42 of the MSX Technical handbook, an official book it seems you have never read:

Quote:

Although I/O addresses are defined above, the software must not access those devices directly using the above ports. All I/O accesses must be done using BIOS calls, in order to make the software independent of hardware differences. MSX manufacturers may change some of the hardware from the standard MSX system and maintain software compatibility by rewriting BIOS. The hardware differences would thus be transparent to the software.

The only exception to the above is the access to the VDP. Locations 6 and 7 of the MSX system ROM contains the Read and Write addresses of the VDP register. Software that must access the VDP quickly may access the VDP directly by using the addresses stored in ROM.

Now, a quote from the page-336 of the same book, in a special chapter entitled "Notes for MSX Software Developers".

Quote:

1 ) Do not write programs to directly handle the hardware. Use routines prepared in BIOS so as to isolate the software from the hardware and make future changes to the hardware without affecting the existing software possible. The BIOS is built to access its functions via a jump table beginning at address 0000. The jump table contains jump vectors functions that handle the hardware of the MSX computer. By using the functions provided by BIOS, application programs can access the MSX hardware without modification, even though the hardware is different.

For example, the current MSX scans the keyboard by using 8255 PPI. In the near future, however, there may be computers having separate keyboards using an infrared communication link. This new computer may not use the 8255 PPI ; it might use some other chip to do serial communications to handle the keyboard. If the software scanning the keyboard uses the 8255 directly, the new computer would not support the software.

As you can see, the rules about "not being a Hardware Abstraction Layer" and "MSX does not forbid access to the I/O ports" only exists in your imagination of what the MSX system is, and not the real MSX specification.

The standard even warns that hardware modifications will break user software (called Application Software in the book) that are not compliant, and such software will not be supported!

OTOH, your imagined version of the MSX standard is very self-serving: people should design software and hardware to run in your own machine, even if it breaks compatibility with other people's projects that comply to the real standard, and even if modifications are necessary to run in nonstandard hardware only you and a few have.

Punish those who follow the rules for the benefit those who don't. Is sounds like a perfect strategy for compatibility, don't you think?

The page-336 continues to reinforce that the VDP is the only allowed exception. So this rule is even mentioned twice in the book.

By mars2000you

Enlighted (5467)

mars2000you's picture

15-02-2017, 23:49

@sd-snatcher, here's the list of I/0 "mappers" supported in blueMSX (some are with ROM, some are without ROM) :

http://www.msxblue.com/manual/iomappers.htm

Most of them are also supported in openMSX.

Additional note: this list includes the MSX-AUDIO sound chip (Y8950) ... of course when the MSX-AUDIO BIOS is not used

Both openMSX and blueMSX can emulate MSX-AUDIO without the need to insert one of the three specific cartridges.
The MSX-AUDIO BIOS is actually required only in these cases:
- three ROM games (Family Stadium - Labyrinth - Xevious Fardraut Saga)
- using of MSX-AUDIO BASIC
- some samples (not all samples require the BIOS)
- eventually cases I ignore that use your version 1.3.

By sd_snatcher

Prophet (2992)

sd_snatcher's picture

16-02-2017, 01:01

But the majority of those "without ROM" devices fall in one of the following categories, don't you agree? Smile

  • Internal devices, and thus their ROM is the main MSX-BIOS
  • Non-MSX system, like the SVI-328
  • Y8950 without a ROM, to simulate an NMS-1205 that had its ROM extracted

The only one I couldn't get why it's in the "without ROM" category was the Generic IDE. Are there any IDE cartridges without a ROM? How do they even work?

By mars2000you

Enlighted (5467)

mars2000you's picture

16-02-2017, 01:16

GIDE is a generic IDE interface for Z80 based computers. It allows to connect a maximum of two IDE devices like hard disk or CD-ROM to such computers. It also contains a real-time-clock (RTC, Seiko-Epson 72421). The interface is accessed via I/O instructions, the base address is 0x40 for SVI-328 and 0x60 for MSX.

See these sites: http://www.gaby.de/gide/

https://www.iee.et.tu-dresden.de/~kc-club/gide/gide.html

Maybe you'll find the answer, it's too technical for me, sorry.

By msd

Paragon (1372)

msd's picture

16-02-2017, 02:06

Some modems also had no rom

By JunSoft

Resident (34)

JunSoft's picture

16-02-2017, 06:48

@sd_snatcher

I need confirmation. I noted some questions in the previous post.

Is the original mirroring features between frame 0 and frame 1, and between frame 2 and frame 3 of MSX-AUDIO cartridge obsolete?

By sd_snatcher

Prophet (2992)

sd_snatcher's picture

16-02-2017, 20:26

@Junsoft

Sorry, I skipped that message.

The mirror on F000h-FFFFh isn't used, and is not necessary. The NMS-1205 and the HX-MU900 upgrades feature this mirror because it would be require more chips to block it and there wouldn't be space on their PCBs.

It's also optional to block this mirror, so I leave it for you to decide. It would help to avoid that some really poorly written software would detect this area a normal RAM, but that's it. I have never seen any software with this bug, so this blocking might just be an over zealous measure.

When the frame-1 selects the SRAM page-0 (and it's also the default), it will mirror the contents of the SRAM at page-0. So there's no break of compatibility here, right?

Please let me know if you see some issue I might not be noticing.

By sd_snatcher

Prophet (2992)

sd_snatcher's picture

16-02-2017, 20:30

mars2000you wrote:

GIDE is a generic IDE interface for Z80 based computers. It allows to connect a maximum of two IDE devices like hard disk or CD-ROM to such computers. It also contains a real-time-clock (RTC, Seiko-Epson 72421). The interface is accessed via I/O instructions, the base address is 0x40 for SVI-328 and 0x60 for MSX.

Ok. So it isn't an MSX hardware, but just some alien hardware that was just quickly hacked to be plugged to the MSX slot. Not different from hacking some ZX-Spectrum or PC-ISA interface into the MSX slot just for the fun of doing it. It's still an interesting hacking project anyway. Smile

Quote:

Some modems also had no rom

Indeed! And can you believe that there even existed some MODEMs that didn't have the protocol chip, or not even an UART? The Sharp HB-3000 and the Gradiente TM-1 were two of those. Both devices were programmed by bitbanging data directly. Somewhat similar to what later became known as "winmodems".

I also remember some few cases of RS-232 cartridges that had no ROM. Maybe the Philips NMS-1210/NMS-1211 are the most famous, because the board was even designed to have a ROM, and has the place for it to be soldered, but some "genius" marketeer must have had this brilliant idea to save some pennies and remove the ROM in the last minute, providing its BIOS only on a floppy disk to be bloaded. oO

By JunSoft

Resident (34)

JunSoft's picture

17-02-2017, 03:25

Here goes semi-final specification of DalSoRi v2

60xxH: flash memory banking register 0 (for page 0, default 0)
61xxH: flash memory banking register 1 (for page 1, default 1)
62xxH: flash memory banking register 2 (for page 2, default 2)
63xxH: flash memory banking register 3 (for page 3, default 3)
[4..0]: segment (up-to 512KB, 16KB-based banking)

65xxH: SRAM banking register 1 (for frame 1, default 0)
66xxH: SRAM banking register 2 (for frame 2, default 1)
[2..0] : segment (total 32KB, 4KB-based banking)
[7] : 1 - disable

67xxH: configuration register (default: dependent on external switch)
[0] - enable FM I/O port map to C0H-C3H (default: status of external switch)
[1] - enable FM I/O port map to C4H-C7H (default: status of external switch)
[2] - reserved (must write 0)
[3] - reserved (must write 0)
[4] - enable flash memory write (default 0)
[5] - enable 2MB sample RAM instead of YRW801M (default: status of external switch)
[6] - reserved (must write 0)
[7] - reserved (must write 0)

Any suggestion? If not, I'll finish hardware design in the next week.

By l_oliveira

Hero (519)

l_oliveira's picture

17-02-2017, 04:03

Suggestion: Make the toggle register for ROM+2MB RAM/4MB RAM on be on the last byte of YMF278B sample memory address space. That way you toggle modes using a write to sample ram address space instead of adding one extra register. Anything related to BIOS could be memory mapped, no problem. A user using it on a I/O ports only slot expander will still be able to toggle 2MB+ROM/4MB mode.

Page 8/12
1 | 2 | 3 | 4 | 5 | 6 | 7 | | 9 | 10 | 11 | 12
My MSX profile