1 REM "WORD345.BAS" 2002.03.05 2 POKE55,0:POKE56,56:CLR 3 GOSUB3002:GOTO5 4 GOSUB12:ONQ%GOTO4002 5 Q%=3:GOSUB102:IFP%=0THENGOSUB12:ONQ%GOTO4002,5,5,6,4 6 GOSUB192:ONQ%GOTO4002,5,5,5,4 10 : 12 : REM INPUT 14 : 16 POKE53287,1 18 SYSML+9:IFRG%=25THENIFCC%=C%(4)THENIFL%>2THENIFR2%=1THEN28 20 I%=CR%:IFI%=0THENSYSML+60,"PHQ":IFI%=0THEN18 22 IFI%<6THENONI%GOSUB502,546,564,470,480:ONQ%GOTO30,30:GOTO18 24 IFQ%=5THEN18 26 IFI%<25THENGOSUB138:GOTO18 28 GOSUB160:IFF%=0THEN18 30 POKE53287,7 32 RETURN 100 : 102 : REM INIT MOVE 104 : 106 CC%=C%(0):GOSUB114 108 K%=-1:L%=0:P%=1-P%:CC%=C%(4+P%):GOSUB114:GOSUB122:F%(10)=F%(10)ANDE%(1-P%) 110 RETURN 112 : 114 : REM PLAYER INDICATOR 116 : 118 SYSML+36,25+P%,255,CC%:RETURN 120 : 122 : REM INIT WORD 124 : 126 SYSML+30,P%(1,P%),P%(1,P%)+4,5,5,32,C%(4+P%):RETURN 128 : 130 : REM INIT GRID / PAINT GRID 132 : 134 SYSML+30,16,23,2,9,SC%,CC%:RETURN 136 : 138 : REM CHECK HUMAN LETTER 140 : 142 IFL%=0THEN152:REM 1ST 144 F%=(CC%=C%(4)):REM CANCEL 146 IFF%THENK%=-1:L%=0:SC%=255:CC%=C%(3):GOSUB130:GOSUB122:GOSUB186:GOTO156 148 IFL%=5THEN156:REM MAX 150 IFCC%<>C%(3)THEN156:REM INVALID 152 SYSML+36,I%,255,C%(4):K%=K%+1:F%(K%)=I%:GOSUB376:GOSUB444 154 POKEA(0)+12,I%:POKEA(0)+20,K%:POKEA(0)+22,L%:SYSGL+12 156 RETURN 158 : 160 : REM CHECK HUMAN WORD 162 : 164 IFL%=0THENF%=1:GOSUB460:GOTO174:REM PASS 166 IFL%<3THENF%=0:GOTO174 168 GOSUB388:IFF%=0THENF$="[196]UPLICATE":GOSUB178:GOTO174 170 M%=L%-1:IFR2%=0THENGOSUB396:IFF%=0THENF$="[215]ORDS[215]ORTH":GOSUB178:GOTO174 172 GOSUB186:GOSUB408:SC%=255:CC%=C%(3):GOSUB130 174 RETURN 176 : 178 : REM MESSAGE 180 : 182 SYSML+30,2,13,9,9,32,C%(1):SYSML+12,8-LEN(F$)/2,9,F$:RETURN 184 : 186 : REM ERASE MESSAGE 188 : 190 SYSML+30,2,13,9,9,160,C%(0):RETURN 192 : 194 : REM FIND COMPUTER WORD 196 : 198 F%=0:IFF%(5)=7THEN338 200 REM --- 5 LETTER 202 M%=4:IFFNF1(5)THEN256 204 FORI=6TO24:IFFNG1(I)=0THEN250 206 IFFNF1(I)THEN250 208 F%(0)=I:K%=0:L%=0:GOSUB376 210 L%(0)=L% 212 FORJ1=0TO7:F%(1)=F%(0)+FNG2(J1):IFFNG1(F%(1))=0THEN246 214 K%=1:L%=L%(0):GOSUB354:IFF%=0THEN246 216 L%(1)=L% 218 FORJ2=0TO7:F%(2)=F%(1)+FNG2(J2):IFFNG1(F%(2))=0THEN244 220 K%=2:GOSUB346:IFF%=0THEN244 222 L%=L%(1):GOSUB354:IFF%=0THEN244 224 L%(2)=L% 226 FORJ3=0TO7:F%(3)=F%(2)+FNG2(J3):IFFNG1(F%(3))=0THEN242 228 K%=3:GOSUB346:IFF%=0THEN242 230 L%=L%(2):GOSUB354:IFF%=0THEN242 232 IFL%=5THENGOSUB366:GOTO242 234 FORJ4=0TO7:F%(4)=F%(3)+FNG2(J4):IFFNG1(F%(4))=0THEN240 236 IFFNG1(F%(4))=81THEN240:REM "QU" 238 K%=4:GOSUB346:IFF%THENL%=4:GOSUB354:IFF%THENGOSUB366 240 NEXT 242 NEXT 244 NEXT 246 NEXT 248 IFF%=0THENGOSUB452 250 NEXT 252 IFF%THEN342 254 I=5:GOSUB452 256 REM --- 4 LETTER 258 M%=3:IFFNF1(5)THEN302 260 FORI=6TO24:IFFNG1(I)=0THEN296 262 IFFNF1(I)THEN296 264 F%(0)=I:K%=0:L%=0:GOSUB376 266 L%(0)=L% 268 FORJ1=0TO7:F%(1)=F%(0)+FNG2(J1):IFFNG1(F%(1))=0THEN292 270 K%=1:L%=L%(0):GOSUB354:IFF%=0THEN292 272 L%(1)=L% 274 FORJ2=0TO7:F%(2)=F%(1)+FNG2(J2):IFFNG1(F%(2))=0THEN290 276 K%=2:GOSUB346:IFF%=0THEN290 278 L%=L%(1):GOSUB354:IFF%=0THEN290 280 IFL%=4THENGOSUB366:GOTO290 282 FORJ3=0TO7:F%(3)=F%(2)+FNG2(J3):IFFNG1(F%(3))=0THEN288 284 IFFNG1(F%(3))=81THEN288:REM "QU" 286 K%=3:GOSUB346:IFF%THENL%=3:GOSUB354:IFF%THENGOSUB366 288 NEXT 290 NEXT 292 NEXT 294 IFF%=0THENGOSUB452 296 NEXT 298 IFF%THEN342 300 I=5:GOSUB452 302 REM --- 3 LETTER 304 M%=2:IFFNF1(5)THEN338 306 FORI=6TO24:IFFNG1(I)=0THEN332 308 IFFNF1(I)THEN332 310 F%(0)=I:K%=0:L%=0:GOSUB376 312 L%(0)=L% 314 FORJ1=0TO7:F%(1)=F%(0)+FNG2(J1):IFFNG1(F%(1))=0THEN328 316 K%=1:L%=L%(0):GOSUB354:IFF%=0THEN328 318 IFL%=3THENGOSUB366:GOTO328 320 FORJ2=0TO7:F%(2)=F%(1)+FNG2(J2):IFFNG1(F%(2))=0THEN326 322 IFFNG1(F%(2))=81THEN326:REM "QU" 324 K%=2:GOSUB346:IFF%THENL%=2:GOSUB354:IFF%THENGOSUB366 326 NEXT 328 NEXT 330 IFF%=0THENGOSUB452 332 NEXT 334 IFF%THEN342 336 I=5:GOSUB452 338 REM --- PASS 340 SYSML+24,10:GOSUB460 342 RETURN 344 : 346 : REM POSSIBLE LETTER? NO(F%=0) YES(F%=1) 348 : 350 J%=K%-1:FORJ=0TOJ%:F%=(F%(K%)=F%(J)):J=J+(J-J%)*F%:NEXT:F%=1+F%:RETURN 352 : 354 : REM POSSIBLE WORD? NO(F%=0) YES(F%=1) 356 : 358 GOSUB376:IFL%<=M%THENFORJ=A(4)+L%TOA(4)+M%:POKEJ,63:NEXT 360 GOSUB396 362 RETURN 364 : 366 : REM WORD OK? NO(F%=0) YES(F%=1) 368 : 370 GOSUB388:IFF%THENGOSUB444:GOSUB408:I=24:J1=7:J2=7:J3=7:J4=7 372 RETURN 374 : 376 : REM UPDATE WORD 378 : 380 POKEA(4)+L%,PEEK(A(1)+F%(K%)):L%=L%+1 382 IFFNG1(F%(K%))=81THENPOKEA(4)+L%,85:L%=L%+1:REM "QU" 384 RETURN 386 : 388 : REM CHECK LIST FOR WORD MATCH(F%=0) 390 : 392 POKEA(0)+22,L%:SYSGL+3:F%=FNG0(10):RETURN 394 : 396 : REM LOOKUP WORD IN WORDSWORTH 398 : 400 POKEAA,M%+1:SYSML+129,A(4),A(4)+M%+1,PEEK(AA+1)+PEEK(AA+2)*E%(8) 402 SYSWW+3,A$ 404 RETURN 406 : 408 : REM RESULTS 410 : 412 P%(0,P%)=P%(0,P%)+E%(M%-2) 414 POKE646,CC%:SYSML+12,P%(2,P%),7,RIGHT$(" "+STR$(P%(0,P%)),3):POKE646,C%(2) 416 SYSGL+6:C%=FNG0(4):N%=FNG0(26):IFC%W%(0)THENW%(0)=C% 420 GOSUB490 422 C%=(N%-1)/14:C%=C%-5:IFC%>W%(1)THENW%(1)=C% 424 IFN%=182THENGOSUB430 426 RETURN 428 : 430 : REM GAME OVER 432 : 434 CC%=C%(0):GOSUB114:IFP%(0,0)=P%(0,1)THEN438:REM TIE 436 P%=1+(P%(0,0)>P%(0,1)):CC%=C%(4+P%):GOSUB114 438 Q%=5:F$="[199]AME [207]VER":GOSUB178 440 RETURN 442 : 444 : REM DISPLAY WORD 446 : 448 SYSML+129,A(4),A(4)+L%,1224+P%(1,P%):RETURN 450 : 452 : REM WORD 1ST LETTER FLAG F%(5) - ALL WORDS 454 : 456 F%(I)=F%(I)ORE%(M%-2):RETURN 458 : 460 : REM PASS FLAG 462 : 464 F%(10)=F%(10)ORE%(P%):IFF%(10)=3THENGOSUB430 466 RETURN 468 : 470 : REM PAN LEFT 472 : 474 IFW%(0)>0THENW%(0)=W%(0)-1:GOSUB490 476 RETURN 478 : 480 : REM PAN RIGHT 482 : 484 IFW%(0)0) 3024 DEFFNG0(X)=PEEK(A(0)+X) 3026 DEFFNG1(X)=PEEK(A(1)+X) 3028 DEFFNG2(X)=PEEK(A(2)+X)-6 3030 REM --- 2^ 3032 E%(0)=1:FORJ=1TO8:I=J-1:E%(J)=E%(I)+E%(I):NEXT 3034 REM --- MOUSE 3036 ML=64*E%(8):MV=ML+309:POKEMV+1,93:FORI=42TO49:READX:POKEMV+I,X:NEXT 3037 SYSML+204,120*E%(8) 3038 HG%=100:HH%=108:LG%=0:LH%=LG%+25*4 3040 MM=92*E%(8):POKEMM+9,0 3042 REM --- RANDOM 2-254 3044 RL=94*E%(8):RV=RL+95:POKE176,0:POKE177,94 3046 REM --- WORD345.ZML 3048 X=148*E%(8):SYSX:GL=X+188 3050 A(0)=RV + 16:REM VAR A-Z 3052 A(1)=A(0)+ 52:REM GRID 3054 A(2)=A(1)+ 31:REM GRID STEPS 3056 A(3)=A(2)+ 8:REM GRID POINTERS 3058 A(4)=A(3)+ 5:REM WORD 3060 A(5)=A(4)+ 5:REM LIST 3062 A(6)=A(5)+1078:REM END+1 (N.R.) 3064 REM --- WORDS.ML (WORDSWORTH) 3066 WW=40000:SYSWW,F%,W$ 3068 A$=STR$(PEEK(71)+PEEK(72)*E%(8)):AA=VAL(A$) 3070 REM --- COLORS 3072 FORI=0TO5:READC%(I):NEXT 3074 REM --- WORD DICE SCREEN CODES(65-90) 3076 FORI=0TO15:READF$:FORJ=0TO5:D%(J,I)=ASC(MID$(F$,J+1,1)):NEXT:NEXT 3078 REM --- GRID 3080 FORI=0TO7:READI%:POKEA(2)+I,I%+6:NEXT 3082 FORI=0TO5:POKEA(1)+I,0:NEXT:FORI=25TO30:POKEA(1)+I,0:NEXT 3084 FORI=6TO24:POKEA(1)+I,32:NEXT:FORI=10TO20STEP5:POKEA(1)+I,0:NEXT 3086 REM --- 3088 POKE53265,11 3090 POKE53280,C%(0):POKE53281,C%(1) 3092 REM --- HELP 3094 SYSML+231,HH%,HH%+4 3096 POKEMV,LH% 3100 CX%=0:FORI=1TO4:SYSML+15,I,CX%,CX%+7,0,0:CX%=CX%+8:NEXT 3102 SYSML+231,4,56 3104 REM --- GAME 3105 POKEMV,LG% 3106 SYSML+30,0,39,0,24,160,C%(0):SYSML+30,0,38,0,0,255,C%(1) 3107 POKE646,C%(3):SYSML+12,1,0,"[[208]]LAY [[200]]ELP [[209]]UIT" 3108 CX%=0:FORI=1TO3:SYSML+15,I,CX%,CX%+7,0,0:CX%=CX%+8:NEXT 3114 POKE199,1:SYSML+12,0,17,"][221]":SYSML+12,0,18,"=[189]":SYSML+15,4,0,1,17,18 3116 SYSML+12,37,17,"[[219]":SYSML+12,37,18,";[187]":SYSML+15,5,37,38,17,18:POKE199,0 3118 CX%=16:CY%=2:FORI=6TO24:IFFNG1(I)=0THENCX%=16:CY%=CY%+2:GOTO3122 3120 SYSML+15,I,CX%,CX%+1,CY%,CY%+1:CX%=CX%+2 3122 NEXT 3124 FORI=10TO20STEP5:SYSML+15,I,255,255,255,255:NEXT:REM N/A 3125 SYSML+15,25,6,8,2,3:SYSML+15,26,30,32,2,3 3126 POKE646,C%(2):SYSML+12,28,0,"[215]ORD 3-4-5":SYSML+30,2,36,11,24,32,C%(2) 3132 P%(1,0)=5:P%(2,0)=6 3134 P%(1,1)=29:P%(2,1)=30 3136 GOSUB502:SYSML+39,HG% 3138 REM --- TITLE 3140 POKE53280,0:POKE53281,0 3142 FORI=0TO23STEP2:J=I+1 3144 SYSML+126,0,39,I,I,159,223,11,11:SYSML+126,0,39,J,J,255,191,12,12:NEXT 3146 SYSML+30,4,35,6,15,160,15+16:SYSML+30,0,39,24,24,160,0 3148 POKE646,1 3150 SYSML+27,8,"[161][162][163][164][165][166][167][168] [169][170][189][171][172][189][173][174]" 3152 SYSML+27,9,"[175][176][177][178][179][180][181][182][160][160][183][184] [185][186] [187][188]" 3156 POKE646,14:SYSML+27,11,"[190][191] 2002 [202] & [198] [208]UBLISHING, [201]NC." 3158 POKE646,13:SYSML+27,13,"BY [204]ANCE [195]. [212]HOMAS" 3160 POKE646,10:SYSML+27,24,"[208]RESS A KEY TO PLAY." 3161 POKE646,C%(2) 3162 REM --- START 3164 POKE53265,27:POKE198,0:WAIT198,15:POKE198,0 3166 POKE53265,11:SYSML+42,HG%:POKEMV,LG%:POKEMV+2,25:SYSMM:SYSML:POKE53265,27 3168 SYSML+6,704:SYSML+18,0,38,0,22 3170 SYSML+129,704,704+64,25536:REM HELP SCREEN SPRITE 3172 X=HH%*E%(8)+1016:POKEX,143:POKEX+1,143:REM HELP SCREEN POINTER (SPR 0-1) 3176 RETURN 4000 : 4002 : REM EXIT 4004 : 4006 POKE53269,0:SYSML+3:SYSMM+3:GOTO40000 9000 : 9002 : REM DATA 9004 : 9006 DATA 158,190,222,254,156,220,188,252:REM BOX 9100 DATA 12,15,11,0,6,2:REM COLORS 9200 DATA DSYITT 9201 DATA TTOAOW 9202 DATA WEGHNE 9303 DATA THRVWE 9304 DATA AEANGE 9305 DATA EVLRDY 9306 DATA ENSIEU 9307 DATA CPOHSA 9308 DATA ZNRNLH 9309 DATA KAFPSF 9310 DATA EDLXIR 9311 DATA AJBOOB 9312 DATA TSEISO 9313 DATA RYTLET 9314 DATA CTUIMO 9315 DATA HIUNMQ 9400 DATA 1,-1, 5,-5, 4,-4, 6,-6:REM GRID STEPS 9998 : 10000 A$="WORD345.BAS":DV=PEEK(186):IFDV<8ORDV>28THENDV=8 10010 OPEN15,DV,15,"S0:"+A$:CLOSE15:SAVEA$,DV:END 40000 FORI=8TO29:POKE820+I,I:NEXT:IFDV>8ANDDV<30THENPOKE828,DV:POKE820+DV,8 40010 A$="PRESENTER":GOSUB40030:A$="HELLO CONNECT":GOSUB40030 40020 PRINT"[147]":POKE53272,23:POKE53280,11:POKE53281,0:POKE646,13:END 40030 FORJ=8TO29:I=PEEK(820+J):IFI=14THENNEXT 40040 CLOSE2:OPEN2,I,2:CLOSE2:IFSTTHEN40060 40050 CLOSE15:OPEN15,I,15,"R0:"+A$+"="+A$:INPUT#15,ER:CLOSE15:IFER=63THEN40070 40060 NEXT:RETURN 40070 A$="HELLO CONNECT":Q$=CHR$(34):POKE646,PEEK(53281):PRINT"[147]":POKE53272,23 40080 PRINT"[147]P[207]2048,0:P[207]44,8:P[207]43,1:P[207]56,160:P[207]55,0:CLR:L[207]"Q$A$Q$","I 40090 PRINT"RUN:":POKE631,13:POKE632,13:POKE198,2:END