Jump to content
IGNORED

TI-99/2 on a FPGA available


pnr

Recommended Posts

Announcing a TI-99/2 on a FPGA.

 

It uses an open source FPGA board, the Radiona ULX3S:

ulx3s-top-view.png?w=800

The board has a GPDI connector that can be used to send video to an HDMI display and this is used by the TI-99/2 implementation. The USB2 connector is used to hook up a PS/2 keyboard. The TI-99/2 uses only a fraction of the board's capacity. It could easily hold a TI-99/4A, or a Geneve or TI-99/8. In fact, it can run a Minimig Amiga or a simple Linux. Unfortunately, the board is currently sold out, but a new production run is planned:

https://www.crowdsupply.com/radiona/ulx3s

 

The TI-99/2 code is written in Verilog and can be synthesised using the open source Yosys/NextPNR/Trellis tool chain. The full source code is here:

https://gitlab.com/pnru/ti99/tree/master/ti99_2

 

  • Output is to the GDPI port and sends an HDMI compatible video stream in VGA resolution (the 256x192 pixel output area is doubled both horizontally and vertically, so each TI-99/2 pixel is 4 VGA pixels).
  • Input is through a PS/2 keyboard (or a PS/2 capable USB keyboard) hooked up to the USB2 port.
  • Cassette I/O and the HEXBUS interface are not implemented.
  • The implementation is of the 32KB ROM version of TI-99/2. The system has been set up with 32KB RAM.

 

All code is plain Verilog and should be easy to port to other FPGA boards. A standard (black&white) VGA signal is generated internally, so it should not be too difficult to run it on a board with a VGA connector.

 

Many thanks to @mizapf and @speccery for their kind help in getting this done.

 

Enjoy!

 

 

Edited by pnr
  • Like 14
Link to comment
Share on other sites

Yes, the ECP5 is much bigger. My board has the small 12F version of the series on it, and that is already much bigger than the ICE40.

 

Hopefully this material will help you in getting the new Geneve done ?

Edited by pnr
Link to comment
Share on other sites

pnr, did you create the TI99/2 code?

If so, would you consider doing this for the Collectorvision phoenix?   Well, the TI99/4A?  

I was an early adopter and have had this little gem for a while now.  It would be awesome to have Colecovision's cousin, the TI99/4A on it too.  LOL

 

 

 

Link to comment
Share on other sites

1 hour ago, pnr said:

Yes, the ECP5 is much bigger. My board has the small 12F version of the series on it, and that is already much bigger than the ICE40.

 

Hopefully this material will help you in getting the new Geneve done ?

Well, one of my design principles is to use authentic chips. The new stuff will be in FOGA, like the DRAM controller  and all the 8 bit bus, wait state generator, one 9901 core (in addition to one or two real ones)


 

I’d be excited about a Hexbus core!

 

 

  • Thanks 1
Link to comment
Share on other sites

1 hour ago, moulinaie said:

Hi,

 

What about the DSK emulation? How does it work.

And the Joysticks?

And the Speech?

En eventually the F18A..??

 

??

 

Guillaume.

Hi Guillaume,

 

Excellent questions!

 

The 99/2 does not have disk directly -- it has a HEXBUS interface. The current Verilog does not contain the HEXBUS circuit, but that would not be all that hard to add. It is just a few CRU bits and latches. I have not looked at the details of this, but I think MAME has it working so mizapf has probably figured out these details.

 

The harder bit would be creating a HEXBUS drive, as the drive would need its own processor. One way to do it would be to use the ESP32 card on the Radiona board. The ESP32 also has access to the SD card and already has FAT file system code. Adding some HEXBUS code to that would be doable, I think.

 

Are you interested in that project?

 

I'm not aware of joysticks for the 99/2. Did they exist? Same for speech support: did that exist for the 99/2?

 

 

 

Link to comment
Share on other sites

Just a "minor" flaw in the Hexbus emulation for the 99/2 in MAME: Files with more than one sector cannot be loaded. After I'll have finished my works on the refactoring of the Geneve emulation, I'll try to fix that. The issue is most likely hidden in the emulation of the custom chip used in the 99/2.

 

Edit: Note that the Hexbus system on the 99/8 emulation works perfectly, as far as I can see.

Edited by mizapf
Link to comment
Share on other sites

55 minutes ago, FarmerPotato said:

Well, one of my design principles is to use authentic chips. The new stuff will be in FOGA, like the DRAM controller  and all the 8 bit bus, wait state generator, one 9901 core (in addition to one or two real ones)


 

I’d be excited about a Hexbus core!

 

 

 

I understand where you are coming from. Doing FPGA code is more like programming than it is like soldering a PCB. However, it is an excellent way to prototype a system and making sure it all works as expected before committing to a PCB. That is also why I did the 99/2: I needed a simple system to put the CPU code through its paces. Now that I know that it works I can move on to prototyping my next 99xx Unix system (as a follow-on to the mini-Cortex).

 

As you are aware, I've done a 9902 in both VHDL and Verilog that you could use as a building block. I think speccery may have a 9901 available.

 

I believe (but maybe I'm mistaken) that adding HEXBUS to a working computer is a minimal amount of hardware / HDL code; maybe 100-200 lines of code -- not much of a "core". Most of the work is in the driver software on both ends.

Link to comment
Share on other sites

1 hour ago, 1980gamer said:

pnr, did you create the TI99/2 code?

If so, would you consider doing this for the Collectorvision phoenix?   Well, the TI99/4A?  

I was an early adopter and have had this little gem for a while now.  It would be awesome to have Colecovision's cousin, the TI99/4A on it too.  LOL

 

Yup, I wrote that code. The HDMI interface is a derivative of the example at fpga4fun.com, and the keyboard code is a derivative of Grant Searle's work. The rest is all new.

 

I'm not into gaming (also not BITD) and I'm not even sure what a Collectorvision Phoenix is. As to the TI99/4A, speccery has had that running on an FPGA for quite a while. I believe there is also a port to the Mister system of that code. Does that help with your question?

 

Link to comment
Share on other sites

Hi pnr,

That is pretty impressive.

 

The Collectorvision Phoenix is a FPGA colecovision with the super game module built in.

The colecovision used similar if not identical video chips maybe audio too? to the TI99/4A

However the processor was a Z80.

 

I am an old school gamer.  For the TI, I mostly play(ed) 3 games.  Moon patrol, Parsec and Star Runner.  Imagic made some good games and some of the Atarisoft stuff was good too.

But this would be a way to introduce TI software to other retro gamers.  The TI community has produced some great stuff over the years that should be seen by a larger audience.

 

Plus it is another way to preserve the TI99/4A :)   I would loved to had the 99/8 but that never came to pass.  Thus my next computer was a C=64.  I enjoyed it, but always go back to the TI!

 

 

Link to comment
Share on other sites

14 hours ago, pnr said:

Hi Guillaume,

 

Excellent questions!

 

The 99/2 does not have disk directly -- it has a HEXBUS interface.

 

 

Argh SORRY !

 

I didn't read the /2 in TI-99/2... I though you were talking about the /4A...

Still, this project is interesting !

 

Guillaume.

Link to comment
Share on other sites

On 10/28/2019 at 7:30 PM, pnr said:

I'm not aware of joysticks for the 99/2. Did they exist? Same for speech support: did that exist for the 99/2?

 

Hi, the 99/2 only has a memory expansion bus which can be used at the same time as cartridge port. However we have no single example cartridges nor a prototyped memory expansion. 99/2 comes without Speech, Sound and without a Joystick Port. Such devices could be introduced via the Hex-Bus, but were not even specced by TI back then. Even without seeing your project running this is a really great news :) ! Thanks a lot for taking the effort!

And your project is already the 2nd usecase for the 99/2 Rom Dump.

 

The 99/2 comes with a Cassette Interface.

And the Hex-Bus Device list is not to be under-estimated:

) Hex-Bus Slave Mode (some other TI-99 controls the 99/2 via the Hex-Bus)

) Hex-Bus Printer 80

) Hex-Bus Printer/Plotter

) Hex-Bus RS-232 Interface

) Hex-Bus Modem

) Hex-Bus Disk Drive Controller/Drive

) Hex-Bus Wafertape Drive

) Hex-Bus Video Interface

) Hex-Bus Quick Disk Drive (Mechatronics)

 

Link to comment
Share on other sites

On 10/28/2019 at 7:35 PM, mizapf said:

Just a "minor" flaw in the Hexbus emulation for the 99/2 in MAME: Files with more than one sector cannot be loaded. After I'll have finished my works on the refactoring of the Geneve emulation, I'll try to fix that. The issue is most likely hidden in the emulation of the custom chip used in the 99/2.

 

Edit: Note that the Hexbus system on the 99/8 emulation works perfectly, as far as I can see.

When you get around to looking at that, let me know. I may try to implement the HEXBUS part of the I/O chip in the 99/2 in Verilog at that time.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...