TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 31 READS

1980년대 애플 II로 90년대 디지털 카메라를 굴리는 법

1980년대 애플 II로 90년대 디지털 카메라를 굴리는 법
SOURCE IMAGE · HACKER NEWS

레트로 컴퓨팅 커뮤니티에서 진행 중인 'Quicktake for Apple II' 프로젝트가 지원 카메라 목록을 다시 한 번 크게 늘렸다. 개발자는 앞선 릴리스에서 코닥 DC-50 카메라를 성공적으로 붙인 뒤, 실제 성능에 비해 '시스템 요구사항'이 과장되게 높게 표기된 다른 기종들을 조사했고, 그 결과 이른바 '시에라(Sierra) 계열' 카메라군에 주목했다. 이 계열은 오픈소스 라이브러리 libgphoto2에서도 하나의 프로토콜 클래스로 묶여 있으며, 80개가 넘는 모델이 같은 통신 방식을 공유한다. 1980년 전후에 나온 8비트 애플 II로 1990년대 디지털 카메라의 사진을 직접 내려받는다는, 실용성보다 기술적 도전에 가까운 작업이다.

다만 80여 종을 모두 쓸 수 있는 것은 아니다. 프로젝트의 JPEG 디코더가 640×480 해상도로 하드코딩돼 있기 때문이다. 개발자는 이를 유연하게 바꾸는 것 자체는 가능하지만 메모리와 CPU 부담이 크고, 지금도 충분히 느린 상황에서 800×600이나 1024×768 이미지를 디코딩한 뒤 축소하는 작업은 아직 시도할 생각이 없다고 밝혔다. 그래서 실질적인 대상은 640×480급 카메라로 좁혀진다. 그럼에도 이 제약 안에서 선택지는 꽤 넓어진다.

모듈화된 드라이버 구조

이번 작업의 핵심은 카메라 드라이버를 모듈화한 설계 변경이다. 코닥 DC-50 지원을 준비하던 직전 릴리스 주기에 개발자는 각 드라이버가 정해진 인터페이스를 따르는 모듈이 되도록 코드를 재구성했다. 덕분에 프로그램은 필요한 드라이버만 메모리에 올리고, 플로피 용량이 허용하는 한 임의의 수만큼 드라이버를 추가할 수 있게 됐다. 뼈대가 되는 스켈레톤 드라이버는 지원 기능을 나타내는 비트필드와 16개의 API 메서드를 정의하는데, 대부분은 선택 사항이고 반드시 구현해야 하는 것은 _wakeup, _set_speed, _get_information, _get_picture 네 가지뿐이다.

실제 구입한 하드웨어는 eBay에서 저렴하게 확보한 산요 카메라 두 대다. 1995년형 VPC-G1(엡손 PhotoPC PCDC001, 시에라 이미징 SD640이라는 이름으로도 판매됨)과 1997년형 VPC-G200이다. 개발자는 2026년 여름 휴가를 이 드라이버 구현에 썼다고 한다. 완성된 시에라 드라이버는 프로그램이 지원하는 기능 거의 전부를 구현한다. 카메라 이름, 카메라 시각, 화질 모드, 플래시 모드, 촬영한 사진 수, 남은 촬영 가능 수, 배터리 상태 같은 정보 필드를 모두 읽을 수 있고, 플래시와 화질 모드는 설정도 가능하며, 셔터를 눌러 촬영하는 것도 된다. libgphoto2의 시에라 드라이버가 기능적으로 잘 동작하고 이해하기 쉬웠던 점이 작업을 크게 수월하게 만들었다고 한다. 코드 곳곳의 매직 넘버도 의미를 파악해 #define으로 정리했다.

유일하게 빠진 기능은 썸네일 조회다. 사실 카메라에서 썸네일을 가져오는 절차는 일반 사진을 받아오는 것과 동일하고 레지스터만 다르게 쓰면 되기 때문에 구현 자체는 돼 있다. 문제는 썸네일이 JPEG 형식이라는 점이다. 썸네일이 표시되는 UI 프로그램에는 JPEG 디코더를 적재할 공간이 없어, 기능은 만들어 두되 UI에 연결하지 않은 채로 남겨 뒀다.

값싼 부품이 만든 속도의 벽

이 프로젝트가 다루는 문제 중 상당수는 결국 오래된 하드웨어의 물리적 한계다. 개발자가 가진 두 산요 카메라는 직렬 통신 칩에서 원가를 절감한 흔적이 보인다. PC에서는 115200bps로 통신되지만 애플 II에서는 그 속도가 나오지 않는다. Sigrok로 신호를 캡처해 보니 정지 비트(stop bit) 직후 시작 비트(start bit)가 지나치게 빨리 시작돼, 애플 II의 ACIA 6551 칩이 이를 제대로 처리하지 못하고 프레이밍 오류를 낸다. 결국 속도는 성능이 더 나은 IIgs에서조차 19200bps로 제한된다. 이는 소프트웨어로 우회하기 어려운, 상대편 칩 설계에서 비롯된 제약이라는 점에서 시사적이다.

용량 관리 역시 만만치 않은 과제다. 카메라 드라이버들을 zx02로 압축해 플로피에 넣었는데도 프로그램 플로피에는 6kB밖에 남지 않았다. 더 많은 드라이버를 추가할 계획이라 이 정도로는 부족했다. 그래서 개발자는 UI와 이미지 디코더 바이너리 자체까지 압축했다. 바이너리마다 자가 압축 해제 코드를 넣으면 압축 해제기가 여러 벌 중복되므로, 대신 올리버 슈미트의 LOADER.SYSTEM을 확장해 zx02로 압축된 바이너리를 직접 처리하도록 만들었다. 압축 해제기를 로더 한 곳에 모아 중복을 없앤 셈이다.

다음 목표는 1998년 출시된 캐논 파워샷 350이다. 애플 II보다 18년이나 어린 이 카메라는 프로토콜이 상당히 까다로운 것으로 보인다고 개발자는 예고했다. 지원 카메라가 계속 늘면서 'Quicktake for Apple II'라는 이름을 바꿔야 하나 고민도 내비쳤지만, 지금 이름이 마음에 들고 더 나은 대안도 없어 유지하는 쪽으로 기운 상태다. 실무적으로 보면 이 프로젝트는 특정 카메라 지원 자체보다, 극도로 제한된 자원 위에서 확장 가능한 드라이버 인터페이스를 설계하고 압축과 로더 계층으로 용량 한계를 밀어내는 방식이 더 흥미로운 참고 사례다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://www.colino.net/wordpress/archives/2026/09/11/sierra-...
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...