home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
M.u.C.S. Disc 2000
/
MUCS2000.iso
/
anwend
/
luna121
/
module
/
develop.txt
< prev
Wrap
Text File
|
1999-06-05
|
3KB
|
62 lines
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