Close
0%
0%

MSX COMPATIBLE BOARDS FOR RC2014

Create a series of boards designed for the RC2014 bus to achieve
MSX/MSX2 compatiblity

Similar projects worth following
Starting from
$84.95
dinotron has 50 orders / 2 reviews
Ships from Australia
Is it possible to achieve full MSX/MSX2 compatibility on a RC2014 platform, using standard discrete components and no tricks?

Can a set of boards be designed and built (graphics, sound, RAM/ROM, IO, etc) which can be installed into an existing RC2014 build?

And once all boards are installed - can full MSX2 compatibility be achieved?

This project is my attempt to find out.

RC2014 is a retro Z80 based homebrew platform designed and sold by Spencer Owen. It allows for easy expansion - and there are lots of kits availble to make your retro computer shine. (https://rc2014.co.uk/)

MSX is a series of computers sold in the 80s, standarised onto a common platform - providing a consistent hardware and software implementation. (https://en.wikipedia.org/wiki/MSX)

UPDATE: I have begun selling kits on my tindie store (https://www.tindie.com/stores/dinotron/)

References and inspiration

  • RC2014 - Where this all started for me.
  • OMEGA MSX kit. Demonstrates that its possible to build a compatible MSX2 system, using off the shelf components with a few ebay purchases.  The published designs are a great implementation reference.
  • Artemisa MSX Computer System.  A MSX kit using discrete component. 
  • MSX Technical Data book.
  • https://www.msx.org/

Main Goals:

  • Each board to operate independantly.
  • Each board to operate on a standard RC2014 platform - with appropriate RomWBW HBIOS support.
  • Board sizes will need to be kept small enough to ensure PCB manufacturing costs are manageable.

Stretch Goals:

  • Figure out how to add Floppy and HDD interfaces - can we just use the existing kits available?

Targeted Specifications

  • Graphics: v9958 with full 192K of RAM
  • ROM/RAM Board(s) - Support for MSX Rom images and lots of RAM
  • YM2149 Based Sound chip and Joystick connectors
  • RP5C01 Based RTC
  • Full size keyboard
  • Support for 2 Cartridge Slot expansions (a new backplane perhaps)
  • Optional - cassette interface - because retro!

Portable Network Graphics (PNG) - 195.87 kB - 11/15/2020 at 22:29

Preview
Download

Portable Network Graphics (PNG) - 123.48 kB - 11/15/2020 at 22:28

Preview
Download

Schematic_RC2014-MSX-RTC_v1.0.pdf

Schematic for RTC board

Adobe Portable Document Format - 89.58 kB - 10/26/2020 at 08:10

Preview
Download

  • Possible issue with V9958

    Dean Netherton06/11/2021 at 06:13 0 comments

    Just received a report of an issue with the Video board - in particular the address selection logic.

    I have not personally experienced the fault myself, despite building a few version of the module -- but that doesn't mean much. 

    I have created a github issue with specific details to track the issue, copied below:

    ----------------

    https://github.com/vipoo/yellow-msx-series-for-rc2014/issues/1

    At least one person has reported an issue with V9958 Video board not working. They identified an issue with the address selection logic - in particular the diode based OR gates.

    I chose to use diode base gates to reduce the chip count, but they can have issues with the fall time - which in this specific case, resulted in a board that would not work. (I have built a few iterations of the board, and never observed the issue myself, but really doesn't mean much!)

    There were 2 fixes that each individually would resolve the fault:

    1. Change the 74HCT138 to 74ACT138 , or
    2. replace the 10K pull down resistor to a lower value - about 3.3K.

    I have uploaded a pic to highlight the resistor that needed to be changed. PCB image

    If be great to hear if anyone else has experienced this issue.

  • New boards under development

    Dean Netherton05/22/2021 at 09:04 0 comments

    The latest iterations of Video, Game(sound), Memory and Keyboard modules have matured quite well - and with them now selling on Tindie for a while, I have now been able to spend a bit of time on developing some more MSX boards.

    ## RTC

    The rtc module was the first board I had started with - but I paused it to focus on the others, as it was not required to be able to boot up in MSX BIOS/DOS.  I have since gone back to this module.

    After a few attempts getting the timing right, I now seem to have something that keep fairly accurate time.  I also added to the board, support for the MSX F4 port.  The F4 port enables MSX BIOS to know if its doing a cold boot or a warm boot.  It's basically just one bit that is reset on power, but not on reset.

    I have a new PCB arriving soon that includes the F4 - ready for assembling and testing.

    ## FM-MUSIC

    This one is the most experimental for me.  The MSX-MUSIC system is based on the YM2413 sound chip.  There seems to be a few variations of implementation - again msx.org is a great source of information -> https://www.msx.org/wiki/MSX-MUSIC

    And this project https://github.com/RBSC/F4-FMPAC is giving me a lot of clues.

    I am learning a lot about op-amps - will see if I can figure this all out.

    ## Cartridge slots

    I also designing a new backplane that provides MSX cartridge slots - although i am a little unsure how i am going to test this - i need to actually source some cartridges that don't cost an arm and a leg!

  • Minor revision to Memory & PPI Boards

    Dean Netherton05/19/2021 at 08:58 0 comments

    A new iteration of the boards has moved the header mapping pins.  They have been rotated and moved to the rear edge of the boards to allow for a right angle pin header to be installed.

    Bu doing this, it's much easier to mount the board in adjacent slots.  With the previous configuration, after installing the header and jumper wires, the board would not fit in adjacent slots in the backplane.

    The Memory Board is now at version 1.4, with the keyboard at 1.5.

    I have also done something similar for the GAME board, but at this stage those mapping pins are not used.

  • Video of MSX on RC2014 in action

    Dean Netherton03/29/2021 at 09:11 0 comments

    Made a video quickly showcasing Compact Flash storage and running a couple of demos to show off what my RC2014 is learning to do.

  • General Update

    Dean Netherton03/17/2021 at 07:56 0 comments

    It's been a while since I posted an update to my project.  Usual boring things like work and other adult responsibilities.

    I haven't had a chance to take any new pictures or videos.  So let me describe what's happened so far.

    1.  Selling on Tindie

    As you may be aware, I started selling kits online at Tindie.  This has been a fun experience - the V9958 Video board has proven to be quite popular.  I have struggled to keep the stock online.  

    To quote Lando Lando Calrissian:

    "We're a small outpost and not very self-sufficient. I've had supply problems of every kind. I had labor difficulties..... What's so funny?" 

    New stock of both the Video and Game boards are online, and I didn't make any deals with the Empire!

    Check out my Tindie Store, if you want to join me in the journey.

    2. Keyboard/PPI

    I've built a new iteration of the keyboard.  This design fixes flaws in the previous one - no bodging required.  Updated the design to utilise a diode for each switch, preventing key ghosting.  Without the diodes, some multi-key combinations can result in ambiguous key detection.   See the Key Ghosting section at http://map.grauw.nl/articles/keymatrix.php

    3.  M1 Wait states

    MSX typically runs at 3.5Mhz, with 1 wait state during M1 memory read cycles.  My standard RC2014 does not have such a wait state, so I added some logic into the PPI board to generate this, helping with MSX compliance/compatibility.  It can be enabled/disabled with a jumper.

    4. Real Time Clock

    Updated the RTC board - just general improved layout using the larger board size.  For the most part seems to work well and keeps time reasonably accurately.  It has a trimming capacitor to adjust the clock rate a bit, but I think I need to revisit the values of some of the clock capacitors as the adjustment seems to be too limited.

    5. ROM/RAM Memory Board

    Updated the memory board to give me 1M of onboard RAM.  And improved/fixed some of the issues with the ROM address mapping.  

    The Memory board allows running of original MSX BIOS ROMs or CBIOS, with MSX-DOS (Nextor). 

    Spent many a night working on the MSX-DOS/Nextor drivers.

    6. Compact Flash storage system

    I have spent a lot of hours working on getting the drivers for MSX-DOS/Nextor.  I wanted a diskless bootable system, so I created an embedded disk image within the ROM banks - allowing MSX-DOS to boot up without a floppy or hard-disk.

    With the built in RAM disk feature, I am able to send apps/games over the serial and run from the RAM disk.  

    But it really needs persistent storage, so I was very pleased, that just last week, I was successful in mounting the CompactFlash card for RC2014 under MSX-DOS/Nextor.  The code for the driver was relatively simple to write, although I did stumble across the usual confusing and strange bugs.  Very pleased to be able to save/load games and apps to persistent storage.

    7. Fully Operational Battlestar - aka MSX on RC2014.

    For the most part, my RC2014 system is now a MSX computer.  I can play games, write my own code and continue my re-exploration of 80s computing.

    8. Compatibility/Issues:

    So far, I have only tested a few games and apps.  And of course, I do not have a cartridge slot to test with.  (The original ROM Cartridges for MSX are friggin expensive!)

    I am using a program called SOFAROM which allows me to run ROM images from disk storage.  It loads a ROM image from disk, and dynamically patches its.  This is required as the original code is expecting to run from a Cartridge slot with a specific memory bank switching model.  You can't just simply load the code.  As such there are the inevitable compatibility issues.

    Most of the MSX1 games seem to run just fine and some MSX2 game seem to work OK.  But some MSX2 games either don't load...

    Read more »

  • Sound & Controller Board

    Dean Netherton01/23/2021 at 23:43 0 comments

    Just completed the build for the game board.  This board is based on the YM2149 audio chip - with integrated game controller ports.

    Its ports are configured as per the MSX specification.  

    The AY-3-8910 chip could also have been used, but to keep thing simple, i just locked in the YM2149 chip.  They apparently have subtle sound quality differences with the major differencing being the Ym2149 has an onboard clock divider.

    The board also supports mixing in other external audio signals -- in anticipation for full MSX capability.

    The demo below is with my port of Octo/chip8 games running on a stock rc2014 build.

    (I have not tested it under the MSX configuration yet)

    The Chip8/Octo port project is at: https://github.com/vipoo/rc2014-chip8 (It's not fully implementing all the octo instructions yet)

    More details of Chip8/Octo can be found at: https://github.com/JohnEarnest/Octo

    Game controller board project page: https://github.com/vipoo/rc2014-game (includes schematic)

    And shoutout for the controller from: http://retrogameboyz.com

  • V9958 Latest

    Dean Netherton01/19/2021 at 04:17 0 comments

    Last couple of weeks, I have revisited the video board.

    Version 1.4 of the video board arrived a couple of weeks ago - this board has a minor change in layout and silkscreen.  

    The main change was to add a mounting point at the back of the board for a spacer to help prevent flexing and making physical contact with any adjacent boards.

    All the boards I am designing for this project have this same rear mounting hole.

    I have refocused on making sure this board works in a standard RC2014 configuration with RomWBW - and have been hacking some software - learning how to fully utilise the hardware acceleration features of the V9958.

    I have decided that I would offer this board as a full kit on Tindie.  I have 4 kits built up and online at Tindie.  If there is demand - more will be made available - I seem to have collected quite a few spares!  The kits include everything needed (PCB, V9958, RAM, etc).

    Tindie Store Listing

    https://www.tindie.com/products/22479/

    The latest version of the schematic and software can be found on the github project: https://github.com/vipoo/rc2014-v9958

    The glorious PCB:

    Fully Assembled for PAL output

    Proudly installed in its RC2014 home

    What 8 bit graphic system is truly finished, without showing the ubiquitous mandelbrot set? (takes a while to produced - not timed it yet!)

    Video Showing running through its paces

    Video showing a chip8/octo game running.

  • SIO and Sound Board

    Dean Netherton12/29/2020 at 03:19 0 comments

    RC2014 SIO/2

    Managed to get the RC2014 SIO/2 Board to work with my MSX rig.

    Its took a bit of finessing to get the higher baud rate (57200) working with MSX BIOS interrupt handler - the overheads make it easy to lose data. 

    The application talks directly to the SIO chip.   A future goal will be to integrate the serial driver within the BIOS/Nextor systems.

    Sound/Controller Board

    After a few bodge fixes - i was able to get the sound board working (YM2149 chip).  I considered using the RC2014 Sound board, but I don't think the revision I have supports the MSX ports.  A later revision seems to.  

    The board I designed, also support controller ports -- if only I owned a MSX controller!

    (The missing chips are required for the controller ports - will install when i get an MSX controller to test with)

    In the next few days, I will try and get myself organised, and upload designs.

    In the meantime you can watch me playing PACMAN really badly.

  • BOOT ROM/MSX-DOS Startup

    Dean Netherton12/24/2020 at 02:00 0 comments

    So after what seems like a million and one flashes of the ROM chip, I now have a booting image.

    The BIOS and disk system (CBIOS and Nextor MSX-DOS) are now working nicely together to give a command prompt.

    I am able to run CP/M and MSX-DOS apps - although there will probably be some compatibility limits with CBIOS.

    To enable a bootable system, without an actual floppy or hard disk, I had to create an embedded virtual disk drive within the ROM image.  This ROM drive includes the boot executables (nextor.sys and command.com) as well as a few simple demo apps that I found online.

    A quick summary of the things I needed to do to get the software to work:

    • A fix to CBIOS for ROM initialisation, needed when booting Nextor.
    • A custom CBIOS image that includes extra wait states for the V9958 I/O and other minor tweaks.
    • For Nextor, as mentioned, added a virtual disk image driver.
    • And some changes to work around some design issues I have with the on-board ROM Mapper.

    Next steps:

    1. Fix the issue I have with the on-board ROM Mapper, to I can remove the workaround in CBIOS/Nextor.
    2. Add some key debouncing and support for CAPS LOCK in CBIOS.
    3. See if I can get the RC2014 SIO/2 board to work within the platform. Might have some issues with Baud rate and general performance.
    4. Explore the possibility to write drivers for the RC2014 Floppy and HDD interface boards. 
    5. Continue with the other MSX boards i have coming - sound/joystick, cassette.
    6. Will also need to explore designing/building a new board, to introduce the required wait states on M1 - as per the MSX spec. (This might be why I needed to add wait states in the CBIOS code for V9958 access)

    ROM Mapper Issue:

    The issue I have with the ROM Mapper, is due to the way I have used of a single ROM chip across multiple Slots.  

    When accessing the ROM in slot 3-3, the ROM Mapper allow access to all 16k banks, the first 8 of which are the CBIOS images, and are not relevant in this slot.  

    So to access the slot's first bank, you need to write $08 to the bank selector port.  If this is not done, then the BIOS' ROM search code will fail to see the MSX ROM marker in the slot and will not initialise and load the ROM code.

    Now it's easy enough to add an IO write in the ROM search code in CBIOS, but for other BIOS ROM images, this will not happen.  So to enable better compatibility I need to make sure the on-board ROM Mapper, for slot 3-3, always defaults to the correct initial bank.

  • Software for the MSX on RC2014

    Dean Netherton12/12/2020 at 00:37 0 comments

    I received and assembled the Memory boards.  Now i just need some software to put on it!

    Over the last couple of weeks, I have been working on the software platform.  

    Many modern MSX solutions (kits/emulators) use ROM images extracted from one of the original computers.  These ROM images are easy to find and download.

    I could follow this approach for my build, but I prefer a more open-source and legitimate approach. 

    Having access to the source code, will allow me to debug and verify the hardware, and be a good starting point to add additional features, such as support for RC2014's serial and IDE boards.

    There are 2 key projects that I have been exploring:

    1. CBIOS- An open source compatible MSX BIOS.  It does not include a Basic Interpreter.  It's distributed with many of the MSX emulators with a primary focus to enable the loading of various ROM images (typically games).  My fork of this project is at: https://github.com/vipoo/cbios/tree/dean/spike

    2. Nextor- This is a fascinating project.  It is based on the original MSX-DOS 2 source code - and now officially opened source and apparently ok to distribute.  MSX-DOS is a CP/M compatible OS,  that is kind of half way between CPM and MS-DOS.  An interesting story within the history of the early home computer OS development.  My fork of this project is at: https://github.com/vipoo/Nextor/tree/dean/spike

    These two projects can be used as a foundation for the boot ROM.  They do require a bit of work to meet my needs.  The key enhancements needed were:

    1. Create a makefile build system for building nextor in linux.

    2. Tweaks/fixes to get nextor and cbios working together.

    3. Add an embedded virtual disk image within the nextor rom image - so that the key utilities are available on boot - much like how RomWBW cp/m boots up with a ROM and RAM disk. (Nextor already has support for RAM Disk.)

    4. Other fixes/enhancements required to boot up on the rc2014 hardware. 

    I have been able to get this all working within an emulator - so the next step is to flash a ROM and power up!

View all 21 project logs

Enjoy this project?

Share

Discussions

Dean Netherton wrote 05/20/2021 at 09:16 point

For those who are waiting for new stock of the kits on tindie, I plan to have new stock listed this weekend.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates