/qbasic-programs

A set of QuickBASIC 4.5 programs I wrote in high school.

Summary

This is a collection of every QuickBASIC 4.5 program I wrote that, until
recently, were stored on a single floppy disk in a cabinet among my personal
effects that I had left behind in my parents' house when I moved out after
college. These were all dated between Sep 2002 and May 2003, corresponding
directly with the "Computer Programming 1" course I took in high school. The
following year's course was Java; I never revisited the language of QBASIC
after picking up Java in the summer of 2003.

A lot of these programs were small class assignments teaching something specific
about QBASIC or programming; 4 were from American Computer Science League
programming competitions (and I don't have the questions any more). The most
interesting programs are GOLIFE.BAS (a Game of Life simulator on a finite grid),
INVIS4.BAS (a Connect Four game that does not show the pieces until someone
wins), and CHESS.BAS (Chess).

I can't guarantee that these files are free of bugs or in any way useful to
the modern programmer. CHESS.BAS in particular had two known bugs I never
tracked down to fix: pawns on the 7th row could be moved backwards, and kings
could move next to each other (and thence be captured). I also needed to remove
"A:" from the OPEN statement on line 35 to get CHESS.BAS to run at all.

I am releasing this code into the public domain, unedited from the final form
set on that floppy disk 9+ years ago (other than to re-save the source files
as text, which I did by running QuickBASIC in DOSBox).

File List (by last edit date)

Sep 10 2002 PRIME1.BAS
Sep 11 2002 PRIME2.BAS
Sep 11 2002 RBTRIVIA.BAS
Nov  6 2002 TWOS.BAS
Nov  6 2002 BWDATE.BAS
Nov 27 2002 IDNUMS.BAS
Dec  4 2002 ACSL1BW.BAS
Jan  6 2003 TICTAC.BAS
Jan  9 2003 7X7GRID.BAS
Jan 12 2003 HYBRID.BAS
Jan 15 2003 BWHANG.BAS
Feb  5 2003 BWACSL2.BAS
Feb 24 2003 BWML.BAS
Mar  7 2003 BWASCL3.BAS
Mar 17 2003 SHELL.BAS
Mar 17 2003 BUBBLE.BAS
Mar 17 2003 RNDNUM.BAS
Mar 26 2003 FIBONUM.BAS
Mar 31 2003 ACSL4BW.BAS
Apr  4 2003 PERFECT.BAS
Apr 10 2003 BWFACE.BAS
Apr 12 2003 PERFECT2.BAS
Apr 15 2003 ROTATE.BAS
Apr 15 2003 BOAT.BAS
May  2 2003 CONX4.BAS
May  5 2003 GOLIFE.BAS
May  7 2003 SELECTOR.BAS
May  8 2003 INVIS4.BAS
May 13 2003 SONG.BAS
May 14 2003 SOFSTORM.BAS
May 15 2003 SIREN.BAS
May 19 2003 BWFLAG.BAS
May 23 2003 BWYAHTZE.BAS
May 30 2003 CLUE.BAS
Jun 12 2003 CHESS.BAS

Long Version

PRIME1.BAS

I learned QuickBASIC originally toward the end of 8th grade Geometry; none of
the programs I wrote then have survived. Over the following summer I wrote a
program on paper that found and printed out the nth prime number. Once I
started the QuickBASIC class and again had access to a computer that I could
use to write QuickBASIC programs, this is the program that resulted. Later I
ported it to the TI-BASIC language on the TI-83 I used through high school.

PRIME2.BAS

Similar to PRIME1.BAS, this program simply lists primes. I used it to find
what the millionth prime was.

RBTRIVIA.BAS

Probably the first assignment in the class, this is a trivia quiz written
by myself and my friend Rudy Mukherjee. It contains a glimpse into my sense
of humor circa 2002.

TWOS.BAS

Based on what this program appears to currently do:
Given the first three numbers in a sequence a1, a2, a3, ... (where the
difference between terms is constant), counts the number of times the
digit "2" appears in the first 2000 terms of that sequence.

BWDATE.BAS

Given the number of elapsed seconds from 2003 Jan 01 00:00:00, outputs
the date. Apparently I did a really good job on this assignment, as my
teacher remarked "Ben great job. Grade=100." at the top of the file.

IDNUMS.BAS

Calculate a check digit for a given ID number. Somewhere around here we
were taught subroutines.

ACSL1BW.BAS

First ACSL program.

TICTAC.BAS

Tic tac toe.

7X7GRID.BAS

Displays a 7x7 grid.

HYBRID.BAS

"Hybrid Cross Genetic Ratios", according to the comment in the file. I guess
that is like, given genomes AA and BB from the parents, count the number of
AB/BA hybrid genomes in possible children. Input is the number of genes.

BWHANG.BAS

Hangman. This was apparently after learning about the DATA and READ keywords.
I also got to mess around a little with ASCII art animation.

BWACSL2.BAS

Another one of these competition programs.

BWML.BAS

A madlib. Uses a data file "madlib.txt" and outputs the result to "endlib.txt".
This actually uses "A:madlib.txt" and "A:endlib.txt" so if you actually want to
run this you'll want to change that.

BWASCL3.BAS

Another competition program.

SHELL.BAS

No, not a shell, but shell *sort*. Input file is "A:numbers.txt", output file
is "A:shell.txt". Apparently QuickBASIC ignores case.

BUBBLE.BAS

Bubble sort. Same input file as SHELL.BAS, but outputs to "A:bubbles.txt".

RNDNUM.BAS

Generates random numbers.

FIBONUM.BAS

Apparently our introduction to functions in QuickBASIC, this is Fibonacci.

ACSL4BW.BAS

The last competition program.

PERFECT.BAS

Finds the next perfect number. Appears to be pre-seeded so it skips the first
four perfect numbers (the easy ones).

BWFACE.BAS

Here we learned how to draw. This program draws a face. Or rather, a "face".

PERFECT2.BAS

Another way to find perfect numbers, apparently using Mersenne.

ROTATE.BAS

A circle rotating...?

BOAT.BAS

"REM A Sailboat That is Very Oddly Colored"

CONX4.BAS

Connect Four.

GOLIFE.BAS

A program I wrote for fun, simulates Conway's Game of Life.
Starts in edit mode: w/a/s/d to move the cursor, p to add a point, g to go.
go mode: n to step, d to edit, q to quit, su/sl/sd/sr to shift the contents
up/left/down/right.

SELECTOR.BAS

Lets you move an arrow around a grid, using a and s.

INVIS4.BAS

Invisible Connect Four.
I had had the bright idea, based on how I had structured CONX4.BAS, to delay
drawing the actual moves until the end of the game (where I was drawing
the line showing the victorious 4 in a row). It was a simple change.
True story: this was the only way I could beat my teacher at Connect Four.

SONG.BAS

Here we learned how to make sound. Looking back at the notation, very much
reminds me of lilypond notation.

SOFSTORM.BAS

Song of Storms from The Legend of Zelda: Ocarina of Time.

SIREN.BAS

Apparently I tried to make a siren. I don't recommend trying to listen to it.

BWFLAG.BAS

Draws a flag and plays an anthem?

BWYAHTZE.BAS

Yahtzee! Apparently I also included a "cheat code" wherein you could set your
name to "YahtzeeMan!" and then the game would tell you off for trying to cheat.

CLUE.BAS
CHESS.BAS

The final project for this class was supposed to be one of a set of possible
games: Clue, Risk, or Checkers with LAN. I apparently got bored writing Clue
and asked if I could write Chess instead, for extra credit. My teacher allowed
it, and ended up penalizing me my bonus due to a couple of bugs found by
a classmate trying to break it, leaving me with a measly 100. ;)

Namely, once my pawn reached the 7th row, he selected it on his turn and moved
it back two spaces. Later he moved his king next to mine, and I captured it.
Oops.