Ultraflash-Noter

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Ultraflash-Noter
Menü des Ultraflash-Noter
Entwickler ThunderBlade/Airwolf-Team, Fairlight, Bliss
Verleger Computec Verlag (V1)
Release 1995
Lizenz Vollversion
Plattform(en) C64, C128
Genre Lettermaker
Steuerung Icon tastatur.png
Medien Icon disk525 1.png
Sprache(n) Sprache:deutsch Sprache:englisch
Information Version 1 erschien in Magic Disk 64 - Ausgabe 05/1995; weitere Versionen folgten, zuletzt Version 3 im Jahr 2012

Der Ultraflash-Noter ist ein Notemaker mit einigen besonderen, zum großen Teil einzigartigen Fähigkeiten.

Kurzbeschreibung[Bearbeiten | Quelltext bearbeiten]

"Dies ist unsere Vision von Kommunikation im Jahre 2012 und darüber hinaus - auf dem Commodore C64. Gib deinem Text Seele und Stil: 26 verschiedene Flash-Effekte, im Classic- und Rainbow-Modus, stehen für dich bereit. Schreibe Notes, die E-Mails überdauern. Bau deine Lieblingsmusik ein: Platz dafür ist von Adresse $1000 bis $3000, Geschwindigkeit bis zu Quad. Was immer du schreibst, über Speicher brauchst du dir nie wieder Sorgen zu machen: Ultraflash komprimiert Text live - du kannst mindestens 72 Seiten schreiben. Repräsentiere stolz deine Gruppe oder zeige deine Produktion, in dem du dein eigenes Logo einbaust, frei platzierbar und mehrfach benutzbar. Es gibt viele wundervolle Dinge auf dem C64 - Schreiben gehört nun dazu." [1]

Namensgebung und Motivation[Bearbeiten | Quelltext bearbeiten]

Die in den 1990ern in Mode gekommenen Notemaker hatten oft sogenannte Flash-Effekte, mit denen man Wörter oder Textpassagen farbig blinken lassen konnte. Implementiert wurde das meist über einen kleinen Trick: Statt für jeden einzelnen Buchstaben dessen aktuelle Farbe ins Farb-RAM zu schreiben, wurde der Zeichensatz invertiert und die Blinkeffekte über das Verändern der Extended Background Color Register realisiert. Bei diesem Modus geben die oberen beiden Bits eines Zeichens an, aus welchem der vier Register dessen Farbe kommen soll. So ließ sich mit jedem Zeichen dessen gewählter Blinkeffekt einfach mitspeichern - man war jedoch auf drei Blinkeffekte und eine normale (nicht blinkende) Textfarbe sowie 64 Zeichen limitiert.

Der Autor des Ultraflash-Noters, ThunderBlade (damals Airwolf-Team, später Fairlight), wollte einen besonderen Notemaker schaffen, der sich von anderen abhob. So entstand die Idee eines Noters, der tatsächlich für jeden Buchstaben separat speichert, ob dieser "flashen" sollte oder nicht, und die entsprechenden Flash-Effekte über Schreibzugriffe in das Farb-RAM zu realisieren. Damit fielen die Hauptbeschränkungen anderer Noter komplett weg: Es wurden weit mehr als drei Flash-Effekte möglich, gleichzeitig brauchte man die oberen Bits pro Zeichen nicht mehr zum Speichern der Flash-Nummer, womit statt einem Zeichensatz theoretisch bis zu vier gleichzeitig darstellbar wurden.

Releasedaten[Bearbeiten | Quelltext bearbeiten]

Die erste Version wurde 1995 auf der Magic Disk 64 veröffentlicht. 1996 erschien bei Fairlight eine stark verbesserte Version. Rund 15 Jahre später nahm der Autor die Entwicklung wieder auf und veröffentlichte 2012 unter Bliss die Version 3, in der wichtige Kernkomponenten komplett neu implementiert wurden.

Besonderheiten[Bearbeiten | Quelltext bearbeiten]

  • Mehr Schreiben: Kompression der Eingabe im laufenden Betrieb - damit auch geeignet für besonders lange Texte, z.B. ausführliche Dokumentation von Programmen (ab V2 Anzeige des freien Textspeichers)
  • Kreatives Hervorheben: Statt der üblichen 3 Flash-Effekte unterstützt Ultraflash 15 Flashes (V1), 20 (V2) bzw. 26 (V3)
  • Variantenreich: Rainbow-Effekt (durchlaufende Farben) als Alternative zum Flash-Effekt
  • Drei Zeichensätze simultan: zwei 1×1 (normal) und ein 1×2 (doppelt hoch)
  • Einbindung eines Logos oder kleinen Bildes in Hires anstelle des 1×2 Zeichensatzes (nur V3)
  • Optional Einbindung von zwei Musikstücken, in der Note umschaltbar auf einer bestimmten Seite oder nach einer bestimmten Zeit (nur V3)
  • Unterstützung von möglichst vielen Musikstücken: Vermeidung von Abstürzen, wie andere Noter sie zeigten, in Abhängigkeit der von der Musikroutine genutzten Zeropage-Adressen


Der Rainbow-Flash-Effekt wurde in V3 als neues Feature eingeführt und bringt scrollende Farben in den Text
In einem der Version 3 beigefügten Tutorial wird beispielhaft die Einbindung eines Logos gezeigt



Bedienung[Bearbeiten | Quelltext bearbeiten]

Die Bedienung orientiert sich größtenteils an Notemaker-Klassikern wie dem Facenoter. In Version 1 des Ultraflash-Noters ist eine deutschsprachige Anleitung enthalten. Die folgende Beschreibung bezieht sich auf Version 3.

Hauptmenü[Bearbeiten | Quelltext bearbeiten]

  • E  Editor: Starten des Texteditors zum Schreiben oder Ändern des Textes, Bedienung siehe unten.
  • T  Testweises Ansehen der Note: Startet die Text-Anzeige, so wie sie der Leser später zu Gesicht bekommt. Mit SPACE  zur nächsten Seite, mit +  vor-, mit -  zurückblättern
  • M  Musik laden: Die Musik muss ab Adresse $1000 im Speicher liegen und darf max. bis $3000 gehen, also max. 32 Blocks lang sein. Der Platz kann auch für eine besonders umfangreiche Musikdatei, in der mehrere Musikstücke vorhanden sind, genutzt werden. Alternativ kann auch ein zweites Musikstück geladen werden, so dass man in der Note zwischen beiden hin- und herschalten kann (z.B. um je nach Thema oder Stimmung die passende Musik einzuspielen).
  • C  Charset (Zeichensatz oder auch Font genannt) laden: Wählen welchen der drei Zeichensätze man laden möchte. Alternativ kann man auch eine Grafik - Logo oder kleines Bild - laden. Diese muss vorher mit einem externen Tool aus dem Hires-Format in Zeichensatz konvertiert worden sein, so dass zwei Dateien vorhanden sind: Eine, welche die in Tiles zerlegte Grafik enthält und eine, die beschreibt wie aus diesen Tiles die Grafik zusammengesetzt ist.
  • X  Umblend-Effekt wählen, mit dem im Lese-Modus Seiten aus- und eingeblendet werden. Eine kleine Vorschau auf die Animation ist neben diesem Menüpunkt zu sehen.
  • R  Rasterbar-Editor: Ändern der bunten Farbbalken, die im Lesemodus über und unter dem Text zu sehen sind. Eingabe der Farbwerte mit Hexadezimalzahlen (0-9, A-F). Welche Farbe welcher Zahl entspricht kann man z.B. der Liste auf AAY64 entnehmen, auch die Helligkeitsreihenfolge ist nützlich. Mit INST DEL , ggf. zusammen mit SHIFT , Farbverlauf zusammenziehen bzw. Platz für Zwischenfarben einfügen.
  • P  Parameter für das Abspielen von Musik: Einstellungen für Musikstück 1 oder 2 wählen - bei nur einer Musik braucht man für die zweite nichts einzustellen. Dann angeben, ob eine Single-Speed-Musik (1 ) oder Multi-Speed-Musik (2 -4 ) vorliegt. Bei Musikdateien mit mehreren Musikstücken wird in der Regel über die Register eingestellt, welches Stück gespielt werden soll - ansonsten einfach die Register auf 0 stehenlassen. Musikstücke ab Adresse $1000 haben standardmäßig (unabhängig vom Musikprogramm mit dem sie erstellt wurden) die Adresse $1000 für die Initialisierung der Musik und die $1003 für das Abspielen. Bei hiervon abweichenden Musikstücken kann man hier die entsprechenden Adressen eingeben. Bei Multispeed-Musikstücken sind die Adressen der zusätzlich pro Frame aufzurufenden Routinen oft abweichend vom Standard und deshalb hier anzugeben. Achtung: Wenn an den angegebenen Adressen keine ausführbaren Routinen stehen, kann der Computer abstürzen. Einsteiger nutzen am besten nur Standard-Sounds ab $1000 mit Init/Play $1000/$1003.
  • Z  Löschen des gesamten Textspeichers nach Sicherheitsabfrage
  • W  Automatischer Zeilenumbruch (Word Wrap) ein- oder ausschalten. Wenn aktiv, wird beim Schreiben ein Wort automatisch in die nächste Zeile übernommen, wenn es in die aktuelle nicht mehr passt.
  • S  Speichern der Note. Wählen: Text inkl. des gesamten Programms speichern, wie bei Notemakern üblich (damit z.B. der Empfänger gleich mit demselben Programm antworten kann); alternativ: Ohne Editor speichern, d.h. der Text kann vom Empfänger lediglich gelesen werden (spart Diskettenplatz).

Texteditor[Bearbeiten | Quelltext bearbeiten]

Den Texteditor kann man mit RUN STOP  verlassen (im VICE liegt diese Taste auf ESC ).

Navigation[Bearbeiten | Quelltext bearbeiten]

Die Cursor-Tasten bewegen normal den Cursor, wobei der Bildschirminhalt nicht durch Rausscrollen nach oben verloren geht, wenn man mit dem Cursor den unteren Rand überschreitet.

Mit SHIFT ++  und SHIFT +-  kann man eine Seite vor- und zurückblättern. Mit CLR HOME  gelangt man in die linkere obere Ecke, mit SHIFT +CLR HOME  wird der Bildschirm gelöscht; es erfolgt eine Sicherheitsabfrage (im VICE liegt CLR HOME  auf POS1 ).

Flash-Steuerung[Bearbeiten | Quelltext bearbeiten]

  • CTRL +A  ... CTRL +Z  Flash-Effekt für zu schreibenden Text auswählen
  • CTRL +  Flash-Effekt deaktivieren, in Textfarbe schreiben (im VICE liegt   auf ENTF )
  • C= +W  Word-Flash: Wort, auf dem sich der Cursor gerade befindet, mit aktuellem Flash-Effekt versehen
  • F7  Einstellen des Flash-Modus für aktuelle Seite: Classic (Blinken) oder Rainbow (Farben scrollen)

Zeichensätze[Bearbeiten | Quelltext bearbeiten]

  • F1 , F3 , F5 : Auswahl eines der drei möglichen Zeichensätze (Fonts)
  • C= +F  Wort, auf dem sich der Cursor gerade befindet, wird mit dem aktuellen Font dargestellt
  • SHIFT +K  Einfügen des Logos (nur wenn Logo-Zeichensatz und Logo-Aufbaudaten geladen sind)

Musik[Bearbeiten | Quelltext bearbeiten]

  • F2  schaltet zwischen Musikstück Nr. 1 und Nr. 2 um (nur wenn zweites Musikstück konfiguriert)

Farben[Bearbeiten | Quelltext bearbeiten]

  • F4 , F6 , F8 : Auswahl der Farben für Rahmen, Hintergrundfarbe und Schriftfarbe für die aktuelle Seite

Text formatieren[Bearbeiten | Quelltext bearbeiten]

  • C= +L , C= +R , C= +C  Aktuelle Zeile ausrichten nach links, rechts, oder zentrieren
  • SHIFT +L , SHIFT +R , SHIFT +C  Gesamte Textseite ausrichten nach links, rechts, oder zentrieren
  • C= +I , C= +D  Einfügen bzw. Löschen einer Zeile an der Position des Cursors
  • SHIFT +I , SHIFT +D  Einfügen bzw. Löschen einer ganzen Textseite. Beim Löschen wird die gerade aktuelle Textseite nach einer Sicherheitsabfrage komplett gelöscht, alle Seiten dahinter werden eine Seite nach vorne gerückt. Beim Einfügen wird die aktuelle Textseite und alle nachfolgenden eine Seite nach hinten gerückt, so dass Platz für eine neue, leere Textseite entsteht.

Demonstrationen[Bearbeiten | Quelltext bearbeiten]

Um die Fähigkeiten von Ultraflash V3 zu zeigen, sind zwei Demo-Notes dabei:

  1. "Roxette Tribute" demonstriert die Nutzung zweier Musikstücke in einer Note: SID-Versionen der Roxette-Songs "Queen of Rain" und "The Look". Zusätzlich wird mittels Logo-Funktion ein Roxette-Logo angezeigt, welches in etwa dem des "Joyride"-Plattencovers entspricht.
  2. "Commodore Ad" ist einigen C64-Werbespots nachempfunden, die in den USA zu dessen Einführung liefen: Die typische klassische Musik ist ebenso enthalten wie einige Original-Werbesprüche. Die technischen Daten präsentiert hier der C64 selbst, zusätzlich wird die Logo-Funktion des Noters für ein "Commodore 64"-Logo genutzt, wie es auf den frühen C64-Originalverpackungen zu sehen war. Der Rainbow-Flash zeigt hier eindrucksvoll die Farbfähigkeiten dieses Computers.


Ultraflash V3 Demo-Note 1 - Roxette Tribute
Ultraflash V3 Demo-Note 2 - Commodore Advertisement


Zum Noter gehört auch noch ein "Logo-Howto", das für weniger versierte Anwender erklärt, wie man ein Logo bzw. eine Grafik in einen Zeichensatz konvertiert. Was man dann mit dieser Grafik machen kann (z.B. Fragmente einzeln verwenden, etc.) wird hier an Beispielen gezeigt. Die zu hörende Musik ist eine C64-Conversion der berühmten Musik aus dem Programm Imploder, einem Packer auf dem Amiga.

Technische Hintergrundinformationen[Bearbeiten | Quelltext bearbeiten]

Bei genauerer Betrachtung des Programms fällt auf, dass an vielen Stellen ein technischer Aufwand betrieben wurde, der weit über das Niveau hinausgeht, das man in dieser Kategorie erwarten würde. Es handelt sich beim Ultraflash-Noter deshalb um eines dieser raren Anwenderprogramme, die den C64 an seine Grenzen treiben, dabei aber nicht so "glänzen" können wie Spiele oder Demos.

Kompression[Bearbeiten | Quelltext bearbeiten]

Menü des Ultraflash-Noter Version 2
Menü des Ultraflash-Noter Version 3

Der Ultraflash-Noter hat mehr Fähigkeiten und damit umfangreicheren Code als andere Noter - und ergo weniger verfügbaren Textspeicher. Damit man nicht mitten im Schreiben an dessen Grenze stößt, war Kompression von Anfang an wichtig. Unkomprimiert benötigt jede Bildschirmseite 1000 Bytes, jedoch fällt nochmals die gleiche Menge für eine "Flash-Page" an - ob und mit welchem Effekt ein Zeichen "flasht" - also insgesamt 2000 Bytes.

Folgende Kompressionsansätze werden genutzt:

  • V1: 4-Bit-Format für Flash-Informationen, deshalb Begrenzung auf 15 Flash-Effekte
  • V2: Run Length Encoding (Equal Byte Kompression) für Flash-Information und sich wiederholende Zeichen im Text
  • V3: Huffman Encoding für Text, Run Length Encoding für Flash-Informationen und Leerzeichen im Text

Die Besonderheit: Um den nutzbaren Speicher zu maximieren, werden nicht wie üblich alle Daten vor dem Speichern komprimiert und nach dem Laden dekomprimiert. Vielmehr wird jede einzelne Seite direkt nach dem Schreiben "live" komprimiert und on-the-fly wieder dekomprimiert.

Zusätzliche Herausforderung: Waren in Ultraflash V1 Textseiten inkl. Flashdaten noch stets gleich lang, konnte sich ab V2 bei Änderung bereits geschriebener Seiten aufgrund des Kompressionsverfahrens auch deren Platzbedarf plötzlich ändern. Zu nachfolgendem Text würde also eine Lücke entstehen - oder er würde überschrieben! Deshalb komprimiert V2 zwecks Längenermittlung zunächst „ins Leere“ (also ohne zu speichern), verschiebt die folgenden Seiten entsprechend und komprimiert dann real. Da V3 zwar viel besser, aber auch langsamer komprimiert, schiebt dieser aus Geschwindigkeitsgründen stattdessen zunächst den nachfolgenden Text ans Speicherende und komprimiert dann direkt die aktuelle Seite, wobei das High-Byte auf Überschreiben des Folgespeichers geprüft wird. Dahinter werden die nachfolgenden Seiten wieder angefügt. Das ganze fällt aber nur auf, wenn viel Text geschrieben und dann etwas zu Beginn der Note geändert wird.

Damit in V3 die Huffman-Codierung funktioniert, wird bei der Kompression jedes Zeichen von der Information "befreit", in welchem Zeichensatz es geschrieben wurde. Dafür werden bei Zeichensatz-Wechsel spezielle Steuerzeichen in den Datenstrom eingefügt, ähnlich der Commodore-BASIC-Steuerzeichen zum Ändern der Farbe oder zum Umschalten in den Reverse-Modus.

Der Huffman-Algorithmus ordnet häufigen Zeichen weniger Bits zu als seltenen. Ultraflash V3 bestimmt jedoch nicht für jede Note die Häufigkeit der benutzten Zeichen, sondern verwendet eine statische Zuordnung basierend auf der Häufigkeit von Buchstaben in der englischen Sprache. Das liefert für Englisch optimale Ergebnisse, ist für andere Sprachen wie Deutsch aber nur geringfügig schlechter.

Umsetzung der Flash-Effekte[Bearbeiten | Quelltext bearbeiten]

Herkömmliche Notemaker erzeugen ihre "Flashes" durch invertierten Zeichensatz und simple Änderungen der 3 Extended Background Color Register. Der Ultraflash-Noter hingegen liest per Endlosschleife aus einer "Flash-Page" für jedes Zeichen aus, ob ein Flash aktiv ist, holt ggf. die entsprechende Farbe aus einer Tabelle und schreibt sie ins Farbram. Damit werden viel mehr Flash-Effekte möglich, doch ist das ganze sehr CPU-intensiv. Deshalb können Ultraflash V1/V2 nur Single-Speed-Musik abspielen, da sonst die Blinkeffekte unschön langsam geworden wären.

Um Double- und Quad-Speed-Musik zu ermöglichen, wurde das Flashen in Ultraflash V3 völlig anders realisiert: Aus der "Flash-Page" wird eine Tabelle mit Positionen und Längen generiert. Statt also für jedes Zeichen individuell die Flash-Information auszulesen, wird in V3 eine kleine Schleife durchlaufen, die z.B. beim Wort "HALLO", blinkend mit Flash-Effekt Nr. 1, einfach fünf Mal die aktuelle Farbe für Effekt 1 entsprechend ins Farbram schreibt. Das hatte jedoch einen Haken: Im Editor wurde schon durch ein bloßes Einfügen eines Leerzeichens zwischen die zwei "L" von "HALLO" die Tabelle ungültig. Statt einen Eintrag mit der Länge 5 musste es ja nun zwei Einträge geben: einen für "HAL", einen für "LO". Damit beim Editieren die Tabelle mit den Flash-Positionen und -Längen stets gültig bleibt, generiert Ultraflash V3 diese bei jedem Tastendruck (!) in Echtzeit neu.

Die Flash-Routine in V3 ermöglichte außerdem den neuen Rainbow-Flash-Effekt, bei dem die Wörter nicht blinken, sondern die Farbverläufe zyklisch durchlaufen. Hierbei wird parallel zum Index des flashenden Bereichs ein zweiter Index in die Farbtabelle hochgezählt.

Musik-Unterstützung[Bearbeiten | Quelltext bearbeiten]

Fast jedes Assembler-Programm benötigt früher oder später bestimmte Zeropage-Adressen. Dies gilt auch für Musikroutinen. Deshalb kommt es bei anderen Notemakern immer wieder vor, dass bestimmte Musiken - insbesondere exotischere Stücke, die nicht mit Standardprogrammen wie dem DMC erstellt wurden - teilweise dieselben Zeropage-Adressen benutzten wie der Noter selbst. Dies führt in der Regel zum Absturz. Der Ultraflash-Noter umgeht dies, in dem er - wie ein modernes Multitasking-Betriebssystem - vor dem Aufruf der Musik den "Kontext", in diesem Fall "seine" benutzten Zeropage-Adressen rettet, und den Zustand wiederherstellt, den der letzte Aufruf der Playroutine zurückgelassen hatte. Nach Ende der Playroutine erfolgt der gleiche Vorgang entsprechend andersherum. Damit erreicht der Ultraflash eine sehr hohe Kompatibilität mit diversen Musikstücken. Dank der Kompression der Textdaten konnte außerdem der Speicherplatz für die Musikstücke großzügig dimensioniert werden.

V1 und V2 unterstützen nur normale Single Speed Musikstücke, da der Prozessor mit der Flash-Darstellung zu stark ausgelastet ist. In V3 wird diese mit einer wesentlich effizienteren Herangehensweise realisiert - so können auch Double Speed und sogar Quad Speed Musikstücke genutzt werden. Mehr siehe "Umsetzung der Flash-Effekte".

Seiten-Umblend-Effekt[Bearbeiten | Quelltext bearbeiten]

Inspiriert vom wohl bekanntesten Notemaker, dem Facenoter, benutzt Ultraflash zum Umblenden der Textseiten einen Effekt, der auf Manipulation des Zeichensatzes basiert. Jedes Zeichen im Zeichensatz wird dabei zum Ausblenden mit einem festen Muster mit einer AND-Verknüpfung in mehreren Stufen verknüpft, bis von den Zeichen nichts mehr zu sehen ist. Umgekehrt wird beim Einblenden mittels OR-Verknüpfung mit den selben Animationsstufen der Zeichensatz schrittweise eingeblendet.

Da statt 64 Zeichen (Extended Background Color Modus) volle 256 Zeichen unterstützt werden, muss die Umblend-Routine die vierfache Menge an Zeichen bearbeiten, um denselben Effekt zu erzielen. Der Prozessor des C64 hat also beim Umblenden einer Seite richtig viel zu tun, während der Nutzer ein Ein- und Ausblenden sieht und dabei nicht ahnt, dass die 1 MHz des C64 wieder einmal richtig gefordert werden. Je nachdem, wie viel Rasterzeit die verwendete Musik nutzt und wie viele Zeichen am Bildschirm "flashen" ist beim Umblenden eine deutliche Verlangsamung des Flash-Effekts zu sehen. Dabei ist die Routine selbst mit jeder Version des Noters noch optimiert worden, so wird u.a. die gleiche Technik der Schleifenprogrammierung eingesetzt, die üblicherweise auch bei Vollbild-Scrolling in Spielen zum Einsatz kommt.

Quellen[Bearbeiten | Quelltext bearbeiten]

  1. Anleitung Ultraflash-Noter V3

Weblinks[Bearbeiten | Quelltext bearbeiten]


Artikel des Monats.gif Dieser Artikel wurde Artikel des Monats.