Dating Game is a compatibility quiz program that asks two participants — or one participant against a computer-controlled random opponent — ten multiple-choice questions covering topics such as pickup lines, dining preferences, food, TV habits, movies, reading, music, sports, and sexual preferences. Each question presents five numbered options, and the program awards one point for each match between the two players’ answers, then delivers a compatibility verdict at the end based on the final score. In one-player mode, the computer uses RND to generate its answer while the human inputs via keyboard; in two-player mode, both players respond using INKEY$ with a PAUSE 3000 timeout, reading the keypress with CODE INKEY$-48 to convert it to a numeric choice. The title screen uses a nested FOR loop with randomized TAB positions and PAPER colors, followed by a POKE to address 23692 to prevent scroll prompts during the animated banner sequence.
Program Analysis
Program Structure
The program is organized into a main sequential flow (lines 500–2487) that presents ten question blocks, each following an identical pattern, plus a collection of subroutines in the 3000–5800 range. The overall flow is:
- Splash/title animation (line 5600, called from line 100)
- Instructions (lines 5010–5050)
- Player setup: single player (5500) or two players (5550)
- Ten question blocks (lines 500–2475), each using a lettered string array (A$–J$)
- Final scoring and result display (lines 2480–2487, 5300–5450)
- Replay or exit (lines 5800–5850)
Question Block Pattern
Each of the ten questions follows a rigidly repeated template using a 9-element, 32-character-wide string array. Elements 1–5 hold the answer strings, element 6 holds the question number label, element 7 holds the question text, element 8 stores player 1’s chosen answer string (copied from element A), and element 9 stores player 2’s answer (from element AA). After displaying both choices, four conditional GOSUBs route to match/no-match feedback for single or two-player modes.
| Array element | Contents |
|---|---|
| 1–5 | Answer option strings |
| 6 | Question number (as string) |
| 7 | Question text |
| 8 | Player 1 (or computer) chosen answer |
| 9 | Player 2 chosen answer |
Input Handling
Two subroutines handle answer input depending on the game mode. In one-player mode (line 3000), the computer’s answer A is chosen with INT(RND*4)+1, giving values 1–4 only — answer option 5 can never be selected by the computer. The human’s answer AA is read via INPUT with a range check (lines 3010–3020).
In two-player mode (lines 3100–3126), both players use PAUSE 3000: LET A=CODE INKEY$-48 to capture a single keypress, converting the ASCII digit character to a numeric value by subtracting 48. This is an efficient idiom that avoids the INPUT statement and its prompt. Both players’ inputs are validated (range 1–5) with a retry loop.
Scoring and Result Routing
Variable S is incremented in the match subroutines (5100 and 5200) when both players chose the same answer index. After all ten questions, lines 2480–2487 branch to one of three outcome messages based on score thresholds:
S < 4: Not compatible4 <= S <= 7: 50/50 chanceS > 7: Good match
Separate destination line numbers are used for single-player (5300, 5330, 5350) and two-player (5400, 5430, 5450) results.
Title Screen Animation
Subroutine 5600 uses two nested FOR loops (L 1–3, P 1–7) to print “DATING GAME” at random TAB positions with cycling PAPER colors and a matching BEEP tone. A POKE 23692,23 at line 5660 writes to the system variable SCRCT (scroll counter) to suppress the “scroll?” prompt during the second animation phase, which fills the screen with block-graphic-bordered banners.
Navigation and Continue Prompt
Subroutine 3200 (lines 3200–3230) implements a keypress-gated continue screen. It first waits for any key (INKEY$="" loop), then checks for S (stop), C (continue), or loops back for any other key. Line 3230 contains a logical anomaly: the compound condition uses OR between inequality tests (INKEY$<>"C" OR INKEY$<>"c" etc.), which is always true since a single character cannot simultaneously equal both “C” and “c”. This means the fallthrough branch always fires, creating an infinite loop if the key is released between lines 3215 and 3230 — the intended logic should use AND rather than OR.
Variable W and String Variables
Variable W is initialized to 331 at line 290 and modified arithmetically at lines 610 (W=W+30) and 810 (W=W-4881). These manipulations appear vestigial or experimental — W is not otherwise used as a numeric variable in the visible logic. String variable W$ (set to "Ms. " at line 5550) is used separately to prefix the female player’s name in two-player output.
Notable Bugs and Anomalies
- The one-player RNG at line 3000 uses
INT(RND*4)+1, producing values 1–4, so answer option 5 is never generated for the computer player. - Line 3230’s use of
ORin multi-inequality conditions is logically incorrect;ANDwas likely intended. - Several question arrays reuse the same default value for element 6 (e.g., both D$ and C$ use
"3"as the question number label at lines 960 and 1160), meaning question numbers displayed on screen are not always sequential. - The spelling “resteraunt” (line 730), “Clasical” (line 1910), “Sifi.” (lines 1330, 1550, 1740), and “desert” for “dessert” (line 1170) are present in the original program strings.
- Line 5820 has no action if neither Y nor N is pressed; the program will simply fall through to line 5850 (the exit block) regardless, since there is no loop — a missing
GO TO 5800or similar.
Content
Source Code
5 BORDER 7: PAPER 7: CLS : PRINT AT 10,7; PAPER 2; INK 6; FLASH 1;"TURN OFF THE TAPE"; FLASH 0: PAUSE 500
90 REM DATING GAME By S.J.(Butch) Weinberg for T/S1000 May 1984 Mod. for T/S2068 Aug.1984 Rated R!!!
100 GO SUB 5600: CLS
200 GO SUB 5000: GO SUB 5010
210 GO SUB 3200
220 LET S=0
280 GO SUB 5000
290 PRINT '' INK 2;" \* BY S.J.(BUTCH) Weinberg 8/84"'' INK 0;"Will there be 1 player or 2?"''"Touch the number"''"then ENTER.": LET W=331
300 INPUT T
310 IF T=1 THEN BEEP .20,1: GO SUB 5500
320 IF T=2 THEN BEEP .20,1: BEEP .20,1: GO SUB 5550
500 DIM A$(9,32)
510 LET A$(1)="1. Haven't we met before?"
520 LET A$(2)="2. Where do I know you from?"
530 LET A$(3)="3. My name is....what's yours?"
540 LET A$(4)="4. Do you come here very often?"
550 LET A$(5)="5. Shall we jump in the sack?"
560 LET A$(6)="1"
570 LET A$(7)="What line would you prefer?"
580 CLS : BEEP .05,2: BEEP .05,4: BEEP .05,6: PRINT ,A$(6)'A$(7)''A$(1)'A$(2)'A$(3)'A$(4)'A$(5)
590 IF T=1 THEN GO SUB 3000
600 IF T=2 THEN GO SUB 3100
610 LET A$(8)=A$(A): LET W=W+30
620 LET A$(9)=A$(AA)
630 PRINT 'A$(8)'A$(9)
640 IF T=1 AND A=AA THEN GO SUB 5100
650 IF T=1 AND A<>AA THEN GO SUB 5150
660 IF T=2 AND A=AA THEN GO SUB 5200
670 IF T=2 AND A<>AA THEN GO SUB 5250
680 GO SUB 3200
700 DIM B$(9,32)
710 LET B$(1)="1. With friends of yours."
720 LET B$(2)="2. With friends of mine."
730 LET B$(3)="3. At a resteraunt."
740 LET B$(4)="4. Nude at your place."
750 LET B$(5)="5. Nude at my place."
760 LET B$(6)="2"
770 LET B$(7)="Where would you like dinner?"
780 CLS : BEEP .05,2: BEEP .05,4: BEEP .05,6: PRINT ,B$(6)'B$(7)''B$(1)'B$(2)'B$(3)'B$(4)'B$(5)
790 IF T=1 THEN GO SUB 3000
800 IF T=2 THEN GO SUB 3100
810 LET B$(8)=B$(A): LET W=W-4881
820 LET B$(9)=B$(AA)
830 PRINT 'B$(8)'B$(9)
840 IF T=1 AND A=AA THEN GO SUB 5100
850 IF T=1 AND A<>AA THEN GO SUB 5150
860 IF T=2 AND A=AA THEN GO SUB 5200
870 IF T=2 AND A<>AA THEN GO SUB 5250
880 GO SUB 3200
900 DIM C$(9,32)
910 LET C$(1)="1. Chinese"
920 LET C$(2)="2. German"
930 LET C$(3)="3. Greek"
940 LET C$(4)="4. Italian"
950 LET C$(5)="5. Soul"
960 LET C$(6)="3"
970 LET C$(7)="What type food shal we have?"
980 CLS : BEEP .05,2: BEEP .05,4: BEEP .05,6: PRINT ,C$(6)'C$(7)''C$(1)'C$(2)'C$(3)'C$(4)'C$(5)
990 IF T=1 THEN GO SUB 3000
1000 IF T=2 THEN GO SUB 3100
1010 LET C$(8)=C$(A)
1020 LET C$(9)=C$(AA)
1030 PRINT 'C$(8)'C$(9)
1040 IF T=1 AND A=AA THEN GO SUB 5100
1050 IF T=1 AND A<>AA THEN GO SUB 5150
1060 IF T=2 AND A=AA THEN GO SUB 5200
1070 IF T=2 AND A<>AA THEN GO SUB 5250
1080 GO SUB 3200
1100 DIM D$(9,32)
1110 LET D$(1)="1. Cake"
1120 LET D$(2)="2. Candy"
1130 LET D$(3)="3. Cookies"
1140 LET D$(4)="4. Fruit"
1150 LET D$(5)="5. NONE"
1160 LET D$(6)="3"
1170 LET D$(7)="What type desert do you like?"
1180 CLS : BEEP .05,2: BEEP .05,4: BEEP .05,6: PRINT ,D$(6)'D$(7)''D$(1)'D$(2)'D$(3)'D$(4)'D$(5)
1190 IF T=1 THEN GO SUB 3000
1200 IF T=2 THEN GO SUB 3100
1210 LET D$(8)=D$(A)
1220 LET D$(9)=D$(AA)
1230 PRINT 'D$(8)'D$(9)
1240 IF T=1 AND A=AA THEN GO SUB 5100
1250 IF T=1 AND A<>AA THEN GO SUB 5150
1260 IF T=2 AND A=AA THEN GO SUB 5200
1270 IF T=2 AND A<>AA THEN GO SUB 5250
1280 GO SUB 3200
1300 DIM E$(9,32)
1310 LET E$(1)="1. Cit-Com."
1320 LET E$(2)="2. Drama"
1330 LET E$(3)="3. Sifi."
1340 LET E$(4)="4. Soap's"
1350 LET E$(5)="5. Talk & News"
1360 LET E$(6)="5"
1370 LET E$(7)="What type of Tv. do you like?"
1380 CLS : BEEP .05,2: BEEP .05,4: BEEP .05,6: PRINT ,E$(6)'E$(7)''E$(1)'E$(2)'E$(3)'E$(4)'E$(5)
1390 IF T=1 THEN GO SUB 3000
1400 IF T=2 THEN GO SUB 3100
1410 LET E$(8)=E$(A)
1420 LET E$(9)=E$(AA)
1430 PRINT 'E$(8)'E$(9)
1440 IF T=1 AND A=AA THEN GO SUB 5100
1450 IF T=1 AND A<>AA THEN GO SUB 5150
1460 IF T=2 AND A=AA THEN GO SUB 5200
1470 IF T=2 AND A<>AA THEN GO SUB 5250
1480 GO SUB 3200
1500 DIM F$(9,32)
1510 LET F$(1)="1. Comedy"
1520 LET F$(2)="2. Horror"
1530 LET F$(3)="3. Musical"
1540 LET F$(4)="4. Porno"
1550 LET F$(5)="5. Sifi."
1560 LET F$(6)="6"
1570 LET F$(7)="What type movies do you like?"
1580 CLS : BEEP .05,2: BEEP .05,4: BEEP .05,6: PRINT ,F$(6)'F$(7)''F$(1)'F$(2)'F$(3)'F$(4)'F$(5)
1590 IF T=1 THEN GO SUB 3000
1600 IF T=2 THEN GO SUB 3100
1610 LET F$(8)=F$(A)
1620 LET F$(9)=F$(AA)
1630 PRINT 'F$(8)'F$(9)
1640 IF T=1 AND A=AA THEN GO SUB 5100
1650 IF T=1 AND A<>AA THEN GO SUB 5150
1660 IF T=2 AND A=AA THEN GO SUB 5200
1670 IF T=2 AND A<>AA THEN GO SUB 5250
1680 GO SUB 3200
1700 DIM G$(9,32)
1710 LET G$(1)="1. Biographys"
1720 LET G$(2)="2. Fiction"
1730 LET G$(3)="3. Non Fiction"
1740 LET G$(4)="4. Sifi."
1750 LET G$(5)="5. Sports"
1760 LET G$(6)="7"
1770 LET G$(7)="What type reading do you like?"
1780 CLS : BEEP .05,2: BEEP .05,4: BEEP .05,6: PRINT ,G$(6)'G$(7)''G$(1)'G$(2)'G$(3)'G$(4)'G$(5)
1790 IF T=1 THEN GO SUB 3000
1800 IF T=2 THEN GO SUB 3100
1810 LET G$(8)=G$(A)
1820 LET G$(9)=G$(AA)
1830 PRINT 'G$(8)'G$(9)
1840 IF T=1 AND A=AA THEN GO SUB 5100
1850 IF T=1 AND A<>AA THEN GO SUB 5150
1860 IF T=2 AND A=AA THEN GO SUB 5200
1870 IF T=2 AND A<>AA THEN GO SUB 5250
1880 GO SUB 3200
1900 DIM H$(9,32)
1910 LET H$(1)="1. Clasical"
1920 LET H$(2)="2. Disco"
1930 LET H$(3)="3. Jazz"
1940 LET H$(4)="4. Pop"
1950 LET H$(5)="5. Rock"
1960 LET H$(6)="8"
1970 LET H$(7)="What type music do you like?"
1980 CLS : BEEP .05,2: BEEP .05,4: BEEP .05,6: PRINT ,H$(6)'H$(7)''H$(1)'H$(2)'H$(3)'H$(4)'H$(5)
1990 IF T=1 THEN GO SUB 3000
2000 IF T=2 THEN GO SUB 3100
2010 LET H$(8)=H$(A)
2020 LET H$(9)=H$(AA)
2030 PRINT 'H$(8)'H$(9)
2040 IF T=1 AND A=AA THEN GO SUB 5100
2050 IF T=1 AND A<>AA THEN GO SUB 5150
2060 IF T=2 AND A=AA THEN GO SUB 5200
2070 IF T=2 AND A<>AA THEN GO SUB 5250
2080 GO SUB 3200
2100 DIM I$(9,32)
2110 LET I$(1)="1. On comercial Tv."
2120 LET I$(2)="2. On pay or cable Tv."
2130 LET I$(3)="3. On closed circut theater Tv."
2140 LET I$(4)="4. Going to events"
2150 LET I$(5)="5. Not at all"
2160 LET I$(6)="9"
2170 LET I$(7)="Which way do you like sports?"
2180 CLS : BEEP .05,2: BEEP .05,4: BEEP .05,6: PRINT ,I$(6)'I$(7)''I$(1)'I$(2)'I$(3)'I$(4)'I$(5)
2190 IF T=1 THEN GO SUB 3000
2200 IF T=2 THEN GO SUB 3100
2210 LET I$(8)=I$(A)
2220 LET I$(9)=I$(AA)
2230 PRINT 'I$(8)'I$(9)
2240 IF T=1 AND A=AA THEN GO SUB 5100
2250 IF T=1 AND A<>AA THEN GO SUB 5150
2260 IF T=2 AND A=AA THEN GO SUB 5200
2270 IF T=2 AND A<>AA THEN GO SUB 5250
2280 GO SUB 3200
2300 DIM J$(9,32)
2310 LET J$(1)="1. Athletic"
2320 LET J$(2)="2. Kinky"
2330 LET J$(3)="3. Normal"
2340 LET J$(4)="4. Oral"
2350 LET J$(5)="5. NONE"
2360 LET J$(6)="10"
2370 LET J$(7)="What type sex do you like?"
2380 CLS : BEEP .05,2: BEEP .05,4: BEEP .05,6: PRINT ,J$(6)'J$(7)''J$(1)'J$(2)'J$(3)'J$(4)'J$(5)
2390 IF T=1 THEN GO SUB 3000
2400 IF T=2 THEN GO SUB 3100
2410 LET J$(8)=J$(A)
2420 LET J$(9)=J$(AA)
2430 PRINT 'J$(8)'J$(9)
2440 IF T=1 AND A=AA THEN GO SUB 5100
2450 IF T=1 AND A<>AA THEN GO SUB 5150
2460 IF T=2 AND A=AA THEN GO SUB 5200
2470 IF T=2 AND A<>AA THEN GO SUB 5250
2475 GO SUB 3200
2480 IF T=1 AND S<4 THEN GO TO 5300
2481 IF T=1 AND S>=4 AND S<=7 THEN GO TO 5330
2482 IF T=1 AND S>7 THEN GO TO 5350
2485 IF T=2 AND S<4 THEN GO TO 5400
2486 IF T=2 AND S>=4 AND S<=7 THEN GO TO 5430
2487 IF T=2 AND S>7 THEN GO TO 5450
3000 LET A=INT (RND*4)+1
3010 INPUT AA
3020 IF AA<1 OR AA>5 THEN GO TO 3010
3030 RETURN
3100 BEEP .05,5: BEEP .05,2: PRINT 'W$,
3110 PAUSE 3000: LET A=CODE INKEY$-48
3115 IF A<1 OR A>5 THEN GO TO 3110
3116 BEEP .05,5: BEEP .05,2: PRINT V$
3120 PAUSE 3000: LET AA=CODE INKEY$-48
3125 IF AA<1 OR AA>5 THEN GO TO 3120
3126 RETURN
3200 PRINT TAB 5; PAPER 6; INK 0;"TOUCH C TO CONTINUE"
3210 IF INKEY$="" THEN GO TO 3210
3215 IF INKEY$="S" OR INKEY$="s" THEN STOP
3220 IF INKEY$="C" OR INKEY$="c" THEN CLS : RETURN
3230 IF INKEY$<>"C" OR INKEY$<>"c" OR INKEY$<>"S" OR INKEY$<>"s" THEN GO TO 3210
5000 BORDER 3: PRINT TAB 5;"\..\..\.:\::DATING GAME\::\:.\..\..": RETURN
5010 PRINT : PRINT "In this game you will be asked"'"10 questions."''"Each question will list 5"'"answers below it."''
5020 PRINT "All you have to do is to touch"'"the # of your answer then enter."''"The computer will take the part"'"of your counterpart (1 player)."''
5030 PRINT "In (2 player) game each player "'"just touches there number"'"to pick there answers."'': GO SUB 3200
5040 GO SUB 5000: PRINT ''"The computer will keep score"'"giving 1 point for each match."''"Some of the questions and some"'"answers make this an adult game."''
5050 PRINT "So chase the kids off before"'"going any farther."''"We wouldn't want any problems."''TAB 5;"Touch S to stop."'': GO TO 210
5100 PRINT INK 1;''"Congratulations ";N$;" You and"'"your computer counterpart"'"have the same likes on this.": LET S=S+1: PRINT "Your score so far ";S'': BEEP .15,6: BEEP .15,9: BEEP .15,12: BEEP .25,17: BEEP .15,12: BEEP .15,17: RETURN
5150 PRINT INK 2;''"Sorry ";N$;" your computer"'"counterpart didn't"'" agree with you."'"Your score so far ";S'': BEEP .50,-10: BEEP 1,-20: RETURN
5200 PRINT INK 1;''"Congratulations ";N$;" you"'" and ";M$;" agree on"'" this subject."': LET S=S+1: PRINT "Your score so far ";S'': BEEP .15,6: BEEP .15,9: BEEP .15,12: BEEP .25,17: BEEP .15,12: BEEP .15,17: RETURN
5250 PRINT INK 2;''"Sorry ";N$;" you and"'M$;" don't agree on this."'"Your score so far ";S'': BEEP .50,-10: BEEP 1,-20: RETURN
5300 CLS : GO SUB 5000: BORDER 6: PAPER 7: PRINT '' INK 2;"Well ";V$;N$;" your"'"computer counterpart and you"'"are not at all compatible."''"Hopefully you will do better in"'"real life with your dates!": BEEP .25,10: BEEP .25,5: BEEP .25,10: BEEP .25,5: BEEP .25,10: BEEP .25,5: GO TO 5800
5330 CLS : GO SUB 5000: BORDER 6: PAPER 7: PRINT '' INK 1;"Well ";V$;N$;" your"'"computer counterpart and you"'"have a 50/50 chance to make it."''"Hopefully you will do as well"'"in real life with your dates!": BEEP .25,5: BEEP .25,10: BEEP .25,5: BEEP .25,10: BEEP .25,5: BEEP .25,10 : GO TO 5800
5350 CLS : GO SUB 5000: BORDER 4: PAPER 7: PRINT '' INK 4;"Well ";V$;N$;" your"'"computer counterpart and you"'"seem to be a good match."''"Hopefully you will do as well in"'"real life with your dates!!!": BEEP .15,6: BEEP .15,9: BEEP .15,12: BEEP .25,17: BEEP .15,12: BEEP .15,17: GO TO 5800
5400 CLS : GO SUB 5000: BORDER 2: PAPER 7: PRINT '' INK 2;"Well ";W$;M$;" you and"'V$;N$;" don't seem to agree"'"to well on these subjects."''"Hopefully you agree on others.": BEEP .25,10: BEEP .25,5: BEEP .25,10: BEEP .25,5: BEEP .25,10: BEEP .25,5: GO TO 5800
5430 CLS : GO SUB 5000: BORDER 6: PAPER 7: PRINT '' INK 1;"Well ";W$;M$;" you and"'V$;N$;" seem to agree on"'"around half of these subjects."''"Hopefully you do as well"'"or better on others.": BEEP .25,5: BEEP .25,10: BEEP .25,5: BEEP .25,10: BEEP .25,5: BEEP .25,10: GO TO 5800
5450 CLS : GO SUB 5000: BORDER 4: PAPER 7: PRINT '' INK 4;"Well ";W$;M$;" you and"'V$;N$;" seem to agree on the"'"majority of these subjects!"''"Hopefully you will do"'"as well on others!": BEEP .15,6: BEEP .15,9: BEEP .15,12: BEEP .25,17: BEEP .15,12: BEEP .15,17: GO TO 5800
5500 PRINT '"Who will be playing?"'"Type name, touch ENTER": INPUT N$
5510 PRINT ''"Are you male or female?"'"Touch M or F then ENTER.": INPUT V$
5520 IF V$="M" OR V$="m" THEN LET V$="Mr. "
5525 IF V$="F" OR V$="f" THEN LET V$="Ms. "
5530 PRINT '"Ok ";V$;N$;" lets play!": PAUSE 200: RETURN
5550 PRINT '"Who is the female?"'"Type name, touch ENTER": LET W$="Ms. ": INPUT M$
5560 PRINT '"Who is the male?"'"Type name, touch ENTER": LET V$="Mr. ": INPUT N$
5570 PRINT ''"Ok ";W$;M$;" and ";V$;N$'"lets play!": PAUSE 200: RETURN
5600 CLS : FOR L=1 TO 3
5610 FOR P=1 TO 7
5620 LET K=INT 19*RND
5630 PRINT TAB K; PAPER P; INK 9;"DATING GAME": BEEP .25,K
5640 NEXT P
5650 NEXT L
5660 POKE 23692,23
5670 FOR L=1 TO 3
5680 FOR P=1 TO 7
5690 BORDER 6: PRINT PAPER P; INK 9;"\: \: \: \: \: \: \: \: \: \: DATING GAME\: \: \: \: \: \: \: \: \: \: ": BEEP .05,P*L
5700 NEXT P
5710 NEXT L
5720 RETURN
5800 PRINT ''" Would you like to try again?"''" Touch Y for yes N for no.": PAUSE 5000
5810 IF INKEY$="Y" OR INKEY$="y" THEN RUN 200
5820 IF INKEY$="N" OR INKEY$="n" THEN GO TO 5850
5850 PRINT '' INK 4;" I hope you enjoyed playing"''TAB 9;"DATING GAME"'' INK 2;" \* By (BUTCH) 8/84": BEEP .20,17: BEEP .20,17: BEEP .20,17: BEEP .15,5: BEEP .20,14: BEEP .20,10: STOP
9997 STOP
9998 SAVE "DatingGame" LINE 1
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

