• Please review our updated Terms and Rules here

Powertran Cortex

SD card works a bit!

SD card works a bit!

A brief update on the build process and early bring up phase: I took some time on Sunday to build one board. The process was somewhat different than I thought, the things I anticipated to be tough (soldering by hand the ICs) were not while others turned out to take time (the bloody 100nF filter caps like to fly all over the place - better to hold breath when picking them up). For some reason the similarly sized resistors were easy to work with. I lost a few LEDs, simply by dropping them from my pliers from a height of about an inch over to the desk - they just disappeared :p
The pads of the 50MHz crystal oscillator are just under the device, so getting that one soldered was difficult, but I did manage to do that by applying solder on the pads first and then trying to heat them from the side. But I did get all the components in there before running out of time (build time 3h according to me and over 4h according to my wife...). I think the next one will take about two hours as I start to know what to do.

I attach a picture of the first application of power - amazingly the USB interface worked straight out the bat! I was able to get to the built-in boot loader where the ARM presented itself as a tiny USB flash device. So that proved already many components. I've also checked that the 50MHz oscillator does work and I've been able to load a design on the Xilinx chip to flash a LED from a 24 bit counter, and I can programmatically turn on and off a led from the ARM. Not all the LEDs work though, so there is hardware debugging to be done, but it is a good start given that after the build I have had only about an hour to work on this.

But it is very exciting, bringing things up to life is just a very rewarding experience!

Erik


IMG_4705.jpg
Backside.jpg
 
After a bit more tinkering things have started to work, to the point that all the parts of the design I have had time to check have worked. I had a couple of firmware bugs and a wrong resistor mounted, but the LEDs do work now. The NXP chip implements a virtual serial port via USB (CDC device) and I have a debug monitor running there over USB. Didn't do the USB stuff myself, as there is a great open source project for this chip to build upon. Actually the bring up via the USB serial port is so much fun, that I'm wondering if I should build a second one to plug to the mini cortex and keep this one for tinkering. Luckily I have a dozen PCBs :)
I also got some signals driven through the CPLD from the ARM, so the first bits for inter chip and eventually interprocessor communication (ARM and TMS9995) are there.

Erik
 
Time has again been a bit tight on working on this project. I got some VHDL work done, as well as a liitle firmware development. The board is now mounted on the CF socket of the Mini Cortex, and the I/O registers seems to work (I have not yet validated the SPI interface though). I worked first on a simple mailbox design between the two processors, and now the TMS9995 can send bytes to the ARM and vice versa. I need to make a small test suite to make sure this is robust at some point. For the SPI I need to make a new boot ROM for the Mini cortex to see if that works. It is the same design as in the FPGA, so theoretically it should work. The CPLD became pretty full already 68 of 72 macrocells used, but I am pretty sure there is some room for optimization. I guess the good news is that the PCB itself is still unmodifed :)
When working on the mailbox I discovered that indeed the ARM is very fast, it seems to be able to do I/O writes to GPIO ports at full clock speed, as the CPLD misses some pulses even if it is running at 50MHz. Looking at the disassembly the C-compiler does a good job, the occasional missed pulses occured on back-to-back write instructions at 72MHz cpu clock. My understanding is that the cpu core has harvard architecture (separate instruction and data buses although unified memory map), and this behavior seems to reflect that.

Erik
 
MiniCortex now loading & executing from SD card

MiniCortex now loading & executing from SD card

I had bit more time today to work on the SD processor integration with the MiniCortex. I built a new boot ROM for the MiniCortex, basically this is the same ROM image as used with the FPGA breadboard. I merely corrected the addresses of the CF slot to FE00 and the LS612 to FE40. (I did not read carefully enough the schematic when I was creating the FPGA memory decoder, so these addresses were a bit off).

Anyway, the good news are that the exact same code did work, and I was able get the root directory listing of my test SD card, and it loaded the test file exactly the same way as on the FPGA breadboard - so the SD card interface worked on first attempt! Very nice indeed. This pretty much means that the hardware is now validated "enough" to start work on the software (proper test suites obviously are missing). Below I attach a picture of the test setup, as well as screen captures both from the UART of TMS9995 and the virtual USB com port of the LPC1343.

Erik

IMG_4717.jpg SDLoadWithMenu.jpg LPC1343 Prompt.jpg
 
Below I attach a picture of the test setup, as well as screen captures both from the UART of TMS9995 and the virtual USB com port of the LPC1343.

Okay so PNG pictures got butchered by the upload process, trying again with JPEG versions of the screenshots. Not all of the options on the TMS9995 screenshot are valid as the menu code is the one for the FPGA board which uses more than 32K ROM. Actually out of the options only 1 and 3 work - the screenshot is using option 3 for the SD card boot. The Basic option would otherwise probably work, but the FPGA paging unit has a slight difference (it can page ROM too not only RAM) so I need to edit the code to start Basic (the version of the Basic I have on the ROM is assembled to launch from 0x2000 onwards, so it needs paging to copy the ROM to RAM first before turning off ROM).

Erik
SDLoadWithMenu.jpg LPC1343 Prompt.jpg
 
Last edited:
I made a digital control card with 8 inputs and 8 relay outputs but not a lot else.

did the 256k memory mod on the main board so did not need extra memory and the drives were on the wd2797 so did not need them either.
 
Okay so PNG pictures got butchered by the upload process, trying again with JPEG versions of the screenshots. Not all of the options on the TMS9995 screenshot are valid as the menu code is the one for the FPGA board which uses more than 32K ROM. Actually out of the options only 1 and 3 work - the screenshot is using option 3 for the SD card boot. The Basic option would otherwise probably work, but the FPGA paging unit has a slight difference (it can page ROM too not only RAM) so I need to edit the code to start Basic (the version of the Basic I have on the ROM is assembled to launch from 0x2000 onwards, so it needs paging to copy the ROM to RAM first before turning off ROM).

Erik
View attachment 31614 View attachment 31615

If there was a "Like" button on this forum, I would click it. ;-) Good work Erik!
 
I agree with Stuart: very nice work!

Thank you very much! It has been fun, and a smooth ride so far. I am currently on a short vacation with my wife, but once I get back it is time to build more of these boards. I did purchase a cheap hot air SMD rework station, so I am going to try another way to build these boards with that. Should be faster than hand soldering :) I just need to get some solder paste, turns out it is not a stock item on component supplier I use (apparently they can't store it for long for good performance).

Erik
 
I've been tinkering with SD processor board and other hardware hacks during the past few months quite a bit. I need to get back to the Cortex stuff as I've been badly distracted by getting my recently acquired TI-99/4A up to speed. I posted the whole mess on hackaday:
https://hackaday.io/project/13119-ti-994a-memory-extension-with-pipistrello-fpga
This is my first posting on hackaday, so I don't know how that will turn out. Obviously it is work in progress... I think I will also make posting in some TI related forum - is Atariage the place to go to?

Erik
 
Hello:

Just when you thought it was safe, Paul Ruizendaal and I thought we might port the Unix V6 system to the TI-990 minicomputers (990/10, 990/10A and 990/12) and the Powertran Cortex using the TMS9995 and extended memory. A pre-built DS50 disk image and source tar balls are on my web site:

http://www.cozx.com/dpitts/ti990.html

I've run it under my TI-990 simulator, sim990, and on real hardware.

It needs more work. So, if you'd like to join in the "fun"....
 
After a long time there was finally a weekend to spend on hobby things. Happy to report that native tcp/ip for the Cortex and TI990 seems within reach.

Working from the code written by Rob Gurwitz in 1981 (the original code written for 4BSD, before Bill Joy's rewrite), I ended up with a tcp/ip stack that has about 25KB of code and needs some 20KB of data, mostly buffers. When run as a user program using loopback it appears to work; it required some compiler fixes on longs and bit fields, things that were not exercised well (or at all) before.

I think this code can be integrated into the kernel as a 2nd kernel process with very limited thunking between the kernel proper and the network stack. The idea is that it would communicate over a serial line with a PC acting as an ISP - much like you would dial out over a modem to an ISP in the early 90's. Heck, if your ISP still supports dial-up, that should work too.

Time remains scarce and there are other hobby projects too, so this will not arrive soon but a navigable path seems to exist.
 
Last edited:
It needs more work. So, if you'd like to join in the "fun"....
That sounds very interesting. For what it is worth I decided to participate RetroChallenge 2016/10 with a project that will be hard - if not impossible - to complete in a month, but if I do get it done it could potentially be another platform where one could run Unix V6 and I'd certainly be interested in looking into it. I've run the previous version on the Cortex Mini and it is very cool.

Below is the link to my competition entry - note that in the comments Bob wrote in about some TMS990 software that could be interesting to you guys.
https://hackaday.io/project/15430-rc201699-ti-994a-clone-using-tms99105-cpu

And in case you don't know about the competition, here is the link to it:
http://www.wickensonline.co.uk/retrochallenge-2012sc/

The competition entry is still open if you want to participate, and the rules are very open. I think the site nicely describes the competition as follows:
"While the RetroChallenge has its competitive side, it’s not really a contest… it’s more like global thermonuclear war — everyone can play, but nobody really wins."
 
After a long time there was finally a weekend to spend on hobby things. Happy to report that native tcp/ip for the Cortex and TI990 seems within reach.

That is very cool. As this starts to work over a serial line (which is great), it should not be too hard to connect some actual Ethernet hardware to one of these computers.
 
I will post a quick update here too, I did get the TMS99105 based TI-99/4A clone to work.
There is a discussion about this at AtariAge.

The project link above to Hackaday describes the status of the system.
 
If it'll run on a cortex, what about a geneve?

I don't think it is running on a Powertran Cortex at the moment - but on Paul's Mini-Cortex design. This has some extra hardware - memory protection and CF Card interface - that is used by the Unix implementation, and is not present on the Powertran Cortex or Geneve. So I suspect further software development would be needed.
 
Back
Top