Tachibana

OricTel — gedetailleerde functies

Minitel 1B-terminal voor de Oric 1 / Atmos · C + 6502-assembly (cc65) · EUPL 1.2-licentie

Deze pagina somt alle functies van OricTel op, met een toelichting bij elk. De GitHub-repository is de gezaghebbende, actuele bron; de gebruikershandleiding en de architectuurdocumentatie behandelen gebruik en interne werking.

Inhoud

1. Videotex-decoder

Het hart van OricTel is een decoder voor het Teletel/Antiope Videotex-protocol (STUM 1B), geïmplementeerd als een volledige toestandsmachine.

Toestandsmachine

Verwerkt ESC, CSI (met parameters), US, SS2, REP (herhaling), SEP, en de protocolmodi PRO1/PRO2/PRO3. Cursorpositionering (US rij/kolom), verplaatsingen, wissen, regelterugloop.

PRO2 / PRO3-modi

Rolmodus, kleine letters, toetsenbordschakelaars, uitgebreid/cursor-toetsenbord. De linker/rechter pijltjes sturen alleen cursorsequenties (ESC[D / ESC[C) als de server de cursormodus (PRO3) heeft ingeschakeld, net als een echte Minitel 1B.

Terminalidentificatie

De ENQ/ENQROM-identificatie is bewust stil: moderne servers (MiniPavi) echoën het antwoord naar het invoerveld in plaats van het te consumeren — hetzelfde gedrag als de referentie-emulator miedit.

2. HIRES-weergave

Resolutie & raster

HIRES 240×200 pixels, oftewel 40 kolommen × 25 rijen (cellen van 6×8 pixels). Video-inversie via bit 7, Oric-seriële attributen per scanline. Een statusbalk beslaat de bovenste regel.

Rendering-engine in assembly

Een 6502-span-engine (~300 cycli per cel). «Dirty»-cel-verversing: elk frame (50 Hz) worden alleen gewijzigde cellen opnieuw gerenderd in de HIRES-framebuffer, wat de CPU-belasting sterk verlaagt. Adaptief budget: het toetsenbord blijft responsief, ook midden in een paginalading. Toetsecho ~1 ms (rendering van één cel), volledige pagina ~0,3 s.

3. Tekensets

G0 / G1 / G2

G0/G1-schakelen via SI/SO; G2-tekens via SS2.

4. Attributen per cel

Volledige attributen

Inktkleur (0-7), achtergrondkleur (0-7), flash, video-inversie, onderstreping / mozaïekscheiding, verberging (concealed), en grootte: normaal, dubbele hoogte, dubbele breedte, dubbele grootte. Een hybride kleurheuristiek benadert de kleuren per cel van de Minitel met de seriële attributen van de Oric: attributen op lege cellen met vooruitkijken (kleur van de volgende tekst), mozaïeken in vaste kleur wanneer het attribuut overeenkomt, luminantie-dithering als terugval.

5. Renderingsmodi (CTRL+D)

De Oric kan niet elke cel afzonderlijk kleuren zoals de Minitel; OricTel biedt drie in-de-loop schakelbare strategieën:

ModusGedrag
AUTO (standaard)Beste compromis, regel voor regel bepaald: attribuutkleuren waar de regel dat toelaat, luminantie-dithering voor dichte meerkleurige zones, witte rendering voor ongeschikte regels.
DITHERINGAlles in dichtheidsrasters: de helderheidshiërarchie van de kleuren blijft behouden als getextureerd «grijswaarden».
RUWAlles wit op zwart: maximale leesbaarheid van vormen, geen kleur.

6. Verbinding

AT-modem (de enige methode)

OricTel stuurt een Hayes-modem aan via de ACIA 6551 op $0380 (PicoWiFiModemUSB, echt of geëmuleerd door Phosphoric --serial modem/picowifi): ATZ (reset) en dan ATDT host:poort (kiezen = TCP-verbinding). De server wordt in het menu gekozen, dus je kunt wisselen zonder de emulator te herstarten.

WiFi-config vanaf de Oric

Op een echte LOCI + PicoWiFiModemUSB-opstelling configureert het menu «WiFi-config» alles vanaf de Oric: scannen (AT$SCAN) naar 2,4 GHz-netwerken binnen bereik, selectie, wachtwoordinvoer (gemaskeerd), dan koppeling (AT$SSID=/AT$PASS=/ATC1) en opslaan in de NVRAM van de Pico (AT&W).

WebSocket-brug

orictel_bridge.py (Python asyncio) geeft TCP (poort 3615) door aan een WebSocket-Minitel-server (ws://3617.fr/ws). Transparant binair relais, één client, statistieken, -v-modus.

7. Minitel-servers

ServerAdresOpmerkingen
PAVI 3617pavi.3617.fr:3617aanbevolen, Teletel-startpagina
MiniPavigo.minipavi.fr:516multiservice-gateway
Anderevrije invoer host:poortoptie 3 van het servermenu

8. Minitel-toetsenbord

OricTel draait op de Oric-1 en Atmos. Functietoetsen gebruiken CTRL+letter (beide machines) of FUNCT+letter (alleen Atmos).

Minitel-functieOric-1 & AtmosAlleen AtmosVerzonden code
VerzendenRETURNSEP $41
TerugCTRL+R of pijl OMHOOGFUNCT+RSEP $42
HerhalenCTRL+EFUNCT+ESEP $43
GidsCTRL+GFUNCT+GSEP $44
AnnulerenCTRL+A of ESCFUNCT+ASEP $45
InhoudCTRL+SFUNCT+SSEP $46
CorrectieDELETESEP $47
VolgendeCTRL+NFUNCT+NSEP $48
Verbinden/EindeCTRL+CFUNCT+CSEP $49
Pijltjes L/Rpijl LINKS/RECHTSESC[D / ESC[C (PRO3-cursormodus)

Lokale sneltoetsen (sturen niets naar de server): CTRL+D wisselt de renderingsmodus, CTRL+L wist het scherm lokaal, CTRL+F reset de seriële verbinding (ACIA).

9. Het scherm & de status

Weergavegebied & verbindingsindicator

Regels 1-24: de Videotex-pagina van de server (40 kolommen). Statusregel (rechtsboven): omgekeerde C = recent data ontvangen (verbonden), F = geen data sinds ~30 s (verbinding waarschijnlijk verbroken). Cursor: een knipperende balk onder de huidige cel wanneer de server hem inschakelt (invoervelden). Een splashscreen bij het opstarten met een AY-3-8912-jingle.

10. Technische specificaties

Serieel (ACIA 6551)

ACIA 6551 op de LOCI-basis ($0380). Registers: data $0380, status/reset $0381, commando $0382, control $0383. Puur pollen van het STATUS-register, geen ACIA-IRQ; registerschrijfacties zijn SEI/PLP-beschermd (de MIA-beperking van de echte LOCI). Een niet-blokkerende software-TX-wachtrij die door de hoofdlus wordt geleegd.

Geheugen

TAP ~23 KB; code+data onder $9800 (cc65-stack op $0800); HIRES-framebuffer $A000-$BF3F. Statusbalk op $BB80+.

Protocol & prestaties

Teletel/Antiope Videotex (STUM 1B). Volledige pagina ~0,3 s, toetsecho ~1 ms. Validiteitsreferentie: de miedit/telenet JS-emulator.

11. Bouwen & uitvoeren

make                # bouwt orictel.tap
make dsk            # Sedoric-diskette orictel.dsk (MFM_DISK, opstartbaar)
make test           # host-tests (Videotex, ACIA/SMC, AT-modem, toetsenbord, brug)
make fuzz           # Videotex-decoder-fuzzing (ASAN/UBSAN)
make coverage       # host gcov-dekking
make run            # draait onder Phosphoric in AT-modemmodus
make run-ws         # draait de WebSocket-brug + de emulator
make run-dsk        # Microdisc-boot van de Sedoric-diskette

Vereisten: cc65 (≥ 2.19), Python 3.8+ met websockets ≥ 12.0 (alleen brug), de Phosphoric-emulator (of een fysieke LOCI/PicoWiFiModemUSB), en de Oric-ROM's (basic11b.rom voor de Atmos, basic10.rom voor de Oric-1).

12. Bekende beperkingen

← Terug naar OricTel · Technische documentatie →