이번에는 폰트팩의 문자 출력 및 코드 변환을 해보았습니다.
아래는 폰트팩의 I/O 레지스터 맵입니다.
기본적인 입출력은 I/O 포트를 통해 동작하도록 만들어져있습니다.
첫번째 레지스터(50H)는 read 시, 이전에 write한 값이 들어오지만,
그 외 레지스터(51H, 52H, 53H)들은 read/write 각각 기능이 다르게 동작합니다.
52H, 53H 레지스터는 읽을 때마다, 값이 변하게 되어있습니다.
레지스터 내부적으로는 메모리의 32bytes 공간을 순차적으로 read하도록 동작합니다. (1BPP 기준)
만약 4BPP 모드라면, 128번 read 가능합니다.
아래는 16 x 16 사이즈 폰트로 내장된 데이터입니다.
90년대 널리 쓰였던 844 조합 폰트로 만들어져있습니다.
아래는 간단한 BASIC 프로그램으로 폰트 데이터를 표시해주는 모습입니다.
1BPP 모드로 설정되므로, 글자 한개당 32bytes를 읽습니다.
문자코드 B0A1 '가' 입니다.
CP949 확장 코드인 8142 '갃' 입니다.
아래는 사용되었던 BASIC 프로그램 소스입니다.
한글 뷰어 HV로 표시한 모습입니다. (12 x 12 폰트 모드 사용)
아래는 컬러 레지스터를 활용하여, 4BPP 모드로 출력해본 모습입니다. (스크린 7 사용)
문자색이 설정되면, 포트에서 읽은 데이터에 이미 색이 입혀져(?) 있습니다.
VRAM에 그대로 써주면 되도록 만들어져있습니다.
같은 방식으로 아스키 문자를 표시한 모습이구요.
참고로 아스키 문자는 4벌이 들어있습니다.
모드 레지스터 설정으로 선택이 가능합니다.
아래는 한글뷰어(HV)로 16 x 16 및 12 x 12 폰트를 테스트한 모습입니다.
하이텔 파라동 시절 완성형 코드로 된 갈무리 문서를 표시했습니다.
16 x 16 사이즈~
요건 12 x 12 사이즈
폰트가 굴림체라서, 윈도 메모장 처럼 보이죠? ㅋ
아래는 조합형 코드를 사용하는 ISS 문서를 표시한 모습입니다.
ISS 파일 아시죠? IMS 음악 가사 파일이요. ㅎ.ㅎ
12 x 12 폰트로 표시한 모습~
아래는 12 x 12 폰트로 사용된 굴림체 데이터입니다.
원본 FNT 파일은 16 x 16 사이즈로 되어있지만, 폰트롬으로 변환할때는 12 x 12 외의 공백은 삭제되어 들어갑니다.
그럼, 이번에는 폰트팩 SRAM를 이용한 문자 출력 테스트입니다.
MS 도스시절 쓰이던 폰트의 특수 문자 몇개를 긁어왔습니다.ㅋ (4Kbytes)
아래처럼 FONTPACK.COM으로 다운로드 가능하구요.
아래는 4BPP 모드로 설정해서 표시한 모습입니다.
참고로 2bytes 문자 코드가 0000H ~ 7FFFH 사이값이면, 폰트팩 SRAM 데이터가 출력이 되구요.
코드가 8000H ~ FFFFH 사이값이면, 플래쉬롬의 데이터가 출력됩니다.
마지막으로 코드 변환 테스트입니다.
CP949 코드와 조합형 코드 사이 변환이 가능한 것을 볼수 있습니다.
댓글 없음:
댓글 쓰기