본문 바로가기
IT/내가 경험한 우리나라 컴퓨터 역사

93년도 486 들이고 한 뻘짓 ㅋㅋㅋ

by hexcode 2026. 6. 12.
반응형

 

93년도 486 들이고 한 뻘짓 ㅋㅋㅋ


그 녀석이 우리 집에 온 날을 아직도 기억한다.

486DX2-50. 박스를 뜯는 순간 풍기던 새 기판 냄새, 플라스틱과 납땜 냄새가 뒤섞인 그 독특한 향기. 당시 대부분의 친구들이 286, 잘해봐야 386을 쓰던 시절에 486이라는 숫자는 그 자체로 위압감이 있었다. 그런데 나는 그 녀석을 손에 넣은 지 채 일주일도 안 돼서 분해하기 시작했다.


오실레이터 하나로 등급 세탁

처음 저지른 뻘짓은 오버클럭이었다. 난 전자공학에 관심많아 IC칩에 클럭이 어떻게 영향을 주는지 대강 알고 있었다.

486DX2는 클럭 더블러 구조다. 외부 버스 클럭을 내부에서 두 배로 곱해 동작한다. DX2-50은 25MHz 오실레이터를 써서 내부 50MHz로 돌고, DX2-66은 33MHz 오실레이터로 내부 66MHz를 뽑아낸다. 그 둘의 차이는 딱 오실레이터 하나. 근데 가격 차이는 어마어마했다.

"오실레이터만 갈면 DX2-66이 되는 거 아닌가?"

납땜 인두를 꺼냈다. 기판에 박혀있던 25MHz 오실레이터를 조심스럽게 들어내고, 33MHz짜리를 꽂았다. 부팅 화면에 뜬 숫자: 66MHz.

성공이었다. 적어도 여름이 오기 전까지는.

문제는 오실레이터를 바꾸면 CPU만 빨라지는 게 아니라는 것이다. ISA 버스도, 메모리 타이밍도 같이 올라간다. 정격 8MHz 권장인 ISA 버스가 갑자기 16.5MHz로 두들겨 맞는 셈이다. 한여름 낮에 게임 한 시간 돌리면 시스템이 조용히 뻗었다. 오실레이터를 도로 25MHz로 갈아끼우고, 다시 33MHz로 바꾸고. 그 짓을 계절마다 반복했다. 나중엔 소켓이 나와 이걸로 갈아끼웠지만. 그 이후엔 딥 스위치 방식 오늘날은 바이오스에서...

지금 생각하면 완전한 뻘짓이지만, 당시엔 그게 진짜 엔지니어링이라고 믿었다. 내가 아마 국내 최초 오버클럭 선구자 아닐까 싶다.


640KB 전쟁

486 시대의 진짜 전쟁터는 클럭이 아니라 메모리였다.

DOS는 640KB 이상을 쓸 수 없었다. 아니, 정확히는 Upper Memory, Extended Memory, Expanded Memory 같은 개념들이 있었지만 게임이 실제로 쓸 수 있는 영역은 Conventional Memory 640KB가 전부였다. 문제는 그 640KB 안에 마우스 드라이버, 사운드 드라이버, CD-ROM 드라이버, 각종 TSR 프로그램들이 다 올라와 있었다는 것이다.

게임 실행 전 남은 메모리: 580KB. 게임 요구 사양: 600KB 이상. 이 상황이 일상이었다.

해법은 최적화였다. MS가 기본 제공하는 EMM386 대신 서드파티 QEMM-386을 구했다. Quarterdeck이 만든 이 녀석은 Stealth라는 기술을 써서 ROM 코드를 RAM으로 매핑하고, Upper Memory 확보량을 극대화했다. Optimize 기능을 돌리면 CONFIG.SYS와 AUTOEXEC.BAT의 드라이버 로드 순서를 자동으로 최적화해줬다.

마우스 드라이버도 갈았다. MS 기본 MOUSE.COM은 17KB짜리 뚱보다. CuteMouse 같은 경량 드라이버는 3~4KB. DEVICEHIGH=로 Upper Memory에 때려박고, CD-ROM 드라이버도 올리고, 사운드 드라이버도 올렸다. 결과: Conventional Memory 628KB 확보.

그 숫자를 보던 순간의 희열은 지금도 생생하다. 마치 시스템 튜닝 벤치마크에서 신기록 찍은 기분이랄까.


디스크는 부풀리는 것

하드디스크는 비쌌다. 250MB짜리 하나가 당시 몇십만 원이었다.

해법은 DoubleSpace. DOS 6.0에 MS가 번들로 때려넣은 실시간 압축 드라이버다. 드라이브 전체를 CVF(Compressed Volume File)로 만들어서 읽고 쓸 때마다 실시간으로 압축/해제한다. 텍스트 파일 기준으로는 진짜 2배 가까이 나왔다.

물론 TSR로 상주하니까 메모리를 또 먹는다. 640KB 전쟁에 새로운 전선이 추가된 것이다.

5.25인치 플로피도 뻥튀기했다. 360KB짜리 2DD 디스크를 1.2MB HD 드라이브에 넣고 800KB로 포맷하는 유틸리티가 있었다. HD 드라이브의 정밀한 헤드를 이용해 비표준 섹터 구조로 더 촘촘하게 기록하는 방식이다. 덕분에 디스크 한 장에 더 많이 담을 수 있었지만, 그 유틸 없는 다른 PC에서는 못 읽는다는 단점이 있었다. 그래도 상관없었다. 당시 유틸 하나 들고 다니는 건 기본이었으니까.


IRQ는 영역 싸움이다

사운드카드를 달고, 모뎀을 달면서 진짜 문제가 시작됐다.

PnP(Plug and Play)가 없던 시절, ISA 카드의 IRQ 설정은 점퍼로 직접 했다. 그리고 ISA 버스는 IRQ 공유가 안 된다. 카드마다 각자 다른 IRQ를 써야 한다. 사운드 블라스터가 IRQ 5를 쓰면 모뎀은 다른 걸 써야 했다. COM2는 IRQ 3, COM1은 IRQ 4. 여기에 LPT 포트까지 얽히면 IRQ 테트리스가 시작된다.

충돌이 나면 시스템이 죽거나, 소리가 안 나거나, 모뎀이 묵음이 된다. 원인은 점퍼 하나. 카드 뽑고, 점퍼 바꾸고, 다시 꽂고, 부팅. 이걸 될 때까지 반복하는 게 당시 하드웨어 설치의 일상이었다.

지금 Kubernetes 노드 네트워크 설정 디버깅하는 것과 본질은 똑같다. 리소스 충돌, 격리, 재할당. 30년 전에 이미 그 개념을 IRQ 점퍼로 배웠던 셈이다.


HEX는 열쇠다

이 모든 뻘짓 중에서 가장 재미있었던 건 세이브 파일 조작이었다.

페르시아 왕자의 체력 값, 프린세스 메이커의 자금, 심시티의 도시 예산. 이것들은 결국 파일 어딘가에 저장된 바이트 값이다. HEX 에디터로 파일을 열면 의미 없어 보이는 숫자들이 늘어서 있지만, 게임을 켜고 값을 하나 바꿔보면 어느 오프셋이 무슨 의미인지 역추적할 수 있다.

프린세스 메이커 세이브 파일에서 자금 오프셋을 찾아 FF FF로 바꾸던 그 순간의 쾌감. 게임이 그 값을 그대로 믿어버린다는 사실이 신기하고 재미있었다. 세상이 내 손 안에 있는 기분이랄까.

자연스럽게 어셈블리에 관심이 생겼다. HEX가 보이면 그 뒤에 어떤 코드가 있는지 궁금해졌다. 하이텔, 천리안, 호롱불 네트워크 아이디를 HEXCODE로 지은 건 그래서다. 나는 HEX를 읽는 사람이고 싶었다.


게임 락은 그냥 분기문이다

게임사들도 호락호락하지 않았다.

정품 책자 인증, 디스크 배드섹터 위장, 비표준 트랙 기록. 복제 방지 기술들이 쏟아졌다. 책자 인증은 특정 페이지의 특정 단어를 입력해야 게임이 실행됐고, 디스크 락은 일반 카피 프로그램으로는 복제 자체가 안 됐다.

하지만 결국 그것도 코드다. 인증이 성공하면 JMP로 게임 본체로 점프하고, 실패하면 종료 루틴으로 점프한다. SoftICE로 런타임을 추적하면 그 분기점이 보인다. JNE를 NOP로 패치하거나, 실패 분기를 성공 분기로 바꾸면 끝이다.

CMP AX, 0
JNE fail_exit   ; 이 한 줄을
NOP             ; 이렇게 바꾸면

락이 풀린다. 어떤 정교한 복제 방지도 결국 분기문 하나로 수렴한다는 걸 그때 배웠다.

SoftICE는 커널 레벨 디버거라 게임이 눈치채지 못했다. 그 툴을 처음 손에 넣었을 때, 마치 시스템의 속을 들여다보는 X레이를 가진 기분이었다.


필수 툴은 따로 있다

뻘짓을 제대로 하려면 도구가 있어야 한다.

당시 DOS 유저 필수 유틸의 양대 산맥은 Norton UtilitiesPC Tools였다. 노턴은 이름값이 있었다. 피터 노턴의 얼굴이 박스에 떡하니 박혀있었고, 브랜드 파워로 많은 사람들이 노턴을 먼저 집었다.

하지만 나는 PC Tools 파였다.

이유는 단순했다. 더 쓸 만했다. 노턴이 디스크 복구와 유틸리티 모음에 집중했다면, PC Tools는 파일 관리, 백업, 디스크 편집, 심지어 간이 셸까지 하나의 패키지에 다 때려넣은 올인원 도구였다. PC Shell은 DOS 위에서 돌아가는 파일 매니저로 Norton Commander랑 비슷한 포지션이었는데, 통합 환경이 편했다. 디스크 에디터로 섹터 단위 HEX를 바로 들여다볼 수 있는 것도 매력이었다.

노턴이 정장 입은 엔지니어라면, PC Tools는 작업복 입고 현장에서 바로 쓰는 느낌. 나한텐 후자가 맞았다.


뻘짓이 쌓이면 실력이 된다

93년의 나는 그냥 놀고 싶었다. 더 빠른 PC로 게임하고 싶었고, 메모리 아껴서 게임 돌리고 싶었고, 세이브 파일 조작해서 무적 캐릭터 만들고 싶었다.

그런데 그 욕심들이 오실레이터 교체를 가르쳤고, 메모리 맵 구조를 가르쳤고, 파일 시스템을 가르쳤고, 어셈블리를 가르쳤다.

JMP 한 줄로 게임 락을 뚫던 그 손이, 30년 후엔 인프라 자동화 스크립트를 짜고 있다.

결국 같은 짓이다. 막힌 거 뚫기.


1993년, 486DX2-50 앞에서.

반응형