image of READY prompt

Wang2200.org

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"