Tachibana

Documentation › LOCI

LOCI — Lovely Oric Computer Interface

Émulation du périphérique LOCI de Sodiumlightbaby (sodiumlb, 2024) : une cartouche RP2040 qui se branche sur le bus de l'Oric et fournit stockage de masse (USB / SD / flash interne), clavier-souris-manettes USB HID, modem WiFi (PicoWiFiModemUSB), swap de ROM à chaud et menu intégré.

Références : loci-hardware · loci-firmware · loci-rom (menu). L'émulation est alignée sur la source du firmware (release de référence : v0.3.1) et vérifiée sur pièces ; les écarts connus sont listés en fin de document.

Démarrage rapide

# LOCI + modem WiFi picowifi (ACIA 6551 à $0380, adressez $0380 PAS $03A0)
./oric1-emu -r roms/basic11b.rom --loci --serial picowifi

# Menu LOCI directement au boot
./oric1-emu -r roms/loci/locirom --loci

# Image SD FAT16/32 brute comme stockage
./oric1-emu -r roms/basic11b.rom --loci --loci-sdimg carte.img

Cartographie mémoire

FenêtreContenu
$0310-$031FWD1793 + contrôle DSK (mode Microdisc du LOCI ; $0319 = 'L')
$0315-$0317Protocole TAP bas niveau (PLAY/REC/READ_BIT, trame 14 bits)
$0380-$0383ACIA 6551 (modem picowifi) — défaut sous --loci
$03A0-$03BFMIA : console UART, registres API (xstack $03AC, errno $03AD/E, op $03AF), stub $03B0 (spin/BLOCKED), BUSY $03B2 bit 7, trap bouton $03BA-$03BF

API (op $03AF) — 36/36 ops implémentées

Système (PIX_XREG, CPU_PHI2→1000 kHz, OEM_CODEPAGE, RNG_LRAND, STDIN_OPT), horloge (CLOCK, CLK_GET/SETTIME, GETRES), fichiers (OPEN/CLOSE/READ/WRITE_XSTACK/XRAM/LSEEK/UNLINK/RENAME), répertoires (OPENDIR/CLOSEDIR/READDIR/MKDIR/GETCWD), montage (MOUNT/UMOUNT, TAP SEEK/TELL/READ_HEADER, UNAME), boot/tuning (MIA_BOOT, MAP_TUNE_*, ADJ_SCAN), sentinelle $FF (exit → spin).

ABI conforme au firmware (vérifiée sur source)

Stockage

Le vrai LOCI a trois étages ; leurs équivalents dans Phosphoric :

Matériel réelÉmulation
Flash interne (LittleFS du RP2040, pré-semée basic11b.rom, basic10.rom, microdis.rom, locirom) flash root : --loci-flash DIR (défaut : répertoire courant). Chemins 0: et nus. Les ROM système absentes du flash root sont résolues en repli dans le dossier de la ROM -r (donc roms/).
Clé USB (FAT, port USB host) --loci-usb DIR (répétable, 4 max) ou auto-détection des médias montés dans /media/$USER et /run/media/$USER au lancement. Chemins volume 1:-4:. Label + taille affichés dans le menu. Pas de hot-plug : brancher avant de lancer.
Carte SD (image brute) --loci-sdimg PATH (FAT16/32). Quand actif, ce backend possède toutes les ops fichiers (les clés USB restent listées mais non navigables).

La liste des périphériques (sélecteur du menu) est servie par opendir("") : « 0: Internal storage [15MB] », puis une ligne par périphérique USB (la clé MSC, le picowifi « CDC modem mounted »), puis un nom vide.

Bouton Action (F8)

Comportement du firmware (ext.c) reproduit :

Timing du bus MIA

La MIA échantillonne le bus 6502 par PIO à des décalages sous-cycle réglés par MAP_TUNE_*. Un tior mal calé corrompt la fenêtre ACIA du picowifi — symptôme matériel réel reproduit : --loci-mia-window LO-HI définit la plage fiable (défaut 0-31 = toujours fiable) ; hors fenêtre, $0380 lit $FF et ignore les écritures.

Divergences connues (hors périmètre)

Reproduit depuis docs/loci.md (version de référence à jour sur GitHub).

← Documentation · SEDORIC →