home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / basic / svgapb21 / svgamod1.bas < prev    next >
Encoding:
BASIC Source File  |  1994-05-09  |  30.7 KB  |  1,062 lines

  1. ''****************************************************************************
  2. '*
  3. '*      'SVGAPB' A Super VGA Graphics Librarys for use with 
  4. '*      Spectra Publishing's Power BASIC 3.x
  5. '*      Copyright 1993-1994 by Stephen L. Balkum and Daniel A. Sill
  6. '*
  7. '*      Power BASIC is a registered trademark of Spectra Publishing.
  8. '*      GIF and 'Graphics Interchange Format' are trademarks (TM) 
  9. '*      ofCompuServe, Incorporated, an H&R Block Company.
  10. '*
  11. '*    **************** UNREGISTERED SHAREWARE VERSION **********************
  12. '*    * FOR EVALUATION ONLY. NOT FOR RESALE IN ANY FORM. SOFTWARE WRITTEN  *
  13. '*    * USING THIS UNREGISTERED SHAREWARE GRAPHICS LIBRARY MAY NOT BY SOLD *
  14. '*    * OR USED FOR ANY PURPOSE OTHER THAN THE EVALUATION OF THIS LIBRARY. *
  15. '*    **********************************************************************
  16. '*
  17. '*    **************** NO WARRANTIES AND NO LIABILITY **********************
  18. '*    * Stephen L. Balkum and Daniel A. Sill provide no warranties, either *
  19. '*    * expressed or implied, of merchant ability, or fitness, for a       *
  20. '*    * particular use or purpose of this SOFTWARE and documentation.      *
  21. '*    * In no event shall Stephen L. Balkum or Daniel A. Sill be held      *
  22. '*    * liable for any damages resulting from the use or misuse of the     *
  23. '*    * SOFTWARE and documentation.                                        *
  24. '*    **********************************************************************
  25. '*
  26. '*    ************** U.S. GOVERNMENT RESTRICTED RIGHTS *********************
  27. '*    * Use, duplication, or disclosure of the SOFTWARE and documentation  *
  28. '*    * by the U.S. Government is subject to the restrictions as set forth *
  29. '*    * in subparagraph (c)(1)(ii) of the Rights in Technical Data and     *
  30. '*    * Computer Software clause at DFARS 252.227-7013.                    *
  31. '*    * Contractor/manufacturer is Stephen L. Balkum and Daniel A. Sill,   *
  32. '*    * P.O. Box 7704, Austin, Texas 78713-7704                            *
  33. '*    **********************************************************************
  34. '*
  35. '*    **********************************************************************
  36. '*    * By using this SOFTWARE or documentation, you agree to the above    *
  37. '*    * terms and conditions.                                              *
  38. '*    **********************************************************************
  39. '*
  40. '****************************************************************************
  41.  
  42.  
  43.     $INCLUDE "SVGAPB.BI"
  44.     $INCLUDE "SVGADEMO.BI"
  45.  
  46.     DEFINT A-Z
  47.  
  48.     
  49.     SUB DOBLOCK (RET$)
  50.     MYPI! = ATN(1) * 4
  51.  
  52.     '*************************************************************************
  53.     '* SET UP THE TITLE
  54.     '*************************************************************************
  55.     TITLE$ = "DEMO 5: Block functions and Sprites"
  56.     PALSET PAL(0), 0, 255
  57.  
  58.     '*************************************************************************
  59.     '* SHOW BLOCK GET (DRAW SOME CIRCLES AND "GET A CHUNK OF THEM")
  60.     '*************************************************************************
  61.     FILLSCREEN 0
  62.     SETVIEW 0, 0, GETMAXX, GETMAXY
  63.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  64.     A$ = "BLKGET (X1,Y1,X2,Y2,GfxBlock)"
  65.     DRWSTRING 1, 7, 0, A$, 10, 16
  66.     Colr = 16
  67.     FOR I = 0 TO GETMAXX \ 2
  68.         DRWCIRCLE 1, Colr, GETMAXX \ 4 + I, GETMAXY \ 2, GETMAXY \ 5
  69.         Colr = Colr + 4
  70.         IF Colr > 255 THEN
  71.             Colr = 16
  72.         END IF
  73.     NEXT I
  74.     XINC = GETMAXX \ 20
  75.     YINC = GETMAXY \ 20
  76.     X1 = GETMAXX \ 2 - XINC
  77.     Y1 = GETMAXY \ 2 - YINC
  78.     X2 = GETMAXX \ 2 + XINC
  79.     Y2 = GETMAXY \ 2 + YINC
  80.     DRWBOX 1, 0, X1, Y1, X2, Y2
  81.     BLKSIZE1 = (((X2 - X1 + 1) * (Y2 - Y1 + 1)) / 2) + 3
  82.     REDIM DYNAMIC GFXBLK1(BLKSIZE1) AS SHARED INTEGER
  83.     BLKGET X1, Y1, X2, Y2, GFXBLK1(0)
  84.     GETKEY RET$
  85.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  86.         FILLSCREEN 0
  87.         EXIT SUB
  88.     END IF
  89.  
  90.     '*************************************************************************
  91.     '* SHOW BLOCK ROTATE AND SPRITE STUFF
  92.     '*************************************************************************
  93.     X = (X2 - X1) \ 2 + X1
  94.     Y = (Y2 - Y1) \ 2 + Y1
  95.     A$ = "BLKROTATE (Angle,BackFill,SourceGfxBlock,DestGfxBlock)   "
  96.     DRWSTRING 1, 7, 0, A$, 10, 16
  97.     A$ = "SPRITEGAP(TranSColr,X,Y,SpriteArray,BackGroundGfxBlock)"
  98.     DRWSTRING 1, 7, 0, A$, 10, 32
  99.     A$ = "SPRITEPUT(Mode%,TranSColr,X,Y,SpriteArray)"
  100.     DRWSTRING 1, 7, 0, A$, 10, 48
  101.     FILLAREA X1 + 2, Y1 + 2, 0, 0
  102.     BLKSIZE2 = (BLKROTATESIZE(45, GFXBLK1(0)) \ 2) + 1
  103.     REDIM DYNAMIC GFXBLK2(BLKSIZE2) AS SHARED INTEGER
  104.     REDIM DYNAMIC GFXBLK3(BLKSIZE2) AS SHARED INTEGER
  105.     BLKGET X1, Y1, X2, Y2, GFXBLK3(0)
  106.     SETVIEW 0, 64, GETMAXX, GETMAXY
  107.     FOR I = 0 TO 360 STEP 3
  108.         DUMMY = BLKROTATE(I, 1, GFXBLK1(0), GFXBLK2(0))
  109.         SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  110.         SPRITEGAP 1, X - GFXBLK2(0) \ 2, Y - GFXBLK2(1) \ 2, GFXBLK2(0), GFXBLK3(0)
  111.         SDELAY 4
  112.     NEXT I
  113.     SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  114.     BLKPUT 1, X1, Y1, GFXBLK1(0)
  115.     GETKEY RET$
  116.     SETVIEW 0, 0, GETMAXX, GETMAXY
  117.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  118.         FILLSCREEN 0
  119.         EXIT SUB
  120.     END IF
  121.  
  122.     '*************************************************************************
  123.     '* SHOW BLOCK RESIZE AND SPRITE STUFF
  124.     '*************************************************************************
  125.     A$ = "BLKRESIZE (NewWidth,NewHeight,SourceGfxBlock,DestGfxBlock)   "
  126.     DRWSTRING 1, 7, 0, A$, 10, 16
  127.     A$ = "SPRITEGAP(TranSColr,X,Y,SpriteArray,BackGroundGfxBlock)"
  128.     DRWSTRING 1, 7, 0, A$, 10, 32
  129.     A$ = "SPRITEPUT(Mode%,TranSColr,X,Y,SpriteArray)"
  130.     DRWSTRING 1, 7, 0, A$, 10, 48
  131.     SETVIEW 0, 64, GETMAXX, GETMAXY
  132.     FILLAREA X1 + 2, Y1 + 2, 0, 0
  133.     BLKSIZE3 = (((X2 - X1 + 1) * (Y2 - Y1 + 1)) / 2) + 3
  134.     REDIM DYNAMIC GFXBLK3(BLKSIZE3) AS SHARED INTEGER
  135.     BLKGET X1, Y1, X2, Y2, GFXBLK3(0)
  136.     BLKSIZE2 = (((GFXBLK1(0) + 1) * (GFXBLK1(1) + 1)) / 2) + 3
  137.     REDIM DYNAMIC GFXBLK2(BLKSIZE2) AS SHARED INTEGER
  138.     FOR I = 0 TO XINC
  139.         BLKRESIZE GFXBLK1(0) - I, GFXBLK1(1) - I, GFXBLK1(0), GFXBLK2(0)
  140.         SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  141.         SPRITEGAP 1, X - GFXBLK2(0) \ 2, Y - GFXBLK2(1) \ 2, GFXBLK2(0), GFXBLK3(0)
  142.         SDELAY 5
  143.     NEXT I
  144.     SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  145.     FOR I = XINC TO 0 STEP -1
  146.         BLKRESIZE GFXBLK1(0) - I, GFXBLK1(1) - I, GFXBLK1(0), GFXBLK2(0)
  147.         SPRITEPUT 1, 1, X - GFXBLK3(0) \ 2, Y - GFXBLK3(1) \ 2, GFXBLK3(0)
  148.         SPRITEGAP 1, X - GFXBLK2(0) \ 2, Y - GFXBLK2(1) \ 2, GFXBLK2(0), GFXBLK3(0)
  149.         SDELAY 5
  150.     NEXT I
  151.     SPRITEPUT 1, 1, X - GFXBLK1(0) \ 2, Y - GFXBLK1(1) \ 2, GFXBLK1(0)
  152.     GETKEY RET$
  153.     SETVIEW 0, 0, GETMAXX, GETMAXY
  154.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  155.         FILLSCREEN 0
  156.         EXIT SUB
  157.     END IF
  158.  
  159.     '*************************************************************************
  160.     '* SHOW BLOCK PUT (PUT THE "CHUNKS" RANDOMLY AROUND THE SCREEN)
  161.     '*************************************************************************
  162.     SETVIEW 0, 31, GETMAXX, 64
  163.     FILLVIEW 0
  164.     A$ = "BLKPUT (Mode,X,Y,GfxBlock)   "
  165.     DRWSTRING 1, 7, 0, A$, 10, 16
  166.     XINC = GETMAXX \ 10
  167.     YINC = GETMAXY \ 10
  168.     SETVIEW 0, 32, GETMAXX, GETMAXY
  169.     FOR I = 0 TO GETMAXX \ 2
  170.         X = (GETMAXX + XINC) * RND - XINC
  171.         Y = (GETMAXY + YINC) * RND - YINC
  172.         BLKPUT 1, X, Y, GFXBLK1(0)
  173.     NEXT I
  174.     GETKEY RET$
  175.     SETVIEW 0, 0, GETMAXX, GETMAXY
  176.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  177.         FILLSCREEN 0
  178.         EXIT SUB
  179.     END IF
  180.  
  181.     END SUB
  182.  
  183.  
  184.     SUB DOCLIP (RET$)
  185.  
  186.     '*************************************************************************
  187.     '* SET UP AND SHOW THE TITLE
  188.     '*************************************************************************
  189.     TITLE$ = "DEMO 2: Clipping capability"
  190.     PALSET PAL2(0), 0, 255
  191.  
  192.     '*************************************************************************
  193.     '* SET UP THE WINDOWS
  194.     '*************************************************************************
  195.     FILLSCREEN 0
  196.     SETVIEW 0, 0, GETMAXX, GETMAXY
  197.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  198.     A$ = "All primitives automatically clip"
  199.     DRWSTRING 1, 7, 0, A$, 10, 16
  200.     WDTH = (GETMAXX + 1) / 2.25
  201.     SPCINGX = ((GETMAXX + 1) - WDTH * 2) / 3
  202.     HGTH = (GETMAXY + 1 - 35) / 2.25
  203.     SPCINGY = ((GETMAXY + 1 - 35) - HGTH * 2) / 3
  204.     XINC = WDTH * 1.5
  205.     YINC = HGTH * 1.5
  206.     XSUB = WDTH * .25
  207.     YSUB = HGTH * .25
  208.     B1X1 = SPCINGX
  209.     B1X2 = B1X1 + WDTH
  210.     B1Y1 = SPCINGY + 35
  211.     B1Y2 = B1Y1 + HGTH
  212.     B2X2 = GETMAXX - SPCINGX
  213.     B2X1 = B2X2 - WDTH
  214.     B2Y1 = SPCINGY + 35
  215.     B2Y2 = B2Y1 + HGTH
  216.     B3X2 = GETMAXX - SPCINGX
  217.     B3X1 = B3X2 - WDTH
  218.     B3Y2 = GETMAXY - SPCINGY
  219.     B3Y1 = B3Y2 - HGTH
  220.     B4X1 = SPCINGX
  221.     B4X2 = B4X1 + WDTH
  222.     B4Y2 = GETMAXY - SPCINGY
  223.     B4Y1 = B4Y2 - HGTH
  224.     DRWBOX 1, 15, B1X1, B1Y1, B1X2, B1Y2
  225.     DRWBOX 1, 15, B2X1, B2Y1, B2X2, B2Y2
  226.     DRWBOX 1, 15, B3X1, B3Y1, B3X2, B3Y2
  227.     DRWBOX 1, 15, B4X1, B4Y1, B4X2, B4Y2
  228.     B1X1 = B1X1 + 1
  229.     B1Y1 = B1Y1 + 1
  230.     B1X2 = B1X2 - 1
  231.     B1Y2 = B1Y2 - 1
  232.     B2X1 = B2X1 + 1
  233.     B2Y1 = B2Y1 + 1
  234.     B2X2 = B2X2 - 1
  235.     B2Y2 = B2Y2 - 1
  236.     B3X1 = B3X1 + 1
  237.     B3Y1 = B3Y1 + 1
  238.     B3X2 = B3X2 - 1
  239.     B3Y2 = B3Y2 - 1
  240.     B4X1 = B4X1 + 1
  241.     B4Y1 = B4Y1 + 1
  242.     B4X2 = B4X2 - 1
  243.     B4Y2 = B4Y2 - 1
  244.     Colr = 1
  245.     
  246.     '*************************************************************************
  247.     '* SHOW THE CLIPPING
  248.     '*************************************************************************
  249.     FOR I = 0 TO GETMAXX \ 6
  250.         FOR J = 1 TO 4
  251.             SELECT CASE J
  252.                 CASE = 1
  253.                     SETVIEW B1X1, B1Y1, B1X2, B1Y2
  254.                     FOR K = 0 TO 4
  255.                         X = B1X1 + RND * XINC - XSUB
  256.                         Y = B1Y1 + RND * XINC - XSUB
  257.                         DRWPOINT 1, Colr, X, Y
  258.                         Colr = Colr + 1
  259.                         IF Colr > 15 THEN
  260.                             Colr = 1
  261.                         END IF
  262.                     NEXT K
  263.                 CASE = 2
  264.                     SETVIEW B2X1, B2Y1, B2X2, B2Y2
  265.                     X1 = B2X1 + RND * XINC - XSUB
  266.                     Y1 = B2Y1 + RND * XINC - XSUB
  267.                     X2 = B2X1 + RND * XINC - XSUB
  268.                     Y2 = B2Y1 + RND * XINC - XSUB
  269.                     DRWLINE 1, Colr, X1, Y1, X2, Y2
  270.                     Colr = Colr + 1
  271.                     IF Colr > 15 THEN
  272.                         Colr = 1
  273.                     END IF
  274.                 CASE = 3
  275.                     SETVIEW B3X1, B3Y1, B3X2, B3Y2
  276.                     X = B3X1 + RND * XINC - XSUB
  277.                     Y = B3Y1 + RND * XINC - XSUB
  278.                     RAD = RND * WDTH \ 2
  279.                     DRWCIRCLE 1, Colr, X, Y, RAD
  280.                     Colr = Colr + 1
  281.                     IF Colr > 15 THEN
  282.                         Colr = 1
  283.                     END IF
  284.                 CASE = 4
  285.                     SETVIEW B4X1, B4Y1, B4X2, B4Y2
  286.                     X = B4X1 + RND * XINC - XSUB
  287.                     Y = B4Y1 + RND * XINC - XSUB
  288.                     RADX = RND * WDTH \ 2
  289.                     RADY = RND * WDTH \ 2
  290.                     DRWELLIPSE 1, Colr, X, Y, RADX, RADY
  291.                     Colr = Colr + 1
  292.                     IF Colr > 15 THEN
  293.                         Colr = 1
  294.                     END IF
  295.             END SELECT
  296.         NEXT J
  297.     NEXT I
  298.     SETVIEW 0, 0, GETMAXX, GETMAXY
  299.     GETKEY RET$
  300.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  301.         EXIT SUB
  302.     END IF
  303.     END SUB
  304.  
  305.  
  306.     SUB DOFILL (RET$)
  307.     
  308.     '*************************************************************************
  309.     '* SET UP THE TITLE
  310.     '*************************************************************************
  311.     TITLE$ = "DEMO 3: Filling functions"
  312.     PALSET PAL(0), 0, 255
  313.     
  314.     '*************************************************************************
  315.     '* SHOW SCREEN FILL
  316.     '*************************************************************************
  317.     FILLSCREEN 10
  318.     SETVIEW 0, 0, GETMAXX, GETMAXY
  319.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  320.     A$ = "FILLSCREEN (Color)"
  321.     DRWSTRING 1, 7, 0, A$, 10, 16
  322.     GETKEY RET$
  323.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  324.         SETVIEW 0, 0, GETMAXX, GETMAXY
  325.         EXIT SUB
  326.     END IF
  327.     
  328.     '*************************************************************************
  329.     '* SET UP WINDOWS AND SHOW VIEWPORT FILL
  330.     '*************************************************************************
  331.     FILLSCREEN 0
  332.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  333.     A$ = "FILLVIEW (Color)"
  334.     DRWSTRING 1, 7, 0, A$, 10, 16
  335.     WDTH = (GETMAXX + 1) / 2.25
  336.     SPCINGX = ((GETMAXX + 1) - WDTH * 2) / 3
  337.     HGTH = (GETMAXY + 1 - 35) / 2.25
  338.     SPCINGY = ((GETMAXY + 1 - 35) - HGTH * 2) / 3
  339.     XINC = WDTH * 1.5
  340.     YINC = HGTH * 1.5
  341.     XSUB = WDTH * .25
  342.     YSUB = HGTH * .25
  343.     B1X1 = SPCINGX
  344.     B1X2 = B1X1 + WDTH
  345.     B1Y1 = SPCINGY + 35
  346.     B1Y2 = B1Y1 + HGTH
  347.     B2X2 = GETMAXX - SPCINGX
  348.     B2X1 = B2X2 - WDTH
  349.     B2Y1 = SPCINGY + 35
  350.     B2Y2 = B2Y1 + HGTH
  351.     B3X2 = GETMAXX - SPCINGX
  352.     B3X1 = B3X2 - WDTH
  353.     B3Y2 = GETMAXY - SPCINGY
  354.     B3Y1 = B3Y2 - HGTH
  355.     B4X1 = SPCINGX
  356.     B4X2 = B4X1 + WDTH
  357.     B4Y2 = GETMAXY - SPCINGY
  358.     B4Y1 = B4Y2 - HGTH
  359.     DRWBOX 1, 15, B1X1, B1Y1, B1X2, B1Y2
  360.     DRWBOX 1, 15, B2X1, B2Y1, B2X2, B2Y2
  361.     DRWBOX 1, 15, B3X1, B3Y1, B3X2, B3Y2
  362.     DRWBOX 1, 15, B4X1, B4Y1, B4X2, B4Y2
  363.     B1X1 = B1X1 + 1
  364.     B1Y1 = B1Y1 + 1
  365.     B1X2 = B1X2 - 1
  366.     B1Y2 = B1Y2 - 1
  367.     B2X1 = B2X1 + 1
  368.     B2Y1 = B2Y1 + 1
  369.     B2X2 = B2X2 - 1
  370.     B2Y2 = B2Y2 - 1
  371.     B3X1 = B3X1 + 1
  372.     B3Y1 = B3Y1 + 1
  373.     B3X2 = B3X2 - 1
  374.     B3Y2 = B3Y2 - 1
  375.     B4X1 = B4X1 + 1
  376.     B4Y1 = B4Y1 + 1
  377.     B4X2 = B4X2 - 1
  378.     B4Y2 = B4Y2 - 1
  379.     GETKEY RET$
  380.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  381.         SETVIEW 0, 0, GETMAXX, GETMAXY
  382.         EXIT SUB
  383.     END IF
  384.     SETVIEW B1X1, B1Y1, B1X2, B1Y2
  385.     FILLVIEW 10
  386.     SETVIEW B2X1, B2Y1, B2X2, B2Y2
  387.     FILLVIEW 12
  388.     SETVIEW B3X1, B3Y1, B3X2, B3Y2
  389.     FILLVIEW 13
  390.     SETVIEW B4X1, B4Y1, B4X2, B4Y2
  391.     FILLVIEW 14
  392.     SETVIEW 0, 0, GETMAXX, GETMAXY
  393.     GETKEY RET$
  394.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  395.         SETVIEW 0, 0, GETMAXX, GETMAXY
  396.         EXIT SUB
  397.     END IF
  398.     
  399.     '*************************************************************************
  400.     '* SET UP WINDOW AND SHOW AREA FILL
  401.     '*************************************************************************
  402.     FILLSCREEN 0
  403.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  404.     A$ = "FILLAREA (Xseed,Yseed,BrdrCol,FilCol)"
  405.     DRWSTRING 1, 7, 0, A$, 10, 16
  406.     DRWBOX 1, 15, 5, 35, GETMAXX - 4, GETMAXY - 4
  407.     SETVIEW 6, 36, GETMAXX - 5, GETMAXY - 5
  408.  
  409.     Colr = 1
  410.     FOR I = 0 TO GETMAXX \ 10
  411.         X = 50 + RND * (GETMAXX - 50)
  412.         Y = 50 + RND * (GETMAXY - 50)
  413.         RADX = 2 + RND * GETMAXX \ 20
  414.         RADY = 2 + RND * GETMAXX \ 20
  415.         DRWELLIPSE 1, Colr, X, Y, RADX, RADY
  416.         Colr = Colr + 1
  417.         IF Colr > 9 THEN
  418.             Colr = 1
  419.         END IF
  420.     NEXT I
  421.     FOR I = 0 TO GETMAXX \ 15
  422.         X = 50 + RND * (GETMAXX - 50)
  423.         Y = 50 + RND * (GETMAXY - 50)
  424.         RADX = 2 + RND * GETMAXX \ 20
  425.         RADY = 2 + RND * GETMAXX \ 20
  426.         DRWELLIPSE 1, 12, X, Y, RADX, RADY
  427.     NEXT I
  428.     GETKEY RET$
  429.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  430.         SETVIEW 0, 0, GETMAXX, GETMAXY
  431.         EXIT SUB
  432.     END IF
  433.     FILLAREA 7, 37, 12, 10
  434.     GETKEY RET$
  435.     SETVIEW 0, 0, GETMAXX, GETMAXY
  436.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  437.         EXIT SUB
  438.     END IF
  439.     
  440.     '*************************************************************************
  441.     '* SET UP WINDOW AND SHOW COLOR FILL
  442.     '*************************************************************************
  443.     FILLSCREEN 0
  444.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  445.     A$ = "FILLCOLOR (Xseed,Yseed,OldCol,FilCol)"
  446.     DRWSTRING 1, 7, 0, A$, 10, 16
  447.     DRWBOX 1, 15, 5, 35, GETMAXX - 4, GETMAXY - 4
  448.     SETVIEW 6, 36, GETMAXX - 5, GETMAXY - 5
  449.     Colr = 1
  450.     FOR I = 0 TO GETMAXX \ 10
  451.         X = 50 + RND * (GETMAXX - 50)
  452.         Y = 50 + RND * (GETMAXY - 50)
  453.         RADX = 2 + RND * GETMAXX \ 20
  454.         RADY = 2 + RND * GETMAXX \ 20
  455.         DRWELLIPSE 1, Colr, X, Y, RADX, RADY
  456.         Colr = Colr + 1
  457.         IF Colr > 9 THEN
  458.             Colr = 1
  459.         END IF
  460.     NEXT I
  461.     FOR I = 0 TO GETMAXX \ 15
  462.         X = 50 + RND * (GETMAXX - 50)
  463.         Y = 50 + RND * (GETMAXY - 50)
  464.         RADX = 2 + RND * GETMAXX \ 20
  465.         RADY = 2 + RND * GETMAXX \ 20
  466.         DRWELLIPSE 1, 12, X, Y, RADX, RADY
  467.     NEXT I
  468.     GETKEY RET$
  469.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  470.         SETVIEW 0, 0, GETMAXX, GETMAXY
  471.         EXIT SUB
  472.     END IF
  473.     FILLCOLOR 7, 37, 0, 10
  474.     SETVIEW 0, 0, GETMAXX, GETMAXY
  475.     GETKEY RET$
  476.     END SUB
  477.  
  478.     
  479.     SUB DOPAL (RET$)
  480.     
  481.     '*************************************************************************
  482.     '* SET UP THE TITLE
  483.     '*************************************************************************
  484.     TITLE$ = "DEMO 4: Palette functions"
  485.     PALSET ORGPAL(0), 0, 255
  486.     
  487.     '*************************************************************************
  488.     '* SHOW PALETTE SET/GET
  489.     '*************************************************************************
  490.     FILLSCREEN 0
  491.     SETVIEW 0, 0, GETMAXX, GETMAXY
  492.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  493.     A$ = "PALGET (Palette,FirstColr,LastColr) PALSET (Palette,FirtColr,LastColr)"
  494.     DRWSTRING 1, 7, 0, A$, 10, 16
  495.     Colr = 16
  496.     X1 = 10
  497.     X2 = GETMAXX - 9
  498.     Y1 = 35
  499.     Y2 = GETMAXY - 9
  500.     I = 0
  501.     WHILE Y1 + I < Y2 - I
  502.         DRWBOX 1, Colr, X1 + I, Y1 + I, X2 - I, Y2 - I
  503.         Colr = Colr + 1
  504.         IF Colr > 255 THEN
  505.             Colr = 16
  506.         END IF
  507.         I = I + 1
  508.     WEND
  509.     GETKEY RET$
  510.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  511.         FILLSCREEN 0
  512.         PALSET PAL(0), 16, 255
  513.         SETVIEW 0, 0, GETMAXX, GETMAXY
  514.         EXIT SUB
  515.     END IF
  516.     PALSET PAL(0), 16, 255
  517.     
  518.     '*************************************************************************
  519.     '* SHOW PALETTE AUTO FADE OUT/IN
  520.     '*************************************************************************
  521.     A$ = "PALIOAUTO (Palette,FirstColr,LastColr,Speed)                           "
  522.     DRWSTRING 1, 7, 0, A$, 10, 16
  523.     GETKEY RET$
  524.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  525.         SETVIEW 0, 0, GETMAXX, GETMAXY
  526.         EXIT SUB
  527.     END IF
  528.     PALIOAUTO PAL(0), 16, 255, -2
  529.     PALIOAUTO PAL(0), 16, 255, 2
  530.  
  531.     '*************************************************************************
  532.     '* SHOW PALETTE AUTO FADE TO
  533.     '*************************************************************************
  534.     A$ = "PALCHGAUTO (Palette,NewPalette$,FirstColr,LastColr,Speed)"
  535.     DRWSTRING 1, 7, 0, A$, 10, 16
  536.     GETKEY RET$
  537.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  538.         SETVIEW 0, 0, GETMAXX, GETMAXY
  539.         EXIT SUB
  540.     END IF
  541.     PALCHGAUTO PAL(0), PAL2(0), 16, 255, 2
  542.     PALCHGAUTO PAL2(0), PAL(0), 16, 255, 2
  543.  
  544.     '*************************************************************************
  545.     '* SHOW PALETTE ROTATE
  546.     '*************************************************************************
  547.     A$ = "PALROTATE (Palette,FirstColr,LastColr,Shift)             "
  548.     DRWSTRING 1, 7, 0, A$, 10, 16
  549.     GETKEY RET$
  550.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  551.         SETVIEW 0, 0, GETMAXX, GETMAXY
  552.         EXIT SUB
  553.     END IF
  554.     FOR I = 0 TO 240
  555.         PALROTATE PAL(0), 16, 255, 2
  556.         PALGET PAL(0), 16, 255
  557.     NEXT I
  558.     FOR I = 0 TO 120
  559.         PALROTATE PAL(0), 16, 255, -8
  560.         PALGET PAL(0), 16, 255
  561.     NEXT I
  562.     GETKEY RET$
  563.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  564.         SETVIEW 0, 0, GETMAXX, GETMAXY
  565.         EXIT SUB
  566.     END IF
  567.     END SUB
  568.  
  569.     
  570.     SUB DOPRIMS (RET$)
  571.  
  572.     '*************************************************************************
  573.     '* SET UP THE TITLE
  574.     '*************************************************************************
  575.     TITLE$ = "DEMO 1: Primitives"
  576.     PALSET PAL(0), 0, 255
  577.  
  578.     '*************************************************************************
  579.     '* DRAW SOME POINTS
  580.     '*************************************************************************
  581.     FILLSCREEN 0
  582.     SETVIEW 0, 0, GETMAXX, GETMAXY
  583.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  584.     A$ = "DRWPOINT (Mode,Color,X1,Y1,X2,Y2)"
  585.     DRWSTRING 1, 7, 0, A$, 10, 18
  586.     SETVIEW 0, 32, GETMAXX, GETMAXY
  587.     Colr = 1
  588.     NUMOF = GETMAXX * 2
  589.     FOR A = 0 TO NUMOF
  590.         X1 = RND * GETMAXX
  591.         Y1 = RND * GETMAXY
  592.         DRWPOINT 1, Colr, X1, Y1
  593.         Colr = Colr + 1
  594.         IF Colr > 15 THEN
  595.             Colr = 1
  596.         END IF
  597.     NEXT A
  598.     GETKEY RET$
  599.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  600.         SETVIEW 0, 0, GETMAXX, GETMAXY
  601.         EXIT SUB
  602.     END IF
  603.  
  604.     '*************************************************************************
  605.     '* DRAW SOME LINES
  606.     '*************************************************************************
  607.     SETVIEW 0, 0, GETMAXX, GETMAXY
  608.     FILLSCREEN 0
  609.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  610.     A$ = "DRWLINE (Mode,Color,X1,Y1,X2,Y2)"
  611.     DRWSTRING 1, 7, 0, A$, 10, 18
  612.     SETVIEW 0, 32, GETMAXX, GETMAXY
  613.     NUMOF = GETMAXX \ 6
  614.     FOR A = 0 TO NUMOF
  615.         X1 = RND * GETMAXX
  616.         Y1 = RND * GETMAXY
  617.         X2 = RND * GETMAXX
  618.         Y2 = RND * GETMAXY
  619.         DRWLINE 1, Colr, X1, Y1, X2, Y2
  620.         Colr = Colr + 1
  621.         IF Colr > 15 THEN
  622.             Colr = 1
  623.         END IF
  624.     NEXT A
  625.     GETKEY RET$
  626.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  627.         SETVIEW 0, 0, GETMAXX, GETMAXY
  628.         EXIT SUB
  629.     END IF
  630.  
  631.     '*************************************************************************
  632.     '* DRAW SOME BOXES
  633.     '*************************************************************************
  634.     SETVIEW 0, 0, GETMAXX, GETMAXY
  635.     FILLSCREEN 0
  636.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  637.     A$ = "DRWBOX (Mode,Color,X1,Y1,X2,Y2)"
  638.     DRWSTRING 1, 7, 0, A$, 10, 18
  639.     SETVIEW 0, 32, GETMAXX, GETMAXY
  640.     NUMOF = GETMAXX \ 10
  641.     FOR A = 0 TO NUMOF
  642.         X1 = RND * GETMAXX
  643.         Y1 = RND * GETMAXY
  644.         X2 = RND * GETMAXX
  645.         Y2 = RND * GETMAXY
  646.         DRWBOX 1, Colr, X1, Y1, X2, Y2
  647.         Colr = Colr + 1
  648.         IF Colr > 15 THEN
  649.             Colr = 1
  650.         END IF
  651.     NEXT A
  652.     GETKEY RET$
  653.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  654.         SETVIEW 0, 0, GETMAXX, GETMAXY
  655.         EXIT SUB
  656.     END IF
  657.  
  658.     '*************************************************************************
  659.     '* DRAW SOME FILLED BOXES
  660.     '*************************************************************************
  661.     SETVIEW 0, 0, GETMAXX, GETMAXY
  662.     FILLSCREEN 0
  663.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  664.     A$ = "DRWFILLBOX (Mode,Color,X1,Y1,X2,Y2)"
  665.     DRWSTRING 1, 7, 0, A$, 10, 18
  666.     SETVIEW 0, 32, GETMAXX, GETMAXY
  667.     NUMOF = GETMAXX \ 15
  668.     FOR A = 0 TO NUMOF
  669.         X1 = RND * GETMAXX
  670.         Y1 = RND * GETMAXY
  671.         X2 = RND * GETMAXX
  672.         Y2 = RND * GETMAXY
  673.         DRWFILLBOX 1, Colr, X1, Y1, X2, Y2
  674.         Colr = Colr + 1
  675.         IF Colr > 15 THEN
  676.             Colr = 1
  677.         END IF
  678.     NEXT A
  679.     GETKEY RET$
  680.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  681.         SETVIEW 0, 0, GETMAXX, GETMAXY
  682.         EXIT SUB
  683.     END IF
  684.  
  685.     '*************************************************************************
  686.     '* DRAW SOME CIRCLES
  687.     '*************************************************************************
  688.     SETVIEW 0, 0, GETMAXX, GETMAXY
  689.     FILLSCREEN 0
  690.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  691.     A$ = "DRWCIRCLE (Mode,Color,Cx,Cy,Radius)"
  692.     DRWSTRING 1, 7, 0, A$, 10, 18
  693.     SETVIEW 0, 32, GETMAXX, GETMAXY
  694.     NUMOF = GETMAXX \ 20
  695.     MAXRAD = GETMAXX \ 2
  696.     FOR A = 0 TO NUMOF
  697.         X = RND * GETMAXX
  698.         Y = RND * GETMAXY
  699.         RAD = RND * MAXRAD
  700.         DRWCIRCLE 1, Colr, X, Y, RAD
  701.         Colr = Colr + 1
  702.         IF Colr > 15 THEN
  703.             Colr = 1
  704.         END IF
  705.     NEXT A
  706.     GETKEY RET$
  707.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  708.         SETVIEW 0, 0, GETMAXX, GETMAXY
  709.         EXIT SUB
  710.     END IF
  711.  
  712.     '*************************************************************************
  713.     '* DRAW SOME FILLED CIRCLES
  714.     '*************************************************************************
  715.     SETVIEW 0, 0, GETMAXX, GETMAXY
  716.     FILLSCREEN 0
  717.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  718.     A$ = "DRWFILLCIRCLE (Mode,Color,Cx,Cy,Radius)"
  719.     DRWSTRING 1, 7, 0, A$, 10, 18
  720.     SETVIEW 0, 32, GETMAXX, GETMAXY
  721.     NUMOF = GETMAXX \ 25
  722.     MAXRAD = GETMAXX \ 2
  723.     FOR A = 0 TO NUMOF
  724.         X = RND * GETMAXX
  725.         Y = RND * GETMAXY
  726.         RAD = RND * MAXRAD
  727.         DRWFILLCIRCLE 1, Colr, X, Y, RAD
  728.         Colr = Colr + 1
  729.         IF Colr > 15 THEN
  730.             Colr = 1
  731.         END IF
  732.     NEXT A
  733.     GETKEY RET$
  734.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  735.         SETVIEW 0, 0, GETMAXX, GETMAXY
  736.         EXIT SUB
  737.     END IF
  738.  
  739.     '*************************************************************************
  740.     '* DRAW SOME ELLIPSES
  741.     '*************************************************************************
  742.     SETVIEW 0, 0, GETMAXX, GETMAXY
  743.     FILLSCREEN 0
  744.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  745.     A$ = "DRWELLIPSE (Mode,Color,Cx,Cy,RadiusX,RadiusY)"
  746.     DRWSTRING 1, 7, 0, A$, 10, 18
  747.     SETVIEW 0, 32, GETMAXX, GETMAXY
  748.     NUMOF = GETMAXX \ 20
  749.     MAXRAD = GETMAXX \ 2
  750.     FOR A = 0 TO NUMOF
  751.         X = RND * GETMAXX
  752.         Y = RND * GETMAXY + 35
  753.         RADX = RND * MAXRAD
  754.         RADY = RND * MAXRAD
  755.         DRWELLIPSE 1, Colr, X, Y, RADX, RADY
  756.         Colr = Colr + 1
  757.         IF Colr > 15 THEN
  758.             Colr = 1
  759.         END IF
  760.     NEXT A
  761.     SETVIEW 0, 0, GETMAXX, GETMAXY
  762.     GETKEY RET$
  763.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  764.         EXIT SUB
  765.     END IF
  766.  
  767.     '*************************************************************************
  768.     '* DRAW SOME FILLED ELLIPSES
  769.     '*************************************************************************
  770.     SETVIEW 0, 0, GETMAXX, GETMAXY
  771.     FILLSCREEN 0
  772.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  773.     A$ = "DRWFILLELLIPSE (Mode,Color,Cx,Cy,RadiusX,RadiusY)"
  774.     DRWSTRING 1, 7, 0, A$, 10, 18
  775.     SETVIEW 0, 32, GETMAXX, GETMAXY
  776.     NUMOF = GETMAXX \ 20
  777.     MAXRAD = GETMAXX \ 2
  778.     FOR A = 0 TO NUMOF
  779.         X = RND * GETMAXX
  780.         Y = RND * GETMAXY + 35
  781.         RADX = RND * MAXRAD
  782.         RADY = RND * MAXRAD
  783.         DRWFILLELLIPSE 1, Colr, X, Y, RADX, RADY
  784.         Colr = Colr + 1
  785.         IF Colr > 15 THEN
  786.             Colr = 1
  787.         END IF
  788.     NEXT A
  789.     SETVIEW 0, 0, GETMAXX, GETMAXY
  790.     GETKEY RET$
  791.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  792.         EXIT SUB
  793.     END IF
  794.     END SUB
  795.  
  796.  
  797.     SUB DOSCROLL (RET$)
  798.     
  799.     '*************************************************************************
  800.     '* SET UP THE TITLE
  801.     '*************************************************************************
  802.     TITLE$ = "DEMO 7: Scroll functions"
  803.     PALSET PAL(0), 0, 255
  804.     FILLSCREEN 0
  805.     SETVIEW 0, 0, GETMAXX, GETMAXY
  806.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  807.     SPCNG = (GETMAXY - 32) \ 5
  808.     SKIP = (INT((GETMAXX + 1) / 160 + .9) * 2) - 1
  809.     Num = SPCNG / 2 / SKIP
  810.     IF SPCNG / 2 <> INT(SPCNG / 2) THEN
  811.         SPCNG = SPCNG + 1
  812.     END IF
  813.     X1 = ((GETMAXX + 1) \ 2) - SPCNG
  814.     Y1 = (((GETMAXY + 1 - 32) \ 2) + 32) - SPCNG
  815.     X2 = ((GETMAXX + 1) \ 2) + SPCNG
  816.     Y2 = (((GETMAXY + 1 - 32) \ 2) + 32) + SPCNG
  817.     DRWBOX 1, 12, X1, Y1, X2, Y2
  818.     X1 = X1 + 1
  819.     Y1 = Y1 + 1
  820.     X2 = X2 - 1
  821.     Y2 = Y2 - 1
  822.     Colr = 16
  823.     TEXT$ = "TEXT text TEXT"
  824.  
  825.     '*************************************************************************
  826.     '* SHOW SCROLLUP
  827.     '*************************************************************************
  828.     SETVIEW 0, 0, GETMAXX, GETMAXY
  829.     A$ = "SCROLLUP (X1,Y1,X2,Y2,NumLines,FillColr)"
  830.     DRWSTRING 1, 7, 0, A$, 10, 16
  831.     SETVIEW X1, Y1, X2, Y2
  832.     FILLVIEW 0
  833.     NUMOF = GETMAXX \ 10
  834.     FOR A = 0 TO NUMOF
  835.         X = RND * GETMAXX
  836.         Y = RND * GETMAXY
  837.         I = RND * GETMAXX
  838.         J = RND * GETMAXY
  839.         DRWLINE 1, Colr, X, Y, I, J
  840.         Colr = Colr + 3
  841.         IF Colr > 255 THEN
  842.             Colr = 16
  843.         END IF
  844.     NEXT A
  845.     DRWSTRING 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  846.     DRWSTRINGLT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  847.     DRWSTRINGDN 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  848.     DRWSTRINGRT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  849.     GETKEY RET$
  850.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  851.         SETVIEW 0, 0, GETMAXX, GETMAXY
  852.         EXIT SUB
  853.     END IF
  854.     FOR A = 0 TO Num
  855.         SCROLLUP X1, Y1, X2, Y2, SKIP, 0   '* HERE IT IS!
  856.     NEXT A
  857.  
  858.     '*************************************************************************
  859.     '* SHOW SCROLLLT
  860.     '*************************************************************************
  861.     SETVIEW 0, 0, GETMAXX, GETMAXY
  862.     A$ = "SCROLLLT (X1,Y1,X2,Y2,NumLines,FillColr)"
  863.     DRWSTRING 1, 7, 0, A$, 10, 16
  864.     SETVIEW X1, Y1, X2, Y2
  865.     FILLVIEW 0
  866.     NUMOF = GETMAXX \ 10
  867.     FOR A = 0 TO NUMOF
  868.         X = RND * GETMAXX
  869.         Y = RND * GETMAXY
  870.         I = RND * GETMAXX
  871.         J = RND * GETMAXY
  872.         DRWLINE 1, Colr, X, Y, I, J
  873.         Colr = Colr + 3
  874.         IF Colr > 255 THEN
  875.             Colr = 16
  876.         END IF
  877.     NEXT A
  878.     DRWSTRING 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  879.     DRWSTRINGLT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  880.     DRWSTRINGDN 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  881.     DRWSTRINGRT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  882.     GETKEY RET$
  883.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  884.         SETVIEW 0, 0, GETMAXX, GETMAXY
  885.         EXIT SUB
  886.     END IF
  887.     FOR A = 0 TO Num
  888.         SCROLLLT X1, Y1, X2, Y2, SKIP, 0   '* HERE IT IS!
  889.     NEXT A
  890.  
  891.     '*************************************************************************
  892.     '* SHOW SCROLLDN
  893.     '*************************************************************************
  894.     SETVIEW 0, 0, GETMAXX, GETMAXY
  895.     A$ = "SCROLLDN (X1,Y1,X2,Y2,NumLines,FillColr)"
  896.     DRWSTRING 1, 7, 0, A$, 10, 16
  897.     SETVIEW X1, Y1, X2, Y2
  898.     FILLVIEW 0
  899.     NUMOF = GETMAXX \ 10
  900.     FOR A = 0 TO NUMOF
  901.         X = RND * GETMAXX
  902.         Y = RND * GETMAXY
  903.         I = RND * GETMAXX
  904.         J = RND * GETMAXY
  905.         DRWLINE 1, Colr, X, Y, I, J
  906.         Colr = Colr + 3
  907.         IF Colr > 255 THEN
  908.             Colr = 16
  909.         END IF
  910.     NEXT A
  911.     DRWSTRING 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  912.     DRWSTRINGLT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  913.     DRWSTRINGDN 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  914.     DRWSTRINGRT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  915.     GETKEY RET$
  916.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  917.         SETVIEW 0, 0, GETMAXX, GETMAXY
  918.         EXIT SUB
  919.     END IF
  920.     TIM! = TIMER
  921.     FOR A = 0 TO Num
  922.         SCROLLDN X1, Y1, X2, Y2, SKIP, 0   '* HERE IT IS!
  923.     NEXT A
  924.     TIM3! = TIMER - TIM!
  925.  
  926.     '*************************************************************************
  927.     '* SHOW SCROLLRT
  928.     '*************************************************************************
  929.     SETVIEW 0, 0, GETMAXX, GETMAXY
  930.     A$ = "SCROLLRT (X1,Y1,X2,Y2,NumLines,FillColr)"
  931.     DRWSTRING 1, 7, 0, A$, 10, 16
  932.     SETVIEW X1, Y1, X2, Y2
  933.     FILLVIEW 0
  934.     NUMOF = GETMAXX \ 10
  935.     FOR A = 0 TO NUMOF
  936.         X = RND * GETMAXX
  937.         Y = RND * GETMAXY
  938.         I = RND * GETMAXX
  939.         J = RND * GETMAXY
  940.         DRWLINE 1, Colr, X, Y, I, J
  941.         Colr = Colr + 3
  942.         IF Colr > 255 THEN
  943.             Colr = 16
  944.         END IF
  945.     NEXT A
  946.     DRWSTRING 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  947.     DRWSTRINGLT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  948.     DRWSTRINGDN 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  949.     DRWSTRINGRT 1, 7, 0, TEXT$, X1 + SPCNG, Y1 + SPCNG
  950.     GETKEY RET$
  951.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  952.         SETVIEW 0, 0, GETMAXX, GETMAXY
  953.         EXIT SUB
  954.     END IF
  955.     FOR A = 0 TO Num
  956.         SCROLLRT X1, Y1, X2, Y2, SKIP, 0   '* HERE IT IS!
  957.     NEXT A
  958.  
  959.     GETKEY RET$
  960.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  961.         SETVIEW 0, 0, GETMAXX, GETMAXY
  962.         EXIT SUB
  963.     END IF
  964.     END SUB
  965.  
  966.  
  967.     SUB DOTEXT (RET$)
  968.  
  969.     '*************************************************************************
  970.     '* SET UP THE TITLE
  971.     '*************************************************************************
  972.     TITLE$ = "DEMO 6: Text functions"
  973.     PALSET PAL(0), 0, 255
  974.  
  975.     '*************************************************************************
  976.     '* SHOW ALTERNATE PRINT DIRECTIONS
  977.     '*************************************************************************
  978.  
  979.     FILLSCREEN 0
  980.     SETVIEW 0, 0, GETMAXX, GETMAXY
  981.     DRWSTRING 1, 7, 0, TITLE$, 10, 0
  982.     A$ = "DRWSTRING(Mode,ForeGndColr,BackGndColr,Text$,X,Y)"
  983.     DRWSTRING 1, 7, 0, A$, 10, 16
  984.     SETVIEW 0, 32, GETMAXX, GETMAXY
  985.     A$ = "The Quick Brown Fox Jumped Over The Lazy Dog's Back! 0123456789"
  986.     Colr = 16
  987.     FOR Y = 32 TO GETMAXY STEP 20
  988.         DRWSTRING 1, Colr, 0, A$, 0, Y
  989.         Colr = Colr + 5
  990.         IF Colr > 255 THEN
  991.             Colr = 16
  992.         END IF
  993.     NEXT Y
  994.     GETKEY RET$
  995.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  996.         SETVIEW 0, 0, GETMAXX, GETMAXY
  997.         FILLSCREEN 0
  998.         EXIT SUB
  999.     END IF
  1000.  
  1001.     FILLVIEW 0
  1002.     SETVIEW 0, 0, GETMAXX, GETMAXY
  1003.     A$ = "DRWSTRINGLT(Mode,ForeGndColr,BackGndColr,Text$,X,Y)"
  1004.     DRWSTRING 1, 7, 0, A$, 10, 16
  1005.     SETVIEW 0, 32, GETMAXX, GETMAXY
  1006.     A$ = "The Quick Brown Fox Jumped Over The Lazy Dog's Back! 0123456789"
  1007.     FOR X = 0 TO GETMAXX STEP 20
  1008.         DRWSTRINGLT 1, Colr, 0, A$, X, GETMAXY
  1009.         Colr = Colr + 5
  1010.         IF Colr > 255 THEN
  1011.             Colr = 16
  1012.         END IF
  1013.     NEXT X
  1014.     GETKEY RET$
  1015.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  1016.         SETVIEW 0, 0, GETMAXX, GETMAXY
  1017.         FILLSCREEN 0
  1018.         EXIT SUB
  1019.     END IF
  1020.  
  1021.     FILLVIEW 0
  1022.     SETVIEW 0, 0, GETMAXX, GETMAXY
  1023.     A$ = "DRWSTRINGDN(Mode,ForeGndColr,BackGndColr,Text$,X,Y)"
  1024.     DRWSTRING 1, 7, 0, A$, 10, 16
  1025.     SETVIEW 0, 32, GETMAXX, GETMAXY
  1026.     A$ = "The Quick Brown Fox Jumped Over The Lazy Dog's Back! 0123456789"
  1027.     Colr = 16
  1028.     FOR Y = GETMAXY TO 32 STEP -20
  1029.         DRWSTRINGDN 1, Colr, 0, A$, GETMAXX, Y
  1030.         Colr = Colr + 5
  1031.         IF Colr > 255 THEN
  1032.             Colr = 16
  1033.         END IF
  1034.     NEXT Y
  1035.     GETKEY RET$
  1036.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  1037.         SETVIEW 0, 0, GETMAXX, GETMAXY
  1038.         FILLSCREEN 0
  1039.         EXIT SUB
  1040.     END IF
  1041.     FILLVIEW 0
  1042.     SETVIEW 0, 0, GETMAXX, GETMAXY
  1043.     A$ = "DRWSTRINGRT(Mode,ForeGndColr,BackGndColr,Text$,X,Y)"
  1044.     DRWSTRING 1, 7, 0, A$, 10, 16
  1045.     SETVIEW 0, 32, GETMAXX, GETMAXY
  1046.     A$ = "The Quick Brown Fox Jumped Over The Lazy Dog's Back! 0123456789"
  1047.     FOR X = GETMAXX TO 0 STEP -20
  1048.         DRWSTRINGRT 1, Colr, 0, A$, X, 32
  1049.         Colr = Colr + 5
  1050.         IF Colr > 255 THEN
  1051.             Colr = 16
  1052.         END IF
  1053.     NEXT X
  1054.     GETKEY RET$
  1055.     IF (RET$ = "S") OR (RET$ = "Q") THEN
  1056.         SETVIEW 0, 0, GETMAXX, GETMAXY
  1057.         FILLSCREEN 0
  1058.         EXIT SUB
  1059.     END IF
  1060.     END SUB
  1061.  
  1062.