Qaop applet

Qaop is a ZX Spectrum emulator which can be embedded on a page as Java applet, but can also be run as a simple application.

Qaop applet running Starquake.

See also Qaop/JS, a JavaScript port.


Binary: qaop.jar (45k)
Source: qaop-1.4.tar.gz ()

Qaop/Java is released under the GNU GPL licence. If you modify it, don't forget to put the source on the web. It would be also nice if you link back to this page.


Shift,[Caps Shift Caps Shift
Ctrl,Alt,]Symbol Shift Symbol Shift
TabCaps ShiftSymbol Shift Extended Mode
EscCaps Shift1 Edit
PgUp,PgDnAdjust volume

HTML example:

<applet name=qaop archive=qaop.jar code=Qaop width=320 height=256>
<param name=load value=demo.tap>
<param name=ay value=1>

(Don't forget to upload qaop.jar on the server)


The emulator is customizable by following parameters to the applet tag:

loadSnapshot (Z80, SNA) or cartridge (ROM) to run, tape (TAP) to autoload.
tapeTape image (TAP).
romAlternative ROM image.
if1romInterface 1 ROM image. Device itself is not emulated.
focusGrab focus on start (default 1).
ayEnable AY (default 0).
mutedNo sound on start (default 0).
volumeVolume level (0..100, default 40).
maskOverlay image.
arrowsRedefine arrow keys.

You may specify file within ZIP using fragment identifier (eg. Otherwise first suitable file will be selected.

The arrows parameter consists of up to four chars representing keys (in LRUD order). Use lowercase letters for alpha keys, C [Caps Shift], S [Symbol Shift], _ [Space], E [Enter].


Applet element is extended with following methods accessible from JavaScript:

reset()Reset Spectrum.
pause(y)Pause (true or false).
load(file)Load snapshot or tape.
tape(file)Insert tape (null to remove).
save()Return data URL to current state (Z80 snapshot).
mute(y)Silence (true or false).
Get/set volume level (0..100).
state()Emulator state
bit 0:paused, 1:loading, 2:muted.
mask(file)Change overlay (pass null to clear).

Mime types

Qaop recognizes following MIME types:

application/zipZIP archive
application/x.zx.romROM image
application/x.zx.tapTAP file
application/x.zx.snaSNA snapshot
application/x.zx.z80Z80 snapshot

(append .gz for gzipped variants; Content-Encoding is also recognized)

As a fallback, type recognition based on filename extension is used.

See also