3D HISTOGRAM ------------ by Peter Shaw from ZX Computing, October/November 1983 Peter Shaw holds tutorial on the subject of graphics on the ZX Spectrum. Pull up a chair, plug in your computer and read on ... There are a number of different methods to define characters on the Spectrum — some easy to understand, others totally incomprehensible. I saw one very interesting method POKEd, line by line. This is obviously not satisfactory when you have 21 characters to define. You would need 168 lines to POKE everything into the memory — that's lines 10 to 1680 using the conventional spacing system! There has to be a better method than that. To cut down on the amount of typing we have to do, we can change the way we define our characters. To start with I will deal with the use of BIN. The Sinclair manual suggests that you use BIN when defining but I think this is a very long-winded way of doing it. A binary number can be thought of as eight on/off switches each with a value; when the switch is on, it takes the value and when the switch off, it becomes zero. The value of each switch is worked out from a power; ie. 6^2 is six to the power two, or 36. For example, take a look at the binary number 00110101. The value of BIN 00110101 0 + 0 + 32 + 16 + 0 + 4 + 0 + 1 = 53. This can be seen fully illustrated in Fig.1. And next ... To turn a binary number into decimal all you need remember is the number in the top left-hand corner of the boxes so that you can add the 'on' ones together to get the result. Having converted all your BIN numbers into decimal you can now move onto the next part of this character generation method. The Sinclair manual suggests you use a FOR...NEXT loop of zero to seven for some characters. I also use a FOR...NEXT loop, but I use it to cover all the characters to be defined; ie. FOR A=USR "a" TO USR "(last character to be defined)" + 7. Inside the loop I READ all the decimal values and POKE them into the variable 'a'. 10 FOR a=USR "a" TO USR "a"+7 : REM this will require eight numbers in DATA statements 20 READ user: POKE a,user 30 NEXT a 40 DATA 255,0,255,0,255,0,255,0 Try this program above. As you can see, the FOR...NEXT loop can be anything from one to 21 characters long. The DATA statement at the end contains the eight numbers required to create a striped character. At the bar Enough said about user-definable graphics — what about programs which demonstrate high resolution graphics on the Spectrum? Well, first up is a 3D Histogram program, which although not really very useful in any practical way, is a good demonstraton of colour and Hi-res in action. The program surprisingly only uses two UDG characters, which have been POKEd in using the method shown previously. Quick on the draw Once you've tried the Histogram program, you can move onto the next program, Sketch, which is a very sophisticated sketchpad. The controls you'll need to operate this program are: F - Flashing cursor N - Draw mode cursor D - Draw a line M - Move cursor S - Save SCREEN$ V - CLS C - Circle O - Change INK colour P - Change PAPER colour B - Change BORDER colour I - Help