Retro Game & PC/매뉴얼 팁 작업

WinBGIM - Borland Graphic Interface for Windows C Programming

smores 2014. 9. 25. 01:58

옛날 8비트 CP/M ~ MS DOS 시절 프로그램 언어 분야에서 혁신을 몰고 왔던 기업이 있었으니... Borland 사.


Turbo Pascal을 필두로 Turbo C ~ Borland C/C++ 식으로 특히 MS DOS 환경에서는 MS의 정통 컴파일러들과 함께 치열한 경쟁을 하면서 매번 새로운 기능과 성능으로 사용자들을 감탄시켰었다. MS의 정통 옛스타일의 콘솔 컴파일러와는 차별화 된 IDE (integrated Development Environment)를 도스 텍스트 시절부터 일찌감치 정착시켰고, 컴파일러의 컴파일 속도 역시 MS 사의 것과는 비교가 안되게 빠른데다가 사용하기 쉽고 잘 정리된 도스용 그래픽 라이브러리(BGI)를 일찌감치 제공함으로써 도스에서 그래픽으로 뭔가를 하고 싶을 때에는 저절로 Borland 사의 언어를 선택하게 되었었다. 본인 역시 MS 사 컴파일러는 멀찌감치 밀어두고 Borland Turbo Pascal - Turbo C - Turbo C++ 의 순으로 길들어져 갔었고...


윈도우즈 환경으로 넘어가면서 도대체 윈도우 그래픽이 왜 그리 어려운지... (사실 WINAPI 자체에 익숙해지고 싶지가 않았다는 것이 더 맞는 말일 듯...) 덕분에 윈도우에서 그래픽까지 쓰면서 뭔가를 하는 것은 거의 포기하고 결과적으로 프로그래머가 되겠다는 꿈도 점차 멀어졌다. 지금와서 생각하면 다행인것도 같지만... :)


먼 훗날 VB6 부터 다시금 윈도우즈 프로그램을 작성하기 시작하면서 볼랜드의 옛 도스 그래픽 명령어들을 잊어갔지만 지금도 옛날 도스시절에 짰던 코드들을 보면 아련히 옛 추억들이 떠오른다. 


헌데 윈도우즈에서도 볼랜드 BGI를 그대로 사용하도록 도와주는 라이브러리(? 일종의 함수 매핑 레이어 같은...)가 있었다. 본인의 옛 블로그를 뒤지다가 찾아서 윈도우즈 7 64비트 환경에서 아직도 잘 사용하고 있는 Borland C++ 5.5 콘솔 컴파일러 버전으로 컴파일 해 보니 잘 작동하고 있다. (예전 글을 쓸 시점은 WinXP 32비트 시절이었는데...) 


무척 반가운 마음에 자료와 스크린샷을 올려 놓는다. 그림에서 보면 옛 4:3 비율의 모니터상의 640x480 해상도에 맞추어 개발된 폰트여서 그런지 오늘날 가로세로 1:1 비율이 거의 딱 맞는 LCD 픽셀상에서의 640x480 화면은 약간 와이드 화면처럼 되어 폰트가 납작하게 짜부러져 보인다.


다음은 예전 블로그에 본인이 작성했던 글이다.



-----------------


Konstantin Knizhnik 라는 분이 만든 라이브러리입니다. 원래는 DEVCPP 에서 돌게끔 만든 듯 한데 콘솔모드용 공짜 컴파일러인 BC++ 5.02 에서도 잘 돌아갑니다. EditPlus에서 BC++로 컴파일 하게끔 환경 구축해 놓고 그냥 소스코드(winbgim.cpp 및 winbgim.h)를 include만 해서도 잘만 됩니다. Visual Studio 2005 에서는 조금 손을 보아야 할 것 같군요. 귀찮아서 이 작업은 생략..

 

예전 볼랜드 C++ 많이 쓰시던 분들이라면 한번쯤 돌려보아도 재밌겠습니다.

 

1) 본인의 경우 과거에 DOS 환경에서 상당수의 그래픽 모드에서 돌아가는 프로그램들(주로 OA, FA)을 작성했었습니다. 헌데 아쉽게도 한글 사용을 위한 한글 라이브러리들을 만들어서 그래픽환경을 구현하였고, 이때 화면 표시속도의 향상을 위해 최종 그래픽 출력 부분에서는 다수의 어셈블리 코드를 사용하는 바람에 본 Winbgim 라이브러리와의 호환성이 없다는 점이 무척 아쉽군요.

 

2) 하지만 현재 회사에서 하는 일에는 여러가지 시뮬레이션이 포함되는데 간단한 시뮬레이션 코드를 만들고서 결과를 보기 위해서는 일일히 text 파일에 데이터를 저장하여 Matlab으로 비트맵 그래픽을 그리던가 아니면 postscript 파일로 데이터를 출력하여 psviewer로 보는 식으로 일을 하고 있습니다. 제가 아직 C++로 윈도우 상에서의 간단한 그래픽을 구현하지 못하기 때문입니다. -_-;  윈도우 시대로 넘어오면서 윈도우 프로그래밍을 배우기가 귀찮아서 그만 포기했었기 때문입니다. 그놈의 WINAPI이 웬수... 덕분에 윈도우 프로그램은 VB로 인터페이스를 만들고 속도 필요한 시뮬레이션 같은 부분만 VC++로 DLL 형식으로 만들어 VB에서 사용하곤 했었습니다. 하지만 위의 라이브러리를 사용하면 간단한 연구 개발을 위한 시뮬레이션에서는 실시간으로 중간 결과의 dynamics를 다 볼수가 있을 것 같네요.  예를 들면 molecular dynamics simulation 같은...  ^_^  이제는 간단한 그래픽 결과를 보기 위해 느린 Yabasic (Yet Another Basic) 인터프리터를 사용하지 않아도 되게 되었습니다.

 

3) 본 라이브러리의 조금 더 개선된 버전으로 콜로라도 대학의 Michael Main 이란 분이 수정해 놓은 것이 있습니다. http://www.cs.colorado.edu/~main/cs1300/lab/cs1300-3.html  저의 경우는 위의 것만으로도 충분하기에 (특히 한개의 소스와 한개의 헤더만이 전부라는 점이 프로젝트조차 만들지 않고 EditPlus에서 그냥 컴파일 할 수 있어서 편하기에) 업그레이드 버전은 신경 끄기로 하였습니다. (역시 자기 분수에 맞추는 것이 덜 피곤하게 사는 방법인듯...)




winbgim.zip