Fantastic!!!
But i want use array type string in Xbasic?
Is an example possible?
I thank you ...
I'm a turbo pascal fan and with msx (openmsx) i can manage arrays and other things very well and it's very fast...
This program was written in the 80's in all types of basic (commodore, sinclair, bbc, etc etc) to test the speed of the basic.
I liked to convert it to TP and it is very powerful compared to Basic.
I'm sorry I can't do these experiments with Xbasic...
Here is program for those who want to have fun with Turbo Pascal.
Very fast!!!
-------------Turbo Pascal-----------------
proram sieve of Eratosthenes algorithm;
const n =1000;
var next,j : integer;
sieve : array [1..n] of boolean;
begin
for next:=2 to n
do sieve [next]:=true;
writeln('array cleared');
for next:=2 to n
do begin
if sieve[next]
then begin
write (next:5);
j:=next;
repeat
sieve [j] := false;
j := j + next;
until j>n;
end;
end;
end.
I can't publish the basic version...
Fantastic!!!
But i want use array type string in Xbasic?
Is an example possible?
I thank you ...
The "correct" example depends a lot of the stuff you try to do... For your previous example maybe POKE or VPOKE with CHR$()/ASC() is good approach... or maybe integer table... or maybe smaller string table that uses longer strings & MID$()... If you really need variable length strings that change sizes "randomly" then Nestor BASIC has some functions to maintain string database, but I must say I've not ever used them.
I can't publish the basic version...
It seems that on standard MSX this speed test takes something like 14ms, but TIME is not really accurate enough to measure this small task (I left out print part from measurement as screen output speed depends of the screen mode)
10 DEFINT A-Z 20 DIM P(1000) 30 N=1000 40 CLS:TIME=0 50 FOR I=2 TO SQR(N) 60 IF P(I) THEN NEXT I 70 FOR K=I^2 TO N STEP I 80 P(K)=-1:NEXT K,I 90 PRINT TIME/60:PRINT 100 FOR I=2 TO N 110 IF P(I)=0 THEN PRINT I; 120 NEXT I
Perfect!
Tanks...
To be tested on msx 1 for parity of power with computers commodore, sinclair, bbc etc etc
10 L=1000:H=.5
20 DIM S(L)
30 FOR J=1 TO L:S(J)=1:NEXTJ
35 PRINT "ARRAY CLEARED"
40 FOR N=2 TO L
to be continue...
50 IF S(N) < H THEN GOTO 80
60 PRINT N;
70 FOR J=N TO L STEP N: S(J)=0: NEXTJ
80 NEXT N
90 END