일단 제가 작업하고 있는 환경은 Ubuntu 9.10 x64 입니다. 사실 Kubuntu를 개인적으로 더 좋아하긴 하지만 사정상 사용할 수 밖에 없었습니다. 그래서 좀 덜 익숙한 환경에서 삽질을 하고 있었답니다. 무참히 컴파일과 코딩, 에뮬레이션을 번갈아가며 말이죠..
위 코드로 Video Buffer에 해당하는 메모리 구역에 문자를 직접 써넣어 주는 상황을 제작했는데, 입력위치가 오른쪽 하단 에 입력하는 것입니다. 그런데 이게 Scroll 기능을 구현하고 테스트를 하는데 마지막 줄이 스크롤 되면 무조건 Vmware 가 이유없이 리붓이 되네요 ㅜㅜ. 그렇게 해서 한 두어시간 삽질을 진행하고 한 줄씩 디버깅을 하는데!! CpiTextBuffer 라는 클래스 내부에서 'x', 'y', 'z' 에 해당하는 문자를 고정된 위치에 한 번씩 뿌리는데 y 라는 얘가 z로 변하는 게 아닙니까? @0@ 그래서.. 이걸 단서로 찾다가 찾다가 보니. 바로 ImageWriter에서 Binary모드로 파일을 오픈한게 아니더라구요 ㅜㅜ 이런.. 제길.. 이라는 말이 절로 나오더군요.
현재 보이는 CpiTextBuffer 라는 클래스는 TextMode VideoBuffer를 제어하기 위해서 대충 구현이 된 클래스입니다. 대략적으로 기능은 아래와 같은 함수들로 구성이 되어있네요.
void Clear(unsigned char Clr);
void Scroll();
void Scroll(short Pos);
void GetPos(short &X, short &Y);
void SetPosX(short X);
void SetPosY(short Y);
short GetPosX();
short GetPosY();
unsigned char GetColor();
void SetColor(unsigned char Clr);
unsigned char GetColor(short X, short Y);
void SetColor(short X, short Y, unsigned char Clr);
void DrawCharacter(char szChar, unsigned char Clr);
void DrawText(const char *szText);
void DrawText(const char *szText, unsigned char Clr);
unsigned char GetDefaultColor();
"Programming / OS Develop" 분류의 다른 글
| [Multitasking]오래전의 소스를.. (5) | 2010/09/05 |
| 음.. 여러가지 일이 있지만.. (2) | 2010/01/22 |
| 어후.. 드디어 인터럽트 활성화가 되었군요.. (0) | 2009/12/28 |




댓글을 달아 주세요