Sierra 数码相机在 Apple II 上的应用

Hacker News Top 工具

摘要

本文介绍了通过 Quicktake 软件为 Apple II 添加对 Sierra 系列数码相机的支持,包括具体实现细节以及经过测试的型号,如 Sanyo VPC-G1 和 VPC-G200。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/16 02:58

# Apple II 上的 Sierra 数码相机 来源:https://www.colino.net/wordpress/archives/2026/09/11/sierra-digital-cameras-on-the-apple-ii/ 2026/09/11 - 约 5 分钟阅读 在成功为 Apple II 版 Quicktake(https://www.colino.net/wordpress/quicktake-for-apple-ii)添加对柯达 DC-50 相机的支持后,我开始研究其他那些被夸大“系统需求”的设备。 [](https://www.colino.net/wordpress/wp-content/uploads/image-144.png)爱普生 PhotoPC 用户手册中列出的系统要求 基于 libgphoto2 的源代码,我决定更深入地研究我(以及他们)称之为“Sierra 级”的相机。有许多相机共享同一类协议,源代码中引用了超过 80 个型号。并非所有相机都能在 Apple II 上使用,因为我的 JPEG 解码器是硬编码为处理 640×480 图像的(虽然可以解硬编码,但这会耗费大量内存和 CPU,而且现在速度已经够慢了,我暂时还不想尝试解码和缩放 800×600 或 1024×768 的图像)。即使仅限于 640×480 的相机,这也将提供许多选择。 我在 eBay 上购买了两台非常便宜的三洋相机(一台是 1995 年的 VPC-G1 (https://www.digitalkameramuseum.de/en/cameras/item/sanyo-vpc-g1),也作为爱普生 PhotoPC PCDC001 和 Sierra Imaging SD640 销售;另一台是 1997 年的 VPC-G200 (https://www.digitalkameramuseum.de/en/cameras/item/sanyo-vpc-g200)),并利用 2026 年的夏季居家假期开始编写我的驱动程序:在导致支持柯达 DC50 (https://www.digitalkameramuseum.de/en/cameras/item/kodak-dc50) 的上一个发布周期中,我重构了我的代码,使相机驱动程序现在是具有定义接口的模块。这使得我的程序可以只将相关的驱动程序加载到内存中,使 Apple II 版 Quicktake 可以扩展任意数量的驱动程序,只要它们能装进软盘! [](https://www.colino.net/wordpress/wp-content/uploads/signal-2026-09-09-13-42-25-386_002.jpg)三洋 VPC-G1(1995)[](https://www.colino.net/wordpress/wp-content/uploads/signal-2026-09-09-13-42-25-386.jpg)三洋 VPC-G200(1997) 这是我的“骨架”驱动程序 (https://github.com/colinleroy/a2tools/blob/main/src/quicktake/cameras/SKEL_DRIVER/sierra-serial.c),它只做了些样板工作。它基本上定义了一个支持功能的位域和 16 个“API 方法”,其中大部分是可选的。唯一必需的端点是 `_wakeup`、`_set_speed`、`_get_information` 和 `_get_picture`。 ``` #define sierra_features 0b0000000011011111 // ||||||||_ SET_CAMERA_NAME // |||||||__ SET_CAMERA_TIME // ||||||___ SET_QUALITY, // |||||____ SET_FLASH, // ||||_____ TAKE_PICTURE, // |||______ GET_THUMBNAIL, // ||_______ DELETE_PICTURES, // |________ RESERVED, /* 相机回调函数 */ 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, }; ``` 最终,我的 Sierra 驱动程序实现了我的程序支持的几乎所有功能:所有信息字段(相机名称、相机时间、质量模式、闪光模式、已拍摄照片数、剩余照片数、电池状态)都是可读的,闪光和质量模式是可设置的,我们可以拍照等等。 libgphoto2 的 Sierra 驱动程序让事情变得非常简单,因为它功能齐全且易于理解。虽然其中散布着一些魔法数字,但它们很容易理解并转换为 `#define`。 唯一不可用的功能是 `sierra_get_thumbnail`。实际上它是有实现的,因为从相机获取缩略图很容易:这与获取照片的过程相同,只是使用不同的相机寄存器。但它没有在用户界面中连接起来,因为缩略图是 JPEG 格式的。我没有办法在显示缩略图的用户界面程序中腾出空间来加载 JPEG 解码器,所以我把它排除在外了。 Sierra 相机(至少我拥有的两台三洋相机)还有一个小麻烦,似乎是它们在串行芯片上偷工减料。在 PC 上我可以以 115200bps 的速度与它们通信,但在 Apple II 上不行。使用 Sigrok 抓取的信号显示,起始位在停止位之后过早开始,这令 Apple II 的 ACIA 6551 芯片感到困惑,从而导致帧错误。因此,速度被限制在 19200bps——即使在 IIgs 上也是如此。 [](https://www.colino.net/wordpress/wp-content/uploads/image-145.png)Sigrok 抓取的信号,在 Pulseview 中查看,起始位开始于停止位之上。停止位也提前开始了。[](https://www.colino.net/wordpress/wp-content/uploads/signal-2026-09-09-13-54-35-105.jpg)三洋 VPC-G200 直出照片,一栋带树木的建筑 ## 支持的相机 仅列出我测试过的相机,这将增加对以下相机的支持: - 三洋 VPC-G1 (https://www.digitalkameramuseum.de/en/cameras/item/sanyo-vpc-g1) - 爱普生 PhotoPC PCDC001 (https://www.digitalkameramuseum.de/en/cameras/item/epson-photopc) - Sierra Imaging SD640 (https://www.digitalkameramuseum.de/en/cameras/item/sierra-imaging-sd640) - 三洋 VPC-G200 (https://www.digitalkameramuseum.de/de/digitalkameras/item/sanyo-vpc-g200) 我强烈怀疑以下相机可能开箱即用,但尚未测试: - Agfa ePhoto 307 (https://www.digitalkameramuseum.de/en/cameras/item/agfa-ephoto-307) - Agfa ePhoto 780 (https://www.digitalkameramuseum.de/en/cameras/item/agfa-ephoto-780) - 爱普生 PhotoPC 500 (https://www.digitalkameramuseum.de/en/cameras/item/epson-photopc-500) - 爱普生 PhotoPC 550 (https://www.digitalkameramuseum.de/en/cameras/item/epson-photopc-550) - 奥林巴斯 C-400 (https://www.digitalkameramuseum.de/en/cameras/item/olympus-c-400) - 奥林巴斯 C-400L / D-200L (https://www.digitalkameramuseum.de/en/cameras/item/olympus-c-400l) - 奥林巴斯 C-410L (https://www.digitalkameramuseum.de/en/cameras/item/olympus-c-410l) - 奥林巴斯 C-420L / D-220L (https://www.digitalkameramuseum.de/en/cameras/item/olympus-c-420l) - 宝丽来 PDC-640 (https://www.digitalkameramuseum.de/en/cameras/item/polaroid-pdc-640) - 三洋 VPC-G210 (https://www.digitalkameramuseum.de/en/cameras/item/sanyo-vpc-g210) - 三洋 VPC-G250 (https://www.digitalkameramuseum.de/en/cameras/item/sanyo-vpc-g250) ## 再次重构与下一步 既然 Sierra 驱动程序已经写好,即使相机驱动程序本身在软盘上是以压缩形式(使用 zx02)存储的,程序软盘上也只剩下 6kB 的空间。并不足够添加任何重要的东西……而且我计划添加更多的相机驱动程序! 所以我继续压缩,将用户界面和图像解码器的二进制文件本身也压缩了。我本可以让它们自解压,但那意味着每个二进制文件都需要有自己的解压器副本。所以,我转而扩展了 Oliver Schmidt 的 LOADER.SYSTEM 来处理 zx02 压缩的二进制文件。 下一步是找到一个要实现的新相机驱动程序,它将是佳能 PowerShot 350 (https://www.digitalkameramuseum.de/en/cameras/item/canon-powershot-350),一款 1998 年的相机,比 Apple II 晚 18 年,而且显然有一个极其复杂的协议 (https://github.com/gphoto/libgphoto2/blob/master/camlibs/canon/ps350/ps350proto.txt)。 我在想是否应该重命名 Apple II 版 Quicktake 项目,以反映它支持越来越多的相机这一事实?但我喜欢现在的名字,而且也没有更好的主意。

相似文章

Kodak DC50现已可在Apple II上使用

Hacker News Top

适用于Apple II的Quicktake新版本已发布,增加了对Kodak DC50 Zoom相机的支持,包括图像传输和设置调整功能,可在复古计算机上使用。

Apple Disk II 控制器卡

Hacker News Top

本文详细介绍了 Apple Disk II 控制器卡的技术历史,阐述了史蒂夫·沃兹尼亚克创新的软件驱动设计及其对 Apple II 成功的影响。

让Apple II成为严肃商用机的卡片

Lobsters Hottest

深入探究Videx VideoTerm——这款80列卡片将Apple II转变为严肃商用机,以及通过A2FPGA项目实现的现代FPGA仿真,重点关注硬件架构和MC6845 CRT控制器。

将Swift引入Apple II

Lobsters Hottest

一位开发者创建了SwiftII,这是一个为Apple II打造的Swift风格迷你开发环境,包含REPL、文件浏览器和文本编辑器,为复古硬件带来了现代编程体验。

Siemens PC-X (2015)

Hacker News Top

本文探讨了Siemens PC-X,这是一台1984年的个人电脑,运行SINIX(一个基于Unix的操作系统),并具有独特的硬件规格和设计,为早期计算提供了历史背景。