★ APPLICATIONS ★ DIVERS ★ Der doppelte CPC ★ |
PS-MTS/128 : Multitasking auf CPC 6128 (CPC Amstrad International) | Applications Divers |
Multitasking mit dem CPC 6123 Wie praktisch wäre es doch, wenn man eine rechenaufwendige Anwendung in den Hintergrund verlagern und im Vordergrund mit dem Rechner Weiterarbeiten könnte, wie es zum Beispiel beim Amiga möglich ist. Aber wenn der Amiga es kann, warum sollte es ein CPC dann nicht wenigstens ansatzweise auch können? Und tatsächlich, es geht (zumindest auf dem CPC 6128). Das Prinzip zur Realisierung von Multitasking auf dem CPC 6128 ist einfach: eine Interruptroutine schaltet regelmäßig zwischen der ersten und der zweiten RAM-Bank um. Dadurch ist die Anzahl der Tasks zwar auf zwei beschränkt, aber im Normalfall dürfte das ausreichen. Außerdem ist der CPC für mehr als zwei gleichzeitig ablaufende Programme dann doch etwas langsam. Nun, die Methode klingt zwar einfacher als sie letztendlich ist, aber nach einigen Recherchen im Betriebssystem ist doch eine annehmbare Lösung entstanden. Um das Multitaskingsystem auf Ihrem Rechner einzusetzen, haben Sie zwei Möglichkeiten: 1. Den Datalader aus Listing 1 abtippen und starten. Er speichert, sofern er fehlerfrei ist, automatisch die Datei 'PS-MTS.M-C.' auf Diskette ab. Sie enthält die Interruptroutine für das Multitasking. 2. Das Assemblerlisting (Listing 2) abtippen und assemblie-ren. Dann den M-Code unter dem Namen 'PS-MTS.M-C' abspeichern. Hierbei können Sie auch die Startadresse der Routine ändern, müssen dabei aber beachten, daß die Routine nicht im Bereich von 4000h bis 7FFFh plaziert werden darf, da hier bei der Initialisierung Speicherblöcke aus der zweiten RAM-Bank eingeblendet werden. Außerdem müssen Sie, wenn Sie die Startadresse geändert haben, die Start-adresse auch im Ladeprogramm 'PS-MTS.BAS' ändern (beim LOAD- beim CALL- und beim HIMEM-Befehl). In beiden Fällen tippen Sie 'PS-MTS.BAS' (Listing 3) ab und speichern es auf der Diskette. Danach können Sie es PS-MTS/128 mit RUN“PS-MTS“ starten. Nach dem Start werden einige Initialisierungen vorgenommen, dann wird die Interruptroutine geladen und ins System eingebunden. Zum Schluß wird eine Meldung ausgegeben und angezeigt, in welcher Bank Sie sich befinden. Multitasking ist prinzipiell mit allen Programmen möglich, die die Interrupts nicht sperren, die Interruptroutine von PS-MTS/128 nicht überschreiben und die zweite RAM-Bank nicht benutzen. Probleme mit dem Multitasking können unter folgenden Bedingungen auf-treten: — Beide Tasks greifen gleichzeitig auf dieselbe Diskette zu (es können Probleme auftreten, müssen aber nicht). Die Bedienung von PS-MTS/128: Die Bedienung des Programms beschränkt sich im Prinzip auf eine Taste: die Punkttaste auf dem Zehnerblock. Wird diese Taste betätigt, so tauscht PS-MTS/128 Task 0 und Task 1 aus. Das heißt, der Task der bisher im Hintergrund lief, wandert in den Vordergrund und umgekehrt. Allerdings sollten Sie nicht in Panik geraten, wenn der Rechner zunächst nicht auf den Tastendruck zu reagieren scheint: das Austauschen dauert ein paar Sekunden. Während des Austausches gerät möglicherweise der Bildschirminhalt kurzzeitig gehörig durcheinander, aber das braucht Sie nicht weiter zu stören. Um zwei Programme parallel laufen zu lassen, starten Sie einfach das erste Programm im Vordergrund, tauschen dann Vorder- und Hintergrund mit < . > aus und starten das zweite Programm. Danach können Sie mit < . > zwischen beiden Programmen hin und her schalten. Sollten Sie auf die Idee kommen, im Hintergrund ein Uhrenprogramm laufen zu lassen, so müssen Sie dabei bedenken, daß sich die Interruptfrequenz halbiert. Ein EVERY 50 GOSUB wird also statt jede Sekunde nur jede zweite Sekunde ausgeführt! Außerdem fallen beim Umschalten der Tasks einige Interrupts aus, wodurch die Uhrzeit verfälscht wird. Wenn Sie in einem Programm wissen wollen, ob es momentan als Task 0 (im Vordergrund) oder als Task 1 (im Hintergrund) läuft, können Sie dies anhand der Speicherstelle A6B8h erfahren. Sie kann folgende Werte enthalten: - COh: Task 0 - C2h: Task 1. Bei einem anderen Wert ist der Rechner nicht im Multitasking-Betrieb, oder die Routine befindet sich an einer anderen Adresse als A530h. Um Komplikationen zu vermeiden, ist in Task 1 die Tastaturabfrage gesperrt. Um also Eingaben an ein Hintergrundprogramm zu übergeben, müssen erst die Tasks mit < . > ausgetauscht werden. Viel Spaß beim Multitasken!
|