2009년 4월 2일 목요일

HI-TECH C v3.09 - MSX 라이브러리

개인적으로 관리하면서 사용하는 HI-TECH C용 라이브러리를 올려봅니다.

언젠가 정리되면 업로드하려고 했는데, 미루다보니 시간이 많이 지났네요. ㅎ.ㅎ;


참고로, HI-TECH C가

ANSI-C 및 부동소수점 지원 되는 유일한 MSX용 C 컴파일러로 알고있는데요.

인라인 어셈도 쓸수 있고 좋긴한데, 실행속도가 좀 느리다는 단점이 있습니다.


https://github.com/sharksym/CPMEMU_HI-TECH_C


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

    HI-TECH C v3.09 Library (2009.04.02)

        By 서영만 (E-mail:sharksym@hitel.net)

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

 - CP/M용 C Compiler인 HI-TECH C v3.09를 위한

   LIBC 및 LIBF 라이브러리와 CRT.O 파일입니다. (소스 포함입니다.)


 - CP/M 및 MSX-DOS1, MSX-DOS2 모두 지원하도록 만들어져있습니다.

   CRT.O에서 구동시 BDOS 버전을 체크하여, 각 OS에 최적화된 함수가 실행됩니다.

   기타 MSX에서 사용가능한 함수가 다수 포함되어있습니다.

   (관련 헤더파일을 확인하세요.)


 - LIBCGEN.LIB : CP/M, MSX-DOS1, MSX-DOS2 공용 LIBC

   LIBCMSX.LIB : MSX-DOS1, MSX-DOS2 전용 LIBC

   LIBFGEN.LIB : CP/M, MSX-DOS1, MSX-DOS2 공용 LIBF (Floating Point 함수 포함)

   LIBFMSX.LIB : MSX-DOS1, MSX-DOS2 전용 LIBF (Floating Point 함수 포함)


 - 코드 대부분은 HI-TECH C의 원본 라이브러리 소스가 사용되었으며,

   Arnold Metselaar씨 및 Tatsuhiko Syoji씨의 수정/추가된 소스도 사용하였습니다.

   기타 다른 분의 코드도 일부 포함되어있고, 나머지는 제가 직접 수정/추가한

   것입니다.


 - 소스 빌드를 위해 윈도용 CP/M 에뮬레이터인

   CP/M-80 program EXEcutor for Win32 V0.2 프로그램이 사용되었습니다.

   MAKE는 GNU MAKE를 사용하면됩니다.

   (실제 CP/M, MSX-DOS에서 사용가능한 MAKE가 있는지는 모르겠습니다.

    현재는 윈도용 CP/M에뮬레이터만 사용중입니다.)


 - CP/M 및 C Compiler에서 서브 디렉토리를 지원하지 않으므로,

   대신 CP/M 에뮬레이터의 가상 드라이브 매핑 기능을 활용했습니다.


 - CPMEMU_HI-TECH_C 디렉토리에는 HI-TECH C 패키지와 CP/M 에뮬레이터 및

   HI-TECH C 원본 라이브러리인 LIBC.LIB, LIBF.LIB와

   ASCII C의 그래픽 라이브러리 호환인 LIBG.LIB도 포함되어있습니다.

   소스 빌드시에도 CPMEMU_HI-TECH_C 디렉토리가 그대로 사용됩니다.


 - MAKE_ALL.BAT를 실행하면 4개 LIB를 생성하며,

   TESTCODE의 프로그램으로 동작 확인이 가능합니다.


2009년 3월 31일 화요일

SVU 제작 #2 출력 테스트

좀 더 진행된 모습입니다.

납땜에 정신력을 집중하던 모습이 생각나네요.ㅋ





전원만 연결되어있던 슬롯 커넥터쪽도 작업이 진행되었습니다.

기본적인 Addr/Data 버스 및 어드레스 디코더 등이 올라가있습니다.




노란선 묶음 위로 지나가는 파란선들이 중요 컨트롤 신호입니다.




메인 클럭단과 CPU R/W 컨트롤에 관계된 부분은 작은 보드를 2층으로 쌓도록 되었습니다.





합체씬입니다. 테스트용으로 대충 연결한 선들이 좀 보이네요.




터보알 후면 슬롯(2번)에 꽂은 모습입니다.

비디오 신호는 우측 하단으로 받아서 8핀 DIN 커넥터로 믹스해서 출력합니다.




간단하게 컨트롤 레지스터 몇개 테스트해봤습니다.

0~3   -> 출력 On/Off등의 각종 스위치

8~23 -> Layer Scroll

24     -> H Position

25     -> V Position

26,27 -> Width

28     -> Height


255x80 크기의 윈도가 표시된 모습입니다.




이번엔 동영상으로 찍어봤습니다.

간단하게 위치/크기 조절하는 모습입니다.




결론...

일단 화면 보시면 느끼실수도 있는데,

VRAM용 어드레스 카운터와 먹스쪽이 제대로 동작 안되는 것 같습니다.

노이즈가 일정 간격으로 연속되는게 보이네요.

아직 VRAM RW/WR는 안되기 때문에 애매하긴 하지만, 전체적으로 좀 문제가 있어보입니다. ㅜ.ㅜ

게다가 클럭 페이즈가 좀 안맞으면 출력이 엉망되는 문제도 있고. 흠냐.


결정적으로 칩들에게서 열도 좀 나네요. 쇼트된건 아닌 듯한데...

아직 좀 더 살펴봐야겠지만, 제대로 완성되긴 좀 힘들 것 같습니다.

아무래도 가내수공업(?)으로는 좀 무리인것 같네요. ㅜ.ㅜㅋ


2009년 3월 25일 수요일