NOTEPAD - das Notizblatt-Accessory ---------------------------------- Version 1.2 16.08.90 NotePad - wozu? --------------- Bei vielen Gelegenheiten w„hrend der Arbeit am ST mužte 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 angeh„uft. Mit der Zeit wurde das l„stig. Sehr l„stig. So l„stig, daž ich anfing, mir Gedanken zu machen, ob es sich bei diesem Problem nicht um eines handelt, dessen L”sung 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 w„hrend der Entwicklung von der Idee zum Programm fielen mir immer neue Anwendungsm”glichkeiten und weitere Anforderungen an den Funktionsumfang ein, so daž das Ganze schliežlich doch einen ziemlichen Umfang angenommen hat. Die Arbeit hat sich aber gelohnt: Seitdem NotePad fertig ist greife ich nur noch „užerst selten zu Papier und Kuli; das meiste kriegt NotePad zu schlucken. Realisierung ------------ NotePad soll Notizen aufnehmen - na sch”n. Aber wie? Ein Mini-Editor mužte 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. Aužerdem 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 m”glich sein sollten, z.B. Zwischenergebnisse o.„., dann durfte das Window von NotePad nicht den Grožteil 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 Bildschirmfl„che. 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 zus„tzlich noch ber ein Modem verfgt, liegt es nahe, auch an eine Ausgabe auf diesem Weg zu denken. Schliežlich baute ich noch eine integrierte Hilfe-Funktion ein, falls tat- s„chlich mal jemand anderer mit diesem Programm umgehen mžte. Bedienung --------- Der Editor arbeitet FullWindow-orientiert, soll heižen, 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 m”glich. Der Editor arbeitet im Einfgemodus, das heižt 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 l”scht das Zeichen an der aktuellen Cursorposition, BACKSPACE das Zeichen vor dem Cursor. TAB l„žt den Cursor an die n„chste 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 l”scht die aktuelle Zeile und SHIFT und HOME l”scht nach Sicherheitsabfrage den gesamten Text. UNDO macht die letzte L”sch-Aktion rckg„ngig und HELP zeigt die Hilfsseite an. Um die Bedienung so komfortabel wie m”glich zu gestalten, habe ich in das NotePad-Window ein Drop-down-Men eingebaut. Es verh„lt 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 Meneintr„ge sind eigentlich selbsterkl„rend, daher hier nur eine kurze Auflistung: LADEN... ^L l„dt 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 ^E schickt das Accessory wieder schlafen (Text und Window- Position bleiben erhalten) Der Aufruf der Meneintr„ge ist auch ber die angegebenen Shortcuts m”glich, also z.B. das Laden einer NotePad-Datei mittels CONTROL und L. Hinweise -------- An einigen Stellen (insbesondere bei der Implementation des 'Mens') mužte ich mich schwer mit dem AES anlegen - so etwas ist ja auch eigentlich nicht vorgesehen. Aber nichtsdestotrotz sehr ntzlich. Aužerdem wollte ich nicht vor dem AES kapitulieren. Leider hat solche Beharrlichkeit auch ihre Schattenseiten: Ich mužte Kompromisse schliežen. 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 lauff„hig ist. Die erw„hnten 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 w„hrend 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 ge”ffnet werden, w„hrend man die Hilfsseite angew„hlt hat, f„llt diese Unsch”nheit nur wenig ins Gewicht. - Klickt man bei aktivem NotePad-Window (Top-Window) in einen Bereich aužerhalb des Windows, wird vom Screen-Manager die entsprechende Aktion ausgel”st - 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!" heižt die bliche Ausrede, glaube ich. Aber alles l„žt 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 m”glichen 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: Zun„chst 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 L„nge von 1000 Bytes pažt demnach in einen solchen Cluster und belegt somit den geringstm”glichen Platz auf Diskette oder Harddisk. H„tte jede Zeile ein CRLF am Ende, wrde eine NotePad-Datei 1050 Bytes umfassen und mžte in zwei Clusters abgelegt werden; damit wrden aber jedes Mal 998 Bytes nutzlos verschwendet. Es ist jetzt auch klar, warum es keinen Sinn h„tte, 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 m”glich, sie mit anderen ASCII-Editoren zu lesen; die gesamte Datei wrde als eine einzige Zeile angesehen werden. Dieses Problem l„žt sich, wenn es denn unbedingt sein muž, umgehen, indem man die Zeilen- l„nge im externen Editor auf 40 Zeichen/Zeile einstellt. Schlužbemerkung --------------- NotePad Version 1.2 ist Freeware. Das heižt, das Programm darf (und soll) beliebig weitergegeben werden. Allerdings gelten folgende Voraussetzungen: - NotePad darf nicht kommerziell vertrieben werden! (Das betrifft nicht die Unkostenbeitr„ge fr PD-Disketten) - NotePad sollte immer zusammen mit dieser Anleitung weitergegeben werden. - Ver„nderungen 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 l„uft kann ich selbstverst„ndlich keinerlei Haftung fr die fehlerfreie Funktion des Programms oder eventuell aus der Benutzung von NotePad entstehende Sch„den 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.2 16.08.90 ½mz'90