Tachibana

ドキュメント › LOCI

LOCI — Lovely Oric Computer Interface

Sodiumlightbaby(sodiumlb、2024)の LOCI デバイスのエミュレーション:Oric のバスに挿す RP2040 カートリッジで、マスストレージ(USB / SD / 内蔵 flash)、USB HID のキーボード・マウス・ゲームパッド、WiFi モデム(PicoWiFiModemUSB)、実行時 ROM 切替、内蔵メニューを提供します。

参照:loci-hardware · loci-firmware · loci-rom(メニュー)。エミュレーションはファームウェアのソース(参照リリース:v0.3.1)に整合し、実機で検証済み。既知の相違は末尾に列挙します。

クイックスタート

# LOCI + picowifi WiFi モデム(ACIA 6551 は $0380、$03A0 ではなく $0380 を指定)
./oric1-emu -r roms/basic11b.rom --loci --serial picowifi

# 起動時に LOCI メニューを直接
./oric1-emu -r roms/loci/locirom --loci

# 生の FAT16/32 SD イメージをストレージとして
./oric1-emu -r roms/basic11b.rom --loci --loci-sdimg card.img

メモリマップ

ウィンドウ内容
$0310-$031FWD1793 + DSK 制御(LOCI の Microdisc モード;$0319 = 'L')
$0315-$0317低レベル TAP プロトコル(PLAY/REC/READ_BIT、14 ビットフレーム)
$0380-$0383ACIA 6551(picowifi モデム)— --loci 下の既定
$03A0-$03BFMIA:UART コンソール、API レジスタ(xstack $03AC、errno $03AD/E、op $03AF)、スタブ $03B0(spin/BLOCKED)、BUSY $03B2 ビット 7、ボタントラップ $03BA-$03BF

API(op $03AF)— 36/36 の操作を実装

システム(PIX_XREGCPU_PHI2→1000 kHz、OEM_CODEPAGERNG_LRANDSTDIN_OPT)、クロック(CLOCKCLK_GET/SETTIMEGETRES)、ファイル(OPEN/CLOSE/READ/WRITE_XSTACK/XRAM/LSEEK/UNLINK/RENAME)、ディレクトリ(OPENDIR/CLOSEDIR/READDIR/MKDIR/GETCWD)、マウント(MOUNT/UMOUNT、TAP SEEK/TELL/READ_HEADERUNAME)、boot/tuning(MIA_BOOTMAP_TUNE_*ADJ_SCAN)、番兵 $FF(exit → spin)。

ファームウェア準拠の ABI(ソースに対して検証)

ストレージ

実機の LOCI は 3 層あります。Phosphoric での対応:

実ハードウェアエミュレーション
内蔵 flash(RP2040 の LittleFS、basic11b.rombasic10.rommicrodis.romlocirom を事前配置) flash root--loci-flash DIR(既定:カレントディレクトリ)。0: および裸のパス。flash root にないシステム ROM は、-r ROM のフォルダ(すなわち roms/)でフォールバック解決。
USB キー(FAT、ホスト USB ポート) --loci-usb DIR(繰り返し可、最大 4)または起動時に /media/$USER/run/media/$USER にマウントされたメディアの自動検出。ボリュームパス 1:-4:。メニューにラベル + サイズ。ホットプラグなし:起動前に接続。
SD カード(生イメージ) --loci-sdimg PATH(FAT16/32)。有効時はこのバックエンドが全ファイル操作を持ちます(USB キーは一覧されるが閲覧不可)。

デバイス一覧(メニューのセレクタ)は opendir("") が提供:「0: Internal storage [15MB]」、続いて USB デバイスごとに 1 行(MSC キー、picowifi「CDC modem mounted」)、そして空の名前。

アクションボタン(F8)

ファームウェアの挙動(ext.c)を再現:

MIA バスのタイミング

MIA は MAP_TUNE_* で設定されるサブサイクルのオフセットで、PIO により 6502 バスをサンプリングします。tior の調整不良は picowifi の ACIA ウィンドウを破壊します — 実機の症状を再現:--loci-mia-window LO-HI は信頼できる範囲を定義(既定 0-31 = 常に信頼可);ウィンドウ外では $0380$FF を読み、書き込みを無視します。

既知の相違(対象外)

docs/loci.md から再掲(正となる最新版は GitHub)。

← ドキュメント · SEDORIC →