LinApple Emulator on Ubuntu 14.04 64-bit (actually Xubuntu…)

While KEGS is nice for emulating an Apple IIGS on Linux, if you want to emulate an Apple //e (IIe) on Linux the choices seem to be narrower, at least for a version that will work on newer versions of Linux. LinApple is available here and is derived from AppleWin with libraries changed to SDL and POSIX from the Windows equivalents. Please note that this is not my project, but since I encountered a few issues during compilation I thought I’d share the experience. I have not yet thoroughly tested LinApple, only a few programs/disks, but it seems very promising. Note that sound worked immediately and doesn’t require a work-around due to old audio implementations.

You’ll need to make sure you have installed libsdl1.2-dev, libcurl4-gnutls-dev, g++, and libzip-dev, if not already installed. For those that are unfamiliar, I normally open a Terminal session and run each installation separately, just so I can see what’s happening. You can combine all the installations on one line, but then you probably don’t need this part of the discussion…

sudo apt-get install libsdl1.2-dev

sudo apt-get install libcurl4-gnutls-dev

sudo apt-get install g++

sudo apt-get install libzip-dev

If you received any errors during any of these installations, Google will probably help. Normally, though, these are common libraries and shouldn’t cause a problem. Even if you already have libsdl2 or higher installed, go ahead and install libsdl1.2 as that’s the version LinApple is currently configured to utilize.

You’ll need to untar/unzip the LinApple source code into a working location in order to start compiling. Once extracted, change to the src subdirectory in the LinApple folder. Before you try “make” though, you’ll (probably) need to make the following changes:

– In Frame.cpp, scroll down to the last line that says #include and add a new line below that one:

#include <unistd.h>

– Do the same in SerialComms.cpp and Timer.cpp.

If you do not add this include line to each of those files, you’ll receive error 1 relating to either usleep() or close() not being a valid function within their scope.

Once you’ve completed these changes, stay in the src directory and type

make

at the command prompt. No parameters are required and, although you’ll see many warnings, you should not receive any errors. The last couple of lines should include the command mv AppleWin LinApple. If you perform an ls at this point, you should see an entry called linapple.

Before attempting to run the linapple command, you’ll need to copy it to the main LinApple folder; use the command

cp linapple ..

in order to copy it to the next higher folder. You can then cd to the main LinApple folder and execute the linapple command.

I have not attempted to use the make install command, nor have I deployed the program system-wide. I’m in the testing stages and welcome any feedback. At some point, I might contact the author and attempt to bring it up to SDL2.

Let me know if you find any steps I missed or any additional information that should be included.

KEGS 0.91 64-bit Xubuntu 14.04

So, I’m not as much in the habit of compiling my own versions from source as I once was, as Ubuntu and many other distros have eliminated the need in many cases. However, KEGS (an Apple IIGS Emulator) is an example where compilation from source is well worth the trouble.

I tend to do everything from the command line in such cases, including installation of missing packages.

From the command line, type

sudo apt-get install build-essentials

This installs many (but not all) of the items that you’ll need to install KEGS.

Now, open the KEGS source file and extract it (including directory structure) to a convenient location. From the terminal, cd into kegs-0.91/src. At this point, you’ll need to get rid of the link to the vars file as it is not for the correct architecture. Simply type:

rm vars

Now, you need to create a link to the correct vars file. Type

ln -s vars_x86linux vars

This creates a link to the correct vars file. This file is read-only, however, and there is a change that needs to be made, so type:

chmod u=rw vars

This sets the user bits to read and write. Go ahead and open the file in your favorite text edit (I use joe from the command line but Mousepad or others will work fine). For the line that starts with CCOPTS, change the -march=pentium parameter to read -march=native. Save and exit the text editor.

Before you can compile, however, there are several missing libraries from the standard 14.04 distro that are needed. Do the following:

sudo apt-get install libx11-dev

sudo apt-get install libxext-dev

At this point, make sure you’re still in the src directory and type:

make

This might be fairly quick or take several minutes. You’ll probably see a number of warnings and such as the system compiles, but when the normal prompt returns, you can change directory up one level to the kegs-91 folder. Listing the files should show an executable file called xkegs. A note here is that kegs utilizes the older audio system from Ubuntu so you’ll be running the program with an audio wrapper. To test your installation, type:

padsp ./xkegs

You should see the KEGS window with all @ characters and system summary at the bottom. If this is successful, you can move the xkegs executable wherever you’d like (no other files are required) and then create a script that will run the program with the audio wrapper, using your text editor. Place these two lines into a file then set the executable bit on the file. You can then run this script file which will run xkegs with its audio wrapper.

#!/bin/sh

padsp /opt/kegs/xkegs

One other bit that I noted after typing this: make sure you copy the config.kegs file from the kegs-91 folder to your home folder; you can leave it named config.kegs or you can rename it to .config.kegs so it will stay hidden. As kegs will automatically manage this file for the most part, I’d rename it so it doesn’t clutter the system.

If you need disks, etc., to get you started, search for ftp asimov. Just about anything you need can be found on their site.

Hope this helps!

Acer C7 C710 with Xubuntu 13.10

Just a brief note that I did a fresh install with Ubuntu 13.10, allowing updates as I went. The Intel video driver now seems to be active as I can install and run glxgears with a reported frame rate of 304. Previously, since the driver wasn’t fully available I wasn’t able to do any GL stuff at all.

For anyone that might be interested, this is a fantastic little notebook that has sufficient power to run a Windows 7 virtual machine in VirtualBox and still maintain decent playback quality on video or YouTube. I use it for classes on a daily basis as well as my normal daily uses and haven’t experienced any problems.

Edit: One other issue that you might find is that the volume control applet doesn’t work. If so, try installing indicator-sound-gtk2. If that works, you’ll probably have to reinstall it occasionally until Xubuntu includes it.

Visual Paradigm for UML

For those that might be taking classes that require some Use-case Models or similar diagrams, UML systems can be tough to find that don’t require a $1,000+ license. I did find a program called Visual Paradigm for UML CE (Community Edition) that doesn’t require payment for some basic functionality. While it’s got some features locked out that would have been nice to generate some files for classes, the UML portion works pretty well and (on Mac, at least) allows output to PDF. There isn’t a cost, although you do have to register to get an activation code. It’s Java-based, so should work on Windows, Mac (that’s what I’m using) and Linux.

Classes Again

Getting closer to graduation although I still have about 1 year left at 2 classes per sessions (8 weeks). Finally getting into some classes where I’m learning tons of good information. Wish I’d had this 6 or 7 years ago when I started as a programmer, but then again I learned a lot of good hard lessons in the process. Either way, finally getting closer to the end.

SQL Statements

I’d forgotten how much fun it could be to develop SQL statements, but I recently started another session of classes at Columbia College, including CISS 430, Databases. So many choices, just like programming really, as everyone chooses a different method.

Acer C7 (C710) Chromebook running Xubuntu 13.04

So, new adventure. Wanted a small laptop with Linux (Xubuntu) without a lot of money. My Lenovo W510 is a power house but weighs a lot and takes up quite a bit of real estate. Found out that the Acer C7 can be hacked a bit to load up Linux. Spent about 4 days so far testing various options, now have it running pretty darn well. Note, left it at 13.04 until the Intel Video driver is available in 13.10 or 14.04.

Quite a few caveats that I’ll try to cover. First, though, if you want 64-bit with a clean kernel, don’t bother with the various scripts. I utilized the firmware change instead that loads SeaBIOS and Grub2. That gets you to where you can install Linux more or less normally. Chrome OS? That’s different; if you have to have it then you’re on your own. I wanted Linux. Period.

First, I swapped the 4 GB RAM for 16 GB RAM and the 16 GB SSD to a 1 TB Hitachi SATA 3. Yes, it runs with no problem, although the drive is a bit tight fit.

Next, jumpered out the write protect on the motherboard. Various Internet sites show how to accomplish this so I’ll not bother showing pics. It’s a very small micro-jumper, so I used a little foil from a Hershey’s Kiss and a bit of tape to hold it on the pins. You’re only doing this long enough to backup the old firmware and then write the new firmware.

Speaking of firmware, use sudo flashrom -r filename.rom to backup the existing firmware. It’s pretty quick. Next, find the firmware you want to replace it with and use sudo flashrom -w whatevername.rom. This takes a couple of minutes so be patient. Whatever you do, don’t let the battery run down or otherwise cycle power. Can you say $200 brick?

Now that firmware is backed up and copied to a safe place, as well as the new firmware in place, reboot. You’ll see a text-mode screen that resembles GRUB; follow the prompts, pressing F10 to get to a boot menu. Hopefully, you have a memory stick prepared with Xubuntu 64-bit live distro (or whatever) using unetbootin to set it up. BTW, this step took longer than just about everything else, other than figuring out that the script method was out.

Once booted, you can pretty much install as normal. I don’t think I experienced any heart-stopping moments. I did start with 12.04 LTS and then updated until I reached 13.04, but you should be able to install whatever version you want, within reason.

You’ll notice that the trackpad doesn’t work (unless you’re luckier than I am). Upgrade the kernel to 3.11.4+ using the following commands (this is the 64-bit version). The reason for this upgrade is because 3.11 includes quite a few items relating to the Chromium laptops that are out there:

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.4-saucy/linux-headers-3.11.4-031104-generic_3.11.4-031104.201310081221_amd64.deb

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.4-saucy/linux-headers-3.11.4-031104_3.11.4-031104.201310081221_all.deb

wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.11.4-saucy/linux-image-3.11.4-031104-generic_3.11.4-031104.201310081221_amd64.deb

sudo dpkg -i linux-headers-3.11.4*.deb linux-image-3.11.4*.deb

Reboot.

Now, you’ll find that your trackpad still doesn’t work. Problem is that only 1 of 4 drivers loads and order of the 4 is essential. First, use sudo rmmod chromeos_laptop to briefly unload that driver. Now, use sudo modprobe i2c-i801, sudo modprobe i2c-dev, sudo modprobe chromeos_laptop, and sudo modprobe cyapa to load everything in the correct order. Your trackpad should work. I still have to figure out how to force Xubuntu to load them in the order I want, but I now have options.

BTW, glxgears gives about 300 fps out of the box. I haven’t played with any optimization. Also, VirtualBox appears to have installed properly, which I have been unable to accomplish using the script configurations.

EDIT: To enable the trackpad, edit /etc/modprobe.d/blacklist.conf to include the line:

blacklist chromeos-laptop

Now edit /etc/modules to include the lines:

i2c-i801

i2c-dev

chromeos-laptop

cyapa

Your trackpad should now be functional.

[2014-08-08: Edited chromeos-laptop entry.]

CTOs (Cancelled-to-order) Stamps

I’ve been collecting stamps for nearly 40 years now and I’ve found a lot of them advertised as used when in fact they are not used, they are simply cancelled. Unfortunately, a number of countries issue stamps in huge quantities that are cancelled during the printing process and have never actually been on an envelope. While this does make these stamps available globally, it also allows less-than-reputable dealers to sell these as used. Many new collectors do not realize this; I can remember when I first started collecting wondering why I was getting all of these cancelled stamps that still had their gum. It didn’t take long to find out that these stamps are printed by the millions and are essentially worthless.

It’s mostly a case of buyer-beware, as many dealers don’t bother mentioning whether the stamps are actually used for postage or CTO. Next time you go to buy a few used Hungary stamps, keep in mind that they probably never saw the inside of a post office nor the face of an envelope but were created specifically for sale to collectors.

S-100 Boards

I recently purchased several S-100 boards from eBay; the prices were good and I figured one of these days I’ll find some documentation for them, or I’ll have the time to chase signals enough to figure out what they do. One looks like an old Winchester MFM or RLL drive board, given the connectors and the number of pins. Another resembles some sort of IDE adapter board. All are by manufacturers with little or no information available. Makes things interesting, I guess. Also have an Alpha Micro AM-919 backplane with lots of slots. Not currently hooked up, still sitting in the shipping box, but should be handy one of these days. Hopefully I’ll come across a set of drawings for it, just to make sure everything is wired the way my smaller AM board is.