•  Back 
  •  Allgemeines zum Shutdown 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File11.14.4  Der Shutdown aus Sicht des Initiators                     TOS

Shutdown und Auflösungswechsel werden in MagiC von dem Programm 
SHUTDOWN übernommen, das mit den folgenden Parametern aufgerufen wird:

SHUTDOWN.PRG dev txt

Dabei ist dev = -1, wenn ein Shutdown ohne Auflösungswechsel 
durchgeführt werden soll, ansonsten die Gerätenummer des VDI- 
Bildschirmtreibers. txt ist die Texthöhe für das AES; diese sollte 
i.a. Null sein.

Ein Shutdown wird per ret = shel_write(4, TRUE, 0, NULL, NULL) 
gestartet. Dabei signalisiert ein Rückgabewert von 0, daß ein Shutdown 
nicht möglich ist, weil z.B. bereits ein Shutdown läuft. Ein 
Auflösungswechsel wird mit ret = shel_write(5, dev, 0, NULL, NULL) 
durchgeführt. Dabei ist dev der VDI-Gerätetreiber. Alternativ kann mit 
shel_write(5, xdv, 1, NULL, NULL) in xdv ein Falcon-Auflösungsmodus 
angegeben werden.

Diese Aufrufe sind alle MultiTOS-konform. Zusätzlich existiert ab 
MagiC 3 noch folgender Aufruf: ret = shel_write(5, dev, 100+txt, NULL, 
NULL). Hiermit kann man die Texthöhe für das AES festlegen. Eine 
Falcon-Auflösung kann man bei diesem Modus nicht übergeben, dev ist 
also die Gerätenummer des VDI-Bildschirmtreibers.

Die Gerätenummer hängt vom verwendeten System und VDI ab. Bei einem 
nackten ST oder TT (ohne Grafikkarte) gilt die folgende Zuordung:

 1  Default-Auflösung 
 2  ST niedrig         (320*200*16) 
 3  ST mittel          (640*200*4) 
 4  ST hoch            (640*400*2) 
 6  TT mittel          (640*480*16) 
 8  TT hoch            (1280*960*2) 
 9  TT niedrig         (320*480*256) 

Bei Einsatz einer Grafikkarte oder auf einem Macintosh stehen die 
Gerätenummern wie üblich in der ASSIGN.SYS-Datei im Wurzelverzeichnis 
des Bootlaufwerks.

Nach erfolgreichem shel_write-Aufruf befindet sich das System im 
Shutdown-Modus, und es können keine Programme mehr gestartet werden. 
Nach einem erfolgreichen Abschluß des Shutdown oder Auflösungswechsels 
erhält der Initiator folgende Nachricht:

 msg[0] =  SHUT_COMPLETED
 msg[3] =  1 - Shutdown erfolgreich

bzw. beim Auflösungswechsel

 msg[0] =  RESCH_COMPLETED
 msg[3] =  1 - Auflösungswechsel erfolgreich

Erfolgreich heißt für das System, daß alle Programme, die explizit 
AP_TERM verstehen, sich beendet haben. Soll der Shutdown trotzdem 
abgebrochen werden, so kann dies per ret = shel_write(4, FALSE, 0, 
NULL, NULL) erfolgen. Andernfalls wird der Auflösungswechsel endgültig 
durchgeführt, wenn sich der Initiator beendet hat. Der Shutdown 
dagegen wird abgebrochen, wenn der Initiator terminiert.

Hat ein Programm per AP_TFAIL den Shutdown verweigert, so erhält der 
Initiator die folgende Nachricht.

 msg[0] =  SHUT_COMPLETED
 msg[3] =  0 - Shutdown abgebrochen
 msg[4] =  ap_id der Applikation, die verweigert hat
 msg[5] =  Fehlercode dieser Applikation

bzw. beim Auflösungswechsel

 msg[0] =  RESCH_COMPLETED
 msg[3] =  0 - Auflösungswechsel abgebrochen
 msg[4] =  ap_id der Applikation, die verweigert hat
 msg[5] =  Fehlercode dieser Applikation

Das System hat in diesem Fall den Shutdown bzw. Auflösungswechsel 
schon beendet, d.h. der Initiator kann nichts mehr tun.

Hinweis: Weil es vorkommen kann, daß der Shutdown-Prozeß niemals vom 
System als abgeschlossen oder abgebrochen gemeldet wird (die 
RESCH_COMPLETED bzw. SHUT_COMPLETED-Nachricht also niemals verschickt 
wird), sollte der Initiator beim Warten auf die Nachricht einen 
Timeout vorsehen. Tritt dieser Fall ein, muß der Shutdown explizit 
abgebrochen werden. Per appl_search kann der Initiator testen, ob noch 
Programme aktiv sind, die nicht explizit AP_TERM verstehen.

Querverweis:
Shutdown beim Empfänger   shel_write   Shutdown in MultiTOS 
Shutdown in MagiC