Tachibana

OricTel — 機能の詳細

Oric 1 / Atmos 用 Minitel 1B 端末 · C + 6502 アセンブリ(cc65)· EUPL 1.2 ライセンス

このページは OricTel のすべての機能を説明とともに列挙します。最新の正となる情報は GitHub リポジトリです。使い方と内部は ユーザーマニュアルアーキテクチャドキュメントを参照してください。

目次

1. Vidéotex デコーダ

OricTel の中核は Téletel/Antiope Vidéotex プロトコル(STUM 1B)のデコーダで、完全なステートマシンとして実装されています。

ステートマシン

ESCCSI(パラメータ付き)、USSS2REP(繰り返し)、SEP、およびプロトコルモード PRO1/PRO2/PRO3 を扱います。カーソル位置指定(US 行/列)、移動、消去、復帰。

PRO2 / PRO3 モード

ロールモード、小文字、キーボード切替、拡張/カーソルキーボード。左右矢印は、サーバがカーソルモード(PRO3)を有効にした場合にのみカーソルシーケンス(ESC[D / ESC[C)を送信します — 実機の Minitel 1B と同様です。

端末識別

ENQ/ENQROM の識別は意図的に無応答です:最新のサーバ(MiniPavi)は応答を消費せず入力欄にエコーします — 参照エミュレータ miedit と同じ挙動です。

2. HIRES 表示

解像度とグリッド

HIRES 240×200 ピクセル、すなわち 40 桁 × 25 行(6×8 ピクセルのセル)。ビット 7 による反転、スキャンラインごとの Oric シリアル属性。上端の行にステータスバー。

アセンブリの描画エンジン

6502 のスパンエンジン(1 セルあたり ~300 サイクル)。「dirty」セルの更新:各フレーム(50 Hz)で変更されたセルのみを HIRES フレームバッファに再描画するため、CPU 負荷が大幅に低減します。適応的バジェット:ページ読込中でもキーボードは反応します。キー入力エコー ~1 ms(単一セル描画)、全ページ ~0.3 秒。

3. 文字集合

G0 / G1 / G2

G0/G1 の切替は SI/SO;G2 文字は SS2

4. セルごとの属性

完全な属性

インク色(0-7)、背景色(0-7)、点滅(flash)、反転、下線 / モザイク区切り、隠し(concealed)、サイズ:標準、倍高、倍幅、倍サイズ。混成カラーヒューリスティックが Oric のシリアル属性で Minitel のセルごとの色を近似します:先読み付きで空セルに属性を配置(後続テキストの色)、属性が合致するときはモザイクを単色で、それ以外は輝度ディザリングで代替。

5. 描画モード(CTRL+D)

Oric は Minitel のように各セルを個別に着色できません。OricTel は 3 つの切替可能な方式を提供します:

モード挙動
AUTO(既定)最良の妥協。行ごとに判断:可能な行は属性の色、密な多色域は輝度ディザリング、不適な行は白描画。
DITHERINGすべて密度ディザリング:色の明度の階層をテクスチャ付き「グレースケール」として保持。
RAW(生)すべて黒地に白:形状の可読性が最大、色なし。

6. 接続

AT モデム(唯一の方法)

OricTel は $0380 の ACIA 6551 経由で Hayes モデムを制御します(PicoWiFiModemUSB、実機または Phosphoric エミュレーション --serial modem/picowifi):ATZ(リセット)の後 ATDT ホスト:ポート(発呼 = TCP 接続)。サーバはメニューで選ぶため、エミュレータを再起動せず切替できます。

Oric からの WiFi 設定

実機の LOCI + PicoWiFiModemUSB 構成では、「WiFi 設定」メニューが Oric からすべてを設定します:スキャン(AT$SCAN)で圏内の 2.4 GHz ネットワーク、選択、パスワード入力(マスク)、続いて接続(AT$SSID=/AT$PASS=/ATC1)と Pico の NVRAM への保存(AT&W)。

WebSocket ブリッジ

orictel_bridge.py(Python asyncio)が TCP(ポート 3615)を WebSocket Minitel サーバ(ws://3617.fr/ws)へ中継します。透過的なバイナリ中継、単一クライアント、統計、-v モード。

7. Minitel サーバ

サーバアドレス備考
PAVI 3617pavi.3617.fr:3617推奨、Téletel トップページ
MiniPavigo.minipavi.fr:516マルチサービスのゲートウェイ
その他自由入力 ホスト:ポートサーバメニューの選択肢 3

8. Minitel キーボード

OricTel は Oric-1 と Atmos で動作します。機能キーは CTRL+文字(両機種)または FUNCT+文字(Atmos のみ)を使います。

Minitel 機能Oric-1 & AtmosAtmos のみ送信コード
送信RETURNSEP $41
戻るCTRL+R または 上矢印FUNCT+RSEP $42
再表示CTRL+EFUNCT+ESEP $43
ガイドCTRL+GFUNCT+GSEP $44
取消CTRL+A または ESCFUNCT+ASEP $45
目次CTRL+SFUNCT+SSEP $46
訂正DELETESEP $47
次へCTRL+NFUNCT+NSEP $48
接続/終了CTRL+CFUNCT+CSEP $49
左右矢印左/右矢印ESC[D / ESC[C(PRO3 カーソルモード)

ローカルショートカット(サーバへは何も送りません):CTRL+D は描画モードを切替、CTRL+L は画面をローカルで消去、CTRL+F はシリアル接続(ACIA)をリセット。

9. 画面とステータス

表示領域と接続インジケータ

1-24 行:サーバの Vidéotex ページ(40 桁)。ステータス行(右上):反転 C = 最近データ受信(接続中)、F = ~30 秒データなし(接続が切れた可能性)。カーソル:サーバが有効化したとき、現在セルの下の点滅バー(入力欄)。起動時に AY-3-8912 のジングル付きスプラッシュ画面。

10. 技術仕様

シリアル(ACIA 6551)

LOCI ベース($0380)の ACIA 6551。レジスタ:データ $0380、ステータス/リセット $0381、コマンド $0382、コントロール $0383。STATUS レジスタの純粋なポーリング、ACIA IRQ なし;レジスタ書込は SEI/PLP で保護(実 LOCI の MIA 制約)。メインループが排出する非ブロッキングのソフトウェア TX キュー。

メモリ

TAP ~23 KB;コード+データは $9800 未満(cc65 スタックは $0800);HIRES フレームバッファ $A000-$BF3F。ステータスバーは $BB80+。

プロトコルと性能

Téletel/Antiope Vidéotex(STUM 1B)。全ページ ~0.3 秒、キー入力エコー ~1 ms。妥当性の参照:miedit/telenet の JS エミュレータ。

11. ビルドと実行

make                # orictel.tap をビルド
make dsk            # Sedoric ディスケット orictel.dsk(MFM_DISK、起動可能)
make test           # ホストテスト(Vidéotex、ACIA/SMC、AT モデム、キーボード、ブリッジ)
make fuzz           # Vidéotex デコーダの fuzzing(ASAN/UBSAN)
make coverage       # ホスト gcov カバレッジ
make run            # Phosphoric で AT モデムモード実行
make run-ws         # WebSocket ブリッジ + エミュレータを起動
make run-dsk        # Sedoric ディスケットの Microdisc 起動

前提:cc65(≥ 2.19)、Python 3.8+ と websockets ≥ 12.0(ブリッジのみ)、Phosphoric エミュレータ(または物理 LOCI/PicoWiFiModemUSB)、および Oric の ROM(Atmos は basic11b.rom、Oric-1 は basic10.rom)。

12. 既知の制限

← OricTel に戻る · 技術ドキュメント →