Jump to content
IGNORED

TI-99/4A with a Pipistrello FPGA board


speccery

Recommended Posts

I normally run RXB as it will run TI BASIC programs with no problems.

Also RXB runs about 3 times faster then normal TI BASIC.

 

 

This is a very cool project and I had always hoped a TSM99105 upgrade board would have been completed by OPA (Gary Bowser) so nice to see this project.

  • Like 2
Link to comment
Share on other sites

Did the games you tried run faster than usual?

 

 

I did not try many games as I don't have support for sprites yet. I think it will depend on how the game was created: if the game waits for screen refresh (VDP interrupt) the games will run at normal speed. TI Invaders as an example case did run at the normal rate, except at the end when all the ships have been destroyed and the remaining invaders bounce on the screen - that part did run much faster.

  • Like 1
Link to comment
Share on other sites

Amazing job Erik! Your progress speed makes the impression you work on it day and night.
:)

 

Did you use an US console or an Europe console for your benchmark?
Did I get it correct, that the TMS99105 Cpu is the only real device left? All other "original" parts got replaced by FPGA and FPGA-Development-Board parts?

 

Regarding the other(!) project:

I find it spectacular that you got the communication of your device with a real TI-99 console via the expansion port working. In Kopenhagen we have wondered which modifications were done to the console internally in order for it to work?

 

Again congratulations on this milestone!

 

Klaus

  • Like 1
Link to comment
Share on other sites

Having nothing to do with your project, i can't help imagine this as a final product with it own BIOS setup so to speak. Someplace where you can go to a settings config screen and check/uncheck settings like "VDP Interrupts enabled/disabled" or F18A enabled/disabled etc...

 

 

That's a good point, something like a BIOS setup would be nice. Your comment made me further think about a low level software layer which made me think about virtual machines. The TMS99105 supports a privileged mode, pretty primitive by today's standards but still it is there. Since it is so much faster than the TI-99/4A CPU, it would be probably quite easy to develop a hypervisor (low level software virtual machine manager, using SAMS for paged memory), which would allow it to run multiple TI-99/4A virtual machines simultaneously. As an example, it would be easy to modify the current design so that it has 32K of video memory and duplicated state registers to support two VDP instances. That would give you two TI-99/4A clones, running time sliced on a single CPU. Then it would be another question why that would cool or useful :), but I think it would be cool

  • Like 3
Link to comment
Share on other sites

Amazing job Erik! Your progress speed makes the impression you work on it day and night.

:)

 

Did you use an US console or an Europe console for your benchmark?

Did I get it correct, that the TMS99105 Cpu is the only real device left? All other "original" parts got replaced by FPGA and FPGA-Development-Board parts?

 

Regarding the other(!) project:

I find it spectacular that you got the communication of your device with a real TI-99 console via the expansion port working. In Kopenhagen we have wondered which modifications were done to the console internally in order for it to work?

 

Again congratulations on this milestone!

 

Klaus

 

Klaus, thanks for the comments! I have to confess that as much fun as it might be, I'm not working on this day and night. I do have a demanding day job and a family, so life is not all TI :) . Well some nights may have been a bit like that. It actually helps to have breaks and no time to really spend on the project, as then I can think about the problems I have encountered to come up with solution attempts that do not take a lot of time to try out.

 

This leads me to share a philosophical thought on why I find these projects interesting: quite literally the project is on my desk - there are no third party dependencies and the scope is quite narrow, allowing one person to do quite a bit. So the universe here is simple, limited and controllable, unlike the real world... As probably many of us I strive for the sense of accomplishment, and projects like this one provide many of them. Obviously the support on this forum has been fantastic and inspiring, so a big thank you goes to everybody here :) .

 

The TI console I used is an European model - I live in Finland so I am not that far from you. In this benchmark I doubt an US model would have made much difference.

 

You are right, the only "original" part (nicely put) is the CPU. I actually want to do that in the FPGA too at some point, but for the scope of this retrochallenge project I wanted to use at least some silicon from the TI-99/4A era and also keep the amount of work at a level which might be doable in a month. I felt that an all FPGA project is not that retro ;) . This is not yet a complete TI-99/4A, I don't have sound and sprites yet. The current feature set occupies about 15% of the FPGA's capacity (and I haven't been thinking about optimisation at all), so there is plenty of empty canvas to fill still. I assume the remaining features will not need a lot of logic though. I believe there is space for at least two TMS9900 style CPU cores still.

 

Regarding the "other" project question: the console is 100% original. No changes. It is the only TI I have, so I did not want to modify it. The expansion connector and cartridge port share many pins. The cartridge port memory and GROM accesses are visible on the expansion port. Thus pretty much everything you can do with the cartridge port is doable via the expansion bus too. As you might imagine what I am doing is against TI's design guidelines - devices on the expansion bus are not supposed to respond to the address range reserved for the cartridge port. But I don't care about that... I just need to remember to not plug anything into the cartridge slot while the memory expansion is plugged in.

 

Erik

  • Like 2
Link to comment
Share on other sites

It is time to play Parsec! I added more support for sprites and added support for VDP graphics mode 2, as it turned out Parsec runs in it.
Video comparing Parsec on original TI-99/4A and my system

 

This also answers the question from Sinphaltimus - do games runs faster? Yes they do, it seems. Very much so. That scrolling just flies by.

 

At some point this week I removed the write protection of the bottom 8K of RAM (emulating system ROM). Now the system still works, so clearly I had some hardware bugs earlier. I have improved the handling of the external SRAM accesses multiple times, it is not perfect yet but seems to be nice and stable now.

 

This thing now lacks still some important functionality:

  • Sound (hopefully easy - I was even thinking of throwing in a 6502 core with a bit of memory to handle sound emulation)
  • SAMS memory paging (I actually want to enable it pretty much through the address space, including bottom 8K, probably it will need a custom CRU bit to enable that part to stay compatible)
  • Mass memory support for loading and saving (this is the big one and probably not going to get done during Retrochallenge i.e. October)
  • Like 1
Link to comment
Share on other sites

I would say that this thread clearly belongs in the development subforum. :|

 

 

 

 

Yes you are right. When I started the thread I was a total rookie here and did not realise there was a separate development subforum. Sorry about that. Is it possible to move it over there? Is this something I could do?

Link to comment
Share on other sites

I dont know if this is right question but is there any chance to try this emulation on mist FPGA? I know that you need to emulate tms9900 in FPGa to emulate compter in FPGA. Did you try to emulate procesor on your FPGA? I think MIST FPGA is more powerfull to emulate TI99/4A.

Have you try to start UCSD Pascal from PEB? Miner 49er? I hope it works.

Is ther chance to buy this FPGA bord in Europe?

If I was wrong please correct me.

Edited by Manic1975
Link to comment
Share on other sites

I dont know if this is right question but is there any chance to try this emulation on mist FPGA? I know that you need to emulate tms9900 in FPGa to emulate compter in FPGA. Did you try to emulate procesor on your FPGA? I think MIST FPGA is more powerfull to emulate TI99/4A.

Have you try to start UCSD Pascal from PEB? Miner 49er? I hope it works.

Is ther chance to buy this FPGA bord in Europe?

If I was wrong please correct me.

 

 

This a good question. At the moment, the short answer is no, you cannot run currently this design on the MIST. I am doing this project right now with the idea of combining old and new, so for the purposes of this iteration the system will not be an FPGA only design. My goal is not to build an exact copy of the TI-99/4A, but rather something that can run the software of the TI but much faster. To be honest my real motive is to have fun developing something with these vintage machines - and combining them with modern day FPGAs is one way to have fun :)

 

Having said that, I am personally interested in developing an FPGA version of the TI-99/4A and I know there are other people interested in the same. So it seems likely that one of us will make an FPGA version of the console, or perhaps it could end up being a team effort of some sort. Whether or not the result will run on the MIST is another question, there is no reason why it theoretically could not be done, I suppose it is up to personal interests and whether or not the source code is made publicly available.

 

It is beside the point, but my understanding is that the Xilinx Spartan 6 series FPGAs I am using are more powerful than Alteras Cyclone 3 series used by the MIST. That does not really matter as both have enough capacity to build circuits like the TI, running at way higher clock frequencies than the original machines if so desired.

 

The particular FPGA board I am using is a product of Saanlima electronics. They do sell internationally, I live in Europe too. However, it is good to bear in mind that at this stage this project is still at a development stage, and the board I am using is just one of a plethora of development boards available. If there is greater interest into an FPGA based TI-99/4A, one option could be to build a specific board to integrate into the TI peripherals, for example as a replacement of the motherboard of the console.

  • Like 3
Link to comment
Share on other sites

 

 

If there is greater interest into an FPGA based TI-99/4A, one option could be to build a specific board to integrate into the TI peripherals, for example as a replacement of the motherboard of the console.

 

 

^^^So much this!^^^ A replacement mainboard housed in an original case with the proper connections and more modern capabilities (USB, IDE ETC) built in. ooooooooooooo

  • Like 1
Link to comment
Share on other sites

Thank you for your answer!

I'm very happy to read any news about your project. It would be nice to have expansion for real TI99/4a and to be able to have memory expansion and disk drive and to be able to load modules from files on SD card.

It is nice to see that someone is trying to get TMS9900 into FPGA. It would be nice to see TI99/4a on MIST list of emulated systems.

 

Please continue good work!

  • Like 3
Link to comment
Share on other sites

fantastic. TMS99105 Cpu in action. I am amazed about your skills Erik!

 

Btw: The 99/2 TI Basic is running without Grom Chips, without a GPL Interpreter. I got a TI-99/2 new and currently working on a Rom Dump. Porting the TI Basic over to the TI-99/4a would be a fantastic speed gain, even for our TMS9900s. :)

  • Like 2
Link to comment
Share on other sites

I have always wondered how the 9995 used in the geneve achieved compatibility around the memory and decrementor built into the CPU. Does the 99105 provide any more features to aid woth that, or is it not the problem I imagine it to be?

 

-M@

 

 

I don't really know if the TMS9995 had any compatibility issues with 99/4A software. The decrementer is memory mapped, but only occupies a few memory locations near the top of memory. That area would normally be RAM expansion. The internal RAM appears at >F000 - that should not cause any problems with TI-99/4A has RAM in that region too.

 

The TMS99105 does not have peripherals, but it has other features that might cause compatibility problems. The status register is fully used up with no unused bits, it has more instructions and the "macrostore" feature. I haven't tried many pieces of software yet, but it seems TI Basic, TI Extended Basic, RXB, TI Invaders and Parsec all work. I have not fully tested anything yet though.

  • Like 1
Link to comment
Share on other sites

fantastic. TMS99105 Cpu in action. I am amazed about your skills Erik!

 

Btw: The 99/2 TI Basic is running without Grom Chips, without a GPL Interpreter. I got a TI-99/2 new and currently working on a Rom Dump. Porting the TI Basic over to the TI-99/4a would be a fantastic speed gain, even for our TMS9900s. :)

 

Thanks!

Wow the TI-99/2 is very cool. I had to Google it. So that one was based on the TMS9995. If you do get those ROM dumps going please let me know, I would love to try that out. Based on what I read the device did not have a VDP but used memory mapped video. Further it seems it only had one video mode, a 32x24 monochrome text mode. It should be very easy to do that in the FPGA.

 

This reminds me about another thing I want to add: since the VDP in my system is just directly in the FPGA, there is nothing preventing me from adding a direct full speed 16-bit data path to the video memory. I have not done SAMS support yet, but I was planning to make the video memory pageable too, so that it could simply appear as 4 memory pages. Another idea I had was that since most software seems to respect the default locations for VDP access (>8800, >8802, >8C00, >8C02), there is plenty of unused address spece here that could be used. For example there would be 768 byte areas at >8900..8BFF and at >8D00..8FFF. It could be handy to have direct 16-bit wide access to the first 768 bytes of the VDP memory through one of those windows.

  • Like 1
Link to comment
Share on other sites

fantastic. TMS99105 Cpu in action. I am amazed about your skills Erik!

 

Btw: The 99/2 TI Basic is running without Grom Chips, without a GPL Interpreter. I got a TI-99/2 new and currently working on a Rom Dump. Porting the TI Basic over to the TI-99/4a would be a fantastic speed gain, even for our TMS9900s. :)

 

Oh and it would be very cool to see some picture of the 99/2 :)

Link to comment
Share on other sites

But a development hardware platform would be needed. What I am using (the Pipistrello + buffer board + wires + connector) is great but a tad expensive and a design based on this FPGA would be hard to manufacture. At the prototyping level having so many jumper wires from the side connector to the FPGA board makes it a little hard to construct and move the system around.

 

I have been thinking about creating another iteration of my SD processor board, replacing the CPLD with an FPGA, adding level shifters, upgrading the micro controller, adding a RAM chip. It would become quite a different board from my previous board. Anyway that would effectively become a nanoPEB on steroids. Probably for the first iteration of such a board I would shy away from SDRAM and just go with regular SRAM - the board would be complex enough without having to deal with SDRAM signals.

 

Hi, I want to notice that I already developing on such a hardware platform.

 

Last year I bought a less expensive development board to learn and try out some VHDL.

Round about 20 years ago, I had plans for developing a debugger that runs on a second machine, so running software in realtime whith the option to set break points and investigating all memory areas, etc. should be possible. To realize and restart this old project, last year I begun developing an adapter circuit board for the Wave Share's Core3S500E module (an FPGA core board that features an XC3S500E device from the Xilinx Spartan-3 Family) that can be used within the TI-99/4A console (just by inserting this adapter in a socket at the place where else the CPU resides).

First I had plans for a replacement CPU, co-processing and/or debugger (all implementation are very similar, so the FPGA is in parallel with the CPU), but actually I decided to make it more flexibel like a Swiss Army Knife. The new design will handle three use cases:

  • replacing the CPU, only using the FPGA alone
  • using the CPU in parallel with the FPGA (i.e. for hardware debugging)
  • using the FPGA for replacing the rest of the console
  • ...and of cause using the CPU without the FPGA in an original environment

The last point came with Eriks work on fpga99 and I am able to use the TI-99/4A to configure the debugger. So actually I redesign my schematics and next I'll redraw the PCB.

I think that Erik can use this hardware platform for his needs, if he want. So theoretically he can use it stand alone, just putting the CPU and the FPGA on the board.

 

Summary of the features of the adapter board:

  • Dual socket for holding the original CPU and the FPGA module
  • Level shifting for 5V TTL and 12V CMOS with tristate logic
  • Extra pin header sockets for following devices (they already came with my development environment):
    • the 128x64 LCD module
    • the 4x4 key pad module
    • the nonvolatile flash memory module
  • two 2MBx16 SRAM owned by FPGA (onboard)

 

The attachment contains an older, early 3D view of my board...

post-39395-0-56475400-1477241731_thumb.png

Edited by HackMac
  • Like 2
Link to comment
Share on other sites

Yes, all three voltages are routed to it. My concept based on that the module adapter will take the place of the CPU within the console. The original CPU has to removed first, replaced by a socket, so the PCB can be placed onto it. This is my original idea. But when using the board as a stand alone solution (this is a special case), the three voltages has to apply through a separated power supply. Some old AT power supply still got -5 Volts. Or you can take one out of an old console. I think this will not be the problem...

  • Like 1
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...