home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 14 / CD_ASCQ_14_0694.iso / maj / 436 / svgamod1.bas < prev    next >
BASIC Source File  |  1994-05-09  |  31KB  |  1,102 lines

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