c_dos / README.md
HelloSun's picture
小貓中文 v1.0: add author HelloSun, first-version date and GPLv3 section 7(b) attribution term (docs, source headers, startup notice)
64ace35 verified
|
Raw History Blame Contribute Delete
4.85 kB
metadata
title: 小貓中文 FreeDOS
emoji: 🐱
colorFrom: blue
colorTo: green
sdk: static

小貓中文 (XiaoMao Chinese)

DOS 常駐(TSR)的 Big5 中文顯示與注音輸入外掛,在瀏覽器(含手機)中以 FreeDOS + js-dos 6.22 執行。載入後回到一般 DOS 提示字元,DOS 指令照常使用,並可直接輸入、顯示中文。全部元件皆為開源,建置時由上游下載並驗證雜湊。

作者與授權

  • 作者:HelloSun 版本:1.0(首版,2026-10-25) 版權:Copyright (C) 2026 HelloSun
  • 授權:GNU GPL-3.0-only,並依 GPLv3 第 7(b) 條附加條款:複製或修改時必須保留作者聲明,不得移除(見 LICENSE)。
  • 程式啟動時會顯示作者與授權聲明,網頁頁尾也有;請勿移除。第三方元件(FreeDOS、HimemX、GNU Unifont、js-dos 等)維持各自授權,見 NOTICE.md。

運作方式(傳統中文系統作法)

  • 程式看到的仍是 80×25 文字模式:文字畫面保存在 B800:0000(影子文字緩衝區),所以 PE2 這類直接寫顯示記憶體的程式與使用 INT 10h 的程式都能照常運作。
  • 實際顯示是 640×400 的 16 色繪圖模式;常駐程式把影子文字畫成像素:英數用 ROM 8×16 字型,Big5 雙位元組用放在 XMS 的 16×16 字型。畫面上不同漢字數量沒有上限(整頁約 900 個不同漢字已測過)。
  • 攔截 INT 10h:完整模擬文字模式 BIOS(模式設定、游標、捲動、讀寫字元、TTY、字串);程式要求繪圖模式時(例如 13h)直接交給 BIOS,回到文字模式時自動恢復。
  • 攔截 INT 16h:Ctrl+Space 切換注音/英數,選好的字以兩個按鍵位元組交給程式,同時是畫面重繪的觸發點;注音候選列畫在最底列,用完即還原。
  • Ctrl+\ 切換 Big5 顯示(遇到使用 CP437 畫框字元的程式時關閉)。INT 2Fh AX=D7A0h 防重複載入。
  • 常駐約 15 KB 傳統記憶體;字型與詞庫在 XMS(FreeDOS 開機片以 HimemX 提供)。載入時(及再次執行 XIAOMAO)顯示常駐大小、可用傳統記憶體與 XMS(即時 MEM)。

附加軟體(開機片內)

  • XEDIT.EXE:仿 PE2 的全螢幕文字編輯器,直接寫 B800 並用 INT 10h/16h,可編輯中文(XEDIT DEMO.TXT;F2 存檔、F3/Esc 離開)。
  • FreeDOS:COMMAND.COM(FreeCOM)、MEM、MORE、XCOPY、ATTRIB、DELTREE;HIMEMX.EXE(XMS)。
  • DEMO.TXT:中文示範文字(TYPE DEMO.TXT)。

操作

  • 網頁上的 「▶ 示範 Demo」 按鈕會自動操作 DOS 並以字幕說明每一步(約 40 秒,字幕停留時間按閱讀速度設計):TYPE 顯示中文、開啟注音、輸入「你好電腦」、候選字分頁、XEDIT 編輯中文;可隨時按「■ 停止示範」。

  • 點選 DOS 畫面後使用實體鍵盤,或用畫面下方的虛擬鍵盤(含 Shift、\、:、Tab)。

  • Ctrl+Space 切換注音/英數(網頁有按鈕);Ctrl+\ 切換 Big5 顯示(網頁有按鈕)。

  • 注音採倚天鍵位;輸入音節後按聲調鍵(6 3 4 7)或空白鍵出候選字,按 1–9 選字。候選字超過 9 個時分頁(右側顯示 2/7):按空白鍵環形切換下一頁(最後一頁再按回到第一頁);只有一頁時空白鍵/Enter 選第一個。每個音最多 63 個候選字。

限制

  • 不支援直接改寫 CRTC/VGA 暫存器做文字模式特效(游標位置暫存器除外)、載入自訂字型、閃爍屬性(以高亮背景代替)。
  • 文字畫面以約 18 次/秒更新(隨計時器),極快速的畫面動畫會有延遲。
  • 只有注音輸入法,沒有詞組/聯想。

一鍵建置與部署

主機需有:bash gcc make nasm mtools unzip curl gzip python3(含 venv)。其餘(Open Watcom 1.9、JWasm、HimemX 原始碼、GNU Unifont、FreeDOS 1.4、js-dos 6.22.60、Python 套件)由 build.sh 自動下載、驗證、建置。

HF_TOKEN=hf_xxx HF_SPACE=user/space ./build.sh   # 建置並上傳
./build.sh                                        # 只建置到 dist/

HF_TOKEN、HF_SPACE 是 build.sh 開頭的變數(可用環境變數覆寫);token 絕不寫入專案。上傳內容含網頁、自架 DOSBox、開機映像,以及開發包 dev/xiaomao-dev.zip 與 dev/HANDOFF.md。

HF 靜態 Space 以無 CORS 的重新導向提供二進位檔,所以 DOSBox 核心與開機映像以 base64 文字放在 emu.b64.js/dos.b64.js,頁面載入後轉成 Blob 交給 js-dos,不依賴任何外部 CDN。

接手開發請讀 HANDOFF.md。第三方授權見 NOTICE.md。

授權

本專案原始碼:GNU GPL-3.0-only(LICENSE、LICENSE-GPL-3.0.txt)。FreeDOS、HimemX、GNU Unifont、js-dos 各依其上游授權,詳見 NOTICE.md。