I'm not sure quite what effect you're aiming for, but I had a quick look through the code looking for anything obvious.
' RASTER BARS!
'
OPTION EXPLICIT
' SCREEN MODE 18 IS 640 * 480
' USING IT HERE SO I CAN DRAW SHORTER LINES TO FILL THE SCREEN (MORE SPEED)
DIM SHARED AS UINTEGER XRES=640
DIM SHARED AS UINTEGER YRES=480
SCREEN 18,32,2,
SCREENSET 1,0
' SUBROUTINES;
DECLARE SUB DOUBLE_BUFFER()
DECLARE SUB DRAW_BACKGROUND()
DECLARE SUB DRAW_BARS()
' COUPLE OF VARIABLES USED AS GENERAL COUNTING VARIABLES, THESE NEED TO BE SHARED;
DIM SHARED AS INTEGER ADD1,ADD2
dim shared as single red = 1.0
dim shared as single grn = 0.5
dim shared as single blu = 0.8
' MAIN LOOP;
DO
'MOVE BARS;
ADD1=ADD1+1
ADD2=ADD2+2
DRAW_BACKGROUND()
DRAW_BARS()
DOUBLE_BUFFER()
LOOP UNTIL INKEY$<>""
END
'-------------------------------------------------------------------------------
SUB DOUBLE_BUFFER()
SCREENCOPY
CLS
SLEEP 1
END SUB
SUB DRAW_BARS()
DIM AS INTEGER A,B,C,D
FOR C=1 TO YRES STEP 6
D=300+100*SIN((C+ADD1)*3.14/180)+100*COS((C+ADD2)*4.14/180)
B=3000
' I moved the colour setting out of the inner loop as it doesn't
' change in there
COLOR RGB(d*red,C*grn,C*blu)
FOR A=D TO D+50
IF A<=D+6 THEN
B=B+3000
ELSE
B=B=0
END IF
LINE(a,C)-(a,600)
NEXT A
D=290+200*SIN((C+ADD2)*4.14/180)+100*COS((C+ADD2)*4.14/180)
B=0
' I moved the colour setting out of the inner loop as it doesn't
' change in there
COLOR RGB(D*grn,C*red,D*blu)
FOR A=D TO D+60
IF A<=D+6 THEN
B=B+3000
ELSE
B=B=10
END IF
LINE(A,C+3)-(A,480)
NEXT A
NEXT C
END SUB
SUB DRAW_BACKGROUND()
DIM AS INTEGER A,B
B=480
FOR A=0 TO YRES
LINE (0,A)-(640,A)
COLOR RGB(0,B*grn,0)
B=B-1
NEXT
END SUB
As Shockwave has already pointed out, there are some areas where you're not quite understanding what his code did. One thing I did was to declare an X and Y resolution of your screen at the start so that you can use these variables when you're referring to the screen dimensions rather than just a number.
For example, you have a loop running from 1 to 1000, when the screen is only 480 pixels high. Using the YRES variable means that you won't be tempted to change it at a whim.
I also changed your declarations of red, grn, and blu to be 'single' types, values that can hold some degree of a decimal number. This means that the gradual effect I *think* you were looking for can now be done, and this includes your shaded background (I assume that's what you were trying to do).
Another optimisation I did was to take the RGB calculations out of an inner loop where it isn't needed. This is something to keep an eye on as it is so easy to do.
For example:
COLOR RGB(D*grn,C*red,D*blu)
FOR A=D TO D+60
IF A<=D+6 THEN
B=B+3000
ELSE
B=B=10
END IF
LINE(A,C+3)-(A,480)
NEXT A
You initially had the colour code inside the 'A' loop, but as D and C don't change inside that loop, there is no need to recalculate it. It might not save you much processing time, but it's always worthwhile.
I apologise if I have fixed things that weren't a problem, or that changed the intention of your code, but I'm not quite sure what you were aiming for.