Skip to content

Foundation の console で PCG mode 3 の全角文字を表示する - #153

Merged
src3453 merged 2 commits into
mainfrom
claude/project-thread-hbxck4
Oct 24, 2026
Merged

src3453 merged 2 commits into
mainfrom
claude/project-thread-hbxck4

Conversation

@src3453

@src3453 src3453 commented Oct 24, 2026

Copy link
Copy Markdown
Owner

Requested by src3453 · project thread

Closes #150

概要

#148 で VDP に入った PCG mode 3 の 2 byte 文字(FG 属性 bit 7:6 = 01 MSB / 10 LSB、WIDE_FONT_BASE)を、console サービスから使えるようにします。

  • 8×16 表示のときだけ、JIS X 0208 の文字と U+FFFD を UTF-8 → UTF-16 の code unit に変換して 2 セル幅で描画します。それ以外(8×8 表示、補助平面、集合外)は従来どおり ? 1 セルです。
  • 行末では折返してから描画し、BS は 2 セル戻り、片方のセルを上書き・消去したときは残りを空白にします。スクロールは行単位なので影響しません。
  • フォントは最初に mode 3 へ切り替えたときだけ VRAM 0x200000 + u*32(Unifont ROM と同じ並び)へ書き、WIDE_FONT_BASE を設定します。データは foundation/boot/wide_font.py がビルド時に assets/unifont-bmp.chr から生成します(約 240 KiB)。console の MMIO grant に 0x10200000–0x103FFFFF を追加し、1 byte 用フォント領域は引き続き触りません。
  • 仕様(doc/spec_Foundation_API.md §8.1/§8.1.2)、README、MEMORY.md を更新しました。

テスト

  • python3 -m unittest discover -s foundation/tests/console(ホスト+testbench、全 9 件)合格。新規 test_wide_characters_in_8x16 は属性・WIDE_FONT_BASE・Unifont 由来の画素を確認します。
  • FND_MM=slot でも同テスト合格。
  • シェル等の他テスト群は未実行です。

Generated by Claude Code

8×16表示で JIS X 0208 の文字と U+FFFD を UTF-16 の2セル文字として描画する。
全角フォントは最初の mode 3 切替時に VRAM 0x200000 へ配置し、折返し・BS・
上書き/消去時の対の解消を扱う。

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NgLFc3Zqfh41qc1tk5gozY
@src3453
src3453 merged commit 81dd0d8 into main Oct 24, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Foundation の console で PCG mode 3 の全角文字を表示する

2 participants