[추억의 기록] 40년 만에 다시 읽는 나의 코드꞉ 1985년 MSX 시계 프로그램

최근 40년도 더 된 옛 잡지 기사 한 편을 다시 만났다.
1985년 8월, 《마이크로 소프트웨어》지에 기고했던 “MSX용 시계” 프로그램이다.

image 물론 대화명은 본 포스팅을 위해 덮어쓴 것임

얼마 전까지도 나는 이 코드가 MSX2의 하드웨어 RTC(Real Time Clock)를 제어하는 방식이었다고 기억하고 있었다.
하지만 오늘 그 때의 글과 코드를 차분히 읽어보니, 그 기억이 얼마나 기분 좋게 왜곡되어 있었는지 깨달았다.

1. 결정적인 기억의 오류꞉ MSX2가 출시되기 전에 쓴 글

가장 크리티컬한 부분은 ‘시간의 선후 관계’에 있었다.
내가 이 코드를 기고한 것은 1985년 8월이었다.
그런데 국내에 MSX2 기종(대우전자의 IQ-2000)이 출시된 것은 1986년이었던 것.

  • 기억 속의 나: “당시 MSX2의 구조상 HW/SW 클록이 별도로 운영된 것을 통일시킨 프로그램”
  • 현실의 나: MSX2가 나오기도 전이었으니, 당연히 이 코드는 철저하게 MSX1 환경만을 위해 작성됨.

국내에 존재하지도 않았던 미래 기종의 구조를 그때 반영했던 것으로 기억하고 있었던 것이다.

2. ‘하드웨어’가 아닌 ‘논리’를 제어

코드를 뜯어보니 하드웨어 정보에 접근한 게 아니라, 지극히 소프트웨어적인 보정만을 했었다.

  • 당시 MSX1은 전원을 끄면 시간이 날아갔기에, 부팅할 때마다 시간을 새로 맞춰야 했음
    • 물론, 대부분의 사용자들은 이런 거 하지 않고 그냥 시간을 틀린 채로 사용
  • 시간 저장 영역을 소프트웨어적으로 강제 설정
    • &HFFE0~&HFFE6 영역은 시스템이 1초 간격으로 인터럽트를 발생시켜 시간을 유지하는 영역
    • 이 메모리 주소에 아스키(ASCII) 값을 직접 POKE 함

하드웨어 대신 램(RAM)을 공략했지만, 시스템 워크 에어리어의 구조를 이해했던 나름의 시스템 프로그래밍이었던 셈.

3. 기록으로 다시 느껴본 그 시절의 열정

코드와 글을 읽다보니 &HFCAD 번지를 건드렸던 기억, 한글 1.0과 2.0을 구분해서 주석을 달았던 어설픈 꼼꼼함이 떠올랐다.
버전을 인식해서 다르게 동작하도록 했어야지…

그래도, 초글링 주제에 시스템 워크 에리어의 구조를 파고들어 문제를 해결하려 했던 그 시절의 열정은, 40년이라는 시간의 풍화 속에서도 기록이라는 이름으로 왜곡되지 않은 채 그 자리에 남아 있었다.

마치며: 기록은 기억을 이긴다

인간의 기억은 시간이 흐르며 보고 싶은 대로 재구성되기 마련이다.
내 코드를 실제보다 더 거창한 시스템 구조와 연결 지어 기억하고 있었다.

하지만 이렇게 남겨진 기록 덕분에 40년 만에 ‘진실’과 마주할 수 있었다.
1985년의 나에게, 그리고 그 시절 8비트 컴퓨터의 한계를 넘기 위해 밤을 지새웠던 모든 올드 유저들에게 이 글을 바친다.