            >> TTI (Time to IBM) und RAT (Receive Amiga Time) <<

WAS TUN DIESE PROGRAMME ?

Da die Systemuhr der PC-Karte nicht mit der Akku-Uhr des Amiga verbunden ist,
kennt der IBM beim Booten die aktuelle Zeit nicht. Deshalb stehen in der Datei
AUTOEXEC.BAT (MS-DOS-Äquivalent der startup-sequence) die beiden Befehle
DATE und TIME, die dem Benutzer ermöglichen, die aktuelle Zeit von Hand einzu-
geben. Dies hat mich persönlich immer gestört, denn jetzt hatte ich endlich
einen Computer mit Akku-Uhr, und der PC konnte sie nicht lesen. Aus
diesem Problem heraus entstanden Time_to_IBM und Receive_Amiga_Time (kurz
TTI bzw. RAT).


VORBEREITUNGEN :

Um keine 5 1/4"-Diskette mitliefern zu müssen, habe ich Sourcecode (Turbo-
Pascal) und Executable auf AMIGA-Seite gebracht. Bevor Sie loslegen können,
müssen Sie sie wieder von da herunterholen.
Dazu tun Sie bitte folgendes :

1.) Booten Sie das System mit Ihrer PC-Start-Workbench
2.) Starten Sie das Programm PCDisk als Hintergrundprozeß (d.h. entweder
    aus dem CLI mit « run PCDisk » oder per Doppelklick auf das zuge-
    hörige Icon
3.) Aktivieren Sie das PC-Display (Mausklick)
4.) Geben Sie folgende Befehle ein (angenommen, die PD-Disk ist in DF1:)

    AREAD DF1:Programme/RAT(IBM-Programm!!!).EXE B:RAT.EXE /B

    AREAD DF1:SourceCodes/RAT.PAS B:RAT.PAS

    Der Befehl AREAD muß beim Aufruf auf der Diskette im aktuellen Lauf-
    werk sein. Legen Sie die Diskette, auf die gespeichert werden soll,
    ins Laufwerk B: oder warten auf die Aufforderung "Please insert disk
    for drive B:" und legen sie dann ins Laufwerk A:. Oder Sie drücken
    RETURN, wenn Sie die Programme auf derselben Diskette haben wollen.


TTI (das Amiga-Programm) liest die aktuelle Zeit, formt sie in einen String um
und sendet ihn über das Dual-Ported-RAM zum IBM, der ihn mit Hilfe des Pro-
gramms RAT empfängt, auswertet und danach seinerseits die IBM-Systemuhr stellt.

WIE TUN SIE DAS ?

Zuerst muß TTI gestartet werden. Dabei gibt es mehrere Möglichkeiten:
Entweder startet man das Programm direkt aus dem CLI oder ruft ihn in der
startup-sequence auf. Drei Arten des Aufrufs sind hier -je nach Zusammenhang-
sinnvoll:

1.) TTI (ohne Parameter)

2.) TTI -w

3.) run TTI

zu 1.)  So kann man das Programm direkt aus dem CLI starten. Es liegt in der
    "Natur" des Programms, daß es wartet, bis der IBM seine Bereitschaft
    signalisiert, die Daten zu empfangen. Wenn er das nie tut, ist der
    Task, der TTI aufgerufen hat, blockiert. Falls dies der einzige offene
    Task war, bleibt dem User keine Wahl als erneut zu booten.
    Um dies zu vermeiden, kann man TTI auf noch zwei weitere Arten auf-
    rufen :
zu 2.)  Die Option -w besagt, daß das Programm sich selbst beendet, wenn inner-
    halb von zehn Sekunden keine Rückmeldung vom IBM angekommen ist.
    Es bricht dann mit der Meldung "Timeout Error - IBM antwortet nicht !"
    ab. Zur Verwendung in der startup-sequence eignet sich diese Version
    jedoch praktisch nicht; für diesen Zweck bietet sich folgendes an:
zu 3.)  Mit dem Kommando 'run' wird TTI als Hintergrundprozeß gestartet. Dies
    hat den Vorteil, daß man nicht auf die Beendigung der Übertragung
    warten muß um weiterzuarbeiten. Um ein Starten mit 'run' möglich zu
    machen, muß das Programm von aufrufenden CLI 'detached', d.h. losgelöst
    werden. Daher die Öffnung des eigenen Ausgabefensters.
    Wenn in der startup-sequence (möglichst früh, aber natürlich erst nach
    setclock) 'run TTI' aufgerufen wird, kann der Rest der Stapeldatei
    abgearbeitet werden, solange TTI noch auf den IBM wartet.

Nachdem nun TTI installiert wurde, muß das Empfangsprogramm RAT auf PC-Seite
aufgerufen werden. Dazu gibt man (entweder in AUTOEXEC.BAT oder direkt aus
MS-DOS) den Befehl

    RAT (ohne Parameter).

RAT setzt voraus, daß TTI bereits läuft, sonst gibt es eine Fehlermeldung.

Sobald nun beide Programme installiert sind, beginnt der Datenaustausch. Dabei
wird wie folgt verfahren:

1a.)    AMIGA sendet die Länge des zu empfangenden Strings und wartet darauf,
    daß der IBM diesen Wert liest und, als Zeichen der Bestätigung, danach
    die Adresse löscht.
1b.)    Der IBM liest die Adresse, an der er die Länge des Strings vermutet.
    Diese muß gleich 26 sein; wenn sie das nicht ist, zeigt das, daß TTI
    (noch) nicht gestartet wurde. Für diesen Fall wird eine Fehlermeldung
    ausgegeben, sonst die Länge übernommen und die Adresse gelöscht.
    Danach wartet IBM, bis AMIGA das erste Zeichen sendet.
2a.)    AMIGA sendet 1 Byte des Strings und wartet, bis IBM den Wert liest und
    zur Bestätigung den Wert invertiert (Wert = 255 - Wert).
2b.)    IBM liest 1 Byte, verwertet es und invertiert es. Danach wartet er, bis
    AMIGA das nächste Byte schickt.

Die Schritte 2a.) und 2b.) wiederholen sich, bis der gesamte String übertragen
ist. TTI wird beendet; RAT entnimmt dem String die wichtigen Daten, gibt sie am
Bildschirm aus und stellt die Systemuhr.

HINWEISE ZUR INSTALLATION VON TTI UND RAT IN STARTUP-SEQUENCE UND AUTOEXEC.BAT

Da TTI immer vor RAT gestartet werden muß, sollte der Aufruf möglichst früh in
der startup-sequence geschehen. Natürlich muß vorher 'setclock opt load' durch-
geführt werden.
RAT kann theoretisch zu beliebigem Zeitpunkt in AUTOEXEC.BAT aufgerufen werden,
vorausgesetzt, dies geschieht nach Aufruf von TTI. Wenn jedoch im Laufe von
AUTOEXEC.BAT Dateien kreiert werden, sollte davor die Systemuhr gestellt sein.
Meistens reicht es, einfach die Befehle DATE und TIME durch RAT zu ersetzen.
RAT macht übrigens beide Befehle unnötig; Datum und Zeit werden auf einmal
gestellt.

Beispiel (so sieht es bei mir aus:)

startup-sequence                AUTOEXEC.BAT

BindDrivers                 mode co80
AddBuffers df0: 30              keybgr
run PCDisk ; für TTI und RAT nicht nötig    ver
wait 3                      RAT
setclock opt load               .
run TTI                     .
.                       .
.
.

Im Notfall muß man eben ein bißchen rumprobieren.

ACHTUNG !!

Immer nur zusammengehörige Versionen beider Programme benutzen !!
TTI V1.1 und RATV1.0 arbeiten z.B. nicht zusammen !!


TECH INFO

TTI wurde in Aztec C V3.6 geschrieben und basiert leicht auf dem Programm
Janus.c aus dem AMIGA-Systemhandbuch von Markt und Technik. Allerdings wurden
die Unzulänglichkeiten dieses Programms weitgehend beseitigt, um TTI und RAT
wenigstens absturzsicher zu machen.

Compiler - und Linkeraufrufe :

cc TTI
ln TTI -lc


RAT wurde in Turbo-Pascal V4.0 (Borland) geschrieben und basiert auf demselben
Programm wie obiges. Der Sourcecode muß einfach mit Turbo-Pascal compiliert
werden (ohne besondere Optionen).


NACHTEILE

Dieses Programm nimmt sich -ziemlich unverschämt- einfach die Adressen 0x202000
bis 0x202003 zur Datenübertragung, ohne sie zu allokieren. AllocAbs hat nicht
funktioniert; bis jetzt hat es jedoch noch niemand gestört, daß ich da so im
Speicher rumfuhrwerke. Elegant ist das nicht, weiß ich, aber ich habe keine
Ahnung, wie ich dem IBM mitteilen soll, an welcher Adresse (die ich mit
AllocJanusMem erhalten habe) er die Daten zu erwarten hat, ohne eine Adresse
festzulegen, über die ich dem IBM mitteilen kann, wo die andere Adresse liegt.
Tja.

In der Hoffnung, daß das Programm jemandem außer mir nützt

T.Pietzcker 
