아두이노 듀 플래시 스토리지 라이브러리 - 듀의 플래시 메모리에 데이터 저장용 (EEPROM 없음)
아두이노 듀 소프트_UART 라이브러리 - 임의 핀을 시리얼 인터페이스로 사용 가능하게 함
프로젝트 소개
오랫동안 알테어 8800 컴퓨터를 직접 다뤄보고 싶었습니다. 하지만 작동하는 빈티지 알테어는 희귀하고 비싸며(1,500~2,500달러), 알테어 클론 같은 대안도 600달러로 여전히 부담스러웠습니다. 다행히 알테어 클론의 제작자인 마이크 더글라스가 수집한 방대한 문서와 소프트웨어를 커뮤니티에 공개해 주었습니다.
아두이노 메가 2560의 사양을 보며 I/O 핀 수로 알테어 전면 패널의 LED와 스위치를 직접 제어할 수 있을지 고민했고, 메가에는 딱 맞는 수의 I/O 핀이 있음을 발견했습니다. 그렇게 나만의 알테어 클론 제작을 시작했습니다.
완성된 알테어 8800 시뮬레이터
아두이노 메가 vs 듀 비교
아두이노 메가로 시뮬레이터를 구동하면 잘 작동하지만, 에뮬레이션 속도가 원래 알테어의 약 25%에 불과하고 에뮬레이션 RAM이 6KB로 제한됩니다. 영구 저장용 EEPROM도 4KB뿐입니다.
반면 아두이노 듀는 64KB의 풀 에뮬레이션 RAM을 제공하며 원래 속도에 가깝게 실행됩니다. 또한 런타임에 플래시 메모리에 데이터를 저장할 수 있어, 시뮬레이터 코드를 제외한 512KB 플래시 중 32KB를 반영구 저장소로 활용 가능합니다.
주요 특징
알테어 전면 패널 요소의 동작을 정확하게 재현
아두이노 듀 사용 시 원래 알테어 8800과 거의 동일한 속도 구현 (메가는 25% 속도)
에뮬레이션 RAM: 듀 64KB / 메가 6KB
알테어 프로그램 다수 내장: 퐁(Pong), 알테어 4K 베이직(마이크로소프트 첫 제품), 확장 베이직, MITS 프로그래밍 시스템 II(듀 전용), 타임 쉐어링 베이직 등
베이직 및 어셈블러 예제 프로그램 내장
88-SIO, 88-2SIO, 88-ACR(오디오 카세트 인터페이스) 보드 에뮬레이션. 각 시리얼 장치는 아두이노 시리얼 인터페이스에 매핑 가능. 기본적으로 88-SIO와 88-2SIO 포트 1이 USB 시리얼 포트(115200 baud 8n1)에 매핑됨. 블루투스 동글 연결 권장
듀의 경우 메인 시리얼(USB)과 Serial1(핀 18/19) 동시 사용 가능
각 시리얼 장치(ACR 테이프 포함)로 전송된 데이터를 로컬 저장소(EEPROM/플래시)에 최대 256개 파일로 캡처 및 재생 가능
카세트 인터페이스: 확장 베이직의 CSAVE/CLOAD 명령 자동 지원
크로멤코 대즐러(Dazzler) 그래픽 보드 에뮬레이션 (추가 하드웨어/소프트웨어 필요)
프로세서 테크놀로지 VDM-1 비디오 터미널 보드 에뮬레이션 (추가 하드웨어/소프트웨어 필요)
최대 16개의 88-DCDD 디스크 드라이브 에뮬레이션 (기본 4개). SD 카드를 아두이노 SPI 헤더에 연결 필요. 듀에서만 지원
88-HDSK 하드 디스크 컨트롤러 에뮬레이션 (최대 4개 유닛, 유닛당 4개 플래터)
88-RTC-VI 보드 에뮬레이션 (실시간 클록 및 벡터 인터럽트). 알테어 타임 쉐어링 베이직 구동 가능
256바이트 페이지 단위 메모리 영구 저장/로드 지원 (전면 패널로 입력한 프로그램 저장용)
내장 설정 에디터로 다양한 설정 변경 가능
주의: 듀 사용 시 시뮬레이터 내 캡처/저장 데이터는 새 스케치 업로드 시 모두 지워집니다(플래시 메모리 사용, EEPROM 없음). SD 카드 연결 시 데이터는 SD 카드에 저장되어 스케치 업로드 후에도 유지됩니다.
문서화
시뮬레이터는 실제 알테어 8800과 동일하게 작동하므로, 구글에서 쉽게 찾을 수 있는 원래 알테어 문서로 전면 패널 스위치 조작법을 익힐 수 있습니다.
단, 시뮬레이터에는 원래 알테어에 없던 AUX1/AUX2 스위치를 통한 추가 기능과 내장 소프트웨어가 있습니다. 이에 대한 상세 문서는 소스 저장소의 Documentation.pdf를 참조하세요.
제작 지침
목표는 지원 회로를 최소화하는 것이었습니다. 아두이노 메가와 듀 모두 전면 패널 모든 요소를 직접 배선할 만큼 충분한 I/O 핀을 가집니다. 추가 회로는 36개 LED를 구동하기 위한 트랜지스터와 저항뿐입니다(LED를 아두이노 출력 핀에 직접 연결하면 동시 점등 시 전류 한계 초과).
전체 회로도는 반복적이라(36개 동일한 LED 드라이버, 32개 스위치 배선) 비효율적이므로, 대신 각 요소가 어느 아두이노 핀에 연결되는지 상세 표와 서브 회로(LED 드라이버 등) 회로도를 제공합니다. 프리츠 파일에는 스트립보드 상 LED 드라이버 부품 레이아웃이 포함되어 있습니다.
전면 패널 제작을 위해 알테어 전면 패널 고해상도 스캔본(www.vintage-computer.com)을 복사점에서 카드지에 인쇄했고, 백킹에는 22게이지 금속판을 사용해 일반 전동 드릴로 LED와 스위치 구멍을 뚫었습니다. LED 드라이버 회로는 스트립보드에 납땜해 LED에 직접 연결하고, 금속판이 LED를 고정합니다.
우드 박스로 고정된 전면 패널
전면 패널 전원 스위치 배선: 아두이노와 같은 전원 소켓을 박스에 추가하고, 전면 패널 스위치를 거쳐 아두이노 전원 플러그로 연결했습니다.
듀 사용 시 최대 16개 88-DCDD 디스크 드라이브 에뮬레이션을 위해 듀의 SPI 포트에 SD 카드를 연결합니다. 회로도 문서 마지막 페이지에 상세 배선도가 있습니다.
중요: 아두이노 듀에 스케치 업로드 전, 컴파일러 최적화 설정을 "performance"(-O3)로 변경해야 합니다. 기본값은 "size"(-Os)로 시뮬레이터 속도가 크게 느려집니다. 변경 방법은 platform.txt 파일에서 -Os를 -O3로 모두 교체하면 됩니다.
시뮬레이터 소프트웨어는 전면 패널 하드웨어 없이 베어본 아두이노(메가 또는 듀)에서도 실행 가능합니다. config.h에서 #define STANDALONE 1로 설정하면 가상 전면 패널로 일부 프로그램 실행 가능하지만, 이는 본연의 용도가 아닙니다. 하드웨어 제작 없이 에뮬레이터만 원한다면 PC 기반 소프트웨어 에뮬레이터 사용을 권장합니다.
감사의 말
마이크 더글라스(deramp5113): 알테어 8800 교육 영상 제작 및 방대한 하드웨어/소프트웨어 매뉴얼 수집·공개 (altairclone.com)
마틴 에버하르트: ADEXER 툴로 하드디스크 지원 저수준 디버깅 지원. 콤보 디스크 부트로더(CDBL) 및 하드 디스크 부트로더(HDBL) 작성
i8080 코어 모델 프로젝트: 하프 캐리 연산 및 DAA 명령어 효율적 구현 참고
내장 소프트웨어 출처: 알테어 4K 베이직, 확장 ROM 베이직, 타임 쉐어링 베이직, 킬-더-비트 게임, 퐁 게임, '데이지, 데이지...' 음악, 뮤직 시스템, MITS 프로그래밍 시스템 II, 알테어 턴키 모니터, i8080 CPU 진단/운동 프로그램 등 (모두 마이크 더글라스 수집·공개)
디스크/하드디스크 이미지: altairclone.com 및 deramp.com 제공 (CP/M, 디스크 베이직, 알테어 DOS, 포트란 등)