'===========================================================================
' Subject: SINE GRAPH                         Date: 03-11-92 (10:20:00)    
'  Author: Rick Pedley                        Code: QB, QBasic             
'  Origin: SINE,GRAPH                       Packet: EGAVGA.ABC
'===========================================================================
DEFINT A-Z
DIM SineRow!(240), SineCol!(350)
FOR x = 1 TO 240
   SineRow!(x) = SIN(x / 10) * 30
NEXT x
FOR x = 1 TO 350
   SineCol!(x) = SIN(x / 20) * 30
NEXT x
                                                                 
SCREEN 12, 0  'VGA 640 x 480                                    
CF = 1: MaxVertRes = 480: MaxHorzRes = 640
R = 0: P = 0: H = 0
C = 0: A = 0: Z = 0: Under = -1  'Change to 0 for no under side.
T = 1: L = 1: K = MaxVertRes: D = 0: G = 0
T1! = TIMER
Start:                                                          
   P = K
   FOR C = T + D TO 1 STEP -CF
      A = T + L: R = A - C: IF R > 240 GOTO SkipSurface
      Z = (SineRow!(R) + SineCol!(C)) + 150
      H = K - Z - R
      IF H >= P OR H < 0 GOTO Underside
      P = H: PSET (A - 1, P), 9  '<-Try 10,12,13,etc.           
Underside:                                                      
      IF Under THEN
         IF R = L OR R = L + 1 THEN G = H + 5: GOTO SkipUnder
         IF H <= G GOTO SkipUnder
         G = H: IF G > MaxVertRes GOTO SkipUnder
         PSET (A - 1, G), 1 '<-Try 2,4,12, etc.                 
      END IF
SkipUnder:                                                      
   NEXT C
                                                                 
SkipSurface:                                                    
   IF A = MaxHorzRes GOTO Done
   T = T + 1
   IF T > 350 THEN
      T = 350
      L = L + 1: D = D + 1
      IF D = CF THEN D = 0
   END IF
   GOTO Start
Done:                                                           
DO UNTIL LEN(INKEY$): LOOP

