Starting Development on the Z80

Now that the dev environment and all the goodness of pipelines, testing, etc. are setup we can start getting into our development process of looking at the Z80 code and the required functions for the MSX

Basic Thoughts

At the heart of the MSX system is the Yamaha V9938 and a 21.47727 MHz cristal oscillator. From there it dries the CPU clock at 1/6 the clockrate, 3.579 MHz. The 9938 is a video processor chip genereally backwards compaitble with the TMS-9918 and TMS-9928, but was built specifically for the MSX standard. In addition to those two core chips, there's RAM and ROM provided, along with specific VideoRAM, a keyboard with at least 70 keys, an AY-3-8910 sound generator, an RP5C01 compatible real-time clock, and at least one cartridge slot or expansion bus, two general purpose 9 pin ports, one connector for a tape recorder and one printer interface

There are other optional features like memory mappers, kanji display ROMs, floppy drive interfaces, YM2413 synthesizer chips, MSX-AUDIO chips, a UART chip, and a Serial communication chip/interface

The MSX itself is not a single computer, but rather it's a specification for machines. Many different companies manufactured MSX machines, similar to how many companies manufactured IBM-PC compatibles (though MSX was designed to be like this, unlike IBM's PC line). The MSX platform was also designed around off-the-shelf components (at the time) so that no one manufacturer could rush ahead or strangle the market. Eventually those off-the-shelf components would get consolidated into single packages to reduce costs and complexities in the machines themselves, but even still many of those chips would still be found in competing products

For the initial stages of this emulator, there are two main concerns that are floating around

  1. Emulating just enough of the V9938 to get the main text display working
  2. Reading the video output of the V9938 and outputting it to an emulated 'screen'
  3. Emulating just enough of the Z80 to do some of it's BASIC processing
  4. Gluing it all together so we can boot the system effectively

Next Steps

After a lot of time spent researching and planning a plotting and hitting wall after wall, it became clear what the next step should be, and that's to really just get the rest of our environment up and running so we can start to even look at different things and get to a state where we have the finished skeleton

There are a few things in the checklist to tackle: