{"id":14,"date":"2026-08-09T16:01:29","date_gmt":"2026-08-09T20:01:29","guid":{"rendered":"https:\/\/www.techronology.com\/main\/blog\/?p=14"},"modified":"2026-09-12T01:42:31","modified_gmt":"2026-09-12T05:42:31","slug":"the-graphics-power-diskette-1996-demo","status":"publish","type":"post","link":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/","title":{"rendered":"The Graphics Power Diskette (1996 Demo)"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-2.png\" alt=\"The Graphics Power Diskette (1996 Demo) - Startup screen - Techronology\" class=\"wp-image-43\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Overview of The Graphics Power Diskette<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">So, The Graphics Power Diskette (or GPD) demonstrates of some creative elements that you can produce in the <a href=\"https:\/\/en.wikipedia.org\/wiki\/BASIC\" target=\"_blank\" rel=\"noreferrer noopener\">BASIC<\/a> language. All in all, it is a 1996 creation. GPD was developed in <a href=\"https:\/\/winworldpc.com\/product\/microsoft-visual-bas\/10-for-dos\" target=\"_blank\" rel=\"noreferrer noopener\">Microsoft Visual Basic for DOS<\/a> (or VB for DOS), with <a href=\"https:\/\/en.wikipedia.org\/wiki\/QuickBASIC\" target=\"_blank\" rel=\"noreferrer noopener\">QuickBASIC<\/a> code in the backend. Yes, I said DOS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most of the design in splash screen were done on graph paper first. Later, I transferred them to screen using the DRAW statement. For the most part, you could create sprites for games and custom backgrounds with DRAW.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this program, you will see things that you use today, such as <a href=\"#line-styles\">line styles<\/a> and <a href=\"#paint-tiles\">paint formats<\/a>. Moreover, these were done entirely through code in The Graphics Power Diskette. Overall, if you use <a href=\"https:\/\/www.microsoft.com\/en-us\/microsoft-365\/microsoft-office\" target=\"_blank\" rel=\"noreferrer noopener\">Office<\/a>, especially <a href=\"https:\/\/www.microsoft.com\/en-us\/microsoft-365\/excel\" target=\"_blank\" rel=\"noreferrer noopener\">Excel<\/a>, you see the influence of BASIC. <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">The video<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Before we even get started, why not view The Graphics Power Diskette in video first. Enjoy!<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"The Graphics Power Diskette - Techronology\" width=\"1170\" height=\"878\" src=\"https:\/\/www.youtube.com\/embed\/kYUMlS4x6ls?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\">Table of contents<\/h3>\n\n\n\n<ul class=\"list-group list-group-flush\">\n  <li class=\"list-group-item\"><a class=\"no-border\" href=\"#main-menu\">Main menu<\/a><\/li>\n  <li class=\"list-group-item\"><a class=\"no-border\" href=\"#introduction\">Introduction<\/a><\/li>\n  <li class=\"list-group-item\"><a class=\"no-border\" href=\"#graphics-demo\">Graphics demonstration<\/a><\/li>\n  <li class=\"list-group-item\"><a class=\"no-border\" href=\"#sample-programs\">Sample programs<\/a><\/li>\n  <li class=\"list-group-item\"><a class=\"no-border\" href=\"#code-listing\">Code listing<\/a><\/li>\n  <li class=\"list-group-item\"><a class=\"no-border\" href=\"#exit\">Exit program<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 id=\"main-menu\" class=\"wp-block-heading\">Main menu of The Graphics Power Diskette<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">After you press a key from the splash screen, the program takes you to the main menu.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-3-1.png\" alt=\"GPD Demo - Main menu - Techronology\" class=\"wp-image-52\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I did this screen in VB for DOS primarily due to its mouse support. So, you can use your mouse or the keyboard to make your selection. Also, the frame is all ASCII characters. If I recall, I have a text-centering subroutine in the <a href=\"#code-listing\" target=\"_blank\" rel=\"noreferrer noopener\">code listing<\/a>. Back then, I was creating a routine for many things.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Overall, The Graphics Power Diskette has two main sections: <a href=\"#graphics-demo\">Graphics demonstration<\/a> and <a href=\"#sample-programs\">Sample programs<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 id=\"introduction\" class=\"wp-block-heading\">Introduction<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The introduction has two screens, both accessed through data contained in BASIC.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-4-1.png\" alt=\"GPD Demo - Introduction - Part I - Techronology\" class=\"wp-image-54\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-5-1.png\" alt=\"The Graphics Power Diskette - Introduction - Part II - Techronology\" class=\"wp-image-55\"\/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 id=\"graphics-demo\" class=\"wp-block-heading\">Graphics demonstration<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-6.png\" alt=\"GPD Demo - High resolution graphics menu - Techronology\" class=\"wp-image-71\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Pixel demo<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-7.png\" alt=\"GPD Demo - Pixel demonstration - Techronology\" class=\"wp-image-72\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Line demo<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-8.png\" alt=\"The Graphics Power Diskette - Line Demonstration - Techronology\" class=\"wp-image-73\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Box demo<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-9.png\" alt=\"GPD Demo - Box demonstration - Techronology\" class=\"wp-image-74\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Box fill demo<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-10.png\" alt=\"GPD Demo - Box fill demonstration - Techronology\" class=\"wp-image-75\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Circle demo<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-11.png\" alt=\"The Graphics Power Diskette - Circle demonstration - Techronology\" class=\"wp-image-76\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Circle fill demo<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-12.png\" alt=\"GPD Demo - Circle fill demonstration - Techronology\" class=\"wp-image-77\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Arc demo<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-13.png\" alt=\"GPD Demo - Arc demonstration - Techronology\" class=\"wp-image-78\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Get-put demo<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">So, the GET and PUT statements are primarily for animation. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-14.png\" alt=\"The Graphics Power Diskette - Get\/Put demonstration - Techronology\" class=\"wp-image-79\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Draw demo<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-17.png\" alt=\"The Graphics Power Diskette - Draw demonstration - Techronology\" class=\"wp-image-82\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Line styles<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-15.png\" alt=\"GPD Demo - User-defined line tile patterns - Techronology\" class=\"wp-image-80\"\/><\/figure>\n\n\n\n<h4 id=\"paint-tiles\" class=\"wp-block-heading\">Paint tile patterns<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-16.png\" alt=\"GPD Demo - User-defined paint tile patterns - Techronology\" class=\"wp-image-81\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Color palette chart<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-18.png\" alt=\"GPD Demo - Palette chart - Techronology\" class=\"wp-image-83\"\/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 id=\"sample-programs\" class=\"wp-block-heading\">Sample programs in The Graphics Power Diskette<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-19.png\" alt=\"The Graphics Power Diskette - Graphics menu - Techronology\" class=\"wp-image-92\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Sunshine reflection program<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-20.png\" alt=\"GPD Demo - Sunshine reflection program - Techronology\" class=\"wp-image-93\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Color ellipsese program<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-21.png\" alt=\"GPD Demo - Color ellipses program - Techronology\" class=\"wp-image-94\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Color circles program<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-22.png\" alt=\"The Graphics Power Diskette - Color circles program - Techronology\" class=\"wp-image-95\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Orbit program<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-23.png\" alt=\"GPD Demo - Orbit program - Techronology\" class=\"wp-image-96\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Hat-man animation program<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-24.png\" alt=\"The Graphics Power Diskette - Hat-man animation program - Techronology\" class=\"wp-image-97\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Triangle lost in space<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-25.png\" alt=\"GPD Demo - Triangle lost in space program - Techronology\" class=\"wp-image-98\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Flying saucer program<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-26.png\" alt=\"GPD Demo - Flying saucer program - Techronology\" class=\"wp-image-99\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Clown face<\/h4>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-27.png\" alt=\"The Graphics Power Diskette - Clown face - Techronology\" class=\"wp-image-100\"\/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 id=\"exit\" class=\"wp-block-heading\">Exit The Graphics Power Diskette<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, it is time to go. Of course, we created a custom prompt to leave this program. After all, it is part of the user-friendly process.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-28.png\" alt=\"The Graphics Power Diskette - Exit prompt - Techronology\" class=\"wp-image-190\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"400\" src=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-29.png\" alt=\"GPD Demo - Exit message - Techronology\" class=\"wp-image-191\"\/><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 id=\"code-listing\" class=\"wp-block-heading\">Code listing for The Graphics Power Diskette<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Below is the code listing for The Graphics Power Diskette. Overall, this listing contains 1095 lines of code. So, take a look at the code. So, can you believe I had the sense to put the routines and functions in ascending order? I think that is great! Before  I put my foot in my mouth, I better confirm.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:calc(4 * 0.6 * .875rem);line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>'Filename:      DEMOBAS.BAS\n'Programmer:    Alex Shaw III\n'Purpose:       Graphics Demonstration Program\n'Date Created:  October 1, 1996\n'Last Modified: December 2, 1996\n\n'$FORM Demo\n\nDEFINT A-Z\n\n'Subroutines and Functions\nDECLARE SUB AllDemos ()\nDECLARE SUB ArcDemo ()\nDECLARE SUB BoxDemo ()\nDECLARE SUB BoxFillDemo ()\nDECLARE SUB Center (row, MaxCol, fgkol, bgkol, text$)\nDECLARE SUB CheckVGA ()\nDECLARE SUB CircleDemo ()\nDECLARE SUB CircleFillDemo ()\nDECLARE SUB Circles ()\nDECLARE SUB ClearLines (trow, lcol, brow, rcol, kolor)\nDECLARE SUB ClownFace ()\nDECLARE SUB DefaultPal ()\nDECLARE SUB delay (seconds!)\nDECLARE SUB DemoMenu ()\nDECLARE SUB DemoRoutine ()\nDECLARE SUB DrawDemo ()\nDECLARE SUB Ellipse ()\nDECLARE SUB ExitMessage ()\nDECLARE SUB ExitRoutine ()\nDECLARE SUB FadePal ()\nDECLARE SUB GCenter (row, MaxCol, fgkol, text$)\nDECLARE SUB GetPutDemo ()\nDECLARE SUB GPrtText (row, col, fgkol, text$)\nDECLARE SUB GraphCenter (row, MaxCol, fgkol, text$)\nDECLARE SUB GraphMode (mode, wide, rows)\nDECLARE SUB GraphWindow (title$)\nDECLARE SUB HatMan ()\nDECLARE SUB Intro ()\nDECLARE SUB KeyBuffer ()\nDECLARE SUB LineBox (trow, lcol, brow, rcol, fgkol, bgkol, mkol, skol, btype)\nDECLARE SUB LineDemo ()\nDECLARE SUB LineTiles ()\nDECLARE SUB Logo ()\nDECLARE SUB Orbit ()\nDECLARE SUB PaintTiles ()\nDECLARE SUB PaletteChart ()\nDECLARE SUB PalFadeOut ()\nDECLARE SUB PalRead ()\nDECLARE SUB PalStore ()\nDECLARE SUB PixelDemo ()\nDECLARE SUB PrtText (row, col, fgkol, bgkol, text$)\nDECLARE SUB PutImage (filename$, asize, mode, xc, yc)\nDECLARE SUB SampleProgRoutine ()\nDECLARE SUB ScreenErrorMessage ()\nDECLARE SUB SpaceShip ()\nDECLARE SUB SunShine ()\nDECLARE SUB TextMode (wide, rows, apage, vpage, fgkol, bgkol)\nDECLARE SUB TilePatterns ()\nDECLARE SUB Triangle ()\n\n'Type Definitions\nTYPE hues\n   red AS INTEGER\n   grn AS INTEGER\n   blu AS INTEGER\nEND TYPE\n\n'Constants\nCONST PI# = 3.14159265358979#\nCONST FALSE = 0\nCONST TRUE = NOT FALSE\n\n'Global Variables\nDIM SHARED TilePat$(1 TO 14)             'for tile patterns\nDIM SHARED Pal(0 TO 255, 1 TO 3)         'store palette colors\nDIM SHARED OriginalPal(0 TO 255, 1 TO 3) 'store original palette colors\n\nTilePatternData:\n   DATA 255,15,0,0,255,15,0,0,255,15,0,0,255,15,0,0\n   DATA 255,240,0,0,255,240,0,0,255,240,0,0,255,240,0,0\n   DATA 15,240,0,15,15,240,0,15,15,240,0,15,15,240,0,15\n   DATA 15,240,0,15,15,240,0,15,15,240,0,15,15,240,0,15\n   DATA 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255\n   DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255\n   DATA 255,255,0,0,129,129,126,0,129,129,126,0,129,129,126,0\n   DATA 129,129,126,0,129,129,126,0,129,129,126,0,255,255,0,0\n   DATA 0,255,252,175,0,252,252,85,0,255,252,175,0,252,252,85\n   DATA 0,255,252,175,0,252,252,85,0,255,252,175,0,252,252,85\n   DATA 128,127,0,127,192,63,0,63,224,31,0,31,240,15,0,15\n   DATA 248,7,0,7,252,3,0,3,254,1,0,1,255,0,0,0\n   DATA 0,0,255,0,0,159,255,0,0,159,255,0,0,159,255,0\n   DATA 0,0,255,0,0,249,255,0,0,249,255,0,0,249,255,0\n   DATA 239,239,255,0,199,199,255,0,131,131,255,0,1,1,255,0\n   DATA 131,131,255,0,199,199,255,0,239,239,255,0,255,255,255,0\n   DATA 0,255,223,131,0,255,255,1,0,255,255,1,0,255,255,1\n   DATA 0,255,255,1,0,255,255,1,0,255,223,131,0,255,255,255\n   DATA 146,146,146,109,73,73,73,182,36,36,36,219,146,146,146,109\n   DATA 73,73,73,182,36,36,36,219,146,146,146,109,73,73,73,182\n   DATA 0,255,255,51,0,255,255,51,0,255,255,0,0,255,255,0\n   DATA 0,255,255,51,0,255,255,51,0,255,255,0,0,255,255,0\n   DATA 56,199,0,199,124,131,0,131,254,1,0,1,254,1,0,1\n   DATA 254,1,0,1,124,131,0,131,56,199,0,199,0,255,0,255\n   DATA 255,255,255,0,255,255,255,0,0,0,0,255,255,255,255,0\n   DATA 255,255,255,0,0,0,0,255,255,255,255,0,255,255,255,0\n   DATA 144,144,144,119,68,68,68,187,68,68,68,187,34,34,34,221\n   DATA 34,34,34,221,34,34,34,221,34,34,34,221,187,187,187,68\n\nTriangleData:\n   DATA 285,185,320,230,280,205,320,245,280,220,320,260,295,220,340,260\n   DATA 310,220,350,260,315,195,360,240,310,190,360,230,285,185,340,230\n\nIntroData:\n   DATA \"This program was designed to demonstrate some of the many graphics\"\n   DATA \"features of the QuickBASIC computer programming language.  Although\"\n   DATA \"most of this program was written in Visual Basic for DOS, the\"\n   DATA \"graphics routines are compatible with QuickBASIC.\"\n   DATA\n   DATA \"There are a total of four main menu options.  Currently, you are in\"\n   DATA \"the first option which is an introduction to this program.  The\"\n   DATA \"second option is a graphics demonstration and the third option runs\"\n   DATA \"sample programs.  Finally, the four and final main menu choice\"\n   DATA \"allows you to exit this program.\"\n   \n   DATA \"All together, there are two files which make up this program; a form\"\n   DATA \"file and a BASIC file.  Both files combined have 51 routines.  The\"\n   DATA \"BASIC file alone has 46 routines.  Some routines were designed to\"\n   DATA \"imitate some of Turbo C's functions, especially the text routines.\"\n   DATA\n   DATA \"I used a drawing program to draw some of the images and to create\"\n   DATA \"portions of the graphical menus.  These images were saved in a\"\n   DATA \"format recognized by BASIC.  This way, graphics can be loaded from\"\n   DATA \"the disk to memory, making it much faster to display graphics.\"\n   DATA\n   DATA \"Well, enjoy this program; it is quite interesting!!!\"\n\n'AllDemos:\n'   All graphics demonstrations.\nSUB AllDemos ()\n   PixelDemo      'pixel demonstration\n   LineDemo       'line demonstration\n   BoxDemo        'box demonstration\n   BoxFillDemo    'box fill demonstration\n   CircleDemo     'circle demonstration\n   CircleFillDemo 'circle fill demonstration\n   ArcDemo        'arc demonstration\n   GetPutDemo     'get\/put demonstration\n   DrawDemo       'draw demonstration\n   LineTiles      'line tiles demonstration\n   PaintTiles     'paint tiles demonstration\n   PaletteChart   'palette chart demonstration\nEND SUB\n\n'ArcDemo:\n'   Arc demonstration.\nSUB ArcDemo ()\n   GraphWindow \"Arc Demonstration\"                    'graphics window\n   GCenter 30, 80, 15, \"Press any key to continue...\" 'print prompt\n   KeyBuffer                                          'clear keyboard buffer\n   DO WHILE INKEY$ = \"\"                               'do until key pressed\n      DO                                              'aspect ratio loop\n         XStart! = RND * 6                            'arc starts\n         XEnd! = RND * 6                              'arc ends\n      LOOP UNTIL XEnd! &lt; XStart!                      'end is less than start\n      CIRCLE (RND * 639, RND * 479), RND * 300 + 10, RND * 16, -XStart!, -XEnd!\n   LOOP                                               'end keypress loop\nEND SUB\n\n'BoxDemo:\n'   Box demonstration.\nSUB BoxDemo ()\n   GraphWindow \"Box Demonstration\"                    'graphics window\n   GCenter 30, 80, 15, \"Press any key to continue...\" 'print prompt\n   KeyBuffer                                          'clear keyboard buffer\n   DO WHILE INKEY$ = \"\"                               'do until key is pressed\n      LINE -(RND * 639, RND * 479), RND * 16, B       'draw random box\n   LOOP                                               'end keypress loop\nEND SUB\n\n'BoxFillDemo:\n'   Box fill demonstration.\nSUB BoxFillDemo ()\n   GraphWindow \"Box Fill Demonstration\"               'graphics window\n   GCenter 30, 80, 15, \"Press any key to continue...\" 'prompt\n   KeyBuffer                                          'clear keyboard buffer\n   DO WHILE INKEY$ = \"\"                               'do until key is pressed\n      LINE -(RND * 639, RND * 479), RND * 16, BF      'draw box filled\n   LOOP                                               'end keypress loop\nEND SUB\n\n'Center:\n'   Centers text at a given row with color.\n'parameters:\n'   row    - row\n'   MaxCol - maximum column\n'   fgkol  - foreground color\n'   bgkol  - background color\n'   text$  - text to print\nSUB Center (row, MaxCol, fgkol, bgkol, text$)\n   col = MaxCol \/ 2 - LEN(text$) \/ 2     'define column\n   PrtText row, col, fgkol, bgkol, text$ 'print text\nEND SUB\n\n'CheckVGA:\n'   Checks the highest VGA mode used in this program.\nSUB CheckVGA ()\n   ON LOCAL ERROR GOTO BadMode 'print message in case of error\n   SCREEN.HIDE                 'hide screen\n   SCREEN 13                   'try to switch to VGA mode\nEXIT SUB\n\nBadMode:                       'routine to print error message\n   ScreenErrorMessage          'print screen error message\n   END                         'end program\nEND SUB\n\n'CircleDemo:\n'   Circle demonstration.\nSUB CircleDemo ()\n   GraphWindow \"Circle Demonstration\"                 'graphics window\n   GCenter 30, 80, 15, \"Press any key to continue...\" 'prompt\n   KeyBuffer                                          'clear keyboard buffer\n   DO WHILE INKEY$ = \"\"                               'do until key is pressed\n      CIRCLE (RND * 639, RND * 479), RND * 300 + 10, RND * 16 'draw circle\n   LOOP                                               'end keypress loop\nEND SUB\n\n'CircleFillDemo:\n'   Circle fill with paint demonstration.\nSUB CircleFillDemo ()\n   GraphWindow \"Circle Fill Demonstration\"            'graphics window\n   GCenter 30, 80, 15, \"Press any key to continue...\" 'prompt\n   KeyBuffer                                          'clear keyboard buffer\n   DO WHILE INKEY$ = \"\"                               'do until key is pressed\n      xc = RND * 639                                  'initialize X-coordinate\n      yc = RND * 479                                  'initialize Y-coordinate\n      kolor = RND * 16                                'initialize color\n      CIRCLE (xc, yc), RND * 300 + 10, kolor          'draw circle\n      PAINT (xc, yc), RND * 16, kolor                 'fill circle with paint\n   LOOP                                               'end keypress loop\nEND SUB\n\n'Circles:\n'   Circle program.\nSUB Circles ()\n   GraphWindow \"Color Circles Program\"                'graphics window\n\n   FOR radius = 10 TO 500 STEP 5                      'radius sizes from 10-500\n      FOR xc = 2 TO 637 STEP 635                      'X-coordinate values\n         yc = 0                                       'initialize Y-coordinate\n         FOR number = 1 TO 2                          'for two circles\n            CIRCLE (xc, yc), radius, 15 * RND + 1     'draw circle\n            yc = yc + 445                             'increase Y-coordinate\n         NEXT                                         'next circle\n      NEXT                                            'next X-coordinate\n   NEXT                                               'next radius number\n\n   GCenter 30, 80, 15, \"Press any key to continue...\" 'print prompt\n   KeyBuffer                                          'clear keyboard buffer\n   AnyKey$ = INPUT$(1)                                'get any key\nEND SUB\n\n'ClearLines:\n'   Clears a certain amount of lines in text mode.\n'parameters:\n'   trow  - top row\n'   lcol  - left column\n'   brow  - bottom row\n'   rcol  - right column\n'   kolor - color\nSUB ClearLines (trow, lcol, brow, rcol, kolor)\n   line$ = STRING$(rcol - lcol - 1, 219)  'define clearing line\n   FOR row = trow TO brow                 'from top to bottom\n      PrtText row, lcol, kolor, 0, line$  'print line\n   NEXT                                   'next line\nEND SUB\n\n'ClownFace:\n'   Displays a clown face.\nSUB ClownFace ()\n   GraphMode 12, 80, 30                    'set graphics mode\n   \n   GraphCenter 10, 80, 15, \"Press any key to view clown face:\"\n   GraphCenter 11, 80, 15, \"Press any key when ready to return to menu.\"\n\n   KeyBuffer                               'clear keyboard buffer\n   AnyKey$ = INPUT$(1)                     'get any key\n\n   PutImage \"CLOWN16.SCR\", 32500, 7, 0, 0  'place image to screen\n\n   KeyBuffer                               'clear keyboard buffer\n   AnyKey$ = INPUT$(1)                     'get any key\nEND SUB\n\n'DefaultPal:\n'   Sets the default palette for this program for screen mode 13.\nSUB DefaultPal ()\n   DIM VPal(255) AS hues         'allocate storage space\n  \n   SCREEN 13                     'change mode\n  \n   DEF SEG = VARSEG(VPal(0))     'point to array's segment address\n      BLOAD \"VGA13.PAL\", 0       'load palette into array\n   DEF SEG                       'point to BASIC's segment address\n  \n   OUT &amp;H3C8, 0                  'inform VGA\n   FOR atrib = 0 TO 255          'entire palette\n      OUT &amp;H3C9, VPal(atrib).red 'send red component\n      OUT &amp;H3C9, VPal(atrib).grn 'send green component\n      OUT &amp;H3C9, VPal(atrib).blu 'send blue component\n   NEXT                          'next attribute\nEND SUB\n\n'Delay:\n'   Pauses execuation for a number of seconds or less.\n'parameters:\n'   seconds - seconds or less to pause\nSUB delay (seconds!)\n   StartTime! = TIMER                          'initialize start time\n   DO                                          'start loop\n   LOOP UNTIL (TIMER - StartTime!) >= seconds! 'end loop if true\nEND SUB\n\n'DemoMenu:\n'   Creates menu for graphics demonstration.\nSUB DemoMenu ()\n   DefaultPal                                   'load palette for images\n   PutImage \"DEMOMEN1.IMG\", 31200, 12, 56, 40   'place first menu portion\n   PutImage \"DEMOMEN2.IMG\", 31200, 12, 317, 40  'place second menu portion\n   PutImage \"DEMOMEN3.IMG\", 10000, 12, 56, 281  'place third menu portion\n   PutImage \"DEMOPRPT.IMG\", 12500, 12, 124, 402 'place prompt\nEND SUB\n\n'DemoRoutine:\n'   Routine for graphics demonstration.\nSUB DemoRoutine ()\n   ValStr$ = \"ABCDEFGHIJKLMabcdefghijklm\" 'valid input string\n   done = FALSE                           'loop controlling variable\n   DO WHILE NOT done                      'start main loop\n      DO                                  'start choice loop\n         DemoMenu                         'creates demonstration menu\n         KeyBuffer                        'clear keyboard buffer\n         a$ = INPUT$(1)                   'get choice\n         SELECT CASE ASC(a$)              'check choice\n            CASE 27                       'user pressed Esc\n               done = TRUE                'change loop controlling variable\n            CASE 65, 97                   'user pressed A or a\n               PixelDemo                  'pixel demonstration\n            CASE 66, 98                   'user pressed B or b\n               LineDemo                   'line demonstration\n            CASE 67, 99                   'user pressed C or c\n               BoxDemo                    'box demonstration\n            CASE 68, 100                  'user pressed D or d\n               BoxFillDemo                'box fill demonstration\n            CASE 69, 101                  'user pressed E or e\n               CircleDemo                 'circle demonstration\n            CASE 70, 102                  'user pressed F or f\n               CircleFillDemo             'circle fill demonstration\n            CASE 71, 103                  'user pressed G or g\n               ArcDemo                    'arc demonstration\n            CASE 72, 104                  'user pressed H or h\n               GetPutDemo                 'get\/put demonstration\n            CASE 73, 105                  'user pressed I or i\n               DrawDemo                   'draw demonstration\n            CASE 74, 106                  'user pressed J or j\n               LineTiles                  'line tiles demonstration\n            CASE 75, 107                  'user pressed K or k\n               PaintTiles                 'paint tiles demonstration\n            CASE 76, 108                  'user pressed L or l\n               PaletteChart               'palette chart demonstration\n            CASE 77, 109                  'user pressed M or m\n               AllDemos                   'display all demonstrations\n         END SELECT                       'end checking\n      LOOP UNTIL ASC(a$) = 27 OR INSTR(a$, ValStr$) &lt;> 0 'ending loop check\n   LOOP                                   'end main loop\n   TextMode 80, 25, 0, 0, 7, 0            'return to text mode\nEND SUB\n\n'DrawDemo:\n'   Demonstration for the DRAW statement.\nSUB DrawDemo ()\n   GraphWindow \"Draw Demonstration\"                    'graphics window\n\n   GCenter 30, 80, 15, \"Press any key to continue...\"  'print prompt\n   \n   box$ = \"u3r3d3l3\"                                   'define box string\n   FOR number = 1 TO 255 STEP 5\n      DRAW \"BM320,240;S=\" + VARPTR$(number)            'position and set scale\n      FOR Angle = -360 TO 360 STEP 45                  'turn angles\n         kolor = RND * 16                              'set color\n         DRAW \"TA=\" + VARPTR$(Angle) + \"C=\" + VARPTR$(kolor) + box$ 'draw box\n      NEXT                                             'next angle\n   NEXT                                                'next scale height\n\n   KeyBuffer                                           'clear keyboard buffer\n   AnyKey$ = INPUT$(1)                                 'get any key\nEND SUB\n\n'Ellipse:\n'   Draws an ellipse.\nSUB Ellipse ()\n   GraphWindow \"Color Ellipses Program\"               'graphics window\n   GCenter 30, 80, 15, \"Press any key to continue...\" 'prompt\n   KeyBuffer                                          'clear keyboard buffer\n   DO WHILE INKEY$ = \"\"                               'do until key is pressed\n      kolor = 15 * RND + 1                            'initialize color\n      FOR ratio! = .7 TO 0 STEP -.05                  'for ratios .7 to 0\n         CIRCLE (320, 223), 300, kolor, , , ratio!    'draw ellipse\n      NEXT                                            'next ratio value\n   LOOP                                               'end keypress loop\nEND SUB\n\n'ExitMessage:\n'   Prints the exit message for the program.\nSUB ExitMessage ()\n   SCREEN.HIDE                          'hide screen\n   TextMode 80, 25, 0, 0, 7, 0          'clear screen\n   LineBox 7, 8, 14, 71, 14, 1, 1, 3, 2 'create box\n\n   Center 7, 80, 15, 1, \" Exit Message \"\n   Center 9, 80, 10, 1, \"Thank you for using this demonstration program.\"\n   Center 10, 80, 10, 1, \"Look for my next creation in the near future.\"\n   Center 12, 80, 10, 1, \"Bye!!!\"\n\n   PrtText 13, 1, 7, 0, \"\"               'for location purpose\n   END                                   'end program\nEND SUB\n\n'ExitRoutine:\n'   Creates an exit routine for the program.\nSUB ExitRoutine ()\n   LineBox 9, 8, 15, 73, 10, 1, 1, 3, 2 ' create box\n\n   Center 9, 80, 15, 1, \" Exit Prompt \"                              ' title\n   Center 11, 80, 14, 1, \"Do you really want to exit this program?\"  ' prompt 1\n   Center 13, 80, 14, 1, \"Press &lt;Y> for Yes or &lt;N> for No:\"          ' prompt 2\n\n   done = FALSE                         'initialize loop controlling variable\n   DO WHILE NOT done                    'start loop\n      KeyBuffer                         'clear keyboard buffer\n      ExitKey$ = INPUT$(1)              'get key\n      SELECT CASE ASC(ExitKey$)         'check choice\n         CASE 27                        'user pressed Esc key\n            done = TRUE                 'change variable to exit loop\n         CASE 89, 121                   'user pressed Y or y\n            ExitMessage                 'print exit message and end program\n         CASE 78, 110                   'user pressed N or n\n            done = TRUE                 'change variable to exit loop\n      END SELECT                        'end choice checking\n   LOOP                                 'end loop\n   \n   Demo.SHOW                            'display Demo form\nEND SUB\n\n'FadePal:\n'   Fades a 256 color palette out.\nSUB FadePal ()\n   PalRead    'read the current palette colors\n   PalStore   'store the current palette colors\n   PalFadeOut 'fades out all 256 colors to black\nEND SUB\n\n'GCenter:\n'   Centers text at a given row with color in graphics mode.\n'parameters:\n'   row    - row\n'   MaxCol - maximum column\n'   fgkol  - foreground color\n'   text$  - text to print\nSUB GCenter (row, MaxCol, fgkol, text$)\n   col = MaxCol \/ 2 - LEN(text$) \/ 2 'define column\n   GPrtText row, col, fgkol, text$   'print text\nEND SUB\n\n'GetPutDemo:\n'   Gets and puts an object on the screen.\nSUB GetPutDemo ()\n   DIM image(500)                                      'allocate space\n\n   GraphWindow \"Get\/Put Demostration\"                  'graphics window\n\n   CIRCLE (320, 240), 15, 4                            'draw circle one\n   PAINT (320, 240), 4, 4                              'paint circle one\n   CIRCLE (320, 240), 7, 3                             'draw circle two\n   PAINT (320, 240), 3, 3                              'paint circle two\n   GET (305, 225)-(335, 255), image                    'store image\n   CLS                                                 'clear screen\n\n   GCenter 30, 80, 15, \"Press any key to continue...\"  'print prompt\n   KeyBuffer                                           'clear keyboard buffer\n\n   DO WHILE INKEY$ = \"\"                                'start keypress loop\n      xc = RND * 600                                   'initialize X-coordinate\n      yc = RND * 400                                   'initialize Y-coordinate\n      PUT (xc, yc), image, XOR                         'place image\n      delay .2                                         'delay\n      PUT (xc, yc), image, XOR                         'remove image\n   LOOP                                                'end keypress loop\nEND SUB\n\n'GPrtText:\n'   Prints text at a given location with color in graphics mode.\n'parameters:\n'   row   - row\n'   col   - column\n'   fgkol - foreground color\n'   text$ - text to be printed to screen\nSUB GPrtText (row, col, fgkol, text$)\n   LOCATE row, col 'set location\n   COLOR fgkol     'set color\n   PRINT text$;    'print text\nEND SUB\n\n'GraphCenter:\n'   Centers text in graphics mode at a given row with color.\n'parameters:\n'   row    - row\n'   MaxCol - maximum column\n'   fgkol  - foreground color\n'   text$  - text to print\nSUB GraphCenter (row, MaxCol, fgkol, text$)\n   col = MaxCol \/ 2 - LEN(text$) \/ 2 'define column\n   \n   LOCATE row, col                   'position cursor\n   COLOR fgkol                       'set foreground color\n   PRINT text$;                      'print text\nEND SUB\n\n'GraphMode:\n'   Switches to a graphics mode.\n'parameters:\n'   mode - graphics mode\n'   wide - width of screen\n'   rows - number of rows\nSUB GraphMode (mode, wide, rows)\n   SCREEN mode      'change screen mode\n   WIDTH wide, rows 'set dimensions\n   VIEW             'clear viewport\n   CLS              'clear screen\nEND SUB\n\n'GraphWindow:\n'   Creates a window in mode 12 (VGA) to view graphics.\n'parameters:\n'   title$ - title of the graphics window\nSUB GraphWindow (title$)\n   GraphMode 12, 80, 30          'switch to graphics mode\n   GraphCenter 1, 80, 15, title$ 'center title\n   LINE (0, 0)-(639, 463), 7, B  'outer border line\n   LINE (0, 14)-(639, 14), 7     'title dividing line\n   VIEW (2, 16)-(637, 461)       'area to view graphics\nEND SUB\n\n'HatMan:\n'   Animation program.\nSUB HatMan ()\n   REDIM HatMan1(800), HatMan2(800)                      'allocate storage space\n\n   GraphWindow \"Hat-Man Animation Program\"             'display graphics window\n\n   PutImage \"HATMAN1.IMG\", 800, 12, 302, 215           'place first hat-man\n   GET (302, 215)-(339, 258), HatMan1                  'store first hat-man\n   CLS                                                 'clear viewport\n   \n   PutImage \"HATMAN2.IMG\", 800, 12, 302, 215           'place second hat-man\n   GET (302, 215)-(339, 258), HatMan2                  'store first hat-man\n   CLS                                                 'clear viewport\n\n   GCenter 30, 80, 15, \"Press any key to continue...\"  'print prompt\n   KeyBuffer                                           'clear keyboard buffer\n\n   xc = 586                                            'initialize X-coordinate\n   DO WHILE INKEY$ = \"\"                                'do until key is pressed\n      PUT (xc, 215), HatMan2, XOR                      'place second hat-man\n      delay .3                                         'pause\n      PUT (xc, 215), HatMan2, XOR                      'remove second hat-man\n      PUT (xc - 38, 215), HatMan1, XOR                 'place first hat-man\n      delay .3                                         'pause\n      PUT (xc - 38, 215), HatMan1, XOR                 'remove first hat-man\n      xc = xc - 76                                     'decrease X-coordinate\n      IF xc &lt;= 16 THEN xc = 586                        'check X-coordinate\n   LOOP                                                'end keypress loop\nEND SUB\n\n'Intro:\n'   Prints introduction words.\nSUB Intro ()\n   TextMode 80, 25, 0, 0, 7, 1                          'switch to text mode\n\n   PrtText 5, 6, 15, 1, \"Introduction\"                  'print title\n   PrtText 6, 6, 7, 1, STRING$(69, 205)                 'dividing line\n   Center 24, 80, 15, 1, \"Press any key to continue...\" 'print prompt\n\n   row = 8                                              'initialize start row\n   RESTORE IntroData                                    'set data pointer\n   FOR number = 1 TO 21                                 'print nine lines\n      READ text$                                        'read text data\n      PrtText row, 6, 15, 1, text$                      'print text\n      row = row + 1\n      IF number = 10 THEN                               'check number\n         row = 8                                        'define starting row\n         KeyBuffer                                      'clear keyboard buffer\n         AnyKey$ = INPUT$(1)                            'get a key\n         ClearLines 8, 6, 17, 77, 1                     'clear lines\n      END IF                                            'end checking\n   NEXT                                                 'next line\n\n   KeyBuffer                                            'clear keyboard buffer\n   AnyKey$ = INPUT$(1)                                  'get a key\nEND SUB\n\n'KeyBuffer:\n'   Clears the keyboard buffer of any keystrokes.\nSUB KeyBuffer ()\n   DEF SEG = 0              'point to low memory address\n      POKE 1050, PEEK(1052) 'clear buffer\n   DEF SEG                  'return to default segment address\nEND SUB\n\n'LineBox:\n'   Creates a box using ASCII line-drawing characters.\n'parameters:\n'   trow  - top row\n'   lcol  - left column\n'   brow  - bottom row\n'   rcol  - right column\n'   fgkol - foreground color\n'   bgkol - background color\n'   mkol  - middle fill color\n'   skol  - shadow color\n'   btype - box type\n'       first type  - single across; single down\n'       second type - double across; double down\n'       third type  - single across; double down\n'       fourth type - double across; single down\nSUB LineBox (trow, lcol, brow, rcol, fgkol, bgkol, mkol, skol, btype)\n   SELECT CASE btype 'define box characters\n      CASE 1         'single across; single down\n         ulc = 218   '   upper-left-corner\n         urc = 191   '   upper-right-corner\n         blc = 192   '   bottom-left-corner\n         brc = 217   '   bottom-right-corner\n         ver = 179   '   vertical character\n         hor = 196   '   horizontal character\n      CASE 2         'double across; double down\n         ulc = 201\n         urc = 187\n         blc = 200\n         brc = 188\n         ver = 186\n         hor = 205\n      CASE 3         'single across; double down\n         ulc = 214\n         urc = 183\n         blc = 211\n         brc = 189\n         ver = 186\n         hor = 196\n      CASE 4         'double across; single down\n         ulc = 213\n         urc = 184\n         blc = 211\n         brc = 190\n         ver = 179\n         hor = 205\n   END SELECT\n\n   TopRow$ = CHR$(ulc) + STRING$(rcol - lcol - 1, hor) + CHR$(urc) 'top row\n   BotRow$ = CHR$(blc) + STRING$(rcol - lcol - 1, hor) + CHR$(brc) 'bottom row\n\n   PrtText trow, lcol, fgkol, bgkol, TopRow$      'top row\n   FOR row = trow + 1 TO brow - 1                 'top to bottom\n      PrtText row, lcol, fgkol, bgkol, CHR$(ver)  'vertical character\n      PrtText row, lcol + 1, mkol, 0, STRING$(rcol - lcol - 1, 219) 'mid-fill\n      PrtText row, rcol, fgkol, bgkol, CHR$(ver)  'vertical character\n      PrtText row, rcol + 1, skol, 0, CHR$(219)   'shadow character\n   NEXT                                           'next line\n   PrtText brow, lcol, fgkol, bgkol, BotRow$      'bottom row\n   PrtText brow, rcol + 1, skol, 0, CHR$(219)     'shadow character\n   PrtText brow + 1, lcol + 1, skol, 0, STRING$(rcol - lcol + 1, 219) 'shadow\nEND SUB\n\n'LineDemo:\n'   Line demonstration.\nSUB LineDemo ()\n   GraphWindow \"Line Demonstration\"                   'graphics window\n   GCenter 30, 80, 15, \"Press any key to continue...\" 'print prompt\n   KeyBuffer                                          'clear keyboard buffer\n   DO WHILE INKEY$ = \"\"                               'do until key is pressed\n      LINE -(RND * 639, RND * 479), RND * 16          'draw line\n   LOOP\nEND SUB\n\n'LineTiles:\n'   Creates line tile patterns.\nSUB LineTiles ()\n   DIM LTile(1 TO 12)                                  'allocate storage space\n\n   LTile(1) = &amp;HFFFF                                   'line tile 1\n   LTile(2) = &amp;HEEEE                                   'line tile 2\n   LTile(3) = &amp;HDDDD                                   'line tile 3\n   LTile(4) = &amp;H1111                                   'line tile 4\n   LTile(5) = &amp;HFFCC                                   'line tile 5\n   LTile(6) = &amp;HE724                                   'line tile 6\n   LTile(7) = &amp;HF0F0                                   'line tile 7\n   LTile(8) = &amp;H6A6A                                   'line tile 8\n   LTile(9) = &amp;HABCD                                   'line tile 9\n   LTile(10) = &amp;H45AC                                  'line tile 10\n   LTile(11) = &amp;HBFBF                                  'line tile 11\n   LTile(12) = &amp;H4545                                  'line tile 12\n\n   GraphWindow \"User-Defined Line Tile Patterns\"       'graphics window\n\n   row = 4                                             'initialize row\n   yc = 40                                             'initialize Y-coordinate\n   FOR number = 1 TO 12                                'twelve line tiles\n      LINE (50, yc)-(550, yc), 2, , LTile(number)      'draw line with tile\n      GPrtText row, 70, 15, STR$(number)               'print tile number\n      row = row + 2                                    'increase row\n      yc = yc + 32                                     'increase Y-coordinate\n   NEXT                                                'next tile number\n\n   GCenter 30, 80, 15, \"Press any key to continue...\"  'print prompt\n   KeyBuffer                                           'clear keyboard buffer\n   AnyKey$ = INPUT$(1)                                 'get a key\nEND SUB\n\n'Logo:\n'   Create graphical logo.\nSUB Logo ()\n   SCREEN.HIDE                          'hide screen\n\n   DefaultPal                           'define palette for mode 13\n   PutImage \"LOGO.SCR\", 32500, 13, 0, 0 'load and place image\n\n   KeyBuffer                            'clear keyborad buffer\n   AnyKey$ = INPUT$(1)                  'get any keystroke\n\n   TextMode 80, 25, 0, 0, 7, 0          'switch to text mode\n\n   SCREEN.SHOW                          'hide screen to show form\nEND SUB\n\n'Orbit:\n'   Rotates a ball in a circle.\nSUB Orbit ()\n   DIM planet(500)                                     'allocate storage space\n   \n   GraphWindow \"Orbit Program\"                         'display grahics window\n   \n   CIRCLE (320, 240), 10, 1                            'draw circle to move\n   PAINT (320, 240), 3, 1                              'paint that circle\n   GET (309, 229)-(331, 251), planet                   'store image\n\n   FOR number = 1 TO 3000                              'place 3000 pixels\n      PSET (RND * 639, RND * 479), 7                   'put pixel\n   NEXT                                                'next number\n\n   CIRCLE (320, 240), 161, 2, , , .13                  'draw ring\n   CIRCLE (320, 240), 12, 14                           'draw yellow circle\n   PAINT (320, 240), 14, 14                            'paint yellow circle\n   \n   GCenter 30, 80, 15, \"Press any key to continue...\"  'print prompt\n   KeyBuffer                                           'clear keyboard buffer\n\n   x# = -PI                                            'initialize turn angle\n   DO WHILE INKEY$ = \"\"                                'do until key is pressed\n      r# = 160 * COS(x#)                               'initialize radius\n      y# = SIN(x#)                                     'initialize Y-coordinate\n      yo# = y# \/ (PI# \/ 60)                            'Y-coordinate offset\n      PUT (317 + r#, 228 + yo#), planet, XOR           'place planet to screen\n      FOR pause = 1 TO 1300                            'pause\n      NEXT                                             'next pause number\n      PUT (317 + r#, 228 + yo#), planet, XOR           'remover image\n      x# = x# + .01                                    'increase PI angle\n      IF x# >= PI THEN x# = -PI                        'check PI angle\n   LOOP                                                'end keypress loop\nEND SUB\n\n'PaintTiles:\n'   Displays tile patterns in VGA mode.\nSUB PaintTiles ()\n   GraphWindow \"User-Defined Paint Tile Patterns\"     'create graphics window\n\n   row = 9                                            'initialize row\n   number = 1                                         'initialize tile number\n   FOR yc = 24 TO 366 STEP 135                        'Y positions\n      col = 10                                        'initialize column number\n      FOR xc = 30 TO 580 STEP 150                     'X positions\n         LINE (xc, yc)-(xc + 100, yc + 85), 7, B      'draw box\n         PAINT (xc + 5, yc + 5), TilePat$(number), 7  'paint box\n         GPrtText row, col, 15, STR$(number)          'print tile number\n         col = col + 19                               'increase column number\n         number = number + 1                          'increase tile number\n      NEXT                                            'next X position\n      row = row + 9                                   'increase row\n   NEXT                                               'next Y position\n                                                       \n   GCenter 30, 80, 15, \"Press any key to continue...\" 'print prompt\n   KeyBuffer                                          'clear keyboard buffer\n   AnyKey$ = INPUT$(1)                                'get any key\nEND SUB\n\n'PaletteChart:\n'   Creates a chart of palette colors.\nSUB PaletteChart ()\n   GraphMode 13, 40, 25                                   'graphics mode\n\n   GraphCenter 2, 40, 7, \"PALETTE CHART\"                  'print title\n\n   FOR yc = 54 TO 144 STEP 6                              'Y-coordinate values\n      FOR xc = 8 TO 294 STEP 19                           'X-coordinate values\n         LINE (xc, yc)-(xc + 17, yc + 4), kolor, BF       'draw line\n         kolor = kolor + 1                                'increment kolor\n      NEXT                                                'next X-coordinate\n   NEXT                                                   'next Y-coordinate\n\n   GraphCenter 24, 40, 15, \"Press any key to continue...\" 'print prompt\n   KeyBuffer                                              'clear key buffer\n   AnyKey$ = INPUT$(1)                                    'get a key\nEND SUB\n\n'PalFadeOut:\n'   Fade all 256 colors to black.\nSUB PalFadeOut ()\n   FOR numberofshade = 0 TO 63                  '64 shades\n      FOR colornum = 0 TO 255                   '256 colors\n         OUT &amp;H3C8, colornum                    'place color into VGA port\n         FOR attribute = 1 TO 3                 '3 attributes\n            OUT &amp;H3C9, Pal(colornum, attribute) 'send color components\n            IF Pal(colornum, attribute) > 0 THEN\n               Pal(colornum, attribute) = Pal(colornum, attribute) - 1\n            END IF\n         NEXT attribute                         'next attribute\n      NEXT colornum                             'next color\n   NEXT numberofshade\nEND SUB\n\n'PalRead:\n'   Read the color values currently stored in the video card.\nSUB PalRead ()\n   FOR colornum = 0 TO 255          'read 256 colors\n      OUT &amp;H3C7, colornum           'color number\n      Pal(colornum, 1) = INP(&amp;H3C9) 'get red value from video card\n      Pal(colornum, 2) = INP(&amp;H3C9) 'get green value from video card\n      Pal(colornum, 3) = INP(&amp;H3C9) 'get blue value from video card\n   NEXT colornum                    'next color\nEND SUB\n\n'PalStore:\n'   Stores the current palette.\nSUB PalStore ()\n   'Because we'll be changing the values in the video card, we'll want to\n   'store those present in the array, OriginalPal().  This way, after making\n   'whatever changes in the colors, we can always fade back to the older\n   'palette we saved here.\n\n   FOR colornum = 0 TO 255                  '256 color palette\n      OUT &amp;H3C7, colornum                   'color number\n      OriginalPal(colornum, 1) = INP(&amp;H3C9) 'get red value from video card\n      OriginalPal(colornum, 2) = INP(&amp;H3C9) 'get green value from video card\n      OriginalPal(colornum, 3) = INP(&amp;H3C9) 'get blue value from video card\n   NEXT colornum                            'next color\nEND SUB\n\n'PixelDemo:\n'   Pixel demonstration.\nSUB PixelDemo ()\n   GraphWindow \"Pixel Demonstration\"                  'graphics window\n   GCenter 30, 80, 15, \"Press any key to continue...\" 'print prompt\n   KeyBuffer                                          'clear keyboard buffer\n   DO WHILE INKEY$ = \"\"                               'do until key is pressed\n      PSET (RND * 639, RND * 479), RND * 16           'place pixel\n      PRESET (RND * 639, RND * 479)                   'place or remove pixel\n   LOOP\nEND SUB\n\n'PrtText:\n'   Prints text at a given location with color.\n'parameters:\n'   row   - row\n'   col   - column\n'   fgkol - foreground color\n'   bgkol - background color\n'   text$ - text to be printed to screen\nSUB PrtText (row, col, fgkol, bgkol, text$)\n   LOCATE row, col    'set location\n   COLOR fgkol, bgkol 'set color\n   PRINT text$;       'print text\nEND SUB\n\n'PutImage:\n'   Loads and places an image on the screen.\n'parameters:\n'   filename$ - filename\n'   asize     - array size\n'   mode      - screen mode\n'   xc        - x-coordinate\n'   yc        - y-coordinate\nSUB PutImage (filename$, asize, mode, xc, yc)\n   SCREEN mode                          'set proper screen mode\n  \n   REDIM image(asize)                   'allocate storage for image\n   DEF SEG = VARSEG(image(0))           'point to image's segment address\n      BLOAD filename$, VARPTR(image(0)) 'load image into array\n   DEF SEG                              'point to BASIC's segment address\n\n   PUT (xc, yc), image, PSET            'place image onto screen\nEND SUB\n\n'SampleProgRoutine:\n'   Creates routine for sample programs' menu.\nSUB SampleProgRoutine ()\n   done = FALSE                                 'loop controlling variable\n   DO WHILE NOT done                            'start main loop\n      DO                                        'start choice loop\n         DefaultPal                             'set default image palette\n         PutImage \"PROGMENU.SCR\", 32500, 13, 0, 0  ' display menu screen\n         KeyBuffer                              'clear keyboard buffer\n         a$ = INPUT$(1)                         'get choice\n         SELECT CASE ASC(a$)                    'check choice\n            CASE 27                             'user pressed &lt;Esc>\n               done = TRUE                      'change controlling variable\n            CASE 49                             'user pressed 1\n               SunShine                         'sunshine program\n            CASE 50                             'user pressed 2\n               Ellipse                          'color ellipses program\n            CASE 51                             'user pressed 3\n               Circles                          'color circles program\n            CASE 52                             'user pressed 4\n               Orbit                            'rotates a ball\n            CASE 53                             'user pressed 5\n               HatMan                           'hat-man animation program\n            CASE 54                             'user pressed 6\n               Triangle                         'triangle lost in space program\n            CASE 55                             'user pressed 7\n               SpaceShip                        'space ship program\n            CASE 56                             'user pressed 8\n               ClownFace                        'clown face program\n         END SELECT                             'end checking\n      LOOP UNTIL ASC(a$) = 27 OR (ASC(a$) > 0 AND ASC(a$) &lt; 9)  ' check choice\n   LOOP                                         'end main loop\n   TextMode 80, 25, 0, 0, 7, 0                  'switch to text mode\nEND SUB\n\n'ScreenErrorMessage:\n'   Prints screen error message.\nSUB ScreenErrorMessage ()\n   TextMode 80, 25, 0, 0, 7, 0           'switch to text mode\n\n   LineBox 8, 9, 14, 71, 15, 4, 4, 3, 2  'create box\n\n   Center 8, 80, 15, 4, \" Screen Error Message \"\n   Center 10, 80, 14, 4, \"Your computer does not support VGA graphics.\"\n   Center 11, 80, 14, 4, \"Sorry, but this program depends on it.\"\n   Center 12, 80, 14, 4, \"Bye!!!\"\nEND SUB\n\n'SpaceShip:\n'   Flys a space ship across the screen.\nSUB SpaceShip ()\n   REDIM image1(750), image2(750)                         'allocate storage\n\n   DefaultPal                                             'set image palette\n\n   PutImage \"SHIP1.IMG\", 750, 13, 0, 0                    'place image one\n   GET (0, 0)-(48, 29), image1                            'store image one\n   PutImage \"SHIP2.IMG\", 750, 13, 50, 0                   'place image two\n   GET (50, 0)-(98, 29), image2                           'store image two\n   CLS                                                    'clear screen\n\n   GraphCenter 2, 40, 7, \"Flying Saucer Program\"          'graphics window\n\n   GraphCenter 24, 40, 15, \"Press any key to continue...\" 'print prompt\n   KeyBuffer                                              'clear key buffer\n\n   xc = 200                                               'initialize X-coor\n   yc = 100                                               'initialize Y-coor\n   DO WHILE INKEY$ = \"\"                                   'do until keypress\n      ImageNum = RND * 1                                  'initialize image num\n      IF ImageNum = 0 THEN                                'check image number\n         PUT (xc, yc), image1, XOR                        'place image one\n         delay .21                                        'delay\n         PUT (xc, yc), image1, XOR                        'remove image one\n      ELSE                                                'else\n         PUT (xc, yc), image2, XOR                        'place image two\n         delay .21                                        'delay\n         PUT (xc, yc), image2, XOR                        'remove image two\n      END IF                                              'end image check\n      ry = RND * 1                                        'assign y-direction\n      IF ry = 0 THEN yc = yc - 7 ELSE yc = yc + 7         'y goes up or down\n      xc = xc - 7                                         'decrement X-coor\n      IF xc &lt;= 1 THEN xc = 260                            'check X-coordinate\n      IF yc &lt;= 1 THEN yc = 160                            'check Y-coordinate\n      IF yc >= 160 THEN yc = 1                            'check Y-coordinate\n   LOOP                                                   'end keypress loop\nEND SUB\n\n'SunShineProg:\n'   Rotates box to create sun shine picture.\nSUB SunShine ()\n   GraphWindow \"Sunshine Reflection Program\"          'graphics window\n\n   box$ = \"R635D445L635U445\"                          'box string\n   FOR number = 90 TO 1 STEP -1                       'start at 90 degrees\n      DRAW \"BM2,16 C14 TA=\" + VARPTR$(Angle) + box$   'draw box at angle\n      Angle = Angle + 1                               'increase angle number\n   NEXT                                               'next box number\n\n   GCenter 30, 80, 15, \"Press any key to continue...\" 'print prompt\n   KeyBuffer                                          'clear keyboard buffer\n   AnyKey$ = INPUT$(1)                                'get any key\nEND SUB\n\n'TextMode:\n'   Switches to text mode.\n'parameters:\n'   wide  - width of screen\n'   rows  - number of rows\n'   apage - active page\n'   vpage - visual page\n'   bgkol - background color\n'   fgkol - foreground color\nSUB TextMode (wide, rows, apage, vpage, fgkol, bgkol)\n   SCREEN 0, 1, apage, vpage 'change screen mode\n   WIDTH wide, rows          'set screen dimensions\n   COLOR fgkol, bgkol        'set color\n   CLS                       'clear screen\nEND SUB\n\n'TilePatterns:\n'   Define tile patterns.\nSUB TilePatterns ()\n   DIM row$(1 TO 8)                    'temporary row holder\n\n   RESTORE TilePatternData             'set pointer\n\n   FOR TileNumber = 1 TO 14            '14 tile patterns\n      temp$ = \"\"                       'set temp variable to null\n      FOR number = 1 TO 8              'eight rows create one tile\n         READ tn1, tn2, tn3, tn4       'read tile number\n         row$(number) = CHR$(tn1) + CHR$(tn2) + CHR$(tn3) + CHR$(tn4)\n         temp$ = temp$ + row$(number)  'increment temporary holder\n      NEXT                             'next number\n      TilePat$(TileNumber) = temp$     'define tile pattern\n   NEXT                                'next tile number\nEND SUB\n\n'Triangle:\n'   Rotates a triangle through space.\nSUB Triangle ()\n   RANDOMIZE TIMER                                     'randomize generator\n\n   REDIM image(4500)                                     'allocate space\n\n   GraphWindow \"Triangle Lost In Space Program\"        'display graphics window\n\n   Tri$ = \"BM320,240C14L30M+15,-35NM+15,+35BD5P14,14\"  'triangle string\n\n   RESTORE TriangleData                                'set data pointer\n   number = 0                                          'initialize image number\n   FOR Angle = 0 TO 315 STEP 45                        'turn angles\n      READ XC1, YC1, XC2, YC2                          'read coordinates\n      DRAW \"TA=\" + VARPTR$(Angle) + Tri$               'draw triangle at angle\n      GET (XC1, YC1)-(XC2, YC2), image(number)         'store triangle\n      CLS                                              'clear viewport\n      number = number + 500                            'increase image number\n   NEXT                                                'next angle\n   \n   FOR number = 1 TO 3000                              '3000 pixels to place\n      PSET (RND * 639, RND * 479), 7                   'place random pixel\n   NEXT                                                'next number\n\n   GCenter 30, 80, 15, \"Press any key to continue...\"  'print prompt\n   KeyBuffer                                           'clear keyboard buffer\n\n   xc = 580                                            'initialize X-coordinate\n   yc = 215                                            'initialize Y-coordinate\n   ImageNum = 0                                        'initialize image number\n   DO WHILE INKEY$ = \"\"                                'do until key is pressed\n      PUT (xc, yc), image(ImageNum), XOR               'place image\n      delay .21                                        'pause\n      PUT (xc, yc), image(ImageNum), XOR               'remove image\n      rx = RND * 1                                     'initialize X-direction\n      ry = RND * 1                                     'initialize Y-direction\n      IF rx = 0 THEN xc = xc - 15 ELSE xc = xc + 15    'check X-direction\n      IF ry = 0 THEN yc = yc - 15 ELSE yc = yc + 15    'check Y-direction\n      ImageNum = ImageNum + 500                        'increase image number\n      IF ImageNum >= 4000 THEN ImageNum = 0            'check image number\n      IF xc &lt;= 5 THEN xc = 580                         'check X-coordinate\n      IF yc &lt;= 5 THEN yc = 395                         'check Y-coordinate\n      IF xc >= 580 THEN xc = 5                         'check X-coordinate\n      IF yc >= 395 THEN yc = 5                         'check Y-coordinate\n   LOOP                                                'end keypress loop\nEND SUB<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Filename:      DEMOBAS.BAS<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Programmer:    Alex Shaw III<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Purpose:       Graphics Demonstration Program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Date Created:  October 1, 1996<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Last Modified: December 2, 1996<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;$FORM Demo<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DEFINT A-Z<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Subroutines and Functions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB AllDemos ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB ArcDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB BoxDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB BoxFillDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB Center (row, MaxCol, fgkol, bgkol, text$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB CheckVGA ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB CircleDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB CircleFillDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB Circles ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB ClearLines (trow, lcol, brow, rcol, kolor)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB ClownFace ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB DefaultPal ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB delay (seconds!)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB DemoMenu ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB DemoRoutine ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB DrawDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB Ellipse ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB ExitMessage ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB ExitRoutine ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB FadePal ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB GCenter (row, MaxCol, fgkol, text$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB GetPutDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB GPrtText (row, col, fgkol, text$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB GraphCenter (row, MaxCol, fgkol, text$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB GraphMode (mode, wide, rows)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB GraphWindow (title$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB HatMan ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB Intro ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB KeyBuffer ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB LineBox (trow, lcol, brow, rcol, fgkol, bgkol, mkol, skol, btype)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB LineDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB LineTiles ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB Logo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB Orbit ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB PaintTiles ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB PaletteChart ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB PalFadeOut ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB PalRead ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB PalStore ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB PixelDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB PrtText (row, col, fgkol, bgkol, text$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB PutImage (filename$, asize, mode, xc, yc)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB SampleProgRoutine ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB ScreenErrorMessage ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB SpaceShip ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB SunShine ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB TextMode (wide, rows, apage, vpage, fgkol, bgkol)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB TilePatterns ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DECLARE SUB Triangle ()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Type Definitions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">TYPE hues<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   red AS INTEGER<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   grn AS INTEGER<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   blu AS INTEGER<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END TYPE<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Constants<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">CONST PI# = 3.14159265358979#<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">CONST FALSE = 0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">CONST TRUE = NOT FALSE<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Global Variables<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DIM SHARED TilePat$(1 TO 14)             &#39;for tile patterns<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DIM SHARED Pal(0 TO 255, 1 TO 3)         &#39;store palette colors<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">DIM SHARED OriginalPal(0 TO 255, 1 TO 3) &#39;store original palette colors<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">TilePatternData:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 255,15,0,0,255,15,0,0,255,15,0,0,255,15,0,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 255,240,0,0,255,240,0,0,255,240,0,0,255,240,0,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 15,240,0,15,15,240,0,15,15,240,0,15,15,240,0,15<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 15,240,0,15,15,240,0,15,15,240,0,15,15,240,0,15<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 0,0,0,255,0,0,0,255,0,0,0,255,0,0,0,255<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 255,255,0,0,129,129,126,0,129,129,126,0,129,129,126,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 129,129,126,0,129,129,126,0,129,129,126,0,255,255,0,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 0,255,252,175,0,252,252,85,0,255,252,175,0,252,252,85<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 0,255,252,175,0,252,252,85,0,255,252,175,0,252,252,85<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 128,127,0,127,192,63,0,63,224,31,0,31,240,15,0,15<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 248,7,0,7,252,3,0,3,254,1,0,1,255,0,0,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 0,0,255,0,0,159,255,0,0,159,255,0,0,159,255,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 0,0,255,0,0,249,255,0,0,249,255,0,0,249,255,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 239,239,255,0,199,199,255,0,131,131,255,0,1,1,255,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 131,131,255,0,199,199,255,0,239,239,255,0,255,255,255,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 0,255,223,131,0,255,255,1,0,255,255,1,0,255,255,1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 0,255,255,1,0,255,255,1,0,255,223,131,0,255,255,255<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 146,146,146,109,73,73,73,182,36,36,36,219,146,146,146,109<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 73,73,73,182,36,36,36,219,146,146,146,109,73,73,73,182<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 0,255,255,51,0,255,255,51,0,255,255,0,0,255,255,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 0,255,255,51,0,255,255,51,0,255,255,0,0,255,255,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 56,199,0,199,124,131,0,131,254,1,0,1,254,1,0,1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 254,1,0,1,124,131,0,131,56,199,0,199,0,255,0,255<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 255,255,255,0,255,255,255,0,0,0,0,255,255,255,255,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 255,255,255,0,0,0,0,255,255,255,255,0,255,255,255,0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 144,144,144,119,68,68,68,187,68,68,68,187,34,34,34,221<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 34,34,34,221,34,34,34,221,34,34,34,221,187,187,187,68<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">TriangleData:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 285,185,320,230,280,205,320,245,280,220,320,260,295,220,340,260<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA 310,220,350,260,315,195,360,240,310,190,360,230,285,185,340,230<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">IntroData:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;This program was designed to demonstrate some of the many graphics&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;features of the QuickBASIC computer programming language.  Although&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;most of this program was written in Visual Basic for DOS, the&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;graphics routines are compatible with QuickBASIC.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;There are a total of four main menu options.  Currently, you are in&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;the first option which is an introduction to this program.  The&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;second option is a graphics demonstration and the third option runs&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;sample programs.  Finally, the four and final main menu choice&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;allows you to exit this program.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;All together, there are two files which make up this program; a form&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;file and a BASIC file.  Both files combined have 51 routines.  The&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;BASIC file alone has 46 routines.  Some routines were designed to&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;imitate some of Turbo C&#39;s functions, especially the text routines.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;I used a drawing program to draw some of the images and to create&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;portions of the graphical menus.  These images were saved in a&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;format recognized by BASIC.  This way, graphics can be loaded from&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;the disk to memory, making it much faster to display graphics.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DATA &quot;Well, enjoy this program; it is quite interesting!!!&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;AllDemos:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   All graphics demonstrations.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB AllDemos ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PixelDemo      &#39;pixel demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LineDemo       &#39;line demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   BoxDemo        &#39;box demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   BoxFillDemo    &#39;box fill demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CircleDemo     &#39;circle demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CircleFillDemo &#39;circle fill demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   ArcDemo        &#39;arc demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GetPutDemo     &#39;get\/put demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DrawDemo       &#39;draw demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LineTiles      &#39;line tiles demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PaintTiles     &#39;paint tiles demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PaletteChart   &#39;palette chart demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;ArcDemo:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Arc demonstration.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB ArcDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Arc Demonstration&quot;                    &#39;graphics window<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot; &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                          &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                               &#39;do until key pressed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      DO                                              &#39;aspect ratio loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         XStart! = RND * 6                            &#39;arc starts<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         XEnd! = RND * 6                              &#39;arc ends<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      LOOP UNTIL XEnd! &lt; XStart!                      &#39;end is less than start<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      CIRCLE (RND * 639, RND * 479), RND * 300 + 10, RND * 16, -XStart!, -XEnd!<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                               &#39;end keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;BoxDemo:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Box demonstration.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB BoxDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Box Demonstration&quot;                    &#39;graphics window<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot; &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                          &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                               &#39;do until key is pressed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      LINE -(RND * 639, RND * 479), RND * 16, B       &#39;draw random box<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                               &#39;end keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;BoxFillDemo:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Box fill demonstration.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB BoxFillDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Box Fill Demonstration&quot;               &#39;graphics window<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot; &#39;prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                          &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                               &#39;do until key is pressed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      LINE -(RND * 639, RND * 479), RND * 16, BF      &#39;draw box filled<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                               &#39;end keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Center:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Centers text at a given row with color.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   row    - row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   MaxCol - maximum column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   fgkol  - foreground color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   bgkol  - background color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   text$  - text to print<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB Center (row, MaxCol, fgkol, bgkol, text$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   col = MaxCol \/ 2 - LEN(text$) \/ 2     &#39;define column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PrtText row, col, fgkol, bgkol, text$ &#39;print text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;CheckVGA:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Checks the highest VGA mode used in this program.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB CheckVGA ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   ON LOCAL ERROR GOTO BadMode &#39;print message in case of error<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   SCREEN.HIDE                 &#39;hide screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   SCREEN 13                   &#39;try to switch to VGA mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">EXIT SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">BadMode:                       &#39;routine to print error message<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   ScreenErrorMessage          &#39;print screen error message<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   END                         &#39;end program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;CircleDemo:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Circle demonstration.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB CircleDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Circle Demonstration&quot;                 &#39;graphics window<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot; &#39;prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                          &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                               &#39;do until key is pressed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      CIRCLE (RND * 639, RND * 479), RND * 300 + 10, RND * 16 &#39;draw circle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                               &#39;end keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;CircleFillDemo:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Circle fill with paint demonstration.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB CircleFillDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Circle Fill Demonstration&quot;            &#39;graphics window<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot; &#39;prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                          &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                               &#39;do until key is pressed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      xc = RND * 639                                  &#39;initialize X-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      yc = RND * 479                                  &#39;initialize Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      kolor = RND * 16                                &#39;initialize color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      CIRCLE (xc, yc), RND * 300 + 10, kolor          &#39;draw circle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PAINT (xc, yc), RND * 16, kolor                 &#39;fill circle with paint<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                               &#39;end keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Circles:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Circle program.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB Circles ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Color Circles Program&quot;                &#39;graphics window<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR radius = 10 TO 500 STEP 5                      &#39;radius sizes from 10-500<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      FOR xc = 2 TO 637 STEP 635                      &#39;X-coordinate values<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         yc = 0                                       &#39;initialize Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         FOR number = 1 TO 2                          &#39;for two circles<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CIRCLE (xc, yc), radius, 15 * RND + 1     &#39;draw circle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            yc = yc + 445                             &#39;increase Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         NEXT                                         &#39;next circle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      NEXT                                            &#39;next X-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                               &#39;next radius number<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot; &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                          &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   AnyKey$ = INPUT$(1)                                &#39;get any key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;ClearLines:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Clears a certain amount of lines in text mode.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   trow  - top row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   lcol  - left column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   brow  - bottom row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   rcol  - right column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   kolor - color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB ClearLines (trow, lcol, brow, rcol, kolor)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   line$ = STRING$(rcol - lcol - 1, 219)  &#39;define clearing line<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR row = trow TO brow                 &#39;from top to bottom<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PrtText row, lcol, kolor, 0, line$  &#39;print line<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                   &#39;next line<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;ClownFace:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Displays a clown face.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB ClownFace ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphMode 12, 80, 30                    &#39;set graphics mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphCenter 10, 80, 15, &quot;Press any key to view clown face:&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphCenter 11, 80, 15, &quot;Press any key when ready to return to menu.&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                               &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   AnyKey$ = INPUT$(1)                     &#39;get any key<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PutImage &quot;CLOWN16.SCR&quot;, 32500, 7, 0, 0  &#39;place image to screen<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                               &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   AnyKey$ = INPUT$(1)                     &#39;get any key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;DefaultPal:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Sets the default palette for this program for screen mode 13.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB DefaultPal ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DIM VPal(255) AS hues         &#39;allocate storage space<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   SCREEN 13                     &#39;change mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DEF SEG = VARSEG(VPal(0))     &#39;point to array&#39;s segment address<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      BLOAD &quot;VGA13.PAL&quot;, 0       &#39;load palette into array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DEF SEG                       &#39;point to BASIC&#39;s segment address<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   OUT <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C8, 0                  &#39;inform VGA<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR atrib = 0 TO 255          &#39;entire palette<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      OUT <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C9, VPal(atrib).red &#39;send red component<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      OUT <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C9, VPal(atrib).grn &#39;send green component<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      OUT <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C9, VPal(atrib).blu &#39;send blue component<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                          &#39;next attribute<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Delay:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Pauses execuation for a number of seconds or less.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   seconds - seconds or less to pause<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB delay (seconds!)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   StartTime! = TIMER                          &#39;initialize start time<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO                                          &#39;start loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP UNTIL (TIMER - StartTime!) &gt;= seconds! &#39;end loop if true<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;DemoMenu:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Creates menu for graphics demonstration.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB DemoMenu ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DefaultPal                                   &#39;load palette for images<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PutImage &quot;DEMOMEN1.IMG&quot;, 31200, 12, 56, 40   &#39;place first menu portion<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PutImage &quot;DEMOMEN2.IMG&quot;, 31200, 12, 317, 40  &#39;place second menu portion<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PutImage &quot;DEMOMEN3.IMG&quot;, 10000, 12, 56, 281  &#39;place third menu portion<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PutImage &quot;DEMOPRPT.IMG&quot;, 12500, 12, 124, 402 &#39;place prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;DemoRoutine:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Routine for graphics demonstration.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB DemoRoutine ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   ValStr$ = &quot;ABCDEFGHIJKLMabcdefghijklm&quot; &#39;valid input string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   done = FALSE                           &#39;loop controlling variable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE NOT done                      &#39;start main loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      DO                                  &#39;start choice loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         DemoMenu                         &#39;creates demonstration menu<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         KeyBuffer                        &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         a$ = INPUT$(1)                   &#39;get choice<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         SELECT CASE ASC(a$)              &#39;check choice<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 27                       &#39;user pressed Esc<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               done = TRUE                &#39;change loop controlling variable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 65, 97                   &#39;user pressed A or a<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               PixelDemo                  &#39;pixel demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 66, 98                   &#39;user pressed B or b<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               LineDemo                   &#39;line demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 67, 99                   &#39;user pressed C or c<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               BoxDemo                    &#39;box demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 68, 100                  &#39;user pressed D or d<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               BoxFillDemo                &#39;box fill demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 69, 101                  &#39;user pressed E or e<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               CircleDemo                 &#39;circle demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 70, 102                  &#39;user pressed F or f<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               CircleFillDemo             &#39;circle fill demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 71, 103                  &#39;user pressed G or g<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               ArcDemo                    &#39;arc demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 72, 104                  &#39;user pressed H or h<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               GetPutDemo                 &#39;get\/put demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 73, 105                  &#39;user pressed I or i<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               DrawDemo                   &#39;draw demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 74, 106                  &#39;user pressed J or j<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               LineTiles                  &#39;line tiles demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 75, 107                  &#39;user pressed K or k<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               PaintTiles                 &#39;paint tiles demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 76, 108                  &#39;user pressed L or l<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               PaletteChart               &#39;palette chart demonstration<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 77, 109                  &#39;user pressed M or m<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               AllDemos                   &#39;display all demonstrations<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         END SELECT                       &#39;end checking<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      LOOP UNTIL ASC(a$) = 27 OR INSTR(a$, ValStr$) &lt;&gt; 0 &#39;ending loop check<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                   &#39;end main loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   TextMode 80, 25, 0, 0, 7, 0            &#39;return to text mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;DrawDemo:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Demonstration for the DRAW statement.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB DrawDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Draw Demonstration&quot;                    &#39;graphics window<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot;  &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   box$ = &quot;u3r3d3l3&quot;                                   &#39;define box string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR number = 1 TO 255 STEP 5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      DRAW &quot;BM320,240;S=&quot; + VARPTR$(number)            &#39;position and set scale<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      FOR Angle = -360 TO 360 STEP 45                  &#39;turn angles<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         kolor = RND * 16                              &#39;set color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         DRAW &quot;TA=&quot; + VARPTR$(Angle) + &quot;C=&quot; + VARPTR$(kolor) + box$ &#39;draw box<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      NEXT                                             &#39;next angle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                                &#39;next scale height<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                           &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   AnyKey$ = INPUT$(1)                                 &#39;get any key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Ellipse:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Draws an ellipse.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB Ellipse ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Color Ellipses Program&quot;               &#39;graphics window<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot; &#39;prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                          &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                               &#39;do until key is pressed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      kolor = 15 * RND + 1                            &#39;initialize color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      FOR ratio! = .7 TO 0 STEP -.05                  &#39;for ratios .7 to 0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         CIRCLE (320, 223), 300, kolor, , , ratio!    &#39;draw ellipse<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      NEXT                                            &#39;next ratio value<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                               &#39;end keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;ExitMessage:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Prints the exit message for the program.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB ExitMessage ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   SCREEN.HIDE                          &#39;hide screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   TextMode 80, 25, 0, 0, 7, 0          &#39;clear screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LineBox 7, 8, 14, 71, 14, 1, 1, 3, 2 &#39;create box<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 7, 80, 15, 1, &quot; Exit Message &quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 9, 80, 10, 1, &quot;Thank you for using this demonstration program.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 10, 80, 10, 1, &quot;Look for my next creation in the near future.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 12, 80, 10, 1, &quot;Bye!!!&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PrtText 13, 1, 7, 0, &quot;&quot;               &#39;for location purpose<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   END                                   &#39;end program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;ExitRoutine:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Creates an exit routine for the program.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB ExitRoutine ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LineBox 9, 8, 15, 73, 10, 1, 1, 3, 2 &#39; create box<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 9, 80, 15, 1, &quot; Exit Prompt &quot;                              &#39; title<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 11, 80, 14, 1, &quot;Do you really want to exit this program?&quot;  &#39; prompt 1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 13, 80, 14, 1, &quot;Press <\/span><span style=\"color: #81A1C1\">&lt;Y&gt;<\/span><span style=\"color: #D8DEE9FF\"> for Yes or <\/span><span style=\"color: #81A1C1\">&lt;N&gt;<\/span><span style=\"color: #D8DEE9FF\"> for No:&quot;          &#39; prompt 2<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   done = FALSE                         &#39;initialize loop controlling variable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE NOT done                    &#39;start loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      KeyBuffer                         &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      ExitKey$ = INPUT$(1)              &#39;get key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      SELECT CASE ASC(ExitKey$)         &#39;check choice<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         CASE 27                        &#39;user pressed Esc key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            done = TRUE                 &#39;change variable to exit loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         CASE 89, 121                   &#39;user pressed Y or y<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            ExitMessage                 &#39;print exit message and end program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         CASE 78, 110                   &#39;user pressed N or n<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            done = TRUE                 &#39;change variable to exit loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      END SELECT                        &#39;end choice checking<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                 &#39;end loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Demo.SHOW                            &#39;display Demo form<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;FadePal:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Fades a 256 color palette out.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB FadePal ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PalRead    &#39;read the current palette colors<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PalStore   &#39;store the current palette colors<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PalFadeOut &#39;fades out all 256 colors to black<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;GCenter:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Centers text at a given row with color in graphics mode.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   row    - row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   MaxCol - maximum column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   fgkol  - foreground color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   text$  - text to print<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB GCenter (row, MaxCol, fgkol, text$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   col = MaxCol \/ 2 - LEN(text$) \/ 2 &#39;define column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GPrtText row, col, fgkol, text$   &#39;print text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;GetPutDemo:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Gets and puts an object on the screen.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB GetPutDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DIM image(500)                                      &#39;allocate space<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Get\/Put Demostration&quot;                  &#39;graphics window<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CIRCLE (320, 240), 15, 4                            &#39;draw circle one<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PAINT (320, 240), 4, 4                              &#39;paint circle one<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CIRCLE (320, 240), 7, 3                             &#39;draw circle two<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PAINT (320, 240), 3, 3                              &#39;paint circle two<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GET (305, 225)-(335, 255), image                    &#39;store image<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CLS                                                 &#39;clear screen<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot;  &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                           &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                                &#39;start keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      xc = RND * 600                                   &#39;initialize X-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      yc = RND * 400                                   &#39;initialize Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PUT (xc, yc), image, XOR                         &#39;place image<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      delay .2                                         &#39;delay<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PUT (xc, yc), image, XOR                         &#39;remove image<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                                &#39;end keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;GPrtText:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Prints text at a given location with color in graphics mode.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   row   - row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   col   - column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   fgkol - foreground color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   text$ - text to be printed to screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB GPrtText (row, col, fgkol, text$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOCATE row, col &#39;set location<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   COLOR fgkol     &#39;set color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PRINT text$;    &#39;print text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;GraphCenter:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Centers text in graphics mode at a given row with color.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   row    - row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   MaxCol - maximum column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   fgkol  - foreground color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   text$  - text to print<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB GraphCenter (row, MaxCol, fgkol, text$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   col = MaxCol \/ 2 - LEN(text$) \/ 2 &#39;define column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOCATE row, col                   &#39;position cursor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   COLOR fgkol                       &#39;set foreground color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PRINT text$;                      &#39;print text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;GraphMode:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Switches to a graphics mode.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   mode - graphics mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   wide - width of screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   rows - number of rows<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB GraphMode (mode, wide, rows)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   SCREEN mode      &#39;change screen mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   WIDTH wide, rows &#39;set dimensions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   VIEW             &#39;clear viewport<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CLS              &#39;clear screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;GraphWindow:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Creates a window in mode 12 (VGA) to view graphics.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   title$ - title of the graphics window<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB GraphWindow (title$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphMode 12, 80, 30          &#39;switch to graphics mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphCenter 1, 80, 15, title$ &#39;center title<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LINE (0, 0)-(639, 463), 7, B  &#39;outer border line<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LINE (0, 14)-(639, 14), 7     &#39;title dividing line<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   VIEW (2, 16)-(637, 461)       &#39;area to view graphics<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;HatMan:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Animation program.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB HatMan ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   REDIM HatMan1(800), HatMan2(800)                      &#39;allocate storage space<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Hat-Man Animation Program&quot;             &#39;display graphics window<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PutImage &quot;HATMAN1.IMG&quot;, 800, 12, 302, 215           &#39;place first hat-man<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GET (302, 215)-(339, 258), HatMan1                  &#39;store first hat-man<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CLS                                                 &#39;clear viewport<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PutImage &quot;HATMAN2.IMG&quot;, 800, 12, 302, 215           &#39;place second hat-man<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GET (302, 215)-(339, 258), HatMan2                  &#39;store first hat-man<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CLS                                                 &#39;clear viewport<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot;  &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                           &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   xc = 586                                            &#39;initialize X-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                                &#39;do until key is pressed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PUT (xc, 215), HatMan2, XOR                      &#39;place second hat-man<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      delay .3                                         &#39;pause<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PUT (xc, 215), HatMan2, XOR                      &#39;remove second hat-man<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PUT (xc - 38, 215), HatMan1, XOR                 &#39;place first hat-man<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      delay .3                                         &#39;pause<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PUT (xc - 38, 215), HatMan1, XOR                 &#39;remove first hat-man<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      xc = xc - 76                                     &#39;decrease X-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF xc &lt;= 16 THEN xc = 586                        &#39;check X-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                                &#39;end keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Intro:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Prints introduction words.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB Intro ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   TextMode 80, 25, 0, 0, 7, 1                          &#39;switch to text mode<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PrtText 5, 6, 15, 1, &quot;Introduction&quot;                  &#39;print title<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PrtText 6, 6, 7, 1, STRING$(69, 205)                 &#39;dividing line<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 24, 80, 15, 1, &quot;Press any key to continue...&quot; &#39;print prompt<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   row = 8                                              &#39;initialize start row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   RESTORE IntroData                                    &#39;set data pointer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR number = 1 TO 21                                 &#39;print nine lines<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      READ text$                                        &#39;read text data<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PrtText row, 6, 15, 1, text$                      &#39;print text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      row = row + 1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF number = 10 THEN                               &#39;check number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         row = 8                                        &#39;define starting row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         KeyBuffer                                      &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         AnyKey$ = INPUT$(1)                            &#39;get a key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         ClearLines 8, 6, 17, 77, 1                     &#39;clear lines<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      END IF                                            &#39;end checking<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                                 &#39;next line<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                            &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   AnyKey$ = INPUT$(1)                                  &#39;get a key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;KeyBuffer:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Clears the keyboard buffer of any keystrokes.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB KeyBuffer ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DEF SEG = 0              &#39;point to low memory address<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      POKE 1050, PEEK(1052) &#39;clear buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DEF SEG                  &#39;return to default segment address<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;LineBox:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Creates a box using ASCII line-drawing characters.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   trow  - top row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   lcol  - left column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   brow  - bottom row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   rcol  - right column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   fgkol - foreground color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   bgkol - background color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   mkol  - middle fill color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   skol  - shadow color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   btype - box type<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;       first type  - single across; single down<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;       second type - double across; double down<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;       third type  - single across; double down<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;       fourth type - double across; single down<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB LineBox (trow, lcol, brow, rcol, fgkol, bgkol, mkol, skol, btype)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   SELECT CASE btype &#39;define box characters<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      CASE 1         &#39;single across; single down<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         ulc = 218   &#39;   upper-left-corner<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         urc = 191   &#39;   upper-right-corner<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         blc = 192   &#39;   bottom-left-corner<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         brc = 217   &#39;   bottom-right-corner<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         ver = 179   &#39;   vertical character<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         hor = 196   &#39;   horizontal character<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      CASE 2         &#39;double across; double down<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         ulc = 201<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         urc = 187<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         blc = 200<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         brc = 188<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         ver = 186<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         hor = 205<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      CASE 3         &#39;single across; double down<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         ulc = 214<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         urc = 183<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         blc = 211<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         brc = 189<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         ver = 186<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         hor = 196<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      CASE 4         &#39;double across; single down<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         ulc = 213<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         urc = 184<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         blc = 211<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         brc = 190<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         ver = 179<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         hor = 205<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   END SELECT<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   TopRow$ = CHR$(ulc) + STRING$(rcol - lcol - 1, hor) + CHR$(urc) &#39;top row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   BotRow$ = CHR$(blc) + STRING$(rcol - lcol - 1, hor) + CHR$(brc) &#39;bottom row<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PrtText trow, lcol, fgkol, bgkol, TopRow$      &#39;top row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR row = trow + 1 TO brow - 1                 &#39;top to bottom<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PrtText row, lcol, fgkol, bgkol, CHR$(ver)  &#39;vertical character<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PrtText row, lcol + 1, mkol, 0, STRING$(rcol - lcol - 1, 219) &#39;mid-fill<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PrtText row, rcol, fgkol, bgkol, CHR$(ver)  &#39;vertical character<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PrtText row, rcol + 1, skol, 0, CHR$(219)   &#39;shadow character<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                           &#39;next line<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PrtText brow, lcol, fgkol, bgkol, BotRow$      &#39;bottom row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PrtText brow, rcol + 1, skol, 0, CHR$(219)     &#39;shadow character<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PrtText brow + 1, lcol + 1, skol, 0, STRING$(rcol - lcol + 1, 219) &#39;shadow<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;LineDemo:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Line demonstration.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB LineDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Line Demonstration&quot;                   &#39;graphics window<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot; &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                          &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                               &#39;do until key is pressed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      LINE -(RND * 639, RND * 479), RND * 16          &#39;draw line<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;LineTiles:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Creates line tile patterns.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB LineTiles ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DIM LTile(1 TO 12)                                  &#39;allocate storage space<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(1) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">HFFFF                                   &#39;line tile 1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(2) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">HEEEE                                   &#39;line tile 2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(3) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">HDDDD                                   &#39;line tile 3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(4) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H1111                                   &#39;line tile 4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(5) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">HFFCC                                   &#39;line tile 5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(6) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">HE724                                   &#39;line tile 6<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(7) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">HF0F0                                   &#39;line tile 7<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(8) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H6A6A                                   &#39;line tile 8<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(9) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">HABCD                                   &#39;line tile 9<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(10) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H45AC                                  &#39;line tile 10<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(11) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">HBFBF                                  &#39;line tile 11<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LTile(12) = <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H4545                                  &#39;line tile 12<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;User-Defined Line Tile Patterns&quot;       &#39;graphics window<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   row = 4                                             &#39;initialize row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   yc = 40                                             &#39;initialize Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR number = 1 TO 12                                &#39;twelve line tiles<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      LINE (50, yc)-(550, yc), 2, , LTile(number)      &#39;draw line with tile<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      GPrtText row, 70, 15, STR$(number)               &#39;print tile number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      row = row + 2                                    &#39;increase row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      yc = yc + 32                                     &#39;increase Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                                &#39;next tile number<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot;  &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                           &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   AnyKey$ = INPUT$(1)                                 &#39;get a key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Logo:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Create graphical logo.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB Logo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   SCREEN.HIDE                          &#39;hide screen<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DefaultPal                           &#39;define palette for mode 13<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PutImage &quot;LOGO.SCR&quot;, 32500, 13, 0, 0 &#39;load and place image<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                            &#39;clear keyborad buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   AnyKey$ = INPUT$(1)                  &#39;get any keystroke<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   TextMode 80, 25, 0, 0, 7, 0          &#39;switch to text mode<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   SCREEN.SHOW                          &#39;hide screen to show form<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Orbit:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Rotates a ball in a circle.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB Orbit ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DIM planet(500)                                     &#39;allocate storage space<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Orbit Program&quot;                         &#39;display grahics window<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CIRCLE (320, 240), 10, 1                            &#39;draw circle to move<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PAINT (320, 240), 3, 1                              &#39;paint that circle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GET (309, 229)-(331, 251), planet                   &#39;store image<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR number = 1 TO 3000                              &#39;place 3000 pixels<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PSET (RND * 639, RND * 479), 7                   &#39;put pixel<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                                &#39;next number<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CIRCLE (320, 240), 161, 2, , , .13                  &#39;draw ring<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CIRCLE (320, 240), 12, 14                           &#39;draw yellow circle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PAINT (320, 240), 14, 14                            &#39;paint yellow circle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot;  &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                           &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   x# = -PI                                            &#39;initialize turn angle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                                &#39;do until key is pressed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      r# = 160 * COS(x#)                               &#39;initialize radius<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      y# = SIN(x#)                                     &#39;initialize Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      yo# = y# \/ (PI# \/ 60)                            &#39;Y-coordinate offset<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PUT (317 + r#, 228 + yo#), planet, XOR           &#39;place planet to screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      FOR pause = 1 TO 1300                            &#39;pause<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      NEXT                                             &#39;next pause number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PUT (317 + r#, 228 + yo#), planet, XOR           &#39;remover image<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      x# = x# + .01                                    &#39;increase PI angle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF x# &gt;= PI THEN x# = -PI                        &#39;check PI angle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                                &#39;end keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;PaintTiles:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Displays tile patterns in VGA mode.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB PaintTiles ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;User-Defined Paint Tile Patterns&quot;     &#39;create graphics window<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   row = 9                                            &#39;initialize row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   number = 1                                         &#39;initialize tile number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR yc = 24 TO 366 STEP 135                        &#39;Y positions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      col = 10                                        &#39;initialize column number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      FOR xc = 30 TO 580 STEP 150                     &#39;X positions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         LINE (xc, yc)-(xc + 100, yc + 85), 7, B      &#39;draw box<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         PAINT (xc + 5, yc + 5), TilePat$(number), 7  &#39;paint box<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         GPrtText row, col, 15, STR$(number)          &#39;print tile number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         col = col + 19                               &#39;increase column number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         number = number + 1                          &#39;increase tile number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      NEXT                                            &#39;next X position<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      row = row + 9                                   &#39;increase row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                               &#39;next Y position<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">                                                       <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot; &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                          &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   AnyKey$ = INPUT$(1)                                &#39;get any key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;PaletteChart:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Creates a chart of palette colors.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB PaletteChart ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphMode 13, 40, 25                                   &#39;graphics mode<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphCenter 2, 40, 7, &quot;PALETTE CHART&quot;                  &#39;print title<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR yc = 54 TO 144 STEP 6                              &#39;Y-coordinate values<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      FOR xc = 8 TO 294 STEP 19                           &#39;X-coordinate values<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         LINE (xc, yc)-(xc + 17, yc + 4), kolor, BF       &#39;draw line<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         kolor = kolor + 1                                &#39;increment kolor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      NEXT                                                &#39;next X-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                                   &#39;next Y-coordinate<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphCenter 24, 40, 15, &quot;Press any key to continue...&quot; &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                              &#39;clear key buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   AnyKey$ = INPUT$(1)                                    &#39;get a key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;PalFadeOut:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Fade all 256 colors to black.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB PalFadeOut ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR numberofshade = 0 TO 63                  &#39;64 shades<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      FOR colornum = 0 TO 255                   &#39;256 colors<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         OUT <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C8, colornum                    &#39;place color into VGA port<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         FOR attribute = 1 TO 3                 &#39;3 attributes<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            OUT <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C9, Pal(colornum, attribute) &#39;send color components<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            IF Pal(colornum, attribute) &gt; 0 THEN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               Pal(colornum, attribute) = Pal(colornum, attribute) - 1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            END IF<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         NEXT attribute                         &#39;next attribute<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      NEXT colornum                             &#39;next color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT numberofshade<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;PalRead:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Read the color values currently stored in the video card.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB PalRead ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR colornum = 0 TO 255          &#39;read 256 colors<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      OUT <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C7, colornum           &#39;color number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      Pal(colornum, 1) = INP(<\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C9) &#39;get red value from video card<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      Pal(colornum, 2) = INP(<\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C9) &#39;get green value from video card<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      Pal(colornum, 3) = INP(<\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C9) &#39;get blue value from video card<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT colornum                    &#39;next color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;PalStore:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Stores the current palette.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB PalStore ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   &#39;Because we&#39;ll be changing the values in the video card, we&#39;ll want to<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   &#39;store those present in the array, OriginalPal().  This way, after making<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   &#39;whatever changes in the colors, we can always fade back to the older<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   &#39;palette we saved here.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR colornum = 0 TO 255                  &#39;256 color palette<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      OUT <\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C7, colornum                   &#39;color number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      OriginalPal(colornum, 1) = INP(<\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C9) &#39;get red value from video card<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      OriginalPal(colornum, 2) = INP(<\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C9) &#39;get green value from video card<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      OriginalPal(colornum, 3) = INP(<\/span><span style=\"color: #D8DEE9\">&amp;<\/span><span style=\"color: #D8DEE9FF\">H3C9) &#39;get blue value from video card<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT colornum                            &#39;next color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;PixelDemo:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Pixel demonstration.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB PixelDemo ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Pixel Demonstration&quot;                  &#39;graphics window<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot; &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                          &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                               &#39;do until key is pressed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PSET (RND * 639, RND * 479), RND * 16           &#39;place pixel<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PRESET (RND * 639, RND * 479)                   &#39;place or remove pixel<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;PrtText:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Prints text at a given location with color.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   row   - row<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   col   - column<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   fgkol - foreground color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   bgkol - background color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   text$ - text to be printed to screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB PrtText (row, col, fgkol, bgkol, text$)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOCATE row, col    &#39;set location<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   COLOR fgkol, bgkol &#39;set color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PRINT text$;       &#39;print text<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;PutImage:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Loads and places an image on the screen.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   filename$ - filename<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   asize     - array size<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   mode      - screen mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   xc        - x-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   yc        - y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB PutImage (filename$, asize, mode, xc, yc)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   SCREEN mode                          &#39;set proper screen mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   REDIM image(asize)                   &#39;allocate storage for image<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DEF SEG = VARSEG(image(0))           &#39;point to image&#39;s segment address<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      BLOAD filename$, VARPTR(image(0)) &#39;load image into array<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DEF SEG                              &#39;point to BASIC&#39;s segment address<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PUT (xc, yc), image, PSET            &#39;place image onto screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;SampleProgRoutine:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Creates routine for sample programs&#39; menu.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB SampleProgRoutine ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   done = FALSE                                 &#39;loop controlling variable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE NOT done                            &#39;start main loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      DO                                        &#39;start choice loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         DefaultPal                             &#39;set default image palette<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         PutImage &quot;PROGMENU.SCR&quot;, 32500, 13, 0, 0  &#39; display menu screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         KeyBuffer                              &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         a$ = INPUT$(1)                         &#39;get choice<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         SELECT CASE ASC(a$)                    &#39;check choice<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 27                             &#39;user pressed <\/span><span style=\"color: #81A1C1\">&lt;Esc&gt;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               done = TRUE                      &#39;change controlling variable<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 49                             &#39;user pressed 1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               SunShine                         &#39;sunshine program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 50                             &#39;user pressed 2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               Ellipse                          &#39;color ellipses program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 51                             &#39;user pressed 3<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               Circles                          &#39;color circles program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 52                             &#39;user pressed 4<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               Orbit                            &#39;rotates a ball<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 53                             &#39;user pressed 5<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               HatMan                           &#39;hat-man animation program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 54                             &#39;user pressed 6<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               Triangle                         &#39;triangle lost in space program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 55                             &#39;user pressed 7<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               SpaceShip                        &#39;space ship program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">            CASE 56                             &#39;user pressed 8<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">               ClownFace                        &#39;clown face program<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         END SELECT                             &#39;end checking<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      LOOP UNTIL ASC(a$) = 27 OR (ASC(a$) &gt; 0 AND ASC(a$) &lt; 9)  &#39; check choice<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                         &#39;end main loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   TextMode 80, 25, 0, 0, 7, 0                  &#39;switch to text mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;ScreenErrorMessage:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Prints screen error message.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB ScreenErrorMessage ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   TextMode 80, 25, 0, 0, 7, 0           &#39;switch to text mode<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LineBox 8, 9, 14, 71, 15, 4, 4, 3, 2  &#39;create box<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 8, 80, 15, 4, &quot; Screen Error Message &quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 10, 80, 14, 4, &quot;Your computer does not support VGA graphics.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 11, 80, 14, 4, &quot;Sorry, but this program depends on it.&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Center 12, 80, 14, 4, &quot;Bye!!!&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;SpaceShip:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Flys a space ship across the screen.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB SpaceShip ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   REDIM image1(750), image2(750)                         &#39;allocate storage<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DefaultPal                                             &#39;set image palette<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PutImage &quot;SHIP1.IMG&quot;, 750, 13, 0, 0                    &#39;place image one<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GET (0, 0)-(48, 29), image1                            &#39;store image one<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   PutImage &quot;SHIP2.IMG&quot;, 750, 13, 50, 0                   &#39;place image two<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GET (50, 0)-(98, 29), image2                           &#39;store image two<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CLS                                                    &#39;clear screen<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphCenter 2, 40, 7, &quot;Flying Saucer Program&quot;          &#39;graphics window<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphCenter 24, 40, 15, &quot;Press any key to continue...&quot; &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                              &#39;clear key buffer<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   xc = 200                                               &#39;initialize X-coor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   yc = 100                                               &#39;initialize Y-coor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                                   &#39;do until keypress<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      ImageNum = RND * 1                                  &#39;initialize image num<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF ImageNum = 0 THEN                                &#39;check image number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         PUT (xc, yc), image1, XOR                        &#39;place image one<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         delay .21                                        &#39;delay<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         PUT (xc, yc), image1, XOR                        &#39;remove image one<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      ELSE                                                &#39;else<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         PUT (xc, yc), image2, XOR                        &#39;place image two<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         delay .21                                        &#39;delay<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         PUT (xc, yc), image2, XOR                        &#39;remove image two<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      END IF                                              &#39;end image check<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      ry = RND * 1                                        &#39;assign y-direction<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF ry = 0 THEN yc = yc - 7 ELSE yc = yc + 7         &#39;y goes up or down<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      xc = xc - 7                                         &#39;decrement X-coor<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF xc &lt;= 1 THEN xc = 260                            &#39;check X-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF yc &lt;= 1 THEN yc = 160                            &#39;check Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF yc &gt;= 160 THEN yc = 1                            &#39;check Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                                   &#39;end keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;SunShineProg:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Rotates box to create sun shine picture.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB SunShine ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Sunshine Reflection Program&quot;          &#39;graphics window<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   box$ = &quot;R635D445L635U445&quot;                          &#39;box string<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR number = 90 TO 1 STEP -1                       &#39;start at 90 degrees<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      DRAW &quot;BM2,16 C14 TA=&quot; + VARPTR$(Angle) + box$   &#39;draw box at angle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      Angle = Angle + 1                               &#39;increase angle number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                               &#39;next box number<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot; &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                          &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   AnyKey$ = INPUT$(1)                                &#39;get any key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;TextMode:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Switches to text mode.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;parameters:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   wide  - width of screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   rows  - number of rows<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   apage - active page<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   vpage - visual page<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   bgkol - background color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   fgkol - foreground color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB TextMode (wide, rows, apage, vpage, fgkol, bgkol)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   SCREEN 0, 1, apage, vpage &#39;change screen mode<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   WIDTH wide, rows          &#39;set screen dimensions<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   COLOR fgkol, bgkol        &#39;set color<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   CLS                       &#39;clear screen<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;TilePatterns:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Define tile patterns.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB TilePatterns ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DIM row$(1 TO 8)                    &#39;temporary row holder<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   RESTORE TilePatternData             &#39;set pointer<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR TileNumber = 1 TO 14            &#39;14 tile patterns<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      temp$ = &quot;&quot;                       &#39;set temp variable to null<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      FOR number = 1 TO 8              &#39;eight rows create one tile<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         READ tn1, tn2, tn3, tn4       &#39;read tile number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         row$(number) = CHR$(tn1) + CHR$(tn2) + CHR$(tn3) + CHR$(tn4)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">         temp$ = temp$ + row$(number)  &#39;increment temporary holder<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      NEXT                             &#39;next number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      TilePat$(TileNumber) = temp$     &#39;define tile pattern<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                &#39;next tile number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;Triangle:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">&#39;   Rotates a triangle through space.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">SUB Triangle ()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   RANDOMIZE TIMER                                     &#39;randomize generator<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   REDIM image(4500)                                     &#39;allocate space<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GraphWindow &quot;Triangle Lost In Space Program&quot;        &#39;display graphics window<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   Tri$ = &quot;BM320,240C14L30M+15,-35NM+15,+35BD5P14,14&quot;  &#39;triangle string<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   RESTORE TriangleData                                &#39;set data pointer<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   number = 0                                          &#39;initialize image number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR Angle = 0 TO 315 STEP 45                        &#39;turn angles<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      READ XC1, YC1, XC2, YC2                          &#39;read coordinates<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      DRAW &quot;TA=&quot; + VARPTR$(Angle) + Tri$               &#39;draw triangle at angle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      GET (XC1, YC1)-(XC2, YC2), image(number)         &#39;store triangle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      CLS                                              &#39;clear viewport<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      number = number + 500                            &#39;increase image number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                                &#39;next angle<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   FOR number = 1 TO 3000                              &#39;3000 pixels to place<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PSET (RND * 639, RND * 479), 7                   &#39;place random pixel<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   NEXT                                                &#39;next number<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   GCenter 30, 80, 15, &quot;Press any key to continue...&quot;  &#39;print prompt<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   KeyBuffer                                           &#39;clear keyboard buffer<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   xc = 580                                            &#39;initialize X-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   yc = 215                                            &#39;initialize Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   ImageNum = 0                                        &#39;initialize image number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   DO WHILE INKEY$ = &quot;&quot;                                &#39;do until key is pressed<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PUT (xc, yc), image(ImageNum), XOR               &#39;place image<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      delay .21                                        &#39;pause<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      PUT (xc, yc), image(ImageNum), XOR               &#39;remove image<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      rx = RND * 1                                     &#39;initialize X-direction<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      ry = RND * 1                                     &#39;initialize Y-direction<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF rx = 0 THEN xc = xc - 15 ELSE xc = xc + 15    &#39;check X-direction<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF ry = 0 THEN yc = yc - 15 ELSE yc = yc + 15    &#39;check Y-direction<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      ImageNum = ImageNum + 500                        &#39;increase image number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF ImageNum &gt;= 4000 THEN ImageNum = 0            &#39;check image number<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF xc &lt;= 5 THEN xc = 580                         &#39;check X-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF yc &lt;= 5 THEN yc = 395                         &#39;check Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF xc &gt;= 580 THEN xc = 5                         &#39;check X-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">      IF yc &gt;= 395 THEN yc = 5                         &#39;check Y-coordinate<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">   LOOP                                                &#39;end keypress loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">END SUB<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Related<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Below are related items to The Graphics Power Diskette.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.techronology.com\/main\/blog\/bubble-dip-match-game-scores\/\">Bubble Dip Match Game Scores<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.techronology.com\/main\/blog\/create-pac-man-figure-in-artplotty-grid-how-to\/\">Create Pac-Man Figure in Artplotty Grid \u2013 How to<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.techronology.com\/main\/blog\/create-random-titles-and-meta-descriptions-using-php\/\">Create Random Titles and Meta Descriptions using PHP<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.techronology.com\/main\/blog\/design-the-shark-worm-in-powerpoint-how-to-video\/\">Design the Shark Worm in PowerPoint \u2013 How to Video<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.techronology.com\/main\/blog\/draw-statement-basic-reference\/\">Draw Statement \u2013 BASIC Reference<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.techronology.com\/main\/blog\/flyshapes-gallery\/\">FlyShapes Gallery<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.techronology.com\/main\/blog\/flywheel-design-samples\/\">Flywheel Design Samples<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.techronology.com\/main\/blog\/linux-lab-reports\/\">Linux Lab Reports<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.techronology.com\/main\/blog\/design-fancy-square-faces-flywheel-in-powerpoint-how-to\/\">Make Fancy Square Faces Flywheel in PowerPoint \u2013 How to<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.techronology.com\/main\/blog\/techronology-technews\/\">Techronology TechNews<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.techronology.com\/main\/blog\/time-delay-code-in-visual-basic-for-applications\/\">Time Delay Code in Visual Basic for Applications<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Overview of The Graphics Power Diskette So, The Graphics Power Diskette (or GPD) demonstrates of some creative elements that you can produce in the BASIC language. All in all, it is a 1996 creation. GPD was developed in Microsoft Visual Basic for DOS (or VB for DOS), with QuickBASIC code in the backend. Yes, I &hellip;<\/p>\n","protected":false},"author":3,"featured_media":131,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[3,7,14],"tags":[11,9,8,30,12],"class_list":["post-14","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-coding","category-design","category-video","tag-art","tag-basic","tag-demo","tag-flyshapes","tag-graphics"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>The Graphics Power Diskette (1996 Demo) - Techronology blog<\/title>\n<meta name=\"description\" content=\"The Graphics Power Diskette is a 1996 demonstration of some creative elements that you can produce in the BASIC language - Techronology\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"The Graphics Power Diskette (1996 Demo) - Techronology blog\" \/>\n<meta property=\"og:description\" content=\"The Graphics Power Diskette is a 1996 demonstration of some creative elements that you can produce in the BASIC language - Techronology\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/\" \/>\n<meta property=\"og:site_name\" content=\"Techronology blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/realtechronology\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-09T20:01:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-12T05:42:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-featimg-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"600\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alex Shaw III\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@techronology\" \/>\n<meta name=\"twitter:site\" content=\"@techronology\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alex Shaw III\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/\"},\"author\":{\"name\":\"Alex Shaw III\",\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/#\\\/schema\\\/person\\\/b15fc50cfcedbda263dfeaf7b21b269c\"},\"headline\":\"The Graphics Power Diskette (1996 Demo)\",\"datePublished\":\"2026-08-09T20:01:29+00:00\",\"dateModified\":\"2026-09-12T05:42:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/\"},\"wordCount\":526,\"publisher\":{\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/graphpow-featimg-1.png\",\"keywords\":[\"Art\",\"BASIC\",\"Demo\",\"FlyShapes\",\"Graphics\"],\"articleSection\":[\"Coding\",\"Design\",\"Video\"],\"inLanguage\":\"en\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/\",\"url\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/\",\"name\":\"The Graphics Power Diskette (1996 Demo) - Techronology blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/graphpow-featimg-1.png\",\"datePublished\":\"2026-08-09T20:01:29+00:00\",\"dateModified\":\"2026-09-12T05:42:31+00:00\",\"description\":\"The Graphics Power Diskette is a 1996 demonstration of some creative elements that you can produce in the BASIC language - Techronology\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/graphpow-featimg-1.png\",\"contentUrl\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/graphpow-featimg-1.png\",\"width\":600,\"height\":400},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/the-graphics-power-diskette-1996-demo\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"The Graphics Power Diskette (1996 Demo)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/\",\"name\":\"Techronology blog\",\"description\":\"We love creating software tools, online apps, and games\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/#organization\"},\"alternateName\":\"Techronology\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/#organization\",\"name\":\"Techronology\",\"url\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/techronology-icon.png\",\"contentUrl\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/techronology-icon.png\",\"width\":600,\"height\":600,\"caption\":\"Techronology\"},\"image\":{\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/realtechronology\",\"https:\\\/\\\/x.com\\\/techronology\",\"https:\\\/\\\/www.instagram.com\\\/techronology\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/#\\\/schema\\\/person\\\/b15fc50cfcedbda263dfeaf7b21b269c\",\"name\":\"Alex Shaw III\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/369ff2919991800995dcea3e936d48d43fe12a5867119499f945012911b6f523?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/369ff2919991800995dcea3e936d48d43fe12a5867119499f945012911b6f523?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/369ff2919991800995dcea3e936d48d43fe12a5867119499f945012911b6f523?s=96&d=mm&r=g\",\"caption\":\"Alex Shaw III\"},\"url\":\"https:\\\/\\\/www.techronology.com\\\/main\\\/blog\\\/author\\\/ashaw3rd\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"The Graphics Power Diskette (1996 Demo) - Techronology blog","description":"The Graphics Power Diskette is a 1996 demonstration of some creative elements that you can produce in the BASIC language - Techronology","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/","og_locale":"en_US","og_type":"article","og_title":"The Graphics Power Diskette (1996 Demo) - Techronology blog","og_description":"The Graphics Power Diskette is a 1996 demonstration of some creative elements that you can produce in the BASIC language - Techronology","og_url":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/","og_site_name":"Techronology blog","article_publisher":"https:\/\/www.facebook.com\/realtechronology","article_published_time":"2026-08-09T20:01:29+00:00","article_modified_time":"2026-09-12T05:42:31+00:00","og_image":[{"width":600,"height":400,"url":"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-featimg-1.png","type":"image\/png"}],"author":"Alex Shaw III","twitter_card":"summary_large_image","twitter_creator":"@techronology","twitter_site":"@techronology","twitter_misc":{"Written by":"Alex Shaw III","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/#article","isPartOf":{"@id":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/"},"author":{"name":"Alex Shaw III","@id":"https:\/\/www.techronology.com\/main\/blog\/#\/schema\/person\/b15fc50cfcedbda263dfeaf7b21b269c"},"headline":"The Graphics Power Diskette (1996 Demo)","datePublished":"2026-08-09T20:01:29+00:00","dateModified":"2026-09-12T05:42:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/"},"wordCount":526,"publisher":{"@id":"https:\/\/www.techronology.com\/main\/blog\/#organization"},"image":{"@id":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/#primaryimage"},"thumbnailUrl":"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-featimg-1.png","keywords":["Art","BASIC","Demo","FlyShapes","Graphics"],"articleSection":["Coding","Design","Video"],"inLanguage":"en"},{"@type":"WebPage","@id":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/","url":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/","name":"The Graphics Power Diskette (1996 Demo) - Techronology blog","isPartOf":{"@id":"https:\/\/www.techronology.com\/main\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/#primaryimage"},"image":{"@id":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/#primaryimage"},"thumbnailUrl":"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-featimg-1.png","datePublished":"2026-08-09T20:01:29+00:00","dateModified":"2026-09-12T05:42:31+00:00","description":"The Graphics Power Diskette is a 1996 demonstration of some creative elements that you can produce in the BASIC language - Techronology","breadcrumb":{"@id":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/"]}]},{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/#primaryimage","url":"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-featimg-1.png","contentUrl":"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-featimg-1.png","width":600,"height":400},{"@type":"BreadcrumbList","@id":"https:\/\/www.techronology.com\/main\/blog\/the-graphics-power-diskette-1996-demo\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.techronology.com\/main\/blog\/"},{"@type":"ListItem","position":2,"name":"The Graphics Power Diskette (1996 Demo)"}]},{"@type":"WebSite","@id":"https:\/\/www.techronology.com\/main\/blog\/#website","url":"https:\/\/www.techronology.com\/main\/blog\/","name":"Techronology blog","description":"We love creating software tools, online apps, and games","publisher":{"@id":"https:\/\/www.techronology.com\/main\/blog\/#organization"},"alternateName":"Techronology","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.techronology.com\/main\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":"Organization","@id":"https:\/\/www.techronology.com\/main\/blog\/#organization","name":"Techronology","url":"https:\/\/www.techronology.com\/main\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/www.techronology.com\/main\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/techronology-icon.png","contentUrl":"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/techronology-icon.png","width":600,"height":600,"caption":"Techronology"},"image":{"@id":"https:\/\/www.techronology.com\/main\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/realtechronology","https:\/\/x.com\/techronology","https:\/\/www.instagram.com\/techronology"]},{"@type":"Person","@id":"https:\/\/www.techronology.com\/main\/blog\/#\/schema\/person\/b15fc50cfcedbda263dfeaf7b21b269c","name":"Alex Shaw III","image":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/secure.gravatar.com\/avatar\/369ff2919991800995dcea3e936d48d43fe12a5867119499f945012911b6f523?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/369ff2919991800995dcea3e936d48d43fe12a5867119499f945012911b6f523?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/369ff2919991800995dcea3e936d48d43fe12a5867119499f945012911b6f523?s=96&d=mm&r=g","caption":"Alex Shaw III"},"url":"https:\/\/www.techronology.com\/main\/blog\/author\/ashaw3rd\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/www.techronology.com\/main\/blog\/wp-content\/uploads\/2026\/08\/graphpow-featimg-1.png","_links":{"self":[{"href":"https:\/\/www.techronology.com\/main\/blog\/wp-json\/wp\/v2\/posts\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.techronology.com\/main\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.techronology.com\/main\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.techronology.com\/main\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.techronology.com\/main\/blog\/wp-json\/wp\/v2\/comments?post=14"}],"version-history":[{"count":57,"href":"https:\/\/www.techronology.com\/main\/blog\/wp-json\/wp\/v2\/posts\/14\/revisions"}],"predecessor-version":[{"id":951,"href":"https:\/\/www.techronology.com\/main\/blog\/wp-json\/wp\/v2\/posts\/14\/revisions\/951"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.techronology.com\/main\/blog\/wp-json\/wp\/v2\/media\/131"}],"wp:attachment":[{"href":"https:\/\/www.techronology.com\/main\/blog\/wp-json\/wp\/v2\/media?parent=14"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.techronology.com\/main\/blog\/wp-json\/wp\/v2\/categories?post=14"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.techronology.com\/main\/blog\/wp-json\/wp\/v2\/tags?post=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}