Hi!
ACME hat jetzt die Versionsnummer 0.96.3, für den Link zum Source siehe meine Signatur.
Die Änderungen sind:
- Neuer Pseudo Opcode: "!hex" bzw. "!h" fügt Binärdaten ein. Im Gegensatz zu !by $1a, $3c, $5e, $70 ist !h 1a3c5e70 einfach sehr viel kürzer. Gedacht ist das Feature für externe Tools wie eigene Sourcecode-Generatoren; ursprünglich kam mir die Idee bei der Text-Compression-Compo.
- Neuer Pseudo Opcode: !skip 17 macht das Gleiche wie * = * + 17, fängt dafür aber kein neues logisches Segment an. Das scheint erst mal nicht sonderlich nützlich zu sein, aber ein für die Zukunft geplantes Feature wird diesen Pseudo Opcode brauchen - und da er relativ einfach implementiert werden konnte, habe ich das gleich jetzt erledigt.
- Unterstützung für "cheap locals": Neben den bisherigen lokalen Symbolen mit dem Präfix "." gibt es jetzt auch lokale Symbole mit dem Präfix "@". Der Unterschied ist, dass man den Gültigkeitsbereich nicht manuell per !zone abstecken muss: Die @-Labels gelten immer nur im Bereich zwischen den beiden globalen Labels davor und danach.
- Neuer CLI Switch --fullstop: Damit wird der Präfix für Pseudo Opcodes von "!" zu "." geändert. Das ermöglicht das Assemblieren von Quelltexten anderer Assembler (wie z.B. TASS) mit deutlich weniger Konvertierungsarbeit. Natürlich funktionieren dann die lokalen Labels mit "." am Anfang nicht mehr richtig, aber solche sollten in den entsprechenden Sources ja eh nicht vorkommen.
- Bugfix: Fehlerhafte mathematische Ausdrücke wie in lda #1)+1 haben in älteren Versionen nach der Fehlermeldung zu Abstürzen geführt. Vielen Dank an Bitbreaker für den Bugreport!
- Neue Warnung: Zeropage-indirekte Adressierungsarten mit der Adresse $ff erzeugen eine Warnung, da das Highbyte des Pointers nicht von $0100, sondern von $00 geholt würde. Bei den 24-Bit-Pointern der 65816-CPU passiert das natürlich auch für $fe. Vielen Dank an Gerrit für den Vorschlag!
Viel Spaß damit, und Probleme bitte sofort melden...