Der Stack bei Commodore ist sowieso was Komisches. Zu klein. Nicht verschiebbar. Nicht mehrere möglich. Die Sachen, die man darauf ablegen will kann man nicht direkt abspeichern (Fehlen von PHX, PHY, PLX, PLY). Und langsam.
Warum hattest du einen Geschwindigkeitsvorteil erwartet? Alle Berechnungen werden bei POKE und PEEK doch nach wie vor als Fließkomma durchgeführt.
Du hast sogar noch mehr Fließkomma/Integer-Umwandlungen, als wenn du alles in einem Fließkomma-Array speicherst. Ich hätte daher sogar erwartet, dass es langsamer wird.
Irgendwie hatte ich wohl erwartet, daß man ja auch beim Schreiben/Lesen dann immer z.B. 5 Bytes (Fließkommazahl) vs. 1 Byte (INT) herumbewegen muß. Und da man das viel liest und schreibt (vom/ins RAM), wäre das evtl. spannend gewesen.
Das einzige, was du sparst, ist Platz. Aber das könnte man genauso mit einem Integer-Array erreichen, also A%().
A% gibts da nicht. Das hat vtml. noch nichtmal der 128er.
Daher bleibt nur PEEK/POKE.
Noch mehr Platz konnte man dann evtl. noch mit Bits sparen - was wieder Zeit kostet.
Da bin ich ja froh, denn ohne ungestraftes GOTO wäre BASIC ja kein BASIC.
Ich fand ja gerade diesen echten Spaghetti Code da sehr nett. Zum Beispiel auch das Hochzählen beim Belegen der Multiples dann zur Abwechslung mal mit Counter ... echt klassisch.
Das mit Stapelspeicher ist aber wirklich ein böser Fehler, wenn man das nicht kennt. Das bekommt man nicht raus, warum der dann bei der dritten (oder schon zweiten) Schachtelschleife seltsamste Fehler wirft.
Muß man vermutlich vor jeweils für jedes Basic einzeln austesten, inwieweit das geht.
Bin gestern auch wieder in so eine Falle getappt. Das Commodore BASIC kann lange Variablennamen - aber unterscheidet nur die beiden ersten Buchstaben/Chars. ZEIT1 und ZEIT2 sind also klar erkennbar unterschiedlich, aber eben letztlich doch exakt das Selbe.
Man fragt sich ja, wer sich sowas ausdenkt.