Speccery / StrangeCart-Doc

StrangeCart project public documentation
9 stars 1 forks source link

StrangeCart-Doc

StrangeCart project public documentation.

Please see the Wiki for more information.

News

2023-04-09

After a very long last a new firmware release. My intention is to keep on improving the firmware, now that I again continued to work on the code.

Please note that this has not been tested much yet, so proceed with caution. What else is new...

2022-08-13

Released new firmware to support the Bad Apple Demo running on the real iron. The corresponding new flash image file for the external flash chip is also provided in this repository with the name: flash_image-bad-apple.bin

Folders

Directory Contents
firmware Firmware releases
src Source code to flash_creator program used to build cartridge image collections.
mm Modified MiniMemory cartridge, used to support intregration to TI BASIC

Discussion thread

The StrangeCart project started way back in May 2020, when I started this discussion thread:

https://atariage.com/forums/topic/306889-strangecart/

What is the StrangeCart?

The project started as an experiment for the TI-99/4A home computer, first released in 1979. I wanted to both create a hardware cartridge for the TI-99/4A and to make it simultaneously super flexible - but also electronics wise very simple, essentially a single chip cartridge. The enabling technology for this idea was to use a relatively fast ARM based microcontroller (MCU) as the main chip, and to implement cartridge functionality in software.

Due to the software implementation, the cartridge can implement virtually all types of TI-99/4A cartridges in software, including the following features:

In addition to those features, which existed also back in the hayday of the TI-99/4A, in the early 1980s (but not in a single cartridge), the StrangeCart also implements features which I don't think have been done before. These become possible due to coprosessing support, enabling the StrangeCart to run software in parallel to the TI-99/4A's main CPU. Some examples are currently implemented:

Technical background

This is what I wrote in the opening message at the AtariAge thread: The microcontroller has two ARM processor cores: one Cortex M0+ core and one Cortex M4F core. I am running them at 96 MHz. In my opinion the really cool thing about this setup and my proof-of-concept software is that the less powerful M0+ core alone is sufficient to serve the bus of the TI-99/4A in real time, leaving the M4F core free for other things. The two cores can communicate via shared memory.

The microcontroller chip has 256K of Flash memory and 192K of RAM. Due to these capabilities the board has a bunch of extension headers: if one brings in extra address lines from the expansion connector, the StrangeCart could also implement memory expansion and mass storage expansion. I have provided header pads for the signals which are only present on the expansion connector.

The most difficult bit in this has been setting up the software properly so that both cores operate properly and the toolchain works. These chips are very complex, with a huge amount of on-chip peripherals. Still, the "bus server" program running on the M0 core is less than 4K bytes in size. I have setup things so that the M4F is the master processor, it configures everything and then boots the M0. The M0 is running from RAM for maximum performance, with interrupts disabled.

I have made multiple board revisions after the initial prototype, and the current version (StrangeCart V2 rev B) is a two chip design: in addition to the MCU I have added a 16 megabyte serial flash chip as a mass storage chip.

Architecture picture