Home » RBC Forums » General Discussion » MSX2 Compatible Computer Project
MSX2 Compatible Computer Project [message #4137] |
Tue, 23 January 2018 13:12  |
Sergey
Messages: 236 Registered: October 2015 Location: Portland, OR
|
Senior Member |
|
|
Hi,
I'd like to build an MSX2 compatible computer. I'd like to share some of my ideas, and to get opinion of the forum members.
My goals/wishes for this project:
- Follow MSX/MSX2 standards as close as possible
- 128 KiB (or more) RAM
- Yamaha V9938 VDP, 128 KiB Video RAM, composite and component outputs, with optional RGB output (header)
- The main purpose would be running MSX/MSX2 games. With CP/M, FUZIX, possibly MSX-DOS support being the secondary goal
- Two cartridge slots for game cartridges and hardware add-ons (e.g. MSX music, disk controller)
- Use CBIOS
- Implement a real keyboard. Likely using Cherry MX keys, and standard keycaps (a microcontroller based PS/2 adapter would be a backup option)
Design modularity and form factor options (which one would you prefer?):
- A single board with the entire computer implemented on it. Should be about 200 mm x 160 mm in size. Pros: most compact way, Cons: no modularity at all
- ECB based system. We already have an MSX (not MSX2) video board, that might somewhat help with developing this project, although a new V9938 based board would have to be implemented. Pros: individual boards can be used for other (non MSX) ECB systems. Cons: more expensive: DIN 41612 connectors, additional bus buffers, etc. Also not as compact
- Non-ECB backplane based system. Potentially built using 100 mm x 100 mm boards. Pros: cheaper than ECB, no need to adhere to ECB standard, can use some pins for MSX-specific signals (slot select, chip selects). Cons: well, not an ECB
 - Hybrid approach: Main board with CPU, 8255 (slot select, keyboard), I/O decode, sound/joystick, etc. Memory daughter board with SRAM and Flash and memory mapping/paging logic. And a video daughter board. Pros: modular enough, easier debug, a possibility of an upgrade path. For example it include TMS9918, V9938, and perhaps V9958 VDP; or MSX (no paging memory) and MSX2 (paging in slot 3).
Storage devices:
- Floppy disk controller: include on board, or implement as a separate cartridge?
- Storage: Flash disk (e.g. built using 39SF040), CF, or SD?
- Perhaps it is possible to implement some kind of flexible cartridge emulation?
Thanks,
Sergey
[Updated on: Tue, 23 January 2018 13:15] Report message to a moderator
|
|
|
|
|
Re: MSX2 Compatible Computer Project [message #4140 is a reply to message #4139] |
Tue, 23 January 2018 16:43   |
danwerner
Messages: 50 Registered: October 2015
|
Member |
|
|
In order to get really good compatibility with MSX game roms, it would be good to avoid keyboard controllers and stick with an 8255 driven switch matrix keyboard. Converting the matrix to a PS/2 was one of the biggest issues with the N8 CBIOS and it is why many (most?) of the games need joystick and do not work with the keyboard.
Dan
[Updated on: Tue, 23 January 2018 16:44] Report message to a moderator
|
|
|
|
Re: MSX2 Compatible Computer Project [message #4142 is a reply to message #4141] |
Tue, 23 January 2018 17:33   |
Sergey
Messages: 236 Registered: October 2015 Location: Portland, OR
|
Senior Member |
|
|
Thank you for your feedback guys!
danwerner wrote on Tue, 23 January 2018 14:55You might take a look a the S-100 archives -- there was some work to put together a MSX system on S-100 cards.
I've looked at them and got inspired 
But they have a few issues:
- Utility board: No MSX2 sub-slots, no memory paging
- VDP board: No composite output (RGB is not really useful nowadays)
- And as you've mentioned building an S-100 system to play MSX2 games is a bit of an overkill
mscane wrote on Tue, 23 January 2018 16:39Hi Sergey,
Maybe an alternative could be to refresh the N8 design with some updates
( https://www.retrobrewcomputers.org/doku.php?id=boards:sbc:n8 :n8
- Replace the existing TMS9918 video with a V9938 chip (that would give 80x25 video I believe)
- Replace the 8255 keyboard interface with an 8242 PS/2 controller (like in the VGA3)
- Change the compact flash interface to a bus connected IDE (in 8 bit mode)
- Use an ATX style power connector
The N8 also included a floppy interface, SD card and sound chip.
Perhaps you could also consider changing the form factor to match one of the PC standards such as a Mini ITX (17 x 17 mm) or Micro ATX (224 x 224 mm).
I don't feel that N8 approach was a MSX compatible enough. Particularly where it comes to the memory/slots/sub-slots.
What is the reason to use 8242 keyboard controller (other than that PS/2 keyboards are widely available)? It seems that it would make the computer less MSX compatible. I suspect some programs, and especially games, would bypass BIOS and talk to the hardware directly.
Mini ITX / Micro ATX - no real benefit. How to fit MSX cartridge slots, or a bunch of I/O connectors an MSX would have? I can use an ATX power supply connector though...
The the floppy interface and 8-bit CF part makes sense
lynchaj wrote on Tue, 23 January 2018 17:16I think its a great idea. I always liked MSX and there are bits and pieces of MSX scattered in the N8, various ECB boards, and 3 S-100 boards (Z80 CPU, VDP, and Utility). However it never really matured into full blown MSX computer. My advice would be to start from a clean slate and target a full blown MSX computer. You could possibly reuse bits and pieces from the various MSX like board projects but it would probably be just as easy to just do a complete reboot of the idea. Best of luck!
That is pretty much my idea.
|
|
|
|
|
|
|
Re: MSX2 Compatible Computer Project [message #4391 is a reply to message #4142] |
Sat, 24 February 2018 23:13   |
traal
Messages: 2 Registered: February 2018
|
Junior Member |
|
|
skiselev wrote on Tue, 23 January 2018 17:33- VDP board: No composite output (RGB is not really useful nowadays)
RGBS alone is not so useful, but RGBHV (VGA) monitors are easy to find, even some that support 15kHz signals: 15khz.wikidot.com
I think component video wasn't popular outside the USA, even SCART doesn't support it AFAIK. (Edit: there's a standard pinout for it (green pin=Y, red pin=Pr, blue pin=Pb) but it isn't common.
My vote is for composite (ugh) + RGBS/RGsB/RGBHV/YPrPb over HD15 like what the OSSC supports. Passive cables would then support composite, component, BNC (for professional Sony monitors), SCART, the VGA monitors listed in the link above, and the OSSC for DVI and HDMI. Not S-Video without a converter box but I think that's o.k. with all the other options.
[Updated on: Sun, 25 February 2018 10:11] Report message to a moderator
|
|
|
Re: MSX2 Compatible Computer Project [message #4392 is a reply to message #4391] |
Sun, 25 February 2018 01:14   |
Sergey
Messages: 236 Registered: October 2015 Location: Portland, OR
|
Senior Member |
|
|
Hi guys,
Thank you for your feedback!
jordi.solis wrote on Thu, 22 February 2018 09:18Hi,
I would like to help to help on this project.
I had an msx when I was child and I remember few things, I learned them MSX-BASIC and Z-80 Assembler, even I cannot consider myself a software developer.
I was recently working by my part with the same goal.
Then I asked some people I fount through internet to share their designs with me (with us), but only one answered to me.
This guy developed some hardware, but I had not yet enough time to deep review it.
Perhaps he based his design on CPLD more than we would like but for sure we can take advantage from his work.
He also mentioned a ps2 keyboard converter.
He answered me with this link:
http://optotech.net.br/msx/ma_20_neos_kit2+/
Here is his main project page:
http://www.optotech.net.br/fzanoto/msx.htm
In addition I was looking for documentation and I think the best book to understand the msx hardware standard is this:
(joined text red book). I am still on the second chapter.
I don't know if any of you have it. I found that it is actually good to understand the circuit or bios code needed.
unfortunately it talks about the first standard (msx1) for the MSX2 standard I have this one, but I don't know if it's so good. (msx2 technical book).
One handicap with the schematics after msx1 is their pcb designs use a chip called msx engine (like yamaha S-1985, SMD and actually hard to found)
Perhaps we can replace them by a CPLD.
As I don't know how easy this could be, I also considered to initiate from the SVI 738 diagram who is almost an MSX2 but doesnt have that special chips (there are many places with upgrading to MSX2 instructions)
About the keyboard designer web is http://caro.su/msx/kbd4msx/y_yis503.htm (I dont know how good it could work)
I have some more documentation like MSX-DOS documentation (a CPM adapted version for MSX computers).
There is a Spanish guy who got the original source code and upgraded to an S.O. improved version called NEXTOR I don't know if open source or similar.
here is his software repository and his blog:
http://www.konamiman.com/msx/msx-e.html
I hope this helps.
J. Solis
Thanks for this information. MSX (not MSX 2) is fairly straight forward to implement using standard logic. You're right that MSX 2 implementation would be a bit more challenging, since most MSX 2 used an MSX engine IC, and that part I'll need to implement using either standard logic, or maybe using SPLDs. I found the MSX 2 databook with reference schematic, it is in Japanese, but I can read the schematic, and somehow translate the text using an online translator.
I'd like to have a native keyboard built using mechanical switches. It will be a header on the motherboard/CPU board connected to the PPI pins used for keyboard interface. And then it will be possible to either connect the mechanical keyboard (with a 4-to-10 decoder and open collector driver ICs on it), or a microcontroller based PS/2 interface.
traal wrote on Sat, 24 February 2018 23:13skiselev wrote on Tue, 23 January 2018 17:33- VDP board: No composite output (RGB is not really useful nowadays)
RGBS alone is not so useful, but RGBHV (VGA) monitors are easy to find, even some that support 15kHz signals: 15khz.wikidot.com
I think component video wasn't popular outside the USA, even SCART doesn't support it AFAIK.
My vote is for composite (ugh) + RGBS/RGsB/RGBHV/YPrPb over HD15 like what the OSSC supports. Passive cables would then support composite, component, BNC (for professional Sony monitors), SCART, the VGA monitors listed in the link above, and the OSSC for DVI and HDMI. Not S-Video without a converter box but I think that's o.k. with all the other options.
That is an interesting perspective. I thought that component video is widespread enough. I have it on all my TVs, and I think I've seen component to SCART converters... but I might be mistaken.
So what interfaces are available on the TVs outside of US nowadays? S-Video, SCART?
I can pin out RGBHV and composite... or S-Video and composite... But I really don't want to have 6 different connectors on the rear side of the board, and I also don't particularly like the idea of having headers + breakout cables 
As an option - I can connect the VDP outputs to a header, and then design one or more daughter boards that would connect to that header and convert VDP output to a usable format.
|
|
|
|
|
|
|
|
|
|
Re: MSX2 Compatible Computer Project [message #4685 is a reply to message #4137] |
Wed, 09 May 2018 04:52   |
lynchaj
Messages: 1080 Registered: June 2016
|
Senior Member |
|
|
skiselev wrote on Tue, 23 January 2018 16:12Hi,
I'd like to build an MSX2 compatible computer. I'd like to share some of my ideas, and to get opinion of the forum members.
My goals/wishes for this project:
- Follow MSX/MSX2 standards as close as possible
- 128 KiB (or more) RAM
- Yamaha V9938 VDP, 128 KiB Video RAM, composite and component outputs, with optional RGB output (header)
- The main purpose would be running MSX/MSX2 games. With CP/M, FUZIX, possibly MSX-DOS support being the secondary goal
- Two cartridge slots for game cartridges and hardware add-ons (e.g. MSX music, disk controller)
- Use CBIOS
- Implement a real keyboard. Likely using Cherry MX keys, and standard keycaps (a microcontroller based PS/2 adapter would be a backup option)
Design modularity and form factor options (which one would you prefer?):
- A single board with the entire computer implemented on it. Should be about 200 mm x 160 mm in size. Pros: most compact way, Cons: no modularity at all
- ECB based system. We already have an MSX (not MSX2) video board, that might somewhat help with developing this project, although a new V9938 based board would have to be implemented. Pros: individual boards can be used for other (non MSX) ECB systems. Cons: more expensive: DIN 41612 connectors, additional bus buffers, etc. Also not as compact
- Non-ECB backplane based system. Potentially built using 100 mm x 100 mm boards. Pros: cheaper than ECB, no need to adhere to ECB standard, can use some pins for MSX-specific signals (slot select, chip selects). Cons: well, not an ECB
 - Hybrid approach: Main board with CPU, 8255 (slot select, keyboard), I/O decode, sound/joystick, etc. Memory daughter board with SRAM and Flash and memory mapping/paging logic. And a video daughter board. Pros: modular enough, easier debug, a possibility of an upgrade path. For example it include TMS9918, V9938, and perhaps V9958 VDP; or MSX (no paging memory) and MSX2 (paging in slot 3).
Storage devices:
- Floppy disk controller: include on board, or implement as a separate cartridge?
- Storage: Flash disk (e.g. built using 39SF040), CF, or SD?
- Perhaps it is possible to implement some kind of flexible cartridge emulation?
Thanks,
Sergey
Hi
Thinking more about this project. Any updates? I agree with the project goals and it should target 100% MSX2 compliance. Past projects always fell short and doomed them.
Regarding modularity, I like the hybrid approach. How to implement? ECB & S-100 is overkill. Making stackable PCBs (PC104) is difficult and parts expensive. Also the boards need to be big enough to provide enough room for components without extreme routing. I suggest a double wide euro board 160mmx200mm with holes in corners to mount. Then use right angle dip dual row headers and modified IDE cables as a bus. Maybe 2 or 3 bus connectors per board.
segregate the design into boards like (CPU + memory + 8255 + IO decode), (video, keyboard & mouse (MCU PS/2), sound), (IDE, SD, floppy drive)
keyboard should be switched matrix just like MSX design with header to separate keyboard PCB. I suggest cpu is Z180 class to reduce part count.
The idea is to separate CPU from IO functions so boards could be upgraded without scrapping whole stack but not be constrained like ECB and/or S-100. In theory a common IO stack could be used for non-MSX compatible CPU boards like 65xx, 68xx, 68030, etc. Something like C-128 switching between 6510 and Z80 processors.
[Updated on: Wed, 09 May 2018 12:04] Report message to a moderator
|
|
|
|
|
|
|
|
|
Re: MSX2 Compatible Computer Project [message #4692 is a reply to message #4690] |
Fri, 11 May 2018 05:36   |
lynchaj
Messages: 1080 Registered: June 2016
|
Senior Member |
|
|
skiselev wrote on Thu, 10 May 2018 14:42Andrew,
I am still interested in the project. But I am currently very busy with work and life (almost summer! so camping/hiking/climbing :)). So probably the actual work will have to wait until later this year (September and on).
I do like some of the ideas above. I am not comfortable with using CPLDs/FPGAs. Using SPLDs might be OK.
I assume that various extensions, like Ethernet, USB and Flash/disk can be implemented as slots?
What are the advantages of using Z180? I don't think that Z80 design is too complicated. There is some I/O and memory decode logic, but other than that Z80 is very simple to interface with. Probably no advantage of higher CPU speed/clock either. Most of MSX/MSX2 software is designed to work with 3.58 MHz frequency anyway.
Thanks,
Sergey
Hi Sergey,
OK. Enjoy your summer
Agree on the CPLD/FPGAs. On the Gryphon project we tried to consolidate some of the glue logic into a CPLD with mixed results. Based on that experience I would stick to 74xx type logic and maybe some common DIP GALs where they really work well. Trying to stuff too much into CPLDs and FPGAs just changes the problems without actually making things better. Also Gryphon (and N8) attempted to consolidate all the IO on one board and it just didn't work too well. I think it needs a better balance between consolidation and modularity.
I think the main advantage of the Z180 CPU is it has higher integration and can lead to lower chip count. Also it is capable of higher clock speed but would need to be clock selectable for compatibility sake. The N8 board used a Z180 and it worked well. I am not stuck on this point but it is an opportunity to simplify the design.
What I'd really like to see is a hybrid modular design which separates common IO into a couple of boards. One board for common storage functions (IDE, SD, Ethernet, USB, floppy, etc.) and another for user interface (video, audio, keyboard & mouse, joysticks, switches, etc.). Keep the processor & memory specific functions on a separate board with a standardized interface to the IO boards. S-100 has enough room but too complicated. ECB has a good interface but the PCBs are too small. A common IO stack could be reused across multiple projects not just Z80 MSX although that is a good starting point.
I think a cartridge slot is good but is mostly useful for EPROM cards and unusual/specialized devices. I would keep the common IO on the two IO boards and reserve the cartridges for games, applications, user customization, etc.
I think we can make something which increases PCB size and has a simpler less expensive expansion bus. For consideration, I think the 40 conductor ribbon cable (IDE) would work well. One 40 pin dual row header replicates the Z80 bus (as is) and another to carry the MSX unique chip selects & other miscellaneous signals. Power & ground may need a separate low impedance connection. Plus no need for a separate backplane PCB.
Glad to see the project is still alive.
[Updated on: Fri, 11 May 2018 05:51] Report message to a moderator
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Current Time: Mon Mar 24 23:17:58 PDT 2025
Total time taken to generate the page: 0.04322 seconds
|