HOWTO: emulate a TI-89 in Linux using Wine

I was able to get a TI-89 on my desktop fairly painlessly using Wine. Years ago, I owned an 89, but it was destroyed in a tragic high school chemistry lab.

  1. First, I downloaded and installed wine 0.9.4.
  2. I then used WineTools vt0.9jo to properly setup my wine environment, installing all the Windows pieces that makes wine so much easier to work with.
  3. I downloaded Virtual TI from http://www.ticalc.org/archives/files/fileinfo/84/8442.html
  4. I extracted the vti.zip, and moved it inside my ~/.wine/drive_c/Program Files/ so it would be easier to find, and along with all my other Windows apps.
  5. I then found the rom backup from before the chemistry disaster, and moved it into the vti folder as well.
  6. I ran Virtual TI with wine ~/.wine/drive_c/Program Files/vti/Vti.exe and told it where to find the rom.

Virtual TI on Linux

Now, I can do my homework with the same hardware I’ll borrow from my roommate to use during the test!

Solderless Breadboard Carrier Followup

On October 21, my breadboard carrier project hit the front page of Hack A Day.

Later that night, it hit the front page of MAKE: Blog.

Roaming through my statistics, I can see that Don Marti probably clicked through. That’s kinda cool.

Someone clicked through from an email message at Yahoo Mail. The article was del.icio.us’ed and sent through a web translator. Someone checked my site through their cellphone, and 74 people were using FreeBSD.

Numberwise, about 4000 unique visitors showed up, and I received approximately 26,000 hits. That averages out to about six hits a visit, which is nicer than one. I used 173 megs of bandwidth.

Anyone have any suggestions for my next project?

Make a Solderless Breadboard Carrier

Problem:

  1. A DIP40 chip, specifically, my PIC18F452 microcontroller, takes up too much space on a single breadboard.
  2. It can be easy to mix up power and ground.
  3. I hate prying large ICs out of breadboards.
  4. Most importantly, carrying around a raw breadboard with a project on it is a pain.

Solution:
A “MEGA Multi Tackle Carrier Bait Box” can be used to carry a pair of solderless breadboards, spaced such that there is an airgap terminal strip spaced at .600 inches, the sizing for the larger DIPs, like the DIP40s. A binding post pair can be prewired to allow the use of banana plugs to power the board as well.

Supplies:

  1. 1 “MEGA Multi Tackle Carrier Bait Box” from Walmart
  2. img_1693

  3. 2 solderless breadboard bus strips and 2 solderless breadboard terminal strips
  4. I used Jameco P/N 20722 and Jameco P/N 20669. If you go this route, make sure the power bus strips are removable.

  5. Double banana binding posts
  6. img_1676
    I used something from Radio Shack, identical to Jameco P/N 125196

  7. Some 20 AWG wire, black and red
  8. A Dremel or other cutting tool
  9. Epoxy
  10. Optional: 40 pin ZIF socket
  11. I used Jameco P/N 104029. If you go this route, you will need a DIP40 socket for the ZIF as well.

Procedure:

The removable container inside of the MEGA Multi Tackle Carrier Bait Box has permanent horizontal dividers, and removable vertical dividers. The benefit of this is that I can store related components right with my breadboard. The downside is that a double-sized breadboard won’t fit with the fixed horizontal dividers.
img_1696

This is easily solved with a Dremel.
img_1672

img_1673

img_1671

img_1670

After the Dremel job is finished, it looks like this:

img_1690

At this point, I separated the power rails from the breadboard, put a power rail on one side of each of the two terminal strips, and separated the two breadboards using DIP40 sockets between the two breadboards. This spaces them correctly so the middle is a terminal strip for DIP40 spacing. The next picture may explain better. I then positioned them on the inside cover of the box, so that they would fit in the space I dremeled out. I made sure to account for the binding posts by giving the breadboard room on the top and bottom.

I pushed the ZIF socket into the DIP socket, and pushed that into the breadboard. After the sticky backing from the breadboard was removed, the breadboards were attached to the inside cover.

Open, it looks like this:

img_1674

Closed, it looks like this:

img_1675

It is obvious at this point it has a generous amount of room for prototyping while allowing the top to close.

The next step is attaching the binding posts to the inside cover. I did not want to drill through the cover. When the cover is removed, and it isn’t being used as a carrier, but instead a prototyping board, I wanted the plastic to lay flat. This meant I needed to modify the binding post piece.

I did this with a Dremel. Cut down two of the plastic holes so the nuts will end up flush with the bottom plastic piece. I only used one nut for each hole, and I only need to cut down one side.

The next picture shows how both holes should appear. The black holes should look like the left side, and the red holes should look like the right side. The right side was not modified, but the left side was.

img_1679

The next step is to cut down both of the pegs so they will end up flush with the plastic.

Take plenty of precautions with your Dremel. Do not get metal shards in your eye, or anywhere where they will cause damage. I do not advocate cutting metal with your Dremel ever, especially late at night in the middle of a residence hall (read: dormitory).

This picture shows a comparison between an unmodified peg and a cut peg.
img_1685

The next step is to etch the bottom of the black piece, so that it will adhere better after the epoxy. Then I assembled the binding post pair.

img_1687

Mixing up some epoxy, I smeared some on the bottom of the binding post, and also the side. This allows the epoxy to both bind to the plastic on the bottom, as well as the plastic on the breadboard. The first time I attached it, I only put epoxy on the bottom, and after a few days, it snapped off.

At this point it looks like this:

img_1689

I then attached appropriate colored wires to each bus line from the binding post pegs.

The end result looks like this:

img_1699

img_1698

Another benefit of the carrier is that it fits directly in the box with the rest of the electrical engineering stuff, being both transportable to lab, and also directly usable in my dorm.
img_1691

An annotated set of these pictures is available as a Flickr set at http://flickr.com/photos/adamwolf/sets/1167654/.

Possible extensions to this project include power protection. A zener diode across the power terminals or a tantalum capacitor in series with the power could provide cheap protection against inverted polarity.

Send me your questions or comments!

Technical HOWTO and Image of Compaq IA-1 Digital Picture Frame

I made a digital picture frame out of a Compaq IA-1.

In order to make a digital picture frame with an IA-1 and Damn Small Linux, there is one major constraint. No matter how big your CF card is, there is only 64 megs of ram in the device. This means, if you put a complete image of Damn Small Linux, and add something small, like feh, weighing in at less than 500k IIRC, the device will crash on boot, complaining about lack of ram.

That makes this process about eleventeen times more complex, but still within the realm of possibity. Even easier if you have a guide, you know, something like this.

My first step was to make a feh extension for Damn Small Linux. This is unbelievably easy. I did this on my main workstation, booted into Damn Small Linux. First, I enabled apt through the fluxbox menu with Apps > Tools > Enable Apt. Then I started a root console and installed feh with apt-get install feh. I closed my root console, and opened a user console, and converted the feh debian package to a feh dsl package with /usr/bin/deb2dsl. I named the package feh.dsl, made the MyDSL menu name feh, and entered /usr/bin/feh as the location path. I then had a feh.dsl extension in my home directory. I copied it to a thumbdrive, and booted my IA-1 with it. As you know, this crashed on boot. I booted my computer with it. It loaded fine. This meant the error that meant “Out of RAM” really meant it.

So my next step was to lighten up Damn Small Linux, and make it Damn Smaller Linux. This means you have to enter the world of remastering. This has to be done on a computer with more ram than your IA-1.

Following the basic idea inside of ReMastering HOWTO for DSL, also newbies and other enthusiasts we burn a copy of Damn Small Linux on to CD, and reboot our computer.

Mount an open directory off your hard drive.
mount /mnt/hda3/

Make needed directories.

mkdir /mnt/hda3/home/wolf/dsl/source
mkdir /mnt/hda3/home/wolf/dsl/newcd
mkdir /mnt/hda3/home/wolf/dsl/newcd/KNOPPIX

Copy needed files to the remastering directories

cp -Rp /cdrom/boot /mnt/hda3/newcd
cp -Rp /cdrom/lost+found /mnt/hda3/newcd
cp -Rp /cdrom/index.html /mnt/hda3/newcd
cp -p /mnt/hda3/home/wolf/feh.dsl /mnt/hda3/newcd

Copy the sources to the right directory.

cp -Rp /KNOPPIX/* /mnt/hda3/home/wolf/dsl/source
cp -Rp /KNOPPIX/.bash_profile /mnt/hda3/home/wolf/dsl/source

At this point, remove firefox from /mnt/hda3/home/wolf/dsl/source/. This will free up over 17 megs of space. I did this with some nasty bash. I believe it was find /mnt/hda3/home/wolf/dsl/source | grep firefox and then judiciously removing the firefox directories and executable. To be pretty, you have to then remove the desktop link and menu entry.

Create the compressed image.

mkisofs -R /mnt/hda3/home/wolf/dsl/source | create_compressed_fs - 65536 > /mnt/hda3/home/wolf/dsl/newcd/KNOPPIX/KNOPPIX

Create the iso:

cd /mnt/hda3/home/wolf/dsl/
mkisofs -no-pad -l -r -J -no-emul-boot -boot-load-size 4 -boot-info-table -b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat -hide-rr-moved -o mydsl.iso newcd

Compaq IA-1 Digital Picture Frame

Amanda’s birthday was July 27th, and she turned 19. I spent a lot of time thinking of a gift, and I finally decided on hacking one of my old gadgets into a digital picture frame.

This is the IA-1 before modding:

img_1529

This is the IA-1 after the uberleet casemod:

img_1528

These pictures both came from my Compaq IA-1 Digital Picture Frame set on Flickr.

Anyway, I took a Compaq IA-1, and attached a picture frame to the display. I didn’t remove any plastic, I just hunted hard and long for a decent sized picture frame that would snap on the existing plastic bezel. I found a matte that would cover up the plastic. Then I had to work on the software.

The IA-1 only has 64 megs of ram, and no hard drive. It has a 16 meg internal CF, and an external CF slot. I could conceivably smash a digital picture frame running linux and nfs and such into 16 megs. I know I could do it, but the time-effort tradeoff pushed me to find a spare 64 meg CF and put a slightly modified DamnSmallLinux distro on it. DSL is so unbelievably nice that I could have just put feh and unclutter on it as extensions, and then smashed them on the CF. However, when doing that, I ran out of ram on the device and it wouldn’t boot. So I remastered DSL without Firefox, and put feh on it natively.

Now it can show pictures, but I need to let it see pictures. So I took Amanda’s flash drive, and put a bunch of pictures of us, and also a blank cursor to erase the default X cursor, and set it to automount on boot. Then modifying the .xinitrc, I had it start feh at boot. The result?

Amanda plugs her thumbdrive in the IA-1’s back, and plugs it into the wall. The picture frame displays a picture of us every 5 seconds until you unplug it.

Yay! Functional, nerdy, me.

Pssst.  I wrote more on how I did this on the next post!