APPENDIX FIVE

Color

Color is a very important aspect in the Atari computers; you may not fully appreciate it unless you've spent a long time working with computers or monitors with monochrome displays. The Atari has sixteen colors available for display in eight different luminance (brightness) factors. These colors are stored in memory locations 704 to 712. The first four of these registers are used to determine the color of your players and missiles. The second five determine the color of the playfields, background, lines drawn and areas filled. The Atari has a default value for each of the five playfield registers that is assigned on powerup: Playfield Location Color Value 0 708 Orange 40 1 709 Light green 202 2 710 Dark blue 148 3 711 Red 70 4 (BAK) 712 Black 0 The figure in the value category represents the number you would get if you PEEKed into that location. For discussion of the locations, refer to the Memory Map. To change these colors, you can use either a POKE statement or the BASIC command SETCOLOR (abbreviated to SE). You should refer to the description in the earlier Memory Map text. SETCOLOR has three parameters: the register to change (which always corresponds to one of the memory locations above); the hue (a number from zero to fifteen which corresponds to the available colors); and the luminance (an even number between zero and fourteen). The Atari will treat any odd number as if it were the next lowest even number where luminance is concerned. Your statement might look like this: SETCOLOR 0,2,8 This will produce the orange color in playfield zero. To change it to red, you would use: SETCOLOR 0,4,6 Unless you are changing the background or border or you are changing a register which has already been used for drawing on the screen, you won't see any change from using SETCOLOR. The effect comes when you follow up with a COLOR command, telling the Atari which register to use for the DRAWTO or fill command. You can easily POKE the location with the proper color value by using this formula: COLOR = HUE * 16 + LUMINANCE So the orange in the above example would be obtained by: POKE 708,40 and the red by: POKE 708,70 These are the values listed in the chart above. It's quite simple to change them to your own colors using either method. Of course, you'll have to adjust your colors every time you change GRAPHICS modes or press RESET, since both restore the registers to their default values. What's more, the player/missile registers can only be changed using POKE; they have no corresponding SETCOLOR commands and are all preset to zero. The winter 81/82 edition of The Atari Connection, the house organ of Atari Inc., had a nice little chart in full color to display all of the colors available. The SETCOLOR number in the following list is the value you would place as the second number in the statement right after the register number. SETCOLOR POKE Color number number Black 0 0 Rust 1 16 Red-orange 2 32 Dark orange 3 48 Red 4 64 Dark lavender 5 80 Cobalt blue 6 96 Ultramarine blue 7 112 Medium blue 8 128 Dark blue 9 144 Blue-grey 10 166 Olive green 11 176 Medium green 12 192 Dark green 13 208 Orange-green 14 224 Orange 15 240 The next number in the SETCOLOR statement would be the luminance. You would add the luminance value to the POKE number. When you want to use the DRAWTO or XIO 18 (FILL) commands, you must first specify what color register to use by the COLOR command. The confusing part for most people is that the number in the COLOR command doesn't correspond to the same number as the SETCOLOR register and, to make things worse, it's not always the same number in different GRAPHICS modes! Modes zero, one, and two are text modes; they print characters to the screen rather than graphics, so you don't use the COLOR command in these modes. In GR.0, you actually have only one color as chosen by SETCOLOR 2. The luminance is ignored in this command and is instead set with SETCOLOR 1 -- where the color is ignored. You can use SETCOLOR to change the colors of the text and the background as below: GRAPHICS 0 SETCOLOR Register Character luminance 1 709 Background 2 710 Border (BAK) 4 712 GRAPHICS 1 and 2 SETCOLOR Register Uppercase and numbers 0 708 Lowercase characters 1 709 Inverse uppercase 2 710 Inverse lowercase 3 711 Background, border 4 712 When you want to draw or fill an area in modes three to eight, you must use the proper COLOR statement for the SETCOLOR register: GRAPHICS 3, 5, 7 SETCOLOR COLOR Register Four color modes Graphics point or 0 1 708 fill area 1 2 709 2 3 710 Background, border 4 0 712 GRAPHICS 4, 6 SETCOLOR COLOR Register Two color modes Graphics point 0 1 708 Background, border 4 0 712 GRAPHICS 8 SETCOLOR COLOR Register One color, two luminances Graphics luminance 1 1 709 Background color 2 0 710 Border 4 -- 712 It's awkward, but not difficult to use. You will have to refer to this chart or the chart on page 53 of your BASIC Reference Manual until you get the hang of it. Remember to precede any COLOR statement with a SETCOLOR somewhere in your program and to precede a DRAW or XIO 18 with a COLOR or the computer will use the previously designated register. The GTIA chip confuses things somewhat: in GRAPHICS 10, register 704 stores the background color while 712 is used as a normal color register. This means you must change it with a POKE rather than a SETCOLOR statement. However, in the two other GTIA modes (GR.9 and GR. 11), you still use location 712, SETCOLOR 4, for the background; see the examples of GTIA modes at location 623. With GRAPHICS 9, the COLOR command is used to set the luminance level to one of sixteen possible values; the value you use with the COLOR statement is equal to the luminance used (so you can have COLOR 15, COLOR 10, etc. Actually you can use any value up to 255 with COLOR and not get an error message; see the demo program for GR.11 in location 623). SETCOLOR 4 defines the background and graphics color. There is only one color in GR.9. In GRAPHICS 11, COLOR is used to define the color the same way it is used for luminance in GR.9, while the luminance of each color is the same value; you can have sixteen colors all of the same luminance. GRAPHICS 10 allows you to set the nine color registers to individual colors and luminances, but you must use POKE commands for the registers 704 to 707. For more information on the GTIA modes, see COMPUTE!, July to September 1982, and De Re Atari. There are many good programs for drawing your own pictures in various GRAPHICS modes; Micropainter from Datasoft is one of my favorites; then there's Drawpic from Artworx, The Graphics Machine from Santa Cruz, Graphic Master from Datasoft, Graphics Composer from Versaware and The Next Step from Online which is really a utility for character creation and color set selection. COMPUTE! published an interesting program called "Supercube" over many issues in 1980 and 1981.

Return to Table of Contents | Previous Chapter | Next Chapter