연휴는 잘 보내셨나요? 그럼 #3편이 나갑니다요~ ㅎ.ㅎ
이전글을 보시려면, 아래 링크를 눌러주세요!
https://sharksym.blogspot.com/2023/07/20-1.html
https://sharksym.blogspot.com/2023/08/20-2.html
[본론]
8. M 파일매니저에 잡다 기능을 통합해보자
컴퓨터 활용에 가장 걸림돌이 되는 것이 뭘까요? 역시 귀차니즘이겠죠ㅋ
이젠 S/W 개발에 불편함이 없으니, 더 편하게 쓰는 쪽으로 나가봅니다.
흩어져 있던 기존 프로그램들을 개선하느니, 걍 M 파일매니저에 다 때려넣는거죠 ㅎ.ㅎ
8.1 MP3 플레이어 통합
기존 MPXP 프로그램은 파일명을 커맨드라인으로 받아서 처리합니다.
별도의 UI 없이 ESC를 누르면 종료하는 식이었죠.
이 MPXP를 M 파일매니저에 통합해서, 백그라운드 재생을 해보아요~
MP3, WMA 등의 음악을 들으면서, 디렉토리 브라우징을 할 수 있게되니 좋네요 ㅎ.ㅎ
듣고싶은 파일들을 선택해서 연속재생까지 해놓으니 손도 편해졌구요.
8.2 IMS 플레이어 통합
MPXP처럼 IMSP 프로그램도 M에서 백그라운드 재생으로 해보아요~
MP3 재생 시에는 파일을 읽어서 바로 디코더(MPX 카트리지)로 전달하면 끝입니다만...
IMS는 파일 전체를 메모리에 로딩 후 처리합니다. 대부분 파일이 128KB 이하니까 크게 부담은 안되겠죠?
혹시 이게 부담되는 환경이라면, 아마 기존 M, IMSP를 실행하는 것도 힘드셨을테니 어차피 상관없을 듯요ㅋ
M에 IMSP를 통합해서 백그라운드 처리로 구현해보니, Z80에서는 조금 부담이 되네요.
최대한 인라인 어셈으로 때워서 막아봅니다.
.
.
혹시 GT가 필요하시면 지금이라도 일옥으로 달리세요! ㅎ.ㅎ
8.3 M LITE 버전
시간이 흐르니 MSX2/2+에서도 M을 쓰시는 분들이 조금씩 늘어나더라구요.
그.래.서. 결국 그래픽과 메모리 사용량을 줄인 M LITE 버전을 만들게 됩니다.
넌인터레이스 그래픽으로 처리하면 화면처리 속도가 2배 넘게 빨라지니까, MSX2/2+에서도 쾌적합니다요.
물론 turboR에서는 겁나 빠른 속도로...ㅎ
참고로, 2013년 초에는 M 기본 버전과 LITE 버전의 실행파일을 따로 릴리스했습니다만,
이제는 M 실행파일 하나로 통합되어있습니다. 메모리 용량이 모자라면 자동으로 LITE모드로 전환합니다.
M.INI 파일에서 넌인터레이스 설정으로 바꿀 수도 있으니, 인터레이스 출력이 안좋은 모니터에서도 도움이 되겠습니다.
그리고, M에 내장된 영문폰트가 맘에 안들면, 외부 폰트를 로딩할 수도 있으니 참고하시고~
9. KS X 1001
80년대 대우 MSX2에서는 조합형 한글이 사용되었습니다.
현재 M 파일매니저에서도 한글 출력을 위해 844 조합형 폰트를 사용합니다만,
한글 코드는 조합형, 완성형 모두 지원이 됩니다.
한글 윈95 시절부터는 폴더, 파일명에 MS CP949가 기본으로 사용되고, 긴파일명(LFN)에서는 유니코드가 쓰입니다.
폴더이름이 한글로 되어있으면, 윈도와 MSX의 M 파일매니저에도 똑같이 볼 수 있으니 편하죠.
근데, M에 IMSP, MP3 플레이어를 넣다보니... 한글 외 특수문자 또는 한자를 표시해야되는 경우가 종종 생기더라구요.
한글은 조합형 폰트가 12KB 정도라서, 프로그램에 넣어도 부담이 없는데요.
KS X 1001 (KS C 5601)의 특수문자(37KB)와 한자(153KB)를 모두 넣으면 용량이 꽤 됩니다.
어떻게 할까 고민을 해보니...
폰트는 램상주로 올려놓고, 여러 프로그램들이 공용으로 사용하면 괜찮을 것 같더라구요.
아무래도 파일이 크니까, 부팅할 때 한번만 로딩하는 편이 좋겠죠? ㅎ.ㅎ
일단 텍스트뷰어(HV)와 M 파일매니저는 해결이 되겠고... 추후 DOS2용 게임을 만들 때도 활용을?!
그렇게 램상주 폰트가 만들어지게 되었습니다 ㅎ.ㅎ
9.1 램상주 폰트 로더
특수문자 로더인 KS_SPE 프로그램입니다.
https://sharksym.blogspot.com/2014/10/ksspe-v10-ks5601.html
한자 로더인 KS_HANJA 프로그램입니다.
https://sharksym.blogspot.com/2014/10/kshanja-v10-ks5601.html
9.2 램상주 폰트... 이대로 좋은가?
특수문자와 한자표시를 할 수 있어서 좋은데, 약간의 애로사항이 있네요.
부팅 시 매번 폰트를 로딩하는 시간이 걸린다는 것과, 여전히 메모리 점유의 부담이죠.
저야 뭐 1MB의 GT라서 걱정 NoNo입니다만...
반년정도 상황을 지켜보니, 저 외엔 폰트로더를 쓰시는 분이 한명도 없더라구요 ㅎ.ㅎ;
MSX에서 MP3나 IMS를 듣는 사람이 별로 없으니...
M, HV에 내장된 한글지원 정도면 충분하다고 생각하시는 거겠죠? ㅎ.ㅎ
10. 한글 폰트팩(FontPack V1)을 만들어보자.
부담없이 한글/한자를 쓸 수 있도록 H/W의 도움을 받아보도록 합시다.
자세한 내용은 아래 블로그 글들을 보셔도 되겠습니다.
https://sharksym.blogspot.com/search/label/_FontPack
10.1 폰트롬 I/O
Kanji 폰트처럼, I/O 포트를 사용합니다.
전체 용량은 2MB입니다. 유저 폰트를 128KB SRAM에 로딩할 수도 있습니다.
자작 프로그램에서 런타임으로 폰트를 변경하는 등으로 활용할 수 있겠네요.
폰트팩의 폰트롬은 Kanji 폰트처럼 1bit의 데이터로 저장됩니다.
대신 스크린6의 2BPP 컬러, 스크린5,7의 4BPP 컬러 변환 기능을 H/W로 넣어보아요~
MSX1의 패턴맵 그래픽은 1BPP로 된 폰트를 읽어서 바로 쓰면 되지만,
MSX2의 비트맵 그래픽은 2BPP, 4BPP, 8BPP입니다.
화면에 표시하려면 컬러로 계산 후 메모리에 써넣어야하죠.
이걸 폰트 I/O에서 직접 처리하면 편할 것 같더라구요.
Fore Color, Back Color 레지스터만 설정하면, 컬러가 적용된 폰트 데이터를 포트로 읽을 수 있습니다.
이 값을 그냥 VRAM에 써넣으면 OK! ㅎ.ㅎ
10.2 문자 코드는 확장 완성형 (CP949)
1995년 MS에서 윈도95를 만들 때 등장했던 코드입니다. 당시에는 논란이 많았던 코드죠?ㅋ
완성형 한글(KS C 5601)에 빠져있던 한글을 몽땅 때려박은...ㄷㄷ
20여년이 지났지만, 지금도 윈도의 파일 시스템에서 기본으로 쓰이는 한글입니다.
폰트롬은 이 코드영역의 문자를 그대로 넣습니다.
S/W에서 상호간 코드 변환(한글 조합, 유니코드 등)을 빠르게 할 수 있도록, 코드변환 I/O도 넣어줍니다.
윈도의 긴파일명(LFN) 또는 MP3 ID3v2의 유니코드를 표시할 때, 코드변환기를 활용하면 좋겠죠? ㅎ.ㅎ
M 파일매니저에서 LFN 표시가 지원된건 2022년이라는 게 함정이네요. (폰트팩 개발된지 7년이 지난ㅋ)
10.3 폰트의 픽셀사이즈는 16 x 16 및 12 x 12
고해상도 모드(가로 512픽셀)에서는 가로폭 16픽셀 폰트로는 64컬럼밖에 구현하지 못합니다.
12픽셀 폰트를 쓰면 85컬럼까지 가능합니다. 저해상도 모드에서도 40컬럼도 가능하겠구요.
이정도면 실사용에서는 충분할 것 같네요.
10.4 문자 출력용 DEVICE
그래픽 모드에서는 GRP라는 DEVICE를 사용합니다.
국딩 때 BASIC 좀 써보셨으면, OPEN"GRP:"AS#1 명령은 달달 외우셨겠죠? ㅎ.ㅎ
폰트팩에서는 FNP라는 DEVICE가 추가됩니다.
본체의 GRP DEVICE와 함께, OPEN"FNP:"AS#2으로 폰트팩 디바이스도 사용가능합니다.
일제 기종에서 일어와 폰트팩 한글을 동시에 출력할 수도 있다는 얘기죠.
대우 X-II에서는 본체의 명조체 한글과 폰트팩의 한글을 동시에 쓸 수 있겠구요.
80년대 만들어졌던 BASIC 프로그램들의 GRP 디바이스명을 FNP로 바꾸면,
폰트팩의 한글로 쉽게 대체할 수 있습니다.
일제 기종에서 아이큐교실 프로그램을 이렇게 구동할 수 있어요.
10.5 한글 IME
한글 출력을 H/W로 넣었으니, 한글 입력기도 S/W로 넣어봅니다.
2바이트 조합형과 CP949 모두 지원됩니다.
폰트팩이 없는 대우 MSX2용 한글 프로그램을 만들 때는 조합형으로 입력해야겠죠? ㅎ.ㅎ
IME 설정은 BASIC, DOS 모두 가능합니다요.
M에서 파일명 바꿀 때에도 한글을 입력할 수 있구요.
10.6 ANSI 스크린
BASIC 및 DOS등에서 활용가능한 ANSI 출력모드입니다.
조합형 한글, 완성형(CP949) 한글의 전환이 가능합니다.
초기에는 인터레이스 모드만 있었지만, 나중에는 넌인터레이스 모드도 추가되었습니다.
그래도 고해상도 모드(가로폭 512픽셀)라서 RGB 모니터가 아니라면 글씨를 읽기 힘들겠네요.
.
.
.
이렇게 램상주 폰트의 말로는 폰트팩의 탄생으로 연결되었습니다.
HV, M에서는 램상주 폰트를 지원하니까 에뮬 등에서 활용하시려면 한번 써보셔요.
(에뮬에서는 폰트팩을 지원안하니까요ㅋ)
2012년 ~ 2015년 사이의 작업들이었습니다.
긴 글 읽어주셔서 감사합니다요~ ㅎ.ㅎ