ON ERROR IF ERR=17 CHAIN @lib$+"../examples/tools/touchide" ELSE MODE 3 : PRINT REPORT$ : END MODE 18 MDX=1279:MDY=959 VDU 28,2,4,62,1:COLOR 128+15:CLS:COLOR 0:PRINT"Pointer 0.2, Edit area:":PRINT"All Keywords are in upper case, keep CAPS on.":PRINT"Program limit 10 lines, no LOAD / SAVE":GCOL 0:RECTANGLE 0,0,39*16,MDY-(7*32) VDU 5:MOVE MDX-50-(10*16),MDY-9:GCOL 4:PRINT"Pointer":MOVE MDX-50-(10*16),MDY-9-50:GCOL 1:PRINT"Colour":MOVE MDX-50-(10*16),MDY-9-50-50:GCOL 0:PRINT"Type HELP":VDU 4 COLOR 10,0,100,0 BEAR=90:CXP=0:CYP=0:WDTH=20:CFR=0.2:CFG=1:CFB=0.8:STK=1:C=1:NOPS=10:STKLIM=3:DIM STDVAR(10,STKLIM):DIM OPS(5,1):DIM OPS$(5,NOPS):PROCCLER:PERMANENT=1 F%=OPENIN(@dir$+"Demo.ptr") IF F% CLOSE#F%:OSCLI "EXEC """ + @dir$ + "Demo.ptr""" REM ON ERROR PRINT"An error has been caused, try again" REPEAT PROCV26:PROCPOINTER:COLOR 0,0,0,0:COLOR 0:INPUT OBJECT$ RECTANGLE MDX-50,MDY-50,50,50 TO 640+CXP-25,380+CYP-25 PROCinterpret(OBJECT$) UNTIL 1=2 DEFPROCinterpret(OBJECT$) PROCSSPLIT:N1$=NUMB$:PROCSSPLIT:N2$=NUMB$:PROCSSPLIT:N3$=NUMB$:PROCSSPLIT:N4$=NUMB$:PROCSSPLIT:N5$=NUMB$:PROCSSPLIT:N6$=NUMB$:PROCSSPLIT:N7$=NUMB$:PROCSSPLIT:N8$=NUMB$ CMD=0 IF N1$="CL" THEN CMD=1:PROCCLER:OPS(1,1)=0:CXP=0:CYP=0:BEAR=90 IF N1$="NEW" THEN FOR N=1 TO NOPS:OPS$(1,N)="":NEXT N:PERMANENT=1 IF N1$="BK" THEN OPS(1,1)=1:OPS(2,1)=-EVAL(N2$):CMD=1 IF N1$="FD" THEN OPS(1,1)=1:OPS(2,1)=EVAL(N2$):CMD=1 IF N1$="WD" THEN WDTH=EVAL(N2$) IF N1$="FLY" THEN BAR=RAD(BEAR-90):CXP=CXP+SINBAR*EVAL(N2$):CYP=CYP+COSBAR*EVAL(N2$) IF N1$="PTVAR" THEN PRINT EVAL(N2$) IF N1$="TN" THEN OPS(1,1)=11:OPS(2,1)=EVAL(N2$):CMD=1 IF N1$="LT" THEN OPS(1,1)=11:OPS(2,1)=-EVAL(N2$):CMD=1 IF N1$="RT" THEN OPS(1,1)=11:OPS(2,1)=EVAL(N2$):CMD=1 IF N1$="PC" THEN OPS(1,1)=21:OPS(2,1)=EVAL(N2$):OPS(3,1)=EVAL(N3$):OPS(4,1)=EVAL(N4$):CMD=1 IF N1$="PT" THEN COLOR 14,CFR*255,CFG*255,CFB*255:GCOL 14:MOVE CXP+640-20,CYP+480-80:VDU 5:PRINT N2$:VDU 4 IF N1$="QUIT" THEN PRINT"Quit? Are you sure, (Y/N)":CMD=1:IF GET$="Y" THEN MODE 3:ERROR 17,"Escape" IF N1$="TO" THEN CMD=1:COLOR 128+0:CLS:COLOR 15:PRINT"Type your program below and type END to finish." T=PERMANENT:OPS$(1,T)="#"+N2$ REPEAT:T=T+1:INPUT OPS$(1,T):IF T>NOPS-5 THEN OPS$(1,T)="END" UNTIL OPS$(1,T)="END" OPS$(1,T)="#END":PERMANENT=T+2 COLOR 128+15:COLOR 0:CLS:PRINT"Program "+N2$+" stored" ENDIF IF N1$="IF" THEN IF EVAL(N2$) THEN PROCinterpret(N3$+" "+N4$+" "+N5$) IF N1$="RUN" THEN N7$=N6$:N6$=N5$:N5$=N4$:N4$=N3$:N3$="1":N1$="REP" IF N1$="HELP" THEN PRINT"List of Keywords, visit www.marloweos.com for more.":PRINT"FD LT PC RUN CL PT ---- QUIT IF HOME":PRINT"BK RT TN REP TO FLY ---- PROC WD" IF N1$="HOME" THEN IF N2$=N1$ THEN CXP=0:CYP=0 IF N3$<>N1$ THEN CXP=EVAL(N2$):CYP=EVAL(N3$) ENDIF IF N1$="REP" THEN STK=STK+1:CMD=1:Y=0 FOR F=1 TO NOPS IF OPS$(1,F)="#"+N2$ THEN STDVAR(3,STK)=F NEXT F ON ERROR LOCAL N4$="0":N5$="0":N6$="0":N7$="0" STDVAR(5,STK)=EVAL(N4$):STDVAR(6,STK)=EVAL(N5$):STDVAR(8,STK)=EVAL(N6$):STDVAR(9,STK)=EVAL(N7$) IF STDVAR(3,STK)>0 THEN STDVAR(1,STK)=EVAL(N3$) FOR STDVAR(2,STK)=1 TO STDVAR(1,STK) FOR STDVAR(7,STK)=STDVAR(3,STK) TO NOPS A=STDVAR(5,STK):B=STDVAR(6,STK):C=STDVAR(5,STK):D=STDVAR(6,STK):N=STDVAR(2,STK):PROCinterpret(OPS$(1,STDVAR(7,STK))):IF OPS$(1,STDVAR(7,STK))="#END" THEN STDVAR(7,STK)=NOPS NEXT STDVAR(7,STK) NEXT STDVAR(2,STK) ENDIF STK=STK-1 ENDIF IF CMD=1 THEN PROCDRW(1) ENDPROC DEFPROCPOINTER RECTANGLE 640+CXP-25,380+CYP-25,50,50 TO MDX-50,MDY-50 GCOL 1:CIRCLE FILL 640+CXP,380+CYP,16:GCOL 9:CIRCLE FILL 640+CXP,380+CYP,12:GCOL 15:CIRCLE FILL 640+CXP,380+CYP,6 FOR A=1 TO 10:COLOR 0,CFR*A*25.5,CFG*A*25.5,CFB*A*25.5:GCOL 0:RECTANGLE FILL MDX-50+(A*2.5),MDY-100+(A*2.5),50-(A*5),50-(A*5):NEXT A PROCV26 GCOL 15:LINE 640+CXP-1,380+CYP,CXP+640+SINRAD(BEAR-90)*25-1,CYP+380+COSRAD(BEAR-90)*25:GCOL 0:LINE MDX-50,MDY-100,MDX,MDY-52:LINE MDX-50,MDY-52,MDX,MDY-100 ENDPROC DEFPROCCLER:GCOL 0:RECTANGLE FILL 0,0,1279,767:FOR A=2 TO 20:FOR B=2 TO 12:GCOL 7:RECTANGLE (A-1)*(1279/20),(B-1)*(767/11.993),2,2:NEXT B:NEXT A:ENDPROC DEFPROCDRW(N) VDU 24,0;0;1279;767; IF OPS(1,N)=1 THEN BAR=RAD(BEAR-90):OCXP=CXP:OCYP=CYP:CXP=CXP+SINBAR*OPS(2,N):CYP=CYP+COSBAR*OPS(2,N):LOCAL A:FOR A=1 TO WDTH/2 GCOL 0:COLOR 0,CFR*A*(255/(WDTH/2)),CFG*A*(255/(WDTH/2)),CFB*A*(255/(WDTH/2)) WD=((WDTH/(WDTH/2))*A):LINE 640+OCXP-(COSBAR*WD),380+OCYP+(SINBAR*WD),640+CXP-(COSBAR*WD),380+CYP+(SINBAR*WD) NEXT A ENDIF IF OPS(1,N)=11 THEN BEAR=BEAR+OPS(2,N) IF OPS(1,N)=21 THEN CFR=OPS(2,N):CFG=OPS(3,N):CFB=OPS(4,N):REM PC IF OPS(1,N)=32 THEN PRINT N:PRINT OPS(2,N) IF OPS(3,OPS(2,N))