lgb.hu :: Enterprise-128 :: JSep - JavaScript Enterprise-128 emulator

JSep is a highly experimental work-in-progress Enterprise-128 emulator written in JavaScript for decent, modern browsers (Internet Explorer is problematic, but see below). It's my attempt to create an Enterprise-128 emulator using only web techologies.

It's a seriously modified and extended version of the great JavaScript ZX Spectrum emulator, JSSpeccy. The core Z80 emulation is the same, but other parts are written by me, and there is some minor code which is seriously modified version from JSSpeccy. Though it's still important to note that the whole idea, the Z80 emulation and possible other fragments is from JSSpeccy. Big thanks to JSSpeccy's author and for the choosen software license! Of course my work is also a GNU/GPL software. Note: where I speak about JSSpeccy. I mean the old JSSpeccy version, not the new (v2) one!

It requires quite modern browser. Really. It won't work with Internet Explorer, maybe you have some hope with IE 10 though, but it surely won't work with earlier versions (IE is very slow to adopt new web techologies - I can't even understand why people want to use IE still ...). I usually test the emulator with Google Chrome (version 29) and Firefox (version 23), and sometimes with Opera too (version 12). As far as I know newer (version 15?) Operas will use about the same rendering engine as Chrome, but I am not sure about the JavaScript engine. Short (and not complete) list of needed browser capabilities: canvas support, canvas putImage interface, ArrayBuffer JavaScript typed arraies, new Date methods, XMLHttpRequest AJAX (it won't work via ActiveX) interface with ArrayBuffer support.

Since it's a highly work-in-progress project, I suggest to try with Chrome as well (lastest version) if you use firefox and vice versa.

TODO list

NEW: Emulator configuration

The emulator supports some kind of "netconfig", which means the URL can hold configuration for the emulator. As JSep is designed a web application can be "launched" via an URL, this is the natural method, and made it easy to be referenced on other pages, etc

Warning: the netconfig interface is experimental! Do not expect to have proper error filtering, so you should not try use options with bad syntax, otherwise you will get javascript error(s) :-)

Example: http://ep.lgb.hu/jsep/demo/?mem=512&disk=no

If an option is not specified, the default value is used which can also mean the usage of files from ep.lgb.hu server. But otherwise, JSep always fetches data from the net, even the EXOS rom image, so it's not a very brilliant idea to try to disable EXOS with no, as machine won't boot without any ROM image ...

If you specify some file name _without_ http:// or such where URL is expected then the image is tried to be downloaded from ep.lgb.hu server, so be carefull with this! By the way, you can examine the binary files here, which are used by the emulator. Without proper URL files are fetched from here (which is also the default case for ROM images etc, if you don't specify other values).

If you have a disk image which can be accessed via HTTP (or https or ftp, though they are not tested at all), you can tell JSep to use it. If you also make some EXDOS.INI to launch a problem, you can have an autoload function, by clicking on a single URL to configure+start JSep, your program will start within the emulator after booting. You can also auto-start a single file program with the help of diskhack=load option.

JSep will guess the geometry of the disk image based on its size. It will warn you if it was not successfull. Note: disk images are always treated as double side disks!

Of course, if you disable EXDOS (exdos=no, or non-existing ROM image is given, etc), not even program fetch (diskhack) will work as it operates with on-the-fly created disk, so EXDOS is needed to access it then!

Though this configuration interface seems to be "rough", using URLs is the natural way to provide linkage capability with other pages, so you can refer the emulator from other page. Of course a frontend can be written which uses nice html FORMs to construct URL for the emulator.

Before you ask: no, it's not possible to provide your disk image / ROM / etc from your computer, since it's a web/javascript emulator it needs data from the web. It's not possible to access your local disk from a web page, it would be dangerous if you think about this, so it's forbidden by design of javascript, for example.


The following URL will cause to configure the emulator to use 128K of RAM, start emulation without pressing the "run" button, fetch program file from ep.lgb.hu, and start to run it automatically within the emulator:


You can try to click on the link as well to try it. Here, the disk option specifies a program file instead of a disk image (because of diskhack option is used as well), the URL for file is "eprimo". As I've written above this causes to fetch data from ep.lgb.hu if it's not a "full" URL. The file in this example (eprimo, visit this link) is a work-in-progress Primo emulator for Enterprise. It's funny to have an Enterprise running within a JavaScript based emulator which runs a Primo emulator inside :)

Nice Enterprise slide show: CLICK HERE.

Some simplier examples (without loading/disk tricks), click on them:

©2013 Gábor Lénárt "LGB"