                                                Ralf Biedermann
                                                Ortfeld 3
                                                W-2815 Langwedel
                                                Germany
                                                
Hallo Freunde des 68000'ers,
Ich habe mich heute auf Neuland begeben indem ich ein Freewareprogramm
fr den Atari ST geschrieben habe. Mein Revier ist der SINCLAIR QL, dieser
Rechner hat eine schlechtere Hardware aber ein besseres Betriebssytem als
der ST. Mit meinem Programm mchte ich zwei Dinge beweisen:
1. Auch mit anderen Rechner kann man gute Programme entwickeln, meistens 
   sogar einfacher.
2. Das Handbuch des Mega ST's hat recht, manchmal bentigt man die Tastatur
   fr Eingaben.
   
Bei diesem Programm handelt es sich um das bekannte GAME OF LIFE, wobei
GAME ( Spiel ) nicht stimmt. Game of Life ist die Simulation einer Zellkultur
mit Hilfe eines zellulren Automaten. Die einzelnen Zellen knnen zwei
Zustnde annehmen, Lebendig oder Tot. Das Verhalten und die Evolution der
einzelnen Zellen wird durch die Nachbarn bestimmt. Eine tote Zelle wird
Lebendig wenn Sie genau drei lebende Nachbarn hat. Eine lebende Zelle
stirbt wenn Sie weniger als zwei oder mehr als drei lebende Nachbarn hat.
Die Rnder werden nicht bercksichtigt, d.h. eine Zelle am linken Rand hat
auch Nachbarn am rechten Rand ( Torus ). Mit diesen Vorgaben hlt sich mein
Programm streng an das Urlife von Convay. 

Technische Daten:
1.  Feldgre:160*96 Zellen
2.  Zellengre:4*4 Pixel
3.  Monitoranforderungen:nur Monochrome (SM 124 oder Multisync)
4.  Speicherbedarf:mindestens 1 MByte
5.  Sprache:reine Maschinensprache
6.  Lnge Source:ca. 30 KByte
7.  Lnge Code:ca. 9 KByte
8.  Assembler:IDEAL von Omnicron
9.  Geschwindigkeit:max. 3000 Generationen pro Sekunde bei einem Rotor
10. Lnge der gespeicherten Generationen:1920 Byte

Files zu diesem Programm gehrend:
1.  LIFE4.TXT dieser Text
2.  LIFE4.S Ascii-Quelltext
3.  LIFE4.SRC quelltext fr den Turbo-Assembler
4.  LIFE4.PRG ausfhrbare Datei
5.  *.FLD Beispielgenerationen

Bedienung:
Nach dem Start wird zuerst eine Tabelle initialisiert, danach befindet man
sich in einer Editorumgebung mit folgenden Mglichkeiten:
Das Hauptmenu zeigt folgende Punkte:

F1:Set F2:Clear	F3:Go F4:Single	F5:Random F6:Load F7:Save F10:End TORUS
 
1.  Der Grafikcursor kann entweder durch die Cursortasten oder aber durch
    die Maus bewegt werden.
2.  Den Status der einzelnen Zellen kann durch die Taste F1 oder durch
    die rechte oder linke Maustaste verndert werden. F1 schaltet immer auf
    den jeweils anderen Zustand der Zelle um. Die linke Maustaste bewirkt
    das unter dem Cursor eine lebende Zelle entsteht, whrend die rechte
    Maustaste immer eine tote Zelle bewirkt.
3.  Eine permanente Neuberechnung der Generationen kann man durch die Taste
    F3 oder durch gleichzeitigen Druck auf beide Maustasten starten. Wenn
    das Programm in diesem permanenten Modus ist kann man durch einen Druck
    auf eine Taste oder eine Maustaste wieder in das Hauptmenu zurckkommen.
    Die Reaktionszeit auf einen Tastendruck kann bis zu einer Sekunde 
    betragen, die Tastendrcke werden gepuffert whrend man die Maustasten
    gedrckt halten mu bis eine Wirkung sichtbar wird. Whrend des
    Permanentbetriebes werden in der ersten Zeile folgende Informationen
    eingeblendet:Nummer der Generation, Anzahl der lebenden Zellen, Anzahl
    der in der letzten Generation neu geborenen Zellen, Anzahl der in der 
    letzten Generation gestorbenen Zellen und die aktuelle Geschwindigkeit
    in Generationen pro Sekunde.
4.  Ein Einzelschrittbetrieb erhlt man mit der Taste F4. Nach Druck auf die
    Taste F4 wird die nchste Generation berechnet und man erhlt die
    gleichen Informationen wie unter Punkt 3. Die Informationen bleiben
    fr einige Sekunden stehen, durch wiederholten Druck auf die Taste F4
    erhlt man die nchste Generationen, falls das Timeout in der Zwischen-
    zeit abgelaufen ist wird wieder das Hauptmenu eingeblendet.
5.  Mit der Taste F5 kann man eine Zufallsgeneration erzeugen. Es werden
    solange zufllig Zellen erzeugt oder gelscht bis man eine weitere Taste
    gedrckt hat.
6.  Mit der Taste F6 kann man eine vorher gespeicherte Generation laden.
7.  Mit der Taste F7 kann man die angezeigte Generation abspeichern.   
8.  Mit der Taste F8 kann man die Generation die zuletzt geladen oder
    gespeichert worden ist wieder auf den Bildschirm bringen.
9.  Mit der Taste F10 gibt es sogar eine Mglichkeit dieses sehr gute
    Programm verlassen. Vor dem endgltigen Ende wird noch ein kleiner
    Text ausgegeben der aber nach wenigen Sekunden von selbst wieder
    verschwindet.
10. Wenn man sich im Editmodus befindet	hat man	die Mglichkeit	fnf vor-
    definierte Formen auf den Bildschirm bringen. Diese	Formen sind u.a.
    - Gleiter
    - Gleiterkanone
    - Eigenkreation
    
11. Mit	T schaltet man in den Torusmodus und mit R wird	der Rechteckmodus
    aktiviert.

12. Mit	G kann man eine	GRID (Gitter) einblenden, dies dient dazu den Weg
    der	Zellen verfolgen zu knnen.

Hinweise zur Programmierung:
Die meiner Meinung nach extrem hohe Geschwindigkeit von diesem Programm
beruht im wesentlichen auf drei Tatsachen:
1. Fr jede Zelle wird ein Record eingerichtet mit folgendem Inhalt
   Bildschirmadresse fr Zelle   .L
   Maske zum lschen der Zelle   .B
   Zhler fr neue Generation    .B
   Maske zum setzen der Zelle  2*.B
   Bildschirmadresse fr Zelle   .L
   Pointer zu Nachbarrecords   8*.L
   Die Bildschirmadresse fr die Zelle ist in diesem Block zweimal vorhanden
   um fr setzen und lschen einer Zelle effektivere Adressierungsarten
   verwenden zu knnen.
2. Alle lebenden Zellen werden in einer Liste notiert um berflssige
   Rechnungen zu vermeiden.
3. Die Entscheidung welchen Zustand eine Zelle in der neuen Generation hat
   wird durch eine Sprungtabelle getroffen.
   
Letzte Bemerkungen:
1. Dieses Programm ist FREEWARE, d.h. es darf nur mit allen oben genannten
   Files kopiert werden. Das Kopieren ist sogar erwnscht.
2. Schnellere Versionen werden gerne entgegengenommen.
3. Kommentare sind immer erwnscht.
4. Falls das Programm gefllt wrde ich um eine kleine Spende fr einen
   Tierschutzverein deiner Wahl bitten.
5. Der Quelltext soll nicht dazu anregen hnlich rabiat die Maus und die
   Timer zu programmieren, diese Sachen habe ich nur gemacht weil es 
   mglich war.   
        Vielleicht hrt man ja noch von einander
                Ralf Biedermann

Ergnzung zur neuen Version:
Das Laden und Speichern	der Generationen geschieht jetzt im Format von
Georg Zller (Autor von	LIFE_M90). Bei Georg mchte ich	mich auch
fr die	zur Verfgung gestellten Startgenerationen bedanken. Um	die
Anzahl der hbschen Bildchen zu	erhhen	wrde ich euch bitten mir bzw.
Georg neue Startgenerationen zuzuschicken. Wegen Georg gibt es jetzt auch
Torus und Rechteck, sowie die GitterFunktion. Eine Sahe	wurde ebenfalls
verbessert, die	Geschwindigkeit	ist etwa 10% hher als bei meinem ersten
Versuch.

Diese Version 4 ist kosmetisch verndert, z.B. Fehlermeldungen kommen
durch Alert-Boxen. Die Geschwindigkeit wurde im Promillebereich erhht. 
Die wichtigste nderung betrifft aber einen kleinen Fehler unter Benutzung
von 'NVDI'. Durch Benutzung des hervorragenden turbo-Assembler wurde die
Programmlnge verringert. Ach ja schon seit der ersten Version erhlt man
durch drcken der HELP-Taste eine kleine Bedienungsanleitung.

