25th Anniversary of the Sinclair ZX Spectrum 310
Alioth writes "Twenty five years ago today, Sinclair Research launched Britain's most popular home computer of the 1980s — the Sinclair ZX Spectrum. Costing about one third of the price of its rivals such as the Commodore 64 while having a faster CPU and a better BASIC interpreter, the machine sold well in many guises throughout the 1980s and had more than a staggering 9,000 software titles. The machine may well have done well in the US too, had Timex — the company building the machine under license in the US — not already been in financial trouble and about to fold. The machine was also extremely successful in Russia, although not for Sinclair Research — because the Russians made dozens of different clones of the machine, and did so right into the mid 1990s. The machine still has a healthy retro scene, including the development of new commercial software by Cronosoft, and new hardware such as the DivIDE, which allows a standard PC hard disc or compact flash card to be connected to the machine."
Why not emulate? fun for all bored students! (Score:4, Informative)
Re:And, as we all know... (Score:3, Informative)
Specifically, Jetpac, Knight Lore, 3D Deathchase and Quazatron along with better versions of Elite, Head Over Heels, Spindizzy and R-Type mean C64 LOSES.
Re:And, as we all know... (Score:4, Informative)
First and Most Significant For Me (Score:3, Informative)
I remember learning BASIC and assembly (Z80), playing Elite all through one night, playing games and learning lots of stuff.
And that little silver-paper thermal printer!
I've still got the 1981 ZX-Spectrum 48K in a box somewhere, with tapes of many games and that printer (and some spare 'paper'). The keyboard membrane has pretty much had it, making the computer almost useless, but one day I'll get a replacement, just for the nostalgia.
Re:Inaccurate summary (Score:2, Informative)
The CPU itself is also unarguably faster. While the 6502 and 6510 generally can perform more instructions per cycle (the fastest 6502/6510 instructions complete in 3 clock cycles rather than the Z80's 4 clock cycles), this is more than made up for by the Z80 having more registers and 16-bit register pairing - meaning programs need far fewer instructions to write. Add to that the Spectrum being clocked 3.5 times faster than the C64, it makes a noticable difference.
An example: to do 16 bit addition, the 6502 would need 20 cycles to do what the Z80 can do in a mere 11 cycles.
Commonly repeated incorrect factiod alert! (Score:3, Informative)
It did not have a faster CPU. It had a CPU running at a higher external bus clock. You'd think that after all these years that people would realize that MHz != performance, but I guess not.
The 6502 ran on a bus multiplier, meaning it ran faster internally than it did externally. This is true of practically any modern CPU, but was not so common back in the day. In general terms the 1MHz 6502 and 4MHz Z80 ran at the same internal speeds. That said, the 6502 was much more efficient and RISC-like. In practically any benchmark that scales for speed, the 6502 comes out ahead.
Arguably the fastest, in theory, 8-bit machine was the Atari series. They ran a 2 MHz 6502 (declocked to sync with video), which was twice as fast as any of the other 6502 machines and effectively the same as an 8MHz Z80. But again, these machines always finished at the bottom of the heap in BASIC benchmarks, which again demonstrates the point at the top.
Maury
Re:Z80s all around us (Score:3, Informative)
Re:Web browsing on 48k ZX Spectrum (Score:4, Informative)
http://www.worldofspectrum.org/forums/showthread.
Your problem is caused by the "keyword" system (Score:5, Informative)
I think that your problem with Spectrum programming is due to Sinclair's "keyword" system. This first appeared on the ZX80 [wikipedia.org]. A single touch of a ZX80 key gave you a whole BASIC keyword (e.g. PRINT, GOTO). This was fast and simple. Symbols were accessed with SHIFT, and you could still type single letters when it was required.
A similar system was used on the ZX81 [wikipedia.org] , but because it was more powerful, there were more keywords to squeeze onto the keyboard. Thus, some keywords required the user to type SHIFT+NEWLINE *then* hit the key.
Sinclair retained the "keyword" system for the ZX Spectrum. Unfortunately, this was *much* more complicated, and there were lots of keywords to fit in. This made the system complicated. Even at its release, the Spectrum was criticised for this. From "Your Computer" magazine:-
Of course, at that time, I didn't realise that many BASIC keywords on my Atari 800XL could be abbreviated; for example "PRINT" could be "?", "LIST" could be "L.", and so on. Sinclair should have done that on the Spectrum instead.
Incidentally, when the enhanced 128K Spectrum was released, the new BASIC abandoned the keyword system.
The Birthplace of the Megahertz wars (Score:5, Informative)
The Z-80 was essentially an 8080 with twice as many registers but no significant changes to the instruction set. the Z-80's. (well DMA but it was hard to use). I/O was a separate operation than memory access. And most instructions took 4 clock cycles but some took more and a few took 3.
The 6502 had a much leaner but more powerful instruction set with some very sophisticated computed branch offset instructions. It had fewer registered but mapped all of the first 256 bytes to behave like registers. (At that time It did not pay a significant speed penalty for accessing main memory over register memory.) All I/O was memory mapped. This allowed a simpler bus structure.
it ran at 1Mhz but most instructions were 1 cycle so it was faster than the Z-80.
These design features allowed for the two greatest innovations in modern computing history. Dynamic memory and Graphical displays
1) Dynamic memory.
Prior to the pet and apple, nearly all computers used Static memory which was not dense and used lots of power. Many bankrupt companies had tries to use Dynamic memory with the 8080. They all failed because no one successfully mastered the problem of robustly refreshing the memory without severely compromising the machine. The problem was that irregulat 3,4,5,6 cycle instructions set length. one could not predict easily when and how much of the time the memory bus would be in use by the CPU. As a result the refresh controller had to just opportunstically try to refresh the memory. This resulted in complex logic that sometimes failed to get through the whole row-address space in the required time. As a result, the only viable approach was to insert wait states into the process to give the refresh a guarenteed access. This slowed the CPU and also had complex logic. It even messed up timing loops like those used in I/O for baud rates and such.
The 6502 had a regular heart beat. The second half of the cycle was gaurenteed not to access memory. So the refersh sould be poot on the back side of the cycle. no special logic was needed. No wait states.
Of course eventually refresh controllers got better and that did allow the intels to work with dynamic memory. But the 6502 got their first.
2) Graphics.
Most graphics on the 8080/z-80 used I/O ports. Think CGI graphics. There were of course exceptions. But the reason for the lack of memory mapping was How was the video card supposed to access the main memory. It would have had to use wait states. lots of them. and would have halved the CPU rate.
Memory mapped graphics were of course natural for 6502. Wozniak went one better. He used that backside clock cycle to access the memory for the video output. Now wait you say, how can he use the backside clock cycle to video access if it's already in use for the refresh? That's the genius part. He used the video access as the refresh. The video was just incrementing over the entire row-addrress space in a very regular cycle. Refresh was assured and no circuits was needed.
the Dynamic ram and overall lower chip counts, simpler bus logic, video, refresh all meant smaller power supplies too. the expansion cards required less logic to decode the complex bus signals so the expansion cards on the apple were literally 1/4 the size of the ones on the s-100 bus that was standard in the 8080 world.
Re:The Birthplace of the Megahertz wars (Score:5, Informative)
The fastest 6502 instructions were not one cycle, but two cycles.
The fastest Z80 instructions were four cycles.
A very good 6502 programmer could write a program for the 1MHz 6502 in Commodore machines run as quickly as a run-of-the-mill Z80 programmer could on the Spectrum.
While the slowest 6502 cycles instructions were around 7 clock cycles, and the slowest Z80 instructions (the index register instructions) were real dogs, one or two of them taking up to 20 cycles to complete, this was more than made up by register pairing. A Z80 could do a 16 bit add in 11 cycles, where the 6502 would take on the order of 20 (and use more memory).
There was a lot more to the Z80 than a slight improvement over the 8080 - it had not a few but many more instructions (all the DD and ED prefixes), including the addition of extra registers such as the index registers. The Z80 also had more interrupt modes than the 8080, including the very useful IM 2 which meant you could trivially wrest interrupt control from the ROM program (which simply wouldn't be possible with an 8080 based machine). It not only had the block move instructions (LDIR and LDDR) but also block I/O transfer instructions and block search instructions which helped keep the memory footprint of many programs down.
Re:The Birthplace of the Megahertz wars (Score:3, Informative)
DRAM refresh was also not a problem for the Z80 - the Z80 actually had built in DRAM refresh circuitry - this is one reason it was so popular, because you didn't need a big pile of glue logic to do DRAM refresh because the Z80 provided a
The Z80 is not an 8080, it merely has binary compatibility with the 8080. The chip is electronically quite different.
Also, static RAM uses considerably less power than dynamic RAM. DRAM was cheaper, that's all.
Re:My childhood in a nutshell (Score:3, Informative)
Re:Ich Bin German (Score:2, Informative)
To highlight just one point where ZX BASIC is clearly superior than C64 BASIC:
How hard was it to write a program which let you input an arbitrary function (which used only built-in BASIC commands), and plot its graph on the screen? Well, you'd have to write your own expression parser, despite the fact that a parser for BASIC expression was already built into the computer!
OTOH, with the ZX Spectrum, the parsing could be done with a simple VAL. That is, input your formula into some string variable (say, f$), and then evaluate it at any time with VAL f$. The only BASIC I've seen to have that capability was ZX BASIC. I don't understand why, after all those were all interpreters, and thus had to have the parsing code in memory anyway. All that was missing was a way to call it on your strings.
The same text again in German, in case you didn't understand the English above -- Derselbe Text nochmal auf Deutsch, für den Fall, daß Du das Englisch oben nicht verstanden hast.
Worüber Du Dich beschwert hast, hat überhaupt nichts mit der BASIC-Implementierung des Spectrum zu tun. Es ist die Eingabemethode, mit der Du Probleme hattest.
Um nur einen Punkt hervorzuheben, in dem das ZX-BASIC dem C64-Basic überlegen war:
Wie schwierig war es, auf dem C64 ein Programm zu schreiben, das es erlaubte, eine beliebige Funktion einzugeben und dann ihren Graphen auf dem Bildschirm zu zeichnen? Nun, Du hättest einen eigenen Parser für Ausdrücke schreiben müssen, obwohl ein Parser für BASIC-Ausdrücke bereits in den Computer "eingebaut" war!
Andererseits konnte mit dem ZX Spectrum das Parsen mit einem einfachen VAL erledigt werden. Also, gib Deine Formel in eine Stringvariable (z.B. f$) ein, und werte sie jederzeit mit VAL f$ aus. Das einzige BASIC mit dieser Möglichkeit, das mit untergekommen ist, ist ZX-BASIC. Ich verstehe nicht, warum, denn letztlich waren sie alle Interpreter, und mussten also den Paser-Code ohnehin im Speicher haben. Alles, was fehlte, war eine Möglichkeit, ihn auf eigenen Strings auszuführen.
Re:The Birthplace of the Megahertz wars (Score:2, Informative)
Because Commodore owned MOS Technology, along with the designers and fabrication facilities to make all their own chips. They didn't need to pay anyone for the 6510's they were putting into all of their hardware; during the high-point of Commodore they litterly cost them a couple of cents each.
The real question is how Commodore failed to improve on the basic 6502 design in any significant way. The short answer is of course "Bad management", but then this is Commodore we're talking about.
Speccys in the US (Score:3, Informative)
There were 3 big barriers (at the time) to stop British machines taking off in the US:
Re:My childhood in a nutshell (Score:2, Informative)
Re:Commonly repeated incorrect factiod alert! (Score:3, Informative)
Many 6502 instructions completed in only 2 cycles, although I believe the decode phase of the instruction was executed in parallel with the register write phase of the previous instruction, so in some circumstances it may have taken 3 cycles to execute the same instruction.
Re 16 bit add, and assuming one memory operand and other operand in A and X registers:
CLC (2 cycles)
ADC (3 cycles)
TAY (2 cycles)
TXA (2 cycles)
ADC (3 cycles)
12 cycles; results are in Y and A registers. Can be cut to 10 cycles if you know the carry flag will be clear on entry.
In Z80, again with one reg and one mem, this time the mem is pointed to by HL (Z80 doesn't support direct addressing) and the reg value is in DE.
LD BC, (HL) (10 cycles)
ADD BC, DE (11 cycles)
Result is in BC, total time to execute is 21 cycles. Can be cut to 11 cycles if both operands are in registers. Given that most of the time your values won't be in registers and that the 6502 runs at half the number of cycles per second as the Z80, it's pretty much neck and neck. In the case where you have an inner loop with data requirements that fit in your available 6 pairs of general purpose registers, though, the Z80's a clear winner.
Machines like the BBC Micro got better performance than the Spectrum not from the 6502, but because they had more hardware support which meant the CPU didn't have to do everything.
The main thing that made the BBC faster than the Spectrum, IMO, was its BASIC interpreter's support for integer variables.