VDU21 T%=PAGE IF PAGE=&E00GOTO 50 *K.0*T.|M DEL.0,70|M F.I%=0 TO TOP-PA. S.4:I%!&E00=I%!PAGE:N.|MPA.=&E00|MEND|MRUN|M *FX138,0,128 END *KEY0*T.|MDEL.0,70|MEND|MRUN|M *FX138,0,128 END ON ERROR GOTO 910 VDU6 *FX225,143 PROCas:a%=Z%:O%=5:M=1188:N=900:DIM Y$(16),A(16):A=0:VDU26;23;8202;0;0;0;:PROCS:PROCA DEF PROCS:W$="":PROCQ(""):VDU24,0;90;350;N;:CLG:VDU26:GCOL0,3:MOVE60,100:DRAW350,100:DRAW350,N:DRAW60,N:DRAW60,100:MOVE205,N:DRAW205,100:FOR L=1TO17:MOVE60,L*50+50:DRAW350,L*50+50 NEXT:VDU4:COLOUR2:COLOUR128:PRINT TAB(14,25);"":VDU5:GCOL0,1:MOVE585,100:DRAW585,250:PROCk:ENDPROC DEF PROCA:B=888:FOR L=1TO16:MOVE118,B:PRINT;"?":PROCa:Y$(L)=a$:PROCp MOVE220,B:GCOL0,0:PRINT"":MOVE228,B:GCOL0,2:PRINT"" PROCr:IF Y$(L)=""ANDb>360ORY$(L)=""ANDb>360U=229:GOTO 140 A(L)=b:B=B-50:NEXT:SOUND1,-15,100,5:REPEAT:PROCrun:IF S=1PROCO PROCMC(STRING$(11," ")):PROCk:PROCte:UNTIL0 DEF PROCte I$=GET$:IF I$<>"C"ANDI$<>"S"ANDI$<>"E"GOTO 190ELSE SOUND1,-15,70,1 IF I$="E"PROCEd ELSE IF I$="C"PROCCl ELSE IF I$="S"PROCR ENDPROC DEF PROCp:SOUND1,-15,150,1:MOVE118,B:GCOL0,0:VDU255,127:GCOL0,1:PRINT a$:ENDPROC DEF PROCp1(d,G):MOVEG,B:GCOL0,0:VDU32,127:GCOL0,2:VDU230+d,U:GCOL0,1:SOUND1,-15,210,1:U=32:ENDPROC DEF PROCk:VDU5:PROCc:GCOL0,3:MOVE418,160:PRINT"Clock":MOVE675,225:PRINT"E for EDIT":MOVE675,185:PRINT"C for CLEAR":MOVE675,145:PRINT"S for STEP":ENDPROC DEF PROCc:VDU5:GCOL0,0:MOVE600,108:DRAW1172,108:PLOT85,1172,233:DRAW600,233:PLOT85,600,108:ENDPROC DEF PROCEd:PROCc:MOVE600,225:GCOL0,2:PRINT"EDIT";:GCOL0,3:PRINT" - Move cursor":MOVE600,185:PRINT"up and down. Press":MOVE600,145:PRINT"SPACE to alter.":PROCmc:GCOL0,0:MOVE118,B:PRINT"":MOVE118,B:GCOL0,1:PRINT"?":PROCa PROCp:MOVE216,B:GCOL0,0:PRINT"":MOVE228,B:GCOL0,2:PRINT"":GCOL0,2:PROCr:PROCV(I-1,0):Y$(I)=a$:A(I)=b:ENDPROC DEF PROCr:IF To=1MOVE228,B:GCOL0,0:PRINT;"":MOVE236,B:GCOL0,2:PRINT"":b=90:ENDPROC u=GET:IF u=13b=0:ENDPROC u=u-48:IF u<0ORu>9GOTO 290ELSE PROCp1(u,292) v=GET:IF v=13b=u:ENDPROC v=v-48:IF v<0ORv>9GOTO 310ELSE PROCp1(u,260):PROCp1(v,292) w=GET:IF w=13b=u*10+v:ENDPROC w=w-48:IF w<0ORw>9GOTO 330ELSE PROCp1(u,228):PROCp1(v,260):PROCp1(w,292) b=u*100+v*10+w:REPEAT UNTIL GET=13:ENDPROC DEF PROCa:REPEAT:J=GET:UNTIL J>143ANDJ<152:IF J=146ORJ=148To=1ELSE To=0 IF J=145ORJ=149U=229ELSE U=32 a$=CHR$ J:ENDPROC DEF PROCmc:*FX4,1 B=888:I=1:MOVE20,B:PRINT;">":MOVE360,B:PRINT;"<":REPEAT:T=B G=GET:IF G<>139ANDG<>138ANDG<>32GOTO 410 IF G=139B=B+50:I=I-1ELSE IF G=138B=B-50:I=I+1 IF B>888B=888:I=1:GOTO 450ELSE IF B<138B=138:I=16:GOTO 450 MOVE20,T:GCOL0,0:VDU255:MOVE360,T:VDU255:GCOL0,3:SOUND1,-15,255,1:MOVE20,B:PRINT;">":MOVE360,B:PRINT;"<" UNTIL G=32:SOUND1,-15,200,2:SOUND1,-15,50,2:ENDPROC DEF PROCrun:PROCc:GCOL0,3:MOVE608,225:PRINT"Do you want to":MOVE608,185:PRINT"see the commands":MOVE608,145:PRINT"operate (Y/N) ?":PROCyn:ENDPROC DEF PROCyn:REPEAT:U$=GET$:UNTIL U$="Y"ORU$="N":SOUND1,-15,150,1:PROCc:IF U$="Y"S=1ELSE S=0 ENDPROC DEF PROCCl:PROCc:GCOL0,3:MOVE600,225:PRINT"Do you really want":MOVE600,185:PRINT"to clear all the":MOVE600,145:PRINT"commands. (Y/N) ?":PROCyn:IF S=0ENDPROC ELSE RUN DEF PROCcl(f):TIME=0:f=f+4 D$=STR$(TIME) IF TIME>f GOTO 660 IF LEN D$<>3:REPEAT:D$="0"+D$:UNTIL LEN D$=3 IF TIME>f GOTO 660 l=VAL(MID$(D$,1,1)) IF TIME>f GOTO 660 m=VAL(MID$(D$,2,1)) IF TIME>f GOTO 660 n=VAL(MID$(D$,3,1)) IF TIME>f GOTO 660 VDU4:COLOUR2:COLOUR128 IF TIME>f GOTO 660 e1=230+l:e2=230+m:e3=230+n VDU31,14,25,e1,e2,e3 IF TIME>f GOTO 660 GOTO 510 ?&FE60=0:SOUND1,-15,8,1:ENDPROC DEF PROCO:B=888:FOR Q%=1TO16:PROCop(Q%):NEXT:VDU5:D=FNw(Q%,100):MOVE20,D:GCOL0,0:PRINT;">":MOVE360,D:PRINT;"<":VDU4:PROCc:GCOL0,3:MOVE664,225:PRINT"Do you want to":MOVE664,185:PRINT"see them again":MOVE664,145:PRINT"press (Y/N) :":PROCyn:IF S=1PROCO PROCMC(STRING$(11," ")):ENDPROC DEF PROCV(x,y):VDU5:D=FNw(x,y):MOVE20,D:GCOL0,0:VDU255:MOVE360,D:VDU255:ENDPROC DEF PROCR:PROCc:MOVE600,225:GCOL0,2:PRINT"STEP";:GCOL0,3:PRINT" Use cursors":MOVE600,185:PRINT"and press space to":MOVE600,145:PRINT"get starter point.":PROCmc:A=I:PROCV(I,50):MOVE600,145:GCOL0,0:PRINT STRING$(18,""):MOVE600,145:GCOL0,3 PRINT"get finish point.":PROCmc:V=I:PROCV(I,50):IF A>V PROCc:MOVE648,225:GCOL0,2:PRINT"Your start and":MOVE608,185:PRINT"finish points are":MOVE716,145:PRINT"incorrect.":O=INKEY(500):PROCR:ENDPROC PROCc:MOVE650,200:GCOL0,1:VDU5:PRINT;"STEPPING":FOR T=A TO V:PROCop(T):PROCV(T,100):NEXT:PROCV(T,100):PROCc:ENDPROC DEF PROCop(L%):VDU5:D=FNw(L%,0):MOVE20,D+100:GCOL0,0:PRINT;">":MOVE360,D+100:PRINT;"<":MOVE20,D+50:GCOL0,3:PRINT;">":MOVE360,D+50:PRINT;"<":MOVE650,165:PRINT"COMMAND : ";:GCOL0,0:PRINT"";:VDU127,127:GCOL0,3:PRINT;L% IF Y$(L%)=""W$=" BACKWARD":PROCQ(""):?&FE60=15:PROCcl(A(L%)) IF Y$(L%)=""W$="PIVOT LEFT":PROCQ(""):?&FE60=7:PROCcl((a%*4)/360*A(L%)):?&FE60=0 IF Y$(L%)=""W$=" LEFT":PROCQ(""):?&FE60=4:PROCcl(U%):?&FE60=0 IF Y$(L%)=""W$=" FORWARD":PROCQ(""):?&FE60=6:PROCcl(A(L%)):?&FE60=0 IF Y$(L%)=""W$=" RIGHT":PROCQ(""):?&FE60=2:PROCcl(U%):?&FE60=0 IF Y$(L%)=""W$="PIVOT RIGHT":PROCQ(""):?&FE60=14:PROCcl((a%*4)/360*A(L%)):?&FE60=0 IF Y$(L%)=""W$=" HORN":PROCQ(""):?&FE6A=5:?&FE68=5:PROCcl(A(L%)):?&FE68=0:?&FE6A=0 IF Y$(L%)=""W$=" STOP":PROCQ(""):?&FE60=0:PROCcl(A(L%)):?&FE60=0 ENDPROC DEF PROCQ(E$):VDU4:COLOUR2:PRINT TAB(25,11);E$:COLOUR1:COLOUR131:FOR L=1TO5:g=ASC(MID$(E$,L,1)):IF g=134i=32:j=32ELSE i=251:j=252 PRINT TAB(24+L,8);CHR$ i;TAB(24+L,9);CHR$ j:NEXT:COLOUR128:PROCMC(W$):ENDPROC DEF FNw(q,d)=(888-(q*50))+d DEF PROCas:DIM mc% 200,CH% 10,str% 12 FOR p=0TO2STEP2:P%=mc%:[OPTp:.d:LDA#17:JSR&FFEE:LDA#1:JSR&FFEE:LDX#0:STX&70:.n:LDAstr%,X:STA CH%:LDA#&A:LDX#CH%MOD256:LDY#CH%DIV256:JSR&FFF1:LDX#0:LDY#1:.N:LDACH%,Y:STA&CC0,X:STA&CC1,X:INX:INX:INY:CPX#16:BNEN:LDA#31:JSR&FFEE:LDA&70 ADC#19:JSR&FFEE:LDA#18:JSR&FFEE:LDA#248:JSR&FFEE:LDA#8:JSR&FFEE:LDA#10:JSR&FFEE:LDA#249:JSR&FFEE:INC&70:LDX&70:CPX#11:BNEn:RTS:]:NEXT:ENDPROC DEF PROCMC(S$):IF LEN(S$)<>11:REPEAT:S$=S$+" ":UNTIL LEN(S$)=11 $str%=S$:CALL d:ENDPROC ?&FE60=0 RUN VDU6 *K.0CH."CTL2"|M