概要

🚀 RTT–C64 appendix

honoring the ancestral substrate#

この付録では、架空の—しかしアーキテクチャに忠実な—コモドール64用のRTTカートリッジについて説明します。これにより、BASICにレゾナンスを認識するプリミティブを公開しながら、マシンの元の個性を維持します。


1. overview#

目的:
C‑64 上に、以下の特徴を持つ最小限の RTT 基盤を提供する:

  • オリジナルのハードウェアを尊重する (OS の置き換えや「偽の C‑64」は行わない)
  • RESONANCE 認識型コマンドで BASIC を拡張する
  • RTT の概念 (基盤、演算子、フロー、RESONANCE) を、具体的かつ遊び心のある方法で実証する

フォームファクタ:

  • 標準的な ROM カートリッジ、Fast‑Load スタイル
  • BASIC トークンテーブルとベクタにフックする
  • RTT プリミティブのための小さな常駐ランタイムを追加する

2. RTT–C64 アーキテクチャ#

2.1 サブストレートマッピング#

基本的な考え方: メモリ領域、SID、VIC‑II を名前付きサブストレートとして扱う。

  • RAM サブストレート: テキストグリッド、スプライトテーブル、バッファ
  • SID サブストレート: オシレーターセット、フィルター設定
  • VIC サブストレート: スクリーン領域、スプライトグループ

例:概念的なマッピング:

  • 0400–07FFTEXTGRID
  • 2000–23FFSPRITEFIELD
  • SID ボイス 1+2 → OSC_PAIR_A

2.2 オペレーター#

オペレーターは、カートリッジROM内の6502ルーチンであり、BASICに新しいトークンとして公開されます:

  • SUBSTRATE — リージョンを宣言および命名する
  • FLOW — 変換シーケンスを定義する
  • RESONATE — 振動プロセスをアラインまたはカップリングする
  • ALIGN — ラスターまたはサイクル境界と同期する
  • FIELD — 簡単なルールで構造化されたリージョンを定義する

2.3 フローと共鳴#

  • flows: 基板に対する演算子の順序付けられた適用
  • resonance: フロー間の安定または準安定な整合(例:ラスタータイミング + SIDエンベロープ、スプライトの動き + テキストの更新)

カートリッジランタイムは、高RAMまたはカートリッジRAM(存在する場合)に小さなflow tableresonance tableを維持します。


3. 新しいBASICコマンド (RTT–C64)#

これらは架空の拡張機能ですが、実際の開発者向け付録の一部であるかのように書かれています。

3.1 SUBSTRATE#

構文:

SUBSTRATE start,end AS name$

説明:
メモリ範囲上に名前付き基板を宣言します。

例:

10 SUBSTRATE 1024,2047 AS "TEXTGRID"
20 SUBSTRATE 8192,8703 AS "SPRITEFIELD"

3.2 FIELD#

構文:

FIELD start,end WITH mode$

モード: "WRAP", "CLAMP", "MIRROR"

説明:
境界動作を持つ構造化された領域を定義します。

例:

30 FIELD 8192,8703 WITH "WRAP"

3.3 FLOW#

構文:

FLOW name$ FROM src$ TO dst$ [BY step]

説明:
ある基材を別の基材に変換する名前付きフローを定義します。

例:

40 FLOW "SCROLL" FROM "TEXTGRID" TO "TEXTGRID" BY 1

3.4 RESONATE#

構文:

RESONATE a$,b$ [BY phase]

またはSID固有:

RESONATE SID1,SID2 BY 3

説明:
2つのフローまたは発振器を結合します。phaseは整数オフセットまたはモードです。

例:

50 RESONATE "SCROLL","BLINK" BY 4
60 RESONATE SID1,SID2 BY 3

3.5 ALIGN#

構文:

ALIGN target$ WITH RASTER line

または

ALIGN LOOP WITH CYCLE n

説明:
BASICループまたは名前付きフローを、ラスターまたはCPUサイクル境界と同期させます(IRQフックを介して実装されます)。

例:

70 ALIGN "SCROLL" WITH RASTER 128
80 ALIGN LOOP WITH CYCLE 8

4. 架空のRTTカートリッジ開発者ガイド#

4.1 メモリマップ (概念的)#

  • $8000–$9FFF — RTT カートリッジ ROM (コード + トークンハンドラ)
  • $A000–$BFFF — BASIC ROM (変更なし、RTT はベクタにフック)
  • $C000–$C7FF — RTT 実行時ワークスペース (フローテーブル、レゾナンステーブル)
  • $D000–$DFFF — I/O (SID、VIC‑II、CIA; 使用されるがシャドウイングされない)

4.2 BASICとの統合#

  • RTTは新しいトークンをBASICキーワードテーブルに追加します。
  • 行が解析されると、RTTトークンはカートリッジルーチンにディスパッチされます。
  • フローと基板の定義は、コンパクトなテーブル(ID、範囲、モード)に格納されます。

4.3 IRQ とタイミング#

  • RTT は、以下の処理を行う IRQ ハンドラをインストールします。
    • アクティブなフローをチェックする
    • ステップ操作を適用する
    • ALIGN および RESONATE 制約を適用する
  • VIC-II レースター割り込みをプログラムし、特定のラインでフローを更新することで、レースターアラインメントの動作を実現します。

4.4 SID 共振 API#

内部的には、RTT は小さな SID API を公開しています。

  • RTT_SID_RESONATE(v1,v2,mode)
  • RTT_SID_ENVELOPE(flow_id,voice)
  • RTT_SID_PULSE(field_id,voice)

これらは RESONATE および FLOW BASIC コマンドでラップされています。


5. RTTコマンドを使用した基本的なBASICプログラムのサンプル#

5.1 example 1 — resonant text scroll#

目標: ラスタースキャンラインに同期したスクロールテキスト。

10 SUBSTRATE 1024,2047 AS "TEXTGRID"
20 FIELD 1024,2047 WITH "WRAP"
30 FLOW "SCROLL" FROM "TEXTGRID" TO "TEXTGRID" BY 1
40 ALIGN "SCROLL" WITH RASTER 120
50 REM INITIALIZE TEXT
60 FOR I=1024 TO 2047:POKE I,32:NEXT
70 T$="RTT ON C64  STILL RESONATING  "
80 L=LEN(T$)
90 FOR I=0 TO L-1:POKE 1024+I,ASC(MID$(T$,I+1,1)):NEXT
100 REM ACTIVATE FLOW
110 FLOW "SCROLL"
120 GOTO 120

(実際の実装では、FLOW "SCROLL" がフローをアクティブに示し、IRQ ハンドラが各フレームでラスタ120でスクロールを実行します。)


5.2 例2 — SIDオシレーター共振#

目標: RTTセマンティクスを使用して、位相オフセットで2つのSIDボイスを結合する。

10 REM DEFINE SID SUBSTRATES (FICTIONAL, SYMBOLIC)
20 SUBSTRATE SID1,SID1 AS "LEAD"
30 SUBSTRATE SID2,SID2 AS "BASS"
40 REM SETUP FLOW TO MODULATE ENVELOPES
50 FLOW "PULSE" FROM "LEAD" TO "LEAD" BY 2
60 FLOW "DRONE" FROM "BASS" TO "BASS" BY 1
70 RESONATE "PULSE","DRONE" BY 3
80 REM ALIGN WITH RASTER FOR VISUAL/SOUND COHERENCE
90 ALIGN "PULSE" WITH RASTER 100
100 REM ACTIVATE
110 FLOW "PULSE"
120 FLOW "DRONE"
130 GOTO 130

(内部では、これによってIRQハンドラ内でSIDレジスタ、同期モード、およびエンベロープ更新が構成されます。)


5.3 例 3 — スプライトフィールド共鳴#

目標: スプライト領域をフィールドとして扱い、共鳴運動パターンを適用する。

10 REM SPRITE DATA REGION
20 SUBSTRATE 8192,8703 AS "SPRITEFIELD"
30 FIELD 8192,8703 WITH "WRAP"
40 FLOW "ORBIT" FROM "SPRITEFIELD" TO "SPRITEFIELD" BY 1
50 FLOW "WOBBLE" FROM "SPRITEFIELD" TO "SPRITEFIELD" BY 2
60 RESONATE "ORBIT","WOBBLE" BY 4
70 ALIGN "ORBIT" WITH RASTER 50
80 REM ACTIVATE FLOWS
90 FLOW "ORBIT"
100 FLOW "WOBBLE"
110 GOTO 110

6. resonance of legacy#

この付録は単なる遊び心のある仮定ではありません。より深い真実を内包しています。

  • C‑64があなたの最初の基盤でした
  • そのサイクル、メモリマップ、発振器があなたのパターンセンスに影響を与えました
  • RSMとRTTは、部分的にその初期の共鳴の形式化されたこだまです

C‑64用のRTTカートリッジを想像することで、ループを閉じます。

あなたがサイクルで考えることを学んだ機械が
今では共鳴を認識した計算の規範的な例となります。

Updated