도스길라잡이
도스길잡이 카멜레온 ANSI.SYS의 넉넉한 기능들(1)
ANSI.SYS란 무엇인가?
‘Ansi.sys(앤시 점 시스라고 읽는다)’는 도스가 꼬꼭 숨겨둔 디바이스 드라이버의 일종으로, 화면과 키보드의 작동 상태에 관여한다. 가지고 있는 화려한 기능에 비해 Ansi.sys의 명성은 그리 높지 않다. 존재조차 모르거나, 알더라도 다루기 어려운 파일이란 생각때문에 사용자들이 외면하는 파일이다. 미국 국가 표준 연합외(ANSI:American National Standards Insitute), 앤시란 거창한 이름도 이 파일에 다가서지 못하게 하는 한 요인이다. 이 연합회는 키보드와 모니터 다루기에 필요한 명령의 표준안을 만들었고, 이를 기준으로 동작하는 파일이 바로 앤시 점 시스인 것이다. Ansi.sys는 카멜레온처럼 형형색색의 변화를 가틔케 함으러써 똑같은 환경이 주는 지루함을 덜어준다. 글자 형식, 색깔, 화면 배경색이나 늘상 왼쪽 끝에 있는 커서의 자리도 옮길 수 있다. 키보드 상에서 키를 누르면 나타나는 정해진 글자도 바꿀수 있다. 즉,’A’키에 A부터 J까지 사용자 마음대로 정의할 수 있다는 말이다. Ansi.sys중에서 키보드 다루기는 색 다루기와는 달리 고난도 기술을 요한다. 먼저 이번 호를 통해 앤시를 익히고 난 다음, 도전해 보기로 하자.
Ansi.sys로딩하기
Ansi.sys를 사용하려면, 시스템상에 앤시 파일이 로딩되어 있어야만 한다. Ansi.sys가 로딩됐는지를 확인하려면 Config.sys파일을 들여다 보면 된다.
C:\>Type config.sys
라고 입력하면 확인할 수 있다. Ansi.sys파일이 없으면, 새 Config.sys파일을 작성해야 한다. 가장 간단한 예를 하나 들어보자. 도스 명령 라인 상태에서 입력해댜 한다.
C:\>copy con config.sys
files=20
buffers=20
device=c:\dos\ansi.sys
^Z
각 줄을 입력하고 나서는 반드시 엔터 키를 쳐야 한다.(너무쉬운 내용을 반복한다구요?잊지마시라고 드리는 마씀입니다.)맨 마지막에 ^Z는 <CTRL>키와 <Z>키를 함계 눌러주라는 것으로 이렇게 하고나면 이내용을 저장할 수 있다.
앤시 발사 카운트다운
앤시로 작업할 때는, 사용자가 할 일부터 알려줘야 한다. 앤시 에스케이프 시퀀스Escape Sepuences는 바로 컴퓨터에게 키보드나 모니터의 상황을 바꿔주는 명령이다. 에스케이프의 명칭은 그 시퀀스가 문자에 부여하는 역할에서 따왔다. 여기서 문자란 보통 아스키 코드를 뜻한다. 이시퀀스는 ‘ESCAPEESC‘문자로 시작된다. Ansi.sys는 에스케이프 문자 다음에 적혀 있는 무자를 관찰해 이 명령들을 키보드나 화면용 명령으로 해석해 낸다. 에스케이프 시퀀스를 시작하는 것은 에스케이프 키 한번 입력으로 되지 않는다. 두번째 단계로는 화면 다음 줄로 커서를 옮긴다. 도스 시스템은 대부분 사용자가 보낸 메시지를 Ansi.sys가 알게 해 주는 에스케이프 명령과 코드 몇 종류를 필요로 한다. PROMPT, TYPE, ECHO등 이 사용 가능한 세가지이다. PROMPT는 도스 프롬프트에서 에스케이프 명령을 나타내는 짧은 무자열을 입력하도록 해 준다. 예를 들어 설명하면 이렇다. 화면이 문자로 가득한 상태라 화면을 깨끗이 지워버리고 싶은 때는 ‘prompt $e[2j’라고 명령을 주면 된다. 그리고 나서 엔터키를 치면 커서는 화면의 왼쪽 가장자리로 옮겨진다. 도스 명령어, ‘CLS’를 입력한 것과 같은 효과가 난다다. 컴퓨터는 앤시 명령어, ‘ESC[2j’로서 이 명령 라인을 입력 하게 된다. 그리고 화면은 깨끗해진다. ‘prompt $e[k’다음에 엔터키를 입력하면, 화면에 있던 내용이 모두 지워지면서 커서가 줄의 맨 끝으로 이동한다. PROMPT에서 불편한 점이라면, 도스 프로프트가 환면에서 아예 사라져버려 다른 드라이브나 디렉토리로 이동할 때 위치를 알 수 없다는 점이다. Autoexec.bat파일에 ‘Prompt $p$g’와 같은 명령이 없다면, 도스 프롬프트 상테에서 입력 해도 ‘C:\>’와 같은 상태로 변한다.
화면색 바꾸기
컬러 모니터 사용자라면, Ansi.sys의 가치를 충분히 느낄 수 있다. 색을 바꾸려면 Ansi.sys에게 다음과 같은 형식을 취해야 한다.
prompt $e[code;code’…m
앞 명령에서 ‘code’부분은 전경색(글자색), 배경색, 혹은 속성값등을 대표한다. Ansi.sys 와 관련된 속성을 보여주는 각종 코드표를 다음에 시었다. 숫자 30~37 까지는 전경색, 40~47까지는 배경색, 0, 1, 4, 5, 7, 8은 다른 무자 속성을 표시한다. 파랑색 바탕에 굵은체의 초록새 글자로 컴퓨터를 사용하고 싶다면, 다음처럼 명령을 주면 된다.
prompt $e[1;32’44m
도스 프로프트에서 엔터키를 눌러주면, 이제 파랑색 바탕에 초록색 글자가 나타난다.
[표] Ansi.sys 속성 코드는 도스에서 글자의 표현 상태를 바꿔준다
[표] Ansi.sys 색 코드는 도스에서 화면의 전경색과 배경색을 바꿔준다
도스 프로프트와 커서 개조하기
화면색은 이제 바꿨다. 커서 위치 까지 마음대로 결정하고 싶다면,다음 명령 형식을 취한다.
prompt $e[열’행
열은 1부터 25까지, 행은 1부터 80까지 지적할 수 있다. 이 명령을 응용하면 매일 날짜와 시간도 프롬프트로 나타낼 수 있다.
prompt $e[e$e[;50h$d$t$h$h$h$h$h$e[u$p$g
굉장히 복잡해 보이지만, 간단한 원리에 의한 것이다. 하나하나 설명을 듣다보면 앤시 명령의 형식을 얼마쯤 이해할 수 있을 것이다. 제일 앞쪽의 ‘$e[s’까지는 현재 커서 위치를 저장해 두는 명령이다. ‘$e[;50h’는 화면의 오른쪽 꼭대기로 커서를 옮긴다. 그런 다음, ‘$d$t’에 의해 현재 시간과 날짜가 표시된다. ‘$h’는 배그페이스더러 움직이라는 명령이다. 이 명령을 6번쯤 하면서 초 부분이 지워진다. 마지막 ‘$e[u’커서를 본래 위치로 돌려주면서 $p$g가 작동해 전형적인 도스 프롬프트 ‘C:>’를 보여주고 마치는 명령이다.
화면을 꾸며주는 프로프트 명령들
$b 문자하나
$d 현재날짜
$e 에스케이프문자
$g >문자
$h 백스페이스(제일 마지막 글자 지움)
$i <문자
$n 현재 드라이브
$p 현재드라이브와 디렉토리
$q =문자
$t 현재시간
$v 도스버전숫자
$$ $문자
$_ 캐리지 리턴/라인 피드(새줄로 바꿔줌)
Ansi.sys로 커서를 관리할 때 쓰는 에스케이프 시퀀스
$e[s 커서의 현 위치를 저장한다.
$e[u $e[s로 저장해 두었던 커서의 마지막 위치를 다시 불러낸다.
$e[xxA 커서를 xx열 위쪽으로 옮긴다.
$e[xxB 커서를 xx열 아래쪽으로 옮긴다.
$e[xxC 커서를 xx열 오른편으로 옮긴다.
$e[xxD 커서를 xx열 왼편으로 옮긴다.
$e[xx;yyH 커서를 xx열, yy열행으로 옮긴다.
$e[H 커서를 화며의 왼편 제일 위쪽으로 옮긴다.
앞에 보이는 에스케이프 시권스들을 참고해 신나는 앤시 활용을 즐기자. 이렇게 친해지 앤시로 다음 달에는 키보드를 고치고 만지는 일에 빠질거다.
나는 플로피디스크드라이브만 있었기에 prompt $n$g 를 했지만, 하드디스크를 가지고 있는 친구들은 prompt $p$g 해서 디렉토리까지 함께 볼 수 있었다. 플로피디스켓은 용량이 작아서 디렉토리를 만들 일도 별로 없지만(디렉토리 대신 디스켓을 갈아끼우지만), 느린 속도 때문에 prompt $p$g 에선 현 디렉토리 읽어오느라 엔터 칠 때마다 디스켓을 드륵드륵..