1 NOEXPAND
2 RANDOMIZE
4 PRINT TAB(-1,0);
40 MAP1 X'WORD$
41  MAP2 W$(14),S,1
42 MAP1 PATTERN$
43  MAP2 P$(14),S,1
44 MAP1 UNUSED
45  MAP2 U(255),B,1
46 MAP1 USED$,S,27
50 Z=0:D=0
60 PRINT "DO YOU WANT INSTRUCTIONS (YES OR NO)";
70 INPUT RESP$
80 IF RESP$="N" OR RESP$="NO" THEN 200
90 IF RESP$<>"Y" AND RESP$<>"YES" THEN 60
100 PRINT "     THIS IS THE GAME OF HANGMAN.  YOU CHOSE THE"
110 PRINT "LANGUAGE THAT YOU WANT TO PLAY IN, AND I THINK"
120 PRINT "OF A WORD IN THAT LANGUAGE.  YOU TRY TO GUESS, LETTER"
130 PRINT "BY LETTER, WHAT THE WORD IS.  SIMPLE HUH?"
140 PRINT "     WHEN I THINK OF A WORD, I WILL PRINT A LINE OF"
150 PRINT "DASHES WHICH CORRESPONDS TO THE NUMBER OF LETTERS IN"
160 PRINT "THE WORD."
170 PRINT "     IF YOU GIVE UP, TYPE 'GIVE'.  IF YOU WANT TO QUIT,"
180 PRINT "SIMPLY TYPE 'QUIT'."
190 PRINT "     A FEW SPECIAL INSTRUCTIONS:"
191 PRINT "FRENCH - THE ' IS COUNTED AS ONE LETTER,"
192 PRINT "     AND LETTERS ARE NOT ACCENTED"
200 PRINT "IN WHAT LANGUAGE WOULD YOU LIKE TO PLAY?"
210 PRINT "(STANDARD LANGUAGES INCLUDED ARE ENGLISH & FRENCH)"
240 INPUT FILE$
250 LOOKUP FILE$,X
260 IF X<=0 ?"THE ";FILE$;" LANGUAGE IS NOT AVAILABLE.  TRY AGAIN.":GOTO 210
300 PRINT "HAVE FUN!"
310 OPEN #1,FILE$,INPUT:M1=0
311 INPUT #1,USED$:IF EOF(1) THEN 312 ELSE M1=M1+1:GOTO 311
312 CLOSE #1
313 FOR I=1 TO M1:U(I)=I:NEXT
320 IF Z=M1 THEN 1340
330 W=INT((M1-Z)*RND(0)+1)
340 W1=U(W):FOR I=W TO M1-Z:U(I)=U(I+1):NEXT
350 Z=Z+1
390 P=0:M=0
400 OPEN #1,FILE$,INPUT
410 FOR I=1 TO W1:INPUT #1,USED$:NEXT I:X'WORDLEN=LEN(USED$):X'WORD$=USED$
411 CLOSE #1
440 PATTERN$=""
450 FOR I=1 TO X'WORDLEN:P$(I)="-":NEXT I
460 PRINT TAB(-1,0);
480 PRINT "THE WORD IS ";PATTERN$
500 USED$=""
510 PRINT "YOUR GUESS";
520 R=0
530 INPUT GUESS$
540 PRINT
550 IF GUESS$="GIVE" THEN 1100
560 IF GUESS$="QUIT" THEN 1310
570 GUESS$=LEFT$(GUESS$,1)
610 IF (ASC(GUESS$)>=ASC("A") AND ASC(GUESS$)<=ASC("Z")) OR GUESS$="'" THEN 660
620 PRINT "THAT IS NOT A VALID CHARACTER."
650 GOTO 510
660 IF INSTR(1,USED$,GUESS$) = 0 THEN 730
670 PRINT "YOU HAVE ALREADY USED THAT LETTER.  GUESS AGAIN."
680 GOTO 510
730 USED$=USED$+GUESS$
740 FOR I=1 TO X'WORDLEN
750 IF GUESS$<>W$(I) THEN 760
751 IF R=0 PRINT "RIGHT!":R=1
752 P$(I)=GUESS$
760 NEXT
770 IF R THEN 1170
780 PRINT "WRONG."
790 M=M+1
791 ?TAB(-1,0);
800             ?"--------"
805             ?"I      !"
810             ?"I      O"
820 IF M=1 THEN 1030
840 IF M=2      ?"I      I"
860 IF M=3      ?"I     /I"
880 IF M=4      ?"I     /I\"
900 IF M=5      ?"I    \/I\"
920 IF M>5      ?"I    \/I\/"
930 IF M<7 THEN 1030
940             ?"I      I"
950 IF M=7 THEN 1030
960 IF M=8      ?"I     /"
980 IF M=9      ?"I     / \"
1000 IF M=10    ?"I    \/ \"
1020 IF M=11    ?"I    \/ \/"
1030 FOR I=1 TO 5-P
1040            ?"I"
1050 NEXT
1060            ?"------------"
1061            ?"IIIIIIIIIIII"
1062            ?"------------"
1070 IF M=1 OR M=6 OR M=7 LET P=P+1
1090 IF M<11 THEN 1240
1100 PRINT "YOU HAVE JUST BEEN HUNG."
1110 GOTO 1220
1170 IF INSTR(1,PATTERN$,"-") THEN 1240
1200 PRINT "YOU GOT IT!!"
1210 D=D+1
1220 PRINT"THE WORD WAS ";X'WORD$
1230 GOTO 1270
1240 PRINT "THE WORD IS ";PATTERN$
1250 PRINT "YOU HAVE USED ";USED$
1260 GOTO 510
1270 PRINT "WOULD YOU LIKE TO PLAY AGAIN (YES OR NO)";
1280 INPUT RESP$
1281 PRINT TAB(-1,0);
1290 IF RESP$="Y" OR RESP$="YES" THEN 320
1300 IF RESP$<>"N" AND RESP$<>"NO" THEN 1270
1310 PRINT "YOU TOOK";LEN(USED$);"GUESSES."
1320 PRINT "YOU WERE HUNG";Z-D;"TIME(S)."
1330 GOTO 1370
1340 ?TAB(-1,0);:?"SORRY, BUT I'M OUT OF WORDS.  IF YOU WANT TO START"
1350 PRINT "OVER, RERUN THE PROGRAM.  THE WORDS WILL BE THE SAME,"
1360 PRINT "BUT THEY WILL BE IN A DIFFERENT ORDER."
1370 PRINT "COME AGAIN SOON... IT WAS FUN!"
1380 CHAIN "DSK1:DEMO.RUN[20,20]"