In-House

수주 업무 바깥에서
만든 것들

고객사 일은 계약 때문에 자세히 적을 수 없습니다. 대신 저희가 직접 만든 것들을 적습니다. 어느 수준까지 내려가서 다루는지는 이쪽이 더 잘 보여줍니다.

아래 프로그램은 배포하지 않습니다. 작업 내용에 대한 설명입니다.

01 / Bare-metal Emulator

STM32에서 돌아가는 Apple IIe

STM32F7508-DK 보드 위에서 Apple IIe Enhanced를 재현했습니다. HAL을 쓰지 않은 베어메탈 구현이고, 디스크 게임이 실제로 돕니다.

CPU
6502 코어 직접 구현
화면
40열 텍스트 / LORES / HIRES — 아티팩트 컬러 재현
디스크
Disk II 슬롯 6 (읽기 전용), DOS 인터리브 니블화
소리
스피커 토글 오디오, 코덱 경유 헤드폰 출력
입력
호스트 키보드 연결, 제어문자·방향키 전달

풀어야 했던 문제: 내부 플래시 64KB

이 MCU의 내부 플래시는 64KB뿐입니다. ROM과 디스크 이미지, 에뮬레이션 코드를 한 번에 넣을 수 없어 2단계 부팅으로 갔습니다. 1단계는 내부 플래시에서 클럭을 올리고 외부 QSPI 플래시를 메모리 맵 모드로 승격시킨 뒤, 2단계 본체로 점프합니다. QSPI 승격은 칩 제조사마다 절차가 달라 공통 동작을 먼저 확보한 뒤 분기하도록 했습니다.

02 / Bare-metal Emulator

같은 보드에서 MSX2

부팅 메뉴에서 고르면 MSX2로 올라옵니다. 한 플랫폼에 두 기종을 올리기 위해 외부 QSPI 구성을 전제로 설계했습니다.

Z80
zexdoc / zexall 전 항목 통과. 인터럽트 · HALT · M1 대기 별도 검증
V9938
스크린 0 · 1 · 2 · 4~8 렌더, 스프라이트 모드 1 · 2, 블리터 32종
PSG
사각파 3채널 + 잡음 + 포락선
메모리
기본 슬롯 4개 + 확장 슬롯, 메모리 매퍼 512KB
카트리지
평면 / Konami / Konami SCC / ASCII8 / ASCII16 매퍼

검증을 어떻게 했는가

CPU는 눈으로 보고 맞다고 할 수 없는 영역입니다. 그래서 Z80 표준 검증 스위트인 zexdoc과 zexall을 전 항목 통과시키는 것을 기준으로 삼았습니다. 플래그 하나가 틀려도 통과하지 못합니다. 프레임당 소요 시간도 구간별로 실측해 실기 속도와 대조했습니다.

아직 없는 것도 적어 둡니다 — 디스크(FDC), SCC 음원, MSX-MUSIC, 80열 텍스트, 멀티컬러 모드. 매퍼는 ROM 크기로만 추정해서 일부 게임을 틀리게 고를 수 있습니다.

03 / Desktop Tool

gVue — Gerber 뷰어

PCB 제조 데이터를 열어 보는 도구를 직접 만들었습니다. Rust로 다시 쓴 크로스플랫폼 버전이 현재 베타입니다.

구현
Rust + egui, macOS · Windows 동작
파싱
Gerber RS-274X, NC Drill(Excellon)
레이어
동시 표시, 가시성 토글, 순서 변경, 레이어 간 비교
표시
Solid / Outline / CenterLine, 패드와 배선을 밝기로 구분
자동화
AI 에이전트가 파일을 열고 레이어를 비교 · 검증할 수 있는 인터페이스 제공

왜 직접 만들었는가

제조 데이터를 넘기기 전 확인하는 일은 매번 반복됩니다. 상용 뷰어는 무겁고, 레이어를 겹쳐 보며 "이 패드가 저 레이어의 홀과 맞는가"를 빠르게 확인하는 용도로는 과합니다. 쓰던 도구를 직접 만들다 보니 PCB 데이터 포맷을 바닥부터 다루게 됐고, 그 경험이 아트워크 검토에 그대로 쓰입니다.

이 정도 깊이가 필요한 일이라면

베어메탈 펌웨어, 저수준 프로토콜, 포맷 파서 — 바닥까지 내려가야 하는 과제를 맡기실 곳을 찾고 계시다면 연락 주세요.

프로젝트 문의하기