V9938/V9958 to TMS9918/29 PCB adaptor

Page 1/6
| 2 | 3 | 4 | 5 | 6

By lezanderson

Resident (36)

lezanderson's picture

02-06-2012, 18:06

Hi.

I'm looking for V9938/V9958 schematics in eagle to make my own V9938 to TMS9929 PCB. So a V9938 or V9958 can be plugged into a 40 pin DIL/DIP socket that was used by the TMS9929.

Could anybody possibly answer the following queries I have :

Will/Can the V9938/V9958 schematic PCB work..i.e can it be done ??
Has someone already done it.. if so where can I download/buy PCB ??

Several old Machines used the TMS9918/29 these included the TI99/4A / Memotech MTX series etc So it would not only be useful to MSX users/owners but other vintage/retro guys too..

Best Regards
Lez Anderson

email lezanderson@gmail.com

Login or register to post comments

By PingPong

Prophet (3793)

PingPong's picture

02-06-2012, 20:59

lezanderson wrote:

Hi.

I'm looking for V9938/V9958 schematics in eagle to make my own V9938 to TMS9929 PCB. So a V9938 or V9958 can be plugged into a 40 pin DIL/DIP socket that was used by the TMS9929.

Could anybody possibly answer the following queries I have :

Will/Can the V9938/V9958 schematic PCB work..i.e can it be done ??
Has someone already done it.. if so where can I download/buy PCB ??

Several old Machines used the TMS9918/29 these included the TI99/4A / Memotech MTX series etc So it would not only be useful to MSX users/owners but other vintage/retro guys too..

Best Regards
Lez Anderson

email

Do you know the v99x8 have a 64 pin package? the tms have a 40 pin... there are a number of different signals...

By RetroTechie

Paragon (1563)

RetroTechie's picture

03-06-2012, 04:55

Welcome, Lez! Smile2

It has been done I believe (Brazil or so, thereabout?), but V9938/V9958 are wildly different chips than TMS9929. Different # of pins, pinout that looks nothing alike, different size VRAM, different analog outputs, etc. Basically you'd use that TMS9929 socket as mechanical support, and to pass some signals, not much else. You might (almost) as well put that V9938 or V9958 in a cartridge.

lezanderson wrote:

Several old Machines used the TMS9918/29 these included the TI99/4A / Memotech MTX series etc So it would not only be useful to MSX users/owners but other vintage/retro guys too..

Yes but the point would be to run software that uses a V9938 or V9958, that is: MSX2 or MSX2+ software. MSX2's also have this thing called a memory mapper, and extra ROM, and many MSX2's have a disk drive built in. Starting with an MSX1 that's a lot of stuff to add/rebuild before you can run a decent selection of MSX2 software. Simply starting with an MSX2 is much easier and not that expensive.

For most of those other systems, there has never been a commercially available upgrade to V9938 (let alone V9958), so no software for those systems that uses it. And therefore little point in hooking it up.

Regardless of why, if you thought MSX1 VDP -> V9938 was an "old chip out, new chip in" kind of thing: forget that. So... back to the reason why you wanted to do that in the 1st place... Smile

By PingPong

Prophet (3793)

PingPong's picture

03-06-2012, 14:10

there is also the multiplexed bus question.
On TMS the data bus is multiplexed (for writing) with the address bus. For data input bus there are separate 8 lines.
The v9938 has a truly bidirectional data bus and the address bus is not multiplexed.

By lezanderson

Resident (36)

lezanderson's picture

03-06-2012, 22:56

The main reason to upgrade to the V9938 is the 80 Column mode, this would allow CP/M programs to be run. If I could get a TMS9918/29 with an 80 column mode I'd use that...! but I don't think a version on the TMS9918 series was made with an 80 column mode.!!

I thought someone might of made an adapter to use either a V9938 or V9958. Since I already have some of these 64 pin chips I thought that might be the route to go down!

The other alternative would be a FPGA/CPLD design put into a 40 pin DIP with on-board RAM. But I don't think this has been done. There's quite a few implementations of the TMS9918/V9938 in VHDL. So theoretically this could be possible.

Any other suggestions would be appreciated...

By hit9918

Prophet (2911)

hit9918's picture

04-06-2012, 02:40

Just a bit programmer care, and plenty games run!

9938 16kb and no MSX2 ROMS, means set up screen 4 without BIOS.
Quite some games could run on that config:

plenty MSX2 screen 4 games
MSX1 games with MSX2 enhancements
MSX1 scroll using mask register, getting MSX2 sprites

There even is a 1985 SVI-738 with this config.

By matthew180

Resident (48)

matthew180's picture

04-06-2012, 05:51

lezanderson wrote:

The other alternative would be a FPGA/CPLD design put into a 40 pin DIP with on-board RAM. But I don't think this has been done.

Yup, it has been done. I did it. :-) It is called the F18A and you can pre-order right now if you want to. I try not to spam the forums with my stuff, but I have a rather long thread on the AtariAge forum in the TI-99/4A section. I'm very close to shipping boards, but I still have some testing to do. I also have some technical details on my webpage, but I have not updated in a while (I really need to do that!)

My board is a pin-compatible (meaning "drop in") replacement for the 9918A/9928/9929 VDP. I have tested in quite a few systems so far including: Toshiba HX-10, Toshiba HX-21, Victor HC-7, TI-99/4A, ColecoVision, ADAM, Tommy Tutor, and the Spectravideo 328.

Aside from reproducing all the original functionality of the 9918A, I have included quite a few enhancements including (this is not a complete list):

* A 9900-based GPU, i.e. a full-blown CPU inside the F18A, which basically gives you a 100MHz 9900 as a co-processor with direct access to the VRAM, VDP registers, and a private 2K of address space.
* Horz and vert scroll registers with page support (similar to the NES).
* All 32 sprites can be displayed on the same scan line.
* Removed the VDP "speed limit", so you can not over run reading or writing to the F18A.
* 80-column mode (of course ;-) )
* 64 programmable 12-bit color registers, which means 4096 color palette.
* 30-row mode.
* A bit-addressable bitmap layer with up to 4 colors per pixel (2-bit color). This is not a video *mode*, the bitmap layer is available in all modes.
* Enhanced attributes for tiles and sprites like flip x,y and sprite size per sprite.
* Sprite linking, which allows you to move multiple sprites by updating just one sprite's coordinates.
* 1-bit, 2-bit, and 3-bit color modes for tiles and sprites, which means 2, 4, or 8 colors for tiles and/or sprites.
* Tile priority over sprites, on a per-tile basis.
* A "fixed" tile map to allow individual tiles to not be affected by scrolling.
* Two 32-bit 100MHz counters.
* Two 32-bit 100MHz LFSR random number generators.
* Horizontal line interrupt.
* Read access to all registers.

That's about all I can remember off the top of my head. Let me see if I can attach some photos in this forum (never tried before). As for 80-column mode with your CP/M software, it might not work. I tried to get some to work during my testing and it did not go so well. The software does not see the 9938, and if you force it to skip the VDP test, the software I was trying seemed to try to set the video mode with the "bulk register" update supported by the 9938 (which can not be reproduced in a 9918A system, even with an FPGA).

Hmm, looks like I can only link to photos in this forum, and I don't have any sitting on a generic webpage. Best thing to do would be to check the AtariAge thread or my website.

By RetroTechie

Paragon (1563)

RetroTechie's picture

04-06-2012, 06:46

Main issue I have with the F18A is its price... It's a very nice project & I'm sure there is a market for it, but at $98 there's several alternatives I'd have a look at first. Papilio One (with largest FPGA that fits the board), or Altera's Nano-DE0 come to mind - but there's others. And when you have $100 to spend, you might consider spending some more to get a full-featured FPGA board like Altera DE1...

lezanderson wrote:

The main reason to upgrade to the V9938 is the 80 Column mode, this would allow CP/M programs to be run. If I could get a TMS9918/29 with an 80 column mode I'd use that...! but I don't think a version on the TMS9918 series was made with an 80 column mode.!!

Then your closest example (?) would be the Spectravideo SVI-738 X'Press - MSX1 with V9938, 16K VRAM and 360K floppy drive, a rare combo. Btw: a number of CP/M programs run on any MSX with a diskdrive since MSX-DOS was designed to be (partly) CP/M compatible. On MSX1 just not in 80-columns mode.

There also exists an 80-column cartridge for use on MSX1 machines - not sure if that's any MSX1 or just Spectravideo models.

Quote:

There's quite a few implementations of the TMS9918/V9938 in VHDL.

TMS9918 family: a couple (I think). If not a few different flavors of the same source base. Used in a variety of projects.
V9938: Just the one for the 1chipMSX (in the mean while extended to V9958 support). if you know any other V9938 FPGA implementations, please provide some pointers!

By lezanderson

Resident (36)

lezanderson's picture

04-06-2012, 15:28

The F18A gives a VGA 60Hz monitor output. This is obviously a good idea and keeps things up to date. Also Does the F18A have a 'Superimpose ' Input ??....However I'm ideally wanting something closer to the original chips specification, ideally 50Hz PAL RGB or composite output, and a Superimpose facility. As I'm wanting to use the superimpose input to inject a second video signal.Also the original V9938 could switch PAL/NTSC 50/60Hz I believe ?? I'm not knocking the F18A unit, as it got a very high spec.. if anything too high.. I'm just wanting something closer to the original chips..!

By matthew180

Resident (48)

matthew180's picture

04-06-2012, 16:22

RetroTechie wrote:

Main issue I have with the F18A is its price... It's a very nice project & I'm sure there is a market for it, but at $98 there's several alternatives I'd have a look at first. Papilio One (with largest FPGA that fits the board), or Altera's Nano-DE0 come to mind - but there's others. And when you have $100 to spend, you might consider spending some more to get a full-featured FPGA board like Altera DE1...

Your comment makes me feel like I need to justify the price. Believe me, I looked for months for an alternative to designing and building a board. When I started, I didn't even want to write *any* HDL (I didn't even know an HDL). In the end I only did what was necessary. The way you wrote your comment, it seems you are suggesting that the Papilio or DE1 are alternatives to the F18A, for the purpose of an FPGA-based 9918A replacement. While the DE1 is nice (it will probably be the next devboard I buy), it will not work out of the box. I also looked at the Papilio, but it does not have enough general purpose I/O available to interface the host system (you need 35+ I/O pins to do what the F18A does). Both boards also suffer from the 3.3V to 5V I/O problem, so no matter what you do, unless you want to risk killing your FPGA eventually, you will need an external board to do the proper interfacing. Also, neither of those boards is going to let you plug in to the 9918A socket and close up the system.

Of course you can do it yourself, and I highly recommend it! I had a good time, learned a lot of stuff about HDL, circuit design, chip layout and internals, etc. It took me two years of pretty continuous work with some breaks here and there. Maybe most people would be better or faster than me, so eight months or a year maybe? What is a year or two of 100% hobby time worth? But the moment you cross the line from doing it for yourself vs. producing a finished product that someone can simply buy and plug in, you realize "crap, what does it cost to make 250 circuit boards?" or "who is going to *build* 100 boards, and if you are not willing to give up a month of your life, how much will it cost"? Hobby projects do not produce 100000, 10000, or even 1000 units. They are counted in the hundreds and cannot be compared to electronics that are being mass produced in the thousands. I don't get a 1000 unit discount on the FPGA like SparkFun or Terasic, so I have to pay retail for the parts, and sell them for the same.

As for spending $100 on something else, well, there are a ton of things you *could* do with $100. My NoWind cost me $100, the MegaFlashRom thing costs $75USD, an MSX2 on ebay will set you back a few hundred... Why spend any money on old crappy hardware anyway? Classic computers are junk compared to a modern PC. That is a rhetorical question, of course the answer is because we like to mess with our old systems, and that's all the justification we need.

So I'm wondering, what do you think an acceptable price would be then?

RetroTechie wrote:
Quote:

There's quite a few implementations of the TMS9918/V9938 in VHDL.

TMS9918 family: a couple (I think). If not a few different flavors of the same source base. Used in a variety of projects.
V9938: Just the one for the 1chipMSX (in the mean while extended to V9958 support). if you know any other V9938 FPGA implementations, please provide some pointers!

When I first started this project, my goal was to use the 9918A "core" from the CV project on FPGAarcade. The problem I quickly ran into was that most cores are designed to reproduce the original chip or circuit, "at the original frequency". The 9918A has a 10MHz-ish clock, and the HDL was only designed to run at that rate (and really only designed to work in a SoC), which means you can't really fix anything (more sprites on a line for example) because you have the same limitations as the original device. There is a huge difference between 10MHz and 100MHz design when it comes to what you can do in a circuit and how you lay things out. Propagation delay in a 10MHz system is 100ns, but in a 100MHz system you only have 10ns, so you have to do things differently. Internally the F18A runs at 100MHz so I could implement fixes (32 sprites on a line, no interface "speed limit", etc.) that I thought would be nice to have.

What is the big interest in a 9938 HDL core?

By matthew180

Resident (48)

matthew180's picture

04-06-2012, 16:46

lezanderson wrote:

The F18A gives a VGA 60Hz monitor output. This is obviously a good idea and keeps things up to date. Also Does the F18A have a 'Superimpose ' Input ??....However I'm ideally wanting something closer to the original chips specification, ideally 50Hz PAL RGB or composite output, and a Superimpose facility. As I'm wanting to use the superimpose input to inject a second video signal.Also the original V9938 could switch PAL/NTSC 50/60Hz I believe ?? I'm not knocking the F18A unit, as it got a very high spec.. if anything too high.. I'm just wanting something closer to the original chips..!

Nope, the F18A won't help you there. All those outputs and formats are a *lot* of analog electronics, and FPGA's just don't do that without external circuitry. I didn't even attempt merging an input video signal, it is just not going to happen without a lot of video format conversion, and for that you need more than a 250K 100MHz FPGA. NTSC and PAL are nightmare formats to work with, and the 15KHz RGB is getting hard to find monitors to work with it.

I don't know if the 9938 could switch between 50Hz and 60Hz on the fly? I never looked at that part of the datasheet close enough to know. But changing the video refresh frequency will also mess with your interrupt. The F18A was designed to drive a standard 640x480 VGA monitor, which all run at 60Hz, and driving a VGA monitor is pretty easy.

You should just make a custom board. You can get a 9938 into a 9918A system, however you will need to add the extra RAM on your carrier board, and pick up the extra "mode pin" from the host system in such a way that the I/O ports map correctly. It won't be a "plug in" replacement, you will have to hack the system board too. You will probably also need to modify the BIOS and software to recognize the 9938 in your MSX1. For example, even with the F18A which supports a 9938-compatible 80-column mode, MSX BASIC won't let me set 80-column mode (via the SCREEN or WIDTH commands) because the 9918A could not do 80-columns and the system knows that. You can force it with direct register access, but things get funky when you do that because the system still thinks it is in 40-columns. I had someone help me patch an MSX2 disk monitor program to skip the 9938 check, it ran, but it still did not display correctly.

There is more going on than simply physical wiring of a 9938 into a 9918A pin out. It has been tried endlessly before on many systems including on the 99/4A side. AFAIK, no one has ever been successful, which is another reason I didn't even try that method when I started.

Why not just get an MSX2?

Page 1/6
| 2 | 3 | 4 | 5 | 6