3 > ClockSp4 2.01 - Calibrated against BASIC IV  Calculate CPU clock speed &"BBC BASIC IV CPU Timing Program" (A%=0:T%=:A%=A%+1:>T%+50 2;Z=0:Z%=0:B=1:B%=1:F=1/10:C=100:C%=100:D=510:D%=510:F%=3 C:T%=-T%:p(F*35700/T%) PO"Integer REPEAT loop ";:T%=:A%=Z%:A%=A%+B%:A%>C%:T%=-T%:p(F*21200/T%) ZG"Real FOR loop ";:T%=:A=Z D B::T%=-T%:p(F*43800/T%) dK"Integer FOR loop ";:T%=:A%=Z% D% B%::T%=-T%:p(F*16200/T%) n."Trig/Log test ";:0=0:4"" xN0<>0:A=1:T%=:J%=1 F%:A=(((((A*A)))))+1::T%=-T%:p(F*30500/T%) " PRINT"Ackermann Recursion "; R M%=3:T%=TIME:FORN%=1 TO 3:Z%=FNAck(M%,N%):NEXT:T%=TIME-T%:PROCp(F*255400/T%) "String manipulation "; T%=:A$="STRINGMANIPULATIONTEST":A%=0F%*4:A$=A$,A$/2,A$/4+1)+A$,A$/4)+A$,A$/2,2)+A$,A$/4)+A$,A$/4,A$/4+1),A$)::T%=-T%:p(F*56400/T%) L"Procedure call ";:T%=:A%=Z% D%:test::T%=-T%:p(F*75750/T%) L"GOSUB call ";:T%=:A%=Z% D%:TlA::T%=-T%:p(F*86400/T%) '"Combined Average ";:p(speed) ('"Compared to a 2.00MHz BBC Master"  : ݤAck(M%,N%)  M%=0:=N%+1  N%=0:=Ack(M%-1,1) =Ack(M%-1,Ack(M%,N%-1)) :  test: ": , 6: @?p(T%):" "+(T%100),6);".";"0"+(T%),2);"MHz";8: J: T" This is calibrated against a ^# BBC Master 128 with no second h! processor, running BASIC IV r# and with almost all interupts | turned off using:  ?&FE4E=&3F  This gives 2.00MHz. : $ Savage Floating Point test and $ Ackermann Recursion test added % -Mar-1993, based on A&B Jan 90. :  Version 2.00 recalibrates  itself for faster systems  15-Mar-2002 : Cݤspeed: A,B,C,D,F,Z,A%,B%,C%,D%,F%,Q%,R%,S%,U%,V%,W%,X%,Y%,Z% A%=0:T%=:A%=A%+1:>T%+50 ;Z=0:Z%=0:B=1:B%=1:F=1/10:C=100:C%=100:D=510:D%=510:F%=3 E:C=C*10:C%=C%*10:D=D*10:D%=D%*10:F%=F%*10:F=F*10:A%=A%10:A%<50 .T%=:A=Z:A=A+B:A>C:T%=-T%:U%=F*35700/T% &5T%=:A%=Z%:A%=A%+B%:A%>C%:T%=-T%:V%=F*21200/T% 0,T%=:A=Z D B::T%=-T%:W%=F*43800/T% :0T%=:A%=Z% D% B%::T%=-T%:X%=F*16200/T% DSY%=X%:0<>0:A=1:T%=:J%=1 F%:A=(((((A*A)))))+1::T%=-T%:Y%=F*30500/T% NT%=:A$="STRINGMANIPULATIONTEST":A%=0F%*4:A$=A$,A$/2,A$/4+1)+A$,A$/4)+A$,A$/2,2)+A$,A$/4)+A$,A$/4,A$/4+1),A$)::T%=-T%:S%=F*56400/T% X2T%=:A%=Z% D%:test::T%=-T%:R%=F*75750/T% b2T%=:A%=Z% D%:TlA::T%=-T%:Q%=F*86400/T% l+=((Q%+R%+S%+U%+V%+W%+X%+Y%)/(777/100)) v Returns CPU speed*100