2008년 1월 28일 월요일

추억3. N바이트 한글

이번 이야기는 컴퓨터가 아니라 컴퓨터 내부에서 한글을 처리하는 방법입니다.

지금 대부분의 컴퓨터에서 한글을 저장하는 방식은 2바이트 한글입니다.
이런 저런 복잡한 과정을 거친 결과 Windows 2000/XP에서는 유니코드를 사용하고 있습니다.
(더 엄밀히는 내부적으로 유니코드를 쓰지만, 표면적으로는 확장완성형 코드를 사용합니다)

이런 현대적인 얘기로는 추억이 될 수 없고…



초창기 컴퓨터가 우리나라에 도입될 때 한글을 어떻게 표현할까 하는 문제에 대해서 아무런 검토가 없었습니다.
당시 우리나라에서 새로운 기술을 도입할 때 일본을 벤치마킹하는 사례가 많았는데, 일본어(카나)는 한글처럼 복잡한 구성이 없기 때문에 한글의 표현 방법에 대해서 벤치마킹 자체를 하지 않았기 때문입니다.
벤치마킹? 솔직히 표현하면 벤치마킹이 아니라 대놓고 베꼈습니다.

그러다 보니, Apple-][ 나, MSX, 또 IBM 호환기종까지 한글을 표현하는 방법은 가지가지이었습니다.
플랫폼을 막론하고, N바이트 한글은 지금의 한글 표현과 비교해 2가지 차이점을 보였습니다.
사용자 삽입 이미지

MSX 에뮬 paraMSX로 적어본 한글


  1. 1글자당 바이트수가 정의될 수 없다
    ㄱ: 1B, 가: 2B, 각: 3B, 갉: 4B, 궭: 5B

  2. 화면에 표시되는 글자의 크기가 정의될 수 없다
    ㄱ: 1배, 가: 가로 2배, 그: 세로 2배, 각:4배(가로, 세로 각 2배)
    ※ 이것은 정확히는 N바이트 한글의 한계가 아니라, 컴퓨터 환경 전반의 한계때문이었습니다.

물론, 지금의 한글 코드도 개선의 여지는 있습니다. (이 내용은 너무 많은 전문지식과 토론이 필요하니 패스~)
하지만, 이 때의 한글 환경은 지금 보기에는 환경이라고 부를 수 없을만큼 안습이었습니다.

이 말은 당시의 한글 환경을 개발하신 분들을 폄하하는 것이 아닙니다. 그만큼 환경이 척박했다는 뜻입니다.
그리고, 이 때 여러 프로그래머분들의 노력 위에 지금의 한글이 있는 것입니다.
뉴튼 : "내가 다른 이들보다 더 멀리 볼 수 있다면, 그것은 거인들어깨에 올라섰기 때문이다."
Isaac Newton : "If I have seen further it is by standing on the shoulders of Giants."

하지만, 당시의 한글에는 공통으로 사용할 수 있는 코드도 없을 뿐더러 디스플레이 환경이 너무나 척박했습니다. 순수 텍스트 화면이 기본이었기 때문입니다.

당시에 N바이트 한글을 지원하는 환경은 이런 것들이 있었습니다.


1. Call 3327 한글 : Apple-][

삼보 컴퓨터에 재직하시던 류백현 님께서 만든 환경입니다.
한글 화면으로 넘어가려면 call -3327[엔터]를 입력해야 했기 때문에 붙은 명칭입니다.

당시 Apple-][의 텍스트 화면은 40x24의 영문을 적을 수 있었는데, 영문 글꼴의 도트수가 7x8이었습니다.
그리고, 고해상도 그래픽 화면이 280x192를 사용했으므로 그래픽 화면에서 텍스트 화면과 같은 크기의 글꼴을 적을 수 있었습니다. 즉, 한글은 20x12의 출력이 가능했습니다.

Apple-][ 기종이 업무용으로도 많이 사용되던 시절이었고, 이 업무용 프로그램들은 Call 3327 환경에서 돌아가도록 개발되었습니다.

그리고, 약간의 버그가 있었는데, 버그를 해결하기 위한 한글이 월간 마이크로소프트웨어 지에 소개되었던 것 같은데, 정확하게는 기억나지 않습니다.

※ Apple-][는 당시 매일 놀러 가던 친구집에서 갖고 놀았습니다. ^^;;;


2. SPC-1000 한글 환경
사용자 삽입 이미지

S/W 방식이라 수정도 쉬웠을텐데…



카세트 테이프에 들어있는 한글 프로그램을 읽어들이면 한글 입력이 가능했습니다.
역시 40x24 영문 화면에서 20x12의 한글을 출력했습니다.

입력 자체는 별 이상이 없어보였지만, 백스페이스키를 입력하면 다음줄의 한글이 같이 깨지는 단점이 있었습니다.

약간 늦게 출시된 MSX의 한글에서는 이런 문제점이 없었습니다.


3. MSX 한글 version 2.0 : MSX1
사용자 삽입 이미지

Qnix는 역사의 뒤안길로 사라졌습니다



2바이트 조합형을 지원한 MSX2와 달리 MSX1에서는 N바이트 한글을 사용했습니다.
처음 부팅하면 풀어쓰기 모드에서 시작했습니다.
(블루앤라이브ㅂㅡㄹㄹㅜㅇㅐㄴㄹㅏㅇㅣㅂㅡ)

모아쓰기를 하려면 아주 단순한 명령어 하나만 입력하면 됐습니다.

POKE &HFCAD,1[엔터] : 정말 단순하지 않습니까? 많은 사용자가 초등학생/중학생이었는데…

Apple-][나 SPC-1000과 달리 글꼴을 쉽게 정의할 수 있었던 MSX는 한글 글꼴을 미리 정의해 텍스트 화면에 적는 방식을 썼습니다. (그리는 방식이 아니라 말이죠)

처음 출시되었던 MSX 한글 ver 1.0은 안정성에 약간의 문제가 있었는데, 이후 나온 한글 ver2.0으로 교체해주기만 하면 아주 안정적인 한글 환경을 사용할 수 있었습니다. (그러고 보니 자발적 리콜이었군요)

한글 ROM의 교체는 A/S 기사가 직접 ROM을 갖고 와서 교체해주거나 컴퓨터를 A/S 센터로 가져가서 교체하는 방식으로 이루어졌습니다.
지금보다는 PC의 크기가 훨씬 작았기 때문에 들고 가는 것이 그렇게 부담스럽지는 않았습니다.


4. 기울여 풀어쓰기 한글
사용자 삽입 이미지

얼핏 보면 모아쓰기로 보입니다… 위키에서 렌탈


김정수 교수님께서 1987년에 제안한 방식입니다.
한글을 45도 왼쪽으로 기울여서 풀어쓰면 모아쓴 것과 비슷하게 보이는 효과를 이용한 방식입니다.

글꼴을 쉽게 정의할 수 있는 MSX 용으로도 기울여 풀어쓰기 한글용 글꼴이 나왔습니다.
이후, 1.2~1.5에서도 이 글꼴을 지원했습니다.

지금의 개념 즉, 정렬이나 탐색 등의 기능을 종합적으로 고려해야 하는 환경에서의 개념이라면 한계가 많은 방식이겠지만, 표준화된 코드, 프린터 인쇄 방식의 통일 등 무엇 하나 정리된 것이 없는 당시의 환경에서는 상당히 혁신적인 아이디어였습니다.



지금은 N바이트 한글의 화면을 보기는 커녕, 구글 이미지로 검색을 해도 찾기 힘든 세상이 되었습니다.
지금까지 한글 환경을 개선하기 위해 노력하신 모든 분들께 감사드립니다.

p.s.1 MSX2의 한글은 n-바이트 한글이 아니기 때문에 적지 않았습니다.
      MSX2 내장 한글(MSX 한글 ver3.0)보다 정내권님께서 개발하신 한글 환경이 훨씬 부드럽게 동작했습니다.

p.s.2 n-바이트 코드에 따라서 뷁을 3~5바이트로 저장하는 경우도 있었습니다 ㅞ를 1~2바이트, ㄺ을 1~2바이트.

p.s.3 서영만 님께서 개발하시는 MSX 에뮬레이터 paraMSX를 이용해서 한글을 출력할 수 있었습니다.
      요즘 개발이 뜸하신 걸 보니 바쁘신 것 같습니다. 계속 업그레이드 되기를 빌어봅니다. 고맙습니다.

p.3.4 네이버 카페 8bit computer/MSX아이큐/금성패미콤/SPC-1000/1500/Apple역사에서
      SPC-1000의 에뮬레이터와 한글 환경을 볼 수 있었습니다. 정보를 주신 utena 님께 다시 한 번 감사드립니다.



댓글 없음:

댓글 쓰기