중고 장터에 국산 8비트 기계가 올라오면 대개 키보드 오른쪽이 유난히 두툼한 사진이 함께 붙는다. 그 두께의 정체가 본체에 박힌 카세트 데크다. SPC-1000을 다시 들여다보게 된 계기도 그 사진 한 장이었다.
SPC-1000은 삼성반도체통신이 1982년에 개발해 1983년부터 보급한 Z80A 기반 가정용 컴퓨터다. Zilog Z80A 4MHz에 메인 RAM 64KB, 허드슨소프트가 만든 Hu-BASIC을 ROM에 담았고, 데이터 레코더를 본체에 통합한 구성이 가장 눈에 띄는 설계다. 지금은 실물 없이도 MAME의 spc1000 드라이버와 CAS 이미지로 그 테이프 로딩 과정을 그대로 재현할 수 있다.
SPC-1000의 기본 사양
| 항목 | 내용 |
|---|---|
| CPU | Zilog Z80A, 4MHz |
| 메인 RAM | 64KB |
| VRAM | 6KB (화면 전용, 메인 RAM과 별도) |
| ROM | 32KB, Hu-BASIC 탑재 |
| 비디오 | AMI S68047 (모토로라 MC6847 계열 VDP, 화면 생성 전용 칩) |
| 화면 모드 | 텍스트 32x16, 세미그래픽 9색, 128x192 컬러, 256x192 2색 |
| 사운드 | General Instrument AY-3-8910, 3채널 8옥타브 |
| 저장 | 본체 내장 데이터 레코더(카세트), 옵션 5.25인치 FDD 320KB |
| 개발/보급 | 1982년 개발, 1983년 보급 |
| 가격 | 1984년 기준 495,000원으로 기록돼 있다 |
VRAM 6KB라는 숫자는 임의로 정해진 값이 아니다. MC6847 계열이 낼 수 있는 가장 큰 모드인 256x192 2색 화면이 픽셀당 1비트로 정확히 6,144바이트를 요구한다. 화면을 꽉 채우는 데 필요한 최소치를 그대로 실장한 구성이다. 참고로 MAME의 I/O 매핑에서는 이 영역이 8KB 창 안에 놓이지만, 그것은 에뮬레이터의 주소 디코딩 편의이지 실장 용량이 아니다.
"국산 최초"라는 표현은 자료마다 기준이 다르다
SPC-1000을 국산 첫 가정용 컴퓨터로 부르는 글이 많지만, 무엇을 국산으로 치고 무엇을 가정용으로 치느냐에 따라 순위가 달라진다. 확실한 것은 삼성이 만든 첫 컴퓨터라는 점, 그리고 대량 보급을 노린 초기 국산 8비트 기종이라는 점이다. 그 이상은 조심스럽게 쓰는 편이 낫다.
카세트 저장을 본체 안으로 끌어들인 설계
당시 8비트 기계는 별도 카세트 데크를 케이블로 물려 쓰는 방식이 일반적이었다. SPC-1000은 데이터 레코더를 키보드 오른쪽에 넣어 기계 하나로 끝나게 만들었다. 케이블 배선과 별도 데크 구입이라는 장벽이 사라진다는 점에서 교육용 보급기로서는 합리적인 선택이다.
다만 내장 데크가 로딩 실패를 없애주지는 않는다. 헤드 오염, 벨트 열화, 테이프 자체의 자성 열화는 그대로 남는다. 실제로 후속 모델인 SPC-1000A에서 데이터 레코더의 오디오 출력과 볼륨 조절 기능이 추가됐는데, 이는 초기형에서 신호 레벨을 손댈 여지가 없다는 점이 문제로 인식됐음을 보여준다.
테이프 전송률은 1200보(baud)로 기록돼 있다. 초당 150바이트 남짓이니 64KB를 가득 채운 프로그램이라면 로딩에만 몇 분이 걸린다. 로딩 화면을 지켜보는 시간이 사용 경험의 일부였던 시절이다.
Hu-BASIC 쪽에서 눈여겨볼 부분은 명령어를 약자로 입력할 수 있다는 점이다. 자료가 밝히는 이점은 타이핑 속도가 아니라 프로그램이 차지하는 크기가 줄어든다는 것이다. 메모리와 테이프 시간이 모두 비쌌던 환경에서는 그쪽이 더 실질적인 이득이다.
CAS 이미지는 테이프 비트를 그대로 담은 파일이다
SPC-1000 소프트웨어는 대부분 .cas 확장자의 이미지로 보존돼 있다. 구조는 단순하다. MAME의 포맷 구현(src/lib/formats/spc1000_cas.cpp)을 보면 16바이트 헤더 SPC-1000.CASfmt가 앞에 오고, 그 뒤로 테이프에 실릴 비트가 바이트 단위로 최상위 비트부터 차례로 채워져 있다.
디코딩된 비트를 소리로 되돌리는 규칙도 코드에 명시돼 있다. 샘플링 주파수 17,000Hz 기준으로 비트 1은 로우 9샘플과 하이 9샘플, 비트 0은 로우 4샘플과 하이 4샘플로 만든다. 비트값에 따라 펄스 길이가 달라지는 방식이라 파형만 보고도 1과 0을 눈으로 구분할 수 있다.
즉 CAS는 WAV처럼 소리를 통째로 담은 파일이 아니라 복원에 필요한 최소 정보만 남긴 포맷이다. 그래서 용량이 작고, 실기 테이프에서 뜬 노이즈 섞인 오디오보다 로딩 성공률이 높다.
MAME로 실제 로딩을 재현하는 절차
MAME에 SPC-1000 드라이버가 들어간 것은 2009년이고, 카세트와 플로피 지원이 이후 계속 보강됐다. 드라이버 이름은 spc1000, 크레딧에는 Miodrag Milanovic과 Robbbert가 올라 있다.
먼저 드라이버가 어떤 미디어 슬롯을 여는지 확인한다.
mame -listmedia spc1000
카세트 슬롯이 잡히면 CAS 이미지를 물려 실행한다.
mame spc1000 -cass /path/to/program.cas
테이프 제어는 MAME 공식 문서에 정의된 기본 키를 쓴다. F2가 테이프 시작, Shift+F2가 정지다. 되감기나 빨리감기에 해당하는 기본 키는 문서에 정의돼 있지 않다. 테이프 위치를 확인하거나 세부 조작이 필요하면 Tab을 눌러 메인 메뉴를 열고 Tape Control 항목으로 들어간다. 이 항목은 카세트 미디어를 쓰는 기종에서만 나타난다.
순서는 BASIC 프롬프트에서 로드 명령을 먼저 입력한 뒤 F2로 테이프를 시작하는 쪽이다. 실기와 같은 순서이고, 반대로 하면 헤더를 놓쳐 로딩이 어긋난다.
수집가 관점에서 본 난이도와 고장 부위
SPC-1000은 국내에서만 유통된 기종이라 해외 경매에서는 거의 나오지 않는다. 국내 중고 시장에서도 매물 자체가 드물고, 나오더라도 동작 여부가 불확실한 상태가 많다.
자주 보고되는 고장 부위 중 하나가 카세트 데크다. 고무 벨트는 40년이 지나면 늘어나거나 녹아 붙고, 헤드에는 산화물이 눌어붙는다. 그 밖에 전해 커패시터 노후로 인한 전원부 불안정, 키보드 접점 산화도 흔한 증상이다. 전원이 들어와도 화면이 흔들리거나 특정 키만 먹지 않는 식으로 나타난다.
실물을 구하기 어렵다면 에뮬레이터로 접근하는 편이 현실적이다. 데크 벨트를 교체하지 않고도 당시 소프트웨어가 어떤 속도로 어떤 화면을 그렸는지는 충분히 확인할 수 있다.
더 찾아볼 자료
CAS 인코딩의 실제 구현은 MAME 저장소의 spc1000.cpp와 같은 저장소의 spc1000_cas.cpp를 직접 읽는 것이 가장 빠르다. 주변 기기 구성과 후속 모델 계보는 나무위키 SPC-1000 문서가 국내 자료 중 상세한 편이고, 영문 정리는 HandWiki에 있다. 당시 잡지와 매뉴얼 스캔은 archive.org에서 기종명으로 검색하면 관련 문서가 나온다.
SPC-1000 이후 삼성은 SPC-300, SPC-1500을 내놓고 SPC-800으로 MSX 규격에 합류한다. 국산 8비트 계보를 따라가려면 SPC-1000이 그 출발점에 해당한다.