P494 ORACLE 494 Mon26 Apr ITV 1911:11 30308107NISE0u NEWBELC 30308107NISE0u 54 Arw(2,2)=Scrn(X,Y) : Scrn(X,Y)=Arw(2, 1) : Arw(1,1)=X : Arw(1,2)=Y|h55 PRINT C UR(Y,X);CHR$(Scrn(X,Y));CUR(Y,X); : RETU RN |$56 ! delete|;57 IF Y<=Mlin+1 OR (Ar w(2,1)>=Asca AND Arw(2,1)<=Ascz) OR Arw( 2,2)Ascz THEN RETURN | 558 GOSUB 84 : Scrn(X,Y)=Ascdot : PRINT CUR(Y,X-1);gHT;b."; : IF Scrn(X+2,Y)=Asc dot THEN PRINT "!";|b59 Score=Score-FNSc (Arw(2,2)) : IF Scrn(X-2,Y)=Ascdot THEN PRINT CUR(Y,X-1);"!";|f60 GOSUB 78 : RET URN |+61 ! release|%62 IF Arw(2,1)=Sq TH EN Arw(2,1)=Blk : Scrn(X,Y)=Blk : PRINT CHR$(Arw(2,1))|$63 IF Y>Mlin+1 AND Arw(2 ,1)<>Blk THEN Score=Score+FNSc(Arw(2,1)) |{64 IF Y>Mlin+1 AND Arw(2,2)<>Ascdot AN D Arw(2,2)<>Blk THEN Score=Score-FNSc(Ar w(2,2))|v65 IF Arw(2,2)<>Ascdot AND Arw( 2,2)<>Blk THEN GOSUB 84|e66 T=FNLet(Scrn (X,Y)) : GOSUB 78 : RETURN |j|
P494 ORACLE 494 Mon26 Apr ITV 1900:00 30308107NISE0u NEgBELC 30308107NISE0u 1 INTEGER : EXTEND : SINGLE : OPTION BAS E 0|72 DATA 1,3,3,2,1,4,2,4,1,8,5,1,3,1, 1,3,9,1,1,1,1,4,4,8,4,9|)3 DIM Letval(26 ),Mline(40,1),Scrn(40,23),Arw(3,2)|}4 DI M M$(23)=40|25 FOR I=0 TO 25 : READ Letv al(I) : NEXT I |r6 M$(1)=" The idea is t o get as high a score" : M$(2)="as possi ble, by placing letters on"|37 M$(3)="on the board. The score will be"|98 M$(4) ="kept by the television." : M$(5)=" " : M$(6)=" To put a letter on the board mo ve"|z9 M$(7)="the white square until it is on a"|e10 M$(8)="letter. Press O to grab the letter." : M$(9)="The letter ca n then be moved onto"|j11 M$(10)="the bo ardN Press 0 to release it."|%12 M$(11) =" " : M$(12)=" To delete a letter from the board," : M$(13)="position the white square on it" : M$(14)="and press *."|1 |
P494 ORACLE 494 Mon26 Apr ITV 1900:10 30308107NISE0u NEWBELC 30308107NISE0u 13 M$(15)=" " : M$(16)=" The white squar e can be moved by" : M$(17)="pressing ei ther 2,4,6, or 8 on the" : M$(18)="key p ad. up 2"|—14 M$(19)=" left right 4 6" : M$(20)=" down 8" : M$(21)=" Pres s # to continue."|r15 DEF FNSc(L)=(Scrn( X,21)-Asc0)*(Scrn 35,Y)-Asc0)*Letval(L-A sca) |16 Del=42 : Grab=95 : Rel=48|"17 Blk=ASCII(" ") : Asc0=ASAHI("0") : Asca= ASCII("A") : Ascz=ASCHI("Z") : Mnx=3 : M xx=31 : Mny=3 : Mxy=19 : Mlin=3|>18 Ascd ot=ASCHH(b.") : Sq=ASCHH("")|d19 Moto$= "ORACLE A WORD IN YOUR EYE"|f20 PRINT CH R$(12);YEL;NWBG;RED;DBLE " Bl ecbars";NRML;"(C) HQ 1981" : PRINT |221 FOR I=1 TO 21 : T=FNPr(M$(I)) : NEXT I | "22 T=FNKey : PRINT YEL;NSBG;RED;FLSH;"R unning";|a23 IF LEN(Moto$)>29 THEN PRINT "moto too long" : STOP |-|
P494 ORACLE 494 Mon26 Apr ITV 1901:14 30308107NISE0u NEWBELC 30308107NISE0u 67 FOR J=0 TO 21 : FOR I=0 TO 39 : Scrn( I,J)=Blk : NEXT I : NEXT J |n68 FOR J=3 TO Mxy : FOR I=2 TO Mxx-1 STEP 2 : Scrn( I,J)=ASCII("!")|o69 Scrn(I+1,N<=Ascdot : NEXT I : Scrn(Mxx+1,N(=ASCHH("!") : NEX T J |y70 FOR I=0 TO 39 : Scrn(I,Mlin-1)= Mline(I,0) : Scrn(I,Mlin)=Mline(I,1) : N EXT I : Scrn(1,Mlin-1)=132 : Scrn(1,Mlin )=130|f71 FOR I=1 TO 15 : IF I>8 THEN J= 16-I ELSE J=I|72 Scrn(I*2+1,21)=N+Asc0 : Scrn(35,I+4)=J+Asc0 : Scrn(34,I+4)=134 : NEXT I : Scrn(1,21)=134 : RETURN |.73 ! print board|<74 PRINT CHR$(12); : FOR J=0 TO 21 : FOR I=0 TO 37 : PRINT CHR$( Scrn(I,J)); : NEXT I |b73 PRINT : NEXT J : PRINT YEL;NWBG;RED;DBLE;" * Delete 0 Release # Grab";|}76 PRINT CUR(2,0); NwBG|h77 ! ready|—78 PRINT CUR(0,0);YEL; " Ready"; : GOSUB 90|v|
P494 ORACLE 494 Mon26 Apr ITV 1901:11 30308107NISE0u NEWBELC 30308107NISE0u 79 X=3 : Y=1 : Arw(2,2)=Blk : Arw(2,1)=S q : Arw(1,1)=X : Arw(1,2)=Y : PRINT CUR( Y,X);"";CUR(Y,X); : RETURN |l80 FOR I=1 TO 5 : FOR J=1 TO 100 : NEXT J : PRINT CUR(0,0);RED;E$;CHR$(7);CUR(0,0);|s81 FOR J=1 TO 100 : NEXT J : PRINT " ";|a82 NEX T I : PRINT CUR(0,0); : PRINT YEL;"Ready "; : GOSUB 90 : PRINT CUR(Y,X); : RETURN |.83 ! replace let|)84 Any=0|=85 FOR I= Start TO Start+LEN(Moto$)-1|186 IF (An y=0 AND Mline(I,1)<>Arw(2,2)) OR (Scrn(I ,3)<>Blk AND Scrn(I,3)<>Sq) THEN GOTO 89 |p87 Scrn(I,3)=Arw(2,2) : Scrn(I,2)=Le tval(Arw(2,2)-Asca)+Asc0|b88 PRINT CUR (2,I);CHR$(Scrn(I,2));CUR(3,I);CHR$(Scrn (I,3));CUR(Y,X); : RETURN |889 NEXT I : Any=1 : GOTO 81|%90 PRINT CUR(0,26);"Sco re ";CUR(0,32);Score; : RETURN |/9 1 ! print letter|$92 DEF FNLet(Let)|%|
P494 ORACLE 494 Mon26 Apr ITV 1900:00 30308107NISE0u NEgBELC 30308107NISE0u 24 FOR I=0 TO 39 : Mline(I,0)=Asc0 : Mli ne(I,1)=Blk : NEXT I |u25 Start=18-INT(L EN(Moto$)/2+.6)|£26 FOR I=Start TO Start -1+LEN(Moto$) : Mline(I,1)=ASCII(MID$(Mo to$,I-Start+1,1))|d27 IF Mline(I,1)>=A sca AND Mline(I,1)<=Ascz THEN Mline(I,0) =Letval(Mline(I,1)-Asca)+Asc0|/28 NEXT I |n29 FOR I=0 TO Start-1 : Mline(I,0)=Bl k : NEXT I : FOR I=Start+LEN(Moto$) TO 3 9 : Mline(I,0)=Blk : NEXT I |o30 GOSUB 6 7|,31 GOSUB 74|+32 GOSUB 78|033 ! cmd pr ocessor|w34 Key=FNKey|&35 IF Key=Del THE N GOSUB 57 : GOTO 34 ELSE IF Key=Grab TH EN GOTO 39 ELSE IF Key=Rel THEN GOSUB 62 : GOTO 34|c36 IF Key<49 OR Key=53 OR Ke y>17 THEN E$="Unknown command" : GOSUB 8 0 ELSE GOSUB 48| 37 GOTO 34|f38 ! grab|d 39 IF Arw(2,2)Ascz THE N E$="No letter found" : GOSUB 80 : GOTO 34|o40 IF Arw(2,1)=Sq THEN T=Blk ELSE T =Arw(2,1)|w41 Arw(2,1)=Arw(2,2)|s|
P494 ORACLE 494 Mon26 Apr ITV 1902:12 30308107NISE0u NEWBELC 30308107NISE0u 93 IF LetAscz THEN RETURN 1 ELSE IF Y ; ELSE PRINT CHR$(8);GRN;CHR$(Let);||94 IF Scrn(X+2,Y)=Ascdot THEN PRINT WHT;| ÷95 RETURN 0|z96 FNEND |697 DEF FNKey| 898 OUT 128,125|d99 IF INP(129) AND 2=0 THEN 99|d100 FOR N=1 TO 5 : NEXT N |/101 A=INP(128)|?102 IF A<42 THEN 99|b103 RETURN A|1104 FNEND |<105 DEF FNPr(N$)|:106 PRINT YEL;NGBG;BLU;N$ : RETURN 0|h107 FNEND |?|
P494 ORACLE 494 Mon26 Apr ITV 1903:10 30308107NISE0u NEWBELC 30308107NISE0u 42 IF Y=Mlin THEN Arw(2,2)=T : Scrn(X,Y- 1)=Blk : PRINT CUR(Y-1,X);" ";CUR(Y,X); : GOTO 47 ELSE IF Y=Mlin+1 THEN GOTO 46| (43 PRINT CUR(Y,X-1);WHT; : IF Scrn(X+2, Y)=Ascdot THEN PRINT CUR(Y,X+1);"!";CUR( Y,X);|244 IF Scrn(X-2,Y)=Ascdot THEN PRI NT CUR(Y,X-1);"!";|÷45 Arw(2,2)=Ascdot : Score=Score-FNSc(Arw(2,1)) : GOTO 47|f4 6 Arw(2,2)=Blk|g47 GOSUB 90 : GOSUB 52 : GOTO 34|k48 IF Key=52 THEN IF X<=Mnx TH EN RETURN ELSE IF Y E X=INT(X/2)*2-1|:49 IF Key=34 THEN IF X =Mxx THEN RETURN ELSE IF Y X+1 ELSE X=INT(X/2)*2+3|i50 IF Key=30 TH EN IF Y<=Mny THEN RETURN ELSE Y=Y-1|$51 IF Key=36 THEN IF Y=Mxy THEN RETURN ELSE Y=Y+1 : IF Y=Mny+2 AND X=INT(X/2)*2 THE N X=X+1|x52 Scrn(Arw(1,1),Arw(1,2))=Arw( 2,2)|q53 PRINT CUR(Arw(1,2),Arw(1,1));CH R$(Arw(2,2));|÷|