GN⁺: MicroMac - 9천원(£5)으로 만드는 매킨토시
(axio.ms)- 원래 매킨토시의 128KB 메모리와 비교하면 라즈베리 파이의 264KB RAM은 충분함. 1984년 매킨토시는 폭스바겐 Golf의 1/3 가격이었음.
- RP2040으로 단색 VGA 및 USB/키보드를 연결하여 맥을 에뮬레이트하여 초기 맥 애플리케이션을 실행
- GitHub 에 공개한 정보를 통해 누구나 직접 구축 가능
Pico-Mac이란?
- Raspberry Pi RP2040 마이크로컨트롤러(Pico 보드 사용)가 단색 VGA 비디오를 구동하고 USB 키보드/마우스 입력을 받아 매킨토시 128K 컴퓨터와 디스크 저장 장치를 에뮬레이트함
- RP2040의 2MB 플래시는 OS와 소프트웨어를 위한 디스크 이미지로 충분
- MacDraw, MacWrite, MacPaint와 같은 초기 매킨토시 애플리케이션을 실행할 수 있음
여정
세 가지 규칙
- 재미있어야 함.
- 68K 어셈블리를 배우고 싶지 않음.
- 초기 Mac 시스템 소프트웨어의 내부를 깊이 파고들고 싶지 않음.
Mac 128K
- Motorola 68000 CPU, 8MHz.
- 메모리 맵, 키보드/마우스, 비디오 스캔 등 기본적인 하드웨어 구성.
- Mac 128K와 Mac 512K는 RAM만 다름.
- Mac Plus는 SCSI와 800K 플로피 드라이브 추가.
Mac 에뮬레이터: umac
- Musashi 68K 인터프리터를 사용하여 Mac 128K 에뮬레이터를 구축함.
- ROM 이미지 로드, RAM 할당, 디버그 메시지 및 로깅 설정.
- 주소 디코딩 추가, CPU 읽기/쓰기 RAM 또는 ROM으로 유도.
- IWM 칩 접근 후 "Unknown Disc" 아이콘을 얻음.
- SDL2 프론트엔드로 감싸서 실시간 화면 리프레시 확인.
하드웨어와 RP2040
- 512x342x1 비디오를 VGA로 출력하고 TinyUSB HID 예제를 통합함.
- VGA PIO 작업을 통해 비디오 데이터를 스캔하고 DMA를 사용하여 프레임버퍼 데이터를 출력함.
- 여러 번의 DMA 채널 재구성을 통해 안정적인 비디오 출력 구현.
다시 에뮬레이션으로
- Musashi의 큰 opcode 디코드 점프 테이블을 플래시에 저장하도록 변경.
- 디스어셈블러와 실행 주기 카운팅 제거.
- RAM 사용을 최소화하여 Pico에서 빌드 및 실행 가능.
성능
- Pico를 250MHz로 오버클럭하여 성능 향상.
- 자주 사용되는 200개의 opcode 함수를 RAM에 저장하여 1.4 MIPS 달성.
작별 인사
- MicroMac 프로젝트는 재미있고 유익한 경험이었음.
- GitHub 링크를 통해 직접 구축 가능.
GN⁺의 의견
- 흥미로운 프로젝트: MicroMac은 저렴한 하드웨어로 고전 매킨토시를 에뮬레이트하는 흥미로운 프로젝트임. 소프트웨어와 하드웨어의 결합을 통해 엔지니어링의 재미를 느낄 수 있음.
- 학습 기회: 이 프로젝트는 초급 소프트웨어 엔지니어에게 하드웨어와 소프트웨어의 상호작용을 이해하는 좋은 기회를 제공함. 특히, 에뮬레이션과 PIO, DMA와 같은 개념을 배울 수 있음.
- 성능 최적화: 성능 최적화 과정에서 다양한 기술적 도전과 해결 방법을 배울 수 있음. 특히, 메모리 관리와 오버클럭킹의 중요성을 이해할 수 있음.
- 커뮤니티와의 공유: GitHub를 통해 프로젝트를 공유하고 다른 사람들과 협력할 수 있는 기회를 제공함. 이는 오픈소스 커뮤니티의 장점을 잘 보여줌.
- 미래 가능성: 이 프로젝트는 더 큰 RAM을 가진 MCU를 사용하여 확장 가능성이 있음. 이는 더 복잡한 애플리케이션을 실행할 수 있는 가능성을 열어줌.
Hacker News 의견
-
VGA 케이블 찾기 어려움: 최근 예술 설치를 위해 VGA 케이블이 필요했지만 주변에 아무도 가지고 있지 않아 결국 새로 구매해야 했음. 많은 케이블이 버려지는 상황에서 아쉬움.
-
Amiga 프로젝트: AmigaOS 3.2를 실행하는 Amiga를 만들고 싶었음. 3D 프린팅으로 원래 모양의 작은 쉘을 만드는 아이디어가 귀여움. 구형 플로피 드라이브가 없어 경험이 약간 부족하지만, 기존 데스크탑 PC에서 에뮬레이터를 실행하는 대신 전용 기계를 사용하는 아이디어가 마음에 듦. RP2040이 68k 역할을 하는 저수준 접근 방식이 흥미로움.
-
Mac의 첫 인상: Mac이 처음 나왔을 때 컴퓨터 가게에서 일했음. 화면 모서리의 둥근 모서리를 보고 그 천재성에 감탄했음.
-
프로젝트 칭찬: 이 프로젝트가 매우 인상적임. 읽는 재미가 있었고, 글쓰기 스타일도 마음에 듦. 임베디드 프로젝트에서 빠른 프로토타이핑/디버깅을 위해 듀얼 타겟 빌드를 시도하는데, PC 빌드를 더 자주 사용하게 됨. 더 많은 사람들이 이렇게 해야 함.
-
VGA 인터페이스: VGA 인터페이스가 가장 인상적임.
-
ESP32 해킹 도전: ESP32에서 vMac을 실행하려고 시도했지만 실패했음. 이 프로젝트는 훨씬 더 높은 수준임. 경의를 표함.
-
작은 SBC 탐구: 마지막 68k Mac이나 90년대 중후반 PPC Mac을 완전한 성능으로 에뮬레이션할 수 있는 가장 작은 SBC가 무엇인지 궁금함. 현대적인 노트북 몸체에 이를 장착하면 System 7.6.1부터 Mac OS 9.x까지 실행할 수 있는 유용한 "젠 모드" 노트북이 될 수 있음.
-
블로그 미러: 블로그가 과부하 상태인 것 같아 미러 링크를 공유함.
-
MacPaint 언급: MacPaint를 언급하지 않은 이유를 설명. Bill Atkinson이 모든 트릭을 알고 있었고, 이를 활용해 MacPaint를 원래 제약 조건 내에서 작동하게 했을 것이라고 생각함. 저자에게는 공정한 싸움이 아님.
-
VGA 커넥터 찾기: VGA 커넥터가 필요했지만 구할 수 없었음. 점심시간에 산책 중 길에서 VGA 케이블을 발견했음. 때로는 이런 일이 일어남.