Listing of file='WORDO2 ' on disk='vmedia/more_games.wvd.zip'
# Sector 1491, program filename = 'WORDO2' 0010 REM WORDGAME TIMER IS SET FOR 2200VP (STMT 90 'A=A-.00125') ID=MA021029 0015 % TIMER SETTING FOR 2200MVP IS 'A=A-.00250' 0020 % TIMER SETTING FOR 2200T IS 'A=A-.02' 0030 COM A$(13)6,A(6,8),A0(5),B(8),Z0$16,Z2$64,Z8$64,Z9$64,R 0040 DIM N$(5)20,N$30,S(5),I(5),K$1,B$(1)2,D$(13)1,A$28,M$26,M1$26 0050 DIM W$11,W0(10),W$(8,10)11,W(8),M$(2)26 : GOTO 780 0060 RETURN : %WORD ENTRY ROUTINE 0070 J=0 : W$=" " : M$=A$ : PRINT STR(Z0$,1,X3);"TYPE LETTERS AVAILABLE";HEX(0D0A) ;Z2$ 0080 PRINT HEX(0D);W$;HEX(0D);STR(Z9$,44);STR(M$,1);HEX(0D);STR(Z9$,1,J+1);HEX (05) 0090 A=A-.00250 : KEYIN K$,160,130 : IF A<0 THEN 270 : IF A>INT(A)THEN 90 : PRINT HEX(060D);STR(Z9$,15);A;" " : GOTO 80 0100 M1$=A$ : M$,W$=" " : J2,J=0 : PRINT Z2$ 0110 IF M1$=" "THEN 80 : I=2+2*INT(13*RND(1)) : IF STR(M1$,I,1)=" "THEN 110 0120 J2=J2+2 : STR(M$,J2,1)=STR(M1$,I) : STR(M1$,I,1)=" " : GOTO 110 0130 PRINT HEX(05) : IF K$=HEX(00)THEN 270 : IF K$=HEX(0F)THEN 140 : IF K$=HEX(04)THEN 100 : IF K$=HEX(05)THEN 250 : IF K$<>HEX(1F)THEN 90 : A=A+60 : GOTO 90 0140 PRINT HEX(01);STR(Z9$,1,50);"TIMEOUT";STR(Z0$,1,X3+1) 0150 KEYIN K$,160,130 : GOTO 150 0160 PRINT HEX(06) : IF K$<"A"THEN 180 : IF K$=HEX(E5)THEN 170 : IF J>9THEN 90 : INIT(K$)M1$ : XOR (M1$,M$) : I=POS(M1$=00) : IF I=0THEN 90 : J=J+1 : STR(W$,J,1)=K$ : W0(J)=I : STR(M$,I,1)=" " : PRINT K$; : GOTO 80 0170 IF J=0THEN 90 : FOR I=1TO J : STR(M$,W0(I),1)=STR(W$,I) : NEXT I : W$=" " : PRINT STR(Z8$,1,J);STR(Z2$,1,J) : J=0 : GOTO 80 0180 IF K$<>HEX(08)THEN 190 : IF J=0THEN 90 : STR(M$,W0(J),1)=STR(W$,J) : STR(W$,J)=" " : J=J-1 : PRINT HEX(082008); : GOTO 80 0190 IF K$<>HEX(0D)THEN 90 : IF J<3THEN 90 : PRINT STR(Z0$,1,X4);Z2$; 0200 IF I(P1)=0OR J>3THEN 210 : PRINT HEX(0D);" YOU ARE VULNERABLE, AND NEED AT LEAST FOUR LETTER WORDS" ;HEX(0C) : GOTO 80 : %TEST WORD FOR DUPLICATION 0210 MAT SEARCH W$(),=STR(W$,1,J+1)TO B$()STEP 11 : IF B$(1)=HEX(0000)THEN 220 : PRINT HEX(0D);" '";W$;"' WAS ALREADY USED" : M$=A$ : GOTO 70 0220 % TEST FOR PLURAL HERE 0230 J2=J-2 : IF W(J2)=10THEN 240 : W(J2)=W(J2)+1 : W$(J2,W(J2))=W$ : PRINT STR(Z0$,1,W(J2)+X8-6);STR(Z9$,1,B(J2));W$ : GOTO 250 0240 MAT COPY W$()<J2*110-98,99>TO W$()<J2*110-109,99> : W$(J2,10)=W$ : PRINT STR(Z0$,1,X8); : FOR I=6TO 10 : PRINT STR(Z9$,1,B(J2));W$(J2,I) : PRINT : NEXT I 0250 IF W$=" " THEN 70 0260 FOR I=1TO LEN(W$) : STR(A$,2*I)=STR(W$,I,1) : NEXT I : FOR I=2TO 26STEP 2 : STR(A$,2+LEN(A$),1)=STR(M$,I,1) : NEXT I : GOTO 70 0270 SELECT PRINT 005(64) : PRINT HEX(03);"VERIFICATION OF ";N$(P1);"'S WORDS:" : PRINT : PRINT " AS THE CURSOR POINTS AT A WORD, TYPE EITHER 'Y' OR 'N'" : PRINT TAB(10);"TO ACCEPT OR REJECT IT." 0280 PRINT " A REJECTED WORD WILL BE REPLACED, IF POSSIBLE," : PRINT " FROM THE EXTRA STORED WORDS OF THE SAME SIZE." : PRINT : PRINT " IF ALL THE WORDS SHOWING ARE CORRECT, PRESS SF KEY '1" 0290 PRINT TAB(20);"(";A$;")" 0300 FOR I=1TO 8 : FOR J=6TO W(I) : PRINT STR(Z0$,1,J+X8-6);STR(Z9$,1,B(I));W$(I,J) : NEXT J : NEXT I : I=0 : J=6 : SELECT PRINT 405(64) : GOTO 350 0310 PRINT STR(Z0$,1,J+X8-6);STR(Z9$,1,B(I)); 0320 KEYIN K$,330,400 : GOTO 320 0330 IF K$="N"THEN 360 : IF K$="Y"THEN 340 : IF K$<>HEX(0D)THEN 320 : I=0 : J=6 : GOTO 350 0340 J=J+1 : IF J<=W(I)THEN 310 : J=6 0350 I=I+1 : IF I>8THEN 410 : IF W$(I,J)<>" "THEN 310 : GOTO 350 0360 IF W$(I,5)<>" "THEN 370 : W(I)= W(I)-1 : MAT COPY W$()<110*I+11*J-109,11*(10-J)>TO W$()<110*I+11*J-120,11*(11-J)> : GOSUB 390 : IF W$(I,J)<>" "THEN 310 : GOTO 340 0370 W$(I,J)=W$(I,5) : PRINT W$(I,J) : MAT COPY -W$()<110*I-109,44>TO -W$()<110*I-109,55> : GOTO 310 : %SCORE DISPLAY SUBROUTINE 0380 N$=" " : I=I+1 : IF I>PTHEN 60 : IF I=P1THEN 380 : J=LEN(N$(I)) : STR(N$,22-J)=N$(I) : STR(N$,24)="-" : CONVERT S(I)TO STR(N$,26),(####) : RETURN : %DISPLAY COLUMN OF WORDS 0390 FOR J1=6TO 10 : PRINT STR(Z0$,1,J1+X8-6);STR(Z9$,1,B(I));STR(W$(I,J1),1,I+2) : NEXT J1 : RETURN : %SCORE CALCULATION 0400 IF K$<>HEX(01)THEN 320 0410 S=0 : FOR I=1TO 8 : S=S+A(W(I)-4,I) : NEXT I : FOR I=1TO 5 : IF W(I)+W(I+1)<20THEN 420 : S=S+A0(I) 0420 NEXT I 0430 IF I(P1)=0THEN 440 : IF S>499THEN 440 : S=-500 0440 S(P1)=S(P1)+S : SELECT PRINT 005(64) : PRINT HEX(03);N$(P1);" GETS ";S; : IF I(P1)>0OR S(P1)<2000THEN 450 : I(P1)=2000 : PRINT " POINTS, AND IS NOW VULNERABLE WITH A SCORE OF ";S(P1) : PRINT : PRINT : GOTO 460 0450 PRINT " POINTS, FOR A NET SCORE OF ";S(P1) : PRINT : PRINT 0460 FOR I=1TO P : PRINT N$(I);TAB(30);S(I) : NEXT I : PRINT : PRINT : %ROLL DICE FOR NEXT PLAYER 0470 SELECT PRINT 005(64) : P1=P1+1 : IF P1<=PTHEN 480 : IF S9>0THEN 730 : P1=1 0480 INIT(20)W$(),D$(),A$ : FOR I=1TO 8 : W(I)=5 : NEXT I 0490 PRINT " PRESS EXECUTE TO ROLL DICE FOR ";N$(P1) 0500 KEYIN K$,510,500 : I=RND(1) : GOTO 500 0510 IF K$<>HEX(0D)THEN 500 : PRINT HEX(03);N$(P1); : IF I(P1)>0THEN 520 : PRINT "'S TURN"; : GOTO 530 0520 PRINT "'S VULNERABLE"; 0530 PRINT " WITH";S(P1);" POINTS." : I=0 0540 GOSUB 380 : PRINT N$;TAB(32); : GOSUB 380 : PRINT N$ : GOSUB 380 : PRINT N$;TAB(32); : GOSUB 380 : PRINT N$ 0550 FOR I=1TO 10 : STR(A$,2*I,1),D$(I)=STR(A$(I),1+6*RND(1)) : NEXT I 0560 SELECT PRINT 005(64) : PRINT STR(Z0$,1,X8-1); : PRINT " 3 4 5 6 7 8 9 10" : IF X6=0THEN 580 : PRINT " 60 120 200 300 500 750 1000 1500" 0570 FOR I=1TO 4 : PRINT " 10 20 50 100 150 250 500 1500" : NEXT I : PRINT " 300 500 800 1200 1850";HEX(0C) 0580 IF I(P1)=0THEN 590 : PRINT STR(Z0$,1,X8-1); : FOR I=1TO 6 : PRINT " " : NEXT I : PRINT " "; : FOR I=11TO 13 : STR(A$,2*I,1),D$(I)=STR(A$(I),1+6*RND(1)) : NEXT I 0590 IF X9=0THEN 600 : PRINT STR(Z0$,1,X9); : ON 1+6*RND(1)GOSUB 610,630,650,670,690,710 0600 SELECT PRINT 405(64) : A=180.02 : GOTO 70 : %DISPLAY DICE (PATTERN) 0610 PRINT TAB(11);D$(1);TAB(19);D$(2);TAB(31);D$(3);TAB(50);D$(4);TAB(60);D$( 5) : PRINT TAB(3);D$(6);TAB(42);D$(7);TAB(58);D$(8) : PRINT TAB(25);D$(9);TAB(34);D$(10) : IF I(P1)<2E3THEN 60 0620 PRINT TAB(27);D$(11);TAB(32);D$(12);TAB(55);D$(13); : GOTO 60 0630 PRINT TAB(20);D$(1);TAB(28);D$(2);TAB(41);D$(3);TAB(61);D$(4) : PRINT TAB(12);D$(5);TAB(25);D$(6);TAB(34);D$(7);TAB(47);D$(8) : PRINT TAB(6);D$(9);TAB(27);D$(10) : IF I(P1)<2E3THEN 60 0640 PRINT TAB(37);D$(11);TAB(44);D$(12);TAB(57);D$(13); : GOTO 60 0650 PRINT TAB(14);D$(1);TAB(26);D$(2);TAB(41);D$(3) : PRINT TAB(9);D$(4);TAB(17);D$(5);TAB(29);D$(6);TAB(42);D$(7) : PRINT TAB(22);D$(8);TAB(45);D$(9);TAB(60);D$(10) : IF I(P1)<2E3THEN 60 0660 PRINT TAB(14);D$(11);TAB(24);D$(12);TAB(59);D$(13); : GOTO 60 0670 PRINT D$(1);TAB(11);D$(2);TAB(59);D$(3) : PRINT TAB(4);D$(4);TAB(18);D$(5);TAB(35);D$(6) : PRINT TAB(3);D$(7);TAB(39);D$(8);TAB(51);D$(9);TAB(61);D$(10) : IF I(P1)<2E3THEN 60 0680 PRINT TAB(17);D$(11);TAB(21);D$(12);TAB(55);D$(13); : GOTO 60 0690 PRINT TAB(27);D$(1);TAB(38);D$(2);TAB(50);D$(3);TAB(55);D$(4) : PRINT TAB(41);D$(5);TAB(56);D$(6) : PRINT TAB(35);D$(7);TAB(49);D$(8);TAB(54);D$(9);TAB(62);D$(10) : IF I(P1)<2E3THEN 60 0700 PRINT TAB(46);D$(11);TAB(53);D$(12);TAB(59);D$(13); : GOTO 60 0710 PRINT TAB(9);D$(1);TAB(18);D$(2);TAB(27);D$(3);TAB(36);D$(4) : PRINT TAB(12);D$(5);TAB(24);D$(6);TAB(36);D$(7);TAB(48);D$(8) : PRINT TAB(20);D$(9);TAB(40);D$(10) : IF I(P1)<2E3THEN 60 0720 PRINT TAB(21);D$(11);TAB(42);D$(12);TAB(62);D$(13); : GOTO 60 0730 STOP " COMPARE FINAL SCORES TO DETERMINE WINNER" 0740 REM % DIFFERENT SCREEN VERSIONS 0750 DEFFN'0 : X0=1 : X1=2 : X3=4 : X4=6 : X6=0 : X8=11 : RETURN 0760 DEFFN'1 : X0=1 : X1=2 : X3=4 : X4=6 : X6=1 : X8=11 : RETURN 0770 DEFFN'2 : X0=1 : X1=2 : X3=4 : X4=6 : X6=1 : X8=9 : RETURN 0780 SELECT P,PRINT 005(64),LIST 005(64),CO 005(64),CI 001,INPUT 001 : PRINT HEX(030A0A);" FOR INSTRUCTIONS, TYPE 'Y' INSTEAD OF # OF PLAYERS" : PRINT : IF A0(5)>0 THEN 850 : %COMMON SETUP 0790 B(1)=1 : FOR I=2 TO 8 : B(I)=B(I-1)+I+2 : NEXT I 0800 A$(1)="INPUTF" : A$(2)="EEEAAA" : A$(3)="BRITHK" : A$(4)="EZQXJV" : A$(5)="FUSHIR" : A$(6)="TORLND" : A$(7)="AAAEEE" : A$(8)="MOCOWP" : A$(9)="GRUSIM" 0810 A$(10)="LOWBOY" : A$(11)="JCDMGK" : A$(12)="WVSYSQ" : A$(13)="BPFNHL" 0820 INIT(0A)Z0$ : INIT(20)Z2$ : INIT(08)Z8$ : INIT(09)Z9$ : STR(Z9$,1,1)=HEX(00) : STR(Z0$,1,1)=HEX(01) : STR(Z2$,64)="\A0" 0830 FOR J=1TO 8 : A(1,J)=0 : READ A(2,J) : READ A(6,J) : FOR I=3TO 6 : A(I,J)=A(I-1,J)+A(6,J) : NEXT I : NEXT J 0840 FOR I=1TO 5 : READ A0(I) : NEXT I : %NON-COMMON SETUP 0850 X0=1 : X1=2 : X3=4 : X4=6 : X6=0 : X8=11 0860 W$="2" : INPUT "NUMBER OF PLAYERS (1 TO 5)",W$ : IF W$="Y"THEN 880 : IF NUM(W$)<LEN(W$)THEN 860 : CONVERT W$TO P : P=INT(P) : IF P>5THEN 860 : IF P<1THEN 860 : INIT(20)N$() 0870 FOR I=1TO P : S(I),I(I)=0 : N$(I)="PLAYER" : CONVERT ITO STR(N$(I),8),(#) : PRINT "NAME OF PLAYER ";I; : INPUT N$(I) : NEXT I : P1=0 : PRINT HEX(03) : GOTO 470 0880 R=R+1 : IF R=1THEN 900 : IF R>5THEN 890 : PRINT HEX(03);" BUT YOU ALREADY SAW THEM !!!!" : PRINT : PRINT " HOWEVER, SINCE YOU INSIST, HERE THEY ARE AGAIN" : FOR I=1TO 300 : NEXT I : GOTO 900 0890 PRINT HEX(03);" ALRIGHT ALREADY, YOU'VE ALREADY SEEN THE RULES";R;"TIME S." : PRINT " ENOUGH IS ENOUGH, GOODBYE" 0900 PRINT HEX(03);"RULES FOR PLAYING PERQUACKEY:"; 0910 PRINT "UP TO FIVE MAY PLAY. EACH TRIES TO SCORE 5000 POINTS BY FORMING WO RDS OF THREE OR MORE LETTERS FROM THE SETS OF TEN LETTERS THE 2200 DISPLA YS."; 0920 PRINT "THE LETTERS ARE 'ROLLED' BY PRESSING 'EXECUTE'." : PRINT "TEN LETTERS WILL BE DISPLAYED NEAR THE TOP OF THE SCREEN."; 0930 PRINT "YOU HAVE THREE MINUTES TO BUILD AS MANY WORDS AS YOU CAN."; 0940 PRINT "HOWEVER, YOU MAY USE EACH LETTER ONLY ONCE (IF A LETTER IS DU PLICATED, YOU MAY USE IT AS MANY TIMES AS IT APPEARS)."; 0950 PRINT "YOU NEED FIVE EACH OF THREE, FOUR, FIVE, ETC. LETTER WORDS (Y OU NEED NOT FINISH ONE GROUP TO WORK ON ANOTHER)."; 0960 PRINT "IF YOU ENTER MORE THAN FIVE WORDS OF A SIZE, ONLY THE LAST FIVE WI LL BE SHOWN. AT ANY TIME SF KEY '4 WILL SCRAMBLE THE LETTERS"; 0970 PRINT "FOR YOU, AND PRESSING SF KEY '5 WILL REGROUP THOSE LETTERS BACK TO THE BEGINNING. PRESS SF '0 WHEN YOU DESPAIR OF FINDING MORE WORDS."; 0980 PRINT " PRESS 'EXECUTE' FOR MORE RULES."; 0990 I=RND(1) : KEYIN K$,1000,990 : GOTO 990 1000 PRINT HEX(03);"HOWEVER, THE EXTRA WORDS ARE SAVED IN CASE ANY OF THE LAST FIVE ARE NOT VALID. YOU CAN USE A WORD ONLY ONCE AND CANNOT ADD 'S' AT THE END TO MAKE IT ANOTHER WORD."; 1010 PRINT "UNTIL YOU GET A SCORE OF 2000, ONLY TEN LETTERS ARE SHOWN AND YO U CAN BUILD WORDS OF THREE OR MORE LETTERS."; 1020 PRINT "AFTER YOU SCORE 2000, 13 LETTERS ARE SHOWN EACH TIME AND YOU MU ST BUILD WORDS OF 4 OR MORE LETTERS. YOU MUST SCORE AT LEAST 500 POINTS EACH TURN SINCE YOU ARE NOW VULNERABLE."; 1030 PRINT "ONCE VULNERABLE, IF YOU FAIL TO SCORE 500 POINTS ON A TURN, YOU LO SE 500 POINTS ON THAT TURN. YOU REMAIN VULNERABLE HOWEVER, EVEN IF YOU R SCORE DROPS BELOW 2000."; 1040 PRINT "PRESS 'EXECUTE' FOR ADDITIONAL RULES" 1050 I=RND(1) : KEYIN K$,1060,1050 : GOTO 1050 1060 PRINT HEX(03);"THERE ARE BONUSES FOR COMPLETING FIVE VALID WORDS IN ADJAC ENT COLUMNS. FOR EXAMPLE: FINISHING 3 & 4 LETTER-WORDS IS WORTH A BON US OF 300 POINTS OVER THE USUAL SCORE."; 1070 DIM C$(5) : C$(1)="ONE" : C$(2)="TWO" : C$(3)="THREE" : C$(4)="FOUR" : C$(5)="FIVE" 1080 PRINT "THERE ARE LARGER BONUSES FOR COMPLETING ADJACENT COLUMNS OF LO NGER WORDS."; 1090 PRINT "ONLY WORDS FOUND IN A STANDARD DICTIONARY MAY BE USED - PROPER NA MES, FORIEGN WORDS, ABBREVIATIONS AND WORDS ALWAYS CAPITALIZEDARE NOT ALL OWED."; 1100 PRINT "ADDING AN 'S' TO A WORD TO FORM ITS PLURAL IS NOT ALLOWED. ENTERWO RDS BY TYPING THEM ON THE KEYBOARD, REVIEWING ON THE SCREEN AND PRESSIN G 'EXECUTE'."; 1110 PRINT " PRESS 'EXECUTE' FOR SCORING VALUES." 1120 KEYIN K$,1130,1110 : GOTO 1120 1130 PRINT HEX(03);"SCORING (ALL SCORING IS DONE BY THE 2200)" 1140 PRINT "WORDS 3 4 5 6 7 8 9 10" 1150 FOR X=2TO 6 : PRINTUSING 1210,C$(X-1),A(X,1),A(X,2),A(X,3),A(X,4),A(X,5),A(X,6),A(X,7), A(X,8) : NEXT X 1160 PRINT " BONUS 300 500 800 1200 1850" 1170 PRINT : PRINT "BONUS SCORING :" 1180 PRINT " IF YOU COMPLETE FIVE EACH IN TWO ADJACENT COLUMNS, YOU ARE GI VEN THE BONUS SCORE AS LISTED BETWEEN THE COLUMNS." 1190 PRINT : PRINT 1200 GOTO 860 1210 %##### #### #### #### #### #### #### #### #### 1220 DATA 60,10,120,20,200,50,300,100,500,150,750,250,1000,500,1500,1500,300,5 00,800,1200,1850