Memory Expander

This article is under construction and needs to be completed. You can help by expanding it.



Expander SF


External device that allows you to hold large amounts of data


Mel Tsai


Release Date

February 13, 1997





With the advent of assembly language programming on TI calculators, the need for increased storage on the calculator quickly becomes obvious. With Zshell games and files now approaching 5 and 6 kilobytes (average) each, one quickly runs out of space when trying to store more than 3 or 4 of these files on the calculator. Now that Fargo (the TI-92's assembly language shell) is gaining popularity, the need for more memory is even more apparent.

In October '96 I decided to build a device that would allow for expanding the calculator's memory. Based on our knowledge of the inner workings of the TI-85 (the calculator predominately needing the memory expansion), it's nearly impossible to add any sort of "chip" that would expand the memory internally. Therefore, I decided to design an external device that would expand the calculator's memory. What I came up with at first (what I'm calling my "Original Expander" design) would work, but it was difficult to construct and quite unreliable. You can see all my work on the Original Expander here. I realized that the average calculator user wouldn't have the resources nor the patience to build such a complex circuit, just so they could play more games on their calculator.

I needed something new. I started looking for new technologies, rather than "standard" memory chips that would require lots of extra circuitry. After a long while, I stumbled upon a new generation chip from National Semiconductor. The chip was basically a godsend. It offered extremely high capacity (1 megabyte), low cost (about $30 each), and it had a serial interface that would blend perfectly with the calculator's link port.

The next month or so entailed a whole bunch of design revisions, because although the chip was serial accessible, it required three wires (data in, data out, and clock), whereas the TI-85 only had two wires. The task of multiplexing three wires down to two proved to be MUCH more difficult than it seemed, but finally I realized a trick that would make the Expander super-simple to build! What resulted is a cheap, battery powered, small external device that would allow you to hold vast amounts of data, accessible anywhere. I called it the Expander SF (The "Expander Serial-Flash").

So there you have it. On 2/13/97, for the first time in the history of TI calculating, I stored a file to the Expander SF, and flawlessly received it back to the TI-85.

From here on out is a new era for Zshell and Fargo programming, as program size is (practically) no longer a consideration. For more detailed information on the Expander SF as well as other information (such as building your own, or buying one directly from me), follow the links to the left.

Product Screenshot

(Screenshot of Product)

Significance of Product

  • Why product was important to TI community
  • Any controversy or interesting circumstances surrounding product
  • Awards won, fond memories that people have


(Taken from FAQ page)

Expander SF FAQs:

Q: Will the Expander SF work on my TI-82/83/86/92?
The only calculator the Expander SF can be used on is the TI-85. This is because the driver software was only created for the TI-85, and was never ported to any other calculators (and probably never will be, either). What this means is that the Expander SF is basically a "dumb" device. It cannot decipher the strange protocol that other calculators (including the TI-85) use to communicate with. The driver software I've written "takes over" the link transmissions of the calculator, and puts them into a form the Expander SF can recognize. In addition, the only way for this driver can run is if you also have an assembly language shell loaded, such as Zshell (for the TI-85) or Fargo (for the TI-92), whereas TI-83 and TI-86 users already have this shell built-in.

The driver software is the most difficult part of Expander development. It took me a LONG time to write this program, and many months to perfect it. Also, this program cannot be run on any other calculator than the TI-85, since I wrote it for the TI-85! To use the Expander SF on another calculator, the same software must be rewritten for that calculator. Since the ESF project is basically over, there are no plans to port the software to any other calculator.

In addition, if the software is accidentally corrupted or deleted on your calculator, you must re-transfer that software onto your calculator (using your computer) before you can regain access to the Expander SF.

Q: What exactly does the Expander SF give me? Is it just a way to hold more games on my calculator, or does it give more?
The main point of the Expander SF, from the very start, has been to extend the memory storage capabilities of the TI-85. This basically means that you can store much more data than you could previously, all in a "convenient" package that you can take along in your backpack or something. From there, you have access to whatever games, data, or programs you wish, and size is virtually no longer a consideration. I have successfully loaded every Zshell game ever made onto the Expander SF. So, I guess for now the answer is, "yes", it's just a way to hold more games on your calculator. This feature alone makes it worth considering.

Q: I heard that the memory in the Expander SF will eventually go bad if you use it too much. Is this true?
Well, unfortunately it's true. But, it's not as big a problem as you may think. You see, the chip used inside the Expander SF is called "Flash Memory". Flash memory is a relatively new form of EEPROM (Electrically Erasable Read Only Memory) that allows you to store vast amounts of data cheaply, and the data won't be lost when the power is removed. However, it has a couple drawbacks. One of them is that you can't write data to the chip over and over, otherwise sections of the chip will start to fail. It has to do with the way it's stored, and it's unlike other forms of memory which can be written/erased/read an infinite number of times.

When will it fail? It's almost impossible to tell. The memory is actually quite durable, and it can take possibly thousands of writes and erasures before blocks will start to fail. For most people, this will mean years of normal use without seeing anything go bad. "High usage" users of the Expander SF, i.e. writing and erasing data a hundred times a day to their Expander SF, will definitely start to see the memory fail within months. But like I said, most users will see many years of use.

Note that this says nothing about actually *reading* data from the chip! You can read the data stored in the chip an infinite number of times. Read operations don't affect the data at all, and hence won't effect the life of the chip. So, I recommend that users should just occasionally (i.e. no more than ten times a day) update programs and information stored in their Expander SF, and I can virtually guarantee that the Expander SF will last five to ten years or more.

For a more technical and theoretical explanation, you can take a look at National Semiconductor's datasheet on the subject, AN-1009: EEPROM Endurance Prediction

Q: Will the Expander SF transfer Zshell to my calculator if it accidentally gets erased?
Transferring Zshell/backups to the TI-85 with the Expander SF is impossible. You see, the calculator has no way of accessing the Expander SF, *unless* the Expander Driver Software is loaded. However, if Zshell became erased on your calculator, or your calculator crashed, that means that you no longer have access to the driver software! You therefore cannot access the memory inside the Expander SF, and you're stuck. Your only solution would be to re-transfer Zshell to your calculator using conventional means, i.e. another calculator or from your computer. There's just no way around it with the Expander SF.

Q: Does the Expander SF allow me to run programs that are larger than 28k in size?
No, running programs that are larger than the normal ~28k in size will be impossible. The memory inside the Expander SF cannot be directly accessed by the processor, so therefore all files inside the Expander SF must be transferred into the calculator's main memory before they can be accessed. So, if the file must be first transferred into main memory, and the main memory is only 28k, it's impossible to have a file greater than 28k stored on the calculator.

Q: You say that the transfer rate of the Expander SF is around 5 kilobytes per second. Why is this so much faster than normal computer to calculator and calculator to calculator link transfers?
Regular calculator to calculator transfers utilize TI's "built in" transfer protocol. They've built-in somewhat of a safety net, one that can virtually guarantee that link transmissions won't get screwed up. These transmissions, I believe, are at around 8000 to 12000 bps. However, in designing the Expander SF, I pushed the limit. I set the transfer speed as fast as possible, which was limited by the processor speed. It didn't work, so I slowed it down a little bit. It still didn't work. Then I slowed it down some more, and finally it worked. It settled to about 50,000 bps.

Why didn't it work at full speeds? Well, I'm not exactly sure. I believe that the distances involved in the link wire, as well as the capacitance at the link port itself has slowed down the transfers. It's definitely not the Expander SF itself, because the Expander SF can theoretically transfer at speeds of about 1,000,000 bps.

Q: What types of variables can the Expander SF hold? Strings? Matrices? Pictures?…
The Expander Driver v1.0 stores TI pictures, strings, and TI-BASIC programs. I have no plans to add support for other file types such as matrices and lists.

Q: I heard that National Semiconductor at one time gave away Free Samples of the Expander Chip. Is this true?
Yes, at one point National Semiconductor was giving away free samples of the chip. However, they do not do this anymore as they've stopped making the chip. So, don't ask them for free samples because they don't have any.

Q: There are five different versions of the memory chip??? What are the differences?
The NM29A040V and the NM29A040M are both 512k chips. The NM29A080V and the NM29A080M are both 1 meg chips. The "M" at the end refers to the "M series chip". This "series" reference refers to what the chip looks like, i.e. what type of packaging it is enclosed in. The M series is a surface mount chip, specifically "Surface Mount SOIC". It is designed to be directly soldered to the circuit board. It's pins are spaced very close together (0.05") and this will make hand soldering difficult (but not impossible, I've done it twice already). People who want to use the M series chip should be good at soldering, and never hold the soldering iron on the chip for more than a few seconds at a time, or you'll melt it.

Toshiba at one time also manufacturered a chip identical to the NM29A040V. However, Toshiba and National Semiconductor were jointly producing the chip, so toshiba stopped making them at the same time NS did. So don't plan on looking for toshiba's version, either.

The "V" series is in Plastic Leaded Chip Carrier ("PLCC") form. This type of chip is a square looking box, with funny-looking "pins" wrapping around the edge of the chip. This type of device cannot be directly soldered to the printed circuit board, and you must use a PLCC socket (see the next question).

In terms of advantages/disadvantages of each chip, I'd say that the PLCC version will be easiest to use, because you don't have to worry about ruining the chip while soldering. You can also replace the chip buy pulling it from the socket if it ever goes bad. However, the M series chip will is slightly cheaper, and you don't have to buy a PLCC socket for it. In addition, if size is a big consideration, the M series chip can fit into much smaller spaces.

You can see exactly what the chips look like in the Pictures section.

Q: What does the "PLCC Thru-Hole Socket" do and why do I need one?
The PLCC socket is used to attach the V series chip to a printed circuit board. You can take a look at it's pinout in the schematic diagram for the Expander SF. There are two types of PLCC sockets: thru hole, and surface mount. The thru-hole version is easier to use, it has pins just like regular DIP IC's, and you drill holes through the pcb and solder the socket in. The surface mount PLCC socket is pointless for the Expander SF, so don't get it.

When mounting the PLCC socket on the board, you don't have to drill all 28 or 32 holes for the PLCC socket to fit. What I did was clip off all the unneeded pins (the required pins are listed in the schematic diagram), and then just drill those holes. Positioning is important here, because a) you don't want to clip off the wrong pins, and b) if you're off in drilling the holes, it won't fit well into the pcb. Actually, I left some of the unneeded pins on, because this will allow for a more stable connection to the board (the pins are kind of weak).

Development History

(Taken from Memory Expander about page)

General Information about the Expander SF

The Expander SF ("ESF" for short) is now indefinitely out of production, as the main memory chip for the Expander is now completely gone. There are *no* compatible replacement chips anywhere, so don't even bother looking! I am currently working on the Expander II and the Expander III which will have specifications much different than the Expander SF, and will use different chips. These new Expanders make the ESF obsolete. See the News sections as well as the new Expander II and Expander III pages. So therefore this section is mostly here just as a reference, or for people who happen to stumble on one of the remaining (rare) ESF chips. Plans to build the ESF are shown below.
Basically the Expander SF is an easy-to-use external memory expansion device. It connects through the TI-85's link port, and is battery powered. It is (was) available in two versions, either 512k or 1 Megabyte. You can see some pictures of it in the Pictures section.

Here is a summary of the Expander SF's features:

Small size. The version I sold fit into a 2.4"x2.28"x1" ABS plastic case. Some people even managed to mount it internally.
9V or AA/AAA battery powered, lasts for months on regular use.
Very large storage capacity, approximately 512 kilobytes or 1 megabyte (two versions of the memory chip). This is enough to hold just about *every* zshell game ever made.
Information is retained for up to 40 years inside the main Expander chip, with or without batteries.
Large transfer rates, approximately 5 kilobytes per second. This means that most files will transfer in less than one second.
For those of you who bought one of my Expanders, I created an Expander Quickstart Guide to aid you in your Out Of Box experience. People who have just received their Expander SF from me should read this introductory guide.

Expander SF Software

The Expander SF requires special zshell driver software to run:

The Expander Beta Driver Software, here for nostalgic purposes only.
The Expander v1.0 Driver Software (for Zshell), believed to be bug-free.
The Expander v1.0 Driver Software (for Usgard 0.95b).
The Expander v1.5 Driver Software (for Usgard 1.5), NEW from Will Stokes, 10/30/97.


Related Products