25th Anniversary of the Sinclair ZX Spectrum
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."
All of us math students with Ti-89/92 partial with the ZX can emulate it right on the calculator. No more waiting to be at home to play our favorite ZX programs. (mind you the screen may be small, but it's still better than nothing!)
Obviously. God, I wish I hadn't sqandered all my mod points on tedious factual argument elsewhere.
Specifically, Jetpac, Knight Lore, 3D Deathchase and Quazatron along with better versions of Elite, Head Over Heels, Spindizzy and R-Type mean C64 LOSES.
"I Know You Are But What Am I?"
...although it should be noted that Elite was better on the BBC Model-B; especially if you had analogue joysticks.
It was the first computer in our household, and in many ways by far the most significant.
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.
No, I'm not joking. ZX BASIC was miles ahead of Commodore BASIC.
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.
Oolite: Elite-like game. For Mac, Linux and Windows
"Commodore 64 while having a faster CPU"
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
The "classic" Z80 (as used in the Spectrum) is still made and can be bought from most electronics supplies firms (only in CMOS versions these days, but the CMOS version is a drop-in replacement for the old NMOS version). Zilog also make several advanced variants designed for microcontrollers, including one with a built in Ethernet MAC (the eZ80). They are cheap and easy to use, and are popular because of this.
Oolite: Elite-like game. For Mac, Linux and Windows
The Russians have done it.
p hp?t=15756
http://www.worldofspectrum.org/forums/showthread.
Oolite: Elite-like game. For Mac, Linux and Windows
I think that your problem with Spectrum programming is due to Sinclair's "keyword" system. This first appeared on the ZX80. 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 , 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:- Sinclair invented the "one-touch key" system for the ZX-80, which ensured that the computer knew that the first key pressed after a line number, or after the word Then, would produce a keyword, such as Let, Print, Poke or Goto. This meant that programming was fast and positive. The ZX-81 demanded a sequence of key presses - such as Shift, then Function, then a key - to get the results you wanted. Sinclair is obviously wedded to the one-touch entry system, but it is really not suited to the Spectrum. The sequence of key presses required for Ink and Atn, for example, requires the same number of key presses as would be needed to type the word in directly. [..] The one-touch entry system, retained from the ZX-81, is not suitable for the Spectrum and leads to complicated multi-shift operations when keying some functions. It should have been discarded. I also found the Spectrum's keyword system too complicated. I remember having an argument in the school playground where a Spectrum owner said that he could type "RANDOMIZE" in less key presses than my machine.
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.
"Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
The 1 Mhz 6502 was significantly faster and had a more advanced instruction set than the 3.5Mhz Z-80.
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.
Some drink at the fountain of knowledge. Others just gargle.
"Slashdot - News and Chat Sites Deviant". (Click "homepage" link above for details).
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.
The Tao of math: The numbers you can count are not the real numbers.
There were 3 big barriers (at the time) to stop British machines taking off in the US:
In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
Actually the screen was divided into 3 interlaced sections - this could be seen quite clearly when a game loaded a title screen - and it made addressing it directly less than straightforward; iirc I used to use a lookup table to write to the screen.