-
GEBIET DER ERFINDUNG
-
Diese Erfindung betrifft das Gebiet
der Tablettcomputer. Insbesondere betrifft die Erfindung eine verbesserte
Schnittstelle zwischen einem Host- oder Hauptprozessor und einem
Serviceprozessor.
-
HINTERGRUND
DER ERFINDUNG
-
Ein tragbarer Digitalisier-Tablettcomputer
mit Batteriebetrieb wurde entwickelt, der einen Haupt- oder Hostprozessor
enthält,
welcher ein oder mehrere Anwendungsprogramme unter einem stiftgeführten Betriebssystem
ausführt.
Der Computer enthält
einen mit einer Anzeige verbundenen Digitalisierer, welche als bevorzugte
Ausgabeeinheit zum Dialog mit einem Benutzer dient. Ein Magnetfeld
wird durch einen Stift oder Schreibstift erzeugt und durch einen
Digitalisierer empfangen, der Signale bereitstellt, welche die Position
des Schreibstifts angeben. Der Schreibstift wird als bevorzugtes
Eingabemittel zum Eingeben von Informationen, darunter handschriftlichen
Informationen, in den Computer benutzt. Für die Analyse von Handschriften
ist ein Digitalisierer mit hoher Genauigkeit erforderlich, der wiederum
eine Vielzahl von Koordinatendaten erzeugt und so hohe Anforderungen
an die Verarbeitungsleistung stellt. Um diese Anforderungen zu erfüllen, weist
der Computer eine verteilte Verarbeitung auf, bei der die Vorverarbeitung
der Digitalisierer-Informationen vom Hostprozessor auf einen Serviceprozessor übertragen
wird. Der Serviceprozessor dient auch zur Steuerung eines Stromversorgungs-Subsystems
und einer Tastatur, die wahlweise mit dem Computer verbunden sein kann.
Die vorliegende Erfindung betrifft speziell die Schnittstelle zwischen
dem Hostprozessor und dem Serviceprozessor, die gemeinsam die Funktion
der verschiedenen Computerbauteile steuern und so eine schnelle und
leistungsfähige
Digitalisierung ermöglichen.
-
In der US-Patentschrift 4510568 werden
zwei unterschiedliche Systeme beschrieben: Ein Grafikeingabesystem,
das ein mit einem Hostprozessor verbundenes Tablett umfasst, und
ein Grafikausgabesystem, das einen mit einem Hostprozessor verbundenen
Plotter umfasst. Sowohl das Tablett als auch der Plotter enthalten
je einen Prozessor zum Verringern der normalerweise dem Hostprozessor
zufallenden grafischen Verarbeitungsleistung.
-
In EP-A-379336 wird eine Anzeigeeinheit
beschrieben, die eine integrierte Anzeige und ein Touchpad (Tastfläche) enthält. Die
vom Touchpad erzeugten Daten werden durch einen Hauptprozessor in
der Einheit verarbeitet.
-
ÜBERBLICK ÜBER DIE
ERFINDUNG
-
Dementsprechend stellt die Erfindung
einen tragbaren Digitalisier-Tablettcomputer bereit, der ein Gehäuse umfasst,
in dem sich Folgendes befindet: Ein stiftgeführter Digitalisierer zum Erzeugen
von Digitalisiererdaten, die die Stiftposition angeben; ein mit
dem Digitalisierer verbundener Digitalisierercontroller zum Umwandeln
der Digitalisiererdaten in digitale Koordinatendaten, die die Stiftposition
angeben; ein Digitalisiermittel in dem Digitalisierercontroller
zum Erzeugen der digitalen Koordinatendaten mit einer bestimmten
Rate; eine Anzeige zum visuellen Darstellen der Stiftposition; ein
mit der Anzeige verbundener Hostprozessor zur Steuerung der Funktion
der Anzeige; ein über
eine Schnittstelle mit dem Hostprozessor verbundener Serviceprozessor,
wobei die Schnittstelle einen Eingabepuffer, einen Ausgabepuffer
und ein Controller-Statusregister (CSR) umfasst; ein erstes Mittel
zum Verbinden des Serviceprozessors mit dem Digitalisierercontroller
zum Empfangen und Puffern der Koordinatendaten und deren Übertragung
zum Verarbeiten zum Serviceprozessor; ein zweites Mittel im Serviceprozessor
zum Umwandeln der Koordinatendaten in verarbeitete Daten; ein drittes
Mittel (112) zum Übertragen
der verarbeiteten Daten über
die Schnittstelle vom Serviceprozessor zum Hostprozessor; und ein
Mittel zum Steuern der Abtastrate im Serviceprozessor, das zum Löschen von
Datenpunkten mit einer durch einen Ratenwahlbefehl vom Hostprozessor
vorgegebenen Rate dient, sodass die Daten mit einer Rate zum Hostprozessor übertragen
werden können,
die kleiner als die bestimmte Rate des Digitalisierercontroller
ist.
-
Vorzugsweise erzeugt ein Digitalisierer
Koordinatensignale, die die Position des Schreibstifts angeben.
Die Koordinatensignale werden durch den Serviceprozessor vorverarbeitet,
der wiederum den Hostprozessor unterbricht, um die verarbeiteten
Koordinatendaten über
die Serviceprozessor-Schnittstelle
zum Hostprozessor zu senden, wobei die Unterbrechungsrate kleiner
ist, als wenn die Daten vom Digitalisierer direkt zum Hostprozessor
gesendet würden.
-
ZEICHNUNGEN
-
Weitere Aufgaben und Vorteile der
Erfindung werden aus der folgenden Beschreibung in Verbindung mit
den beiliegenden Zeichnungen deutlich, in denen:
-
1 eine
schematische Darstellung eines Digitalisier-Tablettcomputers ist, durch den die
Erfindung realisiert wird;
-
2 eine
schematische Darstellung ist, die die allgemeine Arbeitsweise und
das Zusammenwirken zwischen einem Hilfsprozessor und anderen in 1 gezeigten Bauteilen veranschaulicht;
und
-
3 ein
Ablaufdiagramm ist, das die Arbeitsweise des in 1 gezeigten Computers veranschaulicht.
-
DETAILLIERTE
BESCHREIBUNG
-
Die folgende Beschreibung ist in
mehrere Abschnitte eingeteilt, die von einer allgemeineren Beschreibung
des Digitalisier-Tablettcomputers über eine allgemeine Beschreibung
der Arbeitsweise des Serviceprozessors bis zu eingehenden Beschreibungen
der Verarbeitung des vom Digitalisierer kommenden Koordinatendatenstroms
reichen.
-
DIGITALISIER-TABLETTCOMPUTER
-
In 1 wird
ein Digitalisier-Tablettcomputer (digitizer tablet computer, DTC) 10 gezeigt,
der ein Gehäuse 12 zum
Aufnehmen der verschiedenen Bauteile des Computers enthält. Größe und Gewicht
des DTC 10 sind so ausgelegt, dass ein Benutzer den Computer 10 leicht
umhertragen kann. Der DTC 10 enthält einen unterhalb einer Flüssigkristallanzeige
(LCD) 16 mit Hintergrundbeleuchtung angebrachten Digitalisierer
und einen Stift oder Schreibstift 18, die ein bevorzugtes
Eingabe-/Ausgabemittel
zum Eingeben von Informationen in den Computer sowie zum Abrufen
von Informationen aus dem Computer darstellen. Der DTC 10 enthält auch ein
Mittel zum Anschließen
an andere E/A-Einheiten (Input/Output, I/O) zur Verwendung an geeigneten
Standorten. Zum Beispiel kann zu Hause oder im Büro wahlweise eine Tastatur 20 benutzt
werden, die unterwegs nicht benötigt
wird. Der Computer 10 kann auch ein (nicht gezeigtes) E/A-System
wie eine Schnittstelle für
ein SCSI-Diskettenlaufwerk,
eine parallele Schnittstelle, eine serielle RS-232-Schnittstelle
und einen Daten-/Faxmodem mit einem RJ11-Stecker enthalten.
-
Der schnurlose Schreibstift 18 mit
Batteriebetrieb und ohne Tinte ist das bevorzugte Eingabemittel
und enthält
eine bewegliche Spitze, die bei Kontakt mit der oberen Oberfläche der
LCD einen Schalter (Bauelemente nicht gezeigt) schließt. Der
Schreibstift 18 erzeugt ein Magnetfeld, das durch den Digitalisierer 14 empfangen
oder aufgenommen und in Signale umgesetzt wird, die die x,y-Koordinaten
zum Angeben der Position oder des Standorts des Stiftes darstellen.
Das Feld ist bei geöffnetem
Schalter schwächer
und bei geschlossenem Schalter stärker, sodass der Digitalisierer
zwischen „Nahbereichs"-Koordinaten
und „Stift-abwärts"-Koordinaten
unterscheiden kann. Dann steuert der Computer 10 in einer
im Folgenden näher
beschriebenen Weise die LCD an, um Pixel bei der Stiftposition zu
aktivieren und so dem Benutzer anzuzeigen, dass er oder sie gerade
mit dem Stift schreibt. Aufgrund dieses Eingabeverfahrens kann das
System auch als stiftgeführter Computer
bezeichnet werden. Der Digitalisierer 14 enthält einen
(nicht gezeigten) Empfängermechanismus, der
aus einem Gitter von leitenden Schleifen besteht. Durch das Magnetfeld
des Schreibstifts werden in den Schleifen Ströme induziert, die sich mit
der Stiftposition ändern.
Die Ströme
sind analog und werden durch den Digitalisierercontroller 26 in
digitale Signale umgewandelt und analysiert, der anhand der Verteilung
der Ströme
in den einzelnen Schleifen auf die Stiftposition schließt. Er sendet
die Stiftkoordinaten zur Routine 104, damit sie zum Serviceprozessor
und zum Hostprozessor übertragen
werden.
-
Der DTC 10 enthält vier
verschiedene programmierbare digitale Mikroprozessoren oder Mikrocontroller,
die einen Host- oder Hauptprozessor 22, einen Serviceprozessor
(SP) 24, einen Digitalisierercontroller 26 und
einen Mikrocontroller für
das Stromversorgungs-Subsystem (PSM) 28 enthalten und verschiedene
verteilte Funktionen oder Arbeitsschritte in einer später genauer
beschriebenen Weise ausführen.
Die Prozessoren 22, 24, 26 und 28 werden
vorzugsweise durch die folgenden kommerziell verfügbaren Bauelemente
realisiert: Einen Mikroprozessor 80386SX von Intel, einen Hochleistungs-Mikrocontroller
HPC 460C4 von National Semiconductor, ein Digitalisierercontroller
78C10 von NEC und einen Mikrocontroller 87C752 von Signetics.
-
Der Hauptprozessor 22 ist über einen
lokalen Bus 32 mit einem Hauptspeicher 34, einem
Nur-Lese-Speicher (read only memory, ROM) 36, einer Halbleiterspeicherkarte
(solid state file, SSF) 38 und einem nichtflüchtigen
Arbeitsspeicher (non-volatile random access memory, NVRAM) 40 verbunden.
Der Hauptspeicher 34 besteht aus einem dynamischen Arbeitsspeicher
(dynamic random access memory, DRAM) und stellt flüchtigen Speicherplatz
für ein
Betriebssystem (operating system, OS) 42 und Anwendungsprogramme
(application programs, AP) 44 bereit, die durch den Prozessor 22 ausgeführt werden.
Das Betriebssystem 42 enthält Interrupt-Steuerroutinen
(interrupt handler, IH) 43. Die Anwendungsprogramme 44 enthalten
ein Batteriestands-Anzeigeprogramm (battery gauge display program,
BGDP) 45, das Informationen zum Ladezustand der Batterie
empfängt
und auf der LCD 16 anzeigt. Im Nur-Lese-Speicher 36 sind
Programme wie ein Selbsttestprogramm nach dem Einschalten (power-on
self test, POST) 46 und ein E/A-Basissystem (basic I/O
services, BIOS) 48 dauerhaft gespeichert. Die SSF 38 verbraucht
im Vergleich zu einer Festplatte nur wenig Energie und speichert
Dateien 50, wie sie normalerweise auch auf einer Festplatte
gespeichert werden. Zum Beispiel sind darin auch das Betriebssystem 42 und
die Anwendungsprogramme 44 gespeichert, die von dort in den
Hauptspeicher geladen werden, um vom Hauptspeicher 34 wiederum
zum Verarbeiten abgerufen zu werden. Der nichtflüchtige Arbeitsspeicher 40 kann
in CMOS-Technologie
ausgeführt
sein und enthält
eine (nicht gezeigte) Lithiumbatterie. Dadurch gehen die in 40 gespeicherten
Daten 52 nicht verloren, wenn die Batterie 74 entfernt
oder vollständig
entladen wird. Die Daten 52 enthalten die Batteriestandsparameter
(battery gauge Parameters, BGP) 53.
-
Der Hauptprozessor 22 ist
ebenfalls mit einer Vielzahl kommerziell verfügbarer Hilfs-Chips 54 verbunden,
zu denen auch die Interrupt-Steuerroutinen 56 gehören. Während die
Steuerroutinen 56 andere, üblicherweise an den Prozessor 22 gerichtete,
Interrupts verarbeiten (deren Einzelheiten für die Erfindung ohne Belang
sind), empfangen die Steuerroutinen 56 zwei die Erfindung
betreffende Interrupts auf eine im Folgenden genauer beschriebene
Weise. Dabei handelt es sich um die Interrupts PCUINT, IRQ12 und
IRQ1, die von den Steuerroutinen 56 zum Serviceprozessor 24 übertragen
werden.
-
Der lokale Bus 32 ist über eine
Puffer- oder Busschnittstelle 58 mit einem Bus 60 verbunden,
der wiederum mit dem Serviceprozessor 24, der VGA-Grafikunterstützung 62 und
den Energieüberwachungsregistern (power
control register, REG) 66 verbunden ist. Über solche
Busse und Puffer ist der Hauptprozessor mit solchen Bauteilen verbunden,
wobei der Hauptprozessor die Funktion der LCD 16 und die
Energieverteilung über die
Einstellungen der Energieüberwachungsregister 66 steuert
sowie den Hilfsprozessor 24 in einer im Folgenden genauer
beschriebenen Weise als Slave betreibt. Die VGA-Grafikunterstützung 62 ist über die
Leitung 64 mit der LCD 16 verbunden. Die verschiedenen
auf der LCD 16 dargestellten Bildschirme, einschließlich der durch
den Schreibstift 18 erzeugten „Schrift" werden durch den
Hauptprozessor gesteuert.
-
Ein Energieverteilungssystem enthält die Energieüberwachungsregister 66,
die mit den Stromschaltern 68 verbunden sind und deren Öffnen und
Schließen
steuern. Diese Schalter wiederum empfangen die Energie über den
Bus 78 von einem Stromversorgungs-Subsystem (power subsystem,
PS) 72 und verteilen diese Energie auf die Stromversorgungsebenen 70.
Die verschiedenen Bauteile des Systems sind jeweils mit den unterschiedlichen
Ebenen 70 verbunden. Zur Stromversorgung gehören der
Mikrocontroller für
das Stromversorgungs-Subsystem 28 und eine wiederaufladbare
Nickel/Cadmium-Batterie 74. Die Stromversorgung 72 ist auch
mit einer Buchse 76 zum Aufnehmen eines (nicht gezeigten)
Adapters verbunden, der von einer externen Quelle Gleichstrom zum
Laden der Batterie und zum Betreiben des Computers zuführt. Wenn
der Adapter eingesteckt ist, arbeitet der Digitalisier-Tablettcomputer 10 mit
externer Stromversorgung, und die Batterie 74 wird bei
Bedarf aufgeladen. Die Energieüberwachungsregister 66 sind
mit dem Bus 60 verbunden und können adressiert werden; dadurch
kann der Hostprozessor 22 die Register selektiv so einstellen,
dass die Schalter 68 gesteuert oder ein- und ausgeschaltet
werden können,
und aus Gründen
des Energiemanagements die Stromversorgung hoch- und runterfahren.
-
SERVICEPROZESSOR
-
Der Serviceprozessor 24 ist
mit einer Buchse 80 verbunden, über die eine Tastatur 20 an
den Computer 10 angeschlossen werden kann und die durch
den Serviceprozessor gesteuert wird. Der Prozessor 24 ist ebenfalls
mit einem Lautsprecher oder Signaltongeber 82 und einem
Ein-/Ausschalter 84 verbunden. Der Signaltongeber 82 wird
durch den Prozessor 24 angesteuert und erzeugt einen Warnton,
der unter Anderem anzeigt, dass die Batterie 74 einen niedrigen
Ladezustand aufweist. Der Schalter 84 wird durch den Benutzer bedient
und stellt das Mittel zum gezielten Ein- und Ausschalten des Computers 10 sowie
zum Auslösen
verschiedener Ereignisse in Abhängigkeit
von den Stromversorgungsstufen und den Arbeitszuständen des
Computers bereit. Der Computer 10 weist vier Stromversorgungsstufen
auf, und zwar den Normalbetrieb, den Leerlaufbetrieb, den Ruhezustand
und den Nullzustand. Die Funktion des Schalters 84 ist
Bestandteil der in dem Computer 10 enthaltenen Energiespareinrichtung
zur Verlängerung
der Batterielebensdauer des Computers 10. Eine solche Einrichtung
kann die Taktraten ändern
und das gesamte System bei fehlender Aktivität in einen Ruhezustand versetzen,
um Strom zu sparen; außerdem
können
verschiedene Logikbereiche und E/A-Einheiten abgeschaltet werden,
wenn sie nicht arbeiten.
-
Der Serviceprozessor 24 enthält einen
Nur-Lese-Serviceprozessor 88 zum
Speichern eines Mikrocodes 90 und einen Arbeitsspeicher 92 zum
Speichern von Variablen 94, die während der Ausführung der
Mikrocode-Routinen durch den Prozessor 24 erzeugt und verwendet
werden. Ferner sind Potentiometer oder Potis 96 sowie Schalter 97 zum
Einstellen der Helligkeit und des Kontrasts der LCD 16 mit
dem Prozessor 24 verbunden. Der Benutzer kann die Helligkeit
und den Kontrast durch Bedienen der Schalter erhöhen oder verringern.
-
Der Serviceprozessor 24 steuert
die Tastatur 20, den Digitalisierer 14, Systemtasten
für den
Schalter 84 und die Potis 96 sowie das Stromversorgungs-Subsystem 78.
Der Serviceprozessor 24 ist mit dem Hostprozessor über den
Bus 60 mittels einer PS/2-Standardschnittstelle für den Tastaturcontroller
verbunden, die zum Unterstützen
des Digitalisierers und des Stromversorgungs-Subsystems angepasst
wurde. Der Serviceprozessor 24 ist über eine PS/2-Tastaturschnittstelle
mit dem Hostprozessor 22, über eine PS/2-Standard-Tastaturschnittstelle
mit der Tastatur 20, über
eine serielle unterbrechungsgesteuerte Schnittstelle mit dem Digitalisierer 16 und über eine
der Tastaturschnittstelle ähnliche
serielle Abrufschnittstelle mit dem Stromversorgungs-Subsystem 78 verbunden.
Der Hauptprozessor 22 überträgt dem Serviceprozessor 24 einen
Großteil der
E/A-intensiven Aktivitäten,
die zur Steuerung der Schnittstellen für die Tastatur, den Digitalisierer
und das Stromversorgungs-Subsystem
erforderlich sind. Der Serviceprozessor 24 unterstützt den
Hostprozessor auch beim Stromsparen und überwacht das System, während der
Hostprozessor ruht.
-
2 veranschaulicht
die durch den Mikrocode 90 festgelegten Serviceprozessor-Routinen
und die zugehörige
Hardware. Die Routinen werden in Kästen mit einheitlicher Strichstärke und
die Hardware in schattierten Kästen
veranschaulicht. Zu den Routinen gehören eine Initialisierungs-
und Diagnoseroutine 100, eine Befehlsinterpreter- und Senderoutine 102,
eine UART-Interruptroutine
(INT) 104 und eine Hauptschleifenroutine 106.
Im Folgenden wird die allgemeine Arbeitsweise der verschiedenen
Routinen beschrieben. Die Initialisierungs- und Diagnoseroutine 100 tritt
in Aktion, wenn der Computer erstmalig ausgehend vom Nullzustand eingeschaltet
wird. Die Routine initialisiert die verschiedenen Komponenten und
führt die
Einschaltdiagnose durch. Nach erfolgreicher Initialisierung wird
der Digitalisier-Tablettcomputer 10 in den normalen Betriebszustand
versetzt, in dem er alle Arbeitsschritte ausführen kann. Die Routine 102 empfängt, interpretiert
und führt Hostbefehle
aus, bearbeitet Hostdaten vor dem Senden zur Tastatur und überträgt oder
sendet Daten zwischen dem Serviceprozessor und dem Host. Hierzu
gehören
Digitalisiererdaten vom HBUFFER 112, Konfigurationsdaten
aus dem Konfigurationsregister 113 sowie Tastatur- und
Betriebszustandsdaten aus den Registern 122 und 126.
Die Routine 102 verbindet den Serviceprozessor 24 mit
den E/A-Anschlüssen 61 und
einem Hostsystem 130, das den Hostprozessor 22 und
die Hilfs-Chips 54 umfasst (1).
Die E/A-Anschlüsse 61 umfassen
ein Controller-Statusregister (CSR) 132, einen Eingabepuffer 134 und
einen Ausgabepuffer 136.
-
Die UART-INT-Routine 104 empfängt Informationen
(x,y-Koordinaten
oder Antworten auf Befehle) vom Digitalisierercontroller 26 und
speichert diese im UBUFFER 114 zur späteren Verarbeitung durch eine
Digitalisiererdaten-Verarbeitungsroutine 116 in
der Hauptschleife 106. Die Hauptschleife 106 führt die
Verarbeitung im Hintergrund durch und durchläuft eine Reihe von Routinen 116, 118, 120, 124 und 128.
Die Routine 116 formatiert und filtert die Digitalisiererkoordinaten
und legt die Ergebnisse zur Übertragung
an den Hostcomputer im HBUFFER 112 ab. Die Routine 118 löst entsprechend
dem Status des Digitalisierers verschiedene Digitalisiererroutinen
aus. Die Routine 128 führt
alle Schritte für
den Statuswechsel aus, die beim Aufsuchen und Verlassen des Leerlaufbetriebs
zum Schalten zwischen den Betriebszuständen erforderlich sind. Die
Routine 120 ist eine Tastaturabfrageschleife, die einen
(nicht gezeigten) Tastaturschnittstellentakt überwacht und Tastaturdaten
einschließlich
Abtastcodes und Befehls-Antwortdaten empfängt. Die Routine 124 schließlich ist eine
Stromversorgungs-Abfrageschleife,
die einen (nicht gezeigten) Stromversorgungs-Schnittstellentakt überwacht und über einen
seriellen Anschluss Stromversorgungs-Subsystemdaten empfängt, die
einschließlich
der Strompakete im Folgenden eingehend beschrieben werden. Die Routine 124 überträgt oder
taktet Daten unter Verwendung eines durch das Stromversorgungs-Subsystem erzeugten
Takts ein. Die Routine 124 fungiert auch als Teil einer
Batterieanzeige, die die in der Batterie 74 verbleibende
Energiemenge und die bis zum Verbrauch der Batterieladung verbleibende
Zeitspanne anzeigt.
-
Wie oben allgemein erörtert wurde,
umfasst die Schnittstelle zwischen dem Hostsystem 130 und
dem Serviceprozessor 24 drei 8-Bit-Register: Den Ausgabepuffer 136,
den Eingabepuffer 134 und das Controller-Statusregister 132.
Eine solche Hardware ist einer PS/2-Standardschnittstelle für den Tastaturcontroller ähnlich und
wird durch eine eingebaute universelle Peripherieschnittstelle (Universal
Peripheral Interface, UPI) des jeweiligen Mikroprozessors realisiert,
der zusammen mit einer angehängten
externen Logik den Serviceprozessor bildet. Der Ausgabepuffer wird
durch den Serviceprozessor 24 auf der Adresse x60 beschrieben
und durch das Hostsystem ausgelesen; er dient zur Übertragung
von Tastaturdaten, Digitalisiererdaten und Befehls-Antwortdaten
vom Serviceprozessor zum Systemprozessor. Der Eingabepuffer wird
durch den Host auf der Adresse x60 (für Daten) oder auf der Adresse
x64 (für
Befehle) beschrieben und durch den Serviceprozessor ausgelesen;
er dient dem Systemprozessor zum Senden von Befehlen an den Serviceprozessor
und zum direkten Senden von „Daten"
(die in Wirklichkeit Tastaturbefehle sind) zur Tastatur; die meisten
durch das System durch Beschreiben der Adresse x64 ausgegebenen
Befehle erfordern keine Bestätigung
durch den Serviceprozessor; bei einigen Befehlen werden Antwortdaten
verlangt; der Serviceprozessor speichert die Antwortdaten im Ausgabepuffer,
und der Host liest diese über
den Anschluss x60 aus. Der Host liest die Adresse x64 des Controller-Statusregisters;
während
einige dieser Bits durch Hardware geschrieben werden (z. B. die Bits „Puffer
voll", wenn der Eingabepuffer oder der Ausgabepuffer gelesen oder
geschrieben wird), werden andere Bits durch den Serviceprozessor-Mikrocode
geschrieben; die Bits zeigen an, ob der Eingabepuffer und der Ausgabepuffer
leer oder voll ist, ob der Serviceprozessor interne Fehler oder
Zeitlimitüberschreitungen festgestellt
hat, ob das Byte im Eingabepuffer ein (durch den Serviceprozessor
auszuführendes) Hostbefehls-Byte
oder ein (ohne Auswertung zur Tastatur weiterzuleitendes) „Daten"-Byte
ist, usw.
-
Der Host kann die Adresse x64 des
Controller-Statusregisters lesen. Die Bits im Controller-Statusregister
sind wie folgt festgelegt:
-
- Bit 7: Fehler Serviceprozessor. Jeder im Serviceprozessor
gefundene Ausnahmezustand, der dem Host gemeldet werden sollte,
veranlasst das Setzen dieses Bits. Der Host kann den Fehlercode
oder Ausnahmecode durch Senden eines Befehls „Fehlercode lesen" erkennen.
Der Serviceprozessor setzt dieses Bit immer dann, wenn er Daten
zum Host sendet (den Ausgabepuffer lädt). Jeder Fehler wird nur
einmal gemeldet. Wenn der Serviceprozessor z. B. eine Zeitablaufüberschreitung
des Stromversorgungs-Subsystems bemerkt, setzt er das Fehlerbit,
um den Fehler bei der nächsten
(beispielsweise) Digitalisierer- oder Tastaturübertragung zu melden; bei späteren Übertragungen
zum Host wird die Fehlermeldung jedoch gelöscht, wenn der Serviceprozessor
das Stromversorgungs-Subsystem nicht noch einmal abfragt und erneut
eine Zeitlimitüberschreitung
feststellt.
Man beachte, dass Serviceprozessor-Zustände, die
dem Rost sofort mitgeteilt werden müssen (wie beispielsweise Batteriewarnsignale),
dem System nicht über
den Tastatur-/Digitalisierer-Interrupt, sondern über den PCUINT mitgeteilt werden,
der eine spezielle Stromsparunterbrechung für den Host auslöst. Der
Host kann dann die Ursache für
den Interrupt PCUINT ermitteln, indem er den Befehl „Energiestatus
lesen" sendet; da dieser Befehl den Serviceprozessor auffordert,
Daten über
den Ausgabepuffer zum Host zu senden, kann der Host durch Prüfen des
Fehlerbits des Serviceprozessors erkennen, ob im Serviceprozessor
Fehler vorliegen.
- Bit 6: Allgemeine Zeitlimitüberschreitung.
Jeder mit einer internen Zeitlimitüberschreitung verbundene Ausnahmezustand
des Serviceprozessors wie beispielsweise „Übertragung durch Tastatur nicht
rechtzeitig beendet" usw. führt
ebenfalls dazu, dass dieses Bit gesetzt wird. Zeitlimitüberschreitungen
können
generell behoben werden, wenn sie jedoch wiederholt auftreten, zeigt
dies ein Problem beim Serviceprozessor oder einer durch ihn gesteuerten
Einheit an. Auch wenn eine allgemeine Zeitlimitüberschreitung festgestellt
wird, wird das Serviceprozessor-Fehlerbit gesetzt. Der Host kann
die Zeitlimitüberschreitung
(z. B. der Tastatur, des Digitalisierers oder des Stromversorgungs-Subsystems)
durch Senden eines Befehls „Fehlercode
lesen" ermitteln. Für das
Setzen und Löschen
des Bits „Allgemeine
Zeitlimitüberschreitung"
gelten dieselben Regeln wie für
das Bit „Fehler
Serviceprozessor".
- Bit 5: Digitalisiererdaten verfügbar. Dieses Bit setzt der
Serviceprozessor unmittelbar, bevor er den Host (mit IRQ12) nach
dem Speichern des ersten Bytes einer Digitalisiererdaten-Übertragung
im Ausgabepuffer unterbricht.
- Bit 4: Wird immer auf 1 gesetzt.
- Bit 3: Befehl/Daten. Eine 1 bedeutet, dass die Daten im Eingabepuffer
(INBUF) ein Hostbefehl sind. Eine 0 bedeutet, dass es sich um Hostdaten
handelt. Dieses Bit wird durch die Hardware gesetzt, wenn der Host
auf die Adresse x64 (Bit auf 1 gesetzt) oder die Adresse x60 (Bit
auf 0 gesetzt) schreibt. Der Serviceprozessor decodiert die Hostbefehle,
führt sie
aus und leitet die Hostdaten unverändert zur Tastatur weiter.
- Bit 2: Systemmarkierung. Dieses Bit kann der Host indirekt schreiben,
indem er das entsprechende Bit in das Controllerbefehls-Byte (Befehl
x20) schreibt. Dieses Bit schreibt der Serviceprozessor wie die
Hostbefehle und lässt
es ansonsten unverändert.
Es kann durch den Host zum „Markieren"
des Serviceprozessors und zum Prüfen
der „Markierung"
durch Lesen des Controller-Statusregisters
(ohne einen Befehl auszugeben) verwendet werden.
- Bit 1: Eingabepuffer voll. Dieses Bit wird durch die Hardware
gesetzt, wenn der Host ein Byte in den INBUF (auf Adresse x60) schreibt.
Der Serviceprozessor verwendet es, um zu ermitteln, ob der INBUF
voll ist. Wenn der Serviceprozessor den INBUF gelesen hat, wird
das Bit durch die Hardware gelöscht.
- Bit 0: Ausgabepuffer voll. Dieses Bit wird durch die Hardware
gesetzt, wenn der Serviceprozessor ein Byte in den OUTBUF schreibt.
Der Host kann es verwenden, um zu ermitteln, ob der OUTBUF voll
ist. Wenn der Host einen OUTBUF (auf Adresse x60) gelesen hat, wird
das Bit durch die Hardware gelöscht.
-
Der Eingabepuffer 134 und
der Ausgabepuffer 136 sind den Eingabe- und Ausgabepuffern
des PS/2-Tastaturcontrollers identisch und werden im vorliegenden
Dokument mit INBUF und OUTBUF bezeichnet. Die Namensgebung geht
vom Serviceprozessor aus (OUTBUF bedeutet, dass der Serviceprozessor
Daten für
den Host schreibt, INBUF bedeutet, dass der Host Daten oder Befehle
für den
Serviceprozessor schreibt).
-
Bevor der Serviceprozessor Tastatur-
oder Digitalisiererdaten zum Host sendet, vergewissert er sich, ob
der Ausgabepuffer leer ist. Der Serviceprozessor prüft jedoch
nicht, ob der Ausgabepuffer leer ist, wenn er als Reaktion auf Hostbefehle
Daten hineinschreibt. Der Host ist dafür zuständig sicherzustellen, dass
keine Abfragebefehle ausgegeben werden, auf die der Serviceprozessor
mit Informations-Bytes antworten muss, solange eine Möglichkeit
besteht, dass Tastatur- oder Digitalisiererdaten erzeugt werden.
-
Wenn Unterbrechungen des Serviceprozessors
aktiviert werden, unterbricht der Serviceprozessor den Host nach
dem Speichern eines Bytes im Ausgabepuffer; dies gilt nicht während der Übertragung
von Digitalisiererdaten, wenn er nur beim ersten Byte unterbricht.
-
Der Serviceprozessor gibt für den Host
mittels des Befehls „Eingabeanschluss
lesen" (xCO) die Leitung „Tastaturdaten"
frei.
-
Die folgenden im PS/2-Tastaturcontroller
festgelegten Bits der Ausgabeanschlüsse werden durch den Serviceprozessor
unterstützt.
Der Host kann über
die Befehle „Ausgabeanschluss
lesen", „Ausgabeanschluss schreiben"
und „Ausgabeanschluss
pulsen" auf die Ausgabeanschlüsse
zugreifen.
-
- Bit 7: Reserviert.
- Bit 6: Reserviert.
- Bit 5: Reserviert.
- Bit 4: Reserviert.
- Bit 3: Reserviert.
- Bit 2: Reserviert.
- Bit 1: Gate-Adressleitung 20. Wenn dieses Bit gleich
1 ist, wird der Zugang der Systemadressleitung 20 zum Speicher
gesperrt, und Zugriffe werden oberhalb 1 MB auf den unteren Speicherbereich
verwiesen. Dieses Bit wird beim Einschalten der Stromversorgung
auf 0 gesetzt und kann durch den Befehl xD1 geändert werden.
- Bit 0: Mikroprozessor zurücksetzen.
-
Hostbefehle. Die Schnittstelle zwischen
dem System und dem Serviceprozessor ist der Schnittstelle des PS/2-Tastaturcontrollers ähnlich und
zum Bearbeiten von Digitalisiererdaten angepasst. Die Hauptänderung
besteht in einem zusätzlichen
Protokoll zum Bearbeiten der schnellen Synchronübertragung von Digitalisiererdaten,
um eine Situation „ein
Interrupt pro Byte" zu vermeiden, die bei gemeinsamer Benutzung
der Schnittstelle durch eine Tastatur und eine Maus eintritt. Der
bei anderen Systemen normalerweise für eine Maus verwendete Interrupt
(IRQ12) wird dazu verwendet, dem Host mitzuteilen, dass Digitalisiererdaten
vorliegen. Zusätzlich
zu diesem neuen Datenaustauschprotokoll wurden Befehle zum Verwalten
des Digitalisierers und des Stromversorgungs-Subsystems hinzugefügt und sämtliche Befehle zum Verwalten
der Maus (Zusatzeinheit) entfernt. Die folgenden Beschreibungen
der Befehle setzen die Kenntnis der Schnittstelle des PS/2-Tastaturcontrollers
und die Funktion der Tastatur voraus.
-
An den Serviceprozessor gerichtete
Hostbefehle können
die folgenden Eigenschaften aufweisen:
-
Einzelnes Byte. Diese Befehle werden
durch den Host auf den Anschluss x64 geschrieben.
-
Mehrfachbytes. Diese Befehle enthalten
einen durch den Host auf die Adresse x64 geschriebenen Befehlscode,
auf den ein oder mehrere auf den Anschluss x60 geschriebene Parametercodes
folgen.
-
Abfrage. Abfragebefehle können aus
einem oder mehreren Bytes bestehen. Sie benötigen vom Serviceprozessor
die Rückgabe
von einem oder mehreren Bytes von Antwortdaten über dessen Ausgabepuffer (Systemanschluss
x60). Bei der Verwendung dieser Befehle muss der Host sehr vorsichtig
sein, um Konflikte mit den Tastatur- und Digitalisiererdaten zu
vermeiden, die ebenfalls über
den Anschluss x60 zum Host übertragen
werden. Neu erstellte Abfragebefehle erzeugen keinen Interrupt,
wenn deren Antwortdaten im Ausgabepuffer gespeichert werden. Bereits
vorhandene Abfragebefehle erzeugen IRQ1, wenn Unterbrechungen des Serviceprozessors
aus Gründen
der Kompatibilität
mit vorhandenen Personal Computern aktiviert werden.
-
Man beachte, dass alle Befehlscodes
in diesem Abschnitt Hexadezimal-Codes sind. Die im Folgenden aufgelisteten
Befehle enthalten alle durch den Serviceprozessor unterstützten Befehle.
-
20–3F: Controller-Arbeitsspeicher
lesen. Wie PS/2. Diese Befehle ermöglichen dem Host das Lesen einiger
der Bytes des Serviceprozessor-Arbeitsspeichers; sie stimmen mit
den Befehlen 60–7F überein,
durch die dem Host das Schreiben dieser Bytes ermöglicht wird.
-
20 – Controllerbefehls-Byte lesen.
Dieser Befehl ermöglicht
dem Host das Lesen des Controllerbefehls-Bytes. Das Byte wird durch den Host
mittels des Befehls „Controllerbefehls-Byte
schreiben" gesetzt. Für das
Controllerbefehls-Byte gelten die folgenden Bitdefinitionen:
-
- Bit 7 – reserviert
- Bit 6 – Wenn
dieses Bit auf 1 gesetzt wurde, setzt der Serviceprozessor die Tastatur-Abtastcodes in den
Abtastcodesatz 1 um.
- Ansonsten leitet er sie unverändert zum Host weiter. Die
Tastatur geht standardmäßig zum
Abtastcodesatz 2 über.
Der Serviceprozessor initialisiert dieses Bit auf 0.
- Bit 5 – Digitalisierer
sperren. Wenn dieses Bit gleich 1 ist, wird der Digitalisierer gesperrt
und erzeugt keine Daten. Der Serviceprozessor initialisiert dieses
Bit auf 1.
- Bit 4 – Tastatur
sperren. Wenn dieses Bit gleich 1 ist, wird die Tastatur gesperrt
und erzeugt keine Daten. Der Serviceprozessor initialisiert dieses
Bit auf 1.
- Bit 3 – reserviert
- Bit 2 – Systemmarkierung.
Der Serviceprozessor initialisiert dieses Bit auf 0.
- Bit 1 – Digitalisierer-Interrupt
aktivieren. Wenn dieses Bit gleich 1 ist, verursachen die Digitalisiererdaten
einen Interrupt (IRQ12 mit dem gesetzten Bit 5 des Controller-Statusregisters).
Wenn dieses Bit gleich 0 ist, werden die Digitalisiererdaten weiterhin
mit dem gesetzten Bit 5 des Controller-Statusregisters im Ausgabepuffer
gespeichert, aber es wird kein Interrupt erzeugt; der Host muss
sehr schnell abfragen, da die Daten bei diesem Betriebsmodus sonst
verloren gehen. Der Serviceprozessor initialisiert dieses Bit auf
0.
- Bit 0 – Tastatur-Unterbrechung
aktivieren. Der Serviceprozessor initialisiert dieses Bit auf 0.
Wenn dieses Bit gleich 1 ist, werden Tastatur-Interrupts aktiviert; der Serviceprozessor
erzeugt jedes Mal einen Tastatur-Interrupt, wenn er Tastatur- oder
Befehlsantwortdaten in seinem Ausgabepuffer speichert. Für neu definierte
Abfragebefehle, die Antwortdaten erzeugen (wie beispielsweise „Temperatur
lesen") erzeugt der Serviceprozessor keinen Interrupt, wenn er die
Antwortdaten im Ausgabepuffer speichert.
-
21–3F – Reserviert
-
60–7F: In den Arbeitsspeicher
des Serviceprozessors schreiben. Diese Befehle ermöglichen
dem Host die ersten 64 Bytes des Arbeitsspeichers des Serviceprozessors
zu schreiben. Der Host schreibt zuerst den Befehl in x60 und anschließend das
Byte, das geschrieben werden soll, nachdem der Serviceprozessor
den Befehl erhalten hat.
-
60 – Controllerbefehls-Byte schreiben.
Der Host kann diesen Befehl senden, um den Digitalisierer und die
Tastatur durch Abwandeln der entsprechenden Bits zu aktivieren oder
zu sperren, oder die Serviceprozessor-Unterbrechungen zu aktivieren
oder zu sperren. Man beachte, dass es auch andere Befehle gibt,
um diese Bits einzeln zu setzen oder zu löschen.
-
Zur Unterstützung des Digitalisierers sind „8X"-Befehle
hinzugefügt
worden. Der Befehl „Löschfenster" in
den folgenden Befehlsbeschreibungen bezieht sich auf ein quadratisches
Fenster, in dessen Mitte sich der letzte dem Host mitgeteilte Punkt
befindet, wobei das Fenster aus den im Arbeitsspeicher 92 gespeicherten Punkten
gebildet wird (1). Wenn
das Löschfenster
aktiv ist, werden durch den Serviceprozessor alle in dieses Fenster
fallenden Digitalisiererpunkte gelöscht. Ein außerhalb
des Fensters fallender Punkt wird dem Host mitgeteilt und legt die
Mitte des Fensters neu fest. Auch Übergangspunkte, sofern sie
mitgeteilt werden, legen die Fenstermitte neu fest. Die Abmessungen
des Fensters werden dem Serviceprozessor durch den Befehl „Löschfenstergröße setzen"
mitgeteilt.
-
Ein „Nahbereichspunkt" ist ein
durch den Digitalisierer erzeugtes x,y-Koordinatenpaar, während der Schreibstift
oder Stift dicht über
die LCD streicht (ca. 6 mm), ohne den Bildschirm zu berühren. „Nahbereich verlassen"
bedeutet ein Ereignis, bei dem der Stift aus dem Nahbereich des
Bildschirms entfernt wird. Der Digitalisierer erzeugt dann einen
einzigen Punkt „Nahbereich
verlassen". Zum „Nahbereich
erreichen" kommt es, wenn sich der Stift in den Nahbereich hinein
bewegt. Dieses Ereignis dokumentiert der Digitalisierer durch Erzeugen
eines Punktes „außerhalb
Nahbereich", auf den dann „Nahbereichspunkte"
folgen.
-
Folgende Befehle unterstützen den
Digitalisierer:
-
- 80: Interrupt an allen Punkten. Alle Digitalisiererpunkte
lösen einen
Interrupt aus. Dazu gehören Übergangsereignisse
(Stift auf, Stift ab, Nahabstand verlassen oder Nahabstand erreichen)
sowie alle Punkte, die innerhalb oder außerhalb des aktuellen Löschfensters
fallen. Dieser Befehl entspricht einem Befehl, der das Löschfenster
deaktivieren würde.
Durch diesen Befehl wird die Fenstergröße nicht beeinflusst.
- 81: EIN/AUS-Schalter maskieren. Dieser Befehl weist den Serviceprozessor
an, den Interrupt des EIN/AUS-Schalters zu maskieren. Der Serviceprozessor
hebt die Maskierung des Interrupts wieder auf (und bewirkt die Ausführung eines
anstehenden Interrupts), wenn er den Befehl xA3 empfängt oder
wenn er den EIN/AUS-Schalter einseitig wieder aktiviert.
- 82: Löschfenster
auf aktiv setzen. Dieser Befehl weist den Serviceprozessor an, bei
allen Übergangspunkten (Stift
aufwärts,
Stift abwärts,
Nahbereich verlassen oder Nahbereich erreichen) sowie bei allen
außerhalb
des aktuellen Löschfensters
fallenden Punkten zu unterbrechen. Punkte innerhalb des aktuellen
Löschfensters,
die nicht mit Übergängen zusammenhängen, werden
gelöscht.
Der erste nach dem Ausführen
dieses Befehls gemeldete Punkt legt die Mitte des Löschfensters
fest. Ein Stift-abwärts-Punkt
ist ein x,y-Koordinatenpaar des Digitalisierers, das beim Kontakt
zwischen Schreibstift und Bildschirm erzeugt wird. Ein Nahbereichspunkt
ist ein x,y-Koordinatenpaar des Digitalisierers, das beim Überstreichen
des Bildschirms mit dem Schreibstift innerhalb des Nahbereichs erzeugt
wird.
- 83: Löschfenstergröße setzen.
Dieser Befehl legt die Größe des quadratischen
Löschfensters
fest, innerhalb dessen Digitalisiererpunkte nicht dem Host gemeldet
werden (wenn es aktiv ist). Der letzte gemeldete Digitalisiererpunkt
bildet die Fenstermitte. Ein Punkt wird immer gemeldet; wenn er
einen anderen Typ aufweist als der zuvor gemeldete Punkt (z. B.
wird ein Stift-aufwärts-Punkt
immer gemeldet, wenn er nach einem Stift-abwärts-Punkt kommt, selbst wenn
er innerhalb des aktuellen Löschfensters
liegt); jeder gemeldete Punkt legt die Mitte des Löschfensters
neu fest. Nach dem Befehl „Fenstergröße" müssen 2 Bytes
folgen, um die Fenstergröße in der
Digitalisiererauflösung
festzulegen. Das niederwertige Byte ist vor dem höherwertigen
Byte zu senden. Die Standardfenstergröße ist 0 (wenn das Fenster
aktiviert ist, werden alle Punkte gemeldet).
- 84: Abtastrate setzen. Dieser Befehl legt fest, wie oft Punkte
im Digitalisiererpuffer aufgezeichnet werden. Man beachte, dass
die interne Abtastrate des Digitalisierers hierdurch nicht beeinflusst
wird. Nach diesem Befehl zum Festlegen der Rate müssen zwei
Parameter-Bytes folgen. Das niederwertige Byte muss dem höherwertigen
Byte vorangehen. Der gültige
Bereich liegt bei 23 bis 270 Abtastwerten je Sekunde. Bei Werten
größer als
270 werden 270 Abtastwerte gemeldet. Bei Werten kleiner als 23 werden
23 Abtastwerte je Sekunde gemeldet. Beim Initialisieren des Serviceprozessors
wird die Abtastrate auf 270 Abtastwerte je Sekunde gesetzt.
Der
Serviceprozessor versucht der vom Host geforderten Abtastrate möglichst
nahe zu kommen. Das Ziel besteht darin, dem Host Punkte mit gleichem
zeitlichen Abstand bereitzustellen. Da die Abtastrate des Digitalisierers
festliegt, lässt
(löscht)
der Serviceprozessor für
jeden dem Host gemeldeten Punkt n Punkte aus, um Punkte mit gleichem
Abstand zu erhalten. Dies führt
zu der folgenden Übereinstimmung
zwischen den geforderten und den erreichten Abtastraten: Beim
Einstellen der Abtastrate werden keine Übergangspunkte ausgelassen
(gelöscht),
sodass die durch den Host wahrgenommene Abtastrate beim Vorliegen
vieler Übergangspunkte
größer sein
kann als in der obigen Tabelle gezeigt. Ein Übergangspunkt startet die Zählung der
ausgelassenen Punkte neu. Wenn der Serviceprozessor beispielsweise
9 von 10 Punkten auslässt
und der fünfte
auszulassende Punkt ein Übergangspunkt ist,
meldet der Serviceprozessor diesen Punkt und setzt die Zählung der
ausgelassenen Punkte auf 0 (d. h. er lässt die folgenden 9 Punkte
aus, wenn diese sich nicht als Übergangspunkte
erweisen).
Wenn das Löschfenster
aktiv ist, löscht
der Serviceprozessor zuerst, um die Abtastrate einzustellen; anschließend löscht er
alle innerhalb des Löschfensters
liegenden Punkte.
- 85: „Aktivierung
Nahbereich" melden. Durch diesen Befehl können dem Host Nahbereichspunkte
gemeldet werden.
- 86: „Nachbereich
melden" deaktivieren. Dieser Befehl deaktiviert die Meldung von
Nahbereichspunkten. Bereits in den Puffern des Serviceprozessors
befindliche Nahbereichspunkte werden nicht gelöscht. Um die Puffer des Serviceprozessors
zu löschen,
muss der Host den Befehl „Digitalisierer
deaktivieren" (xA7) senden.
- 87: Zustand „Strom
ein" setzen. Dieser Befehl setzt die internen Konfigurationsparameter
des Serviceprozessors auf ihre Initialisierungswerte und initialisiert
die internen Puffer und Variablen (löscht zum Beispiel alle noch
vorhandenen Punkte). Die Tastatur- und Digitalisierer-Interrupts werden
deaktiviert und die Größe des Löschfensters
auf 0 gesetzt. Wenn der Serviceprozessor diesen Befehl empfängt, fragt
er außerdem
das Stromversorgungs-Subsystem nach den letzten Werten für die Stromversorgungs-
und Umgebungszustände ab.
Dieser Befehl kann je nach der Reaktion des Stromversorgungs-Subsystems
20 bis 80 ms in Anspruch nehmen.
- A1: Daten-Interrupts des Serviceprozessors deaktivieren. Hierdurch
wird der Serviceprozessor angewiesen, den IRQ1 oder IRQ12 nicht
zu bestätigen,
wenn er Daten in seinen Ausgabepuffer eingibt. Der Host muss das Bit „OUTBUF
voll" abfragen und regelmäßig den
Ausgabepuffer lesen, um den Pufferüberlauf des Serviceprozessors
und Datenverlust zu vermeiden. Der Host kann diese Betriebsart wählen, nachdem
er die Erzeugung von Tastatur- und Digitalisiererdaten deaktiviert
hat, z. B. um ohne Störung
vonseiten der Tastatur- oder
Digitalisiererdaten eine neue Gruppe von Initialisierungsbefehlen
zu senden; dies lässt
sich besser durch das Protokoll „Einheiten deaktivieren" – Einheiten
aktivieren" erreichen, das unter Befehl xC6 beschrieben wird.
- A2: Serviceprozessordaten-Interrupts aktivieren. Hierdurch wird
der Serviceprozessor angewiesen, IRQ1 oder IRQ12 zu bestätigen, wenn
er Daten in seinen Ausgabepuffer eingibt. Der Host muss auf Interrupts
vom Serviceprozessor nach weniger als 60 ms antworten; unter ungünstigsten
Bedingungen (maximale Abtastrate und fehlendes Löschfenster) kann es sonst zum
Verlust von Digitalisiererdaten kommen. Die Antwort auf IRQ12 muss
viel schneller erfolgen (in der Größenordnung von einer oder zwei
Millisekunden), um eine elastische Schnittstelle zwischen Digitalisierer
und Benutzer zu erhalten.
- A3: EIN/AUS-Schalter wieder aktivieren. Dieser Befehl weist
den Serviceprozessor an, den Signalspeicher des EIN/AUS-Schalters zu löschen, damit
dieser beim nachfolgenden Betätigen
des Schalters gesetzt wird und einen PCUINT-Interrupt auslöst.
- A4–A6:
Reserviert
- A7: Digitalisierer deaktivieren. Dieser Befehl setzt das Bit
5 des Controllerbefehls-Bytes auf 1 und deaktiviert so die Erzeugung
von Digitalisiererpunkten. Wenn der Serviceprozessor diesen Befehl
empfängt,
löscht
er alle Datenpuffer des Digitalisierers. Der Serviceprozessor setzt
dieses Bit beim Einschalten der Stromversorgung und deaktiviert
so den Digitalisierer.
- A8: Digitalisierer aktivieren. Dieser Befehl löscht das
Bit 5 des Controllerbefehls und aktiviert so die Erzeugung von Digitalisiererpunkten.
- A9: Digitalisierer prüfen.
Durch diesen Befehl wird der Serviceprozessor angewiesen, einen
Prüfbefehl
an den Mikrocode des Digitalisierers zu senden. Das Prüfergebnis
wird in den Ausgabepuffer eingegeben und hat folgende Bedeutung:
x00 – Kein Fehler
gefunden
x01 – Paritätsfehler
oder anderer Fehler in der Datenübertragung
des Digitalisierers.
x02 – Digitalisierer
reagiert nicht auf Befehle.
x03 – Mikrocode des Digitalisierers
findet internen Fehler des Digitalisierers.
weitere Werte reserviert.
- AA: Selbsttest. Dieser Befehl weist den Serviceprozessor an,
sein internes Diagnoseprogramm zu starten. Wenn keine Fehler gefunden
werden, gibt der Serviceprozessor ein x55 in den OUTBUF ein. Am
Ende des Selbsttests befindet sich der Serviceprozessor in seinem
Initialisierungsstatus POR.
Der Serviceprozessor startet seinen
Selbsttest unmittelbar nach dem Einschalten der Stromversorgung,
ohne auf den Befehl „Selbsttest"
vom Host zu warten. Diesen Befehl sollte der Host manchmal während des Host-Selbsttests
senden, auf die der Serviceprozessor mit den Prüfergebnissen antwortet, ohne
den Test noch einmal durchzuführen.
Wenn der Host anschließend „Selbsttest"-Befehle an den Serviceprozessor
sendet, wiederholt der Serviceprozessor den Test. Ein Teil des Tests
befasst sich mit dem Abfragen des Stromversorgungs-Subsystems nach
Umgebungs- und Stromversorgungsinformationen. Der Test dauert etwa
200 ms.
- AB: Tastaturschnittstellen-Test. Dieser Befehl weist den Serviceprozessor
an, den Tastaturtakt und die Datenleitungen zu prüfen. Das
Ergebnis wird in den Ausgabepuffer eingegeben.
- AC: Reserviert.
- AD: Tastaturschnittstelle deaktivieren. Dieser Befehl setzt
das Bit 4 des Controllerbefehls-Bytes auf 1 und deaktiviert so die
Tastaturschnittstelle.
- AE: Tastaturschnittstelle aktivieren. Dieser Befehl setzt das
Bit 4 des Controllerbefehls-Bytes auf 0 und aktiviert so die Tastaturschnittstelle.
- B0: Stromversorgungsumgebung abfragen. Nach diesem Befehl folgt
ein Parameter-Byte, das die jeweilige durch das System benötigte Information
zur Stromversorgungsumgebung liefert. Wenn der Serviceprozessor die
Daten in den Ausgabepuffer eingibt, erzeugt er damit keinen Interrupt.
Der
Serviceprozessor fragt das Stromversorgungs-Subsystem ständig nach
Daten ab. Alte Daten werden jedes Mal durch neue Daten überschrieben.
Wenn sich die Antwort des Hosts auf einen PCU-Interrupt um mehr als
100 ms verzögert,
kann die Information in dem Byte Stromversorgungsstatus der durch
den PCUINT ausgelösten
Information nicht mehr identisch sein. Wenn der Serviceprozessor
noch nicht über
gültige
Daten des Stromversorgungs-Subsystems verfügt, setzt er das Fehlerbit
und gibt das Signal x00 zurück;
hierzu kann es kommen, wenn der Serviceprozessor nach der Initialisierung
nicht in der Lage war, Daten vom Stromversorgungs-Subsystem zu erhalten.
- BA: VGA Zurücksetzen.
Dieser Befehl weist den Serviceprozessor an, auf seiner Ausgangsleitung
VGARESET einen 2 μs
langen positiven Impuls zu erzeugen. Während der Initialisierung wird
VGARESET auf LOW gesetzt.
- BB: Befehl Serviceprozessor Diagnose. Dieser Befehl ermöglicht dem
Host das Durchführen
spezieller Diagnoseverfahren, um das Serviceprozessor-Subsystem
auf Fehler zu durchsuchen; ferner kann das System Parameter des
Stromversorgungs-Subsystems
einstellen und lesen. Nach diesem Befehl sendet der Host ein einzelnes
Parameter-Byte zum Anschluss x60, welches das jeweils erforderliche
Diagnoseverfahren angibt. Nach dem Decodieren des Befehls wartet
der Serviceprozessor in einer kleinen Schleife auf das Parameter-Byte
und ignoriert alle Eingaben von der Tastatur, vom Digitalisierer
und vom Stromversorgungs-Subsystem.
- BC: Befehl Stromversorgungs-Subsystem. Dieser von einem Parameter-Byte
gefolgte Befehl weist den Serviceprozessor an, eine Task mit dem
Stromversorgungs-Subsystem auszuführen.
- C0: Eingabeanschluss lesen. Dieser Befehl weist den Serviceprozessor
an, das Bit von OUTBUF für
den aktuellen Status der Tastatur-Datenleitung auf 0 zu setzen (1
bzw. 0 bedeuten, dass die Datenleitung auf HIGH oder auf LOW gesetzt
ist). Die anderen OUTBUF-Bits werden auf 0 gesetzt.
- C1–C5:
Reserviert
- C6: Einheiten deaktivieren. Dieser Befehl speichert den aktuellen
Status der Peripherieeinheiten und deaktiviert dann die Einheiten
und die Interrupts des Serviceprozessors. PCUINT, der durch Drücken des EIN/AUS-Schalters entsteht,
bleibt aktiviert. Wenn der Serviceprozessor diesen Befehl empfängt:
(1)
Speichert der Serviceprozessor die aktuellen Werte der Bits „Digitalisierer
deaktivieren" und „Tastatur
deaktivieren" des Controllerbefehls-Bytes.
(2) Setzt der Serviceprozessor
die Bits „Digitalisierer
deaktivieren" und „Tastatur deaktivieren"
auf 1 und deaktiviert damit die entsprechenden Peripherieeinheiten.
Man beachte, dass im Gegensatz zum Befehl „Digitalisierer deaktivieren"
die internen Digitalisiererpuffer des Serviceprozessors nicht gelöscht werden
und kein Datenverlust eintritt.
Der Serviceprozessor stellt
sicher, dass nach dem Lesen des Befehls „Einheiten deaktivieren" aus
dem INBUF (d. h. das Bit „Eingabepuffer
voll" im Controller-Statusregister ist gleich 0) keine weiteren
Einheitendaten im Anschluss 60 erzeugt werden, bevor des
System ausdrücklich
die Einheiten wieder aktiviert oder den Befehl „Einheiten wiederherstellen"
(C8) sendet.
(3) Gibt der Serviceprozessor den „Befehlsmodus"
ein, sobald er den Befehl „Einheiten
deaktivieren" liest. In diesem Modus erzeugt der Serviceprozessor
keine Interrupts, wenn er Bytes von Befehlsantworten in den Ausgabepuffer
(Systemanschluss x60) eingibt. Im „Befehlsmodus" unterbricht
der Serviceprozessor nicht, wenn er die Ergebnisse von Systembefehlen
zurückgibt,
die Antwort-Bytes verlangen. Der Serviceprozessor befasst sich mit
der Verarbeitung von Systembefehlen und prüft weder das Stromversorgungs-Subsystem,
noch erzeugt er den PCUINT (außer,
wenn die EIN/AUS-Taste gedrückt
wurde). Die an den Serviceprozessor gerichteten Systemabfragebefehle
benötigen
in diesem Modus nur ein paar Mikrosekunden je Befehl. Alternativ
kann der Systemprozessor in einer kleinen Schleife verharren, um
aus dieser Schleife Abfragebefehle zu senden und auf Antworten zu
warten, indem er die gesamten Bits des Eingabepuffers und des Ausgabepuffers überwacht.
Dieser
Befehl sollte gemeinsam mit dem Befehl „Einheit wiederherstellen"
(C8) eingesetzt werden. Der Serviceprozessor betrachtet den Befehl
C6 als Nullbefehl, wenn er diesen im Befehlsmodus empfängt. Dieser
Befehl kann in Verbindung mit den Befehlen „Einheiten wiederherstellen"
und „Ausgabepuffer
wiederherstellen" vom System zum sicheren Senden von Abfragebefehlen
zum Serviceprozessor verwenden, ohne befürchten zu müssen, dass durch den Serviceprozessor über den
Anschluss x60 zurückgegebene
Abfrageinformationen mit Einheitendaten vermischt werden.
- C7: Ausgabepuffer wiederherstellen. Wenn der Serviceprozessor
diesen Befehl empfängt,
erwartet er ein Parameter-Byte und gibt dieses nach dem Empfangen
in den Ausgabepuffer ein, ohne einen Interrupt zu erzeugen.
- C8: Einheiten wiederherstellen. Wenn der Serviceprozessor diesen
Befehl empfängt,
stellt der den Zustand der Bits „Digitalisierer deaktivieren"
und „Tastatur
deaktivieren" im Controllerbefehls-Byte wieder her und verlässt den
Befehlmodus. Die Bits wurden durch einen vorangegangenen Befehl
C6 gespeichert. Dieser Befehl sollte gemeinsam mit dem Befehl „Einheiten
deaktivieren" (C6) eingesetzt werden. Wenn zuvor kein Befehl C6 gesendet
wurde (d. h. der Serviceprozessor befindet sich nicht im Befehlsmodus), betrachtet
der Serviceprozessor den Befehl C8 als Nullbefehl.
- C9: Fehlercode lesen. Dieser Befehl ermöglicht dem Host, die Art eines
Serviceprozessor-Ausnahmezustands zu ermitteln. Wenn der Serviceprozessor
entweder im Normalbetrieb oder bei Ausführung des Diagnoseverfahrens
einen Ausnahmezustand feststellt, setzt er das Fehlerbit im Controller-Statusregister.
Der Host kann durch Senden dieses Befehls an den Serviceprozessor
die Art des Ausnahmezustands ermitteln. Wenn der Serviceprozessor
noch arbeitsfähig
ist, antwortet er mit dem Fehlercode. Der Host liest die Daten vom
Anschluss 60.
- CA: Kontrast schreiben. Dieser Befehl ermöglicht dem Systemprozessor,
den aktuellen Wert des Kontrastpotentiometers zu setzen. Das System
sollte nach dem Einschalten die Benutzereinstellung entsprechend
dem im nichtflüchtigen
System-Arbeitsspeicher gespeicherten Kontrastwert wiederherstellen.
- CB: Helligkeit schreiben. Dieser Befehl ermöglicht dem Systemprozessor,
den aktuellen Wert des Helligkeitspotentiometers zu setzen. Das
System sollte nach dem Einschalten die Benutzereinstellung entsprechend dem
im nichtflüchtigen
System-Arbeitsspeicher gespeicherten Helligkeitswert wiederherstellen.
- CC: Kontrast lesen. Dieser Befehl ermöglicht dem Host, den aktuellen
Wert des Kontrastpotentiometers zu lesen. Der Serviceprozessor gibt
ein einzelnes Byte zurück.
Der Host sollte dieses Byte vor dem Abschalten der Stromversorgungs-Hauptebene
im nichtflüchtigen
Arbeitsspeicher speichern, um die Benutzereinstellung zu erhalten.
Wenn der Serviceprozessor diese Befehlswert in seinen Ausgabepuffer
eingibt, erzeugt er keinen Interrupt.
- D0: Ausgabeanschluss lesen. Der Serviceprozessor gibt für alle Bits
Nullen zurück,
außer
für die
Bits 0, 1, 6 und 7, die den Rücksetzstatus
des Mikroprozessors, der Gate-Adressleitung 20,
des Tastaturtakts bzw. der Tastaturdaten widerspiegeln.
- D1: Ausgangsanschluss schreiben. Der Serviceprozessor schreibt
nur die Bits 1, 6 und 7. Die übrigen
Bits bleiben unverändert.
Wenn der Host die Hardware zurücksetzen
möchte,
muss er den Befehl FE benutzen.
- D2: Tastatur-Ausgabepuffer schreiben. Das durch den Host geschriebene
Byte wird in den Eingabepuffer eingegeben und in den Ausgabepuffer übertragen,
und anschließend
wird ein Interrupt erzeugt.
- D3–D4:
Reserviert
- E0: Testeingaben lesen. Dieser Befehl bewirkt, dass der Serviceprozessor
den Tastaturtakt liest und ein Byte ausgibt, dessen Bit 0 die Taktebene
wiedergibt.
- FE: Ausgabeanschluss pulsen. Dieser Befehl veranlasst den Serviceprozessor,
die Leitung -RESETCPU 6 μs lang
zu pulsen. Hierdurch wird die Systemhardware zurückgesetzt.
- F0–FD,
FF: Reserviert
-
Blockformate zwischen Serviceprozessor
und Host. Digitalisiererpunkte und weitere Informationen werden
als Blöcke
unterschiedlicher Länge
in einem Umlaufpuffer im integrierten Arbeitsspeicher des Serviceprozessors
gespeichert. Jeder Block weist einen 1-Byte-Headercode auf, der
je nach dem Headercode von 0 oder 4 Parameter-Bytes gefolgt wird.
Es gibt zwei Arten von Digitalisiererpunkten: Stift-abwärts-Punkte
und Nahbereichs- oder Stift-aufwärts-Punkte, die im Folgenden
erläutert
werden:
-
0x80 <x0> <x1> <y0> <y1>: Block „außerhalb
Nahbereich". Dies bedeutet, dass der Stift gerade den Nahbereich
verlassen hat. x und y sind Präzisionskoordinaten
des Digitalisierers; deren Genauigkeit ist nicht so hoch wie die
der „Nahbereichskoordinaten".
Wegen des Koordinatenformats siehe Stift-Nahbereichspunkt (x81).
Der erste danach folgende Stift-aufwärts- oder
Stift-abwärts-Punkt
zeigt an, dass der Stift in den Nahbereich gelangt ist.
-
0x81 <x0> <x1> <y0> <y1>: Nahbereichs- oder
Stift-aufwärts-Punkt des Digitalisierers.
x und y sind Präzisionskoordinaten
des Digitalisierers. Der Digitalisierer ist so eingestellt, dass
er Nahbereichspunkte meldet, wenn er bis zu 6 mm hoch über die
Schreibfläche
streicht. Der erste Stift-aufwärts-Punkt des Digitalisierers nach
einem Stift-abwärts-Punkt
zeigt das Ende eines Striches an und ist ein „Stift-aufwärts-Ereignis". Das Format
jeder der Koordinaten ist:
x0 : X7 X6 X5 X4 X3 X2 X1 X0
x1
: 0 0 X13 X12 X11 X10 X9 X8
Xn ist das n-te Bit in der 16-Bit-Koordinate
(X0 ist das niedrigstwertige Bit).
-
0x83 <x0> <x1> <y0> <y1>: Stift-abwärts-Punkt
des Digitalisierers. x und y sind Präzisionskoordinaten des Digitalisierers.
Wegen des Koordinatenformats siehe Stift-Nahbereichspunkt (x81). Der erste Stift-abwärts-Punkt,
gefolgt von einem Stift-aufwärts-Punkt
oder einem Punkt außerhalb
des Nahbereiches, deutet auf den Beginn eines Striches hin und ist
ein 'Stift-abwärts-Ereignis'.
-
0x85: Block Pufferüberlauf.
Dies kann immer dann eintreten, wenn der Serviceprozessor feststellt, dass
in seinem Puffer nicht ausreichend Platz für Digitalisiererpunkte vorhanden
ist. Das bedeutet, dass ein oder mehrere Digitalisiererpunkte verloren
gegangen sind. Im Allgemeinen ist dies keine schwerwiegende Situation
und verursacht keine Probleme, wenn es nicht „sehr oft" passiert.
-
Im Folgenden wird unter Bezug auf 3 der Digitalisierungsvorgang
des Computers beschrieben. Wenn der Serviceprozessor 24 in
Schritt 140 eingeschaltet wird, ist der Digitalisierer 14 zunächst deaktiviert. In
Schritt 142 sendet das Hostsystem 130 dann verschiedene
Befehle zum Konfigurieren des Digitalisierers an den Serviceprozessor 24.
Zu diesen Befehlen gehören
ein oder mehrere der folgenden Befehle: x80, x82, x83, x84, x85,
x86, xBB3a, xBB39, xBB3E und xBB3F. Dann sendet das Hostsystem in
Schritt 144 einen Befehl xA2 und anschließend einen
Befehl xA8, um die Erzeugung von Digitalisiererpunkten freizugeben.
Sobald dies erfolgt ist, fährt
der Host in Schritt 145 mit seiner normalen, nicht mit
der Digitalisierung verbundenen Verarbeitung fort, der Serviceprozessor 24 fährt in Schritt 146 mit
seiner Hauptschleifenverarbeitung fort, und der Digitalisierercontroller
beginnt eine Schleife 148, um auf eine Stifteingabe zu
warten.
-
Wenn der Stift in den Nahbereich
des Digitalisierers gebracht wird, liest der Digitalisierer in Schritt 148 die
Stiftposition und sendet die Positionen zum Digitalisierercontroller,
der in Schritt 149 die digitalen x,y-Koordinaten für die Stiftposition
erzeugt. Dann sendet der Controller 26 die Koordinatendaten
zum Serviceprozessor 24, indem er eine Interruptanforderung
erzeugt, die durch das Programm UART-INT bearbeitet wird. Dann verzweigt
der Controller wieder zurück
zu Schritt 148, um den Prozess oder die Schleife des Lesens
der Stiftposition fortzusetzen und x,y-Koordinaten zu erzeugen,
bis der Stift aus dem Nahbereich entfernt wird.
-
Die Interruptanforderung UART-INT
wird in Schritt 152 durch die Routine bearbeitet (2) und gibt in Schritt 154 Digitalisiererdaten
in den UBUFFER 114 ein. Nach der Eingabe in diesen Puffer
verarbeitet der Serviceprozessor 24 die Daten in Schritt 156,
um verarbeitete Daten zu erzeugen, die dann zum Hostsystem gesendet
werden. In Schritt 158 wird jeder verarbeitete Datenpunkt
in den HBUFFER 112 eingegeben. Dann wird in Schritt 160 das
erste Datenbit im HBUFFER in den OUTBUF geladen; dadurch wird das
Controller-Statusregister 132 gesetzt, um anzuzeigen, dass
solche Daten vorhanden sind. Als Nächstes sendet der Serviceprozessor 24 in
Schritt 162 die Interruptanforderung IRQ12 an das Hostsystem.
Dann geht der Serviceprozessor 24 zu Schritt 164 über und
beginnt eine Schleife, um durch Suchen im Controller-Statusregister 132 zu ermitteln,
ob die Daten aus dem OUTBUF gelesen worden sind, sodass das nächste Byte
auf dem HBUFFER in den OUTBUF eingegeben werden kann, bis der HBUFFER
leer ist. Sobald der HBUFFER leer ist, erzeugt Schritt 167 eine
Datenende-Markierung
xFF und sendet diese in Schritt 176 zur Verwendung zum
Host.
-
Wenn der Host die Anforderung IRQ12
von Schritt 162 empfängt,
wird die normale Verarbeitung des Hosts unterbrochen, und ein IRQ12-Interruptprogramm
liest in Schritt 170 den Inhalt des Controller-Statusregisters 132 und
ermittelt, ob Daten im OUTBUF vorhanden sind; dann liest es in Schritt 172 die
Daten in das Hostsystem. Nachdem die Daten gelesen worden sind,
setzt die Hardware das Controller-Statusregister zurück, um anzuzeigen,
dass der OUTBUF leer ist. Dann ermittelt das Interrupt-Programm
in Schritt 174, ob auch die Datenendemarkierung xFF gelesen
wurde. Wenn dies nicht der Fall ist, verzweigt die Verarbeitung
zurück zu
Schritt 170, um den Prozess zu wiederholen, bis der HBUFFER
leer ist. Dann liest Schritt 176 die Datenendemarkierung
und verzweigt wieder zur normalen Hostverarbeitung, die dann den
LCD-Bildschirm aktiviert und darauf die Stiftposition anzeigt.
-
Nachdem der Serviceprozessor festgestellt
hat, dass der Ausgabepuffer leer ist (das System hat das erste Byte
gelesen), startet er einen 20 ms-Zeitgeber. Wenn das System die Übertragung
des Rests vor Ablauf des Zeitgebers nicht abgeschlossen hat, bricht
der Serviceprozessor die Übertragung
ab, löscht
seine internen Digitalisiererpuffer und sendet eine IRQ12 mit einer
1-Byte-Datenendemarkierung xFF an den Ausgabepuffer. Das Fehlerbit
im Statusregister wird gesetzt, und der Fehlercode lautet dann x"OD";
das zeigt die Zeitüberschreitung
für die
Datenübertragung
des Digitalisierers des Systems an.