10 PROCR:PROCI:PROC9:PROCL:ONERRORPROCS
   60 @%=&100090A:REPEAT:IFG$=N$S$=""ELSES$=G$
   90   b%=(INSTR(S$,"E")<>0):m%=(INSTR(S$,".")<>0):J$=FN8(S$):IFJ$=""J$=N$:H$=N$:IFJ$=""J$="0":H$="0"
  130   n0%=FALSE:c0%=FN3(_%):IFc0%<=LEN(X$)PROCTELSEPROCU
  160   N$=J$:G$=J$:H$=J$:IF_%=61PROCV(H$):d0%=FALSE
  180 UNTILFALSE
  190 DEFPROCU:ONc0%-LEN(X$)PROCW,PROC9,PROCX
  210 G$=J$:IFc0%-LEN(X$)<>3H$=J$
  230 ENDPROC
  240 DEFPROCT:k$="":W$=CHR$_%:IFW$="="OR(_%>128)W$=""
  280 IFLEN(H$)>15H$=J$
  290 PROC5(W$,k$,H$):IF(EVALJ$>1E8)AND(INSTR(J$,"E")=0)AND(INSTR(J$,".")=0)J$=J$+".0"
  310 IFNOTd0%ELSEIFO$="x"J$=STR$EVAL(N$+"*"+J$+"+0"):PROC0(J$)ELSEJ$=STR$EVAL(N$+O$+J$+"+0"):PROC0(J$)
  320 O$=W$:PROC3(O$):d0%=TRUE:b%=FALSE:m%=FALSE:ENDPROC
  380 DEFPROC9:FORI%=1TO18-4:T$(I%)="":NEXT:PROCC:CLS:y%=2:N$="0":O$="0":J$="0":G$="0":U$="":W$="":b%=FALSE:m%=FALSE:PROC0(G$):PROC3(U$):PROCA:d0%=FALSE:n0%=TRUE:ENDPROC
  500 DEFPROCL:FORI%=1TO8:G(I%)=0:s%?I%=FALSE:NEXT:e%=1:s%?1=TRUE:ENDPROC
  540 DEFPROCW:IFn0%ENDPROC
  560 J$=N$:G$=O$:b%=FALSE:m%=FALSE:PROC0(J$):ENDPROC
  600 DEFFN0(`%):=`%>=48AND`%<=57
  620 DEFFN3(`%):LOCALR%:R%=LENX$:IF`%=127THEN=R%+1
  660 IF`%=140THEN=R%+2
  670 IF`%=37THEN=R%+3
  680 =INSTR(X$,CHR$`%)
  690 DEFFN8(S$):G$=S$:IFS$=""K$=N$
  710 REPEAT:PROCY:UNTILFN3(_%):IFb%ANDt%=0G$=LEFT$(G$,LEN(G$)-1):H$=LEFT$(H$,LEN(H$)-1)
  750 q%=TRUE:=G$
  770 DEFPROCY:IFNOT_0%PROCZELSEIFFN4ENDPROC
  790 REPEAT:_0%=FN9:IFNOT_0%UNTILTRUE:ENDPROC
  820 q%=FALSE:UNTILFN4:ENDPROC
  850 DEFFN4:J$=G$:REPEAT:_%=FN5(FN1):UNTILNOTFN6(G$)AND_%<>69:IFNOT(FN0(_%)OR(_%=46))THEN=FALSE
  910 G$=CHR$_%:H$=CHR$_%:PROC0(G$):q%=FALSE:_0%=FALSE:=TRUE
  970 DEFPROCZ:REPEAT:_%=FN5(FN1):IFc%<>0c%=0
 1010 VDU26:IFFN6(G$)UNTILFALSE
 1030 IF(_%=69)AND((G$="")ORb%)UNTILFALSE
 1040 IF(_%=46)AND(m%ORb%)UNTILFALSE
 1050 IFFN0(_%)ANDb%AND(t%=2)UNTILFALSE
 1060 UNTILTRUE:IFLEN(G$)>=15ENDPROC
 1080 IFNOT(FN0(_%)OR_%=46OR_%=69)ENDPROC
 1090 IF_%=69b%=TRUE:t%=0ELSEIF_%=46m%=TRUE
 1100 IFFN0(_%)ANDb%t%=t%+1
 1110 IFG$=""ANDm%G$="0"
 1120 G$=G$+CHR$_%:PROC0(G$):IFq%H$="":q%=FALSE
 1150 IFH$=""ANDm%H$="0"
 1160 H$=H$+CHR$_%:ENDPROC
 1180 DEFPROC0(M$):IFM$=""M$=K$:IFLENM$>15M$=STR$VALM$
 1200 IFLENM$>15M$=STR$VALM$
 1210 PROCD:PRINTCHR$13;TAB((15-LEN(M$)));M$;:VDU26:ENDPROC
 1250 DEFPROCD:VDU28,32,18,48,18:ENDPROC
 1280 DEFPROC_:VDU28,2,18,19,11:ENDPROC
 1310 DEFPROC3(a$):U$=a$:PROCD:IFa$=""a$=" "ELSEPROC@(1)
 1350 PRINTTAB(15,0);a$;:PROC@(0):VDU26:ENDPROC
 1390 DEFPROCS:IFERR=17ENDPROC
 1410 PROC`:IFERR=22ORERR=21ORERR=20ORERR=18ORERR=24ORERR=26ENDPROC
 1430 REPEATUNTILFN@(100,0,0)=32:COLOUR1:COLOUR128:VDU26,12:j%=0:PROCI:PROC9:PROCL:ENDPROC
 1480 DEFPROCC:VDU28,59,18,77,4:ENDPROC
 1510 DEFPROC5(g$,m$,M$):PROCC:LOCALK$:K$=m$+M$:IFRIGHT$(K$,2)=".0"K$=LEFT$(K$,LENK$-2)
 1550 T$(f%)=STRING$(16-LEN(K$)," ")+K$+CHR$10+g$:PRINTTAB(1,18-4);T$(f%);:VDU26:n$=g$:f%=f%+1:IFf%>18-4f%=1
 1600 ENDPROC
 1610 DEFPROCV(M$):IFRIGHT$(M$,2)=".0"M$=LEFT$(M$,LENM$-2)
 1630 PROCP(LENM$):PROC5("","",M$):PROCP(LENM$):PROC5("","",""):ENDPROC
 1680 DEFPROCP(e0%):LOCALh$:IFe0%>16e0%=16
 1710 h$=STRING$(e0%,b$):PROC5("","",h$):ENDPROC
 1740 DEFPROCu(K$):VDU26:PRINTLEN(K$);K$:ENDPROC
 1780 DEFPROC6:LOCALY$,I%:PROC_:CLS:FORI%=1TO8:IFs%?I%=0ELSEPROCa
 1840 NEXT:ENDPROC
 1860 DEFPROCa:Y$=STR$G(I%):IFI%=e%PROC@(1)
 1890 PRINTTAB(15-LEN(Y$)+2);Y$;:PRINTCHR$13;:Y$=STR$I%+".":PRINTY$;:IFI%<>8PRINT
 1940 PROC@(0):ENDPROC
 1960 DEFFNA(o0%,p0%,o$):PROC3(o$):PROC0("0"):REPEAT:PROCD:PRINTCHR$13;TAB(15-2);:VDU26:_%=FN1-48:IF(_%<p0%)OR(_%>o0%)PROC2(1,"You must type a number between "+STR$(p0%)+" and "+STR$(o0%),"",""):PROCA:UNTILFALSE
 2050 UNTILTRUE:d%=-1:PROC7:PROC3(W$):=_%
 2090 DEFFNE(G$):LOCALI%:I%=0:REPEATI%=I%+1:UNTILMID$(G$,I%,1)<>"0":=I%
 2130 DEFFN5(`%):IF`%=88`%=120
 2150 IF`%=58`%=120
 2160 IF`%=59`%=43
 2170 IF`%=42`%=120
 2180 IF`%=13`%=61
 2190 =`%
 2200 DEFFNF(G$):IFy%=0THEN=G$
 2220 g%=INSTR(G$,"E"):R$=G$:IFg%=0c$=""ELSEc$=RIGHT$(G$,LEN(G$)-g%):R$=LEFT$(G$,g%)
 2250 g%=INSTR(R$,"."):IFg%=0R$=R$+".":g%=LEN(R$)
 2260 g%=LEN(R$)-g%:IFg%<=y%THEN=R$+STRING$(y%-g%,"0")+c$
 2280 =LEFT$(STR$EVAL((R$+"."+c$)+"5*10^-("+STR$y%+"+1)"),LEN(R$)+y%+1))
 2290 DEFPROCE(q0%,`1%,r0%,a1%,p$):PRINTTAB(q0%,r0%-2);p$:PROC8(q0%-1,`1%+1,r0%-1,a1%+1):ENDPROC
 2330 DEFPROCb(N%):IFN%=0VDU23,1|ELSEVDU23,1,1|
 2350 ENDPROC
 2360 DEFFN1:n%=FN@(100,0,0):IFn%=141THEN=45
 2390 IFn%=142THEN=43
 2400 IFn%=143THEN=120
 2410 IFn%=137THEN=47
 2420 IFn%=139ORn%=101THEN=69
 2430 IFn%=128THEN=37
 2440 =n%
 2450 DEFPROCI:PROCG:IFFN@(-1,0,0)
 2480 OSCLI"FX 11":PROCb(0):PROCE(32,48,18,18,"Display"):PROCE(59,77,4,18,"Tally"):PROCE(2,19,11,18,"Memories"):PROCc:IFU$="M"PROC0("0"):PROCH
 2550 ENDPROC
 2560 DEFPROCc:PROC6:PROC0(G$):PROC3(U$):PROCJ(511):PROCA:PROCd:d%=-1:PROC7:ENDPROC
 2660 DEFPROCe:IFc%=0PROC2("","  "+q$,""):ENDPROC
 2680 ONc%-17PROC1(2),PROC1(7),PROC1(1),PROC1(3),PROC1(5),PROCF,PROC1(4),PROCF,PROC1(6)ELSE
 2690 d%=-1:PROC7:IFc%=21ENDPROC
 2720 PROC9:IFc%=18ORc%=19ORc%=20ORc%=22ORc%=24ORc%=26ENDPROC
 2740 PROC1(8):PRINT;"BASIC error number ";ERR;" at ";ERL;" press space to continue";:ENDPROC
 2750 DEFPROCd:LOCALu%:PROCC:IFf%=18-4ELSEFORu%=f%TO18-4:IFT$(u%)<>""PRINTTAB(1,18-4);T$(u%);:NEXTELSENEXT
 2790 IFf%=1ENDPROC
 2800 FORu%=1TOf%-1:IFT$(u%)<>""PRINTTAB(1,18-4);T$(u%);
 2820 NEXT:VDU26:ENDPROC
 2850 DEFPROCf:U$=" ":U$="":q$="":G$="0":N$="0":J$="0":H$="":n$="":K$="0":ENDPROC
 2880 DEFFN2(K$)=STR$(-VAL(K$))
 2890 DEFFN6(K$):IFK$=""K$=N$
 2910 ONFNBPROCg,PROCh,PROCH,PROCv,PROCK,PROCF,PROCB(FALSE),PROCi,PROCB(TRUE)ELSE=FALSE
 2920 PROC0(G$):=TRUE
 2940 DEFFNB:IF_%=167THEN=9
 2960 IF_%<129OR_%>136THEN=0
 2970 IF(_%=133)ANDq%THEN=0
 2980 IF_%=132OR_%=134THEN=0
 2990 =_%-128
 3000 DEFPROCg:G(e%)=G(e%)+VAL(K$):PROC6:ENDPROC
 3040 DEFPROCh:G(e%)=G(e%)-VAL(K$):PROC6:ENDPROC
 3080 DEFPROCi:G(e%)=0:PROC6:ENDPROC
 3120 DEFPROCH:e%=FNA(8,1,"M"):U$="":s%?e%=TRUE:PROC0(K$):PROC6:ENDPROC
 3180 DEFPROCK:IFb%PROCj:ENDPROC
 3200 G$=FN2(G$):H$="-"+H$:IFLEFT$(H$,2)="--"H$=RIGHT$(H$,LENH$-2)
 3230 ENDPROC
 3240 DEFPROCj:IFt%=0ENDPROC
 3260 LOCALK$:K$=LEFT$(G$,INSTR(G$,"E")):G$=RIGHT$(G$,LENG$-INSTR(G$,"E")):G$=K$+FN2(G$):K$=LEFT$(H$,INSTR(H$,"E")):H$=RIGHT$(H$,LENH$-INSTR(H$,"E")):H$=K$+FN2(H$):IFLENG$>15REPEATK$=LEFT$(K$,LENK$-2)+"E":G$=RIGHT$(G$,LENG$-INSTR(G$,"E")):G$=K$+G$:UNTILLENG$<=15
 3340 ENDPROC
 3350 DEFFN9:IF_%<>133AND_%<>132AND_%<>134=FALSE
 3370 IFq%=TRUEG$=K$
 3380 IF_%=134H$=CHR$190+H$:G$=FNC(G$):b%=FALSE
 3390 IF_%=132G$=STR$G(e%):H$=G$
 3400 IF_%=133PROCK
 3410 PROC0(G$):K$=G$:=TRUE
 3440 DEFFNC(G$):=STR$(EVAL("SQR"+G$))
 3460 DEFPROC`:c%=ERR:PROCe:H$=G$:ENDPROC
 3510 DEFPROCX:H$="%"+H$:IFO$="/"ORO$="^"J$=STR$(EVAL(N$+O$+STR$(VAL(J$)/100)))ELSEJ$=STR$(VAL(N$)*VAL(J$)/100):IFO$="+"ORO$="-"J$=STR$(EVAL(N$+O$+J$))
 3540 PROC0(J$):PROC3(""):_%=ASC"=":O$="":PROC5("","",H$):ENDPROC
 3590 DEFPROCk:r$=CHR$&BE:X$="-+x/^=":_0%=FALSE:q%=TRUE:b%=FALSE:t%=0:m%=FALSE:f%=1:s$="Calculator V1.00":j%=0:DIMG(8),s%8,T$(18-4):PROCf:FORI%=1TO8:G(I%)=0:s%?I%=FALSE:NEXT:e%=1:s%?1=TRUE:J$="0":c%=0:`0%=0:d%=-1:OSCLI"fx 4,2":OSCLI"fx 225,128":OSCLI"fx 226,144":OSCLI"fx 227,160":OSCLI"fx 228,0":OSCLI"fx 229,1":ENDPROC
20000 DEFPROCm:DIMf0%(0,1),a0%(1):a0%(0)=1
20030 .f0%(0,0)
20040 DATA"To enter negative numbers         Enter a number and Press F5 ( +/- )",""
20050 DATA"To enter an exponent              Enter a number, then EE, then the exponent"
20060 DATA"                                  You may use F5 to make exponent negative",""
20070 DATA"To select a memory slot           Press F3 ( Select ) then a digit 1 - 8",""
20080 DATA"To clear a memory slot            Select it then Press F8 ( M Clear )",""
20090 DATA"To add the display to a memory    Select it then Press F1 ( M + )",""
20100 DATA"To subtract from a memory         Select it then Press F2 ( M - )",""
20110 DATA"To put a new value in a memory    Select it, Clear it, then Add to it",""
20120 DATA"To recall a memory to the display Select it, then Press F4 ( Recall )",""
20130 DATA"****"
20140 .f0%(0,1)
20150 DATA"To extract a square root          Press F6 ( ¾ )",""
20160 DATA"To clear the display              Press AC",""
20170 DATA"To clear just the last entry      Press CE",""
20180 DATA"To calculate percentages          Use ""%"" instead of ""=""",""
20190 DATA"To print any screen               Press F7 ( Print )"
20200 DATA"****"
20210 ENDPROC
20220 DEFPROCn:ENDPROC
20240 DEFPROCo:i$="                     Press <space> to continue.":DIMh%(8)
20270 .h%(0)
20280 DATA1,"","",""
20290 .h%(1)
20300 DATA1,"Number out of range.","",""
20310 .h%(2)
20320 DATA1,"Can't divide by zero.","",""
20330 .h%(3)
20340 DATA1,"Can't take the root of a negative number, it's too complex.","",""
20350 .h%(4)
20360 DATA1,"Exponential out of range.","",""
20370 .h%(5)
20380 DATA1,"Can only raise negative numbers to small integer powers.","",""
20390 .h%(6)
20400 DATA1,"Silly number.","",""
20410 .h%(7)
20420 DATA1,"Expression too long to handle.","",""
20430 .h%(8)
20440 DATA1,"Unknown error.","",""
20450 ENDPROC
20460 DEFPROCp:DIMQ$(7):Q$(0)="   M +":Q$(1)="   M -":Q$(2)=" Select":Q$(3)=" Recall":Q$(4)="  + / -":Q$(5)="   "+r$:Q$(6)=" Print":Q$(7)="M clear":ENDPROC
25000 DEFPROCG:MODE0:VDU19,0,4|19,1,7|:PRINTTAB(1);:PROC@(1):PRINT"Communicator ";s$;" ";t$;" Acorn Computers Ltd 1986":PROC@(0):IFFN@(-1,0,0)
25070 PROC8(0,79,1,22):PROC8(0,79,23,27):ENDPROC
25100 DEFPROCJ(r%):LOCALs0%:PROC@(1):IFr%<0r%=j%ANDr%
25140 IFr%AND256ANDNOTj%PROCM
25150 k%=1:FORs0%=0TO7:IF(r%ANDk%)<>(j%ANDk%)PROCN(s0%,r%ANDk%)
25180 k%=2*k%:NEXT:PROC@(0):j%=r%:ENDPROC
25230 DEFPROCN(v%,b1%):IFQ$(v%)=""ENDPROC
25250 IFb1%PRINTTAB(a%(v%)+3,29);"F";v%+1;TAB(a%(v%),30);Q$(v%);ELSEVDU5:MOVE16*a%(v%),92:PRINTj$;:PLOT0,-128,-32:PRINTj$;:VDU4
25260 ENDPROC
25270 DEFPROCM:LOCALw%:PROCO:j%=256:k%=1:FORw%=0TO7:IFQ$(w%)<>"":PRINTTAB(a%(w%)+3,29);"F";w%+1;TAB(a%(w%),30);Q$(w%);:j%=j%+k%
25340 k%=k%*2:NEXT:ENDPROC
25370 DEFPROCO:PROC8(1,37,28,31):PROC4(10,28,31):PROC4(19,28,31):PROC4(28,28,31):PROC8(42,78,28,31):PROC4(51,28,31):PROC4(60,28,31):PROC4(69,28,31):ENDPROC
25470 DEFPROC8(L%,R%,T%,B%):LOCALg0%:VDU28,L%,B%,R%,T%,12,26:PRINTTAB(L%,T%);u$;STRING$(R%-L%-1,b$);v$;:FORg0%=T%+1TOB%-1:PRINTTAB(L%,g0%);d$;TAB(R%,g0%);d$;:NEXT:PRINTTAB(L%,B%);w$;STRING$(R%-L%-1,b$);x$;:ENDPROC
25560 DEFPROC4(h0%,T%,B%):LOCALt0%:PRINTTAB(h0%,T%);y$;:FORt0%=T%+1TOB%-1:PRINTTAB(h0%,t0%);d$;:NEXT:PRINTTAB(h0%,B%);z$;:ENDPROC
25640 DEFFN@(o%,u0%,v0%):LOCALi%,Z$:REPEAT:IFo%=-1i%=-1ELSEPRINTTAB(u0%,v0%);:IFo%<0i%=INKEY(100):o%=o%+1ELSEi%=INKEY(o%)
25680 IFi%<0Z$=LEFT$(TIME$(3)+"  ",21):PRINTTAB(58,0);:PROC@(1):PRINT;Z$;:PROC@(0):UNTILo%=-1ELSEUNTILTRUE
25690 PRINTTAB(u0%,v0%);:=i%
25710 DEFFN7(o%):LOCALi%,Z$,w0%:REPEAT:w0%=TIME:CALLc1%:IF@C%i%=-1:REPEATUNTILTIME>w0%ELSEi%=@A%AND&FF
25760 IFi%<0Z$=LEFT$(TIME$(3)+"  ",21):PRINTTAB(58,0);:PROC@(1):PRINT;Z$;:PROC@(0):UNTILo%=-1ELSEUNTILTRUE
25770 =i%
25780 DEFPROC1(d1%):RESTOREh%(d1%):READz%,V$,_$,`$:PROC2(z%,V$,_$,`$+i$):PROCA:REPEATUNTILFN@(100,0,0)=32:ENDPROC
25850 DEFPROC7:IFd%<0PROCq:ENDPROC
25870 RESTOREh1%(d%):READV$,_$,`$:PROC2(0,V$,_$,`$):ENDPROC
25910 DEFPROCq:IFd%=-1PROC2(0,"","",""):ENDPROC
25930 RESTOREb0%(-(d%+2)):READV$:PROC2(0,V$,"Press RETURN to leave help before using function keys","For more details refer to the User guide"):ENDPROC
25970 DEFPROC2(z%,V$,_$,`$):VDU28,1,26,78,24:PROC@(z%):VDU12,26:PRINTTAB(3,24);V$;TAB(3,25);_$;TAB(3,26);`$:PROC@(0):ENDPROC
26040 DEFPROC@(z%):IFz%=0COLOUR1:COLOUR128ELSECOLOUR0:COLOUR129
26060 ENDPROC
26070 DEFPROCA:REPEAT:UNTILINKEY(0)=-1:ENDPROC
26110 DEFPROCB(e1%):IFe1%CALLi0%ELSECALLj0%
26130 IF@C%ELSEENDPROC
26140 PROC2(1,"Print failed because :",$@BHA%,i$):LOCALI%:REPEAT:I%=FN7(100):IFI%>=@ECPHON%ANDI%<=@ECHELP%OSCLI"fx 15,1":UNTILFALSE
26190 UNTILINKEY(0)=32:PROC7:ENDPROC
26220 DEFPROCF:ENDPROC
26230 DEFPROC@HELP:k0%=k0%:IFk0%ELSEENDPROC
26260 IFx0%PROCr:ENDPROC
26270 LOCALp%,y0%,d%:PROCG:PROC@(1):IFf1%y0%=j%:PROCM:PROCJ(y0%)ELSEPROCO:PROCN(6,TRUE):PROC@(0)
26310 x%=0:PROCQ:OSCLI"FX 15,1":REPEAT:p%=FN7(100):IFp%>=@ECPHON%ANDp%<=@ECHELP%UNTILTRUE:ENDPROC
26370 p%=INKEY(0):IFp%=32x%=x%+1:PROCQ:UNTILFALSE
26390 IFp%=135PROCB(FALSE):UNTILFALSE
26400 IFp%=167PROCB(TRUE):UNTILFALSE
26410 UNTILp%=13:ENDPROC
26430 DEFPROCr:!z0%=x0%:CALLm0%:ENDPROC
26470 DEFPROCQ:LOCALe$:e$="":VDU28,1,21,78,2,12:IFx%>a0%(`0%)x%=0
26510 RESTOREf0%(`0%,x%):READf$:REPEAT:PRINTe$;f$;:e$=CHR$13+CHR$10:READf$:UNTILf$="****":IFa0%(`0%)=0d%=-2ELSEIFx%<a0%(`0%)d%=-3ELSEd%=-4
26590 PROC7:VDU26:ENDPROC
26620 DEFPROCR:u$=CHR$&B0:v$=CHR$&B1:w$=CHR$&B2:x$=CHR$&B3:b$=CHR$&A6:d$=CHR$&A9:y$=CHR$&A7:z$=CHR$&AE:j$=STRING$(8,CHR$&BF):DIMa%(7):a%(0)=2:a%(1)=11:a%(2)=20:a%(3)=29:a%(4)=43:a%(5)=52:a%(6)=61:a%(7)=70:f1%=TRUE:G0$=CHR$136:H0$=CHR$137:J0$=CHR$138:K0$=CHR$139:t$=CHR$135:PROCk:PROCm:x0%=0:PROCn:PROCs:PROCo:PROCp:PROCt:k0%=TRUE:ENDPROC
26850 DEFPROCs:DIMb0%(2)
26870 .b0%(0)
26880 DATA""
26890 .b0%(1)
26900 DATA"Press SPACE for more information."
26910 .b0%(2)
26920 DATA"Press SPACE to return to start of help information."
26930 ENDPROC
26940 DEFPROCt:DIM_1%FND(100):z0%=_1%+90:FORPg1%=0TO2STEP2:P%=_1%:[OPTPg1%
27000 .c1%:COP:EQUB@OPXKC%:RTL:WRD&30
27050 .j0%:COP:EQUB@OPCMD%:EQUS"TXTDMP":BRK:RTL
27090 .i0%:COP:EQUB@OPCMD%:EQUS"SCRDMP":BRK:RTL
27130 .m0%:LDX#@COHELP%:PHK:PLB:LDYz0%:JSRL@CO%:RTL:]:NEXT:j0%=j0%+@WRDAM%+@WRDXY%:i0%=i0%+@WRDAM%+@WRDXY%:m0%=m0%+@WRDAM%+@WRDXY%:ENDPROC
27260 DEFFND(N%):LOCALP%:DIMP%-1:IF((P%EOR(P%+N%+1))AND&FF0000)DIMP%(&FFFF-(P%AND&FFFF))
27290 =N%
65375