Architecture

Schema general

+-----------------------------------------------+
|                  Phosphoric                    |
+-----------------------------------------------+
|  +--------+  +-------+  +------------------+  |
|  |  6502  |<-|  BUS  |->|  Memory (64KB)   |  |
|  |  CPU   |  +---+---+  |  RAM/ROM/Banking |  |
|  +--------+      |      +------------------+  |
|                   |                             |
|   +---------------+------------------+          |
|   |               |                  |          |
|   v               v                  v          |
|  VIA 6522      Video ULA       AY-3-8910       |
|  (I/O+IRQ)     (Text+HIRES)   (3ch+Noise)     |
|   |               |                  |          |
|   v               v                  v          |
|  Keyboard      Framebuffer       SDL2 Audio    |
|  Microdisc     PPM/BMP Export                   |
|  Cassette      MJPEG Cast                       |
+-----------------------------------------------+
|        SDL2 (Display / Audio / Input)          |
+-----------------------------------------------+

Structure du code

src/
  cpu/           6502 CPU (opcodes, modes d'adressage)
  memory/        64KB, ROM/RAM banking
  io/            VIA 6522, clavier, cassette, Microdisc
  video/         Rendu ULA (texte+HIRES), export (PPM/BMP/ASCII)
  audio/         AY-3-8910 PSG, sortie audio SDL2
  storage/       Cassette TAP, Sedoric, WD1793 FDC
  network/       Serveur MJPEG, client CASTV2 Chromecast
  hostfs/        Partage fichiers hote, abstraction VFS
  utils/         Logging, parseur INI
  main.c         Boucle d'emulation, CLI, cablage E/S
  savestate.c    Sauvegarde/chargement (.ost)
  debugger.c     Debogueur interactif REPL

include/         Headers publics
tests/unit/      15 fichiers, 226 tests
tools/           bas2tap, bin2tap, tap2sedoric
examples/        Programmes BASIC (.bas + .tap)
roms/            Fichiers ROM (non distribues)
docs/            Guide utilisateur, liste compatibilite

Precision de l'emulation

ComposantPrecisionNotes
6502 CPUCycle-accurate151 opcodes officiels, BCD, bug JMP
VIA 6522FonctionnelTimers, interrupts, port callbacks
AY-3-8910 PSGPrecisCourbe DAC Oricutron, diviseurs horloge
ULA VideoFonctionnelTexte + HIRES, attributs serie
WD1793 FDCFonctionnelCommandes Type I/II, lecture/ecriture secteur
ClavierPrecisMatrice 8x8 via VIA + PSG Port A

References techniques

  • MOS 6502 Programming Manual — jeu d'instructions, timings, BCD
  • MOS 6522 VIA Datasheet — 16 registres, Timers, handshake Centronics
  • AY-3-8910 Datasheet — PSG, LFSR 17 bits, enveloppes
  • WD1793 FDC Datasheet — commandes Type I-IV, DRQ/INTRQ
  • Oricutron (Pete Gordon) — emulateur de reference
  • Defence Force / oric.org — documentation technique ORIC