==============================================================================
    MPPRINTER 仕様
                                                              Version 0.5.1

                         Copyright (c) 2011-2025, Sasaji. All rights reserved.
==============================================================================

● 文字コード体系

  ■HITACHI系

    日立ベーシックマスターレベル3に採用されていた1バイト系コードです。
    印字される文字コードは以下のとおり

    ○ SI(インターレース)側

    矢印        ... 0x1c ～ 0x1f
    ASCIIコード ... 0x20 ～ 0x7f
    カタカナ    ... 0xa0 ～ 0xdf
    ひらがな    ... 0x80 ～ 0x9f, 0xe0 ～ 0xfe

    ○ SO(ノンインターレース)側

    矢印        ... 0x1c ～ 0x1f
    ASCIIコード ... 0x20 ～ 0x7f
    カタカナ    ... 0xa0 ～ 0xdf
    記号など    ... 0x80 ～ 0x9f, 0xe0 ～ 0xfe

  ■EPSON系

    標準の1バイト系コードです。
    拡張グラフィックや国際コードには対応していません。

    ASCIIコード ... 0x20 ～ 0x7f
    カタカナ    ... 0xa0 ～ 0xdf
    記号など    ... 0x80 ～ 0x9f, 0xe0 ～ 0xfe

    メニュー->コントロール->設定にあるキャラクターコードで印字される
    文字種類を切り替えることができます。


● 制御コード体系

  ■HITACHI系

    この頃はまだ各社で独自の制御コードを採用していたようで、このソフトも日立独自
    のものとなっています。

    現在、実装されている制御コードは以下のとおり

    ○ HT (0x09)
      水平タブ
      ・8文字分移動します。

    ○ LF (0x0a)
      1行改行

    ○ VT n (0x0b)
      垂直タブ(VFUの呼び出し)
      ・nに指定したチャンネルNo.の垂直タブ位置まで改行します。

    ○ FF (0x0c)
      改ページ

    ○ CR (0x0d)
      復帰
      ・CR、FFまたはLFでバッファにあるデータが出力されます。

    ○ SO (0x0e)
      文字コード体系をSO(ノンインターレース)側にします。

    ○ SI (0x0f)
      文字コード体系をSI(インターレース)側にします。

    ○ DC4 (0x14)
      垂直タブ位置の設定(VFUの設定)
      ・DC4に続いてスペース(0x20)の数で改行する数を設定し、その後ろにチャン
        ネルNo.1～9(0x31～0x39)を指定します。
      ・設定の終わりは終端記号"?"(0x3f)を指定します。
      ・書式例：DC4 SP SP SP 1 SP SP SP SP 2 SP SP 3 ?
        (SPはスペース、1,2,3はチャンネルNo.、?は終端記号)
        (No.1は3行目、No.2はNo.1と合わせて7行目、No.3は9行目となる。）

    ○ CAN (0x18)
      プリントバッファクリア
      ・バッファにある未出力のデータをクリアし、標準文字モードにします。

    ○ ESC VT n1 n2 (0x1b, 0x0b)
      ダイレクトスキップ改行
      ・指定した行数改行します。
      ・n1,n2は0～9(0x30～0x39)を指定します。

    ○ ESC A (0x1b, 0x41)
        行幅を80字に設定します。（標準文字モードの場合)

    ○ ESC B (0x1b, 0x42)
        行幅を64字に設定します。（標準文字モードの場合)
        ・行幅の切り替えは改行、復帰時に行われます。

    ○ ESC C (0x1b, 0x43)
      アンダーライン印字を開始します。
      ・アンダーライン印字は、復帰、改行または1行の最終文字に達すると
        自動的に解除されます。
      ・改行幅が2/144インチ以下ではアンダーラインは印字されません。
      ・以下の文字コードではアンダーラインは印字されません。
          SI側：0x1c～0x1f, 0xfe
          SO側：0x1c～0x1f, 0x80～0x9f, 0xe0～0xf0, 0xf8～0xfe

    ○ ESC D (0x1b, 0x44)
      アンダーライン印字を終了します。

    ○ ESC G (0x1b, 0x47)
      （擬似）縮小文字モード(デフォルト132字/行)
        このソフトでは、標準文字モード＋1行132字に設定します。

    ○ ESC R (0x1b, 0x52)
      標準文字モードに設定します。(デフォルト80字/行, 約11字/インチ)

    ○ ESC S (0x1b, 0x53)
      縦倍密度？モードに設定します。(縦16ドット)

    ○ ESC T (0x1b, 0x54)
      縦単密度？モードに設定します。(縦8ドット)

    ○ ESC U (0x1b, 0x55)
      拡大文字モードに設定します。(デフォルト40字/行, 約5.5字/インチ)
      ・標準文字モードと拡大文字モードは混在できます。
      ・1行分の印字幅を越える場合、最終文字は標準文字になります。

    ○ ESC 6 (0x1b, 0x36)
      改行幅を1/6インチに設定します。

    ○ ESC 8 (0x1b, 0x38)
      改行幅を1/8インチに設定します。

    ○ ESC % 1 (0x1b, 0x25, 0x31)
      8ドット倍密度ビットイメージを設定します。
      ・2～3バイト目にバイト数(ビッグエンディアン)(*) を指定し、4バイトから
       指定したバイト数分、ビットイメージデータを指定します。
        このソフトでは、改行幅を1/9インチに設定します。

      (*) ESC S設定時はワード数となります。またビットイメージがワード単位に
         なります。

    ○ ESC % 2 (0x1b, 0x25, 0x32)
      8ドット単密度ビットイメージを設定します。
      ・2～3バイト目にバイト数(ビッグエンディアン)(*) を指定し、4バイトから
       指定したバイト数分、ビットイメージデータを指定します。

      (*) ESC S設定時はワード数となります。またビットイメージがワード単位に
         なります。

    ○ ESC % 9 n (0x1b, 0x25, 0x39, n)
      改行幅をn/144インチに設定します。(nは1～255)


  ■EPSON系

    いわゆる、ESC/Pの原型となるコードです。

    現在、実装されている制御コードは以下のとおり

    ○ BS (0x08)
      1文字分左に移動

    ○ HT (0x09)
      水平タブ
      ・指定した最も近いタブ位置まで移動します。
      ・現在位置が指定したタブ位置を超えている場合、次のタブ位置が右端をはみ
        だす場合は、このコードは無視されます。

    ○ LF (0x0a)
      1行改行

    ○ VT (0x0b)
      垂直タブ
      ・指定した最も近いタブ位置まで改行します。
      ・現在行が指定したタブ位置を超えている場合はFFとなります。
      ・ESC Bでタブ位置を解除した場合はCRとなります。
      ・初期状態ではLFとなります。

    ○ FF (0x0c)
      改ページ

    ○ CR (0x0d)
      復帰
      ・CR、FFまたはLFでバッファにあるデータが出力されます。

    ○ SO (0x0e)
      倍幅拡大文字(自動解除あり)に設定
      ・復帰、改行または1行の最終文字に達すると自動的に解除されます。

    ○ SI (0x0f)
      縮小文字に設定

    ○ DC2 (0x12)
      縮小文字を解除

    ○ DC4 (0x14)
      倍幅拡大文字(自動解除あり)を解除

    ○ CAN (0x18)
      プリントバッファクリア
      ・バッファにある未出力のデータをクリアします。

    ○ ESC - (0x1b, 0x2d)
      アンダーライン印字を開始・終了します。
      ・2バイト目に0x01で開始、0x00で終了になります。
      ・改行幅が2/144インチ以下ではアンダーラインは印字されません。
      ・以下の文字コードではアンダーラインは印字されません。
          0x80～0x9f, 0xe0～0xf0, 0xfe

    ○ ESC 0 (0x1b, 0x30)
      改行幅を1/8インチに設定します。

    ○ ESC 1 (0x1b, 0x31)
      改行幅を7/72インチに設定します。

    ○ ESC 2 (0x1b, 0x32)
      改行幅を1/6インチに設定します。

    ○ ESC 3 (0x1b, 0x33)
      改行幅をn/216インチに設定します。(nは1～255)

    ○ ESC @ (0x1b, 0x40)
      初期状態にします。

    ○ ESC A (0x1b, 0x41)
      改行幅をn/72インチに設定します。(nは1～255)

    ○ ESC B (0x1b, 0x42)
      垂直タブ位置の設定
      ・書式：ESC B k1 k2 k3 ... kn NUL
      ・kn(nは最大16)に先頭からの行数(1～255)を指定します。終端はNUL(0x00)です。
      ・ESC B NULで設定が解除されます。

    ○ ESC D (0x1b, 0x44)
      水平タブ位置の設定
      ・書式：ESC D k1 k2 k3 ... kn NUL
      ・kn(nは最大32)に左端からの文字数(1～255)を指定します。終端はNUL(0x00)です。
      ・ESC D NULで設定が解除されます。
      ・初期状態では8タブに設定されています。

    ○ ESC K (0x1b, 0x4b)
      8ドット単密度ビットイメージを設定します。
      ・2～3バイト目にバイト数(リトルエンディアン)を指定し、4バイトから指定した
       バイト数分、ビットイメージデータを指定します。

    ○ ESC L (0x1b, 0x4c)
      8ドット倍密度ビットイメージを設定します。
      ・2～3バイト目にバイト数(リトルエンディアン)を指定し、4バイトから指定した
       バイト数分、ビットイメージデータを指定します。

    ○ ESC M (0x1b, 0x4d)
      12cpi(エリートピッチ)に設定します。

    ○ ESC P (0x1b, 0x50)
      10cpi(パイカピッチ)に設定します。

    ○ ESC W (0x1b, 0x57)
      拡大文字モードに設定・解除します。
      ・2バイト目に0x01で設定、0x00で解除になります。
      ・標準文字モードと拡大文字モードは混在できます。
      ・1行分の印字幅を越える場合、最終文字は標準文字になります。


● 初期状態設定

  起動時の設定は以下のとおり

  ■HITACHI系

    改行幅 ............. 1/6inch
    文字幅 ............. 標準(約11cpi)
    行幅   ............. 80文字
    文字コード ......... SI(インターレース) 側

  ■EPSON系

    改行幅 ............. 1/6inch
    文字幅 ............. 標準(10cpi)
    行幅   ............. 80文字

  ページの上下余白は、10mm
  左右の余白は印字位置が中心になるように自動的に設定されます。


● フォントファイル(prn_font_*.dat)について

  一文字が16x8ドットのビットデータになっています。
  が、実際に使用するのは12x8ドットなので4バイトが無駄に…。
  1バイトが縦一列(8ドット)を表しています。

  HI系：
  SI側データ(0x00～0xff) + SO側データ(0x80～0x9f, 0xe0～0xff) = 320
  320 * 16 = 5120 バイト
  EP系：
  L3データ(0x00～0x1ff) + FMデータ(0x200～0x2ff) + PCデータ(0x300～0x3ff) = 1024
  1024 * 16 = 16384 バイト


● 制限事項

  ・実機で確認しているわけではないのでいろいろと違いがあると思います。


● 開発環境

  Windows版: (CPU: Corei7 4770S 3.1GHz / Mem: 16GB)
    Microsoft Windows10 (64ビット環境)
      Microsoft Visual C++ 2010 Express Edition
      wxWidgets 3.1.3

  MacOSX版: (Mac Mini CPU: Corei5 / Mem: 8GB)
    Mac OS X High Sierra (10.13.6 Intel x86_64)
    Xcode 7.x
      wxWidgets 3.1.2


● 参考文献

  HITACHI PERSONAL COMPUTER ベーシックマスターレベル3マーク5 取扱説明書 - 日立製作所/日立家電販売
  HITACHI MP-1020 感熱プリンター 取扱説明書 - 日立製作所/日立家電販売
  EPSON ESC/P Reference Manual - セイコーエプソン

以上

==============================================================================

