Hacker News

A 386 PC for Your RP2350

RP2350를 위한 386 PC — frank-386 에뮬레이터

Raspberry Pi Pico 2(RP2350) 같은 마이크로컨트롤러 보드에서 DOS, Windows 3.x/95, Linux까지 부팅되는 i386 PC 에뮬레이터 frank-386이 공개됐습니다. Tiny386을 기반으로 VGA/HDMI 출력, Sound Blaster 16·AdLib 사운드, SD 카드 디스크 이미지 핫스왑까지 지원해, 저렴한 MCU만으로 완전한 레트로 PC를 구성할 수 있습니다.

본문

Raspberry Pi Pico 2(RP2350) 계열 보드 위에서 완전한 386 PC를 구동하는 펌웨어 frank-386이 공개됐습니다. Chunhui He의 Tiny386을 기반으로 한 이 프로젝트는 DOS와 Windows 3.x, Windows 95, Linux까지 부팅할 수 있으며, VGA/HDMI 디스플레이와 사운드 카드, SD 카드 스토리지를 갖춘 '손바닥 크기의 386 PC'를 지향합니다.

에뮬레이션 기능과 사양

CPU는 완전한 i386에 일부 i486/i586 명령어까지 에뮬레이션하고, x87 FPU는 옵션으로 켤 수 있습니다. 8MB PSRAM을 활용해 최대 8MB RAM을 제공하고, 그래픽은 텍스트 모드부터 640x480 해상도까지 VGA와 HDMI로 출력합니다. 사운드는 AdLib OPL2, Sound Blaster 16, PC Speaker, Tandy, Covox, Disney Sound Source를 지원합니다. 입력은 PS/2 키보드·마우스와 네이티브 USB 호스트를 통한 USB 키보드·마우스, 그리고 D-패드로 마우스를 흉내 내는 NES 게임패드 모드를 모두 지원합니다. 다만 USB HID를 활성화하면 네이티브 USB 포트가 입력 전용이 되어 USB 시리얼 콘솔(CDC)이 꺼지므로, 디버그 출력은 UART를 사용해야 합니다.

SD 카드 구성과 런타임 관리

SD 카드 루트에 386/ 디렉터리를 만들고 SeaBIOS의 bios.bin, vgabios.bin, 디스크 이미지, config.ini를 배치합니다. 플로피는 표준 1.44MB 이미지, 하드 디스크는 최대 2GB raw 이미지, CD-ROM은 ISO 9660 이미지를 사용하며 SD 카드는 SPI 모드로 연결됩니다. 부팅 후에는 Win+F12로 디스크 매니저를 열어 플로피(A:, B:), 하드 디스크(C:, D:), CD-ROM(E:) 이미지를 재시작 없이 삽입·배출할 수 있고, 변경 사항은 config.ini에 자동 저장됩니다. Win+F11의 설정 메뉴에서는 메모리 크기(1~8MB), CPU 세대(386/486/586), FPU, 사운드 장치, RP2350 클럭과 전압, PSRAM/플래시 주파수를 조정합니다. 빌드 옵션상 CPU는 378MHz(기본) 또는 504MHz, PSRAM은 133/166MHz로 오버클럭됩니다.

지원 보드와 빌드

공식 지원 대상은 FRANK 개발 보드, Murmulator(M1/M2), Olimex PICO-PC, Waveshare RP2350-PiZero이며, 보드별로 M1·M2·PC·Z2 네 가지 GPIO 레이아웃을 제공합니다. Pico SDK 2.0 이상과 ARM GCC 툴체인이 필요하고, build.sh에 보드·클럭·USB HID·HDMI·디버그 플래그를 넘겨 빌드하며, release.sh로 보드별 .uf2 펌웨어를 한꺼번에 생성합니다. Windows 95는 setup /im으로 메모리 검사를 우회하고 patcher9x를 적용해야 하는 등 게스트 OS별 설치 요령도 문서에 정리되어 있습니다.

기반 프로젝트와 라이선스

코어 CPU 에뮬레이터는 Tiny386(BSD 3-Clause), RP2350 통합과 디스크 관리·VGA 드라이버 개념은 xrip의 Pico-286(MIT), 8259 PIC·8254 PIT·8042 컨트롤러·PCI·VGA·AdLib 프록시 등 주변기기 코드는 QEMU(MIT), FM OPL 사운드는 MAME의 fmopl(LGPL)에서 가져왔습니다. 여기에 inih, SeaBIOS, FatFs, Pico SDK가 더해지며, frank-386 자체는 MIT 라이선스로 공개됐습니다.

Hacker News 반응

  • @weinzierl — Windows 96까지 돌릴 수 있는 것 같습니다. 정말 멋지네요. 예전에 쓰던 Slackware 커널 1.2.13이 돌아가는지 언젠가 시도해 봐야겠습니다. 당시 4MB, 25MHz 386 DX에서 썼으니 될 겁니다.
  • @fifilura — (Slackware 이야기에) 이제 20장짜리 플로피 디스크 세트를 어디에 뒀는지만 찾으면 됩니다.
  • @weinzierl — 제 기억에는 3.5인치 디스크 두 장(부트디스크·루트디스크)과 CD 두 장이었습니다. 하나는 배포판 본체, 다른 하나는 sunsite 미러였죠. 기억이 흐릿할 수는 있어도 그 보물이 어디 있는지는 정확히 압니다.
  • @rwmj — 예전에 386에 20장 넘는 플로피로 설치했던 기억이 확실히 납니다. 대부분 패키지 디스크라 전부 설치할 필요는 없었지만요.
  • @jalk — 제 기억이 맞다면 Emacs가 디스크 상당수를 차지했습니다.

원문: GitHub / 번역·요약: Trawling