Tachibana

Documentación › LOCI

LOCI — Lovely Oric Computer Interface

Emulación del dispositivo LOCI de Sodiumlightbaby (sodiumlb, 2024): un cartucho RP2040 que se conecta al bus del Oric y ofrece almacenamiento masivo (USB / SD / flash interna), teclado-ratón-gamepads USB HID, módem WiFi (PicoWiFiModemUSB), intercambio de ROM en caliente y menú integrado.

Referencias: loci-hardware · loci-firmware · loci-rom (menú). La emulación está alineada con la fuente del firmware (release de referencia: v0.3.1) y verificada sobre hardware; las divergencias conocidas se listan al final.

Inicio rápido

# LOCI + módem WiFi picowifi (ACIA 6551 en $0380, direccione $0380 NO $03A0)
./oric1-emu -r roms/basic11b.rom --loci --serial picowifi

# Menú LOCI directamente al arrancar
./oric1-emu -r roms/loci/locirom --loci

# Imagen SD FAT16/32 en bruto como almacenamiento
./oric1-emu -r roms/basic11b.rom --loci --loci-sdimg tarjeta.img

Mapa de memoria

VentanaContenido
$0310-$031FWD1793 + control DSK (modo Microdisc del LOCI; $0319 = 'L')
$0315-$0317Protocolo TAP de bajo nivel (PLAY/REC/READ_BIT, trama de 14 bits)
$0380-$0383ACIA 6551 (módem picowifi) — por defecto bajo --loci
$03A0-$03BFMIA: consola UART, registros de API (xstack $03AC, errno $03AD/E, op $03AF), stub $03B0 (spin/BLOCKED), BUSY $03B2 bit 7, trap de botón $03BA-$03BF

API (op $03AF) — 36/36 ops implementadas

Sistema (PIX_XREG, CPU_PHI2→1000 kHz, OEM_CODEPAGE, RNG_LRAND, STDIN_OPT), reloj (CLOCK, CLK_GET/SETTIME, GETRES), archivos (OPEN/CLOSE/READ/WRITE_XSTACK/XRAM/LSEEK/UNLINK/RENAME), directorios (OPENDIR/CLOSEDIR/READDIR/MKDIR/GETCWD), montaje (MOUNT/UMOUNT, TAP SEEK/TELL/READ_HEADER, UNAME), boot/tuning (MIA_BOOT, MAP_TUNE_*, ADJ_SCAN), centinela $FF (exit → spin).

ABI conforme al firmware (verificada contra la fuente)

Almacenamiento

El LOCI real tiene tres niveles; sus equivalentes en Phosphoric:

Hardware realEmulación
Flash interna (LittleFS del RP2040, presembrada con basic11b.rom, basic10.rom, microdis.rom, locirom) flash root: --loci-flash DIR (por defecto: directorio actual). Rutas 0: y desnudas. Las ROM del sistema ausentes del flash root se resuelven como respaldo en la carpeta de la ROM -r (es decir, roms/).
Llave USB (FAT, puerto USB host) --loci-usb DIR (repetible, 4 máx.) o autodetección de los medios montados en /media/$USER y /run/media/$USER al lanzar. Rutas de volumen 1:-4:. Etiqueta + tamaño mostrados en el menú. Sin hot-plug: conectar antes de lanzar.
Tarjeta SD (imagen en bruto) --loci-sdimg PATH (FAT16/32). Cuando está activo, este backend posee todas las ops de archivos (las llaves USB siguen listadas pero no navegables).

La lista de dispositivos (selector del menú) la sirve opendir(""): «0: Internal storage [15MB]», luego una línea por dispositivo USB (la llave MSC, el picowifi «CDC modem mounted»), luego un nombre vacío.

Botón Acción (F8)

Se reproduce el comportamiento del firmware (ext.c):

Timing del bus MIA

La MIA muestrea el bus 6502 por PIO en desfases sub-ciclo ajustados por MAP_TUNE_*. Un tior mal calibrado corrompe la ventana ACIA del picowifi — síntoma de hardware real reproducido: --loci-mia-window LO-HI define el rango fiable (por defecto 0-31 = siempre fiable); fuera de la ventana, $0380 lee $FF e ignora las escrituras.

Divergencias conocidas (fuera de alcance)

Reproducido de docs/loci.md (versión de referencia actualizada en GitHub).

← Documentación · SEDORIC →