
C64를 쓴 뒤 Intel 8086 PC를 받았다. 이 컴퓨터는 이후 모든 x86 기기의 뿌리가 된 초기 IBM PC 아키텍처를 따랐다. 수학 보조 프로세서는 없었지만, 나중에 직접 찾아서 장착했다. 작은 8087 칩 덕분에 부동소수점 연산을 할 수 있게 됐고, 더 본격적인 프로그래밍의 길이 열렸다.
C64의 6510 프로세서에서 8086으로 옮겨간 변화는 엄청났다. MS-DOS를 다루게 됐고, 거의 모든 버전을 경험했다. DOS 3.x, 4.x, 5.x를 거쳐 결국 6.22까지 썼다. 아니면 6.12였을까? 시간이 지나니 버전이 뒤섞인다. AUTOEXEC.BAT와 CONFIG.SYS를 기억한다. 게임을 실행하려고 HIMEM.SYS와 EMM386을 이용해 기본 메모리의 바이트를 한 푼이라도 더 확보하는 요령도 익혔다. Windows가 DOS를 대체하지 않고 DOS 위에서 실행되는 프로그램이던 시절도 기억한다. C:\> 프롬프트에서 WIN을 입력하면 Windows가 DOS 위에 올라와 실행됐다.
배치 파일과 DELTREE, MEMMAKER, 깨끗하게 부팅되는 디스크의 즐거움도 있었다. DOS를 쓰며 운영체제도 소프트웨어일 뿐이고, 소프트웨어는 이해하고 제어할 수 있다는 걸 배웠다.
플러그 앤 플레이가 없던 시절이었다. 사운드 카드, 모뎀, 직렬 포트, CD-ROM 컨트롤러 등 컴퓨터에 넣는 하드웨어마다 IRQ(인터럽트 요청) 회선을 직접 지정하도록 기판의 DIP 스위치나 점퍼를 설정해야 했다. 두 장치가 같은 IRQ를 쓰면 충돌이 일어나 하나 또는 둘 다 작동을 멈췄다. 친절한 오류 메시지도, 자동 감지도 없었다. 사운드 블라스터가 조용해지고 한참 머리를 싸매는 일이 전부였다.
아버지가 집에 가져온 게임 The 7th Guest와 The 11th Hour도 기억한다. 당시 최첨단 CD-ROM 게임으로, 하드웨어 성능을 한계까지 밀어붙였다. 아버지는 게임이 CD-ROM 드라이브에서 영상을 제대로 재생하도록 AUTOEXEC.BAT와 CONFIG.SYS를 몇 시간씩 조정했다. 메모리 관리 프로그램과 CD-ROM 드라이버, 사운드 카드 설정을 알맞은 순서로 불러오면서 기본 메모리도 충분히 남기는 일은 기술이 필요했다. 게임이나 응용 프로그램마다 설정을 직접 맞춘 부팅 구성을 여러 개 만들기도 했다. 답답하고 번거로운 일이었지만, 마침내 작동하면 정말 어려운 일을 해냈다는 성취감이 들었다. 실제로 어려운 일이었기 때문이다.
Commodore의 메모리 지도를 살피며 배운 기초는 그대로 이어졌다. 레지스터와 메모리 주소, 소프트웨어가 하드웨어와 통신하는 방식을 이해하는 일이었다. 하지만 DOS에서는 한 걸음 더 나아가 하드웨어끼리 어떻게 통신하는지 알아야 했고, 충돌을 직접 조정해야 했다.
8086을 쓰면서 처음으로 복사 방지와 마주쳤다. 일부 상용 소프트웨어는 표준 1.44MB보다 큰 용량으로 포맷된 플로피 디스크에 담겨 있었고, 일반 DISKCOPY 명령은 추가 섹터를 무시했다. 표준 도구로는 디스크를 복제할 수 없었다. 그게 복사 방지의 목적이었다. 그래서 직접 프로그램을 만들었다. 작은 프로그램은 플로피 디스크를 하드웨어 수준에서 블록 단위로 읽어, 있어서는 안 될 섹터까지 빠짐없이 복사했다. 복제 자체보다 퍼즐을 푸는 일이 더 중요했다. 소프트웨어는 안 된다고 하지만 하드웨어는 가능하다고 말하는 상황이었다. PEEK와 POKE를 익히며 자란 아이에게 소프트웨어가 금지하는 것과 물리적으로 가능한 것 사이의 긴장은 무척 매력적이었다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요