MCPcopy Index your code
hub / github.com/emustudio/emuStudio

github.com/emustudio/emuStudio @RELEASE-0.41

Chat with this repo
repository ↗ · DeepWiki ↗ · release RELEASE-0.41 ↗ · + Follow
6,188 symbols 19,170 edges 698 files 208 documented · 3% updated 6d agoRELEASE-0.41 · 2023-03-25★ 5238 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

emuStudio logo Welcome to emuStudio

emuStudio Build License: GPL v3

emuStudio is a desktop application used for computer emulation and writing programs for emulated computers. It extensible; it encourages developers to write their own computer emulators.

The main goal of emuStudio is to support the "compile-load-emulate" workflow, aiming at students or anyone to help to learn about older but important computers or even abstract machines.

emuStudio is very appropriate for use at schools, e.g. when students are doing first steps in assembler, or when they are taught about computer history. For example, emuStudio is used at the Technical University of Košice since 2007.

Available emulators

BIG THANKS

emuStudio was written based on existing emulators, sites and existing documentation of real hardware. For example:

Projects: - simh project, which was the main inspiration for Altair8800 computer - MAME project, which helped with resolving a lot of bugs in a correct implementation of some 8080 and Z80 CPU instructions - RedCode Z80 project, for helping with correctly implementing some Z80 instructions - superzazu's Z80, includes test ROMs

Sites: - David Sharp's SSEM site, main inspiration for SSEM implementation - Esolang's BrainFuck site, main inspiration for Brainfuck implementation - DeRamp Altair, more inspiration for Altair8800 - Altair Clone, more inspiration for Altair8800 - Study of techniques for emulation programming, emulation techniques classic - 8080 instruction table - CLR home Z80 instructions table - Z80 Undocumented documented, undocumented behavior of Z80 CPU - Z80 undocumented, another undocumented behavior of Z80 CPU

Discord: - Discord Emulation Development

Getting started

At first, either compile or download emuStudio. The prerequisite is to have installed Java, at least version 11 (download here).

Then, unzip the tar/zip file (emuStudio-xxx.zip) and run it using command:

  • On Linux / Mac
> ./emuStudio
  • On Windows:
> emuStudio.bat

NOTE: Currently supported are Linux and Windows. Mac is NOT supported, but it might work to some extent.

For more information, please read user documentation.

Contributing

Anyone can contribute. Before start, please read developer documentation, which includes information like:

  • Which tools to use and how to set up the environment
  • How to compile emuStudio and prepare local releases
  • Which git branch to use
  • Code architecture, naming conventions, best practices

Related projects

There exist some additional projects, which are used by emuStudio, useful for contributors:

Extension points exported contracts — how you extend this code

RamLabel (Interface)
A Label is a named pointer to an address in memory. [8 implementers]
plugins/memory/ram-mem/src/main/java/net/emustudio/plugins/memory/ram/api/RamLabel.java
PluginConnections (Interface)
Abstraction over a "connection" of computer components - i.e. plugins. A connection can be one-directional or bi-dir [5 …
application/src/main/java/net/emustudio/application/virtualcomputer/PluginConnections.java
Command (Interface)
(no doc) [35 implementers]
plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/Command.java
Context8080 (Interface)
Extended CPU context for 8080 processor. [3 implementers]
plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/Context8080.java
RaspLabel (Interface)
A Label is a named pointer to an address in memory. [8 implementers]
plugins/memory/rasp-mem/src/main/java/net/emustudio/plugins/memory/rasp/api/RaspLabel.java
RunnableWhichCanThrow (Interface)
(no doc) [12 implementers]
application/src/main/java/net/emustudio/application/internal/Unchecked.java
IOProvider (Interface)
(no doc) [55 implementers]
plugins/device/zxspectrum-display/src/main/java/net/emustudio/plugins/device/zxspectrum/display/io/IOProvider.java
CpuEngine (Interface)
(no doc) [4 implementers]
plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/api/CpuEngine.java

Core symbols most depended-on inside this repo

addChild
called by 907
plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/Node.java
run
called by 726
application/src/main/java/net/emustudio/application/internal/Unchecked.java
addChild
called by 655
plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/Node.java
put
called by 424
plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/NameSpace.java
get
called by 391
plugins/compiler/as-8080/src/main/java/net/emustudio/plugins/compiler/as8080/ast/NameSpace.java
get
called by 284
plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/ast/NameSpace.java
read
called by 248
plugins/device/simh-pseudo/src/main/java/net/emustudio/plugins/device/simh/commands/Command.java
of
called by 200
plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/Pair.java

Shape

Method 5,422
Class 696
Interface 58
Enum 12

Languages

Java100%

Modules by API surface

plugins/cpu/z80-cpu/src/main/java/net/emustudio/plugins/cpu/zilogZ80/EmulatorEngine.java557 symbols
plugins/cpu/8080-cpu/src/main/java/net/emustudio/plugins/cpu/intel8080/EmulatorEngine.java78 symbols
plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/LogicTest.java66 symbols
application/src/test/java/net/emustudio/application/virtualcomputer/ContextPoolImplTest.java64 symbols
plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/TransferTest.java56 symbols
plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/ArithmeticTest.java52 symbols
plugins/compiler/as-z80/src/main/java/net/emustudio/plugins/compiler/asZ80/visitors/CreateInstrVisitor.java47 symbols
application/src/test/java/net/emustudio/application/emulation/EmulationControllerTest.java42 symbols
plugins/device/abstract-tape/src/main/java/net/emustudio/plugins/device/abstracttape/AbstractTapeContextImpl.java41 symbols
application/src/main/java/net/emustudio/application/gui/schema/Schema.java41 symbols
plugins/cpu/z80-cpu/src/test/java/net/emustudio/plugins/cpu/zilogZ80/suite/IntegerTestBuilder.java34 symbols
plugins/device/88-sio/src/main/java/net/emustudio/plugins/device/mits88sio/SioUnitSettings.java30 symbols

For agents

$ claude mcp add emuStudio \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page