The user is assumed to have a built executable of the emulator on their machine - see also the build document which is a walkthrough of building the emulator from the source code.
Prior to launching the application, the user can define what external peripherals should be connected to the system in peripherals.json. They need to keep in mind though that while there can be multiple instances of the same peripheral connected to the emulator at the same time, they all need to have a unique name.
When the user opens the application for the first time, they may need to move aside all external peripherals that are connected to the emulator as shown blow. On the next start of the application, all windows will be placed to where they were when the application was closed.
The layout of the windows making up the emulator is pre-defined. However, the user can customize it to whatever works the best for them.
File -> Load -> Kernel
There is only one kernel that can be loaded at a time. If another kernel is loaded, the previous one is erased from the RAM.
File -> Reload kernel
When a kernel is reloaded, the whole emulator is automatically reset.
File -> Load -> Processes
The user can also load user processes. However, these processes are not mapped into the RAM in any way. They only serve as a visualization of the program execution. They can be used to set breakpoints but it is up to user, the author of the kernel, to distinguish what address space is currently being used via the address of the page table, which can be viewed in coprocessor CP15.
The user can set any number of breakpoints they want in order to pause the CPU execution on their desired line.
For more examples of how the emulator can be used, please see the full list of examples .