Skip to main content

MSXシリアルターミナル

Project description

MSXシリアルターミナル

CI PyPI version

シリアル接続やTelnetを通じてMSXと通信するための高性能ターミナルプログラムです。瞬時の文字表示、自動モード検出、日本語テキストサポートを特徴としています。

特徴

瞬時通信: リアルタイムでの文字単位MSX通信に最適化
🔍 自動モード検出: BASICとMSX-DOSモードを自動検出
🌐 複数接続タイプ: シリアル、Telnet、ダミー接続に対応
📝 日本語テキストサポート: MSX文字エンコーディングの完全サポート
📁 ファイル転送: BASICプログラムアップロードとテキストファイル貼り付け機能
🎯 スマート補完: コンテキスト対応のコマンド補完
🎨 カラー表示: 美しいカラーターミナル出力
高いテストカバレッジ: 95%のコードカバレッジと455のテストケース

インストール

pip install msx-serial

使用方法

基本接続

# シリアル接続
msx-serial COM1                                    # Windows
msx-serial /dev/ttyUSB0                           # Linux
msx-serial /dev/tty.usbserial-12345678901         # macOS

# パラメータ付きシリアル接続
msx-serial 'serial:///dev/ttyUSB0?baudrate=115200&bytesize=8&parity=N&stopbits=1'

# Telnet接続
msx-serial 192.168.1.100:2223
msx-serial telnet://192.168.1.100:2223

# ダミー接続(テスト用)
msx-serial dummy://

コマンドラインオプション

使用方法: msx-serial [-h] [--encoding ENCODING] [--debug] connection

MSXシリアルターミナル

位置引数:
  connection           接続文字列 (例: COM4, /dev/ttyUSB0, 192.168.1.100:2223, dummy://)

オプション:
  -h, --help           ヘルプメッセージを表示して終了
  --encoding ENCODING  テキストエンコーディング (デフォルト: msx-jp)
  --debug              デバッグモードを有効化

特殊コマンド

コマンド 説明 利用可能モード
@paste テキストファイル内容を貼り付け BASICモードのみ
@upload ファイルをBASICプログラムとしてアップロード BASICモードのみ
@cd 現在のディレクトリを変更 全モード
@encode テキストエンコーディングを設定 全モード
@help コマンドヘルプを表示 全モード
@mode MSXモードを表示/強制変更 全モード
@perf パフォーマンス統計を表示 全モード
@exit プログラムを終了 全モード

詳細なコマンド使用方法は @help をご覧ください。

MSXモード検出

ターミナルは自動的にMSX動作モードを検出して動作を調整します:

  • BASICモード: Ok プロンプトで検出 - ファイルアップロード/貼り付けコマンドが有効
  • MSX-DOSモード: A:>, B:>, C:> 等のプロンプトで検出
  • 不明モード: モードが検出されるまでのデフォルト状態

モードコマンド

@mode          # 現在のMSXモードを表示
@mode basic    # BASICモードに強制変更
@mode dos      # MSX-DOSモードに強制変更  
@mode unknown  # 不明モードにリセット

接続URI形式

シリアル接続

# 基本形式
serial:///dev/ttyUSB0

# パラメータ付き
serial:///dev/ttyUSB0?baudrate=115200&bytesize=8&parity=N&stopbits=1&timeout=1

サポートされるパラメータ:

  • baudrate: ボーレート (デフォルト: 9600)
  • bytesize: データビット (5, 6, 7, 8 - デフォルト: 8)
  • parity: パリティ (N, E, O, M, S - デフォルト: N)
  • stopbits: ストップビット (1, 1.5, 2 - デフォルト: 1)
  • timeout: 読み取りタイムアウト(秒)
  • xonxoff: ソフトウェアフロー制御 (true/false)
  • rtscts: ハードウェアフロー制御 (true/false)
  • dsrdtr: DSR/DTRフロー制御 (true/false)

Telnet接続

# 基本形式
telnet://hostname:port

# 例
telnet://192.168.1.100:2223
telnet://msx.local:2223

テキストエンコーディング対応

MSXテキスト用にサポートされるエンコーディング:

  • msx-jp: 日本語MSXエンコーディング (デフォルト)
  • msx-intl: 国際MSXエンコーディング
  • msx-br: ブラジルMSXエンコーディング
  • shift-jis: Shift-JISエンコーディング
  • utf-8: UTF-8エンコーディング

エンコーディング変更: @encode msx-jp

アーキテクチャ

コアコンポーネント

  • MSXSession: 瞬時応答付きメインターミナルセッション
  • ConnectionManager: 統合接続処理 (Serial/Telnet/Dummy)
  • MSXProtocolDetector: プロンプトからの自動モード検出
  • DataProcessor: 瞬時表示付きリアルタイムデータ処理
  • CommandCompleter: コンテキスト対応コマンド補完
  • FileTransferManager: ファイルアップロードと貼り付け操作

プロジェクト構造

msx_serial/
├── core/              # コアターミナルセッションとデータ処理
├── connection/        # 接続実装 (Serial/Telnet/Dummy)
├── protocol/          # MSXプロトコル検出とモード管理
├── display/           # ターミナル表示ハンドラー
├── completion/        # コマンド補完システム
├── commands/          # 特殊コマンドハンドラー
├── io/                # 入出力調整
├── transfer/          # ファイル転送機能
├── common/            # 共有ユーティリティとカラー出力
├── data/              # 静的データ (コマンドリスト、キーワード)
└── man/               # マニュアルページ(BASICコマンド説明)

主要設計原則

  1. 瞬時応答: リアルタイムMSX通信のための文字単位処理
  2. 自動適応: モード検出によってターミナル動作をMSX状態に適応
  3. 統合接続: 複数接続タイプに対する単一インターフェース
  4. コンテキスト認識: 現在のMSXモードにコマンドと補完が適応
  5. 堅牢なエラー処理: 接続とエンコーディング問題の優雅な処理

テスト

プロジェクトには包括的なテストスイートが含まれています:

# 全テスト実行
python -m pytest

# カバレッジ付き実行
python -m pytest --cov=msx_serial --cov-report=term-missing

# 特定テスト実行
python -m pytest tests/test_completion.py

テスト統計:

  • 総テスト数: 455件
  • コードカバレッジ: 95%
  • テスト成功率: 100%

開発

要件

  • Python 3.9+
  • pyproject.toml に記載された依存関係

開発環境セットアップ

# リポジトリクローン
git clone https://github.com/yamamo-to/msx-serial
cd msx-serial

# 仮想環境作成
python -m venv venv
source venv/bin/activate  # Linux/macOS
# または
.\venv\Scripts\activate   # Windows

# 開発モードでインストール
pip install -e . --use-pep517

コード品質

# コードフォーマット
black msx_serial/ tests/

# リンターチェック
flake8 msx_serial/ tests/

# 型チェック
mypy msx_serial/

ライセンス

このプロジェクトはMITライセンスのもとで公開されています。

貢献

プルリクエストや課題報告を歓迎します。貢献前にテストを実行し、コード品質チェックを通過させてください。

更新履歴

v0.2.16.dev2

  • 包括的なテストスイート実装(455テスト、95%カバレッジ)
  • blackによるコードフォーマット統一
  • 不要コードの削除とクリーンアップ
  • 日本語ドキュメント統一

主要機能

  • 瞬時応答MSX通信
  • 自動モード検出
  • ファイル転送機能
  • 日本語テキストサポート
  • 包括的テストカバレッジ

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

msx_serial-0.2.16.tar.gz (147.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

msx_serial-0.2.16-py3-none-any.whl (202.7 kB view details)

Uploaded Python 3

File details

Details for the file msx_serial-0.2.16.tar.gz.

File metadata

  • Download URL: msx_serial-0.2.16.tar.gz
  • Upload date:
  • Size: 147.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for msx_serial-0.2.16.tar.gz
Algorithm Hash digest
SHA256 c06e066dd9f98785d019805f29802cc5f037128b8e8df27c7208e972177e6246
MD5 be728b98190704859c01756049e2c9b0
BLAKE2b-256 bcd52347e926ce7b6b85cd8078478bbbf717e908223d178fe47ba6fe4101d92d

See more details on using hashes here.

File details

Details for the file msx_serial-0.2.16-py3-none-any.whl.

File metadata

  • Download URL: msx_serial-0.2.16-py3-none-any.whl
  • Upload date:
  • Size: 202.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for msx_serial-0.2.16-py3-none-any.whl
Algorithm Hash digest
SHA256 c909aa5824a484ab03ebcd33ee2e7e8a5015e928048a0a567bc1b245618dc6db
MD5 2670264f5c0fbaa2bf3618506e1d3e70
BLAKE2b-256 72ecddef81feeaf97fee34fcbe3b7a221ffd55c43e106833b068d88448d33053

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page