˙˙˙ Modulspezifikation zum einfachen Filtermodul von Luna. ------------------------------------------------------------------------------ - Ein Luna-Filtermodul tr„gt die Dateiextension "FM" bzw. "fm". - Das Modul wird von Luna direkt geladen und angesprungen (direkt ans Textsegment, ohne pexec()-Modi, ohne Relozierung). - Die Parameterbergabe erfolgt ber den Stack. - Das Modul ist eine normale Programmdatei mit dem 28 Byte langen Header. Rckgabeparameter in D0, Register d0-d7 und a0-a2 drfen ver„ndert werden. Das Filtermodul bleibt w„rend der Blockbearbeitung im Speicher und wird vor Beginn der Filterung einmal zur Initialisierung, dann fr jede Zeile des zu filternden Blockes und nach Filterung einmal zur Deinitialisierung aufgerufen. M”chte ein solches Modul die Zeilenl„nge „ndern (z.Bsp. durch ersetzen einer Zeichenkette durch eine Andere), dann ist der Luna-Arbeitspuffer zu verwenden, dessen Adresse ebenfalls bergeben wird. Eine Ggf. ge„nderte Zeichenkette (Nullterminiert) wird von Luna aus dem Arbeitspuffer ausgelesen und dann entsprechend der Blockmarkierungen die Zeile im markierten Text ge„ndert. Um Luna mitzuteilen, daž sich eine g„nderte Zeichenkette im Arbeitspuffer befindet, ist nach Filterung eine 1 zurckzuliefern, ansonsten Null. ------------------------------------------------------------------------------ Luna ruft das Modul immer mit folgenden Grundparametern auf: ------------------------------------------------------------------------------ a: 4(sp) word Funktionsnummer. b: 6(sp) long Adresse des zu bearbeitenden Strings. c: 10(sp) long Adresse des Arbeitspuffers. d: 14(sp) word L„nge des zu bearbeitenden Strings. e: 16(sp) word L„nge des Arbeitspuffers (das ist immer die maximale im Text vorkommende Zeilenl„nge+1). Die Werte 'b' und 'd' sind nur bei Funktionsnummer 0 gltig. ------------------------------------------------------------------------------ Die bisher m”glichen Funktionsnummern: ------------------------------------------------------------------------------ 0 = Filterfunktion ausfhren. 1 = Zeiger auf Infotext (siehe unten) zurckliefern. es ist ein Zeiger auf den Infotext in D0 zurckzugeben 2 = Initialisierung des Moduls es ist Null (OK), oder ein Errorcode zurckzuliefern 3 = Deinitialisierung des Moduls es ist Null (OK), oder ein Errorcode zurckzuliefern ------------------------------------------------------------------------------ bisherige Exitcodes(long): ------------------------------------------------------------------------------ 0 : OK 1 : Neuer String im Arbeitspuffer (Nullterminiert). -32 : ungltige Funktionsnummer <0 : TOS-Fehlermeldungen