Ground-up rewrite of the Javascript Spectrum emulator
CoffeeScript JavaScript Other
Pull request Compare This branch is 4 commits ahead, 141 commits behind gasman:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
roms
.gitignore
COPYING
Gemfile
Gemfile.lock
Makefile
README
bin2js.pl
config.ru
display.js
index.html
io_bus.js
jsspeccy.js
keyboard.js
memory.js
roms.js
sna_loader.js
spectrum.js
ui.js
z80.coffee
z80.js

README

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.)
* Proper scanline-based display generation. It isn't fully accurate (memory
  contention isn't emulated yet) but things like border stripes display
  correctly.
* 128K support!

[0] https://developer.mozilla.org/en/javascript_typed_arrays

Building
--------
perl and CoffeeScript[1] are required. To build:

    make

[1] http://jashkenas.github.com/coffee-script/

Browser support
---------------
Tested successfully on Chrome 12 and Firefox 5. Support for typed arrays and
the PixelData API are absolutely required, and it'll almost certainly stay that
way.

Matt Westcott
<matt@west.co.tt> - http://matt.west.co.tt/ - @westdotcodottt