home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / basic / svgaqb21 / svgademo.bas < prev    next >
Encoding:
BASIC Source File  |  1994-05-09  |  23.9 KB  |  714 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.     CLEAR
  46.  
  47.     REDIM POINTARRY3D(0 TO 13) AS P3Dtype
  48.     REDIM PLAYARRY(0 TO 13) AS P3Dtype
  49.     REDIM PLOTARRY(0 TO 13) AS P2DType
  50.     REDIM OPLOTARRY(0 TO 13) AS P2DType
  51.     REDIM GFXBLK1(0 TO 100) AS INTEGER
  52.     REDIM GFXBLK2(0 TO 100) AS INTEGER
  53.     REDIM GFXBLK3(0 TO 100) AS INTEGER
  54.                                     
  55.     '*************************************************************************
  56.     '* SAVE THE STARTING VIDEOMODE AND SET IT TO MODE 3.
  57.     '*************************************************************************
  58.     STARTVIDEOMODE = VIDEOMODEGET
  59.     DUMMY = RESTEXT
  60.     CLS
  61.     FOR A = 0 TO 33
  62.         DUMMY$ = INKEY$  '* CLEAR THE KEYBOARD BUFFER
  63.     NEXT A
  64.     '*************************************************************************
  65.     '* MOVE THE DOS CURSOR TO THE TOP LEFT TO START THE PROGRAM AND SAY HELLO
  66.     '*************************************************************************
  67.     LOCATE 1, 4
  68.     PRINT "'SVGAQB.LIB' A SuperVGA Graphics Library For Use With MS QuickBasic 4.5"
  69.     LOCATE 2, 4
  70.     PRINT "'SVGAPV.LIB' A SuperVGA Graphics Library For Use With MS PDS and VBDOS"
  71.  
  72.     LOCATE 4, 10
  73.     PRINT "Copyright 1993-1994 by Stephen L. Balkum and Daniel A. Sill"
  74.     LOCATE 12, 25
  75.     PRINT "Demonstration/Example Program"
  76.     LOCATE 23, 1
  77.     PRINT "Press a key to begin the demo..."
  78.     GETKEY (RET$)
  79.     CLS
  80.  
  81.     '*************************************************************************
  82.     '* LET'S ID THE PROCESSOR FIRST AS THE LIBRARY REQUIRES A 386 OR BETTER.
  83.     '*************************************************************************
  84.     'LOCATE 1, 1
  85.     CPU = WHICHCPU
  86.     CPU$ = STR$(CPU)
  87.     L = LEN(CPU$)
  88.     CPU$ = RIGHT$(CPU$, L - 1)
  89.     IF CPU < 386 THEN
  90.         PRINT "Sorry, this library requires a 80386 or better processor."
  91.         PRINT "Processor is identified as a 80"; CPU$; "."
  92.         PRINT "Demo program will be terminated."
  93.         PRINT
  94.         PRINT "Press a key..."
  95.         SOUND 100, 5
  96.         WHILE INKEY$ = ""
  97.         WEND
  98.         VIDEOMODESET (STARTVIDEOMODE)
  99.         CLEAR
  100.         END
  101.     END IF
  102.  
  103.     '*************************************************************************
  104.     '* LET'S ID THE VIDEO CARD/CHIP AS THE LIBRARY REQUIRES A SUPERVGA ADAPTER.
  105.     '*************************************************************************
  106.     VGA = WHICHVGA
  107.     PRINT "Microprocessor is identified as a 80"; CPU$; "."
  108.     PRINT
  109.     SELECT CASE VGA
  110.         CASE IS = 1
  111.             VGA$ = "Acumos AVGA2/3 SuperVGA"
  112.         CASE IS = 2
  113.             VGA$ = "ATI Technologies 18/28/38/68800 SuperVGA"
  114.         CASE IS = 3
  115.             VGA$ = "Ahead V5000 ver A SuperVGA"
  116.         CASE IS = 4
  117.             VGA$ = "Ahead V5000 ver B SuperVGA"
  118.         CASE IS = 5
  119.             VGA$ = "Chips and Technologies 82C450/1/2/3/5/6/7 SuperVGA"
  120.         CASE IS = 6
  121.             VGA$ = "Cirrus Logic CL-GD 5xx,6xx,28xx,54xx,62xx SuperVGA"
  122.         CASE IS = 7
  123.             VGA$ = "Everex Ev236/6xx Micro Enhancer SuperVGA"
  124.         CASE IS = 8
  125.             VGA$ = "Genoa 61/62/63/64/6600 SuperVGA"
  126.         CASE IS = 9
  127.             VGA$ = "NCR 77C21/22/22E/22E+ SuperVGA"
  128.         CASE IS = 10
  129.             VGA$ = "Oak Technologies OTI-037C/067/077/087 SuperVGA"
  130.         CASE IS = 11
  131.             VGA$ = "Paradise/Western Digital PVGA1A,WD90C00/1x/2x/3x SuperVGA"
  132.         CASE IS = 12
  133.             VGA$ = "Realtek RT3106 SuperVGA"
  134.         CASE IS = 13
  135.             VGA$ = "Trident 8800CS,8900B/C/CL/CX,90x0 SuperVGA"
  136.         CASE IS = 14
  137.             VGA$ = "Tseng Labs ET3000-AX/BX/BP SuperVGA"
  138.         CASE IS = 15
  139.             VGA$ = "Tseng Labs ET4000/W32/W32I SuperVGA"
  140.         CASE IS = 16
  141.             VGA$ = "VESA compatible SuperVGA"
  142.         CASE IS = 17
  143.             VGA$ = "Video 7 HT-208/16 SuperVGA"
  144.         CASE IS = 18
  145.             VGA$ = "Avance Logic AL2101 SuperVGA"
  146.         CASE IS = 19
  147.             VGA$ = "MXIC MX68000/10 SuperVGA"
  148.         CASE IS = 20
  149.             VGA$ = "Primus P2000 SuperVGA"
  150.         CASE ELSE
  151.             VGA$ = "Unknown"
  152.             VGA = 0
  153.     END SELECT
  154.     IF VGA < 1 THEN
  155.         PRINT "Sorry, unable to identify video card or it is not a SuperVGA video adapter."
  156.         PRINT "Demo program will be terminated."
  157.         PRINT
  158.         PRINT "Press a key..."
  159.         SOUND 100, 5
  160.         WHILE INKEY$ = ""
  161.         WEND
  162.         VIDEOMODESET (STARTVIDEOMODE)
  163.         CLEAR
  164.         END
  165.     ELSE
  166.         PRINT "Video card/chip is identified as a "; VGA$; "."
  167.     END IF
  168.  
  169.     '*************************************************************************
  170.     '* LET'S SEE THE HOW MUCH MEMORY IS INSTALLED ON THE SUPER VGA ADAPTER.
  171.     '*************************************************************************
  172.     VIDEOMEMORY = WHICHMEM
  173.     MEM$ = STR$(VIDEOMEMORY)
  174.     MEM$ = RIGHT$(MEM$, LEN(MEM$) - 1) + " kB"
  175.     IF VIDEOMEMORY < 1 THEN
  176.         PRINT "Sorry, unable to identify the amount of installed video memory."
  177.         PRINT "Demo program will be terminated."
  178.         PRINT
  179.         PRINT "Press a key..."
  180.         SOUND 100, 5
  181.         WHILE INKEY$ = ""
  182.         WEND
  183.         VIDEOMODESET (STARTVIDEOMODE)
  184.         CLEAR
  185.         END
  186.     ELSE
  187.         PRINT "Installed video memory identified as "; MEM$; "."
  188.     END IF
  189.  
  190.     '*************************************************************************
  191.     '* LET'S TELL THE USER WHAT THE HIGHEST RESOLUTION THAT THE VIDEO CARD
  192.     '* AND ITS INSTALLED MEMORY CARD IS CAPABLE OF. THE MONITOR MUST BE ABLE
  193.     '* TO SUPPORT THOSE MODES TOO !
  194.     '*************************************************************************
  195.     PRINT "Video card and installed memory is capable of the following resolutions:"
  196.     SELECT CASE VIDEOMEMORY
  197.         CASE IS > 2047
  198.             PRINT TAB(4); "320x200 in 256 colors"
  199.             PRINT TAB(4); "640x400 in 256 colors"
  200.             PRINT TAB(4); "640x480 in 256 colors"
  201.             PRINT TAB(4); "800x600 in 256 colors"
  202.             PRINT TAB(4); "1024x768 in 256 colors"
  203.             PRINT TAB(4); "1280x1024 in 256 colors"
  204.             MAX = 5
  205.         CASE IS > 1023
  206.             PRINT TAB(4); "320x200 in 256 colors"
  207.             PRINT TAB(4); "640x400 in 256 colors"
  208.             PRINT TAB(4); "640x480 in 256 colors"
  209.             PRINT TAB(4); "800x600 in 256 colors"
  210.             PRINT TAB(4); "1024x768 in 256 colors"
  211.             MAX = 4
  212.         CASE IS > 511
  213.             PRINT TAB(4); "320x200 in 256 colors"
  214.             PRINT TAB(4); "640x400 in 256 colors"
  215.             PRINT TAB(4); "640x480 in 256 colors"
  216.             PRINT TAB(4); "800x600 in 256 colors"
  217.             MAX = 3
  218.         CASE ELSE
  219.             PRINT TAB(4); "320x200 in 256 colors"
  220.             PRINT TAB(4); "640x400 in 256 colors"
  221.             MAX = 1
  222.     END SELECT
  223.     PRINT
  224.     PRINT "PLEASE keep in mind that not all monitors support all resolutions."
  225.     PRINT "If you know your monitor will not work properly in certain resolutions"
  226.     PRINT "(such as 1024x768 or 1280x1024), do NOT run the demo in that resolution."
  227.     PRINT
  228.  
  229.     '*************************************************************************
  230.     '* LET'S LOOK FOR A MOUSE. IF WE FIND ONE, TELL ALL ABOUT IT
  231.     '*************************************************************************
  232.     MOUSE = WHICHMOUSE
  233.     IF MOUSE > 0 THEN
  234.         MOUSEINFO MJV, MNV, TP, I
  235.         VER$ = STR$(MNV)
  236.         L = LEN(VER$)
  237.         VER$ = STR$(MJV) + "." + RIGHT$(VER$, L - 1)
  238.         VER$ = "Software driver version is" + VER$ + " (Microsoft equivalent version)."
  239.         SELECT CASE TP
  240.             CASE IS = 1
  241.                 TYPE$ = "bus mouse"
  242.             CASE IS = 2
  243.                 TYPE$ = "serial mouse"
  244.             CASE IS = 3
  245.                 TYPE$ = "Inport mouse"
  246.             CASE IS = 4
  247.                 TYPE$ = "PS/2 mouse"
  248.             CASE IS = 5
  249.                 TYPE$ = "HP mouse"
  250.             CASE ELSE
  251.                 TYPE$ = "unknown type"
  252.         END SELECT
  253.         PRINT "Microsoft compatible " + TYPE$ + " detected with" + STR$(MOUSE) + " buttons on IRQ" + STR$(I) + "."
  254.         PRINT VER$
  255.     ELSE
  256.         PRINT "No Microsoft compatible mouse detected."
  257.     END IF
  258.     PRINT
  259.  
  260.     '*************************************************************************
  261.     '* LET'S LOOK FOR JOYSTICKS
  262.     '*************************************************************************
  263.     JOYSTICK = WHICHJOYSTICK
  264.     SELECT CASE JOYSTICK
  265.         CASE IS = -1
  266.             A$ = "No joystick port detected or no joystick BIOS support present."
  267.         CASE IS = 0
  268.             A$ = "No joystick detected."
  269.         CASE IS = 1
  270.             A$ = "Joystick A is present and available."
  271.         CASE IS = 2
  272.             A$ = "Joystick B is present and available."
  273.         CASE IS = 3
  274.             A$ = "Both Joystick A and Joystick B are present and available."
  275.     END SELECT
  276.     PRINT A$
  277.     PRINT
  278.     PRINT "Press a key..."
  279.     GETKEY RET$
  280.  
  281.     '*************************************************************************
  282.     '* LET'S GET DOWN TO BUSINESS!
  283.     '*************************************************************************
  284.     RES = 1
  285.     ENDIT = 0
  286.  
  287.     '*************************************************************************
  288.     '* INIT ALTERNATE MOUSE CURSORS
  289.     '*************************************************************************
  290.     FOR I = 1 TO 386
  291.         READ A
  292.         MID$(MAGMOUSECURSOR, I, 1) = CHR$(A)
  293.     NEXT I
  294.     FOR I = 1 TO 386
  295.         READ A
  296.         MID$(BIGMOUSECURSOR, I, 1) = CHR$(A)
  297.     NEXT I
  298.     FOR I = 1 TO 386
  299.         READ A
  300.         MID$(STWMOUSECURSOR, I, 1) = CHR$(A)
  301.     NEXT I
  302.  
  303.     '*************************************************************************
  304.     '* INIT ALTERNATE COLOR PALETTES
  305.     '*************************************************************************
  306.     DUMMY = RES320
  307.     PALGET ORGPAL, 0, 255
  308.     PALCOPY ORGPAL, Pal, 0, 255
  309.     PALCOPY ORGPAL, PAL2, 0, 255
  310.     MYPI! = 8 * ATN(1) / 240
  311.     FOR Colr = 0 TO 239
  312.         R1 = 32 + SIN((Colr + 0) * MYPI!) * 31
  313.         G1 = 32 + SIN((Colr + 80) * MYPI!) * 31
  314.         B1 = 32 + SIN((Colr + 160) * MYPI!) * 31
  315.         R2 = 32 + SIN((Colr + 10) * MYPI!) * 31
  316.         G2 = 32 + SIN((Colr + 30) * MYPI!) * 31
  317.         B2 = 32 + SIN((Colr + 50) * MYPI!) * 31
  318.         OFFSET = ((Colr + 16) * 3)
  319.         MID$(Pal, OFFSET + 1, 1) = CHR$(R1)  '* RED
  320.         MID$(Pal, OFFSET + 2, 1) = CHR$(G1)  '* GREEN
  321.         MID$(Pal, OFFSET + 3, 1) = CHR$(B1)  '* BLUE
  322.         MID$(PAL2, OFFSET + 1, 1) = CHR$(R2)  '* RED
  323.         MID$(PAL2, OFFSET + 2, 1) = CHR$(G2)  '* GREEN
  324.         MID$(PAL2, OFFSET + 3, 1) = CHR$(B2)  '* BLUE
  325.     NEXT Colr
  326.     DUMMY = RESTEXT
  327.  
  328.     '*************************************************************************
  329.     '* HERE IS THE MAIN SELECTOR LOOP
  330.     '*************************************************************************
  331.     WHILE ENDIT = 0
  332.         RetVal$ = ""
  333.         CLS
  334.         SOUND 700, .75
  335.         SELECT CASE RES
  336.             CASE IS = 1
  337.                 RES$ = "320x200x256"
  338.             CASE IS = 2
  339.                 RES$ = "640x400x256"
  340.             CASE IS = 3
  341.                 RES$ = "640x480x256"
  342.             CASE IS = 4
  343.                 RES$ = "800x600x256"
  344.             CASE IS = 5
  345.                 RES$ = "1024x768x256"
  346.             CASE IS = 6
  347.                 RES$ = "1280x1024x256"
  348.         END SELECT
  349.         PRINT "Please select the demo you would like to see in the " + RES$ + " resolution:"
  350.         PRINT
  351.         PRINT "(0)  Exit This Program"
  352.         PRINT
  353.         PRINT "(1)  Demo #1  The Primitive Drawing Routines"
  354.         PRINT "(2)  Demo #2  The Clipping Capabilities"
  355.         PRINT "(3)  Demo #3  The Fill Routines"
  356.         PRINT "(4)  Demo #4  The Palette Routines"
  357.         PRINT "(5)  Demo #5  The Block Routines"
  358.         PRINT "(6)  Demo #6  The Text Routines"
  359.         PRINT "(7)  Demo #7  The Scrolling Routines"
  360.         PRINT "(8)  Demo #8  The GIF (TM) Routines"
  361.         PRINT "(9)  Demo #9  The Mouse Routines"
  362.         PRINT "(10) Demo #10 The Joystick Routines"
  363.         PRINT "(11) Demo #11 The Two Dimensional Routines"
  364.         PRINT "(12) Demo #12 The Three Dimensional Routines"
  365.         PRINT "(13) The Grand Tour Of All Demos"
  366.         SELECT CASE VIDEOMEMORY
  367.             CASE IS > 2047
  368.                 PRINT "(14) Use 320x200x256  Resolution"
  369.                 PRINT "(15) Use 640x400x256  Resolution"
  370.                 PRINT "(16) Use 640x480x256  Resolution"
  371.                 PRINT "(17) Use 800x600x256  Resolution"
  372.                 PRINT "(18) Use 1024x768x256 Resolution"
  373.                 PRINT "(19) Use 1280x1024x256 Resolution"
  374.                 MAX = 19
  375.             CASE IS > 1023
  376.                 PRINT "(14) Use 320x200x256  Resolution"
  377.                 PRINT "(15) Use 640x400x256  Resolution"
  378.                 PRINT "(16) Use 640x480x256  Resolution"
  379.                 PRINT "(17) Use 800x600x256  Resolution"
  380.                 PRINT "(18) Use 1024x768x256 Resolution"
  381.                 MAX = 18
  382.             CASE IS > 511
  383.                 PRINT "(14) Use 320x200x256  Resolution"
  384.                 PRINT "(15) Use 640x400x256  Resolution"
  385.                 PRINT "(16) Use 640x480x256  Resolution"
  386.                 PRINT "(17) Use 800x600x256  Resolution"
  387.                 MAX = 17
  388.             CASE ELSE
  389.                 PRINT "(14) Use 320x200x256  Resolution"
  390.                 PRINT "(15) Use 640x400x256  Resolution"
  391.                 MAX = 15
  392.         END SELECT
  393.         A$ = ""
  394.         INPUT "Your Choice"; A$
  395.         KY = VAL(A$)
  396.         IF (A$ > "9") OR (A$ < "0") THEN
  397.             KY = -1
  398.         END IF
  399.         IF KY > MAX THEN
  400.             KY = -1
  401.         END IF
  402.         IF KY > 0 AND KY < 13 THEN
  403.             SELECT CASE RES
  404.                 CASE IS = 1
  405.                     OK = RES320
  406.                 CASE IS = 2
  407.                     OK = RES640L
  408.                 CASE IS = 3
  409.                     OK = RES640
  410.                 CASE IS = 4
  411.                     OK = RES800
  412.                 CASE IS = 5
  413.                     OK = RES1024
  414.                 CASE IS = 6
  415.                     OK = RES1280
  416.             END SELECT
  417.             IF OK <> 1 THEN
  418.                 DUMMY = RESTEXT
  419.                 CLS
  420.                 SOUND 100, 5
  421.                 PRINT "Sorry, although your video card has enough memeory, it does"
  422.                 PRINT "not support this video mode. PRESS A KEY."
  423.                 GETKEY RET$
  424.                 KY = -1
  425.             END IF
  426.         END IF
  427.         SELECT CASE KY
  428.             CASE IS = 0
  429.                 ENDIT = 1
  430.             CASE IS = 1
  431.                 'DEMO #1
  432.                 DOPRIMS RetVal$
  433.                 DUMMY = RESTEXT
  434.             CASE IS = 2
  435.                 'DEMO #2
  436.                 DOCLIP RetVal$
  437.                 DUMMY = RESTEXT
  438.             CASE IS = 3
  439.                 'DEMO #3
  440.                 DOFILL RetVal$
  441.                 DUMMY = RESTEXT
  442.             CASE IS = 4
  443.                 'DEMO #4
  444.                 DOPAL RetVal$
  445.                 DUMMY = RESTEXT
  446.             CASE IS = 5
  447.                 'DEMO #5
  448.                 DOBLOCK RetVal$
  449.                 DUMMY = RESTEXT
  450.             CASE IS = 6
  451.                 'DEMO #6
  452.                 DOTEXT RetVal$
  453.                 DUMMY = RESTEXT
  454.             CASE IS = 7
  455.                 'DEMO #7
  456.                 DOSCROLL RetVal$
  457.                 DUMMY = RESTEXT
  458.             CASE IS = 8
  459.                 'DEMO #8
  460.                 DOGIF RetVal$
  461.                 DUMMY = RESTEXT
  462.             CASE IS = 9
  463.                 'DEMO #9
  464.                 DOMOUSE RetVal$
  465.                 DUMMY = RESTEXT
  466.             CASE IS = 10
  467.                 'DEMO #10
  468.                 DOJOYSTICK RetVal$
  469.                 DUMMY = RESTEXT
  470.             CASE IS = 11
  471.                 'DEMO #11
  472.                 DO2D RetVal$
  473.                 DUMMY = RESTEXT
  474.             CASE IS = 12
  475.                 'DEMO #12
  476.                 DO3D RetVal$
  477.                 DUMMY = RESTEXT
  478.             CASE IS = 13
  479.                 'DO THE GRAND TOUR OF ALL DEMOS!
  480.                 CLS
  481.                 PRINT "Press 'Q' To End Grand Tour At Any Time. Press 'S' To Skip To The Next"
  482.                 PRINT "Demo At Any Time. Press Any Other Key to Begin The Grand Tour..."
  483.                 GETKEY RET$
  484.                 IF RET$ = "Q" THEN
  485.                     GOTO EXITGRANDTOUR
  486.                 END IF
  487.                 SELECT CASE RES
  488.                     CASE IS = 1
  489.                         OK = RES320
  490.                     CASE IS = 2
  491.                         OK = RES640L
  492.                     CASE IS = 3
  493.                         OK = RES640
  494.                     CASE IS = 4
  495.                         OK = RES800
  496.                     CASE IS = 5
  497.                         OK = RES1024
  498.                     CASE IS = 6
  499.                         OK = RES1280
  500.                 END SELECT
  501.                 IF OK <> 1 THEN
  502.                     DUMMY = RESTEXT
  503.                     CLS
  504.                     SOUND 100, 5
  505.                     PRINT "Sorry, although your video card has enough memeory, it does"
  506.                     PRINT "not support this video mode. PRESS A KEY."
  507.                     GETKEY RET$
  508.                     GOTO EXITGRANDTOUR
  509.                 END IF
  510.                 'DEMO #1
  511.                 DOPRIMS RetVal$
  512.                 IF RetVal$ = "Q" THEN
  513.                     GOTO EXITGRANDTOUR
  514.                 END IF
  515.                 'DEMO #2
  516.                 DOCLIP RetVal$
  517.                 IF RetVal$ = "Q" THEN
  518.                     GOTO EXITGRANDTOUR
  519.                 END IF
  520.                 'DEMO #3
  521.                 DOFILL RetVal$
  522.                 IF RetVal$ = "Q" THEN
  523.                     GOTO EXITGRANDTOUR
  524.                 END IF
  525.                 'DEMO #4
  526.                 DOPAL RetVal$
  527.                 IF RetVal$ = "Q" THEN
  528.                     GOTO EXITGRANDTOUR
  529.                 END IF
  530.                 'DEMO #5
  531.                 DOBLOCK RetVal$
  532.                 IF RetVal$ = "Q" THEN
  533.                     GOTO EXITGRANDTOUR
  534.                 END IF
  535.                 'DEMO #6
  536.                 DOTEXT RetVal$
  537.                 IF RetVal$ = "Q" THEN
  538.                     GOTO EXITGRANDTOUR
  539.                 END IF
  540.                 'DEMO #7
  541.                 DOSCROLL RetVal$
  542.                 IF RetVal$ = "Q" THEN
  543.                     GOTO EXITGRANDTOUR
  544.                 END IF
  545.                 'DEMO #8
  546.                 DOGIF RetVal$
  547.                 IF RetVal$ = "Q" THEN
  548.                     GOTO EXITGRANDTOUR
  549.                 END IF
  550.                 'DEMO #9
  551.                 DOMOUSE RetVal$
  552.                 IF RetVal$ = "Q" THEN
  553.                     GOTO EXITGRANDTOUR
  554.                 END IF
  555.                 IF RetVal$ = "Q" THEN
  556.                     GOTO EXITGRANDTOUR
  557.                 END IF
  558.                 'DEMO #10
  559.                 DOJOYSTICK RetVal$
  560.                 IF RetVal$ = "Q" THEN
  561.                     GOTO EXITGRANDTOUR
  562.                 END IF
  563.                 'DEMO #11
  564.                 DO2D RetVal$
  565.                 IF RetVal$ = "Q" THEN
  566.                     GOTO EXITGRANDTOUR
  567.                 END IF
  568.                 'DEMO #12
  569.                 DO3D RetVal$
  570. EXITGRANDTOUR:
  571.                 RetVal$ = ""
  572.                 DUMMY = RESTEXT
  573.             CASE IS = 14
  574.                 RES = 1
  575.             CASE IS = 15
  576.                 RES = 2
  577.             CASE IS = 16
  578.                 RES = 3
  579.             CASE IS = 17
  580.                 RES = 4
  581.             CASE IS = 18
  582.                 RES = 5
  583.             CASE IS = 19
  584.                 RES = 6
  585.             CASE ELSE
  586.                 SOUND 100, 5
  587.         END SELECT
  588.         IF RetVal$ = "Q" THEN
  589.             ENDIT = 1
  590.         END IF
  591.     WEND
  592.  
  593.     '*************************************************************************
  594.     '* THAT'S ALL FOLKS! END THE PROGRAM
  595.     '*************************************************************************
  596.     DUMMY = RESTEXT '* FORCE THE VGA PALETTE TO RESET
  597.     VIDEOMODESET STARTVIDEOMODE '*RESTORE THE VIDEOMODE WE STARTED IN
  598.     DUMMY = RESTEXT '* FORCE THE VGA PALETTE TO RESET
  599.     CLEAR
  600.     END
  601.  
  602.  
  603.     '*************************************************************************
  604.     '* DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA
  605.     '*************************************************************************
  606.  
  607.     REM *MAGNIFIER MOUSE CURSOR DATA
  608.     DATA 7,6
  609.     DATA 255,255,255,255,255,7  ,7  ,7  ,7  ,255,255,255,255,255,255,255
  610.     DATA 255,255,255,  7,  7,255,255,255,255,7  ,7,  255,255,255,255,255
  611.     DATA 255,255,7  ,255,255,255,255,255,255,255,255,7  ,255,255,255,255
  612.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  613.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  614.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  615.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  616.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  617.     DATA 7  ,255,255,255,255,255,255,255,255,255,255,255,255,7  ,255,255
  618.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  619.     DATA 255,7  ,255,255,255,255,255,255,255,255,255,255,7  ,255,255,255
  620.     DATA 255,7  ,7  ,255,255,255,255,255,255,255,255,7  ,7  ,255,255,255
  621.     DATA 255,255,7  ,7  ,7  ,255,255,255,255,7  ,7  ,7  ,255,255,255,255
  622.     DATA 255,255,255,7  ,7  ,7  ,7  ,7  ,7  ,8  ,8  ,255,255,255,255,255
  623.     DATA 255,255,255,255,255,7  ,7  ,7  ,7  ,7  ,8  ,8  ,255,255,255,255
  624.     DATA 255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255,255,255
  625.     DATA 255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255,255
  626.     DATA 255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255,255
  627.     DATA 255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255
  628.     DATA 255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255,255
  629.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255
  630.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8  ,255
  631.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,7  ,8  ,8
  632.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,7  ,7  ,7
  633.  
  634.     REM *BIG ARROW MOUSE CURSOR DATA
  635.     DATA 1,1
  636.     DATA 0  ,0  ,0  ,255,255,255,255,255,255,255,255,255,255,255,255,255
  637.     DATA 0  ,15 ,15 ,0  ,0  ,255,255,255,255,255,255,255,255,255,255,255
  638.     DATA 0  ,15 ,15 ,15 ,15 ,0  ,0  ,0  ,255,255,255,255,255,255,255,255
  639.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255,255,255,255,255,255
  640.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,0  ,255,255,255
  641.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255
  642.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,255
  643.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255,255
  644.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,255,255,255,255
  645.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,0  ,255,255,255,255,255
  646.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,15 ,0  ,255,255,255,255,255,255
  647.     DATA 0  ,15 ,15 ,15 ,15 ,15 ,0  ,15 ,15 ,15 ,0  ,255,255,255,255,255
  648.     DATA 0  ,15 ,15 ,15 ,15 ,0  ,0  ,15 ,15 ,15 ,0  ,255,255,255,255,255
  649.     DATA 0  ,15 ,15 ,0  ,0  ,255,255,0  ,15 ,15 ,15 ,0  ,255,255,255,255
  650.     DATA 0  ,15 ,0  ,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255,255,255
  651.     DATA 0  ,0  ,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255,255
  652.     DATA 255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255
  653.     DATA 255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255,255
  654.     DATA 255,255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0  ,255
  655.     DATA 255,255,255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,15 ,0
  656.     DATA 255,255,255,255,255,255,255,255,255,255,255,0, 15  ,15 ,15 ,0
  657.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,0  ,15 ,15 ,0
  658.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,0  ,0  ,0
  659.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  660.  
  661.     REM *STOPWATCH MOUSE CURSOR DATA
  662.     DATA 8,11
  663.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  664.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  665.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  666.     DATA 255,255,255,255,255,255,255,15 ,15 ,255,255,255,255,255,255,255
  667.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  668.     DATA 255,255,255,255,15 ,15 ,15 ,7  ,7  ,15 ,15 ,15 ,255,255,255,255
  669.     DATA 255,255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255,255
  670.     DATA 255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255
  671.     DATA 255,15 ,15 ,7  ,0  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255
  672.     DATA 255,15 ,7  ,7  ,7  ,0  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,255
  673.     DATA 15 ,15 ,7  ,7  ,7  ,7  ,0  ,7  ,7  ,7  ,0  ,0  ,7  ,7  ,15 ,15
  674.     DATA 15 ,7  ,7  ,7  ,7  ,7  ,7  ,0  ,0  ,0  ,7  ,7  ,7  ,7  ,7  ,15
  675.     DATA 15,7   ,7  ,7  ,7  ,7  ,7  ,0  ,0  ,7  ,7  ,7  ,7  ,7  ,7  ,15
  676.     DATA 15,15  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15
  677.     DATA 255,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,255
  678.     DATA 255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255
  679.     DATA 255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255
  680.     DATA 255,255,255,15 ,15 ,7  ,7  ,7  ,7  ,7  ,7  ,15 ,15 ,255,255,255
  681.     DATA 255,255,255,255,15 ,15 ,15 ,7  ,7  ,15 ,15 ,15 ,255,255,255,255
  682.     DATA 255,255,255,255,255,255,15 ,15 ,15 ,15 ,255,255,255,255,255,255
  683.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  684.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  685.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  686.     DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255
  687.  
  688. REM $DYNAMIC
  689.     SUB GETKEY (KEY$)
  690.  
  691.     '*************************************************************************
  692.     '* THIS ROUTINE WAITS FOR A KEY STROKE
  693.     '*************************************************************************
  694.  
  695.     FOR A = 0 TO 7 '* CLEAR THE KBD BUFFER
  696.         A$ = INKEY$
  697.     NEXT A
  698.  
  699.     SOUND 700, .75
  700.     A$ = ""
  701.     WHILE A$ = ""
  702.         A$ = INKEY$
  703.         IF A$ = "q" THEN
  704.             A$ = "Q"
  705.         END IF
  706.         IF A$ = "s" THEN
  707.             A$ = "S"
  708.         END IF
  709.     WEND
  710.     KEY$ = A$
  711.  
  712.     END SUB
  713.  
  714.