Ich will hier nicht über den Befehlsumfang lästern, mehr passte scheinbar nicht in ~9 kbyte (8 kbyte BASIC-ROM und noch ca 1 kbyte im Kernal-ROM).
Einfach nur mal ein paar Dinge die mir aufgefallen sind wo ich nur den Kopf schüttle.
- Eine einsame Variable kostet 7 byte, selbst wenn sie nur 1 byte halten soll. (2 byte Verwaltung, 5 byte Float-Daten)
- Singles (16 bit Integer) sind langsamer wie Floats weil der Interpreter intern nur mit Floats rechnen kann und verbrauchen trotzdem 4 byte. (2 byte Verwaltung, 2 byte Single-Daten)
- Die Garbage-Collection ist langsam und muss, um langen Wartezeiten vorzubeugen, manuell angetreten werden.
- Die Stringverwaltung ist äußerst ineffizient. Egal was ich treibe, der Interpreter legt erst mal einen komplett neuen String im Speicher an.
- Die Stringmanipulatoren sind extrem pedantisch. A=0:MID$(T$,1,A) produziert einen Fehler statt mir einfach einen leeren String zu geben.
- Soweit ich das sehe wird ein IF bis zum Ende durchgezogen, selbst wenn schon der erste Vergleich fehlschlägt. Das nötigt einem zu so etwas: IF F=O THEN IF B=A THEN ...