Classic Computer Magazine Archive COMPUTE! ISSUE 40 / SEPTEMBER 1983 / PAGE 236

TI Cadette:
Computer Aided Design

Bradley Rogers

This clever program should provide hours of amusement for children who enjoy creating pictures. Similar to coloring or cut-and-paste, the computer screen becomes a magic window allowing easy design, color selection, and erasure. Requires Extended BASIC and joysticks.



"Cadette" is for children. Based on a scaled-down version of CAD (the Computer Aided Design), it transforms your TV screen into an electronic easel on which children can "draw" tropical birds, planes, surreal landscapes, or any number of other fascinating pictures. Joysticks and fire buttons are used instead of conventional pens and brushes.
    Using these simple instruments, children can create intricate designs from a basic stockpile of 16 different shapes. Each shape can assume five different colors chosen at the start of the program. Cadette calls upon the imagination, but does not require highly developed motor skills. Most children over five should be able to manage it nicely.
    Cadette is simple to use, with only four basic activities required:
  1. Choosing a page (screen) color;
  2. Choosing five brush (shape) colors;
  3. Moving joysticks to position the shapes or the eraser; and
  4. Pressing fire buttons to print or to erase.
    The process is the electronic equivalent to pasting cutouts on construction paper. However, the program involves considerably less frustration than conventional craft activities. It permits children to erase neatly or to change their minds at any point without having to start over with a clean sheet.

Running The Program
Once the RUN command has been entered, a brief message appears, instructing you to select a page color. The page in this case is, of course, the TV screen. Next, you are confronted by a display of 12 colors, each identified by a number from 1 to 12. From this menu you select a screen color by pressing the appropriate number key and then the ENTER key. If you enter anything other than numbers 1 to 12, the computer waits patiently for you to reconsider.
    A second message now appears on the background color you chose. You are to select five brush colors. This message disappears, and you are asked to choose five from among twelve brush colors. The brushes in this case represent the colors of the shapes you will eventually use to create your design. Simply enter your five choices and remember to press ENTER after each selection.
    After the color choices, the screen will blank and 16 geometric shapes will appear, eight across the top of the screen, and eight across the bottom. They consist of a circle, a square, assorted lines, triangles, and semicircles. Every few seconds the color of all 16 shapes changes, running through a cycle of five color changes, and then repeating.
    Near the center of the screen is a small hollow box, which is the cursor. By using either of the joysticks, you move the cursor to capture and transport the colored shapes. After deciding which shape you want to capture, move the cursor to a position immediately adjacent to the shape. Once the shape turns the desired color, position the cursor on the shape.
    The cursor will then disappear, and a duplicate of the colored shape you chose will appear immediately above or below the original, depending upon whether you selected from the top or bottom row. This duplicate may now be moved with the joysticks to any desired location. It will maintain its shape and color no matter what else happens on the screen. The original from which it was copied will remain in its display row and continue to undergo color transformations.
    The duplicate shape, which now represents the cursor, can be placed at any position on the screen. Move it to the location you want and simply press the fire button. You will hear a low tone indicating that the button has done its job. If you have picked up the right joystick, the shape will "lock" at that screen location. Even if you move the cursor, the shape will remain fixed as long as the program runs. If you have picked up the wrong joystick, the shape will be erased.

colors available
Twelve page and twelve brush colors are available in
"Cadette" from the TI-99.

    Assuming you have the "lock" joystick, you now have two options. You can move the cursor shape to a new position and print it again, or you can select another shape of the same color or the same shape of another color. If you choose a new shape, repeat the initial capture procedure. Remember, however, that the cursor no longer appears as a hollow box, but in the shape of your previous selection. But once it is placed on a new colored shape, it will automatically assume the new shape and color.
    The "lock" joystick locks your selection at the location you want. The other joystick also controls the cursor, but is used to erase. To erase a "locked" shape, simply move the cursor on top of that shape and press the fire button. A higher tone will sound, the shape will disappear, and you can make another selection. To avoid confusion, you might label one joystick "lock" or "print" and the other "erase."

Extensions And Modifications
If you want to alter the shapes, you can change lines 540, 560, 580, and 600, which are DATA statements that contain the hexadecimal representations of the shapes. Each shape is defined by a string of 16 hexadecimal numbers.
    Some children may find that the cursor moves too quickly, rushing past the space in which they wanted to print a shape. You can change the cursor's speed in line 920 by adjusting the limit (4) in the FOR/NEXT loop.
    One interesting modification to the program would make it more versatile without requiring a great deal of extra programming. For example, a larger menu of shapes could be shown initially, and 16 could then be chosen from it. This would not be a terribly complicated program adjustment as long as you remember that the shapes must be read into S$. It is better to present the shape menu before the color menus; once you start fooling with color statements, all kinds of unexpected complications develop. In considering such modifications, just remember that often there is a tradeoff between versatility and user-convenience. The program could become less fun to use if a child has to make too many decisions.

Cadette
100 CALL CLEAR
110 CALL SCREEN(15)
120 DISPLAY AT(5,6):"SELECT PAGE CO
    LOR, 1 TO 12."
130 FOR I=1 TO,800 :: NEXT I :: CAL
    L CLEAR
140 DIM Z(5):: DIM S$(16)
150 A$="3C7EFFFFFFFF7E3C" :: X=4
160 FOR I=62 TO 142 STEP 8 :: CALL
    CHAR(I,A$):: CALL COLOR(X,X-1,1
    ):: X=X+1 :: NEXT I
170 CALL CHAR(40,A$):: CALL COLOR(2
    ,16,1):: CALL COLOR(9,14,1):: C
    ALL VCHAR(12,5,40):: X=3
180 FOR I=62 TO 142 STEP 8 :: CALL
    VCHAR(12,X*2+1,I):: X=X+1 :: NE
    XT I
190 CALL CHARPAT(56,Z$):: CALL CHAR
    PAT(57,W$):: CALL CHAR(33,Z$)::
     CALL CHAR(34,W$)
200 FOR I=1 TO 12
210 IF I=8 THEN CALL VCHAR(10,19,33
    ):: GOTO 240
220 IF I=9 THEN CALL VCHAR(10,21,34
    ):: GO TO 240
230 DISPLAY AT(10,I*2):USING "4(k":I
240 NEXT I
250 ACCEPT AT(24,1)VALIDATE(DIGIT)B
    EEP:Y
260 IF Y<1 OR Y>12 THEN 250
270 IF Y=7 THEN Y=13
280 IF Y=1 THEN Y=15
290 CALL SCREEN(Y+1):: CALL CLEAR
300 FOR I=1 TO 14 :: CALL COLOR(I,2
    ,1):: NEXT I :: DISPLAY AT(6,4)
    :"SELECT 5 BRUSH COLORS,(6 SPACE
    S)1 TO 12."
310 FOR I=1 TO 800 :: NEXT I :: CAL
    L CLEAR
320 FOR I=4 TO 14 :: CALL COLOR(I,I
    -1,1):: NEXT I :: CALL COLOR(2,
    16,1):: CALL COLOR(9,14,1)
330 A$="FF7E3C18183C7EFF"
340 FOR I=62 TO 142 STEP 8 :: CALL
    CHAR(I,A$):: NEXT I :: CALL CHA
    R (40, A$)
350 IF Y=15 THEN Y=0
360 IF Y=13 THEN Y=7
370 CALL COLOR(Y+2,2,1):: X=6 :: CA
    LL VCHAR(12,4,40)
380 FOR I=62 TO 142 STEP 8 :: CALL
    VCHAR(12,X,I):: X=X+2 :: NEXT I
390 FOR 1=1 TO 12
400 IF I=8 THEN CALL VCHAR(10,18,33
    ):: GOTO 430
410 IF I=9 THEN CALL VCHAR(10,20,34
    ):: GOTO 430
420 DISPLAY AT(10,I*2-1):USING "##"
    :I
430 NEXT I
440 FOR I=1 TO 5
450 ACCEPT AT(24,1)VALIDATE(DIGIT)P
    EEP:Z(I)
460 IF Z(I)<l OR Z(I)>12 THEN 450
470 IF Z(I)=1 THEN CALL VCHAR(18,I*
    2+2,40)ELSE 490
480 GO TO 500
490 CALL VCHAR(18,I*2+2,46+8*Z(I))
500 NEXT I
510 FOR I=1 TO 500 :: AA=8*8 :: NEX
    T I
520 CALL CLEAR
530 FOR I=1 TO 16 :: READ S$(I):: N
    EXT I
540 DATA 187E7EFFFF7E7E18,0107070F0
    F070701,80E0E0F0F0E0E080,FF7E7E
    1800000000
560 DATA 00000000187E7EFF,FFFFFFFFF
    FFFFFFF,FFFEFCFBFOEOC080,000103
    070FlF3F7F
580 DATA 80C0E0F0FBFCFEFF,7F3FlF0F0
    7030100,8080808080808080,010101
    0101010101
600 DATA FF00000000000000,000000000
    00000FF,8040201008040201,010204
    0810204080
610 X=40
620 FOR I=1 TO 5
630 P=Z(I)+l
640 IF Z(I)=1 AND Y=0 THEN CALL COL
    OR(I*2,2,1):: CALL COLOR(I*2+1,
    2,1):: GO TO 690
650 IF Z(I)>l AND Z(I)-Y THEN CALL
    COLOR(I*2,2,1):: CALL COLOR(I*2
    +1,2,1):: GO TO 690
660 IF Z(I)=1 AND Y>0 THEN P=16
670 IF Z(I)=7 AND Z(I)<>Y THEN P-14
680 CALL COLOR(I*2,P,1):: CALL COL
    R(I*2+1,P,1)
690 FOR J=1 TO 16 :: CALL CHAR(X,S$
    (J)):: X=X+1 :: NEXT J
700 NEXT I
710 G2-32 :: H1=12 :: F1=16
720 CALL CHAR(37,"FF818181818181FF"
    ):: CALL VCHAR(H1,F1,37):: J-39
730 QW=1 :: UU=l
740 FOR I=1 TO 8 :: CALL VCHAR(24,I
    *2+4,J+I):: NEXT I
750 FOR I=9 TO 16 :: CALL VCHAR(1,I
    *2-12,J+I):: NEXT I
760 X=1
770 CALL JOYST(UU,F2,H2)
780 CALL KEY(UU,RV,SV)
790 IF (H1=1 AND H2=4)OR(H1=24 AND
    H2=-4)0R(Fl=2 AND F2=-4)OR(F1=3
    0 AND F2-4)THEN F2=0 :: H2=0 :.
    GO TO 900
800 IF F2=0 AND H2=0 AND SV=0 THEN
    900
810 H3=H1-H2/4 :: F3=F1+F2/4
820 CALL GCHAR(H3,F3,G3):: CALL GCH
    AR(HI,F1,G1)
830 IF RV+QW=19 AND(H1=24 OR H1=1)T
    HEN 890
840 IF H3=24 AND G3<>32 THEN H3=23
    :: CALL VCHAR(HI,Fl,32):: CALL
    VCHAR(H3,F3,G3):: G2=32 :: GO
    TO 870
850 IF H3=1 AND(G3<>32)THEN H3=2 z:
    CALL VCHAR(HI,F1,32):: CALL VC
    HAR(H3,F3,G3):: G2=32 :: GO TO
    870
860 IF (H3<>24 AND H3<>l)OR(H3=24 A
    ND G3=32)OR(H3=1 AND G3=32)THEN
    CALL VCHAR(H3,F3,Gl):: CALL VC
    HAR(H1,Fl,G2):: G2=G3
870 IF RV+QW=19 THEN CALL VCHAR(H3,
    F3,G1):: G2=G3 :: CALL SOUND(10
    0,110,2):: GO TO 890
880 IF RV+QW=17 THEN CALL VCHAR(H3,
    F3,37):: G2=32 :: CALL SOUND(10
    0,220,2)
890 H1=H3 :: F1=F3
900 QW=-QW
910 IF QW-1 THEN UU=1 ELSE UU=2
920 FOR AA=1 TO 4 :: NEXT AA
930 X=X+1 :: IF X=10 THEN 940 ELSE
    770
940 J=J+16
950 IF J>103 THEN J=39
960 GO TO 740