Microsoft, “현재까지 발견된 가장 오래된 DOS 소스 코드” 오픈소스 공개
요약
본 글은 Microsoft가 오픈소스로 공개한 오래된 DOS 소스 코드를 계기로, 마이크로소프트의 초기 성공이 운영체제(DOS)보다는 BASIC 인터프리터 개발에 더 큰 기반을 두고 있음을 분석합니다. 특히 Paul Allen과 Bill Gates가 Altair BASIC 인터프리터를 만든 과정과 그 역사적 배경을 깊이 있게 다루고 있습니다.
핵심 포인트
- Microsoft의 초기 성공은 DOS보다 BASIC 인터프리터 개발에서 기원함.
- Altair BASIC 인터프리터는 대학 컴퓨터 환경에서 개발된 중요한 성취였음.
- BASIC 표준화 노력은 MS BASIC의 시장 지배력으로 인해 중단되기도 했음.
이런 말은 드물지만, 고마워 Microsoft. 사실 DOS만큼이나, 어쩌면 더 중요한 건 Microsoft가 만든 BASIC이었음
그들이 진짜 하고 싶었던 일은 BASIC이었고, DOS는 IBM 계약을 따내게 해준 계기였음. 수십 년 동안 Microsoft는 운영체제와 기타 소프트웨어를 부업으로 만드는 개발자 도구 회사에 가까웠고, 그 BASIC 코드도 오픈소스로 공개했음 https://opensource.microsoft.com/blog/2025/09/03/microsoft-o...
커밋에 49년 전이라고 찍힌 건 처음 보는 것 같음
Commodore 64를 쓰면서도 사실 계속 Microsoft를 쓰고 있었다는 걸 깨달았던 기억이 남
흥미로운 건 Microsoft BASIC 자체가 BASIC-PLUS에서 파생됐고, BASIC-PLUS는 Dartmouth BASIC에서 나왔다는 점임
Dartmouth BASIC은 나중에 구조적 프로그래밍 언어인 SBASIC(Structured BASIC)으로 발전했지만, Microsoft BASIC의 인기가 오히려 SBASIC의 ANSI 표준화를 멈추게 만들었음 https://en.wikipedia.org/wiki/Microsoft_BASIC
Altair BASIC 인터프리터는 Paul Allen과 Bill Gates가 PDP-10 미니컴퓨터에서 직접 만든 Intel 8080 에뮬레이터를 이용해 개발했고, Microsoft 방언은 Gates가 고등학교 때 썼던 DEC의 BASIC-PLUS를 본뜬 것이었음 https://en.wikipedia.org/wiki/Dartmouth_BASIC
Dartmouth BASIC은 John G. Kemeny와 Thomas E. Kurtz가 만든 원조 BASIC이며, DTSS와 함께 학부생과 대학 구성원 전체에 대화형 프로그래밍 환경을 제공했음. 1975년에는 구조적 프로그래밍 개념을 넣은 SBASIC을 내놓았고, 이는 1980년대 초 ANSI “Standard BASIC” 작업의 기반이 됨
하지만 1980년대 후반에는 수천만 대의 가정용 컴퓨터가 MS BASIC 인터프리터 변종을 돌리면서 사실상 표준이 되었고, 결국 ANSI SBASIC 노력은 중단됨. Kemeny와 Kurtz는 그 개념을 이어가 True BASIC을 만들었지만, 2026년 2월 기준 TrueBASIC 웹사이트는 공식적으로 닫힘 https://en.wikipedia.org/wiki/True_BASIC
그 시절에는 어셈블리 몇천 줄을 쓰는 것만으로 성공적인 소프트웨어 회사를 시작할 수 있었다는 사실이 정말 부러움
맞지만, 그 어셈블리는 DOS가 아니었고 쉬운 일도 아니었음
Microsoft는 DOS 코드를 직접 쓴 게 아니라 구매했음. 물론 이후 개발하고 수정하긴 했지만, 그건 기술적 성취라기보다 영리하고 운도 따른 사업 거래였음
Microsoft의 진짜 시작은 그보다 앞서 Allen, Gates, Davidoff가 Altair BASIC 인터프리터를 만든 일이었고, 그건 상당한 성취였음
그들은 대상 컴퓨터를 본 적도 없었고, 컴퓨터를 소유하지도 않았음. 쓰면 안 되는 대학 컴퓨터에서 8주 동안 작업했음
“Altair는 BASIC 인터프리터 구매 가능성을 두고 만나기로 했지만, Gates와 Allen에게는 BASIC 인터프리터도 Altair 시스템도 없었다. Allen은 PDP-10 시분할 컴퓨터에서 도는 Intel 8008 에뮬레이터를 만들어 둔 상태였고, 이를 Altair 프로그래머 가이드에 맞춰 수정해 Harvard의 PDP-10에서 인터프리터를 개발하고 테스트했다.”
완성된 인터프리터는 자체 입출력 시스템과 줄 편집기를 포함해 4KB 메모리에 들어갔고, 해석할 프로그램을 위한 공간도 충분히 남겼음. 데모 준비를 위해 완성된 인터프리터를 Altair가 읽을 수 있는 천공 테이프에 저장했고, Paul Allen은 Altair를 만나러 Albuquerque로 날아갔음
착륙 직전 Allen은 테이프를 메모리로 읽어들이는 부트로더를 깜빡했다는 걸 깨닫고, 8080 기계어로 비행기가 착륙하기 전에 프로그램을 완성했음. Altair에 프로그램을 올리고 시스템 메모리 크기를 묻는 프롬프트가 뜬 뒤에야 Gates와 Allen은 인터프리터가 실제 Altair 하드웨어에서 동작한다는 걸 알았음 https://en.wikipedia.org/wiki/Altair_BASIC
공정하게 말하면 회사를 이끌 냉혹한 사업가도 필요했을 것 같음. 지금도 대체로 마찬가지고
오히려 정반대로 느껴짐. 정말로 맞는 사람이 맞는 장소에 맞는 시점에 있어야 했던 것임
그렇게 단순한 프로세서와 시스템에서조차 그랬다는 게 놀라움. 디스크립터 테이블도 없고, 메모리 관리 설정도 없었음
요즘은 시작만 하려고 해도 주 프로세서 안의 작은 프로세서가 따로 필요함. 그때가 황금기였음
어셈블리를 TypeScript/Rust/Go 같은 것으로 바꿔도, 아이디어가 좋고 유용하다면 지금도 같은 원리가 적용됨
놀랍게도 종이 출력물을 다시 OCR로 읽어 들여야 했음
이 소스 코드는 디지털로 저장돼 있지 않을 정도로 오래됐고, Yufeng Gao와 Rich Cini가 이끄는 역사학자와 보존가 팀 “DOS Disassembly Group”이 Paterson이 제공한 종이 출력물에서 코드를 힘들게 전사하고 스캔했음. 수십 년 된 출력물 품질 때문에 최신 OCR 소프트웨어도 어려움을 겪었다고 함
도트 매트릭스 글꼴 OCR에서 무엇이 잘 먹히는지 더 듣고 싶음
레터 품질 프린터 출력은 97% 정도까지 OCR해본 적이 있는데, 주로 O와 X 문제가 있었음
그런데 요즘 기계학습 기반 텍스트 인식은 컴퓨터 코드가 사람 언어처럼 보이지 않는다는 이유로 거부하는 쪽으로도 편향된 것 같음
아버지 서류 속에서 발견한 목록을 스캔해서, 예전에 내가 쓴 오래된 소프트웨어 일부를 복구한 적이 있음
종이에 인쇄된 텍스트가 어떤 디지털 저장장치보다 오래 살아남은 또 하나의 사례임
Microsoft가 어떻게 운영체제 사업에 들어갔는지 흥미로운 이야기임. IBM은 CP/M 운영체제를 원했지만 Digital Research가 IBM의 NDA에 서명하지 않았고, 이게 컴퓨팅 역사에서 큰 분기점이 됨
“Triumph of the Nerds” TV 대본에서 인용하면: https://www.pbs.org/nerds/part2.html
Jack Sams(IBM)는 Microsoft가 BASIC 언어와 운영체제를 모두 담은 패키지를 갖고 있다고 생각했지만, IBM은 사전 조사를 제대로 하지 않았음
Steve Ballmer에 따르면 IBM은 Microsoft가 SoftCard 제품에 CP/M을 얹어 팔았기 때문에, 새 개인용 컴퓨터용 CP/M을 라이선스할 수 있다고 생각했음. Microsoft는 “우리는 그 사업을 하지 않는다”고 답했음
Jack Sams는 Bill Gates가 권리가 없다고 설명하면서도 Gary Kildall이 준비가 돼 있을 것 같다고 했고, 그래서 그 자리에서 Digital Research의 Gary에게 전화해 IBM 사람들을 잘 대해달라고 했다고 함
이 이야기의 세부 사실은 거의 전부 당사자들 사이에서도 다툼이 있음. 잘 안 풀린 회의가 있었다는 큰 줄기 정도만 확실해 보임
가장 초기 Windows 버전 소스가 공개되기까지 얼마나 걸릴지 궁금함. 이렇게 오래된 DOS 소스가 아직 남아 있다는 사실만으로도 예전 Windows 소스도 보존돼 있을 거라는 희망은 생김
Windows 2000 코드베이스가 오픈소스나 소스 공개 형태로 나오는 날이면 행복하게 죽을 수 있을 것 같음
물론 그런 가능성의 빛이라도 보일 때쯤이면 이미 오래전에 죽어 있을 가능성이 크지만. 정말 아름답고 매끄럽게 돌아가던 운영체제였음
디스어셈블하는 건 어렵지 않을 것 같음
머지않았을 수도 있다고 봄. Microsoft가 플랫폼으로서의 Windows를 거의 마무리해 가는 인상을 받음
현대 컴퓨팅의 초기 시절은 정말 빛났음. 우리는 기계를 있는 그대로 기계로 대했음
성능, 창의성, 과학이 모두 386 기계를 제대로 작동시키는 데 필요했음. 요즘은 라이브러리, 가상화, 나쁜 코드 위에 나쁜 코드 위에 나쁜 코드를 쌓는 것뿐이라 마음에 들지 않음
가끔 내 컴퓨터 정신 모델이 아직도 48KB RAM의 Apple ][+ 라서 더 나은 코드를 쓰는 것 같다고 생각함
꽤 오래전부터 저수준 개념을 전혀 이해하지 못하는 프로그래머들이 많아졌음. JavaScript나 Python으로 시작해서 아래를 내려다본 적이 없고, 그들이 정상이라고 여길 괴물 같은 구조에는 한계가 없음
Linus Torvalds도 몇 달 전 AI 코딩 도구를 이야기하면서 비슷한 취지로 말했음. 그의 세대, 그리고 내 세대는 저수준부터 시작해 전체 스택에 대한 감각을 유지할 수 있어 운이 좋았지만, 요즘 아이들은 그런 기회를 얻기 어렵다는 것임
아이의 첫 코딩 경험이 천재처럼 보이는 챗봇이라면, 컴퓨터와 알고리즘, 자료구조에 대한 그런 수준의 감각을 익히기는 쉽지 않을 것 같음
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기