nderungen und neue Funktionen nach Interface 1.07:


Nachfolgend werden alle nderungen in der Reihenfolge  aufgezhlt,  in 
der sie programmiert wurden. Eine ausfhrliche Anleitung befindet sich 
im Archiv MANUAL.TOS.  Diese Textdatei soll nur einen schnellen  ber-
blick ber die nderungen liefern.
Der  Text ist whrend der Programmierung der  neuen  Interface-Version 
entstanden,  und  war  eigentlich nur fr  meine  Betatester  gedacht. 
Deshalb bitte ich Rechtschreibfehler und Stil zu entschuldigen.


Neu in Interface:

- Objektanzeige auch bei Menbaumdarstellung.

- Beim  ffnen mehrerer Bume wird sofort abgebrochen,  wenn die  Fen-
  steranzahl nicht ausreicht.

- "Nchstes"-Button in allen Objekt- und Baumdialogen,  um direkt  zum 
  nchsten Objekt oder Baum zu gelangen.

- Fr IMG und RSC-Dateien werden jetzt die Pfade getrennt verwaltet.

- Men vom Iconeditor umgestaltet ("Grafik laden",...)

- 2  Resourcedateien knnen miteinander verglichen  werden.  Sinn  der 
  Funktion ist,  da man damit z.B.  fremdsprachige Resourcen leichter 
  pflegen  kann,  und Fehler schneller findet.  Um die  Funktion  aus-
  zulsen  mu man 2 Resourcedateisymbole selektieren,  und  dann  den 
  Menpunkt aufrufen.  Der Menpunkt ist auch anwhlbar,  wenn genau 2 
  Resourcen geladen wurden,  oder wenn die Baumfenster von 2 Resourcen 
  offen sind.
  Wenn  ein Baum selektiert ist,  oder ein Baum geffnet  wurde,  kann 
  der  Vergleich  wahlweise ab Baum 0 oder  diesem  Baum  durchgefhrt 
  werden.

- Die Baum- und Objektebox ist in ein Fenster gelegt worden,  und  mu 
  daher  nicht  immer  erneut  ber "O"  oder  "B"  aufgerufen  werden 
  (Abschaltbar!).

- Man  kann nun in der Suchfunktion auch nach irgendwelchen Texten  in 
  der Resource suchen. Gro/Kleinschreibung wird nicht unterschieden.

- Alle  Dialoge wurden in Fenster gelegt  (Abschaltbar!).  Der  Cursor 
  bleibt  jetzt  auch beim Anklicken von  Touchexit-Objekten  auf  dem 
  alten Objekt stehen (nur wenn der Dialog im Fenster liegt).

- Resourcen drfen jetzt (fast) beliebig lang werden.  Die Anzahl  der 
  Objekte  pro  Baum ist auf 1024 begrenzt;  jede  Resource  kann  un-
  begrenzt viele Bume enthalten (kein Beschrnkung mehr auf max.  256 
  Bume).
  Wenn mehr als 256 Bume verwendet werden,  mu die Resource im  HRD-
  Format abgespeichert werden.  Resourcen in diesem Spezialformat  er-
  zeugt man, indem man den Button "RSX" einschaltet.

- Neuer  Menpunkt  "Letzte Fassung".  Er verwirft eine  Resource  und 
  ldt den alten Stand wieder ein.

- "HELP"-Button im BoxText-Dialog,  der alle Platzhalter des  p_valid-
  Feldes anzeigt.

- Beim  Testen von Dialogen wird jetzt eine Warnung  ausgegeben,  wenn 
  ein Objekt EDITABLE ist, ohne vom Typ FText oder FBoxText zu sein.

- Im  Einstellungsdialog kann man eine Sizebox  einschalten,  die  fr 
  jedes  Objekt unter der Maus die Size-Ecke anzeigt.  Fr alle  ntz-
  lich, die die Ecke nie finden konnten :-)

- Beim  Anzeigen  der  Objektdaten im Fenster  werden  jetzt  alle  16 
  Zeichen des Objektnamens angegeben.

- Die  MyDials  in  Interface untersttzen  jetzt  Cut/Copy/Paste  mit 
  Control-X/C/V ber das Clipboard in allen Dialogen.

- Resourcedateien  mit  dem Namen "NAMENLOS" werden jetzt  nicht  mehr 
  abgespeichert.  Statt dessen erscheint jetzt immer der  Fileselektor 
  ohne Namensvorgabe.

- Im  Boxtext-Dialog  sind jetzt fr p_valid die Zeichen  "A"-"Z"  und 
  "a"-"z" zugelassen,  damit man fr eigene benutzerdefinierte Objekte 
  neue Eingabetypen verwenden kann.

- Man  kann  jetzt  eigene Objekte in  die  Objektebox  von  Interface 
  einbinden (FlyDial-Ecke, OK-Button, ...).
  Dazu  ldt man die Interface-Resource,  und kopiert  das  gewnschte 
  Objekt in den "OBJEKTE"-Baum.  Die Sortierreihenfolge ist  egal,  es 
  kommt nur darauf an,  da das neue Objekt in der inneren Box landet, 
  in der sich auch die anderen Objekte befinden.
  Das  neue Objekt wird nach dem Start von Interface _nicht_  als  ein 
  G_USERDEF-Objekt  angezeigt,  damit nicht versehentlich von der  An-
  passungsroutine  Daten verndert werden  (z.B.  Objektgre,  Flags, 
  ...).

- Das XY-Raster wird jetzt fr jede Resource getrennt verwaltet.  Wenn 
  man das HRD-Format benutzt, wird das aktuelle Raster abgespeichert.

- Im  Dialog "Einstellungen" gibt es jetzt den  Punkt  "Label-Prefix". 
  Wenn dieser Punkt selektiert ist,  stellt Interface jedem neu einge-
  gebenen  Label eine einstellbare Anzahl von Zeichen  des  Baumnamens 
  voraus. Ein Trennzeichen kann auch definiert werden.
  Die  Buchstaben  werden nur dann vor das  Label  gehngt,  wenn  das 
  Objekt vorher noch keinen Namen besessen hat.
  Ein Beispiel:
  Ein neues Objekt im Baum "SETTINGS" soll den Namen "OK" bekommen.
  Label-Prefix ist auf 3 Zeichen gesetzt, das Trennzeichen ist "_".
  Dadurch bekommt das Objekt den Namen "SET_OK" zugewiesen.

- Neuer  Menpunkt "Objektnummer fest".  Dadurch kann man  verhindern, 
  da sich Objektnummern bei Aktionen verndern.  Statt dessen  ndert 
  Interface  nur  die Verkettung der  Objekte.  Funktioniert  auch  in 
  Menbumen.  Wenn diese Option selektiert ist, ndert Interface auch 
  nicht mehr die Position unsortierter Menbaumeintrge.
  Wenn ein neues Objekt in einen Baum eingefgt wird,  wird es an  das 
  Baumende  angehngt,  und  verndert daher nicht  die  Objektnummern 
  anderer Objekte in diesem Baum.
  Sortieren  ist  auch mglich.  Dabei wird nur  die  Objektverkettung 
  umgehngt, alle Objekte bleiben an ihrem Platz.
  Lschen  wre theoretisch auch machbar.  Dazu mte ich  das  Objekt 
  aus der Objektstruktur aushngen,  aber im Baum stehen lassen. Da es 
  aber danach keine Mglichkeit mehr gibt,  an dieses Objekt  heranzu-
  kommen, werde ich diese Option lieber nicht einbauen.
  Wenn  dieser Schalter gesetzt ist,  sollte es leicht  mglich  sein, 
  fremde  Resourcen zu ndern,  ohne da das Programm dadurch  Schaden 
  nimmt.  Es  kann  nur  zu Fehlern  kommen,  wenn  ein  Programm  der 
  Objektverkettung  der eigenen Resource folgt.  Aber das drfte  fast 
  nie vorkommen.

- Beim  Verschieben mehrerer Objekte innerhalb eines Fensters  bleiben 
  die  Objekte auch nach der Verschiebeaktion  selektiert,  damit  man 
  sie  ggf  noch  weiter verschieben kann und nicht  wieder  alle  neu 
  selektieren mu.
  Auerdem  verndert Interface dabei nicht mehr die  Objektreihenfol-
  ge. Nur die Verkettung wird u.U. gendert.

- Headerdateien  werden  jetzt nur  noch  abgespeichert,  wenn  Labels 
  verndert  oder gelscht wurden,  oder wenn der  Resourceinfo-Dialog 
  mit "OK" verlassen wurde.  Das drfte alle Compilerbenutzer  freuen, 
  deren Compiler sonst das komplette Projekt neu compilieren wrde.

- Der  Iconeditor  untersttzt jetzt das  Clipboard.  Alle  Icons  und 
  Images  werden im IMG und im ICO (IconEdi) Format abgespeichert  und 
  geladen.

- Ein  Clipboard fr Objekte ist jetzt eingebaut.  Objekte  zieht  man 
  einfach aufs Clipboard,  bzw zieht sie wieder aus dem Clipboard  auf 
  ein  Dialog-  oder Menfenster.  Wenn das  Clipboardicon  verschoben 
  werden  soll,  mu man es erst selektieren (Mausklick  oder  Rubber-
  box),  und dann verschieben.  Solange es deselektiert ist,  kann man 
  den Inhalt "herausziehen".
  Man  darf selbstverstndlich auch mehrere Objekte gleichzeitig  aufs 
  Clipboard kopieren.
  Der  Inhalt  dieses Clipboards wird nicht auf der  Festplatte  abge-
  speichert,  da ein Resourceformat doch etwas ungewhnlich fr  einen 
  Clipboardordner wre.

- Beim Sortieren kann man jetzt die Sortierrichtung invertieren,  d.h. 
  man kann z.B.  Dialoge bauen,  die sich von unten nach oben aufbauen 
  (igitt!).

- Fast  alle mglichen Daten des Desktops werden jetzt  abgespeichert, 
  damit  man  Interface nach dem Verlassen spter wieder  im  gleichen 
  Zustand vorfindet (wie in Pure C).
  Abgespeichert wird:
  - Die Position aller Icons
  - Die Gre, Position und Sliderposition aller Resourcedateifenster
    (dazu zhlt das Baumfenster, Formularfenster und Menfenster)
  - Die Gre, Position und Sliderposition des Desktopfensters
  - Alle geladenen Resourcedateien (natrlich nur die Pfade :-)
  Alle  Koordinaten werden bei einem Auflsungswechsel  ggf  gendert, 
  damit man immer noch alle Objekte erreichen kann.

- Formularfenster und Menfenster werden jetzt nicht mehr relativ  zur 
  linken,  oberen Bildschirmecke geffnet,  sondern relativ zum  Baum-
  fenster.  Das soll die bersicht etwas erhhen, und drfte vor allem 
  Grobildschirmbesitzer freuen.

- Ein  Tip fr alle,  die den Interface-Desktop nicht  mgen:  Desktop 
  ins  Fenster legen,  Parameter speichern,  Interface  erneut  laden, 
  Desktop schlieen, Parameter erneut speichern.
  Bei allen weiteren Starts erscheint kein Desktop mehr.  Man kann den 
  Desktop  wieder  ffnen,  indem man die  Copyright-Meldung  anzeigen 
  lt (etwas extravagant,  aber was soll man machen...),  oder  indem 
  man den Desktop nicht mehr ins Fenster legt.
  Besser finde ich es aber,  wenn man den Desktop soweit  verkleinert, 
  da  nur  noch  der  Papierkorb,  das Clipboard  und  ein  bis  zwei 
  Resourcedateien sichtbar sind.

- Die  Position  jedes  geffneten Baumfensters wird  fr  alle  Icons 
  (max.  15)  gespeichert.  Wenn  man eine  Resource  ldt,  wird  das 
  Fenster  an  der alten Position  geffnet.  Interface  verhlt  sich 
  damit jetzt hnlich, wie der Atari Desktop.

- Mit  F8 kann man das eingestellte Raster aller Resourcen auf  Pixel-
  raster  umschalten.  Bei einem erneuten F8 werden die alten  Raster-
  einstellungen  restauriert.  Der Sinn ist eine schnelle  Umschaltung 
  zwischen Buchstaben- und Pixelraster

- Die  Menzeile  kann  jetzt auch ins  Desktopfenster  gelegt  werden 
  (vorausgesetzt,  da der Desktop im Fenster liegt :-). Ich wei zwar 
  noch nicht,  ob das sinnvoll ist, aber da meine Routinen das bereits 
  knnen, hab ich es einfach mal erlaubt.

- Beim  Verschieben  eines Objekts kann man das Objekt  jetzt  "unter" 
  ein  anderes  Objekt schieben.  Es wird dem  Zielobjekt  nicht  mehr 
  automatisch  als Child zugeordnet,  wenn man auf die Alertbox  "Soll 
  die Objektstruktur gendert werden? Abbruch/Nein/Ja" mit "Nein" ant-
  wortet.  Diese Alertbox erscheint nur,  wenn das verschobene  Objekt 
  und  das Zielobjekt ein gemeinsames Parent  besitzen.  Dadurch  soll 
  verhindert  werden,  da  ein Objekt auerhalb  des  Parents  liegen 
  kann.

- Icons  und  Images  knnen nun durch  den  Button  "Minimale  Gre" 
  soweit  wie  mglich verkleinert werden,  ohne  da  Daten  verloren 
  gehen.  Dabei wird das Image soweit nach links oben  geschoben,  bis 
  kein  weier Rand mehr existiert.  Dann wird der rechte  und  untere 
  Rand abgeschnitten. Zuletzt wird das Image wieder zentriert.

- Die Position der Baum- und Objektebox wird abgespeichert,  wenn  sie 
  in ein Fenster gelegt wurden.

- Der  Objekttyp  "G_USERDEF"  wird jetzt  direkt  von  Interface  un-
  tersttzt.  Dabei  legt  Interface eine  OBJECT-Struktur  an,  deren 
  ob_spec-Pointer  auf eine USERBLK-Struktur zeigt.  Fr jedes  Objekt 
  wird in der Resource eine eigene USERBLK-Struktur angelegt.
  "ub_parm"  kann  direkt in Interface  eingegeben  werden.  "ub_code" 
  enthlt  einen NULL-Pointer,  d.h.  nach dem Einladen einer  solchen 
  Resource  mu  man  als erstes in  "ub_code"  aller  Userdef-Objekte 
  einen  Zeiger auf die eigene Zeichenroutine eintragen.  Sonst  wrde 
  der Computer beim Zeichnen eines solchen Objektes sofort abstrzen.

- Manuelles  Sortieren:  Die  zu sortierenden Objekte  mssen  in  der 
  Reihenfolge angeklickt werden,  in der sie spter gezeichnet  werden 
  sollen. Am Ende des Sortiervorganges wird ein "Pling" ausgegeben.

- Das  Objekte-Popup wurde in die Menleiste gelegt.  Sinn  der  Sache 
  ist  ein  etwas  "kompatibleres"  Selektionsverfahren  in  Interface 
  (Klick  auf  ein  Objekt soll es selektieren,  und  kein  Popup  er-
  scheinen lassen).
  Da ich nicht sofort alle Brcken hinter mir abbrechen  wollte,  kann 
  man das Popup im "Settings"-Dialog wieder einschalten.

- Wenn  die Objektnranzeige eingeschaltet ist,  gibt es  in  Interface 
  merkwrdigerweise  Probleme  beim erkennen  von  Doppelklicks,  wenn 
  zwei  Events  gleichzeitig eintreffen  (MU_BUTTON  und  MU_M2).  Das 
  liegt an dem etwas "eigenwilligen" Verhalten von evnt_multi.
  Ich  hab nun versucht etwas dagegen zu unternehmen,  indem  ich  den 
  MU_M2-Event wieder durch einen MU_TIMER-Event ersetzt habe.
  Nach einem Einfachklick warte ich jetzt,  ob direkt darauf noch  ein 
  weiterer Klick folgt.  Wenn das der Fall ist, fasse ich beide Klicks 
  zu  einem Doppelklick zusammen.  Doppelklicks werden  dadurch  jetzt 
  wesentlich  besser erkannt.  Als Nebeneffekt dauert es  aber  leider 
  manchmal  bis zu einer halben Sekunde,  bis auf  einen  Einfachklick 
  reagiert  wird.  Das passiert aber nur,  wenn es ein  "verdchtiger" 
  Einfachklick ist (z.B.  wenn zwei Events gleichzeitig gemeldet  wur-
  den).

- Unter MultiTOS kann man jetzt auch Objekte aus den  Toolbox-Fenstern 
  ziehen,  wenn  sie im Hintergrund liegen (sie werden nicht  getopt), 
  ohne dabei die rechte Maustaste drcken zu mssen.

- Die  nervende  Alertbox "Soll das Objekt wirklich  auf  sich  selbst 
  kopiert  werden?" gibt es nicht mehr.  Die Kopieraktion  wird  nicht 
  mehr  durchgefhrt,  wenn  das  Objekt um  keinen  Pixel  verschoben 
  wurde.

- Unter  MultiTOS kann man jetzt Objekte im Fenster-Desktop  benutzen, 
  wenn er im Hintergrund liegt,  ohne da er getoppt wird.  Die rechte 
  Maustaste  ist dafr nicht mehr notwendig,  da wie bei den  Toolbox-
  Fenstern das entsprechende MultiTOS-Flag gesetzt wird.

- Ein Wrap-Modus fr die Sizebox wurde implementiert.  Auf hochdeutsch 
  heit  das,  da  man  Objekte jetzt in  alle  mglichen  Richtungen 
  vergrern und verkleinern kann.  Es gibt immer noch nur die Sizebox 
  in  der rechten,  unteren Ecke der Objekte.  Aber wenn man die  Ecke 
  ber  das Objekt oder links davon zieht,  wird auf eine andere  Ecke 
  "umgeschaltet".

- Fr  alle  Lattice  C Fans ist der  ob_spec-Cast  "(LONG)"  fr  die 
  Sourcecodeausgabe in der Interface Resource.  Da Lattice mit  (LONG) 
  nicht  zurechtkommt,  sondern  vor  ob_spec zwingend  auf  (VOID  *) 
  besteht,  kann  man es jetzt durch nderung  der  Interface-Resource 
  umdefinieren.

- AV_STARTPROG wird fr Resourcedateien untersttzt.

- Menpunkt "Abbrechen":  Interface wird ohne abspeichern der Konfigu-
  ration verlassen (auch wenn "Autosave" aktiviert ist).

- Fast  alle  Strings  der Modula-Headerausgabe liegen  jetzt  in  der 
  Interface Resource, und sind dadurch frei definierbar.

- Resourcevergleich:  Wenn  in  einem der beiden  Resourcefenster  ein 
  Baum  selektiert wurde,  kann man den Vergleich auch ab diesem  Baum 
  durchfhren.
  Wenn  2 Resourcen geladen wurden,  oder wenn die Baumfenster  von  2 
  Resourcen  geffnet sind,  mu man die Desktop-Icons  der  Resourcen 
  nicht mehr selektieren, um die Vergleichsfunktion auszufhren.

- Die  Shortcuts  in Menbumen werden  automatisch  rechtsbndig  an-
  geordnet. Dabei beachtet Interface folgende Regeln zur Erkennung:
  -  Der  Shortcut  startet ab dem ersten Blank,  das von  rechts  ge-
     funden wird.
  -  Vor  der  Tastenangabe  mu mindestens  ein  Kontrollzeichen  fr 
     Shift,  Control oder Alternate stehen,  oder es folgt sofort  die 
     Tastenangabe;  dann sind aber nur Sondertasten wie  HELP,  INSERT 
     usw erlaubt.
  -  Nach  dem  oder  den Kontrollzeichen mu  eine  1  Zeichen  lange 
     Tastenangabe folgen, oder eine Angabe einer Sondertaste.
  Wenn  diese  Bedingungen erfllt sind,  werden  die  Shortcuts  nach 
  folgenden Regeln angeordnet:
  -  Vor jedem Shortcut mssen mindestens 2 Spaces stehen.
  -  Steht am Textende ein "..." (z.B.  in "ffnen..."),  dann  reicht 
     in dieser Zeile 1 Space vor dem Shortcut aus.
  Die  erlaubten Zeichen fr die Kontrolltasten stehen in  der  Inter-
  face Resource im Free String "SHORTCUT".  Die erlaubten Sondertasten 
  stehen im Free String "SH_KEYWORDS".  Vor und hinter jeder Sonderta-
  ste in diesem Free String mu ein "/" stehen.
  Dadurch sind fast alle denkbaren Shortcuts von Interface  erkennbar. 
  Einzige Ausnahme ist ein einzelner Buchstabe, vor dem kein Kontroll-
  tastenzeichen  steht.  Ich habe diese Mglichkeit  absichtlich  aus-
  geklammert,  damit  Interface  nicht versehentlich ein  Zeichen  aus 
  einem Meneintrag ohne Shortcut falsch anordnet (z.B. "Bild 1").
  Die Shortcuts werden nicht automatisch angeordnet,  wenn die  Option 
  "Men-Tastaturkrzel anordnen" ausgeschaltet ist.

- Die  MyDials  und Interface sollten jetzt unter  MultiTOS  auch  mit 
  anderen Systemfontgren zurechtkommen.

- Meneintrge  werden  jetzt immer vollstndig mit  Leerzeichen  auf-
  gefllt, damit man unter MultiTOS Submens verwenden kann.

- Auflsungswechsel unter MultiTOS geht jetzt.  Wenn noch ungesicherte 
  Dateien  im  Speicher sind,  verweigert Interface  den  Wechsel  mit 
  AP_TFAIL.

- Whrend  des  Speicherns  und Ladens von  Resourcedateien  wird  der 
  Bildschirm freigegeben,  damit andere Applikationen weiterhin  Bild-
  schirmausgaben machen knnen.

- Es gibt jetzt das Dropdown-Men "Fenster".  Darin sind die ersten 10 
  geladenen Resourcedateien anwhlbar.  Sinn der Aktion ist,  da  man 
  auch mit ausgeschaltetem Desktop Fenster der Resourcedateien  ffnen 
  kann.  Man kann es natrlich auch benutzen,  um schnell das  Fenster 
  einer bestimmten Datei zu toppen (bzw zu ffnen).
  Die  Resourcedateien  11 bis 15 sind weiterhin nur ber  den  Inter-
  face-Desktop erreichbar.

- In  jedem Objekt-Dialog gibt es jetzt einen Hilfebutton,  der  einen 
  Hilfsdialog ber alle erweiterten Objekttypen anzeigt.
  Dieser  Dialog kann im Extobfix-Prg enthalten sein.  Der Zeiger  auf 
  den  Baum mu im Funktionsarray an letzter Stelle  definiert  werden 
  (siehe neue MyDial-Extobfix-Datei).  Extobfix-Dateien mit Hilfeseite 
  erhalten den Magic "06101965" statt "06101964".
  Der  Baum wird von Interface an die  erweiterten  MyDial-Objekttypen 
  angepat.  Die ersten beiden Objekte (Mover und berschrift)  mssen 
  immer  die  Objektnummern 1 und 2 besitzen.  Alle  weiteren  Objekte 
  sind  frei  definierbar,  die Anzahl der Objekte und die  Gre  des 
  Dialoges ist ebenfalls nicht vorgegeben.
  Wenn  eine  Extobfix-Datei mit Hilfeseite geladen  wurde,  wird  von 
  Interface immer diese Seite angezeigt.  Ansonsten wird eine Default-
  MyDial-Hilfeseite angezeigt.

- Jeder  Variablen  der  C Source Ausgabe (RSH)  kann  man  jetzt  ein 
  "static"  voranstellen lassen.  Dadurch sind alle  Variablen  Modul-
  lokal  deklariert,  und man kann mehrere Resourcen in  ein  Programm 
  bernehmen. Der Button befindet sich neben dem RSH-Button.
  Interface liest das "static" direkt aus der Dialogbox.  Man kann das 
  Wort  also durch nderung der Interface-Resource an  eigene  Wnsche 
  anpassen.

- Man  kann  jetzt auch in Menbumen  einzelne  Objekte  selektieren. 
  Dadurch  kann  man sie ber die Menleiste lschen,  und  ist  nicht 
  mehr  auf  den Papierkorb des Desktops  angewiesen.  Es  gibt  jetzt 
  eigentlich  keinen  Grund mehr,  den Interface-Desktop  unter  einem 
  Multitasking Betriebsystem einzuschalten.
  Die einzige Einschrnkung in Menbumen ist,  da man nur ein Objekt 
  zur Zeit selektieren kann.  Cut/Copy/Paste ist dadurch jetzt auch in 
  Menbumen ber die Tastatur oder ber die Menleiste aufrufbar.
  Wenn  man  einen  Mentitel ausschneidet,  wird  das  dazu  gehrige 
  Pulldown _nicht_ mit ins Clipboard kopiert,  da es zu einer  anderen 
  Objekthierarchie gehrt.


Weitere neue Funktionen nach Interface 2.00 stehen in LIESMICH.TXT.
