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)のデコーダで、完全なステートマシンとして実装されています。
ステートマシン
ESC、CSI(パラメータ付き)、US、SS2、REP(繰り返し)、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 — 英数字(Minitel ASCII、フランス語アクセント)。
- G1 — 2×3 ブロックのセミグラフィックモザイク(64 パターン)、事前計算キャッシュ。
- G2 — 拡張 CEPT、ダイアクリティカルおよび合成済みアクセント(小文字/大文字)。
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 3617 | pavi.3617.fr:3617 | 推奨、Téletel トップページ |
| MiniPavi | go.minipavi.fr:516 | マルチサービスのゲートウェイ |
| その他 | 自由入力 ホスト:ポート | サーバメニューの選択肢 3 |
8. Minitel キーボード
OricTel は Oric-1 と Atmos で動作します。機能キーは CTRL+文字(両機種)または FUNCT+文字(Atmos のみ)を使います。
| Minitel 機能 | Oric-1 & Atmos | Atmos のみ | 送信コード |
|---|---|---|---|
| 送信 | RETURN | SEP $41 | |
| 戻る | CTRL+R または 上矢印 | FUNCT+R | SEP $42 |
| 再表示 | CTRL+E | FUNCT+E | SEP $43 |
| ガイド | CTRL+G | FUNCT+G | SEP $44 |
| 取消 | CTRL+A または ESC | FUNCT+A | SEP $45 |
| 目次 | CTRL+S | FUNCT+S | SEP $46 |
| 訂正 | DELETE | SEP $47 | |
| 次へ | CTRL+N | FUNCT+N | SEP $48 |
| 接続/終了 | CTRL+C | FUNCT+C | SEP $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. 既知の制限
- Minitel のセルごとの色は Oric のシリアル属性で近似されます:使える空セルのない行では、テキストの色が失われる(白描画)ことがあります。
- MIXED モード(80 桁のテレインフォマティクス)は未対応です。
- 端末識別(ENQ/ENQROM)は意図的に無応答です(miedit に整合)。
- 実機 Oric + モデム向けの実 V23 設定(1200/75 ボー、7E1)はロードマップにあります;エミュレータでは転送は即時です。