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