jsbeeb - a Javascript emulator

want to talk about MESS/model b/beebem/b-em/electrem/elkulator? do it here!
User avatar
Matt Godbolt
Posts: 163
Joined: Mon Jul 31, 2006 10:02 am
Location: Chicago
Contact:

jsbeeb - a Javascript emulator

Postby Matt Godbolt » Thu Mar 06, 2014 3:09 pm

Hi all,

I'd like to announce my Javascript BBC Micro emulator, jsbeeb, which is available to play in your browser at: http://bbc.godbolt.org/

It needs a decent computer and either Google Chrome or Firefox to work. Also the key mappings are tricky: if you're on a Mac it currently doesn't let you press break or F0 (mapped to F12 and F10 on a PC respectively).

I'm actively working on it - if you're into that kind of thing the code's on github at http://github.com/mattgodbolt/jsbeeb

It currently runs Elite and Exile (which is the main reason I wrote it :)). Rich T-W graciously sent me a pre-release of Blurp and that runs too.

Sadly Frogman doesn't work, so I've yet to be able to play the game Rich and I wrote as teenagers together :)

Let me know what you think!

User avatar
danielj
Posts: 5346
Joined: Thu Oct 02, 2008 4:51 pm
Location: Manchester

Re: jsbeeb - a Javascript emulator

Postby danielj » Thu Mar 06, 2014 3:24 pm

=D> That's a fab piece of work :)

d.

ptheta
Posts: 89
Joined: Mon Jul 08, 2013 8:16 pm

Re: jsbeeb - a Javascript emulator

Postby ptheta » Thu Mar 06, 2014 3:53 pm

That is indeed very nifty. I just tried it on Linux and couldn't get a * character although break did work for me.

I was assuming either Shift-8 or more likely Shift-# would do it but no joy. Is it not working for this configuration or am I doing it wrong?

Thanks,
Paul.

User avatar
danielj
Posts: 5346
Joined: Thu Oct 02, 2008 4:51 pm
Location: Manchester

Re: jsbeeb - a Javascript emulator

Postby danielj » Thu Mar 06, 2014 4:20 pm

No, it's shift-" on a mac (same physical position as on a beeb), so I assume it's shift-@ on a pc?

d.

ptheta
Posts: 89
Joined: Mon Jul 08, 2013 8:16 pm

Re: jsbeeb - a Javascript emulator

Postby ptheta » Thu Mar 06, 2014 4:23 pm

That gives me a double quote so I tried shift-2. That did it.

Does that mean it thinks I'm an American?

User avatar
danielj
Posts: 5346
Joined: Thu Oct 02, 2008 4:51 pm
Location: Manchester

Re: jsbeeb - a Javascript emulator

Postby danielj » Thu Mar 06, 2014 4:31 pm

Must do :D

User avatar
Matt Godbolt
Posts: 163
Joined: Mon Jul 31, 2006 10:02 am
Location: Chicago
Contact:

Re: jsbeeb - a Javascript emulator

Postby Matt Godbolt » Thu Mar 06, 2014 5:46 pm

I'm developing on my US laptop (I live across the pond now), so the key codes are likely to be a bit mangled :)

Good spot; I'll put in support for at least a UK layout too -- and the intention was to be the key physically nearest the Beeb's * key to let the muscle memory do their things!

User avatar
billcarr2005
Posts: 1102
Joined: Fri Sep 09, 2005 3:01 pm
Location: UK
Contact:

Re: jsbeeb - a Javascript emulator

Postby billcarr2005 » Sat Mar 08, 2014 9:01 am

Looking good! :)

User avatar
Matt Godbolt
Posts: 163
Joined: Mon Jul 31, 2006 10:02 am
Location: Chicago
Contact:

Re: jsbeeb - a Javascript emulator

Postby Matt Godbolt » Sat Mar 22, 2014 10:36 pm

An update: you can now load ZIP files directly into the emulator from the STH archives. Very exciting as this means games can be played directly without messing about downloading and unzipping and whatnot!

Also I've made the URLs shortcuttable - and although there's no button to do it yet, if you add "&autoboot" to the end of the URL it will automatically boot the game.

So for example you can now link to a bootable version of Repton: http://bbc.godbolt.org/?disc=%7CSuperio ... p&autoboot

or Exile: http://bbc.godbolt.org/?disc=%7CSuperio ... p&autoboot

I'm starting to notice more and more incompatibilities so will be working on some of the undocumented instructions. I'm also glad to say Rich T-W is helping me with the more subtle timing issues - we hope that by the end of our efforts we'll have the most accurate emulator yet!

(It's still a bug that UK keyboards don't work all that well -- I'm sorry and hope to work on that soon once I dig out my UK laptop and get things working fast enough on it to do some testing!)

Have fun!

User avatar
davidb
Posts: 1901
Joined: Sun Nov 11, 2007 10:11 pm
Contact:

Re: jsbeeb - a Javascript emulator

Postby davidb » Sat Mar 22, 2014 11:50 pm

It's looking even better now that Jungle Journey runs. Nice work! :D

User avatar
billcarr2005
Posts: 1102
Joined: Fri Sep 09, 2005 3:01 pm
Location: UK
Contact:

Re: jsbeeb - a Javascript emulator

Postby billcarr2005 » Sun Mar 23, 2014 3:15 pm

If you have lots of time, you could always add FSD (Flexible Sector Dump) disk image support? :wink:

User avatar
Matt Godbolt
Posts: 163
Joined: Mon Jul 31, 2006 10:02 am
Location: Chicago
Contact:

Re: jsbeeb - a Javascript emulator

Postby Matt Godbolt » Sun Mar 23, 2014 8:02 pm

Hahah despite the evidence to the contrary time is at a bit of a premium :) Great idea though!

Source is on github...patches are welcome too :-)

I'll try and have a look at that though, only single-sided single-density disks are supported so that does rather limit the collection.

Also I don't support ZIPs with multiple images (e.g. Ingrid adventure game, forget the name but it had two disks and you were supposed to have both in at once to play).

User avatar
Rich Talbot-Watkins
Posts: 1117
Joined: Thu Jan 13, 2005 5:20 pm
Location: Palma, Mallorca

Re: jsbeeb - a Javascript emulator

Postby Rich Talbot-Watkins » Sun Mar 23, 2014 9:58 pm

I would actually love to add fsd support, and get a good archive of fsd images together in one place, so as to create a "purist's" archive of disc images in their original form, protection and all. The protection was sometimes more entertaining than the game in any case ;) How many images in fsd format do you have these days, billcarr2005?

I also have it in mind to get the tape system in place, but I need to cast my eyes over getting the timings spot on before then :?

That said, it's already looking pretty good, and runs my Bone Muncher demo without problems (though of course that's mostly due to the sterling work already done by Tom Walker on B-Em).

User avatar
billcarr2005
Posts: 1102
Joined: Fri Sep 09, 2005 3:01 pm
Location: UK
Contact:

Re: jsbeeb - a Javascript emulator

Postby billcarr2005 » Sun Mar 23, 2014 11:07 pm

Rich Talbot-Watkins wrote:How many images in fsd format do you have these days, billcarr2005?


I've got around 380 titles imaged. The majority of those have something which makes them impossible to duplicate on SSD, unformatted tracks, mismatched physical / logical track IDs, incorrect size reported in the sector headers, etc.
I'd be happy to send them your way, so you've got them if you should need them :)

The format is straightforward, and i managed to cobble together support in BeebEM. I'll have to see how simple Javascript looks after working blind with C++

Rich Talbot-Watkins wrote: The protection was sometimes more entertaining than the game in any case ;)

Indeed! 8)

User avatar
ComanderJameson
Posts: 17
Joined: Wed Sep 25, 2013 9:27 am

Re: jsbeeb - a Javascript emulator

Postby ComanderJameson » Thu Apr 10, 2014 8:50 am

Very nice work indeed!

Interestingly, I can't get Frogman to work in my emulator either. But it baulks earlier than JSBeeb. Does it use undocumented op-codes? I'll see if I can get it to work, I like a challenge!
Mostly Harmless

User avatar
Rich Talbot-Watkins
Posts: 1117
Joined: Thu Jan 13, 2005 5:20 pm
Location: Palma, Mallorca

Re: jsbeeb - a Javascript emulator

Postby Rich Talbot-Watkins » Thu Apr 10, 2014 12:54 pm

Hi there! Which emulator is that?

No, Frogman doesn't use any undocumented opcodes, although it does have a ton of decryption loops at the beginning using the VIA timers. You'll also have to ensure that your CRTC cursor registers are readable.

It seems to have problems running on a BBC B, so if you get as far as the title screen and then it self-reboots, you're probably on the right track. I still have no idea why that happens by the way...

User avatar
ComanderJameson
Posts: 17
Joined: Wed Sep 25, 2013 9:27 am

Re: jsbeeb - a Javascript emulator

Postby ComanderJameson » Thu Apr 10, 2014 3:16 pm

See my earlier post: New Beeb Emulator.

Mine crashes out to Basic after selecting the number of players.

I tally up clock cycles per machine instruction, so VIAs, IRQs etc only get updated after each instruction has finished executing. I've tried every game under the sun, so the technique seems sound. However, in very specific instances the behaviour is different from a real Beeb. Dunno, could be the cause.

I'll check out my cursor registers!

I'm like a dog with a a bone, I'll see what I can find.

UPDATE

I see that the code uses the User Via T1 Low Order Counter to decrypt itself. That's where my problem lies. It seems to get so far, then gets garbled and crashes out. I suspect the counter is one or two ticks out when being read because of the reason stated above. I'll have to look at a real Beeb and work it out...
Mostly Harmless

User avatar
Matt Godbolt
Posts: 163
Joined: Mon Jul 31, 2006 10:02 am
Location: Chicago
Contact:

Re: jsbeeb - a Javascript emulator

Postby Matt Godbolt » Thu Apr 10, 2014 5:02 pm

If you only tally up at the end of the instruction, then you'll come acropper with Frogman, not to mention all the Kevin Edwards protection systems (Alien8, Nightshare, Lunar Jetman).

It's a giant pain to get it right - and thanks to Rich TW's help JSBeeb is *nearly* there. I'm hoping once we get it spot on we can write it up so others can update their emulators too.

KE's protection is _so_ much worse than Frogman too: it has interrupt handlers installed as well as using read-modify-write instructions to access the timers. The timers are on the 1MHz bus so there's a bunch of cycle stretching going on, plus there are 6502 bugs which cause spurious reads and writes (which normally don't matter...but if you spuriously write a timer you may reset it again...) To get some idea of the complexity bring up jsbeeb, hit HOME to pause it, then bring up the javascript console (usually ctrl-shift J) and type:

processor.instructions[0x3e]

... to see the code that ends up being generated for ROL abs,X (for example)!

User avatar
Pernod
Posts: 1001
Joined: Fri Jun 08, 2012 10:01 pm
Location: Croydon, UK

Re: jsbeeb - a Javascript emulator

Postby Pernod » Thu Apr 10, 2014 5:52 pm

Matt Godbolt wrote:I'm hoping once we get it spot on we can write it up so others can update their emulators too.

Will be looking forward to reading this, good luck :)
- Nigel

BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.

User avatar
Rich Talbot-Watkins
Posts: 1117
Joined: Thu Jan 13, 2005 5:20 pm
Location: Palma, Mallorca

Re: jsbeeb - a Javascript emulator

Postby Rich Talbot-Watkins » Fri Apr 11, 2014 7:45 am

The main test so far has been a program I wrote to test all sorts of edge case behaviour relating to timers and IRQs:

Code: Select all

    5 HIMEM=&4000
   10 FOR N%=0 TO 2 STEP 2:P%=&4400:[OPT N%
   20 SEI
   30 LDA #irq MOD 256:STA &204
   40 LDA #irq DIV 256:STA &205
   50 LDA &FE4E:STA &70
   60 LDA #&7F:STA &FE4E:STA &FE6E
   70 LDA #&C0:STA &FE6E
   80 LDA #0:STA &FE6B:STA &71
   90 CLI
  100 LDX #4:STX &FE64:LDY #0
  105 STY &FE65:LDA (0),Y:LDA #1:DEC &FE65:LDA &1001:INC &71
  110 STY &FE65:LDA (0,X):DEC &FE65:LDA &1002:INC &71
  120 STY &FE65:LDA (0),Y:DEC &FE65:LDA &1003:INC &71
  130 STY &FE65:LDA &1234:DEC &FE65:LDA &1004:INC &71
  140 STY &FE65:LDA &12:DEC &FE65:LDA &1005:INC &71
  150 STY &FE65:LDA #1:DEC &FE65:LDA &1006:INC &71
  160 STY &FE65:LDA (0,X):LDA &1234:LDA &FE64:LDA &1007:INC &71
  170 STY &FE65:LDA (0,X):LDA &12:LDA &FE64:LDA &1008:INC &71
  180 STY &FE65:LDA (0,X):LDA #1:LDA &FE64:LDA &1009:INC &71
  190 STY &FE65:LDA (0),Y:LDA #1:LDA &FE64:LDA &100A:INC &71
  191 STY &FE65:LDA (0,X):LDA &FE64:LDA &100B:INC &71
  192 STY &FE65:LDA (0),Y:LDA &1234:ROL &FE64:LDA &100C:STX &FE64:INC &71
  193 STY &FE65:LDA (0),Y:LDA &12:ROL &FE64:LDA &100D:STX &FE64:INC &71
  195 STY &FE65:LDA (0),Y:LDA #1:ROL &FE64:LDA &100E:STX &FE64:INC &71
  200 STY &FE65:LDA (0,X):ROL &FE64:LDA &100F:STX &FE64:INC &71
  210 STY &FE65:LDA (0),Y:ROL &FE64:LDA &1010:STX &FE64:INC &71
  220 STY &FE65:LDA &1234:ROL &FE64:LDA &1011:STX &FE64:INC &71
  230 STY &FE65:LDA &12:ROL &FE64:LDA &1012:STX &FE64:INC &71
  240 STY &FE65:LDA #1:ROL &FE64:LDA &1013:STX &FE64:INC &71
  241 STY &FE65:LDA (0,X):LDA (0),Y:LDA &1014:LDA &2014:INC &71
  242 STY &FE65:LDA (0,X):LDA &1234:LDA &1015:LDA &2015:INC &71
  243 STY &FE65:LDA (0,X):LDA &12:LDA &1016:LDA &2016:INC &71
  244 STY &FE65:LDA (0,X):LDA #1:LDA &1017:LDA &2017:INC &71
  245 STY &FE65:LDA (0),Y:LDA #1:LDA &1018:LDA &2018:INC &71
  246 STY &FE65:LDA (0,X):LDA &1019:LDA &2019:INC &71
  250 SEI
  260 LDA &70:STA &FE4E:LDA #&7F:STA &FE6E
  270 LDA #?&204:STA &204
  280 LDA #?&205:STA &205
  290 CLI:RTS
  300 .irq
  310 STX &72
  320 TSX:INX:INX:LDA &100,X:STA &73
  325 INX:LDA &100,X
  330 LDX &71:STA &4300,X
  335 LDA &73:STA &4000,X
  340 LDA &FE6D:STA &4100,X
  350 LDA &FE64:STA &4200,X
  360 LDX &72
  370 LDA &FC:RTI
  380 ]NEXT
  385 *FX 16,0
  390 FOR N%=0 TO &3FF STEP 4:N%!&4000=0:NEXT
  400 CALL &4400
  410 FOR N%=0 TO ?&71
  420 A%=(N%?&4300)*256+(N%?&4000)
  430 PRINT ;~A%;" (";~A%?0;" ";~A%?1;" ";~A%?2;") ";TAB(22);~N%?&4100;TAB(30);~N%?&4200
  440 NEXT

Which, on a real BBC B, yields the following results:

Code: Select all

4436 (AD 1 10)        0       DD
4443 (AD 2 10)        0       DD
4450 (AD 3 10)        0       DD
445E (AD 4 10)        0       DD
0 (C6 16 D0)          0       0
0 (C6 16 D0)          0       0
4488 (AD 7 10)        0       FF
4497 (AD 8 10)        0       0
0 (C6 16 D0)          0       0
44B8 (E6 71 8C)       C0      FF
44C5 (E6 71 8C)       C0      FF
0 (C6 16 D0)          0       0
0 (C6 16 D0)          0       0
44F6 (AD E 10)        C0      DB
4506 (AD F 10)        C0      DC
4516 (AD 10 10)       C0      FF
4527 (AD 11 10)       C0      0
453A (8E 64 FE)       C0      1
454A (8E 64 FE)       C0      1
4559 (AD 14 20)       C0      0
4569 (AD 15 20)       C0      0
4578 (AD 16 20)       C0      1
458A (E6 71 8C)       C0      FF
4599 (E6 71 8C)       C0      0
45A6 (E6 71 78)       C0      0
0 (C6 16 D0)          0       0
(Thanks to BigEd of this parish for running the test code and posting the results, and for general hardwarey insights!)

This tests all kinds of tricky interactions between the 6522 generating interrupts, reads/writes acknowledging them, and the CPU deciding to take an IRQ. The first column is the return address for the IRQ handler, when taken, or 0 if it was 'swallowed'; the second column is the IFR value upon entry to the IRQ handler, and the third column is the timer value at an arbitrary point in the IRQ handler (just for testing that the timing is correct).

jsbeeb now runs this program correctly with identical results (something which no other emulator currently does) but there's still a small bug somewhere which is causing the Nightshade and Lunar Jetman decryption to go wrong (I think I know what this is, but haven't yet had time to try it - it's extremely sensitive to any small error... exactly how anyone ever cracked it in software on a Beeb is beyond me...).

A few interesting results have come out of analysing the test output (tabulated here):

  • The CPU appears to check whether an IRQ needs to be taken at the end of the penultimate cycle of an instruction, and only there - the important point being that it must do the check prior to the penultimate memory access. This is so that, if an instruction were to acknowledge an IRQ in its penultimate memory access, the CPU would already have decided to service it anyway.

  • When a cycle is stretched, due to 1MHz memory access, it may be stretched to either 2 or 3 2MHz ticks, so that the falling CPU clock edge coincides with the falling 1MHz clock edge. This cycle must be treated as 'atomic', i.e. no operations happen until the end of the stretched cycle.

  • There are three possible outcomes in the case where an IRQ is generated during an instruction whose effect is to acknowledge that IRQ, depending on the moment the IRQ is generated. It will either be taken as normal, or it may be taken but with the IFR clear (already acknowledged), or it may be completely 'swallowed' (acknowledged before the CPU spots that it needs to be taken).

  • There appears to be some kind of bug in the 6522, meaning that if an LSB timer register is read (which would normally acknowledge the IRQ and clear the IFR) half a cycle after the IRQ is generated, the IRQ happens anyway, and the acknowledge logic is ignored (i.e. the IFR remains set and the CPU IRQ line is still active). This seems to be some kind of hardware race condition which leads to the IRQ 'winning'. Strangely, this is not the case when writing to a MSB timer register half a cycle after the IRQ is generated: in this instance, the write will acknowledge the IRQ and clear the IFR, as would be expected. Note, however, that - as per rule #1 - if the CPU is polling whether to take an IRQ at this moment, it will still be taken, as the check must happen prior to the memory access. The leads to situation where the IRQ is taken but the IFR is clear.

    I haven't seen this documented anywhere, but it's definitely a 'thing' - and something similar has been alluded to in the past, e.g. here.

Putting all this together leads to the following logic for LSR abs, for example:

Code: Select all

function (cpu) {   // LSR abs
    "use strict";
    var REG = 0|0;
    var addr = cpu.getw();
    cpu.polltime(4+ cpu.is1MHzAccess(addr) * ((cpu.cycles & 1) + 1));
    REG = cpu.readmem(addr);
    cpu.polltime(1+ cpu.is1MHzAccess(addr) * (!(cpu.cycles & 1) + 1));
    cpu.checkInt();
    cpu.writemem(addr, REG);
    cpu.p.c = !!(REG & 0x01);
    REG >>>= 1;
    cpu.setzn(REG);
    cpu.polltime(1+ cpu.is1MHzAccess(addr) * (!(cpu.cycles & 1) + 1));
    cpu.writemem(addr, REG);
}

This is autogenerated code, so can certainly be improved on (e.g. only checking cpu.is1MHzAccess(addr) once at the beginning, amongst other things... this is work-in-progress!).

Anyway, we're getting there slowly. Maybe this is useful info for anyone else wishing to improve the accuracy of their 6502/6522 emulation :)

User avatar
Pernod
Posts: 1001
Joined: Fri Jun 08, 2012 10:01 pm
Location: Croydon, UK

Re: jsbeeb - a Javascript emulator

Postby Pernod » Fri Apr 11, 2014 1:05 pm

Rich Talbot-Watkins wrote:The main test so far has been a program I wrote to test all sorts of edge case behaviour relating to timers and IRQs:

Thanks for this, should provide some interesting testing :)
- Nigel

BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.

User avatar
Rich Talbot-Watkins
Posts: 1117
Joined: Thu Jan 13, 2005 5:20 pm
Location: Palma, Mallorca

Re: jsbeeb - a Javascript emulator

Postby Rich Talbot-Watkins » Fri Apr 11, 2014 1:50 pm

You're working on improving MESS at the moment aren't you? Would be worth getting some of this stuff in, if it isn't already. I don't know what the quality of emulation in MESS is like in general - does it tend to be cycle-accurate?

User avatar
Rich Talbot-Watkins
Posts: 1117
Joined: Thu Jan 13, 2005 5:20 pm
Location: Palma, Mallorca

Re: jsbeeb - a Javascript emulator

Postby Rich Talbot-Watkins » Fri Apr 11, 2014 3:29 pm

To reply to myself, I just had a quick look... aaargh virtual functions everywhere, it will run like a dog on anything other than a modern PC/Mac. Can't really say much for the quality of emulation from a cursory glance... I noticed they don't implement this undocumented 6522 behaviour though :wink:

User avatar
Pernod
Posts: 1001
Joined: Fri Jun 08, 2012 10:01 pm
Location: Croydon, UK

Re: jsbeeb - a Javascript emulator

Postby Pernod » Fri Apr 11, 2014 3:52 pm

Rich Talbot-Watkins wrote:To reply to myself, I just had a quick look... aaargh virtual functions everywhere, it will run like a dog on anything other than a modern PC/Mac. Can't really say much for the quality of emulation from a cursory glance... I noticed they don't implement this undocumented 6522 behaviour though :wink:

Yeah, the MESS framework takes some getting used to, but it is a documentation project. The CPU's and other IC's are supposedly very accurate, it's getting all the intermediate logic correctly implemented that needs attention.
- Nigel

BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.

User avatar
tricky
Posts: 1917
Joined: Tue Jun 21, 2011 8:25 am
Contact:

Re: jsbeeb - a Javascript emulator

Postby tricky » Fri Apr 11, 2014 9:26 pm

Very nice, very nice indeed, fast and accurate; I am amazed.

I did have a few issues:

Chrome on PC

typing shift+# to get * seems to turn on shift-lock, but caps-lock, caps-lock fixes that (It has just stuck me that right shift might be shift-lock!)

I first loaded my as yet unreleased game and it worked beautifully, but loading it now gives me elite!

Chrome on android

a bit choppy as expected, then after a few seconds crashed - same each time.

load .ssd won't let me choose from downloads (probably my lack of android knowledge).

Still excellent.

If it ever does get practical for phone (it may be already for all I know), how about adding an option to display a few large touch keys like beebdroid.

User avatar
richardtoohey
Posts: 3378
Joined: Thu Dec 29, 2011 5:13 am
Location: Tauranga, New Zealand

Re: jsbeeb - a Javascript emulator

Postby richardtoohey » Fri Apr 11, 2014 9:43 pm

tricky wrote:If it ever does get practical for phone (it may be already for all I know), how about adding an option to display a few large touch keys like beebdroid.
I find those things drive me nuts on touch-screen devices - things are just unplayable (not that I am much of a good player to start with!) But no, I don't have a better idea of how they should do it. #-o

User avatar
Matt Godbolt
Posts: 163
Joined: Mon Jul 31, 2006 10:02 am
Location: Chicago
Contact:

Re: jsbeeb - a Javascript emulator

Postby Matt Godbolt » Sat Apr 12, 2014 2:40 am

Hey guys - thanks for the feedback!

Re: keyboards - I'm still trying to find a way to detect the keyboard layout reliably from Javascript. I currently only develop on a US keyboard and it "works for me" :(. I'll have to dig out a UK machine and try and get it working.

Re: loading up a local disc - reloading the web-page will return you to the Elite image due to the way Javascript permissions work -- it's not possible to load an arbitrary file from the local filesystem (like your own SSD) without getting the user to re-pick it from a file browser. I should however use browser-local storage to store a copy of the disk...although that would get confusing if you then updated the SSD on disk it wouldn't be reflected in the browser. As you can tell I'm not all that sure how to fix it :)

Re: mobile devices - it's too slow on any of my devices (including a newish iPad), so I've not worried too much about support there just yet. It would be nice as an option though - you're very brave for trying: thanks!

User avatar
tricky
Posts: 1917
Joined: Tue Jun 21, 2011 8:25 am
Contact:

Re: jsbeeb - a Javascript emulator

Postby tricky » Sat Apr 12, 2014 9:20 am

Maybe you could try using an accessibility onscreen english keyboard for testing your layout - maybe!

PS I thought foolhardy rather than brave ;)

User avatar
W_oo_d
Posts: 8
Joined: Wed Feb 12, 2014 1:08 pm

Re: jsbeeb - a Javascript emulator

Postby W_oo_d » Sun Apr 13, 2014 5:48 pm

awesome emulator, congrats :)

User avatar
Matt Godbolt
Posts: 163
Joined: Mon Jul 31, 2006 10:02 am
Location: Chicago
Contact:

Re: jsbeeb - a Javascript emulator

Postby Matt Godbolt » Sun Apr 13, 2014 8:55 pm

Thanks :-)

I'm having to pause development for a couple weeks but once I get time again I'll start on all the things discussed here. Also people have asked for Master support -- which selfishly I want too as Frogman seems to have an unintentional bug where it only runs on a Master! Rich and I never realised as we only had Masters back in the day....!


Return to “emulators”

Who is online

Users browsing this forum: No registered users and 3 guests