• Please review our updated Terms and Rules here

Powertran Cortex

That's it! It was the "Architecture Software and Interface Techniques" book that I was looking for. Many thanks both!
 
Thanks for the offer, but I hope I won’t need a PCB. I did get a schematic from you on the AA forum, “Mini Cortex TI990/6 Rev. 1.0 2/23/2015”. However, more info / schematics are certainly welcome. I’m eager to study them.
The schematics changed slightly after that, and I'm contemplating some further changes for a second revision of the PCB. Your proposed system sounds very interesting! What do you plan for mass storage?

So it seems the CPU's are working. But I'm still not sure about quality and durability. If there is someone here who would want to part one or two TMS9995NL's, I'd be more confident. The two sources mentioned in this thread aren't available anymore.
Good to hear your two parts are fine and can even be clocked at 16MHz. Not sure what you mean by sources "not being available anymore": I just now typed in "tms9995" into the ebay search box and got 27 listings, including all the suppliers mentioned in this thread.
 
Your proposed system sounds very interesting! What do you plan for mass storage?

On MARC-3 I’ll have a hardware based SPI controller for eight devices. So one of those devices is an SPI to IDE CF adapter, another will be a Real Time Clock with temperature sensor. SPI is pretty common, and with this hardware SPI controller, it’s as fast as I can write bytes to a memory address.

IDE adapter
http://sbc.rictor.org/ide.html

65SPI
http://sbc.rictor.org/65spi.html


I just now typed in "tms9995" into the ebay search box and got 27 listings, including all the suppliers mentioned in this thread.

Never mind, you’re right, I must have typed something odd while searching for that vendor.
 
I'm happy to report that Dave Pitts has ported Unix for the 9995 to the TI990 mini's (990/5, 990/10 & 990/10A), both in simulation and on "real" hardware. He has also greatly improved and cleaned up the build system (i.e. the makefiles). His contributions have been added to the code repo.
 
I'm happy to report that Dave Pitts has ported Unix for the 9995 to the TI990 mini's (990/5, 990/10 & 990/10A), both in simulation and on "real" hardware. He has also greatly improved and cleaned up the build system (i.e. the makefiles). His contributions have been added to the code repo.

Any idea how the TI990 minis compare speedwise with the 9995 with no wait states?
 
Hello everyone, I'm Dexter from the AA forum. I've been reading this thread for a few days now, I'm at post #659 page 66. Some amazing stuff you've done, despite the Cortex is so rare. I'm interested in building a TMS9995 modular homebrew computer.

I ordered two TMS9995NL, two TMS9902NL and a few SN76489AN from UTSource. The TMS9995NL are most likely pulls, they are a bit scuffed / scratched, what I interpret as a good thing. On the other hand, they could be counterfeits, perhaps someone of you can determine?

Hi.

I sent some TMS99xx ICs from China to Stuart , I believe he found a few DUFF ones but on the whole they seemed to work. Stuart should be able to enlighten you more on that.

I sourced them from Funkward-tech and G&C Supermarket...the G&C ones looked brand new (which they probably were not ) the Funkward-Tech ones where clearly Pulls. God knows where they came from originaly.. I can only assume scrap boards ??

I did get free replacements for the DUFF ICs
 
Any idea how the TI990 minis compare speedwise with the 9995 with no wait states?

Only a vague idea I'm afraid.

The TI990/5 is based on the 9900 chip, running at 3MHz. It has on 64KB on board DRAM that should be able to keep up with the CPU without wait states. I guess that makes it run at about half the speed of a 9995 without wait states.

The TI990/10A is based on a 99000 chip, I'm not sure which type. It would seem logical for to be the 99110, but the the LDS and LDS instructions seem to be slightly different and the documentation always refers to the CPU as the TMS99000, so it may be a special (however, Karl Guttag does not recall such a special version). The CPU on Dave's board has no markings left, so it remains a bit of an enigma. In any case, speed will be 99105/110 like. I think it runs at 6MHz with wait states, as the 256KB of on board DRAM (1981 era) would probably go no faster than 300-400ns access time. So, perhaps the 10A is a little faster than a 9995 without wait states.

The TI990/10 is an implementation with discrete TTL chips, and the 990/10A manual says it is about 70% faster than a 990/10 on CPU bound code. Memory is accessed via the TILINE bus, which probably means access times of around 500ns. So I think that the 990/10 will probably be a bit slower than a 9995 without wait states.

Dave's DS50 hard drive is currently not working, so he ran the code of a DSDD 8" floppy. This will make the system a lot slower, swapping processes on and off disk perhaps takes up to a few seconds.
 
Hi.

I sent some TMS99xx ICs from China to Stuart , I believe he found a few DUFF ones but on the whole they seemed to work. Stuart should be able to enlighten you more on that.

I sourced them from Funkward-tech and G&C Supermarket...the G&C ones looked brand new (which they probably were not ) the Funkward-Tech ones where clearly Pulls. God knows where they came from originaly.. I can only assume scrap boards ??

I did get free replacements for the DUFF ICs

Sorry, I just now noticed your replay. Actually Stuart did on post 854, nevertheless, they *seem* to work, but I can tell for sure when I have a running computer.

It can take a while though until I have something build, because of my health. But I will build it for sure.
 
First of all best wishes for the New Year!

I am happy to report that over the holidays I've completed the port of Version 6 Unix to the Powertran Cortex, the mini-Cortex to be exact. It turns out to be about 22KB of code and 18KB of data (mostly disk buffers), for a total of 40KB. It feels a little more responsive than the smaller LSX kernel as it does not have to swap to disk. Also, the tool chain (C compiler, etc.) now runs natively: the system can compile itself from source on the mini-Cortex hardware. I have finally proven to myself that Cortex class hardware was powerful enough to run early Unix. The difference between mini computers and TI home computers was not in the CPU, but in the amount of RAM and in the hard disk.

I also now know that my project from back in the day (a modified TI99/4A with 32KB in-console RAM and a homebrew DSDD floppy) would have needed further modification to run it: one needs 64KB of RAM at least, 128KB preferable. This would have required a board with dynamic RAMs which would have been hard to fit into the console. Also, at the time I had access to the source code for the kernel (the Lion's book), but not to the source of all the other (user) programs. Recreating this would have been a major challenge.

Dave Pitts has ported the LSX kernel to the TI990 mini's, as reported before. He has also since rewritten the assembly bits to use his own tool chain (a modified gcc compiler and his own assembler and linker, which we also use for recreating the Cortex Basic ROM). His version of GCC generates code that is about the same size as my version of the Ritchie compiler. Both compilers have different approaches to register and stack handling, and I think there is no obvious way to generate even more compact code.

My hobby goal for 2016 is to round out and document:
- A new version of the mini Cortex, incorporating lessons learned in the past year
- A nice website that makes it easy for others to take what is there and take it in new directions (for example a port to the Geneve)
- More user programs
- A new boot ROM

Time permitting I hope to play with Dave's upcoming Cortex port of NOS and -- with other Dave's input -- with running TI990 mini software on the Cortex.

Happy hacking in 2016!
 
Last edited:
Disk image, yes.

Sure, please pm me with your e-mail and I'll send you a disk image and an updated emulator (the one from last year did not yet emulate the mapper chip). Still finding the odd bug, but all the most common facilities appear to work fine.

Paul
 
Hello everyone! This is posting is about TMS9995 meeting Xilinx Spartan 6 FPGA.

I've been tinkering with my version of Stuart's TMS9995 breadboard computer for a short while. I got it to work about two weeks ago and got in touch with Stuart to thank him for the nice design and website (and to ask a few questions), and he provided me with a link to this thread. Since then I've been continuing a little my work, and I thought it's now far enough to write this post about it. This is my very first forum posting so I hope formatting turns out readable.

I also do hope this thread is still alive - there's very nice stuff here, I have only read a small fraction of the material, but it is very impressive and I'm looking forward to reading the thread in its entirety.

Basically my board can be summarized now as TMS9995 meets Xilinx Spartan 6 FPGA, picture below. The nice thing about working with breadboard computers is that it is so easy to modify them. So I started my version (indeed before being aware of this thread and the cortex mini board) by basically hooking up TMS9995, FLASH ROM, TMS9901 parallel interface and a GAL22V10 to do address decoding, while waiting for a bunch of TMS9902 UARTs to arrive from china. Since with the chips I got I could quite replicate Stuart's original design, I just ended up writing some TMS9900 assembly code to test the board and got LEDs blinking with the TMS9901. When the UARTs did arrive (a month from order - I ordered them before starting the build) I then decided to first test the UART before wiring up the SRAM. Luckily the TMS9902 chips I got turned out to be in working order, so I was able to communicate with the TMS9995 and finally fulfill the blank in my childhood of not being able to write assembly code for my TI99/4A - I was a bit too young to realize I should have bought mini memory card bridgerather than extended basic...

Well to come back to this story, I got Stuart's design to work and tested things a little. I noticed that to my surprise the old TI chips would run at surprisingly low voltages. From by bench power supply I was able to go to as low 3.4V before the breadboard stopped working. I was amazed, but I also realized I could directly hook up 3.3V chips without frying them. This is the point in time I reached out to Stuart, and got the pointer to this thread. He kindly also posted me the schematics of the Cortex mini. I started to think that this would be the perfect opportunity to implement a strange version of the cortex mini. So I removed the GAL chip, hooked one of my FPGA boards to the GAL's pins and reimplemented the address decoding logic in the FPGA. That all worked. Encouraged by that, I proceeded to implement more logic into the FPGA. I have not gone very far yet on that path, but most of the logic on the cortex mini is now working in this implementation; namely I wrote an implementation of something like the 64LS612 in VHDL while trying to keep this compatible with the cortex mini.

To summarize, my board contains the TMS9995, 256K FLASH, 512K SRAM, TMS9901 and TMS9902. The FPGA implements a reset circuit, the MMU, the "flags" register in the cortex mini (the two blue less on the FPGA board indicate that ROM overlay is turned off and MMU paging is turned on - I wrote a short piece of code in BASIC to replicate the reset conditions with the MMU paging turned on).

I think I'll finish here for now, to see if this thread is still active and if this design sparks some interest. For me this has been a very rewarding project so far and I will definitely continue on it. Next on the agenda will be the implementation of an SPI controller in the FPGA to support SD cards, and then probably some kind of a VGA controller. The Unix stuff discussed in this thread is very interesting, I'd like to get that running on my board too.
tms9995spartan6.jpg
 
We are definitely still here--and active. This thread has become one of the major Powertran Cortex resources on the Internet, and it makes me glad I started asking questions about the system when I did. The breadboard systems are most interesting too, although I still have to take time to sit down and build one. A lot of what you are doing with the FPGA may also easily translate to the 99/4A, as the SAMS memory card also uses the 74LS612 Mapper chip. . .
 
Hi Speccy,

Welcome to this thread and what an interesting first post! Just when I thought this thread had gone about as far as it possibly could, you are introducing new and intriguing views. Could you elaborate more on the features of your FPGA & prototyping board and how you are hooking it up?

The TI chips being able to run at 3.4 volts opens all sorts of possibilities. I wonder if that holds for the TMS99105 CPU too.

For a while I have been thinking about doing a new revision of the mini Cortex board but never could quite decide what to put in it. In the mean time I was moving forward with software so that I could get a clearer picture of what hardware features would be desirable. One line of work involved putting V6 Unix on the TI990 minis (most credit goes to Dave Pitts) and looking into adding a TCP/IP stack to the Unix code. Last but not least I was thinking ahead about a 99105 based system.

Your concept opens up a new horizons. The Cortex cannot run most software for the TI minis because the MMU design is quite different and the TI990 MMU is too complex to build with a few 74 series chips. It would be quite feasible to implement in an FPGA, possibly even switching between "Cortex mode" and "TI990 mode". Also, for the 99105 board I was thinking about putting in two 612 chips (one for kernel mode, one for user mode), and having this in an FPGA would be cleaner. As you already pointed out, it will also be a good route to adding SD Card mass storage. A CF card is very easy to interface, but CF cards have become vintage parts in the last few years. The FPGA could also do disk DMA. In short, tons of new ideas become possible.

If you need input on making Unix run on your board just holler and I'll do my best to help. The coming weeks I'm quite busy though (I'm having the roof reconstructed).

Paul
 
We are definitely still here--and active. This thread has become one of the major Powertran Cortex resources on the Internet, and it makes me glad I started asking questions about the system when I did. The breadboard systems are most interesting too, although I still have to take time to sit down and build one. A lot of what you are doing with the FPGA may also easily translate to the 99/4A, as the SAMS memory card also uses the 74LS612 Mapper chip. . .

Hi Ksarul,
I am glad you guys are still there and active! I'm equally glad that the people here are pretty liberal in what you define as a powertran Cortex :) and that breadboards qualify.

On my side I don't quite remember when I first stumbled across Stuart's site, but when I did I did order a few parts in the hope of eventually building up to TI99/4A clone. Then home renovation happened and I didn't have any spare time and I kind of forgot the parts until I recently rediscovered them. Certainly going the FPGA route opens up plenty of possibilities, the same basic electrical design can take very many forms.
 
Hi Paul,
Thank you for the message, I'm glad to have found my way here.

I'd be happy to share what I've done in more detail. As an aside, for some reason it is nice to talk to people who appreciate this sort of thing, explaining to my wife what I am spending some of my hours on is sometimes a bit hard (by the way, after thinking about that over the years, I've concluded that for me building these things is relaxing as one can effectively control everything in this small but fascinating world of, well, breadboards in this case; real world tends to be so much more complex).

I've been gathering a collection of small and cheap FPGA boards to try different things on, mostly by ordering from China through ebay. I've been wanting to hook up one of these to CPUs like the TMS9995 for a long while, but dealing with voltage level converters for nearly all signals has increased the entry to barrier for this type of a project. I also got distracted by going to full soft-CPU implementations instead of connecting the FPGA boards to real computers; I built a ZX Spectrum clone on a few different FPGA boards.

The board I'm using in this case is this one:
http://www.ebay.com/itm/Xilinx-XC6S...406811?hash=item19fe496b1b:g:jdoAAOSw-7RVF8vl
"Xilinx XC6SLX9 Spartan 6 FPGA Core Board, Nano Size"
This board is nice due to a few reasons: the FPGA is pretty sizable (more on that below), it integrates an SPI Flash chip for FPGA configuration data (well most boards like this do) but mostly because it includes an FT232RL chip, enabling the board to be powered off from USB and providing a logic level serial port for the FPGA. In my case I just route the FTDI's TX and RX signals out to the FPGA's pins connected to TMS9902; at this point the FPGA does nothing with the data (well it also drives the on-board LEDs to show that traffic is going through).
The notable omission on the board is the lack of programming hardware to download the FPGA design; there is a JTAG connector but you need an external programmer device to drive it. In my case I bought I programmer (also from ebay), it works well and enables to use these low cost FPGA boards. I have a few more expensive boards which have built-in programming circuitry, but I think I prefer these cheap boards especially when messing with breadboard wiring - if the smoke decides to come out, the damage will be smaller...

The LX9 part is second to smallest in the Spartan 6 range. Still, it is by no means a small chip. To give you some idea, it can accommodate an entire ZX Spectrum with ease (including the CPU and all the memory - it's got 32 dual port memory blocks of 18kbits each, basically 64K of RAM); I also downloaded and adapted the Scramble arcade machine clone for another LX9 board, also only using on-chip resources. The Scramble system has two Z80 cores, plus a video system including sprite capabilities, and consumed about 70% of the resources of the FPGA.

But to come back to this design, once I realized that level converters would not be necessary, I started to test things and I am now at a point where literally on the breadboard there are only the "essential" chips: TMS9995, FLASH ROM, SRAM, TMS9901 and TMS9902. The FPGA is by now connected to nearly all of the pins of the CPU, and it drives the chip select signals to all the other chips. I actually just finished implementing the NMI generator to enable single stepping, and therefore added a few more wires (NMI and IAQ). That is actually somewhat illustrative of the design process: once the basic functionality is there, it nice that I can just edit a little the VHDL code, synthesize and upload it to the FPGA, add a couple more wires - and I've got a new feature in the system.

Right now the design implements the '612 design (to my understanding as implemented in the mini cortex), external instruction decoding, the LREX->NMI logic, address decode etc. and the logic is usage is still at 1% of the capacity of this FPGA. Also the design does not use any of the memories - or the DSP units (there are 16 very fast multiply-accumulate units on board, also it has a few sophisticated clock synthesizers that are not used at the moment). If you're interested I can post the VHDL code; although I have to say I'm not an expert on VHDL. (Getting things to work has been good enough for me... I'm much more a C++ / assembly guy, but you just cannot use those skills alone to create hardware.)

With that, it certainly is possible to implement very complex MMU designs. My plan is to indeed add support for SD cards, I've already half-done done that in another project so it should not be too hard. Also I think it would be a nice exercise to implement TMS9918 functionality, and perhaps emulation, which would enable this thing to transform both into an "actual" Cortex and TI99/4A.

I also happen to have one TMS99105 chip. I'm very intrigued of the idea of hooking it directly to an FPGA, so that the address demultiplexers and memory buses could just exist inside the FPGA - there would be a lot less wiring that way.

I think I am going to need some help to get your Unix running - although I have not yet extensively read this great thread, so I don't really have an idea on how much ground has already been covered in the messages. Anyway I want (and probably need) to get some kind of mass storage working first, and I also want to get more familiar with Stuart's port of the firmware. As a simple but hopefully useful exercise I was planning to add to Cortex basic save&load functionality to the Flash rom. The basic interpreter is a pretty handy hardware testbed.

I have feeling this has already gotten a pretty long posting, hopefully the browser doesn't choke before it is posted...

Erik
 
A few more comments...

For a while I have been thinking about doing a new revision of the mini Cortex board but never could quite decide what to put in it. In the mean time I was moving forward with software so that I could get a clearer picture of what hardware features would be desirable. One line of work involved putting V6 Unix on the TI990 minis (most credit goes to Dave Pitts) and looking into adding a TCP/IP stack to the Unix code. Last but not least I was thinking ahead about a 99105 based system.

Those sound interesting project ideas. Do you have some pointers to go to look for more info on the TI990 minis and their MMU? Well I guess I should google them up...

Erik
 
Back
Top