Hi,
1570 hatte ja als Basic-Alternative TRSE vorgeschlagen, und da ich das noch nicht kannte, habe ich den Benchmark mit TRSE nachprogrammiert.
In TRSE ist so einiges anders als in Pascal und ich fühlte mich da erst recht eingeengt, aber zum Schluss ist dann doch ein lauffähiges Programm dabei rausgekommen.
Damit haben wir dann auch einen Wert für TRSE. Wie aussagekräftig der ist kann ich aber nicht sagen, weil ich das Programm doch sehr umstellen musste.
Hier mal der Quellcode:
program C64Project;
var
Key : Byte = 0;
i : integer = 0;
TF : integer = 60;
G : integer = 1;
SZ : integer = 0;
S : integer = 0;
K : integer = 0;
B : ARRAY[8] of integer;
const
Ausgabe : Byte = 0;
function TI():integer;
var
t1,t2 : byte = 0;
begin
t1:=peek(^162,0);
t2:=peek(^161,0)-65280;
TI:=CreateInteger(t2, t1);
end;
procedure berechnen ();
begin
B[0]:=B[0]+1.5*G ; B[1]:=B[1]+2.3*G ; B[2]:=B[2]+2.8*G ; B[3]:=B[3]+4*G;
B[4]:=B[4]+6*G ; B[5]:=B[5]+2.4*G ; B[6]:=B[6]+2.9*G ; B[7]:=B[7]+4.1*G;
end;
begin
ClearScreen($20, ^$0400);
ClearScreen(white, ^$D800);
moveto(1,1,$04);
printstring("ECHTZEIT :",nil,nil);
moveto(1,2,$04);
printstring("GESCHWINDIGKEIT :",nil,nil);
moveto(1,3,$04);
printstring("SPIELZEIT :",nil,nil);
moveto(1,4,$04);
printstring("KAPAZITAET :",nil,nil);
poke(^162,0,0);
poke(^161,0,0);
poke(^160,0,0);
S:=TI();
while true do
begin
if TI()-S > TF then
begin
// Geschwindigkeit verändern
Key:=GetKey();
if Key <> 0 then
begin
if ((Key = "+") and (G < 5)) then G+=1;
if ((Key = "-") and (G > 0)) then G-=1;
end;
Key:=0;
//
SZ:=SZ+G;
S:=TI();
if G <> 0 then berechnen();
moveto(19,1,$04);
printdecimal(TI()/TF,4);
moveto(19,2,$04);
printdecimal(G,4);
moveto(19,3,$04);
printdecimal(SZ,4);
moveto(19,4,$04);
printdecimal(K,4);
K:=0;
if ((G>0) and (Ausgabe = 1)) then begin
for i := 0 to 7 do
begin
moveto(1,6+i,$04);
printdecimal(B[i],4);
end;
end;
end;
K+=1;
end;
end.
Alles anzeigen
Und im Anhang die Werte:
mit Ausgabe von B()
Bitte melde dich an, um diesen Anhang zu sehen.
ohne Ausgabe von B()
Bitte melde dich an, um diesen Anhang zu sehen.