This external heatsink lead to the system's nickname, "The Toast Rack". The machine was simultaneously presented for the first time and launched in September at the SIMO '85 trade show in Spain, with a price of 44, pesetas. The new commands took the place of two existing user-defined-character spaces causing compatibility problems with certain BASIC programs.
The ZX Spectrum had no internal speaker, unlike its predecessors. Sound was produced from the television speaker instead. The Spanish version had the "K" logo in white; the British one had the same logo in red. The machine featured an all-new grey case featuring a spring-loaded keyboard, dual joystick ports, and a built-in cassette recorder dubbed the "Datacorder" like the Amstrad CPC , but was in most respects identical to the ZX Spectrum The main menu screen lacked the Spectrum 's "Tape Test" option, and the ROM was altered to account for a new Amstrad copyright message. These changes resulted in minor incompatibility problems with software that accessed ROM routines at certain addresses.
Despite these changes, the layout remained identical to that of the Some older 48K and K games were incompatible with the machine. The ZX Interface 1 was incompatible due to differences in ROM and expansion connector, making it impossible to connect and use the Microdrive units. There was a regression in sound quality from the previous K models — an error with a resistor placement meant sound was distorted.
An enhanced version with better sound, graphics and other modifications was marketed in the USA by Timex as the Timex Sinclair Timex's derivatives were largely incompatible with Sinclair systems. Some of the Timex innovations were later adopted by Sinclair Research. Pandora had a flat-screen monitor and Microdrives and was intended to be Sinclair's business portable. After Amstrad bought the computer business of Sinclair Research, Sir Clive retained the rights to the Pandora project, and it evolved into the Cambridge Computer Z88 , launched in Starting in , Timex of Portugal developed and produced several Timex branded computers, including the Timex Computer , highly compatible with the Sinclair ZX Spectrum 48K, which was very successful in both Portugal and Poland.
Several other upgrades were made available, including a BASIC64 cartridge that enabled the TC to use high resolution x modes. Only one complete and fully working prototype of the TC was made. It went into crowdfunding in and the first boards went on sale during the same year. It's a full computer-form redesign of the ZX Spectrum computer, using FPGA technology and significantly expanding the original hardware abilities while still maintaining compatibility. The final computer was scheduled to be delivered to Kickstarter backers in The board-only computer 'Just the Board' tier was delivered to backers in late .
However, the full computer since missed multiple revised release dates. As of July , it has still not been shipped due to problems with the keyboard design. Numerous unofficial Spectrum clones were produced, especially in the Eastern and Middle European countries e. There were also clones produced in South America e. In the Soviet Union , ZX Spectrum clones were assembled by thousands of small start-ups and distributed through poster ads and street stalls. Over 50 such clone models existed. Several peripherals were marketed by Sinclair: the ZX Printer was already on the market,  as the ZX Spectrum expansion bus was partially backwards-compatible with that of the ZX There were a plethora of third-party hardware addons.
Keyboards were especially popular in view of the original's notorious "dead flesh" feel. Kempston joystick interface. This bundle, together with OCP's Stock Control, Finance and Payroll systems, introduced small businesses to a streamlined, computerised operation. Both systems had the ability to store memory images onto disk snapshots could later be used to restore the Spectrum to its exact previous state. They were both compatible with the Microdrive command syntax, which made porting existing software much simpler.
During the mids, Telemap Group Ltd launched a fee-based service allowing users to connect their ZX Spectrums via a Prism Micro Products VTX modem to a viewdata service known as Micronet , hosted by Prestel , which provided news and information about microcomputers. The service allowed a form of instant messaging and online shopping.
Some ZX Spectrum-compatible joysticks are still being manufactured and other replacement parts—like keyboard membranes, multicoloured cases and faceplates—are also being produced. While games comprised the majority of commercial ZX Spectrum software, there were also programming language implementations, databases e. VU-File  , word processors e. VU-Calc  , drawing and painting tools e. VU-3D   and archaeology software  amongst many other types. The early Spectrum models' great success as a games platform came in spite of its lack of built-in joystick ports, primitive sound generation, and colour support that was optimised for text display:  the hardware limitations of the platform required a particular level of creativity from video game designers.
The last full price, commercial game be released for the Spectrum was Alternative Software's Dalek Attack , which was released in July Most Spectrum software was originally distributed on audio cassette tapes. The Spectrum was intended to work with a normal domestic cassette recorder,  and despite differences in audio reproduction fidelity, the software loading process was quite reliable and faster than on competing systems of the time [ citation needed ]. Although the ZX Microdrive was initially greeted with good reviews,  it never took off as a distribution method due to worries about the quality of the cartridges and piracy.
No games are known to be exclusively released on Microdrive. Although the Interface 2 proved popular, the high cost of ROM cartridges, and the fact that they were limited to 16K in size, meant that very few titles were released in this format. Software was distributed through print media; magazines  and books. Software distributed in this way was in general simpler and slower than its assembly language counterparts. Magazines printed long lists of checksummed hexadecimal digits with machine code games or tools.
Another software distribution method was to broadcast the audio stream from the cassette on another medium and have users record it onto an audio cassette themselves. In radio or television shows in many European countries, the host would describe a program, instruct the audience to connect a cassette tape recorder to the radio or TV and then broadcast the program over the airwaves in audio format.
Many copiers—utilities to copy programs from audio tape to another tape, microdrive tapes, and later on diskettes—were available for the Spectrum. As a response to this, publishers introduced copy protection measures to their software, including different loading schemes. Lenslok as used in Elite , or the colour-code chart included with Jet Set Willy. Most Spectrum software has been converted to current media and is available for download.
One popular program for converting Spectrum files from tape is Taper; it allows connecting a cassette tape player to the line in port of a sound card , or—through a simple home-built device—to the parallel port of a PC. The ZX Spectrum enjoyed a very strong community early on. Early on they were very technically oriented with type-in programs and machine code tutorials. Later on they became almost completely game-oriented. Several general contemporary computer magazines covered the ZX Spectrum in more or less detail.
The Spectrum is affectionately known as the Speccy by elements of its fan following. More than 80 electronic magazines existed, many in Russian. It criticised the keyboard; "inexpensive or not, the On 23 April , a Google doodle honoured the 30th anniversary of the Spectrum. As it coincided with St George's Day , the logo was of St George fighting a dragon in the style of a Spectrum loading screen. In January , Elite Systems , who produced a successful range of software for the original ZX Spectrum in the s, announced plans for a Spectrum-themed bluetooth keyboard that would attach to mobile devices such as the iPad.
In December , one of the alternate endings in Black Mirror: Bandersnatch included the main character playing data tape audio that, when loaded into a ZX Spectrum software emulator, generates a QR code leading to a website with a playable version of the Nohzdyve game featured in the episode. Some programmers have continued to code for the platform by using emulators on PCs. From Wikipedia, the free encyclopedia. Series of personal home computers. This article has multiple issues. Please help improve it or discuss these issues on the talk page. Learn how and when to remove these template messages.
This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. See also: List of ZX Spectrum clones. ZX Interface 1. ZX Interface 2. ZX Microdrive. Sample screenshots from ZX Spectrum games. Main article: ZX Spectrum software. Video games portal s portal United Kingdom portal. Archived from the original on 12 January Retrieved 31 March The Spectrum's reign as the UK's most popular computer was brief but its legacy and the affection in which it is held remains to this day.
Sinclair Spectrum development. Archived from the original on 30 March Retrieved 2 April Archived from the original on 17 December Computer Museum. Archived from the original on 11 May Retrieved 19 April EDGE Magazine. Future Publishing: January Planet Sinclair. Archived from the original on 5 August Retrieved 14 September Register Hardware.
Situation Publishing. Archived from the original on 25 December Archived from the original on 11 September Spectrum Computing. Retrieved 21 April Sinclair Research Ltd. Archived from the original on 24 September Retrieved 23 August Archived from the original on 4 September Retrieved 28 August Archived from the original on 13 November BBC News. Archived from the original on 9 October Retrieved 12 November Retrieved 19 September Archived from the original on 15 April Retrieved 19 August Crash 16 : May Archived from the original on 17 March By modern standards, these machines were primitive, but there was something about them that made them far more enjoyable than the current selection or lack thereof.
The Telegraph. Archived from the original on 8 March It was the computer that introduced a generation to video gaming, helped to earn Sir Clive Sinclair a knighthood and even made programming cool: the ZX Spectrum has a lot to answer for. ZX Computing : February Archived from the original on 16 March Retrieved 27 April Sinclair User 15 : June Archived from the original on 22 February Retrieved 15 August The move is expected to cause chaos in the home computer market.
It is believed the reductions were prompted by competition which, while it is not yet a serious threat, is thought to be growing quickly. Your Spectrum 7 : 33— Archived from the original on 22 May So the first three issues of the Spectrum used a combination of eight 16K chips and eight 32K ones. The latest machines depart from that combination, but Sinclair Research has been very quiet about the alteration.
Archived from the original on 21 March Retrieved 31 January Your Spectrum 10 : Archived from the original on 6 May Retrieved 21 August Since -2 has the same internal representation as it's only the type declarations that differentiate them! An alternative is always to assign such problematical expressions to a POSINT variable if they are supposed to be positive before using them. Comparison operators.
AND, OR. The result of these operations is of the same type as the first operand. When an expression is assigned to a variable, the value of that expression is automatically converted to the type appropriate for that variable. Error messages or erroneous results may be generated if you try to assign an out-of- range value to a variable. If the value of R is bigger in absolute value than so it won't fit in two bytes you would get the error message Integer out of range. Instead, the result would be that I would get the value see Conversion between Types. This means that there is no way out of an INPUT statement other than giving input of the type requested.
See the note under LET concerning out-of-range values. The line referred to must actually exist within the portion of BASIC being compiled if you have trouble with this, put in a REM statement with the appropriate line number. You may want to put in a CLS statement at the beginning.
The dimensions of the array as given in the DIM statement are fixed at compile time and must be given as explicit numbers or as VAL "number" no expressions allowed. The dimensions of an array must be the same throughout the program. That is, you cannot re-dimension an array with different numbers than those used in the first DIM. You must not use a string variable as an ordinary string variable at the beginning of a program and then later change it to a dimensioned string variable with a DIM statement.
There are no checks within the compile code to ensure that an array index is within range. These commands are often inappropriate or inconvenient in a purely machine code program. VAL "Expression" is the only form that is supported. Here, Expression must be a numeric expression. The form VAL string variable e. Variables and other expressions in DATA statements are not supported. For efficiency's sake, the setting of these default attributes is omitted in the compiled code. This means that in the odd cases where it makes any difference to get the same effect as in BASIC you would put these attributes in explicitly; e.
An artificial example of a case where it makes a difference is the following:. If a defined function has more than 4 arguments, then the arguments must be all of the same type. A compiled program may call other machine code routines. Of course, the machine code must not overlap with the compiled code - use the REM : USR directive if necessary to avoid this. If there is enough room below RAMTOP for the compiled code and the machine code variables then space is reserved for the machine code variables and the code can be tested in place.
This means that it is not possible to compile the program in one go. However, you should be aware that doing this involves a certain amount of duplication of runtime routines just how much duplication can be ascertained by using the REM : LIST directive. Sometimes programs involving REAL variables can be re-written perhaps by scaling everything up by a factor of etc. If you use defined functions, try to arrange it that their arguments are integer variables and that the function returns an integer value.
In expressions, try to put the simpler of the two operands on the right side of the operator. A number is simpler than a simple numeric variable which is simpler than an array or a function but note that an array indexed by a number instead of a variable is equivalent to a simple variable because HiSoft BASIC recognises this case and computes its address at compile-time.
HiSoft BASIC recognises the two cases of squaring and cubing and codes to do these by means of multiplication rather than using the general to-a-power routine which is very slow. Here x can be any quantity - not just a variable. However, in one special case, HiSoft BASIC recognises that it can code for integer division and get the same answer as if it did floating-point division.
Fl and F2 don't have to be variables, they can be complicated factors e. So if you want the truncated effect of integer division or simply don't care about the fractional part of a division put your divisions inside INT. Note that none of this affects the answer you get from a division - the compiled code will always give the same answers as BASIC - it just makes the compiled code more efficient.
If you assign a REAL value to an integer variable, the value is automatically rounded to the nearest integer. This means that in many cases, INT is redundant and inefficient. Note that this is often true in BASIC as well, since all the functions and commands that require integers automatically round values to the nearest integer. In general, using strings is less efficient than using integer variables, so avoid using strings where possible. A common example is in testing to see which key is pressed. A poor way to do this would be assuming we are in upper case; POKE , 8 to ensure this :.
Thus, best is :. But see note Even if you aren't using any integer variables you may want to declare a fake integer variable in order to save bytes. By declaring a fake integer variable use a variable name not in use in your program you will change this so that numbers are stored in 2 bytes where possible. See Conversion between Types. It is more efficient to put all numbers in the program in their decimal form E. If even the simplest statement is used more than once, it will save bytes if you make it a subroutine but you lose a tiny bit of execution speed.
Multiple statements after the THEN negate these optimisations so. Even if you are including all the line numbers e. If the compiled code doesn't do what it is supposed to do, the first thing you should do is to remove all the compiler directives relating to integer variables just putting another REM in front of them will effectively remove them.
Then re-compile and try it again. If it works now, you will know that the problem was to do with an integer variable being assigned on out of range value or a DATA statement lacking an INT. If the BASIC version performs okay in the same situation then you probably have found a bug in the compiler! If you can, try to isolate the bug i. The Old School.
MK45 5DE. Invalid compiler directive. Check the section on compiler directives for the correct syntax. You will get this message if you try to declare a variable twice. Expecting a number. Expecting an integer. Not supported.
Non-existent line. Too many variables. The maximum number of simple numeric variables is No more space. This is a multi-purpose error message. If you get this message with an IF statement, it means that you have too many nested IFS maximum is If you get this message in reference to a variable, it means that there is no more space for storage of variable names. In this case you could remedy the situation by using shorter names.
See Compiling large programs. This message is a warning to you that the compiled code is not in its proper position and hence you cannot execute it without first saving it and then re-LOADing it to its proper address. No file space. The zeroth pass with magenta border checks merely for unsupported commands and picks out all the compiler directives and DIM statements.
The second pass with white border is when the actual machine code is generated. This information appears as dots on your screen. Furthermore, the calculator stack and the machine stack are relocated to the attribute file where the colours are stored during compilation. The calculator stack appears at the top of your screen while the machine stack starts one third of the way from the bottom these two stacks grow towards each other and HiSoft BASIC is headed for trouble if they meet! So what you see in the changing colours is actually in some sense the compiler's thought process while the dots are its memory!
LOAD as usual but hold down the S key during the last part. When you hear the beep, prepare your new tape for recording and then press a key as required. Modify the program in a similar way to obtain a back-up copy on disc. Over hours of hard work went into making HiSoft BASIC and every pirated copy steals away some of our rightful reward for this work. Ultimately, software piracy hurts you, the consumer, because prices go up or nasty copy-protection schemes are used and because programmers like ourselves will no longer find it rewarding to put the effort into writing good programs for your computer.
If you somehow find yourself in possession of a pirated copy of HiSoft BASIC and you find it a good, useful program, then please do the honest thing and go out and buy yourself a legitimate copy! The compiled code includes only those runtime routines that are actually needed.
Note that many runtimes call other runtimes. The first twenty-nine are concerned with comparisons.
- Navigation menu?
- Book review: ZX Spectrum BASIC;
- Pocket Guide to APA Style , Fourth Edition.
- The Whole Guy Thing. What Every Girl Needs to Know about Crushes, Friendship, Relating, and Dating!
- Older Browser Detected;
Print S. Print P. Print I. Single character of a string. String slicer n1 TO. String slicer TO n2. String slicer n1 TO n2. Print an explicit string.
Calculate and stack parameters of an explicit string. Read string. Read REAL. Error handler. Exit from Input and Off Error. Set up Input. Input REAL. Input string. Get Input. USR string. USR number.
Fetch integer array element. Fetch REAL array element. Fetch string parameters. Calculate parameters for a string from an array of strings. Assign to an unsliced string variable. Calculate and stack parameters for a simple string. Calculate parameters for a simple string. REAL comparisons. Store STEP value and test loop. Increment loop variable and test loop. Test loop. R OR integer. S AND integer. S AND R. R AND R. R AND integer. NOT integer. NOT R. ABS R. SGN R. P DIV I.
zmachine-code/kogicomaryko.tk at master · runvnc/zmachine-code · GitHub
I DIV P. ABS I. SGN I. SGN P. Not used. Put the following 5 bytes onto the calculator stack. Exchange the top two values on the calculators stack. Set the printers for a binary operation. Test for zero. Set to Stream 2. Set to Stream 3. Memory fill. Random number generator. Appendix 1. Spectrum and Spectrum Plus 2 Version. The command you select will take effect immediately.
Note that the options correspond to those for the 48K version but that there is a new P command, and that the command to delete the BASIC program is different. The P command diverts the output of the next command to the printer instead of the screen. Make sure your printer is attached and ready if you use this command. The command interpreter in the version is implemented by means of a patch to the bank-switching code instead of by an interrupt mode 2 routine as in the 48K version thanks to Andrew Pennell for the idea of the patch.
Because of this, it is not possible to BREAK into machine code programs as in the 48K version, so you should be sure to provide an exit from your program e. Note also that none of the addresses or pokes given above are relevant to the version. The compiler directives are the same as in the 48K version except that the L PRINT directive is absent; its function having been replaced by the p command.
Note also that it is useful to switch to the lower screen via the mode EDIT key before compiling so that you can issue the command to SAVE your compiled code without the information disappearing from the final screen. An additional feature of the version is that all of the extra editing keys on the optional keypad have been implemented on the standard keyboard thanks to Toni Baker for her original program, which appeared in ZX Computing Monthly. LET When an expression is assigned to a variable, the value of that expression is automatically converted to the type appropriate for that variable.
INPUT 1. DIM 1. Print S Print P Print I Single character of a string String slicer n1 TO String slicer TO n2 String slicer n1 TO n2 Print an explicit string Calculate and stack parameters of an explicit string Read string Read REAL Error handler Exit from Input and Off Error Pause Set up Input Input REAL Input string Get Input USR string USR number Fetch integer array element Fetch REAL array element Fetch string parameters Calculate parameters for a string from an array of strings Assign to an unsliced string variable Calculate and stack parameters for a simple string Calculate parameters for a simple string REAL comparisons Store STEP value and test loop Increment loop variable and test loop Test loop R OR integer S AND integer S AND R R AND R R AND integer NOT integer
Related 40 Best Machine Code Routines for the ZX Spectrum
Copyright 2019 - All Right Reserved