Skip to content

upthere-it/elea9003-emulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ–₯️ ELEA 9003 Web Emulator

Un emulatore web accurato dell'Olivetti ELEA 9003, il primo computer transistorizzato italiano (1959).

🎯 Caratteristiche

  • Emulazione accurata: CPU, memoria character-addressable, I/O virtuale
  • Assembler integrato: Scrivi programmi in linguaggio assembly ELEA-like
  • UI retro-console: Interfaccia ispirata ai terminali degli anni '60
  • Hardware Panel: Pannello hardware vintage con luci, nixie tubes e interruttori
  • Sound Effects: Suoni autentici anni '60 (relay, teleprinter, motori)
  • πŸ“š Help Integrato: Riferimento completo alle istruzioni assembly con ricerca
  • πŸŽ“ Tutorial Interattivo: 6 lezioni progressive per imparare la programmazione ELEA
  • πŸ“– Documentazione: Changelog, manuali storici Olivetti, guide architetturali
  • Time Travel: Sistema di snapshot per debug step-by-step
  • Temi Multipli: 4 modalitΓ  colore (originale arancione, ambra, verde, bianco)
  • Screenshot & Share: Cattura lo stato della macchina e condividilo
  • Test automatici: Suite completa di test per verificare l'accuratezza
  • 100% browser: Nessun backend, tutto offline

πŸš€ Quick Start

# Installa dipendenze
npm install

# Avvia dev server
npm run dev

# Build per produzione
npm run build

# Esegui test
npm test

πŸ“– Come Usare

1. Scrivere un Programma

; Hello World per ELEA 9003
        ORG 0           ; Indirizzo iniziale

START:  PRINT MSG 11    ; Stampa messaggio
        HALT            ; Ferma esecuzione

MSG:    DC "HELLO WORLD"

2. UI Features

  • Console Tab: Output del teleprinter
  • Memory Tab: Visualizza/ispeziona memoria
  • Assembler Tab: Editor + assembler + caricamento
  • Modern UI / Hardware Panel: Toggle tra interfaccia moderna e pannello hardware vintage

Controlli:

  • ▢️ Run: Esecuzione continua
  • ⏯️ Step: Esegui singola istruzione
  • ⏸️ Pause: Metti in pausa
  • πŸ”„ Reset: Resetta macchina
  • πŸ’Ύ Export/Import: Salva/carica stato
  • πŸ”Š Sound: Abilita/disabilita effetti sonori

3. Hardware Panel

Attiva il pannello hardware per un'esperienza vintage autentica:

  • Indicatori LED per stato macchina
  • Display Nixie tubes per registri
  • Interruttori fisici (virtuali)
  • Misuratori analogici per CPU e memoria
  • Estetica industriale anni '60

πŸ—οΈ Architettura

Memoria

  • Indirizzabile a carattere (non a word)
  • Carattere = 6-bit + parity + word mark
  • Dimensione default: 20,000 caratteri

CPU

  • Registri: PC (Program Counter), ACC (Accumulatore)
  • Flags: EQ, GT, LT, OV
  • Istruzioni: 8 caratteri (formato: OP|ADDR|LEN)

I/O

  • Teleprinter: Output virtuale tipo console
  • Tape Reader: Input simulato

🎡 Sound Effects

Suoni autentici generati via Web Audio API:

  • Relay Click: Operazioni CPU
  • Teleprinter: Stampa caratteri
  • Motor Hum: Ronzio di fondo
  • Startup/Halt: Power on/off
  • Error Beep: Segnalazione errori

πŸ“š Documentazione Integrata

Help Panel

Sistema di help contestuale con:

  • Riferimento completo a tutte le istruzioni assembly
  • Ricerca per nome o descrizione
  • Filtro per categoria (Trasferimento Dati, Aritmetica, Salti, I/O, Controllo)
  • Esempi di codice per ogni istruzione
  • Descrizione dei flag modificati

Tutorial Interattivo

Tutorial passo-passo che copre:

  1. Concetti Base: Introduzione all'ELEA 9003
  2. Movimento Dati: LOAD, STORE, CLEAR
  3. Operazioni Aritmetiche: ADD, SUB, gestione overflow
  4. Salti e Confronti: COMP, BRANCH, salti condizionati
  5. Input/Output: PRINT, comunicazione con teleprinter
  6. Programmi Avanzati: Moltiplicazione, ricerca massimo, subroutine

Ogni lezione include:

  • Spiegazioni dettagliate
  • Codice di esempio
  • Pulsante "Carica nell'editor" per provare subito
  • Suggerimenti e best practice

Documentazione Storica

  • Changelog: Cronologia versioni e modifiche
  • Manuali Originali: Link a risorse storiche e archivi Olivetti
  • Architettura: Documentazione tecnica completa
  • Set di Istruzioni: Riferimento dettagliato

πŸ§ͺ Testing

# Tutti i test
npm test

# Test con UI
npm run test:ui

# Coverage
npm run test:coverage

πŸ“š Istruzioni Supportate

Data Transfer

  • LOAD addr len - Carica da memoria
  • STORE addr len - Salva in memoria
  • MOVE addr len - Copia memoria
  • CLEAR addr len - Azzera campo

Arithmetic

  • ADD addr len - Addizione
  • SUB addr len - Sottrazione

Control Flow

  • COMP addr len - Confronta
  • BRANCH addr - Salto incondizionato
  • BEQ/BNE/BGT/BLT addr - Salti condizionali
  • HALT - Ferma CPU

I/O

  • PRINT addr len - Stampa su teleprinter

Vedi docs/INSTRUCTION_SET.md per dettagli completi.

πŸ“‹ Roadmap

Completato βœ…

  • Core emulator (CPU, Memory, I/O)
  • Assembler completo
  • UI moderna e hardware panel
  • Sound effects autentici
  • Test suite
  • Documentazione
  • Bug Fix (2025-12-21):
    • βœ… ACC Hardware Panel display ora mostra valori corretti
    • βœ… ASCII View funzionante nel Memory tab
    • βœ… PRINT numerico visualizza correttamente in modalitΓ  Run
    • βœ… Tooltip esplicativo per Parity Errors
    • βœ… Editor Assembler sincronizzazione migliorata

Prossimi Sviluppi

  • Multiply/Divide completi
  • I/O da nastro
  • Breakpoint condizionali
  • Tutorial interattivo
  • Libreria programmi storici

🀝 Contributing

Contributi benvenuti! Aree di interesse:

  • Accuratezza storica (set istruzioni, timing)
  • Nuovi programmi demo
  • Miglioramenti UI/UX
  • Documentazione

πŸ“„ License

MIT

πŸ‘ Credits

Progetto realizzato come omaggio all'ingegneria italiana e all'ereditΓ  di Adriano Olivetti.

"Il computer non Γ¨ una macchina intelligente che aiuta le persone stupide, anzi Γ¨ una macchina stupida che funziona solo nelle mani delle persone intelligenti." - Umberto Eco

πŸŽ“ Riferimenti Storici


Made with ❀️ for preserving Italian computing history

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published