gasman / goldfinch

An open-ended C/Z80 software stack for mass-storage access on the ZX Spectrum
6 stars 0 forks source link

hi #27

Closed rogerjowett closed 11 years ago

rogerjowett commented 11 years ago

gasman closed the issue 2 days ago gasman look if you wanna work for microsoft - the big boys you cant just go around closing things you need to at least hack my computer like a dozen times and force me to restart it in the middle of doing something a million times or so after all we pay for a service and we are not legally entitled to 1% of the advertised service its the new 1940's!

gasman commented 11 years ago

Hi Roger, This form is only for reporting issues with the Goldfinch project, which is not related to developing new hardware or video modes - I closed the issue because it was off-topic. (Anyhow, the project is basically dead now, because ESXDOS achieved what I was aiming for.)

rogerjowett commented 11 years ago

can i reply to this message?

On 17/04/2013, Matt Westcott notifications@github.com wrote:

Hi Roger, This form is only for reporting issues with the Goldfinch project, which is not related to developing new hardware or video modes - I closed the issue because it was off-topic. (Anyhow, the project is basically dead now, because ESXDOS achieved what I was aiming for.)


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16526362

gasman commented 11 years ago

yep.

rogerjowett commented 11 years ago

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

rogerjowett commented 11 years ago

do you know how many zx spectrums sold? in total? think i found one article that was monthly best selling with no actual statistics bbc model B 1½million? commodore 64 25million?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

rogerjowett commented 11 years ago

http://matt.west.co.tt/spectrum/jsspeccy/

http://matt.west.co.tt/

is this your stuff?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

do you know how many zx spectrums sold? in total? think i found one article that was monthly best selling with no actual statistics bbc model B 1½million? commodore 64 25million?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

rogerjowett commented 11 years ago

let me have a look....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://matt.west.co.tt/spectrum/jsspeccy/

http://matt.west.co.tt/

is this your stuff?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

do you know how many zx spectrums sold? in total? think i found one article that was monthly best selling with no actual statistics bbc model B 1½million? commodore 64 25million?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

rogerjowett commented 11 years ago

you wont let me post a comment is that right?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

let me have a look....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://matt.west.co.tt/spectrum/jsspeccy/

http://matt.west.co.tt/

is this your stuff?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

do you know how many zx spectrums sold? in total? think i found one article that was monthly best selling with no actual statistics bbc model B 1½million? commodore 64 25million?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

rogerjowett commented 11 years ago

http://www.youtube.com/watch?v=zsjTpFR0oYQ

will try to post this link do you think it will work? £50 says it wont!

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

you wont let me post a comment is that right?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

let me have a look....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://matt.west.co.tt/spectrum/jsspeccy/

http://matt.west.co.tt/

is this your stuff?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

do you know how many zx spectrums sold? in total? think i found one article that was monthly best selling with no actual statistics bbc model B 1½million? commodore 64 25million?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

rogerjowett commented 11 years ago

http://www.youtube.com/watch?v=zsjTpFR0oYQ

anyone help add hmpr bit 5&6 support to bmp2scr with interlaced mode 3 animations with masterbasic save mode 3 style intra frame compression please snapper discs velesoft site run 48k and one 128k program at 6mhz using external 1-4mb ram in sim coupe emulator for sam coupe needs masterdos booted first then snapper discs then option two on menu

think its the spelling of two that throws them...

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=zsjTpFR0oYQ

will try to post this link do you think it will work? £50 says it wont!

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

you wont let me post a comment is that right?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

let me have a look....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://matt.west.co.tt/spectrum/jsspeccy/

http://matt.west.co.tt/

is this your stuff?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

do you know how many zx spectrums sold? in total? think i found one article that was monthly best selling with no actual statistics bbc model B 1½million? commodore 64 25million?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

rogerjowett commented 11 years ago

yup there you go posted comment and luckily for me comment disappears so am i blocked? if i am then why cant anyone have the decency to let me know BEFORE I TYPE THE FUCKING COMMENT it really is fucking cunty to treat us this way im fucking sick of it youtube a million fucking messages ebay too oh ha ha ha this twat thinks he is going to ask someone something about the bullshit they are flogging....

matt.west.co.tt adventures of a retro electro media hacker type person « The Model (unplugged cover version)FreshBEEP » JSSpeccy: A ZX Spectrum emulator in Javascript I’m really typecasting myself here. If there were an international “Person most likely to write a Spectrum emulator in Javascript” award, I’d have taken it for the last five years running. So here it is – probably the most stereotypical project I’ll ever come up with.

Readme file Run JSSpeccy online (includes 10 classic games!) Download JSSpeccy (644Kb) JSSpeccy Subversion repository Writing this wasn’t actually such a big deal – the Z80 core was ported from the one in Fuse, with the Perl-and-C-preprocessor-munging trickery still intact, and Javascript is syntactically close enough to C that that wasn’t a mammoth task. (I got 90% of it done on the train journey back from International Vodka Party alongside recording silly songs about tube stations.) The one fiddly bit was working around the places where the Fuse code used low-level C constructs to its advantage: using unions to chop and change between individual registers and 16-bit register pairs, and relying on limited-size C data types (often in pretty subtle ways) to truncate 8-bit and 16-bit values at the right time, whereas Javascript only has integers. (Actually, the really time-consuming bit was debugging it all… luckily, Fuse has a rather excellent test suite too.)

The rest is just creative abuse of the element, as usual… it’ll take advantage of the putImageData interface to do the pixel pushing if available (on my machine Firefox has it, Safari doesn’t) and fall back on drawing 1×1 pixel rectangles otherwise. This time I’ve thrown in Google’s ExplorerCanvas as a nod to those poor unfortunates still stuck with Internet Explorer. Incidentally, I’d be curious to know how it rates on Google Chrome (I don’t have an XP/Vista box to test on) – if the hype is true (and it implements the putImageData interface like all good up-to-date browsers should) then I’d expect it to comfortably reach 100% Spectrum speed on modest hardware.

Belorussian translation of this post provided by movavi

This entry was posted on Sunday, October 19th, 2008 at 9:23 pm and is filed under Hacks, JSSpeccy, Javascript, Spectrum. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

96 Responses to “JSSpeccy: A ZX Spectrum emulator in Javascript” « Older Comments Phil Hackett says: 25 November 2008 at 11:55 am Insane! What a fundamentally bad idea. Good work, sir!

Pacific Tides » Scripted Emulators says: 4 December 2008 at 8:12 am [...] Z80 Speccy [...]

betacontinua » Emulando Spectrum en javascript says: 6 December 2008 at 8:01 am [...] nombre es JJSpeccy y ha sido creado por Matt West. Aquí podéis jugar online, o descargarlo y usarlo como queráis. [...]

Shazz says: 15 December 2008 at 2:53 pm Simply excellent !

Un par de emuladores retro | FACIL TUTORIALES says: 19 December 2008 at 10:21 pm [...] emulador online de Spectrum, que se puede usar desde el navegador (incluye diez juegos) o también descargar desde la página oficial (Vía [...]

Ajaxian » 2008: Awesome JavaScript says: 5 January 2009 at 12:39 pm [...] browser. Matt Westcott (who also made the Antisocial demo) pulled another rabbit out of the hat, JSSpeccy the ZX Spectrum emulator. That’s just way [...]

2008: Awesome JavaScript | How2Pc says: 5 January 2009 at 8:42 pm [...] browser. Matt Westcott (who also made the Antisocial demo) pulled another rabbit out of the hat, JSSpeccy the ZX Spectrum emulator. That’s just way [...]

JSSpeccy... | hilpers says: 17 January 2009 at 8:52 pm [...] Ciao a tutti, all’indirizzo http://matt.west.co.tt/spectrum/jsspeccy/ potete trovare un emulatore dello Spectrum scritto interamente in Javascript. Io lo trovo lento ed [...]

javascript - Emuforums.com says: 9 March 2009 at 10:34 am [...] Amiga in javascript http://www.chiptune.com/ ZX spectrum in javascript (JSSpeccy): http://matt.west.co.tt/spectrum/jsspeccy/ __ XTemu | GeneralEmu | Webcomics ……-.____ —( )_)___) -> [...]

JavaScript开发游戏 » 胳肢窝 says: 13 March 2009 at 3:29 pm [...] Westcottåˆ›é€ çš„JSSpeccy the ZX Spectrum emulator 。 James Urquhart åˆ›é€ çš„SCUMM interpreter [...]

tom says: 27 April 2009 at 9:49 pm nice one. have you checked out the one I made (AS3) ? http://flexiblefactory.co.uk/spectrum

James C says: 11 May 2009 at 1:41 pm Probably the most impressive, amazing, awesome code I have seen so far this YEAR. (Together with http://flexiblefactory.co.uk/spectrum of course :))

Thank you both and congratulations for your efforts to convert your ideas into reality.

I would be interested to know if anyone’s had any success writing an Acorn BBC or Atari ST emulator in Javascript or similar? (I have seen http://atari.isource.net.nz).

Thanks and BEST regards, James

Aaron says: 31 July 2009 at 1:29 am It works great with chrome! good job..

En.dogeno.us – previous CaiLog » How-To » Gaming in your Chrome Browser – the power of V8 JavaScript Engine says: 17 September 2009 at 6:27 pm [...] few months ago, I stumbled across Matt Westcott’s excellent JSSpeccy. I had seen some pretty imaginative canvas creations, but Javascript emulators? What a perfect idea [...]

Seni konsoliniai (NES) žaidimai jūsų naršyklėje says: 18 September 2009 at 5:12 am [...] JavaScript pagalba. Projekto autoriui Ben Firshman kaip jis pats teigia gime perskaičius Matt Westcott straipsniuką apie JSSpeccy biblioteką. Ben [...]

Daily Links #100 | CloudKnow says: 18 September 2009 at 8:38 am [...] A ZX Spectrum emulator in Javascript. Nothing like playing Super Mario and Contra in [...]

Cream Contras in Chrome | The Minority Report says: 18 September 2009 at 6:03 pm [...] you can. Check out this story! A few months ago, I stumbled across Matt Westcott’s excellent JSSpeccy. I had seen some pretty imaginative canvas creations, but Javascript emulators? What a perfect idea [...]

Alexander says: 28 September 2009 at 3:05 pm Cool! I was so impressed of your stuff so I have moved my old i8080 emulator to the JavaScript rails. The hardware is the 8-bit Russian computer based on i8080 named Radio-86RK.

The project site is http://code.google.com/p/radio86/

It is on Russian because that computer is 99% Russian ;-), but the direct link to the emulator (http://radio86.googlecode.com/files/radio86.html) actually gives a clue how it works like.

BTW, I’ve found a bit weird logic in your Z80 implementation. For example, a register increment:

Your implementation is:

case 0x0c: { (z80.c) = ((z80.c) + 1) & 0xff; z80.f = ( z80.f & 0×01 ) | ( (z80.c)==0×80 ? 0×04 : 0 ) | ( (z80.c)&0x0f ? 0 : 0×10 ) | sz53_table[(z80.c)];};

So I’ve got rid of weird calculation of the parity flag — “( (z80.c)==0×80 ? 0×04 : 0 )” and just use “sz53p_table” instead of “sz53_table” to calculate the parity flag.

I guess maybe for Z80 it is correct but for I8080 it should be like this:

case 0x0c: // inr c i8080.tstates += 5; i8080.c = (i8080.c + 1) & 0xff; i8080.f = (i8080.f & 0×01) | (i8080.c & 0x0f ? 0 : 0×10) | sz53p_table[i8080.c]; break;

So I had to change the register increment and decrement routines (INR x and DCR x in I8080 notation).

Maybe it could be useful for you.

Anyway, thanks for idea.

Philip Kendall says: 28 September 2009 at 6:42 pm Alexander: more my implementation (as part of Fuse) than Matt’s really, and it’s right for the Z80: in this case it’s acting as the oVerflow flag to indicate a change of sign rather than as the parity flag. You’ll be right for the 8080 though :-) Cheers!

Exclusive Interview With Ben Firshman, Creator of JSNES says: 15 October 2009 at 5:22 pm [...] I stumbled across Matt Westcott’s JSSpeccy and it sparked my imagination. I have a tendency to get trapped by overly ambitious projects, and a [...]

Greg says: 4 November 2009 at 9:02 am Awesome!!! Runs on my HTC Magic Android mobile :-)

Simon Richmond says: 20 December 2009 at 10:14 pm Since you asked it works well on Google Chrome Browser.

Paul says: 22 January 2010 at 12:30 pm Hi,

How do I install this on Android?

I have motorols droid….

matt says: 22 January 2010 at 11:28 pm Paul: There’s nothing to install – it just runs directly from the web page at jsspeccy.zxdemo.org. (Unless I’m getting the wrong end of the stick, and ‘installing’ a webpage so that you can view it offline is a standard practice on Android phones – in which case, I have no idea…)

Introducing Gordon: the Flash Player Written in JavaScript says: 2 February 2010 at 11:34 am [...] been used for a number of unusual projects in the past few years. We’ve had NES emulators, Spectrum emulators, and even Amiga emulators. But a Flash player?… What’s the point of emulating a [...]

Corrado says: 6 February 2010 at 1:20 pm Great for iPhone users !!!!! So, how can I use it with iPhone ? It works, but there is no keyboard… There is a workaround to brings up the virtual keyboard ? There is another way to use it with touch ? Think about that THIS emulator can be actually the ONLY ONE solution to emulate Speccy with a non-jailbroken iPhone…..

matt says: 6 February 2010 at 8:15 pm Nope, no virtual keyboard support… you need to use the ‘joystick’ icon to set up mappings between Spectrum keys and joystick directions, and then you can touch the appropriate areas of the screen to trigger those keys.

random says: 25 February 2010 at 10:04 pm doesn’t work on nexus one for some reason :(

Gary Newell says: 16 March 2010 at 9:20 pm This is pure genius. Didn’t think it was possible. Shows what I know

Alex says: 24 March 2010 at 12:18 am I loved the spectrum.

The concept of typing in text and playing a visual game was mindblowing at the time.

Introducing Gordon: the Flash Player Written in JavaScript | allphp.com says: 28 March 2010 at 5:00 am [...] been used for a number of unusual projects in the past few years. We’ve had NES emulators, Spectrum emulators, and even Amiga emulators. But a Flash player?… What’s the point of emulating a [...]

War of Browsers Chrome, Firefox, Opera, Safari and Internet Explorer | iTech Engine says: 29 March 2010 at 6:35 am [...] with this cool new emulator for the Nintendo Entertainment System inspired by Matt Westcott’s JSSpeccy which runs on the dual-power of JavaScript and HTML5’s Canvas element. While describing a [...]

mmwmm says: 21 September 2010 at 1:38 am Tried Manic miner, it runs way to slow on my browser, firefox. Nice simple setup though, click this, click that and your away.

Vanda Fiddler says: 14 December 2010 at 10:14 am Wow, this is just amazing :D Great work!

John Barker says: 15 December 2010 at 2:16 pm Ahhhhh!!!! the good old days… back to 1982 Sinclair research!!

I have actually still got a mint spectrum ready for when my games room is finished… I also have the divide + from rwapsoftware for which all those favorite games can be run from a compact flash card….

Manic Miner… I will complete that bugger one day!!!

Great Program!!

Thanks

Paul says: 21 March 2011 at 10:43 pm I just tried this on my Kindle. It works! Pretty slow though!

Hardware-Emulatoren in Browser « Jakoblog — Das Weblog von Jakob Voß says: 17 May 2011 at 10:48 pm [...] JSSpeccy (Sinclair ZX Spectrum) [...]

Richard says: 21 May 2011 at 10:14 pm Flipping heck mate, was that hard to write? Or have you got some kind of microcode to Javascript convertor?

Online ZX spectrum games « Mutant Technology says: 14 July 2011 at 9:57 am [...] games are all running within emulators, either written in Java, or amazingly, Javascript. The Javascript efforts are incredible in this ex-programmers estimation: ported from the open source Fuse Z80 emulator [...]

Mr.Starquake says: 30 March 2012 at 3:04 pm I’m ecstatic..just getting into browser-based games – speccy in js sounds like the best thing since the Sectrum+. Thanks so much.

Samir Ribic says: 8 April 2012 at 6:01 pm The famous Moore/Wirth law! 19 years ago Željko Juri? and me started to write Warajevo emulator in assembly language with GUI in Pascal. We had to check every microsecond to make the code as fast as possible. Many games were playable on 10MHz 80286 computer, and in 1999 I wrote Tezxas for 10MHz TI89 calculator.

Soon Warajevo became on 486 25MHz too fast and we introduced delay loop for synchronize.

But in Pentium age, there was wish to make emulators in C, then in Java, then in Visual Basic, … and usually these languages were slow for writing emulators on contemporary computers but after about 3 years they became acceptably fast.

Now we have emulator in JavaScript and the history repeats :)

Vintage Computing Anniversaries « devioblog says: 25 April 2012 at 5:47 am [...] then, computers have become bigger and fast enough that you can run a ZX Spectrum emulation in JavaScript in a browser on an operation system that requires a million times more disk space than the original [...]

Andrew says: 7 May 2012 at 4:03 pm Great thing!

I have a question about “z80_interrupt()”: … switch(IM) { … case 2: … inttemp &= 0xfff;

looks bit weird, should it be 0xffff ?

matt says: 10 May 2012 at 6:14 pm Andrew: Well spotted! Updated now… http://matt.west.co.tt/spectrum/jsspeccy-tiny-bugfix/

ashley says: 12 July 2012 at 1:49 pm great emulator, thanks! it’s the best, i don’t need to install anything, it just works

JSNES-JS??????? – Victor's Blog says: 10 March 2013 at 4:30 pm [...] Wescott?JSSpeccy???Ben Firshman???vNES?JavaScriptS??????JSNES???????canvas [...]

« Older Comments Leave a Reply Name (required) Mail (will not be published) (required) Website

matt.west.co.tt is proudly powered by WordPress Entries (RSS) and Comments (RSS).

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=zsjTpFR0oYQ

anyone help add hmpr bit 5&6 support to bmp2scr with interlaced mode 3 animations with masterbasic save mode 3 style intra frame compression please snapper discs velesoft site run 48k and one 128k program at 6mhz using external 1-4mb ram in sim coupe emulator for sam coupe needs masterdos booted first then snapper discs then option two on menu

think its the spelling of two that throws them...

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=zsjTpFR0oYQ

will try to post this link do you think it will work? £50 says it wont!

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

you wont let me post a comment is that right?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

let me have a look....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://matt.west.co.tt/spectrum/jsspeccy/

http://matt.west.co.tt/

is this your stuff?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

do you know how many zx spectrums sold? in total? think i found one article that was monthly best selling with no actual statistics bbc model B 1½million? commodore 64 25million?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

rogerjowett commented 11 years ago

did you buy a speccy 2010? what is it exactly processor? video ram bits per pixel screen resolution palette of colours ability to add another processor/ram/video ram/processor with access to video ram/etc etc or entire new pcb just to get an extra 1% of the data transfer speed you are already paying for but not getting

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

yup there you go posted comment and luckily for me comment disappears so am i blocked? if i am then why cant anyone have the decency to let me know BEFORE I TYPE THE FUCKING COMMENT it really is fucking cunty to treat us this way im fucking sick of it youtube a million fucking messages ebay too oh ha ha ha this twat thinks he is going to ask someone something about the bullshit they are flogging....

matt.west.co.tt adventures of a retro electro media hacker type person « The Model (unplugged cover version)FreshBEEP » JSSpeccy: A ZX Spectrum emulator in Javascript I’m really typecasting myself here. If there were an international “Person most likely to write a Spectrum emulator in Javascript” award, I’d have taken it for the last five years running. So here it is – probably the most stereotypical project I’ll ever come up with.

Readme file Run JSSpeccy online (includes 10 classic games!) Download JSSpeccy (644Kb) JSSpeccy Subversion repository Writing this wasn’t actually such a big deal – the Z80 core was ported from the one in Fuse, with the Perl-and-C-preprocessor-munging trickery still intact, and Javascript is syntactically close enough to C that that wasn’t a mammoth task. (I got 90% of it done on the train journey back from International Vodka Party alongside recording silly songs about tube stations.) The one fiddly bit was working around the places where the Fuse code used low-level C constructs to its advantage: using unions to chop and change between individual registers and 16-bit register pairs, and relying on limited-size C data types (often in pretty subtle ways) to truncate 8-bit and 16-bit values at the right time, whereas Javascript only has integers. (Actually, the really time-consuming bit was debugging it all… luckily, Fuse has a rather excellent test suite too.)

The rest is just creative abuse of the element, as usual… it’ll take advantage of the putImageData interface to do the pixel pushing if available (on my machine Firefox has it, Safari doesn’t) and fall back on drawing 1×1 pixel rectangles otherwise. This time I’ve thrown in Google’s ExplorerCanvas as a nod to those poor unfortunates still stuck with Internet Explorer. Incidentally, I’d be curious to know how it rates on Google Chrome (I don’t have an XP/Vista box to test on) – if the hype is true (and it implements the putImageData interface like all good up-to-date browsers should) then I’d expect it to comfortably reach 100% Spectrum speed on modest hardware.

Belorussian translation of this post provided by movavi

This entry was posted on Sunday, October 19th, 2008 at 9:23 pm and is filed under Hacks, JSSpeccy, Javascript, Spectrum. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

96 Responses to “JSSpeccy: A ZX Spectrum emulator in Javascript” « Older Comments Phil Hackett says: 25 November 2008 at 11:55 am Insane! What a fundamentally bad idea. Good work, sir!

Pacific Tides » Scripted Emulators says: 4 December 2008 at 8:12 am [...] Z80 Speccy [...]

betacontinua » Emulando Spectrum en javascript says: 6 December 2008 at 8:01 am [...] nombre es JJSpeccy y ha sido creado por Matt West. Aquí podéis jugar online, o descargarlo y usarlo como queráis. [...]

Shazz says: 15 December 2008 at 2:53 pm Simply excellent !

Un par de emuladores retro | FACIL TUTORIALES says: 19 December 2008 at 10:21 pm [...] emulador online de Spectrum, que se puede usar desde el navegador (incluye diez juegos) o también descargar desde la página oficial (Vía [...]

Ajaxian » 2008: Awesome JavaScript says: 5 January 2009 at 12:39 pm [...] browser. Matt Westcott (who also made the Antisocial demo) pulled another rabbit out of the hat, JSSpeccy the ZX Spectrum emulator. That’s just way [...]

2008: Awesome JavaScript | How2Pc says: 5 January 2009 at 8:42 pm [...] browser. Matt Westcott (who also made the Antisocial demo) pulled another rabbit out of the hat, JSSpeccy the ZX Spectrum emulator. That’s just way [...]

JSSpeccy... | hilpers says: 17 January 2009 at 8:52 pm [...] Ciao a tutti, all’indirizzo http://matt.west.co.tt/spectrum/jsspeccy/ potete trovare un emulatore dello Spectrum scritto interamente in Javascript. Io lo trovo lento ed [...]

javascript - Emuforums.com says: 9 March 2009 at 10:34 am [...] Amiga in javascript http://www.chiptune.com/ ZX spectrum in javascript (JSSpeccy): http://matt.west.co.tt/spectrum/jsspeccy/ __ XTemu | GeneralEmu | Webcomics ……-.____ —( )_)___) -> [...]

JavaScriptå¼€å ‘æ¸¸æˆ » èƒ³è‚¢çª says: 13 March 2009 at 3:29 pm [...] Westcottåˆ›é€ çš„JSSpeccy the ZX Spectrum emulator 。 James Urquhart åˆ›é€ çš„SCUMM interpreter [...]

tom says: 27 April 2009 at 9:49 pm nice one. have you checked out the one I made (AS3) ? http://flexiblefactory.co.uk/spectrum

James C says: 11 May 2009 at 1:41 pm Probably the most impressive, amazing, awesome code I have seen so far this YEAR. (Together with http://flexiblefactory.co.uk/spectrum of course :))

Thank you both and congratulations for your efforts to convert your ideas into reality.

I would be interested to know if anyone’s had any success writing an Acorn BBC or Atari ST emulator in Javascript or similar? (I have seen http://atari.isource.net.nz).

Thanks and BEST regards, James

Aaron says: 31 July 2009 at 1:29 am It works great with chrome! good job..

En.dogeno.us – previous CaiLog » How-To » Gaming in your Chrome Browser – the power of V8 JavaScript Engine says: 17 September 2009 at 6:27 pm [...] few months ago, I stumbled across Matt Westcott’s excellent JSSpeccy. I had seen some pretty imaginative canvas creations, but Javascript emulators? What a perfect idea [...]

Seni konsoliniai (NES) žaidimai jÅ«sų narÅ¡yklÄ—je says: 18 September 2009 at 5:12 am [...] JavaScript pagalba. Projekto autoriui Ben Firshman kaip jis pats teigia gime perskaiÄ ius Matt Westcott straipsniukÄ… apie JSSpeccy bibliotekÄ…. Ben [...]

Daily Links #100 | CloudKnow says: 18 September 2009 at 8:38 am [...] A ZX Spectrum emulator in Javascript. Nothing like playing Super Mario and Contra in [...]

Cream Contras in Chrome | The Minority Report says: 18 September 2009 at 6:03 pm [...] you can. Check out this story! A few months ago, I stumbled across Matt Westcott’s excellent JSSpeccy. I had seen some pretty imaginative canvas creations, but Javascript emulators? What a perfect idea [...]

Alexander says: 28 September 2009 at 3:05 pm Cool! I was so impressed of your stuff so I have moved my old i8080 emulator to the JavaScript rails. The hardware is the 8-bit Russian computer based on i8080 named Radio-86RK.

The project site is http://code.google.com/p/radio86/

It is on Russian because that computer is 99% Russian ;-), but the direct link to the emulator (http://radio86.googlecode.com/files/radio86.html) actually gives a clue how it works like.

BTW, I’ve found a bit weird logic in your Z80 implementation. For example, a register increment:

Your implementation is:

case 0x0c: { (z80.c) = ((z80.c) + 1) & 0xff; z80.f = ( z80.f & 0×01 ) | ( (z80.c)==0×80 ? 0×04 : 0 ) | ( (z80.c)&0x0f ? 0 : 0×10 ) | sz53_table[(z80.c)];};

So I’ve got rid of weird calculation of the parity flag — “( (z80.c)==0×80 ? 0×04 : 0 )” and just use “sz53p_table” instead of “sz53_table” to calculate the parity flag.

I guess maybe for Z80 it is correct but for I8080 it should be like this:

case 0x0c: // inr c i8080.tstates += 5; i8080.c = (i8080.c + 1) & 0xff; i8080.f = (i8080.f & 0×01) | (i8080.c & 0x0f ? 0 : 0×10) | sz53p_table[i8080.c]; break;

So I had to change the register increment and decrement routines (INR x and DCR x in I8080 notation).

Maybe it could be useful for you.

Anyway, thanks for idea.

Philip Kendall says: 28 September 2009 at 6:42 pm Alexander: more my implementation (as part of Fuse) than Matt’s really, and it’s right for the Z80: in this case it’s acting as the oVerflow flag to indicate a change of sign rather than as the parity flag. You’ll be right for the 8080 though :-) Cheers!

Exclusive Interview With Ben Firshman, Creator of JSNES says: 15 October 2009 at 5:22 pm [...] I stumbled across Matt Westcott’s JSSpeccy and it sparked my imagination. I have a tendency to get trapped by overly ambitious projects, and a [...]

Greg says: 4 November 2009 at 9:02 am Awesome!!! Runs on my HTC Magic Android mobile :-)

Simon Richmond says: 20 December 2009 at 10:14 pm Since you asked it works well on Google Chrome Browser.

Paul says: 22 January 2010 at 12:30 pm Hi,

How do I install this on Android?

I have motorols droid….

matt says: 22 January 2010 at 11:28 pm Paul: There’s nothing to install – it just runs directly from the web page at jsspeccy.zxdemo.org. (Unless I’m getting the wrong end of the stick, and ‘installing’ a webpage so that you can view it offline is a standard practice on Android phones – in which case, I have no idea…)

Introducing Gordon: the Flash Player Written in JavaScript says: 2 February 2010 at 11:34 am [...] been used for a number of unusual projects in the past few years. We’ve had NES emulators, Spectrum emulators, and even Amiga emulators. But a Flash player?… What’s the point of emulating a [...]

Corrado says: 6 February 2010 at 1:20 pm Great for iPhone users !!!!! So, how can I use it with iPhone ? It works, but there is no keyboard… There is a workaround to brings up the virtual keyboard ? There is another way to use it with touch ? Think about that THIS emulator can be actually the ONLY ONE solution to emulate Speccy with a non-jailbroken iPhone…..

matt says: 6 February 2010 at 8:15 pm Nope, no virtual keyboard support… you need to use the ‘joystick’ icon to set up mappings between Spectrum keys and joystick directions, and then you can touch the appropriate areas of the screen to trigger those keys.

random says: 25 February 2010 at 10:04 pm doesn’t work on nexus one for some reason :(

Gary Newell says: 16 March 2010 at 9:20 pm This is pure genius. Didn’t think it was possible. Shows what I know

Alex says: 24 March 2010 at 12:18 am I loved the spectrum.

The concept of typing in text and playing a visual game was mindblowing at the time.

Introducing Gordon: the Flash Player Written in JavaScript | allphp.com says: 28 March 2010 at 5:00 am [...] been used for a number of unusual projects in the past few years. We’ve had NES emulators, Spectrum emulators, and even Amiga emulators. But a Flash player?… What’s the point of emulating a [...]

War of Browsers Chrome, Firefox, Opera, Safari and Internet Explorer | iTech Engine says: 29 March 2010 at 6:35 am [...] with this cool new emulator for the Nintendo Entertainment System inspired by Matt Westcott’s JSSpeccy which runs on the dual-power of JavaScript and HTML5’s Canvas element. While describing a [...]

mmwmm says: 21 September 2010 at 1:38 am Tried Manic miner, it runs way to slow on my browser, firefox. Nice simple setup though, click this, click that and your away.

Vanda Fiddler says: 14 December 2010 at 10:14 am Wow, this is just amazing :D Great work!

John Barker says: 15 December 2010 at 2:16 pm Ahhhhh!!!! the good old days… back to 1982 Sinclair research!!

I have actually still got a mint spectrum ready for when my games room is finished… I also have the divide + from rwapsoftware for which all those favorite games can be run from a compact flash card….

Manic Miner… I will complete that bugger one day!!!

Great Program!!

Thanks

Paul says: 21 March 2011 at 10:43 pm I just tried this on my Kindle. It works! Pretty slow though!

Hardware-Emulatoren in Browser « Jakoblog — Das Weblog von Jakob Voß says: 17 May 2011 at 10:48 pm [...] JSSpeccy (Sinclair ZX Spectrum) [...]

Richard says: 21 May 2011 at 10:14 pm Flipping heck mate, was that hard to write? Or have you got some kind of microcode to Javascript convertor?

Online ZX spectrum games « Mutant Technology says: 14 July 2011 at 9:57 am [...] games are all running within emulators, either written in Java, or amazingly, Javascript. The Javascript efforts are incredible in this ex-programmers estimation: ported from the open source Fuse Z80 emulator [...]

Mr.Starquake says: 30 March 2012 at 3:04 pm I’m ecstatic..just getting into browser-based games – speccy in js sounds like the best thing since the Sectrum+. Thanks so much.

Samir Ribic says: 8 April 2012 at 6:01 pm The famous Moore/Wirth law! 19 years ago Željko Juri? and me started to write Warajevo emulator in assembly language with GUI in Pascal. We had to check every microsecond to make the code as fast as possible. Many games were playable on 10MHz 80286 computer, and in 1999 I wrote Tezxas for 10MHz TI89 calculator.

Soon Warajevo became on 486 25MHz too fast and we introduced delay loop for synchronize.

But in Pentium age, there was wish to make emulators in C, then in Java, then in Visual Basic, … and usually these languages were slow for writing emulators on contemporary computers but after about 3 years they became acceptably fast.

Now we have emulator in JavaScript and the history repeats :)

Vintage Computing Anniversaries « devioblog says: 25 April 2012 at 5:47 am [...] then, computers have become bigger and fast enough that you can run a ZX Spectrum emulation in JavaScript in a browser on an operation system that requires a million times more disk space than the original [...]

Andrew says: 7 May 2012 at 4:03 pm Great thing!

I have a question about “z80_interrupt()”: … switch(IM) { … case 2: … inttemp &= 0xfff;

looks bit weird, should it be 0xffff ?

matt says: 10 May 2012 at 6:14 pm Andrew: Well spotted! Updated now… http://matt.west.co.tt/spectrum/jsspeccy-tiny-bugfix/

ashley says: 12 July 2012 at 1:49 pm great emulator, thanks! it’s the best, i don’t need to install anything, it just works

JSNES-JS??????? – Victor's Blog says: 10 March 2013 at 4:30 pm [...] Wescott?JSSpeccy???Ben Firshman???vNES?JavaScriptS??????JSNES???????canvas [...]

« Older Comments Leave a Reply Name (required) Mail (will not be published) (required) Website

matt.west.co.tt is proudly powered by WordPress Entries (RSS) and Comments (RSS).

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=zsjTpFR0oYQ

anyone help add hmpr bit 5&6 support to bmp2scr with interlaced mode 3 animations with masterbasic save mode 3 style intra frame compression please snapper discs velesoft site run 48k and one 128k program at 6mhz using external 1-4mb ram in sim coupe emulator for sam coupe needs masterdos booted first then snapper discs then option two on menu

think its the spelling of two that throws them...

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=zsjTpFR0oYQ

will try to post this link do you think it will work? £50 says it wont!

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

you wont let me post a comment is that right?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

let me have a look....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://matt.west.co.tt/spectrum/jsspeccy/

http://matt.west.co.tt/

is this your stuff?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

do you know how many zx spectrums sold? in total? think i found one article that was monthly best selling with no actual statistics bbc model B 1½million? commodore 64 25million?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

rogerjowett commented 11 years ago

ftp://ftp.worldofspectrum.org/pub/sinclair/games/f/F-16CombatPilot.tzx.zip&/file.gz?ep=4d3068384543636e45684559526c524e4346454f4531454a556a356e43464142536c6f445046344e5a68734462483831526d426166304a51556a3552566e6462646764764c47394a65514e695677784e5454356648516f49656c466d496b565a4441594b4345636359795a535a6c3833536c7779666b6c67644668794257525641673d3d&epile=4q6n41784q7n41304q546o784q5638344q5335725n586o3q&edata=33ba69df9ca7fcef8620ac7a62026485

load this as url into java speccy doesnt work can you see the tap tzx data blocks anywhere please i was hoping to have a bash at disasembling tascon+d is that ok

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

did you buy a speccy 2010? what is it exactly processor? video ram bits per pixel screen resolution palette of colours ability to add another processor/ram/video ram/processor with access to video ram/etc etc or entire new pcb just to get an extra 1% of the data transfer speed you are already paying for but not getting

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

yup there you go posted comment and luckily for me comment disappears so am i blocked? if i am then why cant anyone have the decency to let me know BEFORE I TYPE THE FUCKING COMMENT it really is fucking cunty to treat us this way im fucking sick of it youtube a million fucking messages ebay too oh ha ha ha this twat thinks he is going to ask someone something about the bullshit they are flogging....

matt.west.co.tt adventures of a retro electro media hacker type person « The Model (unplugged cover version)FreshBEEP » JSSpeccy: A ZX Spectrum emulator in Javascript I’m really typecasting myself here. If there were an international “Person most likely to write a Spectrum emulator in Javascript” award, I’d have taken it for the last five years running. So here it is – probably the most stereotypical project I’ll ever come up with.

Readme file Run JSSpeccy online (includes 10 classic games!) Download JSSpeccy (644Kb) JSSpeccy Subversion repository Writing this wasn’t actually such a big deal – the Z80 core was ported from the one in Fuse, with the Perl-and-C-preprocessor-munging trickery still intact, and Javascript is syntactically close enough to C that that wasn’t a mammoth task. (I got 90% of it done on the train journey back from International Vodka Party alongside recording silly songs about tube stations.) The one fiddly bit was working around the places where the Fuse code used low-level C constructs to its advantage: using unions to chop and change between individual registers and 16-bit register pairs, and relying on limited-size C data types (often in pretty subtle ways) to truncate 8-bit and 16-bit values at the right time, whereas Javascript only has integers. (Actually, the really time-consuming bit was debugging it all… luckily, Fuse has a rather excellent test suite too.)

The rest is just creative abuse of the element, as usual… it’ll take advantage of the putImageData interface to do the pixel pushing if available (on my machine Firefox has it, Safari doesn’t) and fall back on drawing 1×1 pixel rectangles otherwise. This time I’ve thrown in Google’s ExplorerCanvas as a nod to those poor unfortunates still stuck with Internet Explorer. Incidentally, I’d be curious to know how it rates on Google Chrome (I don’t have an XP/Vista box to test on) – if the hype is true (and it implements the putImageData interface like all good up-to-date browsers should) then I’d expect it to comfortably reach 100% Spectrum speed on modest hardware.

Belorussian translation of this post provided by movavi

This entry was posted on Sunday, October 19th, 2008 at 9:23 pm and is filed under Hacks, JSSpeccy, Javascript, Spectrum. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

96 Responses to “JSSpeccy: A ZX Spectrum emulator in Javascript” « Older Comments Phil Hackett says: 25 November 2008 at 11:55 am Insane! What a fundamentally bad idea. Good work, sir!

Pacific Tides » Scripted Emulators says: 4 December 2008 at 8:12 am [...] Z80 Speccy [...]

betacontinua » Emulando Spectrum en javascript says: 6 December 2008 at 8:01 am [...] nombre es JJSpeccy y ha sido creado por Matt West. Aquí podéis jugar online, o descargarlo y usarlo como queráis. [...]

Shazz says: 15 December 2008 at 2:53 pm Simply excellent !

Un par de emuladores retro | FACIL TUTORIALES says: 19 December 2008 at 10:21 pm [...] emulador online de Spectrum, que se puede usar desde el navegador (incluye diez juegos) o también descargar desde la página oficial (Vía [...]

Ajaxian » 2008: Awesome JavaScript says: 5 January 2009 at 12:39 pm [...] browser. Matt Westcott (who also made the Antisocial demo) pulled another rabbit out of the hat, JSSpeccy the ZX Spectrum emulator. That’s just way [...]

2008: Awesome JavaScript | How2Pc says: 5 January 2009 at 8:42 pm [...] browser. Matt Westcott (who also made the Antisocial demo) pulled another rabbit out of the hat, JSSpeccy the ZX Spectrum emulator. That’s just way [...]

JSSpeccy... | hilpers says: 17 January 2009 at 8:52 pm [...] Ciao a tutti, all’indirizzo http://matt.west.co.tt/spectrum/jsspeccy/ potete trovare un emulatore dello Spectrum scritto interamente in Javascript. Io lo trovo lento ed [...]

javascript - Emuforums.com says: 9 March 2009 at 10:34 am [...] Amiga in javascript http://www.chiptune.com/ ZX spectrum in javascript (JSSpeccy): http://matt.west.co.tt/spectrum/jsspeccy/ __ XTemu | GeneralEmu | Webcomics ……-.____ —( )_)___) -> [...]

JavaScriptå¼€å ‘æ¸¸æˆ » èƒ³è‚¢çª says: 13 March 2009 at 3:29 pm [...] Westcottåˆ›é€ çš„JSSpeccy the ZX Spectrum emulator 。 James Urquhart åˆ›é€ çš„SCUMM interpreter [...]

tom says: 27 April 2009 at 9:49 pm nice one. have you checked out the one I made (AS3) ? http://flexiblefactory.co.uk/spectrum

James C says: 11 May 2009 at 1:41 pm Probably the most impressive, amazing, awesome code I have seen so far this YEAR. (Together with http://flexiblefactory.co.uk/spectrum of course :))

Thank you both and congratulations for your efforts to convert your ideas into reality.

I would be interested to know if anyone’s had any success writing an Acorn BBC or Atari ST emulator in Javascript or similar? (I have seen http://atari.isource.net.nz).

Thanks and BEST regards, James

Aaron says: 31 July 2009 at 1:29 am It works great with chrome! good job..

En.dogeno.us – previous CaiLog » How-To » Gaming in your Chrome Browser – the power of V8 JavaScript Engine says: 17 September 2009 at 6:27 pm [...] few months ago, I stumbled across Matt Westcott’s excellent JSSpeccy. I had seen some pretty imaginative canvas creations, but Javascript emulators? What a perfect idea [...]

Seni konsoliniai (NES) žaidimai jÅ«sų narÅ¡yklÄ—je says: 18 September 2009 at 5:12 am [...] JavaScript pagalba. Projekto autoriui Ben Firshman kaip jis pats teigia gime perskaiÄ ius Matt Westcott straipsniukÄ… apie JSSpeccy bibliotekÄ…. Ben [...]

Daily Links #100 | CloudKnow says: 18 September 2009 at 8:38 am [...] A ZX Spectrum emulator in Javascript. Nothing like playing Super Mario and Contra in [...]

Cream Contras in Chrome | The Minority Report says: 18 September 2009 at 6:03 pm [...] you can. Check out this story! A few months ago, I stumbled across Matt Westcott’s excellent JSSpeccy. I had seen some pretty imaginative canvas creations, but Javascript emulators? What a perfect idea [...]

Alexander says: 28 September 2009 at 3:05 pm Cool! I was so impressed of your stuff so I have moved my old i8080 emulator to the JavaScript rails. The hardware is the 8-bit Russian computer based on i8080 named Radio-86RK.

The project site is http://code.google.com/p/radio86/

It is on Russian because that computer is 99% Russian ;-), but the direct link to the emulator (http://radio86.googlecode.com/files/radio86.html) actually gives a clue how it works like.

BTW, I’ve found a bit weird logic in your Z80 implementation. For example, a register increment:

Your implementation is:

case 0x0c: { (z80.c) = ((z80.c) + 1) & 0xff; z80.f = ( z80.f & 0×01 ) | ( (z80.c)==0×80 ? 0×04 : 0 ) | ( (z80.c)&0x0f ? 0 : 0×10 ) | sz53_table[(z80.c)];};

So I’ve got rid of weird calculation of the parity flag — “( (z80.c)==0×80 ? 0×04 : 0 )” and just use “sz53p_table” instead of “sz53_table” to calculate the parity flag.

I guess maybe for Z80 it is correct but for I8080 it should be like this:

case 0x0c: // inr c i8080.tstates += 5; i8080.c = (i8080.c + 1) & 0xff; i8080.f = (i8080.f & 0×01) | (i8080.c & 0x0f ? 0 : 0×10) | sz53p_table[i8080.c]; break;

So I had to change the register increment and decrement routines (INR x and DCR x in I8080 notation).

Maybe it could be useful for you.

Anyway, thanks for idea.

Philip Kendall says: 28 September 2009 at 6:42 pm Alexander: more my implementation (as part of Fuse) than Matt’s really, and it’s right for the Z80: in this case it’s acting as the oVerflow flag to indicate a change of sign rather than as the parity flag. You’ll be right for the 8080 though :-) Cheers!

Exclusive Interview With Ben Firshman, Creator of JSNES says: 15 October 2009 at 5:22 pm [...] I stumbled across Matt Westcott’s JSSpeccy and it sparked my imagination. I have a tendency to get trapped by overly ambitious projects, and a [...]

Greg says: 4 November 2009 at 9:02 am Awesome!!! Runs on my HTC Magic Android mobile :-)

Simon Richmond says: 20 December 2009 at 10:14 pm Since you asked it works well on Google Chrome Browser.

Paul says: 22 January 2010 at 12:30 pm Hi,

How do I install this on Android?

I have motorols droid….

matt says: 22 January 2010 at 11:28 pm Paul: There’s nothing to install – it just runs directly from the web page at jsspeccy.zxdemo.org. (Unless I’m getting the wrong end of the stick, and ‘installing’ a webpage so that you can view it offline is a standard practice on Android phones – in which case, I have no idea…)

Introducing Gordon: the Flash Player Written in JavaScript says: 2 February 2010 at 11:34 am [...] been used for a number of unusual projects in the past few years. We’ve had NES emulators, Spectrum emulators, and even Amiga emulators. But a Flash player?… What’s the point of emulating a [...]

Corrado says: 6 February 2010 at 1:20 pm Great for iPhone users !!!!! So, how can I use it with iPhone ? It works, but there is no keyboard… There is a workaround to brings up the virtual keyboard ? There is another way to use it with touch ? Think about that THIS emulator can be actually the ONLY ONE solution to emulate Speccy with a non-jailbroken iPhone…..

matt says: 6 February 2010 at 8:15 pm Nope, no virtual keyboard support… you need to use the ‘joystick’ icon to set up mappings between Spectrum keys and joystick directions, and then you can touch the appropriate areas of the screen to trigger those keys.

random says: 25 February 2010 at 10:04 pm doesn’t work on nexus one for some reason :(

Gary Newell says: 16 March 2010 at 9:20 pm This is pure genius. Didn’t think it was possible. Shows what I know

Alex says: 24 March 2010 at 12:18 am I loved the spectrum.

The concept of typing in text and playing a visual game was mindblowing at the time.

Introducing Gordon: the Flash Player Written in JavaScript | allphp.com says: 28 March 2010 at 5:00 am [...] been used for a number of unusual projects in the past few years. We’ve had NES emulators, Spectrum emulators, and even Amiga emulators. But a Flash player?… What’s the point of emulating a [...]

War of Browsers Chrome, Firefox, Opera, Safari and Internet Explorer | iTech Engine says: 29 March 2010 at 6:35 am [...] with this cool new emulator for the Nintendo Entertainment System inspired by Matt Westcott’s JSSpeccy which runs on the dual-power of JavaScript and HTML5’s Canvas element. While describing a [...]

mmwmm says: 21 September 2010 at 1:38 am Tried Manic miner, it runs way to slow on my browser, firefox. Nice simple setup though, click this, click that and your away.

Vanda Fiddler says: 14 December 2010 at 10:14 am Wow, this is just amazing :D Great work!

John Barker says: 15 December 2010 at 2:16 pm Ahhhhh!!!! the good old days… back to 1982 Sinclair research!!

I have actually still got a mint spectrum ready for when my games room is finished… I also have the divide + from rwapsoftware for which all those favorite games can be run from a compact flash card….

Manic Miner… I will complete that bugger one day!!!

Great Program!!

Thanks

Paul says: 21 March 2011 at 10:43 pm I just tried this on my Kindle. It works! Pretty slow though!

Hardware-Emulatoren in Browser « Jakoblog — Das Weblog von Jakob Voß says: 17 May 2011 at 10:48 pm [...] JSSpeccy (Sinclair ZX Spectrum) [...]

Richard says: 21 May 2011 at 10:14 pm Flipping heck mate, was that hard to write? Or have you got some kind of microcode to Javascript convertor?

Online ZX spectrum games « Mutant Technology says: 14 July 2011 at 9:57 am [...] games are all running within emulators, either written in Java, or amazingly, Javascript. The Javascript efforts are incredible in this ex-programmers estimation: ported from the open source Fuse Z80 emulator [...]

Mr.Starquake says: 30 March 2012 at 3:04 pm I’m ecstatic..just getting into browser-based games – speccy in js sounds like the best thing since the Sectrum+. Thanks so much.

Samir Ribic says: 8 April 2012 at 6:01 pm The famous Moore/Wirth law! 19 years ago Željko Juri? and me started to write Warajevo emulator in assembly language with GUI in Pascal. We had to check every microsecond to make the code as fast as possible. Many games were playable on 10MHz 80286 computer, and in 1999 I wrote Tezxas for 10MHz TI89 calculator.

Soon Warajevo became on 486 25MHz too fast and we introduced delay loop for synchronize.

But in Pentium age, there was wish to make emulators in C, then in Java, then in Visual Basic, … and usually these languages were slow for writing emulators on contemporary computers but after about 3 years they became acceptably fast.

Now we have emulator in JavaScript and the history repeats :)

Vintage Computing Anniversaries « devioblog says: 25 April 2012 at 5:47 am [...] then, computers have become bigger and fast enough that you can run a ZX Spectrum emulation in JavaScript in a browser on an operation system that requires a million times more disk space than the original [...]

Andrew says: 7 May 2012 at 4:03 pm Great thing!

I have a question about “z80_interrupt()”: … switch(IM) { … case 2: … inttemp &= 0xfff;

looks bit weird, should it be 0xffff ?

matt says: 10 May 2012 at 6:14 pm Andrew: Well spotted! Updated now… http://matt.west.co.tt/spectrum/jsspeccy-tiny-bugfix/

ashley says: 12 July 2012 at 1:49 pm great emulator, thanks! it’s the best, i don’t need to install anything, it just works

JSNES-JS??????? – Victor's Blog says: 10 March 2013 at 4:30 pm [...] Wescott?JSSpeccy???Ben Firshman???vNES?JavaScriptS??????JSNES???????canvas [...]

« Older Comments Leave a Reply Name (required) Mail (will not be published) (required) Website

matt.west.co.tt is proudly powered by WordPress Entries (RSS) and Comments (RSS).

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=zsjTpFR0oYQ

anyone help add hmpr bit 5&6 support to bmp2scr with interlaced mode 3 animations with masterbasic save mode 3 style intra frame compression please snapper discs velesoft site run 48k and one 128k program at 6mhz using external 1-4mb ram in sim coupe emulator for sam coupe needs masterdos booted first then snapper discs then option two on menu

think its the spelling of two that throws them...

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=zsjTpFR0oYQ

will try to post this link do you think it will work? £50 says it wont!

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

you wont let me post a comment is that right?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

let me have a look....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://matt.west.co.tt/spectrum/jsspeccy/

http://matt.west.co.tt/

is this your stuff?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

do you know how many zx spectrums sold? in total? think i found one article that was monthly best selling with no actual statistics bbc model B 1½million? commodore 64 25million?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

rogerjowett commented 11 years ago

why bother opening the editing page or even offering to open it if im fucking blcoked this is fucking pointelss everying online is arse about youc ant be bothered to show the cost of calling people or the fact that we pay for a service that we get less than 1-10% of what we are paying for these fuckers are online crooks Create accountLog inArticleTalkReadEditView history

Main page Contents Featured content Current events Random article Donate to Wikipedia Interaction Help About Wikipedia Community portal Recent changes Contact Wikipedia Toolbox Privacy policyAbout WikipediaDisclaimersContact WikipediaMobile view Return to SAM Coupé.

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

ftp://ftp.worldofspectrum.org/pub/sinclair/games/f/F-16CombatPilot.tzx.zip&/file.gz?ep=4d3068384543636e45684559526c524e4346454f4531454a556a356e43464142536c6f445046344e5a68734462483831526d426166304a51556a3552566e6462646764764c47394a65514e695677784e5454356648516f49656c466d496b565a4441594b4345636359795a535a6c3833536c7779666b6c67644668794257525641673d3d&epile=4q6n41784q7n41304q546o784q5638344q5335725n586o3q&edata=33ba69df9ca7fcef8620ac7a62026485

load this as url into java speccy doesnt work can you see the tap tzx data blocks anywhere please i was hoping to have a bash at disasembling tascon+d is that ok

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

did you buy a speccy 2010? what is it exactly processor? video ram bits per pixel screen resolution palette of colours ability to add another processor/ram/video ram/processor with access to video ram/etc etc or entire new pcb just to get an extra 1% of the data transfer speed you are already paying for but not getting

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

yup there you go posted comment and luckily for me comment disappears so am i blocked? if i am then why cant anyone have the decency to let me know BEFORE I TYPE THE FUCKING COMMENT it really is fucking cunty to treat us this way im fucking sick of it youtube a million fucking messages ebay too oh ha ha ha this twat thinks he is going to ask someone something about the bullshit they are flogging....

matt.west.co.tt adventures of a retro electro media hacker type person « The Model (unplugged cover version)FreshBEEP » JSSpeccy: A ZX Spectrum emulator in Javascript I’m really typecasting myself here. If there were an international “Person most likely to write a Spectrum emulator in Javascript” award, I’d have taken it for the last five years running. So here it is – probably the most stereotypical project I’ll ever come up with.

Readme file Run JSSpeccy online (includes 10 classic games!) Download JSSpeccy (644Kb) JSSpeccy Subversion repository Writing this wasn’t actually such a big deal – the Z80 core was ported from the one in Fuse, with the Perl-and-C-preprocessor-munging trickery still intact, and Javascript is syntactically close enough to C that that wasn’t a mammoth task. (I got 90% of it done on the train journey back from International Vodka Party alongside recording silly songs about tube stations.) The one fiddly bit was working around the places where the Fuse code used low-level C constructs to its advantage: using unions to chop and change between individual registers and 16-bit register pairs, and relying on limited-size C data types (often in pretty subtle ways) to truncate 8-bit and 16-bit values at the right time, whereas Javascript only has integers. (Actually, the really time-consuming bit was debugging it all… luckily, Fuse has a rather excellent test suite too.)

The rest is just creative abuse of the element, as usual… it’ll take advantage of the putImageData interface to do the pixel pushing if available (on my machine Firefox has it, Safari doesn’t) and fall back on drawing 1×1 pixel rectangles otherwise. This time I’ve thrown in Google’s ExplorerCanvas as a nod to those poor unfortunates still stuck with Internet Explorer. Incidentally, I’d be curious to know how it rates on Google Chrome (I don’t have an XP/Vista box to test on) – if the hype is true (and it implements the putImageData interface like all good up-to-date browsers should) then I’d expect it to comfortably reach 100% Spectrum speed on modest hardware.

Belorussian translation of this post provided by movavi

This entry was posted on Sunday, October 19th, 2008 at 9:23 pm and is filed under Hacks, JSSpeccy, Javascript, Spectrum. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

96 Responses to “JSSpeccy: A ZX Spectrum emulator in Javascript” « Older Comments Phil Hackett says: 25 November 2008 at 11:55 am Insane! What a fundamentally bad idea. Good work, sir!

Pacific Tides » Scripted Emulators says: 4 December 2008 at 8:12 am [...] Z80 Speccy [...]

betacontinua » Emulando Spectrum en javascript says: 6 December 2008 at 8:01 am [...] nombre es JJSpeccy y ha sido creado por Matt West. Aquí podéis jugar online, o descargarlo y usarlo como queráis. [...]

Shazz says: 15 December 2008 at 2:53 pm Simply excellent !

Un par de emuladores retro | FACIL TUTORIALES says: 19 December 2008 at 10:21 pm [...] emulador online de Spectrum, que se puede usar desde el navegador (incluye diez juegos) o también descargar desde la página oficial (Vía [...]

Ajaxian » 2008: Awesome JavaScript says: 5 January 2009 at 12:39 pm [...] browser. Matt Westcott (who also made the Antisocial demo) pulled another rabbit out of the hat, JSSpeccy the ZX Spectrum emulator. That’s just way [...]

2008: Awesome JavaScript | How2Pc says: 5 January 2009 at 8:42 pm [...] browser. Matt Westcott (who also made the Antisocial demo) pulled another rabbit out of the hat, JSSpeccy the ZX Spectrum emulator. That’s just way [...]

JSSpeccy... | hilpers says: 17 January 2009 at 8:52 pm [...] Ciao a tutti, all’indirizzo http://matt.west.co.tt/spectrum/jsspeccy/ potete trovare un emulatore dello Spectrum scritto interamente in Javascript. Io lo trovo lento ed [...]

javascript - Emuforums.com says: 9 March 2009 at 10:34 am [...] Amiga in javascript http://www.chiptune.com/ ZX spectrum in javascript (JSSpeccy): http://matt.west.co.tt/spectrum/jsspeccy/ __ XTemu | GeneralEmu | Webcomics ……-.____ —( )_)___) -> [...]

JavaScriptå¼€å ‘æ¸¸æˆ » èƒ³è‚¢çª says: 13 March 2009 at 3:29 pm [...] Westcottåˆ›é€ çš„JSSpeccy the ZX Spectrum emulator 。 James Urquhart åˆ›é€ çš„SCUMM interpreter [...]

tom says: 27 April 2009 at 9:49 pm nice one. have you checked out the one I made (AS3) ? http://flexiblefactory.co.uk/spectrum

James C says: 11 May 2009 at 1:41 pm Probably the most impressive, amazing, awesome code I have seen so far this YEAR. (Together with http://flexiblefactory.co.uk/spectrum of course :))

Thank you both and congratulations for your efforts to convert your ideas into reality.

I would be interested to know if anyone’s had any success writing an Acorn BBC or Atari ST emulator in Javascript or similar? (I have seen http://atari.isource.net.nz).

Thanks and BEST regards, James

Aaron says: 31 July 2009 at 1:29 am It works great with chrome! good job..

En.dogeno.us – previous CaiLog » How-To » Gaming in your Chrome Browser – the power of V8 JavaScript Engine says: 17 September 2009 at 6:27 pm [...] few months ago, I stumbled across Matt Westcott’s excellent JSSpeccy. I had seen some pretty imaginative canvas creations, but Javascript emulators? What a perfect idea [...]

Seni konsoliniai (NES) žaidimai jÅ«sų narÅ¡yklÄ—je says: 18 September 2009 at 5:12 am [...] JavaScript pagalba. Projekto autoriui Ben Firshman kaip jis pats teigia gime perskaiÄ ius Matt Westcott straipsniukÄ… apie JSSpeccy bibliotekÄ…. Ben [...]

Daily Links #100 | CloudKnow says: 18 September 2009 at 8:38 am [...] A ZX Spectrum emulator in Javascript. Nothing like playing Super Mario and Contra in [...]

Cream Contras in Chrome | The Minority Report says: 18 September 2009 at 6:03 pm [...] you can. Check out this story! A few months ago, I stumbled across Matt Westcott’s excellent JSSpeccy. I had seen some pretty imaginative canvas creations, but Javascript emulators? What a perfect idea [...]

Alexander says: 28 September 2009 at 3:05 pm Cool! I was so impressed of your stuff so I have moved my old i8080 emulator to the JavaScript rails. The hardware is the 8-bit Russian computer based on i8080 named Radio-86RK.

The project site is http://code.google.com/p/radio86/

It is on Russian because that computer is 99% Russian ;-), but the direct link to the emulator (http://radio86.googlecode.com/files/radio86.html) actually gives a clue how it works like.

BTW, I’ve found a bit weird logic in your Z80 implementation. For example, a register increment:

Your implementation is:

case 0x0c: { (z80.c) = ((z80.c) + 1) & 0xff; z80.f = ( z80.f & 0×01 ) | ( (z80.c)==0×80 ? 0×04 : 0 ) | ( (z80.c)&0x0f ? 0 : 0×10 ) | sz53_table[(z80.c)];};

So I’ve got rid of weird calculation of the parity flag — “( (z80.c)==0×80 ? 0×04 : 0 )” and just use “sz53p_table” instead of “sz53_table” to calculate the parity flag.

I guess maybe for Z80 it is correct but for I8080 it should be like this:

case 0x0c: // inr c i8080.tstates += 5; i8080.c = (i8080.c + 1) & 0xff; i8080.f = (i8080.f & 0×01) | (i8080.c & 0x0f ? 0 : 0×10) | sz53p_table[i8080.c]; break;

So I had to change the register increment and decrement routines (INR x and DCR x in I8080 notation).

Maybe it could be useful for you.

Anyway, thanks for idea.

Philip Kendall says: 28 September 2009 at 6:42 pm Alexander: more my implementation (as part of Fuse) than Matt’s really, and it’s right for the Z80: in this case it’s acting as the oVerflow flag to indicate a change of sign rather than as the parity flag. You’ll be right for the 8080 though :-) Cheers!

Exclusive Interview With Ben Firshman, Creator of JSNES says: 15 October 2009 at 5:22 pm [...] I stumbled across Matt Westcott’s JSSpeccy and it sparked my imagination. I have a tendency to get trapped by overly ambitious projects, and a [...]

Greg says: 4 November 2009 at 9:02 am Awesome!!! Runs on my HTC Magic Android mobile :-)

Simon Richmond says: 20 December 2009 at 10:14 pm Since you asked it works well on Google Chrome Browser.

Paul says: 22 January 2010 at 12:30 pm Hi,

How do I install this on Android?

I have motorols droid….

matt says: 22 January 2010 at 11:28 pm Paul: There’s nothing to install – it just runs directly from the web page at jsspeccy.zxdemo.org. (Unless I’m getting the wrong end of the stick, and ‘installing’ a webpage so that you can view it offline is a standard practice on Android phones – in which case, I have no idea…)

Introducing Gordon: the Flash Player Written in JavaScript says: 2 February 2010 at 11:34 am [...] been used for a number of unusual projects in the past few years. We’ve had NES emulators, Spectrum emulators, and even Amiga emulators. But a Flash player?… What’s the point of emulating a [...]

Corrado says: 6 February 2010 at 1:20 pm Great for iPhone users !!!!! So, how can I use it with iPhone ? It works, but there is no keyboard… There is a workaround to brings up the virtual keyboard ? There is another way to use it with touch ? Think about that THIS emulator can be actually the ONLY ONE solution to emulate Speccy with a non-jailbroken iPhone…..

matt says: 6 February 2010 at 8:15 pm Nope, no virtual keyboard support… you need to use the ‘joystick’ icon to set up mappings between Spectrum keys and joystick directions, and then you can touch the appropriate areas of the screen to trigger those keys.

random says: 25 February 2010 at 10:04 pm doesn’t work on nexus one for some reason :(

Gary Newell says: 16 March 2010 at 9:20 pm This is pure genius. Didn’t think it was possible. Shows what I know

Alex says: 24 March 2010 at 12:18 am I loved the spectrum.

The concept of typing in text and playing a visual game was mindblowing at the time.

Introducing Gordon: the Flash Player Written in JavaScript | allphp.com says: 28 March 2010 at 5:00 am [...] been used for a number of unusual projects in the past few years. We’ve had NES emulators, Spectrum emulators, and even Amiga emulators. But a Flash player?… What’s the point of emulating a [...]

War of Browsers Chrome, Firefox, Opera, Safari and Internet Explorer | iTech Engine says: 29 March 2010 at 6:35 am [...] with this cool new emulator for the Nintendo Entertainment System inspired by Matt Westcott’s JSSpeccy which runs on the dual-power of JavaScript and HTML5’s Canvas element. While describing a [...]

mmwmm says: 21 September 2010 at 1:38 am Tried Manic miner, it runs way to slow on my browser, firefox. Nice simple setup though, click this, click that and your away.

Vanda Fiddler says: 14 December 2010 at 10:14 am Wow, this is just amazing :D Great work!

John Barker says: 15 December 2010 at 2:16 pm Ahhhhh!!!! the good old days… back to 1982 Sinclair research!!

I have actually still got a mint spectrum ready for when my games room is finished… I also have the divide + from rwapsoftware for which all those favorite games can be run from a compact flash card….

Manic Miner… I will complete that bugger one day!!!

Great Program!!

Thanks

Paul says: 21 March 2011 at 10:43 pm I just tried this on my Kindle. It works! Pretty slow though!

Hardware-Emulatoren in Browser « Jakoblog — Das Weblog von Jakob Voß says: 17 May 2011 at 10:48 pm [...] JSSpeccy (Sinclair ZX Spectrum) [...]

Richard says: 21 May 2011 at 10:14 pm Flipping heck mate, was that hard to write? Or have you got some kind of microcode to Javascript convertor?

Online ZX spectrum games « Mutant Technology says: 14 July 2011 at 9:57 am [...] games are all running within emulators, either written in Java, or amazingly, Javascript. The Javascript efforts are incredible in this ex-programmers estimation: ported from the open source Fuse Z80 emulator [...]

Mr.Starquake says: 30 March 2012 at 3:04 pm I’m ecstatic..just getting into browser-based games – speccy in js sounds like the best thing since the Sectrum+. Thanks so much.

Samir Ribic says: 8 April 2012 at 6:01 pm The famous Moore/Wirth law! 19 years ago Željko Juri? and me started to write Warajevo emulator in assembly language with GUI in Pascal. We had to check every microsecond to make the code as fast as possible. Many games were playable on 10MHz 80286 computer, and in 1999 I wrote Tezxas for 10MHz TI89 calculator.

Soon Warajevo became on 486 25MHz too fast and we introduced delay loop for synchronize.

But in Pentium age, there was wish to make emulators in C, then in Java, then in Visual Basic, … and usually these languages were slow for writing emulators on contemporary computers but after about 3 years they became acceptably fast.

Now we have emulator in JavaScript and the history repeats :)

Vintage Computing Anniversaries « devioblog says: 25 April 2012 at 5:47 am [...] then, computers have become bigger and fast enough that you can run a ZX Spectrum emulation in JavaScript in a browser on an operation system that requires a million times more disk space than the original [...]

Andrew says: 7 May 2012 at 4:03 pm Great thing!

I have a question about “z80_interrupt()”: … switch(IM) { … case 2: … inttemp &= 0xfff;

looks bit weird, should it be 0xffff ?

matt says: 10 May 2012 at 6:14 pm Andrew: Well spotted! Updated now… http://matt.west.co.tt/spectrum/jsspeccy-tiny-bugfix/

ashley says: 12 July 2012 at 1:49 pm great emulator, thanks! it’s the best, i don’t need to install anything, it just works

JSNES-JS??????? – Victor's Blog says: 10 March 2013 at 4:30 pm [...] Wescott?JSSpeccy???Ben Firshman???vNES?JavaScriptS??????JSNES???????canvas [...]

« Older Comments Leave a Reply Name (required) Mail (will not be published) (required) Website

matt.west.co.tt is proudly powered by WordPress Entries (RSS) and Comments (RSS).

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=zsjTpFR0oYQ

anyone help add hmpr bit 5&6 support to bmp2scr with interlaced mode 3 animations with masterbasic save mode 3 style intra frame compression please snapper discs velesoft site run 48k and one 128k program at 6mhz using external 1-4mb ram in sim coupe emulator for sam coupe needs masterdos booted first then snapper discs then option two on menu

think its the spelling of two that throws them...

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=zsjTpFR0oYQ

will try to post this link do you think it will work? £50 says it wont!

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

you wont let me post a comment is that right?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

let me have a look....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://matt.west.co.tt/spectrum/jsspeccy/

http://matt.west.co.tt/

is this your stuff?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

do you know how many zx spectrums sold? in total? think i found one article that was monthly best selling with no actual statistics bbc model B 1½million? commodore 64 25million?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

rogerjowett commented 11 years ago

so that is elite running on the 128k? it doesn't use the second video ram shadow screen or the second one the spectra interface provides it cant use the fdd3000 4mhz z80 with 64k of ram and though the micro command has a z80 with only 2kb rom&ram its impossible to use that as a coprocessor like the one in the PDS which might have a serial port but even if ti does it is not even worth trying to connect it to the fdd3000.... that is three z80 processors going begging and no one can be bothered to use them cpm installs on the fdd3000 and ignores the fact that the timex also has a z80 or if it was possible to connect the fdd3000 to a speccy

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

why bother opening the editing page or even offering to open it if im fucking blcoked this is fucking pointelss everying online is arse about youc ant be bothered to show the cost of calling people or the fact that we pay for a service that we get less than 1-10% of what we are paying for these fuckers are online crooks Create accountLog inArticleTalkReadEditView history

Main page Contents Featured content Current events Random article Donate to Wikipedia Interaction Help About Wikipedia Community portal Recent changes Contact Wikipedia Toolbox Privacy policyAbout WikipediaDisclaimersContact WikipediaMobile view Return to SAM Coupé.

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

ftp://ftp.worldofspectrum.org/pub/sinclair/games/f/F-16CombatPilot.tzx.zip&/file.gz?ep=4d3068384543636e45684559526c524e4346454f4531454a556a356e43464142536c6f445046344e5a68734462483831526d426166304a51556a3552566e6462646764764c47394a65514e695677784e5454356648516f49656c466d496b565a4441594b4345636359795a535a6c3833536c7779666b6c67644668794257525641673d3d&epile=4q6n41784q7n41304q546o784q5638344q5335725n586o3q&edata=33ba69df9ca7fcef8620ac7a62026485

load this as url into java speccy doesnt work can you see the tap tzx data blocks anywhere please i was hoping to have a bash at disasembling tascon+d is that ok

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

did you buy a speccy 2010? what is it exactly processor? video ram bits per pixel screen resolution palette of colours ability to add another processor/ram/video ram/processor with access to video ram/etc etc or entire new pcb just to get an extra 1% of the data transfer speed you are already paying for but not getting

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

yup there you go posted comment and luckily for me comment disappears so am i blocked? if i am then why cant anyone have the decency to let me know BEFORE I TYPE THE FUCKING COMMENT it really is fucking cunty to treat us this way im fucking sick of it youtube a million fucking messages ebay too oh ha ha ha this twat thinks he is going to ask someone something about the bullshit they are flogging....

matt.west.co.tt adventures of a retro electro media hacker type person « The Model (unplugged cover version)FreshBEEP » JSSpeccy: A ZX Spectrum emulator in Javascript I’m really typecasting myself here. If there were an international “Person most likely to write a Spectrum emulator in Javascript” award, I’d have taken it for the last five years running. So here it is – probably the most stereotypical project I’ll ever come up with.

Readme file Run JSSpeccy online (includes 10 classic games!) Download JSSpeccy (644Kb) JSSpeccy Subversion repository Writing this wasn’t actually such a big deal – the Z80 core was ported from the one in Fuse, with the Perl-and-C-preprocessor-munging trickery still intact, and Javascript is syntactically close enough to C that that wasn’t a mammoth task. (I got 90% of it done on the train journey back from International Vodka Party alongside recording silly songs about tube stations.) The one fiddly bit was working around the places where the Fuse code used low-level C constructs to its advantage: using unions to chop and change between individual registers and 16-bit register pairs, and relying on limited-size C data types (often in pretty subtle ways) to truncate 8-bit and 16-bit values at the right time, whereas Javascript only has integers. (Actually, the really time-consuming bit was debugging it all… luckily, Fuse has a rather excellent test suite too.)

The rest is just creative abuse of the element, as usual… it’ll take advantage of the putImageData interface to do the pixel pushing if available (on my machine Firefox has it, Safari doesn’t) and fall back on drawing 1×1 pixel rectangles otherwise. This time I’ve thrown in Google’s ExplorerCanvas as a nod to those poor unfortunates still stuck with Internet Explorer. Incidentally, I’d be curious to know how it rates on Google Chrome (I don’t have an XP/Vista box to test on) – if the hype is true (and it implements the putImageData interface like all good up-to-date browsers should) then I’d expect it to comfortably reach 100% Spectrum speed on modest hardware.

Belorussian translation of this post provided by movavi

This entry was posted on Sunday, October 19th, 2008 at 9:23 pm and is filed under Hacks, JSSpeccy, Javascript, Spectrum. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

96 Responses to “JSSpeccy: A ZX Spectrum emulator in Javascript” « Older Comments Phil Hackett says: 25 November 2008 at 11:55 am Insane! What a fundamentally bad idea. Good work, sir!

Pacific Tides » Scripted Emulators says: 4 December 2008 at 8:12 am [...] Z80 Speccy [...]

betacontinua » Emulando Spectrum en javascript says: 6 December 2008 at 8:01 am [...] nombre es JJSpeccy y ha sido creado por Matt West. Aquí podéis jugar online, o descargarlo y usarlo como queráis. [...]

Shazz says: 15 December 2008 at 2:53 pm Simply excellent !

Un par de emuladores retro | FACIL TUTORIALES says: 19 December 2008 at 10:21 pm [...] emulador online de Spectrum, que se puede usar desde el navegador (incluye diez juegos) o también descargar desde la página oficial (Vía [...]

Ajaxian » 2008: Awesome JavaScript says: 5 January 2009 at 12:39 pm [...] browser. Matt Westcott (who also made the Antisocial demo) pulled another rabbit out of the hat, JSSpeccy the ZX Spectrum emulator. That’s just way [...]

2008: Awesome JavaScript | How2Pc says: 5 January 2009 at 8:42 pm [...] browser. Matt Westcott (who also made the Antisocial demo) pulled another rabbit out of the hat, JSSpeccy the ZX Spectrum emulator. That’s just way [...]

JSSpeccy... | hilpers says: 17 January 2009 at 8:52 pm [...] Ciao a tutti, all’indirizzo http://matt.west.co.tt/spectrum/jsspeccy/ potete trovare un emulatore dello Spectrum scritto interamente in Javascript. Io lo trovo lento ed [...]

javascript - Emuforums.com says: 9 March 2009 at 10:34 am [...] Amiga in javascript http://www.chiptune.com/ ZX spectrum in javascript (JSSpeccy): http://matt.west.co.tt/spectrum/jsspeccy/ __ XTemu | GeneralEmu | Webcomics ……-.____ —( )_)___) -> [...]

JavaScriptå¼€å ‘æ¸¸æˆ » èƒ³è‚¢çª says: 13 March 2009 at 3:29 pm [...] Westcottåˆ›é€ çš„JSSpeccy the ZX Spectrum emulator 。 James Urquhart åˆ›é€ çš„SCUMM interpreter [...]

tom says: 27 April 2009 at 9:49 pm nice one. have you checked out the one I made (AS3) ? http://flexiblefactory.co.uk/spectrum

James C says: 11 May 2009 at 1:41 pm Probably the most impressive, amazing, awesome code I have seen so far this YEAR. (Together with http://flexiblefactory.co.uk/spectrum of course :))

Thank you both and congratulations for your efforts to convert your ideas into reality.

I would be interested to know if anyone’s had any success writing an Acorn BBC or Atari ST emulator in Javascript or similar? (I have seen http://atari.isource.net.nz).

Thanks and BEST regards, James

Aaron says: 31 July 2009 at 1:29 am It works great with chrome! good job..

En.dogeno.us – previous CaiLog » How-To » Gaming in your Chrome Browser – the power of V8 JavaScript Engine says: 17 September 2009 at 6:27 pm [...] few months ago, I stumbled across Matt Westcott’s excellent JSSpeccy. I had seen some pretty imaginative canvas creations, but Javascript emulators? What a perfect idea [...]

Seni konsoliniai (NES) žaidimai jÅ«sų narÅ¡yklÄ—je says: 18 September 2009 at 5:12 am [...] JavaScript pagalba. Projekto autoriui Ben Firshman kaip jis pats teigia gime perskaiÄ ius Matt Westcott straipsniukÄ… apie JSSpeccy bibliotekÄ…. Ben [...]

Daily Links #100 | CloudKnow says: 18 September 2009 at 8:38 am [...] A ZX Spectrum emulator in Javascript. Nothing like playing Super Mario and Contra in [...]

Cream Contras in Chrome | The Minority Report says: 18 September 2009 at 6:03 pm [...] you can. Check out this story! A few months ago, I stumbled across Matt Westcott’s excellent JSSpeccy. I had seen some pretty imaginative canvas creations, but Javascript emulators? What a perfect idea [...]

Alexander says: 28 September 2009 at 3:05 pm Cool! I was so impressed of your stuff so I have moved my old i8080 emulator to the JavaScript rails. The hardware is the 8-bit Russian computer based on i8080 named Radio-86RK.

The project site is http://code.google.com/p/radio86/

It is on Russian because that computer is 99% Russian ;-), but the direct link to the emulator (http://radio86.googlecode.com/files/radio86.html) actually gives a clue how it works like.

BTW, I’ve found a bit weird logic in your Z80 implementation. For example, a register increment:

Your implementation is:

case 0x0c: { (z80.c) = ((z80.c) + 1) & 0xff; z80.f = ( z80.f & 0×01 ) | ( (z80.c)==0×80 ? 0×04 : 0 ) | ( (z80.c)&0x0f ? 0 : 0×10 ) | sz53_table[(z80.c)];};

So I’ve got rid of weird calculation of the parity flag — “( (z80.c)==0×80 ? 0×04 : 0 )” and just use “sz53p_table” instead of “sz53_table” to calculate the parity flag.

I guess maybe for Z80 it is correct but for I8080 it should be like this:

case 0x0c: // inr c i8080.tstates += 5; i8080.c = (i8080.c + 1) & 0xff; i8080.f = (i8080.f & 0×01) | (i8080.c & 0x0f ? 0 : 0×10) | sz53p_table[i8080.c]; break;

So I had to change the register increment and decrement routines (INR x and DCR x in I8080 notation).

Maybe it could be useful for you.

Anyway, thanks for idea.

Philip Kendall says: 28 September 2009 at 6:42 pm Alexander: more my implementation (as part of Fuse) than Matt’s really, and it’s right for the Z80: in this case it’s acting as the oVerflow flag to indicate a change of sign rather than as the parity flag. You’ll be right for the 8080 though :-) Cheers!

Exclusive Interview With Ben Firshman, Creator of JSNES says: 15 October 2009 at 5:22 pm [...] I stumbled across Matt Westcott’s JSSpeccy and it sparked my imagination. I have a tendency to get trapped by overly ambitious projects, and a [...]

Greg says: 4 November 2009 at 9:02 am Awesome!!! Runs on my HTC Magic Android mobile :-)

Simon Richmond says: 20 December 2009 at 10:14 pm Since you asked it works well on Google Chrome Browser.

Paul says: 22 January 2010 at 12:30 pm Hi,

How do I install this on Android?

I have motorols droid….

matt says: 22 January 2010 at 11:28 pm Paul: There’s nothing to install – it just runs directly from the web page at jsspeccy.zxdemo.org. (Unless I’m getting the wrong end of the stick, and ‘installing’ a webpage so that you can view it offline is a standard practice on Android phones – in which case, I have no idea…)

Introducing Gordon: the Flash Player Written in JavaScript says: 2 February 2010 at 11:34 am [...] been used for a number of unusual projects in the past few years. We’ve had NES emulators, Spectrum emulators, and even Amiga emulators. But a Flash player?… What’s the point of emulating a [...]

Corrado says: 6 February 2010 at 1:20 pm Great for iPhone users !!!!! So, how can I use it with iPhone ? It works, but there is no keyboard… There is a workaround to brings up the virtual keyboard ? There is another way to use it with touch ? Think about that THIS emulator can be actually the ONLY ONE solution to emulate Speccy with a non-jailbroken iPhone…..

matt says: 6 February 2010 at 8:15 pm Nope, no virtual keyboard support… you need to use the ‘joystick’ icon to set up mappings between Spectrum keys and joystick directions, and then you can touch the appropriate areas of the screen to trigger those keys.

random says: 25 February 2010 at 10:04 pm doesn’t work on nexus one for some reason :(

Gary Newell says: 16 March 2010 at 9:20 pm This is pure genius. Didn’t think it was possible. Shows what I know

Alex says: 24 March 2010 at 12:18 am I loved the spectrum.

The concept of typing in text and playing a visual game was mindblowing at the time.

Introducing Gordon: the Flash Player Written in JavaScript | allphp.com says: 28 March 2010 at 5:00 am [...] been used for a number of unusual projects in the past few years. We’ve had NES emulators, Spectrum emulators, and even Amiga emulators. But a Flash player?… What’s the point of emulating a [...]

War of Browsers Chrome, Firefox, Opera, Safari and Internet Explorer | iTech Engine says: 29 March 2010 at 6:35 am [...] with this cool new emulator for the Nintendo Entertainment System inspired by Matt Westcott’s JSSpeccy which runs on the dual-power of JavaScript and HTML5’s Canvas element. While describing a [...]

mmwmm says: 21 September 2010 at 1:38 am Tried Manic miner, it runs way to slow on my browser, firefox. Nice simple setup though, click this, click that and your away.

Vanda Fiddler says: 14 December 2010 at 10:14 am Wow, this is just amazing :D Great work!

John Barker says: 15 December 2010 at 2:16 pm Ahhhhh!!!! the good old days… back to 1982 Sinclair research!!

I have actually still got a mint spectrum ready for when my games room is finished… I also have the divide + from rwapsoftware for which all those favorite games can be run from a compact flash card….

Manic Miner… I will complete that bugger one day!!!

Great Program!!

Thanks

Paul says: 21 March 2011 at 10:43 pm I just tried this on my Kindle. It works! Pretty slow though!

Hardware-Emulatoren in Browser « Jakoblog — Das Weblog von Jakob Voß says: 17 May 2011 at 10:48 pm [...] JSSpeccy (Sinclair ZX Spectrum) [...]

Richard says: 21 May 2011 at 10:14 pm Flipping heck mate, was that hard to write? Or have you got some kind of microcode to Javascript convertor?

Online ZX spectrum games « Mutant Technology says: 14 July 2011 at 9:57 am [...] games are all running within emulators, either written in Java, or amazingly, Javascript. The Javascript efforts are incredible in this ex-programmers estimation: ported from the open source Fuse Z80 emulator [...]

Mr.Starquake says: 30 March 2012 at 3:04 pm I’m ecstatic..just getting into browser-based games – speccy in js sounds like the best thing since the Sectrum+. Thanks so much.

Samir Ribic says: 8 April 2012 at 6:01 pm The famous Moore/Wirth law! 19 years ago Željko Juri? and me started to write Warajevo emulator in assembly language with GUI in Pascal. We had to check every microsecond to make the code as fast as possible. Many games were playable on 10MHz 80286 computer, and in 1999 I wrote Tezxas for 10MHz TI89 calculator.

Soon Warajevo became on 486 25MHz too fast and we introduced delay loop for synchronize.

But in Pentium age, there was wish to make emulators in C, then in Java, then in Visual Basic, … and usually these languages were slow for writing emulators on contemporary computers but after about 3 years they became acceptably fast.

Now we have emulator in JavaScript and the history repeats :)

Vintage Computing Anniversaries « devioblog says: 25 April 2012 at 5:47 am [...] then, computers have become bigger and fast enough that you can run a ZX Spectrum emulation in JavaScript in a browser on an operation system that requires a million times more disk space than the original [...]

Andrew says: 7 May 2012 at 4:03 pm Great thing!

I have a question about “z80_interrupt()”: … switch(IM) { … case 2: … inttemp &= 0xfff;

looks bit weird, should it be 0xffff ?

matt says: 10 May 2012 at 6:14 pm Andrew: Well spotted! Updated now… http://matt.west.co.tt/spectrum/jsspeccy-tiny-bugfix/

ashley says: 12 July 2012 at 1:49 pm great emulator, thanks! it’s the best, i don’t need to install anything, it just works

JSNES-JS??????? – Victor's Blog says: 10 March 2013 at 4:30 pm [...] Wescott?JSSpeccy???Ben Firshman???vNES?JavaScriptS??????JSNES???????canvas [...]

« Older Comments Leave a Reply Name (required) Mail (will not be published) (required) Website

matt.west.co.tt is proudly powered by WordPress Entries (RSS) and Comments (RSS).

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=zsjTpFR0oYQ

anyone help add hmpr bit 5&6 support to bmp2scr with interlaced mode 3 animations with masterbasic save mode 3 style intra frame compression please snapper discs velesoft site run 48k and one 128k program at 6mhz using external 1-4mb ram in sim coupe emulator for sam coupe needs masterdos booted first then snapper discs then option two on menu

think its the spelling of two that throws them...

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=zsjTpFR0oYQ

will try to post this link do you think it will work? £50 says it wont!

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

you wont let me post a comment is that right?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

let me have a look....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://matt.west.co.tt/spectrum/jsspeccy/

http://matt.west.co.tt/

is this your stuff?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

do you know how many zx spectrums sold? in total? think i found one article that was monthly best selling with no actual statistics bbc model B 1½million? commodore 64 25million?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

shit you mean i can communicate with someone! oh fucking hell that is just amazing an email address that actually sends an email to someone bet £50 that it doesnt work for more than about 10 emails and is then intercepted by the nazi in charge

On 19/04/2013, Matt Westcott notifications@github.com wrote:

yep.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16619619

gasman commented 11 years ago

I have never blocked you from commenting on my blog, or marked your comments as spam - but yes, I can see that your latest comment has been caught in the spam filter. This would be because you've posted the same message in so many places around the internet that the Wordpress anti-spam system ('Akismet') has learned to recognise that message content as spam.

I may well block you in future, if you continue to post these sorts of abusive comments.

"do you know how many zx spectrums sold? in total?" No, I don't know. I also have no information about bmp2scr, the SAM Coupe, the Micro Source interface, DMA, PDS, or your internet connection.

"did you buy a speccy 2010? what is it exactly processor?" It's all explained on http://matt.west.co.tt/spectrum/speccy2010/ , but in short: the Z80 and ULA are implemented on a programmable FPGA chip, meaning that there is no fixed hardware spec - new capabilities such as video modes could be added by reprogramming the firmware (but this requires VHDL programming expertise, which I don't have).

rogerjowett commented 11 years ago

has learned to recognise that message content as spam.

oh so it could maybe one day think about using ula+ modes or spectra modes too though ofcourse these two devices are totally incompatible the one with the other just like the DMA in the MB-02+ which is the only thing fast enough to give bog standard speccy 8 pixel attributes like timex and sam mode2 mode by altering the attributes on the fly so if the spectra only has 4x2 capabilty but a shadow video ram page then the dma might have been able to modify the attributes though there'd be 64 per row instead of 32 luckily the border port hasnt been modified at all apart from the 64 colours it still wont accept being harrassed at 2t like the dma can still leaves 8 pixel long lines - or 16 if you think about timex hi rez and sam coupe mode 3 kind of werid though do you understand that video on youtube where the guy moves the line in the border left and right by what looks like around a pixel or so? i understand that that is due to altering the timing that the out instruction that alters the border colour occurs ? ula book not terribly clear did you read that too?

abusive posting? not one its a link to an animation that thanks to ediwn LCD andrew collier only took me ten years to do what with me not being a programmmer unlike nathan cross who did the original curlsRlewd vid have you seen that one too?

On 19/04/2013, Matt Westcott notifications@github.com wrote:

I have never blocked you from commenting on my blog, or marked your comments as spam - but yes, I can see that your latest comment has been caught in the spam filter. This would be because you've posted the same message in so many places around the internet that the Wordpress anti-spam system ('Akismet') has learned to recognise that message content as spam.

I may well block you in future, if you continue to post these sorts of abusive comments.

"do you know how many zx spectrums sold? in total?" No, I don't know. I also have no information about bmp2scr, the SAM Coupe, the Micro Source interface, DMA, PDS, or your internet connection.

"did you buy a speccy 2010? what is it exactly processor?" It's all explained on http://matt.west.co.tt/spectrum/speccy2010/ , but in short: the Z80 and ULA are implemented on a programmable FPGA chip, meaning that there is no fixed hardware spec - new capabilities such as video modes could be added by reprogramming the firmware (but this requires VHDL programming expertise, which I don't have).


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16648656

rogerjowett commented 11 years ago

giving money to ukrainians good for you ! very helpful if you need to staff your lager you cant get the staff these days

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

has learned to recognise that message content as spam.

oh so it could maybe one day think about using ula+ modes or spectra modes too though ofcourse these two devices are totally incompatible the one with the other just like the DMA in the MB-02+ which is the only thing fast enough to give bog standard speccy 8 pixel attributes like timex and sam mode2 mode by altering the attributes on the fly so if the spectra only has 4x2 capabilty but a shadow video ram page then the dma might have been able to modify the attributes though there'd be 64 per row instead of 32 luckily the border port hasnt been modified at all apart from the 64 colours it still wont accept being harrassed at 2t like the dma can still leaves 8 pixel long lines - or 16 if you think about timex hi rez and sam coupe mode 3 kind of werid though do you understand that video on youtube where the guy moves the line in the border left and right by what looks like around a pixel or so? i understand that that is due to altering the timing that the out instruction that alters the border colour occurs ? ula book not terribly clear did you read that too?

abusive posting? not one its a link to an animation that thanks to ediwn LCD andrew collier only took me ten years to do what with me not being a programmmer unlike nathan cross who did the original curlsRlewd vid have you seen that one too?

On 19/04/2013, Matt Westcott notifications@github.com wrote:

I have never blocked you from commenting on my blog, or marked your comments as spam - but yes, I can see that your latest comment has been caught in the spam filter. This would be because you've posted the same message in so many places around the internet that the Wordpress anti-spam system ('Akismet') has learned to recognise that message content as spam.

I may well block you in future, if you continue to post these sorts of abusive comments.

"do you know how many zx spectrums sold? in total?" No, I don't know. I also have no information about bmp2scr, the SAM Coupe, the Micro Source interface, DMA, PDS, or your internet connection.

"did you buy a speccy 2010? what is it exactly processor?" It's all explained on http://matt.west.co.tt/spectrum/speccy2010/ , but in short: the Z80 and ULA are implemented on a programmable FPGA chip, meaning that there is no fixed hardware spec - new capabilities such as video modes could be added by reprogramming the firmware (but this requires VHDL programming expertise, which I don't have).


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16648656

rogerjowett commented 11 years ago

5v 1amp power so that is the same as USB is the power connector a USB connector? is it coloured differently to make it stand out from the other USB connectors? if i plug a 7 port usb hub into it can the plug to usb power adapter power the 7 port hub can it access the itu t v44+IPR=921600 v92 modem which has a default comport set at 115200bps even though i installed a hi speed 921600bps serial port though ofcourse the usb 2.0 spec is supposed to be 56mbps but lets ignore that koz we in zoron land....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

giving money to ukrainians good for you ! very helpful if you need to staff your lager you cant get the staff these days

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

has learned to recognise that message content as spam.

oh so it could maybe one day think about using ula+ modes or spectra modes too though ofcourse these two devices are totally incompatible the one with the other just like the DMA in the MB-02+ which is the only thing fast enough to give bog standard speccy 8 pixel attributes like timex and sam mode2 mode by altering the attributes on the fly so if the spectra only has 4x2 capabilty but a shadow video ram page then the dma might have been able to modify the attributes though there'd be 64 per row instead of 32 luckily the border port hasnt been modified at all apart from the 64 colours it still wont accept being harrassed at 2t like the dma can still leaves 8 pixel long lines - or 16 if you think about timex hi rez and sam coupe mode 3 kind of werid though do you understand that video on youtube where the guy moves the line in the border left and right by what looks like around a pixel or so? i understand that that is due to altering the timing that the out instruction that alters the border colour occurs ? ula book not terribly clear did you read that too?

abusive posting? not one its a link to an animation that thanks to ediwn LCD andrew collier only took me ten years to do what with me not being a programmmer unlike nathan cross who did the original curlsRlewd vid have you seen that one too?

On 19/04/2013, Matt Westcott notifications@github.com wrote:

I have never blocked you from commenting on my blog, or marked your comments as spam - but yes, I can see that your latest comment has been caught in the spam filter. This would be because you've posted the same message in so many places around the internet that the Wordpress anti-spam system ('Akismet') has learned to recognise that message content as spam.

I may well block you in future, if you continue to post these sorts of abusive comments.

"do you know how many zx spectrums sold? in total?" No, I don't know. I also have no information about bmp2scr, the SAM Coupe, the Micro Source interface, DMA, PDS, or your internet connection.

"did you buy a speccy 2010? what is it exactly processor?" It's all explained on http://matt.west.co.tt/spectrum/speccy2010/ , but in short: the Z80 and ULA are implemented on a programmable FPGA chip, meaning that there is no fixed hardware spec - new capabilities such as video modes could be added by reprogramming the firmware (but this requires VHDL programming expertise, which I don't have).


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16648656

rogerjowett commented 11 years ago

thought you just replied to an email but it has disappeared proof positive that the whole net is run by NAZI scum

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

5v 1amp power so that is the same as USB is the power connector a USB connector? is it coloured differently to make it stand out from the other USB connectors? if i plug a 7 port usb hub into it can the plug to usb power adapter power the 7 port hub can it access the itu t v44+IPR=921600 v92 modem which has a default comport set at 115200bps even though i installed a hi speed 921600bps serial port though ofcourse the usb 2.0 spec is supposed to be 56mbps but lets ignore that koz we in zoron land....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

giving money to ukrainians good for you ! very helpful if you need to staff your lager you cant get the staff these days

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

has learned to recognise that message content as spam.

oh so it could maybe one day think about using ula+ modes or spectra modes too though ofcourse these two devices are totally incompatible the one with the other just like the DMA in the MB-02+ which is the only thing fast enough to give bog standard speccy 8 pixel attributes like timex and sam mode2 mode by altering the attributes on the fly so if the spectra only has 4x2 capabilty but a shadow video ram page then the dma might have been able to modify the attributes though there'd be 64 per row instead of 32 luckily the border port hasnt been modified at all apart from the 64 colours it still wont accept being harrassed at 2t like the dma can still leaves 8 pixel long lines - or 16 if you think about timex hi rez and sam coupe mode 3 kind of werid though do you understand that video on youtube where the guy moves the line in the border left and right by what looks like around a pixel or so? i understand that that is due to altering the timing that the out instruction that alters the border colour occurs ? ula book not terribly clear did you read that too?

abusive posting? not one its a link to an animation that thanks to ediwn LCD andrew collier only took me ten years to do what with me not being a programmmer unlike nathan cross who did the original curlsRlewd vid have you seen that one too?

On 19/04/2013, Matt Westcott notifications@github.com wrote:

I have never blocked you from commenting on my blog, or marked your comments as spam - but yes, I can see that your latest comment has been caught in the spam filter. This would be because you've posted the same message in so many places around the internet that the Wordpress anti-spam system ('Akismet') has learned to recognise that message content as spam.

I may well block you in future, if you continue to post these sorts of abusive comments.

"do you know how many zx spectrums sold? in total?" No, I don't know. I also have no information about bmp2scr, the SAM Coupe, the Micro Source interface, DMA, PDS, or your internet connection.

"did you buy a speccy 2010? what is it exactly processor?" It's all explained on http://matt.west.co.tt/spectrum/speccy2010/ , but in short: the Z80 and ULA are implemented on a programmable FPGA chip, meaning that there is no fixed hardware spec - new capabilities such as video modes could be added by reprogramming the firmware (but this requires VHDL programming expertise, which I don't have).


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16648656

rogerjowett commented 11 years ago

hang on a minute all these emails have appeared in the comit section of github what the hell is that is that where programmers learn how to screw the morons who think that using an app is some great skill while they pay for a service of data that they never get though when they complain about it they really sink the boot in?

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

thought you just replied to an email but it has disappeared proof positive that the whole net is run by NAZI scum

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

5v 1amp power so that is the same as USB is the power connector a USB connector? is it coloured differently to make it stand out from the other USB connectors? if i plug a 7 port usb hub into it can the plug to usb power adapter power the 7 port hub can it access the itu t v44+IPR=921600 v92 modem which has a default comport set at 115200bps even though i installed a hi speed 921600bps serial port though ofcourse the usb 2.0 spec is supposed to be 56mbps but lets ignore that koz we in zoron land....

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

giving money to ukrainians good for you ! very helpful if you need to staff your lager you cant get the staff these days

On 19/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

has learned to recognise that message content as spam.

oh so it could maybe one day think about using ula+ modes or spectra modes too though ofcourse these two devices are totally incompatible the one with the other just like the DMA in the MB-02+ which is the only thing fast enough to give bog standard speccy 8 pixel attributes like timex and sam mode2 mode by altering the attributes on the fly so if the spectra only has 4x2 capabilty but a shadow video ram page then the dma might have been able to modify the attributes though there'd be 64 per row instead of 32 luckily the border port hasnt been modified at all apart from the 64 colours it still wont accept being harrassed at 2t like the dma can still leaves 8 pixel long lines - or 16 if you think about timex hi rez and sam coupe mode 3 kind of werid though do you understand that video on youtube where the guy moves the line in the border left and right by what looks like around a pixel or so? i understand that that is due to altering the timing that the out instruction that alters the border colour occurs ? ula book not terribly clear did you read that too?

abusive posting? not one its a link to an animation that thanks to ediwn LCD andrew collier only took me ten years to do what with me not being a programmmer unlike nathan cross who did the original curlsRlewd vid have you seen that one too?

On 19/04/2013, Matt Westcott notifications@github.com wrote:

I have never blocked you from commenting on my blog, or marked your comments as spam - but yes, I can see that your latest comment has been caught in the spam filter. This would be because you've posted the same message in so many places around the internet that the Wordpress anti-spam system ('Akismet') has learned to recognise that message content as spam.

I may well block you in future, if you continue to post these sorts of abusive comments.

"do you know how many zx spectrums sold? in total?" No, I don't know. I also have no information about bmp2scr, the SAM Coupe, the Micro Source interface, DMA, PDS, or your internet connection.

"did you buy a speccy 2010? what is it exactly processor?" It's all explained on http://matt.west.co.tt/spectrum/speccy2010/ , but in short: the Z80 and ULA are implemented on a programmable FPGA chip, meaning that there is no fixed hardware spec - new capabilities such as video modes could be added by reprogramming the firmware (but this requires VHDL programming expertise, which I don't have).


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16648656

gasman commented 11 years ago

Yes, these messages are appearing on Github because that's the method you chose to contact me.

"do you understand that video on youtube where the guy moves the line in the border left and right by what looks like around a pixel or so?" I don't know which video you mean, but the only Spectrum system I know of which would allow that is the Pentagon... all other hardware will only perform colour changes on 8px boundaries. (Yes, it's done by varying the timing of the OUT instruction.)

"ula book not terribly clear did you read that too?" I have a copy, but I haven't had chance to read it properly yet.

"nathan cross who did the original curlsRlewd vid have you seen that one too?" Yes... it's very nicely done, although that technique can only ever work on emulators because it relies on the screen data being loaded into memory instantly to avoid any gaps in the audio playback (- even the DivIDE and MB-02+ will always take a few milliseconds to transfer, giving a noticeable gap).

"5v 1amp power so that is the same as USB is the power connector a USB connector?" No, it's an old-style 'barrel' connector like the Spectrum.

rogerjowett commented 11 years ago

http://www.youtube.com/watch?v=cwpn0GGCYp4

On 19/04/2013, Matt Westcott notifications@github.com wrote:

Yes, these messages are appearing on Github because that's the method you chose to contact me.

"do you understand that video on youtube where the guy moves the line in the border left and right by what looks like around a pixel or so?" I don't know which video you mean, but the only Spectrum system I know of which would allow that is the Pentagon... all other hardware will only perform colour changes on 8px boundaries. (Yes, it's done by varying the timing of the OUT instruction.)

"ula book not terribly clear did you read that too?" I have a copy, but I haven't had chance to read it properly yet.

"nathan cross who did the original curlsRlewd vid have you seen that one too?" Yes... it's very nicely done, although that technique can only ever work on emulators because it relies on the screen data being loaded into memory instantly to avoid any gaps in the audio playback (- even the DivIDE and MB-02+ will always take a few milliseconds to transfer, giving a noticeable gap).

"5v 1amp power so that is the same as USB is the power connector a USB connector?" No, it's an old-style 'barrel' connector like the Spectrum.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16680287

rogerjowett commented 11 years ago

does that clarify things for you?

On 20/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=cwpn0GGCYp4

On 19/04/2013, Matt Westcott notifications@github.com wrote:

Yes, these messages are appearing on Github because that's the method you chose to contact me.

"do you understand that video on youtube where the guy moves the line in the border left and right by what looks like around a pixel or so?" I don't know which video you mean, but the only Spectrum system I know of which would allow that is the Pentagon... all other hardware will only perform colour changes on 8px boundaries. (Yes, it's done by varying the timing of the OUT instruction.)

"ula book not terribly clear did you read that too?" I have a copy, but I haven't had chance to read it properly yet.

"nathan cross who did the original curlsRlewd vid have you seen that one too?" Yes... it's very nicely done, although that technique can only ever work on emulators because it relies on the screen data being loaded into memory instantly to avoid any gaps in the audio playback (- even the DivIDE and MB-02+ will always take a few milliseconds to transfer, giving a noticeable gap).

"5v 1amp power so that is the same as USB is the power connector a USB connector?" No, it's an old-style 'barrel' connector like the Spectrum.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16680287

rogerjowett commented 11 years ago

Yes... it's very nicely done, although that technique can only ever work on emulators because it relies on the screen data being loaded into memory instantly to avoid any gaps in the audio playback (- even the DivIDE and MB-02+ will always take a few milliseconds to transfer, giving a noticeable gap).

but arent you talking about reading 6,912 bytes from a port? the gap you are refffering to would that be something like 6,912x16 = roughly 16 tstates for each INI instruction? =110,592 x 50 = 5,529,600 = greater than the 3,500,000 and ignores video ram contention are you sure that the DMA needs 16 tstates to read a port? isn't it closer to 2tstates 6,912x2= 13,824 x 50 = 691,200 even if there was fairly substantial delays - with the rotation of the hardrive - mind you most folks seem to be plumping for compact flash to ide adapters - though no one has shown me a twin sd memory one yet...

On 20/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

does that clarify things for you?

On 20/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=cwpn0GGCYp4

On 19/04/2013, Matt Westcott notifications@github.com wrote:

Yes, these messages are appearing on Github because that's the method you chose to contact me.

"do you understand that video on youtube where the guy moves the line in the border left and right by what looks like around a pixel or so?" I don't know which video you mean, but the only Spectrum system I know of which would allow that is the Pentagon... all other hardware will only perform colour changes on 8px boundaries. (Yes, it's done by varying the timing of the OUT instruction.)

"ula book not terribly clear did you read that too?" I have a copy, but I haven't had chance to read it properly yet.

"nathan cross who did the original curlsRlewd vid have you seen that one too?" Yes... it's very nicely done, although that technique can only ever work on emulators because it relies on the screen data being loaded into memory instantly to avoid any gaps in the audio playback (- even the DivIDE and MB-02+ will always take a few milliseconds to transfer, giving a noticeable gap).

"5v 1amp power so that is the same as USB is the power connector a USB connector?" No, it's an old-style 'barrel' connector like the Spectrum.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16680287

rogerjowett commented 11 years ago

well it says the message has been sent but it sure as heck isn't appearing at github side isit?

On 20/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

Yes... it's very nicely done, although that technique can only ever work on emulators because it relies on the screen data being loaded into memory instantly to avoid any gaps in the audio playback (- even the DivIDE and MB-02+ will always take a few milliseconds to transfer, giving a noticeable gap).

but arent you talking about reading 6,912 bytes from a port? the gap you are refffering to would that be something like 6,912x16 = roughly 16 tstates for each INI instruction? =110,592 x 50 = 5,529,600 = greater than the 3,500,000 and ignores video ram contention are you sure that the DMA needs 16 tstates to read a port? isn't it closer to 2tstates 6,912x2= 13,824 x 50 = 691,200 even if there was fairly substantial delays - with the rotation of the hardrive - mind you most folks seem to be plumping for compact flash to ide adapters - though no one has shown me a twin sd memory one yet...

On 20/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

does that clarify things for you?

On 20/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=cwpn0GGCYp4

On 19/04/2013, Matt Westcott notifications@github.com wrote:

Yes, these messages are appearing on Github because that's the method you chose to contact me.

"do you understand that video on youtube where the guy moves the line in the border left and right by what looks like around a pixel or so?" I don't know which video you mean, but the only Spectrum system I know of which would allow that is the Pentagon... all other hardware will only perform colour changes on 8px boundaries. (Yes, it's done by varying the timing of the OUT instruction.)

"ula book not terribly clear did you read that too?" I have a copy, but I haven't had chance to read it properly yet.

"nathan cross who did the original curlsRlewd vid have you seen that one too?" Yes... it's very nicely done, although that technique can only ever work on emulators because it relies on the screen data being loaded into memory instantly to avoid any gaps in the audio playback (- even the DivIDE and MB-02+ will always take a few milliseconds to transfer, giving a noticeable gap).

"5v 1amp power so that is the same as USB is the power connector a USB connector?" No, it's an old-style 'barrel' connector like the Spectrum.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16680287

rogerjowett commented 11 years ago

thanks to github for letting us know that an email we send to their wonderfully designed we have no idea what the available bandwidth is we have no idea what the screen resolution is and you can forget the refresh rate too matey we just wanna flood the internet with massive amounts of data that don't actually work or do anything except get deducted off your bills for monthly data usage

---------- Forwarded message ---------- From: Roger Jowett rogerjowett@hotmail.com Date: Thu, 3 Jan 2013 16:33:11 +0000 Subject: 46 out of 87 not bad for a pc To: whodat rogerjowett@gmail.com

rogerjowett commented 11 years ago

but this is all just reading the full screen$ surely the minute you start to compress the screen ? the MB-02+ has 1mb of ram? sam coupe can have 4mb masterbasic save mode 3 on sam converts 24kb screen to 7kb that is a whole screen compression every one of the 39 disc records for the head animation could now have 4 disc records so instead of five discs on the 4mb ram disc you know have 20 thats half the animation not including 16 frames already decompressed in the 512kb of ram and a further 128k of unused ram internal and 800x5=4,000 so a further 96KB of external non contentioned ram which someon ought to be able to bung masterdos & masterbasic modified for atom lite compatiblity and still leave a good 32kb for the program that runs the animation - you may be able to squezze a tiny amount of audio in there and christ knows what if we ever get a DMA with the modified kaleidescope? 32kolours anyone?

On 20/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

well it says the message has been sent but it sure as heck isn't appearing at github side isit?

On 20/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

Yes... it's very nicely done, although that technique can only ever work on emulators because it relies on the screen data being loaded into memory instantly to avoid any gaps in the audio playback (- even the DivIDE and MB-02+ will always take a few milliseconds to transfer, giving a noticeable gap).

but arent you talking about reading 6,912 bytes from a port? the gap you are refffering to would that be something like 6,912x16 = roughly 16 tstates for each INI instruction? =110,592 x 50 = 5,529,600 = greater than the 3,500,000 and ignores video ram contention are you sure that the DMA needs 16 tstates to read a port? isn't it closer to 2tstates 6,912x2= 13,824 x 50 = 691,200 even if there was fairly substantial delays - with the rotation of the hardrive - mind you most folks seem to be plumping for compact flash to ide adapters - though no one has shown me a twin sd memory one yet...

On 20/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

does that clarify things for you?

On 20/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=cwpn0GGCYp4

On 19/04/2013, Matt Westcott notifications@github.com wrote:

Yes, these messages are appearing on Github because that's the method you chose to contact me.

"do you understand that video on youtube where the guy moves the line in the border left and right by what looks like around a pixel or so?" I don't know which video you mean, but the only Spectrum system I know of which would allow that is the Pentagon... all other hardware will only perform colour changes on 8px boundaries. (Yes, it's done by varying the timing of the OUT instruction.)

"ula book not terribly clear did you read that too?" I have a copy, but I haven't had chance to read it properly yet.

"nathan cross who did the original curlsRlewd vid have you seen that one too?" Yes... it's very nicely done, although that technique can only ever work on emulators because it relies on the screen data being loaded into memory instantly to avoid any gaps in the audio playback (- even the DivIDE and MB-02+ will always take a few milliseconds to transfer, giving a noticeable gap).

"5v 1amp power so that is the same as USB is the power connector a USB connector?" No, it's an old-style 'barrel' connector like the Spectrum.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16680287

gasman commented 11 years ago

"thanks to github for letting us know that an email we send to their wonderfully designed" Github's behaviour makes perfect sense when it's being used for the purpose it was designed for: reporting issues with the Goldfinch project, rather than having a general conversation.

"http://www.youtube.com/watch?v=cwpn0GGCYp4" OK, I see... the Harlequin must be using similar display circuitry to the Pentagon, where the effect of the OUT is visible immediately, rather than remaining at the existing colour until the next 8px boundary.

"110,592 x 50 = 5,529,600 = greater than the 3,500,000 and ignores video ram contention" Actually, you don't need to transfer a full screen of data every 50th of a second... ordinary film/broadcast TV is 24 or 25 frames per second, and even 10fps is acceptable. 110,592 x 25 = 2,764,800 , which leaves enough spare time for video contention - so 25fps full screen video is possible, without any need for DMA or compression. This is what the early DivIDE video demos did.

But, even if there's enough processor time in total, the difficulty with audio is that you cannot simply set aside one block of time for transferring the screen data, and another block of time for handling audio. The audio needs to be written continuously - for example, using a sample rate of 10kHz (medium quality audio), you need to send a byte to the AY chip once every 350 tstates (3,500,000 / 10,000). Obviously, 350 tstates will never be enough to transfer a whole screen, so you need to interleave the audio and video data: copy a few bytes of screen data, then send an audio byte to the AY, then a few more bytes of screen data, and so on. This requires some complex, carefully-timed custom-written code, and adding enhancements like compression or new video modes just makes it even more complex. I already did it once for DivIDEo, and I'm not keen on doing it again for every new combination of hardware that comes along!

rogerjowett commented 11 years ago

ok well thanks very much and thanks for ignoring my rudeness i get a bit carried away when teh sodding machine crashes every five minutes

so the audio dictates the amount of time slices you have - general soudn NEO coudl be quite useful then! it would be playing the audio with its 24mhz z80 and DMA without any access to video ram or the divide circuitry at all worra shame the zx bus doesnt have red green blu video outputs that three NEOgs could modify -

would the three DMA that are chained to the three channels of the AY8912 in the cpc+ make any difference - can they be transferring audio data to the sound chip whithout interrupting the z80 at all or do they just reduce slightly the size of the interruptions 350 tstates for 3x DMA is 175x3 bytes written to the audio ports of the ay chip - or does it not work like that?

On 20/04/2013, Matt Westcott notifications@github.com wrote:

"thanks to github for letting us know that an email we send to their wonderfully designed" Github's behaviour makes perfect sense when it's being used for the purpose it was designed for: reporting issues with the Goldfinch project, rather than having a general conversation.

"http://www.youtube.com/watch?v=cwpn0GGCYp4" OK, I see... the Harlequin must be using similar display circuitry to the Pentagon, where the effect of the OUT is visible immediately, rather than remaining at the existing colour until the next 8px boundary.

"110,592 x 50 = 5,529,600 = greater than the 3,500,000 and ignores video ram contention" Actually, you don't need to transfer a full screen of data every 50th of a second... ordinary film/broadcast TV is 24 or 25 frames per second, and even 10fps is acceptable. 110,592 x 25 = 2,764,800 , which leaves enough spare time for video contention - so 25fps full screen video is possible, without any need for DMA or compression. This is what the early DivIDE video demos did.

But, even if there's enough processor time in total, the difficulty with audio is that you cannot simply set aside one block of time for transferring the screen data, and another block of time for handling audio. The audio needs to be written continuously - for example, using a sample rate of 10kHz (medium quality audio), you need to send a byte to the AY chip once every 350 tstates (3,500,000 / 10,000). Obviously, 350 tstates will never be enough to transfer a whole screen, so you need to interleave the audio and video data: copy a few bytes of screen data, then send an audio byte to the AY, then a few more bytes of screen data, and so on. This requires some complex, carefully-timed custom-written code, and adding enhancements like compression or new video modes just makes it even more complex. I already did it once for DivIDEo, and I'm not keen on doing it again for every new combination of hardware that comes along!


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16705139

rogerjowett commented 11 years ago

does that mean that 10Khz audio looses 10,000 x 16(number of tstates for a port write - ay8912 is on a port) 160,000 tstates of the 3,500,000 (-minus 63% of this at ¼ of the speed? for calculating contention losses?)

On 21/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

ok well thanks very much and thanks for ignoring my rudeness i get a bit carried away when teh sodding machine crashes every five minutes

so the audio dictates the amount of time slices you have - general soudn NEO coudl be quite useful then! it would be playing the audio with its 24mhz z80 and DMA without any access to video ram or the divide circuitry at all worra shame the zx bus doesnt have red green blu video outputs that three NEOgs could modify -

would the three DMA that are chained to the three channels of the AY8912 in the cpc+ make any difference - can they be transferring audio data to the sound chip whithout interrupting the z80 at all or do they just reduce slightly the size of the interruptions 350 tstates for 3x DMA is 175x3 bytes written to the audio ports of the ay chip - or does it not work like that?

On 20/04/2013, Matt Westcott notifications@github.com wrote:

"thanks to github for letting us know that an email we send to their wonderfully designed" Github's behaviour makes perfect sense when it's being used for the purpose it was designed for: reporting issues with the Goldfinch project, rather than having a general conversation.

"http://www.youtube.com/watch?v=cwpn0GGCYp4" OK, I see... the Harlequin must be using similar display circuitry to the Pentagon, where the effect of the OUT is visible immediately, rather than remaining at the existing colour until the next 8px boundary.

"110,592 x 50 = 5,529,600 = greater than the 3,500,000 and ignores video ram contention" Actually, you don't need to transfer a full screen of data every 50th of a second... ordinary film/broadcast TV is 24 or 25 frames per second, and even 10fps is acceptable. 110,592 x 25 = 2,764,800 , which leaves enough spare time for video contention - so 25fps full screen video is possible, without any need for DMA or compression. This is what the early DivIDE video demos did.

But, even if there's enough processor time in total, the difficulty with audio is that you cannot simply set aside one block of time for transferring the screen data, and another block of time for handling audio. The audio needs to be written continuously - for example, using a sample rate of 10kHz (medium quality audio), you need to send a byte to the AY chip once every 350 tstates (3,500,000 / 10,000). Obviously, 350 tstates will never be enough to transfer a whole screen, so you need to interleave the audio and video data: copy a few bytes of screen data, then send an audio byte to the AY, then a few more bytes of screen data, and so on. This requires some complex, carefully-timed custom-written code, and adding enhancements like compression or new video modes just makes it even more complex. I already did it once for DivIDEo, and I'm not keen on doing it again for every new combination of hardware that comes along!


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16705139

rogerjowett commented 11 years ago

3,500,000x.63%= 2,205,000x.75%= 1,653,750+ 3,500,000-2,205,000= 1,295,000+ 1,653,750= 2,948,750 --- total tstates with video ram contention?

- 160,000

2,788,750 - roughly what you have left from 6,912 x 16= 16 tstates per port IN 110592x10=10 frames a second 1,105,920 - not including interrupts to drive the audio 10Khz sample?

On 21/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

does that mean that 10Khz audio looses 10,000 x 16(number of tstates for a port write - ay8912 is on a port) 160,000 tstates of the 3,500,000 (-minus 63% of this at ¼ of the speed? for calculating contention losses?)

On 21/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

ok well thanks very much and thanks for ignoring my rudeness i get a bit carried away when teh sodding machine crashes every five minutes

so the audio dictates the amount of time slices you have - general soudn NEO coudl be quite useful then! it would be playing the audio with its 24mhz z80 and DMA without any access to video ram or the divide circuitry at all worra shame the zx bus doesnt have red green blu video outputs that three NEOgs could modify -

would the three DMA that are chained to the three channels of the AY8912 in the cpc+ make any difference - can they be transferring audio data to the sound chip whithout interrupting the z80 at all or do they just reduce slightly the size of the interruptions 350 tstates for 3x DMA is 175x3 bytes written to the audio ports of the ay chip - or does it not work like that?

On 20/04/2013, Matt Westcott notifications@github.com wrote:

"thanks to github for letting us know that an email we send to their wonderfully designed" Github's behaviour makes perfect sense when it's being used for the purpose it was designed for: reporting issues with the Goldfinch project, rather than having a general conversation.

"http://www.youtube.com/watch?v=cwpn0GGCYp4" OK, I see... the Harlequin must be using similar display circuitry to the Pentagon, where the effect of the OUT is visible immediately, rather than remaining at the existing colour until the next 8px boundary.

"110,592 x 50 = 5,529,600 = greater than the 3,500,000 and ignores video ram contention" Actually, you don't need to transfer a full screen of data every 50th of a second... ordinary film/broadcast TV is 24 or 25 frames per second, and even 10fps is acceptable. 110,592 x 25 = 2,764,800 , which leaves enough spare time for video contention - so 25fps full screen video is possible, without any need for DMA or compression. This is what the early DivIDE video demos did.

But, even if there's enough processor time in total, the difficulty with audio is that you cannot simply set aside one block of time for transferring the screen data, and another block of time for handling audio. The audio needs to be written continuously - for example, using a sample rate of 10kHz (medium quality audio), you need to send a byte to the AY chip once every 350 tstates (3,500,000 / 10,000). Obviously, 350 tstates will never be enough to transfer a whole screen, so you need to interleave the audio and video data: copy a few bytes of screen data, then send an audio byte to the AY, then a few more bytes of screen data, and so on. This requires some complex, carefully-timed custom-written code, and adding enhancements like compression or new video modes just makes it even more complex. I already did it once for DivIDEo, and I'm not keen on doing it again for every new combination of hardware that comes along!


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16705139

gasman commented 11 years ago

"general soudn NEO coudl be quite useful then! it would be playing the audio with its 24mhz z80 and DMA without any access to video ram or the divide circuitry at all" Yes, that would be one way of doing it (although I'm not sure if the NeoGS is compatible with DivIDE - it might be necessary to use one of the Russian standard hard disk interfaces instead). But to me that would be removing everything that's interesting about the problem... it's adding so much processing power, with only the tiniest dependence on the Spectrum's own hardware, that you can't really call it "running audio/video on a Spectrum" any more. You might as well just put a CD player on your desk next to the Spectrum and call it a hardware add-on :-)

(Actually, that's more or less what I'm doing on my current project! http://www.youtube.com/watch?v=8bB7dkyVYaU - a Spectrum music video for a record being released this summer. I'm not even attempting to play the audio from the Spectrum, which gives me more freedom to do interesting things with the visuals in code...)

"would the three DMA that are chained to the three channels of the AY8912 in the cpc+ make any difference" Possibly - I don't know enough about the CPC+ to say for sure.

"does that mean that 10Khz audio looses 10,000 x 16(number of tstates for a port write - ay8912 is on a port) 160,000 tstates of the 3,500,000 (-minus 63% of this at ¼ of the speed? for calculating contention losses?)" In my DivIDEo routine, it's 12 tstates ( = IN A,(C) ) to read an audio byte from disk, and 11 tstates ( = OUT (0xFD),A ) to write it to the AY chip. These numbers don't need to be adjusted for contention... by careful use of registers, I can avoid contention on port accesses. The only contention delays occur when writing to screen memory (this is unavoidable).

Rather than doing the maths to figure out if 10kHz is possible, I took the opposite approach: write the routine first, then count tstates to see how long the routine takes to run (and, therefore, how frequently it will write to the AY) - and then construct the video data so that it contains samples at the appropriate rate. (Then, if you make any changes to the routine, you have to recalculate it all over again. It was a very tedious process, which is why it took a couple of years to get it right!)

rogerjowett commented 11 years ago

a couple of years?! jeez i haven't a clue about the effort that has gone into the routine

On 22/04/2013, Matt Westcott notifications@github.com wrote:

"general soudn NEO coudl be quite useful then! it would be playing the audio with its 24mhz z80 and DMA without any access to video ram or the divide circuitry at all" Yes, that would be one way of doing it (although I'm not sure if the NeoGS is compatible with DivIDE - it might be necessary to use one of the Russian standard hard disk interfaces instead). But to me that would be removing everything that's interesting about the problem... it's adding so much processing power, with only the tiniest dependence on the Spectrum's own hardware, that you can't really call it "running audio/video on a Spectrum" any more. You might as well just put a CD player on your desk next to the Spectrum and call it a hardware add-on :-)

(Actually, that's more or less what I'm doing on my current project! http://www.youtube.com/watch?v=8bB7dkyVYaU - a Spectrum music video for a record being released this summer. I'm not even attempting to play the audio from the Spectrum, which gives me more freedom to do interesting things with the visuals in code...)

"would the three DMA that are chained to the three channels of the AY8912 in the cpc+ make any difference" Possibly - I don't know enough about the CPC+ to say for sure.

"does that mean that 10Khz audio looses 10,000 x 16(number of tstates for a port write - ay8912 is on a port) 160,000 tstates of the 3,500,000 (-minus 63% of this at ¼ of the speed? for calculating contention losses?)" In my DivIDEo routine, it's 12 tstates ( = IN A,(C) ) to read an audio byte from disk, and 11 tstates ( = OUT (0xFD),A ) to write it to the AY chip. These numbers don't need to be adjusted for contention... by careful use of registers, I can avoid contention on port accesses. The only contention delays occur when writing to screen memory (this is unavoidable).

Rather than doing the maths to figure out if 10kHz is possible, I took the opposite approach: write the routine first, then count tstates to see how long the routine takes to run (and, therefore, how frequently it will write to the AY) - and then construct the video data so that it contains samples at the appropriate rate. (Then, if you make any changes to the routine, you have to recalculate it all over again. It was a very tedious process, which is why it took a couple of years to get it right!)


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16820175

gasman commented 11 years ago

"is it true that BC can be used as a 16bit in/output address" Yes, this is a standard Z80 feature, so it can be done on the Spectrum too. The instructions are "OUT (C),r" and "IN r,(C)" but in fact they use the full BC pair as the address, not just C. Sometimes, this is the only possible way of doing things: the alternative instructions "OUT (n),A" and "IN A,(n)" use A as the high byte of the address, which is no good if the value you're writing to the port does not match the port address.

For this reason, any routine that writes to the AY chip (which is on a 16-bit port) would normally use OUT (C),r. My DivIDEo routine doesn't, but that's because it's relying on a nasty binary trick that only works in this one situation :-)

rogerjowett commented 11 years ago

two years to write that routine? can i ask were you very busy with work /family etc?

the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible

On 23/04/2013, Matt Westcott notifications@github.com wrote:

"is it true that BC can be used as a 16bit in/output address" Yes, this is a standard Z80 feature, so it can be done on the Spectrum too. The instructions are "OUT (C),r" and "IN r,(C)" but in fact they use the full BC pair as the address, not just C. Sometimes, this is the only possible way of doing things: the alternative instructions "OUT (n),A" and "IN A,(n)" use A as the high byte of the address, which is no good if the value you're writing to the port does not match the port address.

For this reason, any routine that writes to the AY chip (which is on a 16-bit port) would normally use OUT (C),r. My DivIDEo routine doesn't, but that's because it's relying on a nasty binary trick that only works in this one situation :-)


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16876738

rogerjowett commented 11 years ago

http://www.truppel-online.de/Fotos/Seite.html

do you think this is fake? seems weird only the Real Spectrum emulator manages to emulate it mind you there's only one emulator manages the fdd3000

http://www.youtube.com/watch?v=ytU8SsSh3ng

On 24/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

two years to write that routine? can i ask were you very busy with work /family etc?

the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible

On 23/04/2013, Matt Westcott notifications@github.com wrote:

"is it true that BC can be used as a 16bit in/output address" Yes, this is a standard Z80 feature, so it can be done on the Spectrum too. The instructions are "OUT (C),r" and "IN r,(C)" but in fact they use the full BC pair as the address, not just C. Sometimes, this is the only possible way of doing things: the alternative instructions "OUT (n),A" and "IN A,(n)" use A as the high byte of the address, which is no good if the value you're writing to the port does not match the port address.

For this reason, any routine that writes to the AY chip (which is on a 16-bit port) would normally use OUT (C),r. My DivIDEo routine doesn't, but that's because it's relying on a nasty binary trick that only works in this one situation :-)


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16876738

rogerjowett commented 11 years ago

http://www.benophetinternet.nl/hobby/mb02/

doesnt make much sense to me 1MB ram he claims 128 compatiblity and claims a 48 can run 128k software i asked him about the second video ram page and the ay8912

i was bluntly told to stop sending eggnchips

On 24/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.truppel-online.de/Fotos/Seite.html

do you think this is fake? seems weird only the Real Spectrum emulator manages to emulate it mind you there's only one emulator manages the fdd3000

http://www.youtube.com/watch?v=ytU8SsSh3ng

On 24/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

two years to write that routine? can i ask were you very busy with work /family etc?

the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible

On 23/04/2013, Matt Westcott notifications@github.com wrote:

"is it true that BC can be used as a 16bit in/output address" Yes, this is a standard Z80 feature, so it can be done on the Spectrum too. The instructions are "OUT (C),r" and "IN r,(C)" but in fact they use the full BC pair as the address, not just C. Sometimes, this is the only possible way of doing things: the alternative instructions "OUT (n),A" and "IN A,(n)" use A as the high byte of the address, which is no good if the value you're writing to the port does not match the port address.

For this reason, any routine that writes to the AY chip (which is on a 16-bit port) would normally use OUT (C),r. My DivIDEo routine doesn't, but that's because it's relying on a nasty binary trick that only works in this one situation :-)


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16876738

gasman commented 11 years ago

"two years to write that routine? can i ask were you very busy with work /family etc?"

Well, it wasn't two years of continuous effort - it was more like trying different approaches, finding that they didn't work, and then abandoning the idea... and then returning to it a few months later with a new idea.

"the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible"

There's no Z80 instruction that can do all of that in one go... INI increments the B register rather than C. You would have to increment C as a separate operation, something like: INI / DEC B / INC C / INI / DEC B / INC C...

"http://www.truppel-online.de/Fotos/Seite.html

do you think this is fake? seems weird only the Real Spectrum emulator manages to emulate it mind you there's only one emulator manages the fdd3000"

I don't really know much about the MB-02. I guess disk systems tend to be quite low priority for emulator writers, because there's not much dedicated software for them (compared to the +3 or TR-DOS, where implementing that system will open up access to hundreds of new software titles) - and the features they offer (fast loading, snapshotting) are already provided by the emulator itself.

rogerjowett commented 11 years ago

supposing you hadnt focussed teh routine on the ay audio sample supposing you had wanted to figure out how quickly you could read the pixels 6kb into video ram or the shadow video ram buffer on the 128

supposing you had stumbled across real spectrum:

http://ramsoft.bbk.org.omegahg.com/realspec.html

boot rom - think it only has 128kb of extra ram not the full 1mb: http://www.8bc.com/sinclair/DOWNLOAD/

maybe you can find rom and a boot disc here: http://tcg.speccy.cz/zoom/mb02.html

yes boot rom and boot discs are here

http://velesoft.speccy.cz/profi/profi-firmware-1low.htm

there's a video that might help i still havent figuree out how the disc works i think its a bit like having a 1.8mb casette only i have no idea how the tape head pointer works- they wont explain how you rewind it when running a multiload tap/tzx file still no sign of rzx support

im sick of trying to find things it is worse than the super market!

mb-02+ piccy gallery http://www.benophetinternet.nl/hobby/mb02/gallery.htm

would it be impossible to make the video interlaced - 6,912 bytes per 50Hz pal tv frames 6,912x2tstates from the DMA read a port write data to ram - i do not understand how the multitech screen system works though it must be altering the attributes 7 times on the fly so to speak so an extra 6,144 bytes of attributes on top of the 6,144 bytes of pixels does that make any sense

you weren't in a coma for 23½months of the 24 then!

On 24/04/2013, Matt Westcott notifications@github.com wrote:

"two years to write that routine? can i ask were you very busy with work /family etc?"

Well, it wasn't two years of continuous effort - it was more like trying different approaches, finding that they didn't work, and then abandoning the idea... and then returning to it a few months later with a new idea.

"the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible"

There's no Z80 instruction that can do all of that in one go... INI increments the B register rather than C. You would have to increment C as a separate operation, something like: INI / DEC B / INC C / INI / DEC B / INC C...

"http://www.truppel-online.de/Fotos/Seite.html

do you think this is fake? seems weird only the Real Spectrum emulator manages to emulate it mind you there's only one emulator manages the fdd3000"

I don't really know much about the MB-02. I guess disk systems tend to be quite low priority for emulator writers, because there's not much dedicated software for them (compared to the +3 or TR-DOS, where implementing that system will open up access to hundreds of new software titles) - and the features they offer (fast loading, snapshotting) are already provided by the emulator itself.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16956031

rogerjowett commented 11 years ago

http://www.youtube.com/watch?v=OKxjXtNyS6E

this one is it scrolling the screen dont ask me how the DMA does this i thought it was for reading/writing data to/from port/ram (with optional on the fly byte compare) 4MHz = 2MB(depending on ram refresh i guess) wouldnt the DMA need to read a byte to the accumulator - the accumulator need to shift itleft one bit then DMA write it back to ram

unless he has stored 8 pre shifted versions of the entire screen in ram - its only 6,144x8 = 48kb so possible on the 128!

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

supposing you hadnt focussed teh routine on the ay audio sample supposing you had wanted to figure out how quickly you could read the pixels 6kb into video ram or the shadow video ram buffer on the 128

supposing you had stumbled across real spectrum:

http://ramsoft.bbk.org.omegahg.com/realspec.html

boot rom - think it only has 128kb of extra ram not the full 1mb: http://www.8bc.com/sinclair/DOWNLOAD/

maybe you can find rom and a boot disc here: http://tcg.speccy.cz/zoom/mb02.html

yes boot rom and boot discs are here

http://velesoft.speccy.cz/profi/profi-firmware-1low.htm

there's a video that might help i still havent figuree out how the disc works i think its a bit like having a 1.8mb casette only i have no idea how the tape head pointer works- they wont explain how you rewind it when running a multiload tap/tzx file still no sign of rzx support

im sick of trying to find things it is worse than the super market!

mb-02+ piccy gallery http://www.benophetinternet.nl/hobby/mb02/gallery.htm

would it be impossible to make the video interlaced - 6,912 bytes per 50Hz pal tv frames 6,912x2tstates from the DMA read a port write data to ram - i do not understand how the multitech screen system works though it must be altering the attributes 7 times on the fly so to speak so an extra 6,144 bytes of attributes on top of the 6,144 bytes of pixels does that make any sense

you weren't in a coma for 23½months of the 24 then!

On 24/04/2013, Matt Westcott notifications@github.com wrote:

"two years to write that routine? can i ask were you very busy with work /family etc?"

Well, it wasn't two years of continuous effort - it was more like trying different approaches, finding that they didn't work, and then abandoning the idea... and then returning to it a few months later with a new idea.

"the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible"

There's no Z80 instruction that can do all of that in one go... INI increments the B register rather than C. You would have to increment C as a separate operation, something like: INI / DEC B / INC C / INI / DEC B / INC C...

"http://www.truppel-online.de/Fotos/Seite.html

do you think this is fake? seems weird only the Real Spectrum emulator manages to emulate it mind you there's only one emulator manages the fdd3000"

I don't really know much about the MB-02. I guess disk systems tend to be quite low priority for emulator writers, because there's not much dedicated software for them (compared to the +3 or TR-DOS, where implementing that system will open up access to hundreds of new software titles) - and the features they offer (fast loading, snapshotting) are already provided by the emulator itself.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16956031

rogerjowett commented 11 years ago

http://www.shadowmagic.org.uk/spectrum/roms.html

there's some roms here but there's no list anywhere of which emulators actually emulate the full features of the hardware interfaces i haven't found one that does the uhf video output on a CRT crosstalk synchronization or phosphoric delay?

and you can forget the interface 1 network or the serial ports you cant even find more then one emulator that manages the fdd3000 forget the PDS and the micro command

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=OKxjXtNyS6E

this one is it scrolling the screen dont ask me how the DMA does this i thought it was for reading/writing data to/from port/ram (with optional on the fly byte compare) 4MHz = 2MB(depending on ram refresh i guess) wouldnt the DMA need to read a byte to the accumulator - the accumulator need to shift itleft one bit then DMA write it back to ram

  • didnt know dma coulr read data from ram into accumulator - or does the accumulator still have to read the data from ram into it then use dma to write it back - didnt know it coulr read or write to or from any registers at all oh well must have been confused

unless he has stored 8 pre shifted versions of the entire screen in ram - its only 6,144x8 = 48kb so possible on the 128!

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

supposing you hadnt focussed teh routine on the ay audio sample supposing you had wanted to figure out how quickly you could read the pixels 6kb into video ram or the shadow video ram buffer on the 128

supposing you had stumbled across real spectrum:

http://ramsoft.bbk.org.omegahg.com/realspec.html

boot rom - think it only has 128kb of extra ram not the full 1mb: http://www.8bc.com/sinclair/DOWNLOAD/

maybe you can find rom and a boot disc here: http://tcg.speccy.cz/zoom/mb02.html

yes boot rom and boot discs are here

http://velesoft.speccy.cz/profi/profi-firmware-1low.htm

there's a video that might help i still havent figuree out how the disc works i think its a bit like having a 1.8mb casette only i have no idea how the tape head pointer works- they wont explain how you rewind it when running a multiload tap/tzx file still no sign of rzx support

im sick of trying to find things it is worse than the super market!

mb-02+ piccy gallery http://www.benophetinternet.nl/hobby/mb02/gallery.htm

would it be impossible to make the video interlaced - 6,912 bytes per 50Hz pal tv frames 6,912x2tstates from the DMA read a port write data to ram - i do not understand how the multitech screen system works though it must be altering the attributes 7 times on the fly so to speak so an extra 6,144 bytes of attributes on top of the 6,144 bytes of pixels does that make any sense

you weren't in a coma for 23½months of the 24 then!

On 24/04/2013, Matt Westcott notifications@github.com wrote:

"two years to write that routine? can i ask were you very busy with work /family etc?"

Well, it wasn't two years of continuous effort - it was more like trying different approaches, finding that they didn't work, and then abandoning the idea... and then returning to it a few months later with a new idea.

"the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible"

There's no Z80 instruction that can do all of that in one go... INI increments the B register rather than C. You would have to increment C as a separate operation, something like: INI / DEC B / INC C / INI / DEC B / INC C...

"http://www.truppel-online.de/Fotos/Seite.html

do you think this is fake? seems weird only the Real Spectrum emulator manages to emulate it mind you there's only one emulator manages the fdd3000"

I don't really know much about the MB-02. I guess disk systems tend to be quite low priority for emulator writers, because there's not much dedicated software for them (compared to the +3 or TR-DOS, where implementing that system will open up access to hundreds of new software titles) - and the features they offer (fast loading, snapshotting) are already provided by the emulator itself.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16956031

rogerjowett commented 11 years ago

sent that one to amazon

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.shadowmagic.org.uk/spectrum/roms.html

there's some roms here but there's no list anywhere of which emulators actually emulate the full features of the hardware interfaces i haven't found one that does the uhf video output on a CRT crosstalk synchronization or phosphoric delay?

and you can forget the interface 1 network or the serial ports you cant even find more then one emulator that manages the fdd3000 forget the PDS and the micro command

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=OKxjXtNyS6E

this one is it scrolling the screen dont ask me how the DMA does this i thought it was for reading/writing data to/from port/ram (with optional on the fly byte compare) 4MHz = 2MB(depending on ram refresh i guess) wouldnt the DMA need to read a byte to the accumulator - the accumulator need to shift itleft one bit then DMA write it back to ram

  • didnt know dma coulr read data from ram into accumulator - or does the accumulator still have to read the data from ram into it then use dma to write it back - didnt know it coulr read or write to or from any registers at all oh well must have been confused

unless he has stored 8 pre shifted versions of the entire screen in ram - its only 6,144x8 = 48kb so possible on the 128!

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

supposing you hadnt focussed teh routine on the ay audio sample supposing you had wanted to figure out how quickly you could read the pixels 6kb into video ram or the shadow video ram buffer on the 128

supposing you had stumbled across real spectrum:

http://ramsoft.bbk.org.omegahg.com/realspec.html

boot rom - think it only has 128kb of extra ram not the full 1mb: http://www.8bc.com/sinclair/DOWNLOAD/

maybe you can find rom and a boot disc here: http://tcg.speccy.cz/zoom/mb02.html

yes boot rom and boot discs are here

http://velesoft.speccy.cz/profi/profi-firmware-1low.htm

there's a video that might help i still havent figuree out how the disc works i think its a bit like having a 1.8mb casette only i have no idea how the tape head pointer works- they wont explain how you rewind it when running a multiload tap/tzx file still no sign of rzx support

im sick of trying to find things it is worse than the super market!

mb-02+ piccy gallery http://www.benophetinternet.nl/hobby/mb02/gallery.htm

would it be impossible to make the video interlaced - 6,912 bytes per 50Hz pal tv frames 6,912x2tstates from the DMA read a port write data to ram - i do not understand how the multitech screen system works though it must be altering the attributes 7 times on the fly so to speak so an extra 6,144 bytes of attributes on top of the 6,144 bytes of pixels does that make any sense

you weren't in a coma for 23½months of the 24 then!

On 24/04/2013, Matt Westcott notifications@github.com wrote:

"two years to write that routine? can i ask were you very busy with work /family etc?"

Well, it wasn't two years of continuous effort - it was more like trying different approaches, finding that they didn't work, and then abandoning the idea... and then returning to it a few months later with a new idea.

"the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible"

There's no Z80 instruction that can do all of that in one go... INI increments the B register rather than C. You would have to increment C as a separate operation, something like: INI / DEC B / INC C / INI / DEC B / INC C...

"http://www.truppel-online.de/Fotos/Seite.html

do you think this is fake? seems weird only the Real Spectrum emulator manages to emulate it mind you there's only one emulator manages the fdd3000"

I don't really know much about the MB-02. I guess disk systems tend to be quite low priority for emulator writers, because there's not much dedicated software for them (compared to the +3 or TR-DOS, where implementing that system will open up access to hundreds of new software titles) - and the features they offer (fast loading, snapshotting) are already provided by the emulator itself.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16956031

rogerjowett commented 11 years ago

matt you wrote this here: are you sure that doesn't have something to do with the ay in the fuller being on a contentioned port? sounds daft i know but i read it somewhere - isn't the partial port decoding mean that some ports a fully contentioned and some aren't? would dktronics/datel/cheetah/ram/ other ay interface manufacturers be as daft as to put their ay on a contentioned port?

http://bit.ly/15LHWOO Unless the DKtronics interface has its own crystal on board, I suspect it's not going to work, based on my experience of trying to do something similar with the Fuller Box several years back. The problem is that the clock signal on the expansion port is the one seen by the Z80, with contention delays applied - so on average, the external AY runs a few percent slower than the internal one. Played on its own, I expect it's not noticeable, but when you're trying to keep two chips in tune, it's a deal-breaker.

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

sent that one to amazon

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.shadowmagic.org.uk/spectrum/roms.html

there's some roms here but there's no list anywhere of which emulators actually emulate the full features of the hardware interfaces i haven't found one that does the uhf video output on a CRT crosstalk synchronization or phosphoric delay?

and you can forget the interface 1 network or the serial ports you cant even find more then one emulator that manages the fdd3000 forget the PDS and the micro command

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=OKxjXtNyS6E

this one is it scrolling the screen dont ask me how the DMA does this i thought it was for reading/writing data to/from port/ram (with optional on the fly byte compare) 4MHz = 2MB(depending on ram refresh i guess) wouldnt the DMA need to read a byte to the accumulator - the accumulator need to shift itleft one bit then DMA write it back to ram

  • didnt know dma coulr read data from ram into accumulator - or does the accumulator still have to read the data from ram into it then use dma to write it back - didnt know it coulr read or write to or from any registers at all oh well must have been confused

unless he has stored 8 pre shifted versions of the entire screen in ram - its only 6,144x8 = 48kb so possible on the 128!

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

supposing you hadnt focussed teh routine on the ay audio sample supposing you had wanted to figure out how quickly you could read the pixels 6kb into video ram or the shadow video ram buffer on the 128

supposing you had stumbled across real spectrum:

http://ramsoft.bbk.org.omegahg.com/realspec.html

boot rom - think it only has 128kb of extra ram not the full 1mb: http://www.8bc.com/sinclair/DOWNLOAD/

maybe you can find rom and a boot disc here: http://tcg.speccy.cz/zoom/mb02.html

yes boot rom and boot discs are here

http://velesoft.speccy.cz/profi/profi-firmware-1low.htm

there's a video that might help i still havent figuree out how the disc works i think its a bit like having a 1.8mb casette only i have no idea how the tape head pointer works- they wont explain how you rewind it when running a multiload tap/tzx file still no sign of rzx support

im sick of trying to find things it is worse than the super market!

mb-02+ piccy gallery http://www.benophetinternet.nl/hobby/mb02/gallery.htm

would it be impossible to make the video interlaced - 6,912 bytes per 50Hz pal tv frames 6,912x2tstates from the DMA read a port write data to ram - i do not understand how the multitech screen system works though it must be altering the attributes 7 times on the fly so to speak so an extra 6,144 bytes of attributes on top of the 6,144 bytes of pixels does that make any sense

you weren't in a coma for 23½months of the 24 then!

On 24/04/2013, Matt Westcott notifications@github.com wrote:

"two years to write that routine? can i ask were you very busy with work /family etc?"

Well, it wasn't two years of continuous effort - it was more like trying different approaches, finding that they didn't work, and then abandoning the idea... and then returning to it a few months later with a new idea.

"the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible"

There's no Z80 instruction that can do all of that in one go... INI increments the B register rather than C. You would have to increment C as a separate operation, something like: INI / DEC B / INC C / INI / DEC B / INC C...

"http://www.truppel-online.de/Fotos/Seite.html

do you think this is fake? seems weird only the Real Spectrum emulator manages to emulate it mind you there's only one emulator manages the fdd3000"

I don't really know much about the MB-02. I guess disk systems tend to be quite low priority for emulator writers, because there's not much dedicated software for them (compared to the +3 or TR-DOS, where implementing that system will open up access to hundreds of new software titles) - and the features they offer (fast loading, snapshotting) are already provided by the emulator itself.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16956031

rogerjowett commented 11 years ago

http://zxspectrum48.i-demo.pl/48K_AY_games.html

are you sure ay in fuller wasnt on contentioned port? not sure about dk/cheetah/ram/datel/didaktik melodic http://zxspectrum48.i-demo.pl/aymusic.html

rwap etc sellmy retro

how do we search the hardware index for all interfaces with ay8912 ? please

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

matt you wrote this here: are you sure that doesn't have something to do with the ay in the fuller being on a contentioned port? sounds daft i know but i read it somewhere - isn't the partial port decoding mean that some ports a fully contentioned and some aren't? would dktronics/datel/cheetah/ram/ other ay interface manufacturers be as daft as to put their ay on a contentioned port?

http://bit.ly/15LHWOO Unless the DKtronics interface has its own crystal on board, I suspect it's not going to work, based on my experience of trying to do something similar with the Fuller Box several years back. The problem is that the clock signal on the expansion port is the one seen by the Z80, with contention delays applied - so on average, the external AY runs a few percent slower than the internal one. Played on its own, I expect it's not noticeable, but when you're trying to keep two chips in tune, it's a deal-breaker.

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

sent that one to amazon

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.shadowmagic.org.uk/spectrum/roms.html

there's some roms here but there's no list anywhere of which emulators actually emulate the full features of the hardware interfaces i haven't found one that does the uhf video output on a CRT crosstalk synchronization or phosphoric delay?

and you can forget the interface 1 network or the serial ports you cant even find more then one emulator that manages the fdd3000 forget the PDS and the micro command

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=OKxjXtNyS6E

this one is it scrolling the screen dont ask me how the DMA does this i thought it was for reading/writing data to/from port/ram (with optional on the fly byte compare) 4MHz = 2MB(depending on ram refresh i guess) wouldnt the DMA need to read a byte to the accumulator - the accumulator need to shift itleft one bit then DMA write it back to ram

  • didnt know dma coulr read data from ram into accumulator - or does the accumulator still have to read the data from ram into it then use dma to write it back - didnt know it coulr read or write to or from any registers at all oh well must have been confused

unless he has stored 8 pre shifted versions of the entire screen in ram - its only 6,144x8 = 48kb so possible on the 128!

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

supposing you hadnt focussed teh routine on the ay audio sample supposing you had wanted to figure out how quickly you could read the pixels 6kb into video ram or the shadow video ram buffer on the 128

supposing you had stumbled across real spectrum:

http://ramsoft.bbk.org.omegahg.com/realspec.html

boot rom - think it only has 128kb of extra ram not the full 1mb: http://www.8bc.com/sinclair/DOWNLOAD/

maybe you can find rom and a boot disc here: http://tcg.speccy.cz/zoom/mb02.html

yes boot rom and boot discs are here

http://velesoft.speccy.cz/profi/profi-firmware-1low.htm

there's a video that might help i still havent figuree out how the disc works i think its a bit like having a 1.8mb casette only i have no idea how the tape head pointer works- they wont explain how you rewind it when running a multiload tap/tzx file still no sign of rzx support

im sick of trying to find things it is worse than the super market!

mb-02+ piccy gallery http://www.benophetinternet.nl/hobby/mb02/gallery.htm

would it be impossible to make the video interlaced - 6,912 bytes per 50Hz pal tv frames 6,912x2tstates from the DMA read a port write data to ram - i do not understand how the multitech screen system works though it must be altering the attributes 7 times on the fly so to speak so an extra 6,144 bytes of attributes on top of the 6,144 bytes of pixels does that make any sense

you weren't in a coma for 23½months of the 24 then!

On 24/04/2013, Matt Westcott notifications@github.com wrote:

"two years to write that routine? can i ask were you very busy with work /family etc?"

Well, it wasn't two years of continuous effort - it was more like trying different approaches, finding that they didn't work, and then abandoning the idea... and then returning to it a few months later with a new idea.

"the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible"

There's no Z80 instruction that can do all of that in one go... INI increments the B register rather than C. You would have to increment C as a separate operation, something like: INI / DEC B / INC C / INI / DEC B / INC C...

"http://www.truppel-online.de/Fotos/Seite.html

do you think this is fake? seems weird only the Real Spectrum emulator manages to emulate it mind you there's only one emulator manages the fdd3000"

I don't really know much about the MB-02. I guess disk systems tend to be quite low priority for emulator writers, because there's not much dedicated software for them (compared to the +3 or TR-DOS, where implementing that system will open up access to hundreds of new software titles) - and the features they offer (fast loading, snapshotting) are already provided by the emulator itself.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16956031

rogerjowett commented 11 years ago

none of those work on fuller - it was a different port...

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://zxspectrum48.i-demo.pl/48K_AY_games.html

are you sure ay in fuller wasnt on contentioned port? not sure about dk/cheetah/ram/datel/didaktik melodic http://zxspectrum48.i-demo.pl/aymusic.html

rwap etc sellmy retro

how do we search the hardware index for all interfaces with ay8912 ? please

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

matt you wrote this here: are you sure that doesn't have something to do with the ay in the fuller being on a contentioned port? sounds daft i know but i read it somewhere - isn't the partial port decoding mean that some ports a fully contentioned and some aren't? would dktronics/datel/cheetah/ram/ other ay interface manufacturers be as daft as to put their ay on a contentioned port?

http://bit.ly/15LHWOO Unless the DKtronics interface has its own crystal on board, I suspect it's not going to work, based on my experience of trying to do something similar with the Fuller Box several years back. The problem is that the clock signal on the expansion port is the one seen by the Z80, with contention delays applied - so on average, the external AY runs a few percent slower than the internal one. Played on its own, I expect it's not noticeable, but when you're trying to keep two chips in tune, it's a deal-breaker.

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

sent that one to amazon

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.shadowmagic.org.uk/spectrum/roms.html

there's some roms here but there's no list anywhere of which emulators actually emulate the full features of the hardware interfaces i haven't found one that does the uhf video output on a CRT crosstalk synchronization or phosphoric delay?

and you can forget the interface 1 network or the serial ports you cant even find more then one emulator that manages the fdd3000 forget the PDS and the micro command

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=OKxjXtNyS6E

this one is it scrolling the screen dont ask me how the DMA does this i thought it was for reading/writing data to/from port/ram (with optional on the fly byte compare) 4MHz = 2MB(depending on ram refresh i guess) wouldnt the DMA need to read a byte to the accumulator - the accumulator need to shift itleft one bit then DMA write it back to ram

  • didnt know dma coulr read data from ram into accumulator - or does the accumulator still have to read the data from ram into it then use dma to write it back - didnt know it coulr read or write to or from any registers at all oh well must have been confused

unless he has stored 8 pre shifted versions of the entire screen in ram - its only 6,144x8 = 48kb so possible on the 128!

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

supposing you hadnt focussed teh routine on the ay audio sample supposing you had wanted to figure out how quickly you could read the pixels 6kb into video ram or the shadow video ram buffer on the 128

supposing you had stumbled across real spectrum:

http://ramsoft.bbk.org.omegahg.com/realspec.html

boot rom - think it only has 128kb of extra ram not the full 1mb: http://www.8bc.com/sinclair/DOWNLOAD/

maybe you can find rom and a boot disc here: http://tcg.speccy.cz/zoom/mb02.html

yes boot rom and boot discs are here

http://velesoft.speccy.cz/profi/profi-firmware-1low.htm

there's a video that might help i still havent figuree out how the disc works i think its a bit like having a 1.8mb casette only i have no idea how the tape head pointer works- they wont explain how you rewind it when running a multiload tap/tzx file still no sign of rzx support

im sick of trying to find things it is worse than the super market!

mb-02+ piccy gallery http://www.benophetinternet.nl/hobby/mb02/gallery.htm

would it be impossible to make the video interlaced - 6,912 bytes per 50Hz pal tv frames 6,912x2tstates from the DMA read a port write data to ram - i do not understand how the multitech screen system works though it must be altering the attributes 7 times on the fly so to speak so an extra 6,144 bytes of attributes on top of the 6,144 bytes of pixels does that make any sense

you weren't in a coma for 23½months of the 24 then!

On 24/04/2013, Matt Westcott notifications@github.com wrote:

"two years to write that routine? can i ask were you very busy with work /family etc?"

Well, it wasn't two years of continuous effort - it was more like trying different approaches, finding that they didn't work, and then abandoning the idea... and then returning to it a few months later with a new idea.

"the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible"

There's no Z80 instruction that can do all of that in one go... INI increments the B register rather than C. You would have to increment C as a separate operation, something like: INI / DEC B / INC C / INI / DEC B / INC C...

"http://www.truppel-online.de/Fotos/Seite.html

do you think this is fake? seems weird only the Real Spectrum emulator manages to emulate it mind you there's only one emulator manages the fdd3000"

I don't really know much about the MB-02. I guess disk systems tend to be quite low priority for emulator writers, because there's not much dedicated software for them (compared to the +3 or TR-DOS, where implementing that system will open up access to hundreds of new software titles) - and the features they offer (fast loading, snapshotting) are already provided by the emulator itself.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16956031

rogerjowett commented 11 years ago

if it took you two years to do it in the first place do you think that this time we might try to get a few more programmers involved only instead of all of them writing their own wordprocessor and assembler - yes we have more than one on the sam coupe can you imaging maybe if programmers somehow learned to communicate with each other - i know its impossible they cant explain the processor mnemonics to normal idiots like me! and i asked zilog too!

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

none of those work on fuller - it was a different port...

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://zxspectrum48.i-demo.pl/48K_AY_games.html

are you sure ay in fuller wasnt on contentioned port? not sure about dk/cheetah/ram/datel/didaktik melodic http://zxspectrum48.i-demo.pl/aymusic.html

rwap etc sellmy retro

how do we search the hardware index for all interfaces with ay8912 ? please

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

matt you wrote this here: are you sure that doesn't have something to do with the ay in the fuller being on a contentioned port? sounds daft i know but i read it somewhere - isn't the partial port decoding mean that some ports a fully contentioned and some aren't? would dktronics/datel/cheetah/ram/ other ay interface manufacturers be as daft as to put their ay on a contentioned port?

http://bit.ly/15LHWOO Unless the DKtronics interface has its own crystal on board, I suspect it's not going to work, based on my experience of trying to do something similar with the Fuller Box several years back. The problem is that the clock signal on the expansion port is the one seen by the Z80, with contention delays applied - so on average, the external AY runs a few percent slower than the internal one. Played on its own, I expect it's not noticeable, but when you're trying to keep two chips in tune, it's a deal-breaker.

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

sent that one to amazon

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.shadowmagic.org.uk/spectrum/roms.html

there's some roms here but there's no list anywhere of which emulators actually emulate the full features of the hardware interfaces i haven't found one that does the uhf video output on a CRT crosstalk synchronization or phosphoric delay?

and you can forget the interface 1 network or the serial ports you cant even find more then one emulator that manages the fdd3000 forget the PDS and the micro command

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

http://www.youtube.com/watch?v=OKxjXtNyS6E

this one is it scrolling the screen dont ask me how the DMA does this i thought it was for reading/writing data to/from port/ram (with optional on the fly byte compare) 4MHz = 2MB(depending on ram refresh i guess) wouldnt the DMA need to read a byte to the accumulator - the accumulator need to shift itleft one bit then DMA write it back to ram

  • didnt know dma coulr read data from ram into accumulator - or does the accumulator still have to read the data from ram into it then use dma to write it back - didnt know it coulr read or write to or from any registers at all oh well must have been confused

unless he has stored 8 pre shifted versions of the entire screen in ram - its only 6,144x8 = 48kb so possible on the 128!

On 26/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

supposing you hadnt focussed teh routine on the ay audio sample supposing you had wanted to figure out how quickly you could read the pixels 6kb into video ram or the shadow video ram buffer on the 128

supposing you had stumbled across real spectrum:

http://ramsoft.bbk.org.omegahg.com/realspec.html

boot rom - think it only has 128kb of extra ram not the full 1mb: http://www.8bc.com/sinclair/DOWNLOAD/

maybe you can find rom and a boot disc here: http://tcg.speccy.cz/zoom/mb02.html

yes boot rom and boot discs are here

http://velesoft.speccy.cz/profi/profi-firmware-1low.htm

there's a video that might help i still havent figuree out how the disc works i think its a bit like having a 1.8mb casette only i have no idea how the tape head pointer works- they wont explain how you rewind it when running a multiload tap/tzx file still no sign of rzx support

im sick of trying to find things it is worse than the super market!

mb-02+ piccy gallery http://www.benophetinternet.nl/hobby/mb02/gallery.htm

would it be impossible to make the video interlaced - 6,912 bytes per 50Hz pal tv frames 6,912x2tstates from the DMA read a port write data to ram - i do not understand how the multitech screen system works though it must be altering the attributes 7 times on the fly so to speak so an extra 6,144 bytes of attributes on top of the 6,144 bytes of pixels does that make any sense

you weren't in a coma for 23½months of the 24 then!

On 24/04/2013, Matt Westcott notifications@github.com wrote:

"two years to write that routine? can i ask were you very busy with work /family etc?"

Well, it wasn't two years of continuous effort - it was more like trying different approaches, finding that they didn't work, and then abandoning the idea... and then returning to it a few months later with a new idea.

"the blockI/O instructions how do i tell it not only that it needs to read/write 16bit port address but that there are 16 values and that the bottom four bits of the C register need incremented to read the next port value these are the 16 CLUT colour look table values for sam coupe 16 colour palette each one with 7 bit values so 128 colour choice possible"

There's no Z80 instruction that can do all of that in one go... INI increments the B register rather than C. You would have to increment C as a separate operation, something like: INI / DEC B / INC C / INI / DEC B / INC C...

"http://www.truppel-online.de/Fotos/Seite.html

do you think this is fake? seems weird only the Real Spectrum emulator manages to emulate it mind you there's only one emulator manages the fdd3000"

I don't really know much about the MB-02. I guess disk systems tend to be quite low priority for emulator writers, because there's not much dedicated software for them (compared to the +3 or TR-DOS, where implementing that system will open up access to hundreds of new software titles) - and the features they offer (fast loading, snapshotting) are already provided by the emulator itself.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-16956031

gasman commented 11 years ago

"supposing you hadnt focussed teh routine on the ay audio sample supposing you had wanted to figure out how quickly you could read the pixels 6kb into video ram or the shadow video ram buffer on the 128 " I'm sure DMA would improve performance, but as I said, I'm not interested in writing a video player all over again for slightly different hardware.

"would it be impossible to make the video interlaced" Interlace on the Spectrum is a bit of a cheat - it's more of an optical illusion, with your eyes 'blending' two frames together, than a real graphical effect. I don't think interlaced video would work - you'd just see a continuous stream of images, with no indication of which ones should be 'blended' together.

"i do not understand how the multitech screen system works though it must be altering the attributes 7 times on the fly so to speak" I don't know whether Multitech is an actual new hardware screen mode (similar to the Timex or SAM mode 2), or whether it's just using DMA to achieve 'traditional' multicolour tricks (changing the attribute bytes on every scanline) over the full width of the screen. If it's the latter, then I doubt that anyone could ever use it for video - it would be impossibly difficult to synchronise disk access with the screen display.

"http://www.youtube.com/watch?v=OKxjXtNyS6E" That looks like it's scrolling character-by-character to me, not pixel-by-pixel, so no bit shifting necessary - just an ordinary byte copy.

"are you sure that doesn't have something to do with the ay in the fuller being on a contentioned port?" No, that wouldn't cause the audio to go out of tune… there would be a delay of a few tstates when you write to the port, but after that point the AY would be generating an audio tone on its own, at the correct rate, unaffected by how the port communication works.

"how do we search the hardware index for all interfaces with ay8912 ? please" No idea. When I was shopping around for AY interfaces, I used magazine articles like http://www.worldofspectrum.org/showmag.cgi?mag=ZXComputing/Issue8502/Pages/ZXComputing850200115.jpg as a reference, but I'm sure that isn't a complete list.

rogerjowett commented 11 years ago

is this the gasman of which you speak think this first number 27 link doesnt work but the url might? woudlnt the DMA drive any port at nearly 8 times faster than the z80?

Closed #27.

https://github.com/gasman/goldfinch/issues/27

On 26/04/2013, Matt Westcott notifications@github.com wrote:

"supposing you hadnt focussed teh routine on the ay audio sample supposing you had wanted to figure out how quickly you could read the pixels 6kb into video ram or the shadow video ram buffer on the 128 " I'm sure DMA would improve performance, but as I said, I'm not interested in writing a video player all over again for slightly different hardware.

"would it be impossible to make the video interlaced" Interlace on the Spectrum is a bit of a cheat - it's more of an optical illusion, with your eyes 'blending' two frames together, than a real graphical effect. I don't think interlaced video would work - you'd just see a continuous stream of images, with no indication of which ones should be 'blended' together.

"i do not understand how the multitech screen system works though it must be altering the attributes 7 times on the fly so to speak" I don't know whether Multitech is an actual new hardware screen mode (similar to the Timex or SAM mode 2), or whether it's just using DMA to achieve 'traditional' multicolour tricks (changing the attribute bytes on every scanline) over the full width of the screen. If it's the latter, then I doubt that anyone could ever use it for video - it would be impossibly difficult to synchronise disk access with the screen display.

"http://www.youtube.com/watch?v=OKxjXtNyS6E" That looks like it's scrolling character-by-character to me, not pixel-by-pixel, so no bit shifting necessary - just an ordinary byte copy.

"are you sure that doesn't have something to do with the ay in the fuller being on a contentioned port?" No, that wouldn't cause the audio to go out of tune… there would be a delay of a few tstates when you write to the port, but after that point the AY would be generating an audio tone on its own, at the correct rate, unaffected by how the port communication works.

"how do we search the hardware index for all interfaces with ay8912 ? please" No idea. When I was shopping around for AY interfaces, I used magazine articles like http://www.worldofspectrum.org/showmag.cgi?mag=ZXComputing/Issue8502/Pages/ZXComputing850200115.jpg as a reference, but I'm sure that isn't a complete list.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-17077960

rogerjowett commented 11 years ago

OK, I see... the Harlequin must be using similar display circuitry to the Pentagon, where the effect of the OUT is visible immediately, rather than remaining at the existing colour until the next 8px boundary

whoops a daisy must have missed this comment so technically altering the border colour making it move left or right by a small pixel amount is technically not something the real ula in a 48 can do?

On 28/04/2013, Roger Jowett rogerjowett@gmail.com wrote:

is this the gasman of which you speak think this first number 27 link doesnt work but the url might? woudlnt the DMA drive any port at nearly 8 times faster than the z80?

Closed #27.

https://github.com/gasman/goldfinch/issues/27

On 26/04/2013, Matt Westcott notifications@github.com wrote:

"supposing you hadnt focussed teh routine on the ay audio sample supposing you had wanted to figure out how quickly you could read the pixels 6kb into video ram or the shadow video ram buffer on the 128 " I'm sure DMA would improve performance, but as I said, I'm not interested in writing a video player all over again for slightly different hardware.

"would it be impossible to make the video interlaced" Interlace on the Spectrum is a bit of a cheat - it's more of an optical illusion, with your eyes 'blending' two frames together, than a real graphical effect. I don't think interlaced video would work - you'd just see a continuous stream of images, with no indication of which ones should be 'blended' together.

"i do not understand how the multitech screen system works though it must be altering the attributes 7 times on the fly so to speak" I don't know whether Multitech is an actual new hardware screen mode (similar to the Timex or SAM mode 2), or whether it's just using DMA to achieve 'traditional' multicolour tricks (changing the attribute bytes on every scanline) over the full width of the screen. If it's the latter, then I doubt that anyone could ever use it for video - it would be impossibly difficult to synchronise disk access with the screen display.

"http://www.youtube.com/watch?v=OKxjXtNyS6E" That looks like it's scrolling character-by-character to me, not pixel-by-pixel, so no bit shifting necessary - just an ordinary byte copy.

"are you sure that doesn't have something to do with the ay in the fuller being on a contentioned port?" No, that wouldn't cause the audio to go out of tune… there would be a delay of a few tstates when you write to the port, but after that point the AY would be generating an audio tone on its own, at the correct rate, unaffected by how the port communication works.

"how do we search the hardware index for all interfaces with ay8912 ? please" No idea. When I was shopping around for AY interfaces, I used magazine articles like http://www.worldofspectrum.org/showmag.cgi?mag=ZXComputing/Issue8502/Pages/ZXComputing850200115.jpg as a reference, but I'm sure that isn't a complete list.


Reply to this email directly or view it on GitHub: https://github.com/gasman/goldfinch/issues/27#issuecomment-17077960