170 FOR Y=1 TO 819: LPRINT CHR$(l);: NEXT Y180 LPRINT: NEXT X: RETURNNow RUN the first trial:

Line 20 stores the graphics entry string in G$. This produces Low- Speed Double-Density dots for 819 columns [51+(3x256) = 819]. Line 170 fires the bottom graphics pin 819 times. The X loop (lines 160 and

180)repeats the routine to print the line three times.

Because you will use this line-printing routine (lines 160 - 180) again to print the bottom three lines of the figure, we have you set it aside as a subroutine. It is called by the GOSUB in line 20 and separated from the rest of the program by the END in line 150.

So far, so good! Now for the rest of the figure. The following lines control the four-step process:

80 FOR X=1 TO L: LPRINT CHR$(l);: NEXT X100 LPRINT CHR$(l)CHR$(2)CHR$(4)CHR$(8)CHR$(16)CHR$(32)CHR$(64);110 FOR X=1 TO H: LPRINT CHR$(64);: NEXT X120 LPRINT CHR$(64)CHR$(32)CHR$(16)CHR$(8)CHR$(4)CHR$(2)CHR$(l);

Lines 100 and 120 print the 7-dot rise and fall. The lengths of the low and high sections are stored in DATA statements, then read into the variables L and H. Line 80 prints the bottom pin L times; line 110 prints the top pin H times.

The next step is to add the READ portion of the program:50 READ L,H

60 L=L*7: H=H*7

70 IF L=0 THEN 9090 IF H<0 THEN LPRINT: GOT0 150130 GOTO 50

Line 50 reads numbers from the data statements in pairs: the first is stored into L, the second into H. L and H are then each multiplied by seven; this extends the width of the figure without increasing the size of the data numbers. This enlargement factor must be the same as the number of dots in the rise and fall or the design will not line up properly.

166