' ' ' ' ' SHAPES 2.2 ' BY: ADAM SMITH '_____________________________________________________________________________ ' This is a screen saver-type program that is customizable to your whims. ' It can choose to draw a rectangle or a triangle or a logo, but more shapes ' are coming soon. To start the program, press F5, to quit it at any time, ' unless you are in configuration, just press any key. Hope you like it. '_____________________________________________________________________________ ' ' PRESS F1 WHILE RUNNING TO CONFIGURE ' ' ' Click the File menu and then Exit to quit. ' ' ' ' ' ' ' ' DECLARE SUB SecretScreen () DECLARE SUB LOGO2 (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) DECLARE SUB BOX (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) DECLARE SUB CNFG (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) DECLARE SUB TRIANGLE (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) DECLARE SUB STRTUP (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WMESSAGE$, WSTRIPES, BKGCLR) DECLARE SUB MSGE (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) DECLARE SUB LOGO (WDBG, WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) DECLARE SUB ALT () CALL STRTUP(WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WMESSAGE$, WSTRIPES, BKGCLR) IF WSTARTUPLOGO = 2 THEN GOTO NOLOGO CALL LOGO(WDBG, WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) NOLOGO: KEY 1, "‘" LOCATE , , 0 COLOR 0, 0 CLS PickShape: IF DS > 10 THEN DS = 0 RANDOMIZE TIMER SHPE = INT(RND * 12) + 1 IF (WSCRCLR = 0) AND (WBOXES = 2) AND (WTRIANGLES = 2) AND (WMESSAGES = 2) AND (WLOGOS = 2) THEN SHPE = 1000 IF WDBG = 42 THEN LOCATE 1, 1 COLOR 15, 0 PRINT "SHPE:"; SHPE, " WSCRCLR:"; WSCRCLR; LOCATE 2, 1 PRINT "WBOXES:"; WBOXES; " WTRIANGLES:"; WTRIANGLES; " " LOCATE 3, 1 PRINT "WMESSAGES:"; WMESSAGES; " WLOGOS:"; WLOGOS; " " LOCATE 4, 1 PRINT "WSTARTUPLOGO:"; WSTARTUPLOGO; "WSTRIPES:"; WSTRIPES; " " COLOR , BKGCLR END IF SELECT CASE SHPE CASE 1 TO 3 IF WBOXES = 2 THEN GOTO SKP1 CALL BOX(WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) DS = DS + 1 CASE 4 TO 6 IF WTRIANGLES = 2 THEN GOTO SKP1 CALL TRIANGLE(WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) DS = DS + 1 CASE 7 TO 9 IF WMESSAGES = 2 THEN GOTO SKP1 CALL MSGE(WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) DS = DS + 1 CASE 10 TO 12 IF WLOGOS = 2 THEN GOTO SKP1 CALL LOGO2(WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) DS = DS + 1 CASE 1000 CALL SecretScreen END SELECT IF DS <> 10 THEN GOTO SKP1 A = INT(RND * 100) IF A < WSCRCLR THEN BKGCLR = INT(RND * 16) COLOR , BKGCLR: CLS END IF SKP1: A$ = INKEY$ IF A$ = "" THEN GOTO PickShape ELSEIF A$ = "‘" THEN GOTO Trap END IF COLOR 7, 0: CLS : SYSTEM Trap: CALL CNFG(WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) GOTO PickShape HANDLER: IF ERR = 53 THEN CLOSE OPEN "SHAPES.INI" FOR OUTPUT AS #1 WSCRCLR = 10: WBOXES = 1: WTRIANGLES = 1: WMESSAGES = 1: WLOGOS = 1: WSTARTUPLOGO = 1: WSTRIPES = 2: WMESSAGE$ = "*PRESS [F1] TO CONFIGURE!*" WRITE #1, WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$ CLOSE RESUME ELSE CLOSE COLOR 0, 0: CLS COLOR 0, 7 PRINT "**** ERROR ****" COLOR 7, 0 PRINT : PRINT "The file SHAPES.INI is corrupted. Do you want me to delete it and" PRINT "rebuild it for you? (Y/N)" DO A$ = INKEY$ LOOP UNTIL (UCASE$(A$) = "Y") OR (UCASE$(A$) = "N") IF UCASE$(A$) = "Y" THEN W = 1 ELSE W = 2 SELECT CASE W CASE 1 PRINT : PRINT : PRINT "Working, stand-by." KILL "SHAPES.INI" RUN CASE 2 PRINT : PRINT : PRINT "Shapes cannot run with a corrupted INI file." SYSTEM END SELECT END IF 'Find the secret screen savers! Hit the ' button on the title screen! SUB ALT COLOR 0, 2: CLS LOCATE 13, 22 RANDOMIZE TIMER A = INT(RND * 3) PRINT "Welcome to Adam's Alternate Screen Savers" LOCATE 14, 16 PRINT "A world of twinkling nonsense awaits... loading <"; A; ">" CONST SNDA = 337 CONST SNDB = 737 CONST SNDC = 537 FOR I = 0 TO 300 STEP 5 SOUND SNDA - I, .25 SOUND SNDB - I, .25 SOUND SNDC - I, .25 NEXT I RANDOMIZE TIMER SELECT CASE A CASE 0 SCREEN 7 DO WHILE INKEY$ = "" RANDOMIZE TIMER A = INT(RND * 9) + 1 IF A = 1 THEN X = X - 1: Y = Y + 1 IF A = 2 THEN Y = Y + 1 IF A = 3 THEN X = X + 1: Y = Y + 1 IF A = 4 THEN Y = Y - 1 IF A = 5 THEN X = X: Y = Y IF A = 6 THEN X = X + 1 IF A = 7 THEN X = X - 1: Y = Y - 1 IF A = 8 THEN Y = Y - 1 IF A = 9 THEN X = X + 1: Y = Y - 1 IF X = 321 THEN X = 0 IF X = -1 THEN X = 320 IF Y = 200 THEN Y = 0 IF Y = -1 THEN Y = 200 COLOR INT(RND * 16) PSET (X, Y) p1 = INT(RND * 15) + 1 p2 = INT(RND * 15) + 1 PALETTE p1, p2 LOOP FOR Z = 0 TO 15 PALETTE Z, Z NEXT Z COLOR 7, 0 SYSTEM CASE 1 DEFINT A-Z DIM iMAGE(0, 1000) SCREEN 7 COLOR 15, 0 CLS REDO: FOR I = 1 TO 1000 A = RND * 20 b = RND * 20 c = RND * 15 COLOR c PSET (A, b) NEXT I FOR Z = 1 TO 1000 X = RND * 299 Y = RND * 179 GET (0, 0)-(20, 20), iMAGE PUT (X, Y), iMAGE IF INKEY$ <> "" THEN SYSTEM NEXT Z GOTO REDO CASE 2 SCREEN 7 CLS FOR A% = 0 TO 200 FOR b% = 0 TO 320 c = INT(RND * 16) PSET (b%, A%), c IF INKEY$ <> "" THEN GOTO GoodBye NEXT b% NEXT A% DO p1 = INT(RND * 16) p2 = INT(RND * 16) PALETTE p1, p2 LOOP WHILE INKEY$ = "" GoodBye: SYSTEM END SELECT SYSTEM END SUB DEFSNG A-Z SUB BOX (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) Again: RANDOMIZE TIMER X1 = INT(RND * 11) + 1 ReCalc1: X2 = INT(RND * 22) + 1 IF X2 < 12 THEN GOTO ReCalc1 Y1 = INT(RND * 39) + 1 ReCalc2: Y2 = INT(RND * 78) + 1 IF Y2 < 40 THEN GOTO ReCalc2 WHILE c < 9 c = INT(RND * 15) + 1 WEND CHTR = INT(RND * 4) + 1 SELECT CASE CHTR CASE 1 c$ = "#" CASE 2 c$ = "@" CASE 3 c$ = "*" CASE 4 c$ = "Û" END SELECT IF WSTRIPES = 3 THEN Q = INT(RND * 10) + 1 IF Q < 5 THEN STP = 1 ELSE STP = 2 ELSE STP = WSTRIPES END IF FOR A = X1 TO X2 IF STP = 1 THEN DO c = INT(RND * 15) + 1 LOOP UNTIL c > 7 COLOR c END IF LOCATE A, Y1 PRINT STRING$((Y2 - Y1), c$) NEXT A DONE: END SUB SUB CNFG (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) E$ = "ERROR: That is an invalid option. Please select again." START: COLOR 0, 0: CLS COLOR 0, 7 PRINT "SHAPES CONFIGURATION:" LOCATE 23, 18 PRINT "Contact me at: smitha@nova.edmonds.wednet.edu" LOCATE 2, 1 COLOR 7, 0: PRINT PRINT "Please Select:": PRINT PRINT "1. Enable/Disable Screen Clearing": PRINT "2. Enable/Disable Shapes" PRINT "3. Enable/Disable/Change Message": PRINT "4. Enable/Disable Logo" PRINT "5. Reset Defaults": PRINT "6. Save/Quit": PRINT OPT: DO A$ = INKEY$ LOOP UNTIL A$ <> "" A = VAL(A$) SELECT CASE A CASE 1 GOSUB OPT1 GOTO START CASE 2 GOSUB OPT2 GOTO START CASE 3 GOSUB OPT3 GOTO START CASE 4 GOSUB OPT4 GOTO START CASE 5 GOSUB DEFAULT GOTO START CASE 6 GOTO WrapUp CASE ELSE PRINT E$ LOCATE (CSRLIN - 1) BEEP SLEEP 1 PRINT STRING$(60, " ") LOCATE (CSRLIN - 1) GOTO OPT END SELECT OPT1: CLS COLOR 0, 7 PRINT "Screen Clearing Option:" COLOR 7, 0: PRINT PRINT "Screen clears"; WSCRCLR; "% of the time." 'IF WSCRCLR = 1 THEN PRINT "On" ELSE PRINT "Off" PRINT : PRINT "1. Change Screen Clearing Percentage" 'IF WSCRCLR = 1 THEN PRINT "Off" ELSE PRINT "On" PRINT "2. Done" E1: DO A$ = INKEY$ LOOP UNTIL A$ <> "" b = VAL(A$) IF (b = 1) OR (b = 2) THEN GOTO OKEGEORGE PRINT E$ BEEP SLEEP 1 LOCATE (CSRLIN - 1) PRINT STRING$(60, " ") LOCATE (CSRLIN - 1) GOTO OPT1 OKEGEORGE: IF b = 2 THEN RETURN DO INPUT "New percentage (Do NOT include '%' sign)-(Max 50%)"; RDRR IF (RDRR < 0) OR (RDRR > 50) THEN PRINT "That figure is either too high, too low, or is not a number. Please try again." LOOP UNTIL (RDRR > -1) AND (RDRR < 51) WSCRCLR = RDRR GOTO OPT1 OPT2: CLS COLOR 0, 7 PRINT "Shapes Option:" COLOR 7, 0: PRINT PRINT "1. Boxes are "; IF WBOXES = 1 THEN PRINT "On" ELSE PRINT "Off" PRINT " 2. Striped Boxes are "; IF WSTRIPES = 1 THEN PRINT "On" ELSEIF WSTRIPES = 2 THEN PRINT "Off" ELSE PRINT "Random" END IF PRINT "3. Triangles are "; IF WTRIANGLES = 1 THEN PRINT "On" ELSE PRINT "Off" PRINT "4. Logos are "; IF WLOGOS = 1 THEN PRINT "On" ELSE PRINT "Off" PRINT "5. Done" E2: DO A$ = INKEY$ LOOP UNTIL A$ <> "" b = VAL(A$) IF b > 5 OR b < 1 THEN PRINT E$ BEEP SLEEP 1 LOCATE (CSRLIN - 1) PRINT STRING$(60, " ") LOCATE (CSRLIN - 1) GOTO OPT2 END IF SELECT CASE b CASE 1 IF WBOXES = 1 THEN WBOXES = 2 ELSE WBOXES = 1 CASE 2 IF WSTRIPES = 1 THEN WSTRIPES = 2 ELSEIF WSTRIPES = 2 THEN WSTRIPES = 3 ELSE WSTRIPES = 1 END IF CASE 3 IF WTRIANGLES = 1 THEN WTRIANGLES = 2 ELSE WTRIANGLES = 1 CASE 4 IF WLOGOS = 1 THEN WLOGOS = 2 ELSE WLOGOS = 1 CASE 5 RETURN END SELECT GOTO OPT2 OPT3: CLS COLOR 0, 7 PRINT "Message Option:" COLOR 7, 0: PRINT PRINT "The current message is '"; WMESSAGE$; "'": PRINT PRINT "Messages are "; IF WMESSAGES = 1 THEN PRINT "On" ELSE PRINT "Off" PRINT : PRINT "1. Turn messages "; IF WMESSAGES = 1 THEN PRINT "Off" ELSE PRINT "On" PRINT "2. Change Message" PRINT "3. Done" PRINT E3: DO A$ = INKEY$ LOOP UNTIL A$ <> "" b = VAL(A$) IF b > 3 OR b < 1 THEN PRINT E$ BEEP LOCATE (CSRLIN - 1) PRINT STRING$(60, " ") GOTO OPT3 END IF SELECT CASE b CASE 1 IF WMESSAGES = 1 THEN WMESSAGES = 2 ELSE WMESSAGES = 1 CASE 2 PRINT "What would you like the new message to be?" PRINT "(Under 30 characters, please, and no commas.)" DO INPUT MS$ Q = LEN(MS$) IF Q > 30 THEN PRINT "That message is too long! Please try again." ELSEIF MS$ = "" THEN PRINT "There needs to be a message. If you don't want messages, turn them off." ELSE OK = 3 END IF LOOP UNTIL OK = 3 WMESSAGE$ = MS$ CASE 3 RETURN CASE ELSE PRINT E$ BEEP SLEEP 1 LOCATE (CSRLIN - 1) PRINT STRING$(60, " ") LOCATE (CSRLIN - 1) END SELECT GOTO OPT3 OPT4: COLOR 0, 0: CLS COLOR 0, 7 PRINT "Logo Option:" COLOR 7, 0 PRINT : PRINT "The startup logo is currently "; IF WSTARTUPLOGO = 1 THEN PRINT "On" ELSE PRINT "Off" PRINT PRINT "1. Turn startup logo "; IF WSTARTUPLOGO = 1 THEN PRINT "Off" ELSE PRINT "On" PRINT "2. Done" E4: DO A$ = INKEY$ LOOP UNTIL A$ <> "" b = VAL(A$) IF (b > 2) OR (b < 1) THEN PRINT E$ BEEP SLEEP LOCATE (CSRLIN - 1) PRINT STRING$(60, " ") LOCATE (CSRLIN - 1) GOTO OPT4 END IF SELECT CASE b CASE 1 IF WSTARTUPLOGO = 1 THEN WSTARTUPLOGO = 2 ELSE WSTARTUPLOGO = 1 CASE 2 RETURN END SELECT GOTO OPT4 DEFAULT: WSCRCLR = 10: WBOXES = 1: WTRIANGLES = 1: WMESSAGES = 1: WLOGOS = 1: WSTARTUPLOGO = 1: WSTRIPES = 2: WMESSAGE$ = "*PRESS [F1] TO CONFIGURE!*" RETURN WrapUp: CLS COLOR 0, 7 PRINT "Save/Quit:" COLOR 7, 0: PRINT PRINT "1. Save Options to Disk" PRINT "2. Try Settings, Don't Save" PRINT "3. Restore Settings from Disk" PRINT "4. Return to Configuration Menu" DO A$ = INKEY$ LOOP UNTIL A$ <> "" b = VAL(A$) SELECT CASE b CASE 1 GOSUB SVE GOTO ALLDONE CASE 2 GOTO ALLDONE CASE 3 CALL STRTUP(WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WMESSAGE$, WSTRIPES, BKGCLR) GOTO ALLDONE CASE 4 GOTO START CASE ELSE PRINT E$ BEEP SLEEP GOTO WrapUp END SELECT SVE: OPEN "SHAPES.INI" FOR OUTPUT AS #1 WRITE #1, WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$ CLOSE RETURN ALLDONE: COLOR 0, BKGCLR CLS END SUB SUB LOGO (WDBG, WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) COLOR 0, 1: CLS LOCATE 10, 35 COLOR 12: PRINT "@@@@@"; : COLOR 14: PRINT "#"; : COLOR 12: PRINT "@@@@@" LOCATE 11, 35 COLOR 12: PRINT "@@@@"; : COLOR 14: PRINT "###"; : COLOR 12: PRINT "@@@@" LOCATE 12, 35 COLOR 12: PRINT "@@"; : COLOR 15: PRINT "SHAPES!"; : COLOR 12: PRINT "@@" LOCATE 13, 35 COLOR 12: PRINT "@@"; : COLOR 14: PRINT "##"; : COLOR 15: PRINT "2.2"; : COLOR 14: PRINT "##"; : COLOR 12: PRINT "@@" LOCATE 14, 35 COLOR 12: PRINT "@"; : COLOR 14: PRINT "#########"; : COLOR 12: PRINT "@" LOCATE 15, 35 COLOR 14: PRINT "###########" LOCATE 17, 31 COLOR 10: PRINT "|\/|EGA = |/\|ARE" LOCATE 18, 22 COLOR 14: PRINT "A MegaWare Production By: Adam Smith" SLEEP 3 A$ = INKEY$ IF A$ = "`" THEN CALL ALT IF A$ = "=" THEN WDBG = 42: LOCATE 16, 30: COLOR 14, 4: PRINT "DEBUG MODE ACTIVATED": SOUND 300, 1: SOUND 400, 1: SLEEP 2 END SUB SUB LOGO2 (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) A = INT(RND * 16) + 1 b = INT(RND * 68) + 1 LOCATE A, b COLOR 12, 1: PRINT "@@@@@"; : COLOR 14: PRINT "#"; : COLOR 12: PRINT "@@@@@": COLOR , BKGCLR LOCATE A + 1, b COLOR 12, 1: PRINT "@@@@"; : COLOR 14: PRINT "###"; : COLOR 12: PRINT "@@@@": COLOR , BKGCLR LOCATE A + 2, b COLOR 12, 1: PRINT "@@"; : COLOR 15: PRINT "SHAPES!"; : COLOR 12: PRINT "@@": COLOR , BKGCLR LOCATE A + 3, b COLOR 12, 1: PRINT "@@"; : COLOR 14: PRINT "##"; : COLOR 15: PRINT "2.2"; : COLOR 14: PRINT "##"; : COLOR 12: PRINT "@@": COLOR , BKGCLR LOCATE A + 4, b COLOR 12, 1: PRINT "@"; : COLOR 14: PRINT "#########"; : COLOR 12: PRINT "@": COLOR , BKGCLR LOCATE A + 5, b COLOR 14, 1: PRINT "###########": COLOR , BKGCLR END SUB SUB MSGE (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) Z = LEN(WMESSAGE$) A = 79 - Z ROW = INT(RND * 22) + 1 CLMN = INT(RND * A) + 1 CLR: c = INT(RND * 15) + 1 IF c < 8 THEN GOTO CLR COLOR c LOCATE ROW, CLMN PRINT WMESSAGE$ END SUB SUB SecretScreen 'lp: COLOR INT(RND * 15) + 1, 0 LOCATE 11, 1 PRINT " Secret Screen" PRINT " (In place of something slightly more blank)" PRINT " Try pressing the [`] key on the startup logo screen" PRINT PRINT " That is all- Get back to work!" END SUB SUB STRTUP (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WMESSAGE$, WSTRIPES, BKGCLR) ON ERROR GOTO HANDLER OPEN "SHAPES.INI" FOR INPUT AS #1 DO INPUT #1, WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$ LOOP UNTIL (EOF(1)) CLOSE ON ERROR GOTO 0 GOTO FINISHED FINISHED: END SUB SUB TRIANGLE (WSCRCLR, WBOXES, WTRIANGLES, WMESSAGES, WLOGOS, WSTARTUPLOGO, WSTRIPES, WMESSAGE$, BKGCLR) Proc: RANDOMIZE TIMER ROW1 = 0: ROW2 = 0 ROW1 = INT(RND * 11) + 1 WHILE ROW2 < 12 ROW2 = INT(RND * 23) + 1 WEND INI: COL = 0 WHILE COL < 23 COL = INT(RND * 79) + 1 WEND IF COL > 57 THEN GOTO INI NCOL = COL WHILE c < 9 c = INT(RND * 15) + 1 WEND COLOR c CHTR = INT(RND * 4) + 1 SELECT CASE CHTR CASE 1 c$ = "#" CASE 2 c$ = "@" CASE 3 c$ = "*" CASE 4 c$ = "Û" END SELECT Nrow: 'FOR I = NCOL TO COL ' LOCATE ROW1, I ' PRINT C$; 'NEXT I 'NCOL = NCOL - 1 'COL = COL + 1 'ROW1 = ROW1 + 1 'IF ROW1 = ROW2 THEN GOTO Zap 'GOTO Nrow FOR I = ROW1 TO ROW2 LOCATE I, NCOL PRINT STRING$((COL - NCOL + 1), c$) NCOL = NCOL - 1 COL = COL + 1 NEXT I Zap: END SUB