                   NOTEPAD - das Notizblatt-Accessory
                   ----------------------------------
                   Version 1.3               16.09.91



NotePad - wozu?
---------------
Bei vielen Gelegenheiten whrend der Arbeit am ST mute ich mir Notizen
machen: Telefonnummern, Progamm-Ausgaben, etc., etc. Also griff ich jedes-
mal zu Papier und Kugelschreiber und hatte innerhalb krzester Zeit einen
nicht mehr berschaubaren Wust von fliegenden Zetteln angehuft.
Mit der Zeit wurde das lstig. Sehr lstig. So lstig, da ich anfing, mir
Gedanken zu machen, ob es sich bei diesem Problem nicht um eines handelt,
dessen Lsung geradezu nach einer Accessory-Anwendung schreit:
Ein kleines Programm, das jederzeit aus anderen (GEM-) Programmen heraus
aufrufbar ist und die Notizen, die so anfallen, aufzunehmen in der Lage
ist. Klingt an sich ganz einfach - aber whrend der Entwicklung von der
Idee zum Programm fielen mir immer neue Anwendungsmglichkeiten und weitere
Anforderungen an den Funktionsumfang ein, so da das Ganze schlielich doch
einen ziemlichen Umfang angenommen hat.
Die Arbeit hat sich aber gelohnt: Seitdem NotePad fertig ist greife ich nur
noch uerst selten zu Papier und Kuli; das meiste kriegt NotePad zu
schlucken.

Realisierung
------------
NotePad soll Notizen aufnehmen - na schn. Aber wie?
Ein Mini-Editor mute her; 'Mini' weil das Programm als Accessory laufen
soll und somit die ganze Zeit ber den Speicher blockiert. Aber ein
gewisses Ma an Komfort sollte der Editor auch bieten. Auerdem war da
die Frage, wieviel Platz NotePad fr Notizen zur Verfgung stellen sollte.
Ich erinnerte mich an meinen guten alten Sharp MZ80-K, auf dem ich meine
ersten Erfahrungen mit Computern machte: Der Bildschirm hatte 25 Zeilen zu
40 Spalten - das sollte wohl reichen. Aber wenn auch Notizen aus anderen
Programmen heraus mglich sein sollten, z.B. Zwischenergebnisse o.., dann
durfte das Window von NotePad nicht den Groteil des Bildschirms bedecken;
also entschied ich mich fr den mittleren Systemfont als Zeichensatz. Die
Zeichen sind gerade noch lesbar und 25x40 Zeichen brauchen dann etwa ein
Viertel der Bildschirmflche.
Nun ist es zwar so, da die meisten Notizen nur begrenzte Zeit von Inter-
esse sind; was aber, wenn man doch einmal dauerhaft etwas ablegen will?
Also kam eine Funktion zum Speichern und Laden hinzu. Auch kann es vor-
kommen, da man das Notierte 'Schwarz auf Wei' braucht - eine Drucker-
Routine folgte. Wenn man schon mal dabei ist, I/O-Routinen zu schreiben
und zustzlich noch ber ein Modem verfgt, liegt es nahe, auch an eine
Ausgabe auf diesem Weg zu denken.
Schlielich baute ich noch eine integrierte Hilfe-Funktion ein, falls tat-
schlich mal jemand anderer mit diesem Programm umgehen mte.

Bedienung
---------
Der Editor arbeitet FullWindow-orientiert, soll heien, man kann den Cursor
an jede Stelle des Windows bringen und dort Eingaben oder nderungen vor-
nehmen. Die Cursor-Steuerung ist sowohl ber die Cursortasten als auch ber
die Maus mglich. Der Editor arbeitet im Einfgemodus, das heit da ein
neu eingegebenes Zeichen nicht ein altes berschreibt, sondern an der
aktuellen Cursorposition eingefgt wird. Die blichen Steuerfunktionen sind
eingebaut: INSERT fgt ein Leerzeichen ein, DELETE lscht das Zeichen an
der aktuellen Cursorposition, BACKSPACE das Zeichen vor dem Cursor.
TAB lt den Cursor an die nchste Tabulatorposition springen und fgt an
den bersprungenen Stellen Leerzeichen ein (also keinen 'echten' Tabulator);
die Tabulatorweite ist 4. Die Cursortasten steuern den Cursor wie man es im
allgemeinen von ihnen erwartet; SHIFT und '<-' bzw. SHIFT und '->' bewegen
den Cursor an den Zeilenanfang bzw. das Zeilenende. HOME bewegt den Cursor
in die linke obere Ecke. SHIFT und DELETE lscht die aktuelle Zeile und
SHIFT und HOME lscht nach Sicherheitsabfrage den gesamten Text. UNDO macht
die letzte Lsch-Aktion rckgngig und HELP zeigt die Hilfsseite an.
Um die Bedienung so komfortabel wie mglich zu gestalten, habe ich in das
NotePad-Window ein Drop-down-Men eingebaut. Es verhlt sich genauso wie
ein Mentitel der gewohnten Menzeile, obwohl es natrlich kein 'echtes'
Men ist - das verhindert schon das AES (wo kommen wir da hin: entweder
Window oder Men! Und noch dazu in einem Accessory - tztztz!).
Die Meneintrge sind eigentlich selbsterklrend, daher hier nur eine
kurze Auflistung:
LADEN...     ^L     ldt eine NotePad-Datei
SPEICHERN... ^S     speichert eine NotePad-Datei
DRUCKEN      ^P     druckt den Text ber den parallelen Port aus
MODEM        ^M     sendet den Text an die serielle Schnittstelle
HILFE...     ^H     gibt die Hilfsseite aus
ENDE         ^Q     schickt das Accessory wieder schlafen (Text und Window-
                    Position bleiben erhalten)
Der Aufruf der Meneintrge ist auch ber die angegebenen Shortcuts mglich,
also z.B. das Laden einer NotePad-Datei mittels CONTROL und L.

Hinweise
--------
An einigen Stellen (insbesondere bei der Implementation des 'Mens') mute
ich mich schwer mit dem AES anlegen - so etwas ist ja auch eigentlich nicht
vorgesehen. Aber nichtsdestotrotz sehr ntzlich. Auerdem wollte ich nicht
vor dem AES kapitulieren. Leider hat solche Beharrlichkeit auch ihre
Schattenseiten: Ich mute Kompromisse schlieen. Um nicht den Pfad der
Tugend zu verlassen (sprich: keine 'illegalen' Funktionen oder undokumen-
tierten Variablen zu benutzen), nahm ich in Kauf, da an manchen Stellen
kleinere 'Ungereimtheiten' auftreten. Damit sollte aber sichergestellt sein,
da NotePad mit allen TOS-Versionen lauffhig ist.
Die erwhnten Ungereimtheiten im einzelnen:
- Ist das NotePad-Window nicht das oberste (Top-) Window, verschwindet der
  Mentitel oben rechts in der Titelzeite des Windows.
- Wird das NotePad-Window whrend der Anzeige der Hilfsseite deaktiviert
  (untopped) und von einem anderen Window ganz oder teilweise verdeckt,
  werden neu zu zeichnende Bereiche mit dem Usertext und nicht mit dem
  Hilfstext aufgebaut; das fhrt dazu, da mehr oder weniger Nonsens im
  NotePad-Window zu lesen ist. Wird das NotePad-Window dann aber wieder
  aktiviert, wird der gesamte Window-Inhalt mit dem Usertext aktualisiert.
  Da allerdings nur selten neue Windows geffnet werden, whrend man die
  Hilfsseite angewhlt hat, fllt diese Unschnheit nur wenig ins Gewicht.
- Klickt man bei aktivem NotePad-Window (Top-Window) in einen Bereich
  auerhalb des Windows, wird vom Screen-Manager die entsprechende Aktion
  ausgelst - so weit, so gut. Allerdings erreicht die Nachricht ber das
  Mausklick-Ereignis nicht immer auch NotePad (warum, wei ich nicht; die
  Programmierer von Digital Research wahrscheinlich auch nicht). So ist
  es manchmal notwendig, NotePad durch einen Mausklick ins Window wieder
  zu 'wecken'. Insbesondere kann es hierbei vorkommen, da beim Berhren
  des Mentitels das Men nicht herunterklappt; auch in diesem Fall hilft
  ein Mausklick auf den Mentitel.
"It's not a bug - it's a feature!" heit die bliche Ausrede, glaube ich.
Aber alles lt das AES eben doch nicht mit sich machen (alleine schon
das Redrawing von Windows ist eine Wissenschaft fr sich - manches macht
das AES oder der Screen-Manager selbst, anderes wird kategorisch abgelehnt).

Ein weiterer Hinweis betrifft die NotePad-Dateien. NotePad-Texte werden
immer komplett abgespeichert, d.h. alle 1000 mglichen Zeichen (nicht un-
bedingt elegant, aber einfach zu implementieren). Der Text wird als ASCII-
Text gespeichert, wobei keine Zeilenende-Kennzeichnung (CRLF) eingefgt wird.
Das hat zwei Grnde: Zunchst ist eine Zeilenende-Kennzeichnung nicht not-
wendig, da alle Zeilen gleich lang sind. Der zweite Grund ist allerdings
gewichtiger und liegt im Datei-Aufzeichnungsformat des TOS. Die kleinste
Aufzeichnungseinheit ist ein 'Cluster', der aus zwei Sektoren zu je 512
Bytes besteht, also 1024 Bytes umfasst. Eine NotePad-Datei mit einer Lnge
von 1000 Bytes pat demnach in einen solchen Cluster und belegt somit den
geringstmglichen Platz auf Diskette oder Harddisk. Htte jede Zeile ein
CRLF am Ende, wrde eine NotePad-Datei 1050 Bytes umfassen und mte in
zwei Clusters abgelegt werden; damit wrden aber jedes Mal 998 Bytes nutzlos
verschwendet. Es ist jetzt auch klar, warum es keinen Sinn htte, nur die
wirklich mit Text gefllten Teile des NotePad-Windows abzuspeichern: Der auf
der Diskette bzw. Harddisk belegte Platz bliebe gleich.
Da aber die NotePad-Dateien keine Zeilenende-Kennzeichnung aufweisen ist es
nicht ohne weiteres mglich, sie mit anderen ASCII-Editoren zu lesen; die
gesamte Datei wrde als eine einzige Zeile angesehen werden. Dieses Problem
lt sich, wenn es denn unbedingt sein mu, umgehen, indem man die Zeilen-
lnge im externen Editor auf 40 Zeichen/Zeile einstellt.

Noch 'n Hinweis: NotePad sucht beim Booten nach einem Ordner NOTEPAD im
Root-Directory der Boot-Platte. Wenn ein solcher vorhanden ist, wird der
Default-Suchpfad des Fileselectors darauf eingestellt; sonst ist der Such-
pfad mit dem Root-Directory initialisiert. Anschlieend wird die Datei
"NOTEPAD.INF" geladen, die einen Dateinamen (z.B.: NOTIZEN.DAT) enthalten
kann. Es wird nur ein Dateiname erwartet, ohne Laufwerk oder Pfad und ohne
Anfhrungszeichen o. .; die ersten 12 Zeichen (maximal) werden ohne
Plausibilittskontrolle als Dateiname angesehen. Ist "NOTEPAD.INF" nicht
vorhanden, wird als Dateiname NOTEPAD.DAT angenommen. Die so ermittelte
Datei wird schlielich geladen (falls sie existiert, versteht sich).

Schlubemerkung
---------------
NotePad Version 1.3 ist Freeware. Das heit, das Programm darf (und soll)
beliebig weitergegeben werden. Allerdings gelten folgende Voraussetzungen:
- NotePad darf nicht kommerziell vertrieben werden! (Das betrifft nicht
  die Unkostenbeitrge fr PD-Disketten)
- NotePad sollte immer zusammen mit dieser Anleitung weitergegeben werden.
- Vernderungen an NotePad mssen vor einer Weitergabe mit mir abgesprochen
  werden.
Obwohl ich bei der Programmierung viel Mhe aufgewandt habe und NotePad bei
mir seit Monaten fehlerfrei luft kann ich selbstverstndlich keinerlei
Haftung fr die fehlerfreie Funktion des Programms oder eventuell aus der
Benutzung von NotePad entstehende Schden bernehmen.
Bei Fehlern (hoffentlich nicht!), fr Fragen (warum nicht?), fr Anregungen
(sehr willkommen!) und fr Zuwendungen (dito) stehe ich gerne zur Verfgung:
    Michael Zuhl
    Transvaalstr. 16
    1000 Berlin 65


NotePad  Version 1.3  16.09.91  mz'90/91

