MSXシリアルターミナル
Project description
MSXシリアルターミナル
シリアル接続や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コマンド説明)
主要設計原則
- 瞬時応答: リアルタイムMSX通信のための文字単位処理
- 自動適応: モード検出によってターミナル動作をMSX状態に適応
- 統合接続: 複数接続タイプに対する単一インターフェース
- コンテキスト認識: 現在のMSXモードにコマンドと補完が適応
- 堅牢なエラー処理: 接続とエンコーディング問題の優雅な処理
テスト
プロジェクトには包括的なテストスイートが含まれています:
# 全テスト実行
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file msx_serial-0.2.16.dev9.tar.gz.
File metadata
- Download URL: msx_serial-0.2.16.dev9.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
608340a43e902e74ef9ed1ef934363c9bab032b5261de2c5f9c32003af36c3b1
|
|
| MD5 |
53ee177f6aaf850e7345f4ec19d0bca9
|
|
| BLAKE2b-256 |
0ad4edf3db667187e44d791586ed40766ba742fdb441db8abc2457e064a51543
|
File details
Details for the file msx_serial-0.2.16.dev9-py3-none-any.whl.
File metadata
- Download URL: msx_serial-0.2.16.dev9-py3-none-any.whl
- Upload date:
- Size: 202.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dce71c16d5c7dda4ee06fd7a3b3b3f65931f15110b6edf612acdb48de8e41c54
|
|
| MD5 |
660968d4c7ece9b7a832b95c4cbfaa3d
|
|
| BLAKE2b-256 |
e64fa516670bca1bab21d21d37b1a4db6b2085d74594cb0d0de2df87c5cd66e8
|