Listing of file='WORDO' on disk='vmedia/gamesall.wvd.zip'
# Sector 641, program filename = 'WORDO' 0010 REM WORDO - D. ANGEL - 8/8/75 2200B+OP5 0030 COM A$(13)6,A(6,8),A0(5),B(8),Z0$16,Z2$64,Z8$64,Z9$64,R : DIM N$(5)20,N$30,S(5),V(5),K$1,B$(1)2,D$(13)1,T$28,M$26,M1$26,W$11,W0(10) ,W$(8,10)11,W(8) : GOTO 8000 0040 DIM M$(2)26 0050 RETURN : %WORD ENTRY ROUTINE 0055 J=0 : W$=" " : M$=T$ : PRINT STR(Z0$,1,X3);"TYPE LETTERS AVAILABLE";HEX(0D0A) ;Z2$ 0059 PRINT HEX(0D);W$;HEX(0D);STR(Z9$,44);STR(M$,1);HEX(0D);STR(Z9$,1,J+1); 0060 T=T-.02 : KEYIN K$,70,65 : IF T<0 THEN 200 : IF T>INT(T)THEN 60 : PRINT HEX(0D);STR(Z9$,15);T;" " : GOTO 59 0062 M1$=T$ : M$,W$=" " : J2,J=0 : PRINT Z2$ 0063 IF M1$=" "THEN 59 : I=2+2*INT(13*RND(1)) : IF STR(M1$,I,1)=" "THEN 63 0064 J2=J2+2 : STR(M$,J2,1)=STR(M1$,I) : STR(M1$,I,1)=" " : GOTO 63 0065 IF K$=HEX(00)THEN 200 : IF K$=HEX(0F)THEN 66 : IF K$=HEX(04)THEN 62 : IF K$=HEX(05)THEN 188 : IF K$<>HEX(1F)THEN 60 : T=T+60 : GOTO 60 0066 PRINT HEX(01);STR(Z9$,1,50);"TIMEOUT";STR(Z0$,1,X3+1) 0067 KEYIN K$,70,65 : GOTO 67 0070 IF K$<"A" THEN 90 : IF K$=HEX(E5)THEN 80 : IF J>9 THEN 60 : INIT(K$)M1$ : XOR (M1$,M$) : I=POS(M1$=00) : IF I=0 THEN 60 : J=J+1 : STR(W$,J,1)=K$ : W0(J)=I : STR(M$,I,1)=" " : PRINT K$; : GOTO 59 0080 IF J=0 THEN 60 : 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 59 0090 IF K$<>HEX(08) THEN 100 : IF J=0 THEN 60 : STR(M$,W0(J),1)=STR(W$,J) : STR(W$,J)=" " : J=J-1 : PRINT HEX(082008); : GOTO 59 0100 IF K$<>HEX(0D) THEN 60 : IF J<3 THEN 60 : PRINT STR(Z0$,1,X4);Z2$; 0110 IF V(P1)=0 THEN 120 : IF J>3 THEN 120 : PRINT " YOU ARE VULNERABLE, AND NEED AT LEAST FOUR LETTER WORDS";HEX(0C) : GOTO 59 : %TEST WORD FOR DUPLICATION 0120 MAT SEARCH W$(),=STR(W$,1,J+1) TO B$()STEP 11 : IF B$(1)=HEX(0000)THEN 130 : PRINT " '";W$;"' WAS ALREADY USED" : M$=T$ : GOTO 55 0130 REM POSSIBLE TEST FOR PLURAL HERE 0160 J2=J-2 : IF W(J2)=10 THEN 180 : 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 185 0180 MAT COPY W$()<J2*110-98,99> TO W$()<J2*110-109,99> : W$(J2,10)=W$ : PRINT STR(Z0$,1,X8); : FOR I=6 TO 10 : PRINT STR(Z9$,1,B(J2));W$(J2,I) : PRINT : NEXT I 0185 REM 0188 IF W$=" " THEN 55 0190 FOR I=1TO LEN(W$) : STR(T$,2*I)=STR(W$,I,1) : NEXT I : FOR I=2TO 26STEP 2 : STR(T$,2+LEN(T$),1)=STR(M$,I,1) : NEXT I : GOTO 55 0200 SELECT PRINT 005 : 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." 0205 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" 0208 PRINT TAB(20);"(";T$;")" 0210 FOR I=1 TO 8 : FOR J=6 TO 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 : GOTO 260 0230 PRINT STR(Z0$,1,J+X8-6);STR(Z9$,1,B(I)); 0240 KEYIN K$,250,370 : GOTO 240 0250 IF K$="N" THEN 280 : IF K$="Y"THEN 255 : IF K$<>HEX(0D)THEN 240 : I=0 : J=6 : GOTO 260 0255 J=J+1 : IF J<=W(I)THEN 230 : J=6 0260 I=I+1 : IF I>8 THEN 380 : IF W$(I,J)<>" " THEN 230 : GOTO 260 0280 IF W$(I,5)<>" " THEN 320 : 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 350 : IF W$(I,J)<>" " THEN 230 : GOTO 255 0320 W$(I,J)=W$(I,5) : PRINT W$(I,J) : MAT COPY -W$()<110*I-109,44> TO -W$()<110*I-109,55> : GOTO 230 : %SCORE DISPLAY SUBROUTINE 0340 N$=" " : I=I+1 : IF I>P THEN 50 : IF I=P1 THEN 340 : 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 0350 FOR J1=6 TO 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 0370 IF K$<>HEX(01) THEN 240 0380 S=0 : FOR I=1 TO 8 : S=S+A(W(I)-4,I) : NEXT I : FOR I=1 TO 5 : IF W(I)+W(I+1)<20 THEN 390 : S=S+A0(I) 0390 NEXT I 0400 IF V(P1)=0 THEN 410 : IF S>499 THEN 410 : S=-500 0410 S(P1)=S(P1)+S : SELECT PRINT 005 : PRINT HEX(03);N$(P1);" GETS ";S; : IF V(P1)>0 THEN 430 : IF S(P1)<2000 THEN 430 : V(P1)=2000 : PRINT " POINTS, AND IS NOW VULNERABLE WITH A SCORE OF ";S(P1) : PRINT : PRINT : GOTO 440 0430 PRINT " POINTS, FOR A NET SCORE OF ";S(P1) : PRINT : PRINT 0440 FOR I=1 TO P : PRINT N$(I);TAB(30);S(I) : NEXT I : PRINT : PRINT : %ROLL DICE FOR NEXT PLAYER 0500 SELECT PRINT 005 : P1=P1+1 : IF P1<=P THEN 510 : IF S9>0 THEN 2000 : P1=1 0510 INIT(20)W$(),D$(),T$ : FOR I=1 TO 8 : W(I)=5 : NEXT I 0530 PRINT " PRESS EXECUTE TO ROLL DICE FOR ";N$(P1) 0540 KEYIN K$,550,540 : I=RND(1) : GOTO 540 0550 IF K$<>HEX(0D) THEN 540 : PRINT HEX(03);N$(P1); : IF V(P1)>0 THEN 555 : PRINT "'S TURN"; : GOTO 560 0555 PRINT "'S VULNERABLE"; 0560 PRINT " WITH";S(P1);" POINTS." : I=0 0562 GOSUB 340 : PRINT N$;TAB(32); : GOSUB 340 : PRINT N$ : GOSUB 340 : PRINT N$;TAB(32); : GOSUB 340 : PRINT N$ 0565 FOR I=1 TO 10 : STR(T$,2*I,1),D$(I)=STR(A$(I),1+6*RND(1)) : NEXT I 0570 SELECT PRINT 005 : PRINT STR(Z0$,1,X8-1); : PRINT " 3 4 5 6 7 8 9 10" : IF X6=0THEN 590 : PRINT " 60 120 200 300 500 750 1000 1500" 0580 FOR I=1 TO 4 : PRINT " 10 20 50 100 150 250 500 1500" : NEXT I : PRINT " 300 500 800 1200 1850";HEX(0C) 0590 IF V(P1)=0 THEN 600 : PRINT STR(Z0$,1,X8-1); : FOR I=1 TO 6 : PRINT " " : NEXT I : PRINT " "; : FOR I=11 TO 13 : STR(T$,2*I,1),D$(I)=STR(A$(I),1+6*RND(1)) : NEXT I 0600 IF X9=0 THEN 610 : PRINT STR(Z0$,1,X9); : ON 1+6*RND(1) GOSUB 710,730,750,770,790,810 0610 SELECT PRINT 405 0670 T=180.02 : GOTO 55 : %DISPLAY DICE (PATTERN) 0710 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 V(P1)<2E3THEN 50 0720 PRINT TAB(27);D$(11);TAB(32);D$(12);TAB(55);D$(13); : GOTO 50 0730 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 V(P1)<2E3THEN 50 0740 PRINT TAB(37);D$(11);TAB(44);D$(12);TAB(57);D$(13); : GOTO 50 0750 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 V(P1)<2E3THEN 50 0760 PRINT TAB(14);D$(11);TAB(24);D$(12);TAB(59);D$(13); : GOTO 50 0770 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 V(P1)<2E3THEN 50 0780 PRINT TAB(17);D$(11);TAB(21);D$(12);TAB(55);D$(13); : GOTO 50 0790 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 V(P1)<2E3THEN 50 0800 PRINT TAB(46);D$(11);TAB(53);D$(12);TAB(59);D$(13); : GOTO 50 0810 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 V(P1)<2E3THEN 50 0820 PRINT TAB(21);D$(11);TAB(42);D$(12);TAB(62);D$(13); : GOTO 50 2000 STOP " COMPARE FINAL SCORES TO DETERMINE WINNER" 7000 REM % DIFFERENT SCREEN VERSIONS 7010 DEFFN'0 : X0=1 : X1=2 : X3=4 : X4=6 : X6=0 : X8=11 : RETURN 7020 DEFFN'1 : X0=1 : X1=2 : X3=4 : X4=6 : X6=1 : X8=11 : RETURN 7030 DEFFN'2 : X0=1 : X1=2 : X3=4 : X4=6 : X6=1 : X8=9 : RETURN 8000 SELECT P,PRINT 005(64),LIST 005(64),CO 005(64),CI 001,INPUT 001 : PRINT HEX(03);" PERQUACKEY - A WORDO GAME BY DAVE ANGEL" : PRINT : PRINT " FOR INSTRUCTIONS, TYPE 'Y' INSTEAD OF # OF PLAYERS" : PRINT : IF A0(5)>0 THEN 8100 : %COMMON SETUP 8010 B(1)=1 : FOR I=2 TO 8 : B(I)=B(I-1)+I+2 : NEXT I 8020 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" 8030 A$(10)="LOWBOY" : A$(11)="JCDMGK" : A$(12)="WVSYSQ" : A$(13)="BPFNHL" 8040 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" 8050 FOR J=1 TO 8 : A(1,J)=0 : READ A(2,J) : READ A(6,J) : FOR I=3 TO 6 : A(I,J)=A(I-1,J)+A(6,J) : NEXT I : NEXT J 8060 FOR I=1 TO 5 : READ A0(I) : NEXT I : %NON-COMMON SETUP 8100 X0=1 : X1=2 : X3=4 : X4=6 : X6=0 : X8=11 8120 W$="2" : INPUT "NUMBER OF PLAYERS (1 TO 5)",W$ : IF W$="Y"THEN 8140 : IF NUM(W$)<LEN(W$) THEN 8120 : CONVERT W$ TO P : P=INT(P) : IF P>5 THEN 8120 : IF P<1 THEN 8120 : INIT(20)N$() 8130 FOR I=1 TO P : S(I),V(I)=0 : N$(I)="PLAYER" : CONVERT I TO STR(N$(I),8),(#) : PRINT "NAME OF PLAYER ";I; : INPUT N$(I) : NEXT I : P1=0 : PRINT HEX(03) : GOTO 500 8140 R=R+1 : IF R=1 THEN 8200 : IF R>5 THEN 8170 : PRINT HEX(03);" BUT YOU ALREADY SAW THEM !!!!" : PRINT : PRINT " HOWEVER, SINCE YOU INSIST, HERE THEY ARE AGAIN" : FOR I=1 TO 300 : NEXT I : GOTO 8200 8170 PRINT HEX(03);" ALRIGHT ALREADY, YOU'VE ALREADY SEEN THE RULES";R;"TIME S." : PRINT " ENOUGH IS ENOUGH, GOODBYE" 8180 LOAD "\81" 8200 PRINT HEX(03);"RULES FOR PLAYING PERQUACKEY:"; 8210 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."; 8220 PRINT "THE LETTERS ARE 'ROLLED' BY PRESSING 'EXECUTE'." : PRINT "TEN LETTERS WILL BE DISPLAYED NEAR THE TOP OF THE SCREEN."; 8230 PRINT "YOU HAVE THREE MINUTES TO BUILD AS MANY WORDS AS YOU CAN."; 8240 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)."; 8250 PRINT "YOU NEED FIVE EACH OF THREE, FOUR, FIVE, ETC. LETTER WORDS (Y OU NEED NOT FINISH ONE GROUP TO WORK ON ANOTHER)."; 8260 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"; 8265 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."; 8270 PRINT " PRESS 'EXECUTE' FOR MORE RULES."; 8280 I=RND(1) : KEYIN K$,8290,8280 : GOTO 8280 8290 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."; 8300 PRINT "UNTIL YOU GET A SCORE OF 2000, ONLY TEN LETTERS ARE SHOWN AND YO U CAN BUILD WORDS OF THREE OR MORE LETTERS."; 8310 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."; 8320 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."; 8330 PRINT "PRESS 'EXECUTE' FOR ADDITIONAL RULES" 8350 I=RND(1) : KEYIN K$,8360,8350 : GOTO 8350 8360 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."; 8370 DIM C$(5) : C$(1)="ONE" : C$(2)="TWO" : C$(3)="THREE" : C$(4)="FOUR" : C$(5)="FIVE" 8380 PRINT "THERE ARE LARGER BONUSES FOR COMPLETING ADJACENT COLUMNS OF LO NGER WORDS."; 8410 PRINT "ONLY WORDS FOUND IN A STANDARD DICTIONARY MAY BE USED - PROPER NA MES, FORIEGN WORDS, ABBREVIATIONS AND WORDS ALWAYS CAPITALIZEDARE NOT ALL OWED."; 8420 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'."; 8450 PRINT " PRESS 'EXECUTE' FOR SCORING VALUES." 8460 KEYIN K$,8470,8450 : GOTO 8460 8470 PRINT HEX(03);"SCORING (ALL SCORING IS DONE BY THE 2200)" 8480 PRINT "WORDS 3 4 5 6 7 8 9 10" 8490 FOR X=2TO 6 : PRINTUSING 9710,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 8500 PRINT " BONUS 300 500 800 1200 1850" 8510 PRINT : PRINT "BONUS SCORING :" 8520 PRINT " IF YOU COMPLETE FIVE EACH IN TWO ADJACENT COLUMNS, YOU ARE GI VEN THE BONUS SCORE AS LISTED BETWEEN THE COLUMNS." 8530 PRINT : PRINT 9700 GOTO 8120 9710 %##### #### #### #### #### #### #### #### #### 9860 DATA 60,10,120,20,200,50,300,100,500,150,750,250,1000,500,1500,1500,300,5 00,800,1200,1850 9950 DEFFN'20 : LOAD DC F"!" 9960 DEFFN'22 : LOAD DC F"QUACK"