TilEm on MacOS

TilEm is a Linux emulator for certain TI graphing calculators including the TI-83 and TI-84 series. This is more or less how I got TilEm running on my Snow Leopard MacOS system. I'm no expert; suggestions welcome.

  1. Install MacPorts.
  2. Using MacPorts, install gtk2
    sudo port install gtk2
    
  3. Download TilEm.
  4. Unzip and build it:
    tar xvfz tilem-0.973.tar.gz
    cd tilem-0.973
    ./configure
    make
    
  5. TilEm really just emulates the calculator hardware; it depends on an actual TI calculator ROM to act like a calculator. Here's one way to get one:
    1. Download the TI-83 Plus SDK from here.
    2. Download and install wine. MacPorts has a wine port but at this writing it does not work with Snow Leopard so instead I used this handbuilt and hand-tweaked version.
      This is how you would install under MacPorts:
      sudo port install wine
        
    3. Using wine, open the downloaded SDK (named 83psdk_setup.exe). This should open the Windows installer; when it asks where to install, make sure it goes to a Mac directory, not a native Windows directory. (Of course, instead of using wine, you could also install the SDK on a Windows machine and just copy the ROMs over to the Mac.)
    4. Copy the .clc files from where they got installed to where the tilem binary lives:
      cp sdkdir/Exe/*.clc tilemdir/bin
        
  6. Start X-Windows
  7. Start tilem from tilemdir/bin
    ./tilem
    
    This seems to copy the ROMs to a standard place: ~/.TilEm/ti83p. (If you see the TilEm logo on the screen, you have to turn the calculator on before it works!)
  8. If it works, install it:
    sudo make install
    
  9. Run it from a command window with the command tilem. Make sure X11 is running first.

Extra credit tweak: White background instead of gray

TilEm tries a bit too hard to emulate the thing accurately. One thing I don't like is the gray screen, especially if I want screen shots for printing. So I modified tilemdir/src/tilem/gui/screen.c this way:

308,309c308,309
< = (0xbd * i) / (NGRAYS - 1);
< iris[NGRAYS*3 - i - 1] = (0xb5 * i) / (NGRAYS - 1);
---
>   = (0xff/*bd*/ * i) / (NGRAYS - 1);
>   iris[NGRAYS*3 - i - 1] = (0xff/*b5*/ * i) / (NGRAYS - 1);

Jon Dreyer • Math tutorComputer Science tutor
781-696-2614 • 81 Baker Ave, Lexington MA 02421-6228 • email

I have no special talent. I am only passionately curious. —Albert Einstein