5 REM 2.70 CHARACTER GENERATOR PROGRAM
6 REM BRIAN KRAUSE
7 REM MAY 2, 1989
10 OPEN "COM1:300,N,8,1,RS,CS,DS,CD" AS #1
20 DIM CG$(10), N(200), N$(200)
30 FOR R=240 TO 243:PRINT #1,CHR$(R);CHR$(16);:NEXT R
35 PRINT #1,CHR$(241);CHR$(230);:PS=1
100 CLS:LOCATE 6,1:PRINT STRING$(79,"*"):LOCATE 19,1:PRINT STRING$(79,"*")
101 KEY OFF
105 FOR R=7 TO 18:LOCATE R,1:PRINT "*";:LOCATE R,79:PRINT "*";:NEXT R
110 LOCATE 8,3:PRINT "MIT STUDENT CABLE TELEVISION 1989 2.70 CONTEST CHARACTER GENERATOR DRIVER"
112 LOCATE 15,14:PRINT "COPYRIGHT (C) 1989, MIT STUDENT CABLE TELEVISION"
114 LOCATE 17,26:PRINT "READING NAMES...PLEASE WAIT."
118 ON ERROR GOTO 170
120 OPEN "270NAME.DAT" FOR INPUT AS #2
121 ON ERROR GOTO 0:INPUT #2,BS
125 FOR R=1 TO BS:INPUT #2,N(R):LINE INPUT #2,N$(R):NEXT R:CLOSE #2
129 GOTO 200
130 CLS
140 LOCATE 17,26:PRINT "PRESS ANY KEY TO BEGIN."
150 GOSUB 9000
160 CLS
165 GOTO 200
170 RESUME 171
171 ON ERROR GOTO 0:LOCATE 17,22:PRINT "PRESS ANY KEY TO BEGIN TYPING NAMES."
172 BS=0
173 CLOSE #2
175 GOSUB 9000:GOTO 6000
200 CLS:LOCATE 1,1:PRINT STRING$(79,"*");:LOCATE 4,1:PRINT STRING$(79,"*");:LOCATE 2,1:PRINT "*":LOCATE 2,79:PRINT "*":LOCATE 3,1:PRINT "*":LOCATE 3,79:PRINT "*"
202 LOCATE 2, 5:PRINT "MIT STUDENT CABLE TELEVISION 1989 2.70 CONTEST CHARACTER GENERATOR DRIVER"
204 LOCATE 3, 36:PRINT "MAIN MENU"
210 LOCATE 12,1
211 PRINT "<N>ame and number adjustments"
212 PRINT "<M>ain title display"
215 PRINT "<S>tandby notice"
216 PRINT "<A>nnouncer titles"
219 PRINT "<W>inner screen"
222 PRINT "< > Set up 2 players' names"
224 PRINT "<T> Declare top one winner"
226 PRINT "<B> Declare bottom one winner"
256 PRINT "<C>lear screen"
258 PRINT "<Q>uit"
260 GOSUB 9000
262 LOCATE 6,1:PRINT SPACE$(79)
270 IF K$="N" OR K$="n" THEN GOTO 1000
272 IF K$="M" OR K$="m" THEN GOSUB 8400:Y=3:M$="MIT STUDENT":GOSUB 8300:Y=4:M$="CABLE TELEVISION":GOSUB 8300:Y=6:M$="1989 2.70 CONTEST":GOSUB 8300:LOCATE 6,1:PRINT "Main Title on":GOSUB 8200:GOTO 210
274 IF K$="S" OR K$="s" THEN GOSUB 8400:Y=5:M$="PLEASE STAND BY":GOSUB 8300:LOCATE 6,1:PRINT "Standby notice being displayed.":GOSUB 8200:GOTO 210
280 IF K$="T" OR K$="t" THEN X=1:Y=10:M$=" ":GOSUB 8500:X=1:Y=9:M$=CHR$(92):GOSUB 8500:LOCATE 6,1:PRINT "Top player checked.":GOTO 210
282 IF K$="B" OR K$="b" THEN X=1:Y=9:M$=" ":GOSUB 8500:X=1:Y=10:M$=CHR$(92):GOSUB 8500:LOCATE 6,1:PRINT "Bottom player checked.":GOTO 210
284 IF K$="Q" OR K$="q" THEN CLOSE:END
286 IF K$="C" OR K$="c" THEN GOSUB 8400:GOSUB 8200:LOCATE 6,1:PRINT "Display cleared.":GOTO 210
290 IF K$=" " OR K$=CHR$(13) THEN GOSUB 2000:GOTO 210
300 IF K$="A" OR K$="a" THEN GOTO 500
390 GOTO 260
500 LOCATE 6,1:PRINT "<S>teve Danner"
502 PRINT "<J>ulie Temple"
504 PRINT "<L> Julie on left; Steve on right"
506 PRINT "<R> Julie on right; Steve on left"
550 GOSUB 9000
555 IF K$="S" OR K$="s" THEN GOSUB 8400:Y=10:M$="Steve Danner":GOSUB 8300:GOSUB 8200:LOCATE 6,1:PRINT "Steve Danner title displayed.":GOTO 590
557 IF K$="J" OR K$="j" THEN GOSUB 8400:Y=10:M$="Julie Temple":GOSUB 8300:GOSUB 8200:LOCATE 6,1:PRINT "Julie Temple title displayed.":GOTO 590
560 IF K$="L" OR K$="l" THEN GOSUB 8400:X=4:Y=9:M$="Julie":GOSUB 8100:X=15:Y=9:M$="Steve":GOSUB 8100:X=3:Y=10:M$="Temple":GOSUB 8100:X=15:Y=10:M$="Danner":GOSUB 8100:GOSUB 8200:LOCATE 6,1:PRINT "Julie/Steve displayed.":GOTO 590
562 IF K$="R" OR K$="r" THEN GOSUB 8400:X=4:Y=9:M$="Steve":GOSUB 8100:X=15:Y=9:M$="Julie":GOSUB 8100:X=3:Y=10:M$="Danner":GOSUB 8100:X=15:Y=10:M$="Temple":GOSUB 8100:GOSUB 8200:LOCATE 6,1:PRINT "Steve/Julie displayed.":GOTO 590
580 GOTO 550
590 FOR R=7 TO 11:LOCATE R,1:PRINT SPACE$(79):NEXT R:GOTO 210
999 END
1000 REM NAME AND NUMBER ADJUSTMENT
1005 CLS:PRINT "Name and number adjustment":PRINT:PRINT "<A>dd name(s)"
1010 PRINT "<S> Change spelling; search by number"
1012 PRINT "<N> Change number; search by number"
1014 PRINT "<T> Change spelling; search by misspelled name"
1016 PRINT "<O> Change number; search by name exactly as entered"
1018 PRINT "<L>ist all people"
1020 GOSUB 9000
1050 IF K$="A" OR K$="a" THEN GOTO 6000
1060 IF K$="S" OR K$="s" THEN GOSUB 1100:GOSUB 1200:GOTO 1600
1062 IF K$="N" OR K$="n" THEN GOSUB 1100:GOSUB 1400:GOTO 1600
1064 IF K$="T" OR K$="t" THEN GOSUB 1300:GOSUB 1200:GOTO 1600
1066 IF K$="O" OR K$="o" THEN GOSUB 1300:GOSUB 1400:GOTO 1600
1068 IF K$="L" OR K$="l" THEN GOTO 1500
1090 GOTO 1020
1100 REM FIND NUMBER
1105 CLS
1110 INPUT "Number of person to search for: ",NE
1120 FOR R=1 TO BS:IF N(R)=NE THEN E=R:E$=N$(R):RETURN
1130 NEXT R:PRINT "That number does not exist.":GOTO 1110
1200 REM CHANGE E'S NAME
1205 PRINT "Number ";N(E);" currently corresponds to the name ";E$;"."
1210 LINE INPUT "New name:  ",N$(E)
1215 IF LEN(N$(E))>20 THEN PRINT "The new name is too long.  Please type a new one.":GOTO 1210
1220 RETURN
1300 REM FIND E FOR NUMBER
1305 CLS
1310 INPUT "Name to be searched for: ",NE$
1320 FOR R=1 TO BS:IF NE$=N$(R) THEN E=R:E$=N$(R):RETURN
1330 NEXT R:PRINT "That name does not exist.":GOTO 1310
1400 REM CHANGE NUMBER
1410 PRINT "Number ";N(E);" currently corresponds to the name ";E$;"."
1420 INPUT "New number:  ",X
1430 FOR R=1 TO BS:IF X=N(R) AND R<>E THEN PRINT "That number is someone else's.  Please type a new number.":GOTO 1420
1440 NEXT R:N(E)=X:RETURN
1500 REM LIST
1505 CLS
1510 FOR R=1 TO BS
1520 PRINT N(R),N$(R)
1525 IF R/20=INT(R/20) THEN LOCATE 22,1:PRINT "Press any key to continue.":GOSUB 9000:CLS
1530 NEXT R
1532 LOCATE 22,1:PRINT "Press any key to return to main menu.":GOSUB 9000
1535 GOTO 200
1600 REM PRINT FILE
1610 CLOSE #2:OPEN "270NAME.DAT" FOR OUTPUT AS #2
1620 PRINT #2,BS:FOR R=1 TO BS:PRINT #2,N(R):PRINT #2,N$(R):NEXT R
1630 CLOSE #2
1640 GOTO 200
2000 REM GET 2 NAMES
2005 LOCATE 6,1:INPUT "Number of top player:    ",P1
2006 IF P1=0 THEN P1$="Placebo":GOTO 2020
2010 FOR R=1 TO BS:IF P1=N(R) THEN P1$=N$(R):GOTO 2020
2012 NEXT R:PRINT "There is no such player!":GOTO 2005
2020 LOCATE 7,1:PRINT SPACE$(79):LOCATE 7,1:INPUT "Number of bottom player: ",P2
2021 IF P2=0 THEN P2$="Placebo":GOTO 2030
2022 FOR R=1 TO BS:IF P2=N(R) THEN P2$=N$(R):GOTO 2030
2024 NEXT R:PRINT "There is no such player!":GOTO 2020
2030 LOCATE 7,1:PRINT SPACE$(79):LOCATE 7,1:PRINT "  ";P1$:PRINT SPACE$(79):LOCATE 8,1:PRINT "  ";P2$
2035 GOSUB 8400:X=3:Y=9:M$=P1$:GOSUB 8100
2036 X=3:Y=10:M$=P2$:GOSUB 8100:GOSUB 8200:PRINT SPACE$(79);:LOCATE 9,1:PRINT "being displayed."
2040 RETURN
6000 REM ENTER NAMES
6001 CLS
6002 PRINT "ENTER 0 FOR NUMBER WHEN FINISHED.  (THIS IS BASIC!)":PRINT
6004 INPUT "NUMBER: ",X
6006 IF X=0 THEN GOTO 6040
6007 FOR R=1 TO BS:IF X=N(R) THEN PRINT "That number has already been used.  Maybe you should enter 0 here and then":PRINT "make a correction.":GOTO 6004
6008 NEXT R
6010 BS=BS+1:N(BS)=X
6011 LINE INPUT "NAME:   ";N$(BS)
6012 IF LEN(N$(BS))>20 THEN PRINT "That name won't fit on the screen.  Try using just the first initial.":GOTO 6011
6014 GOTO 6004
6040 OPEN "270NAME.DAT" FOR OUTPUT AS #2
6042 PRINT #2,BS:FOR R=1 TO BS:PRINT #2,N(R):PRINT #2,N$(R):NEXT R:CLOSE #2
6045 GOTO 200
8000 REM CONVERT M$ TO PROPERLY LOWER-CASED FOR CG
8002 FOR R=1 TO LEN(M$):C=ASC(MID$(M$,R,1))
8004 IF C>95 AND C<128 THEN C=C+128-32:M$=LEFT$(M$,R-1)+CHR$(C)+MID$(M$,R+1)
8006 NEXT R:RETURN
8100 REM PRINT UNCONVERTED M$ AT X,Y ON PREVIEW SCREEN
8105 GOSUB 8000
8110 PRINT #1,CHR$(21);:FOR R=1 TO Y-1:PRINT #1,CHR$(19);:NEXT R
8112 FOR R=1 TO X-1:PRINT #1,CHR$(17);:NEXT R:PRINT #1,M$
8120 RETURN
8200 REM SWITCH PROGRAM AND PREVIEW SCREENS
8205 PS=1-PS:PRINT #1,CHR$(229+PS);CHR$(242-PS);
8210 RETURN
8300 REM PRINT UNCONVERTED M$ CENTERED ON LINE Y  ON PREVIEW SCREEN
8302 GOSUB 8000
8305 PRINT #1,CHR$(21);:FOR R=1 TO Y-1:PRINT #1,CHR$(19);:NEXT R
8310 PRINT #1,LEFT$(M$+SPACE$(22),22);
8312 PRINT #1,CHR$(21);:FOR R=1 TO Y-1:PRINT #1,CHR$(19);:NEXT R:PRINT #1,CHR$(23);
8320 RETURN
8400 REM CLEAR PVW SCREEN
8405 PRINT #1,CHR$(16);CHR$(21);
8420 RETURN
8500 REM PRINT UNCONVERTED M$ AT X,Y ON PROGRAM SCREEN
8505 GOSUB 8000:PRINT #1,CHR$(241+PS);
8510 PRINT #1,CHR$(21);:FOR R=1 TO Y-1:PRINT #1,CHR$(19);:NEXT R
8512 FOR R=1 TO X-1:PRINT #1,CHR$(17);:NEXT R:PRINT #1,M$
8520 PRINT #1,CHR$(242-PS);:RETURN
9000 K$=INKEY$:IF K$="" THEN 9000 ELSE RETURN