DD300254A5 - Ein system fuer die fernbetaetigte fehlersuche, korrektur und universelle arbeit eines personalcomputers - Google Patents

Ein system fuer die fernbetaetigte fehlersuche, korrektur und universelle arbeit eines personalcomputers Download PDF

Info

Publication number
DD300254A5
DD300254A5 DD34316790A DD34316790A DD300254A5 DD 300254 A5 DD300254 A5 DD 300254A5 DD 34316790 A DD34316790 A DD 34316790A DD 34316790 A DD34316790 A DD 34316790A DD 300254 A5 DD300254 A5 DD 300254A5
Authority
DD
German Democratic Republic
Prior art keywords
mov
computer
program
call
pop
Prior art date
Application number
DD34316790A
Other languages
English (en)
Inventor
Michael Hilary Stevens
Original Assignee
Michael Hilary Stevens
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Michael Hilary Stevens filed Critical Michael Hilary Stevens
Publication of DD300254A5 publication Critical patent/DD300254A5/de

Links

Abstract

Die Erfindung betrifft einen Personalcomputer * der mit einem Ferndiagnostikprogramm ausgestattet ist, das in einem Chip in einem Festspeicher gespeichert ist und automatisch mittels des Standard ROM BIOS fuer den optionalen Gebrauch abgerufen wird. Wenn diese Option ausgewaehlt wird, befaehigt das den Rechner, mittels des Telefonnetzes mit einem anderen Rechner in Verbindung zu treten, der Systemfehler suchen kann, grundlegende Aufbauprogramme betreiben kann, und der im allgemeinen das Computersystem so betreiben kann, als ob der Basisaufruf den PC lokal betaetigen wuerde. Die Erfindung betrifft ebenfalls ein Chip fuer die Anordnung in einem Personalcomputer, und in dem ein Programm gespeichert wird, um die erforderlichen Synchronisationssignale fuer einen Basisrechner zu liefern, und der Programme aufweist, um die "Befehlsinterpretation" fuer die Einrichtung einer Basis-Neben-Beziehung zwischen dem Basisrechner und dem Personalcomputer an einem entfernten Ort zu liefern, und der mit dem besagten Chip ausgestattet ist, das die vollstaendige Steuerung des besagten PC ermoeglicht (mit der Ausnahme, die durch die Nebeneinrichtung "Unterbrechung" zur Verfuegung gestellt wird).{Personalcomputer; Ferndiagnostikprogramm; Telefonnetz; Systemfehler; Aufbauprogramm; Basisaufruf, lokal; Programm; Synchronisationssignal; Befehlsinterpretation; Basis-Neben-Beziehung, entfernt; Chip; Steuerung; Nebeneinrichtung; Unterbrechung}

Description

Hierzu 1 Seite Zeichnung und 24 Seiten Tabellen
Die Erfindung betrifft einen Personalcomputer (PC), der mit einem ROM BIOS Chip-Speicher, einer Zentraleinheit, einem RAM-Speicher, einem seriellen Eingabe/Ausgabetor, einem Modem (Modulator-Demodulator), einer Tastatur und einem Monitor versehen ist. Die Erfindung betrifft ebenfalls einen Nur-Lesespeicher (ROM) für die Anordnung in einem Personalcomputer. Derartige Computer sind gut bekannte Standardgeräte, die nach einem Standard gebaut werden, wie er ursprünglich von der IBM Corporation vorgegeben wurde, der aber jetzt ein Industriestandard ist, der von einer großen Anzahl von unabhängigen Herstellern befolgt wird.
Innerhalb dieses Standards sind eine sehr große Anzahl von Variationen betreffs der RAM-Speichergröße, der Anzahl und Ausführung der Eingabe/Ausgabetore, der Anzahl und Ausführung der Ausrüstung, wie beispielsweise der Floppy-disk-Stationen, Hard-disks, des Coprozessors, der mehr oder weniger komplizierten grafischen Karten, Netze und Kommunikationseinrichtungen, usw. möglich. Ein PC wird normalerweise mit einer Hauptplatte geliefert, die einen ROM BIOS Chip-Speicher und eine Anzahl von Kartenschlitzen aufweist, wo die Karten für das Steuern der Plattenantriebe angebracht werden, die die Eingabe/Ausgabetore, usw. bereitstellen, ebenso wie für verschiedene ardere Karten und Extras, wie beispielsweise ein Mathematikprozessorchip. Bei älteren Modellen befinden sich auf der Hauptolatte oc er anderswo eine Anzahl von Konfigurationsschaltern, d. h., manuell einstellbare Schalter („Dip-Schalter"), die benutzt. /erden, um Daten für die tatsächliche Speichergröße einzustellen, und die Nummern und Ausführungen der verschiedenen Geräte im Computer. Angesichts der Tatsache, daß immer mehr solcher Ausrüstungen normal geworden sind, die eine übermäßige Anzahl von Schaltern erfordern, ist diese Methode der Definition d6r Konfiguration der einzelnen Maschinen undurchführbar geworden, und
daher wurde das Dip-Schaltersystem universell gegen ein System von einstellbaren Speicherzellen ausgetauscht, deren Information sich ändern muß, wenn der Computer mit mehr Speichern oder weiteren Geräten verbessert wird. Im Gegensatz zu den festen ROM-Spoichern, wie sie für den ROM BIOS verwendet werden, kann dieser programmierbare Konfigurationsspeicher, ein CMOS RAM, Daten durch beispielsweise elektrische Störungen, eine ausgefallene Batterie, usw. verlieren, und er wird dann neu eingestellt werden müssen, und bis das geschehen ist, wird der Computer nicht benutzbar sein. Nur etwa 10% der PC-Nutzer sind in der Lage, diese erforderliche grundlegende Einrichtung vorzunehmen, ohne daß ein übermäßiger Zeitaufwand für das Studieren der zu befolgenden Anleitung aufzuwenden ist, und die meisten von ihnen müssen den Service benachrichtigen oder das ausgefallene Compiitersystem einer Werkstatt zuführen. Tatsächlich wird die Mehrzahl der PC-Nutzer nicht einmal in der Lage sein, den Fehler zu bestimmen. Außerdem nimmt die Kompliziertheit des CMOS-RAM-Systems laufend zu, ebenso wie die Anwendungen, für die die PCs eingesetzt werden, wie beispielsweise die Netzwerkkommunikation, usw. Vom Gesichtspunkt des Wartungspersonals ist es oftmals schwierig, d6n Grund iür das Versagen des Computers zu ermitteln, da der Besitzer häufig telefonisch informiert und die Symptome unklar oder unverständlich beschreibt. Es wäre daher von beträchtlichem Nutzen, wenn das Wartungspersonal das gestörte Computersystem von der Ferne aus überprüfen könnte, und zwar vom Zeitpunkt des Betreibens des Computers an so zeitig wie möglich, wobei das PC-System schrittweise am Service-Computermonitor untersucht wird, der über das Telefonnetz in einer Basis-Neben-Konfiguration arbeitet. Sie könnten dann selbst den Zustand des Computers sehen, gerade so als ob man tatsächlich am Computer sitzen würde. Sie könnten einen ausgefallenen CMOS-RAM-Speicher zurückstellen, verschiedene Testprogramme durchführen, usw. und oftmals das Computersystem nach einigen Minuten in dan Arbeitsbefehl bringen. In anderen Fällen kann es möglich sein, ein ausgefallenes Bauelement zu identif zieren, das der Wartungsingenieur dann beim Anruf mitbringen könnte.
Um eine Lösung für dieses Problem der Ferndiagnostik zu liefern, schlägt die vorliegende Erfindung vor, daß ein Computer der votangehend erwähnten Ausführung zur Verfügung gestellt wird, wie er in der charakterisierenden Klausel des Patentanspruchs 1 angeführt wird. Sie schlägt ebenfalls einen Nur-Lesespeicher für die Anordnung in einem Personalcomputer vor und die Ausstattung mit einem Programm, wie es im Patentanspruch 5 aufgeführt wird.
Um das Vertrauen des Benutzers des Computers zu bewahren, und um seine Sicherheit zu gewährleisten, wird dem Benutzer die Möglichkeit gegeben, zu beobachten, was für eine Information dem Basisrechner zugeführt wird. Der Benutzer kann beispielsweise Dateien im Speicher, beispielsweise auf Hard-disks, haben, von denen er nicht möchte, daß andere sie losen. Daher zeigt gemäß einon Aspekt der Erfindung der Monitor des Benutzers, was die ganze Zeit getan wird, und zwar mit der Möglichkeit, daß der Benutzer die Kommunikation sofort unterbrechen kann, wenn er sieht, daß ein Zugriff zu einer vertraulichen Datei vom Basis-PC erfolgt, wobei das auf seinem Monitor gezeigt wird. Wann auch immer der Benutzer "unterbrechen" möchte, wird ein Drücken von CTRL/ALT + DEL in der üblichen Weise dazu führen, daß der PC die Modem-Kommunikation unterbricht und ein sogenanntes „kaltes Urladen" durchführt (nicht das übliche „warme Urladen").
Entsprechend der Erfindung wird eine Programmfolge hinzugefügt, die als Teil des normalen ROM BIOS eingeschlossen werden soll, wobei es sich um Hardware oder Firmware in dem Sinne handelt, daß sie einen Teil des „eingebrannten" oder festen Speicherbefehlsvorrates bildet, der im Computer angeordnet ist. Jedesmal, wenn der Computer gestartet wird (urgeladen wird), wird dieses zusätzliche Programm vom ROM BIOS aufgerufen, und der Benutzer hat die Option, diese Möglichkeit anzuwenden, oder, wenn er davon Abstand nimmt, wird das Urladeverfahren weitar in der üblichen Weise abgewickelt. Wenn die Möglichkeit, die das fernbetätigte Urladen des Nebenrechners unter der Kontrolle des Basisrechners gestattet, gefordert wird, wird der Basisrechner (der Computer in der Werkstatt) mit einem anderen Programm versehen werden, um zu gestatten, daß dieses Merkmal (HOSTREM, COM) angewendet wird.
Ein wichtiges Merkmal der Erfindung ist, daß sie vom angewandten Betriebssystem unabhängig ist, und daß sie gleichermaßen gut funktioniert, ob der Benutzer beispielsweise ein MS-DOS, PC-DOS oder UNIX besitzt. Jeder Personalcomputer ist mit einem ROM BIOS ausgestattet, und obgleich eine Anzahl von unterschiedlichen ROM-BIOS-Ausführungen auf dem Markt sind, verrichten sie alle im wesentlichen das gleiche (BIOS ist die Abkürzung für Basic Input Output Systeme). Beim ROM BIOS gibt es Ge'.ehle, die die CPU-Suche nach ROM-BIOS-Erweiterungsprogrammen durch Untersuchen von verschiedenen bekannten Adressen im System vornehmen, und nachdem ein derartiges Programm identifiziert und geprüft wurde, wird das ROM BIOS jenem Programm eine Steuerung verleihen. Entsprechend der vorliegenden Erfindung ist ein derartiges Programm in der Hardware angeordnet, und das gestattet, daß ein Fernbasisrechner die erforderlichen diagnostischen Aufgaben verrichtet. Es muß ebenfalls betont werden, daß die Erfindung gleichermaßen gut funktionieren wird, ob die CPU in 8086,8088,80286, 80386 oder ein anderer kompatibler Prozessor ist.
Ein sehr spezielles.''. -kmal des Systems der Erfindung ist, daß die Kommunikation und die Basis-Neben-Beziehung eingerichtet wird, bevor das Betriebssystem eingeführt wird, da das Programm funktionell einen Teil des ROM BIOS bildet, und sie wird daher vor und unabhängig von irgendeinem Betriebssystem eingeführt. Um die Kommunikation ebenfalls während und nach der Installation des Betriebssystems aufrechtzuerhalten, ist es erforderlich, einen bestimmten Speicherraum im RA !-Speicher des Nebengerätes zu reservieren. Etwa 3kByte werden benötigt, und die Größe des RAM-Speichers, der für das Betriebssystem zur Verfügung steht, wird entsprechend reduziert. Außerdem wird die Steuerung über das Serientor, das für die Kommunikation benutzt wird, aufrechterhalten, und sie wird nicht durch dh Installation des Betriebssystems unterbrochen. Das Musterprogramm, das in den Tabellen gezeigt wird, verrichtet alles das, wenn das Betriebssystem das MS-DOS (PC-DOS) ist. Wenn andere Betriebssysteme verwendet werden sollen, können Modifikationen erforderlich sein.
Bei der Einrichtung einer Basis-Neben-Beziehung zwischen zwei Computern, die voneinander entfernt sind, gibt es an sich nichts Neues. Nach dem bisherigen Stand der Technik konnte das jedoch nicht anders abgewickelt werden als durch die Benutzung des Betriebssystems des Nebengerätes, das daher zuerst installiert werden mußte. Da ein fehlerhafter Computer immer gewiß nicht in der Lage sein wird, ein Betriebssystem zu laden, kann eine derartige Basis-Neben-Beziehung nach dam bisherigen Stand der Technik nicht für den Zweck der Erfindung benutzt werden.
Die Erfindung wird jetzt unbegrenzt durch die Schritte veranschaulicht, die vom Benutzer eingeleitet werden, wenn gewünscht wird, daß eine Ferndiagnostik und ein Ferntest gestattet werden.
Die Abbildung 1 zeigt ein schematisches Blockschaltbild. Die Tabelle A zeigt ein Programm für den Basisrechner. Die Tabelle B zeigt ein Programm, das in tier Hardware („Firmware") des Nebenrechners angeordnet wird. Beide Programme werden in der Assemblersprache geschrieben.
Wenn der Besitzer eines Personalcomputers möchte, daß sein Computersystem entsprechend der Erfindung geprüft wird, sind die folgenden Schritte zu unternehmen:
1. Der Besitzer nimmt Kontakt zu seiner Wartungswerkstatt auf und bitte um eine Wartungsdiagnostik, und er gibt die Telefonnummer an, die für die Kommunikation zu benutzen ist.
2. Der Besitzer schließt seinen Computer an die Telefonleitung mittels eines Modem in der üblichen Weise an und schaltet seinen Computer ein (Abbildung). Wenn er einen Optiondatensatz auf seinem Monitor erhält, beispielsweise „Für die Ferndiagnostik R drücken", wählt er jene Option, indem er „R" tippt. Seine Tastaturkommunikation mit seinem eigenen Computer ist jetzt unterbrochen, und die Steuerung kann jetzt von der Wartungswerkstatt übernommen werden, nachdem sie gewählt und die Zugriffsprozedur abgeschlossen haben. Die einzige Option, die für den Benutzer offen ist, ist die, daß er CTRL/ ALT + DEL tippen kann, um die Kommunikation „zu unterbrechen" (oder natürlich den Computer abzuschalten). (Wenn er nicht „R" innerhalb von 5see tippt, wird sich die Standardstartprozedur fortsetzen.)
3. Das Wartungspersonal benutzt eine Standardkommunikationssoftware, um die Telefonnummer das Besitzers zu wählen, und um, nachdem sich die Kommunikation in der normalen Weise eingerichtet hat, das richtige Kennwort für den Zugriff zum Ferncomputer zu liefern.
4. In der Werkstatt und auf dom Monitor des Besitzers wird jetzt eine Anzahl von Listen vorgelegt. Außerdem wird ein Menü mit bestimmten Optionen gezeigt.
Damit die ferngesteuerte Kommunikation eingerichtet werden kann, ist es erforderlich, daß der Besitzer die Ferndiagnostikoption während der Abarbeitung des ROM BIOS wählt, damit das Programm abgearbeitet werden kann. Das wird nun jedesmal einmal abgewickelt, wenn der PC gestartet wird, und es besteht daher keine Gefahr, daß der Zugriff zu anderen Zeiten erhalten werden kann, selbst wenn der Computer am Telefonnetz angeschlossen bleibt. Wenn Hacker einen Zugriff durch bestimmte andere Hilfsmittel erreichen, können sie nicht das „Ferndiagnostiksystem" verwenden.
Die tatsächliche Einrichtung der Kommunikation wird von der Werkstatt aus mittels eines Standardkommunikationsprogramms vorgenommen, das Befehle sendet, um ihrem Modem zu befehlen, mit dem Fernmodem des Computers in Kommunikation zu troten, der diagnostiziert werden soll. Ist die Kommunikation erst einmal eingerichtet, wird der Ferncomputer seine Seriennummer (immer in seinem ROM BIOS vorlian Jen) an die Werkstatt senden, und die Werkstatt sendet die empfangene Seriennummer gemeinsam mit einem Kennwort zurück, und das richtige Kennwort gestattet die Fortsetzung der Kommunikation zwischen dem Basisrechner und dem Nebenrechnr . Das besagte Kennwort wird daher in das im ROM vorhandene Programm eingebaut und kann für alle Computer das gleiche soin, die von der Firma geliefert werden, zu der die Werkstatt gehört, so daß sie zu ihren eigenen Produkten einen Zugriff haben kann und diese warten kann, aber sie wird nicht in der Lage sein, einen Zugriff zu PCs anderer Unternehmen zu haben.
Das Personal der Werkstatt kann jetzt damit beginnen, die erwähnten Optionen zu verwenden, um das System zu diagnostizieren, und das Kennen der Seriennummer gestattet die Korrektur der Einstellungen eines jeden einzelnen Systems. Der zu diagnostizierende Computer muß mit einem festen ROM-Programm versehen sein, wie beispielsweise REMCMOS aus Tabelle B, und für das Fernurladen muß die Werkstatt ein Programm besitzen, das damit kompatibel ist, wie HOSTREM.COM aus Tabelle A. Sie werden in der Assemblersprache augeführt, werden aber natürlich in der Maschinensprache assemblies und verwendet. Das „Hardware"-Programm kann nach einer der vier Möglichkeiten installiert werden:
1. Einfügung in die ROM BIOS-Chips auf der PC-Hauptplatte (FOOOOh-FFFFFh).
2. Als separate EPROMS auf der PC-Hauptplatte angordnet. Einige Ausführungen der Hauptplatten sind für ein Hinzufügen derartiger EXTENDED BIOS-Chips (EOOOOh) vorbereitet oder alternativ durch Verwendung von zwei 27512 EPROMS, um die ROM BIOS-Chips zu ersetzen.
3. In die Hard-Disc Controller Card ROM BIOS eingefügt oder ausgetauscht.
4. Auf einer vollständig separaten Karte, die irgendwo im Adressenbereich COOOOh bis EOOOOh adressiert werden kann. Bei einem jeden dieser letzten drei Fälle wird das Standard-ROM BIOS das Programm als REMCMOS bei seiner Standardstartprozedur der Überprüfung der Adressen von COOOOh bis EOOOOh in 800-h-Sprügen vorfinden, und es wird ein Programm von bestimmter Länge identifizieren, und wenn die Prüf summe in Ordnung ist, wird die Steuerung auf jenes Programm übergehen. Der Fall 1 wird fordern, daß die ROM-BIOS-Erweiterungssuche in das FOOOOh-Segment ausgedehnt wird.
Eine vollständige Erklärung der Funktionsprinzipien des Standard-ROM BIOS kann im Handbuch „Personal System/2 and Personal Computer BIOS Interface Technical Reference" (IBM Corporation, Boca Raton, FL, 1987) vorgefunden werden, worauf wir uns hierin beziehen.
In das ROM-BIOS-System ist ein spezielles Merkmal eingebaut, das durch die Erfindung benutzt wird. Wenn der Computer zum ersten Mal Strom erhält, erhält er seinen ersten Befehl von einer Festadresse im ROM-BIOS-Programm (FFFFOh), der die Abarbeitung des ROM BIOS startet. In diesem Urladeprogramm, das verschiedene Programmstarts der gesamten Hardware im Computer vornimmt, ist immer eine Suche nach ROM-BIOS-Erweiterungsprogrammen bei vorgegebenen Adressen vorhanden, die mit der Adresse COOOOh beg. inen, und die in 800-h-Stufen bis zu (aber nicht einschließlich) EOOOOh fortlaufen (64 Adressen), danach bei EOOOO (eine Adresse). Das BIOS kann leicht modifiziert werden, um seine erste Suche aufF7800h anstelle von 0000h zu erweitern, und jedes Programm, das in den ROM BIOS-Chips enthalten ist, wird daher ebenfalls ermittelt werden und eine Steuerung erhalten.
Für eine jede dieser Adressen wird eine Prüfung vorgenommen, ob ein Programmstartkennzeichen vorgefunden wird. Das ROM BIOS kann von einer Fertigung zur anderen variieren, aber diese Suchvorgänge werden immer durchgeführt, um die IBM-Kompatibilität aufrechtzuerhalten. Andere Geräte können bei einer oder mehreren dieser Adressen installiert werden, aber es wird immer eine vorhanden sein, ,die für die Einordnung des Startes des REMCMOS-Programms der Erfindung benutzt werden kann.
Das exemplarische REMCMOS-Programm (in Maschinensprachenform gespeichert) wird, wenn es fur die Abarbeitung
ausgewählt wird, automatisch alles tun, was erforderlich ist, um die Kommunikation mittels des beigefügten Modems zugestatten (es wird das Serientor mit der höchsten Toradresse dafür benutzen, wodurch gestattet wird, daß eine weitere
Ausrüstung angeschlossen bleibt, und daher für die diagnostische Fernprüfung verfügbar ist), und wenn die Kommunikation
eingerichtet ist, wird es mit der Seriennummer des PC antworten, wodurch gestattet wird, daß der Basisrechner auf die relativen
Installationsparameter für diesen speziellen PC verweist. Der Basisrechner muß dann antworten, indem er die Seriennummer
zurückgibt, und indem er ein Kennwort liefert, um Zugang zum System des Benutzers zu erhalten. Nur ein Versuch ist gostattet,ein ungültiges Kennwort führt zur Unterbrechung der Kommunikation des PC des Benutzers und zum erneuten Urladen („kaltes
Urladen"), so daß die gesamte Einrichtungsprozedur erneut gestartet werden muß, und das erfordert die Zustimmung und Zusammenarbeit seitens des Eigentümers. Das „kalte Urladen" wurde ausgewählt, um das „Knacken des Kennwortes" sehr
zeitaufwendig zu machen.
Wurde erst einmal das richtige Kennwort empfangen, so wird das REMCMOS des Benutzers mit dem Senden von Datensätzen
über die Einrichtung des Systems (wobei alles zum Bildschirm des Benutzers zurückgebracht wird) beginnen, wobei damitgestartet wird, ob das System durch den PC-Schutz (ein PC-Zugriffssteuersystem) geschützt ist oder nicht, und wenn nicht, wirdgefragt, ob die Diagnostik fortgesetzt werden sollte oder nicht. Wenn eine Fortsetzung gefordert wird, berichtet der PC des
Benutzers über die im PC installierte Speichergröße, Basis und erweitert, und gestattet danach, daß der Basisrechner diese Installationsparameter verändert, wobei die neuen Werte gezeigt werddn, bis der Basisrechner die Speicherinstallation
akzeptiert.
Jede Standardkommunikations-Software kann verwendet werden, um die Kommunikation einzurichten, und es gibt eine
spezielle Software für das System, um die Synchronisation der zwei in Verbindung stehenden Computer zu gestatten, und die„Befehlsinterpretation", „HOSTREM.COM", die mit der Kommunikations-Software durchlaufen kann, beispielsweise als ein„Editor-Programm".
Die Adressen aller Karten, die vom ROM BIOS ermittelt werden, werden als nächstes berichtet, zuerst die parallelen Toradressen,
als nächstes die seriellen Toradressen und danach die Adressen aller anderen Karten im System (beispielsweise Hard Disk
Controller Card). Als nächstes erscheint ein Menü mit fünf Optio ien:
1. Durchlauf durch das grundlegende Systemeinrichtungsprogramm (CMOS-Installation).
2. Durchlaufen eines Ausprüfprogramms "DEBUG", das die Prüfung aller Speicherbereiche im PC gestattet, wie beispielsweise die Daten, die durch das ROM BIOS eingesetzt werden, die Toradressen, usw.
3. Prüfen der Torkommunikation. Der Basisrechner ist in der Lage, ein vorhandenes Tor als ein „Ausgabetor" zu benennen und ein vorhandenes Tor als ein "Eingabetor" (einschließlich irgendeines parallelen Tores, aber ausschließlich des Tores, das für die „Ferndiagostnik" verwendet wird), wodurch gestattet wird, daß der Basisrechner Befehle an irgendwelche Zusatzgeräte sendet und irgendwelche Antworten von jenem Zusatzgerät empfängt. Die erforderlichen seriellen Torparameter werden erfragt und vom Basisrechner eingegeben.
4. Die Urladeprozedur ist fortzuführen, wobei die Kommunikation offen gehalten wird, und danach sind die erforderlichen Befehle zu geben, damit eine Software in einem Adreßbuch durchlaufen kann, einschließlich der Adreßbuchstabe, usw. Die Nebenanlage führt die normalen Tastaturunterbrechungsvektoren zurück, so daß der Benutzer irgendein erforderliches Kennwort eingeben kann, wenn sein System urgeladen wird (beispielsweise PC-Schutz), und auf das Synchronisationssignal warten wird, bevor fortgefahren wird. Das wird vom Basisrechner geliefert, der DOS aus seiner Kommunikations-Software eingibt und die spezielle gelieferte Software durchlaufen läßt, HOSTREM. COM. Das liefert automatisch das erforderliche Synchronisationssignal zur Neb6nanlage und liefert die „Befehlsinterpretation", die benötigt wird, um den Neben-PC zu steuern.
Zu diesem Zeitpunkt wird der Basisrechner die vollständige Steuerung über den PC des Benutzers haben und kann die Adreßbuchsuchen durchführen und irgendwelche Programme durchlaufen lassen. Der Benutzer besitzt noch die Fähigkeit, die Verbindung durch CTRL/ALT + DELzu unterbrechen, wenn er den Basisrechnerzugriff stoppen will, aber diese sind die einzigen Tasten, die ihm zur Benutzung zur Verfügung stehen; in keiner Weise kann er das Durchlaufen der Software seitens des Basisrechners „stören".
5. Aus; angszugriff. Diese Option gestattet, daß der Basisrechner optional einen Datensatz an den Benutzer tippt, bevor dann entweder ein erneutes Durchlaufen der Speicher- und Einrichtungsprogramme, das kalte erneute Urladen des PC des Benutzers erfolgt oder das Urladen des PC des Benutzers fortgesetzt wird (wenn keine Veränderung bei der PC-Einstellung vorgenommen wurde, wenn ein erneutes Urladen gefordert wird).
Das beispielhafte Hardware-Programm REMCMOS aus der Tabelle B wird etwa 8kBytes des ROM-Speichers einnehmen und könnte theoretisch Platz in den Standard-ROM-BIOS-Chips finden, die normalerweise nicht vollständig verwendet werden. Aus Gründen des Urheberrechtes und ebenfalls aus praktischen Gründen ist es oftmals geeigneter, das Programm in einer Erweiterung anzuordnen, wie es vorangehend beschrieben wurde.
Bei der beispielhaften Ausführung der Erfindung benutzt das Programm, wenn die Menüauswahl 4 genommen wird, die Videounterbrechung 10h, um die Videodaten zum Basis-PC zu leiten, bevor gestattet wird, daß das lokale ROM-BIOS-Unterbrechungsprogramm sie auf den lokalen Bildschirm (Nebengerät) bringt, und es benutzt diese Unterbrechung, um zu prüfen, ob das Betriebssystem installiert wurde oder nicht. Das erfolgt mit jeder Anforderung, den lokalen Bildschirm zu verändern, wodurch eine vollständige Steuerung zur Verfügung gestellt wird. Nachdem das Betriebssystem goladen wurde und durchläuft, übernimmt danach das Programm ebenfalls wieder die Steuerung über die Tastaturunterbrechungen/und das Programm ersetzt diese durch seine eigenen, so daß eine jede Betriebssystemanforderung nach einem Tastaturbefehl im Nebengerät zum Basisrechner gelenkt wird, und seine Antworten werden benutzt, um das Nebenbetriebssystem mit den erforderlichen Befehlen zu versehen. Die Fernurladebetriebsart des Basisrechners wird durch die Tastenkombination ALT/-(Minus) beendet. Das führt dazu, daß der Neben-PC den Datensatz „BREAKING COMMUNICATION" (Unterbrechen der Kommunikation) auf den Bildschirm bringt und in der „normalen" Weise zurücksendet und danach ein ,.kaltes" erneutes Urladen durchführt. Nachdem der Datensatz als Bestätigung zurückgeführt wurde, wird der Basisrochner danach aus dem HOSTREM zurück zum DOS gelassen.
Das beschriebene diagnostische System wird in der Lage sein, solange zu funktionieren wie ein Minimum an Geräten im untersuchten Computer arbeitet. Es muß eine arbeitende CPU, ein arbeitendos Tor und ein gewisser arbeitender RAM-Speicher sowie eine Tastatur vorhanden sein, um das Ferndiagnostikprogramm einzugeben. Der Monitor muß beispielsweise nicht einen Arbeitsbefehl für das diagnostische System haben, um vom Gesichtspunkt der Werkstatt aus zu arbeiten, aber ein vorsichtiger Eigentümer kann sich dann von der Benutzung des Systems ternhalten, da er nicht überprüfen kann, ob die Werkstatt in seinem Computer arbeitet. Ein unterbrochener Monitor würde immerhin zur Werkstatt gesendet, was leicht zu diagnostizieren ist
Zusätzlich wird ein MODEM gefordert.
Die Erfindung darf nicht als auf die beispielhafte Ausführung mit den Programmen, wie sie in der Assemblersprache aufgezeigt werden, begrenzt angesehen werden, sondern sie muß so verstanden werden, daß sie nur durch die als Anhang beigefügten Patentansprüche abgegrenzt wird.
Hostrem.asm
300
Table A -7-
ι TfM profraa ia und for reaole control of lh· «acM» under tot. Il aaiuaea that tha eoMunleal lon channel la already opan and thai tka RUN MHOTE opt lot. haa beea choaan. Il Mrat eeade a atarlup algnat aa4 th«a roapnnde approprlately to Keaaagee reqvaellng Interrupt 10 or I«.
(Wh
co«baa· •qu JfIh
ooalatb 0bh«4
•« Into •q» CChM
;h*rd cod· Ida eoua cbanaal ;eod lh· Interrupt vector ;and the Interrupt vector
ruftrM aefaant
org IOOb • atm
JiP elart
t T%· original Interrupt vaster
•ooalntk 4«
oooalnto d«
regelO
regelt
ilOfrag·
IaKeIdkdkdb<bdbdbdbdblab·!
db db db db db db db
db db db db db db db db db db db db db db db db db
db db db
IKfTI(I
db db db
lnue db
ciua db
cburr db
cbeod label
cbheed d"
cblail d«
brie
brte ι
label brte HBBCCDD BLBLBUL 11000000b 10OO11OOb ICIOOOIIb I 0100000b IOOOOOOOb I 1000000b
I 110 11 I Ib
I1 ιοί 11 Ib
10100000b HlIIIOOb I IIOIIOOb IUlIOOOOb 11oo1111 b
1000111 Ib IIOIOOOOb IOOOOOOOb IOOOOOOOb
IOOOOOOOb IOOOOOOOb I I 1011 lib
label h/ti
AC
BS
10000000b
IOOOOOOOb
IOOOOOOOb
13a dup (7!
brte
runotlon iO
;3
;Oah :Obh :Och :Odh
;0.h
:Ofb ;10h
: 11 h
:12h
}0 read oau« byte tool J
;epeciricd interrupt ouaber ;oheckeua yle
cburr
Oaah.Oaah.or.O ;lnlllIlaatloo aaaege
a200h !«landed oode ror all/-
; Routine to eat up reflatere ready Co porfora the Interrupt: fro· IeII•etrege:
InItB db doneval «qu
ah.I al.I bh.l bl.l ch.l cl dh.l
•I I ' ♦21
• •41
• Si
• SI •7
rah rat rbh rbl rch rcl rdh rdl
; Roulina to aave raglalera ror coaaunlcaltoo purpoeei eaverege:
aov
IQV OV OV «OV
ret
Uli.ah Idl·!I.al ld:>2!.bb IdIOI.bl IdIMI .ch Idi'Sl.cl Idl··l.dh ldi-7l.dl
;rah,ah ;rel.al irbh.bh .Tbl.bl : rch.ch :rcl.cl irdh.dh :rdi.d!
; Theae ere the cfiaunl ce I lone routlnee. ; Perror« required part InlI le 1 eat lon lnltport:
ov dl.coabaae•dd dl.t
el.Obh
OU
au o
OUdec
di.] • I.I di.«I df al .di
:»el OU12. dir and rl·
: Interrupt enable rcflater
!enable Input characcr tote; Interrupt handling routines
; Routine to lncraaont th· burfor pointer In BXlnobplri
Inc bxcap bx.orrael obondJm IpOIO
ov bx.orraet cburr
IpOIO:
ret i
; Routine Io read a charaotor fro« the circular buffer (Including itrc (olcbi:
puah btClI
«ov bi.cbbeadcap bl.obtall
;aov al.lb«! Juat aa good
(ClOZOi goiOJO:
Je ov goiozu al.deiOlbil
call taobptr
ov obh»d.bi
ale
J«< ahort gcxOSO
etc
pop bi
• ti
ret
;ao««lhtBLg Iq buffer
: Routine to ator« charaotef* Into tha circular bufrer. used by c»«lat putchi
ClI
ov bx.obtallcall lnobptrcap bx.cbhead
;loie the character
;atora the now character
Jt PC020
ov bi.obtall
aov di:Olbil.al
ΌΙΟ: call lnobplr
aov cbtall.bl
all
ret
land I α the character lnpu
ico.IM push di
puah ca
pop
ti
puah al
pueh bi
pueh dk
ov di.ooab···
• dd di.S
In al ,di
teel al .1
Jl cl_02
BOV di.coabaae
In al .di
Ol_0l :
cell putch
C l_02:
BOV al.2Oh
out 20h.»1
pop di
pop bi
pop ax
pop da
lrel
,for line atalui rollsler
;Check data ready :no character there
;put character Into lh· buf fer ; reeel Inierrupt control I et*
; Routine write· th· oharacar to lh« aortal port iendch;
pueh dx
aov dx, coabe.ee
dx.O
cap Je add pueh
In and cap jnc
pop out
pop ret
lOQO di,5 ax
al.dx al.eOh al ,6Oh BC020
dx.ooabaae
ax
dx.al
dx
:ir no port then don't try ! ode* QontroI reflalor
,chock trtnealt hold «aptv ;«alt LUI
:aend the ohracler
; ThIi routine writ·· the null terminated aaaaage fro· (de:»l> to the ; «oriel port onIy. a end a:
pueb al
001:
ladet?
or a I .el
je ·Β09β
eel I senden
jap abort »bOOI
• 099:
pop at
ret
:Thia routine build« an Interrupt rcqueet ίrom the co·« otanncl•tolreq:
fr_OIO:
; aov ah,I
lnt 16b .act the nett character
cap al,doneval
Jl |r_l Italnus
cell tfolchx
JC (Γ 010
Veil Jl ti .4Oh tf r_010
«P jne •1.1Oh «r_020
teil al.SOh
jnl tr 020
Hostrem.asm
ov bi.afriit IIOfrafa
καν di.οί(··1 rajalO
Jap ihort ir_030 »r_OIO:
: cap al,Hh :Interrupt Il ra«.uaal T
J» «r_OlO ;k.ep look·« for fKa'it BOV bl.Offllt Ι1«(Γ·|·
ov dl.offaat γ·(·Ι· ir_OJO:
«v Inua.al jraaaabar intarrapt auabar
aad al,Offh-OcOo ;tak· off lh· tat tr9a alt· (f r_0*01
eall Ktclii iaacond I MdII I
Jo (r.040 !«alt for aait h/ta
ov ah.O
S Bov oaua.ak
»M Vi.ai ial hai AI valua (I.a. fesollon auakar)
»ov ah.lbil i(at ruiil.ra raqvilrad byt·
•hi ah.I ialraaAr (at JJI *T_O«Ot
add et »a. a I ;add to aim
ato«b ;put taglttr lato »!„«a (r_OI9i
ahl ah.I
Jao »r_OTO «r_0«0:
oall (atoh* lfatok aait eoaaa hyla
Jo fr_MO ivall for nail raf valaa
Jib ahorl irJOIO iput la raf »r_OTOi
Ino dl ;bi·· thla ooa thaa
cap ah.O
Jm «r_Oie i
«r_ilOO> jail valuaa aal up
: call fatohx !fat tha caua bria
Jo fr_IOO
t oap al.otUB
> Ja C-IiO ;i(oora cbackiua for no« 1
'r_IIO:
olo
rat fr_altalaui:
a to
rat
: roullna to aat up nlllliri and ptrfora lnlarrupt dolntlO:
bov al.offitl Γβ<·ΙΟ
call aatratf·
InI 1Oh
rat :
;Koulln· to aal up Γ·(·<·π aod partora lotarrupt I· dolalie:
ov al.offaat ratal·
oall a«lra(a
InI Hh
rat
Thla la tha aaln aotrr polot
: flrat attach tha coaaualoa.1 lana ohaanal lalarrup
atart:
aov a ι,Ο
»ov aa.al
aov ai.aa:loaalalbl
bov loooalntbl,ax
bov ai,··:IcoalBlol
bov toooalatc],al
ov ai.aa:tcoBlatb«2)
bov loooatatbo) ,ai
ov ai,aa.Icoalntc»2l
aov loooalnto»2l,ax
ClI
ov al.offaat ncoalnt
oov aa:lcoalntbl,ax
aov oa:(coalato],ax
aov ax,ca
bov aa:looalnlb»21 ,ax
bov aa:(aoulntc»2l,ax
atl
puab ca
pop aa ; tnltlallaa lhi* acraan
aov ax,03h
InI 1Oh ilnltlallaa acraoo 5end lh· InI I IaI I aat lon atrlay;
call lnltport
bov al.cffaat InTIa
ca) I aanda
rr 100:
call (otraq ;fctch ncit lnlarrup raiiuaat
; Jc ailt_prof
aov al.lnua
laat al,SOh ;la It Intl<b7
Jm rr_200 :r«·
; cap al.lOh
: Jne rr_200
call dolntlO
Jap ahorl rr_IO0 :oo reply to lplarrupl rr 200!
csll dolnll«
puab ai :Vaap uaor'a coa».*nd
puahf
xchg al,ah
calI aandch :aand »h
ichf al .ah
cal I aande'i ;and al
aov al,O :aol for zero
popr :|cl fl'ia
jo rr_2lO
Inc ai :>el lor non-xoro rr 210:
call aendch :>nd aand flaf brla
pop ai :-aa uier'a coaaand
cnp ax.doncval ;lo axll7
jne rr_IOO
ov ah, I
lnt Uh ;aay to fatchf
Ji exlll ;no aiii .proji
aov ah,O
lot Ha ailtl: Spaolal coaplatloa kav typad. laatora latarrupt and axilell
iclaar kar fro« kbd buffar
10 r ai .»X
«ov ««
JOV ftf .(ocoalftLbl
ov «a itooalatbl.AE
BOV B1 1(000«.Blal
BOV Ol Mooelnlol.ftx
BOV ! ,foooiiUl»*ai
BOV «1 ilco«Ull>*2l,fti
BOV Bl ,(ooo«lBte*2|
BOV «1 i(oo«lato*2l .t>x
ti
lot aoh
ruar«B and*
•Ad «airy
A-I
Table B
SOURCE CODE (ASSEMBLER) FOR REMOTE CONTROL AND DIAGNOSTICS SYSTEM.
by Midud Sunns, Itt».
: TbU is lbe taioactive setup module which tllows alteration of ihc CMOS : memory and varicv· letu to be performed. U Ii intended to be run in ROM : extensions and lbe assumption U thai the system wQl reboot oa completion,
oc equ lbh bs equ I
SOURCE CODE (ASSEMBLER) POR REMOTE CONTROL AND DIAGNOSTICS SYSTEM, by Michael Stevens. 1919.
: TtUj b the w-.cractivc setup nodule «Aich allows alteration of (be CMOS ; memory «nd various tests Io be performed. It U intended Io be run io ROM ',CMcasioasandlhctsumptioabihitibesysuawiUrcbootoou equ If equ IO
lntS equ jmp IhM ;for accurate liming deliys :label with value uro needed χι cod of prog Kf to push JIdOlO: nor di leading zeroes blinked. P
ini9 equ : this is byic 7 9h*4 jto user kbd tUowcd '.cilculuc piii bouodxry push mov IX
lnib equ rom_nif 44 ;IRQ< 55h.Ouh Λ0Μ BIOS EXTENSION PROGlO push div CX
Ulic equ sn/ 4S .[RQ] ;rome»t/200h .SIGNATURE ind LENGTH BYTE push ichg dx
inif equ Ofb'4 :IRQ7 push idd H
uiilO equ dxic_bylc lOh'4 ;vidini mov stosb CXJ
im 16 equ ι6α·4 Jcbdini mov mov «I."
ini2l equ scrvicc_nug 2th»4 "S/N" eld Ol ^buffer si ic
teiup segment "OOOOOOOO'.O ;uc saiil number returned iftcf rep jne siosb :ιο bluix fill
assume irurnsl db ds:daia.cs:sciup :CONNECT received e dec eld di
or* Ob 8 '.lupply moalh |ocs bcrc. byte 8 (byte * even pop U :blink the bu/tcf
prog_sian: ;cprom) SId :poim to Ixu chxnact
a.lf.lCConuct vouf PC dcilcr ία service"
rom.desc db cr.li.O di.dv :Γι11 bullcr bkciwvds
tixnsiu db 10h crJf.lf.Typc "R" for Remote Dixgoostics'.aJf.O cx.lO
sucooi: . Routine IO convtn AX to ascii decimal in 5-bytc buffer addressed by ES:DI. CX :mxkc 32 bit number ia DXAX
sun ; Value is right justified. ax.dx
uiodoc: il.'O· .dividend in AX rcnuindci in DX
db
db av.d«
IX.Il ;put byte imo buffc/
db JIdOK :t-ci retiduc
:ilroofc to do
db
db
pop nmOtO: mov <JX ;iniommlsii -.with ZR-I mov al.loh
pop iodsb CX man of buffer ;cven if nothing entered call gctcmos
pop sub ax -.digits used
pop xcbg di :io coav io bex number
ret mul
DcwTOce: add
push loop di -.result to far
call cmp readme !highest byte
pop ret ti ; to bin
cmp exj ;old res in ax, new digit in di
jx ocwmcm_rct ;old · 10
oeg CX ;addinecw
add CXj :come out with result ia ax
mov bl.10 ;good return. ZR « O
χ or ax ax
: Routine to display and if necessary correct memory as stored in CMOS
dxju fixmcra:
fmOIO:
al.tr
tx4x
bl
ax.dx
nmOlO
bl.O
-9-
mov ih.il
mov al,ISb
call getcmos :ietch buc memory into AX
mov di/}ffsclramlsii
call axtodec :sct up dispby
mov sixiiTsct ouncul
call writcra .display dcclircd base meer 3ry
cal! writcra :iod now inc figure
mov al,ISh
call getcmos
mov ah,al
mov al.Hh
fctcmos :fctd> extended mctcory into AX
dijofTset mra2siz
axtodoc .set up display
sijofTsci mmcss2
writcm '.display occlarcd extended memory
wrilcro ;xnd tbc figure
callmovcallmovcallcall
: now ask if to change fmOIS:
mov siAffsci mroesslcall wrilcmpush si
mov exj di Dcwmcm
ji i'mOI6
: reset values in CMOS to lbcne actually entered
:ends ai sun of digit area
pop call
(mO16:
movcallmovmovcallroovcall1.Td
mov call mov
movcallpushmovpopcall
dl.lih
pulcmos
al ^h
dl.lbh
puicmos
xl.Och
gacmos
al.Ocfh
dl.Och
puicmos
:hisc memory low byte
:bisc memory high byte ;auuxnc moEOry now correct
:cIcj/ the diugrccme« bit ;J»· Klup changed
si.off set mmcss2
v.Tiicm
Ii
exj
di
nevk-mem
fmO90
ends at sun of digit area
mov αι,cn
call (.UUi..-,.
mov «I Jh
mov dl.tSa
call pulcmo*
mov i).Och
call jetcroos
tod al.0cln
mov dljOeh
call putcrooi
mov OTjlajJOh
Itod fmOlO
σον al.wordcic
;cxicodcd mesiocy high byte fiptwi^ memory now corroci
- ;clear the disagreement bü •jham tctup changed ;show and ksk ag aü>«etbO4O:
OUljmp
faO9Ch
ία
cropjnibemovmovout
dx.al thonsctb040
al.bl
setb.err
dx
al.Obh
UjJ
dijJ
;xs above ;ioiiialisc the pon
:i/ not urne !tctouCLdirandru
ICt
ictbOJO:
; Simple routine lo will ι while (pri^mkxul to value in CL). wiiubiu
mov countX) wabOlO:
cmp cJxouni
j*e wabOIO ;wih till count > elret
; These routines communicaic with ibe serial port, biuddiv dw l047.76SJM.192.9o.4J .24.12.6.3.2 maxbaud eo,u (S-bauddivV2 mum rale* above
; SPADDS MOVED TO DATA AREA SO THAT IT CAN BE CONVERTED
INTO A MSG TO REFORT
; PORTS INSTALLED
; convert addresses (ο a msg to report com poru found: This KU tbc baud rate of pon specified in DX according Io the value in AL.
: O «110.1 «ISO. 2 = 300.3-600.4 = 1200.5 = 2400.6 »4800.7 «9600.
: 8 « 19200.9 - 3 WOO. 10 - 56000
: coicr «ith di the pon Io set up
sclbaud:
in crap
tub mov mov out
aLdi
al.bl
«etb.err
<U.3
«J.I
Ν 4)
KIbOoO:
jmp abort tctbO60
IO
cmpyu accinpoppopeicrei
al.bl selb_err dx al Ax bx
:UOotumc
ümorupt enable rcgiser
:caablc input character interrupt
:ifno(sjme
-.rctiorc lo base rcgiucr address
:clcar anythio( ia the buffer
Ktb_err:
push scibOIO: in sclbO:0: in selbO30: in «X :kccp baud ourn in bl :crnp :rcps(cr 0 (divisor Is bits)
push cmp cmp cmp bx :conirol register address :if not same ;kccp for cmp
cmp JIU jiu Jn1 al.maxbaud ;bl=16-bit
mov xchg inc '.keep for cmp .word search
mov rol inc inc :set lhe divisor latch address bit ax.cs:biuddiv[bx] :this does use es:, but j
add mov mov dx.3
mov sub OUI seib_crr -.out of range db OOh.OOh eic bljl :cmp
mov mov jmp bljl cnu $-pw_code dxjl :if not ium
OUl OUl dx.3 0 shon scibO2O
jmp jmp al.&Oh :rcgisicr 1 (divisor ms bill)
pv._codc ahjl al.dx al.dx :kecp for cmp
p»_code_len dxjl ah Jl iJ.bl
db shon scibOIO seib_ea sclb_eiT
bh.O lh .al
bl.l dx
bl.il .cmp
di.al :if not same
shon scibO3O
.conirol rebsicr add/cM
al.dt
al.bl
seib.cn
d>
dx
mov call pop popStCret
fj.olTset ^on_rcg_en
wriicrn :write to both
bx
ax
: Pul the base address of the lia aviilablc serial pon inu) DX.
; Will be zero if no serial poru found, keeps a dec count of ports found; (moocmpit) and complcnd pouts Io one after the Ua good pon foundgeibuc:
push ix
gbOOIO:
push bx :$ possible addresses to chock dx :sjvc original value
«or bx.bi :for OO good com pon al.dx :Γιηι test paucm
mov cx.t ah j)
mov bp.I :ai the cod already ? al .55h
mov dxjpadds(bx) :no poru found ? dxjl
or dx.dx .1.0
gb9999
inc dx :feich id register
inc dx :check expected zero bits
in al.dx :cnd lest
ICSl al.Oreh xm is really available by lcsliof the line control register
jnc gb9999 inc
in
mov
rnov
OUl
mov
jmp shoncbOOll
cust_code db OOb.OOb .eic :cunomcr's own id pn»
gbOOIl:
in ti.Λα :if no good
cmp al.55h .vxxxxi tesi rulicra
jnc EDV9V9
mov al.Oub
out dxjJ
mov fbrci: pop 1.0 ;ori| setup inc bx
jmp (MO 12: pop short »bOOI2 cmp bi.offsci c bend
in rtl alAt jne ibpOIO
cmp al.Oaah mov bxAffscl cbuff
joe (bv999 ucsct to bast address
mov al Jh vcadiocluf
out dxjd -.this pon OK
dec dx :uy oui pon
dec <J« •fxxa pon to connec*
dec il
in ύΑχ
mov bp.bx
tdd bxj ;oo good com port found
inc modem pci •.Im food pon found
loop (bOOIO :iruodx
»MW: (Ot ixM ;wbcrc Io stop
cmp bp..| ialrcady has offset spadds loaded
Ji fbrct
mov bx.bp
mov dx.spadds(bx|
idd bU
add comptend,bx
: Rouiinc io increment ibc buffer pointer in BX
bx iocbptt:
U
; Interrupt hwdlini routines
ibpOIO:
; Routine Io read a character from the circular buffer. push bx :somethin( in buffer ihon fcO3O inc push bx
geich: cmp bi.offsci pbend
cli jnc cli ippOIÜ
fcOOS: mov bx^bhcid mov mov bx.off κι pbufT
cmp bx.cbiail b>
rci
j< fcO2O : Kouunc Io κ jd a character from Ihc extra pon circular buffer.
C mov al.dsfi(bx| :gctchar ; IrKrcmcni extra pon circular buffer pointer. feipch:
call incbpu incpptr: bi
mov cbhcad.bx fpcOOS
dc
jmp bi.pbhcjd
sa ippOIO:
fcO2O:
pop
gcOJO: sli
ret
ipcOIO:
CpcO2O: 0*030:
cmp jeDOVcall mov
ck jmp
sic
popsuret
n>c020
lncpptr pbheaiUn
al.lbx) just ti jood?
.somrthlnt In buffer
short fpcO3O
;ootbJnf in buffer bx
: Routine to store chancier into Ibc circular buffer, used by ints OBh and OCb puicb:
cti mov bxxbtailcall incbptr
cmp bxjcbhcad ;lf buffer full
je ptc020 ;k»c the character cli bt pbujl '.ifbuffafull mov counl.O ;if oo pcm tbco doo't try
mov bxxblail mov incpplr .lose ibc chancier push d>
mov ds.O|bx|jJ Wxc the pew character call bi^ohcad mov dx.buc«dd '.roodcni control register
cmp suppscni.O -.echo required? cmp ppcO2O ;storc Ibc new character or di.dx
jox ptcOIO :cio jc bx.pbuil je scO90
plcOIO: call scTDch mov diOtbxJjJ push ai
call incbptr mov scmcb add dxj :cbcrjt iransmit bold empty
ptcO2O: mov cbtiil.bx call incpptr :ifok
C call pbuil.bx in al.dx :iimcout?
sti mov and al.60h ;wiii till so
ret : Routine writes the character Io the serial pon. cmp al .6Oh .err :rct with error
: Routine IO store chancier into ihc cxtn pcm circular bu/Tcr. sti scndch: j' SCO»
putpch: rcl cmp coum.6
jbc sc020
jmp short scndch_ :Kod inc character.
mov di.bivcjdd
pop at
OUl dt.al
scO2O:
pop dt
ck
rcl
ppc020:
scOM:
scO90:
pop
S-3
popncret
<U
; Routine wriicj Uk character io tbe cxlr» Kritl or pinllcl pon. seadpch:
push dx
mov dx,ouuadd
or dxjdx
je spOW
push ax
Mid dx.5
mov Ci1IOO
Uf no pon ihcn uy pinllcl aixxicm control rcgiaer
pop H •.recover next oibMe la al
oll ccovhxluc icoovcn
pop ax ;orifiatial
mov ah.0
mov el.« ahJfl factor used
ihl axjcl .split Ihc nibbles, fim in lh
ihr aW ;sccood nibble (o al
push U ;kccp Kcood nibble to ah"
mov Il Jh
cill coavhx2uc ;convcn
pop U recover next nibble m al
ull coovhiT-iv: -.coavcn
Rl
spO2O:
!check transmit bold empty
spO3O:
push c<
in tlAx
«ad tl.60h
crop a),60b
pop ex
jt ipOJO
push ex
mov cl.l
call waiubii
pop ex
loop spO2O
pop ix
sie
JTnp short spO99 :with CY sei
: Routioc teodi tnd displays ihc chancier ia ti »τι loch:
..•Jl
scodch
scmcb:
;wiii till so ipoplhccbar
mov pop oui
di.ouiudd
ai
dial
spO90:
spO99:
mov dx.ou(padd
or dx.dx
je spO99
out dxjJ eic
pop d» rci
:send ibe character.
:NC
; convcns hex char in al to ascii ready for sending to pon and locaj screen convhx2asc:
cmp al.9jbe schxO2Oand add
schxOIO:
add call rcl
al.Odfh al.-A"T)"-IO
al/TT wriicch
:capitalise
:scmi ascii con« π
:convcn to ascii :lo port and screes
: routine ycnii ax to modem and screen in ~ nibbles aud followed by a " " writeehh»_Kp:
call writcchhi ;siop al si>bp
mov aJ." **call whicchfCI
: routine Knd> ax hex Io pon and writes ixii nibbles to sciccn
push bx ;ity far aJ.olh ;jcan code for DEL? xor pressed? JlU XXJX -.CTRL ♦ ALT
mov bx.7h ;to the screen ax ax mov nini9_boolup CSJJl
mov ah.M es aJ.IOh mov jmp ax.cvl417h)
tnl I Oh al.oOtt ilhjj and niw9_booiup ιλ .OfOCKh
pop bi : kbd int handling routine, kills local kbd Input 11.83 ax keyboard control pon cmp nini9 endp axXCOch :hanfup aod rc-boot'
ret oini9 proc nini9_del 6IhJj
push al.20h nini9_done
push : Here Io ifnorc keyboard. 20b Jj proc near
in in CS su_999
cmp push ax cndp
μ or
nini9_dooe: out :rcset inlerrupl controlk
pop
out
mov
out : DEL key pressed
pop : This is where wc put ine code to look for special interrupt
pop features.
irci
nini9_del:
wrilcchhx: H '.keep al
puth aljJl :scnd hich bytc in ah fir*!
mov cl.4 :shifi fact« used
mov ah.O
mov uxl '.split Ihc nibbles, fini in ih
NhI alxl :sercnd nibble to al
SV >K :kccp second nibble ir. al
puih ;fira nii>Mc
r.iov convhi2xsc !convert and send
cill
; specifics which registers are required for which functions
; Rcpstcn arc transmiitcd in order ah,al bb,bl.ch^l,dh.dl and ooly
: if corrcspoivding bit is set for the roq sled functionilOfrejs label byte
: AABBCCDD
: HUfLIILIIL function
11 CXXXXOb :0
ICXX)I KOb :l
lOKKXlllb :2
IOI(XXXX>b :3
l(XXXi("Jb :«
HCXXXXXJb
db db db db db db db
I)IUI 11 Ib
:6
db db db db db db db db db db db db db
1110111 Ib
10IUXX)Ob 111 UlOOb UlOIIOOb lOllOOOOb 11001111b 100011 lib HOlOOOOb 10000000b 10000000b 10000000b 10000000b UlOIIIIb
il6(rcp label byte
db 10000000b
db 10000000b
db 10000000b
:b ;c
;<1
;c
;f
MO
.11
:0 ;1 ;2
ilO.OIO ilO.O
Uli mov mov mov mov mov add mov or shl imp•j.lodsb
;ih goes !mood with inc type 40b bit
SlVCTCgS
Si1OfTsCt rcplO+1
b*/}ffs?iilOfrcp:
aljh ;typcinal
ah.O :16-bii type
CSUm1Ih ;dcar csum
:get address of register transfer byte
;sei u type 10b Im ;ib being tent now
cill add
ί10.030:
; Routine to se« up register* ready to pcrfonn the iotemipt ict/ep:
raov mov racrv mov mov mov mov mov rci
ahjsi) iU$UI];r»l bh4il+2] bl4«+3|;rbl
inh
:rbh ;rch
•jao flip IiTcCUd bercsbljeiaccrapjoemovUli
il.40b ah.l i10.020
scndch csuni.il
ah.l
ilO.OIO
si
ah.O
i!0_030
al .c sum
sendch
Cl4u+j|;rcl oUsi+7|;rdl
: Roitioe Io «vc registers for communication purposesuvacp:
request his been seat to remote. Now perform local i10.040:
roov siAffsctreplO
cill selrcp
p-jshf
call dwordpl/ds:(olcUiillO)
pop di
mov |di)jhmov |di+l).al;ral,ilmov
raov
mov
mov
mov
mov
ret
:no flags changed bor
|di+2|.th
|di»4|ih |di*5|.cl;rcl.cl
[di«6|.dh
irbh.bh
.rdh.dh ;rdl.dlpopPO?
SI
ds
1200b
; Same Tor imemip< 16 bui doa'i do local in this cajc
im 10.00:
push Ii
push da
push es
ai.ai
;noi installed yet
;and uic ure of bloody DOS here loo
mov
cmp M.origini2l_seg μ int'.O.OOI
cli
mov u.offscl nc»intl6 mov es:(iml6).iA mov u.ds :cct the dau se;
mov ο:|ίηιΙ6-»2].ΐΛ .so wc set up for our ioi 16 routine
: ctwtc our ints arc able Io receive tbc reply io iotl6 requests in aUih
:stop DOS uiicrfcrinc with our im sysicro
aJ.0(Th-l8h
and
out 2 lh Jl
mov di.bucadd
inc dt
mov al. I
oui di.il imlO.OOl:
pop es
pop da
pop n
SIi
eld
nu$h St
push di
mov di.ofTsctrcgslO
:raodcm port address
-.assume port im cnaMc bii has been reset loo :sct üit inicmipt bit!!!!
mi 16.C0 proc Tar ;ah will go is type 16 int 0<
sti
eld
push si
push di ;clur csum
mov di.ofTjci rcpl6 .gel address of register transfer byte
call savacjs
iml6_0l:
mov si-oflsctrcgilo+l :iypc 16b bit
mov b>.oiTsct il6frcp :ΛΗ goinj now
mov ji .ah :scodüurypc 16
mov ah.O
; mov csumjh
add buji
mov ah.cs:|ba)
: mov aJ.I6h
or al.OcOh
ihl ah.l :get out tbc top bit
jmp short i 16.020 :iodsend ah
Ü6.0I0:
lodsb :no more to seod now
116.020:
call
add c sum jS
16 030:
shl ah.l
jc •16.010
inc M
cmp in.O
jnc 116.030
call scndcb -just the checksum '
request has been .«ni lo remote. Now return wiih given values
; mov <UJIpt_eddiJ ;pon address Io ux
; ice IfBS has'caused pin 14 lo Ul
«dd dxj.
in tlAi
MX al.04a . ;PS still low?
ji niiufO3O;ycs. must be BC
jmp »bon ninif_coal
oini'jJO: ;al has rc| biu
or «1,02b :pin 14 UlC/ Rcq low
out <Ujl
tub dJtjt
in al.d* ;read the diu pins
: system (BS) use« byte 02b *s rwiKb. one 02h byte indicates sun of diu
crap iljulk
pi nimrtMO
caov aJ.V :»cbg 7" for 02h byie
ninflTMO:
cill puipcb
;storc in special circular butter aod u> son
; buffer contains: 1. 7birMxJediu~.cr.li
: «2. T. ISh «no barcode dan
add C pep dij :back to reg f ;clca/ ihc WQ line lasich.O '.remember stan rocsiigc iddrcs :iJI mcisifc tested, iod NC
in pop '.fetch nc χ ι in pul ch*nc\ct
and pop al.0fDi-02h ;pin 14 User Req High lasicb.O bytc ptr cs:|si).O :somc checks arc in es: sepncnl ;cnd of buffc/
out pop dial uaiunsgl »msOVO :is it c* pcc ι cd ?
nintf.coni: irci pclch :yc»
mov ninif endp al.20h bx wms090 :«t up »pun
oui 2WuI bx.si al.cs:|si| ;and keep looting
pop es wms020 ;ιο ncxi buc
pop ds si.bi *.1ooV ll nc il
pop di shon wrasOlO
pop si ;rc-uuULic$ intcmipt miblcd si
shon wmsOlO
du : Wail till specified message is seen on the line.
ο uiiunsg: dx
bi mov
II wiiimsf I:
cmp
wiil_no_cr:
push
mov
umsOlO:
cmp
cill
je
cmp
JC
ΠΙΟν
jmp
inc
jmp
wmsOVO:
: (X1P
|Mp ret
call ouuncs ImOOS: mov imOlO: mov C im020: ret cUi ;io local scrocn cnly Aecp trying tbe buffer wmOOS: SIC wmOlO: mov lastch.0 ;kcep buffa sun :soc if "CONNECT· reed :sce if "NO CARRIER- reed dijoffsci asebiud Joch baud me and cA
mov call call waiiabil ;wait I foe ;14 iocs wail jmp mov ».80
call wiiubil mov jnc call listch.O ;found msg rudm
mov si/jffset plussa call crop si joffset ioi ims I 'jtart mit toq again waiunodl ill msg into buffer :rcstorc buffa sun
call scodn mov jbe scsdm bixbhcad Sl .OffSit COtUTKSS .not found cither msg
; allow lime Io settle mov ciA bi WliUIUg sifltlset oocarricr
mov call waJubil -,wall I tec : This routine waits for the modem to answer tbc pbooc cl.4 b> wiiunsg !found this msg
call jmp COUDl1O »aiunod: wiiubil ;i)low; wmOIO bi ;rct with CY set
mov cbbcjAbi wroOOS
stafflet obness !inhering waiunodl: bi cbbeid.bi
waitmsf cmp shon waiunodl
imO2O jt
mov
μ-usb shon wm_020
mov
'jcsct osg start call
mov
cill
COUOU20-J3 a timeout for modem response pop
UuOIO joe
cl.254 mov
wiilabit push
sbnniniimod mov
call
pop
jnc
mov
jtrp
wmOIS:
: Send a few new lines, wait a bit and then clear any junk characters on
: line before continuing.
mov six>ffsci clrmcsi
cill scndm :discird iny chiraclcs rud
mov cl.4 ;ind reset CY flig
cill wiiubtt
wm_010:
cill getch
wra_OI0
eic
wm_020:
rct
: This idulinc iniliiliscs tbe modem iniuiioJ:
mov si.offsct concompn
;uy which pein assumed for modem: This routine converts BCD in al into ascii in ix (high in al. Ιο» in ah). bcd2i.vc:
push ex '
-€
I16.040:
ctll .
icmov
tl6_O4l:
cilljeαηρ
il6_0U:
push
tcich 116.040
fetch
06.0*1
axjdoocval
boocup
tx
calljccropmovcallpop
iml6_rccpop pop pop irl
bootup:
pushxormovmovmovmovmovmovmovmovmovpopjmp
il6
al.O
tijofTselrctslo
sctrc(t
ax
di
(i
df
eodp
ds axji
ax.oMinilO
ci:in(10jx
ax.oldir.cIO»?
u:in<iO»2ju
a>.oldmil6
:ih value
:put these bade m ah
:al value
Jceep new value
;<et icro value and these
'.set zero flat
-.«ruh (lip u »et
call ioic.OO: Ui puipch isuxe in special druil ir buJTcr ;for Iioc sucus register
jmp push short uubOZ ;io finish fananipt
inib.coai: push '.chock dau ready
pop push dx ;do character there
pop mov bx
pop add u
push! in
call tesi dword pu ds^oldinib)
pop jt ds
l/ti mov
ία
cmp
jru
bx
dx
dxjMScadd
dx.5
al At
(J.I
uuc.OJ
dxjMscadd
al Ax
alxr
intcOl
-45-
inicOla:
mov lauchM :ihoHf · er received
intcOl:
call
nicO2:
putch
;pu character into the butter
:rcplicc vectors Ukcn so trol .i.vnjup wotks COCTOÜ)· before :lhc bootup command
es
su
: Huidk the chiricicr input interrupt intb.OO:
stipush axpush bxpush d&mov di.buetdd
dx3
al.di
al.I
intb.03
dxAucadd
imbOla:
imbOI:
addintestj«movincmpjni
mov call
Jot line UJlui rcciucr
:chcck um ready :no chuacicr ibctc
inttO2:
alxi inlbOI
lasten al '.show ι er received
puich
al.20h
'.put chancvu into the buffer .reset interrupt control!«
di bi
2X
ds
movoutpoppoppoppopiicl
inlb.O.V . Chock ft« character from tested pon if xuipxd niov di.insadd
oi dx.di ichcck it pon mipicd
jc inlb_conl :if not doni boihcr
add d>,5
in al.dx
IcM al.l
\i inlbconl .nochaiihcr:
raov intc_03: al.20h ',reset interrupt controller C call intf.fXJ: dx.insadd ;checx if pon usigDcd
oi'l 20bjü pop nintf proc dx.dx :if ootdoo't bother
pop dx ircl push intc_cont
pop bx push dx.5
pop ax pu^h il.dt
pop ds pusb ü.\ .no char there
ircl push intc.cont
, Check for chirscw from tested port if usigncd. push di.inudd .get char «nd
mov push al.dx ;suxc in spociil cüxidir buiTa
or push puipch -.to finish uncmipt
je push short intcO2
add push
in pop dx
ICU pop bi
j* IX
mov
in dword ptr ds:(oldintc) .let bios do it
call ds
jmp
inic_conc.
pop fir
pop IK
pop bi
pushl* CX
dx
si
di
ds
es
CS
es
ds
CS
di.iiividd
Tabelle
οίον cx.4
mov lh jl
TOf ti «I
•nd ax.OfOfh
*dd tx.TX)"
pop CX
etc
; This routine converts rf».» Io dec im«] «ad outputs the ueii vilue
ouidcc:
divsun:
mov cxJ7IOh
CAlI divsun
mov ex JeIo
cill divsun
mov c>.64b
cill divsun
roov cx.10
cill divsun
nor OjCX
tdd ilJOh
«II wriicch
fet
div Cl
idd ll.30h
cill wriiecb
xchg dxjx
>or dx.dx
iell_sn: tsr.OIO:
mov si.offset rocn.sv :msg is in es: seg
mov isnO:O: rc ι chxpw: il.cs:(si|:retch nextchir .end of i/o! ι
or cpwOlO: Il Jl :ycs
isnO2O :oui to modem only
cill scndch .point 10 ocil byte
inc si
jmp »hon isnOIO
!return with mull of check
: Find oui if PCC insulted. If so then send il's ID out Io seriil port.
icllpcg.
push es
mov n .OcOOOh :stin segment for ROM EXT. cuds
mov bp.offsci cirdaddn :cifds addrs kep« here, mu I
mov sixiffsct nopcg :lcad »jib offset nopcg
push si :md keep for lucr cmp
mov tpcgO9i: cill di.Odh !cheek all pouible card addn ;rcnorc ncxi seg
mov je ti ,offset pcghere !keep looking
mov cmp CXj)C ghiii 'scKouraddr
rep j' cmpsb
cmp lpegO2 ,gel origini] oopcgmtg offset *,tus it been found ind seal?
pCgWJ. add j* axJOh :ycs
cmp cmp ax.0fO00h !iubnilute to show peg found '.keep sun msg offset
Jb tpcgOI !keep oexi teg addr :uy do peg and uk if io coounue
jmp cmp short lpe gO9
pegv*. pop jru ti ',sunofpcgid
mov IpCgWb: lijoffs«! pcgme* ;si unillercd
push StC ti ;iwiii ioi
push jmp ax :ιΠ>
ull ipcgOIO: iendm
mov aI«:|O0hl
cdi teadch
mov ilxs:(9lb)
call sendcb
mov il.cs:|92b)
ull sendcb :pul msg igain and wiil reply
mov il.a:193h]
ull iendcb !else Dot to cootinuc
mov tx.<s:[<Hb)
mov dx.ei:(96h]
ull ouidcc
mov lijottia lfcrlf si.offsct nocardsinst :k»d no cirds msg
call wrilcm bp/)ffset cardiddrs :ci/dl fouixf.'
pop ax
jmp shon tpcgOI
ipc guy. pop si
pop CS
cmp sijoiTsei nopcg
jru tpcgOI O
tpcgvTC. push si
ull writcm
pop si
getch
ipcgO9a
il.-y"
ipcgOIO
ii.-r·
tpcgOIO
al,"n"
ipcgO9b
al."N-
ipcgO9c
shontpcg030
: now send cird addresses fcnoid
mov
cmp
mov
lor
mov
cmpjrumovidd
es.n bx.bi bi.cs:|O|
ipcgO03 !don'i lcsi for peg thai
ds |tip].ix ;put in the scpncni iddrcu
bp.. .10 next cird >ddrcu
: do noi idd lcriph byic. we should report ill cuds found, nu.vrx there is : in >ddrcs> clnih? this could find ι non-cxisuni ci/d if the pin·; his ι : 55 uh im j srctoc bound.vy. this ein be ui.cn into xxouni »hen uuJysing :ihcicsuliv
c IpCgOU:
lpcgO2O:
ipcgO25:
ipcgO2O :no
si.offscl cirdmsg ;cuds found oug
cill wrilcm !send ihe msg .stop it B=bp
mov si .offset cirdaddrs' !followed by addn :=ZR
cmp si.bp
J' ipcgO30 !keep ρσ so fir
lod.sw
push si !restore pu
cill •*riicchhx_scp !IO next cird tadt
pop si
imp shon ipcgO23
tpcgO3O:
wriiochhk_»:p converts hex in lx 10 iscii chirs iod sends 10 pod 2nd scm followed by 1 " "
Takelte ff-
Kllpapu: ;scnd parallel port addn
push ds
xor ax.ax
mov diAX
mov 'ii.40th ;para port seg:ofCset
mov ca,4 ;max4?
mov iijodta lpadds :to fin«"" b suing
tppO2O:
lodsw ;to inc si
or axAX
jz Ipp020
itosw
loop tppOlO xoeadbertlfalMfound
pop ds
push di ;ead marker
mov (ijofTsct paraptinsg assume at least I pon found
call wriicm
mov si .offset lpadds
pop bp ;«op al ti«bp
ippO)O:
cmp al.O crap binhour.23
ret je vaJOIO
; This routine validates the lime cmp binminJ9
ν a] lime: vaWlO
dop al Jl
ICt
;NZifbad
Uf(OOd
; This routine reads a message (max CX Chan) into cxdi. and tenni with O. rcadm:
push di
mov rlxjcx rmOIO-.
call getch
cmp tppWO: rci si.bp
Ji lcllserpts: lppCMO
lodsw mov
call call wriiechhx.scp :writc ax as doc M pon aod κ
jmp mov shonipp030
mov UOIO*
cmp
jt :scod serial pon addn
lodsw siAfTsei coroptrasg ;scud header msg
writcm
si^offset spadds -.addn odd bcrc
bpxomptcnd :last pon found bcrc
bp.si :rcached end?
tsQJO :ycs
:;ci next pon
isOlO:
call jmp
»riicchhx.scp :writc ax as doc Io port aod scm and' sbonuOIO
: This rou:<nc converts 2 axii bytes in ax (high in iJ, low io ah) to binary : in al non uro result if cnor. '
a seibin:
sub si/xr :oot ascii nuroeric
cmp al .9
ja a2bO99
xc hg ahjj
sub ii:xr :not ascii ourocric
cmp al.9
a2M)99
mov CXJX
mov al.IO
mul Ch ;siiicioifoi.
add al .el
cmp al .al
ret
a2bO99:
; This routine validnes the dale valdiie:
cmp b.ndi).31 :ova 31
IS ViIOIO
cmp binmon.12 ;ovcr 12
Jf mIOIO
cmp binmon.O
J' >jIO IO
cmp binycar.99 :ovcr 99
)S vjIOIO .ZA if good
cmp
ret
je mO2O: siosb rmO99: mov rmOIO :ifbuflcrf\ai push rmcOIO: call rmcO20: call rracO99: mov di :if buna full
cmp cmp stosb al.bs !ifabadkipacc mov jc siosb iiosb dixx ;if a hark^yr
Joe je pop rm020 cmp cmp pop
crap loop rcl ex 4x :if already al sun of Input jnc je ICl getch .if already at stan of input
je do.bspce: rmOIO :tbco do oothing cmp loop rmcOIO :thco do nothing ,
Inc call CX je mov al.bs
C doc mov di call CiIl rmcOIO
jmp call short rroOIO inc cx.dx
raov dec rmcOIO
call jmp do_bspce
rci al <r Ct :<xno back to bosL iotb and c echo locally
rniOW di
rmOIO si)on rmcOIO
al.O scndcb
di al .er
rmcO99
rmcOIO
scndch .echo the backspace il xx
al."" :blank out LSc previous character wrilech
wriiceh :io both
al.bs :ana rcpoiitioa over il il.O
wriiccb
di
; This routine reads a message (mti CX chars) into cs:di echoing as it docs so
readme:
mIOIO.
i This routine writes null leno mig Io tcrcca only
ouunes: lodsb C ret ll.ll todib WTD099: ret •W nnOOI: lodsb smO99: pop cydO2O: mov si chk_bii7_l
or ouuxi: OUUTt or WB1O99 or rci out 7OhJu
it si je wriicch ;scnd to boa tod our screen chk_bil7_I: nop
push scrach call short wmOOI call push nop «Ijl
ctll si jmp nop smO99
pop thonoutmcs jmp nop scndch
jmp ; This routine writes the null laminated message from (di:o) u tbc seriil in smO99
• DOCi only, sendm: test short stdOOI
push jnz »1.7 lh
; This routine writes tbc null lcnniaMod message from (dii) to »crul pon * lfld tlv iffrvn pop si
wriiem: ret
wroOOI:
U
il.lO
7Oh jd
»1.7 Ih
«l.SOh
cydO20 ;»iii iill CMOS ready bit low
U
: This routine fetches the croos register specified by tJ tad puts the result
: into *1.
pcicmoj:
ctll
oul
nop
nop
nop
nop
nop
nop
in
re I
out 70bjü ;cmos oum to write
nop
nop
DOp
nop
xchg •141
out 7lhjd ;out the data byte
crap dljeh
ji« pctnO9O ;if 100 Ur(C
crop dl.lOb
Jb pan 090 ;or loo small tbco doa't cluafe
uil Tucs ',otberwijc et up Dew value
ραη090:
'.Calculate CMOS checksum in AX calces:
ccsOIO:
pushxor nor
pushcalladdpopincempJbmovpopret
bi.bx
getcmos
ax
al
al .2cb ccsOIO ax.bx bx
ifinibylcforcbor. ;fcicb byte value
•.point to next CMOS byte ;all summed yet :if not do next byte '.ready for return
; Store checksum given in AX into CMOS putcs:
pushichjmovcallmovxch;callmovmovcallPOP ret
dUeh
puicmos
dUfh
al jh
puicmos
al.O
dl.Och
puicmos
IX
;siorc high byte Tint !checksum CMOS addro\
:scccod byte of checksum in CMOS
:ioclev ill cm* bits
:in cmos error byte
:store the zero for rom bioi chock
: Calculate and set up checksum fixes:
push axcall calcescall pu'cspop ax
; This rouu'ne puts Ihc value in al imo the cmos rcpMcr specified by dl.
: If CMOS byic number in appropriiic ruirc thca upduc checksum.
puicmos:
: first check thai rcf 10. bit 7 is zero (no update in progress)call chk_bil7_l
iclic al.dl
; Subroutine coovcrts λ! to bc/1 and outputs to the memory byte in dJ ah.0 mov d.9
ouusbcd: cl.IO mov di.offa:! inday
mov Cl cill [»dme
mov cl.J cmp CI.9
div ah .cl je pdÜV9 ;if nothing reid
mov a».cl : bed vtlue now in «J mov u.word pt/ indiy
rol putcmos
rol
call : This rouu'ne rc* 3 ihc due and sets up ihc croos chip
ret jcldnc:
CiOl uc2bio ;lf bvalid doo'l change mythuig ;lf bvalid doo'l change tnythinf ;if invalid doa't change anything mov al,09h axgUiCT 9 holds (be year al.Wh ircgiitcMboldsihcbour
Jne (dO99 call (CtCSMM (aera»
mov bindiy.il «,word pu inmoa ix.word pa lnycar !validate everything. KU cmosO if faulty call ^-/Γ?.y- boflnc
mov uc2bU uc2bia :if bvalid doo'l dung« anything mov word ptr UCYCK1U word per iicbour JJt
CiU (dO99 (dO99 mov sivoffjct daicbf il.02h 'register 2 holds UK mini
toe btnmotMl buycir.il call wrilcm gacmos
mov valdate rcl bcd2i*c
mov (dO99 word pu ascmin.li
CJlI ; This routine writes out (be currettl lime aJ.OOb. ucgisierO holds uVseca
jne il.Mnday jhowiimc: gctanos
mov dU mov bcd2isc
CJlI ouutbcd call word ptr nocci.ix
joe ahbinmoo call si äfftet (imcbf
dl.l mov
mov ouusbcd »bow x(up changed mov writer-.
mov •!.btnycir call
CJlI dl.9 jo NZ call
mov ouusbcd mov
mov err_flag,80b mov
cili •1.1 call
mov sl.O call
mov mov
call mov
mov
mov CiU
cmp rcl
(dO99:
; This routine reads (be lime aod scu up (be cmos chip (ciiimc:mov CX.6
ro ov aiJDiiset innour
call readme
cmp CX.6
je gtO99 :if nothing read
mov ix.word ptr inbour
call asc2bin
jne giO99 :if invalid doo'l change anything
mov binhourjj
mov ju.wofd pir inmin
call asc2bin
jnc gtO99 :if invalid doo'l change anything
mov birtmin.al
call vallime
jnc giO99 :if invalid doo'l change anything
mov al.biohour
mov dl.4
call ouusbcd
mov al.binmin
mov dlj
call CHiiasbcd
mov il.O
mov dl.O
call outasbcd
mov cn_flif .SOh '.show setup changed
mov al.l
cmp al.0
; This routine displays (be diskette iype for diskette number in al sbowdskt:
push bx »wc working registers
push JJi
iditiOO:
add al. 1 !diskette number in ascu
mov dsklnuiE,aJ '.put into metsage
mov lijofTKt ascdskt
call wrilcm !display first pan of message
mov al.lOh
call gcicmos
pop bx ',fetch parameter
push bx ;indrcsavc
cmp bl.O ;if Hrst diskcuc
jnc sdjktOl
rot al.l
rol al.l
rol al.l
rol al.l !•16
aod al.Ofh !mask lhis diskette iype
mov buoUxt dsktryp
mov ab.O
add bxAX
add bxju
rnov lh .al :t>p< in ab ready for return
mov si.|bx) '.fet correct iscii type address
call wrilcm
pop bx ;fctcb parameter
mov al.bl
pop bx !restore original value
gtO99:
: This routine writes out UV current date: rouiine to point lo aod load uhtc poinicd to by al disk num's cylsinto ax: push ax first if al needed again!
gcicyls:
showditc: al.07h :rrf liicj 7 holds diy of the
inov {etcmos
oil bcd2isc
cili word pt/ iscdiy.. U
raov al.OSh :rcpsicr g holds !be mouth
mov gcicmos
call bed: isc
call
dec al !(iru in ublc = lypc I
mov bl.lOb loch ublc has 10b bytes
raul M
mov si.dskbsaddr :offsci of ublc sun in BIOS
«id si.ix :to offset of this uble
push ds
mov dsAsibixlAn'. 2 :gci ROM segment into ds:
mov «.lsi) '.get ds:(si) cvls. leave si is set
pop ds '.rcuorc ds:
ret
mov word pu i<cunn.u
Tabelle
; TbU routioe displays lbe disk type fee disk Dumber in tishowdisk:
pusfc bx uave working registers
push tx !save parameter
idd il,"l" !disk Dumber in asril
;put into messagesdskO17:
pop ds
mov tiflCtxi dsktyv "Ή
sdskOOJ:
mov SiZ)(TtCi tscdisk
call wriiem !display first pin of message
mov gctcmos !fetch parameter :h«d> lodilbds
call bx !tndreuve
pop bi !if Cm disk
push bl.O
cap sdskOIO
joe ll.l
rol tl.l
rol ll.l
rol al.I •.mask this disk type
rol sdskOlO: and al.Ofh :nccdour ds:
crop al.Ofh ;=" ΝΟΝΈ"
joc sdskOli !encoded byic
mov tl.l9h !for first or socood drive
tdd il.W !fetch value '.doo'i pop ds: again
call getcmos
sdskOU:
!disk lype in al
crop ll.diskmix
jbc sdskOISt '.bdpon
mov dl.l2h !type O
mov al.O :pui in cmos
call piricmos :fetch parameler
pop ai
pop bx
push bi '.restore original value
push ax :gd again
jmp short sdsKJOJ
sdskOlSi: :prime is " NONE"
mov li.offset diO_sp2
or al.al .ifiypc=O
j' sdskO2O :16-bii number
mov ah.0 .I)-DC num
mov di.offscidil iascii type num
call uiodcc
call gcicyli
push ds
mov d\xi%kbitain2 :svorc dec xla bcre
mov diAffscldilcy! :in es:di
call axiodcc
XOf ax .ax al.|!u+2| :gct head info
mov di .offset dl I hds
mov axiodcc
call UJI
xor ill si. M)
mov di.offsetdilsccis
mov axiodcc
call ax.|si»J|
mOY di.offsct dllprcc
mov ax.-1
cmp sdsVOIo
jnz ds
pop ! .offset dtO_spl
mov ct.diOsize
mov movsb
rep shonsdsVOn
jmp
i sdskOI6:
c; .jncoi I 7 -,max Dumber of cylinders - - I fetch ptraiDctcr
7 snu Dumber of beads " I "
; Table layout is as follows: 7 -.Not used. -306" :ixstorc onginjJ v&luc
;byteO dw 7 !sun write prccomp cylinder - -
;byte2 db 7 !Notiucd
;byte3 dw 7 »nisccUaocous control Hu (doo'l bobber) - -
!bytcS dw 7.7.7 !not used
;bytc7 db 7 Janding iooe (Parking cylinder)
.bytet db 7 •jcctorsAnck -128-
;byte9 db 7 Tcscrvcd for future
:byiel2 dw db
;byteU db db
!byicIS db db
djklypnux db
dll db
dilcyl db
" 17"
dilbds db
db
dtlsccudb O
dllprcc wriiem
db f bx
sdskO2O: al.U
call bx
pop
mov
pop
rcl
: This routine displays the display type aod returns in AX 0 if EG A : 2 if 40 column colour, 4 if 80 column colour οι 6 if mooochrome. sbowdisp:
push bx ^avc worting rcjiucn
mov sijiffsei ascdisp
call writem '.display first part of message
mov al.Mb
call gcicmos
ror al.I
TOf al.I
rot il.l
and al.Ooo ;maslc ibis display type (limes 2)
mov bxjoffxt dispryp
mov ah.0
add bxju
mov sijbx] :gct correct ucii type Address
call urriicm
pop bx '.restore original value
ret
; This routine dirpliys whcibcr or Dot lbe nutM coprocessor U ibowmp; »
push bi •javc worting regisiers :gcf corral ascii type addrcs
mov si.offset ucmp
call wriiem '.display first part of message ircsiorc original value
mov al. Ub
call gcicmos
and 11.02h :mask this type (times 2)
mov bx.offxi rapoiBot
mov ah.0
add bi4J.
mov sijbx]
call writers
pop bx
rei
call
axiodcc: change lbe diskette lypc for number specified in al. gcldskt-
push bx
puih push mov mov cill fdjktOl:
callje cropjecmpjncmovcdicropJ»e rot rot rol rol
gdskiO2:
puih push
|dskiO3:
Inc
UKl cmp Jb mov gdikrO3i:
mov moviddaddpopmovandorpopcmp jnc tol
ι ol rol rol
CX
dx
bx.ax
rijofbet iporcr
WThCOB
gctch
ldifctOI
tSa
|d*ki99
al.-"
gdsktOI
al.lOb
tetcmos
UX)
at.i al. I al.l al.l
b» ax
al
TODcmbcr parameter
;if buffer full ,Itivc unchanged '.try again If not spice
afoot diskette I
al.dikimui
gdsktO3a
al.O
bx,oiTsct dsktlyp lh.0
DX.U bt-ΛΧ ex
ahxh
cl.OIWi
aUl
bx
bl.O
gdskiW
al.l
jmA out OUKr diskette type
;if a valid type :dse NONE
gdskiO4:
al.l al.l il.l
mov dl.lOh
call puicmos ; κι up diskette biu in byic M
mov cUI
mov al. Uh call andcmpj« or ICU j« lest je or
gdiktOJ:
gdski99:
mov cill mov cmp
pop pop pop rc ι
gclcmos
Il ..Vh
cl.O
gdsklOS
al.l
cl.Ofh
fdsklOS
cl.OfDh
gdikiOJ
al.-iOh
dl.Mh puicmos cn. Π Jj.8Oh dl.O
di
CX
bi
:SCI Up DCW dill;CIlC lypcs
TOBcmbcr dislcdc (ypcs
'.if no disiciics
:io show something insulted
:chcck if iwo diskettes
:ifodyone
".check if two dükcucs
;if opl vooc
:clse sei 2 drives bit
;rr«:l b)tc U :show setup chingcd :^e^ noo tcro flag
: chingc inc hxrd disk ij-pc fur numba specified in al. ccidisk:
push mov bx remember parameter :try ajaio if Da spKc
push call CX VH vcwiosn
push jmp dx
mov gdskOIOi: bx.ax
mov jiu UAttta dikchj φτίακ the summer label
call mov wTÜem
|dskOO9: jmp Uf buffer full or empty :if DCKdisl I
mov gdakOIO: gdik999x: ocjldik,gOb ;leavc unchaogcd
call call gdch Ui it a ajcii digit
jc cmp raov jdskOlO al m
je cmp gdslc999x
crap jru al.TT
Jb or gdikOIO. :ochoback
cmp mov al."»" ;cucvcniobcx
gdsk99«: gdskOlOa *ocp this digit
et)! lea iendch Iget wail's tbac
sub ji al.TT ΐΐΐΰ mwmj pi used bit
push cmp ax
mov jrap al^wjudsk unul old by 10
aod gdskOII: s!.7fh ;rcstorcDcw
mov cmp cl.lO ;addtoold
mul jru Cl φ«Η back to total
pop mov CX ;ooa<iisuni disk?
add jrap alxl :ye*£mcel and sun again
mov gdskOI2: Dexidsk.il :gctmon
C cmp cmp al. 15
Jt cmp joe no.disi aj.dislunax ;doo'l wail for more if ilicidy ova
jbc mov gdskOIO Unix disks = " INVALID DlS
no_disk: gdikOU: '.now clrupmcss
raov iijotftex invdsk
call wrilcm
cmp short gdskOO9
jnc
tol gdskOII
rol oexidjk.l :ocbo iNc er
iol short gdikO13 .can lose al. know it is α bor
rol
sendch
aljiexidsk
al.l ;mark as number
gdsk99t
al.4Ob
KAldskjL1 :no lon;er set must hive new KD num
al.80b ;iod cm
gdikOU
al al
gdik999
al."-"
£dskO12
ocxidsk.-l
sbongdskOU
al.""
g<hkOO9
ücntdik.l
al.l2h
gcicmos
bl.O
gdikO2O
aJ.I
al.l
Jl. I
al.l
8-43
300 ÄS"V-
push C mov bx Uf DM encoded type ax :add or sub io nexi uble
push mov IU gctcyls !aod check again
tod lest al.Ofli bxjix
cmp μ I]1OIh !fetch extended byte ax
joe mov gdikOJO bx.1024
mov jap tl,19h gdskO36a
add gdskO31: il.bl al.neiidsk !extended byte address
CtU add (demos shon gdskO3S !store the value
gdikOJO: cmp CX
cmp joe Dcxuhk.1 ahxh :if oot cxieoded type
it tdd (dskO31 :so cm iac if problems bx
cmp gdskOSS: Dcxldsk.-l !false I? dl.l9h
cmp gdskO31 dl.bl
jbe tljKxtdsk ;repacedK 1 puicmos
cmp oexldsk.l al.OfOh
JI il.40fa gdskO37
mov gdikO35 n.Ofh
jmp «J.I
jdikO35i: short idskO35 ci.oroh
mov !miss type 15. cither +1 or -I aUI
gdskO36: tljKxtdsk bl.0
or al.15 •.over our mix? gdskCMO
j* |dskO35 ;lf loo big go back to too al.l :kti up new disk lypcs
iljicxldsk '.increasing disk η um ll.i :si)o» seiup changed
:yes. back io tcro al.l :sci non iero flag
al.diskm« !tnikc e diskmix al.l
(dskO36
ncxidsk.l dl.l2h
fdskO3Sa :iad reset lop HD zero puicmos
al.diskmix crr.naf.80h
short gdskO36 dl.n
;no need to lest if icro
al.O : before pulling ihis number inio croos. ensure an acceptable uble exists
; in BIOS tables
al j! push
gdskO36a call
mov
pop
cmp
jbc
add
jmp
pop
mov
pop
mov
add
call
tesi
mov
gdskO37:
and
or
cmp
jne
rol
rol
rol
rol
gdsxO4O:
mov
call
mov
cmp
pop αχ push gdisp99: pop dx !if buffo full push gmpOl: call dx !ifbufrcrfull
pop CX mov ret tijoflset sporcr mov jc li.offsci sporcr
pop br. CiU wrium ; leave uochsofcd ull cmp wriicm ;lc jvc unchanged
rcl CiII gelch je
; chanjc the display type jc gdispOl ;lry igaio if oot space cmp gach !try again if rxx spice
gcldisp: cmp 1I.CT jnc grnpOI
je gdispS9 mov al ir
cmp il."" ull grnp99 '.nip (be bit
J1* gdispOl ;misfc out oripail display type bits ior al."
mov al,Mh !increment · mov pnpOl :sct up new diskette types
call gctcmos !cyclically ull al.Mb !show setup changed
mov ahjJ ;mnl· back io other bits mov gcicraos !SCtDOQ ICSO
and ab.Ocfh cmp alj
add tl.lOb :sct up oew diskette types pop dl.M1
iod al JOb :sbow temp dunged rcl puicmos
or ti jb !seiooaiero crr_f)>g.80h
mov dl.Mh dl.O
cill putcmos dx
mov err flax40b
cmp dl.O : change lbe maths processor insiallod bit
geunp:
dx
: nxjiine to ask see if we arc required
insnul
ai.OOl:
ii ΟΙΟ:
ull mov
push ior
movmljnclooppoploopmovjrap
pop
OUUSCS CX.4
Cl C1X»
ah. I 16b ai_020 ai.OIO
CI
ai.OOI al."»" shonai_0?0
;do pcm iosulled in bascaddr yet ;apfxox 5 sec wait for kbd rcspoosc
:cm'i use COUNT. niniS OCX instilled yet
'.wait for Vcy inpui
mov (!,offset |nsms2 vdiags running · walling pbooe call In
call outmes ;eotlopon
mov lanch.0
call waiUBod ,-wait for aodcm to answer, check* mif after er
IOC Sv ^#^rv^) aCO^UlOCvOu OvL
call hangup 3» carrier «ag reed
ioc CtT-(IU XOUOi errors
cmp Or-(UgJ max allowed?
jb Su-OOO ;try again
mov stoff** pon_reg_err ;afior 2 tries, give up jmp short Su-OCK-23-
su_000b:
; rest of aug is In ascbaud.
cmp word per ascbaudVTXT
je sv006 -Jungup aod uy do diags possiUc
mov lijofTset ascbaud
mov diAfftctbaud.ralcs
mov al J :if 300 baud
cmp byte pe [ύ)α ;ooly XONNECT?
jbe ocw.baud Of ODh. OAh or 0Oh SU.002:
crap byie ptr (sij." "
suOO6:
su_006: tu.OOS: SU.007:
cmp word ρσ |si|.bi :ihis will not find 600 baud!!!
jnz su_O0J
: set up the nc» baud rue if one given
mov vnxdctc.0000001 Ib il-diu. l-stop. no par.
mov d&.bascadd ;tn ibis pon
call setbiud ;with al hivinr. the corresponding rate. 2»300. etc
je sutestimp :if error in pon setup
su.OOi:
jnz Inc jmp su 003 si short SU.002 ;(o 600 baud, eic anax baud rates supported
inc cmp al aljnatbaud SU.007
call mov Stno.di.
call OUUDCl
jmp shon su.OOJ
mov inc inc di di
β.η:
su_OOSa:
call iell_sn :civc the scnal number :send ierial pon tSiii
mov suppscm.l .suppress scm echo :and no~* the mcmorv size bit
call chXpw :gci S/N and p« and check them
mov suppscm.O
jnc wail_sn ;ifOK
mov !!.offset unaul
call wriicm :send io both screens
jmp su_999 :brcax communKaiion aod reboot PC
call gctch
jc waiisn >iii for (oahead
call icllpci :send card addrs and peg s/d or no peg
jnc su.OOSi
jmp SU.999 lbrcil comrnunk<uon and reboot PC
call icllpjr>u:scnd parallel pon addrs
call icllserpu
call fixmcm
su (U9:
SU-OlO:
call wriieca ; to local acroen too
call g«ck
je Su-OtO -,wait for ropccjc
call scodch -.echo back io host
cmp •J.-1-
μ Su-OISx jCOOiOC lS IO ΠΙΟ tix
cmp μ cmp ai.-r
μ
cmp iDcm_rcadx
μ al."4"
cmp run.rcm
j" al.T"
jmp SU.009 ^c-xrnknugiXnot
SU..999
SU-OlJx:
jmp SU-OlJ
jmp OKiS-TUd POn-ICSt-CXi:
jmp pon_tu>
φοα teas choice
;!!!!!! racacioihiscodcUrcmc^cooirolteloacd. ruojicm:
mov lastch.0
mov itolTsci uismsl
call wrkcm ;lell both wailing for syochroa signal
mov bxibbead X(Xp buffer start rr_001:
mov rr.OOO: mov sijoffset rinmcss :wait forOaahJ)aah mil rmg inilO»dd+2xi
push im bx inil6add»?.XJ .place pointers there Γιτπ
call mov waimuf u.offsctncwinllO
pop iot bi cv.linll0l.ix ;bcforc vectoring to these rouitncs
mov rr_0OO cj:|uiilO+21.di .bx ;dj:
mov mov cbbcadbi
jmp mov shonrr.OOI
mov
mov u.03h
mov 10b :iniüa]isc screen
mov suppscrn.l suppress jcra ecbo for this
mov tXAX
mov CiJJ.
cli u.cs:|imlO|
oldinllO^i
a>.cs:|inil0»2)
<Μιγλ\0*7λχ
ai.cs:[intl6)
oldirul6.ii
ix.cj:(inll&»2)
oldiml6-t2ji
: set up pointers for interrupt 10 (which installs IKT I6h later)
mov
mov
mov
mov
mov
jmp inisi_9
SO.015:
1U.020:
call
call [ctduc
joe su.OIS
call showtime
call fciuroc
jnc SU.020
;finilh by replacing inu S aod 9 ind boot
:If anvüiinj pven show new due
M aavvbiof pven show nc» time
mov si.offsct run_chotcc; Sei up diskctu ι su 110;
iI.O
Tabclie
call χι 170* taov ihowdikt mov ro.220: mov al.0
ull call fcldskl caU call ibowdisk
call lu.IIO caU call gculilk
jo« al.l joe joe w_2IO
ihowdikt
fcldskl al.l
«u_l20 sliowdisk
; ScI up hard disk parameters gcldisk
KI.2I0: IU.22O
;tf changed lbco redisplay
•M chanted ϋκα redisplay
;acccpts ·♦ . · . , na or er ;if changed thai redisplay
;if changed lbco rcdirpUy
: Sd up diiplay adap<cr parameters *u_300:
mov ti βcall showdispcall gcidisp
joe »u_300 ;if changed lbco redisplay
; Sd up maths processor bit su_400:
IDOV ll.O
call showmp
call gcimp
jnc rtu_400
:if changed tbca redisplay
: Check all correct and restart tests, continue operation or reboot SU.900:
mov aljcrr.flag
and al.0rrh-4Ob ;rcmovc msg flag
men err_nag.al ;aod replace il
mov li.oiTset cbeckmsg
call uTJicm
950:
SU.952:
su 951:
call J«
movlestjnzcitipjccropj«ICSIJ(Ucrnpj« crnpj«
cmpJiormovcmpjcucalljmp
gcich SU.95O
call jmp
: here if er reedju.UOSja:
men· and
bl.*Oh
SU.V52
al.-B"
SU.999»
al.-b"
SU.999X
bl.SOb
su
al.-C"
SU.990
al."c"
SU.990
su.OOSax
bl.40h
err_(l«t.bl
al.bs
SU.95I
do_bspce
short su_950
senden short su
:do nocd lo echo üiis cocomaod byte back lo boa ;if buffer full
;stitl tending mi{
;seiup changed?
;i( so. cooiioue not »Mowed
*,ιο coQiinue wbea testing
:bl ha.< cn_n>g
:inyltunf else, sei msg dig
dl.bl dl.0fni.40h
:io ipiorc anyihin; el»
:bl hai en_(laj: :coO of msg?
mov JU.990: err flafjdl hangup •,caned lbe 40b If set - Utart from ldlpcg intsi_9: ax ju call initiop: puih hangup •jxnm this back lo wa' :segO
VM M.40h dx.bascadd ;wcre «e rccing msg7 exit proc CMX db XOf parallel pon ini
it *u_0Q8_cooi dx ^o sti mov
call sende»! alX) wcbolhecr ret ax.oldinib mov
mov al Jf 4xAl Waned exit cndp es:inibju ;aod rcturo int 8b
call writech d»J ;toboih ix.oldiatbt2
«u_950x: dxjj a:'unb*2jLX
jmp tu_?50 aljlb ;intcrrupl enable rc peer ax.oldintc
tu_008_cooi: al.l lh cs:inicju
jmp tu.OOSa 21bjil ;oolaiemf>u ax.oldinu:«2
iu_999x; a:intc+2Ax
jmp su.'W9 ax.40b :ckardtrAu ax.otdini9
CJJU cs:(ini9|ju
; clear down various value* ax.cs:(Ub) βΛΛΐ<ϋαΓ?+2 ' · jmp FFFF.-O
call ax/amaze UdCtIRQiDU cs:|ini9>2).u
mov cs:[13b)jLX ax.oldint8
iac :bk« dau xgmest es:|intS]ju
mov ax.oldinl8+2 Oeah.0.O.OflKOfIb
out cs:linti+2].ax
add 'take ooly occcssarY am( ds
out far ax αχ
in ClSJU
or ; reset Interrupt vectors to original values si.inlf
out χ or
: return memory mov *. This is binary rcprcxnuijoo cH
mov cli : For testing just exit
mov mov SU.999:
mov mov
add mo-/
e mov mov
do ins l mov
mov
mov
mov
mov
mov
mov
mov
mov
mov
mov
mov
umber
call writem
call ptOlO: call fetch ;wailfortclunccr : Pardlcl pon chosen. Which ooc ? ptO2O: gctpadd pt 100: mov pll 10: call fctsadd gcipidd fctsidd ;ask for puallel pon address 1 ;ui for pirllcl pon ddress
je jc tu030 -,coovcrt call ouipaddjA cill jc u.baxadd ouipiddjx oulsaddax
nib cmp al.-l" mov iruüap cmp pon.icst shon pc200 ax .insadd '.initialise parallel ilcrrupt handler '.continue by asking for tcrmimor
cmp jx tl.4 ;if invalid call ' xtpon.icst J' insadd ΛΧ p(200 -.new address? ·
or ptOJO jmp or gcismode pon_tcsi gcumode
DOV cmp ah.0 : serial pon chosen, which one ? C cmp al.baud : «nil pon chosen, which one ? il.biud
DOV JI bxjoflscs tpaddt ;fcich BIOS port addrctt call JC dx.insadd call '.ask for address ;isk for iddess
mov cmp ax4s:(t») cmp cmp sclbiud mov
or jne IUI ;wait for valid port Jt JCC pon.icsi cmp ;cannot lest our modem pon! :oui=in?
jpaOSO mov shonptOIO ;ilrud> κι then
ret '.Read from (icrial or parallel) call CiJI -.get baud, partly and stop bits :gcl baud, pint)- ind slop bits
poruest: DOV tijotUa rfiype mov SI.OffSCl »ll)-pC ; mov
call wrii an mov wrilem .setup pon
cill ;with CY is set in this routine
(etch jc gctch :if problem with pon
ptOIO jmp ptl IO '.wail for α
il jet ;and now write lo? a) at
ptlOO ;convcn to lower cajc pt90 .Wriic to ?? (scriil or parallel)
al JOb al.20h
al."s"
ptO2O ;if parallel . pi 120
al.-p" ;wail for valid reply al.'p"
P(OIO pil 10
; Pi/allcl pon chosen. Which one :end if no out pon
cill iconvcn io lower case
mov
jtnp
port_iciu: :if parallel
jmp :wiii for valid reply
DOV dx^outsadd ;whh CY as «et in this routine ; Now Mk for Knnmatng character DOV pCW: call pt52O: call xUoCCsct whaocna ;waii for chiracter ;portchar1
call Ktbaud it problem with port ptXXfc call jc joc writem Utore lumiiuor Via chancicx Input from lhe port
ic pon_(uu call call getch ujoftxl (omcxs my transparent ;but I/so send k> comi
jc call pt210 wrUcm wnmtad input?
DOV jc lermch^al ;if oo( look κ input port
DOV crop gttpch :U it lhe lerminator?
call jc ρϋΙΟ :ycs.»e«irnniihod
call Kodch ;elsc (O Uansareat
joe (etch ; ocjtl char
pt500
aljcrmch ; empty lhe buffer
pon.iesu
teodpch
ρϋΟΟ
gctcb
ptS20
mov siwoffsct port_rcg_crr
call wriuan \icnA mcu
jmp pon.lcxt ^CtUp pon test igiin
; All done. xor IXAX ;cnd letting or choose igiin? si ax.raan_scg mem_lcn.O -Just Is aiM>lc
ρι90: mov ;rouiinc to send ds^i bex lo poet and screen, ex chars coding wiih er.U* CX wriicchhx sbOO9 -.cxici para?
mov ouuaddju scnd.block: al.":" CiJ-OCm-OfTs :ycs
mov inprfd^x push ! .offset crU" writech cx.OOOfb uium asked for
mrv outpaddjLX push wrilem axjncni_o(Ts CXXX :dol6
CiU sbuiinp : Tu-st do ι ct.1/ CX wriicchhx_sep sbOO9 ;-offs Dura
jmp SU.900 roov si :άο «χ aecd any offs spaces? bx :back ooio suet'
cill si crap bx.16
pop CX J*
pop ;noM put the address mov bx
push mov and XXJkX
push cill or
mov j'
call pop
mov mov
call sub
push
»or
3002?+
SbOOl:
tb002:
sb003:
ΛΟ09:
IbOIO:
sbOIOch:
JbO 12a:
JbOI 2:
st/» 3:
sbOIOb:
SbOIOi
SbOII:
sbOI5:
push CX ;each hex has 2 ascJ di|
mov cxj
mov «*.--
call written
loop sb002
inc ah
pop CI
cmp ah.6
jnz sbOO3 :if 7 iptco dooc
mov al."-"
call wiiiecb
loop SbOOl ;di(iu IO do
pop ex :badc oolo stack
push ca ;kccp oum
push CX
mov cl.4
ι or ax.ax
lodib :Γιτη char In ab
shl axxl •.«coodinal
shr alxl •Situ in al. second in ah
ich« anal :k(xpah
push ax :convcn and send
call coovbjJasc :jet back secood
pop ax :inioal
mov aloh :eoovcn and scod
call convhx2asc
mov al."
pop CX
cmp ex.»
jiu sbOIOch •I." :»end a " " or "·"
call wriiccb
loop sbOIO :any length given?
cmp mcm_lcn.O .yes
iiu sbOI2» : no. end
pop CX
pop si
jmp sbO45
mov exjnero_ofis
and ci.OOOfh
or CXXX
j' ston :space offs
mov al.""
call »τι uxh
loop sbOI2
jmp shonsbOII
mov CX.I6 :pushcdc>
pop bx
push bx
sub ci.bx
J' SbOII
mov al.""
push CX
mov CX.3
«.all »nicch
loop sbO I Oi
rxip Cl
llHjp sbOIOb
mov al.""
call »nicch
call wriuch
pop ti
tub Dcmjcnwcx ;ihcK fewer to Knd dow add nxm_ofXcx ubcac done ; dow repeal ι-debug-(Ype char output
lolsb cmp al."
-26-
sbO3Ch
SbCMO:
tb030 il.-.-
al.7fh Sb(MO al."."
call wriicch loop SbOM
tbO43:
; coovtns a3cU char In al to l>ex. tttunu CY U dm hex char
asclobex: axOlO: cmp ucO20: and ajc_ret: rcl m/bs: cmp e shl ah.0 ;16-bUdi{i( :oo CY
DOV Jb sub Ji add al.-O"
cmp cmp call mov asc_rel ;*ithCYael
Jb jbe push pop al."9"
cmp nc mov rcl ascOlO ;somc «her chir
jmp call al.TT
sub pop sbonasc_re«
jmp call
push al.-A"
mov asc rcl
mov al.-r :caps
shr ascO2O ;» "A" - 10. etc
mov
pop shonase_ra
inc
jinp al.Odfh
storc_sendch: al."A"-10
push ;scnd the bspacc alrcad
xcb(
call
mov ci.di ;blxnk
mov miOIO
mov 9COOCh .aodbt xtiin
ax
al."" :ici *οΜ »fa/
wriloch
ax :bacx I nibble
wriicch :pul il back into store
CX
bx.(di)
cl.4
bxjcl
|di).bx
CX
CX :wriic ihe tscii to poo
short miOIO :fa bex back
:gct coucl so fir
CX
ax.bx
scodch :shl4
xx.bx ;add ία uSc ucxt dipt
bik.ldj) :mov back Io cun siort
cl.4
bx.cl
bx^x
|di|.bx
CX
--fg
(CUC(OfTs: mov mrOIO: caU mrO2O: mov mrOJO: mov mrOJS: call po.rct: ret tarjcx: SlC CX.4 . ;wail for char ;sbow and reset max chars -.ascii char back to port -.send uuuuctioas oa (his facility : show ihc byte found at scgioffs. t pop wbOIO: call sijnem_offs :gcl the byte into rocm.block call wbO2O: lac wbO3O: dec jmp mrtW): cmp mrO4l: push tlorocodch iahi |cB) aod add new value Ata oan.block byte Io off» mrO70: mov ra/080: call mr_ret: mov mcm_lea
mrOOJ: mov jc jrap jmp rc ι dxjcx :aod reset max chin mov pop jc mov jmp jmp writcbvtcxnsgx: )t mov ex. I abow I bylc a or jmp call
cmp di,offset memjcn raov push tmp dijoffscl mcm.block mov mao_read: jmp C mov si^i IH iiscai_block di )t mov cxjDcm_kn
it wriicbytcmsf: (etch ;ibonT push mov j' di call mov cmp mov scod Mock j^/"*Pf si CX cmp call ClXl
cmp mov mrOIO sendcb push call cmp ds -.source now push mov jbc mov di wbOIO jbc pop mr_ret
j* call al.bJ tteg to offs? short mrOOS mov pop j' dsjncm.scg push mov mov rep U mov ex.16
crap wrilebyic: mrbj movsb mov cmp mov mov pop dijscm_ofls mcm_ofu Uf"*" rruOSO
it al xx ;ofu to lea? mov mov mov mov ajuaajict short wri leerte ».16
cmp mtjac mov :offset mcm.block movjb mov
jz al,":" itodcoayl SLOffsel mcni_wril£_cipl call ds • :rcady for neu- value mcm_ie(UDem_ rep rocm_offj Uf"-" seod_block
cmp mrO2O whtcm si ;nu 1 nibbles pop mov short wrilcbyte ;get Dew segxifTi value short rarO70
it •1."" :any left? si pop call
or mrO3O -,no. wail for separator char ci.l pop mov mcm_K(.O ;cka< labels aod buffer si.oflsct crlf
)t «Ixr. ikecp original scnd.block loop call mcm_offs,0 writcm
mov call gso.ret ;lf not hex char. Ignore di joe mea_leo,0 si.offset mcm_coai_msg
CXXX bvte ptr (di).O ;«nd mr_reu: di/iffset mem_block wriicm
mrOIO cxj cx.SOb mem_lco :rcstort lcn rcqd
push bxAX al.0
call mrOIO fetch slosb
pop Λ good char reed v»bOlO si/)ffsct mcm_cxpl
dec CX :aod wait for next acceptable char alxr :Lccp original writem
jmp storc_Kodch mr_rcu -.keeps Ci di offset mcm_set
CX di ,offset mcm_offs al."-" gcuegoffs
CX short mrO35 wbOJO m/040 Aocjc
short mrOIO al."+"
wbO2O short mr_ret :esc exit
bx.ax
asciohci wriicbyicau(
rocni_kn.O '.have wc got a koglh?
wriiebylcmsgx :oo. assume memory write
rocroJcn.EOta ;cbcckifovcr max
mr041 .ok for our buffer
mcm_lcn.SOb ;put in our max
ds
sijncm_offs
cxjscm.lca
dsjncm.scg
dijoffsct a>cni_bloci
movsb ;ifcr rcqd block to our buffer
ds
si .offset mcm.block
; dow to xmit thcK as sensible axii digits, spaced ;
push
Jb push
wbOIO
Cl
:if ixx bei char, ίρκχχ
mr_ret I:
call
cocb
cbl6 db
cll6 db
dhl6 db
dll6 db
baseadddw count
oldinlb
oldintc
oMinlf
oldialiOdwOldiotl6dwoMiaUldw
inua db ctum db
rinmcu db cbhcad dw cbuil dw lastch db ax baud db Qocardsimt cardmsi cardaddrt
paraptmsi Ipadds dw db
comptrasg spadds dw ; dw
dw dw dw dw dw dw dw dw
comptcnd baud_nics badbiuddb no.diigs concompn modem pn insms2 db db
inuns3 run.choice
plusscs db initmsl db hinpipmsg hinpipcon oljncis db conmcssdb nocinicr ca_(lic dh
porl_rcg_cn clrmcss db nopcg tib db pcfherc db
0 0 0 0
db
dw
dw
dw
dw
OJ)
0.0
0.0
0 0
OJO
OJO
OJO
OJO
;for simple, accurate delay counts Jtbd Ua vectors
:for oripnal loterrupt vectors
:for original interrupt vectors ;for new ux21 vector»
;spcUi«d interrupt number yhoclcwmi byte
;iaiüalUaiioo patient
OaahjOtahvcr.0
cbulT
cbuil
? ;u> (bow complete mij rood by iuOBh or OCb
WdUp(O)
db CTjf.-NO CARDS rNSTALLED-J)
db aJf.-CARDS INSTALLED :"jO
dw I dup (T) Λ cards muT
db
db crjr.TARALLEL PORTS :"X> !assume at least I!
4dup(?)
db Oji.-SERIAL PORTS :"J) :asaimc at lcait I!
03fSh
02rSh
03fSh
03elh
02elh
028Ob
02SIh
029Oh
O298h
dw spadds .cards output cods berc unless modified
dw "6 "."21"."42"."W"."69" ;rcverted difiu for cmp
CfJfZ-UNKNOWN BAUD RATE."
db crJfJf.-DlAGNOSTlCS IMPOSSIBLE-.CRJ-FJ)
db crJf.-Conocci MODEM to COM"
db ~0~jnM,0 :instruci usa which port used
er .If." * Remote Diagnostics - wailing for incoming phooc call!! *"
er.If.lf.-Copyrighl MS Daiakoruuli AB. Swcdcn.".crjf
db " ATCLAB AB-Swcdco-jaJfJi
db XTRL+ALT+DEL aboru prograra"jcrjfjij)
db CT.IfJf."Waiiin( Host Synchron Signal"*rjf.0
db crJf."Cboose:~
db CT.If."l Setup check"
db cr.lf."2 Port check"
db crjf,~3 Memory read/write"
db CTjf.~4 Remote software control"
db CTJi."5 Exit and booT
db cr.lf.O
db CTJfJf1-UNAUTHORISEDACCESS-XtJi1O
"AT<fcFLIAD2ACISO=lEO".cr.O
db crJf."BREAKLNG CONNECTIOVjO
db "ATHOJiO=CEl-XrJO :hanj upjcl juio-uuwcr oif.ccbo on
-OK".0
"CONNECT"/)
di> 1TJC CARRIER-J)
db ? ;io show u-riting msg at end of serup
db CTJf1 -TORT ERROR"xr.lf J)
cr.lfjf.0
crJf.PC-GUARD NOT INSTALLED"
CT.If."Continuc testing? |Y/N) ".0
"PCO proiccted"
pctmes db Ifcrlf db crlf db daiebf db ascday db ascmoa db
ascyear db db
limebf db ascbour db
today inmon inycar
ascsecs db
db labour db
imwm db
db db db db db
bindijr db binmoa db binycar db binbour db binmin db
mmculdb mm Ιύΐ db
mmitit db
ascdski db dsktnumdb dsktipipdb dskupO db dsiupOiil db dskupl db
db
diiup3 db dskup4 db dlill)-p dw dskunaxcqu
dskbsadd/
ucdiip db disptpO db displpl db dijptp2 db disp<p3 db diiplyp dw
ascmp db ropO db mpl db mporooidw
dskchnpnsg
sporcr db chcclmsg
db
dtO_sp2 db dtO.spl db dtO db dlOsizc U]U
db
invdsi db disUnuequ nctidsk db
TCG Um"
crjr.O
cr.-Daceis·
"mm-—
;"-" Ii ajrood inunui nd now ;should be chmtod to 'ccyy-aua-dd-
cr.Time it ·"
"mm:-"tx. Enter new time (hh-Tmn)orcAl/corrcci"irJf
**0QJD·**
crJf.XMOS Base Memory « "jO"I2145K-.0
CTjf."CMOS Extended memory « "J)
"I2MJK-.0
a.'TXsketie " "I = ".0
:sou7cc of " NONE" for procomp mif -NONE"U)u i · dskupsp 0 --36OK".O
•720K-.0-|.4M".OdsktipOxlskiip I .dsk(ipZ4ikup3.dsklip4
5 ;ooJy 5 dskl types recognised
dw 0c40lb.0f000b ;to hold dsk ublc baje addr in ROM
cr."Display « ".0"EGA"/)"Colour 40-.0"Colour 8O".O"Mono".0disDtpO.di sp<p 1 ,düptp2/ljiptp3
cr.--Maths proccuor is "J)
"not" ;uuulIcd~.O
"instilled".OmpO.mpl
db er .If.1 type "+"."-", HD num. or space to change.
cA to acccpt'xr.l/X)
a.lf." i>-pc space Io change or cA to acccpt"xr Ji.O db a.lf."typc CR 10 rerun ICJU. 1C1IO ccoiinuc"
:pui bick for testing, or just know it's active! " ot V to rc-booOcTJfjO
"NONE"S-diO_spl
" IN-VALlD DISK-jCiJfJ)
Ο :actual UbJa plus NONE
? :to hold, add w sub 1 from cun dsk ntun in rxidisk:
2-20
iscdiik db er." type cyls. beads sectors prccomp" db libel db t db byte :pon address for assigned scriil output
db crjr.TXA- db - db - ι - !ditto for pirtllel
disknuddb "I«"J db me«i_wrUe_expl db dw "306- :diuo for Kriil input
) db mcm_eool_ou - 4" '.and ptiilld input
; typical bard duk report appears as: db roea(_ief db » " :selccicd trrminior for tnosparcni mode
dsktypnuf " 17- tncajilit db O iDolocilccboiiM)
dtl db cncna^lcn
dilcyl db moB.block 0 - IJT
dilhds 0 0
',memory read dan :pon tests diu 0
dilKctsdb raca«_ejtpS i outsadd dw 0 crJf.-Entcr (HEX) Kf »die« (leofümad). ex 0040ΛΧ» 30<CR>
- oulpadddw 0 aMß
dilprcc inudd dw db ait.'Eata new values, "♦","-" or CR to coä'jaüß
inpadd dw pbuff "Type space Io conJiW. σ Io cut"jcr JfjO
icnncb db pbuff dw 1
suppscro 1
pbbcid dw dw 7
pbuil dw eOhdupO)
O
: Mcssigcs used for trinspacot mode port testing
«rtiypc db a.lf.lf."Write Io puilkl Ip) er jeritl (s) ? ".0
rfiype db c/.lf.lf.-ReJd from pirilcl (p) or jcriij (i) ? ".0
whiunun db cr.ll. "Enicr ροπ number. .0 cr.lf.-l IKT .into rc; 3
baudrucdb ci.lf."Choo»: b»ud rue" cr.lf."2 150"
db cr.ir."3 300" J oldiniS :cqu 4
db a.U."4 600" cun_daic>4 ;cqu S hob yevjntb. diy and bour
db a Jf." 5 1200" S - oldiniS
db a.lf."6 ΖΜΧΓ
db cr.li.-7 4800-
db aJi."l 960(T
db ajf."9 19200"
db aaf." tO 38400"
db aJf.-M 5«ΧΧΓ
db σ.Ιί.0
db aOf.Tuiry: (1) NONE (2) EVEN (3) ODD ".0
db 0.If1 -WoTd lengüi <7.8) :"j0
pirily.mig db a.lf.-Siopbiu(IA Γ.0
word_nug db a.lf.T)pc required EuI key ".0
stop_msg db cr.liJf.'Truupirenl Mode! Exil key iboru~.crjf.0
wtuuenn db
pomcsj db 7
hiud db dw
wordctc db cqu
oldiniS cqu
CUTT^dllC cqu
couni_b>"ic
diti_scg
dcnd libel b)tc rimmcm cqu S-dsun
cunau cqu projsui + rimmcm ;do not include buffer ircis
dl> (I0h#200h-cun5u.c)dup(?)
300 Ζεϊ
M ree with «ro byta 1O^ Q
djusizeapi $-<faurt romcxl oqa pnjpiic + djuiic ;ioul bjrtct ukco
cbuiT Ubcl bjrtc cbeod «je cbufT+lU
; Spocül drdar bufTa ibt tnrajxaK mode Input (pjnltcl ot κήιΐ) pbuir Ubei byte pbead cqu
VMKikcqu (pbeod/1000>*l -.pibiuu enough memory forourdiu nriuiic oju 3 ;givc ii lhb value for prog uie
dxu codi cod

Claims (5)

1. Einen Computer in Personalcomputerausführt, nf, dor einen ROM BIOS Chip-Speicher, eine Zentraleinheit, einen RAM-Speicher, ein serielles Eingabe/Ausgabetor, eine Tastatur und einen Monitor einschließt, dadurch gekennzeichnet, daß ein Festspeicher darin eine Fernsteuerung und ein Diagnostikprogramm enthält, die steuerbar in einer ROM BlOS-Urladefolge einschließbar sind, und zwar für die Einrichtung der Wechselkommunikation mittels des besagten Eingabe/ Ausgabetors mit einem Fernbasisrechner, damit der besagte Fernbasisrechner eine Prüf- und/oder Einrichtungsfolge für das Rechnersystem durchführen kann.
2. Einen Computer nach Patentanspruch 1, bei dem das besagte Fernsteuerungs- und Diagnostikprogramm ein Programm einschließt, um auf seinem Monitor zu zeigen, welche Prozeduren im Rechnersystem vom Fernbasisrechner durchgeführt werden.
3. Einen Computer nach Patentanspruch 1, bei dem das besagte Fernsteuerungs- und Diagnostikprogramm ein Quittungsbetriebsverfahren einschließt, das das Ausgeben eines vorbestimmten Identitätskode, der für den besagten Rechner eindeutig ist, aus dem besagten Rechner einschließt.
4. Einen Computer nach Patentanspruch 3, bei dem das besagte Fernsteuerungs- und Diagnostikprogramm ein Zugriffssteuerprogramm einschließt, das ein Quittungsbetriebsverfahren umfaßt, bei dem das Hehlen eines vorgegebenen Kennwortes die besagte Wechselverbindung durch Unterbrechen der besagten Kommunikation und durch ein „kaltes" erneutes Urladen des besagten Rechners sperren wird.
5. Einen Nur-Lesespeicher für die Anordnung in einem Personalcomputer, dadurch gekennzeichnet, daß er ein Fernsteuerungs- und Diagnostikprogramm einschließt, das eine Startadresse aufweist, die durch eine Adressennummer definiert wird, die in der Gruppe enthalten ist, die folgendes einschließt:
a) Adresse COOOh und die Adressen, die durch Addieren von 800h dazu bis zu einer Grenze von EOOOO erhalten werden,
b) EOOOOh und
c) FOOOO und Adressen, die durch Addieren von 800h dazu bis zu F7800h erhalten werden, und wobei ein erstes Programm für die Signalisierung, wenn es in einem ersten Personalcomputer angeordnet ist, zu einem Monitor einer Option, die innerhalb eines vorgegebenen Zeitintervalls mittels der Tastatur des besagten Computers aufgerufen wird, ein zweites Programm für die Einrichtung einer Kommunikation mit einem zweiten Rechner und für die Inaktivierung der besagten Tastatur des ersten Personalcomputers mit Ausnahme einer vorgegebenen „BREAK" (Unterbrechung)-Tasteneingabe, ein drittes Programm für das Abfragen eines vorgegebenen Kennwortes vom besagten zweiten Rechner und für die Unterbrechung der besagten Kommunikation bei seiner Abwesenheit und ein viertes Programm eingeschlossen sind, das den besagten zweiten Rechner befähigt, ale Basisrechner über dem besagten ersten Rechner solbst während und nach dem Urladen des Betriebssystems des Systems zu funktionieren.
DD34316790A 1990-04-11 1990-07-31 Ein system fuer die fernbetaetigte fehlersuche, korrektur und universelle arbeit eines personalcomputers DD300254A5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP90850138 1990-04-11

Publications (1)

Publication Number Publication Date
DD300254A5 true DD300254A5 (de) 1992-05-27

Family

ID=5620105

Family Applications (1)

Application Number Title Priority Date Filing Date
DD34316790A DD300254A5 (de) 1990-04-11 1990-07-31 Ein system fuer die fernbetaetigte fehlersuche, korrektur und universelle arbeit eines personalcomputers

Country Status (1)

Country Link
DD (1) DD300254A5 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2318658A (en) * 1996-10-28 1998-04-29 Intel Corp Remote diagnostics after boot error

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2318658A (en) * 1996-10-28 1998-04-29 Intel Corp Remote diagnostics after boot error
US5884073A (en) * 1996-10-28 1999-03-16 Intel Corporation System and method for providing technical support of an electronic system through a web bios
GB2318658B (en) * 1996-10-28 2001-04-18 Intel Corp A system and method for providing technical support of an electronic system
DE19747396C2 (de) * 1996-10-28 2003-10-23 Intel Corp Verfahren und Anordnung zur Schaffung einer Ferndiagnose für ein elektronisches System über ein Netz

Similar Documents

Publication Publication Date Title
US7739693B2 (en) Generic application program interface for native drivers
DE69923243T2 (de) Dynamische und konsistente Namensverwaltung von Speicher der zu einer Kommunikationsstelle verbunden ist
CN101588086B (zh) 多插件嵌入式故障信息系统子站对录波文件的处理方法
CH662025A5 (de) Digitale vermittlungsanlage.
DE10047266A1 (de) Dynamische Mac-Zuweisung und -Konfiguration
DE2500006A1 (de) Wirtsdatenverarbeitungssystem und verfahren zur emulation von eingabe/ausgabe- befehlen
DE102005008081A1 (de) Steuerungssystem zum Steuern einer Vielzahl von Zielrechnern
CN106790682A (zh) 一种远程会诊系统
CN109902073A (zh) 日志处理方法、装置、计算机设备和计算机可读存储介质
DE102012214944A1 (de) Mobilvorrichtung und Verfahren zum Laufenlassen von zwei Plattformsystemen oder Anwendungen darauf
CN108510287A (zh) 客户回访的判断方法、电子装置及计算机可读存储介质
DE69823655T2 (de) Verfahren und gerät zur synchronisation von softwarediensten zwischen softwaresystemen
CN107291387B (zh) 一种双控磁盘阵列的磁盘接入方法
JP2007535206A (ja) ホーム・ロケーション・レジスタにデータ冗長性を持たせる方法
DE2350229A1 (de) Datenverarbeitungsanlage, insbesondere als steuereinrichtung fuer fernsprechvermittlungsanlagen
DD300254A5 (de) Ein system fuer die fernbetaetigte fehlersuche, korrektur und universelle arbeit eines personalcomputers
EP0303870B1 (de) Modular strukturiertes digitales Kommunikationssystem mit betriebstechnischen und sicherheitstechnischen Komponenten
CN107357698A (zh) 一种获取bmc串口信息的方法及装置
EP0358597A2 (de) Fernsprechvermittlungseinrichtung
DE2325997A1 (de) Nachrichtenvermittlungssystem
Cisco System Overview
CN101541021B (zh) 一种容量预警报表自动生成方法
DE10206009A1 (de) Dienstleistungs-Server
DE3924974A1 (de) Fernsprechvermittlungseinrichtung
CN112463748A (zh) 一种存储系统文件锁标识方法、系统、终端及存储介质