Honestly, the major problem with my Javascript based EP128 emulator (JSep) that it is (or "was") a "learning material" for me to learn Javascript better than the basic skills only for homepage decoration purposes
So the code is really ugly, and I don't have the mood to really modify now because of this issue. I really have to to rewrite it now, in a more sane way, from the view point of programming
Modern Javascript standards allows funny things on a mobile device, like sensing the movement of the device and acceleration, thus it's even possible to map these events as joystick events for the emulated EP128. I don't know if it's useful at all, but it sounds fun in my opinion
Generally it's surprising how fast javascript is, especially compared to the old times. Also mobile devices are fast enough now, on my first smart phone it ran JSep with about 1FPS only
And still browser's javascript engines are getting faster and faster, also the hardware, so maybe soon there is not even need for native applications to gain a usable speed even on "said-to-be-limited" devices like a smart phone is (or "was").
I had the plan to port my native-C emulator (Xep128) to Android, as SDL (what Xep128 uses) is available for Android too. But now I am thinking if it's really needed, with today's hardware and browser JS engine speeds ... It took enough time for me, to try to write Xep128 for two different platforms already (Windows and Linux), though SDL is almost completely free of platform specific problems, there are other areas which can be problematic, especially the upcoming EPNET emulation for networking.
The "loading time" issue is not too much about loading the base HTML and various JS files. Ok, those are too, but I guess, the major download size is about the ROM package and the disk image (if any) for example. If the latter is the issue, it can be solved ie with using webstorage feature of modern browsers, though I should write the support for it. Then, it's possible to use the locally stored version of data files instead of downloading them all the time when you want to use JSep.
If you try to use JSep as "offline" the best way currently to check the html file out at:
http://ep.lgb.hu/jsep/demo.new/and also downloading all js files the html refers to (btw, there is a /demo/ and /demo.new/ version, you should use the second, it should be faster, and have some extra fixes etc ... I really should replace the /demo/ with the new version just there were some issues if I remember correctly, that I didn't want to make it as the default one).
Yes, keyboard definition is fixed in keyboard.js, but of course feel free to modify. Of course it's not the best and user-friendly way for configuring the emulator, I know
My basic idea with keyboard layout to use "positional" mapping as much as possible, ie try to lay keys out in a "shape" it would be on a real EP (so no "symbolic" mapping which does this in a way to use the native meaning of keys on the OS which runs the emulator - also symbolic mapping has some interesting challenges, like if you have shifted key on your device for a key event which is not shifted on an EP128, or vice versa). For positional mapping I use the layout of the US keyboard. These two things putting once means, that the key would be right to key 'L' is the ';' and the next key is ':'. I mean, _if_ the keyboard use the US layout.
Of course any suggestion and feedback is warmly welcome about JSep, the real issue here that I don't know when I have time/mood
to continue its development, especially because - as I've written above - I should rewrite the whole stuff first ...
And a major problem: the sound, which should be done. There is _some_ limited sound (digi and basic Dave channels though without modulation, filter, distortion and other tricks, also there is no noise), but it must be "asked" in the URL, also it's not synchronised at all, causing clicks, repeats and other sound anomalies. It also makes the emulation to somewhat slower. I really need to learn more about webaudio, it was just a "quick" attempt to do something, but it's completely unusable at the moment. But for a test (it's really awful, I warn everybody ...):
http://ep.lgb.hu/jsep/demo.new/?sound=yesAnother interesting problem with audio, that it seems some browsers and/or OSes (like iOS) does not even allow a javascript produces sound without an "interaction" to prevent users have something audible on a webpage. In this case maybe audio can be initiated from an event handler, like first keypress etc, then browser treat audio request as based on user interaction and not "automatically". So there are interesting problems sometimes