CP Software
Programming: Assembler/Mcode
Multiple languages (see individual downloads)
ZX Spectrum 48K

John Gilbert
Chris Bourne

This big daddy of toolkit utilities has been updated several times and now contains 152 machine-code routines which can be used in direct input mode or from within your own programs.

There are nine types of routine covering graphics output, sound, program manipulation, the handling of peripherals and general utilities such as Memory Block Insert.

Screen scrolling effects are achieved by pixel and character movement. A pixel is smaller than a character and so pixel scrolling - in one of four directions - is slower but less jerky than character scrolling. Scrolling can leave the attributes in place but these can also be scrolled by using other routines within the package.

Two other scrolling effects are available through Supercode but they require a great deal of effort to use. The ripple effect turns a character about on its axis - using a pixel move - so that, for instance, you could reverse all the characters in a message to turn those characters upside down. The shutter effect, which also uses pixel manipulation, moves characters out of their squares, either to the left or right. The two routines work only on individual characters and if you have a long message which you want to scroll or rotate you will have to use the commands for every letter in that message.

Simple graphics can also be moved around the screen. You can set up a box and scroll it, pixel by pixel, left or right across the screen. The box must be smaller than one third of the screen and must not overlap into the next section by even one pixel.

To set up a box you need to do a fair amount of Pokeing and, if you're not sure about putting Pokes into programs, the two box routines are best left alone. You have, however, another 150 routines to use so don't be put off.

Screen effects are not just limited to scrolling. You can fill displays with text, store screens above Ramtop, switch them on to the display to create animation effects, change ink colours and backgrounds without using Cls and switch Flash on, again without having to use Cls to reset the attributes.

The Screen Fill routine takes advantage of the box creation facility. You set up a box on the display and can then fill it with a specific character. The routine requires you to enter four Poke instructions and a Print At. This may seem excessive - when toolkits are supposed to take the hard work out of programming - but all you need know are the box dimensions, the code of the character you want to use as filling and the screen co-ordinates of the top left-hand corner of the box.

The toolkit can be used to produce full-screen animation effects by storing several screens above Ramtop and then the overprinting and exchanging commands within a program. The result is you can almost instantaneously switch displays on the screen.

You can also invert the colours of a screen - so that ink becomes Paper and Paper become ink - and merge the graphics on two screens into one. The package will also compress screens into the smallest amount of memory.

Some spectacular effects can be achieved using the toolkit's sound digitising facilities. As well as being able to compose sound which is seemingly made up from several simultaneously played notes you can take a piece of music from your hi-fi, put it into the Spectrum memory and replay if using a Supercode command. You can only record five to 10 seconds of sound for playback - because of memory restrictions - but the results are astounding, especially when played back in Basic programs.

For those of you into graphics effects Supercode provides a variety of science-fiction style character sets, crazy border effects which are very colourful and Paint Fill, which will colour a closed line object. A series of Rom-based routines are used within the package to produce stars and rings to order On more mundane ground the package contains a block of routines which are useful when you're writing Basic programs. They include two Renumber routines. The first does not re-number Goto or Gosub statements, the other does. Super Renumber also displays a list of calculated and non-integer Gosub and Goto line numbers which have to be altered by hand.

A Trace facility helps display the numbers of lines as the computer runs the program. Variable and string list facilities will help you track down errors by displaying the contents of set strings and variables after the program has been run. If errors crop up in strings a Replace routine can be used to change the characters within them.

One of the most useful routines within the program manipulation commands is Append. Remember the times when your program contained a long line of code made up of seemingly endless statements? Remember how that line had an error in it right at the end and you had to track the cursor right to the end before making the correction? Append will position the cursor at the end of a specified line and cut back on the time wasting and irritation.

When you've corrected your precious Basic program, using the wide variety of Renumber, string manipulation and error tracking features of Supercode, you will want to protect it from pirates and the package even includes routines to make your program more secure.

Four routines make your program disappear - using a Sinclair Rom-based routine will destroy the program if the Break key is pressed and will auto-run the code. An anti- Merge routine is also included. As you may know, Merging a piece of auto-run Basic into the Spectrum will stop it from running. The anti-Merge facility makes sure your program is auto-run, whichever way it is loaded.

Version three of Supercode has been updated to include Microdrive facilities. If you are worried about the Amstrad takeover, you can be thankful that at least one company is taking the mass storage device seriously. If you think your Microdrive is on the blink you can run the diagnosis routine which will output an error message if the device is not connected. The error can be picked up by the package's Onerr extension and a suitable warning can be output to the user of your program without generating a crash.

If you were initially annoyed at the inflexibility of Microdrive file handling you can get Supercode to mimic random access file handling. You can decide where you want your information to be stored on a cartridge to set up data files which can be accessed, in theory, in a faster time than normal.

The RS-232 channel is not left out. The package will automatically set up a channel between devices and send and receive information in byte form. It will also set up the network so that you can send packets of in- formation from one ZX interface to another.

There are too many facilities in Supercode to mention them all. Those I have mentioned are the highlights of a unique and powerful package. There is nothing else like Supercode on the market and I recommend it.

The package has been around for more than two years but CP Software is constantly updating it. Many of the routines require a little work to get them into Basic programs but the spectacular results and savings in time and effort make this package without rival.

John Gilbert

Publisher: CP Software
Price: £9.95
Programmer: Deep Thought Software
Memory: 48K