Skip to content
Tech News
← Back to articles

Sierra digital cameras on the Apple II

read original get Sanyo VPC-G200 digital camera → more articles
Why This Matters

This story matters because it shows a developer bringing modern-style extensible driver architecture to vintage Apple II hardware, enabling old digital cameras from the 1990s to be used with contemporary tools despite inflated 'system requirements' from that era. It's a niche but meaningful example of retrocomputing innovation, preserving old hardware compatibility and demonstrating what's technically possible on constrained legacy systems.

Key Takeaways
Worth a Look

Sanyo VPC-G200 digital camera — If you're into retro computing and Apple II digital camera hacking like this article describes, a Sierra-class camera such as the Sanyo VPC-G200 is a great piece of hardware to experiment with. These vintage cameras use the same underlying protocol referenced in libgphoto2, making them ideal for tinkering with custom drivers and old-school image transfer projects.

See Sanyo VPC-G200 digital camera on Amazon → Affiliate link — we may earn a commission on purchases, at no extra cost to you. Product picked by AI based on this article; it is not a tested recommendation.

After successfully adding support for the Kodak DC-50 camera in Quicktake for Apple II, I investigated what else was there that had vastly overblown “System requirements”.

The Epson PhotoPC user manual page with their System Requirements

Based on libgphoto2’s source code, I chose to give a closer look to what I (and they) call the “Sierra-class” cameras. There are a lot of cameras sharing the same class of protocol there, more than 80 models are referenced. Not all of them will be usable on Apple II, as my JPEG decoder is hardcoded to 640×480 images (de-hardcoding it would be possible, but memory and CPU expensive, and it’s already slow enough as is that I don’t want – yet – to even try decoding and scaling down 800×600 or 1024×768). Even limited to 640×480 cameras, this will open a number of options.

I bought a pair of very cheap Sanyo cameras on eBay (a VPC-G1 from 1995, also sold as Epson PhotoPC PCDC001 and Sierra Imaging SD640, and a VPC-G200 from 1997), and started my 2026 summer staycation implementing my driver: during the previous release cycle, leading to the Kodak DC50 support, I reworked my code so that cameras drivers are now modules with a defined interface. This allows my program to only load the relevant driver into memory, making Quicktake for Apple II extensible with an arbitrary number of drivers as long as it fits on the floppy!

Sanyo VPC-G1 (1995) Sanyo VPC-G200 (1997)

Here’s my “skeleton” driver that does nothing but the boilerplate. It basically defines a bitfield of supported features, and 16 “API methods”, most of which being optional. The only required endpoints are _wakeup , _set_speed , _get_information and _get_picture .

#define sierra_features 0b0000000011011111 // ||||||||_ SET_CAMERA_NAME // |||||||__ SET_CAMERA_TIME // ||||||___ SET_QUALITY, // |||||____ SET_FLASH, // ||||_____ TAKE_PICTURE, // |||______ GET_THUMBNAIL, // ||_______ DELETE_PICTURES, // |________ RESERVED, /* Camera callbacks */ void *sierra_callbacks[] = { /* FEATURES */ (void *)sierra_features, /* WAKEUP */ sierra_wakeup, /* SET_SPEED */ sierra_set_speed, /* SET_CAMERA_NAME */ sierra_set_camera_name, /* SET_CAMERA_TIME */ sierra_set_camera_time, /* GET_INFORMATION */ sierra_get_information, /* SET_QUALITY */ sierra_set_quality, /* SET_FLASH */ sierra_set_flash, /* TAKE_PICTURE */ sierra_take_picture, /* GET_PICTURE */ sierra_get_picture, /* GET_THUMBNAIL */ NULL, /* DELETE_PICTURES */ sierra_delete_pictures, /* GET_FILENAME */ sierra_get_filename, /* THUMB_HISTOGRAM */ NULL, /* THUMB_LOAD_DATA */ NULL, /* GET_QUALITY_STR */ sierra_get_quality_str, /* GET_FLASH_STR */ sierra_get_flash_str, };

In the end, my Sierra driver implements almost everything my program supports: all information fields (camera name, camera time, quality mode, flash mode, pictures taken, pictures remaining, battery status) are readable, flash and quality modes are settable, we can snap a picture, etc.

The libgphoto2 Sierra driver has made things very easy as it is functional and easy to understand. It’s sprinkled with a a few magic numbers here and there, but they were easy to make sense of and #define.

The only feature not available is sierra_get_thumbnail . It actually is implemented, because it is easy to fetch a thumbnail from the camera: it’s the same procedure as getting a picture, using two different camera registers. But it’s not wired in the UI, as the thumbnails are JPEGs. There is no way I have room to load the JPEG decoder in the UI program, where thumbs are displayed, so I left it out.

... continue reading