Skip to content
Ground-up rewrite of the Javascript Spectrum emulator
JavaScript CoffeeScript Other
Latest commit 0c6041c Jan 16, 2014 @gasman Version bump
Failed to load latest commit information.
autoloaders auto-loading of tapes Jul 13, 2012
core Version bump Jan 16, 2014
roms 128 support! Plus the opcodes necessary to get the menu up: LDI; OUT … Jul 2, 2011
test fix path to z80.js in test/test.html Jul 12, 2012
ui Version bump Jan 16, 2014
.gitignore update .gitignore Jul 12, 2012
COPYING add GPLv3 and readme Jul 2, 2011
Embedding.txt Add control for enabling/disabling sound Jun 2, 2013
Makefile Remove compilation setting for whitespace in make file May 28, 2013
README Version bump Jan 16, 2014 put all modules in the JSSpeccy namespace Jul 5, 2011


JSSpeccy: A ZX Spectrum emulator in pure JavaScript

Foreword to version 2.x
When I started this project in 2009, writing an emulator in JavaScript was a
silly idea. Now, thanks to advances in JavaScript engines, and new APIs
emerging from HTML5 and WebGL, it has become a significantly less silly idea,
which means that the time is right for a more serious attempt at the job.

What's new?
Everything, basically... it's a ground-up rewrite. In particular:

* Z80 core uses typed arrays[0] where appropriate, for a healthy performance
  boost (and significantly less faffing around with '& 0xff' everywhere to get
  around the lack of strong typing in JavaScript)
* More JavaScript-ish architecture - the Z80 instruction set is built up
  through copious use of closures, rather than borrowing Fuse's Perl generator
  script wholesale. (It's still heavily based on Fuse's Z80 core though.)
* 128K support!
* 99% accurate display emulation, for multicolour effects and the like
* TZX file support (only via tape traps; custom loaders won't work)
* Integration with the World Of Spectrum API, for instant loading of thousands
  of software titles


Perl, CoffeeScript[1] and Closure Compiler[2] are required. To build:


This will place all web-distributable files into the 'dist' folder.


Browser support
Tested successfully on Chrome 32, Firefox 26 and Safari 7.0.1. Support for typed arrays and
the PixelData API are absolutely required, and it'll almost certainly stay that

Matt Westcott
<> - - @gasmanic
Something went wrong with that request. Please try again.